OLD | NEW |
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 if (!WebInspector.experimentsSettings.responsiveDesign.isEnabled()) | 14 if (!WebInspector.experimentsSettings.responsiveDesign.isEnabled()) |
14 return; | 15 return; |
15 | 16 |
16 this._toggleResponsiveDesignButton = new WebInspector.StatusBarButton(WebIns
pector.UIString("Responsive design mode."), "responsive-design-status-bar-item")
; | 17 this._toggleResponsiveDesignButton = new WebInspector.StatusBarButton(WebIns
pector.UIString("Responsive design mode."), "responsive-design-status-bar-item")
; |
17 this._toggleResponsiveDesignButton.toggled = WebInspector.settings.responsiv
eDesignMode.get(); | 18 this._toggleResponsiveDesignButton.toggled = WebInspector.settings.responsiv
eDesignMode.get(); |
18 this._toggleResponsiveDesignButton.addEventListener("click", this._toggleRes
ponsiveDesign, this); | 19 this._toggleResponsiveDesignButton.addEventListener("click", this._toggleRes
ponsiveDesign, this); |
19 WebInspector.settings.responsiveDesignMode.addChangeListener(this._responsiv
eDesignModeChanged, this); | 20 WebInspector.settings.responsiveDesignMode.addChangeListener(this._responsiv
eDesignModeChanged, this); |
20 }; | 21 }; |
21 | 22 |
(...skipping 11 matching lines...) Expand all Loading... |
33 createRootView: function() | 34 createRootView: function() |
34 { | 35 { |
35 var rootView = new WebInspector.RootView(); | 36 var rootView = new WebInspector.RootView(); |
36 | 37 |
37 this._rootSplitView = new WebInspector.SplitView(false, true, WebInspect
or.dockController.canDock() ? "InspectorView.splitViewState" : "InspectorView.du
mmySplitViewState", 300, 300); | 38 this._rootSplitView = new WebInspector.SplitView(false, true, WebInspect
or.dockController.canDock() ? "InspectorView.splitViewState" : "InspectorView.du
mmySplitViewState", 300, 300); |
38 this._rootSplitView.show(rootView.element); | 39 this._rootSplitView.show(rootView.element); |
39 | 40 |
40 WebInspector.inspectorView.show(this._rootSplitView.sidebarElement()); | 41 WebInspector.inspectorView.show(this._rootSplitView.sidebarElement()); |
41 | 42 |
42 this._inspectedPagePlaceholder = new WebInspector.InspectedPagePlacehold
er(); | 43 this._inspectedPagePlaceholder = new WebInspector.InspectedPagePlacehold
er(); |
43 this._inspectedPagePlaceholder.addEventListener(WebInspector.InspectedPa
gePlaceholder.Events.Update, this._onSetInspectedPageBounds, this); | 44 this._inspectedPagePlaceholder.addEventListener(WebInspector.InspectedPa
gePlaceholder.Events.Update, this._onSetInspectedPageBounds.bind(this, false), t
his); |
44 if (WebInspector.experimentsSettings.responsiveDesign.isEnabled()) { | 45 if (WebInspector.experimentsSettings.responsiveDesign.isEnabled()) { |
45 var responsiveDesignView = new WebInspector.ResponsiveDesignView(thi
s._inspectedPagePlaceholder); | 46 this._responsiveDesignView = new WebInspector.ResponsiveDesignView(t
his._inspectedPagePlaceholder); |
46 responsiveDesignView.show(this._rootSplitView.mainElement()); | 47 this._responsiveDesignView.show(this._rootSplitView.mainElement()); |
47 } else | 48 } else { |
48 this._inspectedPagePlaceholder.show(this._rootSplitView.mainElement(
)); | 49 this._inspectedPagePlaceholder.show(this._rootSplitView.mainElement(
)); |
| 50 } |
49 | 51 |
50 WebInspector.dockController.addEventListener(WebInspector.DockController
.Events.BeforeDockSideChanged, this._onBeforeDockSideChange, this); | 52 WebInspector.dockController.addEventListener(WebInspector.DockController
.Events.BeforeDockSideChanged, this._onBeforeDockSideChange, this); |
51 WebInspector.dockController.addEventListener(WebInspector.DockController
.Events.DockSideChanged, this._onDockSideChange, this); | 53 WebInspector.dockController.addEventListener(WebInspector.DockController
.Events.DockSideChanged, this._onDockSideChange, this); |
52 WebInspector.dockController.addEventListener(WebInspector.DockController
.Events.AfterDockSideChanged, this._onAfterDockSideChange, this); | 54 WebInspector.dockController.addEventListener(WebInspector.DockController
.Events.AfterDockSideChanged, this._onAfterDockSideChange, this); |
53 this._onDockSideChange(); | 55 this._onDockSideChange(); |
54 | 56 |
55 rootView.attachToBody(); | 57 rootView.attachToBody(); |
56 }, | 58 }, |
57 | 59 |
58 _onBeforeDockSideChange: function() | 60 /** |
| 61 * @param {!WebInspector.Event} event |
| 62 */ |
| 63 _openToolboxWindow: function(event) |
59 { | 64 { |
| 65 if (/** @type {string} */ (event.data.to) !== WebInspector.DockControlle
r.State.Undocked) |
| 66 return; |
| 67 |
| 68 if (this._toolboxWindow || !WebInspector.experimentsSettings.responsiveD
esign.isEnabled()) |
| 69 return; |
| 70 |
| 71 var toolbox = (window.location.search ? "&" : "?") + "toolbox=true"; |
| 72 var hash = window.location.hash; |
| 73 var url = window.location.href.replace(hash, "") + toolbox + hash; |
| 74 this._toolboxWindow = window.open(url, undefined); |
| 75 }, |
| 76 |
| 77 /** |
| 78 * @param {!WebInspector.Toolbox} toolbox |
| 79 */ |
| 80 _toolboxLoaded: function(toolbox) |
| 81 { |
| 82 this._toolbox = toolbox; |
| 83 this._updatePageResizer(); |
| 84 }, |
| 85 |
| 86 _updatePageResizer: function() |
| 87 { |
| 88 if (WebInspector.experimentsSettings.responsiveDesign.isEnabled()) |
| 89 WebInspector.overridesSupport.setPageResizer(this._isDocked() ? this
._responsiveDesignView : (this._toolbox ? this._toolbox._responsiveDesignView :
null)); |
| 90 }, |
| 91 |
| 92 /** |
| 93 * @param {!WebInspector.Event} event |
| 94 */ |
| 95 _onBeforeDockSideChange: function(event) |
| 96 { |
| 97 if (/** @type {string} */ (event.data.to) === WebInspector.DockControlle
r.State.Undocked && this._toolbox) { |
| 98 // Hide inspectorView and force layout to mimic the undocked state. |
| 99 this._rootSplitView.hideSidebar(); |
| 100 this._inspectedPagePlaceholder.update(); |
| 101 } |
| 102 |
60 this._changingDockSide = true; | 103 this._changingDockSide = true; |
61 }, | 104 }, |
62 | 105 |
63 _onDockSideChange: function() | 106 /** |
| 107 * @param {!WebInspector.Event=} event |
| 108 */ |
| 109 _onDockSideChange: function(event) |
64 { | 110 { |
65 var dockSide = WebInspector.dockController.dockSide(); | 111 this._updatePageResizer(); |
66 if (dockSide === WebInspector.DockController.State.Undocked) { | 112 |
67 this._rootSplitView.toggleResizer(this._rootSplitView.resizerElement
(), false); | 113 var toDockSide = event ? /** @type {string} */ (event.data.to) : WebInsp
ector.dockController.dockSide(); |
68 this._rootSplitView.toggleResizer(WebInspector.inspectorView.topResi
zerElement(), false); | 114 if (toDockSide === WebInspector.DockController.State.Undocked) { |
69 this._rootSplitView.hideMain(); | 115 this._updateForUndocked(); |
| 116 } else if (this._toolbox && event && /** @type {string} */ (event.data.f
rom) === WebInspector.DockController.State.Undocked) { |
| 117 // Don't update yet for smooth transition. |
| 118 this._rootSplitView.hideSidebar(); |
| 119 } else { |
| 120 this._updateForDocked(toDockSide); |
| 121 } |
| 122 }, |
| 123 |
| 124 /** |
| 125 * @param {!WebInspector.Event} event |
| 126 */ |
| 127 _onAfterDockSideChange: function(event) |
| 128 { |
| 129 // We may get here on the first dock side change while loading without B
eforeDockSideChange. |
| 130 if (!this._changingDockSide) |
70 return; | 131 return; |
| 132 this._changingDockSide = false; |
| 133 if (/** @type {string} */ (event.data.from) === WebInspector.DockControl
ler.State.Undocked) { |
| 134 // Restore docked layout in case of smooth transition. |
| 135 this._updateForDocked(/** @type {string} */ (event.data.to)); |
71 } | 136 } |
| 137 this._inspectedPagePlaceholder.update(); |
| 138 }, |
72 | 139 |
| 140 /** |
| 141 * @param {string} dockSide |
| 142 */ |
| 143 _updateForDocked: function(dockSide) |
| 144 { |
73 this._rootSplitView.setVertical(dockSide === WebInspector.DockController
.State.DockedToLeft || dockSide === WebInspector.DockController.State.DockedToRi
ght); | 145 this._rootSplitView.setVertical(dockSide === WebInspector.DockController
.State.DockedToLeft || dockSide === WebInspector.DockController.State.DockedToRi
ght); |
74 this._rootSplitView.setSecondIsSidebar(dockSide === WebInspector.DockCon
troller.State.DockedToRight || dockSide === WebInspector.DockController.State.Do
ckedToBottom); | 146 this._rootSplitView.setSecondIsSidebar(dockSide === WebInspector.DockCon
troller.State.DockedToRight || dockSide === WebInspector.DockController.State.Do
ckedToBottom); |
75 this._rootSplitView.toggleResizer(this._rootSplitView.resizerElement(),
true); | 147 this._rootSplitView.toggleResizer(this._rootSplitView.resizerElement(),
true); |
76 this._rootSplitView.toggleResizer(WebInspector.inspectorView.topResizerE
lement(), dockSide === WebInspector.DockController.State.DockedToBottom); | 148 this._rootSplitView.toggleResizer(WebInspector.inspectorView.topResizerE
lement(), dockSide === WebInspector.DockController.State.DockedToBottom); |
77 this._rootSplitView.showBoth(); | 149 this._rootSplitView.showBoth(); |
78 }, | 150 }, |
79 | 151 |
80 _onAfterDockSideChange: function() | 152 _updateForUndocked: function() |
81 { | 153 { |
82 this._changingDockSide = false; | 154 this._rootSplitView.toggleResizer(this._rootSplitView.resizerElement(),
false); |
83 this._inspectedPagePlaceholder.update(); | 155 this._rootSplitView.toggleResizer(WebInspector.inspectorView.topResizerE
lement(), false); |
| 156 this._rootSplitView.hideMain(); |
84 }, | 157 }, |
85 | 158 |
86 _isDocked: function() | 159 _isDocked: function() |
87 { | 160 { |
88 return WebInspector.dockController.dockSide() !== WebInspector.DockContr
oller.State.Undocked; | 161 return WebInspector.dockController.dockSide() !== WebInspector.DockContr
oller.State.Undocked; |
89 }, | 162 }, |
90 | 163 |
91 /** | 164 /** |
| 165 * @param {boolean} toolbox |
92 * @param {!WebInspector.Event} event | 166 * @param {!WebInspector.Event} event |
93 */ | 167 */ |
94 _onSetInspectedPageBounds: function(event) | 168 _onSetInspectedPageBounds: function(toolbox, event) |
95 { | 169 { |
96 if (this._changingDockSide || !this._isDocked()) | 170 if (this._changingDockSide || (this._isDocked() === toolbox)) |
97 return; | 171 return; |
98 var bounds = /** @type {{x: number, y: number, width: number, height: nu
mber}} */ (event.data); | 172 var bounds = /** @type {{x: number, y: number, width: number, height: nu
mber}} */ (event.data); |
99 InspectorFrontendHost.setInspectedPageBounds(bounds); | 173 InspectorFrontendHost.setInspectedPageBounds(bounds); |
100 }, | 174 }, |
101 | 175 |
102 __proto__: WebInspector.App.prototype | 176 __proto__: WebInspector.App.prototype |
103 }; | 177 }; |
104 | 178 |
105 /** | 179 /** |
106 * @constructor | 180 * @constructor |
107 * @implements {WebInspector.StatusBarButton.Provider} | 181 * @implements {WebInspector.StatusBarButton.Provider} |
108 */ | 182 */ |
109 WebInspector.AdvancedApp.ResponsiveDesignButtonProvider = function() | 183 WebInspector.AdvancedApp.ResponsiveDesignButtonProvider = function() |
110 { | 184 { |
111 } | 185 } |
112 | 186 |
113 WebInspector.AdvancedApp.ResponsiveDesignButtonProvider.prototype = { | 187 WebInspector.AdvancedApp.ResponsiveDesignButtonProvider.prototype = { |
114 /** | 188 /** |
115 * @return {?WebInspector.StatusBarButton} | 189 * @return {?WebInspector.StatusBarButton} |
116 */ | 190 */ |
117 button: function() | 191 button: function() |
118 { | 192 { |
119 if (!(WebInspector.app instanceof WebInspector.AdvancedApp)) | 193 if (!(WebInspector.app instanceof WebInspector.AdvancedApp)) |
120 return null; | 194 return null; |
121 return /** @type {!WebInspector.AdvancedApp} */ (WebInspector.app)._togg
leResponsiveDesignButton || null; | 195 return /** @type {!WebInspector.AdvancedApp} */ (WebInspector.app)._togg
leResponsiveDesignButton || null; |
122 } | 196 } |
123 } | 197 } |
| 198 |
| 199 /** |
| 200 * @constructor |
| 201 */ |
| 202 WebInspector.Toolbox = function() |
| 203 { |
| 204 if (!window.opener) |
| 205 return; |
| 206 |
| 207 WebInspector.zoomManager = window.opener.WebInspector.zoomManager; |
| 208 WebInspector.overridesSupport = window.opener.WebInspector.overridesSupport; |
| 209 WebInspector.settings = window.opener.WebInspector.settings; |
| 210 WebInspector.experimentsSettings = window.opener.WebInspector.experimentsSet
tings; |
| 211 WebInspector.installPortStyles(); |
| 212 |
| 213 var advancedApp = /** @type {!WebInspector.AdvancedApp} */ (window.opener.We
bInspector.app); |
| 214 var rootView = new WebInspector.RootView(); |
| 215 this._inspectedPagePlaceholder = new WebInspector.InspectedPagePlaceholder()
; |
| 216 this._inspectedPagePlaceholder.addEventListener(WebInspector.InspectedPagePl
aceholder.Events.Update, advancedApp._onSetInspectedPageBounds.bind(advancedApp,
true)); |
| 217 if (WebInspector.experimentsSettings.responsiveDesign.isEnabled()) { |
| 218 this._responsiveDesignView = new WebInspector.ResponsiveDesignView(this.
_inspectedPagePlaceholder); |
| 219 this._responsiveDesignView.show(rootView.element); |
| 220 } else { |
| 221 this._inspectedPagePlaceholder.show(rootView.element); |
| 222 } |
| 223 rootView.attachToBody(); |
| 224 advancedApp._toolboxLoaded(this); |
| 225 } |
OLD | NEW |