From cbf9825b5c2935eba522556200d91003d32b4136 Mon Sep 17 00:00:00 2001 From: Mike de Boer Date: Tue, 9 Apr 2013 17:12:27 -0700 Subject: [PATCH] Bug 738818 part 3: Make changing currentEngine also change defaultEngine, including for about:home. r=fryn ui-r=limi sr=gavin --- browser/base/content/abouthome/aboutHome.js | 33 +++++++++++------- browser/base/jar.mn | 2 +- .../search/content/engineManager.js | 1 + browser/components/search/content/search.xml | 11 ++++-- browser/modules/AboutHomeUtils.jsm | 34 +++++++++---------- 5 files changed, 47 insertions(+), 34 deletions(-) diff --git a/browser/base/content/abouthome/aboutHome.js b/browser/base/content/abouthome/aboutHome.js index 6d3a3dd2b3c..5ec0d94159f 100644 --- a/browser/base/content/abouthome/aboutHome.js +++ b/browser/base/content/abouthome/aboutHome.js @@ -256,19 +256,6 @@ function onSearchSubmit(aEvent) function setupSearchEngine() { - let searchEngineName = document.documentElement.getAttribute("searchEngineName"); - let searchEngineInfo = SEARCH_ENGINES[searchEngineName]; - if (!searchEngineInfo) { - return; - } - - // Add search engine logo. - if (searchEngineInfo.image) { - let logoElt = document.getElementById("searchEngineLogo"); - logoElt.src = searchEngineInfo.image; - logoElt.alt = searchEngineName; - } - // The "autofocus" attribute doesn't focus the form element // immediately when the element is first drawn, so the // attribute is also used for styling when the page first loads. @@ -277,6 +264,26 @@ function setupSearchEngine() searchText.removeEventListener("blur", searchText_onBlur); searchText.removeAttribute("autofocus"); }); + + let searchEngineName = document.documentElement.getAttribute("searchEngineName"); + let searchEngineInfo = SEARCH_ENGINES[searchEngineName]; + let logoElt = document.getElementById("searchEngineLogo"); + + // Add search engine logo. + if (searchEngineInfo && searchEngineInfo.image) { + logoElt.parentNode.hidden = false; + logoElt.src = searchEngineInfo.image; +#ifdef XP_MACOSX + if (searchEngineInfo.imageHD && !window.matchMedia("(max-resolution: 1dppx)").matches) + logoElt.src = searchEngineInfo.imageHD; +#endif + logoElt.alt = searchEngineName; + searchText.placeholder = ""; + } + else { + logoElt.parentNode.hidden = true; + searchText.placeholder = searchEngineName; + } } diff --git a/browser/base/jar.mn b/browser/base/jar.mn index b27677f7219..46809145220 100644 --- a/browser/base/jar.mn +++ b/browser/base/jar.mn @@ -20,7 +20,7 @@ browser.jar: content/browser/aboutDialog.css (content/aboutDialog.css) content/browser/aboutRobots.xhtml (content/aboutRobots.xhtml) content/browser/abouthome/aboutHome.xhtml (content/abouthome/aboutHome.xhtml) - content/browser/abouthome/aboutHome.js (content/abouthome/aboutHome.js) +* content/browser/abouthome/aboutHome.js (content/abouthome/aboutHome.js) * content/browser/abouthome/aboutHome.css (content/abouthome/aboutHome.css) content/browser/abouthome/noise.png (content/abouthome/noise.png) content/browser/abouthome/snippet1.png (content/abouthome/snippet1.png) diff --git a/browser/components/search/content/engineManager.js b/browser/components/search/content/engineManager.js index ff8aa42737f..92b6d59b778 100644 --- a/browser/components/search/content/engineManager.js +++ b/browser/components/search/content/engineManager.js @@ -45,6 +45,7 @@ var gEngineManagerDialog = { break; case "engine-removed": case "engine-current": + case "engine-default": // Not relevant break; } diff --git a/browser/components/search/content/search.xml b/browser/components/search/content/search.xml index eeb36d718e1..cd79d761dd1 100644 --- a/browser/components/search/content/search.xml +++ b/browser/components/search/content/search.xml @@ -121,8 +121,12 @@ document.getAnonymousElementByAttribute(this, "anonid", "searchbar-engine-button"); - + + = 0 && newIndex < this.engines.length) + if (newIndex >= 0 && newIndex < this.engines.length) { this.currentEngine = this.engines[newIndex]; + } aEvent.preventDefault(); aEvent.stopPropagation(); diff --git a/browser/modules/AboutHomeUtils.jsm b/browser/modules/AboutHomeUtils.jsm index 81bb3c730fd..87592bd8b76 100644 --- a/browser/modules/AboutHomeUtils.jsm +++ b/browser/modules/AboutHomeUtils.jsm @@ -16,25 +16,25 @@ const SNIPPETS_URL_PREF = "browser.aboutHomeSnippets.updateUrl"; const STARTPAGE_VERSION = 4; this.AboutHomeUtils = { - get snippetsVersion() STARTPAGE_VERSION -}; + get snippetsVersion() STARTPAGE_VERSION, -/** - * Returns an object containing the name and searchURL of the original default - * search engine. - */ -XPCOMUtils.defineLazyGetter(AboutHomeUtils, "defaultSearchEngine", function() { - let defaultEngine = Services.search.defaultEngine; - let submission = defaultEngine.getSubmission("_searchTerms_", null, "homepage"); - if (submission.postData) { - throw new Error("Home page does not support POST search engines."); + /** + * Returns an object containing the name and searchURL of the original default + * search engine. + */ + get defaultSearchEngine() { + let defaultEngine = Services.search.defaultEngine; + 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 + }); } - - return Object.freeze({ - name: defaultEngine.name, - searchURL: submission.uri.spec - }); -}); +}; /** * Returns the URL to fetch snippets from, in the urlFormatter service format.