diff --git a/mozilla/browser/base/content/browserconfig.properties b/mozilla/browser/base/content/browserconfig.properties new file mode 100644 index 00000000000..390549e098a --- /dev/null +++ b/mozilla/browser/base/content/browserconfig.properties @@ -0,0 +1,3 @@ +# Do NOT localize or otherwise change these values +#expand browser.startup.homepage=http://start.mozilla.org/firefox/?__AB_CD__ +#expand browser.startup.homepage_reset=http://start.mozilla.org/firefox/?__AB_CD__ diff --git a/mozilla/browser/base/content/searchconfig.properties b/mozilla/browser/base/content/searchconfig.properties index d20b9715d05..fedab623fe0 100644 --- a/mozilla/browser/base/content/searchconfig.properties +++ b/mozilla/browser/base/content/searchconfig.properties @@ -1,6 +1,8 @@ # Do NOT localize or otherwise change these values -browser.search.param.Google.1.name=client -browser.search.param.Google.1.custom=firefox -browser.search.param.Google.1.default=firefox -browser.search.param.Google.release.name=rls -browser.search.param.Google.release.value=org.mozilla:%S:unofficial +browser.search.param.Google.1.custom=client=firefox +browser.search.param.Google.1.default=client=firefox +browser.search.param.Google.release=rls=org.mozilla:%S:unofficial + +browser.search.order.Yahoo.1=client=firefox-1-unofficial +browser.search.order.Yahoo.2=client=firefox-2-unofficial +browser.search.order.Yahoo=client=firefox-3-unofficial diff --git a/mozilla/other-licenses/branding/firefox/content/browserconfig.properties b/mozilla/other-licenses/branding/firefox/content/browserconfig.properties new file mode 100644 index 00000000000..390549e098a --- /dev/null +++ b/mozilla/other-licenses/branding/firefox/content/browserconfig.properties @@ -0,0 +1,3 @@ +# Do NOT localize or otherwise change these values +#expand browser.startup.homepage=http://start.mozilla.org/firefox/?__AB_CD__ +#expand browser.startup.homepage_reset=http://start.mozilla.org/firefox/?__AB_CD__ diff --git a/mozilla/other-licenses/branding/firefox/content/searchconfig.properties b/mozilla/other-licenses/branding/firefox/content/searchconfig.properties index 9c0f32ca2a2..9600f316263 100644 --- a/mozilla/other-licenses/branding/firefox/content/searchconfig.properties +++ b/mozilla/other-licenses/branding/firefox/content/searchconfig.properties @@ -1,7 +1,9 @@ # Do NOT localize or otherwise change these values -browser.search.param.Google.1.name=client -browser.search.param.Google.1.custom=firefox -browser.search.param.Google.1.default=firefox-a -browser.search.param.Google.release.name=rls -browser.search.param.Google.release.value=org.mozilla:%S:official +browser.search.param.Google.1.custom=client=firefox +browser.search.param.Google.1.default=client=firefox-a +browser.search.param.Google.release=rls=org.mozilla:%S:official + +browser.search.order.Yahoo.1=client=firefox-1-official +browser.search.order.Yahoo.2=client=firefox-2-official +browser.search.order.Yahoo=client=firefox-3-official diff --git a/mozilla/xpfe/bootstrap/browser-prefs.js b/mozilla/xpfe/bootstrap/browser-prefs.js index cad11f05a3c..6c5f1545920 100644 --- a/mozilla/xpfe/bootstrap/browser-prefs.js +++ b/mozilla/xpfe/bootstrap/browser-prefs.js @@ -102,7 +102,6 @@ pref("browser.urlbar.clickSelectsAll", true); // when clickSelectsAll=true, does it also apply when the click is past end of text? pref("browser.urlbar.clickAtEndSelects", true); -pref("browser.search.param.Google.1.name", "chrome://navigator/content/searchconfig.properties"); pref("browser.search.param.Google.1.custom", "chrome://navigator/content/searchconfig.properties"); pref("browser.search.param.Google.1.default", "chrome://navigator/content/searchconfig.properties"); diff --git a/mozilla/xpfe/browser/resources/content/searchconfig.properties b/mozilla/xpfe/browser/resources/content/searchconfig.properties index 724d987e321..f6dcbe92b9b 100644 --- a/mozilla/xpfe/browser/resources/content/searchconfig.properties +++ b/mozilla/xpfe/browser/resources/content/searchconfig.properties @@ -1,6 +1,5 @@ # Do NOT localize or otherwise change these values -browser.search.param.Google.1.name=client -browser.search.param.Google.1.custom=mozilla -browser.search.param.Google.1.default=mozilla -browser.search.param.Google.release.name=rls -browser.search.param.Google.release.value=org.mozilla:%S:unofficial +browser.search.param.Google.1.custom=client=mozilla +browser.search.param.Google.1.default=client=mozilla +browser.search.param.Google.release=rls=org.mozilla:%S:unofficial + diff --git a/mozilla/xpfe/components/search/src/nsInternetSearchService.cpp b/mozilla/xpfe/components/search/src/nsInternetSearchService.cpp index 53cdb6d4798..a62aff7cf96 100755 --- a/mozilla/xpfe/components/search/src/nsInternetSearchService.cpp +++ b/mozilla/xpfe/components/search/src/nsInternetSearchService.cpp @@ -60,6 +60,7 @@ #include "nsIDirectoryService.h" #include "nsDirectoryServiceDefs.h" #include "nsAppDirectoryServiceDefs.h" +#include "nsCOMArray.h" #include "nsCRT.h" #include "nsEnumeratorUtils.h" #include "nsIRDFRemoteDataSource.h" @@ -368,6 +369,7 @@ nsCOMPtr InternetSearchDataSource::mUpdateArray; nsCOMPtr InternetSearchDataSource::mLocalstore; nsCOMPtr InternetSearchDataSource::categoryDataSource; PRBool InternetSearchDataSource::gEngineListBuilt = PR_FALSE; +PRBool InternetSearchDataSource::gReorderedEngineList = PR_FALSE; nsCOMPtr InternetSearchDataSource::mBackgroundLoadGroup; nsCOMPtr InternetSearchDataSource::mLoadGroup; nsCOMPtr InternetSearchDataSource::prefs; @@ -1201,7 +1203,94 @@ InternetSearchDataSource::GetTarget(nsIRDFResource *source, return(rv); } +#ifdef MOZ_PHOENIX +void +InternetSearchDataSource::ReorderEngineList() +{ + // XXXben - a temporary, inelegant solution to search list ordering until + // after 1.0 when we replace all of this with something better + // suited to our needs. + nsresult rv; + nsCOMArray engineList; + // Load all data for sherlock files... + nsCOMPtr engines; + rv = GetTargets(kNC_SearchEngineRoot, kNC_Child, PR_TRUE, getter_AddRefs(engines)); + if (NS_FAILED(rv)) return; // Not Fatal. + + do { + PRBool hasMore; + engines->HasMoreElements(&hasMore); + if (!hasMore) + break; + + nsCOMPtr supp; + engines->GetNext(getter_AddRefs(supp)); + nsCOMPtr engineResource(do_QueryInterface(supp)); + + nsCOMPtr data; + FindData(engineResource, getter_AddRefs(data)); + } + while (PR_TRUE); + + // Build the ordered items first... + nsCOMPtr pserv(do_QueryInterface(prefs)); + char prefNameBuf[1096]; + PRInt32 i = 0; + do { + ++i; + sprintf(prefNameBuf, "browser.search.order.%d", i); + + nsCOMPtr engineName; + rv = pserv->GetComplexValue(prefNameBuf, + NS_GET_IID(nsIPrefLocalizedString), + getter_AddRefs(engineName)); + if (NS_FAILED(rv)) break; + + nsXPIDLString data; + engineName->GetData(getter_Copies(data)); + + nsCOMPtr engineNameLiteral; + gRDFService->GetLiteral(data, getter_AddRefs(engineNameLiteral)); + + nsCOMPtr engineResource; + rv = mInner->GetSource(kNC_Name, engineNameLiteral, PR_TRUE, getter_AddRefs(engineResource)); + if (NS_FAILED(rv)) continue; + + engineList.AppendObject(engineResource); + } + while (PR_TRUE); + + // Now add the rest... + rv = GetTargets(kNC_SearchEngineRoot, kNC_Child, PR_TRUE, getter_AddRefs(engines)); + if (NS_FAILED(rv)) return; // Not Fatal. + + do { + PRBool hasMore; + engines->HasMoreElements(&hasMore); + if (!hasMore) + break; + + nsCOMPtr supp; + engines->GetNext(getter_AddRefs(supp)); + nsCOMPtr engineResource(do_QueryInterface(supp)); + + if (engineList.IndexOfObject(engineResource) == -1) + engineList.AppendObject(engineResource); + + // Unhook the item from the list, so we can rebuild it in the right + // order. Failures are benign. + Unassert(kNC_SearchEngineRoot, kNC_Child, engineResource); + } + while (PR_TRUE); + + PRInt32 engineCount = engineList.Count(); + for (i = 0; i < engineCount; ++i) + Assert(kNC_SearchEngineRoot, kNC_Child, engineList[i], PR_TRUE); + + gReorderedEngineList = PR_TRUE; +} +#endif NS_IMETHODIMP InternetSearchDataSource::GetTargets(nsIRDFResource *source, @@ -1265,7 +1354,7 @@ InternetSearchDataSource::GetTargets(nsIRDFResource *source, DeferredInit(); } - rv = mInner->GetTargets(source, property, tv, targets); + rv = mInner->GetTargets(source, property, tv, targets); } if (isSearchURI(source)) { @@ -4219,8 +4308,6 @@ InternetSearchDataSource::SaveEngineInfoIntoGraph(nsIFile *file, nsIFile *icon, return(NS_OK); } - - nsresult InternetSearchDataSource::GetSearchEngineList(nsIFile *searchDir, PRBool isSystemSearchFile, PRBool checkMacFileType) @@ -4335,12 +4422,14 @@ InternetSearchDataSource::GetSearchEngineList(nsIFile *searchDir, SaveEngineInfoIntoGraph(dirEntry, iconFile, nsnull, nsnull, isSystemSearchFile, checkMacFileType); } - + +#ifdef MOZ_PHOENIX + if (!gReorderedEngineList) + ReorderEngineList(); +#endif return(rv); } - - nsresult InternetSearchDataSource::ReadFileContents(nsILocalFile *localFile, nsString& sourceContents) { @@ -4756,36 +4845,21 @@ InternetSearchDataSource::GetInputs(const PRUnichar *dataUni, nsString &engineNa if (NS_FAILED(rv)) break; - nsCOMPtr parameterName; - rv = pb->GetComplexValue("name", - NS_GET_IID(nsIPrefLocalizedString), - getter_AddRefs(parameterName)); - if (NS_FAILED(rv)) + nsCOMPtr parameter; + nsXPIDLString parameterStr; + rv = pb->GetComplexValue(engineIsNotDefault ? "custom" : "default", + NS_GET_IID(nsIPrefLocalizedString), + getter_AddRefs(parameter)); + if (NS_FAILED(rv)) break; - nsXPIDLString parameterNameStr; - parameterName->GetData(getter_Copies(parameterNameStr)); - - if (!parameterNameStr.IsEmpty()) + parameter->GetData(getter_Copies(parameterStr)); + + if (!parameterStr.IsEmpty()) { if (!input.IsEmpty()) input.Append(NS_LITERAL_STRING("&")); - - input += parameterNameStr; - - nsCOMPtr parameterValue; - nsXPIDLString parameterValueStr; - rv = pb->GetComplexValue(engineIsNotDefault ? "custom" : "default", - NS_GET_IID(nsIPrefLocalizedString), - getter_AddRefs(parameterValue)); - if (NS_SUCCEEDED(rv)) - parameterValue->GetData(getter_Copies(parameterValueStr)); - - if (!parameterValueStr.IsEmpty()) - { - input.Append(NS_LITERAL_STRING("=")); - input += parameterValueStr; - } + input += parameterStr; } } while (1); @@ -4803,28 +4877,75 @@ InternetSearchDataSource::GetInputs(const PRUnichar *dataUni, nsString &engineNa nsAutoString keyTemplate(NS_LITERAL_STRING("browser.search.param.")); keyTemplate += engineName; - keyTemplate.Append(NS_LITERAL_STRING(".release.")); + keyTemplate.Append(NS_LITERAL_STRING(".release")); - nsAutoString releaseNameKey = keyTemplate + NS_LITERAL_STRING("name"); - nsAutoString releaseValueKey = keyTemplate + NS_LITERAL_STRING("value"); - - nsXPIDLString releaseName, releaseValue; - bundle->GetStringFromName(releaseNameKey.get(), getter_Copies(releaseName)); + nsXPIDLString releaseValue; const PRUnichar* strings[] = { langName.get() }; - bundle->FormatStringFromName(releaseValueKey.get(), strings, 1, getter_Copies(releaseValue)); + bundle->FormatStringFromName(keyTemplate.get(), strings, 1, getter_Copies(releaseValue)); - if (!releaseName.IsEmpty()) + if (!releaseValue.IsEmpty()) { if (!input.IsEmpty()) input.Append(NS_LITERAL_STRING("&")); - input += releaseName; + input += releaseValue; + } - if (!releaseValue.IsEmpty()) + // Now add order parameters. + nsCOMPtr pb; + rv = pserv->GetBranch("", getter_AddRefs(pb)); + if (NS_FAILED(rv)) return rv; + + i = 0; + do { + ++i; + sprintf(prefNameBuf, "browser.search.order.%d", i); + + nsCOMPtr orderEngineName; + rv = pb->GetComplexValue(prefNameBuf, + NS_GET_IID(nsIPrefLocalizedString), + getter_AddRefs(orderEngineName)); + if (NS_FAILED(rv)) + break; + + nsXPIDLString orderEngineNameStr; + orderEngineName->GetData(getter_Copies(orderEngineNameStr)); + if (orderEngineNameStr.Equals(engineName)) + break; + } + while (PR_TRUE); + + if (NS_SUCCEEDED(rv)) + { + sprintf(prefNameBuf, "browser.search.order.%s.%d", + NS_ConvertUCS2toUTF8(engineName).get(), i); + + nsCOMPtr orderParam; + rv = rootBranch->GetComplexValue(prefNameBuf, + NS_GET_IID(nsIPrefLocalizedString), + getter_AddRefs(orderParam)); + if (NS_FAILED(rv)) { - input.Append(NS_LITERAL_STRING("=")); - input += releaseValue; + sprintf(prefNameBuf, "browser.search.order.%s", + NS_ConvertUCS2toUTF8(engineName).get(), i); + rv = rootBranch->GetComplexValue(prefNameBuf, + NS_GET_IID(nsIPrefLocalizedString), + getter_AddRefs(orderParam)); + } + + if (NS_SUCCEEDED(rv)) + { + nsXPIDLString orderParamStr; + orderParam->GetData(getter_Copies(orderParamStr)); + + if (!orderParamStr.IsEmpty()) + { + if (!input.IsEmpty()) + input.Append(NS_LITERAL_STRING("&")); + input += orderParamStr; + } } } + rv = NS_OK; } diff --git a/mozilla/xpfe/components/search/src/nsInternetSearchService.h b/mozilla/xpfe/components/search/src/nsInternetSearchService.h index 69268de0224..7ef53d0fec9 100644 --- a/mozilla/xpfe/components/search/src/nsInternetSearchService.h +++ b/mozilla/xpfe/components/search/src/nsInternetSearchService.h @@ -62,6 +62,9 @@ private: static PRInt32 gRefCnt; static PRInt32 gBrowserSearchMode; static PRBool gEngineListBuilt; +#ifdef MOZ_PHOENIX + static PRBool gReorderedEngineList; +#endif // pseudo-constants static nsIRDFResource *kNC_SearchResult; @@ -175,6 +178,9 @@ friend int PR_CALLBACK searchModePrefCallback(const char *pref, void *aClosur nsresult filterSite(nsIRDFResource *src); nsresult clearFilters(void); PRBool isSearchResultFiltered(const nsString &href); +#ifdef MOZ_PHOENIX + void ReorderEngineList(); +#endif static void FireTimer(nsITimer* aTimer, void* aClosure);