tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 }