diff options
author | wolfbeast <mcwerewolf@gmail.com> | 2018-06-04 13:17:38 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-06-04 13:17:38 +0200 |
commit | a1be17c1cea81ebb1e8b131a662c698d78f3f7f2 (patch) | |
tree | a92f7de513be600cc07bac458183e9af40e00c06 /application/basilisk/modules/ReaderParent.jsm | |
parent | bf11fdd304898ac675e39b01b280d39550e419d0 (diff) | |
download | UXP-a1be17c1cea81ebb1e8b131a662c698d78f3f7f2.tar UXP-a1be17c1cea81ebb1e8b131a662c698d78f3f7f2.tar.gz UXP-a1be17c1cea81ebb1e8b131a662c698d78f3f7f2.tar.lz UXP-a1be17c1cea81ebb1e8b131a662c698d78f3f7f2.tar.xz UXP-a1be17c1cea81ebb1e8b131a662c698d78f3f7f2.zip |
Issue #303 Part 1: Move basilisk files from /browser to /application/basilisk
Diffstat (limited to 'application/basilisk/modules/ReaderParent.jsm')
-rw-r--r-- | application/basilisk/modules/ReaderParent.jsm | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/application/basilisk/modules/ReaderParent.jsm b/application/basilisk/modules/ReaderParent.jsm new file mode 100644 index 000000000..c81aa9905 --- /dev/null +++ b/application/basilisk/modules/ReaderParent.jsm @@ -0,0 +1,102 @@ +// -*- indent-tabs-mode: nil; js-indent-level: 2 -*- +/* 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"; + +const { classes: Cc, interfaces: Ci, utils: Cu } = Components; + +this.EXPORTED_SYMBOLS = [ "ReaderParent" ]; + +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); +Cu.import("resource://gre/modules/Services.jsm"); + +XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils", "resource://gre/modules/PlacesUtils.jsm"); +XPCOMUtils.defineLazyModuleGetter(this, "ReaderMode", "resource://gre/modules/ReaderMode.jsm"); + +const gStringBundle = Services.strings.createBundle("chrome://global/locale/aboutReader.properties"); + +var ReaderParent = { + MESSAGES: [ + "Reader:UpdateReaderButton", + ], + + init() { + let mm = Cc["@mozilla.org/globalmessagemanager;1"].getService(Ci.nsIMessageListenerManager); + for (let msg of this.MESSAGES) { + mm.addMessageListener(msg, this); + } + }, + + receiveMessage(message) { + switch (message.name) { + case "Reader:UpdateReaderButton": { + let browser = message.target; + if (message.data && message.data.isArticle !== undefined) { + browser.isArticle = message.data.isArticle; + } + this.updateReaderButton(browser); + break; + } + } + }, + + updateReaderButton(browser) { + let win = browser.ownerGlobal; + if (browser != win.gBrowser.selectedBrowser) { + return; + } + + let button = win.document.getElementById("reader-mode-button"); + let command = win.document.getElementById("View:ReaderView"); + let key = win.document.getElementById("key_toggleReaderMode"); + // aria-reader is not a real ARIA attribute. However, this will cause + // Gecko accessibility to expose the "reader" object attribute. We do this + // so that the reader state is easy for accessibility clients to access + // programmatically. + if (browser.currentURI.spec.startsWith("about:reader")) { + button.setAttribute("readeractive", true); + button.hidden = false; + let closeText = gStringBundle.GetStringFromName("readerView.close"); + button.setAttribute("tooltiptext", closeText); + command.setAttribute("label", closeText); + command.setAttribute("hidden", false); + command.setAttribute("accesskey", gStringBundle.GetStringFromName("readerView.close.accesskey")); + key.setAttribute("disabled", false); + browser.setAttribute("aria-reader", "active"); + } else { + button.removeAttribute("readeractive"); + button.hidden = !browser.isArticle; + let enterText = gStringBundle.GetStringFromName("readerView.enter"); + button.setAttribute("tooltiptext", enterText); + command.setAttribute("label", enterText); + command.setAttribute("hidden", !browser.isArticle); + command.setAttribute("accesskey", gStringBundle.GetStringFromName("readerView.enter.accesskey")); + key.setAttribute("disabled", !browser.isArticle); + if (browser.isArticle) { + browser.setAttribute("aria-reader", "available"); + } else { + browser.removeAttribute("aria-reader"); + } + } + }, + + forceShowReaderIcon(browser) { + browser.isArticle = true; + this.updateReaderButton(browser); + }, + + buttonClick(event) { + if (event.button != 0) { + return; + } + this.toggleReaderMode(event); + }, + + toggleReaderMode(event) { + let win = event.target.ownerGlobal; + let browser = win.gBrowser.selectedBrowser; + browser.messageManager.sendAsyncMessage("Reader:ToggleReaderMode"); + } +}; |