[tbb-commits] [tor-browser] 17/43: Bug 1499095 - Remove engines hidden by policy after restoring defaults. r=Standard8, a=RyanVM

gitolite role git at cupani.torproject.org
Tue May 31 07:07:00 UTC 2022


This is an automated email from the git hooks/post-receive script.

pierov pushed a commit to branch tor-browser-91.10.0esr-11.0-1
in repository tor-browser.

commit 8f84602ca73cda7d71c9d7ae82e04f4f52855b57
Author: Mike Kaply <mozilla at kaply.com>
AuthorDate: Tue Apr 12 14:58:45 2022 +0000

    Bug 1499095 - Remove engines hidden by policy after restoring defaults. r=Standard8, a=RyanVM
    
    Differential Revision: https://phabricator.services.mozilla.com/D142888
---
 .../tests/browser/browser_policy_search_engine.js  | 55 ++++++++++++++++++++++
 browser/components/preferences/search.js           | 16 +++++++
 2 files changed, 71 insertions(+)

diff --git a/browser/components/enterprisepolicies/tests/browser/browser_policy_search_engine.js b/browser/components/enterprisepolicies/tests/browser/browser_policy_search_engine.js
index e99c19afb4c97..3307de85d9309 100644
--- a/browser/components/enterprisepolicies/tests/browser/browser_policy_search_engine.js
+++ b/browser/components/enterprisepolicies/tests/browser/browser_policy_search_engine.js
@@ -2,6 +2,12 @@
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 "use strict";
 
+const { SearchTestUtils } = ChromeUtils.import(
+  "resource://testing-common/SearchTestUtils.jsm"
+);
+const { SearchUtils } = ChromeUtils.import(
+  "resource://gre/modules/SearchUtils.jsm"
+);
 const { CustomizableUITestUtils } = ChromeUtils.import(
   "resource://testing-common/CustomizableUITestUtils.jsm"
 );
@@ -468,3 +474,52 @@ add_task(async function test_install_with_suggest() {
   await Services.search.removeEngine(engine);
   EnterprisePolicyTesting.resetRunOnceState();
 });
+
+add_task(async function test_reset_default() {
+  await setupPolicyEngineWithJson({
+    policies: {
+      SearchEngines: {
+        Remove: ["DuckDuckGo"],
+      },
+    },
+  });
+  // Get in line, because the Search policy callbacks are async.
+  await TestUtils.waitForTick();
+
+  let engine = Services.search.getEngineByName("DuckDuckGo");
+
+  is(engine.hidden, true, "Application specified engine should be hidden.");
+
+  await BrowserTestUtils.withNewTab(
+    "about:preferences#search",
+    async browser => {
+      let tree = browser.contentDocument.querySelector("#engineList");
+      for (let i = 0; i < tree.view.rowCount; i++) {
+        let cellName = tree.view.getCellText(
+          i,
+          tree.columns.getNamedColumn("engineName")
+        );
+        isnot(cellName, "DuckDuckGo", "DuckDuckGo should be invisible");
+      }
+      let restoreDefaultsButton = browser.contentDocument.getElementById(
+        "restoreDefaultSearchEngines"
+      );
+      let updatedPromise = SearchTestUtils.promiseSearchNotification(
+        SearchUtils.MODIFIED_TYPE.CHANGED,
+        SearchUtils.TOPIC_ENGINE_MODIFIED
+      );
+      restoreDefaultsButton.click();
+      await updatedPromise;
+      for (let i = 0; i < tree.view.rowCount; i++) {
+        let cellName = tree.view.getCellText(
+          i,
+          tree.columns.getNamedColumn("engineName")
+        );
+        isnot(cellName, "DuckDuckGo", "DuckDuckGo should be invisible");
+      }
+    }
+  );
+
+  engine.hidden = false;
+  EnterprisePolicyTesting.resetRunOnceState();
+});
diff --git a/browser/components/preferences/search.js b/browser/components/preferences/search.js
index 0fc1531b3e166..676b6a016abbe 100644
--- a/browser/components/preferences/search.js
+++ b/browser/components/preferences/search.js
@@ -784,6 +784,22 @@ EngineStore.prototype = {
         added++;
       }
     }
+
+    // We can't do this as part of the loop above because the indices are
+    // used for moving engines.
+    let policyRemovedEngineNames =
+      Services.policies.getActivePolicies()?.SearchEngines?.Remove || [];
+    for (let engineName of policyRemovedEngineNames) {
+      let engine = Services.search.getEngineByName(engineName);
+      if (engine) {
+        try {
+          await Services.search.removeEngine(engine);
+        } catch (ex) {
+          // Engine might not exist
+        }
+      }
+    }
+
     Services.search.resetToOriginalDefaultEngine();
     gSearchPane.showRestoreDefaults(false);
     gSearchPane.buildDefaultEngineDropDowns();

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the tbb-commits mailing list