Backed out 2 changesets (bug 1600059) for bc failures on browser_autocomplete_footer.js. CLOSED TREE

Backed out changeset 6e03b1a45863 (bug 1600059)
Backed out changeset 9a742ac1be88 (bug 1600059)
This commit is contained in:
Cosmin Sabou 2021-04-26 23:24:18 +03:00
Родитель 59d0b4e978
Коммит e3f5ad16b5
6 изменённых файлов: 63 добавлений и 138 удалений

Просмотреть файл

@ -6,18 +6,27 @@ support-files =
../fixtures/autocomplete_simple_basic.html
[browser_autocomplete_footer.js]
skip-if = verify # perma-fail see Bug 1600059
skip-if = (verify || (!debug && os == "mac")) # perma-fail see Bug 1600059
[browser_autocomplete_marked_back_forward.js]
skip-if = !debug && os == "mac" # perma-fail see Bug 1600059
[browser_autocomplete_marked_detached_tab.js]
skip-if = (verify && (os == 'win')) || (os == 'mac')
[browser_check_installed.js]
skip-if = !debug && os == "mac" # perma-fail see Bug 1600059
[browser_dropdown_layout.js]
skip-if = !debug && os == "mac" # perma-fail see Bug 1600059
[browser_editAddressDialog.js]
skip-if = verify
skip-if = verify || (!debug && os == "mac") # perma-fail see Bug 1600059
[browser_first_time_use_doorhanger.js]
skip-if = verify
skip-if = verify || (!debug && os == "mac") # perma-fail see Bug 1600059
[browser_manageAddressesDialog.js]
skip-if = !debug && os == "mac" # perma-fail see Bug 1600059
[browser_remoteiframe.js]
skip-if =
!debug && os == "mac" # perma-fail see Bug 1600059
os == 'linux' && (debug || asan || tsan) #Bug 1701078
os == 'win' && bits == 64 && asan #Bug 1701078
[browser_submission_in_private_mode.js]
skip-if = !debug && os == "mac" # perma-fail see Bug 1600059
[browser_update_doorhanger.js]
skip-if = true # bug 1426981 # Bug 1445538

Просмотреть файл

@ -29,9 +29,7 @@ add_task(async function test_press_enter_on_footer() {
true
);
for (let i = 0; i < listItemElems.length; i++) {
if (!listItemElems[i].collapsed) {
await BrowserTestUtils.synthesizeKey("VK_DOWN", {}, browser);
}
await BrowserTestUtils.synthesizeKey("VK_DOWN", {}, browser);
}
await BrowserTestUtils.synthesizeKey("VK_RETURN", {}, browser);
info(`expecting tab: about:preferences#privacy opened`);
@ -57,14 +55,9 @@ add_task(async function test_click_on_footer() {
await openPopupOn(browser, "#organization");
// Click on the footer
let optionButton = itemsBox.querySelector(
const optionButton = itemsBox.querySelector(
".autocomplete-richlistitem:last-child"
);
while (optionButton.collapsed) {
optionButton = optionButton.previousElementSibling;
}
optionButton = optionButton._optionButton;
)._optionButton;
const prefTabPromise = BrowserTestUtils.waitForNewTab(
gBrowser,
PRIVACY_PREF_URL,

Просмотреть файл

@ -17,12 +17,8 @@ add_task(async function test_fill_creditCard_but_cancel_login() {
async function(browser) {
await openPopupOn(browser, "#cc-name");
const ccItem = getDisplayedPopupItems(browser)[0];
let popupClosePromise = BrowserTestUtils.waitForPopupEvent(
browser.autoCompletePopup,
"hidden"
);
await EventUtils.synthesizeMouseAtCenter(ccItem, {});
await Promise.all([osKeyStoreLoginShown, popupClosePromise]);
await Promise.all([osKeyStoreLoginShown, expectPopupClose(browser)]);
await SpecialPowers.spawn(browser, [], async function() {
is(content.document.querySelector("#cc-name").value, "", "Check name");

Просмотреть файл

@ -688,16 +688,14 @@ add_task(async function test_submit_creditCard_new_with_hidden_ui() {
await BrowserTestUtils.withNewTab(
{ gBrowser, url: CREDITCARD_FORM_URL },
async function(browser) {
let rejectPopup = () => {
ok(false, "Popup should not be displayed");
};
browser.addEventListener("popupshowing", rejectPopup, true);
await SimpleTest.promiseFocus(browser);
await focusAndWaitForFieldsIdentified(browser, "form #cc-number");
await BrowserTestUtils.synthesizeKey("VK_DOWN", {}, browser);
is(PopupNotifications.panel.state, "closed", "Doorhanger is hidden");
await openPopupOn(browser, "form #cc-number").then(
() => {
return Promise.reject("Popup should not be displayed");
},
() => {
ok(true, "Popup has not been displayed");
}
);
await SpecialPowers.spawn(browser, [], async function() {
let form = content.document.getElementById("form");
@ -717,12 +715,7 @@ add_task(async function test_submit_creditCard_new_with_hidden_ui() {
});
await sleep(1000);
is(
PopupNotifications.panel.state,
"closed",
"Doorhanger is still hidden"
);
browser.removeEventListener("popupshowing", rejectPopup, true);
is(PopupNotifications.panel.state, "closed", "Doorhanger is hidden");
}
);

Просмотреть файл

@ -90,15 +90,11 @@ add_task(async function test_click_on_insecure_warning() {
{ gBrowser, url: "http" + TEST_URL_PATH_CC },
async function(browser) {
await openPopupOn(browser, "#cc-name");
const insecureItem = getDisplayedPopupItems(browser)[0];
let popupClosePromise = BrowserTestUtils.waitForPopupEvent(
browser.autoCompletePopup,
"hidden"
);
await EventUtils.synthesizeMouseAtCenter(insecureItem, {});
// Check input's value after popup closed to ensure the completion of autofilling.
await popupClosePromise;
await expectPopupClose(browser);
const inputValue = await SpecialPowers.spawn(
browser,
[],
@ -120,15 +116,9 @@ add_task(async function test_press_enter_on_insecure_warning() {
await openPopupOn(browser, "#cc-name");
await BrowserTestUtils.synthesizeKey("VK_DOWN", {}, browser);
let popupClosePromise = BrowserTestUtils.waitForPopupEvent(
browser.autoCompletePopup,
"hidden"
);
await BrowserTestUtils.synthesizeKey("VK_RETURN", {}, browser);
// Check input's value after popup closed to ensure the completion of autofilling.
await popupClosePromise;
await expectPopupClose(browser);
const inputValue = await SpecialPowers.spawn(
browser,
[],

Просмотреть файл

@ -6,7 +6,7 @@
FTU_PREF, ENABLED_AUTOFILL_ADDRESSES_PREF, ENABLED_AUTOFILL_ADDRESSES_CAPTURE_PREF, AUTOFILL_CREDITCARDS_AVAILABLE_PREF, ENABLED_AUTOFILL_CREDITCARDS_PREF,
SUPPORTED_COUNTRIES_PREF,
SYNC_USERNAME_PREF, SYNC_ADDRESSES_PREF, SYNC_CREDITCARDS_PREF, SYNC_CREDITCARDS_AVAILABLE_PREF, CREDITCARDS_USED_STATUS_PREF,
sleep, expectPopupOpen, openPopupOn, openPopupForSubframe, closePopup, closePopupForSubframe,
sleep, expectPopupOpen, openPopupOn, openPopupForSubframe, expectPopupClose, closePopup, closePopupForSubframe,
clickDoorhangerButton, getAddresses, saveAddress, removeAddresses, saveCreditCard,
getDisplayedPopupItems, getDoorhangerCheckbox, waitForPopupEnabled,
getNotification, getDoorhangerButton, removeAllRecords, expectWarningText, testDialog */
@ -283,68 +283,39 @@ async function focusAndWaitForFieldsIdentified(browserOrContext, selector) {
async function expectPopupOpen(browser) {
info("expectPopupOpen");
await BrowserTestUtils.waitForPopupEvent(browser.autoCompletePopup, "shown");
await BrowserTestUtils.waitForMutationCondition(
browser.autoCompletePopup.richlistbox,
{ childList: true, subtree: true, attributes: true },
() => {
const listItemElems = getDisplayedPopupItems(browser);
return (
!![...listItemElems].length &&
[...listItemElems].every(item => {
return (
(item.getAttribute("originaltype") == "autofill-profile" ||
item.getAttribute("originaltype") == "autofill-insecureWarning" ||
item.getAttribute("originaltype") == "autofill-footer") &&
item.hasAttribute("formautofillattached")
);
})
);
}
const { autoCompletePopup } = browser;
await BrowserTestUtils.waitForCondition(
() => autoCompletePopup.popupOpen,
"popup should be open"
);
await BrowserTestUtils.waitForCondition(() => {
const listItemElems = getDisplayedPopupItems(browser);
return (
!![...listItemElems].length &&
[...listItemElems].every(item => {
return (
(item.getAttribute("originaltype") == "autofill-profile" ||
item.getAttribute("originaltype") == "autofill-insecureWarning" ||
item.getAttribute("originaltype") == "autofill-footer") &&
item.hasAttribute("formautofillattached")
);
})
);
}, "The popup should be a form autofill one");
}
async function waitForPopupEnabled(browser) {
const {
autoCompletePopup: { richlistbox: itemsBox },
} = browser;
info("Wait for list elements to become enabled");
await BrowserTestUtils.waitForMutationCondition(
itemsBox,
{ subtree: true, attributes: true, attributeFilter: ["disabled"] },
() => !itemsBox.querySelectorAll(".autocomplete-richlistitem")[0].disabled
const listItemElems = itemsBox.querySelectorAll(".autocomplete-richlistitem");
await TestUtils.waitForCondition(
() => !listItemElems[0].disabled,
"Wait for list elements to become enabled"
);
}
// Wait for the popup state change notification to happen in a child process.
function waitPopupStateInChild(bc, messageName) {
return SpecialPowers.spawn(bc, [messageName], expectedMessage => {
return new Promise(resolve => {
const { AutoCompleteChild } = ChromeUtils.import(
"resource://gre/actors/AutoCompleteChild.jsm"
);
let listener = {
popupStateChanged: name => {
if (name != expectedMessage) {
info("Expected " + expectedMessage + " but received " + name);
return;
}
AutoCompleteChild.removePopupStateListener(listener);
resolve();
},
};
AutoCompleteChild.addPopupStateListener(listener);
});
});
}
async function openPopupOn(browser, selector) {
let childNotifiedPromise = waitPopupStateInChild(
browser,
"FormAutoComplete:PopupOpened"
);
await SimpleTest.promiseFocus(browser);
await focusAndWaitForFieldsIdentified(browser, selector);
if (!selector.includes("cc-")) {
@ -352,14 +323,9 @@ async function openPopupOn(browser, selector) {
await BrowserTestUtils.synthesizeKey("VK_DOWN", {}, browser);
}
await expectPopupOpen(browser);
await childNotifiedPromise;
}
async function openPopupForSubframe(browser, frameBrowsingContext, selector) {
let childNotifiedPromise = waitPopupStateInChild(
frameBrowsingContext,
"FormAutoComplete:PopupOpened"
);
await SimpleTest.promiseFocus(browser);
await focusAndWaitForFieldsIdentified(frameBrowsingContext, selector);
if (!selector.includes("cc-")) {
@ -367,49 +333,29 @@ async function openPopupForSubframe(browser, frameBrowsingContext, selector) {
await BrowserTestUtils.synthesizeKey("VK_DOWN", {}, frameBrowsingContext);
}
await expectPopupOpen(browser);
await childNotifiedPromise;
}
async function expectPopupClose(browser) {
await BrowserTestUtils.waitForCondition(
() => !browser.autoCompletePopup.popupOpen,
"popup should have closed"
);
}
async function closePopup(browser) {
// Return if the popup isn't open.
if (!browser.autoCompletePopup.popupOpen) {
return;
}
let childNotifiedPromise = waitPopupStateInChild(
browser,
"FormAutoComplete:PopupClosed"
);
let popupClosePromise = BrowserTestUtils.waitForPopupEvent(
browser.autoCompletePopup,
"hidden"
);
await SpecialPowers.spawn(browser, [], async function() {
content.document.activeElement.blur();
});
await popupClosePromise;
await childNotifiedPromise;
await expectPopupClose(browser);
}
async function closePopupForSubframe(browser, frameBrowsingContext) {
let childNotifiedPromise = waitPopupStateInChild(
browser,
"FormAutoComplete:PopupClosed"
);
let popupClosePromise = BrowserTestUtils.waitForPopupEvent(
browser.autoCompletePopup,
"hidden"
);
await SpecialPowers.spawn(frameBrowsingContext, [], async function() {
content.document.activeElement.blur();
});
await popupClosePromise;
await childNotifiedPromise;
await expectPopupClose(browser);
}
function emulateMessageToBrowser(name, data) {
@ -549,11 +495,9 @@ async function expectWarningText(browser, expectedText) {
}
warningBox = warningBox._warningTextBox;
await BrowserTestUtils.waitForMutationCondition(
warningBox,
{ childList: true, characterData: true },
() => warningBox.textContent == expectedText
);
await BrowserTestUtils.waitForCondition(() => {
return warningBox.textContent == expectedText;
}, `Waiting for expected warning text: ${expectedText}, Got ${warningBox.textContent}`);
ok(true, `Got expected warning text: ${expectedText}`);
}