Bug 1289549 P1 socialapi remove status and marks, r=florian
☠☠ backed out by c60886d5c003 ☠ ☠
authorShane Caraveo <scaraveo@mozilla.com>
Thu, 04 Aug 2016 09:23:54 -0700
changeset 308223 fc771254be8ff7a9fb11365787e0e136cd4bf225
parent 308222 0636c302f407c4fd16e551a5ce0267a6df939002
child 308224 6847acfd9362d6f97f21e2d9235c0db682589f30
push id31092
push usercbook@mozilla.com
push dateFri, 05 Aug 2016 10:16:59 +0000
treeherderautoland@b97dd7dd3cb9 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersflorian
bugs1289549
milestone51.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1289549 P1 socialapi remove status and marks, r=florian MozReview-Commit-ID: 5fT51pp97Tm
browser/base/content/browser-context.inc
browser/base/content/browser-sets.inc
browser/base/content/browser-social.js
browser/base/content/nsContextMenu.js
browser/base/content/socialmarks.xml
browser/base/content/test/social/browser.ini
browser/base/content/test/social/browser_social_contextmenu.js
browser/base/content/test/social/browser_social_marks.js
browser/base/content/test/social/browser_social_marks_context.js
browser/base/content/test/social/browser_social_status.js
browser/base/content/test/social/checked.jpg
browser/base/content/test/social/head.js
browser/base/content/test/social/social_activate.html
browser/base/content/test/social/social_mark.html
browser/base/content/test/social/unchecked.jpg
browser/base/jar.mn
browser/components/customizableui/CustomizableWidgets.jsm
browser/modules/Social.jsm
toolkit/components/social/SocialService.jsm
--- a/browser/base/content/browser-context.inc
+++ b/browser/base/content/browser-context.inc
@@ -88,20 +88,16 @@
       <menuitem id="context-sharelink"
                 label="&shareLink.label;"
                 accesskey="&shareLink.accesskey;"
                 oncommand="gContextMenu.shareLink();"/>
       <menuitem id="context-savelink"
                 label="&saveLinkCmd.label;"
                 accesskey="&saveLinkCmd.accesskey;"
                 oncommand="gContextMenu.saveLink();"/>
-      <menu id="context-marklinkMenu" label="&social.marklinkMenu.label;"
-            accesskey="&social.marklinkMenu.accesskey;">
-        <menupopup/>
-      </menu>
       <menuitem id="context-copyemail"
                 label="&copyEmailCmd.label;"
                 accesskey="&copyEmailCmd.accesskey;"
                 oncommand="gContextMenu.copyEmail();"/>
       <menuitem id="context-copylink"
                 label="&copyLinkCmd.label;"
                 accesskey="&copyLinkCmd.accesskey;"
                 oncommand="gContextMenu.copyLink();"/>
@@ -286,20 +282,16 @@
       <menuseparator id="context-sep-sendpagetodevice" hidden="true"/>
       <menu id="context-sendpagetodevice"
                 label="&sendPageToDevice.label;"
                 accesskey="&sendPageToDevice.accesskey;"
                 hidden="true">
         <menupopup id="context-sendpagetodevice-popup"
                    onpopupshowing="(() => { let browser = gBrowser || getPanelBrowser(); gFxAccounts.populateSendTabToDevicesMenu(event.target, browser.currentURI.spec, browser.contentTitle); })()"/>
       </menu>
-      <menu id="context-markpageMenu" label="&social.markpageMenu.label;"
-            accesskey="&social.markpageMenu.accesskey;">
-        <menupopup/>
-      </menu>
       <menuseparator id="context-sep-viewbgimage"/>
       <menuitem id="context-viewbgimage"
                 label="&viewBGImageCmd.label;"
                 accesskey="&viewBGImageCmd.accesskey;"
                 oncommand="gContextMenu.viewBGImage(event);"
                 onclick="checkForMiddleClick(this, event);"/>
       <menuitem id="context-undo"
                 label="&undoCmd.label;"
--- a/browser/base/content/browser-sets.inc
+++ b/browser/base/content/browser-sets.inc
@@ -116,17 +116,17 @@
   <commandset id="placesCommands">
     <command id="Browser:ShowAllBookmarks"
              oncommand="PlacesCommandHook.showPlacesOrganizer('UnfiledBookmarks');"/>
     <command id="Browser:ShowAllHistory"
              oncommand="PlacesCommandHook.showPlacesOrganizer('History');"/>
   </commandset>
 
   <broadcasterset id="mainBroadcasterSet">
-    <broadcaster id="Social:PageShareOrMark" disabled="true"/>
+    <broadcaster id="Social:PageShareable" disabled="true"/>
     <broadcaster id="viewBookmarksSidebar" autoCheck="false" label="&bookmarksButton.label;"
                  type="checkbox" group="sidebar" sidebarurl="chrome://browser/content/bookmarks/bookmarksPanel.xul"
                  oncommand="SidebarUI.toggle('viewBookmarksSidebar');"/>
 
     <!-- for both places and non-places, the sidebar lives at
          chrome://browser/content/history/history-panel.xul so there are no
          problems when switching between versions -->
     <broadcaster id="viewHistorySidebar" autoCheck="false" sidebartitle="&historyButton.label;"
@@ -311,17 +311,16 @@
 #endif
     <key id="viewBookmarksSidebarKb" key="&bookmarksCmd.commandkey;" command="viewBookmarksSidebar" modifiers="accel"/>
 #ifdef XP_WIN
 # Cmd+I is conventially mapped to Info on MacOS X, thus it should not be
 # overridden for other purposes there.
     <key id="viewBookmarksSidebarWinKb" key="&bookmarksWinCmd.commandkey;" command="viewBookmarksSidebar" modifiers="accel"/>
 #endif
 
-    <!--<key id="markPage" key="&markPageCmd.commandkey;" command="Social:TogglePageMark" modifiers="accel,shift"/>-->
     <key id="focusChatBar" key="&social.chatBar.commandkey;" command="Chat:Focus"
 #ifdef XP_MACOSX
 # Sadly the devtools uses shift-accel-c on non-mac and alt-accel-c everywhere else
 # So we just use the other
          modifiers="accel,shift"
 #else
          modifiers="accel,alt"
 #endif
--- a/browser/base/content/browser-social.js
+++ b/browser/base/content/browser-social.js
@@ -1,19 +1,17 @@
 /* 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 "exported" symbols
 var SocialUI,
     SocialFlyout,
-    SocialMarks,
     SocialShare,
     SocialSidebar,
-    SocialStatus,
     SocialActivationListener;
 
 (function() {
 
 XPCOMUtils.defineLazyModuleGetter(this, "PanelFrame",
   "resource:///modules/PanelFrame.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "OpenGraphBuilder", function() {
@@ -29,28 +27,16 @@ XPCOMUtils.defineLazyGetter(this, "Dynam
 });
 
 XPCOMUtils.defineLazyGetter(this, "sizeSocialPanelToContent", function() {
   let tmp = {};
   Cu.import("resource:///modules/Social.jsm", tmp);
   return tmp.sizeSocialPanelToContent;
 });
 
-XPCOMUtils.defineLazyGetter(this, "CreateSocialStatusWidget", function() {
-  let tmp = {};
-  Cu.import("resource:///modules/Social.jsm", tmp);
-  return tmp.CreateSocialStatusWidget;
-});
-
-XPCOMUtils.defineLazyGetter(this, "CreateSocialMarkWidget", function() {
-  let tmp = {};
-  Cu.import("resource:///modules/Social.jsm", tmp);
-  return tmp.CreateSocialMarkWidget;
-});
-
 XPCOMUtils.defineLazyGetter(this, "hookWindowCloseForPanelClose", function() {
   let tmp = {};
   Cu.import("resource://gre/modules/MozSocialAPI.jsm", tmp);
   return tmp.hookWindowCloseForPanelClose;
 });
 
 SocialUI = {
   _initialized: false,
@@ -122,26 +108,21 @@ SocialUI = {
         provider.setAmbientNotification(aMessage.data.detail);
       }
     }
   },
 
   observe: function SocialUI_observe(subject, topic, data) {
     switch (topic) {
       case "social:provider-enabled":
-        SocialMarks.populateToolbarPalette();
-        SocialStatus.populateToolbarPalette();
         break;
       case "social:provider-disabled":
-        SocialMarks.removeProvider(data);
-        SocialStatus.removeProvider(data);
         SocialSidebar.disableProvider(data);
         break;
       case "social:provider-reload":
-        SocialStatus.reloadProvider(data);
         // if the reloaded provider is our current provider, fall through
         // to social:providers-changed so the ui will be reset
         if (!SocialSidebar.provider || SocialSidebar.provider.origin != data)
           return;
         // currently only the sidebar and flyout have a selected provider.
         // sidebar provider has changed (possibly to null), ensure the content
         // is unloaded and the frames are reset, they will be loaded in
         // providers-changed below if necessary.
@@ -149,32 +130,29 @@ SocialUI = {
         SocialFlyout.unload();
         // fall through to providers-changed to ensure the reloaded provider
         // is correctly reflected in any UI and the multi-provider menu
       case "social:providers-changed":
         this._providersChanged();
         break;
       // Provider-specific notifications
       case "social:ambient-notification-changed":
-        SocialStatus.updateButton(data);
         break;
       case "nsPref:changed":
         if (data == "social.toast-notifications.enabled") {
           SocialSidebar.updateToggleNotifications();
         }
         break;
     }
   },
 
   _providersChanged: function() {
     SocialSidebar.clearProviderMenus();
     SocialSidebar.update();
     SocialShare.populateProviderMenu();
-    SocialStatus.populateToolbarPalette();
-    SocialMarks.populateToolbarPalette();
   },
 
   showLearnMore: function() {
     let url = Services.urlFormatter.formatURLPref("app.support.baseURL") + "social-api";
     openUILinkIn(url, "tab");
   },
 
   closeSocialPanelForLinkTraversal: function (target, linkNode) {
@@ -214,52 +192,40 @@ SocialUI = {
 
   get enabled() {
     // Returns whether social is enabled *for this window*.
     if (this._chromeless)
       return false;
     return Social.providers.length > 0;
   },
 
-  canShareOrMarkPage: function(aURI) {
+  canSharePage: function(aURI) {
     return (aURI && (aURI.schemeIs('http') || aURI.schemeIs('https')));
   },
 
   onCustomizeEnd: function(aWindow) {
     if (aWindow != window)
       return;
     // customization mode gets buttons out of sync with command updating, fix
     // the disabled state
-    let canShare = this.canShareOrMarkPage(gBrowser.currentURI);
+    let canShare = this.canSharePage(gBrowser.currentURI);
     let shareButton = SocialShare.shareButton;
     if (shareButton) {
       if (canShare) {
         shareButton.removeAttribute("disabled")
       } else {
         shareButton.setAttribute("disabled", "true")
       }
     }
-    // update the disabled state of the button based on the command
-    for (let node of SocialMarks.nodes) {
-      if (canShare) {
-        node.removeAttribute("disabled")
-      } else {
-        node.setAttribute("disabled", "true")
-      }
-    }
   },
 
   // called on tab/urlbar/location changes and after customization. Update
   // anything that is tab specific.
   updateState: function() {
-    goSetCommandEnabled("Social:PageShareOrMark", this.canShareOrMarkPage(gBrowser.currentURI));
-    if (!SocialUI.enabled)
-      return;
-    // larger update that may change button icons
-    SocialMarks.update();
+    goSetCommandEnabled("Social:PageShareable", this.canSharePage(gBrowser.currentURI));
   }
 }
 
 // message manager handlers
 SocialActivationListener = {
   init: function() {
     messageManager.addMessageListener("Social:Activation", this);
   },
@@ -641,17 +607,17 @@ SocialShare = {
     // graphData is an optional param that either defines the full set of data
     // to be shared, or partial data about the current page. It is set by a call
     // in mozSocial API, or via nsContentMenu calls. If it is present, it MUST
     // define at least url. If it is undefined, we're sharing the current url in
     // the browser tab.
     let pageData = graphData ? graphData : this.currentShare;
     let sharedURI = pageData ? Services.io.newURI(pageData.url, null, null) :
                                 gBrowser.currentURI;
-    if (!SocialUI.canShareOrMarkPage(sharedURI))
+    if (!SocialUI.canSharePage(sharedURI))
       return;
 
     // the point of this action type is that we can use existing share
     // endpoints (e.g. oexchange) that do not support additional
     // socialapi functionality.  One tweak is that we shoot an event
     // containing the open graph data.
     let _dataFn;
     if (!pageData || sharedURI == gBrowser.currentURI) {
@@ -1092,322 +1058,9 @@ SocialSidebar = {
       }
       menu.insertBefore(menuitem, providerMenuSep);
     }
     topSep.hidden = topSep.nextSibling == providerMenuSep;
     providerMenuSep.hidden = !providerMenuSep.nextSibling;
   }
 }
 
-// this helper class is used by removable/customizable buttons to handle
-// widget creation/destruction
-
-// When a provider is installed we show all their UI so the user will see the
-// functionality of what they installed. The user can later customize the UI,
-// moving buttons around or off the toolbar.
-//
-// On startup, we create the button widgets of any enabled provider.
-// CustomizableUI handles placement and persistence of placement.
-function ToolbarHelper(type, createButtonFn, listener) {
-  this._createButton = createButtonFn;
-  this._type = type;
-
-  if (listener) {
-    CustomizableUI.addListener(listener);
-    // remove this listener on window close
-    window.addEventListener("unload", () => {
-      CustomizableUI.removeListener(listener);
-    });
-  }
-}
-
-ToolbarHelper.prototype = {
-  idFromOrigin: function(origin) {
-    // this id needs to pass the checks in CustomizableUI, so remove characters
-    // that wont pass.
-    return this._type + "-" + Services.io.newURI(origin, null, null).hostPort.replace(/[\.:]/g,'-');
-  },
-
-  // should be called on disable of a provider
-  removeProviderButton: function(origin) {
-    CustomizableUI.destroyWidget(this.idFromOrigin(origin));
-  },
-
-  clearPalette: function() {
-    for (let p of Social.providers) {
-      this.removeProviderButton(p.origin);
-    }
-  },
-
-  // should be called on enable of a provider
-  populatePalette: function() {
-    if (!Social.enabled) {
-      this.clearPalette();
-      return;
-    }
-
-    // create any buttons that do not exist yet if they have been persisted
-    // as a part of the UI (otherwise they belong in the palette).
-    for (let provider of Social.providers) {
-      let id = this.idFromOrigin(provider.origin);
-      this._createButton(id, provider);
-    }
-  }
-}
-
-var SocialStatusWidgetListener = {
-  _getNodeOrigin: function(aWidgetId) {
-    // we rely on the button id being the same as the widget.
-    let node = document.getElementById(aWidgetId);
-    if (!node)
-      return null
-    if (!node.classList.contains("social-status-button"))
-      return null
-    return node.getAttribute("origin");
-  },
-  onWidgetAdded: function(aWidgetId, aArea, aPosition) {
-    let origin = this._getNodeOrigin(aWidgetId);
-    if (origin)
-      SocialStatus.updateButton(origin);
-  },
-  onWidgetRemoved: function(aWidgetId, aPrevArea) {
-    let origin = this._getNodeOrigin(aWidgetId);
-    if (!origin)
-      return;
-    // When a widget is demoted to the palette ('removed'), it's visual
-    // style should change.
-    SocialStatus.updateButton(origin);
-    SocialStatus._removeFrame(origin);
-  }
-}
-
-SocialStatus = {
-  populateToolbarPalette: function() {
-    this._toolbarHelper.populatePalette();
-
-    for (let provider of Social.providers)
-      this.updateButton(provider.origin);
-  },
-
-  removeProvider: function(origin) {
-    this._removeFrame(origin);
-    this._toolbarHelper.removeProviderButton(origin);
-  },
-
-  reloadProvider: function(origin) {
-    let button = document.getElementById(this._toolbarHelper.idFromOrigin(origin));
-    if (button && button.getAttribute("open") == "true")
-      document.getElementById("social-notification-panel").hidePopup();
-    this._removeFrame(origin);
-  },
-
-  _removeFrame: function(origin) {
-    let notificationFrameId = "social-status-" + origin;
-    let frame = document.getElementById(notificationFrameId);
-    if (frame) {
-      frame.parentNode.removeChild(frame);
-    }
-  },
-
-  get _toolbarHelper() {
-    delete this._toolbarHelper;
-    this._toolbarHelper = new ToolbarHelper("social-status-button",
-                                            CreateSocialStatusWidget,
-                                            SocialStatusWidgetListener);
-    return this._toolbarHelper;
-  },
-
-  updateButton: function(origin) {
-    let id = this._toolbarHelper.idFromOrigin(origin);
-    let widget = CustomizableUI.getWidget(id);
-    if (!widget)
-      return;
-    let button = widget.forWindow(window).node;
-    if (button) {
-      // we only grab the first notification, ignore all others
-      let provider = Social._getProviderFromOrigin(origin);
-      let icons = provider.ambientNotificationIcons;
-      let iconNames = Object.keys(icons);
-      let notif = icons[iconNames[0]];
-
-      // The image and tooltip need to be updated for
-      // ambient notification changes.
-      let iconURL = provider.icon32URL || provider.iconURL;
-      let tooltiptext;
-      if (!notif || !widget.areaType) {
-        button.style.listStyleImage = "url(" + iconURL + ")";
-        button.setAttribute("badge", "");
-        button.setAttribute("aria-label", "");
-        button.setAttribute("tooltiptext", provider.name);
-        return;
-      }
-      button.style.listStyleImage = "url(" + (notif.iconURL || iconURL) + ")";
-      button.setAttribute("tooltiptext", notif.label || provider.name);
-
-      let badge = notif.counter || "";
-      button.setAttribute("badge", badge);
-      let ariaLabel = notif.label;
-      // if there is a badge value, we must use a localizable string to insert it.
-      if (badge)
-        ariaLabel = gNavigatorBundle.getFormattedString("social.aria.toolbarButtonBadgeText",
-                                                        [ariaLabel, badge]);
-      button.setAttribute("aria-label", ariaLabel);
-    }
-  },
-
-  _onclose: function(frame) {
-    frame.removeEventListener("close", this._onclose, true);
-    frame.removeEventListener("click", this._onclick, true);
-  },
-
-  _onclick: function() {
-    Services.telemetry.getHistogramById("SOCIAL_PANEL_CLICKS").add(1);
-  },
-
-  showPopup: function(aToolbarButton) {
-    // attach our notification panel if necessary
-    let origin = aToolbarButton.getAttribute("origin");
-    let provider = Social._getProviderFromOrigin(origin);
-
-    PanelFrame.showPopup(window, aToolbarButton, "social", origin,
-                         provider.statusURL, provider.getPageSize("status"),
-                         (frame) => {
-                          frame.addEventListener("close", () => { SocialStatus._onclose(frame) }, true);
-                          frame.addEventListener("click", this._onclick, true);
-                        });
-    Services.telemetry.getHistogramById("SOCIAL_TOOLBAR_BUTTONS").add(1);
-  }
-};
-
-
-var SocialMarksWidgetListener = {
-  onWidgetAdded: function(aWidgetId, aArea, aPosition) {
-    let node = document.getElementById(aWidgetId);
-    if (!node || !node.classList.contains("social-mark-button"))
-      return;
-    node._receiveMessage = node.receiveMessage.bind(node);
-    messageManager.addMessageListener("Social:ErrorPageNotify", node._receiveMessage);
-  },
-  onWidgetBeforeDOMChange: function(aNode, aNextNode, aContainer, isRemoval) {
-    if (!isRemoval || !aNode || !aNode.classList.contains("social-mark-button"))
-      return;
-    messageManager.removeMessageListener("Social:ErrorPageNotify", aNode._receiveMessage);
-    delete aNode._receiveMessage;
-  }
-}
-
-/**
- * SocialMarks
- *
- * Handles updates to toolbox and signals all buttons to update when necessary.
- */
-SocialMarks = {
-  get nodes() {
-    for (let p of Social.providers.filter(p => p.markURL)) {
-      let widgetId = SocialMarks._toolbarHelper.idFromOrigin(p.origin);
-      let widget = CustomizableUI.getWidget(widgetId);
-      if (!widget)
-        continue;
-      let node = widget.forWindow(window).node;
-      if (node)
-        yield node;
-    }
-  },
-  update: function() {
-    // querySelectorAll does not work on the menu panel, so we have to do this
-    // the hard way.
-    for (let node of this.nodes) {
-      // xbl binding is not complete on startup when buttons are not in toolbar,
-      // verify update is available
-      if (node.update) {
-        node.update();
-      }
-    }
-  },
-
-  getProviders: function() {
-    // only rely on providers that the user has placed in the UI somewhere. This
-    // also means that populateToolbarPalette must be called prior to using this
-    // method, otherwise you get a big fat zero. For our use case with context
-    // menu's, this is ok.
-    return Social.providers.filter(p => p.markURL &&
-                                        document.getElementById(this._toolbarHelper.idFromOrigin(p.origin)));
-  },
-
-  populateContextMenu: function() {
-    // only show a selection if enabled and there is more than one
-    let providers = this.getProviders();
-
-    // remove all previous entries by class
-    let menus = [...document.getElementsByClassName("context-socialmarks")];
-    for (let m of menus) {
-      m.parentNode.removeChild(m);
-    }
-
-    let contextMenus = [
-      {
-        type: "link",
-        id: "context-marklinkMenu",
-        label: "social.marklinkMenu.label"
-      },
-      {
-        type: "page",
-        id: "context-markpageMenu",
-        label: "social.markpageMenu.label"
-      }
-    ];
-    for (let cfg of contextMenus) {
-      this._populateContextPopup(cfg, providers);
-    }
-    this.update();
-  },
-
-  MENU_LIMIT: 3, // adjustable for testing
-  _populateContextPopup: function(menuInfo, providers) {
-    let menu = document.getElementById(menuInfo.id);
-    let popup = menu.firstChild;
-    for (let provider of providers) {
-      // We show up to MENU_LIMIT providers as single menuitems's at the top
-      // level of the context menu, if we have more than that, dump them *all*
-      // into the menu popup.
-      let mi = document.createElement("menuitem");
-      mi.setAttribute("oncommand", "gContextMenu.markLink(this.getAttribute('origin'));");
-      mi.setAttribute("origin", provider.origin);
-      mi.setAttribute("image", provider.iconURL);
-      if (providers.length <= this.MENU_LIMIT) {
-        // an extra class to make enable/disable easy
-        mi.setAttribute("class", "menuitem-iconic context-socialmarks context-mark"+menuInfo.type);
-        let menuLabel = gNavigatorBundle.getFormattedString(menuInfo.label, [provider.name]);
-        mi.setAttribute("label", menuLabel);
-        menu.parentNode.insertBefore(mi, menu);
-      } else {
-        mi.setAttribute("class", "menuitem-iconic context-socialmarks");
-        mi.setAttribute("label", provider.name);
-        popup.appendChild(mi);
-      }
-    }
-  },
-
-  populateToolbarPalette: function() {
-    this._toolbarHelper.populatePalette();
-    this.populateContextMenu();
-  },
-
-  removeProvider: function(origin) {
-    this._toolbarHelper.removeProviderButton(origin);
-  },
-
-  get _toolbarHelper() {
-    delete this._toolbarHelper;
-    this._toolbarHelper = new ToolbarHelper("social-mark-button",
-                                            CreateSocialMarkWidget,
-                                            SocialMarksWidgetListener);
-    return this._toolbarHelper;
-  },
-
-  markLink: function(aOrigin, aUrl, aTarget) {
-    // find the button for this provider, and open it
-    let id = this._toolbarHelper.idFromOrigin(aOrigin);
-    document.getElementById(id).markLink(aUrl, aTarget);
-  }
-};
-
 })();
--- a/browser/base/content/nsContextMenu.js
+++ b/browser/base/content/nsContextMenu.js
@@ -345,38 +345,16 @@ nsContextMenu.prototype = {
 
     // BiDi UI
     this.showItem("context-sep-bidi", !this.onNumeric && top.gBidiUI);
     this.showItem("context-bidi-text-direction-toggle",
                   this.onTextInput && !this.onNumeric && top.gBidiUI);
     this.showItem("context-bidi-page-direction-toggle",
                   !this.onTextInput && top.gBidiUI);
 
-    // SocialMarks. Marks does not work with text selections, only links. If
-    // there is more than MENU_LIMIT providers, we show a submenu for them,
-    // otherwise we have a menuitem per provider (added in SocialMarks class).
-    let markProviders = SocialMarks.getProviders();
-    let enablePageMarks = markProviders.length > 0 && !(this.onLink || this.onImage
-                            || this.onVideo || this.onAudio);
-    this.showItem("context-markpageMenu", enablePageMarks && markProviders.length > SocialMarks.MENU_LIMIT);
-    let enablePageMarkItems = enablePageMarks && markProviders.length <= SocialMarks.MENU_LIMIT;
-    let linkmenus = document.getElementsByClassName("context-markpage");
-    for (let m of linkmenus) {
-      m.hidden = !enablePageMarkItems;
-    }
-
-    let enableLinkMarks = markProviders.length > 0 &&
-                            ((this.onLink && !this.onMailtoLink) || this.onPlainTextLink);
-    this.showItem("context-marklinkMenu", enableLinkMarks && markProviders.length > SocialMarks.MENU_LIMIT);
-    let enableLinkMarkItems = enableLinkMarks && markProviders.length <= SocialMarks.MENU_LIMIT;
-    linkmenus = document.getElementsByClassName("context-marklink");
-    for (let m of linkmenus) {
-      m.hidden = !enableLinkMarkItems;
-    }
-
     // SocialShare
     let shareButton = SocialShare.shareButton;
     let shareEnabled = shareButton && !shareButton.disabled && !this.onSocial;
     let pageShare = shareEnabled && !(this.isContentSelected ||
                             this.onTextInput || this.onLink || this.onImage ||
                             this.onVideo || this.onAudio || this.onCanvas);
     this.showItem("context-sharepage", pageShare);
     this.showItem("context-shareselect", shareEnabled && this.isContentSelected);
@@ -1727,20 +1705,16 @@ nsContextMenu.prototype = {
                                                 message.data.description)
                                   .catch(Components.utils.reportError);
     };
     mm.addMessageListener("ContextMenu:BookmarkFrame:Result", onMessage);
 
     mm.sendAsyncMessage("ContextMenu:BookmarkFrame", null, { target: this.target });
   },
 
-  markLink: function CM_markLink(origin) {
-    // send link to social, if it is the page url linkURI will be null
-    SocialMarks.markLink(origin, this.linkURI ? this.linkURI.spec : null, this.target);
-  },
   shareLink: function CM_shareLink() {
     SocialShare.sharePage(null, { url: this.linkURI.spec }, this.target);
   },
 
   shareImage: function CM_shareImage() {
     SocialShare.sharePage(null, { url: this.imageURL, previews: [ this.mediaURL ] }, this.target);
   },
 
deleted file mode 100644
--- a/browser/base/content/socialmarks.xml
+++ /dev/null
@@ -1,366 +0,0 @@
-<?xml version="1.0"?>
-
-<bindings id="socialMarkBindings"
-    xmlns="http://www.mozilla.org/xbl"
-    xmlns:xbl="http://www.mozilla.org/xbl"
-    xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-
-  <binding id="toolbarbutton-marks" display="xul:button"
-           extends="chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton">
-    <content>
-      <xul:panel anonid="panel" hidden="true" type="arrow" class="social-panel"/>
-      <xul:image class="toolbarbutton-icon" xbl:inherits="validate,src=image,label"/>
-      <xul:label class="toolbarbutton-text" crop="right" flex="1"
-                 xbl:inherits="value=label,accesskey,crop,wrap"/>
-      <xul:label class="toolbarbutton-multiline-text" flex="1"
-                 xbl:inherits="xbl:text=label,accesskey,wrap"/>
-    </content>
-    <implementation implements="nsIDOMEventListener, nsIObserver">
-      <constructor>
-        // if we overflow, we have to reset the button. unfortunately we cannot
-        // use a widget listener because we need to do this *after* the node is
-        // moved, and the event happens before the node is moved.
-        this.update();
-      </constructor>
-      <property name="_anchor">
-        <getter>
-          let widgetGroup = CustomizableUI.getWidget(this.getAttribute("id"));
-          return widgetGroup.forWindow(window).anchor;
-        </getter>
-      </property>
-      <property name="_useDynamicResizer">
-        <getter>
-          let provider = Social._getProviderFromOrigin(this.getAttribute("origin"));
-          return !provider.getPageSize("marks");
-        </getter>
-      </property>
-
-      <property name="panel">
-        <getter>
-          return document.getAnonymousElementByAttribute(this, "anonid", "panel");
-        </getter>
-      </property>
-
-      <property name="content">
-        <getter><![CDATA[
-          if (this._frame)
-            return this._frame;
-          let provider = Social._getProviderFromOrigin(this.getAttribute("origin"));
-          let size = provider.getPageSize("marks");
-          let {width, height} = size ? size : {width: 330, height: 100};
-
-          let iframe = this._frame = document.createElement("iframe");
-          iframe.setAttribute("type", "content");
-          iframe.setAttribute("class", "social-panel-frame");
-          iframe.setAttribute("flex", "1");
-          iframe.setAttribute("message", "true");
-          iframe.setAttribute("messagemanagergroup", "social");
-          iframe.setAttribute("tooltip", "aHTMLTooltip");
-          iframe.setAttribute("context", "contentAreaContextMenu");
-          iframe.setAttribute("origin", provider.origin);
-          iframe.setAttribute("style", "width: " + width + "px; height: " + height + "px;");
-          this.panel.appendChild(iframe);
-
-          this._frame.addEventListener("DOMLinkAdded", this);
-          return this._frame;
-        ]]></getter>
-      </property>
-
-      <property name="messageManager">
-        <getter>
-          return this.content.QueryInterface(Components.interfaces.nsIFrameLoaderOwner).frameLoader.messageManager;
-        </getter>
-      </property>
-
-      <property name="contentWindow">
-        <getter>
-          return this.content.contentWindow;
-        </getter>
-      </property>
-
-      <property name="contentDocument">
-        <getter>
-          return this.content.contentDocument;
-        </getter>
-      </property>
-
-      <property name="provider">
-        <getter>
-          return Social._getProviderFromOrigin(this.getAttribute("origin"));
-        </getter>
-      </property>
-
-      <property name="isMarked">
-        <setter><![CDATA[
-          this._isMarked = val;
-          let provider = this.provider;
-          // we cannot size the image when we apply it via listStyleImage, so
-          // use the toolbar image
-          let widgetGroup = CustomizableUI.getWidget(this.getAttribute("id"));
-          val = val && !!widgetGroup.areaType;
-          let icon = val ? provider.markedIcon : provider.unmarkedIcon;
-          let iconURL = icon || provider.icon32URL || provider.iconURL;
-          this.setAttribute("image", iconURL);
-        ]]></setter>
-        <getter>
-          return this._isMarked;
-        </getter>
-      </property>
-
-      <method name="update">
-        <body><![CDATA[
-        // update the button for use with the current tab
-        let provider = this.provider;
-        if (this._dynamicResizer) {
-          this._dynamicResizer.stop();
-          this._dynamicResizer = null;
-        }
-        this.content.setAttribute("src", "about:blank");
-        // called during onhidden, make sure the docshell is updated
-        if (this._frame.docShell)
-          this._frame.docShell.createAboutBlankContentViewer(null);
-
-        // disabled attr is set by Social:PageShareOrMark command
-        if (this.hasAttribute("disabled")) {
-          this.isMarked = false;
-        } else {
-          Social.isURIMarked(provider.origin, gBrowser.currentURI, (isMarked) => {
-            this.isMarked = isMarked;
-          });
-        }
-
-        this.content.setAttribute("origin", provider.origin);
-
-        let panel = this.panel;
-        // if customization is currently happening, we may not have a panel
-        // that we can hide
-        if (panel.hidePopup) {
-          panel.hidePopup();
-        }
-        this.pageData = null;
-        ]]></body>
-      </method>
-
-      <method name="receiveMessage">
-        <parameter name="message"/>
-        <body><![CDATA[
-        if (message.name != "Social:ErrorPageNotify" || message.target != this.content)
-          return;
-        this.openPanel();
-        ]]></body>
-      </method>
-
-      <method name="loadPanel">
-        <parameter name="pageData"/>
-        <parameter name="target"/>
-        <body><![CDATA[
-        let provider = this.provider;
-        let panel = this.panel;
-        panel.hidden = false;
-
-        // reparent the iframe if we've been customized to a new location
-        if (this.content.parentNode != panel)
-          panel.appendChild(this.content);
-
-        let URLTemplate = provider.markURL;
-        let _dataFn;
-        if (!pageData) {
-          messageManager.addMessageListener("PageMetadata:PageDataResult", _dataFn = (msg) => {
-            messageManager.removeMessageListener("PageMetadata:PageDataResult", _dataFn);
-            this.loadPanel(msg.json, target);
-          });
-          gBrowser.selectedBrowser.messageManager.sendAsyncMessage("PageMetadata:GetPageData", null, { target });
-          return;
-        }
-        // if this is a share of a selected item, get any microformats
-        if (!pageData.microformats && target) {
-          messageManager.addMessageListener("PageMetadata:MicroformatsResult", _dataFn = (msg) => {
-            messageManager.removeMessageListener("PageMetadata:MicroformatsResult", _dataFn);
-            pageData.microformats = msg.data;
-            this.loadPanel(pageData, target);
-          });
-          gBrowser.selectedBrowser.messageManager.sendAsyncMessage("PageMetadata:GetMicroformats", null, { target });
-          return;
-        }
-        this.pageData = pageData;
-
-        let endpoint = OpenGraphBuilder.generateEndpointURL(URLTemplate, this.pageData);
-        // setup listeners
-        let DOMContentLoaded = (event) => {
-          this._loading = false;
-          this.messageManager.removeMessageListener("DOMContentLoaded", DOMContentLoaded);
-          // add our resizer after the dom is ready
-          if (this._useDynamicResizer) {
-            let DynamicResizeWatcher = Cu.import("resource:///modules/Social.jsm", {}).DynamicResizeWatcher;
-            this._dynamicResizer = new DynamicResizeWatcher();
-            this._dynamicResizer.start(this.panel, this.content);
-          } else if (this._dynamicResizer) {
-            this._dynamicResizer.stop();
-            this._dynamicResizer = null;
-          }
-
-          let contentWindow = this.contentWindow;
-          let markUpdate = function(event) {
-            // update the annotation based on this event, then update the
-            // icon as well
-            this.isMarked = JSON.parse(event.detail).marked;
-            if (this.isMarked) {
-              Social.markURI(provider.origin, gBrowser.currentURI);
-            } else {
-              Social.unmarkURI(provider.origin, gBrowser.currentURI, () => {
-                this.update();
-              });
-            }
-          }.bind(this);
-          let unload = () => {
-            contentWindow.removeEventListener("unload", unload);
-            contentWindow.removeEventListener("socialMarkUpdate", markUpdate);
-          }
-          contentWindow.addEventListener("socialMarkUpdate", markUpdate);
-          contentWindow.addEventListener("unload", unload);
-
-          // send the opengraph data
-          this.messageManager.sendAsyncMessage("Social:OpenGraphData", pageData);
-        }
-        this.messageManager.addMessageListener("DOMContentLoaded", DOMContentLoaded);
-        this._loading = true;
-        this.content.setAttribute("src", endpoint);
-        ]]></body>
-      </method>
-
-      <method name="openPanel">
-        <parameter name="aResetOnClose"/>
-        <body><![CDATA[
-        let panel = this.panel;
-        let anchor = document.getAnonymousElementByAttribute(this._anchor, "class", "toolbarbutton-icon");
-        // Bug 849216 - open the popup in a setTimeout so we avoid the auto-rollup
-        // handling from preventing it being opened in some cases.
-        setTimeout(() => {
-          panel.openPopup(anchor, "bottomcenter topright", 0, 0, false, false);
-        }, 0);
-        Services.telemetry.getHistogramById("SOCIAL_TOOLBAR_BUTTONS").add(2);
-        ]]></body>
-       </method>
-
-      <method name="markCurrentPage">
-        <parameter name="aOpenPanel"/>
-        <body><![CDATA[
-        // we always set the src on click if it has not been set for this tab,
-        // but we only want to open the panel if it was previously annotated.
-        let openPanel = this.isMarked || aOpenPanel;
-        let src = this.content.getAttribute("src");
-        if (!src || src == "about:blank") {
-          this.loadPanel();
-        }
-        if (openPanel)
-          this.openPanel();
-        ]]></body>
-      </method>
-
-      <method name="markLink">
-        <parameter name="aUrl"/>
-        <parameter name="aTarget"/>
-        <body><![CDATA[
-        if (!aUrl) {
-          this.markCurrentPage(true);
-          return;
-        }
-        // initiated form an external source, such as gContextMenu, where
-        // pageData is passed into us. In this case, we always load the iframe
-        // and show it since the url may not be the browser tab, but an image,
-        // link, etc. inside the page. We also "update" the iframe to the
-        // previous url when it is closed.
-        this.content.setAttribute("src", "about:blank");
-        this.loadPanel({ url: aUrl }, aTarget);
-        this.openPanel(true);
-        ]]></body>
-      </method>
-
-      <method name="dispatchPanelEvent">
-        <parameter name="name"/>
-        <body><![CDATA[
-        let evt = this.contentDocument.createEvent("CustomEvent");
-        evt.initCustomEvent(name, true, true, {});
-        this.contentDocument.documentElement.dispatchEvent(evt);
-        ]]></body>
-      </method>
-
-      <method name="onShown">
-        <body><![CDATA[
-        // because the panel may be preloaded, we need to size the panel when
-        // showing as well as after load
-        if (!this._useDynamicResizer) {
-          return;
-        }
-        let sizeSocialPanelToContent = Cu.import("resource:///modules/Social.jsm", {}).sizeSocialPanelToContent;
-        if (!this._loading && this.contentDocument &&
-            this.contentDocument.readyState == "complete") {
-          sizeSocialPanelToContent(this.panel, this.content);
-        } else {
-          let panelBrowserOnload = (message) => {
-            if (message.target != this.content)
-              return;
-            this.messageManager.removeMessageListener("PageVisibility:Show", panelBrowserOnload, true);
-            sizeSocialPanelToContent(this.panel, this.content);
-          };
-          this.messageManager.addMessageListener("PageVisibility:Show", panelBrowserOnload);
-        }
-        ]]></body>
-      </method>
-
-      <method name="handleEvent">
-        <parameter name="aEvent"/>
-        <body><![CDATA[
-        if (aEvent.eventPhase != aEvent.BUBBLING_PHASE)
-          return;
-        switch(aEvent.type) {
-          case "DOMLinkAdded": {
-            // much of this logic is from DOMLinkHandler in browser.js, this sets
-            // the presence icon for a chat user, we simply use favicon style
-            // updating
-            let link = aEvent.originalTarget;
-            let rel = link.rel && link.rel.toLowerCase();
-            if (!link || !link.ownerDocument || !rel || !link.href)
-              return;
-            if (link.rel.indexOf("icon") < 0)
-              return;
-
-            let ContentLinkHandler = Cu.import("resource:///modules/ContentLinkHandler.jsm", {}).ContentLinkHandler;
-            let uri = ContentLinkHandler.getLinkIconURI(link);
-            if (!uri)
-              return;
-
-            // we cannot size the image when we apply it via listStyleImage, so
-            // use the toolbar image
-            this.setAttribute("image", uri.spec);
-            }
-            break;
-          case "click":
-            Services.telemetry.getHistogramById("SOCIAL_PANEL_CLICKS").add(2);
-            break;
-        }
-        ]]></body>
-      </method>
-
-    </implementation>
-    <handlers>
-      <handler event="popupshowing"><![CDATA[
-        this._anchor.setAttribute("open", "true");
-        this.content.addEventListener("click", this);
-      ]]></handler>
-      <handler event="popupshown"><![CDATA[
-        this.onShown();
-      ]]></handler>
-      <handler event="popuphidden"><![CDATA[
-        this._anchor.removeAttribute("open");
-        this.update();
-        this.content.removeEventListener("click", this);
-      ]]></handler>
-      <handler event="command"><![CDATA[
-        this.markCurrentPage();
-      ]]></handler>
-    </handlers>
-  </binding>
-
-</bindings>
--- a/browser/base/content/test/social/browser.ini
+++ b/browser/base/content/test/social/browser.ini
@@ -1,48 +1,40 @@
 [DEFAULT]
 skip-if = buildapp == "mulet"
 support-files =
   blocklist.xml
-  checked.jpg
   head.js
   opengraph/og_invalid_url.html
   opengraph/opengraph.html
   opengraph/shortlink_linkrel.html
   opengraph/shorturl_link.html
   opengraph/shorturl_linkrel.html
   microformats.html
   share.html
   share_activate.html
   social_activate.html
   social_activate_basic.html
   social_activate_iframe.html
   social_chat.html
   social_crash_content_helper.js
   social_flyout.html
-  social_mark.html
   social_panel.html
   social_postActivation.html
   social_sidebar.html
   social_sidebar_empty.html
-  unchecked.jpg
   !/browser/base/content/test/plugins/blockNoPlugins.xml
 
 [browser_aboutHome_activation.js]
 [browser_addons.js]
 [browser_blocklist.js]
 [browser_share.js]
 [browser_social_activation.js]
 [browser_social_chatwindow.js]
 [browser_social_chatwindow_resize.js]
 [browser_social_chatwindowfocus.js]
-skip-if = asan # Bug 1260177
-[browser_social_contextmenu.js]
 skip-if = (os == 'linux' && e10s) # Bug 1072669 context menu relies on target element
 [browser_social_errorPage.js]
 [browser_social_flyout.js]
 [browser_social_isVisible.js]
-[browser_social_marks.js]
-[browser_social_marks_context.js]
 [browser_social_multiprovider.js]
 [browser_social_sidebar.js]
-[browser_social_status.js]
 [browser_social_window.js]
deleted file mode 100644
--- a/browser/base/content/test/social/browser_social_contextmenu.js
+++ /dev/null
@@ -1,74 +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/. */
-
-var SocialService = Cu.import("resource://gre/modules/SocialService.jsm", {}).SocialService;
-
-var manifest = { // used for testing install
-  name: "provider test1",
-  origin: "https://test1.example.com",
-  markURL: "https://test1.example.com/browser/browser/base/content/test/social/social_mark.html?url=%{url}",
-  markedIcon: "https://test1.example.com/browser/browser/base/content/test/social/unchecked.jpg",
-  unmarkedIcon: "https://test1.example.com/browser/browser/base/content/test/social/checked.jpg",
-
-  iconURL: "https://test1.example.com/browser/browser/base/content/test/general/moz.png",
-  version: "1.0"
-};
-
-function test() {
-  waitForExplicitFinish();
-  let frameScript = "data:,(" + function frame_script() {
-    addEventListener("OpenGraphData", function (aEvent) {
-      sendAsyncMessage("sharedata", aEvent.detail);
-    }, true, true);
-  }.toString() + ")();";
-  let mm = getGroupMessageManager("social");
-  mm.loadFrameScript(frameScript, true);
-
-  runSocialTestWithProvider(manifest, function (finishcb) {
-    runSocialTests(tests, undefined, undefined, function () {
-      mm.removeDelayedFrameScript(frameScript);
-      finishcb();
-    });
-  });
-}
-
-var tests = {
-  testMarkMicroformats: function(next) {
-    // emulates context menu action using target element, calling SocialMarks.markLink
-    let provider = Social._getProviderFromOrigin(manifest.origin);
-    let target, testTab;
-
-    // browser_share tests microformats on the full page, this is testing a
-    // specific target element.
-    let expecting = JSON.stringify({
-      "url": "https://example.com/browser/browser/base/content/test/social/microformats.html",
-      "microformats": {
-        "items": [{
-            "type": ["h-review"],
-            "properties": {
-              "rating": ["4.5"]
-            }
-          }
-        ],
-        "rels": {},
-        "rel-urls": {}
-      }
-    });
-
-    let mm = getGroupMessageManager("social");
-    mm.addMessageListener("sharedata", function handler(msg) {
-      is(msg.data, expecting, "microformats data ok");
-      mm.removeMessageListener("sharedata", handler);
-      BrowserTestUtils.removeTab(testTab).then(next);
-    });
-
-    let url = "https://example.com/browser/browser/base/content/test/social/microformats.html"
-    BrowserTestUtils.openNewForegroundTab(gBrowser, url).then(tab => {
-      testTab = tab;
-      let doc = tab.linkedBrowser.contentDocument;
-      target = doc.getElementById("test-review");
-      SocialMarks.markLink(manifest.origin, url, target);
-    });
-  }
-}
deleted file mode 100644
--- a/browser/base/content/test/social/browser_social_marks.js
+++ /dev/null
@@ -1,232 +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/. */
-
-var SocialService = Cu.import("resource://gre/modules/SocialService.jsm", {}).SocialService;
-
-var manifest2 = { // used for testing install
-  name: "provider test1",
-  origin: "https://test1.example.com",
-  markURL: "https://test1.example.com/browser/browser/base/content/test/social/social_mark.html?url=%{url}",
-  markedIcon: "https://test1.example.com/browser/browser/base/content/test/social/unchecked.jpg",
-  unmarkedIcon: "https://test1.example.com/browser/browser/base/content/test/social/checked.jpg",
-
-  iconURL: "https://test1.example.com/browser/browser/base/content/test/general/moz.png",
-  version: "1.0"
-};
-var manifest3 = { // used for testing install
-  name: "provider test2",
-  origin: "https://test2.example.com",
-  sidebarURL: "https://test2.example.com/browser/browser/base/content/test/social/social_sidebar.html",
-  iconURL: "https://test2.example.com/browser/browser/base/content/test/general/moz.png",
-  version: "1.0"
-};
-
-function test() {
-  waitForExplicitFinish();
-
-  let frameScript = "data:,(" + function frame_script() {
-    addEventListener("visibilitychange", function() {
-      sendAsyncMessage("visibility", content.document.hidden ? "hidden" : "shown");
-    });
-  }.toString() + ")();";
-  let mm = getGroupMessageManager("social");
-  mm.loadFrameScript(frameScript, true);
-
-  PopupNotifications.panel.setAttribute("animate", "false");
-  registerCleanupFunction(function () {
-    PopupNotifications.panel.removeAttribute("animate");
-    mm.removeDelayedFrameScript(frameScript);
-  });
-
-  runSocialTests(tests, undefined, undefined, finish);
-}
-
-var tests = {
-  testButtonDisabledOnActivate: function(next) {
-    // starting on about:blank page, share should be visible but disabled when
-    // adding provider
-    is(gBrowser.selectedBrowser.currentURI.spec, "about:blank");
-    SocialService.addProvider(manifest2, function(provider) {
-      is(provider.origin, manifest2.origin, "provider is installed");
-      let id = SocialMarks._toolbarHelper.idFromOrigin(manifest2.origin);
-      let widget = CustomizableUI.getWidget(id).forWindow(window)
-      ok(widget.node, "button added to widget set");
-
-      // bypass widget go directly to dom, check attribute states
-      let button = document.getElementById(id);
-      is(button.disabled, true, "mark button is disabled");
-      // verify the attribute for proper css
-      is(button.getAttribute("disabled"), "true", "mark button attribute is disabled");
-      // button should be visible
-      is(button.hidden, false, "mark button is visible");
-
-      checkSocialUI(window);
-      SocialService.disableProvider(manifest2.origin, next);
-    });
-  },
-  testNoButtonOnEnable: function(next) {
-    // we expect the addon install dialog to appear, we need to accept the
-    // install from the dialog.
-    let panel = document.getElementById("servicesInstall-notification");
-    BrowserTestUtils.waitForEvent(PopupNotifications.panel, "popupshown").then(() => {
-      info("servicesInstall-notification panel opened");
-      panel.button.click();
-    });
-
-    let activationURL = manifest3.origin + "/browser/browser/base/content/test/social/social_activate.html"
-    BrowserTestUtils.openNewForegroundTab(gBrowser, activationURL).then(tab => {
-      let doc = tab.linkedBrowser.contentDocument;
-      let data = {
-        origin: doc.nodePrincipal.origin,
-        url: doc.location.href,
-        manifest: manifest3,
-        window: window
-      }
-
-      Social.installProvider(data, function(addonManifest) {
-        // enable the provider so we know the button would have appeared
-        SocialService.enableProvider(manifest3.origin, function(provider) {
-          is(provider.origin, manifest3.origin, "provider is installed");
-          let id = SocialMarks._toolbarHelper.idFromOrigin(provider.origin);
-          let widget = CustomizableUI.getWidget(id);
-          ok(!widget || !widget.forWindow(window).node, "no button added to widget set");
-          Social.uninstallProvider(manifest3.origin, function() {
-            BrowserTestUtils.removeTab(tab).then(next);
-          });
-        });
-      });
-    });
-  },
-
-  testButtonOnEnable: function(next) {
-    let panel = document.getElementById("servicesInstall-notification");
-    BrowserTestUtils.waitForEvent(PopupNotifications.panel, "popupshown").then(() => {
-      info("servicesInstall-notification panel opened");
-      panel.button.click();
-    });
-
-    // enable the provider now
-    let activationURL = manifest2.origin + "/browser/browser/base/content/test/social/social_activate.html"
-    BrowserTestUtils.openNewForegroundTab(gBrowser, activationURL).then(tab => {
-      let doc = tab.linkedBrowser.contentDocument;
-      let data = {
-        origin: doc.nodePrincipal.origin,
-        url: doc.location.href,
-        manifest: manifest2,
-        window: window
-      }
-
-      Social.installProvider(data, function(addonManifest) {
-        SocialService.enableProvider(manifest2.origin, function(provider) {
-          is(provider.origin, manifest2.origin, "provider is installed");
-          let id = SocialMarks._toolbarHelper.idFromOrigin(manifest2.origin);
-          let widget = CustomizableUI.getWidget(id).forWindow(window)
-          ok(widget.node, "button added to widget set");
-
-          // bypass widget go directly to dom, check attribute states
-          let button = document.getElementById(id);
-          is(button.disabled, false, "mark button is disabled");
-          // verify the attribute for proper css
-          ok(!button.hasAttribute("disabled"), "mark button attribute is disabled");
-          // button should be visible
-          is(button.hidden, false, "mark button is visible");
-
-          checkSocialUI(window);
-          BrowserTestUtils.removeTab(tab).then(next);
-        });
-      });
-    });
-  },
-
-  testMarkPanel: function(next) {
-    // click on panel to open and wait for visibility
-    let provider = Social._getProviderFromOrigin(manifest2.origin);
-    ok(provider.enabled, "provider is enabled");
-    let id = SocialMarks._toolbarHelper.idFromOrigin(manifest2.origin);
-    let widget = CustomizableUI.getWidget(id);
-    let btn = widget.forWindow(window).node;
-    ok(btn, "got a mark button");
-    let ourTab;
-
-    BrowserTestUtils.waitForEvent(btn.panel, "popupshown").then(() => {
-      info("marks panel shown");
-      let doc = btn.contentDocument;
-      let unmarkBtn = doc.getElementById("unmark");
-      ok(unmarkBtn, "testMarkPanel - got the panel unmark button");
-      EventUtils.sendMouseEvent({type: "click"}, unmarkBtn, btn.contentWindow);
-    });
-
-    BrowserTestUtils.waitForEvent(btn.panel, "popuphidden").then(() => {
-      BrowserTestUtils.removeTab(ourTab).then(() => {
-        ok(btn.disabled, "button is disabled");
-        next();
-      });
-    });
-
-    // verify markbutton is disabled when there is no browser url
-    ok(btn.disabled, "button is disabled");
-    let activationURL = manifest2.origin + "/browser/browser/base/content/test/social/social_activate.html"
-    BrowserTestUtils.openNewForegroundTab(gBrowser, activationURL).then(tab => {
-      ourTab = tab;
-      ok(!btn.disabled, "button is enabled");
-      // first click marks the page, second click opens the page. We have to
-      // synthesize so the command event happens
-      EventUtils.synthesizeMouseAtCenter(btn, {});
-      // wait for the button to be marked, click to open panel
-      is(btn.panel.state, "closed", "panel should not be visible yet");
-      BrowserTestUtils.waitForCondition(() => btn.isMarked, "button is marked").then(() => {
-        EventUtils.synthesizeMouseAtCenter(btn, {});
-      });
-    });
-  },
-
-  testMarkPanelOffline: function(next) {
-    // click on panel to open and wait for visibility
-    let provider = Social._getProviderFromOrigin(manifest2.origin);
-    ok(provider.enabled, "provider is enabled");
-    let id = SocialMarks._toolbarHelper.idFromOrigin(manifest2.origin);
-    let widget = CustomizableUI.getWidget(id);
-    let btn = widget.forWindow(window).node;
-    ok(btn, "got a mark button");
-
-    // verify markbutton is disabled when there is no browser url
-    ok(btn.disabled, "button is disabled");
-    let activationURL = manifest2.origin + "/browser/browser/base/content/test/social/social_activate.html";
-    BrowserTestUtils.openNewForegroundTab(gBrowser, activationURL).then(tab => {
-      ok(!btn.disabled, "button is enabled");
-      goOffline().then(function() {
-        info("testing offline error page");
-        // wait for popupshown
-        BrowserTestUtils.waitForEvent(btn.panel, "popupshown").then(() => {
-          info("marks panel is open");
-          ensureFrameLoaded(btn.content).then(() => {
-            is(btn.contentDocument.documentURI.indexOf("about:socialerror?mode=tryAgainOnly"), 0, "social error page is showing "+btn.contentDocument.documentURI);
-            // cleanup after the page has been unmarked
-            BrowserTestUtils.removeTab(tab).then(() => {
-              ok(btn.disabled, "button is disabled");
-              goOnline().then(next);
-            });
-          });
-        });
-        btn.markCurrentPage();
-      });
-    });
-  },
-
-  testButtonOnDisable: function(next) {
-    // enable the provider now
-    let provider = Social._getProviderFromOrigin(manifest2.origin);
-    ok(provider, "provider is installed");
-    SocialService.disableProvider(manifest2.origin, function() {
-      let id = SocialMarks._toolbarHelper.idFromOrigin(manifest2.origin);
-      BrowserTestUtils.waitForCondition(() => {
-                        // getWidget now returns null since we've destroyed the widget
-                        return !CustomizableUI.getWidget(id)
-                       }, "button does not exist after disabling the provider").then(() => {
-                         checkSocialUI(window);
-                         Social.uninstallProvider(manifest2.origin, next);
-                       });
-    });
-  }
-}
deleted file mode 100644
--- a/browser/base/content/test/social/browser_social_marks_context.js
+++ /dev/null
@@ -1,106 +0,0 @@
-var SocialService = Cu.import("resource://gre/modules/SocialService.jsm", {}).SocialService;
-
-function makeMarkProvider(origin) {
-  return { // used for testing install
-    name: "mark provider " + origin,
-    origin: "https://" + origin + ".example.com",
-    markURL: "https://" + origin + ".example.com/browser/browser/base/content/test/social/social_mark.html?url=%{url}",
-    markedIcon: "https://" + origin + ".example.com/browser/browser/base/content/test/social/unchecked.jpg",
-    unmarkedIcon: "https://" + origin + ".example.com/browser/browser/base/content/test/social/checked.jpg",
-    iconURL: "https://" + origin + ".example.com/browser/browser/base/content/test/general/moz.png",
-    version: "1.0"
-  }
-}
-
-function test() {
-  waitForExplicitFinish();
-  PopupNotifications.panel.setAttribute("animate", "false");
-  registerCleanupFunction(function () {
-    PopupNotifications.panel.removeAttribute("animate");
-  });
-
-  runSocialTests(tests, undefined, undefined, finish);
-}
-
-var tests = {
-  testContextSubmenu: function(next) {
-    // install 4 providers to test that the menu's are added as submenus
-    let manifests = [
-      makeMarkProvider("sub1.test1"),
-      makeMarkProvider("sub2.test1"),
-      makeMarkProvider("sub1.test2"),
-      makeMarkProvider("sub2.test2")
-    ];
-    let installed = [];
-    let markLinkMenu = document.getElementById("context-marklinkMenu").firstChild;
-    let markPageMenu = document.getElementById("context-markpageMenu").firstChild;
-
-    function addProviders(callback) {
-      let manifest = manifests.pop();
-      if (!manifest) {
-        info("INSTALLATION FINISHED");
-        executeSoon(callback);
-        return;
-      }
-      info("INSTALLING " + manifest.origin);
-      let panel = document.getElementById("servicesInstall-notification");
-      BrowserTestUtils.waitForEvent(PopupNotifications.panel, "popupshown").then(() => {
-        info("servicesInstall-notification panel opened");
-        panel.button.click();
-      });
-
-      let activationURL = manifest.origin + "/browser/browser/base/content/test/social/social_activate.html"
-      let id = SocialMarks._toolbarHelper.idFromOrigin(manifest.origin);
-      let toolbar = document.getElementById("nav-bar");
-      BrowserTestUtils.openNewForegroundTab(gBrowser, activationURL).then(tab => {
-        let doc = tab.linkedBrowser.contentDocument;
-        let data = {
-          origin: doc.nodePrincipal.origin,
-          url: doc.location.href,
-          manifest: manifest,
-          window: window
-        }
-
-        Social.installProvider(data, function(addonManifest) {
-          // enable the provider so we know the button would have appeared
-          SocialService.enableProvider(manifest.origin, function(provider) {
-            BrowserTestUtils.waitForCondition(() => { return CustomizableUI.getWidget(id) },
-                             "button exists after enabling social").then(() => {
-              BrowserTestUtils.removeTab(tab).then(() => {
-                installed.push(manifest.origin);
-                // checkSocialUI will properly check where the menus are located
-                checkSocialUI(window);
-                executeSoon(function() {
-                  addProviders(callback);
-                });
-              });
-            });
-          });
-        });
-      });
-    }
-
-    function removeProviders(callback) {
-      let origin = installed.pop();
-      if (!origin) {
-        executeSoon(callback);
-        return;
-      }
-      Social.uninstallProvider(origin, function(provider) {
-        executeSoon(function() {
-          removeProviders(callback);
-        });
-      });
-    }
-
-    addProviders(function() {
-      removeProviders(function() {
-        is(SocialMarks.getProviders().length, 0, "mark providers removed");
-        is(markLinkMenu.childNodes.length, 0, "marklink menu ok");
-        is(markPageMenu.childNodes.length, 0, "markpage menu ok");
-        checkSocialUI(window);
-        next();
-      });
-    });
-  }
-}
\ No newline at end of file
deleted file mode 100644
--- a/browser/base/content/test/social/browser_social_status.js
+++ /dev/null
@@ -1,216 +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/. */
-
-var SocialService = Cu.import("resource://gre/modules/SocialService.jsm", {}).SocialService;
-
-var manifest = { // builtin provider
-  name: "provider example.com",
-  origin: "https://example.com",
-  sidebarURL: "https://example.com/browser/browser/base/content/test/social/social_sidebar.html",
-  iconURL: "https://example.com/browser/browser/base/content/test/general/moz.png"
-};
-var manifest2 = { // used for testing install
-  name: "provider test1",
-  origin: "https://test1.example.com",
-  statusURL: "https://test1.example.com/browser/browser/base/content/test/social/social_panel.html",
-  iconURL: "https://test1.example.com/browser/browser/base/content/test/general/moz.png",
-  version: "1.0"
-};
-var manifest3 = { // used for testing install
-  name: "provider test2",
-  origin: "https://test2.example.com",
-  sidebarURL: "https://test2.example.com/browser/browser/base/content/test/social/social_sidebar.html",
-  iconURL: "https://test2.example.com/browser/browser/base/content/test/general/moz.png",
-  version: "1.0"
-};
-
-
-function openWindowAndWaitForInit(callback) {
-  let topic = "browser-delayed-startup-finished";
-  let w = OpenBrowserWindow();
-  Services.obs.addObserver(function providerSet(subject, topic, data) {
-    Services.obs.removeObserver(providerSet, topic);
-    executeSoon(() => callback(w));
-  }, topic, false);
-}
-
-function test() {
-  waitForExplicitFinish();
-
-  let frameScript = "data:,(" + function frame_script() {
-    addMessageListener("socialTest-sendEvent", function(msg) {
-      let data = msg.data;
-      let evt = content.document.createEvent("CustomEvent");
-      evt.initCustomEvent(data.name, true, true, JSON.stringify(data.data));
-      content.document.documentElement.dispatchEvent(evt);
-    });
-  }.toString() + ")();";
-  let mm = getGroupMessageManager("social");
-  mm.loadFrameScript(frameScript, true);
-
-  PopupNotifications.panel.setAttribute("animate", "false");
-  registerCleanupFunction(function () {
-    PopupNotifications.panel.removeAttribute("animate");
-    mm.removeDelayedFrameScript(frameScript);
-  });
-
-  runSocialTestWithProvider(manifest, function (finishcb) {
-    runSocialTests(tests, undefined, undefined, function () {
-      Services.prefs.clearUserPref("social.remote-install.enabled");
-      // just in case the tests failed, clear these here as well
-      Services.prefs.clearUserPref("social.whitelist");
-      CustomizableUI.reset();
-      finishcb();
-    });
-  });
-}
-
-var tests = {
-  testNoButtonOnEnable: function(next) {
-    // we expect the addon install dialog to appear, we need to accept the
-    // install from the dialog.
-    let panel = document.getElementById("servicesInstall-notification");
-    BrowserTestUtils.waitForEvent(PopupNotifications.panel, "popupshown").then(() => {
-      info("servicesInstall-notification panel opened");
-      panel.button.click();
-    })
-
-    let activationURL = manifest3.origin + "/browser/browser/base/content/test/social/social_activate.html"
-    BrowserTestUtils.openNewForegroundTab(gBrowser, activationURL).then(tab => {
-      let doc = tab.linkedBrowser.contentDocument;
-      let data = {
-        origin: doc.nodePrincipal.origin,
-        url: doc.location.href,
-        manifest: manifest3,
-        window: window
-      }
-      Social.installProvider(data, function(addonManifest) {
-        // enable the provider so we know the button would have appeared
-        SocialService.enableProvider(manifest3.origin, function(provider) {
-          is(provider.origin, manifest3.origin, "provider is installed");
-          let id = SocialStatus._toolbarHelper.idFromOrigin(provider.origin);
-          let widget = CustomizableUI.getWidget(id);
-          ok(!widget || !widget.forWindow(window).node, "no button added to widget set");
-          Social.uninstallProvider(manifest3.origin, function() {
-            BrowserTestUtils.removeTab(tab).then(next);
-          });
-        });
-      });
-    });
-  },
-  testButtonOnEnable: function(next) {
-    let panel = document.getElementById("servicesInstall-notification");
-    BrowserTestUtils.waitForEvent(PopupNotifications.panel, "popupshown").then(() => {
-      info("servicesInstall-notification panel opened");
-      panel.button.click();
-    });
-
-    // enable the provider now
-    let activationURL = manifest2.origin + "/browser/browser/base/content/test/social/social_activate.html"
-    BrowserTestUtils.openNewForegroundTab(gBrowser, activationURL).then(tab => {
-      let doc = tab.linkedBrowser.contentDocument;
-      let data = {
-        origin: doc.nodePrincipal.origin,
-        url: doc.location.href,
-        manifest: manifest2,
-        window: window
-      }
-
-      Social.installProvider(data, function(addonManifest) {
-        SocialService.enableProvider(manifest2.origin, function(provider) {
-          is(provider.origin, manifest2.origin, "provider is installed");
-          let id = SocialStatus._toolbarHelper.idFromOrigin(manifest2.origin);
-          let widget = CustomizableUI.getWidget(id).forWindow(window);
-          ok(widget.node, "button added to widget set");
-          checkSocialUI(window);
-          BrowserTestUtils.removeTab(tab).then(next);
-        });
-      });
-    });
-  },
-  testStatusPanel: function(next) {
-    let icon = {
-      name: "testIcon",
-      iconURL: "chrome://browser/skin/Info.png",
-      counter: 1
-    };
-
-    // click on panel to open and wait for visibility
-    let provider = Social._getProviderFromOrigin(manifest2.origin);
-    let id = SocialStatus._toolbarHelper.idFromOrigin(manifest2.origin);
-    let widget = CustomizableUI.getWidget(id);
-    let btn = widget.forWindow(window).node;
-
-    // Disable the transition
-    let panel = document.getElementById("social-notification-panel");
-    panel.setAttribute("animate", "false");
-    BrowserTestUtils.waitForEvent(panel, "popupshown").then(() => {
-      ensureFrameLoaded(panel.firstChild).then(() => {
-        let mm = panel.firstChild.messageManager;
-        mm.sendAsyncMessage("socialTest-sendEvent", { name: "Social:Notification", data: icon });
-        BrowserTestUtils.waitForCondition(
-          () => { return btn.getAttribute("badge"); }, "button updated by notification").then(() => {
-            is(btn.style.listStyleImage, "url(\"" + icon.iconURL + "\")", "notification icon updated");
-            panel.hidePopup();
-          });
-        });
-    });
-    BrowserTestUtils.waitForEvent(panel, "popuphidden").then(() => {
-      panel.removeAttribute("animate");
-      next();
-    });
-    btn.click(); // open the panel
-  },
-
-  testPanelOffline: function(next) {
-    // click on panel to open and wait for visibility
-    let provider = Social._getProviderFromOrigin(manifest2.origin);
-    ok(provider.enabled, "provider is enabled");
-    let id = SocialStatus._toolbarHelper.idFromOrigin(manifest2.origin);
-    let widget = CustomizableUI.getWidget(id);
-    let btn = widget.forWindow(window).node;
-    ok(btn, "got a status button");
-    let frameId = btn.getAttribute("notificationFrameId");
-    let frame = document.getElementById(frameId);
-
-    goOffline().then(function() {
-      info("testing offline error page");
-      // wait for popupshown
-      let panel = document.getElementById("social-notification-panel");
-      BrowserTestUtils.waitForEvent(panel, "popupshown").then(() => {
-        ensureFrameLoaded(frame).then(() => {
-          is(frame.contentDocument.documentURI.indexOf("about:socialerror?mode=tryAgainOnly"), 0, "social error page is showing "+frame.contentDocument.documentURI);
-          // We got our error page, reset to avoid test leak.
-          BrowserTestUtils.waitForEvent(frame, "load", true).then(() => {
-            is(frame.contentDocument.documentURI, "about:blank", "closing error panel");
-            BrowserTestUtils.waitForEvent(panel, "popuphidden").then(next);
-            panel.hidePopup();
-          });
-          goOnline().then(() => {
-            info("resetting error panel");
-            frame.setAttribute("src", "about:blank");
-          });
-        });
-      });
-      // reload after going offline, wait for unload to open panel
-      BrowserTestUtils.waitForEvent(frame, "unload", true).then(() => {
-        btn.click();
-      });
-      frame.contentDocument.location.reload();
-    });
-  },
-
-  testButtonOnDisable: function(next) {
-    // enable the provider now
-    let provider = Social._getProviderFromOrigin(manifest2.origin);
-    ok(provider, "provider is installed");
-    SocialService.disableProvider(manifest2.origin, function() {
-      let id = SocialStatus._toolbarHelper.idFromOrigin(manifest2.origin);
-      BrowserTestUtils.waitForCondition(() => { return !document.getElementById(id) },
-                                        "button does not exist after disabling the provider").then(() => {
-        Social.uninstallProvider(manifest2.origin, next);
-       });
-    });
-  }
-}
deleted file mode 100644
index 4cbbe18e6125b6591a6a5eb38b036e38b97b235a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
--- a/browser/base/content/test/social/head.js
+++ b/browser/base/content/test/social/head.js
@@ -61,17 +61,17 @@ function runSocialTestWithProvider(manif
   let manifests = Array.isArray(manifest) ? manifest : [manifest];
 
   // Check that none of the provider's content ends up in history.
   function finishCleanUp() {
     ok(!SocialSidebar.provider, "no provider in sidebar");
     SessionStore.setWindowValue(window, "socialSidebar", "");
     for (let i = 0; i < manifests.length; i++) {
       let m = manifests[i];
-      for (let what of ['sidebarURL', 'iconURL', 'shareURL', 'markURL']) {
+      for (let what of ['sidebarURL', 'iconURL', 'shareURL']) {
         if (m[what]) {
           yield promiseSocialUrlNotRemembered(m[what]);
         }
       };
     }
     for (let i = 0; i < gURLsNotRemembered.length; i++) {
       yield promiseSocialUrlNotRemembered(gURLsNotRemembered[i]);
     }
@@ -227,52 +227,16 @@ function checkSocialUI(win) {
     else
       ++numGoodTests;
   }
   function isbool(a, b, msg) {
     _is(!!a, !!b, msg);
   }
   isbool(win.SocialSidebar.canShow, sidebarEnabled, "social sidebar active?");
 
-  let contextMenus = [
-    {
-      type: "link",
-      id: "context-marklinkMenu",
-      label: "social.marklinkMenu.label"
-    },
-    {
-      type: "page",
-      id: "context-markpageMenu",
-      label: "social.markpageMenu.label"
-    }
-  ];
-
-  for (let c of contextMenus) {
-    let leMenu = document.getElementById(c.id);
-    let parent, menus;
-    let markProviders = SocialMarks.getProviders();
-    if (markProviders.length > SocialMarks.MENU_LIMIT) {
-      // menus should be in a submenu, not in the top level of the context menu
-      parent = leMenu.firstChild;
-      menus = document.getElementsByClassName("context-mark" + c.type);
-      _is(menus.length, 0, "menu's are not in main context menu\n");
-      menus = parent.childNodes;
-      _is(menus.length, markProviders.length, c.id + " menu exists for each mark provider");
-    } else {
-      // menus should be in the top level of the context menu, not in a submenu
-      parent = leMenu.parentNode;
-      menus = document.getElementsByClassName("context-mark" + c.type);
-      _is(menus.length, markProviders.length, c.id + " menu exists for each mark provider");
-      menus = leMenu.firstChild.childNodes;
-      _is(menus.length, 0, "menu's are not in context submenu\n");
-    }
-    for (let m of menus)
-      _is(m.parentNode, parent, "menu has correct parent");
-  }
-
   // and for good measure, check all the social commands.
   isbool(!doc.getElementById("Social:ToggleSidebar").hidden, sidebarEnabled, "Social:ToggleSidebar visible?");
   isbool(!doc.getElementById("Social:ToggleNotifications").hidden, enabled, "Social:ToggleNotifications visible?");
 
   // and report on overall success of failure of the various checks here.
   is(numGoodTests, numTests, "The Social UI tests succeeded.")
 }
 
--- a/browser/base/content/test/social/social_activate.html
+++ b/browser/base/content/test/social/social_activate.html
@@ -9,17 +9,16 @@ var data = {
   // currently required
   "name": "Demo Social Service",
   "iconURL": "chrome://branding/content/icon16.png",
   "icon32URL": "chrome://branding/content/favicon32.png",
   "icon64URL": "chrome://branding/content/icon64.png",
 
   // at least one of these must be defined
   "sidebarURL": "/browser/browser/base/content/test/social/social_sidebar.html",
-  "statusURL": "/browser/browser/base/content/test/social/social_panel.html",
   "postActivationURL": "/browser/browser/base/content/test/social/social_postActivation.html",
 
   // should be available for display purposes
   "description": "A short paragraph about this provider",
   "author": "Shane Caraveo, Mozilla",
 
   // optional
   "version": "1.0"
deleted file mode 100644
--- a/browser/base/content/test/social/social_mark.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <link id="siteicon" rel="icon" href="./icon.png"/>
-    <title>Demo Mark Window</title>
-    <script type="text/javascript">
-
-    function updateTextNode(parent, text) {
-      var textNode = parent.childNodes[0];
-      if (textNode)
-        parent.removeChild(textNode);
-      textNode = document.createTextNode(text);
-      parent.appendChild(textNode);
-    }
-    function onLoad() {
-      updateTextNode(document.getElementById("shared"), location.search);
-      socialMarkUpdate(true);
-    }
-    function socialMarkUpdate(isMarked) {
-        var evt = document.createEvent("CustomEvent");
-        evt.initCustomEvent("socialMarkUpdate", true, true, JSON.stringify({marked: isMarked}));
-        document.documentElement.dispatchEvent(evt);
-    }
-    var shareData;
-    addEventListener("OpenGraphData", function(e) {
-      shareData = JSON.parse(e.detail);
-      updateTextNode(document.getElementById("shared"), shareData.url);
-      socialMarkUpdate(true);
-    });
-    </script>
-</head>
-
-<body onload="onLoad()">
-  <div id="content">
-    <h3>This window shows the mark data</h3>
-    <div>Page Marked: <div id="shared" class="textbox"></div></div>
-    <button id="unmark" onclick="socialMarkUpdate(false); window.close()">Unmark</button>
-    <button onclick="window.close();">Close</button>
-  </div>
-</body>
-</html>
deleted file mode 100644
index 4d3e72b8018ea0be59ca08a45c2ab7c1b6dcd73c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
--- a/browser/base/jar.mn
+++ b/browser/base/jar.mn
@@ -184,17 +184,16 @@ browser.jar:
 *       content/browser/viewSourceOverlay.xul         (content/viewSourceOverlay.xul)
 #ifndef XP_MACOSX
 *       content/browser/webrtcIndicator.xul           (content/webrtcIndicator.xul)
         content/browser/webrtcIndicator.js            (content/webrtcIndicator.js)
 #endif
 #ifdef XP_WIN
         content/browser/win6BrowserOverlay.xul        (content/win6BrowserOverlay.xul)
 #endif
-        content/browser/socialmarks.xml               (content/socialmarks.xml)
         content/browser/socialchat.xml                (content/socialchat.xml)
 # the following files are browser-specific overrides
 *       content/browser/license.html                  (/toolkit/content/license.html)
 % override chrome://global/content/license.html chrome://browser/content/license.html
 #ifdef MOZ_SAFE_BROWSING
         content/browser/report-phishing-overlay.xul     (content/report-phishing-overlay.xul)
         content/browser/blockedSite.xhtml               (content/blockedSite.xhtml)
 % overlay chrome://browser/content/browser.xul chrome://browser/content/report-phishing-overlay.xul
--- a/browser/components/customizableui/CustomizableWidgets.jsm
+++ b/browser/components/customizableui/CustomizableWidgets.jsm
@@ -568,17 +568,17 @@ const CustomizableWidgets = [
     onBuild: function(aDocument) {
       let node = aDocument.createElementNS(kNSXUL, "toolbarbutton");
       node.setAttribute("id", this.id);
       node.classList.add("toolbarbutton-1");
       node.classList.add("chromeclass-toolbar-additional");
       node.setAttribute("label", CustomizableUI.getLocalizedProperty(this, "label"));
       node.setAttribute("tooltiptext", CustomizableUI.getLocalizedProperty(this, "tooltiptext"));
       node.setAttribute("removable", "true");
-      node.setAttribute("observes", "Social:PageShareOrMark");
+      node.setAttribute("observes", "Social:PageShareable");
       node.setAttribute("command", "Social:SharePage");
 
       let listener = {
         onWidgetAdded: (aWidgetId) => {
           if (aWidgetId != this.id)
             return;
 
           Services.obs.notifyObservers(null, "social:" + this.id + "-added", null);
--- a/browser/modules/Social.jsm
+++ b/browser/modules/Social.jsm
@@ -1,16 +1,15 @@
 /* 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/. */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["Social", "CreateSocialStatusWidget",
-                         "CreateSocialMarkWidget", "OpenGraphBuilder",
+this.EXPORTED_SYMBOLS = ["Social", "OpenGraphBuilder",
                          "DynamicResizeWatcher", "sizeSocialPanelToContent"];
 
 const Ci = Components.interfaces;
 const Cc = Components.classes;
 const Cu = Components.utils;
 
 // The minimum sizes for the auto-resize panel code, minimum size necessary to
 // properly show the error page in the panel.
@@ -27,56 +26,16 @@ XPCOMUtils.defineLazyModuleGetter(this, 
 XPCOMUtils.defineLazyModuleGetter(this, "PageMetadata",
   "resource://gre/modules/PageMetadata.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils",
   "resource://gre/modules/PlacesUtils.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "Promise",
   "resource://gre/modules/Promise.jsm");
 
 
-function promiseSetAnnotation(aURI, providerList) {
-  let deferred = Promise.defer();
-
-  // Delaying to catch issues with asynchronous behavior while waiting
-  // to implement asynchronous annotations in bug 699844.
-  Services.tm.mainThread.dispatch(function() {
-    try {
-      if (providerList && providerList.length > 0) {
-        PlacesUtils.annotations.setPageAnnotation(
-          aURI, "social/mark", JSON.stringify(providerList), 0,
-          PlacesUtils.annotations.EXPIRE_WITH_HISTORY);
-      } else {
-        PlacesUtils.annotations.removePageAnnotation(aURI, "social/mark");
-      }
-    } catch(e) {
-      Cu.reportError("SocialAnnotation failed: " + e);
-    }
-    deferred.resolve();
-  }, Ci.nsIThread.DISPATCH_NORMAL);
-
-  return deferred.promise;
-}
-
-function promiseGetAnnotation(aURI) {
-  let deferred = Promise.defer();
-
-  // Delaying to catch issues with asynchronous behavior while waiting
-  // to implement asynchronous annotations in bug 699844.
-  Services.tm.mainThread.dispatch(function() {
-    let val = null;
-    try {
-      val = PlacesUtils.annotations.getPageAnnotation(aURI, "social/mark");
-    } catch (ex) { }
-
-    deferred.resolve(val);
-  }, Ci.nsIThread.DISPATCH_NORMAL);
-
-  return deferred.promise;
-}
-
 this.Social = {
   initialized: false,
   lastEventReceived: 0,
   providers: [],
   _disabledForSafeMode: false,
 
   init: function Social_init() {
     this._disabledForSafeMode = Services.appinfo.inSafeMode && this.enabled;
@@ -175,149 +134,23 @@ this.Social = {
     SocialService.uninstallProvider(origin, aCallback);
   },
 
   // Activation functionality
   activateFromOrigin: function (origin, callback) {
     // It's OK if the provider has already been activated - we still get called
     // back with it.
     SocialService.enableProvider(origin, callback);
-  },
-
-  // Page Marking functionality
-  isURIMarked: function(origin, aURI, aCallback) {
-    promiseGetAnnotation(aURI).then(function(val) {
-      if (val) {
-        let providerList = JSON.parse(val);
-        val = providerList.indexOf(origin) >= 0;
-      }
-      aCallback(!!val);
-    }).then(null, Cu.reportError);
-  },
-
-  markURI: function(origin, aURI, aCallback) {
-    // update or set our annotation
-    promiseGetAnnotation(aURI).then(function(val) {
-
-      let providerList = val ? JSON.parse(val) : [];
-      let marked = providerList.indexOf(origin) >= 0;
-      if (marked)
-        return;
-      providerList.push(origin);
-      // we allow marking links in a page that may not have been visited yet.
-      // make sure there is a history entry for the uri, then annotate it.
-      let place = {
-        uri: aURI,
-        visits: [{
-          visitDate: Date.now() + 1000,
-          transitionType: Ci.nsINavHistoryService.TRANSITION_LINK
-        }]
-      };
-      PlacesUtils.asyncHistory.updatePlaces(place, {
-        handleError: () => Cu.reportError("couldn't update history for socialmark annotation"),
-        handleResult: function () {},
-        handleCompletion: function () {
-          promiseSetAnnotation(aURI, providerList).then(function() {
-            if (aCallback)
-              schedule(function() { aCallback(true); } );
-          }).then(null, Cu.reportError);
-        }
-      });
-    }).then(null, Cu.reportError);
-  },
-
-  unmarkURI: function(origin, aURI, aCallback) {
-    // this should not be called if this.provider or the port is null
-    // set our annotation
-    promiseGetAnnotation(aURI).then(function(val) {
-      let providerList = val ? JSON.parse(val) : [];
-      let marked = providerList.indexOf(origin) >= 0;
-      if (marked) {
-        // remove the annotation
-        providerList.splice(providerList.indexOf(origin), 1);
-        promiseSetAnnotation(aURI, providerList).then(function() {
-          if (aCallback)
-            schedule(function() { aCallback(false); } );
-        }).then(null, Cu.reportError);
-      }
-    }).then(null, Cu.reportError);
   }
 };
 
 function schedule(callback) {
   Services.tm.mainThread.dispatch(callback, Ci.nsIThread.DISPATCH_NORMAL);
 }
 
-function CreateSocialStatusWidget(aId, aProvider) {
-  if (!aProvider.statusURL)
-    return;
-  let widget = CustomizableUI.getWidget(aId);
-  // The widget is only null if we've created then destroyed the widget.
-  // Once we've actually called createWidget the provider will be set to
-  // PROVIDER_API.
-  if (widget && widget.provider == CustomizableUI.PROVIDER_API)
-    return;
-
-  CustomizableUI.createWidget({
-    id: aId,
-    type: "custom",
-    removable: true,
-    defaultArea: CustomizableUI.AREA_NAVBAR,
-    onBuild: function(aDocument) {
-      let node = aDocument.createElement("toolbarbutton");
-      node.id = this.id;
-      node.setAttribute("class", "toolbarbutton-1 chromeclass-toolbar-additional social-status-button badged-button");
-      node.style.listStyleImage = "url(" + (aProvider.icon32URL || aProvider.iconURL) + ")";
-      node.setAttribute("origin", aProvider.origin);
-      node.setAttribute("label", aProvider.name);
-      node.setAttribute("tooltiptext", aProvider.name);
-      node.setAttribute("oncommand", "SocialStatus.showPopup(this);");
-      node.setAttribute("constrain-size", "true");
-
-      return node;
-    }
-  });
-}
-
-function CreateSocialMarkWidget(aId, aProvider) {
-  if (!aProvider.markURL)
-    return;
-  let widget = CustomizableUI.getWidget(aId);
-  // The widget is only null if we've created then destroyed the widget.
-  // Once we've actually called createWidget the provider will be set to
-  // PROVIDER_API.
-  if (widget && widget.provider == CustomizableUI.PROVIDER_API)
-    return;
-
-  CustomizableUI.createWidget({
-    id: aId,
-    type: "custom",
-    removable: true,
-    defaultArea: CustomizableUI.AREA_NAVBAR,
-    onBuild: function(aDocument) {
-      let node = aDocument.createElement("toolbarbutton");
-      node.id = this.id;
-      node.setAttribute("class", "toolbarbutton-1 chromeclass-toolbar-additional social-mark-button");
-      node.setAttribute("type", "socialmark");
-      node.setAttribute("constrain-size", "true");
-      node.style.listStyleImage = "url(" + (aProvider.unmarkedIcon || aProvider.icon32URL || aProvider.iconURL) + ")";
-      node.setAttribute("origin", aProvider.origin);
-
-      let window = aDocument.defaultView;
-      let menuLabel = window.gNavigatorBundle.getFormattedString("social.markpageMenu.label", [aProvider.name]);
-      node.setAttribute("label", menuLabel);
-      node.setAttribute("tooltiptext", menuLabel);
-      node.setAttribute("observes", "Social:PageShareOrMark");
-
-      return node;
-    }
-  });
-}
-
-
 function sizeSocialPanelToContent(panel, iframe, requestedSize) {
   let doc = iframe.contentDocument;
   if (!doc || !doc.body) {
     return;
   }
   // We need an element to use for sizing our panel.  See if the body defines
   // an id for that element, otherwise use the body itself.
   let body = doc.body;
--- a/toolkit/components/social/SocialService.jsm
+++ b/toolkit/components/social/SocialService.jsm
@@ -498,17 +498,17 @@ this.SocialService = {
         listener(topic, origin, providers);
       } catch (ex) {
         Components.utils.reportError("SocialService: provider listener threw an exception: " + ex);
       }
     }
   },
 
   _manifestFromData: function(type, data, installOrigin) {
-    let featureURLs = ['sidebarURL', 'shareURL', 'statusURL', 'markURL'];
+    let featureURLs = ['sidebarURL', 'shareURL'];
     let resolveURLs = featureURLs.concat(['postActivationURL']);
 
     if (type == 'directory' || type == 'internal') {
       // directory provided manifests must have origin in manifest, use that
       if (!data['origin']) {
         Cu.reportError("SocialService.manifestFromData directory service provided manifest without origin.");
         return null;
       }
@@ -701,20 +701,16 @@ function SocialProvider(input) {
                     input.origin + "] is blocklisted");
 
   this.name = input.name;
   this.iconURL = input.iconURL;
   this.icon32URL = input.icon32URL;
   this.icon64URL = input.icon64URL;
   this.sidebarURL = input.sidebarURL;
   this.shareURL = input.shareURL;
-  this.statusURL = input.statusURL;
-  this.markURL = input.markURL;
-  this.markedIcon = input.markedIcon;
-  this.unmarkedIcon = input.unmarkedIcon;
   this.postActivationURL = input.postActivationURL;
   this.origin = input.origin;
   let originUri = Services.io.newURI(input.origin, null, null);
   this.principal = Services.scriptSecurityManager.createCodebasePrincipal(originUri, {});
   this.ambientNotificationIcons = {};
   this.errorState = null;
   this.frecency = 0;