Pier Angelo Vendrame pushed to branch mullvad-browser-145.0a1-16.0-1 at The Tor Project / Applications / Mullvad Browser

Commits:

14 changed files:

Changes:

  • .gitlab/issue_templates/040 Feature.md
    ... ... @@ -18,11 +18,11 @@ Provide an overview of the technical/implementation aspects of this feature
    18 18
     
    
    19 19
     ### Proposal
    
    20 20
     <!-- Add links to associated proposal issues (or delete block) -->
    
    21
    -- mullvad-browser#123
    
    21
    +- mullvad-browser#xyz
    
    22 22
     
    
    23 23
     ### Design
    
    24 24
     <!-- Add links to associated design issues (or delete block) -->
    
    25
    -- tpo/UX/Design#123
    
    25
    +- tpo/UX/Design#xyz
    
    26 26
     
    
    27 27
     <!-- Do not edit beneath this line <3 -->
    
    28 28
     
    

  • .gitlab/issue_templates/050 Backport.md
    ... ... @@ -13,12 +13,12 @@ please ensure the title has the following format:
    13 13
     ## Bookkeeping
    
    14 14
     
    
    15 15
     ### Issue(s)
    
    16
    -- tor-browser#12345
    
    17
    -- mullvad-browser#123
    
    18
    -- https://bugzilla.mozilla.org/show_bug.cgi?id=1234567
    
    16
    +- tor-browser#xxxxx
    
    17
    +- mullvad-browser#xyz
    
    18
    +- https://bugzilla.mozilla.org/show_bug.cgi?id=xxxxxxx
    
    19 19
     
    
    20 20
     ### Merge Request(s)
    
    21
    -- tor-browser!123
    
    21
    +- tor-browser!xxxx
    
    22 22
     
    
    23 23
     ### Target Channels
    
    24 24
     
    

  • .gitlab/merge_request_templates/Default.md
    ... ... @@ -27,8 +27,8 @@
    27 27
     
    
    28 28
     #### Target Channels
    
    29 29
     
    
    30
    -- [ ] **Alpha**: esr140-15.0
    
    31
    -- [ ] **Stable**: esr128-14.5
    
    30
    +- [ ] **Alpha**: rapid release, 16.0
    
    31
    +- [ ] **Stable**: esr140-15.0
    
    32 32
     
    
    33 33
     ### Backporting
    
    34 34
     
    

  • browser/components/mullvad-browser/AboutMullvadBrowserChild.sys.mjs
    ... ... @@ -5,13 +5,34 @@ export class AboutMullvadBrowserChild extends JSWindowActorChild {
    5 5
       handleEvent(event) {
    
    6 6
         switch (event.type) {
    
    7 7
           case "DOMContentLoaded":
    
    8
    -        this.sendQuery("AboutMullvadBrowser:GetUpdateData").then(data => {
    
    9
    -          const updateEvent = new this.contentWindow.CustomEvent("UpdateData", {
    
    10
    -            detail: Cu.cloneInto(data, this.contentWindow),
    
    11
    -          });
    
    12
    -          this.contentWindow.dispatchEvent(updateEvent);
    
    8
    +        this.sendQuery("AboutMullvadBrowser:GetUpdateData").then(response => {
    
    9
    +          if (response.delayed) {
    
    10
    +            // Wait for DelayedUpdateData.
    
    11
    +            return;
    
    12
    +          }
    
    13
    +          this.#dispatchUpdateData(response.updateData);
    
    13 14
             });
    
    14 15
             break;
    
    15 16
         }
    
    16 17
       }
    
    18
    +
    
    19
    +  receiveMessage(message) {
    
    20
    +    switch (message.name) {
    
    21
    +      case "AboutMullvadBrowser:DelayedUpdateData":
    
    22
    +        this.#dispatchUpdateData(message.data);
    
    23
    +        break;
    
    24
    +    }
    
    25
    +  }
    
    26
    +
    
    27
    +  /**
    
    28
    +   * Send the update data to the page.
    
    29
    +   *
    
    30
    +   * @param {object} data - The data to send.
    
    31
    +   */
    
    32
    +  #dispatchUpdateData(data) {
    
    33
    +    const updateEvent = new this.contentWindow.CustomEvent("UpdateData", {
    
    34
    +      detail: Cu.cloneInto(data, this.contentWindow),
    
    35
    +    });
    
    36
    +    this.contentWindow.dispatchEvent(updateEvent);
    
    37
    +  }
    
    17 38
     }

  • browser/components/mullvad-browser/AboutMullvadBrowserParent.sys.mjs
    ... ... @@ -2,30 +2,73 @@
    2 2
      * Actor parent class for the about:mullvad-browser page.
    
    3 3
      */
    
    4 4
     export class AboutMullvadBrowserParent extends JSWindowActorParent {
    
    5
    -  receiveMessage(message) {
    
    5
    +  /**
    
    6
    +   * Whether this instance has a preloaded browser.
    
    7
    +   *
    
    8
    +   * @type {boolean}
    
    9
    +   */
    
    10
    +  #preloaded = false;
    
    11
    +
    
    12
    +  /**
    
    13
    +   * Method to be called when the browser corresponding to this actor has its
    
    14
    +   * preloadedState attribute removed.
    
    15
    +   */
    
    16
    +  preloadedRemoved() {
    
    17
    +    if (!this.#preloaded) {
    
    18
    +      return;
    
    19
    +    }
    
    20
    +    this.#preloaded = false;
    
    21
    +    // Send in the initial data now that the page is actually going to be
    
    22
    +    // visible.
    
    23
    +    this.sendAsyncMessage(
    
    24
    +      "AboutMullvadBrowser:DelayedUpdateData",
    
    25
    +      this.#getUpdateData()
    
    26
    +    );
    
    27
    +  }
    
    28
    +
    
    29
    +  /**
    
    30
    +   * Get the update data for the page.
    
    31
    +   *
    
    32
    +   * @returns {object?} - The update data, or `null` if no update should be
    
    33
    +   *   shown.
    
    34
    +   */
    
    35
    +  #getUpdateData() {
    
    6 36
         const shouldNotifyPref = "mullvadbrowser.post_update.shouldNotify";
    
    37
    +    if (!Services.prefs.getBoolPref(shouldNotifyPref, false)) {
    
    38
    +      return null;
    
    39
    +    }
    
    40
    +    Services.prefs.clearUserPref(shouldNotifyPref);
    
    41
    +    // Try use the same URL as the about dialog. See mullvad-browser#411.
    
    42
    +    let updateURL = Services.urlFormatter.formatURLPref(
    
    43
    +      "app.releaseNotesURL.aboutDialog"
    
    44
    +    );
    
    45
    +    if (updateURL === "about:blank") {
    
    46
    +      updateURL = Services.urlFormatter.formatURLPref(
    
    47
    +        "startup.homepage_override_url"
    
    48
    +      );
    
    49
    +    }
    
    50
    +
    
    51
    +    return {
    
    52
    +      version: Services.prefs.getCharPref(
    
    53
    +        "browser.startup.homepage_override.mullvadbrowser.version"
    
    54
    +      ),
    
    55
    +      url: updateURL,
    
    56
    +    };
    
    57
    +  }
    
    58
    +
    
    59
    +  receiveMessage(message) {
    
    7 60
         switch (message.name) {
    
    8 61
           case "AboutMullvadBrowser:GetUpdateData": {
    
    9
    -        if (!Services.prefs.getBoolPref(shouldNotifyPref, false)) {
    
    10
    -          return Promise.resolve(null);
    
    11
    -        }
    
    12
    -        Services.prefs.clearUserPref(shouldNotifyPref);
    
    13
    -        // Try use the same URL as the about dialog. See mullvad-browser#411.
    
    14
    -        let updateURL = Services.urlFormatter.formatURLPref(
    
    15
    -          "app.releaseNotesURL.aboutDialog"
    
    16
    -        );
    
    17
    -        if (updateURL === "about:blank") {
    
    18
    -          updateURL = Services.urlFormatter.formatURLPref(
    
    19
    -            "startup.homepage_override_url"
    
    20
    -          );
    
    62
    +        const browser = this.browsingContext.top.embedderElement;
    
    63
    +        if (browser?.getAttribute("preloadedState") === "preloaded") {
    
    64
    +          // Wait until the page is actually about to be shown before sending
    
    65
    +          // the initial data.
    
    66
    +          // Otherwise the preloaded page might grab the updateData even though
    
    67
    +          // it won't be shown as the landing page. See mullvad-browser#486.
    
    68
    +          this.#preloaded = true;
    
    69
    +          return Promise.resolve({ delayed: true });
    
    21 70
             }
    
    22
    -
    
    23
    -        return Promise.resolve({
    
    24
    -          version: Services.prefs.getCharPref(
    
    25
    -            "browser.startup.homepage_override.mullvadbrowser.version"
    
    26
    -          ),
    
    27
    -          url: updateURL,
    
    28
    -        });
    
    71
    +        return Promise.resolve({ updateData: this.#getUpdateData() });
    
    29 72
           }
    
    30 73
         }
    
    31 74
         return undefined;
    

  • browser/components/search/SearchUIUtils.sys.mjs
    ... ... @@ -86,8 +86,12 @@ export var SearchUIUtils = {
    86 86
        *   name of the engine to be moved and replaced.
    
    87 87
        * @param {string} newEngine
    
    88 88
        *   name of the application default engine to replaced the removed engine.
    
    89
    +   * @param {object} [details]
    
    90
    +   *   Additional details about the removed search engine.
    
    91
    +   * @param {boolean} [details.removedMullvadLeta]
    
    92
    +   *   Whether we removed Mullvad Leta.
    
    89 93
        */
    
    90
    -  async removalOfSearchEngineNotificationBox(oldEngine, newEngine) {
    
    94
    +  async removalOfSearchEngineNotificationBox(oldEngine, newEngine, details) {
    
    91 95
         let win = lazy.BrowserWindowTracker.getTopWindow({
    
    92 96
           allowFromInactiveWorkspace: true,
    
    93 97
         });
    
    ... ... @@ -103,9 +107,14 @@ export var SearchUIUtils = {
    103 107
               win.gNotificationBox.removeNotification(notificationBox);
    
    104 108
             },
    
    105 109
           },
    
    106
    -      {
    
    107
    -        supportPage: "search-engine-removal",
    
    108
    -      },
    
    110
    +      details?.removedMullvadLeta
    
    111
    +        ? {
    
    112
    +            link: "https://leta.mullvad.net/mullvad-browser",
    
    113
    +            "l10n-id": "moz-support-link-text",
    
    114
    +          }
    
    115
    +        : {
    
    116
    +            supportPage: "search-engine-removal",
    
    117
    +          },
    
    109 118
         ];
    
    110 119
     
    
    111 120
         await win.gNotificationBox.appendNotification(
    

  • browser/components/tabbrowser/NewTabPagePreloading.sys.mjs
    ... ... @@ -178,6 +178,17 @@ export let NewTabPagePreloading = {
    178 178
           this.browserCounts[countKey]--;
    
    179 179
           browser.removeAttribute("preloadedState");
    
    180 180
           browser.setAttribute("autocompletepopup", "PopupAutoComplete");
    
    181
    +      // Copied from tor-browser. See mullvad-browser#486.
    
    182
    +      // Let a preloaded about:mullvad-browser page know that it is no longer
    
    183
    +      // preloaded (about to be shown).
    
    184
    +      try {
    
    185
    +        browser.browsingContext?.currentWindowGlobal
    
    186
    +          ?.getActor("AboutMullvadBrowser")
    
    187
    +          .preloadedRemoved();
    
    188
    +      } catch {
    
    189
    +        // Not an about:mullvad-browser page with an AboutMullvadBrowserParent
    
    190
    +        // instance.
    
    191
    +      }
    
    181 192
         }
    
    182 193
     
    
    183 194
         return browser;
    

  • testing/testsuite-targets.mk
    ... ... @@ -151,7 +151,7 @@ download-wpt-manifest:
    151 151
     	$(call py_action,download_wpt_manifest)
    
    152 152
     
    
    153 153
     define package_archive
    
    154
    -package-tests-$(1): stage-all package-tests-prepare-dest download-wpt-manifest
    
    154
    +package-tests-$(1): stage-all package-tests-prepare-dest
    
    155 155
     	$$(call py_action,test_archive, \
    
    156 156
     		$(1) \
    
    157 157
     		'$$(abspath $$(test_archive_dir))/$$(PKG_BASENAME).$(1).tests.$(2)')
    

  • toolkit/components/search/SearchService.sys.mjs
    ... ... @@ -1849,7 +1849,11 @@ export class SearchService {
    1849 1849
     
    
    1850 1850
           this._showRemovalOfSearchEngineNotificationBox(
    
    1851 1851
             prevCurrentEngineName || prevAppDefaultEngineName,
    
    1852
    -        newCurrentEngineName
    
    1852
    +        newCurrentEngineName,
    
    1853
    +        {
    
    1854
    +          removedMullvadLeta:
    
    1855
    +            (prevCurrentEngineId || prevAppDefaultEngineId) === "mullvad-leta",
    
    1856
    +        }
    
    1853 1857
           );
    
    1854 1858
         }
    
    1855 1859
       }
    
    ... ... @@ -1927,7 +1931,13 @@ export class SearchService {
    1927 1931
           // the user changes their locale it causes a change in engines.
    
    1928 1932
           // If there is no update to settings metadata then the engine change was
    
    1929 1933
           // caused by an update to config rather than a user changing their locale.
    
    1930
    -      if (!this.#didSettingsMetaDataUpdate(prevMetaData)) {
    
    1934
    +      //
    
    1935
    +      // For the removal of Mullvad Leta, we show the notification even if the
    
    1936
    +      // locale also changed because this change is not locale-dependant.
    
    1937
    +      if (
    
    1938
    +        (prevCurrentEngineId || prevAppDefaultEngineId) === "mullvad-leta" ||
    
    1939
    +        !this.#didSettingsMetaDataUpdate(prevMetaData)
    
    1940
    +      ) {
    
    1931 1941
             return true;
    
    1932 1942
           }
    
    1933 1943
         }
    
    ... ... @@ -3821,16 +3831,22 @@ export class SearchService {
    3821 3831
        *   The name of the previous default engine that will be replaced.
    
    3822 3832
        * @param {string} newCurrentEngineName
    
    3823 3833
        *   The name of the engine that will be the new default engine.
    
    3834
    +   * @param {object} [details]
    
    3835
    +   *   Additional details about the removed search engine.
    
    3836
    +   * @param {boolean} [details.removedMullvadLeta]
    
    3837
    +   *   Whether we removed Mullvad Leta.
    
    3824 3838
        */
    
    3825 3839
       _showRemovalOfSearchEngineNotificationBox(
    
    3826 3840
         prevCurrentEngineName,
    
    3827
    -    newCurrentEngineName
    
    3841
    +    newCurrentEngineName,
    
    3842
    +    details
    
    3828 3843
       ) {
    
    3829 3844
         lazy.BrowserUtils.callModulesFromCategory(
    
    3830 3845
           { categoryName: "search-service-notification" },
    
    3831 3846
           "search-engine-removal",
    
    3832 3847
           prevCurrentEngineName,
    
    3833
    -      newCurrentEngineName
    
    3848
    +      newCurrentEngineName,
    
    3849
    +      details
    
    3834 3850
         );
    
    3835 3851
       }
    
    3836 3852
     
    

  • toolkit/components/search/content/base-browser-search-engine-icons.json
    ... ... @@ -5,11 +5,8 @@
    5 5
       "ddg-html": [
    
    6 6
         { "url": "chrome://global/content/search/duckduckgo.ico", "imageSize": 32 }
    
    7 7
       ],
    
    8
    -  "mullvad-leta": [
    
    9
    -    {
    
    10
    -      "url": "chrome://global/content/search/mullvad-leta.svg",
    
    11
    -      "imageSize": 16
    
    12
    -    }
    
    8
    +  "ddg-noai": [
    
    9
    +    { "url": "chrome://global/content/search/duckduckgo.ico", "imageSize": 32 }
    
    13 10
       ],
    
    14 11
       "mojeek": [
    
    15 12
         { "url": "chrome://global/content/search/mojeek.ico", "imageSize": 32 }
    

  • toolkit/components/search/content/base-browser-search-engines.json
    1 1
     [
    
    2 2
       {
    
    3 3
         "base": {
    
    4
    -      "aliases": ["mullvad-leta", "leta", "mullvad", "ml"],
    
    4
    +      "aliases": ["duckduckgo", "ddg"],
    
    5 5
           "classification": "general",
    
    6
    -      "name": "Mullvad Leta",
    
    6
    +      "name": "DuckDuckGo",
    
    7 7
           "urls": {
    
    8 8
             "search": {
    
    9
    -          "base": "https://leta.mullvad.net/",
    
    9
    +          "base": "https://duckduckgo.com/",
    
    10 10
               "params": [],
    
    11 11
               "searchTermParamName": "q"
    
    12 12
             }
    
    13 13
           }
    
    14 14
         },
    
    15
    -    "id": "ee88d691-6d7a-4adb-9fec-5a205565505a",
    
    16
    -    "identifier": "mullvad-leta",
    
    15
    +    "id": "04e99a38-13ee-47d8-8aa4-64482b3dea99",
    
    16
    +    "identifier": "ddg",
    
    17 17
         "recordType": "engine",
    
    18 18
         "variants": [{ "environment": { "allRegionsAndLocales": true } }]
    
    19 19
       },
    
    20 20
       {
    
    21 21
         "base": {
    
    22
    -      "aliases": ["duckduckgo", "ddg"],
    
    22
    +      "aliases": ["ddg-html", "duckduckgohtml", "ddgh"],
    
    23 23
           "classification": "general",
    
    24
    -      "name": "DuckDuckGo",
    
    24
    +      "name": "DuckDuckGo (HTML)",
    
    25 25
           "urls": {
    
    26 26
             "search": {
    
    27
    -          "base": "https://duckduckgo.com/",
    
    27
    +          "base": "https://html.duckduckgo.com/html/",
    
    28 28
               "params": [],
    
    29 29
               "searchTermParamName": "q"
    
    30 30
             }
    
    31 31
           }
    
    32 32
         },
    
    33
    -    "id": "04e99a38-13ee-47d8-8aa4-64482b3dea99",
    
    34
    -    "identifier": "ddg",
    
    33
    +    "id": "98d8c84b-7455-431d-98b9-890e7bcc0041",
    
    34
    +    "identifier": "ddg-html",
    
    35 35
         "recordType": "engine",
    
    36 36
         "variants": [{ "environment": { "allRegionsAndLocales": true } }]
    
    37 37
       },
    
    38 38
       {
    
    39 39
         "base": {
    
    40
    -      "aliases": ["ddg-html", "duckduckgohtml", "ddgh"],
    
    40
    +      "aliases": ["ddgnoai"],
    
    41 41
           "classification": "general",
    
    42
    -      "name": "DuckDuckGo (HTML)",
    
    42
    +      "name": "DuckDuckGo (no AI)",
    
    43 43
           "urls": {
    
    44 44
             "search": {
    
    45
    -          "base": "https://html.duckduckgo.com/html/",
    
    45
    +          "base": "https://noai.duckduckgo.com/",
    
    46 46
               "params": [],
    
    47 47
               "searchTermParamName": "q"
    
    48 48
             }
    
    49 49
           }
    
    50 50
         },
    
    51
    -    "id": "98d8c84b-7455-431d-98b9-890e7bcc0041",
    
    52
    -    "identifier": "ddg-html",
    
    51
    +    "id": "91687f02-56dd-4fef-ba26-bf139dff3166",
    
    52
    +    "identifier": "ddg-noai",
    
    53 53
         "recordType": "engine",
    
    54 54
         "variants": [{ "environment": { "allRegionsAndLocales": true } }]
    
    55 55
       },
    
    ... ... @@ -109,7 +109,16 @@
    109 109
       },
    
    110 110
       {
    
    111 111
         "recordType": "defaultEngines",
    
    112
    -    "globalDefault": "mullvad-leta",
    
    113
    -    "globalDefaultPrivate": "mullvad-leta"
    
    112
    +    "globalDefault": "ddg",
    
    113
    +    "globalDefaultPrivate": "dgg"
    
    114
    +  },
    
    115
    +  {
    
    116
    +    "recordType": "engineOrders",
    
    117
    +    "orders": [
    
    118
    +      {
    
    119
    +        "environment": { "allRegionsAndLocales": true },
    
    120
    +        "order": ["ddg", "ddg-html", "ddg-noai", "mojeek", "brave", "startpage"]
    
    121
    +      }
    
    122
    +    ]
    
    114 123
       }
    
    115 124
     ]

  • toolkit/components/search/content/mullvad-leta.svg deleted
    1
    -<svg xmlns="http://www.w3.org/2000/svg" id="Mullvad_VPN_Logo_Positive" x="0" y="0" version="1.1"
    
    2
    -     viewBox="0 0 252.70001 252.6" xml:space="preserve">
    
    3
    -  <g id="Logo" transform="translate(-566.2 -73.7)">
    
    4
    -    <path id="bg" fill="#192e45" fill-rule="evenodd"
    
    5
    -          d="M566.2 200c0 69.8 56.6 126.3 126.3 126.3 69.7 0 126.4-56.5 126.4-126.3S762.3 73.7 692.5 73.7c-69.8 0-126.3 56.5-126.3 126.3z"
    
    6
    -          clip-rule="evenodd" />
    
    7
    -      <path id="Mullvad_Fur" fill="#d0933a" fill-rule="evenodd"
    
    8
    -            d="M583.1 184.9l9.6-13.4c0 .1-.6 19.3-.6 19.3l2.7-14.5c8 16.2 27.6 38.6 45.5 50.6 1.9 1.3 3.5 2.7 4.6 4.1 2.3.9 4.6 1.4 6.9 1.8 1.2.2 2.5.3 3.7.4 1.2.1 2.5.1 3.7.1 1.2 0 2.4-.1 3.6-.2 1.2-.1 2.4-.3 3.6-.5 1.2-.2 2.4-.4 3.5-.8 1.2-.3 2.3-.6 3.5-1 1.1-.3 2.3-.8 3.4-1.2 1.1-.5 2.2-.9 3.3-1.5 1.1-.6 2.2-1.1 3.2-1.7 1.1-.5 2.1-1.2 3.2-1.8 1.1-.6 2.1-1.3 3.2-1.9 1.1-.6 2.1-1.3 3.1-1.9 1-.7 2.1-1.3 3.1-2s2.1-1.3 3.2-2l1-.6.5.3 7.2 4.8-7.3-1.9c-.7.8-1.4 1.6-2.2 2.4-.9.9-1.9 1.8-2.8 2.7-1 .8-2 1.7-3.1 2.4-1.1.8-2.1 1.5-3.3 2.2-2.2 1.4-4.6 2.6-7.1 3.6-1.2.5-2.5 1-3.7 1.4-1.3.4-2.5.8-3.8 1.1-1.3.3-2.6.6-3.9.8-1.3.2-2.6.3-3.9.5-2.6.1-5.3.1-7.9-.3-1.3-.2-2.6-.4-3.9-.7-1.3-.3-2.5-.7-3.7-1.1-2.1-.8-4.2-1.8-6.1-3 0 0-6.9 1-4.1 6.2 2.8 5.2 7 4.7 5 10.8-1.4 3.3-3.4 6.5-5.6 9.5-4.6 6.2-11.8 11.7-11.1 15 32.7 40.3 106.4 34.7 134.4-1.3-.4-5.2-8.6-7.7-14.3-20.4 1.6.5 4 1.2 4 1.1 0-.1-6.8-11.1-7.1-12.2l4.4.3s-5.8-7.2-6-7.9l5.9-.8s-7.4-8.5-7.5-9.2l7.5 1.2-8.2-9.9h3.9l-4.6-6.7c-.8-.3-1.6-.5-2.4-.7l-3-.9c-11.2-3.5-21.8-6.7-32-13.1-14.3-8.9-27.1-19.8-36.7-28.3l-19.3-9.4c-18.5-1.4-35.9-.9-46.5 1.2l6.8-11.6-10.4 12.5c-.7-.2-.9-.6-.9-.6l.7-15.4-3.3 13.9c-1-.5-2.2-.7-3.4-.7-4.6 0-8.3 3.7-8.3 8.3 0 4.2 3.1 7.7 7.2 8.2l-7.1 14.4z"
    
    9
    -            clip-rule="evenodd" />
    
    10
    -      <path id="Mullvad_Nose" fill="#ffcc86" fill-rule="evenodd"
    
    11
    -            d="M594.8 154.5c-1-.4-2.2-.7-3.3-.7-4.6 0-8.3 3.7-8.3 8.3 0 4 2.9 7.4 6.7 8.2h.2c2.5-.8 7.5-7.5 6.7-11.7-.4-1.5-1-2.9-2-4.1z"
    
    12
    -            clip-rule="evenodd" />
    
    13
    -      <path id="Mullvad_Helmet" fill="#fdd321" fill-rule="evenodd"
    
    14
    -            d="M667.6 143.8c-1.5-4.1-1.1-9.4 1-14.4 3-6.9 8.7-11.5 14.1-11.5 1.1 0 2.1.2 3.1.6 3.1-2.8 6.7-5.1 10.7-6.7 22.1-8.8 54.4 6.9 62.7 28.6 4 10.5 2.8 22-.6 32.5-2.8 8.6-13 21-9.2 30.4-1.5-.4-33.1-10.2-41.9-15.8-14.1-8.8-26.8-19.6-36.3-28l-.3-.3-32.1-15.2c-.4-.2-.8-.4-1.1-.6 4.6 0 22.1 2.1 29.9.4"
    
    15
    -            clip-rule="evenodd" />
    
    16
    -      <g id="Helmet_Lamp">
    
    17
    -      <path id="path113" fill="#fff"
    
    18
    -            d="M677.1 147.4c-.9 0-1.6-.2-2.3-.5-1.6-.7-2.8-2-3.6-4-1.4-3.4-1-8.1.9-12.5 2.5-5.6 7.3-9.7 11.5-9.7.8 0 1.6.2 2.4.5 2.1.9 3.6 3 4.1 6 .6 3.2.1 6.9-1.5 10.4-2.4 5.7-7.3 9.8-11.5 9.8z" />
    
    19
    -          <g id="g117">
    
    20
    -        <path id="path115" fill="#1d2a3a"
    
    21
    -              d="M683.6 122.3c.6 0 1.2.1 1.8.4 1.6.7 2.8 2.5 3.2 4.9.5 2.9.1 6.3-1.4 9.5-2.2 5.1-6.5 8.8-10.1 8.8-.6 0-1.2-.1-1.7-.3-1.5-.6-2.3-2-2.7-3.1-1.2-3-.9-7.4.8-11.4 2.2-5.1 6.5-8.8 10.1-8.8m0-3c-4.8 0-10.1 4.4-12.9 10.7-2.1 4.7-2.4 9.8-.9 13.7.9 2.3 2.4 3.9 4.3 4.8.9.4 1.9.6 3 .6 4.8 0 10.1-4.4 12.8-10.7 1.7-3.8 2.2-7.8 1.6-11.3-.6-3.5-2.4-6-5-7.1-.9-.5-1.9-.7-2.9-.7z" />
    
    22
    -      </g>
    
    23
    -    </g>
    
    24
    -  </g>
    
    25
    -</svg>

  • toolkit/components/search/tests/xpcshell/test_base_browser.js
    ... ... @@ -4,19 +4,21 @@
    4 4
     /**
    
    5 5
      * This tests the SearchService to check our override of the remote settings is
    
    6 6
      * working as expected.
    
    7
    + *
    
    8
    + * When adding new engines, it should be enough to change expectedURLs below.
    
    7 9
      */
    
    8 10
     
    
    9 11
     "use strict";
    
    10 12
     
    
    11 13
     const expectedURLs = {
    
    12
    -  leta: "https://leta.mullvad.net/?q=test",
    
    13
    -  ddg: "https://duckduckgo.com/html/?q=test",
    
    14
    -  "ddg-html": "https://html.duckduckgo.com/html?q=test",
    
    14
    +  ddg: "https://duckduckgo.com/?q=test",
    
    15
    +  "ddg-html": "https://html.duckduckgo.com/html/?q=test",
    
    16
    +  "ddg-noai": "https://noai.duckduckgo.com/?q=test",
    
    15 17
       mojeek: "https://www.mojeek.com/search?q=test",
    
    16 18
       brave: "https://search.brave.com/search?q=test",
    
    17 19
       startpage: "https://www.startpage.com/sp/search?q=test",
    
    18 20
     };
    
    19
    -const defaultEngine = "leta";
    
    21
    +const defaultEngine = "ddg";
    
    20 22
     
    
    21 23
     add_setup(async function setup() {
    
    22 24
       await Services.search.init();
    
    ... ... @@ -49,3 +51,11 @@ add_task(function test_checkSearchURLs() {
    49 51
         Assert.equal(foundUrl, url, `The URL of ${engine.name} is not altered.`);
    
    50 52
       }
    
    51 53
     });
    
    54
    +
    
    55
    +add_task(async function test_iconsDoesNotFail() {
    
    56
    +  for (const id of Object.keys(expectedURLs)) {
    
    57
    +    const engine = Services.search.getEngineById(id);
    
    58
    +    // No need to assert anything, as in case of error this method should throw.
    
    59
    +    await engine.getIconURL();
    
    60
    +  }
    
    61
    +});

  • toolkit/mozapps/update/updater/updater.cpp
    ... ... @@ -3326,6 +3326,10 @@ int NS_main(int argc, NS_tchar** argv) {
    3326 3326
       putenv(const_cast<char*>("MOZ_USING_SERVICE="));
    
    3327 3327
     #endif
    
    3328 3328
     
    
    3329
    +#if defined(XP_UNIX) && !defined(XP_MACOSX)
    
    3330
    +  unsetenv("FONTCONFIG_PATH");
    
    3331
    +#endif
    
    3332
    +
    
    3329 3333
       if (argc == 2 && NS_tstrcmp(argv[1], NS_T("--channels-allowed")) == 0) {
    
    3330 3334
     #ifdef MOZ_VERIFY_MAR_SIGNATURE
    
    3331 3335
         int rv = PopulategMARStrings();