browser_cubic-bezier-06.js (2805B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 // Tests the integration between CubicBezierWidget and CubicBezierPresets 7 8 const { 9 CubicBezierWidget, 10 } = require("resource://devtools/client/shared/widgets/CubicBezierWidget.js"); 11 const { 12 PRESETS, 13 } = require("resource://devtools/client/shared/widgets/CubicBezierPresets.js"); 14 15 const TEST_URI = CHROME_URL_ROOT + "doc_cubic-bezier-01.html"; 16 17 add_task(async function () { 18 const { host, win, doc } = await createHost("bottom", TEST_URI); 19 20 const container = doc.querySelector("#cubic-bezier-container"); 21 const w = new CubicBezierWidget( 22 container, 23 PRESETS["ease-in"]["ease-in-sine"] 24 ); 25 w.presets.refreshMenu(PRESETS["ease-in"]["ease-in-sine"]); 26 27 const rect = w.curve.getBoundingClientRect(); 28 rect.graphTop = rect.height * w.bezierCanvas.padding[0]; 29 30 await adjustingBezierUpdatesPreset(w, win, doc, rect); 31 await selectingPresetUpdatesBezier(w, win, doc, rect); 32 33 w.destroy(); 34 host.destroy(); 35 }); 36 37 function adjustingBezierUpdatesPreset(widget, win, doc, rect) { 38 info("Checking that changing the bezier refreshes the preset menu"); 39 40 is( 41 widget.presets.activeCategory, 42 doc.querySelector("#ease-in"), 43 "The selected category is ease-in" 44 ); 45 46 is( 47 widget.presets._activePreset, 48 doc.querySelector("#ease-in-sine"), 49 "The selected preset is ease-in-sine" 50 ); 51 52 info("Generating custom bezier curve by dragging"); 53 widget._onPointMouseDown({ target: widget.p1 }); 54 doc.onmousemove({ pageX: rect.left, pageY: rect.graphTop }); 55 doc.onmouseup(); 56 57 is( 58 widget.presets.activeCategory, 59 doc.querySelector("#ease-in"), 60 "The selected category is still ease-in" 61 ); 62 63 is(widget.presets._activePreset, null, "There is no active preset"); 64 } 65 66 async function selectingPresetUpdatesBezier(widget, win, doc) { 67 info("Checking that selecting a preset updates bezier curve"); 68 69 info("Listening for the new coordinates event"); 70 const onNewCoordinates = widget.presets.once("new-coordinates"); 71 const onUpdated = widget.once("updated"); 72 73 info("Click a preset"); 74 const preset = doc.querySelector("#ease-in-sine"); 75 widget.presets._onPresetClick({ currentTarget: preset }); 76 77 await onNewCoordinates; 78 ok(true, "The preset widget fired the new-coordinates event"); 79 80 const bezier = await onUpdated; 81 ok(true, "The bezier canvas fired the updated event"); 82 83 is( 84 bezier.P1[0], 85 preset.coordinates[0], 86 "The new P1 time coordinate is correct" 87 ); 88 is( 89 bezier.P1[1], 90 preset.coordinates[1], 91 "The new P1 progress coordinate is correct" 92 ); 93 is(bezier.P2[0], preset.coordinates[2], "P2 time coordinate is correct "); 94 is(bezier.P2[1], preset.coordinates[3], "P2 progress coordinate is correct"); 95 }