| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 | 
							- /* Copyright 2022 Mozilla Foundation
 
-  *
 
-  * Licensed under the Apache License, Version 2.0 (the "License");
 
-  * you may not use this file except in compliance with the License.
 
-  * You may obtain a copy of the License at
 
-  *
 
-  *     http://www.apache.org/licenses/LICENSE-2.0
 
-  *
 
-  * Unless required by applicable law or agreed to in writing, software
 
-  * distributed under the License is distributed on an "AS IS" BASIS,
 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
-  * See the License for the specific language governing permissions and
 
-  * limitations under the License.
 
-  */
 
- const {
 
-   closePages,
 
-   getSelectedEditors,
 
-   loadAndWait,
 
- } = require("./test_utils.js");
 
- describe("Editor", () => {
 
-   describe("Ink", () => {
 
-     let pages;
 
-     beforeAll(async () => {
 
-       pages = await loadAndWait("aboutstacks.pdf", ".annotationEditorLayer");
 
-     });
 
-     afterAll(async () => {
 
-       await closePages(pages);
 
-     });
 
-     it("must draw, undo a deletion and check that the editors are not selected", async () => {
 
-       await Promise.all(
 
-         pages.map(async ([browserName, page]) => {
 
-           await page.click("#editorInk");
 
-           const rect = await page.$eval(".annotationEditorLayer", el => {
 
-             // With Chrome something is wrong when serializing a DomRect,
 
-             // hence we extract the values and just return them.
 
-             const { x, y } = el.getBoundingClientRect();
 
-             return { x, y };
 
-           });
 
-           for (let i = 0; i < 3; i++) {
 
-             const x = rect.x + 100 + i * 100;
 
-             const y = rect.y + 100 + i * 100;
 
-             await page.mouse.move(x, y);
 
-             await page.mouse.down();
 
-             await page.mouse.move(x + 50, y + 50);
 
-             await page.mouse.up();
 
-             await page.keyboard.press("Escape");
 
-           }
 
-           await page.keyboard.down("Control");
 
-           await page.keyboard.press("a");
 
-           await page.keyboard.up("Control");
 
-           expect(await getSelectedEditors(page))
 
-             .withContext(`In ${browserName}`)
 
-             .toEqual([0, 1, 2]);
 
-           await page.keyboard.press("Backspace");
 
-           await page.keyboard.down("Control");
 
-           await page.keyboard.press("z");
 
-           await page.keyboard.up("Control");
 
-           expect(await getSelectedEditors(page))
 
-             .withContext(`In ${browserName}`)
 
-             .toEqual([]);
 
-         })
 
-       );
 
-     });
 
-     it("must draw, undo/redo and check that the editor don't move", async () => {
 
-       await Promise.all(
 
-         pages.map(async ([browserName, page]) => {
 
-           await page.keyboard.down("Control");
 
-           await page.keyboard.press("a");
 
-           await page.keyboard.up("Control");
 
-           await page.keyboard.press("Backspace");
 
-           const rect = await page.$eval(".annotationEditorLayer", el => {
 
-             // With Chrome something is wrong when serializing a DomRect,
 
-             // hence we extract the values and just return them.
 
-             const { x, y } = el.getBoundingClientRect();
 
-             return { x, y };
 
-           });
 
-           const xStart = rect.x + 300;
 
-           const yStart = rect.y + 300;
 
-           await page.mouse.move(xStart, yStart);
 
-           await page.mouse.down();
 
-           await page.mouse.move(xStart + 50, yStart + 50);
 
-           await page.mouse.up();
 
-           await page.keyboard.press("Escape");
 
-           const rectBefore = await page.$eval(".inkEditor canvas", el => {
 
-             const { x, y } = el.getBoundingClientRect();
 
-             return { x, y };
 
-           });
 
-           for (let i = 0; i < 30; i++) {
 
-             await page.keyboard.down("Control");
 
-             await page.keyboard.press("z");
 
-             await page.keyboard.up("Control");
 
-             await page.waitForTimeout(10);
 
-             await page.keyboard.down("Control");
 
-             await page.keyboard.press("y");
 
-             await page.keyboard.up("Control");
 
-             await page.waitForTimeout(10);
 
-           }
 
-           const rectAfter = await page.$eval(".inkEditor canvas", el => {
 
-             const { x, y } = el.getBoundingClientRect();
 
-             return { x, y };
 
-           });
 
-           expect(Math.round(rectBefore.x))
 
-             .withContext(`In ${browserName}`)
 
-             .toEqual(Math.round(rectAfter.x));
 
-           expect(Math.round(rectBefore.y))
 
-             .withContext(`In ${browserName}`)
 
-             .toEqual(Math.round(rectAfter.y));
 
-         })
 
-       );
 
-     });
 
-   });
 
- });
 
 
  |