Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Side by Side Diff: Source/devtools/front_end/main/AdvancedApp.js

Issue 298913004: [DevTools] Add Toolbox page to undocked DevTools frontend. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @constructor 6 * @constructor
7 * @extends {WebInspector.App} 7 * @extends {WebInspector.App}
8 */ 8 */
9 WebInspector.AdvancedApp = function() 9 WebInspector.AdvancedApp = function()
10 { 10 {
11 WebInspector.App.call(this); 11 WebInspector.App.call(this);
12 WebInspector.dockController.addEventListener(WebInspector.DockController.Eve nts.BeforeDockSideChanged, this._openToolboxWindow, this);
12 }; 13 };
13 14
14 WebInspector.AdvancedApp.prototype = { 15 WebInspector.AdvancedApp.prototype = {
15 createGlobalStatusBarItems: function() 16 createGlobalStatusBarItems: function()
16 { 17 {
17 this.appendInspectStatusBarItem(); 18 this.appendInspectStatusBarItem();
18 19
19 if (WebInspector.experimentsSettings.responsiveDesign.isEnabled()) { 20 if (WebInspector.experimentsSettings.responsiveDesign.isEnabled()) {
20 this._toggleResponsiveDesignButton = new WebInspector.StatusBarButto n(WebInspector.UIString("Responsive design mode."), "responsive-design-status-ba r-item"); 21 this._toggleResponsiveDesignButton = new WebInspector.StatusBarButto n(WebInspector.UIString("Responsive design mode."), "responsive-design-status-ba r-item");
21 this._toggleResponsiveDesignButton.toggled = WebInspector.settings.r esponsiveDesignMode.get(); 22 this._toggleResponsiveDesignButton.toggled = WebInspector.settings.r esponsiveDesignMode.get();
(...skipping 19 matching lines...) Expand all
41 createRootView: function() 42 createRootView: function()
42 { 43 {
43 var rootView = new WebInspector.RootView(); 44 var rootView = new WebInspector.RootView();
44 45
45 this._rootSplitView = new WebInspector.SplitView(false, true, WebInspect or.dockController.canDock() ? "InspectorView.splitViewState" : "InspectorView.du mmySplitViewState", 300, 300); 46 this._rootSplitView = new WebInspector.SplitView(false, true, WebInspect or.dockController.canDock() ? "InspectorView.splitViewState" : "InspectorView.du mmySplitViewState", 300, 300);
46 this._rootSplitView.show(rootView.element); 47 this._rootSplitView.show(rootView.element);
47 48
48 WebInspector.inspectorView.show(this._rootSplitView.sidebarElement()); 49 WebInspector.inspectorView.show(this._rootSplitView.sidebarElement());
49 50
50 this._inspectedPagePlaceholder = new WebInspector.InspectedPagePlacehold er(); 51 this._inspectedPagePlaceholder = new WebInspector.InspectedPagePlacehold er();
51 this._inspectedPagePlaceholder.addEventListener(WebInspector.InspectedPa gePlaceholder.Events.Update, this._onSetInspectedPageBounds, this); 52 this._inspectedPagePlaceholder.addEventListener(WebInspector.InspectedPa gePlaceholder.Events.Update, this._onSetInspectedPageBounds.bind(this, false), t his);
52 if (WebInspector.experimentsSettings.responsiveDesign.isEnabled()) { 53 if (WebInspector.experimentsSettings.responsiveDesign.isEnabled()) {
53 var responsiveDesignView = new WebInspector.ResponsiveDesignView(thi s._inspectedPagePlaceholder); 54 this._responsiveDesignView = new WebInspector.ResponsiveDesignView(t his._inspectedPagePlaceholder);
54 responsiveDesignView.show(this._rootSplitView.mainElement()); 55 this._responsiveDesignView.show(this._rootSplitView.mainElement());
55 } else 56 } else
56 this._inspectedPagePlaceholder.show(this._rootSplitView.mainElement( )); 57 this._inspectedPagePlaceholder.show(this._rootSplitView.mainElement( ));
57 58
58 WebInspector.dockController.addEventListener(WebInspector.DockController .Events.BeforeDockSideChanged, this._onBeforeDockSideChange, this); 59 WebInspector.dockController.addEventListener(WebInspector.DockController .Events.BeforeDockSideChanged, this._onBeforeDockSideChange, this);
59 WebInspector.dockController.addEventListener(WebInspector.DockController .Events.DockSideChanged, this._onDockSideChange, this); 60 WebInspector.dockController.addEventListener(WebInspector.DockController .Events.DockSideChanged, this._onDockSideChange, this);
60 WebInspector.dockController.addEventListener(WebInspector.DockController .Events.AfterDockSideChanged, this._onAfterDockSideChange, this); 61 WebInspector.dockController.addEventListener(WebInspector.DockController .Events.AfterDockSideChanged, this._onAfterDockSideChange, this);
61 this._onDockSideChange(); 62 this._onDockSideChange();
62 63
63 rootView.attachToBody(); 64 rootView.attachToBody();
64 }, 65 },
65 66
66 _onBeforeDockSideChange: function() 67 /**
68 * @param {!WebInspector.Event} event
69 */
70 _openToolboxWindow: function(event)
67 { 71 {
72 if (/** @type {string} */ (event.data) !== WebInspector.DockController.S tate.Undocked)
73 return;
74
75 if (this._toolboxWindow || !WebInspector.experimentsSettings.responsiveD esign.isEnabled())
76 return;
77
78 var toolbox = (window.location.search ? "&" : "?") + "toolbox=true";
79 var hash = window.location.hash;
80 var url = window.location.href.replace(hash, "") + toolbox + hash;
81 this._toolboxWindow = window.open(url, undefined);
82 },
83
84 /**
85 * @param {!WebInspector.ToolboxApp} toolbox
86 */
87 _toolboxLoaded: function(toolbox)
88 {
89 this._toolbox = toolbox;
90 this._updatePageResizer();
91 },
92
93 _updatePageResizer: function()
94 {
95 if (WebInspector.experimentsSettings.responsiveDesign.isEnabled())
96 WebInspector.overridesSupport.setPageResizer(this._isDocked() ? this ._responsiveDesignView : (this._toolbox ? this._toolbox._responsiveDesignView : null));
97 },
98
99 /**
100 * @param {!WebInspector.Event} event
101 */
102 _onBeforeDockSideChange: function(event)
103 {
104 if (/** @type {string} */ (event.data) === WebInspector.DockController.S tate.Undocked && this._toolbox) {
105 // Hide inspectorView and force layout to mimic the undocked state.
106 this._rootSplitView.hideSidebar();
107 this._inspectedPagePlaceholder.update();
108 }
109
68 this._changingDockSide = true; 110 this._changingDockSide = true;
69 }, 111 },
70 112
71 _onDockSideChange: function() 113 /**
114 * @param {!WebInspector.Event=} event
115 */
116 _onDockSideChange: function(event)
72 { 117 {
73 var dockSide = WebInspector.dockController.dockSide(); 118 this._updatePageResizer();
74 if (dockSide === WebInspector.DockController.State.Undocked) { 119
75 this._rootSplitView.toggleResizer(this._rootSplitView.resizerElement (), false); 120 if (!this._isDocked()) {
76 this._rootSplitView.toggleResizer(WebInspector.inspectorView.topResi zerElement(), false); 121 this._updateForUndocked();
77 this._rootSplitView.hideMain(); 122 } else if (this._toolbox && event && /** @type {string} */ (event.data) === WebInspector.DockController.State.Undocked) {
78 return; 123 // Don't update yet for smooth transition.
124 this._rootSplitView.hideSidebar();
125 } else {
126 this._updateForDocked(WebInspector.dockController.dockSide());
79 } 127 }
128 },
80 129
130 /**
131 * @param {!WebInspector.Event} event
132 */
133 _onAfterDockSideChange: function(event)
134 {
135 if (this._changingDockSide) {
apavlov 2014/06/04 09:04:25 We prefer early returns: if (!this._changingDocSi
dgozman 2014/06/04 11:16:18 Done.
136 this._changingDockSide = false;
137 if (/** @type {string} */ (event.data) === WebInspector.DockControll er.State.Undocked) {
138 // Restore docked layout in case of smooth transition.
139 this._updateForDocked(WebInspector.dockController.dockSide());
140 }
141 this._inspectedPagePlaceholder.update();
142 }
143 },
144
145 /**
146 * @param {string} dockSide
147 */
148 _updateForDocked: function(dockSide)
149 {
81 this._rootSplitView.setVertical(dockSide === WebInspector.DockController .State.DockedToLeft || dockSide === WebInspector.DockController.State.DockedToRi ght); 150 this._rootSplitView.setVertical(dockSide === WebInspector.DockController .State.DockedToLeft || dockSide === WebInspector.DockController.State.DockedToRi ght);
82 this._rootSplitView.setSecondIsSidebar(dockSide === WebInspector.DockCon troller.State.DockedToRight || dockSide === WebInspector.DockController.State.Do ckedToBottom); 151 this._rootSplitView.setSecondIsSidebar(dockSide === WebInspector.DockCon troller.State.DockedToRight || dockSide === WebInspector.DockController.State.Do ckedToBottom);
83 this._rootSplitView.toggleResizer(this._rootSplitView.resizerElement(), true); 152 this._rootSplitView.toggleResizer(this._rootSplitView.resizerElement(), true);
84 this._rootSplitView.toggleResizer(WebInspector.inspectorView.topResizerE lement(), dockSide === WebInspector.DockController.State.DockedToBottom); 153 this._rootSplitView.toggleResizer(WebInspector.inspectorView.topResizerE lement(), dockSide === WebInspector.DockController.State.DockedToBottom);
85 this._rootSplitView.showBoth(); 154 this._rootSplitView.showBoth();
86 }, 155 },
87 156
88 _onAfterDockSideChange: function() 157 _updateForUndocked: function()
89 { 158 {
90 this._changingDockSide = false; 159 this._rootSplitView.toggleResizer(this._rootSplitView.resizerElement(), false);
91 this._inspectedPagePlaceholder.update(); 160 this._rootSplitView.toggleResizer(WebInspector.inspectorView.topResizerE lement(), false);
161 this._rootSplitView.hideMain();
92 }, 162 },
93 163
94 _isDocked: function() 164 _isDocked: function()
95 { 165 {
96 return WebInspector.dockController.dockSide() !== WebInspector.DockContr oller.State.Undocked; 166 return WebInspector.dockController.dockSide() !== WebInspector.DockContr oller.State.Undocked;
97 }, 167 },
98 168
99 /** 169 /**
170 * @param {boolean} toolbox
100 * @param {!WebInspector.Event} event 171 * @param {!WebInspector.Event} event
101 */ 172 */
102 _onSetInspectedPageBounds: function(event) 173 _onSetInspectedPageBounds: function(toolbox, event)
103 { 174 {
104 if (this._changingDockSide || !this._isDocked()) 175 if (this._changingDockSide || (this._isDocked() === toolbox))
105 return; 176 return;
106 var bounds = /** @type {{x: number, y: number, width: number, height: nu mber}} */ (event.data); 177 var bounds = /** @type {{x: number, y: number, width: number, height: nu mber}} */ (event.data);
107 InspectorFrontendHost.setInspectedPageBounds(bounds); 178 InspectorFrontendHost.setInspectedPageBounds(bounds);
108 }, 179 },
109 180
110 __proto__: WebInspector.App.prototype 181 __proto__: WebInspector.App.prototype
111 }; 182 };
183
184
185 /**
186 * @constructor
187 */
188 WebInspector.ToolboxApp = function()
apavlov 2014/06/04 09:04:25 Shouldn't this extend WebInspector.App?
dgozman 2014/06/04 11:16:19 Not really. Renamed to just WebInspector.Toolbox.
189 {
190 if (!window.opener)
191 return;
192
193 WebInspector.zoomManager = window.opener.WebInspector.zoomManager;
194 WebInspector.overridesSupport = window.opener.WebInspector.overridesSupport;
195 WebInspector.settings = window.opener.WebInspector.settings;
196 WebInspector.experimentsSettings = window.opener.WebInspector.experimentsSet tings;
197 WebInspector.installPortStyles();
198
199 var main = window.opener.WebInspector.app;
apavlov 2014/06/04 09:04:25 mainApp?
dgozman 2014/06/04 11:16:19 Renamed to |advancedApp| and added typecast.
200 var rootView = new WebInspector.RootView();
201 this._inspectedPagePlaceholder = new WebInspector.InspectedPagePlaceholder() ;
202 this._inspectedPagePlaceholder.addEventListener(WebInspector.InspectedPagePl aceholder.Events.Update, main._onSetInspectedPageBounds.bind(main, true), main);
apavlov 2014/06/04 09:04:24 You don't need the last argument (main), since the
dgozman 2014/06/04 11:16:19 Done.
203 if (WebInspector.experimentsSettings.responsiveDesign.isEnabled()) {
204 this._responsiveDesignView = new WebInspector.ResponsiveDesignView(this. _inspectedPagePlaceholder);
205 this._responsiveDesignView.show(rootView.element);
206 } else
apavlov 2014/06/04 09:04:24 braces around the else-arm
dgozman 2014/06/04 11:16:18 Done.
207 this._inspectedPagePlaceholder.show(rootView.element);
208 rootView.attachToBody();
209 main._toolboxLoaded(this);
210 };
apavlov 2014/06/04 09:04:25 we don't normally place ';' after function literal
dgozman 2014/06/04 11:16:18 Done.
211
212 WebInspector.ToolboxApp.prototype = {
apavlov 2014/06/04 09:04:24 If there's no inheritance, this is not needed
dgozman 2014/06/04 11:16:19 Done.
213 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698