diff --git a/browser/base/content/browser-sync.js b/browser/base/content/browser-sync.js index 68eb30baa007..acee5276c70c 100644 --- a/browser/base/content/browser-sync.js +++ b/browser/base/content/browser-sync.js @@ -524,7 +524,6 @@ var gSync = { } const state = UIState.get(); if (state.status == UIState.STATUS_SIGNED_IN) { - this.updateSyncStatus({ syncing: true }); setTimeout(() => Weave.Service.errorHandler.syncAndReportErrors(), 0); } }, diff --git a/browser/components/customizableui/test/browser_synced_tabs_menu.js b/browser/components/customizableui/test/browser_synced_tabs_menu.js index e4d57c2f1e7d..3a4d4af87d84 100644 --- a/browser/components/customizableui/test/browser_synced_tabs_menu.js +++ b/browser/components/customizableui/test/browser_synced_tabs_menu.js @@ -7,7 +7,6 @@ requestLongerTimeout(2); let {SyncedTabs} = Cu.import("resource://services-sync/SyncedTabs.jsm", {}); -Cu.import("resource://services-sync/UIState.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "UITour", "resource:///modules/UITour.jsm"); @@ -43,16 +42,18 @@ add_task(async function setup() { let oldInternal = SyncedTabs._internal; SyncedTabs._internal = mockedInternal; - let origNotifyStateUpdated = UIState._internal.notifyStateUpdated; - // Sync start-up will interfere with our tests, don't let UIState send UI updates. - UIState._internal.notifyStateUpdated = () => {}; - - // Force gSync initialization - gSync.init(); + // This test hacks some observer states to simulate a user being signed + // in to Sync - restore them when the test completes. + let initialObserverStates = {}; + for (let id of ["sync-reauth-state", "sync-setup-state", "sync-syncnow-state"]) { + initialObserverStates[id] = document.getElementById(id).hidden; + } registerCleanupFunction(() => { - UIState._internal.notifyStateUpdated = origNotifyStateUpdated; SyncedTabs._internal = oldInternal; + for (let [id, initial] of Object.entries(initialObserverStates)) { + document.getElementById(id).hidden = initial; + } }); }); @@ -134,14 +135,19 @@ async function asyncCleanup() { // When Sync is not setup. add_task(async function() { - gSync.updateAllUI({ status: UIState.STATUS_NOT_CONFIGURED }); - await openPrefsFromMenuPanel("PanelUI-remotetabs-setupsync", "synced-tabs"); + document.getElementById("sync-reauth-state").hidden = true; + document.getElementById("sync-setup-state").hidden = false; + document.getElementById("sync-syncnow-state").hidden = true; + await openPrefsFromMenuPanel("PanelUI-remotetabs-setupsync", "synced-tabs") }); add_task(asyncCleanup); // When Sync is configured in a "needs reauthentication" state. add_task(async function() { - gSync.updateAllUI({ status: UIState.STATUS_LOGIN_FAILED, email: "foo@bar.com" }); + // configure our broadcasters so we are in the right state. + document.getElementById("sync-reauth-state").hidden = false; + document.getElementById("sync-setup-state").hidden = true; + document.getElementById("sync-syncnow-state").hidden = true; await openPrefsFromMenuPanel("PanelUI-remotetabs-reauthsync", "synced-tabs") }); @@ -151,7 +157,9 @@ add_task(async function() { Services.prefs.setCharPref("identity.mobilepromo.android", "http://example.com/?os=android&tail="); Services.prefs.setCharPref("identity.mobilepromo.ios", "http://example.com/?os=ios&tail="); - gSync.updateAllUI({ status: UIState.STATUS_SIGNED_IN, email: "foo@bar.com" }); + document.getElementById("sync-reauth-state").hidden = true; + document.getElementById("sync-setup-state").hidden = true; + document.getElementById("sync-syncnow-state").hidden = false; let syncPanel = document.getElementById("PanelUI-remotetabs"); let links = syncPanel.querySelectorAll(".remotetabs-promo-link"); @@ -202,7 +210,10 @@ add_task(async function() { // Test the "Sync Now" button add_task(async function() { - gSync.updateAllUI({ status: UIState.STATUS_SIGNED_IN, email: "foo@bar.com" }); + // configure our broadcasters so we are in the right state. + document.getElementById("sync-reauth-state").hidden = true; + document.getElementById("sync-setup-state").hidden = true; + document.getElementById("sync-syncnow-state").hidden = false; await document.getElementById("nav-bar").overflowable.show(); let tabsUpdatedPromise = promiseObserverNotified("synced-tabs-menu:test:tabs-updated"); @@ -221,11 +232,22 @@ add_task(async function() { // provides them is(deck.selectedIndex, DECKINDEX_FETCHING, "first deck entry is visible"); + let syncNowButton = document.getElementById("PanelUI-remotetabs-syncnow"); + + let didSync = false; + let oldDoSync = gSync.doSync; + gSync.doSync = function() { + didSync = true; + mockedInternal.hasSyncedThisSession = true; + gSync.doSync = oldDoSync; + } + syncNowButton.click(); + ok(didSync, "clicking the button called the correct function"); + // Tell the widget there are tabs available, but with zero clients. mockedInternal.getTabClients = () => { return Promise.resolve([]); } - mockedInternal.hasSyncedThisSession = true; await updateTabsPanel(); // The UI should be showing the "no clients" pane. is(deck.selectedIndex, DECKINDEX_NOCLIENTS, "no-clients deck entry is visible"); @@ -327,18 +349,6 @@ add_task(async function() { node = node.nextSibling; is(node, null, "no more entries"); - let didSync = false; - let oldDoSync = gSync.doSync; - gSync.doSync = function() { - didSync = true; - gSync.doSync = oldDoSync; - } - - let syncNowButton = document.getElementById("PanelUI-remotetabs-syncnow"); - is(syncNowButton.disabled, false); - syncNowButton.click(); - ok(didSync, "clicking the button called the correct function"); - await hideOverflow(); }); @@ -365,7 +375,10 @@ add_task(async function() { ]); }; - gSync.updateAllUI({ status: UIState.STATUS_SIGNED_IN, email: "foo@bar.com" }); + // configure our broadcasters so we are in the right state. + document.getElementById("sync-reauth-state").hidden = true; + document.getElementById("sync-setup-state").hidden = true; + document.getElementById("sync-syncnow-state").hidden = false; await document.getElementById("nav-bar").overflowable.show(); let tabsUpdatedPromise = promiseObserverNotified("synced-tabs-menu:test:tabs-updated");