OLD | NEW |
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 23 matching lines...) Expand all Loading... |
34 * @extends {WebInspector.Object} | 34 * @extends {WebInspector.Object} |
35 * @param {boolean} responsiveDesignAvailable | 35 * @param {boolean} responsiveDesignAvailable |
36 */ | 36 */ |
37 WebInspector.OverridesSupport = function(responsiveDesignAvailable) | 37 WebInspector.OverridesSupport = function(responsiveDesignAvailable) |
38 { | 38 { |
39 WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeMod
el.EventTypes.MainFrameNavigated, this._onMainFrameNavigated.bind(this), this); | 39 WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeMod
el.EventTypes.MainFrameNavigated, this._onMainFrameNavigated.bind(this), this); |
40 this._overrideDeviceResolution = false; | 40 this._overrideDeviceResolution = false; |
41 this._emulateViewportEnabled = false; | 41 this._emulateViewportEnabled = false; |
42 this._userAgent = ""; | 42 this._userAgent = ""; |
43 this._pageResizer = null; | 43 this._pageResizer = null; |
| 44 this._initialized = false; |
44 WebInspector.targetManager.observeTargets(this); | 45 WebInspector.targetManager.observeTargets(this); |
45 this._responsiveDesignAvailable = responsiveDesignAvailable; | 46 this._responsiveDesignAvailable = responsiveDesignAvailable; |
46 } | 47 } |
47 | 48 |
48 WebInspector.OverridesSupport.Events = { | 49 WebInspector.OverridesSupport.Events = { |
49 OverridesWarningUpdated: "OverridesWarningUpdated", | 50 OverridesWarningUpdated: "OverridesWarningUpdated", |
50 HasActiveOverridesChanged: "HasActiveOverridesChanged", | 51 HasActiveOverridesChanged: "HasActiveOverridesChanged", |
51 } | 52 } |
52 | 53 |
53 /** | 54 /** |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
419 | 420 |
420 if (this._pageResizer) { | 421 if (this._pageResizer) { |
421 this._pageResizer.removeEventListener(WebInspector.OverridesSupport.
PageResizer.Events.AvailableSizeChanged, this._onPageResizerAvailableSizeChanged
, this); | 422 this._pageResizer.removeEventListener(WebInspector.OverridesSupport.
PageResizer.Events.AvailableSizeChanged, this._onPageResizerAvailableSizeChanged
, this); |
422 this._pageResizer.removeEventListener(WebInspector.OverridesSupport.
PageResizer.Events.ResizeRequested, this._onPageResizerResizeRequested, this); | 423 this._pageResizer.removeEventListener(WebInspector.OverridesSupport.
PageResizer.Events.ResizeRequested, this._onPageResizerResizeRequested, this); |
423 } | 424 } |
424 this._pageResizer = pageResizer; | 425 this._pageResizer = pageResizer; |
425 if (this._pageResizer) { | 426 if (this._pageResizer) { |
426 this._pageResizer.addEventListener(WebInspector.OverridesSupport.Pag
eResizer.Events.AvailableSizeChanged, this._onPageResizerAvailableSizeChanged, t
his); | 427 this._pageResizer.addEventListener(WebInspector.OverridesSupport.Pag
eResizer.Events.AvailableSizeChanged, this._onPageResizerAvailableSizeChanged, t
his); |
427 this._pageResizer.addEventListener(WebInspector.OverridesSupport.Pag
eResizer.Events.ResizeRequested, this._onPageResizerResizeRequested, this); | 428 this._pageResizer.addEventListener(WebInspector.OverridesSupport.Pag
eResizer.Events.ResizeRequested, this._onPageResizerResizeRequested, this); |
428 } | 429 } |
429 this._deviceMetricsChanged(); | 430 if (this._initialized) |
| 431 this._deviceMetricsChanged(); |
430 }, | 432 }, |
431 | 433 |
432 /** | 434 /** |
433 * @param {string} deviceMetrics | 435 * @param {string} deviceMetrics |
434 * @param {string} userAgent | 436 * @param {string} userAgent |
435 */ | 437 */ |
436 emulateDevice: function(deviceMetrics, userAgent) | 438 emulateDevice: function(deviceMetrics, userAgent) |
437 { | 439 { |
438 var metrics = WebInspector.OverridesSupport.DeviceMetrics.parseSetting(d
eviceMetrics); | 440 var metrics = WebInspector.OverridesSupport.DeviceMetrics.parseSetting(d
eviceMetrics); |
439 this._deviceMetricsChangedListenerMuted = true; | 441 this._deviceMetricsChangedListenerMuted = true; |
440 this._userAgentChangedListenerMuted = true; | 442 this._userAgentChangedListenerMuted = true; |
441 this.settings.userAgent.set(userAgent); | 443 this.settings.userAgent.set(userAgent); |
442 this.settings.overrideDeviceResolution.set(true); | 444 this.settings.overrideDeviceResolution.set(true); |
443 this.settings.deviceWidth.set(metrics.width); | 445 this.settings.deviceWidth.set(metrics.width); |
444 this.settings.deviceHeight.set(metrics.height); | 446 this.settings.deviceHeight.set(metrics.height); |
445 this.settings.deviceScaleFactor.set(metrics.deviceScaleFactor); | 447 this.settings.deviceScaleFactor.set(metrics.deviceScaleFactor); |
446 this.settings.deviceTextAutosizing.set(metrics.textAutosizing); | 448 this.settings.deviceTextAutosizing.set(metrics.textAutosizing); |
447 this.settings.overrideUserAgent.set(true); | 449 this.settings.overrideUserAgent.set(true); |
448 this.settings.emulateTouchEvents.set(true); | 450 this.settings.emulateTouchEvents.set(true); |
449 this.settings.emulateViewport.set(true); | 451 this.settings.emulateViewport.set(true); |
450 delete this._deviceMetricsChangedListenerMuted; | 452 delete this._deviceMetricsChangedListenerMuted; |
451 delete this._userAgentChangedListenerMuted; | 453 delete this._userAgentChangedListenerMuted; |
452 this._deviceMetricsChanged(); | 454 |
453 this._userAgentChanged(); | 455 if (this._initialized) { |
| 456 this._deviceMetricsChanged(); |
| 457 this._userAgentChanged(); |
| 458 } |
454 }, | 459 }, |
455 | 460 |
456 resetEmulatedDevice: function() | 461 resetEmulatedDevice: function() |
457 { | 462 { |
458 this._deviceMetricsChangedListenerMuted = true; | 463 this._deviceMetricsChangedListenerMuted = true; |
459 this._userAgentChangedListenerMuted = true; | 464 this._userAgentChangedListenerMuted = true; |
460 this.settings.overrideDeviceResolution.set(false); | 465 this.settings.overrideDeviceResolution.set(false); |
461 this.settings.overrideUserAgent.set(false); | 466 this.settings.overrideUserAgent.set(false); |
462 this.settings.emulateTouchEvents.set(false); | 467 this.settings.emulateTouchEvents.set(false); |
463 this.settings.emulateViewport.set(false); | 468 this.settings.emulateViewport.set(false); |
464 delete this._deviceMetricsChangedListenerMuted; | 469 delete this._deviceMetricsChangedListenerMuted; |
465 delete this._userAgentChangedListenerMuted; | 470 delete this._userAgentChangedListenerMuted; |
466 this._deviceMetricsChanged(); | 471 |
467 this._userAgentChanged(); | 472 if (this._initialized) { |
| 473 this._deviceMetricsChanged(); |
| 474 this._userAgentChanged(); |
| 475 } |
468 }, | 476 }, |
469 | 477 |
470 reset: function() | 478 reset: function() |
471 { | 479 { |
472 this.settings.overrideDeviceOrientation.set(false); | 480 this.settings.overrideDeviceOrientation.set(false); |
473 this.settings.overrideGeolocation.set(false); | 481 this.settings.overrideGeolocation.set(false); |
474 this.settings.overrideCSSMedia.set(false); | 482 this.settings.overrideCSSMedia.set(false); |
475 this.resetEmulatedDevice(); | 483 this.resetEmulatedDevice(); |
476 }, | 484 }, |
477 | 485 |
478 applyInitialOverrides: function() | 486 applyInitialOverrides: function() |
479 { | 487 { |
480 if (!this._target) { | 488 if (!this._target) { |
481 this._applyInitialOverridesOnTargetAdded = true; | 489 this._applyInitialOverridesOnTargetAdded = true; |
482 return; | 490 return; |
483 } | 491 } |
484 | 492 |
| 493 this._initialized = true; |
| 494 |
| 495 this.settings.overrideUserAgent.addChangeListener(this._userAgentChanged
, this); |
| 496 this.settings.userAgent.addChangeListener(this._userAgentChanged, this); |
| 497 |
| 498 this.settings.overrideDeviceResolution.addChangeListener(this._deviceMet
ricsChanged, this); |
| 499 this.settings.deviceWidth.addChangeListener(this._deviceMetricsChanged,
this); |
| 500 this.settings.deviceHeight.addChangeListener(this._deviceMetricsChanged,
this); |
| 501 this.settings.deviceScaleFactor.addChangeListener(this._deviceMetricsCha
nged, this); |
| 502 this.settings.deviceTextAutosizing.addChangeListener(this._deviceMetrics
Changed, this); |
| 503 this.settings.emulateViewport.addChangeListener(this._deviceMetricsChang
ed, this); |
| 504 this.settings.deviceFitWindow.addChangeListener(this._deviceMetricsChang
ed, this); |
| 505 WebInspector.settings.responsiveDesignMode.addChangeListener(this._devic
eMetricsChanged, this); |
| 506 |
| 507 this.settings.overrideGeolocation.addChangeListener(this._geolocationPos
itionChanged, this); |
| 508 this.settings.geolocationOverride.addChangeListener(this._geolocationPos
itionChanged, this); |
| 509 |
| 510 this.settings.overrideDeviceOrientation.addChangeListener(this._deviceOr
ientationChanged, this); |
| 511 this.settings.deviceOrientationOverride.addChangeListener(this._deviceOr
ientationChanged, this); |
| 512 |
| 513 this.settings.emulateTouchEvents.addChangeListener(this._emulateTouchEve
ntsChanged, this); |
| 514 |
| 515 this.settings.overrideCSSMedia.addChangeListener(this._cssMediaChanged,
this); |
| 516 this.settings.emulatedCSSMedia.addChangeListener(this._cssMediaChanged,
this); |
| 517 |
| 518 WebInspector.settings.showMetricsRulers.addChangeListener(this._showRule
rsChanged, this); |
| 519 |
485 if (this.settings.overrideDeviceOrientation.get()) | 520 if (this.settings.overrideDeviceOrientation.get()) |
486 this._deviceOrientationChanged(); | 521 this._deviceOrientationChanged(); |
487 | 522 |
488 if (this.settings.overrideGeolocation.get()) | 523 if (this.settings.overrideGeolocation.get()) |
489 this._geolocationPositionChanged(); | 524 this._geolocationPositionChanged(); |
490 | 525 |
491 if (this.settings.emulateTouchEvents.get()) | 526 if (this.settings.emulateTouchEvents.get()) |
492 this._emulateTouchEventsChanged(); | 527 this._emulateTouchEventsChanged(); |
493 | 528 |
494 if (this.settings.overrideCSSMedia.get()) | 529 if (this.settings.overrideCSSMedia.get()) |
(...skipping 15 matching lines...) Expand all Loading... |
510 var userAgent = this.settings.overrideUserAgent.get() ? this.settings.us
erAgent.get() : ""; | 545 var userAgent = this.settings.overrideUserAgent.get() ? this.settings.us
erAgent.get() : ""; |
511 NetworkAgent.setUserAgentOverride(userAgent); | 546 NetworkAgent.setUserAgentOverride(userAgent); |
512 if (this._userAgent !== userAgent) | 547 if (this._userAgent !== userAgent) |
513 this._updateUserAgentWarningMessage(WebInspector.UIString("You might
need to reload the page for proper user agent spoofing and viewport rendering."
)); | 548 this._updateUserAgentWarningMessage(WebInspector.UIString("You might
need to reload the page for proper user agent spoofing and viewport rendering."
)); |
514 this._userAgent = userAgent; | 549 this._userAgent = userAgent; |
515 this.maybeHasActiveOverridesChanged(); | 550 this.maybeHasActiveOverridesChanged(); |
516 }, | 551 }, |
517 | 552 |
518 _onPageResizerAvailableSizeChanged: function() | 553 _onPageResizerAvailableSizeChanged: function() |
519 { | 554 { |
520 this._deviceMetricsChanged(); | 555 if (this._initialized) |
| 556 this._deviceMetricsChanged(); |
521 }, | 557 }, |
522 | 558 |
523 _onPageResizerResizeRequested: function(event) | 559 _onPageResizerResizeRequested: function(event) |
524 { | 560 { |
525 var size = /** @type {!Size} */ (event.data); | 561 var size = /** @type {!Size} */ (event.data); |
526 if (size.width !== this.settings.deviceWidth.get()) | 562 if (size.width !== this.settings.deviceWidth.get()) |
527 this.settings.deviceWidth.set(size.width); | 563 this.settings.deviceWidth.set(size.width); |
528 if (size.height !== this.settings.deviceHeight.get()) | 564 if (size.height !== this.settings.deviceHeight.get()) |
529 this.settings.deviceHeight.set(size.height); | 565 this.settings.deviceHeight.set(size.height); |
530 }, | 566 }, |
531 | 567 |
532 _deviceMetricsChanged: function() | 568 _deviceMetricsChanged: function() |
533 { | 569 { |
534 this._showRulersChanged(); | 570 this._showRulersChanged(); |
535 | 571 |
536 if (this._deviceMetricsChangedListenerMuted) | 572 if (this._deviceMetricsChangedListenerMuted) |
537 return; | 573 return; |
538 var responsiveDesignAvailableAndDisabled = this._responsiveDesignAvailab
le && !WebInspector.settings.responsiveDesignMode.get(); | 574 var responsiveDesignAvailableAndDisabled = this._responsiveDesignAvailab
le && (!WebInspector.settings.responsiveDesignMode.get() || !this._pageResizer); |
539 var overrideDeviceResolution = this.settings.overrideDeviceResolution.ge
t(); | 575 var overrideDeviceResolution = this.settings.overrideDeviceResolution.ge
t(); |
540 if (responsiveDesignAvailableAndDisabled || (!overrideDeviceResolution &
& !this.settings.emulateViewport.get())) { | 576 var emulationEnabled = overrideDeviceResolution || this.settings.emulate
Viewport.get(); |
| 577 if (responsiveDesignAvailableAndDisabled || !emulationEnabled) { |
541 PageAgent.clearDeviceMetricsOverride(apiCallback.bind(this)); | 578 PageAgent.clearDeviceMetricsOverride(apiCallback.bind(this)); |
542 if (this._pageResizer) | 579 if (this._pageResizer && !emulationEnabled) |
543 this._pageResizer.update(0, 0, 0); | 580 this._pageResizer.update(0, 0, 0); |
544 this.maybeHasActiveOverridesChanged(); | 581 this.maybeHasActiveOverridesChanged(); |
545 return; | 582 return; |
546 } | 583 } |
547 | 584 |
548 var dipWidth = overrideDeviceResolution ? this.settings.deviceWidth.get(
) : 0; | 585 var dipWidth = overrideDeviceResolution ? this.settings.deviceWidth.get(
) : 0; |
549 var dipHeight = overrideDeviceResolution ? this.settings.deviceHeight.ge
t() : 0; | 586 var dipHeight = overrideDeviceResolution ? this.settings.deviceHeight.ge
t() : 0; |
550 | 587 |
551 // Disable override without checks. | 588 // Disable override without checks. |
552 if (this.isInspectingDevice()) | 589 if (this.isInspectingDevice()) |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
709 (this.settings.emulateTouchEvents.get() && !this.hasTouchInputs()) |
| | 746 (this.settings.emulateTouchEvents.get() && !this.hasTouchInputs()) |
| |
710 (this.settings.overrideCSSMedia.get() && !this.isInspectingDevice())
; | 747 (this.settings.overrideCSSMedia.get() && !this.isInspectingDevice())
; |
711 if (this._hasActiveOverrides !== hasActiveOverrides) { | 748 if (this._hasActiveOverrides !== hasActiveOverrides) { |
712 this._hasActiveOverrides = hasActiveOverrides; | 749 this._hasActiveOverrides = hasActiveOverrides; |
713 this.dispatchEventToListeners(WebInspector.OverridesSupport.Events.H
asActiveOverridesChanged); | 750 this.dispatchEventToListeners(WebInspector.OverridesSupport.Events.H
asActiveOverridesChanged); |
714 } | 751 } |
715 }, | 752 }, |
716 | 753 |
717 _onMainFrameNavigated: function() | 754 _onMainFrameNavigated: function() |
718 { | 755 { |
719 this._deviceMetricsChanged(); | 756 if (this._initialized) |
| 757 this._deviceMetricsChanged(); |
720 this._updateUserAgentWarningMessage(""); | 758 this._updateUserAgentWarningMessage(""); |
721 this._updateDeviceMetricsWarningMessage(""); | 759 this._updateDeviceMetricsWarningMessage(""); |
722 }, | 760 }, |
723 | 761 |
724 /** | 762 /** |
725 * @param {string} warningMessage | 763 * @param {string} warningMessage |
726 */ | 764 */ |
727 _updateDeviceMetricsWarningMessage: function(warningMessage) | 765 _updateDeviceMetricsWarningMessage: function(warningMessage) |
728 { | 766 { |
729 this._deviceMetricsWarningMessage = warningMessage; | 767 this._deviceMetricsWarningMessage = warningMessage; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
773 this.settings.overrideGeolocation = WebInspector.settings.createSetting(
"overrideGeolocation", false); | 811 this.settings.overrideGeolocation = WebInspector.settings.createSetting(
"overrideGeolocation", false); |
774 this.settings.geolocationOverride = WebInspector.settings.createSetting(
"geolocationOverride", ""); | 812 this.settings.geolocationOverride = WebInspector.settings.createSetting(
"geolocationOverride", ""); |
775 this.settings.overrideDeviceOrientation = WebInspector.settings.createSe
tting("overrideDeviceOrientation", false); | 813 this.settings.overrideDeviceOrientation = WebInspector.settings.createSe
tting("overrideDeviceOrientation", false); |
776 this.settings.deviceOrientationOverride = WebInspector.settings.createSe
tting("deviceOrientationOverride", ""); | 814 this.settings.deviceOrientationOverride = WebInspector.settings.createSe
tting("deviceOrientationOverride", ""); |
777 this.settings.overrideCSSMedia = WebInspector.settings.createSetting("ov
errideCSSMedia", false); | 815 this.settings.overrideCSSMedia = WebInspector.settings.createSetting("ov
errideCSSMedia", false); |
778 this.settings.emulatedCSSMedia = WebInspector.settings.createSetting("em
ulatedCSSMedia", "print"); | 816 this.settings.emulatedCSSMedia = WebInspector.settings.createSetting("em
ulatedCSSMedia", "print"); |
779 this.settings.emulatedDevice = WebInspector.settings.createSetting("emul
atedDevice", "Google Nexus 5"); | 817 this.settings.emulatedDevice = WebInspector.settings.createSetting("emul
atedDevice", "Google Nexus 5"); |
780 | 818 |
781 this.maybeHasActiveOverridesChanged(); | 819 this.maybeHasActiveOverridesChanged(); |
782 | 820 |
783 this.settings.overrideUserAgent.addChangeListener(this._userAgentChanged
, this); | |
784 this.settings.userAgent.addChangeListener(this._userAgentChanged, this); | |
785 | |
786 this.settings.overrideDeviceResolution.addChangeListener(this._deviceMet
ricsChanged, this); | |
787 this.settings.deviceWidth.addChangeListener(this._deviceMetricsChanged,
this); | |
788 this.settings.deviceHeight.addChangeListener(this._deviceMetricsChanged,
this); | |
789 this.settings.deviceScaleFactor.addChangeListener(this._deviceMetricsCha
nged, this); | |
790 this.settings.deviceTextAutosizing.addChangeListener(this._deviceMetrics
Changed, this); | |
791 this.settings.emulateViewport.addChangeListener(this._deviceMetricsChang
ed, this); | |
792 this.settings.deviceFitWindow.addChangeListener(this._deviceMetricsChang
ed, this); | |
793 | |
794 this.settings.overrideGeolocation.addChangeListener(this._geolocationPos
itionChanged, this); | |
795 this.settings.geolocationOverride.addChangeListener(this._geolocationPos
itionChanged, this); | |
796 | |
797 this.settings.overrideDeviceOrientation.addChangeListener(this._deviceOr
ientationChanged, this); | |
798 this.settings.deviceOrientationOverride.addChangeListener(this._deviceOr
ientationChanged, this); | |
799 | |
800 this.settings.emulateTouchEvents.addChangeListener(this._emulateTouchEve
ntsChanged, this); | |
801 | |
802 this.settings.overrideCSSMedia.addChangeListener(this._cssMediaChanged,
this); | |
803 this.settings.emulatedCSSMedia.addChangeListener(this._cssMediaChanged,
this); | |
804 | |
805 WebInspector.settings.showMetricsRulers.addChangeListener(this._showRule
rsChanged, this); | |
806 | |
807 if (this._applyInitialOverridesOnTargetAdded) { | 821 if (this._applyInitialOverridesOnTargetAdded) { |
808 delete this._applyInitialOverridesOnTargetAdded; | 822 delete this._applyInitialOverridesOnTargetAdded; |
809 this.applyInitialOverrides(); | 823 this.applyInitialOverrides(); |
810 } | 824 } |
811 }, | 825 }, |
812 | 826 |
813 swapDimensions: function() | 827 swapDimensions: function() |
814 { | 828 { |
815 var width = WebInspector.overridesSupport.settings.deviceWidth.get(); | 829 var width = WebInspector.overridesSupport.settings.deviceWidth.get(); |
816 var height = WebInspector.overridesSupport.settings.deviceHeight.get(); | 830 var height = WebInspector.overridesSupport.settings.deviceHeight.get(); |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
932 }, | 946 }, |
933 | 947 |
934 __proto__: WebInspector.Object.prototype | 948 __proto__: WebInspector.Object.prototype |
935 } | 949 } |
936 | 950 |
937 | 951 |
938 /** | 952 /** |
939 * @type {!WebInspector.OverridesSupport} | 953 * @type {!WebInspector.OverridesSupport} |
940 */ | 954 */ |
941 WebInspector.overridesSupport; | 955 WebInspector.overridesSupport; |
OLD | NEW |