Commit 60e7f418 authored by Neil Deakin's avatar Neil Deakin
Browse files

Bug 1419925, implement a promise-oriented version of waitForClipboard,...

Bug 1419925, implement a promise-oriented version of waitForClipboard, promiseClipboardChange, change a selection of tests to use this instead. Simplify some other clipboard tests that were unreliable before the fix for 1394757. r=jmaher
parent d84d324b
Loading
Loading
Loading
Loading
+36 −35
Original line number Diff line number Diff line
@@ -260,7 +260,7 @@ function runTest(testCase, cb) {

function testCopy(copyVal, targetValue, cb) {
  info("Expecting copy of: " + targetValue);
  waitForClipboard(targetValue, function() {

  gURLBar.focus();
  if (copyVal) {
    let offsets = [];
@@ -299,6 +299,7 @@ function testCopy(copyVal, targetValue, cb) {
    gURLBar.select();
  }

  waitForClipboard(targetValue, function() {
    goDoCommand("cmd_copy");
  }, cb, cb);
}
+4 −20
Original line number Diff line number Diff line
@@ -34,30 +34,14 @@ add_task(async function() {

    ok(!copyButton.hasAttribute("disabled"), "Copy button is enabled when selecting");

    await SimpleTest.promiseClipboardChange(testText, () => {
      copyButton.click();
    is(gURLBar.value, testText, "Selected text is unaltered when clicking copy");
    });

    // check that the text was added to the clipboard
    let clipboard = Services.clipboard;
    let transferable = Cc["@mozilla.org/widget/transferable;1"].createInstance(Ci.nsITransferable);
    globalClipboard = clipboard.kGlobalClipboard;

    transferable.init(null);
    transferable.addDataFlavor("text/unicode");
    clipboard.getData(transferable, globalClipboard);
    let str = {}, strLength = {};
    transferable.getTransferData("text/unicode", str, strLength);
    let clipboardValue = "";

    if (str.value) {
      str.value.QueryInterface(Ci.nsISupportsString);
      clipboardValue = str.value.data;
    }
    is(clipboardValue, testText, "Data was copied to the clipboard.");
    is(gURLBar.value, testText, "Selected text is unaltered when clicking copy");
  });
});

registerCleanupFunction(function cleanup() {
  CustomizableUI.reset();
  Services.clipboard.emptyClipboard(globalClipboard);
});
+3 −20
Original line number Diff line number Diff line
@@ -32,30 +32,13 @@ add_task(async function() {
    info("Menu panel was opened");

    ok(!cutButton.hasAttribute("disabled"), "Cut button is enabled when selecting");
    await SimpleTest.promiseClipboardChange(testText, () => {
      cutButton.click();
    });
    is(gURLBar.value, "", "Selected text is removed from source when clicking on cut");

    // check that the text was added to the clipboard
    let clipboard = Services.clipboard;
    let transferable = Cc["@mozilla.org/widget/transferable;1"].createInstance(Ci.nsITransferable);
    globalClipboard = clipboard.kGlobalClipboard;

    transferable.init(null);
    transferable.addDataFlavor("text/unicode");
    clipboard.getData(transferable, globalClipboard);
    let str = {}, strLength = {};
    transferable.getTransferData("text/unicode", str, strLength);
    let clipboardValue = "";

    if (str.value) {
      str.value.QueryInterface(Ci.nsISupportsString);
      clipboardValue = str.value.data;
    }
    is(clipboardValue, testText, "Data was copied to the clipboard.");
  });
});

registerCleanupFunction(function cleanup() {
  CustomizableUI.reset();
  Services.clipboard.emptyClipboard(globalClipboard);
});
+6 −1
Original line number Diff line number Diff line
@@ -32,7 +32,12 @@ add_task(function* () {
      target: markupTagLine,
    });
    info(`Testing ${menuId} for ${clipboardData}`);

    yield SimpleTest.promiseClipboardChange(clipboardData,
      () => {
        clipboard.copyString(clipboardData);
      }
    );

    let onMutation = inspector.once("markupmutation");
    allMenuItems.find(item => item.id === menuId).click();
+16 −3
Original line number Diff line number Diff line
@@ -43,7 +43,12 @@ add_task(function* () {

  function* testPasteOuterHTMLMenu() {
    info("Testing that 'Paste Outer HTML' menu item works.");

    yield SimpleTest.promiseClipboardChange("this was pasted (outerHTML)",
      () => {
        clipboard.copyString("this was pasted (outerHTML)");
      });

    let outerHTMLSelector = "#paste-area h1";

    let nodeFront = yield getNodeFront(outerHTMLSelector, inspector);
@@ -68,7 +73,11 @@ add_task(function* () {

  function* testPasteInnerHTMLMenu() {
    info("Testing that 'Paste Inner HTML' menu item works.");

    yield SimpleTest.promiseClipboardChange("this was pasted (innerHTML)",
      () => {
        clipboard.copyString("this was pasted (innerHTML)");
      });
    let innerHTMLSelector = "#paste-area .inner";
    let getInnerHTML = () => testActor.getProperty(innerHTMLSelector,
                                                   "innerHTML");
@@ -107,7 +116,11 @@ add_task(function* () {
        target: markupTagLine,
      });
      info(`Testing ${menuId} for ${clipboardData}`);

      yield SimpleTest.promiseClipboardChange(clipboardData,
        () => {
          clipboard.copyString(clipboardData);
        });

      let onMutation = inspector.once("markupmutation");
      allMenuItems.find(item => item.id === menuId).click();
Loading