Bug 1226238 - (Part 4) Remove reading list toggle button from reader view. r=ahunt,Gijs draft
authorMargaret Leibovic <margaret.leibovic@gmail.com>
Mon, 22 Feb 2016 10:35:32 -0500
changeset 333086 0e3a8573e9e1fcf20d2e3b913de1b137745435cb
parent 333085 f12c095c9c7372a736dbdcda9db4932e09cafcd6
child 333185 d2c380f68ae932cd4f75d7a3c0674cc35a41ba8d
push id11259
push usermleibovic@mozilla.com
push dateMon, 22 Feb 2016 17:08:37 +0000
reviewersahunt, Gijs
bugs1226238
milestone47.0a1
Bug 1226238 - (Part 4) Remove reading list toggle button from reader view. r=ahunt,Gijs MozReview-Commit-ID: 3pwOV5BjwC9
browser/modules/ReaderParent.jsm
mobile/android/app/mobile.js
mobile/android/base/java/org/mozilla/gecko/ReadingListHelper.java
mobile/android/chrome/content/Reader.js
mobile/android/chrome/content/browser.js
mobile/android/themes/core/aboutReaderControls.css
mobile/android/themes/core/images/reader-toggle-off-icon-hdpi.png
mobile/android/themes/core/images/reader-toggle-off-icon-mdpi.png
mobile/android/themes/core/images/reader-toggle-off-icon-xhdpi.png
mobile/android/themes/core/images/reader-toggle-off-icon-xxhdpi.png
mobile/android/themes/core/images/reader-toggle-on-icon-hdpi.png
mobile/android/themes/core/images/reader-toggle-on-icon-mdpi.png
mobile/android/themes/core/images/reader-toggle-on-icon-xhdpi.png
mobile/android/themes/core/images/reader-toggle-on-icon-xxhdpi.png
mobile/android/themes/core/jar.mn
toolkit/components/reader/AboutReader.jsm
toolkit/components/reader/content/aboutReader.html
toolkit/locales/en-US/chrome/global/aboutReader.properties
toolkit/themes/shared/aboutReaderControls.css
toolkit/themes/shared/jar.inc.mn
toolkit/themes/shared/reader/RM-Add-24x24.svg
toolkit/themes/shared/reader/RM-Delete-24x24.svg
--- a/browser/modules/ReaderParent.jsm
+++ b/browser/modules/ReaderParent.jsm
@@ -18,22 +18,18 @@ XPCOMUtils.defineLazyModuleGetter(this, 
 XPCOMUtils.defineLazyModuleGetter(this, "UITour", "resource:///modules/UITour.jsm");
 
 const gStringBundle = Services.strings.createBundle("chrome://global/locale/aboutReader.properties");
 
 var ReaderParent = {
   _readerModeInfoPanelOpen: false,
 
   MESSAGES: [
-    "Reader:AddToList",
     "Reader:ArticleGet",
     "Reader:FaviconRequest",
-    "Reader:ListStatusRequest",
-    "Reader:RemoveFromList",
-    "Reader:SystemUIVisibility",
     "Reader:UpdateReaderButton",
     "Reader:SetIntPref",
     "Reader:SetCharPref",
   ],
 
   init: function() {
     let mm = Cc["@mozilla.org/globalmessagemanager;1"].getService(Ci.nsIMessageListenerManager);
     for (let msg of this.MESSAGES) {
@@ -67,20 +63,16 @@ var ReaderParent = {
           },
           function onRejection(reason) {
             Cu.reportError("Error requesting favicon URL for about:reader content: " + reason);
           }).catch(Cu.reportError);
         }
         break;
       }
 
-      case "Reader:SystemUIVisibility":
-        // XXX: To implement.
-        break;
-
       case "Reader:UpdateReaderButton": {
         let browser = message.target;
         if (message.data && message.data.isArticle !== undefined) {
           browser.isArticle = message.data.isArticle;
         }
         this.updateReaderButton(browser);
         break;
       }
--- a/mobile/android/app/mobile.js
+++ b/mobile/android/app/mobile.js
@@ -923,19 +923,16 @@ pref("media.gmp-provider.enabled", true)
 pref("reader.color_scheme", "auto");
 
 // Color scheme values available in reader mode UI.
 pref("reader.color_scheme.values", "[\"dark\",\"auto\",\"light\"]");
 
 // Whether to use a vertical or horizontal toolbar.
 pref("reader.toolbar.vertical", false);
 
-// Whether or not to display buttons related to reading list in reader view.
-pref("browser.readinglist.enabled", true);
-
 // Telemetry settings.
 // Whether to use the unified telemetry behavior, requires a restart.
 pref("toolkit.telemetry.unified", false);
 
 // Unified AccessibleCarets (touch-caret and selection-carets).
 #ifdef NIGHTLY_BUILD
 pref("layout.accessiblecaret.enabled", true);
 #else
--- a/mobile/android/base/java/org/mozilla/gecko/ReadingListHelper.java
+++ b/mobile/android/base/java/org/mozilla/gecko/ReadingListHelper.java
@@ -48,17 +48,17 @@ public final class ReadingListHelper imp
     volatile boolean fetchInBackground = true;
 
     public ReadingListHelper(Context context, GeckoProfile profile, OnReadingListEventListener listener) {
         this.context = context;
         this.db = profile.getDB();
         this.readingListAccessor = db.getReadingListAccessor();
 
         EventDispatcher.getInstance().registerGeckoThreadListener((NativeEventListener) this,
-            "Reader:AddToList", "Reader:UpdateList", "Reader:FaviconRequest", "Reader:ListStatusRequest", "Reader:RemoveFromList");
+            "Reader:AddToList", "Reader:UpdateList", "Reader:FaviconRequest");
 
 
         contentObserver = new ContentObserver(null) {
             @Override
             public void onChange(boolean selfChange) {
                 if (fetchInBackground) {
                     fetchContent();
                 }
@@ -67,45 +67,38 @@ public final class ReadingListHelper imp
 
         this.readingListAccessor.registerContentObserver(context, contentObserver);
 
         onReadingListEventListener = listener;
     }
 
     public void uninit() {
         EventDispatcher.getInstance().unregisterGeckoThreadListener((NativeEventListener) this,
-            "Reader:AddToList", "Reader:UpdateList", "Reader:FaviconRequest", "Reader:ListStatusRequest", "Reader:RemoveFromList");
+            "Reader:AddToList", "Reader:UpdateList", "Reader:FaviconRequest");
 
         context.getContentResolver().unregisterContentObserver(contentObserver);
     }
 
     @Override
     public void handleMessage(final String event, final NativeJSObject message,
                               final EventCallback callback) {
         switch(event) {
+            // Added from web context menu.
             case "Reader:AddToList": {
                 handleAddToList(callback, message);
                 break;
             }
             case "Reader:UpdateList": {
                 handleUpdateList(message);
                 break;
             }
             case "Reader:FaviconRequest": {
                 handleReaderModeFaviconRequest(callback, message.getString("url"));
                 break;
             }
-            case "Reader:RemoveFromList": {
-                handleRemoveFromList(message.getString("url"));
-                break;
-            }
-            case "Reader:ListStatusRequest": {
-                handleReadingListStatusRequest(callback, message.getString("url"));
-                break;
-            }
         }
     }
 
     /**
      * A page can be added to the ReadingList by long-tap of the page-action
      * icon, or by tapping the readinglist-add icon in the ReaderMode banner.
      *
      * This method will only add new items, not update existing items.
@@ -226,54 +219,16 @@ public final class ReadingListHelper imp
                     }
                 }
                 callback.sendSuccess(args.toString());
             }
         }).execute();
     }
 
     /**
-     * A page can be removed from the ReadingList by panel context menu,
-     * or by tapping the readinglist-remove icon in the ReaderMode banner.
-     */
-    private void handleRemoveFromList(final String url) {
-        ThreadUtils.postToBackgroundThread(new Runnable() {
-            @Override
-            public void run() {
-                readingListAccessor.removeReadingListItemWithURL(context.getContentResolver(), url);
-                handleEvent(ReadingListEvent.REMOVED, url);
-            }
-        });
-    }
-
-    /**
-     * Gecko (ReaderMode) requests the page ReadingList status, to display
-     * the proper ReaderMode banner icon (readinglist-add / readinglist-remove).
-     */
-    private void handleReadingListStatusRequest(final EventCallback callback, final String url) {
-        ThreadUtils.postToBackgroundThread(new Runnable() {
-            @Override
-            public void run() {
-                final int inReadingList = readingListAccessor.isReadingListItem(context.getContentResolver(), url) ? 1 : 0;
-
-                final JSONObject json = new JSONObject();
-                try {
-                    json.put("url", url);
-                    json.put("inReadingList", inReadingList);
-                } catch (JSONException e) {
-                    Log.e(LOGTAG, "JSON error - failed to return inReadingList status", e);
-                }
-
-                // Return the json object to fulfill the promise.
-                callback.sendSuccess(json.toString());
-            }
-        });
-    }
-
-    /**
      * Handle various reading list events (and display appropriate toasts).
      */
     private void handleEvent(final ReadingListEvent event, final String url) {
         ThreadUtils.postToUiThread(new Runnable() {
             @Override
             public void run() {
                 switch(event) {
                     case ADDED:
--- a/mobile/android/chrome/content/Reader.js
+++ b/mobile/android/chrome/content/Reader.js
@@ -71,41 +71,25 @@ var Reader = {
   observe: function Reader_observe(aMessage, aTopic, aData) {
     switch (aTopic) {
       case "Reader:FetchContent": {
         let data = JSON.parse(aData);
         this._fetchContent(data.url, data.id);
         break;
       }
 
-      case "Reader:Added": {
-        let mm = window.getGroupMessageManager("browsers");
-        mm.broadcastAsyncMessage("Reader:Added", { url: aData });
-        break;
-      }
-
       case "Reader:Removed": {
         ReaderMode.removeArticleFromCache(aData).catch(e => Cu.reportError("Error removing article from cache: " + e));
-
-        let mm = window.getGroupMessageManager("browsers");
-        mm.broadcastAsyncMessage("Reader:Removed", { url: aData });
         break;
       }
     }
   },
 
   receiveMessage: function(message) {
     switch (message.name) {
-      case "Reader:AddToList": {
-        // If the article is coming from reader mode, we must have fetched it already.
-        let article = message.data.article;
-        article.status = this.STATUS_FETCHED_ARTICLE;
-        this._addArticleToReadingList(article);
-        break;
-      }
       case "Reader:ArticleGet":
         this._getArticle(message.data.url).then((article) => {
           // Make sure the target browser is still alive before trying to send data back.
           if (message.target.messageManager) {
             message.target.messageManager.sendAsyncMessage("Reader:ArticleData", { article: article });
           }
         }, e => {
           if (e && e.newURL) {
@@ -142,32 +126,16 @@ var Reader = {
           type: "Reader:FaviconRequest",
           url: message.data.url
         }).then(data => {
           message.target.messageManager.sendAsyncMessage("Reader:FaviconReturn", JSON.parse(data));
         });
         break;
       }
 
-      case "Reader:ListStatusRequest":
-        Messaging.sendRequestForResult({
-          type: "Reader:ListStatusRequest",
-          url: message.data.url
-        }).then((data) => {
-          message.target.messageManager.sendAsyncMessage("Reader:ListStatusData", JSON.parse(data));
-        });
-        break;
-
-      case "Reader:RemoveFromList":
-        Messaging.sendRequest({
-          type: "Reader:RemoveFromList",
-          url: message.data.url
-        });
-        break;
-
       case "Reader:SystemUIVisibility":
         Messaging.sendRequest({
           type: "SystemUI:Visibility",
           visible: message.data.visible
         });
         break;
 
       case "Reader:ToolbarHidden":
@@ -291,29 +259,16 @@ var Reader = {
   _downloadAndCacheArticle: Task.async(function* (url) {
     let article = yield ReaderMode.downloadAndParseDocument(url);
     if (article != null) {
       yield ReaderMode.storeArticleInCache(article);
     }
     return article;
   }),
 
-  _addArticleToReadingList: function(article) {
-    Messaging.sendRequestForResult({
-      type: "Reader:AddToList",
-      url: truncate(article.url, MAX_URI_LENGTH),
-      title: truncate(article.title, MAX_TITLE_LENGTH),
-      length: article.length,
-      excerpt: article.excerpt,
-      status: article.status,
-    }).then((url) => {
-      ReaderMode.storeArticleInCache(article).catch(e => Cu.reportError("Error storing article in cache: " + e));
-    }).catch(Cu.reportError);
-  },
-
   /**
    * Gets an article for a given URL. This method will download and parse a document
    * if it does not find the article in the cache.
    *
    * @param url The article URL.
    * @return {Promise}
    * @resolves JS object representing the article, or null if no article is found.
    */
--- a/mobile/android/chrome/content/browser.js
+++ b/mobile/android/chrome/content/browser.js
@@ -150,17 +150,17 @@ var lazilyLoadedObserverScripts = [
   ["MemoryObserver", ["memory-pressure", "Memory:Dump"], "chrome://browser/content/MemoryObserver.js"],
   ["ConsoleAPI", ["console-api-log-event"], "chrome://browser/content/ConsoleAPI.js"],
   ["FindHelper", ["FindInPage:Opened", "FindInPage:Closed", "Tab:Selected"], "chrome://browser/content/FindHelper.js"],
   ["PermissionsHelper", ["Permissions:Check", "Permissions:Get", "Permissions:Clear"], "chrome://browser/content/PermissionsHelper.js"],
   ["FeedHandler", ["Feeds:Subscribe"], "chrome://browser/content/FeedHandler.js"],
   ["Feedback", ["Feedback:Show"], "chrome://browser/content/Feedback.js"],
   ["SelectionHandler", ["TextSelection:Get"], "chrome://browser/content/SelectionHandler.js"],
   ["EmbedRT", ["GeckoView:ImportScript"], "chrome://browser/content/EmbedRT.js"],
-  ["Reader", ["Reader:FetchContent", "Reader:Added", "Reader:Removed"], "chrome://browser/content/Reader.js"],
+  ["Reader", ["Reader:FetchContent", "Reader:Removed"], "chrome://browser/content/Reader.js"],
   ["PrintHelper", ["Print:PDF"], "chrome://browser/content/PrintHelper.js"],
 ];
 if (AppConstants.NIGHTLY_BUILD) {
   lazilyLoadedObserverScripts.push(
     ["ActionBarHandler", ["TextSelection:Get", "TextSelection:Action", "TextSelection:End"],
       "chrome://browser/content/ActionBarHandler.js"]
   );
 }
@@ -186,23 +186,20 @@ lazilyLoadedObserverScripts.forEach(func
   notifications.forEach((notification) => {
     Services.obs.addObserver(observer, notification, false);
   });
 });
 
 // Lazily-loaded browser scripts that use message listeners.
 [
   ["Reader", [
-    ["Reader:AddToList", false],
     ["Reader:ArticleGet", false],
     ["Reader:DropdownClosed", true], // 'true' allows us to survive mid-air cycle-collection.
     ["Reader:DropdownOpened", false],
     ["Reader:FaviconRequest", false],
-    ["Reader:ListStatusRequest", false],
-    ["Reader:RemoveFromList", false],
     ["Reader:ToolbarHidden", false],
     ["Reader:SystemUIVisibility", false],
     ["Reader:UpdateReaderButton", false],
     ["Reader:SetIntPref", false],
     ["Reader:SetCharPref", false],
   ], "chrome://browser/content/Reader.js"],
 ].forEach(aScript => {
   let [name, messages, script] = aScript;
--- a/mobile/android/themes/core/aboutReaderControls.css
+++ b/mobile/android/themes/core/aboutReaderControls.css
@@ -60,17 +60,16 @@
   position: fixed;
   width: 100%;
   left: 0;
   margin: 0;
   padding: 0;
   list-style: none;
   background-color: #EBEBF0;
   border-top: 1px solid #D7D9DB;
-  display: none;
 }
 
 .toolbar[visible] {
   bottom: 0;
 }
 
 .toolbar > * {
   float: right;
@@ -239,24 +238,16 @@
 
 /*======= Toolbar icons =======*/
 
 /* desktop-only controls */
 .close-button {
   display: none;
 }
 
-.toggle-button.on {
-  background-image: url('chrome://browser/skin/images/reader-toggle-on-icon-mdpi.png');
-}
-
-.toggle-button {
-  background-image: url('chrome://browser/skin/images/reader-toggle-off-icon-mdpi.png');
-}
-
 .style-button {
   background-image: url('chrome://browser/skin/images/reader-style-icon-mdpi.png');
 }
 
 .open .style-button {
   background-image: url('chrome://browser/skin/images/reader-style-icon-active-mdpi.png');
 }
 
@@ -264,24 +255,16 @@
   background-image: url('chrome://browser/skin/images/reader-minus-mdpi.png');
 }
 
 .plus-button {
   background-image: url('chrome://browser/skin/images/reader-plus-mdpi.png');
 }
 
 @media screen and (min-resolution: 1.25dppx) {
-  .toggle-button.on {
-    background-image: url('chrome://browser/skin/images/reader-toggle-on-icon-hdpi.png');
-  }
-
-  .toggle-button {
-    background-image: url('chrome://browser/skin/images/reader-toggle-off-icon-hdpi.png');
-  }
-
   .style-button {
     background-image: url('chrome://browser/skin/images/reader-style-icon-hdpi.png');
   }
 
   .open .style-button {
     background-image: url('chrome://browser/skin/images/reader-style-icon-active-hdpi.png');
   }
 
@@ -290,24 +273,16 @@
   }
 
   .plus-button {
     background-image: url('chrome://browser/skin/images/reader-plus-hdpi.png');
   }
 }
 
 @media screen and (min-resolution: 2dppx) {
-  .toggle-button.on {
-    background-image: url('chrome://browser/skin/images/reader-toggle-on-icon-xhdpi.png');
-  }
-
-  .toggle-button {
-    background-image: url('chrome://browser/skin/images/reader-toggle-off-icon-xhdpi.png');
-  }
-
   .style-button {
     background-image: url('chrome://browser/skin/images/reader-style-icon-xhdpi.png');
   }
 
   .open .style-button {
     background-image: url('chrome://browser/skin/images/reader-style-icon-active-xhdpi.png');
   }
 
@@ -316,24 +291,16 @@
   }
 
   .plus-button {
     background-image: url('chrome://browser/skin/images/reader-plus-xhdpi.png');
   }
 }
 
 @media screen and (min-resolution: 3dppx) {
-  .toggle-button.on {
-    background-image: url('chrome://browser/skin/images/reader-toggle-on-icon-xxhdpi.png');
-  }
-
-  .toggle-button {
-    background-image: url('chrome://browser/skin/images/reader-toggle-off-icon-xxhdpi.png');
-  }
-
   .style-button {
     background-image: url('chrome://browser/skin/images/reader-style-icon-xxhdpi.png');
   }
 
   .open .style-button {
     background-image: url('chrome://browser/skin/images/reader-style-icon-active-xxhdpi.png');
   }
 
deleted file mode 100644
index 90402468bfe34e16eb245d6d0f55d3f921bc32cc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index fd8f4b206aa9e4e12aab21c95584b708d38f7b41..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 8b57ad9fb0a4247c7b4553c9c84b8396963cc772..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index f3228599d381fc946bfabf6ea827bb8b7be79049..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 9495bc0b3de5b6c5f1d57e682b894eb8b9cad20d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index b1991ac54b7ecab9dfeff755c69cc1595e1802e8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 109e3571aa2fcb97235b74a3931c54ec8a4f0052..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 91446889788c7b6d2a7362dbfa850a8bd0791294..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
--- a/mobile/android/themes/core/jar.mn
+++ b/mobile/android/themes/core/jar.mn
@@ -93,24 +93,16 @@ chrome.jar:
   skin/images/reader-minus-mdpi.png              (images/reader-minus-mdpi.png)
   skin/images/reader-minus-hdpi.png              (images/reader-minus-hdpi.png)
   skin/images/reader-minus-xhdpi.png             (images/reader-minus-xhdpi.png)
   skin/images/reader-minus-xxhdpi.png            (images/reader-minus-xxhdpi.png)
   skin/images/reader-plus-mdpi.png               (images/reader-plus-mdpi.png)
   skin/images/reader-plus-hdpi.png               (images/reader-plus-hdpi.png)
   skin/images/reader-plus-xhdpi.png              (images/reader-plus-xhdpi.png)
   skin/images/reader-plus-xxhdpi.png             (images/reader-plus-xxhdpi.png)
-  skin/images/reader-toggle-on-icon-mdpi.png     (images/reader-toggle-on-icon-mdpi.png)
-  skin/images/reader-toggle-on-icon-hdpi.png     (images/reader-toggle-on-icon-hdpi.png)
-  skin/images/reader-toggle-on-icon-xhdpi.png    (images/reader-toggle-on-icon-xhdpi.png)
-  skin/images/reader-toggle-on-icon-xxhdpi.png   (images/reader-toggle-on-icon-xxhdpi.png)
-  skin/images/reader-toggle-off-icon-mdpi.png    (images/reader-toggle-off-icon-mdpi.png)
-  skin/images/reader-toggle-off-icon-hdpi.png    (images/reader-toggle-off-icon-hdpi.png)
-  skin/images/reader-toggle-off-icon-xhdpi.png   (images/reader-toggle-off-icon-xhdpi.png)
-  skin/images/reader-toggle-off-icon-xxhdpi.png  (images/reader-toggle-off-icon-xxhdpi.png)
   skin/images/reader-style-icon-active-mdpi.png  (images/reader-style-icon-active-mdpi.png)
   skin/images/reader-style-icon-active-hdpi.png  (images/reader-style-icon-active-hdpi.png)
   skin/images/reader-style-icon-active-xhdpi.png (images/reader-style-icon-active-xhdpi.png)
   skin/images/reader-style-icon-active-xxhdpi.png (images/reader-style-icon-active-xxhdpi.png)
   skin/images/reader-style-icon-mdpi.png         (images/reader-style-icon-mdpi.png)
   skin/images/reader-style-icon-hdpi.png         (images/reader-style-icon-hdpi.png)
   skin/images/reader-style-icon-xhdpi.png        (images/reader-style-icon-xhdpi.png)
   skin/images/reader-style-icon-xxhdpi.png       (images/reader-style-icon-xxhdpi.png)
--- a/toolkit/components/reader/AboutReader.jsm
+++ b/toolkit/components/reader/AboutReader.jsm
@@ -27,18 +27,16 @@ var AboutReader = function(mm, win, arti
     Cu.reportError(errorMsg);
     win.location.href = "about:blank";
     return;
   }
 
   let doc = win.document;
 
   this._mm = mm;
-  this._mm.addMessageListener("Reader:Added", this);
-  this._mm.addMessageListener("Reader:Removed", this);
   this._mm.addMessageListener("Reader:CloseDropdown", this);
   this._mm.addMessageListener("Reader:AddButton", this);
   this._mm.addMessageListener("Reader:RemoveButton", this);
 
   this._docRef = Cu.getWeakReference(doc);
   this._winRef = Cu.getWeakReference(win);
 
   this._article = null;
@@ -63,24 +61,16 @@ var AboutReader = function(mm, win, arti
   win.addEventListener("scroll", this, false);
   win.addEventListener("resize", this, false);
 
   doc.addEventListener("visibilitychange", this, false);
 
   this._setupStyleDropdown();
   this._setupButton("close-button", this._onReaderClose.bind(this), "aboutReader.toolbar.close");
 
-  try {
-    if (Services.prefs.getBoolPref("browser.readinglist.enabled")) {
-      this._setupButton("toggle-button", this._onReaderToggle.bind(this, "button"), "aboutReader.toolbar.addToReadingList");
-    }
-  } catch (e) {
-    // Pref doesn't exist.
-  }
-
   const gIsFirefoxDesktop = Services.appinfo.ID == "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}";
   if (gIsFirefoxDesktop) {
     // we're ready for any external setup, send a signal for that.
     this._mm.sendAsyncMessage("Reader:OnSetup");
   }
 
   let colorSchemeValues = JSON.parse(Services.prefs.getCharPref("reader.color_scheme.values"));
   let colorSchemeOptions = colorSchemeValues.map((value) => {
@@ -107,20 +97,16 @@ var AboutReader = function(mm, win, arti
   ];
 
   let fontType = Services.prefs.getCharPref("reader.font_type");
   this._setupSegmentedButton("font-type-buttons", fontTypeOptions, fontType, this._setFontType.bind(this));
   this._setFontType(fontType);
 
   this._setupFontSizeButtons();
 
-  // Track status of reader toolbar add/remove toggle button
-  this._isReadingListItem = -1;
-  this._updateToggleButton();
-
   this._loadArticle();
 }
 
 AboutReader.prototype = {
   _BLOCK_IMAGES_SELECTOR: ".content p > img:only-child, " +
                           ".content p > a:only-child > img:only-child, " +
                           ".content .wp-caption img, " +
                           ".content figure img",
@@ -174,43 +160,23 @@ AboutReader.prototype = {
       getService(Ci.nsIUUIDGenerator).generateUUID().toString();
     Object.defineProperty(this, "viewId", { value: _viewId });
 
     return _viewId;
   },
 
   receiveMessage: function (message) {
     switch (message.name) {
-      case "Reader:Added": {
-        // Page can be added by long-press pageAction, or by tap on banner icon.
-        if (message.data.url == this._article.url) {
-          if (this._isReadingListItem != 1) {
-            this._isReadingListItem = 1;
-            this._updateToggleButton();
-          }
-        }
-        break;
-      }
-
       // Triggered by Android user pressing BACK while the banner font-dropdown is open.
       case "Reader:CloseDropdown": {
         // Just close it.
         this._closeDropdown();
         break;
       }
 
-      case "Reader:Removed": {
-        if (message.data.url == this._article.url) {
-          if (this._isReadingListItem != 0) {
-            this._isReadingListItem = 0;
-            this._updateToggleButton();
-          }
-        }
-        break;
-      }
       case "Reader:AddButton": {
         if (message.data.id && message.data.image) {
           let btn = this._doc.createElement("button");
           btn.setAttribute("class", "button");
           btn.setAttribute("style", "background-image: url('" + message.data.image + "')");
           btn.setAttribute("id", message.data.id);
           if (message.data.title)
             btn.setAttribute("title", message.data.title);
@@ -262,83 +228,28 @@ AboutReader.prototype = {
       case "visibilitychange":
         this._handleVisibilityChange();
         break;
 
       case "unload":
         // Close the Banners Font-dropdown, cleanup Android BackPressListener.
         this._closeDropdown();
 
-        this._mm.removeMessageListener("Reader:Added", this);
-        this._mm.removeMessageListener("Reader:Removed", this);
         this._mm.removeMessageListener("Reader:CloseDropdown", this);
         this._mm.removeMessageListener("Reader:AddButton", this);
         this._mm.removeMessageListener("Reader:RemoveButton", this);
         this._windowUnloaded = true;
         break;
     }
   },
 
-  _updateToggleButton: function() {
-    let button = this._doc.getElementById("toggle-button");
-
-    if (this._isReadingListItem == 1) {
-      button.classList.add("on");
-      button.setAttribute("title", gStrings.GetStringFromName("aboutReader.toolbar.removeFromReadingList"));
-    } else {
-      button.classList.remove("on");
-      button.setAttribute("title", gStrings.GetStringFromName("aboutReader.toolbar.addToReadingList"));
-    }
-  },
-
-  _requestReadingListStatus: function() {
-    let handleListStatusData = (message) => {
-      this._mm.removeMessageListener("Reader:ListStatusData", handleListStatusData);
-
-      let args = message.data;
-      if (args.url == this._article.url) {
-        if (this._isReadingListItem != args.inReadingList) {
-          let isInitialStateChange = (this._isReadingListItem == -1);
-          this._isReadingListItem = args.inReadingList;
-          this._updateToggleButton();
-
-          // Display the toolbar when all its initial component states are known
-          if (isInitialStateChange) {
-            // Toolbar display is updated here to avoid it appearing in the middle of the screen on page load. See bug 1145567.
-            this._win.setTimeout(() => {
-              this._toolbarElement.style.display = "block";
-              // Delay showing the toolbar to have a nice slide from bottom animation.
-              this._win.setTimeout(() => this._setToolbarVisibility(true), 200);
-            }, 500);
-          }
-        }
-      }
-    };
-
-    this._mm.addMessageListener("Reader:ListStatusData", handleListStatusData);
-    this._mm.sendAsyncMessage("Reader:ListStatusRequest", { url: this._article.url });
-  },
-
   _onReaderClose: function() {
     this._win.location.href = this._getOriginalUrl();
   },
 
-  _onReaderToggle: function(aMethod) {
-    if (!this._article)
-      return;
-
-    if (this._isReadingListItem == 0) {
-      this._mm.sendAsyncMessage("Reader:AddToList", { article: this._article });
-      UITelemetry.addEvent("save.1", aMethod, null, "reading_list");
-    } else {
-      this._mm.sendAsyncMessage("Reader:RemoveFromList", { url: this._article.url });
-      UITelemetry.addEvent("unsave.1", aMethod, null, "reading_list");
-    }
-  },
-
   _setFontSize: function(newFontSize) {
     let containerClasses = this._doc.getElementById("container").classList;
 
     if (this._fontSize > 0)
       containerClasses.remove("font-size" + this._fontSize);
 
     this._fontSize = newFontSize;
     containerClasses.add("font-size" + this._fontSize);
@@ -707,17 +618,16 @@ AboutReader.prototype = {
       Ci.nsIParserUtils.SanitizerDropForms | Ci.nsIParserUtils.SanitizerAllowStyle,
       false, articleUri, this._contentElement);
     this._contentElement.innerHTML = "";
     this._contentElement.appendChild(contentFragment);
     this._maybeSetTextDirection(article);
 
     this._contentElement.style.display = "block";
     this._updateImageMargins();
-    this._requestReadingListStatus();
 
     this._requestFavicon();
     this._doc.body.classList.add("loaded");
 
     Services.obs.notifyObservers(null, "AboutReader:Ready", "");
   },
 
   _hideContent: function() {
--- a/toolkit/components/reader/content/aboutReader.html
+++ b/toolkit/components/reader/content/aboutReader.html
@@ -32,17 +32,17 @@
     <div>
       <style scoped>
         @import url("chrome://global/skin/aboutReaderControls.css");
       </style>
       <div id="reader-message"></div>
     </div>
   </div>
 
-  <ul id="reader-toolbar" class="toolbar">
+  <ul id="reader-toolbar" class="toolbar" visible="true">
     <style scoped>
       @import url("chrome://global/skin/aboutReaderControls.css");
     </style>
     <li><button id="close-button" class="button close-button"/></li>
     <ul id="style-dropdown" class="dropdown">
       <li><button class="dropdown-toggle button style-button"/></li>
       <li id="reader-popup" class="dropdown-popup">
         <div id="font-type-buttons"></div>
@@ -52,14 +52,13 @@
           <button id="font-size-sample"/>
           <button id="font-size-plus" class="plus-button"/>
         </div>
         <hr></hr>
         <div id="color-scheme-buttons"></div>
         <div class="dropdown-arrow"/>
       </li>
     </ul>
-    <li><button id="toggle-button" class="button toggle-button" hidden="true"/></li>
   </ul>
 
 </body>
 
 </html>
--- a/toolkit/locales/en-US/chrome/global/aboutReader.properties
+++ b/toolkit/locales/en-US/chrome/global/aboutReader.properties
@@ -18,17 +18,15 @@ aboutReader.colorScheme.auto=Auto
 aboutReader.fontType.serif=Serif
 aboutReader.fontType.sans-serif=Sans-serif
 
 # LOCALIZATION NOTE (aboutReader.fontTypeSample): String used to sample font types.
 aboutReader.fontTypeSample=Aa
 
 aboutReader.toolbar.close=Close Reader View
 aboutReader.toolbar.typeControls=Type controls
-aboutReader.toolbar.addToReadingList=Add to Reading List
-aboutReader.toolbar.removeFromReadingList=Remove from Reading List
 
 # These are used for the Reader View toolbar button and the menuitem within the
 # View menu.
 readerView.enter=Enter Reader View
 readerView.enter.accesskey=R
 readerView.close=Close Reader View
 readerView.close.accesskey=R
--- a/toolkit/themes/shared/aboutReaderControls.css
+++ b/toolkit/themes/shared/aboutReaderControls.css
@@ -321,24 +321,16 @@
   border-bottom: 1px solid #AE2325;
   border-right: 1px solid #AE2325;
 }
 
 .style-button {
   background-image: url("chrome://global/skin/reader/RM-Type-Controls-24x24.svg");
 }
 
-.toggle-button.on {
-  background-image: url("chrome://global/skin/reader/RM-Delete-24x24.svg");
-}
-
-.toggle-button {
-  background-image: url("chrome://global/skin/reader/RM-Add-24x24.svg");
-}
-
 .minus-button {
   background-image: url("chrome://global/skin/reader/RM-Minus-24x24.svg");
 }
 
 .plus-button {
   background-image: url("chrome://global/skin/reader/RM-Plus-24x24.svg");
 }
 
--- a/toolkit/themes/shared/jar.inc.mn
+++ b/toolkit/themes/shared/jar.inc.mn
@@ -31,16 +31,14 @@ toolkit.jar:
   skin/classic/global/menu/shared-menu-check-active.svg    (../../shared/menu-check-active.svg)
   skin/classic/global/menu/shared-menu-check-black.svg     (../../shared/menu-check-black.svg)
   skin/classic/global/menu/shared-menu-check-hover.svg     (../../shared/menu-check-hover.svg)
   skin/classic/global/in-content/check.svg                 (../../shared/in-content/check.svg)
   skin/classic/global/in-content/check-partial.svg         (../../shared/in-content/check-partial.svg)
   skin/classic/global/in-content/dropdown.svg              (../../shared/in-content/dropdown.svg)
   skin/classic/global/in-content/help-glyph.svg            (../../shared/in-content/help-glyph.svg)
   skin/classic/global/in-content/radio.svg                 (../../shared/in-content/radio.svg)
-  skin/classic/global/reader/RM-Add-24x24.svg              (../../shared/reader/RM-Add-24x24.svg)
   skin/classic/global/reader/RM-Close-24x24.svg            (../../shared/reader/RM-Close-24x24.svg)
-  skin/classic/global/reader/RM-Delete-24x24.svg           (../../shared/reader/RM-Delete-24x24.svg)
   skin/classic/global/reader/RM-Minus-24x24.svg            (../../shared/reader/RM-Minus-24x24.svg)
   skin/classic/global/reader/RM-Plus-24x24.svg             (../../shared/reader/RM-Plus-24x24.svg)
   skin/classic/global/reader/RM-Type-Controls-24x24.svg    (../../shared/reader/RM-Type-Controls-24x24.svg)
   skin/classic/global/reader/RM-Type-Controls-Arrow.svg    (../../shared/reader/RM-Type-Controls-Arrow.svg)
 
deleted file mode 100644
--- a/toolkit/themes/shared/reader/RM-Add-24x24.svg
+++ /dev/null
@@ -1,7 +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/. -->
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
-  <path fill-rule="evenodd" fill="#808080" d="M12,2C6.477,2,2,6.477,2,12c0,5.523,4.477,10,10,10s10-4.477,10-10 C22,6.477,17.523,2,12,2z M17.714,12.714h-5v5h-1.429v-5h-5v-1.429h5v-5h1.429v5h5V12.714z"/>
-</svg>
deleted file mode 100644
--- a/toolkit/themes/shared/reader/RM-Delete-24x24.svg
+++ /dev/null
@@ -1,7 +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/. -->
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
-  <path fill-rule="evenodd" fill="#808080" d="M12,2C6.477,2,2,6.477,2,12c0,5.523,4.477,10,10,10s10-4.477,10-10 C22,6.477,17.523,2,12,2z M11.286,6.286 M6.286,12.714v-1.429h11.429v1.429H6.286z"/>
-</svg>