63 lines
2.3 KiB
JavaScript
63 lines
2.3 KiB
JavaScript
/* 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/. */
|
|
/* globals XPCOMUtils, NewTabInit, TopSitesFeed, SearchFeed */
|
|
|
|
"use strict";
|
|
|
|
const {utils: Cu} = Components;
|
|
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
|
const {Store} = Cu.import("resource://activity-stream/lib/Store.jsm", {});
|
|
const {actionTypes: at} = Cu.import("resource://activity-stream/common/Actions.jsm", {});
|
|
|
|
// Feeds
|
|
XPCOMUtils.defineLazyModuleGetter(this, "NewTabInit",
|
|
"resource://activity-stream/lib/NewTabInit.jsm");
|
|
XPCOMUtils.defineLazyModuleGetter(this, "TopSitesFeed",
|
|
"resource://activity-stream/lib/TopSitesFeed.jsm");
|
|
XPCOMUtils.defineLazyModuleGetter(this, "SearchFeed",
|
|
"resource://activity-stream/lib/SearchFeed.jsm");
|
|
|
|
const feeds = {
|
|
// When you add a feed here:
|
|
// 1. The key in this object should directly refer to a pref, not including the
|
|
// prefix (so "feeds.newtabinit" refers to the
|
|
// "browser.newtabpage.activity-stream.feeds.newtabinit" pref)
|
|
// 2. The value should be a function that returns a feed.
|
|
// 3. You should use XPCOMUtils.defineLazyModuleGetter to import the Feed,
|
|
// so it isn't loaded until the feed is enabled.
|
|
"feeds.newtabinit": () => new NewTabInit(),
|
|
"feeds.topsites": () => new TopSitesFeed(),
|
|
"feeds.search": () => new SearchFeed()
|
|
};
|
|
|
|
this.ActivityStream = class ActivityStream {
|
|
|
|
/**
|
|
* constructor - Initializes an instance of ActivityStream
|
|
*
|
|
* @param {object} options Options for the ActivityStream instance
|
|
* @param {string} options.id Add-on ID. e.g. "activity-stream@mozilla.org".
|
|
* @param {string} options.version Version of the add-on. e.g. "0.1.0"
|
|
* @param {string} options.newTabURL URL of New Tab page on which A.S. is displayed. e.g. "about:newtab"
|
|
*/
|
|
constructor(options) {
|
|
this.initialized = false;
|
|
this.options = options;
|
|
this.store = new Store();
|
|
this.feeds = feeds;
|
|
}
|
|
init() {
|
|
this.initialized = true;
|
|
this.store.init(this.feeds);
|
|
this.store.dispatch({type: at.INIT});
|
|
}
|
|
uninit() {
|
|
this.store.dispatch({type: at.UNINIT});
|
|
this.store.uninit();
|
|
this.initialized = false;
|
|
}
|
|
};
|
|
|
|
this.EXPORTED_SYMBOLS = ["ActivityStream"];
|