Bug 1365273 - Remove about:sync-tabs. r?markh draft
authorEdouard Oger <eoger@fastmail.com>
Wed, 17 May 2017 11:39:22 -0400
changeset 580512 eecd96f75ebff8c498124d4d4eeb00e845baf6af
parent 579463 6e3ca5b38f7173b214b10de49e58cb01890bf39d
child 629318 4dbbb49951465eb08fdc9f055f5d2ccabacc88e7
push id59590
push userbmo:eoger@fastmail.com
push dateThu, 18 May 2017 17:29:22 +0000
reviewersmarkh
bugs1365273
milestone55.0a1
Bug 1365273 - Remove about:sync-tabs. r?markh MozReview-Commit-ID: HFsc4xf8N3a
browser/base/content/moz.build
browser/base/content/sync/aboutSyncTabs-bindings.xml
browser/base/content/sync/aboutSyncTabs.css
browser/base/content/sync/aboutSyncTabs.js
browser/base/content/sync/aboutSyncTabs.xul
browser/base/jar.mn
browser/components/about/AboutRedirector.cpp
browser/components/build/nsModule.cpp
browser/locales/en-US/chrome/browser/aboutSyncTabs.dtd
browser/locales/jar.mn
browser/themes/linux/aboutSyncTabs.css
browser/themes/linux/jar.mn
browser/themes/osx/aboutSyncTabs.css
browser/themes/osx/jar.mn
browser/themes/windows/aboutSyncTabs.css
browser/themes/windows/jar.mn
netwerk/base/nsNetUtil.cpp
--- a/browser/base/content/moz.build
+++ b/browser/base/content/moz.build
@@ -20,19 +20,16 @@ with Files("docs/**"):
     BUG_COMPONENT = ("Core", "Security")
 
 with Files("newtab/**"):
     BUG_COMPONENT = ("Firefox", "New Tab Page")
 
 with Files("pageinfo/**"):
     BUG_COMPONENT = ("Firefox", "Page Info Window")
 
-with Files("sync/**"):
-    BUG_COMPONENT = ("Firefox", "Sync")
-
 with Files("test/alerts/**"):
     BUG_COMPONENT = ("Toolkit", "Notifications and Alerts")
 
 with Files("test/appUpdate/**"):
     BUG_COMPONENT = ("Toolkit", "Application Update")
 
 with Files("test/captivePortal/**"):
     BUG_COMPONENT = ("Firefox", "General")
deleted file mode 100644
--- a/browser/base/content/sync/aboutSyncTabs-bindings.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-
-<!-- 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/. -->
-
-<!-- import-globals-from aboutSyncTabs.js -->
-
-<bindings id="tabBindings"
-          xmlns="http://www.mozilla.org/xbl"
-          xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-          xmlns:xbl="http://www.mozilla.org/xbl">
-
-  <binding id="tab-listing" extends="chrome://global/content/bindings/richlistbox.xml#richlistitem">
-    <content>
-      <xul:hbox flex="1">
-        <xul:vbox pack="start">
-          <xul:image class="tabIcon"
-                     xbl:inherits="src=icon"/>
-        </xul:vbox>
-        <xul:vbox pack="start" flex="1">
-            <xul:label xbl:inherits="value=title,selected"
-                       crop="end" flex="1" class="title"/>
-            <xul:label xbl:inherits="value=url,selected"
-                       crop="end" flex="1" class="url"/>
-        </xul:vbox>
-      </xul:hbox>
-    </content>
-    <handlers>
-      <handler event="dblclick" button="0">
-        <![CDATA[
-          RemoteTabViewer.openSelected();
-        ]]>
-      </handler>
-    </handlers>
-  </binding>
-
-  <binding id="client-listing" extends="chrome://global/content/bindings/richlistbox.xml#richlistitem">
-    <content>
-      <xul:hbox pack="start" align="center" onfocus="event.target.blur()" onselect="return false;">
-        <xul:image/>
-        <xul:label xbl:inherits="value=clientName"
-                   class="clientName"
-                   crop="center" flex="1"/>
-      </xul:hbox>
-    </content>
-  </binding>
-</bindings>
deleted file mode 100644
--- a/browser/base/content/sync/aboutSyncTabs.css
+++ /dev/null
@@ -1,11 +0,0 @@
-/* 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/. */
-
-richlistitem[type="tab"] {
-  -moz-binding: url(chrome://browser/content/sync/aboutSyncTabs-bindings.xml#tab-listing);
-}
-
-richlistitem[type="client"] {
-  -moz-binding: url(chrome://browser/content/sync/aboutSyncTabs-bindings.xml#client-listing);
-}
deleted file mode 100644
--- a/browser/base/content/sync/aboutSyncTabs.js
+++ /dev/null
@@ -1,305 +0,0 @@
-/* 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/. */
-
-/* import-globals-from ../utilityOverlay.js */
-
-var Cu = Components.utils;
-
-Cu.import("resource://services-common/utils.js");
-Cu.import("resource://services-sync/main.js");
-Cu.import("resource:///modules/PlacesUIUtils.jsm");
-Cu.import("resource://gre/modules/AppConstants.jsm");
-Cu.import("resource://gre/modules/PlacesUtils.jsm", this);
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-
-XPCOMUtils.defineLazyModuleGetter(this, "Promise",
-                                  "resource://gre/modules/Promise.jsm");
-
-var RemoteTabViewer = {
-  _tabsList: null,
-
-  init() {
-    Services.obs.addObserver(this, "weave:service:login:finish");
-    Services.obs.addObserver(this, "weave:engine:sync:finish");
-
-    this._tabsList = document.getElementById("tabsList");
-
-    this.buildList(true);
-  },
-
-  uninit() {
-    Services.obs.removeObserver(this, "weave:service:login:finish");
-    Services.obs.removeObserver(this, "weave:engine:sync:finish");
-  },
-
-  createItem(attrs) {
-    let item = document.createElement("richlistitem");
-
-    // Copy the attributes from the argument into the item.
-    for (let attr in attrs) {
-      item.setAttribute(attr, attrs[attr]);
-    }
-
-    if (attrs["type"] == "tab") {
-      item.label = attrs.title != "" ? attrs.title : attrs.url;
-    }
-
-    return item;
-  },
-
-  filterTabs(event) {
-    let val = event.target.value.toLowerCase();
-    let numTabs = this._tabsList.getRowCount();
-    let clientTabs = 0;
-    let currentClient = null;
-
-    for (let i = 0; i < numTabs; i++) {
-      let item = this._tabsList.getItemAtIndex(i);
-      let hide = false;
-      if (item.getAttribute("type") == "tab") {
-        if (!item.getAttribute("url").toLowerCase().includes(val) &&
-            !item.getAttribute("title").toLowerCase().includes(val)) {
-          hide = true;
-        } else {
-          clientTabs++;
-        }
-      } else if (item.getAttribute("type") == "client") {
-        if (currentClient) {
-          if (clientTabs == 0) {
-            currentClient.hidden = true;
-          }
-        }
-        currentClient = item;
-        clientTabs = 0;
-      }
-      item.hidden = hide;
-    }
-    if (clientTabs == 0) {
-      currentClient.hidden = true;
-    }
-  },
-
-  openSelected() {
-    let items = this._tabsList.selectedItems;
-    let urls = [];
-    for (let i = 0; i < items.length; i++) {
-      if (items[i].getAttribute("type") == "tab") {
-        urls.push(items[i].getAttribute("url"));
-        let index = this._tabsList.getIndexOfItem(items[i]);
-        this._tabsList.removeItemAt(index);
-      }
-    }
-    if (urls.length) {
-      getTopWin().gBrowser.loadTabs(urls);
-      this._tabsList.clearSelection();
-    }
-  },
-
-  bookmarkSingleTab() {
-    let item = this._tabsList.selectedItems[0];
-    let uri = Weave.Utils.makeURI(item.getAttribute("url"));
-    let title = item.getAttribute("title");
-    PlacesUIUtils.showBookmarkDialog({ action: "add"
-                                     , type: "bookmark"
-                                     , uri
-                                     , title
-                                     , hiddenRows: [ "description"
-                                                   , "location"
-                                                   , "loadInSidebar"
-                                                   , "keyword" ]
-                                     }, window.top);
-  },
-
-  bookmarkSelectedTabs() {
-    let items = this._tabsList.selectedItems;
-    let URIs = [];
-    for (let i = 0; i < items.length; i++) {
-      if (items[i].getAttribute("type") == "tab") {
-        let uri = Weave.Utils.makeURI(items[i].getAttribute("url"));
-        if (!uri) {
-          continue;
-        }
-
-        URIs.push(uri);
-      }
-    }
-    if (URIs.length) {
-      PlacesUIUtils.showBookmarkDialog({ action: "add"
-                                       , type: "folder"
-                                       , URIList: URIs
-                                       , hiddenRows: [ "description" ]
-                                       }, window.top);
-    }
-  },
-
-  getIcon(iconUri, defaultIcon) {
-    try {
-      let iconURI = Weave.Utils.makeURI(iconUri);
-      return PlacesUtils.favicons.getFaviconLinkForIcon(iconURI).spec;
-    } catch (ex) {
-      // Do nothing.
-    }
-
-    // Just give the provided default icon or the system's default.
-    return defaultIcon || PlacesUtils.favicons.defaultFavicon.spec;
-  },
-
-  _waitingForBuildList: false,
-
-  _buildListRequested: false,
-
-  buildList(forceSync) {
-    if (this._waitingForBuildList) {
-      this._buildListRequested = true;
-      return;
-    }
-
-    this._waitingForBuildList = true;
-    this._buildListRequested = false;
-
-    this._clearTabList();
-
-    if (Weave.Service.isLoggedIn) {
-      this._refetchTabs(forceSync);
-      this._generateWeaveTabList();
-    } else {
-      // XXXzpao We should say something about not being logged in & not having data
-      //        or tell the appropriate condition. (bug 583344)
-    }
-
-    this._waitingForBuildList = false;
-    if (this._buildListRequested) {
-      CommonUtils.nextTick(this.buildList, this);
-    }
-  },
-
-  _clearTabList() {
-    let list = this._tabsList;
-
-    // Clear out existing richlistitems.
-    let count = list.getRowCount();
-    if (count > 0) {
-      for (let i = count - 1; i >= 0; i--) {
-        list.removeItemAt(i);
-      }
-    }
-  },
-
-  _generateWeaveTabList() {
-    let engine = Weave.Service.engineManager.get("tabs");
-    let list = this._tabsList;
-
-    let seenURLs = new Set();
-    let localURLs = engine.getOpenURLs();
-
-    for (let [, client] of Object.entries(engine.getAllClients())) {
-      // Create the client node, but don't add it in-case we don't show any tabs
-      let appendClient = true;
-
-      client.tabs.forEach(function({title, urlHistory, icon}) {
-        let url = urlHistory[0];
-        if (!url || localURLs.has(url) || seenURLs.has(url)) {
-          return;
-        }
-        seenURLs.add(url);
-
-        if (appendClient) {
-          let attrs = {
-            type: "client",
-            clientName: client.clientName,
-            class: Weave.Service.clientsEngine.isMobile(client.id) ? "mobile" : "desktop"
-          };
-          let clientEnt = this.createItem(attrs);
-          list.appendChild(clientEnt);
-          appendClient = false;
-          clientEnt.disabled = true;
-        }
-        let attrs = {
-          type:  "tab",
-          title: title || url,
-          url,
-          icon:  this.getIcon(icon),
-        }
-        let tab = this.createItem(attrs);
-        list.appendChild(tab);
-      }, this);
-    }
-  },
-
-  adjustContextMenu(event) {
-    let mode = "all";
-    switch (this._tabsList.selectedItems.length) {
-      case 0:
-        break;
-      case 1:
-        mode = "single"
-        break;
-      default:
-        mode = "multiple";
-        break;
-    }
-
-    let menu = document.getElementById("tabListContext");
-    let el = menu.firstChild;
-    while (el) {
-      let showFor = el.getAttribute("showFor");
-      if (showFor) {
-        el.hidden = showFor != mode && showFor != "all";
-      }
-
-      el = el.nextSibling;
-    }
-  },
-
-  _refetchTabs(force) {
-    if (!force) {
-      // Don't bother refetching tabs if we already did so recently
-      let lastFetch = Services.prefs.getIntPref("services.sync.lastTabFetch", 0);
-
-      let now = Math.floor(Date.now() / 1000);
-      if (now - lastFetch < 30) {
-        return false;
-      }
-    }
-
-    // Ask Sync to just do the tabs engine if it can.
-    Weave.Service.sync(["tabs"]);
-    Services.prefs.setIntPref("services.sync.lastTabFetch",
-                              Math.floor(Date.now() / 1000));
-
-    return true;
-  },
-
-  observe(subject, topic, data) {
-    switch (topic) {
-      case "weave:service:login:finish":
-        // A login has finished, which means that a Sync is about to start and
-        // we will eventually get to the "tabs" engine - but try and force the
-        // tab engine to sync first by passing |true| for the forceSync param.
-        this.buildList(true);
-        break;
-      case "weave:engine:sync:finish":
-        if (data == "tabs") {
-          // The tabs engine just finished, so re-build the list without
-          // forcing a new sync of the tabs engine.
-          this.buildList(false);
-        }
-        break;
-    }
-  },
-
-  handleClick(event) {
-    if (event.target.getAttribute("type") != "tab") {
-      return;
-    }
-
-    if (event.button == 1) {
-      let url = event.target.getAttribute("url");
-      openUILink(url, event);
-      let index = this._tabsList.getIndexOfItem(event.target);
-      this._tabsList.removeItemAt(index);
-    }
-  }
-}
deleted file mode 100644
--- a/browser/base/content/sync/aboutSyncTabs.xul
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- 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/. -->
-
-<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
-<?xml-stylesheet href="chrome://browser/skin/aboutSyncTabs.css" type="text/css"?>
-<?xml-stylesheet href="chrome://browser/content/sync/aboutSyncTabs.css" type="text/css"?>
-
-<!DOCTYPE window [
-  <!ENTITY % aboutSyncTabsDTD SYSTEM "chrome://browser/locale/aboutSyncTabs.dtd">
-  %aboutSyncTabsDTD;
-]>
-
-<window id="tabs-display"
-        onload="RemoteTabViewer.init()"
-        onunload="RemoteTabViewer.uninit()"
-        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-        xmlns:html="http://www.w3.org/1999/xhtml"
-        title="&tabs.otherDevices.label;">
-  <script type="application/javascript" src="chrome://browser/content/sync/aboutSyncTabs.js"/>
-  <script type="application/javascript" src="chrome://browser/content/utilityOverlay.js"/>
-  <html:head>
-    <html:link rel="icon" href="chrome://browser/skin/sync-16.png"/>
-  </html:head>
-
-  <popupset id="contextmenus">
-    <menupopup id="tabListContext">
-      <menuitem label="&tabs.context.openTab.label;"
-                accesskey="&tabs.context.openTab.accesskey;"
-                oncommand="RemoteTabViewer.openSelected()"
-                showFor="single"/>
-      <menuitem label="&tabs.context.bookmarkSingleTab.label;"
-                accesskey="&tabs.context.bookmarkSingleTab.accesskey;"
-                oncommand="RemoteTabViewer.bookmarkSingleTab(event)"
-                showFor="single"/>
-      <menuitem label="&tabs.context.openMultipleTabs.label;"
-                accesskey="&tabs.context.openMultipleTabs.accesskey;"
-                oncommand="RemoteTabViewer.openSelected()"
-                showFor="multiple"/>
-      <menuitem label="&tabs.context.bookmarkMultipleTabs.label;"
-                accesskey="&tabs.context.bookmarkMultipleTabs.accesskey;"
-                oncommand="RemoteTabViewer.bookmarkSelectedTabs()"
-                showFor="multiple"/>
-      <menuseparator/>
-      <menuitem label="&tabs.context.refreshList.label;"
-                accesskey="&tabs.context.refreshList.accesskey;"
-                oncommand="RemoteTabViewer.buildList()"
-                showFor="all"/>
-    </menupopup>
-  </popupset>
-  <richlistbox context="tabListContext" id="tabsList" seltype="multiple"
-               align="center" flex="1"
-               onclick="RemoteTabViewer.handleClick(event)"
-               oncontextmenu="RemoteTabViewer.adjustContextMenu(event)">
-    <hbox id="headers" align="center">
-      <label id="tabsListHeading"
-             value="&tabs.otherDevices.label;"/>
-      <spacer flex="1"/>
-      <textbox type="search"
-               emptytext="&tabs.searchText.label;"
-               oncommand="RemoteTabViewer.filterTabs(event)"/>
-    </hbox>
-
-  </richlistbox>
-</window>
-
--- a/browser/base/jar.mn
+++ b/browser/base/jar.mn
@@ -124,20 +124,16 @@ browser.jar:
         content/browser/pageinfo/pageInfo.js          (content/pageinfo/pageInfo.js)
         content/browser/pageinfo/pageInfo.css         (content/pageinfo/pageInfo.css)
         content/browser/pageinfo/pageInfo.xml         (content/pageinfo/pageInfo.xml)
         content/browser/pageinfo/feeds.js             (content/pageinfo/feeds.js)
         content/browser/pageinfo/feeds.xml            (content/pageinfo/feeds.xml)
         content/browser/pageinfo/permissions.js       (content/pageinfo/permissions.js)
         content/browser/pageinfo/security.js          (content/pageinfo/security.js)
         content/browser/robot.ico                     (content/robot.ico)
-        content/browser/sync/aboutSyncTabs.xul        (content/sync/aboutSyncTabs.xul)
-        content/browser/sync/aboutSyncTabs.js         (content/sync/aboutSyncTabs.js)
-        content/browser/sync/aboutSyncTabs.css        (content/sync/aboutSyncTabs.css)
-        content/browser/sync/aboutSyncTabs-bindings.xml  (content/sync/aboutSyncTabs-bindings.xml)
         content/browser/safeMode.css                  (content/safeMode.css)
         content/browser/safeMode.js                   (content/safeMode.js)
         content/browser/safeMode.xul                  (content/safeMode.xul)
         content/browser/sanitize.js                   (content/sanitize.js)
         content/browser/sanitize.xul                  (content/sanitize.xul)
         content/browser/sanitizeDialog.js             (content/sanitizeDialog.js)
         content/browser/sanitizeDialog.css            (content/sanitizeDialog.css)
         content/browser/contentSearchUI.js            (content/contentSearchUI.js)
--- a/browser/components/about/AboutRedirector.cpp
+++ b/browser/components/about/AboutRedirector.cpp
@@ -75,18 +75,16 @@ static const RedirEntry kRedirMap[] = {
     nsIAboutModule::ALLOW_SCRIPT },
   { "searchreset", "chrome://browser/content/search/searchReset.xhtml",
     nsIAboutModule::ALLOW_SCRIPT |
     nsIAboutModule::HIDE_FROM_ABOUTABOUT },
   { "sessionrestore", "chrome://browser/content/aboutSessionRestore.xhtml",
     nsIAboutModule::ALLOW_SCRIPT },
   { "welcomeback", "chrome://browser/content/aboutWelcomeBack.xhtml",
     nsIAboutModule::ALLOW_SCRIPT },
-  { "sync-tabs", "chrome://browser/content/sync/aboutSyncTabs.xul",
-    nsIAboutModule::ALLOW_SCRIPT },
   // Linkable because of indexeddb use (bug 1228118)
   { "home", "chrome://browser/content/abouthome/aboutHome.xhtml",
     nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
     nsIAboutModule::URI_MUST_LOAD_IN_CHILD |
     nsIAboutModule::ALLOW_SCRIPT |
     nsIAboutModule::MAKE_LINKABLE |
     nsIAboutModule::ENABLE_INDEXED_DB },
   // the newtab's actual URL will be determined when the channel is created
--- a/browser/components/build/nsModule.cpp
+++ b/browser/components/build/nsModule.cpp
@@ -92,17 +92,16 @@ static const mozilla::Module::ContractID
     { NS_ABOUT_MODULE_CONTRACTID_PREFIX "tabcrashed", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
     { NS_ABOUT_MODULE_CONTRACTID_PREFIX "feeds", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
     { NS_ABOUT_MODULE_CONTRACTID_PREFIX "privatebrowsing", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
     { NS_ABOUT_MODULE_CONTRACTID_PREFIX "rights", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
     { NS_ABOUT_MODULE_CONTRACTID_PREFIX "robots", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
     { NS_ABOUT_MODULE_CONTRACTID_PREFIX "searchreset", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
     { NS_ABOUT_MODULE_CONTRACTID_PREFIX "sessionrestore", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
     { NS_ABOUT_MODULE_CONTRACTID_PREFIX "welcomeback", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
-    { NS_ABOUT_MODULE_CONTRACTID_PREFIX "sync-tabs", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
     { NS_ABOUT_MODULE_CONTRACTID_PREFIX "home", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
     { NS_ABOUT_MODULE_CONTRACTID_PREFIX "newtab", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
     { NS_ABOUT_MODULE_CONTRACTID_PREFIX "preferences", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
     { NS_ABOUT_MODULE_CONTRACTID_PREFIX "downloads", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
     { NS_ABOUT_MODULE_CONTRACTID_PREFIX "accounts", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
 #ifdef MOZ_SERVICES_HEALTHREPORT
     { NS_ABOUT_MODULE_CONTRACTID_PREFIX "healthreport", &kNS_BROWSER_ABOUT_REDIRECTOR_CID },
 #endif
deleted file mode 100644
--- a/browser/locales/en-US/chrome/browser/aboutSyncTabs.dtd
+++ /dev/null
@@ -1,20 +0,0 @@
-<!-- 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/. -->
-
-<!ENTITY tabs.otherDevices.label               "Tabs From Other Devices">
-
-<!ENTITY tabs.searchText.label                   "Type here to find tabs…">
-
-<!-- LOCALIZATION NOTE (tabs.context.openTab.accesskey, tabs.context.openMultipleTabs.accesskey):
-     Only one of these will show at a time (based on selection), so reusing accesskey is ok. -->
-<!ENTITY tabs.context.openTab.label                   "Open This Tab">
-<!ENTITY tabs.context.openTab.accesskey               "O">
-<!ENTITY tabs.context.openMultipleTabs.label          "Open Selected Tabs">
-<!ENTITY tabs.context.openMultipleTabs.accesskey      "O">
-<!ENTITY tabs.context.bookmarkSingleTab.label         "Bookmark This Tab…">
-<!ENTITY tabs.context.bookmarkSingleTab.accesskey     "B">
-<!ENTITY tabs.context.bookmarkMultipleTabs.label      "Bookmark Selected Tabs…">
-<!ENTITY tabs.context.bookmarkMultipleTabs.accesskey  "B">
-<!ENTITY tabs.context.refreshList.label               "Refresh List">
-<!ENTITY tabs.context.refreshList.accesskey           "R">
--- a/browser/locales/jar.mn
+++ b/browser/locales/jar.mn
@@ -15,17 +15,16 @@
     locale/browser/aboutHome.dtd                   (%chrome/browser/aboutHome.dtd)
     locale/browser/accounts.properties             (%chrome/browser/accounts.properties)
 #ifdef MOZ_SERVICES_HEALTHREPORT
     locale/browser/aboutHealthReport.dtd           (%chrome/browser/aboutHealthReport.dtd)
 #endif
     locale/browser/aboutSearchReset.dtd            (%chrome/browser/aboutSearchReset.dtd)
     locale/browser/aboutSessionRestore.dtd         (%chrome/browser/aboutSessionRestore.dtd)
     locale/browser/aboutTabCrashed.dtd             (%chrome/browser/aboutTabCrashed.dtd)
-    locale/browser/aboutSyncTabs.dtd               (%chrome/browser/aboutSyncTabs.dtd)
     locale/browser/browser.dtd                     (%chrome/browser/browser.dtd)
     locale/browser/baseMenuOverlay.dtd             (%chrome/browser/baseMenuOverlay.dtd)
     locale/browser/browser.properties              (%chrome/browser/browser.properties)
     locale/browser/customizableui/customizableWidgets.properties (%chrome/browser/customizableui/customizableWidgets.properties)
     locale/browser/lightweightThemes.properties    (%chrome/browser/lightweightThemes.properties)
     locale/browser/newTab.dtd                      (%chrome/browser/newTab.dtd)
     locale/browser/newTab.properties               (%chrome/browser/newTab.properties)
     locale/browser/pageInfo.dtd                    (%chrome/browser/pageInfo.dtd)
deleted file mode 100644
--- a/browser/themes/linux/aboutSyncTabs.css
+++ /dev/null
@@ -1,105 +0,0 @@
-/* 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/. */
-
-#tabs-display,
-#tabsList {
-  background-color: transparent;
-  -moz-appearance: none;
-  margin: 0;
-}
-
-#tabsList {
-  width: 100%;
-}
-
-#tabs-display {
-  background: #fff url(chrome://browser/skin/sync-bg.png) repeat-x center -80px;
-}
-
-#headers {
-  background: url(chrome://browser/skin/sync-32.png) no-repeat;
-  margin-top: 4px;
-  width: 45em;
-  height: 32px;
-  margin-inline-start: 2em;
-  margin-inline-end: 2em;
-}
-
-#headers:-moz-locale-dir(rtl) {
-  background-position-x: 100%;
-}
-
-#tabsListHeading {
-  font-size: 140%;
-  font-weight: bold;
-  margin-inline-start: 40px;
-}
-
-richlistitem {
-  margin-inline-end: 2em;
-}
-
-richlistitem[selected="true"],
-richlistitem:focus {
-  outline-style: none;
-}
-
-richlistitem[type="tab"] {
-  min-height: 3em;
-  border: #999999 1px solid !important;
-  padding: 2px 5px;
-  margin-bottom: 4px;
-  margin-inline-start: 4em;
-  border-radius: 6px;
-  background-color: menu;
-  width: 44em;
-  opacity: 0.9;
-  box-shadow:
-    inset rgba(255, 255, 255, 0.5) 0 1px 0px,
-    inset rgba(0, 0, 0, 0.1) 0 -2px 0px,
-    rgba(0, 0, 0, 0.1) 0px 1px 0px;
-}
-
-richlistitem[type="tab"][selected="true"] {
-  background-color: -moz-MenuHover;
-}
-
-richlistitem[type="client"] {
-  min-height: 2em;
-  color: #000000;
-  margin-inline-start: 2em;
-  margin-top: 2px;
-  margin-bottom: 3px;
-  width: 42em;
-  border-radius: 6px;
-  background-color: transparent;
-  -moz-user-focus: ignore !important;
-}
-richlistitem.mobile[type="client"] {
-  list-style-image: url("chrome://browser/skin/sync-mobileIcon.svg#icon");
-}
-richlistitem.desktop[type="client"] {
-  list-style-image: url("chrome://browser/skin/sync-desktopIcon.svg#icon");
-}
-
-.title,
-.clientName {
-  color: #000000;
-  font-size: 1.1em;
-}
-
-.title[selected="true"],
-.url[selected="true"] {
-  color: inherit;
-}
-
-.url {
-  color: -moz-nativehyperlinktext;
-  font-size: 0.95em;
-}
-
-.tabIcon {
-  padding-inline-start: 2px;
-  padding-top: 2px;
-}
--- a/browser/themes/linux/jar.mn
+++ b/browser/themes/linux/jar.mn
@@ -3,17 +3,16 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 browser.jar:
 % skin browser classic/1.0 %skin/classic/browser/
 % override chrome://global/skin/icons/warning-16.png moz-icon://stock/gtk-dialog-warning?size=menu
 #include ../shared/jar.inc.mn
   skin/classic/browser/sanitizeDialog.css
   skin/classic/browser/aboutSessionRestore-window-icon.png
-  skin/classic/browser/aboutSyncTabs.css
 * skin/classic/browser/syncedtabs/sidebar.css     (syncedtabs/sidebar.css)
 * skin/classic/browser/browser.css
 * skin/classic/browser/compacttheme.css
   skin/classic/browser/Info.png
   skin/classic/browser/menuPanel-customize.png
   skin/classic/browser/menuPanel-customize@2x.png
   skin/classic/browser/menuPanel-exit.png
   skin/classic/browser/menuPanel-exit@2x.png
@@ -94,19 +93,16 @@ browser.jar:
   skin/classic/browser/tabbrowser/tab-selected-start.svg    (tab-selected-start.svg)
 
   skin/classic/browser/tabbrowser/tab-stroke-end.png        (tabbrowser/tab-stroke-end.png)
   skin/classic/browser/tabbrowser/tab-stroke-end@2x.png     (tabbrowser/tab-stroke-end@2x.png)
   skin/classic/browser/tabbrowser/tab-stroke-start.png      (tabbrowser/tab-stroke-start.png)
   skin/classic/browser/tabbrowser/tab-stroke-start@2x.png   (tabbrowser/tab-stroke-start@2x.png)
   skin/classic/browser/tabbrowser/tabDragIndicator.png      (tabbrowser/tabDragIndicator.png)
 
-  skin/classic/browser/sync-16.png
-  skin/classic/browser/sync-32.png
-  skin/classic/browser/sync-bg.png
   skin/classic/browser/sync-desktopIcon.svg  (../shared/sync-desktopIcon.svg)
   skin/classic/browser/sync-horizontalbar.png
   skin/classic/browser/sync-horizontalbar@2x.png
   skin/classic/browser/sync-mobileIcon.svg  (../shared/sync-mobileIcon.svg)
   skin/classic/browser/syncProgress-horizontalbar.png
   skin/classic/browser/syncProgress-horizontalbar@2x.png
 #ifdef E10S_TESTING_ONLY
   skin/classic/browser/e10s-64@2x.png (../shared/e10s-64@2x.png)
deleted file mode 100644
--- a/browser/themes/osx/aboutSyncTabs.css
+++ /dev/null
@@ -1,105 +0,0 @@
-/* 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/. */
-
-#tabs-display,
-#tabsList {
-  background-color: transparent;
-  -moz-appearance: none;
-  margin: 0;
-}
-
-#tabsList {
-  width: 100%;
-}
-
-#tabs-display {
-  background: #fff url(chrome://browser/skin/sync-bg.png) repeat-x center -80px;
-}
-
-#headers {
-  background: url(chrome://browser/skin/sync-32.png) no-repeat;
-  margin-top: 4px;
-  width: 45em;
-  height: 32px;
-  margin-inline-start: 2em;
-  margin-inline-end: 2em;
-}
-
-#headers:-moz-locale-dir(rtl) {
-  background-position-x: 100%;
-}
-
-#tabsListHeading {
-  font-size: 140%;
-  font-weight: bold;
-  margin-inline-start: 40px;
-}
-
-richlistitem {
-  margin-inline-end: 2em;
-}
-
-richlistitem[selected="true"],
-richlistitem:focus {
-  outline-style: none;
-}
-
-richlistitem[type="tab"] {
-  min-height: 3em;
-  border: #999999 1px solid !important;
-  padding: 2px 5px;
-  margin-bottom: 4px;
-  margin-inline-start: 4em;
-  border-radius: 6px;
-  background-color: menu;
-  width: 44em;
-  opacity: 0.9;
-  box-shadow:
-    inset rgba(255, 255, 255, 0.5) 0 1px 0px,
-    inset rgba(0, 0, 0, 0.1) 0 -2px 0px,
-    rgba(0, 0, 0, 0.1) 0px 1px 0px;
-}
-
-richlistitem[type="tab"][selected="true"] {
-  background-color: -moz-MenuHover;
-}
-
-richlistitem[type="client"] {
-  min-height: 2em;
-  color: #000000;
-  margin-inline-start: 2em;
-  margin-top: 2px;
-  margin-bottom: 3px;
-  width: 42em;
-  border-radius: 6px;
-  background-color: transparent;
-  -moz-user-focus: ignore !important;
-}
-richlistitem.mobile[type="client"] {
-  list-style-image: url("chrome://browser/skin/sync-mobileIcon.svg#icon");
-}
-richlistitem.desktop[type="client"] {
-  list-style-image: url("chrome://browser/skin/sync-desktopIcon.svg#icon");
-}
-
-.title,
-.clientName {
-  color: #000000;
-  font-size: 1.1em;
-}
-
-.title[selected="true"],
-.url[selected="true"] {
-  color: inherit;
-}
-
-.url {
-  color: -moz-nativehyperlinktext;
-  font-size: 0.95em;
-}
-
-.tabIcon {
-  padding-inline-start: 2px;
-  padding-top: 2px;
-}
--- a/browser/themes/osx/jar.mn
+++ b/browser/themes/osx/jar.mn
@@ -2,17 +2,16 @@
 # 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/.
 
 browser.jar:
 % skin browser classic/1.0 %skin/classic/browser/
 #include ../shared/jar.inc.mn
   skin/classic/browser/sanitizeDialog.css
   skin/classic/browser/aboutSessionRestore-window-icon.png
-  skin/classic/browser/aboutSyncTabs.css
 * skin/classic/browser/syncedtabs/sidebar.css          (syncedtabs/sidebar.css)
 * skin/classic/browser/browser.css
 * skin/classic/browser/compacttheme.css
   skin/classic/browser/Info.png
   skin/classic/browser/subtle-pattern.png
   skin/classic/browser/menu-back.png
   skin/classic/browser/menu-forward.png
   skin/classic/browser/menuPanel-customize.png
@@ -141,19 +140,16 @@ browser.jar:
   skin/classic/browser/tabbrowser/tab-selected-start.svg                 (tab-selected-start.svg)
 
   skin/classic/browser/tabbrowser/tab-stroke-end.png                     (tabbrowser/tab-stroke-end.png)
   skin/classic/browser/tabbrowser/tab-stroke-end@2x.png                  (tabbrowser/tab-stroke-end@2x.png)
   skin/classic/browser/tabbrowser/tab-stroke-start.png                   (tabbrowser/tab-stroke-start.png)
   skin/classic/browser/tabbrowser/tab-stroke-start@2x.png                (tabbrowser/tab-stroke-start@2x.png)
   skin/classic/browser/tabbrowser/tabDragIndicator.png                   (tabbrowser/tabDragIndicator.png)
   skin/classic/browser/tabbrowser/tabDragIndicator@2x.png                (tabbrowser/tabDragIndicator@2x.png)
-  skin/classic/browser/sync-16.png
-  skin/classic/browser/sync-32.png
-  skin/classic/browser/sync-bg.png
   skin/classic/browser/sync-desktopIcon.svg  (../shared/sync-desktopIcon.svg)
   skin/classic/browser/sync-horizontalbar.png
   skin/classic/browser/sync-horizontalbar@2x.png
   skin/classic/browser/sync-mobileIcon.svg  (../shared/sync-mobileIcon.svg)
   skin/classic/browser/syncProgress-horizontalbar.png
   skin/classic/browser/syncProgress-horizontalbar@2x.png
   skin/classic/browser/Toolbar-background-noise.png         (Toolbar-background-noise.png)
   skin/classic/browser/yosemite/menuPanel-customize.png                (menuPanel-customize-yosemite.png)
deleted file mode 100644
--- a/browser/themes/windows/aboutSyncTabs.css
+++ /dev/null
@@ -1,105 +0,0 @@
-/* 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/. */
-
-#tabs-display,
-#tabsList {
-  background-color: transparent;
-  -moz-appearance: none;
-  margin: 0;
-}
-
-#tabsList {
-  width: 100%;
-}
-
-#tabs-display {
-  background: #fff url(chrome://browser/skin/sync-bg.png) repeat-x center -80px;
-}
-
-#headers {
-  background: url(chrome://browser/skin/sync-32.png) no-repeat;
-  margin-top: 4px;
-  width: 45em;
-  height: 32px;
-  margin-inline-start: 2em;
-  margin-inline-end: 2em;
-}
-
-#headers:-moz-locale-dir(rtl) {
-  background-position-x: 100%;
-}
-
-#tabsListHeading {
-  font-size: 140%;
-  font-weight: bold;
-  margin-inline-start: 40px;
-}
-
-richlistitem {
-  margin-inline-end: 2em;
-}
-
-richlistitem[selected="true"],
-richlistitem:focus {
-  outline-style: none;
-}
-
-richlistitem[type="tab"] {
-  min-height: 3em;
-  border: #999999 1px solid !important;
-  padding: 2px 5px;
-  margin-bottom: 4px;
-  margin-inline-start: 4em;
-  border-radius: 6px;
-  background-color: menu;
-  width: 44em;
-  opacity: 0.9;
-  box-shadow:
-    inset rgba(255, 255, 255, 0.5) 0 1px 0px,
-    inset rgba(0, 0, 0, 0.1) 0 -2px 0px,
-    rgba(0, 0, 0, 0.1) 0px 1px 0px;
-}
-
-richlistitem[type="tab"][selected="true"] {
-  background-color: -moz-MenuHover;
-}
-
-richlistitem[type="client"] {
-  min-height: 2em;
-  color: #000000;
-  margin-inline-start: 2em;
-  margin-top: 2px;
-  margin-bottom: 3px;
-  width: 42em;
-  border-radius: 6px;
-  background-color: transparent;
-  -moz-user-focus: ignore !important;
-}
-richlistitem.mobile[type="client"] {
-  list-style-image: url("chrome://browser/skin/sync-mobileIcon.svg#icon");
-}
-richlistitem.desktop[type="client"] {
-  list-style-image: url("chrome://browser/skin/sync-desktopIcon.svg#icon");
-}
-
-.title,
-.clientName {
-  color: #000000;
-  font-size: 1.1em;
-}
-
-.title[selected="true"],
-.url[selected="true"] {
-  color: inherit;
-}
-
-.url {
-  color: -moz-nativehyperlinktext;
-  font-size: 0.95em;
-}
-
-.tabIcon {
-  padding-inline-start: 2px;
-  padding-top: 2px;
-}
--- a/browser/themes/windows/jar.mn
+++ b/browser/themes/windows/jar.mn
@@ -2,17 +2,16 @@
 # 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/.
 
 browser.jar:
 % skin browser classic/1.0 %skin/classic/browser/
 #include ../shared/jar.inc.mn
   skin/classic/browser/sanitizeDialog.css
   skin/classic/browser/aboutSessionRestore-window-icon.png
-  skin/classic/browser/aboutSyncTabs.css
 * skin/classic/browser/syncedtabs/sidebar.css     (syncedtabs/sidebar.css)
 * skin/classic/browser/browser.css
 * skin/classic/browser/compacttheme.css
   skin/classic/browser/caption-buttons.svg
   skin/classic/browser/Info.png
   skin/classic/browser/livemark-folder.png
   skin/classic/browser/menu-back.png
   skin/classic/browser/menu-forward.png
@@ -120,19 +119,16 @@ browser.jar:
   skin/classic/browser/tabbrowser/tab-selected-end.svg         (tab-selected-end.svg)
   skin/classic/browser/tabbrowser/tab-selected-start.svg       (tab-selected-start.svg)
 
   skin/classic/browser/tabbrowser/tab-stroke-end.png           (tabbrowser/tab-stroke-end.png)
   skin/classic/browser/tabbrowser/tab-stroke-end@2x.png        (tabbrowser/tab-stroke-end@2x.png)
   skin/classic/browser/tabbrowser/tab-stroke-start.png         (tabbrowser/tab-stroke-start.png)
   skin/classic/browser/tabbrowser/tab-stroke-start@2x.png      (tabbrowser/tab-stroke-start@2x.png)
   skin/classic/browser/tabbrowser/tabDragIndicator.png         (tabbrowser/tabDragIndicator.png)
-  skin/classic/browser/sync-16.png
-  skin/classic/browser/sync-32.png
-  skin/classic/browser/sync-bg.png
   skin/classic/browser/sync-desktopIcon.svg  (../shared/sync-desktopIcon.svg)
   skin/classic/browser/sync-horizontalbar.png
   skin/classic/browser/sync-horizontalbar@2x.png
   skin/classic/browser/sync-horizontalbar-win7.png
   skin/classic/browser/sync-horizontalbar-win7@2x.png
   skin/classic/browser/sync-mobileIcon.svg  (../shared/sync-mobileIcon.svg)
   skin/classic/browser/syncProgress-horizontalbar.png
   skin/classic/browser/syncProgress-horizontalbar@2x.png
--- a/netwerk/base/nsNetUtil.cpp
+++ b/netwerk/base/nsNetUtil.cpp
@@ -2649,20 +2649,19 @@ NS_CompareLoadInfoAndLoadContext(nsIChan
   aChannel->GetLoadInfo(getter_AddRefs(loadInfo));
 
   nsCOMPtr<nsILoadContext> loadContext;
   NS_QueryNotificationCallbacks(aChannel, loadContext);
   if (!loadInfo || !loadContext) {
     return NS_OK;
   }
 
-  // We try to skip about:newtab and about:sync-tabs.
+  // We try to skip about:newtab.
   // about:newtab will use SystemPrincipal to download thumbnails through
   // https:// and blob URLs.
-  // about:sync-tabs will fetch icons through moz-icon://.
   bool isAboutPage = false;
   nsINode* node = loadInfo->LoadingNode();
   if (node) {
     nsIDocument* doc = node->OwnerDoc();
     if (doc) {
       nsIURI* uri = doc->GetDocumentURI();
       nsresult rv = uri->SchemeIs("about", &isAboutPage);
       NS_ENSURE_SUCCESS(rv, rv);