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