DevTools: context-aware console.clear, element.hide shortcuts

Before, pressing 'H' or 'Ctrl+L' on ANY panel would perform the
action (hide selected element, clear console). This CL makes both
shortcuts execute only when the respective panel/view is showing.

This allows 'Ctrl+L' to focus Omnibox when Console is not visible.

Bug: 915676
Change-Id: Ie5ef04786fcd240a393524f429cb45a3951cd5d0
Reviewed-on: https://chromium-review.googlesource.com/c/1405701
Reviewed-by: Joel Einbinder <einbinder@chromium.org>
Commit-Queue: Erik Luo <luoe@chromium.org>
Cr-Commit-Position: refs/heads/master@{#622211}
diff --git a/third_party/blink/renderer/devtools/front_end/console/ConsolePanel.js b/third_party/blink/renderer/devtools/front_end/console/ConsolePanel.js
index 862721f..9a16cf0 100644
--- a/third_party/blink/renderer/devtools/front_end/console/ConsolePanel.js
+++ b/third_party/blink/renderer/devtools/front_end/console/ConsolePanel.js
@@ -42,6 +42,11 @@
     return /** @type {!Console.ConsolePanel} */ (self.runtime.sharedInstance(Console.ConsolePanel));
   }
 
+  static _updateContextFlavor() {
+    const consoleView = Console.ConsolePanel.instance()._view;
+    UI.context.setFlavor(Console.ConsoleView, consoleView.isShowing() ? consoleView : null);
+  }
+
   /**
    * @override
    */
@@ -51,6 +56,7 @@
     if (wrapper && wrapper.isShowing())
       UI.inspectorView.setDrawerMinimized(true);
     this._view.show(this.element);
+    Console.ConsolePanel._updateContextFlavor();
   }
 
   /**
@@ -63,6 +69,7 @@
     UI.inspectorView.setDrawerMinimized(false);
     if (Console.ConsolePanel.WrapperView._instance)
       Console.ConsolePanel.WrapperView._instance._showViewInWrapper();
+    Console.ConsolePanel._updateContextFlavor();
   }
 
   /**
@@ -95,6 +102,7 @@
       this._showViewInWrapper();
     else
       UI.inspectorView.setDrawerMinimized(true);
+    Console.ConsolePanel._updateContextFlavor();
   }
 
   /**
@@ -102,6 +110,7 @@
    */
   willHide() {
     UI.inspectorView.setDrawerMinimized(false);
+    Console.ConsolePanel._updateContextFlavor();
   }
 
   _showViewInWrapper() {
diff --git a/third_party/blink/renderer/devtools/front_end/console/module.json b/third_party/blink/renderer/devtools/front_end/console/module.json
index a60af8b..9f04380 100644
--- a/third_party/blink/renderer/devtools/front_end/console/module.json
+++ b/third_party/blink/renderer/devtools/front_end/console/module.json
@@ -37,6 +37,9 @@
         {
             "type": "action",
             "category": "Console",
+            "contextTypes": [
+                "Console.ConsoleView"
+            ],
             "actionId": "console.clear",
             "title": "Clear console",
             "iconClass": "largeicon-clear",
diff --git a/third_party/blink/renderer/devtools/front_end/elements/ElementsPanel.js b/third_party/blink/renderer/devtools/front_end/elements/ElementsPanel.js
index c29c85c..1e1b1ba 100644
--- a/third_party/blink/renderer/devtools/front_end/elements/ElementsPanel.js
+++ b/third_party/blink/renderer/devtools/front_end/elements/ElementsPanel.js
@@ -271,6 +271,7 @@
     if (this._popoverHelper)
       this._popoverHelper.hidePopover();
     super.willHide();
+    UI.context.setFlavor(Elements.ElementsPanel, null);
   }
 
   /**