browser/components/search/test/browser_google.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/browser/components/search/test/browser_google.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,181 @@
     1.4 +/* Any copyright is dedicated to the Public Domain.
     1.5 + * http://creativecommons.org/publicdomain/zero/1.0/ */
     1.6 +
     1.7 +/*
     1.8 + * Test Google search plugin URLs
     1.9 + */
    1.10 +
    1.11 +"use strict";
    1.12 +
    1.13 +const BROWSER_SEARCH_PREF      = "browser.search.";
    1.14 +
    1.15 +const MOZ_PARAM_LOCALE         = /\{moz:locale\}/g;
    1.16 +const MOZ_PARAM_DIST_ID        = /\{moz:distributionID\}/g;
    1.17 +const MOZ_PARAM_OFFICIAL       = /\{moz:official\}/g;
    1.18 +
    1.19 +let runtime = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime);
    1.20 +// Custom search parameters
    1.21 +const MOZ_OFFICIAL = runtime.isOfficialBranding ? "official" : "unofficial";
    1.22 +
    1.23 +var google_client;
    1.24 +switch (runtime.defaultUpdateChannel) {
    1.25 +case "beta":
    1.26 +  google_client = "firefox-beta";
    1.27 +  break;
    1.28 +case "aurora":
    1.29 +  google_client = "firefox-aurora";
    1.30 +  break;
    1.31 +case "nightly":
    1.32 +  google_client = "firefox-nightly";
    1.33 +  break;
    1.34 +default:
    1.35 +  google_client = "firefox-a";
    1.36 +  break;
    1.37 +}
    1.38 +
    1.39 +const GOOGLE_CLIENT = google_client;
    1.40 +const MOZ_DISTRIBUTION_ID = runtime.distributionID;
    1.41 +
    1.42 +function test() {
    1.43 +  let engine = Services.search.getEngineByName("Google");
    1.44 +  ok(engine, "Google");
    1.45 +
    1.46 +  is(Services.search.defaultEngine, engine, "Check that Google is the default search engine");
    1.47 +
    1.48 +  let distributionID;
    1.49 +  try {
    1.50 +    distributionID = Services.prefs.getCharPref(BROWSER_SEARCH_PREF + "distributionID");
    1.51 +  } catch (ex) {
    1.52 +    distributionID = MOZ_DISTRIBUTION_ID;
    1.53 +  }
    1.54 +
    1.55 +  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;
    1.56 +  base = base.replace(MOZ_PARAM_LOCALE, getLocale());
    1.57 +  base = base.replace(MOZ_PARAM_DIST_ID, distributionID);
    1.58 +  base = base.replace(MOZ_PARAM_OFFICIAL, MOZ_OFFICIAL);
    1.59 +
    1.60 +  let url;
    1.61 +
    1.62 +  // Test search URLs (including purposes).
    1.63 +  url = engine.getSubmission("foo").uri.spec;
    1.64 +  is(url, base, "Check search URL for 'foo'");
    1.65 +  url = engine.getSubmission("foo", null, "contextmenu").uri.spec;
    1.66 +  is(url, base + "&channel=rcs", "Check context menu search URL for 'foo'");
    1.67 +  url = engine.getSubmission("foo", null, "keyword").uri.spec;
    1.68 +  is(url, base + "&channel=fflb", "Check keyword search URL for 'foo'");
    1.69 +  url = engine.getSubmission("foo", null, "searchbar").uri.spec;
    1.70 +  is(url, base + "&channel=sb", "Check search bar search URL for 'foo'");
    1.71 +  url = engine.getSubmission("foo", null, "homepage").uri.spec;
    1.72 +  is(url, base + "&channel=np&source=hp", "Check homepage search URL for 'foo'");
    1.73 +  url = engine.getSubmission("foo", null, "newtab").uri.spec;
    1.74 +  is(url, base + "&channel=nts", "Check newtab search URL for 'foo'");
    1.75 +
    1.76 +  // Check search suggestion URL.
    1.77 +  url = engine.getSubmission("foo", "application/x-suggestions+json").uri.spec;
    1.78 +  is(url, "https://www.google.com/complete/search?client=firefox&q=foo", "Check search suggestion URL for 'foo'");
    1.79 +
    1.80 +  // Check all other engine properties.
    1.81 +  const EXPECTED_ENGINE = {
    1.82 +    name: "Google",
    1.83 +    alias: null,
    1.84 +    description: "Google Search",
    1.85 +    searchForm: "https://www.google.com/",
    1.86 +    type: Ci.nsISearchEngine.TYPE_MOZSEARCH,
    1.87 +    hidden: false,
    1.88 +    wrappedJSObject: {
    1.89 +      queryCharset: "UTF-8",
    1.90 +      "_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",
    1.91 +      _urls : [
    1.92 +        {
    1.93 +          type: "application/x-suggestions+json",
    1.94 +          method: "GET",
    1.95 +          template: "https://www.google.com/complete/search?client=firefox&q={searchTerms}",
    1.96 +          params: "",
    1.97 +        },
    1.98 +        {
    1.99 +          type: "text/html",
   1.100 +          method: "GET",
   1.101 +          template: "https://www.google.com/search",
   1.102 +          params: [
   1.103 +            {
   1.104 +              "name": "q",
   1.105 +              "value": "{searchTerms}",
   1.106 +              "purpose": undefined,
   1.107 +            },
   1.108 +            {
   1.109 +              "name": "ie",
   1.110 +              "value": "utf-8",
   1.111 +              "purpose": undefined,
   1.112 +            },
   1.113 +            {
   1.114 +              "name": "oe",
   1.115 +              "value": "utf-8",
   1.116 +              "purpose": undefined,
   1.117 +            },
   1.118 +            {
   1.119 +              "name": "aq",
   1.120 +              "value": "t",
   1.121 +              "purpose": undefined,
   1.122 +            },
   1.123 +            {
   1.124 +              "name": "rls",
   1.125 +              "value": "{moz:distributionID}:{moz:locale}:{moz:official}",
   1.126 +              "purpose": undefined,
   1.127 +            },
   1.128 +            {
   1.129 +              "name": "client",
   1.130 +              "value": GOOGLE_CLIENT,
   1.131 +              "purpose": undefined,
   1.132 +            },
   1.133 +            {
   1.134 +              "name": "channel",
   1.135 +              "value": "rcs",
   1.136 +              "purpose": "contextmenu",
   1.137 +            },
   1.138 +            {
   1.139 +              "name": "channel",
   1.140 +              "value": "fflb",
   1.141 +              "purpose": "keyword",
   1.142 +            },
   1.143 +            {
   1.144 +              "name": "channel",
   1.145 +              "value": "sb",
   1.146 +              "purpose": "searchbar",
   1.147 +            },
   1.148 +            {
   1.149 +              "name": "channel",
   1.150 +              "value": "np",
   1.151 +              "purpose": "homepage",
   1.152 +            },
   1.153 +            {
   1.154 +              "name": "channel",
   1.155 +              "value": "nts",
   1.156 +              "purpose": "newtab",
   1.157 +            },
   1.158 +            {
   1.159 +              "name": "source",
   1.160 +              "value": "hp",
   1.161 +              "purpose": "homepage",
   1.162 +            },
   1.163 +          ],
   1.164 +          mozparams: {
   1.165 +            "client": {
   1.166 +              "name": "client",
   1.167 +              "falseValue": "firefox",
   1.168 +              "trueValue": GOOGLE_CLIENT,
   1.169 +              "condition": "defaultEngine",
   1.170 +              "mozparam": true,
   1.171 +            },
   1.172 +          },
   1.173 +        },
   1.174 +        {
   1.175 +          type: "text/html",
   1.176 +          method: "GET",
   1.177 +          template: "https://www.google.com/",
   1.178 +        },
   1.179 +      ],
   1.180 +    },
   1.181 +  };
   1.182 +
   1.183 +  isSubObjectOf(EXPECTED_ENGINE, engine, "Google");
   1.184 +}

mercurial