browser/components/search/test/browser_google.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:f42ca6b3e8c0
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 /*
5 * Test Google search plugin URLs
6 */
7
8 "use strict";
9
10 const BROWSER_SEARCH_PREF = "browser.search.";
11
12 const MOZ_PARAM_LOCALE = /\{moz:locale\}/g;
13 const MOZ_PARAM_DIST_ID = /\{moz:distributionID\}/g;
14 const MOZ_PARAM_OFFICIAL = /\{moz:official\}/g;
15
16 let runtime = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime);
17 // Custom search parameters
18 const MOZ_OFFICIAL = runtime.isOfficialBranding ? "official" : "unofficial";
19
20 var google_client;
21 switch (runtime.defaultUpdateChannel) {
22 case "beta":
23 google_client = "firefox-beta";
24 break;
25 case "aurora":
26 google_client = "firefox-aurora";
27 break;
28 case "nightly":
29 google_client = "firefox-nightly";
30 break;
31 default:
32 google_client = "firefox-a";
33 break;
34 }
35
36 const GOOGLE_CLIENT = google_client;
37 const MOZ_DISTRIBUTION_ID = runtime.distributionID;
38
39 function test() {
40 let engine = Services.search.getEngineByName("Google");
41 ok(engine, "Google");
42
43 is(Services.search.defaultEngine, engine, "Check that Google is the default search engine");
44
45 let distributionID;
46 try {
47 distributionID = Services.prefs.getCharPref(BROWSER_SEARCH_PREF + "distributionID");
48 } catch (ex) {
49 distributionID = MOZ_DISTRIBUTION_ID;
50 }
51
52 let base = "https://www.google.com/search?q=foo&ie=utf-8&oe=utf-8&aq=t&rls={moz:distributionID}:{moz:locale}:{moz:official}&client=" + GOOGLE_CLIENT;
53 base = base.replace(MOZ_PARAM_LOCALE, getLocale());
54 base = base.replace(MOZ_PARAM_DIST_ID, distributionID);
55 base = base.replace(MOZ_PARAM_OFFICIAL, MOZ_OFFICIAL);
56
57 let url;
58
59 // Test search URLs (including purposes).
60 url = engine.getSubmission("foo").uri.spec;
61 is(url, base, "Check search URL for 'foo'");
62 url = engine.getSubmission("foo", null, "contextmenu").uri.spec;
63 is(url, base + "&channel=rcs", "Check context menu search URL for 'foo'");
64 url = engine.getSubmission("foo", null, "keyword").uri.spec;
65 is(url, base + "&channel=fflb", "Check keyword search URL for 'foo'");
66 url = engine.getSubmission("foo", null, "searchbar").uri.spec;
67 is(url, base + "&channel=sb", "Check search bar search URL for 'foo'");
68 url = engine.getSubmission("foo", null, "homepage").uri.spec;
69 is(url, base + "&channel=np&source=hp", "Check homepage search URL for 'foo'");
70 url = engine.getSubmission("foo", null, "newtab").uri.spec;
71 is(url, base + "&channel=nts", "Check newtab search URL for 'foo'");
72
73 // Check search suggestion URL.
74 url = engine.getSubmission("foo", "application/x-suggestions+json").uri.spec;
75 is(url, "https://www.google.com/complete/search?client=firefox&q=foo", "Check search suggestion URL for 'foo'");
76
77 // Check all other engine properties.
78 const EXPECTED_ENGINE = {
79 name: "Google",
80 alias: null,
81 description: "Google Search",
82 searchForm: "https://www.google.com/",
83 type: Ci.nsISearchEngine.TYPE_MOZSEARCH,
84 hidden: false,
85 wrappedJSObject: {
86 queryCharset: "UTF-8",
87 "_iconURL": "data:image/x-icon;base64,AAABAAIAEBAAAAAAAAB9AQAAJgAAACAgAAAAAAAA8gIAAKMBAACJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAFESURBVDjLpZNJSwNBEIXnt4lE4kHxovgT9BDwJHqPy0HEEOJBiAuCRg+KUdC4QS4KrpC4gCBGE3NQ48JsnZ6eZ3UOM6gjaePhQU93v6+qq2q0pqgeJj2S8EdJT1hr0OxBtKCD5iEd8QxDYpvhvOBAuMDKURX9C9aPu4GA1GEVkzvMg10UBfYveWAWgYAP00V01fa+R9M2bA51wJvhIn3qR+ybt3D3JNQBE5sMjCIOLFpoHzOwdsLRO22qA6R6kiZiWwxUvy/PUQZIhYZ1vFM9cvcOOsYNdcBgysISdSJBnZjJMlR0Fw8vAp0xoz5gao/h+NZBy4i/10XGwrPA+hmvDyhVRG2Avu/LwcrkFADZa16L1h330w1RNgc3DiJzCpPYRm1bpveXX11clQR28xwblHpk1vq1iP/5mcoS0CoXDZiL0vsJ+dzfl+3T/VYAAAAASUVORK5CYIKJUE5HDQoaCgAAAA1JSERSAAAAIAAAACAIBgAAAHN6evQAAAK5SURBVFjDxVfrSxRRFJ9/Jta/oyWjF5XQm6D6EkHRgygIIgjUTcueVgqVWSRRkppEUQYWWB8ye1iGWilWlo/Ude489s7M6Zw7D9dlt53dmd29cFiWvXvO77x+51xpaaUsoSxBaUWZQ4ECy5xji2xKZDyCMlMEw6lCNiOSgwZKJK1SkcKeSealfP64t0mBjl4Ow39MkDUL0p2RSROOtqhZdeUEYM1pBl39XCg/fEeFtWcY7G9W4csvUxjlBkCsQ4Nt9QyWVfvT6RsAKXw3aoDGATZeYIt+W1kjw7cJG0RctWDTRebbKd8A6h5pwsDb70ba3w/eUr3wt/cmwgfw6Yft4TNMQaY7o1P2ncm4FT4ANQH/jQBJ2xv7kqIXEADDql8eS3+n8bku7oxNm+EDIM/dU92upb3T/NJGeaNbDx/AsbsLRUY5Xn92caWXY5d8RV6gWllxSg4fAEnTC90DQW13BLlgXR2D3dcUeDVkwOthA1bXspxILWcm3HdThcfvufB26LcJpkOEAz9NKI/lzqpSEC7feol5EWnpSeSlIxCALUkApmULdjUqxQVAQnl3D/X/yQda4QBEq2TYc12By091MQ17Bg3R88nHKlQbVmHvj89awNBLYrwT9zXY2aBAxTkGFdiSxP/Jp6FLDw+AS7GfsdJTJ2EqSO5khD43nGfBARy/ZxOQgZHe7GPM1jzUvChUtmnBAXQPcKGMJp3fdFGq6NByEhiAO4b/YptFfQJwNyQ/bZkVQGcf90Ja25ndIyrKBOa/f8wIpwi3X1G8UcxNu7ozUS7tiH0jBswwS3RIaF1w6LYKU/ML2+8sGnjygQswtKrVIy/Qd9qQP6LnO64q4fPAKpxyZIymHo1jWk6p1ag2BsdNwQMHcC+M5kHFJX+YlPxpVlbCx2mZ5DzPI04k4kUwHHdskU3pH76iftG8yWlkAAAAAElFTkSuQmCC",
88 _urls : [
89 {
90 type: "application/x-suggestions+json",
91 method: "GET",
92 template: "https://www.google.com/complete/search?client=firefox&q={searchTerms}",
93 params: "",
94 },
95 {
96 type: "text/html",
97 method: "GET",
98 template: "https://www.google.com/search",
99 params: [
100 {
101 "name": "q",
102 "value": "{searchTerms}",
103 "purpose": undefined,
104 },
105 {
106 "name": "ie",
107 "value": "utf-8",
108 "purpose": undefined,
109 },
110 {
111 "name": "oe",
112 "value": "utf-8",
113 "purpose": undefined,
114 },
115 {
116 "name": "aq",
117 "value": "t",
118 "purpose": undefined,
119 },
120 {
121 "name": "rls",
122 "value": "{moz:distributionID}:{moz:locale}:{moz:official}",
123 "purpose": undefined,
124 },
125 {
126 "name": "client",
127 "value": GOOGLE_CLIENT,
128 "purpose": undefined,
129 },
130 {
131 "name": "channel",
132 "value": "rcs",
133 "purpose": "contextmenu",
134 },
135 {
136 "name": "channel",
137 "value": "fflb",
138 "purpose": "keyword",
139 },
140 {
141 "name": "channel",
142 "value": "sb",
143 "purpose": "searchbar",
144 },
145 {
146 "name": "channel",
147 "value": "np",
148 "purpose": "homepage",
149 },
150 {
151 "name": "channel",
152 "value": "nts",
153 "purpose": "newtab",
154 },
155 {
156 "name": "source",
157 "value": "hp",
158 "purpose": "homepage",
159 },
160 ],
161 mozparams: {
162 "client": {
163 "name": "client",
164 "falseValue": "firefox",
165 "trueValue": GOOGLE_CLIENT,
166 "condition": "defaultEngine",
167 "mozparam": true,
168 },
169 },
170 },
171 {
172 type: "text/html",
173 method: "GET",
174 template: "https://www.google.com/",
175 },
176 ],
177 },
178 };
179
180 isSubObjectOf(EXPECTED_ENGINE, engine, "Google");
181 }

mercurial