Esempio n. 1
0
	port.on('reset_all', function(data) {
		console.log('reset_all()');
		let existingKeys = prefs.keys(prefRoot);
		for (let name of existingKeys) {
			prefs.reset(name);
		}
	});
exports.testReset = function(assert) {
  prefs.reset("test_reset_pref");
  assert.equal(prefs.has("test_reset_pref"), false);
  assert.equal(prefs.isSet("test_reset_pref"), false);
  prefs.set("test_reset_pref", 5);
  assert.equal(prefs.has("test_reset_pref"), true);
  assert.equal(prefs.isSet("test_reset_pref"), true);
  assert.equal(prefs.keys("test_reset_pref").toString(), "test_reset_pref");
};
Esempio n. 3
0
const readPaths = id => {
  const base = `extensions.modules.${id}.path.`;
  const domain = readDomain(id);
  return prefs.keys(base).reduce((paths, key) => {
    const value = prefs.get(key);
    const name = key.replace(base, "");
    const path = name.split(".").join("/");
    const prefix = path.length ? `${path}/` : path;
    const uri = value.endsWith("/") ? value : `${value}/`;
    const root = `extensions.modules.${domain}.commonjs.path.${name}`;

    mount(root, uri);

    paths[prefix] = `resource://${root}/`;
    return paths;
  }, {});
};
Esempio n. 4
0
/**
 * Clear as much data as we can. Intended to be used right before uninstall.
 * @param {bool} clearPrefs  reset default prefs?
 * @param {bool} clearStorage  clear local storage?
 */
function clearData(clearPrefs, clearStorage) {
  if (clearStorage) {
    // delete everything in localStorage - must init again to use later!
    heuristicBlocker.clear();
    userStorage.clear();
  }
  if (clearPrefs) {
    const prefService = require('sdk/preferences/service');
    let pbRoot = 'extensions.' + require('sdk/self').id;
    let prefs = prefService.keys(pbRoot);
    for (let pref in prefs) {
      if (prefs.hasOwnProperty(pref)) {
        prefService.reset(pref);
      }
    }
  }
}
Esempio n. 5
0
function onAttach(worker) {
	let port = worker.port;
	port.on('set', function(data) {
		console.log('set(' + data.name + ', ' + data.value + ')');
		prefs.set(prefRoot + data.name, data.value);
	});
	port.on('reset', function(data) {
		console.log('reset(' + data.name + ')');
		prefs.reset(prefRoot + data.name);
	});

	port.on('reset_all', function(data) {
		console.log('reset_all()');
		let existingKeys = prefs.keys(prefRoot);
		for (let name of existingKeys) {
			prefs.reset(name);
		}
	});

  // Get all and broadcast set
	let existingKeys = prefs.keys(prefRoot);
	for (let properName of existingKeys) {
		let name = properName.substring(prefRoot.length);
		let value = prefs.get(properName, null);

		port.emit('set', {
			name: name,
			value: value
		});
	}
  // God forgive me for this is a sin
	port.emit('loading_complete', {});

	function onCorsRequestComplete(requestId) {
		return function(response) {
			if (response.status === 200) {
				port.emit('cors-update', {
					type: 'load',
					requestId: requestId,
					response: {
						headers: response.headers,
						responseText: response.text
					}
				});
			} else {
				port.emit('cors-update', {
					type: 'error',
					requestId: requestId,
					response: {
						status: response.status,
						headers: response.headers,
						responseText: response.text || ''
					}
				});
			}
		};
	}

	port.on('cors-request',
          function({url, method, requestId, data, headers}) {
	var requestSettings = {
		url: url,
		onComplete: onCorsRequestComplete(requestId)
	};
	if (headers) {
		requestSettings.headers = headers;
		if (headers['Content-Type']) {
			requestSettings.contentType = headers['Content-Type'];
		}
	}
	if (data) {
		requestSettings.content = data;
	}
	var request = Request(requestSettings);
	method = method || 'GET';
	switch (method.toUpperCase()) {
	case 'GET':
		request.get();
		break;
	case 'POST':
		request.post();
	}
});
}
Esempio n. 6
0
exports.getPageWorker = getPageWorker;

var contentScriptData = {
    ressources: {
        "redditbroken.svg" : data.url("redditbroken.svg"),
        "redditoverload.svg" : data.url("redditoverload.svg"),
        "redditblocked.svg": data.url("redditblocked.svg")
    },

    preferences: {},
    localisation: data.load('_locales/' + locale + '/messages.json'),
    template: data.load('templates.html'),
    version: require('sdk/self').version
};

preferences.keys("extensions." + addonid).forEach(function(key) {
    contentScriptData.preferences[key.substr(key.lastIndexOf('.') + 1)] = preferences.get(key);
});

pageMod.PageMod({
    include: ["https://www.youtube.com/*", "http://www.youtube.com/*"],
    contentScriptOptions : contentScriptData,
    contentStyleFile: [
        data.url('style.css')
    ],
    contentScriptFile: [
        data.url("snuownd.js"),
        data.url("handlebars-v3.0.3.js"),
        data.url("script.js"),
    ],
    onAttach: function(worker) {
exports.testGetAndSet = function(assert) {
  let svc = Cc["@mozilla.org/preferences-service;1"].
            getService(Ci.nsIPrefService).
            getBranch(null);
  svc.setCharPref("test_set_get_pref", "a normal string");
  assert.equal(prefs.get("test_set_get_pref"), "a normal string",
                   "preferences-service should read from " +
                   "application-wide preferences service");

  prefs.set("test_set_get_pref.integer", 1);
  assert.equal(prefs.get("test_set_get_pref.integer"), 1,
                   "set/get integer preference should work");

  assert.equal(
      prefs.keys("test_set_get_pref").sort().toString(),
      ["test_set_get_pref.integer","test_set_get_pref"].sort().toString(),
      "the key list is correct");

  prefs.set("test_set_get_number_pref", 42);
  assert.throws(
    () => prefs.set("test_set_get_number_pref", 3.14159),
    /cannot store non-integer number: 3.14159/,
    "setting a float preference should raise an error"
  );
  assert.equal(prefs.get("test_set_get_number_pref"),
               42,
               "bad-type write attempt should not overwrite");

  // 0x80000000 (bad), 0x7fffffff (ok), -0x80000000 (ok), -0x80000001 (bad)
  assert.throws(
    () => prefs.set("test_set_get_number_pref", 0x80000000),
    /32\-bit/,
    "setting an int pref above 2^31-1 shouldn't work"
  );

  assert.equal(prefs.get("test_set_get_number_pref"), 42,
                   "out-of-range write attempt should not overwrite 1");

  prefs.set("test_set_get_number_pref", 0x7fffffff);
  assert.equal(prefs.get("test_set_get_number_pref"),
               0x7fffffff,
               "in-range write attempt should work 1");

  prefs.set("test_set_get_number_pref", -0x80000000);
  assert.equal(prefs.get("test_set_get_number_pref"),
               -0x80000000,
               "in-range write attempt should work 2");
  assert.throws(
    () => prefs.set("test_set_get_number_pref", -0x80000001),
    /32\-bit/,
    "setting an int pref below -(2^31) shouldn't work"
  );
  assert.equal(prefs.get("test_set_get_number_pref"), -0x80000000,
                   "out-of-range write attempt should not overwrite 2");


  prefs.set("test_set_get_pref.string", "foo");
  assert.equal(prefs.get("test_set_get_pref.string"), "foo",
                   "set/get string preference should work");

  prefs.set("test_set_get_pref.boolean", true);
  assert.equal(prefs.get("test_set_get_pref.boolean"), true,
                   "set/get boolean preference should work");

  prefs.set("test_set_get_unicode_pref", String.fromCharCode(960));
  assert.equal(prefs.get("test_set_get_unicode_pref"),
                   String.fromCharCode(960),
                   "set/get unicode preference should work");

  [ null, [], undefined ].forEach((value) => {
    assert.throws(
      () => prefs.set("test_set_pref", value),
      new RegExp("can't set pref test_set_pref to value '" + value + "'; " +
       "it isn't a string, number, or boolean", "i"),
      "Setting a pref to " + uneval(value) + " should raise error"
    );
  });
};
Esempio n. 8
0
// Handle messages from WebExtension
function webext_replyHandler(message)
{
    if(message.type == "settings.migrate")
    {
        if(preferencesService.get("*****@*****.**") != undefined)
        {
           webext_sendChangedSetting("compact");
           webext_sendChangedSetting("debug");
           webext_sendChangedSetting("hideInFullscreen");
           webext_sendChangedSetting("right");
           webext_sendChangedSetting("tabtoolbarPosition");
           webext_sendChangedSetting("theme");
           webext_sendChangedSetting("toggleDisplayHotkey");
           webext_sendChangedSetting("width");
           preferencesService.reset("*****@*****.**");
        }
        else
        {
            // Delete all settings
            var prefKeys = preferencesService.keys("extensions.@verticaltabsreloaded.");
            for (var i = 0; i < prefKeys.length; i++)
            {
                preferencesService.reset(prefKeys[i]);
            }
        }
    }

    if(message.type == "settings.post")
    {
        // Get settings from WebExt
        debugOutput(message.name + " new value SDK: " + message.value);
        observPrefs(message.name);
    }

    if(message.type == "settings.post-all")
    {
        // Get all settings from WebExt
        webextPreferences = message.value;
        if(sdk_inited == "prepared")
        {
            sdk_inited = true;
            sdk_init();
        }
        else if(sdk_inited == false)
        {
            sdk_inited = "prepared";
        }

        observPrefs("");
    }

    if(message.type == "settings.toggleDrawInTitlebar")
    {
		// Toggle function of browser.tabs.drawInTitlebar for preference page
		if(preferencesService.get("browser.tabs.drawInTitlebar", true))
		{
			preferencesService.set("browser.tabs.drawInTitlebar", false);
		}
		else
		{
			preferencesService.set("browser.tabs.drawInTitlebar", true);
		}
    }

	if(message.type == "event.fullscreen")
	{
		let windowID = windowUtils.getOuterId(windowUtils.getToplevelWindow(windowUtils.getFocusedWindow()));
		GLOBAL_SCOPE["vt"+windowID].changeFullscreenMode(message.value);
	}

	if(message.type == "event.toggleTabbrowser")
	{
		let windowID = windowUtils.getOuterId(windowUtils.getToplevelWindow(windowUtils.getFocusedWindow()));
		GLOBAL_SCOPE["vt"+windowID].toggleDisplayState();
	}
}