| 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 24 matching lines...) Expand all Loading... |
| 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 this._initialized = false; |
| 45 this._deviceMetricsThrottler = new WebInspector.Throttler(0); |
| 45 WebInspector.targetManager.observeTargets(this); | 46 WebInspector.targetManager.observeTargets(this); |
| 46 this._responsiveDesignAvailable = responsiveDesignAvailable; | 47 this._responsiveDesignAvailable = responsiveDesignAvailable; |
| 47 } | 48 } |
| 48 | 49 |
| 49 WebInspector.OverridesSupport.Events = { | 50 WebInspector.OverridesSupport.Events = { |
| 50 OverridesWarningUpdated: "OverridesWarningUpdated", | 51 OverridesWarningUpdated: "OverridesWarningUpdated", |
| 51 HasActiveOverridesChanged: "HasActiveOverridesChanged", | 52 HasActiveOverridesChanged: "HasActiveOverridesChanged", |
| 52 } | 53 } |
| 53 | 54 |
| 54 /** | 55 /** |
| (...skipping 561 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 616 _deviceMetricsChanged: function() | 617 _deviceMetricsChanged: function() |
| 617 { | 618 { |
| 618 this._showRulersChanged(); | 619 this._showRulersChanged(); |
| 619 | 620 |
| 620 if (this._deviceMetricsChangedListenerMuted) | 621 if (this._deviceMetricsChangedListenerMuted) |
| 621 return; | 622 return; |
| 622 var responsiveDesignAvailableAndDisabled = this._responsiveDesignAvailab
le && (!WebInspector.settings.responsiveDesign.enabled.get() || !this._pageResiz
er); | 623 var responsiveDesignAvailableAndDisabled = this._responsiveDesignAvailab
le && (!WebInspector.settings.responsiveDesign.enabled.get() || !this._pageResiz
er); |
| 623 var overrideDeviceResolution = this.settings.overrideDeviceResolution.ge
t(); | 624 var overrideDeviceResolution = this.settings.overrideDeviceResolution.ge
t(); |
| 624 var emulationEnabled = overrideDeviceResolution || this.settings.emulate
Viewport.get(); | 625 var emulationEnabled = overrideDeviceResolution || this.settings.emulate
Viewport.get(); |
| 625 if (responsiveDesignAvailableAndDisabled || !emulationEnabled) { | 626 if (responsiveDesignAvailableAndDisabled || !emulationEnabled) { |
| 626 PageAgent.clearDeviceMetricsOverride(apiCallback.bind(this)); | 627 this._deviceMetricsThrottler.schedule(clearDeviceMetricsOverride.bin
d(this)); |
| 627 if (this._pageResizer && !emulationEnabled) | 628 if (this._pageResizer && !emulationEnabled) |
| 628 this._pageResizer.update(0, 0, 0); | 629 this._pageResizer.update(0, 0, 0); |
| 629 this.maybeHasActiveOverridesChanged(); | |
| 630 return; | 630 return; |
| 631 } | 631 } |
| 632 | 632 |
| 633 var dipWidth = overrideDeviceResolution ? this.settings.deviceWidth.get(
) : 0; | 633 var dipWidth = overrideDeviceResolution ? this.settings.deviceWidth.get(
) : 0; |
| 634 var dipHeight = overrideDeviceResolution ? this.settings.deviceHeight.ge
t() : 0; | 634 var dipHeight = overrideDeviceResolution ? this.settings.deviceHeight.ge
t() : 0; |
| 635 | 635 |
| 636 // Disable override without checks. | 636 // Disable override without checks. |
| 637 if (this.isInspectingDevice()) | 637 if (this.isInspectingDevice()) |
| 638 return; | 638 return; |
| 639 | 639 |
| 640 var overrideWidth = dipWidth; | 640 var overrideWidth = dipWidth; |
| 641 var overrideHeight = dipHeight; | 641 var overrideHeight = dipHeight; |
| 642 if (this._pageResizer) { | 642 if (this._pageResizer) { |
| 643 var available = this._pageResizer.availableDipSize(); | 643 var available = this._pageResizer.availableDipSize(); |
| 644 if (available.width >= dipWidth && available.height >= dipHeight) { | 644 if (available.width >= dipWidth && available.height >= dipHeight) { |
| 645 this._pageResizer.update(dipWidth, dipHeight, 0); | 645 this._pageResizer.update(dipWidth, dipHeight, 0); |
| 646 // When we have enough space, no page size override is required.
This will speed things up and remove lag. | 646 // When we have enough space, no page size override is required.
This will speed things up and remove lag. |
| 647 overrideWidth = 0; | 647 overrideWidth = 0; |
| 648 overrideHeight = 0; | 648 overrideHeight = 0; |
| 649 } else { | 649 } else { |
| 650 this._pageResizer.update(Math.min(dipWidth, available.width), Ma
th.min(dipHeight, available.height), 0); | 650 this._pageResizer.update(Math.min(dipWidth, available.width), Ma
th.min(dipHeight, available.height), 0); |
| 651 } | 651 } |
| 652 } | 652 } |
| 653 | 653 |
| 654 // Do not emulate resolution more often than 10Hz. | 654 this._deviceMetricsThrottler.schedule(setDeviceMetricsOverride.bind(this
)); |
| 655 this._setDeviceMetricsTimers = (this._setDeviceMetricsTimers || 0) + 1; | |
| 656 if (overrideWidth || overrideHeight) | |
| 657 setTimeout(setDeviceMetricsOverride.bind(this), 100); | |
| 658 else | |
| 659 setDeviceMetricsOverride.call(this); | |
| 660 | 655 |
| 661 /** | 656 /** |
| 657 * @param {!WebInspector.Throttler.FinishCallback} finishCallback |
| 662 * @this {WebInspector.OverridesSupport} | 658 * @this {WebInspector.OverridesSupport} |
| 663 */ | 659 */ |
| 664 function setDeviceMetricsOverride() | 660 function setDeviceMetricsOverride(finishCallback) |
| 665 { | 661 { |
| 666 // Drop heavy intermediate commands. | |
| 667 this._setDeviceMetricsTimers--; | |
| 668 var isExpensive = overrideWidth || overrideHeight; | |
| 669 if (isExpensive && this._setDeviceMetricsTimers) { | |
| 670 var commandThreshold = 100; | |
| 671 var time = window.performance.now(); | |
| 672 if (time - this._lastExpensivePageAgentCommandTime < commandThre
shold) | |
| 673 return; | |
| 674 this._lastExpensivePageAgentCommandTime = time; | |
| 675 } | |
| 676 | |
| 677 PageAgent.setDeviceMetricsOverride( | 662 PageAgent.setDeviceMetricsOverride( |
| 678 overrideWidth, overrideHeight, this.settings.deviceScaleFactor.g
et(), | 663 overrideWidth, overrideHeight, this.settings.deviceScaleFactor.g
et(), |
| 679 this.settings.emulateViewport.get(), this._pageResizer ? false :
this.settings.deviceFitWindow.get(), | 664 this.settings.emulateViewport.get(), this._pageResizer ? false :
this.settings.deviceFitWindow.get(), |
| 680 this.settings.deviceTextAutosizing.get(), this._fontScaleFactor(
overrideWidth || dipWidth, overrideHeight || dipHeight), | 665 this.settings.deviceTextAutosizing.get(), this._fontScaleFactor(
overrideWidth || dipWidth, overrideHeight || dipHeight), |
| 681 apiCallback.bind(this)); | 666 apiCallback.bind(this, finishCallback)); |
| 682 } | 667 } |
| 683 | 668 |
| 684 this.maybeHasActiveOverridesChanged(); | 669 /** |
| 670 * @param {!WebInspector.Throttler.FinishCallback} finishCallback |
| 671 * @this {WebInspector.OverridesSupport} |
| 672 */ |
| 673 function clearDeviceMetricsOverride(finishCallback) |
| 674 { |
| 675 PageAgent.clearDeviceMetricsOverride(apiCallback.bind(this, finishCa
llback)); |
| 676 } |
| 685 | 677 |
| 686 /** | 678 /** |
| 679 * @param {!WebInspector.Throttler.FinishCallback} finishCallback |
| 687 * @param {?Protocol.Error} error | 680 * @param {?Protocol.Error} error |
| 688 * @this {WebInspector.OverridesSupport} | 681 * @this {WebInspector.OverridesSupport} |
| 689 */ | 682 */ |
| 690 function apiCallback(error) | 683 function apiCallback(finishCallback, error) |
| 691 { | 684 { |
| 692 if (error) { | 685 if (error) { |
| 693 this._updateDeviceMetricsWarningMessage(WebInspector.UIString("S
creen emulation is not available on this page.")); | 686 this._updateDeviceMetricsWarningMessage(WebInspector.UIString("S
creen emulation is not available on this page.")); |
| 694 this._deviceMetricsOverrideAppliedForTest(); | 687 this._deviceMetricsOverrideAppliedForTest(); |
| 688 finishCallback(); |
| 695 return; | 689 return; |
| 696 } | 690 } |
| 697 | 691 |
| 698 var overrideDeviceResolution = this.settings.overrideDeviceResolutio
n.get(); | 692 var overrideDeviceResolution = this.settings.overrideDeviceResolutio
n.get(); |
| 699 var viewportEnabled = this.settings.emulateViewport.get(); | 693 var viewportEnabled = this.settings.emulateViewport.get(); |
| 700 if (this._overrideDeviceResolution !== overrideDeviceResolution || t
his._emulateViewportEnabled !== viewportEnabled) | 694 if (this._overrideDeviceResolution !== overrideDeviceResolution || t
his._emulateViewportEnabled !== viewportEnabled) |
| 701 this._updateDeviceMetricsWarningMessage(WebInspector.UIString("Y
ou might need to reload the page for proper user agent spoofing and viewport ren
dering.")); | 695 this._updateDeviceMetricsWarningMessage(WebInspector.UIString("Y
ou might need to reload the page for proper user agent spoofing and viewport ren
dering.")); |
| 702 this._overrideDeviceResolution = overrideDeviceResolution; | 696 this._overrideDeviceResolution = overrideDeviceResolution; |
| 703 this._emulateViewportEnabled = viewportEnabled; | 697 this._emulateViewportEnabled = viewportEnabled; |
| 704 this._deviceMetricsOverrideAppliedForTest(); | 698 this._deviceMetricsOverrideAppliedForTest(); |
| 699 this.maybeHasActiveOverridesChanged(); |
| 700 finishCallback(); |
| 705 } | 701 } |
| 706 }, | 702 }, |
| 707 | 703 |
| 708 _deviceMetricsOverrideAppliedForTest: function() | 704 _deviceMetricsOverrideAppliedForTest: function() |
| 709 { | 705 { |
| 710 // Used for sniffing in tests. | 706 // Used for sniffing in tests. |
| 711 }, | 707 }, |
| 712 | 708 |
| 713 _geolocationPositionChanged: function() | 709 _geolocationPositionChanged: function() |
| 714 { | 710 { |
| (...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1089 }, | 1085 }, |
| 1090 | 1086 |
| 1091 __proto__: WebInspector.Object.prototype | 1087 __proto__: WebInspector.Object.prototype |
| 1092 } | 1088 } |
| 1093 | 1089 |
| 1094 | 1090 |
| 1095 /** | 1091 /** |
| 1096 * @type {!WebInspector.OverridesSupport} | 1092 * @type {!WebInspector.OverridesSupport} |
| 1097 */ | 1093 */ |
| 1098 WebInspector.overridesSupport; | 1094 WebInspector.overridesSupport; |
| OLD | NEW |