Bug 1295081 - Fix inspector-searchinput-clear display behavior; r=gl draft
authorFred Lin <gasolin@mozilla.com>
Wed, 17 Aug 2016 14:28:01 +0800
changeset 405902 512140c7d2026cf25e0bb0388c96c919fb060bfb
parent 405901 57dd530675399cb159844ceb53ce514fc129f8ed
child 529533 c77cc56ca9609d176dded73239f31aee669372b4
push id27590
push userbmo:gasolin@mozilla.com
push dateFri, 26 Aug 2016 02:24:58 +0000
reviewersgl
bugs1295081
milestone51.0a1
Bug 1295081 - Fix inspector-searchinput-clear display behavior; r=gl MozReview-Commit-ID: B7VCwAHYHyJ
devtools/client/inspector/inspector-search.js
devtools/client/inspector/test/browser.ini
devtools/client/inspector/test/browser_inspector_search-clear.js
--- a/devtools/client/inspector/inspector-search.js
+++ b/devtools/client/inspector/inspector-search.js
@@ -109,28 +109,26 @@ InspectorSearch.prototype = {
     } else {
       this.searchBox.classList.add("devtools-style-searchbox-no-match");
       this.emit("search-result");
     }
   }),
 
   _onInput: function () {
     if (this.searchBox.value.length === 0) {
+      this.searchClearButton.hidden = true;
+      this.searchBox.removeAttribute("filled");
       this._onSearch();
+    } else {
+      this.searchClearButton.hidden = false;
+      this.searchBox.setAttribute("filled", true);
     }
   },
 
   _onKeyDown: function (event) {
-    if (this.searchBox.value.length === 0) {
-      this.searchClearButton.hidden = true;
-      this.searchBox.removeAttribute("filled");
-    } else {
-      this.searchClearButton.hidden = false;
-      this.searchBox.setAttribute("filled", true);
-    }
     if (event.keyCode === KeyCodes.DOM_VK_RETURN) {
       this._onSearch(event.shiftKey);
     }
 
     const modifierKey = Services.appinfo.OS === "Darwin"
                         ? event.metaKey : event.ctrlKey;
     if (event.keyCode === KeyCodes.DOM_VK_G && modifierKey) {
       this._onSearch(event.shiftKey);
--- a/devtools/client/inspector/test/browser.ini
+++ b/devtools/client/inspector/test/browser.ini
@@ -139,16 +139,17 @@ skip-if = os == "mac" # Full keyboard na
 [browser_inspector_search-01.js]
 [browser_inspector_search-02.js]
 [browser_inspector_search-03.js]
 [browser_inspector_search-04.js]
 [browser_inspector_search-05.js]
 [browser_inspector_search-06.js]
 [browser_inspector_search-07.js]
 [browser_inspector_search-08.js]
+[browser_inspector_search-clear.js]
 [browser_inspector_search-filter_context-menu.js]
 [browser_inspector_search_keyboard_trap.js]
 [browser_inspector_search-label.js]
 [browser_inspector_search-reserved.js]
 [browser_inspector_search-selection.js]
 [browser_inspector_search-sidebar.js]
 [browser_inspector_select-docshell.js]
 [browser_inspector_select-last-selected.js]
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/test/browser_inspector_search-clear.js
@@ -0,0 +1,52 @@
+/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
+/* Any copyright is dedicated to the Public Domain.
+   http://creativecommons.org/publicdomain/zero/1.0/ */
+"use strict";
+
+// Bug 1295081 Test searchbox clear button's display behavior is correct
+
+const XHTML = `
+  <!DOCTYPE html>
+  <html xmlns="http://www.w3.org/1999/xhtml"
+        xmlns:svg="http://www.w3.org/2000/svg">
+    <body>
+      <svg:svg width="100" height="100">
+        <svg:clipPath>
+          <svg:rect x="0" y="0" width="10" height="5"></svg:rect>
+        </svg:clipPath>
+        <svg:circle cx="0" cy="0" r="5"></svg:circle>
+      </svg:svg>
+    </body>
+  </html>
+`;
+
+const TEST_URI = "data:application/xhtml+xml;charset=utf-8," + encodeURI(XHTML);
+
+// Type "d" in inspector-searchbox, Enter [Back space] key and check if the
+// clear button is shown correctly
+add_task(function* () {
+  let {inspector} = yield openInspectorForURL(TEST_URI);
+  let {searchBox, searchClearButton} = inspector;
+
+  yield focusSearchBoxUsingShortcut(inspector.panelWin);
+
+  info("Type d and the clear button will be shown");
+
+  let command = once(searchBox, "input");
+  EventUtils.synthesizeKey("c", {}, inspector.panelWin);
+  yield command;
+
+  info("Waiting for search query to complete and getting the suggestions");
+  yield inspector.searchSuggestions._lastQuery;
+
+  ok(!searchClearButton.hidden,
+    "The clear button is shown when some word is in searchBox");
+
+  EventUtils.synthesizeKey("VK_BACK_SPACE", {}, inspector.panelWin);
+  yield command;
+
+  info("Waiting for search query to complete and getting the suggestions");
+  yield inspector.searchSuggestions._lastQuery;
+
+  ok(searchClearButton.hidden, "The clear button is hidden when no word is in searchBox");
+});