mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-05-14 09:27:00 +00:00
76 lines
2.5 KiB
JavaScript
76 lines
2.5 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
// The test expects the about:accounts page to open in the current tab
|
|
|
|
"use strict";
|
|
|
|
XPCOMUtils.defineLazyModuleGetter(this, "UITour", "resource:///modules/UITour.jsm");
|
|
|
|
let initialLocation = gBrowser.currentURI.spec;
|
|
let newTab = null;
|
|
|
|
function openAboutAccountsFromMenuPanel(entryPoint) {
|
|
info("Check Sync button functionality");
|
|
Services.prefs.setCharPref("identity.fxaccounts.remote.signup.uri", "http://example.com/");
|
|
|
|
// add the Sync button to the panel
|
|
CustomizableUI.addWidgetToArea("sync-button", CustomizableUI.AREA_PANEL);
|
|
|
|
// check the button's functionality
|
|
yield PanelUI.show();
|
|
|
|
if (entryPoint == "uitour") {
|
|
UITour.originTabs.set(window, new Set());
|
|
UITour.originTabs.get(window).add(gBrowser.selectedTab);
|
|
}
|
|
|
|
let syncButton = document.getElementById("sync-button");
|
|
ok(syncButton, "The Sync button was added to the Panel Menu");
|
|
|
|
let deferred = Promise.defer();
|
|
let handler = (e) => {
|
|
if (e.originalTarget != gBrowser.selectedTab.linkedBrowser.contentDocument ||
|
|
e.target.location.href == "about:blank") {
|
|
info("Skipping spurious 'load' event for " + e.target.location.href);
|
|
return;
|
|
}
|
|
gBrowser.selectedTab.linkedBrowser.removeEventListener("load", handler, true);
|
|
deferred.resolve();
|
|
}
|
|
gBrowser.selectedTab.linkedBrowser.addEventListener("load", handler, true);
|
|
|
|
syncButton.click();
|
|
yield deferred.promise;
|
|
newTab = gBrowser.selectedTab;
|
|
|
|
is(gBrowser.currentURI.spec, "about:accounts?entrypoint=" + entryPoint,
|
|
"Firefox Sync page opened with `menupanel` entrypoint");
|
|
ok(!isPanelUIOpen(), "The panel closed");
|
|
|
|
if(isPanelUIOpen()) {
|
|
let panelHidePromise = promisePanelHidden(window);
|
|
PanelUI.hide();
|
|
yield panelHidePromise;
|
|
}
|
|
}
|
|
|
|
function asyncCleanup() {
|
|
Services.prefs.clearUserPref("identity.fxaccounts.remote.signup.uri");
|
|
// reset the panel UI to the default state
|
|
yield resetCustomization();
|
|
ok(CustomizableUI.inDefaultState, "The panel UI is in default state again.");
|
|
|
|
// restore the tabs
|
|
gBrowser.addTab(initialLocation);
|
|
gBrowser.removeTab(newTab);
|
|
UITour.originTabs.delete(window);
|
|
}
|
|
|
|
add_task(() => openAboutAccountsFromMenuPanel("syncbutton"));
|
|
add_task(asyncCleanup);
|
|
// Test that uitour is in progress, the entrypoint is `uitour` and not `menupanel`
|
|
add_task(() => openAboutAccountsFromMenuPanel("uitour"));
|
|
add_task(asyncCleanup);
|