DevTools: move overrides and content scripts into browser_debugger, add drawer split.

Change-Id: I9495216a14e15d35fd55894b48a19f616a649213
Reviewed-on: https://chromium-review.googlesource.com/1034196
Commit-Queue: Pavel Feldman <[email protected]>
Reviewed-by: Dmitry Gozman <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#554695}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 2431f4ba31873e17c1abfa5d7cc9f29ba8dca4d0
diff --git a/front_end/browser_debugger/module.json b/front_end/browser_debugger/module.json
index 10f1b3d..5593cb1 100644
--- a/front_end/browser_debugger/module.json
+++ b/front_end/browser_debugger/module.json
@@ -83,6 +83,34 @@
             "order": 2,
             "persistence": "permanent",
             "className": "Sources.NetworkNavigatorView"
+        },
+        {
+            "type": "view",
+            "location": "navigator-view",
+            "id": "navigator-overrides",
+            "title": "Overrides",
+            "order": 4,
+            "persistence": "permanent",
+            "className": "Sources.OverridesNavigatorView"
+        },
+        {
+            "type": "view",
+            "location": "navigator-view",
+            "id": "navigator-contentScripts",
+            "title": "Content scripts",
+            "order": 5,
+            "persistence": "permanent",
+            "className": "Sources.ContentScriptsNavigatorView"
+        },
+        {
+            "type": "@Sources.NavigatorView",
+            "viewId": "navigator-overrides",
+            "className": "Sources.OverridesNavigatorView"
+        },
+        {
+            "type": "@Sources.NavigatorView",
+            "viewId": "navigator-contentScripts",
+            "className": "Sources.ContentScriptsNavigatorView"
         }
     ],
     "dependencies": [
diff --git a/front_end/main/Main.js b/front_end/main/Main.js
index 7b87441..c25eb1d 100644
--- a/front_end/main/Main.js
+++ b/front_end/main/Main.js
@@ -118,6 +118,7 @@
     Runtime.experiments.register('sourceDiff', 'Source diff');
     Runtime.experiments.register(
         'stepIntoAsync', 'Introduce separate step action, stepInto becomes powerful enough to go inside async call');
+    Runtime.experiments.register('splitInDrawer', 'Split in drawer', true);
     Runtime.experiments.register('terminalInDrawer', 'Terminal in drawer', true);
 
     // Timeline
diff --git a/front_end/main/module.json b/front_end/main/module.json
index 7d58386..3c439d8 100644
--- a/front_end/main/module.json
+++ b/front_end/main/module.json
@@ -285,6 +285,12 @@
         },
         {
             "type": "@UI.ViewLocationResolver",
+            "name": "drawer-sidebar",
+            "category": "Drawer sidebar",
+            "className": "UI.InspectorView"
+        },
+        {
+            "type": "@UI.ViewLocationResolver",
             "name": "panel",
             "category": "Panel",
             "className": "UI.InspectorView"
diff --git a/front_end/sources/module.json b/front_end/sources/module.json
index b8cc255..aed8aea 100644
--- a/front_end/sources/module.json
+++ b/front_end/sources/module.json
@@ -291,24 +291,6 @@
         {
             "type": "view",
             "location": "navigator-view",
-            "id": "navigator-overrides",
-            "title": "Overrides",
-            "order": 4,
-            "persistence": "permanent",
-            "className": "Sources.OverridesNavigatorView"
-        },
-        {
-            "type": "view",
-            "location": "navigator-view",
-            "id": "navigator-contentScripts",
-            "title": "Content scripts",
-            "order": 5,
-            "persistence": "permanent",
-            "className": "Sources.ContentScriptsNavigatorView"
-        },
-        {
-            "type": "view",
-            "location": "navigator-view",
             "id": "navigator-snippets",
             "title": "Snippets",
             "order": 6,
@@ -336,16 +318,6 @@
         },
         {
             "type": "@Sources.NavigatorView",
-            "viewId": "navigator-overrides",
-            "className": "Sources.OverridesNavigatorView"
-        },
-        {
-            "type": "@Sources.NavigatorView",
-            "viewId": "navigator-contentScripts",
-            "className": "Sources.ContentScriptsNavigatorView"
-        },
-        {
-            "type": "@Sources.NavigatorView",
             "viewId": "navigator-snippets",
             "className": "Sources.SnippetsNavigatorView"
         },
diff --git a/front_end/terminal/module.json b/front_end/terminal/module.json
index c00e963..6802e2b 100644
--- a/front_end/terminal/module.json
+++ b/front_end/terminal/module.json
@@ -2,11 +2,10 @@
     "extensions": [
         {
             "type": "view",
-            "location": "drawer-view",
+            "location": "drawer-sidebar",
             "id": "drawer.xterm",
             "title": "Terminal",
             "order": 10,
-            "persistence": "closeable",
             "factoryName": "Terminal.TerminalWidget"
         }
     ],
diff --git a/front_end/ui/InspectorView.js b/front_end/ui/InspectorView.js
index 9a9202e..ac09596 100644
--- a/front_end/ui/InspectorView.js
+++ b/front_end/ui/InspectorView.js
@@ -44,6 +44,16 @@
     this._drawerSplitWidget.enableShowModeSaving();
     this._drawerSplitWidget.show(this.element);
 
+    if (Runtime.experiments.isEnabled('splitInDrawer')) {
+      this._innerDrawerSplitWidget = new UI.SplitWidget(true, true, 'Inspector.drawerSidebarSplitViewState', 200, 200);
+      this._drawerSplitWidget.setSidebarWidget(this._innerDrawerSplitWidget);
+      this._drawerSidebarTabbedLocation =
+          UI.viewManager.createTabbedLocation(this._showDrawer.bind(this, false), 'drawer-sidebar', true, true);
+      this._drawerSidebarTabbedPane = this._drawerSidebarTabbedLocation.tabbedPane();
+      this._drawerSidebarTabbedPane.addEventListener(UI.TabbedPane.Events.TabSelected, this._drawerTabSelected, this);
+      this._innerDrawerSplitWidget.setSidebarWidget(this._drawerSidebarTabbedPane);
+    }
+
     // Create drawer tabbed pane.
     this._drawerTabbedLocation =
         UI.viewManager.createTabbedLocation(this._showDrawer.bind(this, false), 'drawer-view', true, true);
@@ -52,11 +62,18 @@
     this._drawerTabbedPane.setMinimumSize(0, 27);
     const closeDrawerButton = new UI.ToolbarButton(Common.UIString('Close drawer'), 'largeicon-delete');
     closeDrawerButton.addEventListener(UI.ToolbarButton.Events.Click, this._closeDrawer, this);
-    this._drawerTabbedPane.rightToolbar().appendToolbarItem(closeDrawerButton);
     this._drawerSplitWidget.installResizer(this._drawerTabbedPane.headerElement());
-    this._drawerSplitWidget.setSidebarWidget(this._drawerTabbedPane);
     this._drawerTabbedPane.addEventListener(UI.TabbedPane.Events.TabSelected, this._drawerTabSelected, this);
 
+    if (this._drawerSidebarTabbedPane) {
+      this._innerDrawerSplitWidget.setMainWidget(this._drawerTabbedPane);
+      this._drawerSidebarTabbedPane.rightToolbar().appendToolbarItem(closeDrawerButton);
+      this._drawerSplitWidget.installResizer(this._drawerSidebarTabbedPane.headerElement());
+    } else {
+      this._drawerSplitWidget.setSidebarWidget(this._drawerTabbedPane);
+      this._drawerTabbedPane.rightToolbar().appendToolbarItem(closeDrawerButton);
+    }
+
     // Create main area tabbed pane.
     this._tabbedLocation = UI.viewManager.createTabbedLocation(
         InspectorFrontendHost.bringToFront.bind(InspectorFrontendHost), 'panel', true, true,
@@ -115,6 +132,8 @@
       return this._drawerTabbedLocation;
     if (locationName === 'panel')
       return this._tabbedLocation;
+    if (locationName === 'drawer-sidebar')
+      return this._drawerSidebarTabbedLocation;
     return null;
   }
 
diff --git a/front_end/ui/SplitWidget.js b/front_end/ui/SplitWidget.js
index 2765082..f0b55ed 100644
--- a/front_end/ui/SplitWidget.js
+++ b/front_end/ui/SplitWidget.js
@@ -747,7 +747,7 @@
    */
   hideDefaultResizer(noSplitter) {
     this.uninstallResizer(this._resizerElement);
-    this._sidebarElement.classList.toggle('no-default-splitter', noSplitter);
+    this._sidebarElement.classList.toggle('no-default-splitter', !!noSplitter);
   }
 
   /**