OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 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 16 matching lines...) Expand all Loading... |
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 */ | 29 */ |
30 | 30 |
31 /** | 31 /** |
32 * @unrestricted | 32 * @unrestricted |
33 */ | 33 */ |
34 SDK.NetworkManager = class extends SDK.SDKModel { | 34 SDK.NetworkManager = class extends SDK.SDKModel { |
35 /** | 35 /** |
36 * @param {!SDK.Target} target | 36 * @param {!SDK.Target} target |
| 37 * @param {!Protocol.Dispatcher} dispatcher |
37 */ | 38 */ |
38 constructor(target) { | 39 constructor(target, dispatcher) { |
39 super(target); | 40 super(target, dispatcher); |
40 this._dispatcher = new SDK.NetworkDispatcher(this); | 41 this._dispatcher = new SDK.NetworkDispatcher(this); |
41 this._networkAgent = target.networkAgent(); | 42 this._networkAgent = dispatcher.networkAgent(); |
42 target.registerNetworkDispatcher(this._dispatcher); | 43 dispatcher.registerNetworkDispatcher(this._dispatcher); |
43 if (Common.moduleSetting('cacheDisabled').get()) | 44 if (Common.moduleSetting('cacheDisabled').get()) |
44 this._networkAgent.setCacheDisabled(true); | 45 this._networkAgent.setCacheDisabled(true); |
45 | 46 |
46 // Limit buffer when talking to a remote device. | 47 // Limit buffer when talking to a remote device. |
47 if (Runtime.queryParam('remoteFrontend') || Runtime.queryParam('ws')) | 48 if (Runtime.queryParam('remoteFrontend') || Runtime.queryParam('ws')) |
48 this._networkAgent.enable(10000000, 5000000); | 49 this._networkAgent.enable(10000000, 5000000); |
49 else | 50 else |
50 this._networkAgent.enable(); | 51 this._networkAgent.enable(); |
51 | 52 |
52 this._bypassServiceWorkerSetting = Common.settings.createSetting('bypassServ
iceWorker', false); | 53 this._bypassServiceWorkerSetting = Common.settings.createSetting('bypassServ
iceWorker', false); |
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
450 this._finishNetworkRequest(networkRequest, time, -1); | 451 this._finishNetworkRequest(networkRequest, time, -1); |
451 } | 452 } |
452 | 453 |
453 /** | 454 /** |
454 * @override | 455 * @override |
455 * @param {!Protocol.Network.RequestId} requestId | 456 * @param {!Protocol.Network.RequestId} requestId |
456 * @param {string} requestURL | 457 * @param {string} requestURL |
457 * @param {!Protocol.Network.Initiator=} initiator | 458 * @param {!Protocol.Network.Initiator=} initiator |
458 */ | 459 */ |
459 webSocketCreated(requestId, requestURL, initiator) { | 460 webSocketCreated(requestId, requestURL, initiator) { |
460 var networkRequest = new SDK.NetworkRequest(this._manager, requestId, reques
tURL, '', '', '', initiator || null); | 461 var networkRequest = new SDK.NetworkRequest( |
| 462 this._manager, this._manager._networkAgent, requestId, requestURL, '', '
', '', initiator || null); |
461 networkRequest.setResourceType(Common.resourceTypes.WebSocket); | 463 networkRequest.setResourceType(Common.resourceTypes.WebSocket); |
462 this._startNetworkRequest(networkRequest); | 464 this._startNetworkRequest(networkRequest); |
463 } | 465 } |
464 | 466 |
465 /** | 467 /** |
466 * @override | 468 * @override |
467 * @param {!Protocol.Network.RequestId} requestId | 469 * @param {!Protocol.Network.RequestId} requestId |
468 * @param {!Protocol.Network.Timestamp} time | 470 * @param {!Protocol.Network.Timestamp} time |
469 * @param {!Protocol.Network.Timestamp} wallTime | 471 * @param {!Protocol.Network.Timestamp} wallTime |
470 * @param {!Protocol.Network.WebSocketRequest} request | 472 * @param {!Protocol.Network.WebSocketRequest} request |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
649 | 651 |
650 /** | 652 /** |
651 * @param {!Protocol.Network.RequestId} requestId | 653 * @param {!Protocol.Network.RequestId} requestId |
652 * @param {string} frameId | 654 * @param {string} frameId |
653 * @param {!Protocol.Network.LoaderId} loaderId | 655 * @param {!Protocol.Network.LoaderId} loaderId |
654 * @param {string} url | 656 * @param {string} url |
655 * @param {string} documentURL | 657 * @param {string} documentURL |
656 * @param {?Protocol.Network.Initiator} initiator | 658 * @param {?Protocol.Network.Initiator} initiator |
657 */ | 659 */ |
658 _createNetworkRequest(requestId, frameId, loaderId, url, documentURL, initiato
r) { | 660 _createNetworkRequest(requestId, frameId, loaderId, url, documentURL, initiato
r) { |
659 return new SDK.NetworkRequest(this._manager, requestId, url, documentURL, fr
ameId, loaderId, initiator); | 661 return new SDK.NetworkRequest( |
| 662 this._manager, this._manager._networkAgent, requestId, url, documentURL,
frameId, loaderId, initiator); |
660 } | 663 } |
661 }; | 664 }; |
662 | 665 |
663 /** | 666 /** |
664 * @implements {SDK.TargetManager.Observer} | 667 * @implements {SDK.SDKModelObserver<!SDK.NetworkManager>} |
665 * @unrestricted | 668 * @unrestricted |
666 */ | 669 */ |
667 SDK.MultitargetNetworkManager = class extends Common.Object { | 670 SDK.MultitargetNetworkManager = class extends Common.Object { |
668 constructor() { | 671 constructor() { |
669 super(); | 672 super(); |
670 this._userAgentOverride = ''; | 673 this._userAgentOverride = ''; |
671 /** @type {!Set<!Protocol.NetworkAgent>} */ | |
672 this._agents = new Set(); | |
673 /** @type {!SDK.NetworkManager.Conditions} */ | 674 /** @type {!SDK.NetworkManager.Conditions} */ |
674 this._networkConditions = SDK.NetworkManager.NoThrottlingConditions; | 675 this._networkConditions = SDK.NetworkManager.NoThrottlingConditions; |
675 | 676 |
676 this._blockingEnabledSetting = Common.moduleSetting('requestBlockingEnabled'
); | 677 this._blockingEnabledSetting = Common.moduleSetting('requestBlockingEnabled'
); |
677 this._blockedPatternsSetting = Common.settings.createSetting('networkBlocked
Patterns', []); | 678 this._blockedPatternsSetting = Common.settings.createSetting('networkBlocked
Patterns', []); |
678 this._effectiveBlockedURLs = []; | 679 this._effectiveBlockedURLs = []; |
679 this._updateBlockedPatterns(); | 680 this._updateBlockedPatterns(); |
680 | 681 |
681 SDK.targetManager.observeTargets(this, SDK.Target.Capability.Network); | 682 SDK.targetManager.observeModels(SDK.NetworkManager, this); |
682 } | 683 } |
683 | 684 |
684 /** | 685 /** |
685 * @param {string} uaString | 686 * @param {string} uaString |
686 * @return {string} | 687 * @return {string} |
687 */ | 688 */ |
688 static patchUserAgentWithChromeVersion(uaString) { | 689 static patchUserAgentWithChromeVersion(uaString) { |
689 // Patches Chrome/CriOS version from user agent ("1.2.3.4" when user agent i
s: "Chrome/1.2.3.4"). | 690 // Patches Chrome/CriOS version from user agent ("1.2.3.4" when user agent i
s: "Chrome/1.2.3.4"). |
690 var chromeRegex = new RegExp('(?:^|\\W)Chrome/(\\S+)'); | 691 var chromeRegex = new RegExp('(?:^|\\W)Chrome/(\\S+)'); |
691 var chromeMatch = navigator.userAgent.match(chromeRegex); | 692 var chromeMatch = navigator.userAgent.match(chromeRegex); |
692 if (chromeMatch && chromeMatch.length > 1) | 693 if (chromeMatch && chromeMatch.length > 1) |
693 return String.sprintf(uaString, chromeMatch[1]); | 694 return String.sprintf(uaString, chromeMatch[1]); |
694 return uaString; | 695 return uaString; |
695 } | 696 } |
696 | 697 |
697 /** | 698 /** |
698 * @override | 699 * @override |
699 * @param {!SDK.Target} target | 700 * @param {!SDK.NetworkManager} networkManager |
700 */ | 701 */ |
701 targetAdded(target) { | 702 modelAdded(networkManager) { |
702 var networkAgent = target.networkAgent(); | 703 var networkAgent = networkManager._networkAgent; |
703 if (this._extraHeaders) | 704 if (this._extraHeaders) |
704 networkAgent.setExtraHTTPHeaders(this._extraHeaders); | 705 networkAgent.setExtraHTTPHeaders(this._extraHeaders); |
705 if (this._currentUserAgent()) | 706 if (this._currentUserAgent()) |
706 networkAgent.setUserAgentOverride(this._currentUserAgent()); | 707 networkAgent.setUserAgentOverride(this._currentUserAgent()); |
707 if (this._effectiveBlockedURLs.length) | 708 if (this._effectiveBlockedURLs.length) |
708 networkAgent.setBlockedURLs(this._effectiveBlockedURLs); | 709 networkAgent.setBlockedURLs(this._effectiveBlockedURLs); |
709 this._agents.add(networkAgent); | |
710 if (this.isThrottling()) | 710 if (this.isThrottling()) |
711 this._updateNetworkConditions(networkAgent); | 711 this._updateNetworkConditions(networkManager); |
712 } | 712 } |
713 | 713 |
714 /** | 714 /** |
715 * @override | 715 * @override |
716 * @param {!SDK.Target} target | 716 * @param {!SDK.NetworkManager} networkManager |
717 */ | 717 */ |
718 targetRemoved(target) { | 718 modelRemoved(networkManager) { |
719 this._agents.delete(target.networkAgent()); | |
720 } | 719 } |
721 | 720 |
722 /** | 721 /** |
723 * @return {boolean} | 722 * @return {boolean} |
724 */ | 723 */ |
725 isThrottling() { | 724 isThrottling() { |
726 return this._networkConditions.download >= 0 || this._networkConditions.uplo
ad >= 0 || | 725 return this._networkConditions.download >= 0 || this._networkConditions.uplo
ad >= 0 || |
727 this._networkConditions.latency > 0; | 726 this._networkConditions.latency > 0; |
728 } | 727 } |
729 | 728 |
730 /** | 729 /** |
731 * @return {boolean} | 730 * @return {boolean} |
732 */ | 731 */ |
733 isOffline() { | 732 isOffline() { |
734 return !this._networkConditions.download && !this._networkConditions.upload; | 733 return !this._networkConditions.download && !this._networkConditions.upload; |
735 } | 734 } |
736 | 735 |
737 /** | 736 /** |
738 * @param {!SDK.NetworkManager.Conditions} conditions | 737 * @param {!SDK.NetworkManager.Conditions} conditions |
739 */ | 738 */ |
740 setNetworkConditions(conditions) { | 739 setNetworkConditions(conditions) { |
741 this._networkConditions = conditions; | 740 this._networkConditions = conditions; |
742 for (var agent of this._agents) | 741 for (var networkManager of SDK.targetManager.models(SDK.NetworkManager)) |
743 this._updateNetworkConditions(agent); | 742 this._updateNetworkConditions(networkManager); |
744 this.dispatchEventToListeners(SDK.MultitargetNetworkManager.Events.Condition
sChanged); | 743 this.dispatchEventToListeners(SDK.MultitargetNetworkManager.Events.Condition
sChanged); |
745 } | 744 } |
746 | 745 |
747 /** | 746 /** |
748 * @return {!SDK.NetworkManager.Conditions} | 747 * @return {!SDK.NetworkManager.Conditions} |
749 */ | 748 */ |
750 networkConditions() { | 749 networkConditions() { |
751 return this._networkConditions; | 750 return this._networkConditions; |
752 } | 751 } |
753 | 752 |
754 /** | 753 /** |
755 * @param {!Protocol.NetworkAgent} networkAgent | 754 * @param {!SDK.NetworkManager} networkManager |
756 */ | 755 */ |
757 _updateNetworkConditions(networkAgent) { | 756 _updateNetworkConditions(networkManager) { |
758 var conditions = this._networkConditions; | 757 var conditions = this._networkConditions; |
759 if (!this.isThrottling()) { | 758 if (!this.isThrottling()) { |
760 networkAgent.emulateNetworkConditions(false, 0, 0, 0); | 759 networkManager._networkAgent.emulateNetworkConditions(false, 0, 0, 0); |
761 } else { | 760 } else { |
762 networkAgent.emulateNetworkConditions( | 761 networkManager._networkAgent.emulateNetworkConditions( |
763 this.isOffline(), conditions.latency, conditions.download < 0 ? 0 : co
nditions.download, | 762 this.isOffline(), conditions.latency, conditions.download < 0 ? 0 : co
nditions.download, |
764 conditions.upload < 0 ? 0 : conditions.upload, SDK.NetworkManager._con
nectionType(conditions)); | 763 conditions.upload < 0 ? 0 : conditions.upload, SDK.NetworkManager._con
nectionType(conditions)); |
765 } | 764 } |
766 } | 765 } |
767 | 766 |
768 /** | 767 /** |
769 * @param {!Protocol.Network.Headers} headers | 768 * @param {!Protocol.Network.Headers} headers |
770 */ | 769 */ |
771 setExtraHTTPHeaders(headers) { | 770 setExtraHTTPHeaders(headers) { |
772 this._extraHeaders = headers; | 771 this._extraHeaders = headers; |
773 for (var agent of this._agents) | 772 for (var networkManager of SDK.targetManager.models(SDK.NetworkManager)) |
774 agent.setExtraHTTPHeaders(this._extraHeaders); | 773 networkManager._networkAgent.setExtraHTTPHeaders(this._extraHeaders); |
775 } | 774 } |
776 | 775 |
777 /** | 776 /** |
778 * @return {string} | 777 * @return {string} |
779 */ | 778 */ |
780 _currentUserAgent() { | 779 _currentUserAgent() { |
781 return this._customUserAgent ? this._customUserAgent : this._userAgentOverri
de; | 780 return this._customUserAgent ? this._customUserAgent : this._userAgentOverri
de; |
782 } | 781 } |
783 | 782 |
784 _updateUserAgentOverride() { | 783 _updateUserAgentOverride() { |
785 var userAgent = this._currentUserAgent(); | 784 var userAgent = this._currentUserAgent(); |
786 Host.ResourceLoader.targetUserAgent = userAgent; | 785 Host.ResourceLoader.targetUserAgent = userAgent; |
787 for (var agent of this._agents) | 786 for (var networkManager of SDK.targetManager.models(SDK.NetworkManager)) |
788 agent.setUserAgentOverride(userAgent); | 787 networkManager._networkAgent.setUserAgentOverride(userAgent); |
789 } | 788 } |
790 | 789 |
791 /** | 790 /** |
792 * @param {string} userAgent | 791 * @param {string} userAgent |
793 */ | 792 */ |
794 setUserAgentOverride(userAgent) { | 793 setUserAgentOverride(userAgent) { |
795 if (this._userAgentOverride === userAgent) | 794 if (this._userAgentOverride === userAgent) |
796 return; | 795 return; |
797 this._userAgentOverride = userAgent; | 796 this._userAgentOverride = userAgent; |
798 if (!this._customUserAgent) | 797 if (!this._customUserAgent) |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
861 if (this._blockingEnabledSetting.get()) { | 860 if (this._blockingEnabledSetting.get()) { |
862 for (var pattern of this._blockedPatternsSetting.get()) { | 861 for (var pattern of this._blockedPatternsSetting.get()) { |
863 if (pattern.enabled) | 862 if (pattern.enabled) |
864 urls.push(pattern.url); | 863 urls.push(pattern.url); |
865 } | 864 } |
866 } | 865 } |
867 | 866 |
868 if (!urls.length && !this._effectiveBlockedURLs.length) | 867 if (!urls.length && !this._effectiveBlockedURLs.length) |
869 return; | 868 return; |
870 this._effectiveBlockedURLs = urls; | 869 this._effectiveBlockedURLs = urls; |
871 for (var agent of this._agents) | 870 for (var networkManager of SDK.targetManager.models(SDK.NetworkManager)) |
872 agent.setBlockedURLs(this._effectiveBlockedURLs); | 871 networkManager._networkAgent.setBlockedURLs(this._effectiveBlockedURLs); |
873 } | 872 } |
874 | 873 |
875 clearBrowserCache() { | 874 clearBrowserCache() { |
876 for (var agent of this._agents) | 875 for (var networkManager of SDK.targetManager.models(SDK.NetworkManager)) |
877 agent.clearBrowserCache(); | 876 networkManager._networkAgent.clearBrowserCache(); |
878 } | 877 } |
879 | 878 |
880 clearBrowserCookies() { | 879 clearBrowserCookies() { |
881 for (var agent of this._agents) | 880 for (var networkManager of SDK.targetManager.models(SDK.NetworkManager)) |
882 agent.clearBrowserCookies(); | 881 networkManager._networkAgent.clearBrowserCookies(); |
883 } | 882 } |
884 | 883 |
885 /** | 884 /** |
886 * @param {string} origin | 885 * @param {string} origin |
887 * @param {function(!Array<string>)} callback | 886 * @param {function(!Array<string>)} callback |
888 */ | 887 */ |
889 getCertificate(origin, callback) { | 888 getCertificate(origin, callback) { |
890 var target = SDK.targetManager.mainTarget(); | 889 var networkManager = SDK.targetManager.models(SDK.NetworkManager)[0]; |
891 target.networkAgent().getCertificate(origin, mycallback); | 890 if (networkManager) |
892 | 891 networkManager._networkAgent.getCertificate(origin, (error, certificate) =
> callback(error ? [] : certificate)); |
893 /** | 892 else |
894 * @param {?Protocol.Error} error | 893 callback([]); |
895 * @param {!Array<string>} certificate | |
896 */ | |
897 function mycallback(error, certificate) { | |
898 callback(error ? [] : certificate); | |
899 } | |
900 } | 894 } |
901 | 895 |
902 /** | 896 /** |
903 * @param {string} url | 897 * @param {string} url |
904 * @param {function(number, !Object.<string, string>, string)} callback | 898 * @param {function(number, !Object.<string, string>, string)} callback |
905 */ | 899 */ |
906 loadResource(url, callback) { | 900 loadResource(url, callback) { |
907 var headers = {}; | 901 var headers = {}; |
908 | 902 |
909 var currentUserAgent = this._currentUserAgent(); | 903 var currentUserAgent = this._currentUserAgent(); |
(...skipping 11 matching lines...) Expand all Loading... |
921 SDK.MultitargetNetworkManager.Events = { | 915 SDK.MultitargetNetworkManager.Events = { |
922 BlockedPatternsChanged: Symbol('BlockedPatternsChanged'), | 916 BlockedPatternsChanged: Symbol('BlockedPatternsChanged'), |
923 ConditionsChanged: Symbol('ConditionsChanged'), | 917 ConditionsChanged: Symbol('ConditionsChanged'), |
924 UserAgentChanged: Symbol('UserAgentChanged') | 918 UserAgentChanged: Symbol('UserAgentChanged') |
925 }; | 919 }; |
926 | 920 |
927 /** | 921 /** |
928 * @type {!SDK.MultitargetNetworkManager} | 922 * @type {!SDK.MultitargetNetworkManager} |
929 */ | 923 */ |
930 SDK.multitargetNetworkManager; | 924 SDK.multitargetNetworkManager; |
OLD | NEW |