-
-
Save mstriemer/f306b4f263ac8b39fe480878f5378d9a to your computer and use it in GitHub Desktop.
Make a Reader Mode pageAction button
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/browser/actors/AboutReaderParent.jsm b/browser/actors/AboutReaderParent.jsm | |
--- a/browser/actors/AboutReaderParent.jsm | |
+++ b/browser/actors/AboutReaderParent.jsm | |
@@ -14,16 +14,21 @@ ChromeUtils.defineModuleGetter( | |
"PlacesUtils", | |
"resource://gre/modules/PlacesUtils.jsm" | |
); | |
ChromeUtils.defineModuleGetter( | |
this, | |
"ReaderMode", | |
"resource://gre/modules/ReaderMode.jsm" | |
); | |
+ChromeUtils.defineModuleGetter( | |
+ this, | |
+ "PageActions", | |
+ "resource:///modules/PageActions.jsm" | |
+); | |
const gStringBundle = Services.strings.createBundle( | |
"chrome://global/locale/aboutReader.properties" | |
); | |
// A set of all of the AboutReaderParent actors that exist. | |
// See bug 1631146 for a request for a less manual way of doing this. | |
let gAllActors = new Set(); | |
@@ -177,16 +182,17 @@ class AboutReaderParent extends JSWindow | |
return; | |
} | |
let win = browser.ownerGlobal; | |
let button = win.document.getElementById("reader-mode-button"); | |
let menuitem = win.document.getElementById("menu_readerModeItem"); | |
let key = win.document.getElementById("key_toggleReaderMode"); | |
+ PageActions.actionForID("readerMode").setDisabled(!browser.isArticle, win); | |
if (this.isReaderMode()) { | |
gAllActors.add(this); | |
let closeText = gStringBundle.GetStringFromName("readerView.close"); | |
button.setAttribute("readeractive", true); | |
button.hidden = false; | |
button.setAttribute("aria-label", closeText); | |
diff --git a/browser/modules/PageActions.jsm b/browser/modules/PageActions.jsm | |
--- a/browser/modules/PageActions.jsm | |
+++ b/browser/modules/PageActions.jsm | |
@@ -31,16 +31,21 @@ ChromeUtils.defineModuleGetter( | |
"BinarySearch", | |
"resource://gre/modules/BinarySearch.jsm" | |
); | |
ChromeUtils.defineModuleGetter( | |
this, | |
"PrivateBrowsingUtils", | |
"resource://gre/modules/PrivateBrowsingUtils.jsm" | |
); | |
+ChromeUtils.defineModuleGetter( | |
+ this, | |
+ "AboutReaderParent", | |
+ "resource:///actors/AboutReaderParent.jsm" | |
+); | |
const ACTION_ID_BOOKMARK = "bookmark"; | |
const ACTION_ID_PIN_TAB = "pinTab"; | |
const ACTION_ID_BOOKMARK_SEPARATOR = "bookmarkSeparator"; | |
const ACTION_ID_BUILT_IN_SEPARATOR = "builtInSeparator"; | |
const ACTION_ID_TRANSIENT_SEPARATOR = "transientSeparator"; | |
const PREF_PERSISTED_ACTIONS = "browser.pageActions.persistedActions"; | |
@@ -1168,16 +1173,24 @@ var gBuiltInActions = [ | |
onShowingInPanel(buttonNode) { | |
browserPageActions(buttonNode).bookmark.onShowingInPanel(buttonNode); | |
}, | |
onCommand(event, buttonNode) { | |
browserPageActions(buttonNode).bookmark.onCommand(event, buttonNode); | |
}, | |
}, | |
+ // reader mode | |
+ { | |
+ id: "readerMode", | |
+ onCommand(event, buttonNode) { | |
+ AboutReaderParent.buttonClick(event); | |
+ }, | |
+ }, | |
+ | |
// pin tab | |
{ | |
id: ACTION_ID_PIN_TAB, | |
onBeforePlacedInWindow(browserWindow) { | |
function handlePinEvent() { | |
browserPageActions(browserWindow).pinTab.updateState(); | |
} | |
function handleWindowUnload() { |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment