Bug 1357352 - Hide data-hidden-from-search=true in Preferences search result r?mconley
MozReview-Commit-ID: JDhDO7o7E5U
--- a/browser/components/preferences/in-content/findInPage.js
+++ b/browser/components/preferences/in-content/findInPage.js
@@ -198,25 +198,26 @@ var gSearchResultsPane = {
gotoPref("paneSearchResults");
this.searchResultsCategory.hidden = false;
let resultsFound = false;
// Building the range for highlighted areas
let rootPreferences = document.getElementById("mainPrefPane")
- let rootPreferencesChildren = rootPreferences.children;
+ let rootPreferencesChildren = rootPreferences
+ .querySelectorAll(":not([data-hidden-from-search])");
// Showing all the children to bind JS, Access Keys, etc
- for (let i = 0; i < rootPreferences.childElementCount; i++) {
+ for (let i = 0; i < rootPreferencesChildren.length; i++) {
rootPreferencesChildren[i].hidden = false;
}
// Showing or Hiding specific section depending on if words in query are found
- for (let i = 0; i < rootPreferences.childElementCount; i++) {
+ for (let i = 0; i < rootPreferencesChildren.length; i++) {
if (rootPreferencesChildren[i].className != "header" &&
rootPreferencesChildren[i].className != "no-results-message" &&
this.searchWithinNode(rootPreferencesChildren[i], query)) {
rootPreferencesChildren[i].hidden = false;
resultsFound = true;
} else {
rootPreferencesChildren[i].hidden = true;
}
@@ -290,16 +291,16 @@ var gSearchResultsPane = {
valueResult = this.stringMatchesFilters(nodeObject.getAttribute("value"), searchPhrase);
}
matchesFound = matchesFound || complexTextNodesResult || labelResult || valueResult;
}
for (let i = 0; i < nodeObject.childNodes.length; i++) {
// Search only if child node is not hidden
- if (!nodeObject.childNodes[i].hidden) {
+ if (!nodeObject.childNodes[i].hidden && nodeObject.getAttribute("data-hidden-from-search") !== "true") {
let result = this.searchWithinNode(nodeObject.childNodes[i], searchPhrase);
matchesFound = matchesFound || result;
}
}
return matchesFound;
}
}
--- a/browser/components/preferences/in-content/tests/browser_search_within_preferences.js
+++ b/browser/components/preferences/in-content/tests/browser_search_within_preferences.js
@@ -166,8 +166,40 @@ add_task(function*() {
searchInput.value = "";
searchInput.doCommand()
// Checks if back to normal
is_element_visible(generalPane, "Should be in generalPane");
yield BrowserTestUtils.removeTab(gBrowser.selectedTab);
});
+
+/**
+ * Test for "Site Data" case, verifying elements with data-hidden-from-search = true
+ * are hidden in search result.
+ */
+add_task(function*() {
+ yield SpecialPowers.pushPrefEnv({"set": [["browser.storageManager.enabled", false]]});
+ yield openPreferencesViaOpenPreferencesAPI("privacy", {leaveOpen: true});
+ let generalPane = gBrowser.contentDocument.getElementById("header-general");
+
+ is_element_hidden(generalPane, "Should not be in general");
+
+ // Performs search
+ let searchInput = gBrowser.contentDocument.getElementById("searchInput");
+ searchInput.doCommand()
+ searchInput.value = "site data";
+ searchInput.doCommand()
+
+ let mainPrefTag = gBrowser.contentDocument.getElementById("mainPrefPane");
+
+ let child = mainPrefTag.querySelector("#siteDataGroup");
+ is_element_hidden(child, "Should be hidden in search results");
+
+ // Takes search off
+ searchInput.value = "";
+ searchInput.doCommand()
+
+ // Checks if back to normal
+ is_element_visible(generalPane, "Should be in generalPane");
+
+ yield BrowserTestUtils.removeTab(gBrowser.selectedTab);
+});