summaryrefslogtreecommitdiffstats
path: root/browser/components/pocket/content/Pocket.jsm
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/pocket/content/Pocket.jsm')
-rw-r--r--browser/components/pocket/content/Pocket.jsm84
1 files changed, 84 insertions, 0 deletions
diff --git a/browser/components/pocket/content/Pocket.jsm b/browser/components/pocket/content/Pocket.jsm
new file mode 100644
index 0000000000..7f6030c109
--- /dev/null
+++ b/browser/components/pocket/content/Pocket.jsm
@@ -0,0 +1,84 @@
+/* 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";
+
+var EXPORTED_SYMBOLS = ["Pocket"];
+
+const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
+
+ChromeUtils.defineModuleGetter(
+ this,
+ "BrowserUtils",
+ "resource://gre/modules/BrowserUtils.jsm"
+);
+
+var Pocket = {
+ get site() {
+ return Services.prefs.getCharPref("extensions.pocket.site");
+ },
+ get listURL() {
+ return "https://" + Pocket.site + "/firefox_learnmore?src=ff_library";
+ },
+
+ openList(event) {
+ let win = event.view;
+ let where = win.whereToOpenLink(event);
+ // Never override the current tab unless it's blank:
+ if (where == "current" && !win.gBrowser.selectedTab.isEmpty) {
+ where = "tab";
+ }
+ win.openTrustedLinkIn(this.listURL, where);
+ },
+
+ /**
+ * Functions related to the Pocket panel UI.
+ */
+ onShownInPhotonPageActionPanel(panel, iframe) {
+ let window = panel.ownerGlobal;
+ window.pktUI.setPhotonPageActionPanelFrame(iframe);
+ Pocket._initPanelView(window);
+ },
+
+ _initPanelView(window) {
+ let document = window.document;
+
+ let libraryButton = document.getElementById("library-button");
+ if (libraryButton) {
+ BrowserUtils.setToolbarButtonHeightProperty(libraryButton);
+ }
+
+ let urlToSave = Pocket._urlToSave;
+ let titleToSave = Pocket._titleToSave;
+ Pocket._urlToSave = null;
+ Pocket._titleToSave = null;
+ // ViewShowing fires immediately before it creates the contents,
+ // in lieu of an AfterViewShowing event, just spin the event loop.
+ window.setTimeout(function() {
+ if (urlToSave) {
+ window.pktUI.tryToSaveUrl(urlToSave, titleToSave);
+ } else {
+ window.pktUI.tryToSaveCurrentPage();
+ }
+ }, 0);
+ },
+
+ _urlToSave: null,
+ _titleToSave: null,
+ savePage(browser, url, title) {
+ if (this.pageAction) {
+ this._urlToSave = url;
+ this._titleToSave = title;
+ this.pageAction.doCommand(browser.ownerGlobal);
+ }
+ },
+
+ get pageAction() {
+ return this._pageAction;
+ },
+ set pageAction(pageAction) {
+ return (this._pageAction = pageAction);
+ },
+ _pageAction: null,
+};