# HG changeset patch # User Chelsea Carr # Date 1351524876 14400 # Node ID 3c5820ee0745c766a6b9b396cfaf104a748efd5e # Parent a87c74f323f7b027c93476d1b174d3ecc6e39481 Bug test: Reader Mode is working. diff --git a/#.mozconfig# b/#.mozconfig# new file mode 100644 --- /dev/null +++ b/#.mozconfig# @@ -0,0 +1,23 @@ +# Import the stock config for building the browser (Firefox) +. $topsrcdir/browser/config/mozconfig + +# Define where build files should go. This places them in the directory +# "obj-ff-dbg" under the current source directory +mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-ff-dbg + +# -s makes builds quieter by default +# -j4 allows 4 tasks to run in parallel. Set the number to be the amount of +# cores in your machine. 4 is a good number. +mk_add_options MOZ_MAKE_FLAGS="-s -j4" + +# Enable debug builds +ac_add_options --enable-debug + +# Turn off compiler optimization. This will make applications run slower, +# will allow you to debug the applications under a debugger, like GDB. +ac_add_options --disable-optimize + +CC=clang +CXX=clang++ + +ac_add_options --disable-crashreporter \ No newline at end of file diff --git a/toolkit/reader/JSDOMParser.js b/browser/base/content/JSDOMParser.js copy from toolkit/reader/JSDOMParser.js copy to browser/base/content/JSDOMParser.js diff --git a/toolkit/reader/Readability.js b/browser/base/content/Readability.js copy from toolkit/reader/Readability.js copy to browser/base/content/Readability.js diff --git a/browser/base/content/aboutReader.html b/browser/base/content/aboutReader.html new file mode 100644 --- /dev/null +++ b/browser/base/content/aboutReader.html @@ -0,0 +1,40 @@ + + + + + + + + + + + + +
+
+

+
+
+ +
+
+ + + + + + diff --git a/browser/base/content/aboutReader.js b/browser/base/content/aboutReader.js new file mode 100644 --- /dev/null +++ b/browser/base/content/aboutReader.js @@ -0,0 +1,655 @@ +/* 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/. */ + +let Ci = Components.interfaces, Cc = Components.classes, Cu = Components.utils; + +Cu.import("resource://gre/modules/Services.jsm") +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); + +XPCOMUtils.defineLazyGetter(window, "gChromeWin", function () + window.QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIWebNavigation) + .QueryInterface(Ci.nsIDocShellTreeItem) + .rootTreeItem + .QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIDOMWindow) + .QueryInterface(Ci.nsIDOMChromeWindow)); + +function dump(s) { + Services.console.logStringMessage("AboutReader: " + s); +} + +let gStrings = Services.strings.createBundle("chrome://browser/locale/aboutReader.properties"); + +let AboutReader = function(doc, win) { + // dump("Init()"); +// + this._docRef = Cu.getWeakReference(doc); + this._winRef = Cu.getWeakReference(win); + + Services.obs.addObserver(this, "Reader:FaviconReturn", false); + + this._article = null; + + dump("Feching toolbar, header and content notes from about:reader"); + this._headerElementRef = Cu.getWeakReference(doc.getElementById("reader-header")); + this._domainElementRef = Cu.getWeakReference(doc.getElementById("reader-domain")); + + this._titleElementRef = Cu.getWeakReference(doc.getElementById("reader-title")); + + this._creditsElementRef = Cu.getWeakReference(doc.getElementById("reader-credits")); + this._contentElementRef = Cu.getWeakReference(doc.getElementById("reader-content")); + this._toolbarElementRef = Cu.getWeakReference(doc.getElementById("reader-toolbar")); + + this._toolbarEnabled = false; + + this._scrollOffset = win.pageYOffset; + + let body = doc.body; + body.addEventListener("touchstart", this, false); + body.addEventListener("click", this, false); + + win.addEventListener("scroll", this, false); + win.addEventListener("popstate", this, false); + win.addEventListener("resize", this, false); + + this._setupAllDropdowns(); + this._setupButton("toggle-button", this._onReaderToggle.bind(this)); + this._setupButton("list-button", this._onList.bind(this)); + this._setupButton("share-button", this._onShare.bind(this)); + + //let colorSchemeOptions = [ + //{ name: gStrings.GetStringFromName("aboutReader.colorSchemeLight"), + //value: "light"}, + //{ name: gStrings.GetStringFromName("aboutReader.colorSchemeDark"), + //value: "dark"} + //]; + +// let colorScheme = Services.prefs.getCharPref("reader.color_scheme"); +// this._setupSegmentedButton("color-scheme-buttons", colorSchemeOptions, colorScheme, this._setColorScheme.bind(this)); +// this._setColorScheme(colorScheme); +// +// let fontTitle = gStrings.GetStringFromName("aboutReader.textTitle"); +// this._setupStepControl("font-size-control", fontTitle, this._onFontSizeChange.bind(this)); +// this._fontSize = 0; +// this._setFontSize(Services.prefs.getIntPref("reader.font_size")); +// +// let marginTitle = gStrings.GetStringFromName("aboutReader.marginTitle"); +// this._setupStepControl("margin-size-control", marginTitle, this._onMarginSizeChange.bind(this)); +// this._marginSize = 0; +// this._setMarginSize(Services.prefs.getIntPref("reader.margin_size")); + + dump("Decoding query arguments"); + let queryArgs = this._decodeQueryString(win.location.href); + + //this._isReadingListItem = (queryArgs.readingList == "1"); + //this._updateToggleButton(); + + let url = queryArgs.url; + let tabId = 1; + if (tabId) { + dump("Loading from tab with ID: " + tabId + ", URL: " + url); + this._loadFromTab(tabId, url); + } else { + dump("Fetching page with URL: " + url); + this._loadFromURL(url); + } +} + +AboutReader.prototype = { + _STEP_INCREMENT: 0, + _STEP_DECREMENT: 1, + + _BLOCK_IMAGES_SELECTOR: ".content p > img:only-child, " + + ".content p > a:only-child > img:only-child, " + + ".content .wp-caption img, " + + ".content figure img", + + get _doc() { + return this._docRef.get(); + }, + + get _win() { + return this._winRef.get(); + }, + + get _headerElement() { + return this._headerElementRef.get(); + }, + + get _domainElement() { + return this._domainElementRef.get(); + }, + + get _titleElement() { + return this._titleElementRef.get(); + }, + + get _creditsElement() { + return this._creditsElementRef.get(); + }, + + get _contentElement() { + return this._contentElementRef.get(); + }, + + get _toolbarElement() { + return this._toolbarElementRef.get(); + }, + + observe: function Reader_observe(aMessage, aTopic, aData) { + switch(aTopic) { + case "Reader:FaviconReturn": { + let info = JSON.parse(aData); + this._loadFavicon(info.url, info.faviconUrl); + Services.obs.removeObserver(this, "Reader:FaviconReturn", false); + break; + } + } + }, + + handleEvent: function Reader_handleEvent(aEvent) { + if (!aEvent.isTrusted) + return; + + switch (aEvent.type) { + case "touchstart": + this._scrolled = false; + break; + case "click": + if (!this._scrolled) + this._toggleToolbarVisibility(); + break; + case "scroll": + if (!this._scrolled) { + this._scrolled = true; + this._setToolbarVisibility(false); + } + break; + case "popstate": + if (!aEvent.state) + this._closeAllDropdowns(); + break; + case "resize": + this._updateImageMargins(); + break; + } + }, + + _updateToggleButton: function Reader_updateToggleButton() { + let classes = this._doc.getElementById("toggle-button").classList; + + if (this._isReadingListItem) { + classes.add("on"); + } else { + classes.remove("on"); + } + }, + + _onReaderToggle: function Reader_onToggle() { + if (!this._article) + return; + + this._isReadingListItem = !this._isReadingListItem; + this._updateToggleButton(); + + if (this._isReadingListItem) { + gChromeWin.Reader.storeArticleInCache(this._article, function(success) { + dump("Reader:Add (in reader) success=" + success); + + //gChromeWin.sendMessageToJava({ + //gecko: { + //type: "Reader:Added", + //success: success, + //title: this._article.title, + //url: this._article.url, + //} + //}); + }.bind(this)); + } else { + gChromeWin.Reader.removeArticleFromCache(this._article.url , function(success) { + dump("Reader:Remove (in reader) success=" + success); + + //gChromeWin.sendMessageToJava({ + //gecko: { + //type: "Reader:Removed", + //url: this._article.url + //} + //}); + }.bind(this)); + } + }, + + _onList: function Reader_onList() { + if (!this._article) + return; + + //gChromeWin.sendMessageToJava({ + //gecko: { + //type: "Reader:GoToReadingList" + //} + //}); + }, + + _onShare: function Reader_onShare() { + if (!this._article) + return; + + //gChromeWin.sendMessageToJava({ + //gecko: { + //type: "Reader:Share", + //url: this._article.url, + //title: this._article.title + //} + //}); + }, + + _onMarginSizeChange: function Reader_onMarginSizeChange(operation) { + if (operation == this._STEP_INCREMENT) + this._setMarginSize(this._marginSize + 5); + else + this._setMarginSize(this._marginSize - 5); + }, + + _setMarginSize: function Reader_setMarginSize(newMarginSize) { + if (this._marginSize === newMarginSize) + return; + + let doc = this._doc; + + this._marginSize = Math.max(5, Math.min(25, newMarginSize)); + doc.body.style.marginLeft = this._marginSize + "%"; + doc.body.style.marginRight = this._marginSize + "%"; + + this._updateImageMargins(); + + Services.prefs.setIntPref("reader.margin_size", this._marginSize); + }, + + _onFontSizeChange: function Reader_onFontSizeChange(operation) { + if (operation == this._STEP_INCREMENT) + this._setFontSize(this._fontSize + 1); + else + this._setFontSize(this._fontSize - 1); + }, + + _setFontSize: function Reader_setFontSize(newFontSize) { + if (this._fontSize === newFontSize) + return; + + let bodyClasses = this._doc.body.classList; + + if (this._fontSize > 0) + bodyClasses.remove("font-size" + this._fontSize); + + this._fontSize = Math.max(1, Math.min(7, newFontSize)); + bodyClasses.add("font-size" + this._fontSize); + + Services.prefs.setIntPref("reader.font_size", this._fontSize); + }, + + _setColorScheme: function Reader_setColorScheme(newColorScheme) { + if (this._colorScheme === newColorScheme) + return; + + let bodyClasses = this._doc.body.classList; + + if (this._colorScheme) + bodyClasses.remove(this._colorScheme); + + this._colorScheme = newColorScheme; + bodyClasses.add(this._colorScheme); + + Services.prefs.setCharPref("reader.color_scheme", this._colorScheme); + }, + + _getToolbarVisibility: function Reader_getToolbarVisibility() { + return !this._toolbarElement.classList.contains("toolbar-hidden"); + }, + + _setToolbarVisibility: function Reader_setToolbarVisibility(visible) { + let win = this._win; + if (win.history.state) + win.history.back(); + + if (!this._toolbarEnabled) + return; + + if (this._getToolbarVisibility() === visible) + return; + + this._toolbarElement.classList.toggle("toolbar-hidden"); + + if (!visible && !this._hasUsedToolbar) { + this._hasUsedToolbar = Services.prefs.getBoolPref("reader.has_used_toolbar"); + if (!this._hasUsedToolbar) { + gChromeWin.NativeWindow.toast.show(gStrings.GetStringFromName("aboutReader.toolbarTip"), "short"); + + Services.prefs.setBoolPref("reader.has_used_toolbar", true); + this._hasUsedToolbar = true; + } + } + }, + + _toggleToolbarVisibility: function Reader_toggleToolbarVisibility(visible) { + this._setToolbarVisibility(!this._getToolbarVisibility()); + }, + + _loadFromURL: function Reader_loadFromURL(url) { + //this._showProgress(); + gChromeWin.Reader.parseDocumentFromURL(url, function(article) { + + if (article) { + this._showContent(article); + } + else { + this._showError(gStrings.GetStringFromName("aboutReader.loadError")); + } + }.bind(this)); + }, + + _loadFromTab: function Reader_loadFromTab(tabId, url) { + //this._showProgress(); + + gChromeWin.Reader.getArticleForTab(tabId, url, function(article) { + if (article) + this._showContent(article); + else + this._showError(gStrings.GetStringFromName("aboutReader.loadError")); + }.bind(this)); + }, + + _requestFavicon: function Reader_requestFavicon() { + //gChromeWin.sendMessageToJava({ + //gecko: { + //type: "Reader:FaviconRequest", + //url: this._article.url + //} + //}); + }, + + _loadFavicon: function Reader_loadFavicon(url, faviconUrl) { + if (this._article.url !== url) + return; + + let doc = this._doc; + + let link = doc.createElement('link'); + link.rel = 'shortcut icon'; + link.href = faviconUrl; + + doc.getElementsByTagName('head')[0].appendChild(link); + }, + + _updateImageMargins: function Reader_updateImageMargins() { + let windowWidth = this._win.innerWidth; + let contentWidth = this._contentElement.offsetWidth; + let maxWidthStyle = windowWidth + "px !important"; + + let setImageMargins = function(img) { + if (!img._originalWidth) + img._originalWidth = img.offsetWidth; + + let imgWidth = img._originalWidth; + + // If the image is taking more than half of the screen, just make + // it fill edge-to-edge. + if (imgWidth < contentWidth && imgWidth > windowWidth * 0.55) + imgWidth = windowWidth; + + let sideMargin = Math.max((contentWidth - windowWidth) / 2, + (contentWidth - imgWidth) / 2); + + let imageStyle = sideMargin + "px !important"; + let widthStyle = imgWidth + "px !important"; + + let cssText = "max-width: " + maxWidthStyle + ";" + + "width: " + widthStyle + ";" + + "margin-left: " + imageStyle + ";" + + "margin-right: " + imageStyle + ";"; + + img.style.cssText = cssText; + } + + let imgs = this._doc.querySelectorAll(this._BLOCK_IMAGES_SELECTOR); + for (let i = imgs.length; --i >= 0;) { + let img = imgs[i]; + + if (img.width > 0) { + setImageMargins(img); + } else { + img.onload = function() { + setImageMargins(img); + } + } + } + }, + + _showError: function Reader_showError(error) { + this._headerElement.style.display = "none"; + this._contentElement.innerHTML = error; + this._contentElement.style.display = "block"; + + this._doc.title = error; + }, + + _showContent: function Reader_showContent(article) { + this._article = article; + + let domain = Services.io.newURI(article.url, null, null).host; + this._domainElement.innerHTML = domain; + + this._creditsElement.innerHTML = article.byline; + + this._titleElement.innerHTML = article.title; + this._doc.title = article.title; + + this._headerElement.style.display = "block"; + + this._contentElement.innerHTML = article.content; + this._updateImageMargins(); + + this._contentElement.style.display = "block"; + + + this._toolbarEnabled = true; + this._setToolbarVisibility(true); + + this._requestFavicon(); + }, + + _hideContent: function Reader_hideContent() { + this._headerElement.style.display = "none"; + this._contentElement.style.display = "none"; + }, + + _showProgress: function Reader_showProgress() { + this._headerElement.style.display = "none"; + //this._contentElement.innerHTML = gStrings.GetStringFromName("aboutReader.loading"); + this._contentElement.style.display = "block"; + }, + + _decodeQueryString: function Reader_decodeQueryString(url) { + let result = {}; + let query = url.split("?")[1]; + if (query) { + let pairs = query.split("&"); + for (let i = 0; i < pairs.length; i++) { + let [name, value] = pairs[i].split("="); + result[name] = decodeURIComponent(value); + } + } + + return result; + }, + + _setupStepControl: function Reader_setupStepControl(id, name, callback) { + let doc = this._doc; + let stepControl = doc.getElementById(id); + + let title = this._doc.createElement("h1"); + title.innerHTML = name; + stepControl.appendChild(title); + + let plusButton = doc.createElement("div"); + plusButton.className = "button plus-button"; + stepControl.appendChild(plusButton); + + let minusButton = doc.createElement("div"); + minusButton.className = "button minus-button"; + stepControl.appendChild(minusButton); + + plusButton.addEventListener("click", function(aEvent) { + if (!aEvent.isTrusted) + return; + + aEvent.stopPropagation(); + callback(this._STEP_INCREMENT); + }.bind(this), true); + + minusButton.addEventListener("click", function(aEvent) { + if (!aEvent.isTrusted) + return; + + aEvent.stopPropagation(); + callback(this._STEP_DECREMENT); + }.bind(this), true); + }, + + _setupSegmentedButton: function Reader_setupSegmentedButton(id, options, initialValue, callback) { + let doc = this._doc; + let segmentedButton = doc.getElementById(id); + + for (let i = 0; i < options.length; i++) { + let option = options[i]; + + let item = doc.createElement("li"); + let link = doc.createElement("a"); + link.innerHTML = option.name; + item.appendChild(link); + + segmentedButton.appendChild(item); + + link.addEventListener("click", function(aEvent) { + if (!aEvent.isTrusted) + return; + + aEvent.stopPropagation(); + + let items = segmentedButton.children; + for (let j = items.length - 1; j >= 0; j--) { + items[j].classList.remove("selected"); + } + + item.classList.add("selected"); + callback(option.value); + }.bind(this), true); + + if (option.value === initialValue) + item.classList.add("selected"); + } + }, + + _setupButton: function Reader_setupButton(id, callback) { + let button = this._doc.getElementById(id); + + button.addEventListener("click", function(aEvent) { + if (!aEvent.isTrusted) + return; + + aEvent.stopPropagation(); + callback(); + }, true); + }, + + _setupAllDropdowns: function Reader_setupAllDropdowns() { + let doc = this._doc; + let win = this._win; + + let dropdowns = doc.getElementsByClassName("dropdown"); + + for (let i = dropdowns.length - 1; i >= 0; i--) { + let dropdown = dropdowns[i]; + + let dropdownToggle = dropdown.getElementsByClassName("dropdown-toggle")[0]; + let dropdownPopup = dropdown.getElementsByClassName("dropdown-popup")[0]; + + if (!dropdownToggle || !dropdownPopup) + continue; + + let dropdownArrow = doc.createElement("div"); + dropdownArrow.className = "dropdown-arrow"; + dropdownPopup.appendChild(dropdownArrow); + + let updatePopupPosition = function() { + let popupWidth = dropdownPopup.offsetWidth + 30; + let arrowWidth = dropdownArrow.offsetWidth; + let toggleWidth = dropdownToggle.offsetWidth; + let toggleLeft = dropdownToggle.offsetLeft; + + let popupShift = (toggleWidth - popupWidth) / 2; + let popupLeft = Math.max(0, Math.min(win.innerWidth - popupWidth, toggleLeft + popupShift)); + dropdownPopup.style.left = popupLeft + "px"; + + let arrowShift = (toggleWidth - arrowWidth) / 2; + let arrowLeft = toggleLeft - popupLeft + arrowShift; + dropdownArrow.style.left = arrowLeft + "px"; + }; + + win.addEventListener("resize", function(aEvent) { + if (!aEvent.isTrusted) + return; + + updatePopupPosition(); + }, true); + + dropdownToggle.addEventListener("click", function(aEvent) { + if (!aEvent.isTrusted) + return; + + aEvent.stopPropagation(); + + let dropdownClasses = dropdown.classList; + + if (dropdownClasses.contains("open")) { + win.history.back(); + } else { + updatePopupPosition(); + if (!this._closeAllDropdowns()) + this._pushDropdownState(); + + dropdownClasses.add("open"); + } + }.bind(this), true); + } + }, + + _pushDropdownState: function Reader_pushDropdownState() { + // FIXME: We're getting a NS_ERROR_UNEXPECTED error when we try + // to do win.history.pushState() here (see bug 682296). This is + // a workaround that allows us to push history state on the target + // content document. + + let doc = this._doc; + let body = doc.body; + + if (this._pushStateScript) + body.removeChild(this._pushStateScript); + + this._pushStateScript = doc.createElement('script'); + this._pushStateScript.type = "text/javascript"; + this._pushStateScript.innerHTML = 'history.pushState({ dropdown: 1 }, document.title);'; + + body.appendChild(this._pushStateScript); + }, + + _closeAllDropdowns : function Reader_closeAllDropdowns() { + let dropdowns = this._doc.querySelectorAll(".dropdown.open"); + for (let i = dropdowns.length - 1; i >= 0; i--) { + dropdowns[i].classList.remove("open"); + } + + return (dropdowns.length > 0) + } +}; diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -45,6 +45,17 @@ }); }); + [ + ["AboutReader", "chrome://browser/content/aboutReader.js"], + ].forEach(function (aScript) { + let [name, script] = aScript; + XPCOMUtils.defineLazyGetter(window, name, function() { + let sandbox = {}; + Services.scriptloader.loadSubScript(script, sandbox); + return sandbox[name]; + }); + }); + // Smart getter for the findbar. If you don't wish to force the creation of // the findbar, check gFindBarInitialized first. var gFindBarInitialized = false; @@ -162,7 +173,8 @@ "about:newtab", "about:home", "about:privatebrowsing", - "about:sessionrestore" + "about:sessionrestore", + "about:reader" ]; #include browser-addons.js @@ -230,6 +242,30 @@ if (event.persisted) gPluginHandler.reshowClickToPlayNotification(); } + + Reader.parseDocumentFromTab(gBrowser.contentWindow.location.id, function (article) { +        // Do nothing if there's no article or the page in this tab has +        // changed +        let tabURL = gBrowser.currentURI.specIgnoringRef; +        if (article == null || (article.url != tabURL)) { +          // Don't clear the article for about:reader pages since we want to +          // use the article from the previous page +          if (!/^about:reader/i.test(tabURL)) +            savedArticle = null; +                               +          return; +        } +                               +        savedArticle = article; + + if (savedArticle != null) { + document.getElementById("reader-button").hidden = false;//!gPrefService.getBoolPref("reader.enabled"); + } + else { + document.getElementById("reader-button").hidden = true;//!gPrefService.getBoolPref("reader.enabled"); + alert("Not a readable page"); + } + }.bind(this)); } function UpdateBackForwardCommands(aWebNavigation) { @@ -1013,7 +1049,7 @@ var mustLoadSidebar = false; gBrowser.addEventListener("DOMUpdatePageReport", gPopupBlockerObserver, false); - + gBrowser.addEventListener("PluginNotFound", gPluginHandler, true); gBrowser.addEventListener("PluginCrashed", gPluginHandler, true); gBrowser.addEventListener("PluginBlocklisted", gPluginHandler, true); @@ -1235,6 +1271,7 @@ // Misc. inits. ReaderMode.init(); + Reader.init(); CombinedStopReload.init(); allTabs.readPref(); TabsOnTop.init(); @@ -5596,6 +5633,9 @@ gPageStyleMenu.disableStyle(); } +var newTabBrowser = null; + + var ReaderMode = { _inited: false, @@ -5604,15 +5644,57 @@ init: function () { //Reader Button disable/enable - document.getElementById("reader-button").hidden = gPrefService.getBoolPref("reader.enabled"); - }, + document.getElementById("reader-button").hidden = true;//!gPrefService.getBoolPref("reader.enabled"); + }, + + + + //Reader Mode On-Click +BrowserOpenReaderMode: function(aEvent) { +  // Once document is fully loaded, parse it +  // Reader.parseDocumentFromTab(gBrowser.contentWindow.location.id, function (article) { +//        // Do nothing if there's no article or the page in this tab has +//        // changed +//        let tabURL = gBrowser.currentURI.specIgnoringRef; +//        if (article == null || (article.url != tabURL)) { +//          // Don't clear the article for about:reader pages since we want to +//          // use the article from the previous page +//          if (!/^about:reader/i.test(tabURL)) +//            savedArticle = null; +//                               +//          return; +//        } +//                               +//        savedArticle = article; +                             +      newTabBrowser = gBrowser.getBrowserForTab(gBrowser.addTab("about:reader?url=" + savedArticle.url)); + + // //alert(newTabBrowser.currentURI.specIgnoringRef); +//      if (/^about:reader/.test(newTabBrowser.currentURI.specIgnoringRef)) { +//        alert("Reader Mode has been initialized!"); +// new AboutReader(newTabBrowser.contentDocument, newTabBrowser.contentWindow);                                                            +//     }    +         +    //}.bind(this)); + newTabBrowser.addEventListener("DOMContentLoaded", function(evt) { setTimeout(handleDomContentLoaded, 0, evt); }, true); + + } - //Reader Mode On-Click - BrowserOpenReaderMode: function(aEvent) { - gBrowser.selectedBrowser.contentWindow.location = "chrome://browser/content/aboutReader.html"; - } + }; +function handleDomContentLoaded(event) { + //if (event.target == content.document) { + //alert(newTabBrowser.currentURI.specIgnoringRef); +     if (/^about:reader/.test(newTabBrowser.currentURI.specIgnoringRef)) { +       //alert("Reader Mode has been initialized!"); + new AboutReader(newTabBrowser.contentDocument, newTabBrowser.contentWindow);                                                            +    }      + //} +} + + + var BrowserOffline = { _inited: false, @@ -7626,3 +7708,429 @@ if (element.ownerDocument == document) focusAndSelectUrlBar(); } + +var savedArticle = null; + +let Reader = { + // Version of the cache database schema +DB_VERSION: 1, + +DEBUG: 1, + + // Don't try to parse the page if it has too many elements (for memory and + // performance reasons) +MAX_ELEMS_TO_PARSE: 3000, + +init: function Reader_init() { + this.log("Init()"); + this._requests = {}; + + Services.obs.addObserver(this, "Reader:Add", false); + Services.obs.addObserver(this, "Reader:Remove", false); +}, + +observe: function(aMessage, aTopic, aData) { + switch(aTopic) { + case "Reader:Add": { + //let tab = gBrowser.selectedTab; + let currentURI = gBrowser.currentURI; + let url = currentURI.spec; + + let sendResult = function(success, title) { + this.log("Reader:Add success=" + success + ", url=" + url + ", title=" + title); + + /*sendMessageToJava({ + gecko: { + type: "Reader:Added", + success: success, + title: title, + url: url, + } + });*/ + }.bind(this); + + this.getArticleForTab(aData, currentURI.specIgnoringRef, function (article) { + if (!article) { + sendResult(false, ""); + return; + } + + this.storeArticleInCache(article, function(success) { + sendResult(success, article.title); + }); + }.bind(this)); + break; + } + + case "Reader:Remove": { + this.removeArticleFromCache(aData, function(success) { + this.log("Reader:Remove success=" + success + ", url=" + aData); + }.bind(this)); + break; + } + } +}, + +parseDocumentFromURL: function Reader_parseDocumentFromURL(url, callback) { + // If there's an on-going request for the same URL, simply append one + // more callback to it to be called when the request is done. + if (url in this._requests) { + let request = this._requests[url]; + request.callbacks.push(callback); + return; + } + + let request = { url: url, callbacks: [callback] }; + this._requests[url] = request; + + try { + this.log("parseDocumentFromURL: " + url); + + // First, try to find a cached parsed article in the DB + this.getArticleFromCache(url, function(article) { + if (article) { + //this.log("Page found in cache, return article immediately"); + this._runCallbacksAndFinish(request, article); + return; + } + + if (!this._requests) { + this.log("Reader has been destroyed, abort"); + return; + } + + // Article hasn't been found in the cache DB, we need to + // download the page and parse the article out of it. + this._downloadAndParseDocument(url, request); + }.bind(this)); + } catch (e) { + this.log("Error parsing document from URL: " + e); + this._runCallbacksAndFinish(request, null); + } +}, + +getArticleForTab: function Reader_getArticleForTab(tabId, url, callback) { + //let tab = gBrowser.getTabForId(tabId); + let article = savedArticle; + + if (article && article.url == url) { + this.log("Saved article found in tab"); + callback(article); + } else { + this.parseDocumentFromURL(url, callback); + } +}, + +parseDocumentFromTab: function(tabId, callback) { + try { + this.log("parseDocumentFromTab: " + tabId); + + //let tab = gBrowser.getTabForId(tabId); + let url = gBrowser.contentWindow.location.href; + let uri = Services.io.newURI(url, null, null); + + if (!this._shouldCheckUri(uri)) { + callback(null); + return; + } + + // First, try to find a cached parsed article in the DB + this.getArticleFromCache(url, function(article) { + if (article) { + this.log("Page found in cache, return article immediately"); + callback(article); + return; + } + + let doc = gBrowser.contentWindow.document; + this._readerParse(uri, doc, function (article) { + if (!article) { + this.log("Failed to parse page"); + callback(null); + return; + } + callback(article); + }.bind(this)); + }.bind(this)); + } catch (e) { + this.log("Error parsing document from tab: " + e); + callback(null); + } +}, + +getArticleFromCache: function Reader_getArticleFromCache(url, callback) { + this._getCacheDB(function(cacheDB) { + if (!cacheDB) { + callback(false); + return; + } + let transaction = cacheDB.transaction(cacheDB.objectStoreNames); + let articles = transaction.objectStore(cacheDB.objectStoreNames[0]); + + let request = articles.get(url); + + request.onerror = function(event) { + this.log("Error getting article from the cache DB: " + url); + callback(null); + }.bind(this); + + request.onsuccess = function(event) { + this.log("Got article from the cache DB! "); + callback(event.target.result); + }.bind(this); + }.bind(this)); +}, + +storeArticleInCache: function Reader_storeArticleInCache(article, callback) { + this._getCacheDB(function(cacheDB) { + if (!cacheDB) { + callback(false); + return; + } + + let transaction = cacheDB.transaction(cacheDB.objectStoreNames, "readwrite"); + let articles = transaction.objectStore(cacheDB.objectStoreNames[0]); + + let request = articles.add(article); + + request.onerror = function(event) { + this.log("Error storing article in the cache DB: " + article.url); + callback(false); + }.bind(this); + + request.onsuccess = function(event) { + //this.log("Stored article in the cache DB: " + article.url); + callback(true); + }.bind(this); + }.bind(this)); +}, + +removeArticleFromCache: function Reader_removeArticleFromCache(url, callback) { + this._getCacheDB(function(cacheDB) { + if (!cacheDB) { + callback(false); + return; + } + + let transaction = cacheDB.transaction(cacheDB.objectStoreNames, "readwrite"); + let articles = transaction.objectStore(cacheDB.objectStoreNames[0]); + + let request = articles.delete(url); + + request.onerror = function(event) { + this.log("Error removing article from the cache DB: " + url); + callback(false); + }.bind(this); + + request.onsuccess = function(event) { + this.log("Removed article from the cache DB: " + url); + callback(true); + }.bind(this); + }.bind(this)); +}, + +uninit: function Reader_uninit() { + Services.obs.removeObserver(this, "Reader:Add", false); + Services.obs.removeObserver(this, "Reader:Remove", false); + + let requests = this._requests; + for (let url in requests) { + let request = requests[url]; + if (request.browser) { + let browser = request.browser; + browser.parentNode.removeChild(browser); + } + } + delete this._requests; + + if (this._cacheDB) { + this._cacheDB.close(); + delete this._cacheDB; + } +}, + +log: function(msg) { + if (this.DEBUG) + dump("Reader: " + msg); +}, + +_shouldCheckUri: function Reader_shouldCheckUri(uri) { + if ((uri.prePath + "/") === uri.spec) { + //this.log("Not parsing home page: " + uri.spec); + return false; + } + + if (!(uri.schemeIs("http") || uri.schemeIs("https") || uri.schemeIs("file"))) { + //this.log("Not parsing URI scheme: " + uri.scheme); + return false; + } + + return true; +}, + +_readerParse: function Reader_readerParse(uri, doc, callback) { + let numTags = doc.getElementsByTagName("*").length; + if (numTags > this.MAX_ELEMS_TO_PARSE) { + //this.log("Aborting parse for " + uri.spec + "; " + numTags + " elements found"); + callback(null); + return; + } + + let worker = new ChromeWorker("readerWorker.js"); + worker.onmessage = function (evt) { + let article = evt.data; + + // Append URL to the article data. specIgnoringRef will ignore any hash + // in the URL. + if (article) + article.url = uri.specIgnoringRef; + + callback(article); + }; + + try { + worker.postMessage({ + uri: { + spec: uri.spec, + host: uri.host, + prePath: uri.prePath, + scheme: uri.scheme, + pathBase: Services.io.newURI(".", null, uri).spec + }, + doc: new XMLSerializer().serializeToString(doc) + }); + } catch (e) { + this.log("Reader: could not build Readability arguments: " + e); + callback(null); + } +}, + +_runCallbacksAndFinish: function Reader_runCallbacksAndFinish(request, result) { + delete this._requests[request.url]; + + request.callbacks.forEach(function(callback) { + callback(result); + }); +}, + +_downloadDocument: function Reader_downloadDocument(url, callback) { + // We want to parse those arbitrary pages safely, outside the privileged + // context of chrome. We create a hidden browser element to fetch the + // loaded page's document object then discard the browser element. + + let browser = document.createElement("browser"); + browser.setAttribute("type", "content"); + browser.setAttribute("collapsed", "true"); + + document.documentElement.appendChild(browser); + browser.stop(); + + browser.webNavigation.allowAuth = false; + browser.webNavigation.allowImages = false; + browser.webNavigation.allowJavascript = false; + browser.webNavigation.allowMetaRedirects = true; + browser.webNavigation.allowPlugins = false; + + browser.addEventListener("DOMContentLoaded", function (event) { + let doc = event.originalTarget; + + // ignore on frames and other documents + if (doc != browser.contentDocument) + return; + + this.log("Done loading: " + doc); + if (doc.location.href == "about:blank") { + callback(null); + + // Request has finished with error, remove browser element + browser.parentNode.removeChild(browser); + return; + } + + callback(doc); + }.bind(this)); + + browser.loadURIWithFlags(url, Ci.nsIWebNavigation.LOAD_FLAGS_NONE, + null, null, null); + + return browser; +}, + +_downloadAndParseDocument: function Reader_downloadAndParseDocument(url, request) { + try { + this.log("Needs to fetch page, creating request: " + url); + + request.browser = this._downloadDocument(url, function(doc) { + this.log("Finished loading page: " + doc); + + if (!doc) { + this.log("Error loading page"); + this._runCallbacksAndFinish(request, null); + return; + } + + this.log("Parsing response with Readability"); + + let uri = Services.io.newURI(url, null, null); + this._readerParse(uri, doc, function (article) { + // Delete reference to the browser element as we've finished parsing. + let browser = request.browser; + if (browser) { + browser.parentNode.removeChild(browser); + delete request.browser; + } + + if (!article) { + this.log("Failed to parse page"); + this._runCallbacksAndFinish(request, null); + return; + } + + this.log("Parsing has been successful"); + + this._runCallbacksAndFinish(request, article); + }.bind(this)); + }.bind(this)); + } catch (e) { + this.log("Error downloading and parsing document: " + e); + this._runCallbacksAndFinish(request, null); + } +}, + +_getCacheDB: function Reader_getCacheDB(callback) { + if (this._cacheDB) { + callback(this._cacheDB); + return; + } + + let request = window.indexedDB.open("about:reader", this.DB_VERSION); + + request.onerror = function(event) { + //this.log("Error connecting to the cache DB"); + this._cacheDB = null; + callback(null); + }.bind(this); + + request.onsuccess = function(event) { + //this.log("Successfully connected to the cache DB"); + this._cacheDB = event.target.result; + callback(this._cacheDB); + }.bind(this); + + request.onupgradeneeded = function(event) { + this.log("Database schema upgrade from " + + event.oldVersion + " to " + event.newVersion); + + let cacheDB = event.target.result; + + // Create the articles object store + this.log("Creating articles object store"); + cacheDB.createObjectStore("articles", { keyPath: "url" }); + + this.log("Database upgrade done: " + this.DB_VERSION); + }.bind(this); +} +}; + + + diff --git a/mobile/android/chrome/content/readerWorker.js b/browser/base/content/readerWorker.js copy from mobile/android/chrome/content/readerWorker.js copy to browser/base/content/readerWorker.js diff --git a/browser/base/jar.mn b/browser/base/jar.mn --- a/browser/base/jar.mn +++ b/browser/base/jar.mn @@ -19,6 +19,9 @@ * content/browser/aboutDialog.js (content/aboutDialog.js) content/browser/aboutDialog.css (content/aboutDialog.css) content/browser/aboutRobots.xhtml (content/aboutRobots.xhtml) + content/browser/aboutReader.html (content/aboutReader.html) + content/browser/aboutReader.js (content/aboutReader.js) content/browser/abouthome/aboutHome.xhtml (content/abouthome/aboutHome.xhtml) content/browser/abouthome/aboutHome.js (content/abouthome/aboutHome.js) * content/browser/abouthome/aboutHome.css (content/abouthome/aboutHome.css) @@ -53,6 +56,9 @@ content/browser/pageinfo/feeds.xml (content/pageinfo/feeds.xml) content/browser/pageinfo/permissions.js (content/pageinfo/permissions.js) content/browser/pageinfo/security.js (content/pageinfo/security.js) + content/browser/Readability.js (content/Readability.js) + content/browser/JSDOMParser.js (content/JSDOMParser.js) + content/browser/readerWorker.js (content/readerWorker.js) #ifdef MOZ_SERVICES_SYNC content/browser/sync/aboutSyncTabs.xul (content/sync/aboutSyncTabs.xul) content/browser/sync/aboutSyncTabs.js (content/sync/aboutSyncTabs.js) diff --git a/browser/components/about/AboutRedirector.cpp b/browser/components/about/AboutRedirector.cpp --- a/browser/components/about/AboutRedirector.cpp +++ b/browser/components/about/AboutRedirector.cpp @@ -77,6 +77,9 @@ nsIAboutModule::ALLOW_SCRIPT }, { "preferences", "chrome://browser/content/preferences/in-content/preferences.xul", nsIAboutModule::ALLOW_SCRIPT }, + { "reader", "chrome://browser/content/aboutReader.html", + nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT | + nsIAboutModule::ALLOW_SCRIPT }, }; static const int kRedirTotal = NS_ARRAY_LENGTH(kRedirMap); diff --git a/browser/components/build/nsModule.cpp b/browser/components/build/nsModule.cpp --- a/browser/components/build/nsModule.cpp +++ b/browser/components/build/nsModule.cpp @@ -107,6 +107,7 @@ { NS_ABOUT_MODULE_CONTRACTID_PREFIX "newtab", &kNS_BROWSER_ABOUT_REDIRECTOR_CID }, { NS_ABOUT_MODULE_CONTRACTID_PREFIX "permissions", &kNS_BROWSER_ABOUT_REDIRECTOR_CID }, { NS_ABOUT_MODULE_CONTRACTID_PREFIX "preferences", &kNS_BROWSER_ABOUT_REDIRECTOR_CID }, + { NS_ABOUT_MODULE_CONTRACTID_PREFIX "reader", &kNS_BROWSER_ABOUT_REDIRECTOR_CID }, #if defined(XP_WIN) { NS_IEHISTORYENUMERATOR_CONTRACTID, &kNS_WINIEHISTORYENUMERATOR_CID }, #elif defined(XP_MACOSX) diff --git a/browser/themes/gnomestripe/reader.png b/browser/themes/gnomestripe/reader.png new file mode 100644 index 0000000000000000000000000000000000000000..8fc9457f4f280bcbd05af7add0ccc26a18678eb6 GIT binary patch literal 1306 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 diff --git a/browser/themes/winstripe/reader.png b/browser/themes/winstripe/reader.png new file mode 100644 index 0000000000000000000000000000000000000000..8fc9457f4f280bcbd05af7add0ccc26a18678eb6 GIT binary patch literal 1306 zc%17D@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m@_g%B1$5BeXNr6bM+EIYV;~{3m8Da#=fE;F*!T6L?J0P zJu}Z%>HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRzL%CQ%e#R zDspr3imfVamB8j&0ofp7eI*63l9Fs&C5WRUd;=7m^NUgyO!bU)lMM_F70k@^3{6bU z%nWrDj0_Bo^bLT>OxMuF%GAut$Xo#mlz_GsrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3 zjrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<;L6O-~wOKg>t zU|z^A@b!fooL3ADC}5E3S0onb8|oS8=jQ6eR2P>7rKaImT^v$bkg6Y)TAW{6lnjiI zG-V{K@M{Gr1iHq`zbF$JDTz5Q`N^fZsd*)yF1AWQ8NHOu6e~9ib2mdna}xt|BLg!F zLqiJ#3u8AYBTGk1XICR5V?&r3*z`KN7#X@aTAI0-I+_?7x*9r~xHwz7nYo%-8kt#| zxH-f0dgc|EB<3Zj!t`b$^qS(;Yvo*&npl!w6q28x14{t`8Tlpo#Toep3eLf13L3tN z$(eZ|0ZmW@LEV~Klv$RV;#QQOs{jsRt4u5|FgJ5_GdDAKGBiZ^+||v@(#6RM=oCvA zC8*vMazafX=oo#pu^El!~gYja^C!P*k>nDoEZ3f z$;x#xVyjsV4xgW6*Z9g;O-+oE(a|>2vh^nqPfz{(yL;DuczC$Ft^WVNg)58=wCbEEchU{U{`*I;s^PBfrm^1&0&nX zRcuTCGyOb%vWwXy+@2+<$iu0>f$em#$jOX#)0S6hNqs%o@S|a$>(PFBdkG5*iw&s~ z0n_$={rvoVNrKz&qvy^UN}jmRoMcwQT>tl1=j|r#>H2qAf?mCtHKQ?=b$`QxwmnUc zm@)zveiDob`Qxgswcr7xQTxOhQoIrm_b7DDk54%E|Nnmp``TYq_`1{*Y--h(OrJPK vOE_bq^@Lx%CKd7