OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2014 Google Inc. All rights reserved. | 2 * Copyright (C) 2014 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 25 matching lines...) Expand all Loading... |
36 { | 36 { |
37 WebInspector.VBox.call(this); | 37 WebInspector.VBox.call(this); |
38 this.registerRequiredCSS("overrides.css"); | 38 this.registerRequiredCSS("overrides.css"); |
39 this.registerRequiredCSS("helpScreen.css"); | 39 this.registerRequiredCSS("helpScreen.css"); |
40 this.element.classList.add("overrides-view"); | 40 this.element.classList.add("overrides-view"); |
41 | 41 |
42 this._tabbedPane = new WebInspector.TabbedPane(); | 42 this._tabbedPane = new WebInspector.TabbedPane(); |
43 this._tabbedPane.shrinkableTabs = false; | 43 this._tabbedPane.shrinkableTabs = false; |
44 this._tabbedPane.verticalTabLayout = true; | 44 this._tabbedPane.verticalTabLayout = true; |
45 | 45 |
46 if (!WebInspector.overridesSupport.isInspectingDevice()) | 46 if (!WebInspector.overridesSupport.isInspectingDevice()) { |
47 new WebInspector.OverridesView.DeviceTab().appendAsTab(this._tabbedPane)
; | 47 new WebInspector.OverridesView.DeviceTab().appendAsTab(this._tabbedPane)
; |
48 new WebInspector.OverridesView.MediaTab().appendAsTab(this._tabbedPane); | 48 new WebInspector.OverridesView.MediaTab().appendAsTab(this._tabbedPane); |
| 49 } |
49 new WebInspector.OverridesView.NetworkTab().appendAsTab(this._tabbedPane); | 50 new WebInspector.OverridesView.NetworkTab().appendAsTab(this._tabbedPane); |
50 new WebInspector.OverridesView.SensorsTab().appendAsTab(this._tabbedPane); | 51 new WebInspector.OverridesView.SensorsTab().appendAsTab(this._tabbedPane); |
51 | 52 |
52 this._lastSelectedTabSetting = WebInspector.settings.createSetting("lastSele
ctedEmulateTab", "device"); | 53 this._lastSelectedTabSetting = WebInspector.settings.createSetting("lastSele
ctedEmulateTab", "device"); |
53 this._tabbedPane.selectTab(this._lastSelectedTabSetting.get()); | 54 this._tabbedPane.selectTab(this._lastSelectedTabSetting.get()); |
54 this._tabbedPane.addEventListener(WebInspector.TabbedPane.EventTypes.TabSele
cted, this._tabSelected, this); | 55 this._tabbedPane.addEventListener(WebInspector.TabbedPane.EventTypes.TabSele
cted, this._tabSelected, this); |
55 this._tabbedPane.show(this.element); | 56 this._tabbedPane.show(this.element); |
56 | 57 |
57 this._warningFooter = this.element.createChild("div", "overrides-footer"); | 58 this._warningFooter = this.element.createChild("div", "overrides-footer"); |
58 this._overridesWarningUpdated(); | 59 this._overridesWarningUpdated(); |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 | 143 |
143 __proto__: WebInspector.VBox.prototype | 144 __proto__: WebInspector.VBox.prototype |
144 } | 145 } |
145 | 146 |
146 /** | 147 /** |
147 * @constructor | 148 * @constructor |
148 * @extends {WebInspector.OverridesView.Tab} | 149 * @extends {WebInspector.OverridesView.Tab} |
149 */ | 150 */ |
150 WebInspector.OverridesView.DeviceTab = function() | 151 WebInspector.OverridesView.DeviceTab = function() |
151 { | 152 { |
152 WebInspector.OverridesView.Tab.call(this, "device", WebInspector.UIString("D
evice"), [WebInspector.overridesSupport.settings.emulateDevice]); | 153 WebInspector.OverridesView.Tab.call(this, "device", WebInspector.UIString("D
evice"), [], [function(){return true;}]); |
153 this.element.classList.add("overrides-device"); | 154 this.element.classList.add("overrides-device"); |
154 | 155 |
155 this.element.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebIn
spector.UIString("Device"), WebInspector.overridesSupport.settings.emulateDevice
, true)); | |
156 this.element.appendChild(this._createDeviceElement()); | 156 this.element.appendChild(this._createDeviceElement()); |
157 | 157 |
158 var footnote = this.element.createChild("p", "help-footnote"); | 158 var footnote = this.element.createChild("p", "help-footnote"); |
159 var footnoteLink = footnote.createChild("a"); | 159 var footnoteLink = footnote.createChild("a"); |
160 footnoteLink.href = "https://developers.google.com/chrome-developer-tools/do
cs/mobile-emulation"; | 160 footnoteLink.href = "https://developers.google.com/chrome-developer-tools/do
cs/mobile-emulation"; |
161 footnoteLink.target = "_blank"; | 161 footnoteLink.target = "_blank"; |
162 footnoteLink.createTextChild(WebInspector.UIString("More information about s
creen emulation")); | 162 footnoteLink.createTextChild(WebInspector.UIString("More information about s
creen emulation")); |
163 } | 163 } |
164 | 164 |
165 WebInspector.OverridesView.DeviceTab.prototype = { | 165 WebInspector.OverridesView.DeviceTab.prototype = { |
166 _createDeviceElement: function() | 166 _createDeviceElement: function() |
167 { | 167 { |
168 var fieldsetElement = WebInspector.SettingsUI.createSettingFieldset(WebI
nspector.overridesSupport.settings.emulateDevice); | 168 var fieldsetElement = document.createElement("fieldset"); |
169 fieldsetElement.id = "metrics-override-section"; | 169 fieldsetElement.id = "metrics-override-section"; |
170 | 170 |
| 171 fieldsetElement.createChild("span").textContent = WebInspector.UIString(
"Device:"); |
171 fieldsetElement.appendChild(WebInspector.overridesSupport.createDeviceSe
lect(document)); | 172 fieldsetElement.appendChild(WebInspector.overridesSupport.createDeviceSe
lect(document)); |
172 | 173 |
173 var tableElement = fieldsetElement.createChild("table", "nowrap"); | 174 var tableElement = fieldsetElement.createChild("table", "nowrap"); |
174 | 175 |
175 var rowElement = tableElement.createChild("tr"); | 176 var rowElement = tableElement.createChild("tr"); |
176 var cellElement = rowElement.createChild("td"); | 177 var cellElement = rowElement.createChild("td"); |
177 cellElement.appendChild(document.createTextNode(WebInspector.UIString("R
esolution:"))); | 178 cellElement.appendChild(document.createTextNode(WebInspector.UIString("R
esolution:"))); |
178 cellElement = rowElement.createChild("td"); | 179 cellElement = rowElement.createChild("td"); |
179 | 180 |
180 var widthOverrideInput = WebInspector.SettingsUI.createSettingInputField
("", WebInspector.overridesSupport.settings.deviceWidth, true, 4, "80px", WebIns
pector.OverridesSupport.integerInputValidator, true); | 181 var widthOverrideInput = WebInspector.SettingsUI.createSettingInputField
("", WebInspector.overridesSupport.settings.deviceWidth, true, 4, "80px", WebIns
pector.OverridesSupport.deviceSizeValidator, true, true, WebInspector.UIString("
--")); |
181 cellElement.appendChild(widthOverrideInput); | 182 cellElement.appendChild(widthOverrideInput); |
182 this._swapDimensionsElement = cellElement.createChild("button", "overrid
es-swap"); | 183 this._swapDimensionsElement = cellElement.createChild("button", "overrid
es-swap"); |
183 this._swapDimensionsElement.appendChild(document.createTextNode(" \u21C4
")); // RIGHTWARDS ARROW OVER LEFTWARDS ARROW. | 184 this._swapDimensionsElement.appendChild(document.createTextNode(" \u21C4
")); // RIGHTWARDS ARROW OVER LEFTWARDS ARROW. |
184 this._swapDimensionsElement.title = WebInspector.UIString("Swap dimensio
ns"); | 185 this._swapDimensionsElement.title = WebInspector.UIString("Swap dimensio
ns"); |
185 this._swapDimensionsElement.addEventListener("click", WebInspector.overr
idesSupport.swapDimensions.bind(WebInspector.overridesSupport), false); | 186 this._swapDimensionsElement.addEventListener("click", WebInspector.overr
idesSupport.swapDimensions.bind(WebInspector.overridesSupport), false); |
186 this._swapDimensionsElement.tabIndex = -1; | 187 this._swapDimensionsElement.tabIndex = -1; |
187 var heightOverrideInput = WebInspector.SettingsUI.createSettingInputFiel
d("", WebInspector.overridesSupport.settings.deviceHeight, true, 4, "80px", WebI
nspector.OverridesSupport.integerInputValidator, true); | 188 var heightOverrideInput = WebInspector.SettingsUI.createSettingInputFiel
d("", WebInspector.overridesSupport.settings.deviceHeight, true, 4, "80px", WebI
nspector.OverridesSupport.deviceSizeValidator, true, true, WebInspector.UIString
("--")); |
188 cellElement.appendChild(heightOverrideInput); | 189 cellElement.appendChild(heightOverrideInput); |
189 | 190 |
190 rowElement = tableElement.createChild("tr"); | 191 rowElement = tableElement.createChild("tr"); |
191 cellElement = rowElement.createChild("td"); | 192 cellElement = rowElement.createChild("td"); |
192 cellElement.colSpan = 4; | 193 cellElement.colSpan = 4; |
193 | 194 |
194 rowElement = tableElement.createChild("tr"); | 195 rowElement = tableElement.createChild("tr"); |
195 rowElement.title = WebInspector.UIString("Ratio between a device's physi
cal pixels and device-independent pixels."); | 196 rowElement.title = WebInspector.UIString("Ratio between a device's physi
cal pixels and device-independent pixels."); |
196 rowElement.createChild("td").appendChild(document.createTextNode(WebInsp
ector.UIString("Device pixel ratio:"))); | 197 rowElement.createChild("td").appendChild(document.createTextNode(WebInsp
ector.UIString("Device pixel ratio:"))); |
197 rowElement.createChild("td").appendChild(WebInspector.SettingsUI.createS
ettingInputField("", WebInspector.overridesSupport.settings.deviceScaleFactor, t
rue, 4, "80px", WebInspector.OverridesSupport.doubleInputValidator, true)); | 198 rowElement.createChild("td").appendChild(WebInspector.SettingsUI.createS
ettingInputField("", WebInspector.overridesSupport.settings.deviceScaleFactor, t
rue, 4, "80px", WebInspector.OverridesSupport.deviceScaleFactorValidator, true,
true, WebInspector.UIString("--"))); |
198 | 199 |
199 var viewportCheckbox = this._createSettingCheckbox(WebInspector.UIString
("Emulate mobile"), WebInspector.overridesSupport.settings.emulateViewport); | 200 var viewportCheckbox = this._createSettingCheckbox(WebInspector.UIString
("Emulate mobile"), WebInspector.overridesSupport.settings.emulateViewport); |
200 viewportCheckbox.title = WebInspector.UIString("Enable meta viewport, ov
erlay scrollbars and default 980px body width"); | 201 viewportCheckbox.title = WebInspector.UIString("Enable meta viewport, ov
erlay scrollbars and default 980px body width"); |
201 fieldsetElement.appendChild(viewportCheckbox); | 202 fieldsetElement.appendChild(viewportCheckbox); |
202 | 203 |
203 // FIXME: move text autosizing to the "misc" tab together with css media
, and separate it from device emulation. | 204 // FIXME: move text autosizing to the "misc" tab together with css media
, and separate it from device emulation. |
204 var textAutosizingOverrideElement = this._createSettingCheckbox(WebInspe
ctor.UIString("Enable text autosizing "), WebInspector.overridesSupport.settings
.deviceTextAutosizing); | 205 var textAutosizingOverrideElement = this._createSettingCheckbox(WebInspe
ctor.UIString("Enable text autosizing "), WebInspector.overridesSupport.settings
.deviceTextAutosizing); |
205 textAutosizingOverrideElement.title = WebInspector.UIString("Text autosi
zing is the feature that boosts font sizes on mobile devices."); | 206 textAutosizingOverrideElement.title = WebInspector.UIString("Text autosi
zing is the feature that boosts font sizes on mobile devices."); |
206 fieldsetElement.appendChild(textAutosizingOverrideElement); | 207 fieldsetElement.appendChild(textAutosizingOverrideElement); |
207 | 208 |
208 fieldsetElement.appendChild(this._createSettingCheckbox(WebInspector.UIS
tring("Shrink to fit"), WebInspector.overridesSupport.settings.deviceFitWindow))
; | 209 if (!WebInspector.overridesSupport.responsiveDesignAvailable()) |
| 210 fieldsetElement.appendChild(this._createSettingCheckbox(WebInspector
.UIString("Shrink to fit"), WebInspector.overridesSupport.settings.deviceFitWind
ow)); |
209 | 211 |
210 return fieldsetElement; | 212 return fieldsetElement; |
211 }, | 213 }, |
212 | 214 |
213 __proto__: WebInspector.OverridesView.Tab.prototype | 215 __proto__: WebInspector.OverridesView.Tab.prototype |
214 } | 216 } |
215 | 217 |
216 /** | 218 /** |
217 * @constructor | 219 * @constructor |
218 * @extends {WebInspector.OverridesView.Tab} | 220 * @extends {WebInspector.OverridesView.Tab} |
219 */ | 221 */ |
220 WebInspector.OverridesView.MediaTab = function() | 222 WebInspector.OverridesView.MediaTab = function() |
221 { | 223 { |
222 var settings = [WebInspector.overridesSupport.settings.overrideCSSMedia]; | 224 var settings = [WebInspector.overridesSupport.settings.overrideCSSMedia]; |
223 WebInspector.OverridesView.Tab.call(this, "media", WebInspector.UIString("Me
dia"), settings); | 225 WebInspector.OverridesView.Tab.call(this, "media", WebInspector.UIString("Me
dia"), settings); |
224 this.element.classList.add("overrides-media"); | 226 this.element.classList.add("overrides-media"); |
225 | 227 |
226 this._createMediaEmulationFragment(); | 228 this._createMediaEmulationFragment(); |
227 } | 229 } |
228 | 230 |
229 WebInspector.OverridesView.MediaTab.prototype = { | 231 WebInspector.OverridesView.MediaTab.prototype = { |
230 _createMediaEmulationFragment: function() | 232 _createMediaEmulationFragment: function() |
231 { | 233 { |
232 var checkbox = WebInspector.SettingsUI.createSettingCheckbox(WebInspecto
r.UIString("CSS media"), WebInspector.overridesSupport.settings.overrideCSSMedia
, true); | 234 var checkbox = WebInspector.SettingsUI.createSettingCheckbox(WebInspecto
r.UIString("CSS media"), WebInspector.overridesSupport.settings.overrideCSSMedia
, true); |
233 var fieldsetElement = WebInspector.SettingsUI.createSettingFieldset(WebI
nspector.overridesSupport.settings.overrideCSSMedia); | 235 var fieldsetElement = WebInspector.SettingsUI.createSettingFieldset(WebI
nspector.overridesSupport.settings.overrideCSSMedia); |
234 if (WebInspector.overridesSupport.isInspectingDevice()) | |
235 fieldsetElement.disabled = true; | |
236 | |
237 var mediaSelectElement = fieldsetElement.createChild("select"); | 236 var mediaSelectElement = fieldsetElement.createChild("select"); |
238 var mediaTypes = WebInspector.CSSStyleModel.MediaTypes; | 237 var mediaTypes = WebInspector.CSSStyleModel.MediaTypes; |
239 var defaultMedia = WebInspector.overridesSupport.settings.emulatedCSSMed
ia.get(); | 238 var defaultMedia = WebInspector.overridesSupport.settings.emulatedCSSMed
ia.get(); |
240 for (var i = 0; i < mediaTypes.length; ++i) { | 239 for (var i = 0; i < mediaTypes.length; ++i) { |
241 var mediaType = mediaTypes[i]; | 240 var mediaType = mediaTypes[i]; |
242 if (mediaType === "all") { | 241 if (mediaType === "all") { |
243 // "all" is not a device-specific media type. | 242 // "all" is not a device-specific media type. |
244 continue; | 243 continue; |
245 } | 244 } |
246 var option = document.createElement("option"); | 245 var option = document.createElement("option"); |
(...skipping 20 matching lines...) Expand all Loading... |
267 __proto__: WebInspector.OverridesView.Tab.prototype | 266 __proto__: WebInspector.OverridesView.Tab.prototype |
268 } | 267 } |
269 | 268 |
270 | 269 |
271 /** | 270 /** |
272 * @constructor | 271 * @constructor |
273 * @extends {WebInspector.OverridesView.Tab} | 272 * @extends {WebInspector.OverridesView.Tab} |
274 */ | 273 */ |
275 WebInspector.OverridesView.NetworkTab = function() | 274 WebInspector.OverridesView.NetworkTab = function() |
276 { | 275 { |
277 var flags = []; | 276 var predicates = [this._userAgentOverrideEnabled.bind(this)]; |
278 if (WebInspector.experimentsSettings.networkConditions.isEnabled()) | 277 if (WebInspector.experimentsSettings.networkConditions.isEnabled()) |
279 flags.push(WebInspector.overridesSupport.settings.emulateNetworkCondition
s); | 278 predicates.push(this._networkThroughputIsLimited.bind(this)); |
280 WebInspector.OverridesView.Tab.call(this, "network", WebInspector.UIString("
Network"), flags, [this._isUserAgentOverrideEnabled.bind(this)]); | 279 WebInspector.OverridesView.Tab.call(this, "network", WebInspector.UIString("
Network"), [], predicates); |
281 this.element.classList.add("overrides-network"); | 280 this.element.classList.add("overrides-network"); |
282 if (WebInspector.experimentsSettings.networkConditions.isEnabled()) { | 281 if (WebInspector.experimentsSettings.networkConditions.isEnabled()) |
283 this.element.appendChild(this._createSettingCheckbox(WebInspector.UIStri
ng("Limit network throughput"), WebInspector.overridesSupport.settings.emulateNe
tworkConditions)); | 282 this._createNetworkConditionsElement(); |
284 this.element.appendChild(this._createNetworkConditionsElement()); | |
285 } | |
286 this._createUserAgentSection(); | 283 this._createUserAgentSection(); |
287 } | 284 } |
288 | 285 |
289 WebInspector.OverridesView.NetworkTab.prototype = { | 286 WebInspector.OverridesView.NetworkTab.prototype = { |
290 /** | 287 /** |
291 * @return {!Element} | 288 * @return {boolean} |
292 */ | 289 */ |
| 290 _networkThroughputIsLimited: function() |
| 291 { |
| 292 return WebInspector.overridesSupport.networkThroughputIsLimited(); |
| 293 }, |
| 294 |
293 _createNetworkConditionsElement: function() | 295 _createNetworkConditionsElement: function() |
294 { | 296 { |
295 var fieldsetElement = WebInspector.SettingsUI.createSettingFieldset(WebI
nspector.overridesSupport.settings.emulateNetworkConditions); | 297 var fieldsetElement = this.element.createChild("fieldset"); |
| 298 fieldsetElement.createChild("span").textContent = WebInspector.UIString(
"Limit network throughput:"); |
296 | 299 |
297 var networkThroughput = WebInspector.overridesSupport.createNetworkThrou
ghputSelect(document); | 300 var networkThroughput = WebInspector.overridesSupport.createNetworkThrou
ghputSelect(document); |
298 fieldsetElement.appendChild(networkThroughput); | 301 fieldsetElement.appendChild(networkThroughput); |
299 fieldsetElement.createChild("br"); | |
300 | 302 |
301 var networkDomains = WebInspector.SettingsUI.createSettingInputField("Fo
r domains:", WebInspector.overridesSupport.settings.networkConditionsDomains, fa
lse, 0, "", WebInspector.OverridesSupport.networkDomainsValidator, false); | 303 var networkDomains = WebInspector.SettingsUI.createSettingInputField("Fo
r domains:", WebInspector.overridesSupport.settings.networkConditionsDomains, fa
lse, 0, "", WebInspector.OverridesSupport.networkDomainsValidator, false, false,
WebInspector.UIString("Leave empty to limit all domains")); |
302 networkDomains.querySelector("input").placeholder = WebInspector.UIStrin
g("Leave empty to limit all domains"); | |
303 fieldsetElement.appendChild(networkDomains); | 304 fieldsetElement.appendChild(networkDomains); |
304 | 305 |
305 return fieldsetElement; | 306 WebInspector.overridesSupport.settings.networkConditionsThroughput.addCh
angeListener(this.updateActiveState, this); |
306 }, | 307 }, |
307 | 308 |
308 /** | 309 /** |
309 * @return {boolean} | 310 * @return {boolean} |
310 */ | 311 */ |
311 _isUserAgentOverrideEnabled: function() | 312 _userAgentOverrideEnabled: function() |
312 { | 313 { |
313 return !!WebInspector.overridesSupport.userAgentOverride(); | 314 return !!WebInspector.overridesSupport.settings.userAgent.get(); |
314 }, | |
315 | |
316 _onUserAgentOverrideEnabledChanged: function() | |
317 { | |
318 this.updateActiveState(); | |
319 var enabled = !!WebInspector.overridesSupport.userAgentOverride(); | |
320 if (this._userAgentCheckbox.checked !== enabled) | |
321 this._userAgentCheckbox.checked = enabled; | |
322 this._userAgentFieldset.disabled = !enabled; | |
323 }, | 315 }, |
324 | 316 |
325 _createUserAgentSection: function() | 317 _createUserAgentSection: function() |
326 { | 318 { |
327 var settings = [WebInspector.overridesSupport.settings.emulateDevice, We
bInspector.settings.responsiveDesignEnabled, WebInspector.overridesSupport.setti
ngs.deviceUserAgent]; | 319 var fieldsetElement = this.element.createChild("fieldset"); |
328 for (var i = 0; i < settings.length; i++) { | 320 var userAgentInput = WebInspector.SettingsUI.createSettingInputField("Sp
oof user agent:", WebInspector.overridesSupport.settings.userAgent, false, 0, ""
, undefined, false, false, WebInspector.UIString("no override")); |
329 settings[i].addChangeListener(this._onUserAgentOverrideEnabledChange
d.bind(this)); | 321 fieldsetElement.appendChild(userAgentInput); |
330 settings[i].addChangeListener(WebInspector.overridesSupport.updateUs
erAgentToMatchDeviceUserAgent.bind(WebInspector.overridesSupport)); | |
331 } | |
332 WebInspector.overridesSupport.settings.overrideUserAgent.addChangeListen
er(this._onUserAgentOverrideEnabledChanged.bind(this)); | |
333 WebInspector.overridesSupport.settings.userAgent.addChangeListener(this.
_onUserAgentOverrideEnabledChanged.bind(this)); | |
334 | 322 |
335 var label = this.element.createChild("label"); | 323 WebInspector.overridesSupport.settings.userAgent.addChangeListener(this.
updateActiveState, this); |
336 var checkbox = label.createChild("input"); | |
337 checkbox.type = "checkbox"; | |
338 checkbox.name = WebInspector.UIString("Spoof user agent"); | |
339 label.createTextChild(WebInspector.UIString("Spoof user agent")); | |
340 | |
341 function checkboxChanged() | |
342 { | |
343 var enabled = checkbox.checked; | |
344 WebInspector.overridesSupport.settings.overrideUserAgent.set(enabled
); | |
345 if (WebInspector.overridesSupport.isEmulateDeviceEnabled()) | |
346 WebInspector.overridesSupport.settings.deviceUserAgent.set(enabl
ed ? WebInspector.overridesSupport.settings.userAgent.get() : ""); | |
347 } | |
348 checkbox.addEventListener("change", checkboxChanged, false); | |
349 | |
350 var fieldsetElement = this.element.createChild("fieldset"); | |
351 this._createUserAgentSelectAndInput(fieldsetElement, settings.concat([We
bInspector.overridesSupport.settings.userAgent])); | |
352 | |
353 this._userAgentFieldset = fieldsetElement; | |
354 this._userAgentCheckbox = checkbox; | |
355 this._onUserAgentOverrideEnabledChanged(); | |
356 }, | |
357 | |
358 /** | |
359 * @param {!Element} fieldsetElement | |
360 * @param {!Array.<!WebInspector.Setting>} settings | |
361 */ | |
362 _createUserAgentSelectAndInput: function(fieldsetElement, settings) | |
363 { | |
364 var userAgents = WebInspector.OverridesSupport._userAgents.concat([[WebI
nspector.UIString("Other"), "Other"]]); | |
365 | |
366 var userAgentSelectElement = fieldsetElement.createChild("select"); | |
367 for (var i = 0; i < userAgents.length; ++i) | |
368 userAgentSelectElement.add(new Option(userAgents[i][0], userAgents[i
][1])); | |
369 userAgentSelectElement.selectedIndex = 0; | |
370 | |
371 fieldsetElement.createChild("br"); | |
372 | |
373 var otherUserAgentElement = fieldsetElement.createChild("input"); | |
374 otherUserAgentElement.type = "text"; | |
375 otherUserAgentElement.value = otherUserAgentElement.title = WebInspector
.overridesSupport.userAgentOverride(); | |
376 | |
377 /** | |
378 * @param {string} userAgent | |
379 */ | |
380 function setUserAgentValue(userAgent) | |
381 { | |
382 WebInspector.overridesSupport.settings.userAgent.set(userAgent); | |
383 if (WebInspector.overridesSupport.isEmulateDeviceEnabled()) | |
384 WebInspector.overridesSupport.settings.deviceUserAgent.set(userA
gent); | |
385 } | |
386 | |
387 function userAgentSelected() | |
388 { | |
389 var value = userAgentSelectElement.options[userAgentSelectElement.se
lectedIndex].value; | |
390 if (value !== "Other") { | |
391 setUserAgentValue(value); | |
392 otherUserAgentElement.value = value; | |
393 otherUserAgentElement.title = value; | |
394 otherUserAgentElement.disabled = true; | |
395 } else { | |
396 otherUserAgentElement.disabled = false; | |
397 otherUserAgentElement.focus(); | |
398 } | |
399 } | |
400 | |
401 function settingChanged() | |
402 { | |
403 var deviceUserAgent = WebInspector.overridesSupport.isEmulateDeviceE
nabled() ? WebInspector.overridesSupport.settings.deviceUserAgent.get() : ""; | |
404 var value = deviceUserAgent || WebInspector.overridesSupport.setting
s.userAgent.get(); | |
405 var options = userAgentSelectElement.options; | |
406 var selectionRestored = false; | |
407 for (var i = 0; i < options.length; ++i) { | |
408 if (options[i].value === value) { | |
409 userAgentSelectElement.selectedIndex = i; | |
410 selectionRestored = true; | |
411 break; | |
412 } | |
413 } | |
414 | |
415 otherUserAgentElement.disabled = selectionRestored; | |
416 if (!selectionRestored) | |
417 userAgentSelectElement.selectedIndex = options.length - 1; | |
418 | |
419 if (otherUserAgentElement.value !== value) { | |
420 otherUserAgentElement.value = value; | |
421 otherUserAgentElement.title = value; | |
422 } | |
423 } | |
424 | |
425 function textKeyDown(event) | |
426 { | |
427 if (isEnterKey(event)) | |
428 textChanged(); | |
429 } | |
430 | |
431 function textDoubleClicked() | |
432 { | |
433 userAgentSelectElement.selectedIndex = userAgents.length - 1; | |
434 userAgentSelected(); | |
435 } | |
436 | |
437 function textChanged() | |
438 { | |
439 setUserAgentValue(otherUserAgentElement.value); | |
440 } | |
441 | |
442 settingChanged(); | |
443 for (var i = 0; i < settings.length; i++) | |
444 settings[i].addChangeListener(settingChanged); | |
445 | |
446 userAgentSelectElement.addEventListener("change", userAgentSelected, fal
se); | |
447 otherUserAgentElement.addEventListener("dblclick", textDoubleClicked, tr
ue); | |
448 otherUserAgentElement.addEventListener("blur", textChanged, false); | |
449 otherUserAgentElement.addEventListener("keydown", textKeyDown, false); | |
450 }, | 324 }, |
451 | 325 |
452 __proto__: WebInspector.OverridesView.Tab.prototype | 326 __proto__: WebInspector.OverridesView.Tab.prototype |
453 } | 327 } |
454 | 328 |
455 | 329 |
456 /** | 330 /** |
457 * @constructor | 331 * @constructor |
458 * @extends {WebInspector.OverridesView.Tab} | 332 * @extends {WebInspector.OverridesView.Tab} |
459 */ | 333 */ |
460 WebInspector.OverridesView.SensorsTab = function() | 334 WebInspector.OverridesView.SensorsTab = function() |
461 { | 335 { |
462 var settings = [WebInspector.overridesSupport.settings.overrideGeolocation,
WebInspector.overridesSupport.settings.overrideDeviceOrientation]; | 336 var settings = [WebInspector.overridesSupport.settings.overrideGeolocation,
WebInspector.overridesSupport.settings.overrideDeviceOrientation]; |
463 var predicates = !WebInspector.overridesSupport.hasTouchInputs() ? [this._is
TouchEnabled.bind(this)] : []; | 337 if (!WebInspector.overridesSupport.hasTouchInputs()) |
464 WebInspector.OverridesView.Tab.call(this, "sensors", WebInspector.UIString("
Sensors"), settings, predicates); | 338 settings.push(WebInspector.overridesSupport.settings.emulateTouch); |
| 339 WebInspector.OverridesView.Tab.call(this, "sensors", WebInspector.UIString("
Sensors"), settings); |
465 | 340 |
466 this.element.classList.add("overrides-sensors"); | 341 this.element.classList.add("overrides-sensors"); |
467 this.registerRequiredCSS("accelerometer.css"); | 342 this.registerRequiredCSS("accelerometer.css"); |
468 if (!WebInspector.overridesSupport.hasTouchInputs()) | 343 if (!WebInspector.overridesSupport.hasTouchInputs()) |
469 this.element.appendChild(this._createTouchCheckbox()); | 344 this.element.appendChild(this._createSettingCheckbox(WebInspector.UIStri
ng("Emulate touch screen"), WebInspector.overridesSupport.settings.emulateTouch,
undefined)); |
470 this._appendGeolocationOverrideControl(); | 345 this._appendGeolocationOverrideControl(); |
471 this._apendDeviceOrientationOverrideControl(); | 346 this._apendDeviceOrientationOverrideControl(); |
472 } | 347 } |
473 | 348 |
474 WebInspector.OverridesView.SensorsTab.prototype = { | 349 WebInspector.OverridesView.SensorsTab.prototype = { |
475 /** | |
476 * @return {boolean} | |
477 */ | |
478 _isTouchEnabled: function() | |
479 { | |
480 return WebInspector.overridesSupport.isTouchEmulationEnabled(); | |
481 }, | |
482 | |
483 _onTouchEmulationChanged: function() | |
484 { | |
485 this.updateActiveState(); | |
486 var enabled = WebInspector.overridesSupport.isTouchEmulationEnabled(); | |
487 if (this._touchCheckbox.checked !== enabled) | |
488 this._touchCheckbox.checked = enabled; | |
489 }, | |
490 | |
491 /** | |
492 * @return {!Element} | |
493 */ | |
494 _createTouchCheckbox: function() | |
495 { | |
496 var settings = [WebInspector.overridesSupport.settings.emulateDevice, We
bInspector.settings.responsiveDesignEnabled, WebInspector.overridesSupport.setti
ngs.deviceTouch]; | |
497 for (var i = 0; i < settings.length; i++) { | |
498 settings[i].addChangeListener(this._onTouchEmulationChanged.bind(thi
s)); | |
499 settings[i].addChangeListener(WebInspector.overridesSupport.updateSe
nsorsTouchToMatchDeviceTouch.bind(WebInspector.overridesSupport)); | |
500 } | |
501 WebInspector.overridesSupport.settings.sensorsTouch.addChangeListener(th
is._onTouchEmulationChanged.bind(this)); | |
502 | |
503 var input = document.createElement("input"); | |
504 input.type = "checkbox"; | |
505 input.name = WebInspector.UIString("Emulate touch screen"); | |
506 this._touchCheckbox = input; | |
507 | |
508 var label = document.createElement("label"); | |
509 label.appendChild(input); | |
510 label.createTextChild(WebInspector.UIString("Emulate touch screen")); | |
511 | |
512 function inputChanged() | |
513 { | |
514 var enabled = input.checked; | |
515 WebInspector.overridesSupport.settings.sensorsTouch.set(enabled); | |
516 if (WebInspector.overridesSupport.isEmulateDeviceEnabled()) | |
517 WebInspector.overridesSupport.settings.deviceTouch.set(enabled); | |
518 } | |
519 input.addEventListener("change", inputChanged, false); | |
520 | |
521 this._onTouchEmulationChanged(); | |
522 | |
523 return label; | |
524 }, | |
525 | |
526 _appendGeolocationOverrideControl: function() | 350 _appendGeolocationOverrideControl: function() |
527 { | 351 { |
528 const geolocationSetting = WebInspector.overridesSupport.settings.geoloc
ationOverride.get(); | 352 const geolocationSetting = WebInspector.overridesSupport.settings.geoloc
ationOverride.get(); |
529 var geolocation = WebInspector.OverridesSupport.GeolocationPosition.pars
eSetting(geolocationSetting); | 353 var geolocation = WebInspector.OverridesSupport.GeolocationPosition.pars
eSetting(geolocationSetting); |
530 this.element.appendChild(this._createSettingCheckbox(WebInspector.UIStri
ng("Emulate geolocation coordinates"), WebInspector.overridesSupport.settings.ov
errideGeolocation, this._geolocationOverrideCheckboxClicked.bind(this))); | 354 this.element.appendChild(this._createSettingCheckbox(WebInspector.UIStri
ng("Emulate geolocation coordinates"), WebInspector.overridesSupport.settings.ov
errideGeolocation, this._geolocationOverrideCheckboxClicked.bind(this))); |
531 this.element.appendChild(this._createGeolocationOverrideElement(geolocat
ion)); | 355 this.element.appendChild(this._createGeolocationOverrideElement(geolocat
ion)); |
532 this._geolocationOverrideCheckboxClicked(WebInspector.overridesSupport.s
ettings.overrideGeolocation.get()); | 356 this._geolocationOverrideCheckboxClicked(WebInspector.overridesSupport.s
ettings.overrideGeolocation.get()); |
533 }, | 357 }, |
534 | 358 |
535 /** | 359 /** |
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
773 | 597 |
774 __proto__ : WebInspector.OverridesView.Tab.prototype | 598 __proto__ : WebInspector.OverridesView.Tab.prototype |
775 } | 599 } |
776 | 600 |
777 /** @enum {string} */ | 601 /** @enum {string} */ |
778 WebInspector.OverridesView.SensorsTab.DeviceOrientationModificationSource = { | 602 WebInspector.OverridesView.SensorsTab.DeviceOrientationModificationSource = { |
779 UserInput: "userInput", | 603 UserInput: "userInput", |
780 UserDrag: "userDrag", | 604 UserDrag: "userDrag", |
781 ResetButton: "resetButton" | 605 ResetButton: "resetButton" |
782 } | 606 } |
OLD | NEW |