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

Side by Side Diff: Source/devtools/front_end/sdk/OverridesSupport.js

Issue 340723005: [DevTools] Remove unnecessary emulation checkboxes and simplify UX. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 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 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 245
246 WebInspector.OverridesSupport.DeviceOrientation.clearDeviceOrientationOverride = function() 246 WebInspector.OverridesSupport.DeviceOrientation.clearDeviceOrientationOverride = function()
247 { 247 {
248 PageAgent.clearDeviceOrientationOverride(); 248 PageAgent.clearDeviceOrientationOverride();
249 } 249 }
250 250
251 /** 251 /**
252 * @param {string} value 252 * @param {string} value
253 * @return {string} 253 * @return {string}
254 */ 254 */
255 WebInspector.OverridesSupport.integerInputValidator = function(value) 255 WebInspector.OverridesSupport.deviceSizeValidator = function(value)
256 { 256 {
257 if (/^[\d]+$/.test(value) && value >= 0 && value <= 10000) 257 if (!value || (/^[\d]+$/.test(value) && value >= 0 && value <= 10000))
258 return ""; 258 return "";
259 return WebInspector.UIString("Value must be non-negative integer"); 259 return WebInspector.UIString("Value must be non-negative integer");
260 } 260 }
261 261
262 /** 262 /**
263 * @param {string} value 263 * @param {string} value
264 * @return {string} 264 * @return {string}
265 */ 265 */
266 WebInspector.OverridesSupport.doubleInputValidator = function(value) 266 WebInspector.OverridesSupport.deviceScaleFactorValidator = function(value)
267 { 267 {
268 if (/^[\d]+(\.\d+)?|\.\d+$/.test(value) && value >= 0 && value <= 10000) 268 if (!value || (/^[\d]+(\.\d+)?|\.\d+$/.test(value) && value >= 0 && value <= 10000))
269 return ""; 269 return "";
270 return WebInspector.UIString("Value must be non-negative float"); 270 return WebInspector.UIString("Value must be non-negative float");
271 } 271 }
272 272
273 /** 273 /**
274 * @param {string} value 274 * @param {string} value
275 * @return {string} 275 * @return {string}
276 */ 276 */
277 WebInspector.OverridesSupport.networkDomainsValidator = function(value) 277 WebInspector.OverridesSupport.networkDomainsValidator = function(value)
278 { 278 {
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.46 Safari/537.36", 430 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.46 Safari/537.36",
431 "1280x800x1x0x0"], 431 "1280x800x1x0x0"],
432 ["Apple MacBook Pro Retina", 432 ["Apple MacBook Pro Retina",
433 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.46 Safari/537.36", 433 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.46 Safari/537.36",
434 "1440x900x2x0x0"], 434 "1440x900x2x0x0"],
435 ["Apple MacBook Air", 435 ["Apple MacBook Air",
436 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.46 Safari/537.36", 436 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.46 Safari/537.36",
437 "1366x768x1x0x0"], 437 "1366x768x1x0x0"],
438 ]; 438 ];
439 439
440 WebInspector.OverridesSupport._userAgents = [ 440 WebInspector.OverridesSupport._networkThroughputUnlimitedValue = -1;
441 ["Android 4.0.2 \u2014 Galaxy Nexus", "Mozilla/5.0 (Linux; U; Android 4.0.2; en-us; Galaxy Nexus Build/ICL53F) AppleWebKit/534.30 (KHTML, like Gecko) Versio n/4.0 Mobile Safari/534.30"],
442 ["Android 2.3 \u2014 Nexus S", "Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; Nexus S Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"],
443 ["BlackBerry \u2014 BB10", "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.1+ (KH TML, like Gecko) Version/10.0.0.1337 Mobile Safari/537.1+"],
444 ["BlackBerry \u2014 PlayBook 2.1", "Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML, like Gecko) Version/7.2.1.0 Safari/536. 2+"],
445 ["BlackBerry \u2014 9900", "Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en- US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.187 Mobile Safari/534. 11+"],
446 ["Chrome 31 \u2014 Mac", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) App leWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36"],
447 ["Chrome 31 \u2014 Windows", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.3 6 (KHTML, like Gecko) Chrome/31.0.1650.16 Safari/537.36"],
448 ["Chrome \u2014 Android Tablet", "Mozilla/5.0 (Linux; Android 4.1.2; Nexus 7 Build/JZ054K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safar i/535.19"],
449 ["Chrome \u2014 Android Mobile", "Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19"],
450 ["Firefox 14 \u2014 Android Mobile", "Mozilla/5.0 (Android; Mobile; rv:14.0) Gecko/14.0 Firefox/14.0"],
451 ["Firefox 14 \u2014 Android Tablet", "Mozilla/5.0 (Android; Tablet; rv:14.0) Gecko/14.0 Firefox/14.0"],
452 ["Firefox 4 \u2014 Mac", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2. 0.1) Gecko/20100101 Firefox/4.0.1"],
453 ["Firefox 4 \u2014 Windows", "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/2 0100101 Firefox/4.0.1"],
454 ["Firefox 7 \u2014 Mac", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7. 0.1) Gecko/20100101 Firefox/7.0.1"],
455 ["Firefox 7 \u2014 Windows", "Mozilla/5.0 (Windows NT 6.1; Intel Mac OS X 10 .6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"],
456 ["Internet Explorer 10", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2 ; Trident/6.0)"],
457 ["Internet Explorer 7", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)" ],
458 ["Internet Explorer 8", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)"],
459 ["Internet Explorer 9", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"],
460 ["iPad \u2014 iOS 7", "Mozilla/5.0 (iPad; CPU OS 7_0_2 like Mac OS X) AppleW ebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A501 Safari/9537.53"],
461 ["iPad \u2014 iOS 6", "Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWeb Kit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"],
462 ["iPhone \u2014 iOS 7", "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_2 like Mac O S X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A4449d Safari /9537.53"],
463 ["iPhone \u2014 iOS 6", "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/853 6.25"],
464 ["MeeGo \u2014 Nokia N9", "Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 ( KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13"],
465 ["Opera 18 \u2014 Mac", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) Appl eWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 OPR/18.0.12 84.68"],
466 ["Opera 18 \u2014 Windows", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 OPR/18.0.1284.68"],
467 ["Opera 12 \u2014 Mac", "Opera/9.80 (Macintosh; Intel Mac OS X 10.9.1) Prest o/2.12.388 Version/12.16"],
468 ["Opera 12 \u2014 Windows", "Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Ver sion/12.16"],
469 ["Silk \u2014 Kindle Fire (Desktop view)", "Mozilla/5.0 (Linux; U; en-us; KF THWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true"],
470 ["Silk \u2014 Kindle Fire (Mobile view)", "Mozilla/5.0 (Linux; U; Android 4. 2.2; en-us; KFTHWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Mobile Safari/535.19 Silk-Accelerated=true"],
471 ];
472
473 WebInspector.OverridesSupport._networkThroughputPresets = [ 441 WebInspector.OverridesSupport._networkThroughputPresets = [
474 ["Offline", 0], 442 ["Offline", 0],
475 ["5 Kbps", 5 * 1024 / 8], 443 ["5 Kbps", 5 * 1024 / 8],
476 ["10 Kbps (GSM)", 10 * 1024 / 8], 444 ["10 Kbps (GSM)", 10 * 1024 / 8],
477 ["20 Kbps", 20 * 1024 / 8], 445 ["20 Kbps", 20 * 1024 / 8],
478 ["40 Kbps (GPRS)", 40 * 1024 / 8], 446 ["40 Kbps (GPRS)", 40 * 1024 / 8],
479 ["80 Kbps", 80 * 1024 / 8], 447 ["80 Kbps", 80 * 1024 / 8],
480 ["160 Kbps (EDGE)", 160 * 1024 / 8], 448 ["160 Kbps (EDGE)", 160 * 1024 / 8],
481 ["320 Kbps", 320 * 1024 / 8], 449 ["320 Kbps", 320 * 1024 / 8],
482 ["640 Kbps (3G)", 640 * 1024 / 8], 450 ["640 Kbps (3G)", 640 * 1024 / 8],
483 ["1 Mbps", 1024 * 1024 / 8], 451 ["1 Mbps", 1024 * 1024 / 8],
484 ["2 Mbps (802.11b)", 2048 * 1024 / 8] 452 ["2 Mbps (802.11b)", 2048 * 1024 / 8],
453 ["No throttling", WebInspector.OverridesSupport._networkThroughputUnlimitedV alue]
485 ]; 454 ];
486 455
487 WebInspector.OverridesSupport.prototype = { 456 WebInspector.OverridesSupport.prototype = {
488 /** 457 /**
489 * @return {boolean} 458 * @return {boolean}
490 */ 459 */
491 _responsiveDesignEnabledOrUnavailable: function() 460 responsiveDesignAvailable: function()
492 { 461 {
493 return !this._responsiveDesignAvailable || WebInspector.settings.respons iveDesignEnabled.get(); 462 return this._responsiveDesignAvailable;
494 }, 463 },
495 464
496 /** 465 /**
497 * @param {?WebInspector.OverridesSupport.PageResizer} pageResizer 466 * @param {?WebInspector.OverridesSupport.PageResizer} pageResizer
498 */ 467 */
499 setPageResizer: function(pageResizer) 468 setPageResizer: function(pageResizer)
500 { 469 {
501 if (pageResizer === this._pageResizer) 470 if (pageResizer === this._pageResizer)
502 return; 471 return;
503 472
(...skipping 10 matching lines...) Expand all
514 this._deviceMetricsChanged(); 483 this._deviceMetricsChanged();
515 }, 484 },
516 485
517 /** 486 /**
518 * @param {!WebInspector.OverridesSupport.Device} device 487 * @param {!WebInspector.OverridesSupport.Device} device
519 */ 488 */
520 emulateDevice: function(device) 489 emulateDevice: function(device)
521 { 490 {
522 this._deviceMetricsChangedListenerMuted = true; 491 this._deviceMetricsChangedListenerMuted = true;
523 this._userAgentChangedListenerMuted = true; 492 this._userAgentChangedListenerMuted = true;
524 this.settings.deviceUserAgent.set(device.userAgent); 493 this.settings.userAgent.set(device.userAgent);
525 this.settings.deviceWidth.set(device.width); 494 this.settings.deviceWidth.set(device.width);
526 this.settings.deviceHeight.set(device.height); 495 this.settings.deviceHeight.set(device.height);
527 this.settings.deviceScaleFactor.set(device.deviceScaleFactor); 496 this.settings.deviceScaleFactor.set(device.deviceScaleFactor);
528 this.settings.deviceTextAutosizing.set(device.textAutosizing); 497 this.settings.deviceTextAutosizing.set(device.textAutosizing);
529 this.settings.deviceTouch.set(device.touch); 498 this.settings.emulateTouch.set(device.touch);
530 this.settings.emulateViewport.set(device.viewport); 499 this.settings.emulateViewport.set(device.viewport);
531 this.settings.emulateDevice.set(true);
532 delete this._deviceMetricsChangedListenerMuted; 500 delete this._deviceMetricsChangedListenerMuted;
533 delete this._userAgentChangedListenerMuted; 501 delete this._userAgentChangedListenerMuted;
534 502
535 if (this._initialized) { 503 if (this._initialized) {
536 this._deviceMetricsChanged(); 504 this._deviceMetricsChanged();
537 this._userAgentChanged(); 505 this._userAgentChanged();
538 } 506 }
539 }, 507 },
540 508
541 reset: function() 509 reset: function()
542 { 510 {
543 this._deviceMetricsChangedListenerMuted = true; 511 this._deviceMetricsChangedListenerMuted = true;
544 this._userAgentChangedListenerMuted = true; 512 this._userAgentChangedListenerMuted = true;
545 this.settings.emulateDevice.set(false); 513 this.settings.userAgent.set("");
546 this.settings.sensorsTouch.set(false); 514 this.settings.deviceWidth.set(0);
547 this.settings.overrideUserAgent.set(false); 515 this.settings.deviceHeight.set(0);
516 this.settings.deviceScaleFactor.set(0);
517 this.settings.deviceTextAutosizing.set(false);
518 this.settings.emulateTouch.set(false);
519 this.settings.emulateViewport.set(false);
548 this.settings.overrideDeviceOrientation.set(false); 520 this.settings.overrideDeviceOrientation.set(false);
549 this.settings.overrideGeolocation.set(false); 521 this.settings.overrideGeolocation.set(false);
550 this.settings.overrideCSSMedia.set(false); 522 this.settings.overrideCSSMedia.set(false);
523 this.settings.networkConditionsThroughput.set(WebInspector.OverridesSupp ort._networkThroughputUnlimitedValue);
551 delete this._deviceMetricsChangedListenerMuted; 524 delete this._deviceMetricsChangedListenerMuted;
552 delete this._userAgentChangedListenerMuted; 525 delete this._userAgentChangedListenerMuted;
553 526
554 if (this._initialized) { 527 if (this._initialized) {
555 this._deviceMetricsChanged(); 528 this._deviceMetricsChanged();
556 this._userAgentChanged(); 529 this._userAgentChanged();
557 } 530 }
558 }, 531 },
559 532
560 /** 533 /**
561 * @param {!WebInspector.OverridesSupport.Device} device 534 * @param {!WebInspector.OverridesSupport.Device} device
562 * @return {boolean} 535 * @return {boolean}
563 */ 536 */
564 isEmulatingDevice: function(device) 537 isEmulatingDevice: function(device)
565 { 538 {
566 return this.settings.deviceUserAgent.get() === device.userAgent 539 return this.settings.userAgent.get() === device.userAgent
567 && this.settings.deviceWidth.get() === device.width 540 && this.settings.deviceWidth.get() === device.width
568 && this.settings.deviceHeight.get() === device.height 541 && this.settings.deviceHeight.get() === device.height
569 && this.settings.deviceScaleFactor.get() === device.deviceScaleFacto r 542 && this.settings.deviceScaleFactor.get() === device.deviceScaleFacto r
570 && this.settings.deviceTextAutosizing.get() === device.textAutosizin g 543 && this.settings.deviceTextAutosizing.get() === device.textAutosizin g
571 && this.settings.deviceTouch.get() === device.touch 544 && this.settings.emulateTouch.get() === device.touch
572 && this.settings.emulateViewport.get() === device.viewport; 545 && this.settings.emulateViewport.get() === device.viewport;
573 }, 546 },
574 547
575 applyInitialOverrides: function() 548 applyInitialOverrides: function()
576 { 549 {
577 if (!this._target) { 550 if (!this._target) {
578 this._applyInitialOverridesOnTargetAdded = true; 551 this._applyInitialOverridesOnTargetAdded = true;
579 return; 552 return;
580 } 553 }
581 554
582 this._initialized = true; 555 this._initialized = true;
583 556
584 this._addEmulateDeviceListener(this._userAgentChanged); 557 this.settings.emulationEnabled.addChangeListener(this._userAgentChanged, this);
585 this.settings.deviceUserAgent.addChangeListener(this._userAgentChanged, this);
586 this.settings.overrideUserAgent.addChangeListener(this._userAgentChanged , this);
587 this.settings.userAgent.addChangeListener(this._userAgentChanged, this); 558 this.settings.userAgent.addChangeListener(this._userAgentChanged, this);
588 559
589 this._addEmulateDeviceListener(this._deviceMetricsChanged); 560 this.settings.emulationEnabled.addChangeListener(this._deviceMetricsChan ged, this);
590 this.settings.deviceWidth.addChangeListener(this._deviceMetricsChanged, this); 561 this.settings.deviceWidth.addChangeListener(this._deviceMetricsChanged, this);
591 this.settings.deviceHeight.addChangeListener(this._deviceMetricsChanged, this); 562 this.settings.deviceHeight.addChangeListener(this._deviceMetricsChanged, this);
592 this.settings.deviceScaleFactor.addChangeListener(this._deviceMetricsCha nged, this); 563 this.settings.deviceScaleFactor.addChangeListener(this._deviceMetricsCha nged, this);
593 this.settings.deviceTextAutosizing.addChangeListener(this._deviceMetrics Changed, this); 564 this.settings.deviceTextAutosizing.addChangeListener(this._deviceMetrics Changed, this);
594 this.settings.emulateViewport.addChangeListener(this._deviceMetricsChang ed, this); 565 this.settings.emulateViewport.addChangeListener(this._deviceMetricsChang ed, this);
595 this.settings.deviceFitWindow.addChangeListener(this._deviceMetricsChang ed, this); 566 this.settings.deviceFitWindow.addChangeListener(this._deviceMetricsChang ed, this);
596 567
568 this.settings.emulationEnabled.addChangeListener(this._geolocationPositi onChanged, this);
597 this.settings.overrideGeolocation.addChangeListener(this._geolocationPos itionChanged, this); 569 this.settings.overrideGeolocation.addChangeListener(this._geolocationPos itionChanged, this);
598 this.settings.geolocationOverride.addChangeListener(this._geolocationPos itionChanged, this); 570 this.settings.geolocationOverride.addChangeListener(this._geolocationPos itionChanged, this);
599 WebInspector.settings.responsiveDesignEnabled.addChangeListener(this._ge olocationPositionChanged, this);
600 571
572 this.settings.emulationEnabled.addChangeListener(this._deviceOrientation Changed, this);
601 this.settings.overrideDeviceOrientation.addChangeListener(this._deviceOr ientationChanged, this); 573 this.settings.overrideDeviceOrientation.addChangeListener(this._deviceOr ientationChanged, this);
602 this.settings.deviceOrientationOverride.addChangeListener(this._deviceOr ientationChanged, this); 574 this.settings.deviceOrientationOverride.addChangeListener(this._deviceOr ientationChanged, this);
603 WebInspector.settings.responsiveDesignEnabled.addChangeListener(this._de viceOrientationChanged, this);
604 575
605 this._addEmulateDeviceListener(this._emulateTouchEventsChanged); 576 this.settings.emulationEnabled.addChangeListener(this._emulateTouchEvent sChanged, this);
606 this.settings.deviceTouch.addChangeListener(this._emulateTouchEventsChan ged, this); 577 this.settings.emulateTouch.addChangeListener(this._emulateTouchEventsCha nged, this);
607 this.settings.sensorsTouch.addChangeListener(this._emulateTouchEventsCha nged, this);
608 578
579 this.settings.emulationEnabled.addChangeListener(this._cssMediaChanged, this);
609 this.settings.overrideCSSMedia.addChangeListener(this._cssMediaChanged, this); 580 this.settings.overrideCSSMedia.addChangeListener(this._cssMediaChanged, this);
610 this.settings.emulatedCSSMedia.addChangeListener(this._cssMediaChanged, this); 581 this.settings.emulatedCSSMedia.addChangeListener(this._cssMediaChanged, this);
611 WebInspector.settings.responsiveDesignEnabled.addChangeListener(this._cs sMediaChanged, this);
612 582
613 if (WebInspector.experimentsSettings.networkConditions.isEnabled()) { 583 if (WebInspector.experimentsSettings.networkConditions.isEnabled()) {
614 this.settings.emulateNetworkConditions.addChangeListener(this._netwo rkConditionsChanged, this); 584 this.settings.emulationEnabled.addChangeListener(this._networkCondit ionsChanged, this);
615 this.settings.networkConditionsDomains.addChangeListener(this._netwo rkConditionsChanged, this); 585 this.settings.networkConditionsDomains.addChangeListener(this._netwo rkConditionsChanged, this);
616 this.settings.networkConditionsThroughput.addChangeListener(this._ne tworkConditionsChanged, this); 586 this.settings.networkConditionsThroughput.addChangeListener(this._ne tworkConditionsChanged, this);
617 WebInspector.settings.responsiveDesignEnabled.addChangeListener(this ._networkConditionsChanged, this);
618 } 587 }
619 588
620 WebInspector.settings.showMetricsRulers.addChangeListener(this._showRule rsChanged, this); 589 WebInspector.settings.showMetricsRulers.addChangeListener(this._showRule rsChanged, this);
590 this._showRulersChanged();
591
592 if (!this.settings.emulationEnabled.get())
593 return;
621 594
622 if (this.settings.overrideDeviceOrientation.get()) 595 if (this.settings.overrideDeviceOrientation.get())
623 this._deviceOrientationChanged(); 596 this._deviceOrientationChanged();
624 597
625 if (this.settings.overrideGeolocation.get()) 598 if (this.settings.overrideGeolocation.get())
626 this._geolocationPositionChanged(); 599 this._geolocationPositionChanged();
627 600
628 if (this.isTouchEmulationEnabled()) 601 if (this.settings.emulateTouch.get())
629 this._emulateTouchEventsChanged(); 602 this._emulateTouchEventsChanged();
630 603
631 if (this.settings.overrideCSSMedia.get()) 604 if (this.settings.overrideCSSMedia.get())
632 this._cssMediaChanged(); 605 this._cssMediaChanged();
633 606
634 if (this.settings.emulateDevice.get()) 607 this._deviceMetricsChanged();
635 this._deviceMetricsChanged();
636 608
637 if (this.userAgentOverride()) 609 this._userAgentChanged();
638 this._userAgentChanged();
639 610
640 if (WebInspector.experimentsSettings.networkConditions.isEnabled() && th is.settings.emulateNetworkConditions.get()) 611 if (WebInspector.experimentsSettings.networkConditions.isEnabled() && th is.networkThroughputIsLimited())
641 this._networkConditionsChanged(); 612 this._networkConditionsChanged();
642
643 this._showRulersChanged();
644 },
645
646 /**
647 * @param {function(this:WebInspector.OverridesSupport)} listener
648 */
649 _addEmulateDeviceListener: function(listener)
650 {
651 this.settings.emulateDevice.addChangeListener(listener, this);
652 WebInspector.settings.responsiveDesignEnabled.addChangeListener(listener , this);
653 }, 613 },
654 614
655 _userAgentChanged: function() 615 _userAgentChanged: function()
656 { 616 {
657 if (this._userAgentChangedListenerMuted) 617 if (this._userAgentChangedListenerMuted)
658 return; 618 return;
659 var userAgent = this.userAgentOverride(); 619 var userAgent = this.settings.emulationEnabled.get() ? this.settings.use rAgent.get() : "";
660 NetworkAgent.setUserAgentOverride(userAgent); 620 NetworkAgent.setUserAgentOverride(userAgent);
661 if (this._userAgent !== userAgent) 621 if (this._userAgent !== userAgent)
662 this._updateUserAgentWarningMessage(WebInspector.UIString("You might need to reload the page for proper user agent spoofing and viewport rendering." )); 622 this._updateUserAgentWarningMessage(WebInspector.UIString("You might need to reload the page for proper user agent spoofing and viewport rendering." ));
663 this._userAgent = userAgent; 623 this._userAgent = userAgent;
664 this.maybeHasActiveOverridesChanged(); 624 this.maybeHasActiveOverridesChanged();
665 }, 625 },
666 626
667 _onPageResizerAvailableSizeChanged: function() 627 _onPageResizerAvailableSizeChanged: function()
668 { 628 {
669 if (this._initialized) 629 if (this._initialized)
(...skipping 13 matching lines...) Expand all
683 this.settings.deviceHeight.set(height); 643 this.settings.deviceHeight.set(height);
684 } 644 }
685 }, 645 },
686 646
687 _deviceMetricsChanged: function() 647 _deviceMetricsChanged: function()
688 { 648 {
689 this._showRulersChanged(); 649 this._showRulersChanged();
690 650
691 if (this._deviceMetricsChangedListenerMuted) 651 if (this._deviceMetricsChangedListenerMuted)
692 return; 652 return;
693 var emulateDevice = this.settings.emulateDevice.get(); 653
694 if (!this._responsiveDesignEnabledOrUnavailable() || !emulateDevice) { 654 if (!this.settings.emulationEnabled.get()) {
695 this._deviceMetricsThrottler.schedule(clearDeviceMetricsOverride.bin d(this)); 655 this._deviceMetricsThrottler.schedule(clearDeviceMetricsOverride.bin d(this));
696 if (this._pageResizer && !emulateDevice) 656 if (this._pageResizer)
697 this._pageResizer.update(0, 0, 0); 657 this._pageResizer.update(0, 0, 0);
698 return; 658 return;
699 } 659 }
700 660
701 var dipWidth = emulateDevice ? this.settings.deviceWidth.get() : 0; 661 var dipWidth = this.settings.deviceWidth.get();
702 var dipHeight = emulateDevice ? this.settings.deviceHeight.get() : 0; 662 var dipHeight = this.settings.deviceHeight.get();
703 663
704 // Disable override without checks. 664 // Disable override without checks.
705 if (this.isInspectingDevice()) 665 if (this.isInspectingDevice())
706 return; 666 return;
707 667
708 var overrideWidth = dipWidth; 668 var overrideWidth = dipWidth;
709 var overrideHeight = dipHeight; 669 var overrideHeight = dipHeight;
710 if (this._pageResizer) { 670 if (this._pageResizer) {
711 var available = this._pageResizer.availableDipSize(); 671 var available = this._pageResizer.availableDipSize();
712 if (available.width >= dipWidth && available.height >= dipHeight) { 672 if (available.width >= dipWidth && available.height >= dipHeight) {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
750 */ 710 */
751 function apiCallback(finishCallback, error) 711 function apiCallback(finishCallback, error)
752 { 712 {
753 if (error) { 713 if (error) {
754 this._updateDeviceMetricsWarningMessage(WebInspector.UIString("S creen emulation is not available on this page.")); 714 this._updateDeviceMetricsWarningMessage(WebInspector.UIString("S creen emulation is not available on this page."));
755 this._deviceMetricsOverrideAppliedForTest(); 715 this._deviceMetricsOverrideAppliedForTest();
756 finishCallback(); 716 finishCallback();
757 return; 717 return;
758 } 718 }
759 719
760 var viewportEnabled = this.settings.emulateDevice.get() && this.sett ings.emulateViewport.get(); 720 var viewportEnabled = this.settings.emulationEnabled.get() && this.s ettings.emulateViewport.get();
761 if (this._emulateViewportEnabled !== viewportEnabled) 721 if (this._emulateViewportEnabled !== viewportEnabled)
762 this._updateDeviceMetricsWarningMessage(WebInspector.UIString("Y ou might need to reload the page for proper user agent spoofing and viewport ren dering.")); 722 this._updateDeviceMetricsWarningMessage(WebInspector.UIString("Y ou might need to reload the page for proper user agent spoofing and viewport ren dering."));
763 this._emulateViewportEnabled = viewportEnabled; 723 this._emulateViewportEnabled = viewportEnabled;
764 this._deviceMetricsOverrideAppliedForTest(); 724 this._deviceMetricsOverrideAppliedForTest();
765 this.maybeHasActiveOverridesChanged(); 725 this.maybeHasActiveOverridesChanged();
766 finishCallback(); 726 finishCallback();
767 } 727 }
768 }, 728 },
769 729
770 _deviceMetricsOverrideAppliedForTest: function() 730 _deviceMetricsOverrideAppliedForTest: function()
771 { 731 {
772 // Used for sniffing in tests. 732 // Used for sniffing in tests.
773 }, 733 },
774 734
775 _geolocationPositionChanged: function() 735 _geolocationPositionChanged: function()
776 { 736 {
777 if (!this._responsiveDesignEnabledOrUnavailable() || !this.settings.over rideGeolocation.get()) { 737 if (!this.settings.emulationEnabled.get() || !this.settings.overrideGeol ocation.get()) {
778 GeolocationAgent.clearGeolocationOverride(); 738 GeolocationAgent.clearGeolocationOverride();
779 return; 739 return;
780 } 740 }
781 var geolocation = WebInspector.OverridesSupport.GeolocationPosition.pars eSetting(this.settings.geolocationOverride.get()); 741 var geolocation = WebInspector.OverridesSupport.GeolocationPosition.pars eSetting(this.settings.geolocationOverride.get());
782 if (geolocation.error) 742 if (geolocation.error)
783 GeolocationAgent.setGeolocationOverride(); 743 GeolocationAgent.setGeolocationOverride();
784 else 744 else
785 GeolocationAgent.setGeolocationOverride(geolocation.latitude, geoloc ation.longitude, 150); 745 GeolocationAgent.setGeolocationOverride(geolocation.latitude, geoloc ation.longitude, 150);
786 this.maybeHasActiveOverridesChanged(); 746 this.maybeHasActiveOverridesChanged();
787 }, 747 },
788 748
789 _deviceOrientationChanged: function() 749 _deviceOrientationChanged: function()
790 { 750 {
791 if (!this._responsiveDesignEnabledOrUnavailable() || !this.settings.over rideDeviceOrientation.get()) { 751 if (!this.settings.emulationEnabled.get() || !this.settings.overrideDevi ceOrientation.get()) {
792 PageAgent.clearDeviceOrientationOverride(); 752 PageAgent.clearDeviceOrientationOverride();
793 return; 753 return;
794 } 754 }
795 755
796 var deviceOrientation = WebInspector.OverridesSupport.DeviceOrientation. parseSetting(this.settings.deviceOrientationOverride.get()); 756 var deviceOrientation = WebInspector.OverridesSupport.DeviceOrientation. parseSetting(this.settings.deviceOrientationOverride.get());
797 PageAgent.setDeviceOrientationOverride(deviceOrientation.alpha, deviceOr ientation.beta, deviceOrientation.gamma); 757 PageAgent.setDeviceOrientationOverride(deviceOrientation.alpha, deviceOr ientation.beta, deviceOrientation.gamma);
798 this.maybeHasActiveOverridesChanged(); 758 this.maybeHasActiveOverridesChanged();
799 }, 759 },
800 760
801 _emulateTouchEventsChanged: function() 761 _emulateTouchEventsChanged: function()
802 { 762 {
803 var emulateTouch = this.isTouchEmulationEnabled(); 763 var emulateTouch = this.settings.emulationEnabled.get() && this.settings .emulateTouch.get();
804 var targets = WebInspector.targetManager.targets(); 764 var targets = WebInspector.targetManager.targets();
805 for (var i = 0; i < targets.length; ++i) 765 for (var i = 0; i < targets.length; ++i)
806 targets[i].domModel.emulateTouchEventObjects(emulateTouch); 766 targets[i].domModel.emulateTouchEventObjects(emulateTouch);
807 this.maybeHasActiveOverridesChanged(); 767 this.maybeHasActiveOverridesChanged();
808 }, 768 },
809 769
810 _cssMediaChanged: function() 770 _cssMediaChanged: function()
811 { 771 {
812 if (this.isInspectingDevice() && this.settings.overrideCSSMedia.get()) 772 var enabled = !this.isInspectingDevice() && this.settings.emulationEnabl ed.get() && this.settings.overrideCSSMedia.get();
813 return; 773 PageAgent.setEmulatedMedia(enabled ? this.settings.emulatedCSSMedia.get( ) : "");
814
815 PageAgent.setEmulatedMedia(this._responsiveDesignEnabledOrUnavailable() && this.settings.overrideCSSMedia.get() ? this.settings.emulatedCSSMedia.get() : "");
816 var targets = WebInspector.targetManager.targets(); 774 var targets = WebInspector.targetManager.targets();
817 for (var i = 0; i < targets.length; ++i) 775 for (var i = 0; i < targets.length; ++i)
818 targets[i].cssModel.mediaQueryResultChanged(); 776 targets[i].cssModel.mediaQueryResultChanged();
819 this.maybeHasActiveOverridesChanged(); 777 this.maybeHasActiveOverridesChanged();
820 }, 778 },
821 779
822 _networkConditionsChanged: function() 780 _networkConditionsChanged: function()
823 { 781 {
824 if (!this._responsiveDesignEnabledOrUnavailable() || !this.settings.emul ateNetworkConditions.get()) { 782 if (!this.settings.emulationEnabled.get() || !this.networkThroughputIsLi mited()) {
825 NetworkAgent.emulateNetworkConditions([], 0, false, 0, 0, 0); 783 NetworkAgent.emulateNetworkConditions([], 0, false, 0, 0, 0);
826 } else { 784 } else {
827 var domainsString = this.settings.networkConditionsDomains.get().tri m(); 785 var domainsString = this.settings.networkConditionsDomains.get().tri m();
828 var domains = domainsString ? domainsString.split(",").map(function (s) { return s.trim(); }) : []; 786 var domains = domainsString ? domainsString.split(",").map(function (s) { return s.trim(); }) : [];
829 var throughput = this.settings.networkConditionsThroughput.get(); 787 var throughput = this.settings.networkConditionsThroughput.get();
830 var offline = !throughput; 788 var offline = !throughput;
831 NetworkAgent.emulateNetworkConditions(domains, throughput, offline, 0, throughput, throughput); 789 NetworkAgent.emulateNetworkConditions(domains, throughput, offline, 0, throughput, throughput);
832 } 790 }
833 this.maybeHasActiveOverridesChanged(); 791 this.maybeHasActiveOverridesChanged();
834 }, 792 },
835 793
836 /** 794 /**
837 * @return {boolean} 795 * @return {boolean}
838 */ 796 */
839 showMetricsRulers: function() 797 showMetricsRulers: function()
840 { 798 {
841 var rulersInPageResizer = this._pageResizer && this.settings.emulateDevi ce.get(); 799 var rulersInPageResizer = this._pageResizer && this.settings.emulationEn abled.get();
842 return WebInspector.settings.showMetricsRulers.get() && !rulersInPageRes izer; 800 return WebInspector.settings.showMetricsRulers.get() && !rulersInPageRes izer;
843 }, 801 },
844 802
845 _showRulersChanged: function() 803 _showRulersChanged: function()
846 { 804 {
847 if (WebInspector.experimentsSettings.responsiveDesign.isEnabled()) 805 if (WebInspector.experimentsSettings.responsiveDesign.isEnabled())
848 return; 806 return;
849 PageAgent.setShowViewportSizeOnResize(true, this.showMetricsRulers()); 807 PageAgent.setShowViewportSizeOnResize(true, this.showMetricsRulers());
850 }, 808 },
851 809
852 /** 810 /**
853 * @return {boolean} 811 * @return {boolean}
854 */ 812 */
855 hasActiveOverrides: function() 813 hasActiveOverrides: function()
856 { 814 {
857 return this._hasActiveOverrides; 815 return this._hasActiveOverrides;
858 }, 816 },
859 817
860 maybeHasActiveOverridesChanged: function() 818 maybeHasActiveOverridesChanged: function()
861 { 819 {
862 var hasActiveOverrides = 820 var hasActiveOverrides = this.settings.emulationEnabled.get();
863 !!this.userAgentOverride() ||
864 (this.settings.emulateDevice.get() && !this.isInspectingDevice()) ||
865 this.settings.overrideGeolocation.get() ||
866 this.settings.overrideDeviceOrientation.get() ||
867 (WebInspector.experimentsSettings.networkConditions.isEnabled() && t his.settings.emulateNetworkConditions.get()) ||
868 this.isTouchEmulationEnabled() ||
869 (this.settings.overrideCSSMedia.get() && !this.isInspectingDevice()) ;
870 if (this._hasActiveOverrides !== hasActiveOverrides) { 821 if (this._hasActiveOverrides !== hasActiveOverrides) {
871 this._hasActiveOverrides = hasActiveOverrides; 822 this._hasActiveOverrides = hasActiveOverrides;
872 this.dispatchEventToListeners(WebInspector.OverridesSupport.Events.H asActiveOverridesChanged); 823 this.dispatchEventToListeners(WebInspector.OverridesSupport.Events.H asActiveOverridesChanged);
873 } 824 }
874 }, 825 },
875 826
876 _onMainFrameNavigated: function() 827 _onMainFrameNavigated: function()
877 { 828 {
878 if (this._initialized) 829 if (this._initialized)
879 this._deviceMetricsChanged(); 830 this._deviceMetricsChanged();
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
911 * @param {!WebInspector.Target} target 862 * @param {!WebInspector.Target} target
912 */ 863 */
913 targetAdded: function(target) 864 targetAdded: function(target)
914 { 865 {
915 // FIXME: adapt this to multiple targets. 866 // FIXME: adapt this to multiple targets.
916 if (this._target) 867 if (this._target)
917 return; 868 return;
918 this._target = target; 869 this._target = target;
919 870
920 this.settings = {}; 871 this.settings = {};
921 this.settings.overrideUserAgent = WebInspector.settings.createSetting("o verrideUserAgent", false); 872 this.settings.emulationEnabled = WebInspector.settings.createSetting("em ulationEnabled", false);
873
922 this.settings.userAgent = WebInspector.settings.createSetting("userAgent ", ""); 874 this.settings.userAgent = WebInspector.settings.createSetting("userAgent ", "");
923 875
924 this.settings.emulateDevice = WebInspector.settings.createSetting("emula teDevice", false); 876 this.settings.deviceWidth = WebInspector.settings.createSetting("deviceW idth", 0);
925 this.settings.deviceWidth = WebInspector.settings.createSetting("deviceW idth", 800); 877 this.settings.deviceHeight = WebInspector.settings.createSetting("device Height", 0);
926 this.settings.deviceHeight = WebInspector.settings.createSetting("device Height", 600); 878 this.settings.deviceScaleFactor = WebInspector.settings.createSetting("d eviceScaleFactor", 0);
927 this.settings.deviceScaleFactor = WebInspector.settings.createSetting("d eviceScaleFactor", window.devicePixelRatio);
928 this.settings.deviceTextAutosizing = WebInspector.settings.createSetting ("deviceTextAutosizing", true); 879 this.settings.deviceTextAutosizing = WebInspector.settings.createSetting ("deviceTextAutosizing", true);
929 this.settings.deviceFitWindow = WebInspector.settings.createSetting("dev iceFitWindow", true); 880 this.settings.deviceFitWindow = WebInspector.settings.createSetting("dev iceFitWindow", true);
930 // FIXME: rename viewport to mobile everywhere in the code. 881 // FIXME: rename viewport to mobile everywhere in the code.
931 this.settings.emulateViewport = WebInspector.settings.createSetting("emu lateViewport", false); 882 this.settings.emulateViewport = WebInspector.settings.createSetting("emu lateViewport", false);
932 this.settings.deviceTouch = WebInspector.settings.createSetting("deviceT ouch", false); 883
933 this.settings.deviceUserAgent = WebInspector.settings.createSetting("dev iceUserAgent", false); 884 this.settings.emulateTouch = WebInspector.settings.createSetting("emulat eTouch", false);
934 885
935 this.settings.overrideGeolocation = WebInspector.settings.createSetting( "overrideGeolocation", false); 886 this.settings.overrideGeolocation = WebInspector.settings.createSetting( "overrideGeolocation", false);
936 this.settings.geolocationOverride = WebInspector.settings.createSetting( "geolocationOverride", ""); 887 this.settings.geolocationOverride = WebInspector.settings.createSetting( "geolocationOverride", "");
888
937 this.settings.overrideDeviceOrientation = WebInspector.settings.createSe tting("overrideDeviceOrientation", false); 889 this.settings.overrideDeviceOrientation = WebInspector.settings.createSe tting("overrideDeviceOrientation", false);
938 this.settings.deviceOrientationOverride = WebInspector.settings.createSe tting("deviceOrientationOverride", ""); 890 this.settings.deviceOrientationOverride = WebInspector.settings.createSe tting("deviceOrientationOverride", "");
891
939 this.settings.overrideCSSMedia = WebInspector.settings.createSetting("ov errideCSSMedia", false); 892 this.settings.overrideCSSMedia = WebInspector.settings.createSetting("ov errideCSSMedia", false);
940 this.settings.emulatedCSSMedia = WebInspector.settings.createSetting("em ulatedCSSMedia", "print"); 893 this.settings.emulatedCSSMedia = WebInspector.settings.createSetting("em ulatedCSSMedia", "print");
941 this.settings.sensorsTouch = WebInspector.settings.createSetting("sensor sTouch", false);
942 894
943 this.settings.emulateNetworkConditions = WebInspector.settings.createSet ting("emulateNetworkConditions", false);
944 this.settings.networkConditionsDomains = WebInspector.settings.createSet ting("networkConditionsDomains", ""); 895 this.settings.networkConditionsDomains = WebInspector.settings.createSet ting("networkConditionsDomains", "");
945 this.settings.networkConditionsThroughput = WebInspector.settings.create Setting("networkConditionsThroughput", 0); 896 this.settings.networkConditionsThroughput = WebInspector.settings.create Setting("networkConditionsThroughput", WebInspector.OverridesSupport._networkThr oughputUnlimitedValue);
946 897
947 this.maybeHasActiveOverridesChanged(); 898 this.maybeHasActiveOverridesChanged();
948 899
949 if (this._applyInitialOverridesOnTargetAdded) { 900 if (this._applyInitialOverridesOnTargetAdded) {
950 delete this._applyInitialOverridesOnTargetAdded; 901 delete this._applyInitialOverridesOnTargetAdded;
951 this.applyInitialOverrides(); 902 this.applyInitialOverrides();
952 } 903 }
953 }, 904 },
954 905
955 swapDimensions: function() 906 swapDimensions: function()
(...skipping 16 matching lines...) Expand all
972 * @return {boolean} 923 * @return {boolean}
973 */ 924 */
974 isInspectingDevice: function() 925 isInspectingDevice: function()
975 { 926 {
976 return !!this._target && this._target.isMobile(); 927 return !!this._target && this._target.isMobile();
977 }, 928 },
978 929
979 /** 930 /**
980 * @return {boolean} 931 * @return {boolean}
981 */ 932 */
982 isEmulateDeviceEnabled: function()
983 {
984 return this.settings.emulateDevice.get() && this._responsiveDesignEnable dOrUnavailable();
985 },
986
987 /**
988 * @return {boolean}
989 */
990 isTouchEmulationEnabled: function()
991 {
992 return !this.hasTouchInputs() && ((this.isEmulateDeviceEnabled() && this .settings.deviceTouch.get()) || this.settings.sensorsTouch.get());
993 },
994
995 /**
996 * @return {string}
997 */
998 userAgentOverride: function()
999 {
1000 return this.isEmulateDeviceEnabled() ? this.settings.deviceUserAgent.get () : (this.settings.overrideUserAgent.get() ? this.settings.userAgent.get() : "" );
1001 },
1002
1003 /**
1004 * @return {boolean}
1005 */
1006 hasTouchInputs: function() 933 hasTouchInputs: function()
1007 { 934 {
1008 return !!this._target && this._target.hasTouchInputs; 935 return !!this._target && this._target.hasTouchInputs;
1009 }, 936 },
1010 937
1011 updateSensorsTouchToMatchDeviceTouch: function() 938 /**
939 * @return {boolean}
940 */
941 networkThroughputIsLimited: function()
1012 { 942 {
1013 var enabled = this.isEmulateDeviceEnabled() && this.settings.deviceTouch .get(); 943 return this.settings.networkConditionsThroughput.get() !== WebInspector. OverridesSupport._networkThroughputUnlimitedValue;
1014 if (this.settings.sensorsTouch.get() !== enabled)
1015 this.settings.sensorsTouch.set(enabled);
1016 },
1017
1018 updateUserAgentToMatchDeviceUserAgent: function()
1019 {
1020 var userAgent = this.settings.deviceUserAgent.get();
1021 if (this.isEmulateDeviceEnabled() && userAgent && this.settings.userAgen t.get() !== userAgent)
1022 this.settings.userAgent.set(userAgent);
1023 var enabled = this.isEmulateDeviceEnabled() && !!this.settings.deviceUse rAgent.get();
1024 if (this.settings.overrideUserAgent.get() !== enabled)
1025 this.settings.overrideUserAgent.set(enabled);
1026 }, 944 },
1027 945
1028 /** 946 /**
1029 * Compute the font scale factor. 947 * Compute the font scale factor.
1030 * 948 *
1031 * Chromium on Android uses a device scale adjustment for fonts used in text autosizing for 949 * Chromium on Android uses a device scale adjustment for fonts used in text autosizing for
1032 * improved legibility. This function computes this adjusted value for text autosizing. 950 * improved legibility. This function computes this adjusted value for text autosizing.
1033 * 951 *
1034 * For a description of the Android device scale adjustment algorithm, see: 952 * For a description of the Android device scale adjustment algorithm, see:
1035 * chrome/browser/chrome_content_browser_client.cc, GetFontScaleMultipli er(...) 953 * chrome/browser/chrome_content_browser_client.cc, GetFontScaleMultipli er(...)
1036 * 954 *
1037 * @param {number} width 955 * @param {number} width
1038 * @param {number} height 956 * @param {number} height
1039 * @return {number} font scale factor. 957 * @return {number} font scale factor.
1040 */ 958 */
1041 _fontScaleFactor: function(width, height) 959 _fontScaleFactor: function(width, height)
1042 { 960 {
1043 if (!this.settings.emulateDevice.get()) 961 if (!this.settings.emulationEnabled.get())
1044 return 1; 962 return 1;
1045 if (!width && !height) 963 var deviceScaleFactor = this.settings.deviceScaleFactor.get();
964
965 if (!width || !height || !deviceScaleFactor)
1046 return 1; 966 return 1;
1047 967
1048 var deviceScaleFactor = this.settings.deviceScaleFactor.get();
1049
1050 var minWidth = Math.min(width, height) / deviceScaleFactor; 968 var minWidth = Math.min(width, height) / deviceScaleFactor;
1051 969
1052 var kMinFSM = 1.05; 970 var kMinFSM = 1.05;
1053 var kWidthForMinFSM = 320; 971 var kWidthForMinFSM = 320;
1054 var kMaxFSM = 1.3; 972 var kMaxFSM = 1.3;
1055 var kWidthForMaxFSM = 800; 973 var kWidthForMaxFSM = 800;
1056 974
1057 if (minWidth <= kWidthForMinFSM) 975 if (minWidth <= kWidthForMinFSM)
1058 return kMinFSM; 976 return kMinFSM;
1059 if (minWidth >= kWidthForMaxFSM) 977 if (minWidth >= kWidthForMaxFSM)
(...skipping 26 matching lines...) Expand all
1086 } 1004 }
1087 1005
1088 deviceSelectElement.addEventListener("change", deviceSelected, false); 1006 deviceSelectElement.addEventListener("change", deviceSelected, false);
1089 1007
1090 var emulatedSettingChangedMuted = false; 1008 var emulatedSettingChangedMuted = false;
1091 WebInspector.overridesSupport.settings.deviceWidth.addChangeListener(emu latedSettingChanged); 1009 WebInspector.overridesSupport.settings.deviceWidth.addChangeListener(emu latedSettingChanged);
1092 WebInspector.overridesSupport.settings.deviceHeight.addChangeListener(em ulatedSettingChanged); 1010 WebInspector.overridesSupport.settings.deviceHeight.addChangeListener(em ulatedSettingChanged);
1093 WebInspector.overridesSupport.settings.deviceScaleFactor.addChangeListen er(emulatedSettingChanged); 1011 WebInspector.overridesSupport.settings.deviceScaleFactor.addChangeListen er(emulatedSettingChanged);
1094 WebInspector.overridesSupport.settings.deviceTextAutosizing.addChangeLis tener(emulatedSettingChanged); 1012 WebInspector.overridesSupport.settings.deviceTextAutosizing.addChangeLis tener(emulatedSettingChanged);
1095 WebInspector.overridesSupport.settings.emulateViewport.addChangeListener (emulatedSettingChanged); 1013 WebInspector.overridesSupport.settings.emulateViewport.addChangeListener (emulatedSettingChanged);
1096 WebInspector.overridesSupport.settings.deviceFitWindow.addChangeListener (emulatedSettingChanged); 1014 WebInspector.overridesSupport.settings.emulateTouch.addChangeListener(em ulatedSettingChanged);
1097 WebInspector.overridesSupport.settings.deviceTouch.addChangeListener(emu latedSettingChanged); 1015 WebInspector.overridesSupport.settings.userAgent.addChangeListener(emula tedSettingChanged);
1098 WebInspector.overridesSupport.settings.deviceUserAgent.addChangeListener (emulatedSettingChanged);
1099 emulatedSettingChanged(); 1016 emulatedSettingChanged();
1100 1017
1101 function deviceSelected() 1018 function deviceSelected()
1102 { 1019 {
1103 if (deviceSelectElement.selectedIndex === devices.length - 1) 1020 if (deviceSelectElement.selectedIndex === devices.length - 1)
1104 return; 1021 return;
1105 1022
1106 var option = deviceSelectElement.options[deviceSelectElement.selecte dIndex]; 1023 var option = deviceSelectElement.options[deviceSelectElement.selecte dIndex];
1107 emulatedSettingChangedMuted = true; 1024 emulatedSettingChangedMuted = true;
1108 WebInspector.overridesSupport.emulateDevice(option.device); 1025 WebInspector.overridesSupport.emulateDevice(option.device);
(...skipping 19 matching lines...) Expand all
1128 return deviceSelectElement; 1045 return deviceSelectElement;
1129 }, 1046 },
1130 1047
1131 /** 1048 /**
1132 * @param {!Document} document 1049 * @param {!Document} document
1133 * @return {!Element} 1050 * @return {!Element}
1134 */ 1051 */
1135 createNetworkThroughputSelect: function(document) 1052 createNetworkThroughputSelect: function(document)
1136 { 1053 {
1137 var throughputSetting = WebInspector.overridesSupport.settings.networkCo nditionsThroughput; 1054 var throughputSetting = WebInspector.overridesSupport.settings.networkCo nditionsThroughput;
1138 var emulateNetworkSetting = WebInspector.overridesSupport.settings.emula teNetworkConditions;
1139 var throughputSelectElement = document.createElement("select"); 1055 var throughputSelectElement = document.createElement("select");
1140 var presets = WebInspector.OverridesSupport._networkThroughputPresets; 1056 var presets = WebInspector.OverridesSupport._networkThroughputPresets;
1141 for (var i = 0; i < presets.length; ++i) 1057 for (var i = 0; i < presets.length; ++i)
1142 throughputSelectElement.add(new Option(presets[i][0], presets[i][1]) ); 1058 throughputSelectElement.add(new Option(presets[i][0], presets[i][1]) );
1143 throughputSelectElement.selectedIndex = 0;
1144 1059
1145 settingChanged(); 1060 settingChanged();
1146 throughputSetting.addChangeListener(settingChanged); 1061 throughputSetting.addChangeListener(settingChanged);
1147 throughputSelectElement.addEventListener("change", throughputSelected, f alse); 1062 throughputSelectElement.addEventListener("change", throughputSelected, f alse);
1148 1063
1149 function throughputSelected() 1064 function throughputSelected()
1150 { 1065 {
1151 var value = Number(throughputSelectElement.options[throughputSelectE lement.selectedIndex].value); 1066 var value = Number(throughputSelectElement.options[throughputSelectE lement.selectedIndex].value);
1152 throughputSetting.removeChangeListener(settingChanged); 1067 throughputSetting.removeChangeListener(settingChanged);
1153 throughputSetting.set(value); 1068 throughputSetting.set(value);
1154 throughputSetting.addChangeListener(settingChanged); 1069 throughputSetting.addChangeListener(settingChanged);
1155 emulateNetworkSetting.set(true);
1156 } 1070 }
1157 1071
1158 function settingChanged() 1072 function settingChanged()
1159 { 1073 {
1160 var value = String(throughputSetting.get()); 1074 var value = String(throughputSetting.get());
1161 var options = throughputSelectElement.options; 1075 var options = throughputSelectElement.options;
1162 var selectionRestored = false; 1076 var selectionRestored = false;
1163 for (var i = 0; i < options.length; ++i) { 1077 for (var i = 0; i < options.length; ++i) {
1164 if (options[i].value === value) { 1078 if (options[i].value === value) {
1165 throughputSelectElement.selectedIndex = i; 1079 throughputSelectElement.selectedIndex = i;
1166 selectionRestored = true; 1080 selectionRestored = true;
1167 break; 1081 break;
1168 } 1082 }
1169 } 1083 }
1170 if (!selectionRestored) 1084 if (!selectionRestored)
1171 throughputSelectElement.selectedIndex = options.length - 1; 1085 throughputSelectElement.selectedIndex = options.length - 1;
1172 } 1086 }
1173 1087
1174 return throughputSelectElement; 1088 return throughputSelectElement;
1175 }, 1089 },
1176 1090
1177 __proto__: WebInspector.Object.prototype 1091 __proto__: WebInspector.Object.prototype
1178 } 1092 }
1179 1093
1180 1094
1181 /** 1095 /**
1182 * @type {!WebInspector.OverridesSupport} 1096 * @type {!WebInspector.OverridesSupport}
1183 */ 1097 */
1184 WebInspector.overridesSupport; 1098 WebInspector.overridesSupport;
OLDNEW
« no previous file with comments | « Source/devtools/front_end/responsiveDesignView.css ('k') | Source/devtools/front_end/ui/SettingsUI.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698