diff options
author | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-14 21:36:02 +0000 |
---|---|---|
committer | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-14 21:36:02 +0000 |
commit | 623de74f174b29368b6e0c87527c84955212dddd (patch) | |
tree | 389eb3b7e11b1d84e3bbcc30defc6c5219e1327e | |
parent | 004b37467a9957faa835512904381b158501ab9d (diff) | |
download | chromium_src-623de74f174b29368b6e0c87527c84955212dddd.zip chromium_src-623de74f174b29368b6e0c87527c84955212dddd.tar.gz chromium_src-623de74f174b29368b6e0c87527c84955212dddd.tar.bz2 |
Clean up TemplateURL prepopulate data:
* Replace a pair of overlapping functions in the API with two distinct accessors for relevant pieces of information about prepopulated URLs. One key side effect here is that we no longer return TemplateURL*s from these, which will make the upcoming refactoring changes slightly cleaner.
* Make the implementation of these a bit more robust w.r.t. determining if a provided URL corresponds to Google. This will also be important later as we'll want to be able to match a hand-coded "google.co.uk" entry against an auto-generated "google.de" entry (or similar).
* Remove a bunch of string conversions, as well as a lot of passing of raw C-style string pointers.
* Remove using statements.
* Remove two obscure engines which have the same hostname as another, different engine. These cause problems when we ask for the name or type of an engine because the answer we get back is basically indeterminate. I don't think either of these is very important (they lived at slots 4 and 5 in their respective countries) so just gut them.
BUG=none
TEST=none
Review URL: https://chromiumcodereview.appspot.com/9705021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@126746 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/app/generated_resources.grd | 4 | ||||
-rw-r--r-- | chrome/browser/google/google_util.cc | 40 | ||||
-rw-r--r-- | chrome/browser/google/google_util.h | 3 | ||||
-rw-r--r-- | chrome/browser/protector/histograms.cc | 15 | ||||
-rw-r--r-- | chrome/browser/search_engines/template_url_prepopulate_data.cc | 910 | ||||
-rw-r--r-- | chrome/browser/search_engines/template_url_prepopulate_data.h | 25 | ||||
-rw-r--r-- | chrome/browser/search_engines/template_url_prepopulate_data_unittest.cc | 113 |
7 files changed, 505 insertions, 605 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index d481429..071409d 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd @@ -1415,6 +1415,10 @@ are declared in build/common.gypi. <ph name="ENGINE_NAME">$1<ex>Google</ex></ph> (Default) </message> + <message name="IDS_UNKNOWN_SEARCH_ENGINE_NAME" desc="The name given to a search engine for which we can't deduce any information (even a hostname)"> + Unknown engine + </message> + <message name="IDS_TIME_SECS_DEFAULT" desc="This is necessary for every language. This is the default for all the numbers NOT covered by special cases (singular, dual/two, few, many) some languages need. For CJK, Vietnamese, Turkish and Kannada, this is the only string necessary. For languages with singular-plural distinction, this is the generic plural. For Lithuanian, NUMBER_DEFAULT is 11 .. 19."> <ph name="NUMBER_DEFAULT"><ex>37</ex>#</ph> secs diff --git a/chrome/browser/google/google_util.cc b/chrome/browser/google/google_util.cc index f26ae83..d95b116 100644 --- a/chrome/browser/google/google_util.cc +++ b/chrome/browser/google/google_util.cc @@ -44,33 +44,11 @@ bool HasQueryParameter(const std::string& str) { return false; } -// True if |url| is an HTTP[S] request with host "[www.]google.<TLD>". +// True if |url| is an HTTP[S] request with host "[www.]google.<TLD>" and no +// explicit port. bool IsGoogleDomainUrl(const GURL& url) { - if (!url.is_valid()) - return false; - - // Make sure the scheme is valid. - if (!url.SchemeIs("http") && !url.SchemeIs("https")) - return false; - - // Make sure port is default for the respective scheme. - if (!url.port().empty()) - return false; - - // Accept only valid TLD. - size_t tld_length = net::RegistryControlledDomainService::GetRegistryLength( - url, false); - if (tld_length == 0 || tld_length == std::string::npos) - return false; - - // We only accept "[www.]google." in front of the TLD. - std::string host = url.host(); - host = host.substr(0, host.length() - tld_length); - if (!LowerCaseEqualsASCII(host, "www.google.") && - !LowerCaseEqualsASCII(host, "google.")) - return false; - - return true; + return url.is_valid() && (url.SchemeIs("http") || url.SchemeIs("https")) && + url.port().empty() && google_util::IsGoogleHostname(url.host()); } } // anonymous namespace @@ -164,6 +142,16 @@ bool GetReactivationBrand(std::string* brand) { #endif +bool IsGoogleHostname(const std::string& host) { + size_t tld_length = + net::RegistryControlledDomainService::GetRegistryLength(host, false); + if ((tld_length == 0) || (tld_length == std::string::npos)) + return false; + std::string host_minus_tld(host, 0, host.length() - tld_length); + return LowerCaseEqualsASCII(host_minus_tld, "www.google.") || + LowerCaseEqualsASCII(host_minus_tld, "google."); +} + bool IsGoogleHomePageUrl(const std::string& url) { GURL original_url(url); diff --git a/chrome/browser/google/google_util.h b/chrome/browser/google/google_util.h index cb7167b..e4d53b9 100644 --- a/chrome/browser/google/google_util.h +++ b/chrome/browser/google/google_util.h @@ -38,6 +38,9 @@ bool GetBrand(std::string* brand); // install. Returns false if the information is not available. bool GetReactivationBrand(std::string* brand); +// True if |host| is "[www.]google.<TLD>" with a valid TLD. +bool IsGoogleHostname(const std::string& host); + // True if |url| represents a valid Google home page URL. bool IsGoogleHomePageUrl(const std::string& url); diff --git a/chrome/browser/protector/histograms.cc b/chrome/browser/protector/histograms.cc index 1b5c3e2..2be23e2 100644 --- a/chrome/browser/protector/histograms.cc +++ b/chrome/browser/protector/histograms.cc @@ -5,7 +5,6 @@ #include "chrome/browser/protector/histograms.h" #include "base/memory/scoped_ptr.h" -#include "chrome/browser/search_engines/search_engine_type.h" #include "chrome/browser/search_engines/template_url.h" #include "chrome/browser/search_engines/template_url_prepopulate_data.h" @@ -42,16 +41,10 @@ const char kProtectorHistogramStartupSettingsTimeout[] = const int kProtectorMaxSearchProviderID = SEARCH_ENGINE_MAX; -int GetSearchProviderHistogramID(const TemplateURL* turl) { - if (!turl || !turl->url()) - return SEARCH_ENGINE_NONE; - scoped_ptr<TemplateURL> prepopulated_url( - TemplateURLPrepopulateData::FindPrepopulatedEngine(turl->url()->url())); - if (prepopulated_url.get()) - return static_cast<int>(prepopulated_url->search_engine_type()); - // If |turl| is not among the prepopulated providers, return - // SEARCH_ENGINE_OTHER as well. - return SEARCH_ENGINE_OTHER; +int GetSearchProviderHistogramID(const TemplateURL* t_url) { + return (t_url && t_url->url()) ? + TemplateURLPrepopulateData::GetEngineType(t_url->url()->url()) : + SEARCH_ENGINE_NONE; } } // namespace protector diff --git a/chrome/browser/search_engines/template_url_prepopulate_data.cc b/chrome/browser/search_engines/template_url_prepopulate_data.cc index 06fa6c6..d151017 100644 --- a/chrome/browser/search_engines/template_url_prepopulate_data.cc +++ b/chrome/browser/search_engines/template_url_prepopulate_data.cc @@ -11,11 +11,13 @@ #include "base/command_line.h" #include "base/memory/scoped_vector.h" #include "base/string16.h" +#include "base/string_piece.h" #include "base/string_util.h" #include "base/stl_util.h" #include "base/utf_string_conversions.h" #include "chrome/browser/google/google_util.h" #include "chrome/browser/prefs/pref_service.h" +#include "chrome/browser/profiles/profile.h" #include "chrome/browser/search_engines/search_engine_type.h" #include "chrome/browser/search_engines/search_terms_data.h" #include "chrome/browser/search_engines/template_url.h" @@ -23,7 +25,9 @@ #include "chrome/common/chrome_switches.h" #include "chrome/common/pref_names.h" #include "googleurl/src/gurl.h" +#include "grit/generated_resources.h" #include "grit/theme_resources.h" +#include "ui/base/l10n/l10n_util.h" #if defined(OS_WIN) #undef IN // On Windows, windef.h defines this, which screws up "India" cases. @@ -31,8 +35,6 @@ #include "base/mac/scoped_cftyperef.h" #endif -using base::Time; - namespace { // NOTE: See comments in GetDataVersion() below! You should probably not change @@ -42,20 +44,19 @@ namespace { struct PrepopulatedEngine { const wchar_t* const name; - // If NULL, we'll autogenerate a keyword based on the search_url every time + // If empty, we'll autogenerate a keyword based on the search_url every time // someone asks. Only entries which need keywords to auto-track a dynamically // generated search URL should use this. - // If the empty string, the engine has no keyword. const wchar_t* const keyword; const char* const favicon_url; // If NULL, there is no favicon. - const wchar_t* const search_url; + const char* const search_url; const char* const encoding; - const wchar_t* const suggest_url; // If NULL, this engine does not support - // suggestions. - const wchar_t* const instant_url; // If NULL, this engine does not support - // instant. + const char* const suggest_url; // If NULL, this engine does not support + // suggestions. + const char* const instant_url; // If NULL, this engine does not support + // instant. // SEARCH_ENGINE_OTHER if there is no matching type. - const SearchEngineType search_engine_type; + const SearchEngineType type; // Unique id for this prepopulate engine (corresponds to // TemplateURL::prepopulate_id). This ID must be greater than zero and must // remain the same for a particular site regardless of how the url changes; @@ -72,9 +73,9 @@ struct PrepopulatedEngine { // must use two different unique IDs (and different keywords). // // The following unique IDs are available: - // 33, 34, 36, 39, 42, 43, 47, 48, 49, 50, 52, 53, 56, 58, 60, 61, 64, 65, - // 66, 70, 74, 78, 79, 80, 81, 84, 86, 88, 91, 92, 93, 94, 95, 96, 97, 98, - // 102+ + // 33, 34, 36, 39, 40, 42, 43, 47, 48, 49, 50, 52, 53, 56, 58, 60, 61, 64, + // 65, 66, 70, 74, 78, 79, 80, 81, 84, 86, 88, 91, 92, 93, 94, 95, 96, 97, + // 98, 99, 102+ // // IDs > 1000 are reserved for distribution custom engines. // @@ -89,7 +90,7 @@ const PrepopulatedEngine abcsok = { L"ABC S\x00f8k", L"abcsok.no", "http://abcsok.no/favicon.ico", - L"http://abcsok.no/index.html?q={searchTerms}", + "http://abcsok.no/index.html?q={searchTerms}", "UTF-8", NULL, NULL, @@ -101,7 +102,7 @@ const PrepopulatedEngine altavista = { L"AltaVista", L"altavista.com", "http://www.altavista.com/favicon.ico", - L"http://www.altavista.com/web/results?q={searchTerms}", + "http://www.altavista.com/web/results?q={searchTerms}", "UTF-8", NULL, NULL, @@ -113,7 +114,7 @@ const PrepopulatedEngine altavista_ar = { L"AltaVista", L"ar.altavista.com", "http://ar.altavista.com/favicon.ico", - L"http://ar.altavista.com/web/results?q={searchTerms}", + "http://ar.altavista.com/web/results?q={searchTerms}", "UTF-8", NULL, NULL, @@ -125,7 +126,7 @@ const PrepopulatedEngine altavista_se = { L"AltaVista", L"se.altavista.com", "http://se.altavista.com/favicon.ico", - L"http://se.altavista.com/web/results?q={searchTerms}", + "http://se.altavista.com/web/results?q={searchTerms}", "UTF-8", NULL, NULL, @@ -137,7 +138,7 @@ const PrepopulatedEngine aol = { L"AOL", L"aol.com", "http://search.aol.com/favicon.ico", - L"http://search.aol.com/aol/search?query={searchTerms}", + "http://search.aol.com/aol/search?query={searchTerms}", "UTF-8", NULL, NULL, @@ -149,7 +150,7 @@ const PrepopulatedEngine araby = { L"\x0639\x0631\x0628\x064a", L"araby.com", "http://araby.com/favicon.ico", - L"http://araby.com/?q={searchTerms}", + "http://araby.com/?q={searchTerms}", "UTF-8", NULL, NULL, @@ -161,9 +162,9 @@ const PrepopulatedEngine ask = { L"Ask", L"ask.com", "http://www.ask.com/favicon.ico", - L"http://www.ask.com/web?q={searchTerms}", + "http://www.ask.com/web?q={searchTerms}", "UTF-8", - L"http://ss.ask.com/query?q={searchTerms}&li=ff", + "http://ss.ask.com/query?q={searchTerms}&li=ff", NULL, SEARCH_ENGINE_ASK, 4, @@ -173,9 +174,9 @@ const PrepopulatedEngine ask_de = { L"Ask.com Deutschland", L"de.ask.com", "http://de.ask.com/favicon.ico", - L"http://de.ask.com/web?q={searchTerms}", + "http://de.ask.com/web?q={searchTerms}", "UTF-8", - L"http://ss.de.ask.com/query?q={searchTerms}&li=ff", + "http://ss.de.ask.com/query?q={searchTerms}&li=ff", NULL, SEARCH_ENGINE_ASK, 4, @@ -185,9 +186,9 @@ const PrepopulatedEngine ask_es = { L"Ask.com Espa" L"\x00f1" L"a", L"es.ask.com", "http://es.ask.com/favicon.ico", - L"http://es.ask.com/web?q={searchTerms}", + "http://es.ask.com/web?q={searchTerms}", "UTF-8", - L"http://ss.es.ask.com/query?q={searchTerms}&li=ff", + "http://ss.es.ask.com/query?q={searchTerms}&li=ff", NULL, SEARCH_ENGINE_ASK, 4, @@ -197,9 +198,9 @@ const PrepopulatedEngine ask_it = { L"Ask.com Italia", L"it.ask.com", "http://it.ask.com/favicon.ico", - L"http://it.ask.com/web?q={searchTerms}", + "http://it.ask.com/web?q={searchTerms}", "UTF-8", - L"http://ss.it.ask.com/query?q={searchTerms}&li=ff", + "http://ss.it.ask.com/query?q={searchTerms}&li=ff", NULL, SEARCH_ENGINE_ASK, 4, @@ -209,9 +210,9 @@ const PrepopulatedEngine ask_nl = { L"Ask.com Nederland", L"nl.ask.com", "http://nl.ask.com/favicon.ico", - L"http://nl.ask.com/web?q={searchTerms}", + "http://nl.ask.com/web?q={searchTerms}", "UTF-8", - L"http://ss.nl.ask.com/query?q={searchTerms}&li=ff", + "http://ss.nl.ask.com/query?q={searchTerms}&li=ff", NULL, SEARCH_ENGINE_ASK, 4, @@ -221,9 +222,9 @@ const PrepopulatedEngine ask_uk = { L"Ask Jeeves", L"uk.ask.com", "http://uk.ask.com/favicon.ico", - L"http://uk.ask.com/web?q={searchTerms}", + "http://uk.ask.com/web?q={searchTerms}", "UTF-8", - L"http://ss.uk.ask.com/query?q={searchTerms}&li=ff", + "http://ss.uk.ask.com/query?q={searchTerms}&li=ff", NULL, SEARCH_ENGINE_ASK, 4, @@ -233,7 +234,7 @@ const PrepopulatedEngine atlas_cz = { L"Atlas", L"atlas.cz", "http://img.atlas.cz/favicon.ico", - L"http://search.atlas.cz/?q={searchTerms}", + "http://search.atlas.cz/?q={searchTerms}", "windows-1250", NULL, NULL, @@ -245,7 +246,7 @@ const PrepopulatedEngine atlas_sk = { L"ATLAS.SK", L"atlas.sk", "http://www.atlas.sk/images/favicon.ico", - L"http://hladaj.atlas.sk/fulltext/?phrase={searchTerms}", + "http://hladaj.atlas.sk/fulltext/?phrase={searchTerms}", "UTF-8", NULL, NULL, @@ -257,7 +258,7 @@ const PrepopulatedEngine baidu = { L"\x767e\x5ea6", L"baidu.com", "http://www.baidu.com/favicon.ico", - L"http://www.baidu.com/s?wd={searchTerms}", + "http://www.baidu.com/s?wd={searchTerms}", "GB2312", NULL, NULL, @@ -269,9 +270,9 @@ const PrepopulatedEngine bing = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?q={searchTerms}", + "http://www.bing.com/search?q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -279,11 +280,11 @@ const PrepopulatedEngine bing = { const PrepopulatedEngine bing_ar_XA = { L"Bing", - L"", // bing.com is taken by bing_en_XA. + L"bing.com_", // bing.com is taken by bing_en_XA. "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=ar-XA&q={searchTerms}", + "http://www.bing.com/search?setmkt=ar-XA&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 7, // Can't be 3 as this has to appear in the Arabian countries' lists @@ -294,9 +295,9 @@ const PrepopulatedEngine bing_bg_BG = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=bg-BG&q={searchTerms}", + "http://www.bing.com/search?setmkt=bg-BG&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -306,9 +307,9 @@ const PrepopulatedEngine bing_cs_CZ = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=cs-CZ&q={searchTerms}", + "http://www.bing.com/search?setmkt=cs-CZ&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -318,9 +319,9 @@ const PrepopulatedEngine bing_da_DK = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=da-DK&q={searchTerms}", + "http://www.bing.com/search?setmkt=da-DK&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -330,9 +331,9 @@ const PrepopulatedEngine bing_de_AT = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=de-AT&q={searchTerms}", + "http://www.bing.com/search?setmkt=de-AT&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -342,9 +343,9 @@ const PrepopulatedEngine bing_de_CH = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=de-CH&q={searchTerms}", + "http://www.bing.com/search?setmkt=de-CH&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -354,9 +355,9 @@ const PrepopulatedEngine bing_de_DE = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=de-DE&q={searchTerms}", + "http://www.bing.com/search?setmkt=de-DE&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -366,9 +367,9 @@ const PrepopulatedEngine bing_el_GR = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=el-GR&q={searchTerms}", + "http://www.bing.com/search?setmkt=el-GR&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -378,9 +379,9 @@ const PrepopulatedEngine bing_en_AU = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=en-AU&q={searchTerms}", + "http://www.bing.com/search?setmkt=en-AU&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -390,9 +391,9 @@ const PrepopulatedEngine bing_en_CA = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=en-CA&q={searchTerms}", + "http://www.bing.com/search?setmkt=en-CA&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -402,9 +403,9 @@ const PrepopulatedEngine bing_en_GB = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=en-GB&q={searchTerms}", + "http://www.bing.com/search?setmkt=en-GB&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -414,9 +415,9 @@ const PrepopulatedEngine bing_en_ID = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=en-ID&q={searchTerms}", + "http://www.bing.com/search?setmkt=en-ID&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -426,9 +427,9 @@ const PrepopulatedEngine bing_en_IE = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=en-IE&q={searchTerms}", + "http://www.bing.com/search?setmkt=en-IE&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -438,9 +439,9 @@ const PrepopulatedEngine bing_en_IN = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=en-IN&q={searchTerms}", + "http://www.bing.com/search?setmkt=en-IN&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -450,9 +451,9 @@ const PrepopulatedEngine bing_en_MY = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=en-MY&q={searchTerms}", + "http://www.bing.com/search?setmkt=en-MY&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -462,9 +463,9 @@ const PrepopulatedEngine bing_en_NZ = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=en-NZ&q={searchTerms}", + "http://www.bing.com/search?setmkt=en-NZ&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -474,9 +475,9 @@ const PrepopulatedEngine bing_en_PH = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=en-PH&q={searchTerms}", + "http://www.bing.com/search?setmkt=en-PH&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -486,9 +487,9 @@ const PrepopulatedEngine bing_en_SG = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=en-SG&q={searchTerms}", + "http://www.bing.com/search?setmkt=en-SG&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -498,9 +499,9 @@ const PrepopulatedEngine bing_en_US = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=en-US&q={searchTerms}", + "http://www.bing.com/search?setmkt=en-US&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -510,9 +511,9 @@ const PrepopulatedEngine bing_en_XA = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=en-XA&q={searchTerms}", + "http://www.bing.com/search?setmkt=en-XA&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -522,9 +523,9 @@ const PrepopulatedEngine bing_en_ZA = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=en-ZA&q={searchTerms}", + "http://www.bing.com/search?setmkt=en-ZA&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -534,9 +535,9 @@ const PrepopulatedEngine bing_es_AR = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=es-AR&q={searchTerms}", + "http://www.bing.com/search?setmkt=es-AR&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -546,9 +547,9 @@ const PrepopulatedEngine bing_es_CL = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=es-CL&q={searchTerms}", + "http://www.bing.com/search?setmkt=es-CL&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -558,9 +559,9 @@ const PrepopulatedEngine bing_es_ES = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=es-ES&q={searchTerms}", + "http://www.bing.com/search?setmkt=es-ES&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -570,9 +571,9 @@ const PrepopulatedEngine bing_es_MX = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=es-MX&q={searchTerms}", + "http://www.bing.com/search?setmkt=es-MX&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -582,9 +583,9 @@ const PrepopulatedEngine bing_es_XL = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=es-XL&q={searchTerms}", + "http://www.bing.com/search?setmkt=es-XL&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -594,9 +595,9 @@ const PrepopulatedEngine bing_et_EE = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=et-EE&q={searchTerms}", + "http://www.bing.com/search?setmkt=et-EE&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -606,9 +607,9 @@ const PrepopulatedEngine bing_fi_FI = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=fi-FI&q={searchTerms}", + "http://www.bing.com/search?setmkt=fi-FI&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -616,11 +617,11 @@ const PrepopulatedEngine bing_fi_FI = { const PrepopulatedEngine bing_fr_BE = { L"Bing", - L"", // bing.com is taken by bing_nl_BE. + L"bing.com_", // bing.com is taken by bing_nl_BE. "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=fr-BE&q={searchTerms}", + "http://www.bing.com/search?setmkt=fr-BE&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 7, @@ -628,11 +629,11 @@ const PrepopulatedEngine bing_fr_BE = { const PrepopulatedEngine bing_fr_CA = { L"Bing", - L"", // bing.com is taken by bing_en_CA. + L"bing.com_", // bing.com is taken by bing_en_CA. "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=fr-CA&q={searchTerms}", + "http://www.bing.com/search?setmkt=fr-CA&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 7, @@ -640,11 +641,11 @@ const PrepopulatedEngine bing_fr_CA = { const PrepopulatedEngine bing_fr_CH = { L"Bing", - L"", // bing.com is taken by bing_de_CH. + L"bing.com_", // bing.com is taken by bing_de_CH. "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=fr-CH&q={searchTerms}", + "http://www.bing.com/search?setmkt=fr-CH&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 7, @@ -654,9 +655,9 @@ const PrepopulatedEngine bing_fr_FR = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=fr-FR&q={searchTerms}", + "http://www.bing.com/search?setmkt=fr-FR&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -666,9 +667,9 @@ const PrepopulatedEngine bing_he_IL = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=he-IL&q={searchTerms}", + "http://www.bing.com/search?setmkt=he-IL&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -678,9 +679,9 @@ const PrepopulatedEngine bing_hr_HR = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=hr-HR&q={searchTerms}", + "http://www.bing.com/search?setmkt=hr-HR&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -690,9 +691,9 @@ const PrepopulatedEngine bing_hu_HU = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=hu-HU&q={searchTerms}", + "http://www.bing.com/search?setmkt=hu-HU&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -702,9 +703,9 @@ const PrepopulatedEngine bing_it_IT = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=it-IT&q={searchTerms}", + "http://www.bing.com/search?setmkt=it-IT&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -714,9 +715,9 @@ const PrepopulatedEngine bing_ja_JP = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=ja-JP&q={searchTerms}", + "http://www.bing.com/search?setmkt=ja-JP&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -726,9 +727,9 @@ const PrepopulatedEngine bing_ko_KR = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=ko-KR&q={searchTerms}", + "http://www.bing.com/search?setmkt=ko-KR&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -738,9 +739,9 @@ const PrepopulatedEngine bing_lt_LT = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=lt-LT&q={searchTerms}", + "http://www.bing.com/search?setmkt=lt-LT&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -750,9 +751,9 @@ const PrepopulatedEngine bing_lv_LV = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=lv-LV&q={searchTerms}", + "http://www.bing.com/search?setmkt=lv-LV&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -762,9 +763,9 @@ const PrepopulatedEngine bing_nb_NO = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=nb-NO&q={searchTerms}", + "http://www.bing.com/search?setmkt=nb-NO&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -774,9 +775,9 @@ const PrepopulatedEngine bing_nl_BE = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=nl-BE&q={searchTerms}", + "http://www.bing.com/search?setmkt=nl-BE&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -786,9 +787,9 @@ const PrepopulatedEngine bing_nl_NL = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=nl-NL&q={searchTerms}", + "http://www.bing.com/search?setmkt=nl-NL&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -798,9 +799,9 @@ const PrepopulatedEngine bing_pl_PL = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=pl-PL&q={searchTerms}", + "http://www.bing.com/search?setmkt=pl-PL&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -810,9 +811,9 @@ const PrepopulatedEngine bing_pt_BR = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=pt-BR&q={searchTerms}", + "http://www.bing.com/search?setmkt=pt-BR&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -822,9 +823,9 @@ const PrepopulatedEngine bing_pt_PT = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=pt-PT&q={searchTerms}", + "http://www.bing.com/search?setmkt=pt-PT&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -834,9 +835,9 @@ const PrepopulatedEngine bing_ro_RO = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=ro-RO&q={searchTerms}", + "http://www.bing.com/search?setmkt=ro-RO&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -846,9 +847,9 @@ const PrepopulatedEngine bing_ru_RU = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=ru-RU&q={searchTerms}", + "http://www.bing.com/search?setmkt=ru-RU&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -858,9 +859,9 @@ const PrepopulatedEngine bing_sl_SI = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=sl-SI&q={searchTerms}", + "http://www.bing.com/search?setmkt=sl-SI&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -870,9 +871,9 @@ const PrepopulatedEngine bing_sk_SK = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=sk-SK&q={searchTerms}", + "http://www.bing.com/search?setmkt=sk-SK&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -882,9 +883,9 @@ const PrepopulatedEngine bing_sv_SE = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=sv-SE&q={searchTerms}", + "http://www.bing.com/search?setmkt=sv-SE&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -894,9 +895,9 @@ const PrepopulatedEngine bing_th_TH = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=th-TH&q={searchTerms}", + "http://www.bing.com/search?setmkt=th-TH&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -906,9 +907,9 @@ const PrepopulatedEngine bing_tr_TR = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=tr-TR&q={searchTerms}", + "http://www.bing.com/search?setmkt=tr-TR&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -918,9 +919,9 @@ const PrepopulatedEngine bing_uk_UA = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=uk-UA&q={searchTerms}", + "http://www.bing.com/search?setmkt=uk-UA&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -930,9 +931,9 @@ const PrepopulatedEngine bing_zh_CN = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=zh-CN&q={searchTerms}", + "http://www.bing.com/search?setmkt=zh-CN&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -942,9 +943,9 @@ const PrepopulatedEngine bing_zh_HK = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=zh-HK&q={searchTerms}", + "http://www.bing.com/search?setmkt=zh-HK&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -954,9 +955,9 @@ const PrepopulatedEngine bing_zh_TW = { L"Bing", L"bing.com", "http://www.bing.com/s/wlflag.ico", - L"http://www.bing.com/search?setmkt=zh-TW&q={searchTerms}", + "http://www.bing.com/search?setmkt=zh-TW&q={searchTerms}", "UTF-8", - L"http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", + "http://api.bing.com/osjson.aspx?query={searchTerms}&language={language}", NULL, SEARCH_ENGINE_BING, 3, @@ -966,7 +967,7 @@ const PrepopulatedEngine centrum_cz = { L"Centrum.cz", L"centrum.cz", "http://img.centrum.cz/6/vy2/o/favicon.ico", - L"http://search.centrum.cz/index.php?charset={inputEncoding}&q={searchTerms}", + "http://search.centrum.cz/index.php?charset={inputEncoding}&q={searchTerms}", "UTF-8", NULL, NULL, @@ -978,7 +979,7 @@ const PrepopulatedEngine centrum_sk = { L"Centrum.sk", L"centrum.sk", "http://img.centrum.sk/4/favicon.ico", - L"http://search.centrum.sk/index.php?charset={inputEncoding}&q={searchTerms}", + "http://search.centrum.sk/index.php?charset={inputEncoding}&q={searchTerms}", "UTF-8", NULL, NULL, @@ -990,9 +991,9 @@ const PrepopulatedEngine daum = { L"Daum", L"daum.net", "http://search.daum.net/favicon.ico", - L"http://search.daum.net/search?q={searchTerms}", + "http://search.daum.net/search?q={searchTerms}", "EUC-KR", - L"http://sug.search.daum.net/search_nsuggest?mod=fxjson&q={searchTerms}", + "http://sug.search.daum.net/search_nsuggest?mod=fxjson&q={searchTerms}", NULL, SEARCH_ENGINE_DAUM, 68, @@ -1002,7 +1003,7 @@ const PrepopulatedEngine delfi_lt = { L"DELFI", L"delfi.lt", "http://search.delfi.lt/img/favicon.png", - L"http://search.delfi.lt/search.php?q={searchTerms}", + "http://search.delfi.lt/search.php?q={searchTerms}", "UTF-8", NULL, NULL, @@ -1014,7 +1015,7 @@ const PrepopulatedEngine delfi_lv = { L"DELFI", L"delfi.lv", "http://smart.delfi.lv/img/smart_search.png", - L"http://smart.delfi.lv/i.php?enc={inputEncoding}&q={searchTerms}", + "http://smart.delfi.lv/i.php?enc={inputEncoding}&q={searchTerms}", "UTF-8", NULL, NULL, @@ -1026,7 +1027,7 @@ const PrepopulatedEngine diri = { L"diri", L"diri.bg", "http://i.dir.bg/diri/images/favicon.ico", - L"http://diri.bg/search.php?textfield={searchTerms}", + "http://diri.bg/search.php?textfield={searchTerms}", "windows-1251", NULL, NULL, @@ -1038,7 +1039,7 @@ const PrepopulatedEngine eniro_fi = { L"Eniro", L"eniro.fi", "http://eniro.fi/favicon.ico", - L"http://eniro.fi/query?search_word={searchTerms}&what=web_local", + "http://eniro.fi/query?search_word={searchTerms}&what=web_local", "ISO-8859-1", NULL, NULL, @@ -1050,7 +1051,7 @@ const PrepopulatedEngine eniro_se = { L"Eniro", L"eniro.se", "http://eniro.se/favicon.ico", - L"http://eniro.se/query?search_word={searchTerms}&what=web_local", + "http://eniro.se/query?search_word={searchTerms}&what=web_local", "ISO-8859-1", NULL, NULL, @@ -1062,7 +1063,7 @@ const PrepopulatedEngine fonecta_02_fi = { L"Fonecta 02.fi", L"www.fi", "http://www.02.fi/img/favicon.ico", - L"http://www.02.fi/haku/{searchTerms}", + "http://www.02.fi/haku/{searchTerms}", "UTF-8", NULL, NULL, @@ -1070,24 +1071,11 @@ const PrepopulatedEngine fonecta_02_fi = { 46, }; -const PrepopulatedEngine go = { - L"GO.com", - L"go.com", - "http://search.yahoo.com/favicon.ico", - L"http://search.yahoo.com/search?ei={inputEncoding}&p={searchTerms}&" - L"fr=hsusgo1", - "ISO-8859-1", - NULL, - NULL, - SEARCH_ENGINE_OTHER, - 40, -}; - const PrepopulatedEngine goo = { L"goo", L"search.goo.ne.jp", "http://goo.ne.jp/favicon.ico", - L"http://search.goo.ne.jp/web.jsp?MT={searchTerms}&IE={inputEncoding}", + "http://search.goo.ne.jp/web.jsp?MT={searchTerms}&IE={inputEncoding}", "UTF-8", NULL, NULL, @@ -1097,19 +1085,19 @@ const PrepopulatedEngine goo = { const PrepopulatedEngine google = { L"Google", - NULL, + L"", "http://www.google.com/favicon.ico", - L"{google:baseURL}search?{google:RLZ}{google:acceptedSuggestion}" - L"{google:originalQueryForSuggestion}{google:searchFieldtrialParameter}" - L"{google:instantFieldTrialGroupParameter}" - L"sourceid=chrome&ie={inputEncoding}&q={searchTerms}", - "UTF-8", - L"{google:baseSuggestURL}search?{google:searchFieldtrialParameter}" - L"{google:instantFieldTrialGroupParameter}" - L"client=chrome&hl={language}&q={searchTerms}", - L"{google:baseURL}webhp?{google:RLZ}sourceid=chrome-instant&" - L"{google:instantFieldTrialGroupParameter}" - L"ie={inputEncoding}{google:instantEnabledParameter}{searchTerms}", + "{google:baseURL}search?{google:RLZ}{google:acceptedSuggestion}" + "{google:originalQueryForSuggestion}{google:searchFieldtrialParameter}" + "{google:instantFieldTrialGroupParameter}sourceid=chrome&" + "ie={inputEncoding}&q={searchTerms}", + "UTF-8", + "{google:baseSuggestURL}search?{google:searchFieldtrialParameter}" + "{google:instantFieldTrialGroupParameter}client=chrome&hl={language}&" + "q={searchTerms}", + "{google:baseURL}webhp?{google:RLZ}sourceid=chrome-instant&" + "{google:instantFieldTrialGroupParameter}ie={inputEncoding}" + "{google:instantEnabledParameter}{searchTerms}", SEARCH_ENGINE_GOOGLE, 1, }; @@ -1118,7 +1106,7 @@ const PrepopulatedEngine guruji = { L"guruji", L"guruji.com", "http://guruji.com/favicon.ico", - L"http://guruji.com/search?q={searchTerms}", + "http://guruji.com/search?q={searchTerms}", "UTF-8", NULL, NULL, @@ -1130,7 +1118,7 @@ const PrepopulatedEngine hispavista = { L"hispavista", L"hispavista.com", "http://buscar.hispavista.com/favicon.ico", - L"http://buscar.hispavista.com/?cadena={searchTerms}", + "http://buscar.hispavista.com/?cadena={searchTerms}", "iso-8859-1", NULL, NULL, @@ -1142,7 +1130,7 @@ const PrepopulatedEngine in = { L"in.gr", L"in.gr", "http://www.in.gr/favicon.ico", - L"http://find.in.gr/?qs={searchTerms}", + "http://find.in.gr/?qs={searchTerms}", "ISO-8859-7", NULL, NULL, @@ -1154,7 +1142,7 @@ const PrepopulatedEngine jabse = { L"Jabse", L"jabse.com", "http://www.jabse.com/favicon.ico", - L"http://www.jabse.com/searchmachine.php?query={searchTerms}", + "http://www.jabse.com/searchmachine.php?query={searchTerms}", "UTF-8", NULL, NULL, @@ -1166,7 +1154,7 @@ const PrepopulatedEngine jubii = { L"Jubii", L"jubii.dk", "http://search.jubii.dk/favicon_jubii.ico", - L"http://search.jubii.dk/cgi-bin/pursuit?query={searchTerms}", + "http://search.jubii.dk/cgi-bin/pursuit?query={searchTerms}", "ISO-8859-1", NULL, NULL, @@ -1178,7 +1166,7 @@ const PrepopulatedEngine kvasir = { L"Kvasir", L"kvasir.no", "http://www.kvasir.no/img/favicon.ico", - L"http://www.kvasir.no/nettsok/searchResult.html?searchExpr={searchTerms}", + "http://www.kvasir.no/nettsok/searchResult.html?searchExpr={searchTerms}", "ISO-8859-1", NULL, NULL, @@ -1190,7 +1178,7 @@ const PrepopulatedEngine latne = { L"LATNE", L"latne.lv", "http://latne.lv/favicon.ico", - L"http://latne.lv/siets.php?q={searchTerms}", + "http://latne.lv/siets.php?q={searchTerms}", "UTF-8", NULL, NULL, @@ -1202,7 +1190,7 @@ const PrepopulatedEngine leit = { L"leit.is", L"leit.is", "http://leit.is/leit.ico", - L"http://leit.is/query.aspx?qt={searchTerms}", + "http://leit.is/query.aspx?qt={searchTerms}", "ISO-8859-1", NULL, NULL, @@ -1214,7 +1202,7 @@ const PrepopulatedEngine libero = { L"Libero", L"libero.it", "http://arianna.libero.it/favicon.ico", - L"http://arianna.libero.it/search/abin/integrata.cgi?query={searchTerms}", + "http://arianna.libero.it/search/abin/integrata.cgi?query={searchTerms}", "ISO-8859-1", NULL, NULL, @@ -1226,9 +1214,9 @@ const PrepopulatedEngine mail_ru = { L"@MAIL.RU", L"mail.ru", "http://img.go.mail.ru/favicon.ico", - L"http://go.mail.ru/search?q={searchTerms}", + "http://go.mail.ru/search?q={searchTerms}", "windows-1251", - L"http://suggests.go.mail.ru/chrome?q={searchTerms}", + "http://suggests.go.mail.ru/chrome?q={searchTerms}", NULL, SEARCH_ENGINE_MAILRU, 83, @@ -1238,7 +1226,7 @@ const PrepopulatedEngine maktoob = { L"\x0645\x0643\x062a\x0648\x0628", L"maktoob.com", "http://www.maktoob.com/favicon.ico", - L"http://www.maktoob.com/searchResult.php?q={searchTerms}", + "http://www.maktoob.com/searchResult.php?q={searchTerms}", "UTF-8", NULL, NULL, @@ -1250,7 +1238,7 @@ const PrepopulatedEngine masrawy = { L"\x0645\x0635\x0631\x0627\x0648\x064a", L"masrawy.com", "http://www.masrawy.com/new/images/masrawy.ico", - L"http://masrawy.com/new/search.aspx?sr={searchTerms}", + "http://masrawy.com/new/search.aspx?sr={searchTerms}", "windows-1256", NULL, NULL, @@ -1262,7 +1250,7 @@ const PrepopulatedEngine mynet = { L"MYNET", L"mynet.com", "http://img.mynet.com/mynetfavori.ico", - L"http://arama.mynet.com/search.aspx?q={searchTerms}&pg=q", + "http://arama.mynet.com/search.aspx?q={searchTerms}&pg=q", "windows-1254", NULL, NULL, @@ -1274,7 +1262,7 @@ const PrepopulatedEngine najdi = { L"Najdi.si", L"najdi.si", "http://www.najdi.si/master/favicon.ico", - L"http://www.najdi.si/search.jsp?q={searchTerms}", + "http://www.najdi.si/search.jsp?q={searchTerms}", "UTF-8", NULL, NULL, @@ -1286,7 +1274,7 @@ const PrepopulatedEngine nate = { L"\xb124\xc774\xd2b8\xb2f7\xcef4", L"nate.com", "http://nate.search.empas.com/favicon.ico", - L"http://nate.search.empas.com/search/all.html?q={searchTerms}", + "http://nate.search.empas.com/search/all.html?q={searchTerms}", "EUC-KR", NULL, NULL, @@ -1298,11 +1286,10 @@ const PrepopulatedEngine naver = { L"\xb124\xc774\xbc84", L"naver.com", "http://search.naver.com/favicon.ico", - L"http://search.naver.com/search.naver?ie={inputEncoding}" - L"&query={searchTerms}", + "http://search.naver.com/search.naver?ie={inputEncoding}&query={searchTerms}", "UTF-8", - L"http://ac.search.naver.com/autocompl?m=s&ie={inputEncoding}&oe=utf-8&" - L"q={searchTerms}", + "http://ac.search.naver.com/autocompl?m=s&ie={inputEncoding}&oe=utf-8&" + "q={searchTerms}", NULL, SEARCH_ENGINE_NAVER, 67, @@ -1312,7 +1299,7 @@ const PrepopulatedEngine neti = { L"NETI", L"neti.ee", "http://www.neti.ee/favicon.ico", - L"http://www.neti.ee/cgi-bin/otsing?query={searchTerms}", + "http://www.neti.ee/cgi-bin/otsing?query={searchTerms}", "ISO-8859-1", NULL, NULL, @@ -1324,7 +1311,7 @@ const PrepopulatedEngine netsprint = { L"NetSprint", L"netsprint.pl", "http://netsprint.pl/favicon.ico", - L"http://www.netsprint.pl/serwis/search?q={searchTerms}", + "http://www.netsprint.pl/serwis/search?q={searchTerms}", "UTF-8", NULL, NULL, @@ -1336,7 +1323,7 @@ const PrepopulatedEngine nur_kz = { L"NUR.KZ", L"nur.kz", "http://www.nur.kz/favicon_kz.ico", - L"http://search.nur.kz/?encoding={inputEncoding}&query={searchTerms}", + "http://search.nur.kz/?encoding={inputEncoding}&query={searchTerms}", "UTF-8", NULL, NULL, @@ -1348,7 +1335,7 @@ const PrepopulatedEngine ok = { L"OK.hu", L"ok.hu", "http://ok.hu/gfx/favicon.ico", - L"http://ok.hu/katalogus?q={searchTerms}", + "http://ok.hu/katalogus?q={searchTerms}", "ISO-8859-2", NULL, NULL, @@ -1360,7 +1347,7 @@ const PrepopulatedEngine onet = { L"Onet.pl", L"onet.pl", "http://szukaj.onet.pl/favicon.ico", - L"http://szukaj.onet.pl/query.html?qt={searchTerms}", + "http://szukaj.onet.pl/query.html?qt={searchTerms}", "ISO-8859-2", NULL, NULL, @@ -1372,7 +1359,7 @@ const PrepopulatedEngine pogodak_rs = { L"Pogodak!", L"pogodak.rs", "http://www.pogodak.rs/favicon.ico", - L"http://www.pogodak.rs/search.jsp?q={searchTerms}", + "http://www.pogodak.rs/search.jsp?q={searchTerms}", "UTF-8", NULL, NULL, @@ -1384,7 +1371,7 @@ const PrepopulatedEngine rambler = { L"Rambler", L"rambler.ru", "http://www.rambler.ru/favicon.ico", - L"http://www.rambler.ru/srch?words={searchTerms}", + "http://www.rambler.ru/srch?words={searchTerms}", "windows-1251", NULL, NULL, @@ -1396,7 +1383,7 @@ const PrepopulatedEngine rediff = { L"Rediff", L"rediff.com", "http://search1.rediff.com/favicon.ico", - L"http://search1.rediff.com/dirsrch/default.asp?MT={searchTerms}", + "http://search1.rediff.com/dirsrch/default.asp?MT={searchTerms}", "UTF-8", NULL, NULL, @@ -1408,7 +1395,7 @@ const PrepopulatedEngine rednano = { L"Rednano", L"rednano.sg", "http://rednano.sg/favicon.ico", - L"http://rednano.sg/sfe/lwi.action?querystring={searchTerms}", + "http://rednano.sg/sfe/lwi.action?querystring={searchTerms}", "UTF-8", NULL, NULL, @@ -1420,7 +1407,7 @@ const PrepopulatedEngine sanook = { L"\x0e2a\x0e19\x0e38\x0e01!", L"sanook.com", "http://search.sanook.com/favicon.ico", - L"http://search.sanook.com/search.php?q={searchTerms}", + "http://search.sanook.com/search.php?q={searchTerms}", "UTF-8", NULL, NULL, @@ -1432,9 +1419,9 @@ const PrepopulatedEngine sapo = { L"SAPO", L"sapo.pt", "http://imgs.sapo.pt/images/sapo.ico", - L"http://pesquisa.sapo.pt/?q={searchTerms}", + "http://pesquisa.sapo.pt/?q={searchTerms}", "UTF-8", - L"http://pesquisa.sapo.pt/livesapo?q={searchTerms}", + "http://pesquisa.sapo.pt/livesapo?q={searchTerms}", NULL, SEARCH_ENGINE_SAPO, 77, @@ -1444,7 +1431,7 @@ const PrepopulatedEngine search_de_CH = { L"search.ch", L"search.ch", "http://www.search.ch/favicon.ico", - L"http://www.search.ch/index.de.html?q={searchTerms}", + "http://www.search.ch/index.de.html?q={searchTerms}", "ISO-8859-1", NULL, NULL, @@ -1454,9 +1441,9 @@ const PrepopulatedEngine search_de_CH = { const PrepopulatedEngine search_fr_CH = { L"search.ch", - L"", // search.ch is taken by search_de_CH. + L"search.ch_", // search.ch is taken by search_de_CH. "http://www.search.ch/favicon.ico", - L"http://www.search.ch/index.fr.html?q={searchTerms}", + "http://www.search.ch/index.fr.html?q={searchTerms}", "ISO-8859-1", NULL, NULL, @@ -1468,32 +1455,20 @@ const PrepopulatedEngine seznam = { L"Seznam", L"seznam.cz", "http://1.im.cz/szn/img/favicon.ico", - L"http://search.seznam.cz/?q={searchTerms}", + "http://search.seznam.cz/?q={searchTerms}", "UTF-8", - L"http:///suggest.fulltext.seznam.cz/?dict=fulltext_ff&phrase={searchTerms}&" - L"encoding={inputEncoding}&response_encoding=utf-8", + "http:///suggest.fulltext.seznam.cz/?dict=fulltext_ff&phrase={searchTerms}&" + "encoding={inputEncoding}&response_encoding=utf-8", NULL, SEARCH_ENGINE_SEZNAM, 25, }; -const PrepopulatedEngine spray = { - L"Spray", - L"spray.se", - "http://www.eniro.se/favicon.ico", - L"http://www.eniro.se/query?ax=spray&search_word={searchTerms}&what=web", - "ISO-8859-1", - NULL, - NULL, - SEARCH_ENGINE_OTHER, - 99, -}; - const PrepopulatedEngine terra_ar = { L"Terra Argentina", L"terra.com.ar", "http://buscar.terra.com.ar/favicon.ico", - L"http://buscar.terra.com.ar/Default.aspx?query={searchTerms}&source=Search", + "http://buscar.terra.com.ar/Default.aspx?query={searchTerms}&source=Search", "ISO-8859-1", NULL, NULL, @@ -1505,7 +1480,7 @@ const PrepopulatedEngine terra_es = { L"Terra", L"terra.es", "http://buscador.terra.es/favicon.ico", - L"http://buscador.terra.es/Default.aspx?query={searchTerms}&source=Search", + "http://buscador.terra.es/Default.aspx?query={searchTerms}&source=Search", "ISO-8859-1", NULL, NULL, @@ -1517,7 +1492,7 @@ const PrepopulatedEngine tut = { L"TUT.BY", L"tut.by", "http://www.tut.by/favicon.ico", - L"http://search.tut.by/?query={searchTerms}", + "http://search.tut.by/?query={searchTerms}", "windows-1251", NULL, NULL, @@ -1529,7 +1504,7 @@ const PrepopulatedEngine uol = { L"UOL Busca", L"busca.uol.com.br", "http://busca.uol.com.br/favicon.ico", - L"http://busca.uol.com.br/www/index.html?q={searchTerms}", + "http://busca.uol.com.br/www/index.html?q={searchTerms}", "ISO-8859-1", NULL, NULL, @@ -1541,7 +1516,7 @@ const PrepopulatedEngine virgilio = { L"Virgilio", L"virgilio.it", "http://ricerca.alice.it/favicon.ico", - L"http://ricerca.alice.it/ricerca?qs={searchTerms}", + "http://ricerca.alice.it/ricerca?qs={searchTerms}", "ISO-8859-1", NULL, NULL, @@ -1553,7 +1528,7 @@ const PrepopulatedEngine walla = { L"\x05d5\x05d5\x05d0\x05dc\x05d4!", L"walla.co.il", "http://www.walla.co.il/favicon.ico", - L"http://search.walla.co.il/?e=hew&q={searchTerms}", + "http://search.walla.co.il/?e=hew&q={searchTerms}", "windows-1255", NULL, NULL, @@ -1565,7 +1540,7 @@ const PrepopulatedEngine wp = { L"Wirtualna Polska", L"wp.pl", "http://szukaj.wp.pl/favicon.ico", - L"http://szukaj.wp.pl/szukaj.html?szukaj={searchTerms}", + "http://szukaj.wp.pl/szukaj.html?szukaj={searchTerms}", "ISO-8859-2", NULL, NULL, @@ -1577,9 +1552,9 @@ const PrepopulatedEngine yahoo = { L"Yahoo!", L"yahoo.com", "http://search.yahoo.com/favicon.ico", - L"http://search.yahoo.com/search?ei={inputEncoding}&fr=crmas&p={searchTerms}", + "http://search.yahoo.com/search?ei={inputEncoding}&fr=crmas&p={searchTerms}", "UTF-8", - L"http://ff.search.yahoo.com/gossip?output=fxjson&command={searchTerms}", + "http://ff.search.yahoo.com/gossip?output=fxjson&command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1592,11 +1567,11 @@ const PrepopulatedEngine yahoo_ar = { L"Yahoo! Argentina", L"ar.yahoo.com", "http://ar.search.yahoo.com/favicon.ico", - L"http://ar.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://ar.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://ar-sayt.ff.search.yahoo.com/gossip-ar-sayt?output=fxjson&" - L"command={searchTerms}", + "http://ar-sayt.ff.search.yahoo.com/gossip-ar-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1606,8 +1581,8 @@ const PrepopulatedEngine yahoo_at = { L"Yahoo! Suche", L"at.yahoo.com", "http://at.search.yahoo.com/favicon.ico", - L"http://at.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://at.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", NULL, NULL, @@ -1619,11 +1594,11 @@ const PrepopulatedEngine yahoo_au = { L"Yahoo!7", L"au.yahoo.com", "http://au.search.yahoo.com/favicon.ico", - L"http://au.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://au.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://aue-sayt.ff.search.yahoo.com/gossip-au-sayt?output=fxjson&" - L"command={searchTerms}", + "http://aue-sayt.ff.search.yahoo.com/gossip-au-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1633,11 +1608,11 @@ const PrepopulatedEngine yahoo_br = { L"Yahoo! Brasil", L"br.yahoo.com", "http://br.search.yahoo.com/favicon.ico", - L"http://br.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://br.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://br-sayt.ff.search.yahoo.com/gossip-br-sayt?output=fxjson&" - L"command={searchTerms}", + "http://br-sayt.ff.search.yahoo.com/gossip-br-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1647,11 +1622,11 @@ const PrepopulatedEngine yahoo_ca = { L"Yahoo! Canada", L"ca.yahoo.com", "http://ca.search.yahoo.com/favicon.ico", - L"http://ca.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://ca.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://gossip.ca.yahoo.com/gossip-ca-sayt?output=fxjsonp&" - L"command={searchTerms}", + "http://gossip.ca.yahoo.com/gossip-ca-sayt?output=fxjsonp&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1661,8 +1636,8 @@ const PrepopulatedEngine yahoo_ch = { L"Yahoo! Suche", L"ch.yahoo.com", "http://ch.search.yahoo.com/favicon.ico", - L"http://ch.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://ch.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", NULL, NULL, @@ -1674,11 +1649,11 @@ const PrepopulatedEngine yahoo_cl = { L"Yahoo! Chile", L"cl.yahoo.com", "http://cl.search.yahoo.com/favicon.ico", - L"http://cl.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://cl.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://gossip.telemundo.yahoo.com/gossip-e1-sayt?output=fxjson&" - L"command={searchTerms}", + "http://gossip.telemundo.yahoo.com/gossip-e1-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1688,11 +1663,9 @@ const PrepopulatedEngine yahoo_cn = { L"\x4e2d\x56fd\x96c5\x864e", L"cn.yahoo.com", "http://search.cn.yahoo.com/favicon.ico", - L"http://search.cn.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://search.cn.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "GB2312", - // http://cn.yahoo.com/cnsuggestion/suggestion.inc.php?of=fxjson&query= - // returns in a proprietary format ('|' delimeted word list). NULL, NULL, SEARCH_ENGINE_YAHOO, @@ -1703,11 +1676,11 @@ const PrepopulatedEngine yahoo_co = { L"Yahoo! Colombia", L"co.yahoo.com", "http://co.search.yahoo.com/favicon.ico", - L"http://co.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://co.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://gossip.telemundo.yahoo.com/gossip-e1-sayt?output=fxjson&" - L"command={searchTerms}", + "http://gossip.telemundo.yahoo.com/gossip-e1-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1717,11 +1690,11 @@ const PrepopulatedEngine yahoo_de = { L"Yahoo! Deutschland", L"de.yahoo.com", "http://de.search.yahoo.com/favicon.ico", - L"http://de.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://de.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://de-sayt.ff.search.yahoo.com/gossip-de-sayt?output=fxjson&" - L"command={searchTerms}", + "http://de-sayt.ff.search.yahoo.com/gossip-de-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1731,8 +1704,8 @@ const PrepopulatedEngine yahoo_dk = { L"Yahoo! Danmark", L"dk.yahoo.com", "http://dk.search.yahoo.com/favicon.ico", - L"http://dk.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://dk.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", NULL, NULL, @@ -1744,11 +1717,11 @@ const PrepopulatedEngine yahoo_es = { L"Yahoo! Espa" L"\x00f1" L"a", L"es.yahoo.com", "http://es.search.yahoo.com/favicon.ico", - L"http://es.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://es.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://es-sayt.ff.search.yahoo.com/gossip-es-sayt?output=fxjson&" - L"command={searchTerms}", + "http://es-sayt.ff.search.yahoo.com/gossip-es-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1758,8 +1731,8 @@ const PrepopulatedEngine yahoo_fi = { L"Yahoo!-haku", L"fi.yahoo.com", "http://fi.search.yahoo.com/favicon.ico", - L"http://fi.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://fi.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", NULL, NULL, @@ -1771,11 +1744,11 @@ const PrepopulatedEngine yahoo_fr = { L"Yahoo! France", L"fr.yahoo.com", "http://fr.search.yahoo.com/favicon.ico", - L"http://fr.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://fr.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://fr-sayt.ff.search.yahoo.com/gossip-fr-sayt?output=fxjson&" - L"command={searchTerms}", + "http://fr-sayt.ff.search.yahoo.com/gossip-fr-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1785,12 +1758,9 @@ const PrepopulatedEngine yahoo_hk = { L"Yahoo! Hong Kong", L"hk.yahoo.com", "http://hk.search.yahoo.com/favicon.ico", - L"http://hk.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://hk.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - // http://history.hk.search.yahoo.com/ac/ac_msearch.php?query={searchTerms} - // returns a JSON with key-value pairs. Setting parameters (ot, of, output) - // to fxjson, json, or js doesn't help. NULL, NULL, SEARCH_ENGINE_YAHOO, @@ -1801,11 +1771,11 @@ const PrepopulatedEngine yahoo_id = { L"Yahoo! Indonesia", L"id.yahoo.com", "http://id.search.yahoo.com/favicon.ico", - L"http://id.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://id.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://id-sayt.ff.search.yahoo.com/gossip-id-sayt?output=fxjson&" - L"command={searchTerms}", + "http://id-sayt.ff.search.yahoo.com/gossip-id-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1815,11 +1785,11 @@ const PrepopulatedEngine yahoo_in = { L"Yahoo! India", L"in.yahoo.com", "http://in.search.yahoo.com/favicon.ico", - L"http://in.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://in.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://in-sayt.ff.search.yahoo.com/gossip-in-sayt?output=fxjson&" - L"command={searchTerms}", + "http://in-sayt.ff.search.yahoo.com/gossip-in-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1829,11 +1799,11 @@ const PrepopulatedEngine yahoo_it = { L"Yahoo! Italia", L"it.yahoo.com", "http://it.search.yahoo.com/favicon.ico", - L"http://it.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://it.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://it-sayt.ff.search.yahoo.com/gossip-it-sayt?output=fxjson&" - L"command={searchTerms}", + "http://it-sayt.ff.search.yahoo.com/gossip-it-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1843,8 +1813,8 @@ const PrepopulatedEngine yahoo_jp = { L"Yahoo! JAPAN", L"yahoo.co.jp", "http://search.yahoo.co.jp/favicon.ico", - L"http://search.yahoo.co.jp/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://search.yahoo.co.jp/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", NULL, NULL, @@ -1856,11 +1826,11 @@ const PrepopulatedEngine yahoo_kr = { L"\xc57c\xd6c4! \xcf54\xb9ac\xc544", L"kr.yahoo.com", "http://kr.search.yahoo.com/favicon.ico", - L"http://kr.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://kr.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://kr.atc.search.yahoo.com/atcx.php?property=main&ot=fxjson&" - L"ei=utf8&eo=utf8&command={searchTerms}", + "http://kr.atc.search.yahoo.com/atcx.php?property=main&ot=fxjson&" + "ei=utf8&eo=utf8&command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1870,11 +1840,11 @@ const PrepopulatedEngine yahoo_malaysia = { L"Yahoo! Malaysia", L"malaysia.yahoo.com", "http://malaysia.search.yahoo.com/favicon.ico", - L"http://malaysia.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://malaysia.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://my-sayt.ff.search.yahoo.com/gossip-my-sayt?output=fxjson&" - L"command={searchTerms}", + "http://my-sayt.ff.search.yahoo.com/gossip-my-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1884,11 +1854,11 @@ const PrepopulatedEngine yahoo_mx = { L"Yahoo! M\x00e9xico", L"mx.yahoo.com", "http://mx.search.yahoo.com/favicon.ico", - L"http://mx.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://mx.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://gossip.mx.yahoo.com/gossip-mx-sayt?output=fxjsonp&" - L"command={searchTerms}", + "http://gossip.mx.yahoo.com/gossip-mx-sayt?output=fxjsonp&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1898,8 +1868,8 @@ const PrepopulatedEngine yahoo_nl = { L"Yahoo! Nederland", L"nl.yahoo.com", "http://nl.search.yahoo.com/favicon.ico", - L"http://nl.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://nl.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", NULL, NULL, @@ -1911,8 +1881,8 @@ const PrepopulatedEngine yahoo_no = { L"Yahoo! Norge", L"no.yahoo.com", "http://no.search.yahoo.com/favicon.ico", - L"http://no.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://no.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", NULL, NULL, @@ -1924,11 +1894,11 @@ const PrepopulatedEngine yahoo_nz = { L"Yahoo!Xtra", L"nz.yahoo.com", "http://nz.search.yahoo.com/favicon.ico", - L"http://nz.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://nz.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://aue-sayt.ff.search.yahoo.com/gossip-nz-sayt?output=fxjson&" - L"command={searchTerms}", + "http://aue-sayt.ff.search.yahoo.com/gossip-nz-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1938,11 +1908,11 @@ const PrepopulatedEngine yahoo_pe = { L"Yahoo! Per\x00fa", L"pe.yahoo.com", "http://pe.search.yahoo.com/favicon.ico", - L"http://pe.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://pe.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://gossip.telemundo.yahoo.com/gossip-e1-sayt?output=fxjson&" - L"command={searchTerms}", + "http://gossip.telemundo.yahoo.com/gossip-e1-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1952,11 +1922,11 @@ const PrepopulatedEngine yahoo_ph = { L"Yahoo! Philippines", L"ph.yahoo.com", "http://ph.search.yahoo.com/favicon.ico", - L"http://ph.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://ph.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://ph-sayt.ff.search.yahoo.com/gossip-ph-sayt?output=fxjson&" - L"command={searchTerms}", + "http://ph-sayt.ff.search.yahoo.com/gossip-ph-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -1966,8 +1936,8 @@ const PrepopulatedEngine yahoo_qc = { L"Yahoo! Qu" L"\x00e9" L"bec", L"qc.yahoo.com", "http://qc.search.yahoo.com/favicon.ico", - L"http://qc.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://qc.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", NULL, NULL, @@ -1979,8 +1949,8 @@ const PrepopulatedEngine yahoo_ru = { L"Yahoo! \x043f\x043e-\x0440\x0443\x0441\x0441\x043a\x0438", L"ru.yahoo.com", "http://ru.search.yahoo.com/favicon.ico", - L"http://ru.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://ru.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", NULL, NULL, @@ -1992,8 +1962,8 @@ const PrepopulatedEngine yahoo_se = { L"Yahoo! Sverige", L"se.yahoo.com", "http://se.search.yahoo.com/favicon.ico", - L"http://se.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://se.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", NULL, NULL, @@ -2005,11 +1975,11 @@ const PrepopulatedEngine yahoo_sg = { L"Yahoo! Singapore", L"sg.yahoo.com", "http://sg.search.yahoo.com/favicon.ico", - L"http://sg.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://sg.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://sg-sayt.ff.search.yahoo.com/gossip-sg-sayt?output=fxjson&" - L"command={searchTerms}", + "http://sg-sayt.ff.search.yahoo.com/gossip-sg-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -2019,11 +1989,11 @@ const PrepopulatedEngine yahoo_th = { L"Yahoo! \x0e1b\x0e23\x0e30\x0e40\x0e17\x0e28\x0e44\x0e17\x0e22", L"th.yahoo.com", "http://th.search.yahoo.com/favicon.ico", - L"http://th.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://th.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://th-sayt.ff.search.yahoo.com/gossip-th-sayt?output=fxjson&" - L"command={searchTerms}", + "http://th-sayt.ff.search.yahoo.com/gossip-th-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -2033,11 +2003,9 @@ const PrepopulatedEngine yahoo_tw = { L"Yahoo!\x5947\x6469", L"tw.yahoo.com", "http://tw.search.yahoo.com/favicon.ico", - L"http://tw.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://tw.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - // "http://tw.yahoo.com/ac/ac_search.php?eo=utf8&of=js&prop=web&query=" - // returns a JSON file prepended with 'fxsearch=('. NULL, NULL, SEARCH_ENGINE_YAHOO, @@ -2048,11 +2016,11 @@ const PrepopulatedEngine yahoo_uk = { L"Yahoo! UK & Ireland", L"uk.yahoo.com", "http://uk.search.yahoo.com/favicon.ico", - L"http://uk.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://uk.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://uk-sayt.ff.search.yahoo.com/gossip-uk-sayt?output=fxjson&" - L"command={searchTerms}", + "http://uk-sayt.ff.search.yahoo.com/gossip-uk-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -2062,11 +2030,11 @@ const PrepopulatedEngine yahoo_ve = { L"Yahoo! Venezuela", L"ve.yahoo.com", "http://ve.search.yahoo.com/favicon.ico", - L"http://ve.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://ve.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://gossip.telemundo.yahoo.com/gossip-e1-sayt?output=fxjson&" - L"command={searchTerms}", + "http://gossip.telemundo.yahoo.com/gossip-e1-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -2076,11 +2044,11 @@ const PrepopulatedEngine yahoo_vn = { L"Yahoo! Vi\x1ec7t Nam", L"vn.yahoo.com", "http://vn.search.yahoo.com/favicon.ico", - L"http://vn.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" - L"p={searchTerms}", + "http://vn.search.yahoo.com/search?ei={inputEncoding}&fr=crmas&" + "p={searchTerms}", "UTF-8", - L"http://vn-sayt.ff.search.yahoo.com/gossip-vn-sayt?output=fxjson&" - L"command={searchTerms}", + "http://vn-sayt.ff.search.yahoo.com/gossip-vn-sayt?output=fxjson&" + "command={searchTerms}", NULL, SEARCH_ENGINE_YAHOO, 2, @@ -2090,7 +2058,7 @@ const PrepopulatedEngine yamli = { L"Yamli", L"yamli.com", "http://www.yamli.com/favicon.ico", - L"http://www.yamli.com/#q={searchTerms}", + "http://www.yamli.com/#q={searchTerms}", "UTF-8", NULL, NULL, @@ -2102,9 +2070,9 @@ const PrepopulatedEngine yandex_ru = { L"\x042f\x043d\x0434\x0435\x043a\x0441", L"yandex.ru", "http://yandex.ru/favicon.ico", - L"http://yandex.ru/yandsearch?text={searchTerms}", + "http://yandex.ru/yandsearch?text={searchTerms}", "UTF-8", - L"http://suggest.yandex.net/suggest-ff.cgi?part={searchTerms}", + "http://suggest.yandex.net/suggest-ff.cgi?part={searchTerms}", NULL, SEARCH_ENGINE_YANDEX, 15, @@ -2114,9 +2082,9 @@ const PrepopulatedEngine yandex_ua = { L"\x042f\x043d\x0434\x0435\x043a\x0441", L"yandex.ua", "http://yandex.ua/favicon.ico", - L"http://yandex.ua/yandsearch?text={searchTerms}", + "http://yandex.ua/yandsearch?text={searchTerms}", "UTF-8", - L"http://suggest.yandex.net/suggest-ff.cgi?part={searchTerms}", + "http://suggest.yandex.net/suggest-ff.cgi?part={searchTerms}", NULL, SEARCH_ENGINE_YANDEX, 15, @@ -2126,7 +2094,7 @@ const PrepopulatedEngine zoznam = { L"Zoznam", L"zoznam.sk", "http://zoznam.sk/favicon.ico", - L"http://zoznam.sk/hladaj.fcgi?s={searchTerms}", + "http://zoznam.sk/hladaj.fcgi?s={searchTerms}", "windows-1250", NULL, NULL, @@ -2338,7 +2306,7 @@ const PrepopulatedEngine* engines_IT[] = // Jamaica const PrepopulatedEngine* engines_JM[] = - { &google, &yahoo, &bing, &go, }; + { &google, &yahoo, &bing, }; // Jordan const PrepopulatedEngine* engines_JO[] = @@ -2494,7 +2462,7 @@ const PrepopulatedEngine* engines_SA[] = // Sweden const PrepopulatedEngine* engines_SE[] = - { &google, &bing_sv_SE, &yahoo_se, &altavista_se, &spray, &eniro_se }; + { &google, &bing_sv_SE, &yahoo_se, &altavista_se, &eniro_se }; // Singapore const PrepopulatedEngine* engines_SG[] = @@ -2589,12 +2557,12 @@ const PrepopulatedEngine* kAllEngines[] = &bing_pt_PT, &bing_ro_RO, &bing_ru_RU, &bing_sl_SI, &bing_sk_SK, &bing_sv_SE, &bing_th_TH, &bing_tr_TR, &bing_uk_UA, &bing_zh_CN, &bing_zh_HK, &bing_zh_TW, ¢rum_cz, ¢rum_sk, &daum, &delfi_lt, - &delfi_lv, &diri, &eniro_fi, &eniro_se, &fonecta_02_fi, &go, &goo, - &google, &guruji, &hispavista, &in, &jabse, &jubii, &kvasir, &latne, - &leit, &libero, &mail_ru, &maktoob, &masrawy, &mynet, &najdi, &nate, - &naver, &neti, &netsprint, &nur_kz, &ok, &onet, &pogodak_rs, &rambler, - &rediff, &rednano, &sanook, &sapo, &search_de_CH, &search_fr_CH, &seznam, - &spray, &terra_ar, &terra_es, &tut, &uol, &virgilio, &walla, &wp, &yahoo, + &delfi_lv, &diri, &eniro_fi, &eniro_se, &fonecta_02_fi, &goo, &google, + &guruji, &hispavista, &in, &jabse, &jubii, &kvasir, &latne, &leit, + &libero, &mail_ru, &maktoob, &masrawy, &mynet, &najdi, &nate, &naver, + &neti, &netsprint, &nur_kz, &ok, &onet, &pogodak_rs, &rambler, &rediff, + &rednano, &sanook, &sapo, &search_de_CH, &search_fr_CH, &seznam, + &terra_ar, &terra_es, &tut, &uol, &virgilio, &walla, &wp, &yahoo, &yahoo_ar, &yahoo_at, &yahoo_au, &yahoo_br, &yahoo_ca, &yahoo_ch, &yahoo_cl, &yahoo_cn, &yahoo_co, &yahoo_de, &yahoo_dk, &yahoo_es, &yahoo_fi, &yahoo_fr, &yahoo_hk, &yahoo_id, &yahoo_in, &yahoo_it, @@ -3182,34 +3150,31 @@ int GetDataVersion(PrefService* prefs) { return (version >= 0) ? version : kCurrentDataVersion; } -TemplateURL* MakePrepopulatedTemplateURL(const wchar_t* name, - const wchar_t* keyword, - const wchar_t* search_url, - const char* favicon_url, - const wchar_t* suggest_url, - const wchar_t* instant_url, - const char* encoding, +TemplateURL* MakePrepopulatedTemplateURL(const string16& name, + const string16& keyword, + const base::StringPiece& search_url, + const base::StringPiece& favicon_url, + const base::StringPiece& suggest_url, + const base::StringPiece& instant_url, + const base::StringPiece& encoding, SearchEngineType search_engine_type, int id) { TemplateURL* new_turl = new TemplateURL(); - new_turl->SetURL(WideToUTF8(search_url), 0, 0); - if (favicon_url) - new_turl->SetFaviconURL(GURL(favicon_url)); - if (suggest_url) - new_turl->SetSuggestionsURL(WideToUTF8(suggest_url), 0, 0); - if (instant_url) - new_turl->SetInstantURL(WideToUTF8(instant_url), 0, 0); - new_turl->set_short_name(WideToUTF16Hack(name)); - if (keyword == NULL) + new_turl->SetURL(search_url.as_string(), 0, 0); + new_turl->SetFaviconURL(GURL(favicon_url.as_string())); + new_turl->SetSuggestionsURL(suggest_url.as_string(), 0, 0); + new_turl->SetInstantURL(instant_url.as_string(), 0, 0); + new_turl->set_short_name(name); + if (keyword.empty()) new_turl->set_autogenerate_keyword(true); else - new_turl->set_keyword(WideToUTF16Hack(keyword)); + new_turl->set_keyword(keyword); new_turl->set_show_in_default_list(true); new_turl->set_safe_for_autoreplace(true); - new_turl->set_date_created(Time()); - new_turl->set_last_modified(Time()); + new_turl->set_date_created(base::Time()); + new_turl->set_last_modified(base::Time()); std::vector<std::string> turl_encodings; - turl_encodings.push_back(encoding); + turl_encodings.push_back(encoding.as_string()); new_turl->set_input_encodings(turl_encodings); new_turl->set_search_engine_type(search_engine_type); new_turl->SetPrepopulateId(id); @@ -3252,39 +3217,26 @@ void GetPrepopulatedTemplateFromPrefs(PrefService* prefs, &search_engine_type) && engine->Get("id", &val) && val->GetAsInteger(&id)) { // These next fields are not allowed to be empty. - if (search_url.empty() || favicon_url.empty() || encoding.empty()) + if (name.empty() || search_url.empty() || favicon_url.empty() || + encoding.empty()) return; } else { // Got a parsing error. No big deal. continue; } - // TODO(viettrungluu): convert |MakePrepopulatedTemplateURL()| and get rid - // of conversions. - t_urls->push_back(MakePrepopulatedTemplateURL( - UTF16ToWideHack(name).c_str(), - UTF16ToWideHack(keyword).c_str(), - UTF8ToWide(search_url).c_str(), - favicon_url.c_str(), - UTF8ToWide(suggest_url).c_str(), - UTF8ToWide(instant_url).c_str(), - encoding.c_str(), - static_cast<SearchEngineType>(search_engine_type), - id)); + t_urls->push_back(MakePrepopulatedTemplateURL(name, keyword, search_url, + favicon_url, suggest_url, instant_url, encoding, + static_cast<SearchEngineType>(search_engine_type), id)); } } // The caller owns the returned TemplateURL. -TemplateURL* MakePrepopulateTemplateURLFromPrepopulateEngine( +TemplateURL* MakePrepopulatedTemplateURLFromPrepopulateEngine( const PrepopulatedEngine& engine) { - return MakePrepopulatedTemplateURL(engine.name, - engine.keyword, - engine.search_url, - engine.favicon_url, - engine.suggest_url, - engine.instant_url, - engine.encoding, - engine.search_engine_type, - engine.id); + return MakePrepopulatedTemplateURL(WideToUTF16(engine.name), + WideToUTF16(engine.keyword), engine.search_url, engine.favicon_url, + engine.suggest_url, engine.instant_url, engine.encoding, engine.type, + engine.id); } void GetPrepopulatedEngines(PrefService* prefs, @@ -3302,7 +3254,7 @@ void GetPrepopulatedEngines(PrefService* prefs, GetPrepopulationSetFromCountryID(prefs, &engines, &num_engines); for (size_t i = 0; i != num_engines; ++i) { t_urls->push_back( - MakePrepopulateTemplateURLFromPrepopulateEngine(*engines[i])); + MakePrepopulatedTemplateURLFromPrepopulateEngine(*engines[i])); } } @@ -3320,69 +3272,51 @@ TemplateURL* GetPrepopulatedDefaultSearch(PrefService* prefs) { return default_search_provider; } -// Helper function for the templated function GetOriginForSearchURL. -static const std::string& ToUTF8(const std::string& str) { - return str; -} - -// Helper function for the templated function GetOriginForSearchURL. -static std::string ToUTF8(const wchar_t* str) { - return WideToUTF8(str); -} - -template<typename STR> -static GURL GetOriginForSearchURL(const STR& url_string) { - // It is much faster to parse the url without generating the search URL, so - // try that first. If it fails, fallback to the slow method. - std::string url_utf8_string(ToUTF8(url_string)); - GURL url(url_utf8_string); - if (!url.is_valid()) { - TemplateURL turl; - turl.SetURL(url_utf8_string, 0, 0); - - UIThreadSearchTermsData search_terms_data; - url = TemplateURLService::GenerateSearchURLUsingTermsData( - &turl, search_terms_data); - } - return url.GetOrigin(); -} - -TemplateURL* GetEngineForOrigin(PrefService* prefs, const GURL& url_to_find) { - GURL origin_to_find = url_to_find.GetOrigin(); - - // Let's first try to find the url in the defaults. (In case the name - // is different for the current locale versus others.) - ScopedVector<TemplateURL> loaded_urls; - size_t default_search_index; - GetPrepopulatedEngines(prefs, &loaded_urls.get(), &default_search_index); - - UIThreadSearchTermsData search_terms_data; - for (std::vector<TemplateURL*>::iterator i = loaded_urls->begin(); - i != loaded_urls->end(); ++i) { - TemplateURL* template_url = *i; - GURL engine_origin(GetOriginForSearchURL((*i)->url()->url())); - if (origin_to_find == engine_origin) { - loaded_urls.weak_erase(i); - return template_url; - } +static const PrepopulatedEngine* GetEngineForURL(const std::string& url) { + // We may get a valid URL, or we may get the Google prepopulate URL which + // can't be converted to a GURL. Instead of forcing callers to substitute to + // ensure the provided URL is valid, just detect the second case directly + // here. + GURL as_gurl(url); + if (!as_gurl.is_valid()) { + // We only need to check Google, the other engines should all be valid URLs + // and thus won't ever string-compare successfully against |url|. + return (url == google.search_url) ? &google : NULL; } - // Let's try all of known engines now. + // For all other cases, check using origins, in order to more aggressively + // match search engine types for data imported from other browsers. + // + // First special-case Google, because the prepopulate URL for it will not + // convert to a GURL and thus won't have an origin. Instead see if the + // incoming URL's host is "[*.]google.<TLD>". + if (google_util::IsGoogleHostname(as_gurl.host())) + return &google; + + // Now check the rest of the prepopulate data. + GURL origin(as_gurl.GetOrigin()); for (size_t i = 0; i < arraysize(kAllEngines); ++i) { - GURL engine_origin(GetOriginForSearchURL(kAllEngines[i]->search_url)); - if (origin_to_find == engine_origin) - return MakePrepopulateTemplateURLFromPrepopulateEngine(*kAllEngines[i]); + GURL engine_url(kAllEngines[i]->search_url); + if (engine_url.is_valid() && (origin == engine_url.GetOrigin())) + return kAllEngines[i]; } + return NULL; } -TemplateURL* FindPrepopulatedEngine(const std::string& search_url) { - GURL search_origin(GetOriginForSearchURL(search_url)); - // First check if it is a Google URL. User may have a custom search provider - // with a hard-coded Google domain instead of {google:baseURL}. - if (google_util::IsGoogleHomePageUrl((search_origin.spec()))) - return MakePrepopulateTemplateURLFromPrepopulateEngine(google); - return GetEngineForOrigin(NULL, search_origin); +string16 GetEngineName(const std::string& url) { + const PrepopulatedEngine* engine = GetEngineForURL(url); + if (engine) + return WideToUTF16(engine->name); + GURL as_gurl(url); + return (as_gurl.is_valid() && !as_gurl.host().empty()) ? + UTF8ToUTF16(as_gurl.host()) : + l10n_util::GetStringUTF16(IDS_UNKNOWN_SEARCH_ENGINE_NAME); +} + +SearchEngineType GetEngineType(const std::string& url) { + const PrepopulatedEngine* engine = GetEngineForURL(url); + return engine ? engine->type : SEARCH_ENGINE_OTHER; } } // namespace TemplateURLPrepopulateData diff --git a/chrome/browser/search_engines/template_url_prepopulate_data.h b/chrome/browser/search_engines/template_url_prepopulate_data.h index 74a88d1..b30eff8 100644 --- a/chrome/browser/search_engines/template_url_prepopulate_data.h +++ b/chrome/browser/search_engines/template_url_prepopulate_data.h @@ -10,6 +10,9 @@ #include <string> #include <vector> +#include "base/string16.h" +#include "chrome/browser/search_engines/search_engine_type.h" + class GURL; class PrefService; class TemplateURL; @@ -35,18 +38,22 @@ void GetPrepopulatedEngines(PrefService* prefs, // Returns the default search provider specified by the prepopulate data. // The caller owns the returned value, which may be NULL. -// If |prefs| is NULL, search provider overrides from preferences are not used. +// If |prefs| is NULL, any search provider overrides from the preferences are +// not used. TemplateURL* GetPrepopulatedDefaultSearch(PrefService* prefs); -// Returns a TemplateURL from the prepopulated data which has the same origin -// as the given url. The caller is responsible for deleting the returned -// TemplateURL. -TemplateURL* GetEngineForOrigin(PrefService* prefs, const GURL& url_to_find); +// Both the next two functions use same-origin checks unless the |url| is a +// Google seach URL, in which case we'll identify any valid Google hostname, or +// the unsubstituted Google prepopulate URL, as "Google". + +// Returns the short name for the matching engine, or url.host() if no engines +// match. If no engines match and the |url| can't be converted to a valid GURL, +// returns the string in IDS_UNKNOWN_SEARCH_ENGINE_NAME. +string16 GetEngineName(const std::string& url); -// Returns the prepopulated search provider whose search URL origin matches the -// origin of |search_url| or NULL if none is found. The caller is responsible -// for deleting the returned TemplateURL. -TemplateURL* FindPrepopulatedEngine(const std::string& search_url); +// Returns the type of the matching engine, or SEARCH_ENGINE_OTHER if no engines +// match. +SearchEngineType GetEngineType(const std::string& url); } // namespace TemplateURLPrepopulateData diff --git a/chrome/browser/search_engines/template_url_prepopulate_data_unittest.cc b/chrome/browser/search_engines/template_url_prepopulate_data_unittest.cc index 7a6d2d7..672f0d1 100644 --- a/chrome/browser/search_engines/template_url_prepopulate_data_unittest.cc +++ b/chrome/browser/search_engines/template_url_prepopulate_data_unittest.cc @@ -6,7 +6,6 @@ #include "base/memory/scoped_vector.h" #include "base/scoped_temp_dir.h" #include "base/utf_string_conversions.h" -#include "chrome/browser/search_engines/search_engine_type.h" #include "chrome/browser/search_engines/search_terms_data.h" #include "chrome/browser/search_engines/template_url.h" #include "chrome/browser/search_engines/template_url_service.h" @@ -14,7 +13,9 @@ #include "chrome/common/pref_names.h" #include "chrome/test/base/testing_pref_service.h" #include "chrome/test/base/testing_profile.h" +#include "grit/generated_resources.h" #include "testing/gtest/include/gtest/gtest.h" +#include "ui/base/l10n/l10n_util.h" typedef testing::Test TemplateURLPrepopulateDataTest; @@ -71,14 +72,14 @@ const int kCountryIds[] = { // Verifies the set of prepopulate data doesn't contain entries with duplicate // ids. -TEST_F(TemplateURLPrepopulateDataTest, UniqueIDs) { +TEST(TemplateURLPrepopulateDataTest, UniqueIDs) { TestingProfile profile; for (size_t i = 0; i < arraysize(kCountryIds); ++i) { profile.GetPrefs()->SetInteger(prefs::kCountryIDAtInstall, kCountryIds[i]); ScopedVector<TemplateURL> urls; size_t default_index; - TemplateURLPrepopulateData::GetPrepopulatedEngines( - profile.GetPrefs(), &(urls.get()), &default_index); + TemplateURLPrepopulateData::GetPrepopulatedEngines(profile.GetPrefs(), + &urls.get(), &default_index); std::set<int> unique_ids; for (size_t turl_i = 0; turl_i < urls.size(); ++turl_i) { ASSERT_TRUE(unique_ids.find(urls[turl_i]->prepopulate_id()) == @@ -90,11 +91,11 @@ TEST_F(TemplateURLPrepopulateDataTest, UniqueIDs) { // Verifies that default search providers from the preferences file // override the built-in ones. -TEST_F(TemplateURLPrepopulateDataTest, ProvidersFromPrefs) { - TestingPrefService prefs; - TemplateURLPrepopulateData::RegisterUserPrefs(&prefs); - prefs.SetUserPref(prefs::kSearchProviderOverridesVersion, - Value::CreateIntegerValue(1)); +TEST(TemplateURLPrepopulateDataTest, ProvidersFromPrefs) { + TestingProfile profile; + TestingPrefService* prefs = profile.GetTestingPrefService(); + prefs->SetUserPref(prefs::kSearchProviderOverridesVersion, + Value::CreateIntegerValue(1)); ListValue* overrides = new ListValue; DictionaryValue* entry = new DictionaryValue; entry->SetString("name", "foo"); @@ -107,15 +108,15 @@ TEST_F(TemplateURLPrepopulateDataTest, ProvidersFromPrefs) { entry->SetInteger("search_engine_type", 1); entry->SetInteger("id", 1001); overrides->Append(entry); - prefs.SetUserPref(prefs::kSearchProviderOverrides, overrides); + prefs->SetUserPref(prefs::kSearchProviderOverrides, overrides); - int version = TemplateURLPrepopulateData::GetDataVersion(&prefs); + int version = TemplateURLPrepopulateData::GetDataVersion(prefs); EXPECT_EQ(1, version); ScopedVector<TemplateURL> t_urls; size_t default_index; - TemplateURLPrepopulateData::GetPrepopulatedEngines( - &prefs, &(t_urls.get()), &default_index); + TemplateURLPrepopulateData::GetPrepopulatedEngines(prefs, &t_urls.get(), + &default_index); ASSERT_EQ(1u, t_urls.size()); EXPECT_EQ(ASCIIToUTF16("foo"), t_urls[0]->short_name()); @@ -124,53 +125,31 @@ TEST_F(TemplateURLPrepopulateDataTest, ProvidersFromPrefs) { EXPECT_EQ("foi.com", t_urls[0]->GetFaviconURL().host()); EXPECT_EQ(1u, t_urls[0]->input_encodings().size()); EXPECT_EQ(1001, t_urls[0]->prepopulate_id()); - EXPECT_EQ(SEARCH_ENGINE_GOOGLE, t_urls[0]->search_engine_type()); } -TEST_F(TemplateURLPrepopulateDataTest, SearchEngineFromOrigin) { - UIThreadSearchTermsData search_terms_data; - std::set<GURL> unique_engines; - - { // Scoping for the profile. - TestingProfile profile; - for (size_t i = 0; i < arraysize(kCountryIds); ++i) { - profile.GetPrefs()->SetInteger(prefs::kCountryIDAtInstall, - kCountryIds[i]); - ScopedVector<TemplateURL> urls; - size_t default_index; - TemplateURLPrepopulateData::GetPrepopulatedEngines( - profile.GetPrefs(), &(urls.get()), &default_index); - for (size_t turl_i = 0; turl_i < urls.size(); ++turl_i) { - GURL engine_url(urls[turl_i]->url()->url()); - if (!engine_url.is_valid()) { - engine_url = TemplateURLService::GenerateSearchURLUsingTermsData( - urls[turl_i], search_terms_data); - } - GURL origin = engine_url.GetOrigin(); - unique_engines.insert(origin); - } - } - } - - TestingProfile profile; - for (std::set<GURL>::iterator it = unique_engines.begin(); - it != unique_engines.end(); ++it) { - scoped_ptr<TemplateURL> found_url( - TemplateURLPrepopulateData::GetEngineForOrigin(profile.GetPrefs(), - *it)); - EXPECT_EQ( - TemplateURLService::GenerateSearchURLUsingTermsData( - found_url.get(), search_terms_data).GetOrigin(), - it->GetOrigin()); - } +TEST(TemplateURLPrepopulateDataTest, GetEngineName) { + EXPECT_EQ(ASCIIToUTF16("Atlas"), + TemplateURLPrepopulateData::GetEngineName("http://search.atlas.cz/")); + EXPECT_EQ(ASCIIToUTF16("Google"), + TemplateURLPrepopulateData::GetEngineName("http://www.google.com/")); + EXPECT_EQ(ASCIIToUTF16("example.com"), + TemplateURLPrepopulateData::GetEngineName("http://example.com/")); + EXPECT_EQ(l10n_util::GetStringUTF16(IDS_UNKNOWN_SEARCH_ENGINE_NAME), + TemplateURLPrepopulateData::GetEngineName("!@#")); +} - GURL not_a_search_engine("http://example.com/"); - EXPECT_EQ(NULL, TemplateURLPrepopulateData::GetEngineForOrigin( - profile.GetPrefs(), - not_a_search_engine)); +TEST(TemplateURLPrepopulateDataTest, GetEngineTypeBasic) { + EXPECT_EQ(SEARCH_ENGINE_OTHER, + TemplateURLPrepopulateData::GetEngineType("http://example.com/")); + EXPECT_EQ(SEARCH_ENGINE_ASK, + TemplateURLPrepopulateData::GetEngineType("http://www.ask.com/")); + EXPECT_EQ(SEARCH_ENGINE_OTHER, + TemplateURLPrepopulateData::GetEngineType("http://search.atlas.cz/")); + EXPECT_EQ(SEARCH_ENGINE_GOOGLE, + TemplateURLPrepopulateData::GetEngineType("http://www.google.com/")); } -TEST_F(TemplateURLPrepopulateDataTest, FindPrepopulatedEngine) { +TEST_F(TemplateURLPrepopulateDataTest, GetEngineTypeAdvanced) { // Google URLs in different forms. const char* kGoogleURLs[] = { // Original with google:baseURL: @@ -189,13 +168,9 @@ TEST_F(TemplateURLPrepopulateDataTest, FindPrepopulatedEngine) { "{google:instantFieldTrialGroupParameter}" "sourceid=chrome&ie={inputEncoding}&q={searchTerms}" }; - scoped_ptr<TemplateURL> t_url; for (size_t i = 0; i < arraysize(kGoogleURLs); ++i) { - t_url.reset( - TemplateURLPrepopulateData::FindPrepopulatedEngine(kGoogleURLs[i])); - ASSERT_TRUE(t_url.get()); - // Google's prepopulated ID is 1. - EXPECT_EQ(1, t_url->prepopulate_id()); + EXPECT_EQ(SEARCH_ENGINE_GOOGLE, + TemplateURLPrepopulateData::GetEngineType(kGoogleURLs[i])); } // Non-Google URLs. const char* kYahooURLs[] = { @@ -204,17 +179,13 @@ TEST_F(TemplateURLPrepopulateDataTest, FindPrepopulatedEngine) { "http://search.yahoo.com/search?p={searchTerms}" }; for (size_t i = 0; i < arraysize(kYahooURLs); ++i) { - t_url.reset( - TemplateURLPrepopulateData::FindPrepopulatedEngine(kYahooURLs[i])); - ASSERT_TRUE(t_url.get()); - // Yahoo!'s prepopulated ID is 2. - EXPECT_EQ(2, t_url->prepopulate_id()); + EXPECT_EQ(SEARCH_ENGINE_YAHOO, + TemplateURLPrepopulateData::GetEngineType(kYahooURLs[i])); } // Search URL for which no prepopulated search provider exists. std::string kExampleSearchURL = "http://example.net/search?q={searchTerms}"; - EXPECT_FALSE(TemplateURLPrepopulateData::FindPrepopulatedEngine( - kExampleSearchURL)); - // Invalid search URL. - EXPECT_FALSE(TemplateURLPrepopulateData::FindPrepopulatedEngine( - "invalid:search:url")); + EXPECT_EQ(SEARCH_ENGINE_OTHER, + TemplateURLPrepopulateData::GetEngineType(kExampleSearchURL)); + EXPECT_EQ(SEARCH_ENGINE_OTHER, + TemplateURLPrepopulateData::GetEngineType("invalid:search:url")); } |