From 2aa4a82499d4becd2284cdb482213d541b8804dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 28 Apr 2024 16:29:10 +0200 Subject: Adding upstream version 86.0.1. Signed-off-by: Daniel Baumann --- browser/components/search/.eslintrc.js | 41 + .../components/search/BrowserSearchTelemetry.jsm | 300 +++++ browser/components/search/SearchOneOffs.jsm | 1331 ++++++++++++++++++++ browser/components/search/SearchSERPTelemetry.jsm | 814 ++++++++++++ browser/components/search/SearchUIUtils.jsm | 83 ++ .../search/content/autocomplete-popup.js | 280 ++++ .../search/content/contentSearchHandoffUI.js | 83 ++ .../components/search/content/contentSearchUI.css | 159 +++ .../components/search/content/contentSearchUI.js | 1032 +++++++++++++++ browser/components/search/content/searchbar.js | 881 +++++++++++++ browser/components/search/docs/index.rst | 21 + browser/components/search/docs/telemetry.rst | 71 ++ .../components/search/extensions/1und1/favicon.ico | Bin 0 -> 159 bytes .../search/extensions/1und1/manifest.json | 26 + .../extensions/allaannonser-sv-SE/favicon.ico | Bin 0 -> 668 bytes .../extensions/allaannonser-sv-SE/manifest.json | 27 + .../search/extensions/allegro-pl/favicon.ico | Bin 0 -> 1150 bytes .../search/extensions/allegro-pl/manifest.json | 26 + .../extensions/amazon/_locales/au/messages.json | 23 + .../extensions/amazon/_locales/ca/messages.json | 23 + .../amazon/_locales/de-adm/messages.json | 23 + .../extensions/amazon/_locales/de/messages.json | 23 + .../amazon/_locales/en-GB-adm/messages.json | 23 + .../extensions/amazon/_locales/en-GB/messages.json | 23 + .../amazon/_locales/france/messages.json | 23 + .../extensions/amazon/_locales/in/messages.json | 23 + .../extensions/amazon/_locales/it/messages.json | 23 + .../extensions/amazon/_locales/jp/messages.json | 23 + .../extensions/amazon/_locales/mx/messages.json | 23 + .../extensions/amazon/_locales/nl/messages.json | 23 + .../search/extensions/amazon/favicon.ico | Bin 0 -> 1407 bytes .../search/extensions/amazon/manifest.json | 30 + .../amazondotcn/_locales/default/messages.json | 8 + .../_locales/mozillaonline/messages.json | 8 + .../search/extensions/amazondotcn/favicon.ico | Bin 0 -> 1407 bytes .../search/extensions/amazondotcn/manifest.json | 28 + .../amazondotcom/_locales/en-adm/messages.json | 20 + .../amazondotcom/_locales/en/messages.json | 20 + .../search/extensions/amazondotcom/favicon.ico | Bin 0 -> 1407 bytes .../search/extensions/amazondotcom/manifest.json | 29 + .../search/extensions/atlas-sk/favicon.ico | Bin 0 -> 818 bytes .../search/extensions/atlas-sk/manifest.json | 26 + .../search/extensions/azerdict/favicon.ico | Bin 0 -> 5430 bytes .../search/extensions/azerdict/manifest.json | 28 + .../search/extensions/azet-sk/favicon.ico | Bin 0 -> 5430 bytes .../search/extensions/azet-sk/manifest.json | 26 + .../components/search/extensions/baidu/favicon.ico | Bin 0 -> 5430 bytes .../search/extensions/baidu/manifest.json | 29 + .../search/extensions/bbc-alba/favicon.ico | Bin 0 -> 958 bytes .../search/extensions/bbc-alba/manifest.json | 28 + .../components/search/extensions/bing/favicon.ico | Bin 0 -> 4286 bytes .../search/extensions/bing/manifest.json | 61 + .../search/extensions/bok-NO/favicon.png | Bin 0 -> 530 bytes .../search/extensions/bok-NO/manifest.json | 26 + .../extensions/bolcom/_locales/fy-NL/messages.json | 14 + .../extensions/bolcom/_locales/nl/messages.json | 14 + .../search/extensions/bolcom/favicon.ico | Bin 0 -> 1406 bytes .../search/extensions/bolcom/manifest.json | 26 + .../search/extensions/ceneji/favicon.png | Bin 0 -> 283 bytes .../search/extensions/ceneji/manifest.json | 26 + .../search/extensions/chambers-en-GB/favicon.ico | Bin 0 -> 1425 bytes .../search/extensions/chambers-en-GB/manifest.json | 26 + .../search/extensions/coccoc/favicon.ico | Bin 0 -> 5430 bytes .../search/extensions/coccoc/manifest.json | 27 + .../search/extensions/daum-kr/favicon.ico | Bin 0 -> 5430 bytes .../search/extensions/daum-kr/manifest.json | 28 + .../components/search/extensions/ddg/favicon.ico | Bin 0 -> 5430 bytes .../components/search/extensions/ddg/manifest.json | 61 + .../components/search/extensions/diec2/favicon.png | Bin 0 -> 4070 bytes .../search/extensions/diec2/manifest.json | 27 + .../components/search/extensions/drae/favicon.ico | Bin 0 -> 5430 bytes .../search/extensions/drae/manifest.json | 26 + .../extensions/ebay/_locales/at/messages.json | 20 + .../extensions/ebay/_locales/au/messages.json | 20 + .../extensions/ebay/_locales/be/messages.json | 20 + .../extensions/ebay/_locales/ca/messages.json | 20 + .../extensions/ebay/_locales/ch/messages.json | 20 + .../extensions/ebay/_locales/de/messages.json | 20 + .../extensions/ebay/_locales/en/messages.json | 20 + .../extensions/ebay/_locales/es/messages.json | 20 + .../extensions/ebay/_locales/fr/messages.json | 20 + .../extensions/ebay/_locales/ie/messages.json | 20 + .../extensions/ebay/_locales/it/messages.json | 20 + .../extensions/ebay/_locales/nl/messages.json | 20 + .../extensions/ebay/_locales/uk/messages.json | 20 + .../components/search/extensions/ebay/favicon.ico | Bin 0 -> 1455 bytes .../search/extensions/ebay/manifest.json | 30 + .../search/extensions/ecosia/favicon.ico | Bin 0 -> 3339 bytes .../search/extensions/ecosia/manifest.json | 28 + .../search/extensions/eki-ee/favicon.ico | Bin 0 -> 5430 bytes .../search/extensions/eki-ee/manifest.json | 28 + .../search/extensions/eudict/favicon.ico | Bin 0 -> 1785 bytes .../search/extensions/eudict/manifest.json | 26 + .../search/extensions/faclair-beag/favicon.ico | Bin 0 -> 1091 bytes .../search/extensions/faclair-beag/manifest.json | 25 + .../components/search/extensions/flip/favicon.png | Bin 0 -> 342 bytes .../search/extensions/flip/manifest.json | 28 + .../search/extensions/freelang/favicon.ico | Bin 0 -> 2280 bytes .../search/extensions/freelang/manifest.json | 26 + .../extensions/gmx/_locales/de/messages.json | 17 + .../extensions/gmx/_locales/en-GB/messages.json | 17 + .../extensions/gmx/_locales/es/messages.json | 17 + .../extensions/gmx/_locales/fr/messages.json | 17 + .../extensions/gmx/_locales/shopping/messages.json | 17 + .../components/search/extensions/gmx/favicon.png | Bin 0 -> 1122 bytes .../components/search/extensions/gmx/manifest.json | 28 + .../extensions/google/_locales/b-1-d/messages.json | 23 + .../extensions/google/_locales/b-1-e/messages.json | 23 + .../extensions/google/_locales/b-d/messages.json | 23 + .../extensions/google/_locales/b-e/messages.json | 23 + .../extensions/google/_locales/en/messages.json | 24 + .../search/extensions/google/favicon.ico | Bin 0 -> 5430 bytes .../search/extensions/google/manifest.json | 36 + .../search/extensions/gulesider-NO/favicon.ico | Bin 0 -> 1150 bytes .../search/extensions/gulesider-NO/manifest.json | 26 + .../search/extensions/heureka-cz/favicon.ico | Bin 0 -> 5430 bytes .../search/extensions/heureka-cz/manifest.json | 28 + .../search/extensions/hotline-ua/favicon.ico | Bin 0 -> 1376 bytes .../search/extensions/hotline-ua/manifest.json | 26 + .../search/extensions/kannadastore/favicon.png | Bin 0 -> 827 bytes .../search/extensions/kannadastore/manifest.json | 27 + .../search/extensions/leo_ende_de/favicon.png | Bin 0 -> 749 bytes .../search/extensions/leo_ende_de/manifest.json | 27 + .../search/extensions/list-am/favicon.gif | Bin 0 -> 303 bytes .../search/extensions/list-am/manifest.json | 26 + .../search/extensions/longdo/favicon.ico | Bin 0 -> 252 bytes .../search/extensions/longdo/manifest.json | 28 + .../search/extensions/mailcom/favicon.ico | Bin 0 -> 1150 bytes .../search/extensions/mailcom/manifest.json | 27 + .../mailru/_locales/default/messages.json | 11 + .../mailru/_locales/mailru001/messages.json | 11 + .../mailru/_locales/okru-az/messages.json | 11 + .../mailru/_locales/okru-en-US/messages.json | 11 + .../mailru/_locales/okru-hy-AM/messages.json | 11 + .../mailru/_locales/okru-kk/messages.json | 11 + .../mailru/_locales/okru-ro/messages.json | 11 + .../mailru/_locales/okru-ru/messages.json | 11 + .../mailru/_locales/okru-tr/messages.json | 11 + .../mailru/_locales/okru-uk/messages.json | 11 + .../mailru/_locales/okru-uz/messages.json | 11 + .../search/extensions/mailru/favicon.ico | Bin 0 -> 5430 bytes .../search/extensions/mailru/manifest.json | 29 + .../search/extensions/mapy-cz/favicon.ico | Bin 0 -> 1812 bytes .../search/extensions/mapy-cz/manifest.json | 26 + .../marktplaats/_locales/fy-NL/messages.json | 17 + .../marktplaats/_locales/nl/messages.json | 17 + .../search/extensions/marktplaats/favicon.ico | Bin 0 -> 3054 bytes .../search/extensions/marktplaats/manifest.json | 27 + .../mercadolibre/_locales/ar/messages.json | 17 + .../mercadolibre/_locales/cl/messages.json | 17 + .../mercadolibre/_locales/mx/messages.json | 17 + .../search/extensions/mercadolibre/favicon.ico | Bin 0 -> 5430 bytes .../search/extensions/mercadolibre/manifest.json | 27 + .../search/extensions/mercadolivre/favicon.ico | Bin 0 -> 5430 bytes .../search/extensions/mercadolivre/manifest.json | 26 + .../search/extensions/morfix-dic/favicon.ico | Bin 0 -> 2286 bytes .../search/extensions/morfix-dic/manifest.json | 25 + .../search/extensions/najdi-si/favicon.png | Bin 0 -> 683 bytes .../search/extensions/najdi-si/manifest.json | 26 + .../search/extensions/naver-kr/favicon.ico | Bin 0 -> 5430 bytes .../search/extensions/naver-kr/manifest.json | 28 + .../search/extensions/neti-ee/favicon.ico | Bin 0 -> 2519 bytes .../search/extensions/neti-ee/manifest.json | 26 + .../search/extensions/odpiralni/favicon.png | Bin 0 -> 2639 bytes .../search/extensions/odpiralni/manifest.json | 25 + .../components/search/extensions/olx/favicon.ico | Bin 0 -> 5430 bytes .../components/search/extensions/olx/manifest.json | 28 + .../search/extensions/oshiete-goo/favicon.ico | Bin 0 -> 8348 bytes .../search/extensions/oshiete-goo/manifest.json | 25 + .../search/extensions/osta-ee/favicon.png | Bin 0 -> 328 bytes .../search/extensions/osta-ee/manifest.json | 26 + .../search/extensions/ozonru/favicon.ico | Bin 0 -> 3638 bytes .../search/extensions/ozonru/manifest.json | 29 + .../search/extensions/palasprint/favicon.ico | Bin 0 -> 1406 bytes .../search/extensions/palasprint/manifest.json | 26 + .../search/extensions/pazaruvaj/favicon.ico | Bin 0 -> 2584 bytes .../search/extensions/pazaruvaj/manifest.json | 26 + .../search/extensions/pogodak/favicon.ico | Bin 0 -> 1150 bytes .../search/extensions/pogodak/manifest.json | 26 + .../search/extensions/priberam/favicon.png | Bin 0 -> 790 bytes .../search/extensions/priberam/manifest.json | 27 + .../search/extensions/priceru/favicon.ico | Bin 0 -> 468 bytes .../search/extensions/priceru/manifest.json | 26 + .../search/extensions/prisjakt-sv-SE/favicon.ico | Bin 0 -> 1406 bytes .../search/extensions/prisjakt-sv-SE/manifest.json | 28 + .../search/extensions/pwn-pl/favicon.png | Bin 0 -> 1055 bytes .../search/extensions/pwn-pl/manifest.json | 25 + .../components/search/extensions/qwant/favicon.ico | Bin 0 -> 2264 bytes .../search/extensions/qwant/manifest.json | 27 + .../search/extensions/qwantjr/favicon.ico | Bin 0 -> 2264 bytes .../search/extensions/qwantjr/manifest.json | 27 + .../search/extensions/qxl-NO/favicon.ico | Bin 0 -> 5430 bytes .../search/extensions/qxl-NO/manifest.json | 26 + .../search/extensions/rakuten/favicon.ico | Bin 0 -> 2053 bytes .../search/extensions/rakuten/manifest.json | 27 + .../search/extensions/readmoo/favicon.ico | Bin 0 -> 2468 bytes .../search/extensions/readmoo/manifest.json | 26 + .../search/extensions/salidzinilv/favicon.ico | Bin 0 -> 3638 bytes .../search/extensions/salidzinilv/manifest.json | 28 + .../search/extensions/seznam-cz/favicon.ico | Bin 0 -> 1743 bytes .../search/extensions/seznam-cz/manifest.json | 28 + .../components/search/extensions/sslv/favicon.ico | Bin 0 -> 5430 bytes .../search/extensions/sslv/manifest.json | 26 + .../search/extensions/tearma/favicon.ico | Bin 0 -> 5430 bytes .../search/extensions/tearma/manifest.json | 26 + .../search/extensions/tyda-sv-SE/favicon.ico | Bin 0 -> 379 bytes .../search/extensions/tyda-sv-SE/manifest.json | 26 + .../search/extensions/vatera/favicon.ico | Bin 0 -> 5430 bytes .../search/extensions/vatera/manifest.json | 27 + .../components/search/extensions/webde/favicon.ico | Bin 0 -> 3638 bytes .../search/extensions/webde/manifest.json | 26 + .../extensions/wikipedia/_locales/NN/messages.json | 20 + .../extensions/wikipedia/_locales/NO/messages.json | 20 + .../extensions/wikipedia/_locales/af/messages.json | 20 + .../extensions/wikipedia/_locales/an/messages.json | 20 + .../extensions/wikipedia/_locales/ar/messages.json | 20 + .../wikipedia/_locales/ast/messages.json | 20 + .../extensions/wikipedia/_locales/az/messages.json | 20 + .../wikipedia/_locales/be-tarask/messages.json | 20 + .../extensions/wikipedia/_locales/be/messages.json | 20 + .../extensions/wikipedia/_locales/bg/messages.json | 20 + .../extensions/wikipedia/_locales/bn/messages.json | 20 + .../extensions/wikipedia/_locales/br/messages.json | 20 + .../extensions/wikipedia/_locales/bs/messages.json | 20 + .../extensions/wikipedia/_locales/ca/messages.json | 20 + .../extensions/wikipedia/_locales/cy/messages.json | 20 + .../extensions/wikipedia/_locales/cz/messages.json | 20 + .../extensions/wikipedia/_locales/da/messages.json | 20 + .../extensions/wikipedia/_locales/de/messages.json | 20 + .../wikipedia/_locales/dsb/messages.json | 20 + .../extensions/wikipedia/_locales/el/messages.json | 20 + .../extensions/wikipedia/_locales/en/messages.json | 20 + .../extensions/wikipedia/_locales/eo/messages.json | 20 + .../extensions/wikipedia/_locales/es/messages.json | 20 + .../extensions/wikipedia/_locales/et/messages.json | 20 + .../extensions/wikipedia/_locales/eu/messages.json | 20 + .../extensions/wikipedia/_locales/fa/messages.json | 20 + .../extensions/wikipedia/_locales/fi/messages.json | 20 + .../extensions/wikipedia/_locales/fr/messages.json | 20 + .../wikipedia/_locales/fy-NL/messages.json | 20 + .../wikipedia/_locales/ga-IE/messages.json | 20 + .../extensions/wikipedia/_locales/gd/messages.json | 20 + .../extensions/wikipedia/_locales/gl/messages.json | 20 + .../extensions/wikipedia/_locales/gn/messages.json | 20 + .../extensions/wikipedia/_locales/gu/messages.json | 20 + .../extensions/wikipedia/_locales/he/messages.json | 20 + .../extensions/wikipedia/_locales/hi/messages.json | 20 + .../extensions/wikipedia/_locales/hr/messages.json | 20 + .../wikipedia/_locales/hsb/messages.json | 20 + .../extensions/wikipedia/_locales/hu/messages.json | 20 + .../extensions/wikipedia/_locales/hy/messages.json | 20 + .../extensions/wikipedia/_locales/ia/messages.json | 20 + .../extensions/wikipedia/_locales/id/messages.json | 20 + .../extensions/wikipedia/_locales/is/messages.json | 20 + .../extensions/wikipedia/_locales/it/messages.json | 20 + .../extensions/wikipedia/_locales/ja/messages.json | 20 + .../extensions/wikipedia/_locales/ka/messages.json | 20 + .../wikipedia/_locales/kab/messages.json | 20 + .../extensions/wikipedia/_locales/kk/messages.json | 20 + .../extensions/wikipedia/_locales/km/messages.json | 20 + .../extensions/wikipedia/_locales/kn/messages.json | 20 + .../extensions/wikipedia/_locales/kr/messages.json | 20 + .../wikipedia/_locales/lij/messages.json | 20 + .../extensions/wikipedia/_locales/lo/messages.json | 20 + .../extensions/wikipedia/_locales/lt/messages.json | 20 + .../wikipedia/_locales/ltg/messages.json | 20 + .../extensions/wikipedia/_locales/lv/messages.json | 20 + .../extensions/wikipedia/_locales/mk/messages.json | 20 + .../extensions/wikipedia/_locales/mr/messages.json | 20 + .../extensions/wikipedia/_locales/ms/messages.json | 20 + .../extensions/wikipedia/_locales/my/messages.json | 20 + .../extensions/wikipedia/_locales/ne/messages.json | 20 + .../extensions/wikipedia/_locales/nl/messages.json | 20 + .../extensions/wikipedia/_locales/oc/messages.json | 20 + .../extensions/wikipedia/_locales/pa/messages.json | 20 + .../extensions/wikipedia/_locales/pl/messages.json | 20 + .../extensions/wikipedia/_locales/pt/messages.json | 20 + .../extensions/wikipedia/_locales/rm/messages.json | 20 + .../extensions/wikipedia/_locales/ro/messages.json | 20 + .../extensions/wikipedia/_locales/ru/messages.json | 20 + .../extensions/wikipedia/_locales/si/messages.json | 20 + .../extensions/wikipedia/_locales/sk/messages.json | 20 + .../extensions/wikipedia/_locales/sl/messages.json | 20 + .../extensions/wikipedia/_locales/sq/messages.json | 20 + .../extensions/wikipedia/_locales/sr/messages.json | 20 + .../wikipedia/_locales/sv-SE/messages.json | 20 + .../extensions/wikipedia/_locales/ta/messages.json | 20 + .../extensions/wikipedia/_locales/te/messages.json | 20 + .../extensions/wikipedia/_locales/th/messages.json | 20 + .../extensions/wikipedia/_locales/tl/messages.json | 20 + .../extensions/wikipedia/_locales/tr/messages.json | 20 + .../extensions/wikipedia/_locales/uk/messages.json | 20 + .../extensions/wikipedia/_locales/ur/messages.json | 20 + .../extensions/wikipedia/_locales/uz/messages.json | 20 + .../extensions/wikipedia/_locales/vi/messages.json | 20 + .../extensions/wikipedia/_locales/wo/messages.json | 20 + .../wikipedia/_locales/zh-CN/messages.json | 20 + .../wikipedia/_locales/zh-TW/messages.json | 20 + .../search/extensions/wikipedia/favicon.ico | Bin 0 -> 884 bytes .../search/extensions/wikipedia/manifest.json | 29 + .../wiktionary/_locales/oc/messages.json | 20 + .../wiktionary/_locales/te/messages.json | 20 + .../search/extensions/wiktionary/favicon.ico | Bin 0 -> 318 bytes .../search/extensions/wiktionary/manifest.json | 28 + .../search/extensions/wolnelektury-pl/favicon.png | Bin 0 -> 304 bytes .../extensions/wolnelektury-pl/manifest.json | 26 + .../extensions/yahoo-jp-auctions/favicon.ico | Bin 0 -> 2672 bytes .../extensions/yahoo-jp-auctions/manifest.json | 27 + .../search/extensions/yahoo-jp/favicon.ico | Bin 0 -> 5430 bytes .../search/extensions/yahoo-jp/manifest.json | 26 + .../extensions/yandex/_locales/az/messages.json | 38 + .../extensions/yandex/_locales/by/messages.json | 38 + .../extensions/yandex/_locales/en/messages.json | 38 + .../extensions/yandex/_locales/kk/messages.json | 38 + .../extensions/yandex/_locales/ru/messages.json | 38 + .../extensions/yandex/_locales/tr/messages.json | 38 + .../extensions/yandex/_locales/ua/messages.json | 23 + .../search/extensions/yandex/manifest.json | 62 + .../search/extensions/yandex/yandex-en.ico | Bin 0 -> 1691 bytes .../search/extensions/yandex/yandex-ru.ico | Bin 0 -> 2034 bytes .../search/extensions/zoznam-sk/favicon.png | Bin 0 -> 222 bytes .../search/extensions/zoznam-sk/manifest.json | 27 + browser/components/search/jar.mn | 13 + browser/components/search/moz.build | 28 + browser/components/search/schema/Readme.txt | 7 + .../search/schema/search-telemetry-schema.json | 103 ++ .../search/schema/search-telemetry-ui-schema.json | 12 + browser/components/search/test/browser/426329.xml | 11 + .../components/search/test/browser/483086-1.xml | 10 + .../components/search/test/browser/483086-2.xml | 10 + browser/components/search/test/browser/browser.ini | 79 ++ .../search/test/browser/browser_426329.js | 333 +++++ .../search/test/browser/browser_483086.js | 56 + .../search/test/browser/browser_addEngine.js | 121 ++ .../test/browser/browser_contentContextMenu.js | 224 ++++ .../test/browser/browser_contentContextMenu.xhtml | 22 + .../search/test/browser/browser_contentSearchUI.js | 1084 ++++++++++++++++ .../browser/browser_contentSearchUI_default.js | 116 ++ .../browser/browser_contextSearchTabPosition.js | 82 ++ .../search/test/browser/browser_contextmenu.js | 236 ++++ .../search/test/browser/browser_google_behavior.js | 207 +++ .../search/test/browser/browser_healthreport.js | 110 ++ .../test/browser/browser_hiddenOneOffs_cleanup.js | 123 ++ .../browser/browser_hiddenOneOffs_diacritics.js | 70 + .../test/browser/browser_oneOffContextMenu.js | 83 ++ .../browser_oneOffContextMenu_setDefault.js | 235 ++++ .../browser/browser_private_search_perwindowpb.js | 81 ++ .../test/browser/browser_searchEngine_behaviors.js | 205 +++ .../browser/browser_search_telemetry_aboutHome.js | 122 ++ .../browser/browser_search_telemetry_content.js | 198 +++ .../browser/browser_search_telemetry_searchbar.js | 467 +++++++ .../browser/browser_search_telemetry_sources.js | 336 +++++ .../browser_search_telemetry_sources_ads.js | 355 ++++++ .../browser_search_telemetry_sources_navigation.js | 238 ++++ .../test/browser/browser_searchbar_addEngine.js | 68 + .../test/browser/browser_searchbar_context.js | 199 +++ .../test/browser/browser_searchbar_default.js | 183 +++ .../test/browser/browser_searchbar_focus_timing.js | 87 ++ .../browser_searchbar_keyboard_navigation.js | 647 ++++++++++ .../test/browser/browser_searchbar_openpopup.js | 792 ++++++++++++ ...ser_searchbar_smallpanel_keyboard_navigation.js | 447 +++++++ .../test/browser/browser_searchbar_widths.js | 33 + .../test/browser/browser_tooManyEnginesOffered.js | 104 ++ .../search/test/browser/contentSearchUI.html | 22 + .../search/test/browser/contentSearchUI.js | 13 + .../search/test/browser/google_codes/browser.ini | 6 + browser/components/search/test/browser/head.js | 233 ++++ .../components/search/test/browser/mozsearch.sjs | 11 + .../components/search/test/browser/opensearch.html | 10 + .../search/test/browser/searchSuggestionEngine.sjs | 50 + .../search/test/browser/searchTelemetry.html | 10 + .../search/test/browser/searchTelemetryAd.html | 9 + .../test/browser/telemetrySearchSuggestions.sjs | 9 + .../test/browser/telemetrySearchSuggestions.xml | 6 + browser/components/search/test/browser/test.html | 8 + .../components/search/test/browser/testEngine.xml | 12 + .../search/test/browser/testEngine_diacritics.xml | 12 + .../search/test/browser/testEngine_dupe.xml | 12 + .../search/test/browser/testEngine_mozsearch.xml | 14 + .../search/test/browser/test_search.html | 1 + .../search/test/browser/tooManyEnginesOffered.html | 13 + .../components/search/test/marionette/manifest.ini | 4 + .../test/marionette/test_engines_on_restart.py | 41 + .../search/test/unit/test_urlTelemetry.js | 253 ++++ browser/components/search/test/unit/xpcshell.ini | 4 + 385 files changed, 19053 insertions(+) create mode 100644 browser/components/search/.eslintrc.js create mode 100644 browser/components/search/BrowserSearchTelemetry.jsm create mode 100644 browser/components/search/SearchOneOffs.jsm create mode 100644 browser/components/search/SearchSERPTelemetry.jsm create mode 100644 browser/components/search/SearchUIUtils.jsm create mode 100644 browser/components/search/content/autocomplete-popup.js create mode 100644 browser/components/search/content/contentSearchHandoffUI.js create mode 100644 browser/components/search/content/contentSearchUI.css create mode 100644 browser/components/search/content/contentSearchUI.js create mode 100644 browser/components/search/content/searchbar.js create mode 100644 browser/components/search/docs/index.rst create mode 100644 browser/components/search/docs/telemetry.rst create mode 100644 browser/components/search/extensions/1und1/favicon.ico create mode 100644 browser/components/search/extensions/1und1/manifest.json create mode 100644 browser/components/search/extensions/allaannonser-sv-SE/favicon.ico create mode 100644 browser/components/search/extensions/allaannonser-sv-SE/manifest.json create mode 100644 browser/components/search/extensions/allegro-pl/favicon.ico create mode 100644 browser/components/search/extensions/allegro-pl/manifest.json create mode 100644 browser/components/search/extensions/amazon/_locales/au/messages.json create mode 100644 browser/components/search/extensions/amazon/_locales/ca/messages.json create mode 100644 browser/components/search/extensions/amazon/_locales/de-adm/messages.json create mode 100644 browser/components/search/extensions/amazon/_locales/de/messages.json create mode 100644 browser/components/search/extensions/amazon/_locales/en-GB-adm/messages.json create mode 100644 browser/components/search/extensions/amazon/_locales/en-GB/messages.json create mode 100644 browser/components/search/extensions/amazon/_locales/france/messages.json create mode 100644 browser/components/search/extensions/amazon/_locales/in/messages.json create mode 100644 browser/components/search/extensions/amazon/_locales/it/messages.json create mode 100644 browser/components/search/extensions/amazon/_locales/jp/messages.json create mode 100644 browser/components/search/extensions/amazon/_locales/mx/messages.json create mode 100644 browser/components/search/extensions/amazon/_locales/nl/messages.json create mode 100644 browser/components/search/extensions/amazon/favicon.ico create mode 100644 browser/components/search/extensions/amazon/manifest.json create mode 100644 browser/components/search/extensions/amazondotcn/_locales/default/messages.json create mode 100644 browser/components/search/extensions/amazondotcn/_locales/mozillaonline/messages.json create mode 100644 browser/components/search/extensions/amazondotcn/favicon.ico create mode 100644 browser/components/search/extensions/amazondotcn/manifest.json create mode 100644 browser/components/search/extensions/amazondotcom/_locales/en-adm/messages.json create mode 100644 browser/components/search/extensions/amazondotcom/_locales/en/messages.json create mode 100644 browser/components/search/extensions/amazondotcom/favicon.ico create mode 100644 browser/components/search/extensions/amazondotcom/manifest.json create mode 100644 browser/components/search/extensions/atlas-sk/favicon.ico create mode 100644 browser/components/search/extensions/atlas-sk/manifest.json create mode 100644 browser/components/search/extensions/azerdict/favicon.ico create mode 100644 browser/components/search/extensions/azerdict/manifest.json create mode 100644 browser/components/search/extensions/azet-sk/favicon.ico create mode 100644 browser/components/search/extensions/azet-sk/manifest.json create mode 100644 browser/components/search/extensions/baidu/favicon.ico create mode 100644 browser/components/search/extensions/baidu/manifest.json create mode 100644 browser/components/search/extensions/bbc-alba/favicon.ico create mode 100644 browser/components/search/extensions/bbc-alba/manifest.json create mode 100644 browser/components/search/extensions/bing/favicon.ico create mode 100644 browser/components/search/extensions/bing/manifest.json create mode 100644 browser/components/search/extensions/bok-NO/favicon.png create mode 100644 browser/components/search/extensions/bok-NO/manifest.json create mode 100644 browser/components/search/extensions/bolcom/_locales/fy-NL/messages.json create mode 100644 browser/components/search/extensions/bolcom/_locales/nl/messages.json create mode 100644 browser/components/search/extensions/bolcom/favicon.ico create mode 100644 browser/components/search/extensions/bolcom/manifest.json create mode 100644 browser/components/search/extensions/ceneji/favicon.png create mode 100644 browser/components/search/extensions/ceneji/manifest.json create mode 100644 browser/components/search/extensions/chambers-en-GB/favicon.ico create mode 100644 browser/components/search/extensions/chambers-en-GB/manifest.json create mode 100644 browser/components/search/extensions/coccoc/favicon.ico create mode 100644 browser/components/search/extensions/coccoc/manifest.json create mode 100644 browser/components/search/extensions/daum-kr/favicon.ico create mode 100644 browser/components/search/extensions/daum-kr/manifest.json create mode 100644 browser/components/search/extensions/ddg/favicon.ico create mode 100644 browser/components/search/extensions/ddg/manifest.json create mode 100644 browser/components/search/extensions/diec2/favicon.png create mode 100644 browser/components/search/extensions/diec2/manifest.json create mode 100644 browser/components/search/extensions/drae/favicon.ico create mode 100644 browser/components/search/extensions/drae/manifest.json create mode 100644 browser/components/search/extensions/ebay/_locales/at/messages.json create mode 100644 browser/components/search/extensions/ebay/_locales/au/messages.json create mode 100644 browser/components/search/extensions/ebay/_locales/be/messages.json create mode 100644 browser/components/search/extensions/ebay/_locales/ca/messages.json create mode 100644 browser/components/search/extensions/ebay/_locales/ch/messages.json create mode 100644 browser/components/search/extensions/ebay/_locales/de/messages.json create mode 100644 browser/components/search/extensions/ebay/_locales/en/messages.json create mode 100644 browser/components/search/extensions/ebay/_locales/es/messages.json create mode 100644 browser/components/search/extensions/ebay/_locales/fr/messages.json create mode 100644 browser/components/search/extensions/ebay/_locales/ie/messages.json create mode 100644 browser/components/search/extensions/ebay/_locales/it/messages.json create mode 100644 browser/components/search/extensions/ebay/_locales/nl/messages.json create mode 100644 browser/components/search/extensions/ebay/_locales/uk/messages.json create mode 100644 browser/components/search/extensions/ebay/favicon.ico create mode 100644 browser/components/search/extensions/ebay/manifest.json create mode 100644 browser/components/search/extensions/ecosia/favicon.ico create mode 100644 browser/components/search/extensions/ecosia/manifest.json create mode 100644 browser/components/search/extensions/eki-ee/favicon.ico create mode 100644 browser/components/search/extensions/eki-ee/manifest.json create mode 100644 browser/components/search/extensions/eudict/favicon.ico create mode 100644 browser/components/search/extensions/eudict/manifest.json create mode 100644 browser/components/search/extensions/faclair-beag/favicon.ico create mode 100644 browser/components/search/extensions/faclair-beag/manifest.json create mode 100644 browser/components/search/extensions/flip/favicon.png create mode 100644 browser/components/search/extensions/flip/manifest.json create mode 100644 browser/components/search/extensions/freelang/favicon.ico create mode 100644 browser/components/search/extensions/freelang/manifest.json create mode 100644 browser/components/search/extensions/gmx/_locales/de/messages.json create mode 100644 browser/components/search/extensions/gmx/_locales/en-GB/messages.json create mode 100644 browser/components/search/extensions/gmx/_locales/es/messages.json create mode 100644 browser/components/search/extensions/gmx/_locales/fr/messages.json create mode 100644 browser/components/search/extensions/gmx/_locales/shopping/messages.json create mode 100644 browser/components/search/extensions/gmx/favicon.png create mode 100644 browser/components/search/extensions/gmx/manifest.json create mode 100644 browser/components/search/extensions/google/_locales/b-1-d/messages.json create mode 100644 browser/components/search/extensions/google/_locales/b-1-e/messages.json create mode 100644 browser/components/search/extensions/google/_locales/b-d/messages.json create mode 100644 browser/components/search/extensions/google/_locales/b-e/messages.json create mode 100644 browser/components/search/extensions/google/_locales/en/messages.json create mode 100644 browser/components/search/extensions/google/favicon.ico create mode 100644 browser/components/search/extensions/google/manifest.json create mode 100644 browser/components/search/extensions/gulesider-NO/favicon.ico create mode 100644 browser/components/search/extensions/gulesider-NO/manifest.json create mode 100644 browser/components/search/extensions/heureka-cz/favicon.ico create mode 100644 browser/components/search/extensions/heureka-cz/manifest.json create mode 100644 browser/components/search/extensions/hotline-ua/favicon.ico create mode 100644 browser/components/search/extensions/hotline-ua/manifest.json create mode 100644 browser/components/search/extensions/kannadastore/favicon.png create mode 100644 browser/components/search/extensions/kannadastore/manifest.json create mode 100644 browser/components/search/extensions/leo_ende_de/favicon.png create mode 100644 browser/components/search/extensions/leo_ende_de/manifest.json create mode 100644 browser/components/search/extensions/list-am/favicon.gif create mode 100644 browser/components/search/extensions/list-am/manifest.json create mode 100644 browser/components/search/extensions/longdo/favicon.ico create mode 100644 browser/components/search/extensions/longdo/manifest.json create mode 100644 browser/components/search/extensions/mailcom/favicon.ico create mode 100644 browser/components/search/extensions/mailcom/manifest.json create mode 100644 browser/components/search/extensions/mailru/_locales/default/messages.json create mode 100644 browser/components/search/extensions/mailru/_locales/mailru001/messages.json create mode 100644 browser/components/search/extensions/mailru/_locales/okru-az/messages.json create mode 100644 browser/components/search/extensions/mailru/_locales/okru-en-US/messages.json create mode 100644 browser/components/search/extensions/mailru/_locales/okru-hy-AM/messages.json create mode 100644 browser/components/search/extensions/mailru/_locales/okru-kk/messages.json create mode 100644 browser/components/search/extensions/mailru/_locales/okru-ro/messages.json create mode 100644 browser/components/search/extensions/mailru/_locales/okru-ru/messages.json create mode 100644 browser/components/search/extensions/mailru/_locales/okru-tr/messages.json create mode 100644 browser/components/search/extensions/mailru/_locales/okru-uk/messages.json create mode 100644 browser/components/search/extensions/mailru/_locales/okru-uz/messages.json create mode 100644 browser/components/search/extensions/mailru/favicon.ico create mode 100644 browser/components/search/extensions/mailru/manifest.json create mode 100644 browser/components/search/extensions/mapy-cz/favicon.ico create mode 100644 browser/components/search/extensions/mapy-cz/manifest.json create mode 100644 browser/components/search/extensions/marktplaats/_locales/fy-NL/messages.json create mode 100644 browser/components/search/extensions/marktplaats/_locales/nl/messages.json create mode 100644 browser/components/search/extensions/marktplaats/favicon.ico create mode 100644 browser/components/search/extensions/marktplaats/manifest.json create mode 100644 browser/components/search/extensions/mercadolibre/_locales/ar/messages.json create mode 100644 browser/components/search/extensions/mercadolibre/_locales/cl/messages.json create mode 100644 browser/components/search/extensions/mercadolibre/_locales/mx/messages.json create mode 100644 browser/components/search/extensions/mercadolibre/favicon.ico create mode 100644 browser/components/search/extensions/mercadolibre/manifest.json create mode 100644 browser/components/search/extensions/mercadolivre/favicon.ico create mode 100644 browser/components/search/extensions/mercadolivre/manifest.json create mode 100644 browser/components/search/extensions/morfix-dic/favicon.ico create mode 100644 browser/components/search/extensions/morfix-dic/manifest.json create mode 100644 browser/components/search/extensions/najdi-si/favicon.png create mode 100644 browser/components/search/extensions/najdi-si/manifest.json create mode 100644 browser/components/search/extensions/naver-kr/favicon.ico create mode 100644 browser/components/search/extensions/naver-kr/manifest.json create mode 100644 browser/components/search/extensions/neti-ee/favicon.ico create mode 100644 browser/components/search/extensions/neti-ee/manifest.json create mode 100644 browser/components/search/extensions/odpiralni/favicon.png create mode 100644 browser/components/search/extensions/odpiralni/manifest.json create mode 100644 browser/components/search/extensions/olx/favicon.ico create mode 100644 browser/components/search/extensions/olx/manifest.json create mode 100644 browser/components/search/extensions/oshiete-goo/favicon.ico create mode 100644 browser/components/search/extensions/oshiete-goo/manifest.json create mode 100644 browser/components/search/extensions/osta-ee/favicon.png create mode 100644 browser/components/search/extensions/osta-ee/manifest.json create mode 100644 browser/components/search/extensions/ozonru/favicon.ico create mode 100644 browser/components/search/extensions/ozonru/manifest.json create mode 100644 browser/components/search/extensions/palasprint/favicon.ico create mode 100644 browser/components/search/extensions/palasprint/manifest.json create mode 100644 browser/components/search/extensions/pazaruvaj/favicon.ico create mode 100644 browser/components/search/extensions/pazaruvaj/manifest.json create mode 100644 browser/components/search/extensions/pogodak/favicon.ico create mode 100644 browser/components/search/extensions/pogodak/manifest.json create mode 100644 browser/components/search/extensions/priberam/favicon.png create mode 100644 browser/components/search/extensions/priberam/manifest.json create mode 100644 browser/components/search/extensions/priceru/favicon.ico create mode 100644 browser/components/search/extensions/priceru/manifest.json create mode 100644 browser/components/search/extensions/prisjakt-sv-SE/favicon.ico create mode 100644 browser/components/search/extensions/prisjakt-sv-SE/manifest.json create mode 100644 browser/components/search/extensions/pwn-pl/favicon.png create mode 100644 browser/components/search/extensions/pwn-pl/manifest.json create mode 100644 browser/components/search/extensions/qwant/favicon.ico create mode 100644 browser/components/search/extensions/qwant/manifest.json create mode 100644 browser/components/search/extensions/qwantjr/favicon.ico create mode 100644 browser/components/search/extensions/qwantjr/manifest.json create mode 100644 browser/components/search/extensions/qxl-NO/favicon.ico create mode 100644 browser/components/search/extensions/qxl-NO/manifest.json create mode 100644 browser/components/search/extensions/rakuten/favicon.ico create mode 100644 browser/components/search/extensions/rakuten/manifest.json create mode 100644 browser/components/search/extensions/readmoo/favicon.ico create mode 100644 browser/components/search/extensions/readmoo/manifest.json create mode 100644 browser/components/search/extensions/salidzinilv/favicon.ico create mode 100644 browser/components/search/extensions/salidzinilv/manifest.json create mode 100644 browser/components/search/extensions/seznam-cz/favicon.ico create mode 100644 browser/components/search/extensions/seznam-cz/manifest.json create mode 100644 browser/components/search/extensions/sslv/favicon.ico create mode 100644 browser/components/search/extensions/sslv/manifest.json create mode 100644 browser/components/search/extensions/tearma/favicon.ico create mode 100644 browser/components/search/extensions/tearma/manifest.json create mode 100644 browser/components/search/extensions/tyda-sv-SE/favicon.ico create mode 100644 browser/components/search/extensions/tyda-sv-SE/manifest.json create mode 100644 browser/components/search/extensions/vatera/favicon.ico create mode 100644 browser/components/search/extensions/vatera/manifest.json create mode 100644 browser/components/search/extensions/webde/favicon.ico create mode 100644 browser/components/search/extensions/webde/manifest.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/NN/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/NO/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/af/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/an/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/ar/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/ast/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/az/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/be-tarask/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/be/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/bg/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/bn/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/br/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/bs/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/ca/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/cy/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/cz/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/da/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/de/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/dsb/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/el/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/en/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/eo/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/es/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/et/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/eu/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/fa/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/fi/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/fr/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/fy-NL/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/ga-IE/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/gd/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/gl/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/gn/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/gu/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/he/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/hi/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/hr/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/hsb/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/hu/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/hy/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/ia/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/id/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/is/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/it/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/ja/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/ka/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/kab/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/kk/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/km/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/kn/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/kr/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/lij/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/lo/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/lt/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/ltg/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/lv/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/mk/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/mr/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/ms/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/my/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/ne/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/nl/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/oc/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/pa/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/pl/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/pt/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/rm/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/ro/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/ru/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/si/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/sk/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/sl/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/sq/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/sr/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/sv-SE/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/ta/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/te/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/th/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/tl/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/tr/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/uk/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/ur/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/uz/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/vi/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/wo/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/zh-CN/messages.json create mode 100644 browser/components/search/extensions/wikipedia/_locales/zh-TW/messages.json create mode 100644 browser/components/search/extensions/wikipedia/favicon.ico create mode 100644 browser/components/search/extensions/wikipedia/manifest.json create mode 100644 browser/components/search/extensions/wiktionary/_locales/oc/messages.json create mode 100644 browser/components/search/extensions/wiktionary/_locales/te/messages.json create mode 100644 browser/components/search/extensions/wiktionary/favicon.ico create mode 100644 browser/components/search/extensions/wiktionary/manifest.json create mode 100644 browser/components/search/extensions/wolnelektury-pl/favicon.png create mode 100644 browser/components/search/extensions/wolnelektury-pl/manifest.json create mode 100644 browser/components/search/extensions/yahoo-jp-auctions/favicon.ico create mode 100644 browser/components/search/extensions/yahoo-jp-auctions/manifest.json create mode 100644 browser/components/search/extensions/yahoo-jp/favicon.ico create mode 100644 browser/components/search/extensions/yahoo-jp/manifest.json create mode 100644 browser/components/search/extensions/yandex/_locales/az/messages.json create mode 100644 browser/components/search/extensions/yandex/_locales/by/messages.json create mode 100644 browser/components/search/extensions/yandex/_locales/en/messages.json create mode 100644 browser/components/search/extensions/yandex/_locales/kk/messages.json create mode 100644 browser/components/search/extensions/yandex/_locales/ru/messages.json create mode 100644 browser/components/search/extensions/yandex/_locales/tr/messages.json create mode 100644 browser/components/search/extensions/yandex/_locales/ua/messages.json create mode 100644 browser/components/search/extensions/yandex/manifest.json create mode 100644 browser/components/search/extensions/yandex/yandex-en.ico create mode 100644 browser/components/search/extensions/yandex/yandex-ru.ico create mode 100644 browser/components/search/extensions/zoznam-sk/favicon.png create mode 100644 browser/components/search/extensions/zoznam-sk/manifest.json create mode 100644 browser/components/search/jar.mn create mode 100644 browser/components/search/moz.build create mode 100644 browser/components/search/schema/Readme.txt create mode 100644 browser/components/search/schema/search-telemetry-schema.json create mode 100644 browser/components/search/schema/search-telemetry-ui-schema.json create mode 100644 browser/components/search/test/browser/426329.xml create mode 100644 browser/components/search/test/browser/483086-1.xml create mode 100644 browser/components/search/test/browser/483086-2.xml create mode 100644 browser/components/search/test/browser/browser.ini create mode 100644 browser/components/search/test/browser/browser_426329.js create mode 100644 browser/components/search/test/browser/browser_483086.js create mode 100644 browser/components/search/test/browser/browser_addEngine.js create mode 100644 browser/components/search/test/browser/browser_contentContextMenu.js create mode 100644 browser/components/search/test/browser/browser_contentContextMenu.xhtml create mode 100644 browser/components/search/test/browser/browser_contentSearchUI.js create mode 100644 browser/components/search/test/browser/browser_contentSearchUI_default.js create mode 100644 browser/components/search/test/browser/browser_contextSearchTabPosition.js create mode 100644 browser/components/search/test/browser/browser_contextmenu.js create mode 100644 browser/components/search/test/browser/browser_google_behavior.js create mode 100644 browser/components/search/test/browser/browser_healthreport.js create mode 100644 browser/components/search/test/browser/browser_hiddenOneOffs_cleanup.js create mode 100644 browser/components/search/test/browser/browser_hiddenOneOffs_diacritics.js create mode 100644 browser/components/search/test/browser/browser_oneOffContextMenu.js create mode 100644 browser/components/search/test/browser/browser_oneOffContextMenu_setDefault.js create mode 100644 browser/components/search/test/browser/browser_private_search_perwindowpb.js create mode 100644 browser/components/search/test/browser/browser_searchEngine_behaviors.js create mode 100644 browser/components/search/test/browser/browser_search_telemetry_aboutHome.js create mode 100644 browser/components/search/test/browser/browser_search_telemetry_content.js create mode 100644 browser/components/search/test/browser/browser_search_telemetry_searchbar.js create mode 100644 browser/components/search/test/browser/browser_search_telemetry_sources.js create mode 100644 browser/components/search/test/browser/browser_search_telemetry_sources_ads.js create mode 100644 browser/components/search/test/browser/browser_search_telemetry_sources_navigation.js create mode 100644 browser/components/search/test/browser/browser_searchbar_addEngine.js create mode 100644 browser/components/search/test/browser/browser_searchbar_context.js create mode 100644 browser/components/search/test/browser/browser_searchbar_default.js create mode 100644 browser/components/search/test/browser/browser_searchbar_focus_timing.js create mode 100644 browser/components/search/test/browser/browser_searchbar_keyboard_navigation.js create mode 100644 browser/components/search/test/browser/browser_searchbar_openpopup.js create mode 100644 browser/components/search/test/browser/browser_searchbar_smallpanel_keyboard_navigation.js create mode 100644 browser/components/search/test/browser/browser_searchbar_widths.js create mode 100644 browser/components/search/test/browser/browser_tooManyEnginesOffered.js create mode 100644 browser/components/search/test/browser/contentSearchUI.html create mode 100644 browser/components/search/test/browser/contentSearchUI.js create mode 100644 browser/components/search/test/browser/google_codes/browser.ini create mode 100644 browser/components/search/test/browser/head.js create mode 100644 browser/components/search/test/browser/mozsearch.sjs create mode 100644 browser/components/search/test/browser/opensearch.html create mode 100644 browser/components/search/test/browser/searchSuggestionEngine.sjs create mode 100644 browser/components/search/test/browser/searchTelemetry.html create mode 100644 browser/components/search/test/browser/searchTelemetryAd.html create mode 100644 browser/components/search/test/browser/telemetrySearchSuggestions.sjs create mode 100644 browser/components/search/test/browser/telemetrySearchSuggestions.xml create mode 100644 browser/components/search/test/browser/test.html create mode 100644 browser/components/search/test/browser/testEngine.xml create mode 100644 browser/components/search/test/browser/testEngine_diacritics.xml create mode 100644 browser/components/search/test/browser/testEngine_dupe.xml create mode 100644 browser/components/search/test/browser/testEngine_mozsearch.xml create mode 100644 browser/components/search/test/browser/test_search.html create mode 100644 browser/components/search/test/browser/tooManyEnginesOffered.html create mode 100644 browser/components/search/test/marionette/manifest.ini create mode 100644 browser/components/search/test/marionette/test_engines_on_restart.py create mode 100644 browser/components/search/test/unit/test_urlTelemetry.js create mode 100644 browser/components/search/test/unit/xpcshell.ini (limited to 'browser/components/search') diff --git a/browser/components/search/.eslintrc.js b/browser/components/search/.eslintrc.js new file mode 100644 index 0000000000..df5578171d --- /dev/null +++ b/browser/components/search/.eslintrc.js @@ -0,0 +1,41 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +module.exports = { + rules: { + "mozilla/var-only-at-top-level": "error", + "require-jsdoc": [ + "error", + { + require: { + FunctionDeclaration: false, + MethodDefinition: false, + ClassDeclaration: true, + ArrowFunctionExpression: false, + FunctionExpression: false, + }, + }, + ], + "valid-jsdoc": [ + "error", + { + prefer: { + return: "returns", + }, + preferType: { + Boolean: "boolean", + Number: "number", + String: "string", + Object: "object", + bool: "boolean", + }, + requireParamDescription: false, + requireReturn: false, + requireReturnDescription: false, + }, + ], + }, +}; diff --git a/browser/components/search/BrowserSearchTelemetry.jsm b/browser/components/search/BrowserSearchTelemetry.jsm new file mode 100644 index 0000000000..3a5843f8e8 --- /dev/null +++ b/browser/components/search/BrowserSearchTelemetry.jsm @@ -0,0 +1,300 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +var EXPORTED_SYMBOLS = ["BrowserSearchTelemetry"]; + +const { XPCOMUtils } = ChromeUtils.import( + "resource://gre/modules/XPCOMUtils.jsm" +); + +XPCOMUtils.defineLazyModuleGetters(this, { + PartnerLinkAttribution: "resource:///modules/PartnerLinkAttribution.jsm", + PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.jsm", + SearchSERPTelemetry: "resource:///modules/SearchSERPTelemetry.jsm", + Services: "resource://gre/modules/Services.jsm", + UrlbarUtils: "resource:///modules/UrlbarUtils.jsm", +}); + +// A map of known search origins. +// The keys of this map are used in the calling code to recordSearch, and in +// the SEARCH_COUNTS histogram. +// The values of this map are used in the names of scalars for the following +// scalar groups: +// browser.engagement.navigation.* +// browser.search.withads.* +// browser.search.adclicks.* +const KNOWN_SEARCH_SOURCES = new Map([ + ["abouthome", "about_home"], + ["contextmenu", "contextmenu"], + ["newtab", "about_newtab"], + ["searchbar", "searchbar"], + ["system", "system"], + ["urlbar", "urlbar"], + ["urlbar-searchmode", "urlbar_searchmode"], + ["webextension", "webextension"], +]); + +/** + * This class handles saving search telemetry related to the url bar, + * search bar and other areas as per the sources above. + */ +class BrowserSearchTelemetryHandler { + KNOWN_SEARCH_SOURCES = KNOWN_SEARCH_SOURCES; + + /** + * Determines if we should record a search for this browser instance. + * Private Browsing mode is normally skipped. + * + * @param {browser} browser + * The browser where the search was loaded. + * @returns {boolean} + * True if the search should be recorded, false otherwise. + */ + shouldRecordSearchCount(browser) { + return ( + !PrivateBrowsingUtils.isWindowPrivate(browser.ownerGlobal) || + !Services.prefs.getBoolPref("browser.engagement.search_counts.pbm", false) + ); + } + + /** + * Records the method by which the user selected a result from the urlbar or + * searchbar. + * + * @param {Event} event + * The event that triggered the selection. + * @param {string} source + * Either "urlbar" or "searchbar" depending on the source. + * @param {number} index + * The index that the user chose in the popup, or -1 if there wasn't a + * selection. + * @param {string} userSelectionBehavior + * How the user cycled through results before picking the current match. + * Could be one of "tab", "arrow" or "none". + */ + recordSearchSuggestionSelectionMethod( + event, + source, + index, + userSelectionBehavior = "none" + ) { + // If the contents of the histogram are changed then + // `UrlbarTestUtils.SELECTED_RESULT_METHODS` should also be updated. + if (source == "searchbar" && userSelectionBehavior != "none") { + throw new Error("Did not expect a selection behavior for the searchbar."); + } + + let histogram = Services.telemetry.getHistogramById( + source == "urlbar" + ? "FX_URLBAR_SELECTED_RESULT_METHOD" + : "FX_SEARCHBAR_SELECTED_RESULT_METHOD" + ); + // command events are from the one-off context menu. Treat them as clicks. + // Note that we don't care about MouseEvent subclasses here, since + // those are not clicks. + let isClick = + event && + (ChromeUtils.getClassName(event) == "MouseEvent" || + event.type == "command"); + let category; + if (isClick) { + category = "click"; + } else if (index >= 0) { + switch (userSelectionBehavior) { + case "tab": + category = "tabEnterSelection"; + break; + case "arrow": + category = "arrowEnterSelection"; + break; + case "rightClick": + // Selected by right mouse button. + category = "rightClickEnter"; + break; + default: + category = "enterSelection"; + } + } else { + category = "enter"; + } + histogram.add(category); + } + + /** + * Records entry into the Urlbar's search mode. + * + * Telemetry records only which search mode is entered and how it was entered. + * It does not record anything pertaining to searches made within search mode. + * @param {object} searchMode + * A search mode object. See UrlbarInput.setSearchMode documentation for + * details. + */ + recordSearchMode(searchMode) { + // Search mode preview is not search mode. Recording it would just create + // noise. + if (searchMode.isPreview) { + return; + } + let scalarKey; + if (searchMode.engineName) { + let engine = Services.search.getEngineByName(searchMode.engineName); + let resultDomain = engine.getResultDomain(); + // For built-in engines, sanitize the data in a few special cases to make + // analysis easier. + if (!engine.isAppProvided) { + scalarKey = "other"; + } else if (resultDomain.includes("amazon.")) { + // Group all the localized Amazon sites together. + scalarKey = "Amazon"; + } else if (resultDomain.endsWith("wikipedia.org")) { + // Group all the localized Wikipedia sites together. + scalarKey = "Wikipedia"; + } else { + scalarKey = searchMode.engineName; + } + } else if (searchMode.source) { + scalarKey = UrlbarUtils.getResultSourceName(searchMode.source) || "other"; + } + + Services.telemetry.keyedScalarAdd( + "urlbar.searchmode." + searchMode.entry, + scalarKey, + 1 + ); + } + + /** + * The main entry point for recording search related Telemetry. This includes + * search counts and engagement measurements. + * + * Telemetry records only search counts per engine and action origin, but + * nothing pertaining to the search contents themselves. + * + * @param {browser} browser + * The browser where the search originated. + * @param {nsISearchEngine} engine + * The engine handling the search. + * @param {string} source + * Where the search originated from. See KNOWN_SEARCH_SOURCES for allowed + * values. + * @param {object} [details] Options object. + * @param {boolean} [details.isOneOff=false] + * true if this event was generated by a one-off search. + * @param {boolean} [details.isSuggestion=false] + * true if this event was generated by a suggested search. + * @param {boolean} [details.isFormHistory=false] + * true if this event was generated by a form history result. + * @param {string} [details.alias=null] + * The search engine alias used in the search, if any. + * @throws if source is not in the known sources list. + */ + recordSearch(browser, engine, source, details = {}) { + try { + if (!this.shouldRecordSearchCount(browser)) { + return; + } + if (!KNOWN_SEARCH_SOURCES.has(source)) { + console.error("Unknown source for search: ", source); + return; + } + + const countIdPrefix = `${engine.telemetryId}.`; + const countIdSource = countIdPrefix + source; + let histogram = Services.telemetry.getKeyedHistogramById("SEARCH_COUNTS"); + + if ( + details.alias && + engine.isAppProvided && + engine.aliases.includes(details.alias) + ) { + // This is a keyword search using an AppProvided engine. + // Record the source as "alias", not "urlbar". + histogram.add(countIdPrefix + "alias"); + } else { + histogram.add(countIdSource); + } + + // Dispatch the search signal to other handlers. + switch (source) { + case "urlbar": + case "searchbar": + case "urlbar-searchmode": + this._handleSearchAndUrlbar(browser, engine, source, details); + break; + case "abouthome": + case "newtab": + this._recordSearch(browser, engine, details.url, source, "enter"); + break; + default: + this._recordSearch(browser, engine, details.url, source); + break; + } + } catch (ex) { + // Catch any errors here, so that search actions are not broken if + // telemetry is broken for some reason. + console.error(ex); + } + } + + /** + * This function handles the "urlbar", "urlbar-oneoff", "searchbar" and + * "searchbar-oneoff" sources. + * + * @param {browser} browser + * The browser where the search originated. + * @param {nsISearchEngine} engine + * The engine handling the search. + * @param {string} source + * Where the search originated from. + * @param {object} details + * @see recordSearch + */ + _handleSearchAndUrlbar(browser, engine, source, details) { + const isOneOff = !!details.isOneOff; + let action = "enter"; + if (isOneOff) { + action = "oneoff"; + } else if (details.isFormHistory) { + action = "formhistory"; + } else if (details.isSuggestion) { + action = "suggestion"; + } else if (details.alias) { + action = "alias"; + } + + this._recordSearch(browser, engine, details.url, source, action); + } + + _recordSearch(browser, engine, url, source, action = null) { + if (url) { + PartnerLinkAttribution.makeSearchEngineRequest(engine, url).catch( + Cu.reportError + ); + } + + let scalarSource = KNOWN_SEARCH_SOURCES.get(source); + + SearchSERPTelemetry.recordBrowserSource(browser, scalarSource); + + let scalarKey = action ? "search_" + action : "search"; + Services.telemetry.keyedScalarAdd( + "browser.engagement.navigation." + scalarSource, + scalarKey, + 1 + ); + Services.telemetry.recordEvent( + "navigation", + "search", + scalarSource, + action, + { + engine: engine.telemetryId, + } + ); + } +} + +var BrowserSearchTelemetry = new BrowserSearchTelemetryHandler(); diff --git a/browser/components/search/SearchOneOffs.jsm b/browser/components/search/SearchOneOffs.jsm new file mode 100644 index 0000000000..0e4f126fd4 --- /dev/null +++ b/browser/components/search/SearchOneOffs.jsm @@ -0,0 +1,1331 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +var EXPORTED_SYMBOLS = ["SearchOneOffs"]; + +const { XPCOMUtils } = ChromeUtils.import( + "resource://gre/modules/XPCOMUtils.jsm" +); +XPCOMUtils.defineLazyModuleGetters(this, { + clearTimeout: "resource://gre/modules/Timer.jsm", + PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.jsm", + SearchUIUtils: "resource:///modules/SearchUIUtils.jsm", + Services: "resource://gre/modules/Services.jsm", + setTimeout: "resource://gre/modules/Timer.jsm", +}); + +/** + * Defines the search one-off button elements. These are displayed at the bottom + * of the address bar and search bar. The address bar buttons are a subclass in + * browser/components/urlbar/UrlbarSearchOneOffs.jsm. If you are adding a new + * subclass, see "Methods for subclasses to override" below. + */ +class SearchOneOffs { + constructor(container) { + this.container = container; + this.window = container.ownerGlobal; + this.document = container.ownerDocument; + + this.container.appendChild( + this.window.MozXULElement.parseXULToFragment( + ` + + + + + +