browser/modules/AboutHomeUtils.jsm
author Matthew Noorenberghe <mozilla@noorenberghe.ca>
Wed, 04 Apr 2012 02:50:39 -0700
changeset 131547 b061b91098b29338d6bd0eb624907224949640fa
parent 119882 5ce71981e005a52d4cb0b831ad3db9284f2fb356
child 133590 f50b8afa272f4bc754474fba8be3663856f154f2
permissions -rw-r--r--
Bug 590068 - Use search service to keep track of additional search params in about:home. r=gavin,mak

/* 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";

this.EXPORTED_SYMBOLS = [ "AboutHomeUtils" ];

Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
Components.utils.import("resource://gre/modules/Services.jsm");

// Url to fetch snippets, in the urlFormatter service format.
const SNIPPETS_URL_PREF = "browser.aboutHomeSnippets.updateUrl";

// Should be bumped up if the snippets content format changes.
const STARTPAGE_VERSION = 3;

this.AboutHomeUtils = new Object();

/**
 * Returns an object containing the name and searchURL of the original default
 * search engine.
 */
XPCOMUtils.defineLazyGetter(AboutHomeUtils, "defaultSearchEngine", function() {
  let defaultEngine = Services.search.originalDefaultEngine;
  let submission = defaultEngine.getSubmission("_searchTerms_", null, "homepage");
  if (submission.postData) {
    throw new Error("Home page does not support POST search engines.");
  }

  return Object.freeze({
    name: defaultEngine.name,
    searchURL: submission.uri.spec
  });
});

/**
 * Returns the URL to fetch snippets from, in the urlFormatter service format.
 */
XPCOMUtils.defineLazyGetter(AboutHomeUtils, "snippetsURL", function() {
  let updateURL = Services.prefs
                          .getCharPref(SNIPPETS_URL_PREF)
                          .replace("%STARTPAGE_VERSION%", STARTPAGE_VERSION);
  return Services.urlFormatter.formatURL(updateURL);
});