/browser/components/preferences/tests/browser_searchRestoreDefaults.js

https://github.com/dot-browser/desktop · JavaScript · 107 lines · 81 code · 18 blank · 8 comment · 5 complexity · 3548114e3f82b3b12d3bdc6a21c287ea MD5 · raw file

  1. /* Any copyright is dedicated to the Public Domain.
  2. * http://creativecommons.org/publicdomain/zero/1.0/ */
  3. const { SearchTestUtils } = ChromeUtils.import(
  4. "resource://testing-common/SearchTestUtils.jsm"
  5. );
  6. const { SearchUtils } = ChromeUtils.import(
  7. "resource://gre/modules/SearchUtils.jsm"
  8. );
  9. add_task(async function test_restore_functionality() {
  10. // Ensure no engines are hidden to begin with.
  11. for (let engine of await Services.search.getDefaultEngines()) {
  12. if (engine.hidden) {
  13. engine.hidden = false;
  14. }
  15. }
  16. await openPreferencesViaOpenPreferencesAPI("search", { leaveOpen: true });
  17. let doc = gBrowser.selectedBrowser.contentDocument;
  18. let restoreDefaultsButton = doc.getElementById("restoreDefaultSearchEngines");
  19. Assert.ok(
  20. restoreDefaultsButton.disabled,
  21. "Should have disabled the restore default search engines button on open"
  22. );
  23. let updatedPromise = SearchTestUtils.promiseSearchNotification(
  24. SearchUtils.MODIFIED_TYPE.CHANGED,
  25. SearchUtils.TOPIC_ENGINE_MODIFIED
  26. );
  27. let tree = doc.querySelector("#engineList");
  28. // Check for default search engines to be displayed in the engineList
  29. let defaultEngines = await Services.search.getDefaultEngines();
  30. for (let i = 0; i < defaultEngines.length; i++) {
  31. let cellName = tree.view.getCellText(
  32. i,
  33. tree.columns.getNamedColumn("engineName")
  34. );
  35. if (cellName == "DuckDuckGo") {
  36. tree.view.selection.select(i);
  37. break;
  38. }
  39. }
  40. doc.getElementById("removeEngineButton").click();
  41. await updatedPromise;
  42. let engine = await Services.search.getEngineByName("DuckDuckGo");
  43. Assert.ok(engine.hidden, "Should have hidden the engine");
  44. Assert.ok(
  45. !restoreDefaultsButton.disabled,
  46. "Should have enabled the restore default search engines button"
  47. );
  48. updatedPromise = SearchTestUtils.promiseSearchNotification(
  49. SearchUtils.MODIFIED_TYPE.CHANGED,
  50. SearchUtils.TOPIC_ENGINE_MODIFIED
  51. );
  52. restoreDefaultsButton.click();
  53. await updatedPromise;
  54. // Let the stack unwind so that the restore defaults button can update its
  55. // state.
  56. await new Promise(resolve => Services.tm.dispatchToMainThread(resolve));
  57. Assert.ok(!engine.hidden, "Should have re-enabled the disabled engine");
  58. Assert.ok(
  59. restoreDefaultsButton.disabled,
  60. "Should have disabled the restore default search engines button after use"
  61. );
  62. gBrowser.removeCurrentTab();
  63. });
  64. add_task(async function test_restoreEnabledOnOpenWithEngineHidden() {
  65. let engine = await Services.search.getEngineByName("DuckDuckGo");
  66. engine.hidden = true;
  67. await openPreferencesViaOpenPreferencesAPI("search", { leaveOpen: true });
  68. let doc = gBrowser.selectedBrowser.contentDocument;
  69. let restoreDefaultsButton = doc.getElementById("restoreDefaultSearchEngines");
  70. Assert.ok(
  71. !restoreDefaultsButton.disabled,
  72. "Should have enabled the restore default search engines button on open"
  73. );
  74. let updatedPromise = SearchTestUtils.promiseSearchNotification(
  75. SearchUtils.MODIFIED_TYPE.CHANGED,
  76. SearchUtils.TOPIC_ENGINE_MODIFIED
  77. );
  78. restoreDefaultsButton.click();
  79. await updatedPromise;
  80. // Let the stack unwind so that the restore defaults button can update its
  81. // state.
  82. await new Promise(resolve => Services.tm.dispatchToMainThread(resolve));
  83. Assert.ok(!engine.hidden, "Should have re-enabled the disabled engine");
  84. Assert.ok(
  85. restoreDefaultsButton.disabled,
  86. "Should have disabled the restore default search engines button after use"
  87. );
  88. gBrowser.removeCurrentTab();
  89. });