Skip to content

Instantly share code, notes, and snippets.

@kmaglione
Created February 28, 2013 23:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kmaglione/78ab84c967c4c5b0b286 to your computer and use it in GitHub Desktop.
Save kmaglione/78ab84c967c4c5b0b286 to your computer and use it in GitHub Desktop.
diff -ur review-1/bootstrap.js review-2/bootstrap.js
--- review-1/bootstrap.js 2011-10-18 15:21:50.000000000 -0700
+++ review-2/bootstrap.js 2013-02-27 14:47:44.000000000 -0800
@@ -70,6 +70,15 @@
if (engine == null)
return;
+ // Core code unfortunately depends on this being a
+ // nsIPrefLocalizedString
+ // The properties file parser drops trailing white space, which we
+ // require, so we replace spaces with \u0020, which the properties
+ // file parser will replace with ordinary spaces after the elision
+ // happens.
+ setPref(PREF_ENGINENAME, 'data:text/plain,' + encodeURIComponent(
+ PREF_ENGINENAME + ' = ' + engineName.replace(/ /g, "\\u0020")));
+
// Move it to the desired position
Services.search.moveEngine(engine, SEARCH_POSITION);
@@ -82,9 +91,33 @@
}
// Customize the default prefs
+let changedPrefs = {};
+let originalPrefs = {};
function setPref(pref, value) {
- let branch = Services.prefs.getBranch("");
+ let branch = Services.prefs.getDefaultBranch("");
+ let userBranch = Services.prefs.getBranch("");
+
+ if (branch.getPrefType(pref) == branch.PREF_STRING)
+ originalPrefs[pref] = branch.getCharPref(pref);
+ changedPrefs[pref] = value;
+
branch.setCharPref(pref, value);
+ if (justInstalled)
+ userBranch.clearUserPref(pref);
+ else if (userBranch.prefHasUserValue(pref)
+ && userBranch.getPrefType(pref) == branch.PREF_STRING
+ && userBranch.getCharPref(pref) == value)
+ // Clear the user value if it's the same, so prefHasUserValue
+ // returns false.
+ userBranch.clearUserPref(pref);
+}
+function restorePrefs() {
+ let branch = Services.prefs.getDefaultBranch("");
+ for (let [pref, value] in Iterator(originalPrefs)) {
+ if (branch.getPrefType(pref) == branch.PREF_STRING
+ && branch.getCharPref(pref) == changedPrefs[pref])
+ branch.setCharPref(pref, value);
+ }
}
// Open a new tab for the landing page and select it
@@ -108,7 +141,7 @@
});
// Always remove the landing page when uninstalling
- unload(function() gBrowser.removeTab(landingTab));
+ unload(function() gBrowser.removeTab(landingTab), window);
// Add the landing page if not open yet
if (landingTab == null)
@@ -120,7 +153,7 @@
else {
let {BrowserUI} = window;
let tab = BrowserUI.newTab(LANDING_PAGE);
- unload(function() BrowserUI.closeTab(tab));
+ unload(function() BrowserUI.closeTab(tab), window);
}
// Only show the landing page once
@@ -141,11 +174,10 @@
addSearchEngine();
// Change some prefs to custom search on install
- if (justInstalled) {
- setPref(PREF_KEYWORD, SEARCH_KEYWORD_URL);
- setPref(PREF_HOME, SEARCH_HOME_URL);
- setPref(PREF_HOME_RESET, SEARCH_HOME_URL);
- }
+ unload(restorePrefs);
+ setPref(PREF_KEYWORD, SEARCH_KEYWORD_URL);
+ setPref(PREF_HOME, SEARCH_HOME_URL);
+ setPref(PREF_HOME_RESET, SEARCH_HOME_URL);
// Open the landing page
watchWindows(showLandingPage);
diff -ur review-1/scripts/helper.js review-2/scripts/helper.js
--- review-1/scripts/helper.js 2011-10-18 15:18:59.000000000 -0700
+++ review-2/scripts/helper.js 2013-02-07 14:53:48.000000000 -0800
@@ -45,6 +45,7 @@
const PREF_HOME = "browser.startup.homepage";
const PREF_HOME_RESET = "browser.startup.homepage_reset";
const PREF_KEYWORD = "keyword.URL";
+const PREF_ENGINENAME = "browser.search.defaultenginename";
const SEARCH_DOMAIN = "www.bing.com";
const SEARCH_ICON = "data:image/x-icon;base64,AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAVpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8ysf97zf%2B24%2F%2FF6f%2FF6f%2FF6f%2BK0%2F9QvP8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8krP%2BZ2P%2F%2F%2F%2F%2F%2F%2F%2F%2Fw%2Bf%2FF6f%2FF6f%2Fi9P%2F%2F%2F%2F%2F%2F%2F%2F%2FT7v9Bt%2F8Vpv8Vpv8Vpv8Vpv%2FT7v%2F%2F%2F%2F%2Fw%2Bf97zf8Vpv8Vpv8Vpv8Vpv9QvP%2FT7v%2F%2F%2F%2F%2Fw%2Bf9Bt%2F8Vpv8Vpv97zf%2F%2F%2F%2F%2F%2F%2F%2F9QvP8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8krP%2Fi9P%2F%2F%2F%2F%2Fi9P8Vpv8Vpv%2B24%2F%2F%2F%2F%2F%2Fi9P8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv%2BK0%2F%2F%2F%2F%2F%2F%2F%2F%2F8Vpv8Vpv%2FF6f%2F%2F%2F%2F%2F%2F%2F%2F8krP8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv%2Bn3v%2F%2F%2F%2F%2Fw%2Bf8Vpv8Vpv%2FF6f%2F%2F%2F%2F%2F%2F%2F%2F%2Bn3v8krP8Vpv8Vpv8Vpv8Vpv8Vpv9tx%2F%2F%2F%2F%2F%2F%2F%2F%2F%2BZ2P8Vpv8Vpv%2FF6f%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2Fi9P%2BK0%2F9QvP9QvP9tx%2F%2FF6f%2F%2F%2F%2F%2F%2F%2F%2F%2Bn3v8Vpv8Vpv8Vpv%2FF6f%2F%2F%2F%2F%2FT7v%2BZ2P%2Fi9P%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2B24%2F9QvP8Vpv8Vpv8Vpv8Vpv%2FF6f%2F%2F%2F%2F%2FF6f8Vpv8Vpv8krP9QvP9QvP9Bt%2F8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv%2FF6f%2F%2F%2F%2F%2FF6f8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv9Bt%2F9QvP9Bt%2F8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8AAHBsAABhdAAAbiAAAHJ0AABsaQAAdGkAACBDAABlbgAAUEEAAEVYAAAuQwAAOy4AAEU7AABBVAAAQ00AAC5W";
const SEARCH_HOME_URL = "http://www.bing.com/?pc=MOZO";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment