Commit 9dcd8bbc authored by Thomas Rientjes's avatar Thomas Rientjes
Browse files

Refactor existing code

parent 5a7d92e2
/**
* Application settings content script.
*
* @module content-scripts/settings
*/
'use strict';
/**
* Fires once the content script worker is initialized.
*
* @event worker:initialized
* @param {Object} initialState The initial state of the settings module.
* @listens main/worker:initialized
*/
self.port.once('worker:initialized', function (initialState) {
applyL10n(initialState.l10n);
});
/**
* Fires once a preference has been fetched.
*
* @param {Object} preference The externally fetched preference.
* @listens main/preference:fetched
*/
self.port.on('preference:fetched', function () {
// TODO Re-render the user interface.
});
......@@ -18,8 +31,8 @@ self.port.on('preference:fetched', function () {
* Applies a given localization to marked document elements.
* https://bugzilla.mozilla.org/show_bug.cgi?id=787351
*
* @private
* @param {Object} l10n A localization object.
* @private
*/
function applyL10n (l10n) {
......@@ -35,15 +48,22 @@ function applyL10n (l10n) {
});
}
/**
* Fetch preference event emitter.
*
* @event preference:fetch
* @property {String} preferenceKey The key of the requested preference.
*/
function fetchPreference (preferenceKey) {
self.port.emit('preference:fetch', preferenceKey);
}
/**
* Emitters
* Preference changed event emitter.
*
* @event preference:changed
* @property {Object} preference The updated preference.
*/
self.port.emit('preference:changed', {
key: 'sliderPosition',
value: 2
});
function preferenceChanged (preference) {
self.port.emit('preference:changed', preference);
}
/**
* Main
* Application entry point.
*
* @module main
*/
'use strict';
/**
* Imports
* Simplifies the process of obtaining browser service references.
*
* @var {Object} Services
*/
var { Services } = require('resource://gre/modules/Services.jsm');
/**
* Can be used to get localization entries by key name.
*
* @var {function} _
*/
var _ = require('sdk/l10n').get;
var pageMod = require('sdk/page-mod');
var self = require("sdk/self");
/**
* Constants
* Facilitates running scripts in the context of web pages.
*
* @var {Object} pageMod
*/
var pageMod = require('sdk/page-mod');
const BROWSER_NAME = 'Orfox';
/**
* Provides access to extension metadata.
*
* @var {Object} self
*/
var self = require("sdk/self");
/**
* Variables
* The browser's chrome window object.
*
* @var {Object} chromeWindow
*/
var chromeWindow = Services.wm.getMostRecentWindow('navigator:browser');
var browserWindow = Services.wm.getMostRecentWindow('navigator:browser');
var browserWindowIdentifier = null;
/**
* Uniquely identifies the extension's chrome menu item.
*
* @var {Number} chomeMenuItemIdentifier
*/
var chromeMenuItemIdentifier = null;
/**
* Public Functions
* The name of the target browser.
*
* @constant BROWSER_NAME
* @type {String}
* @default
*/
const BROWSER_NAME = 'Orfox';
/**
* Executed as soon as the add-on is loaded.
*/
exports.main = function () {
pageMod.PageMod({
......@@ -40,11 +69,12 @@ exports.main = function () {
onAttach: startListening
});
browserWindowIdentifier = browserWindow.NativeWindow.menu.add({
// Add the extension's chrome menu item to the main browser menu.
chromeMenuItemIdentifier = chromeWindow.NativeWindow.menu.add({
name: _('settings_label', BROWSER_NAME),
callback: function () {
var tabBrowser = browserWindow.BrowserApp;
var tabBrowser = chromeWindow.BrowserApp;
tabBrowser.addTab('chrome://tor-browser-settings/content/settings.html', {
selected: true,
......@@ -55,16 +85,20 @@ exports.main = function () {
});
};
/**
* Executed when the add-on is unloaded.
*/
exports.onUnload = function () {
// Clean up add-on state.
browserWindow.NativeWindow.menu.remove(browserWindowIdentifier);
chromeWindow.NativeWindow.menu.remove(chromeMenuItemIdentifier);
};
/**
* Private Functions
* Executed as soon as a content script has been attached to a page.
*
* @param {Object} worker Allows for direct communication with content scripts.
*/
function startListening (worker) {
worker.port.emit('worker:initialized', {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment