summaryrefslogtreecommitdiffstats
path: root/browser/components/pocket/content/Pocket.jsm
blob: 7f6030c1095c775153dcea600510ca9ba63006c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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,
};