diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-02-13 15:05:36 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-02-14 10:33:47 +0000 |
commit | e684a3455bcc29a6e3e66a004e352dea4e1141e7 (patch) | |
tree | d55b4003bde34d7d05f558f02cfd82b2a66a7aac /chromium/third_party/blink/renderer/devtools/front_end/sdk/Connections.js | |
parent | 2b94bfe47ccb6c08047959d1c26e392919550e86 (diff) | |
download | qtwebengine-chromium-e684a3455bcc29a6e3e66a004e352dea4e1141e7.tar.gz |
BASELINE: Update Chromium to 72.0.3626.110 and Ninja to 1.9.0
Change-Id: Ic57220b00ecc929a893c91f5cc552f5d3e99e922
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/third_party/blink/renderer/devtools/front_end/sdk/Connections.js')
-rw-r--r-- | chromium/third_party/blink/renderer/devtools/front_end/sdk/Connections.js | 187 |
1 files changed, 117 insertions, 70 deletions
diff --git a/chromium/third_party/blink/renderer/devtools/front_end/sdk/Connections.js b/chromium/third_party/blink/renderer/devtools/front_end/sdk/Connections.js index 112423b791f..7bd231e8c56 100644 --- a/chromium/third_party/blink/renderer/devtools/front_end/sdk/Connections.js +++ b/chromium/third_party/blink/renderer/devtools/front_end/sdk/Connections.js @@ -3,17 +3,14 @@ // found in the LICENSE file. /** - * @unrestricted + * @implements {Protocol.Connection} */ -SDK.MainConnection = class extends Protocol.InspectorBackend.Connection { - /** - * @param {!Protocol.InspectorBackend.Connection.Params} params - */ - constructor(params) { - super(); - this._onMessage = params.onMessage; - this._onDisconnect = params.onDisconnect; - this._disconnected = false; +SDK.MainConnection = class { + constructor() { + this._onMessage = null; + this._onDisconnect = null; + this._messageBuffer = ''; + this._messageSize = 0; this._eventListeners = [ InspectorFrontendHost.events.addEventListener( InspectorFrontendHostAPI.Events.DispatchMessage, this._dispatchMessage, this), @@ -24,10 +21,26 @@ SDK.MainConnection = class extends Protocol.InspectorBackend.Connection { /** * @override + * @param {function((!Object|string))} onMessage + */ + setOnMessage(onMessage) { + this._onMessage = onMessage; + } + + /** + * @override + * @param {function(string)} onDisconnect + */ + setOnDisconnect(onDisconnect) { + this._onDisconnect = onDisconnect; + } + + /** + * @override * @param {string} message */ sendRawMessage(message) { - if (!this._disconnected) + if (this._onMessage) InspectorFrontendHost.sendMessageToBackend(message); } @@ -35,7 +48,8 @@ SDK.MainConnection = class extends Protocol.InspectorBackend.Connection { * @param {!Common.Event} event */ _dispatchMessage(event) { - this._onMessage.call(null, /** @type {string} */ (event.data)); + if (this._onMessage) + this._onMessage.call(null, /** @type {string} */ (event.data)); } /** @@ -65,12 +79,12 @@ SDK.MainConnection = class extends Protocol.InspectorBackend.Connection { Common.EventTarget.removeEventListeners(this._eventListeners); this._onDisconnect = null; this._onMessage = null; - this._disconnected = true; let fulfill; const promise = new Promise(f => fulfill = f); InspectorFrontendHost.reattach(() => { - onDisconnect.call(null, 'force disconnect'); + if (onDisconnect) + onDisconnect.call(null, 'force disconnect'); fulfill(); }); return promise; @@ -78,28 +92,46 @@ SDK.MainConnection = class extends Protocol.InspectorBackend.Connection { }; /** - * @unrestricted + * @implements {Protocol.Connection} */ -SDK.WebSocketConnection = class extends Protocol.InspectorBackend.Connection { +SDK.WebSocketConnection = class { /** * @param {string} url * @param {function()} onWebSocketDisconnect - * @param {!Protocol.InspectorBackend.Connection.Params} params */ - constructor(url, onWebSocketDisconnect, params) { - super(); + constructor(url, onWebSocketDisconnect) { this._socket = new WebSocket(url); this._socket.onerror = this._onError.bind(this); this._socket.onopen = this._onOpen.bind(this); - this._socket.onmessage = messageEvent => params.onMessage.call(null, /** @type {string} */ (messageEvent.data)); + this._socket.onmessage = messageEvent => { + if (this._onMessage) + this._onMessage.call(null, /** @type {string} */ (messageEvent.data)); + }; this._socket.onclose = this._onClose.bind(this); - this._onDisconnect = params.onDisconnect; + this._onMessage = null; + this._onDisconnect = null; this._onWebSocketDisconnect = onWebSocketDisconnect; this._connected = false; this._messages = []; } + /** + * @override + * @param {function((!Object|string))} onMessage + */ + setOnMessage(onMessage) { + this._onMessage = onMessage; + } + + /** + * @override + * @param {function(string)} onDisconnect + */ + setOnDisconnect(onDisconnect) { + this._onDisconnect = onDisconnect; + } + _onError() { this._onWebSocketDisconnect.call(null); // This is called if error occurred while connecting. @@ -153,7 +185,8 @@ SDK.WebSocketConnection = class extends Protocol.InspectorBackend.Connection { let fulfill; const promise = new Promise(f => fulfill = f); this._close(() => { - this._onDisconnect.call(null, 'force disconnect'); + if (this._onDisconnect) + this._onDisconnect.call(null, 'force disconnect'); fulfill(); }); return promise; @@ -161,16 +194,28 @@ SDK.WebSocketConnection = class extends Protocol.InspectorBackend.Connection { }; /** - * @unrestricted + * @implements {Protocol.Connection} */ -SDK.StubConnection = class extends Protocol.InspectorBackend.Connection { +SDK.StubConnection = class { + constructor() { + this._onMessage = null; + this._onDisconnect = null; + } + /** - * @param {!Protocol.InspectorBackend.Connection.Params} params + * @override + * @param {function((!Object|string))} onMessage */ - constructor(params) { - super(); - this._onMessage = params.onMessage; - this._onDisconnect = params.onDisconnect; + setOnMessage(onMessage) { + this._onMessage = onMessage; + } + + /** + * @override + * @param {function(string)} onDisconnect + */ + setOnDisconnect(onDisconnect) { + this._onDisconnect = onDisconnect; } /** @@ -188,10 +233,11 @@ SDK.StubConnection = class extends Protocol.InspectorBackend.Connection { const messageObject = JSON.parse(message); const error = { message: 'This is a stub connection, can\'t dispatch message.', - code: Protocol.InspectorBackend.DevToolsStubErrorCode, + code: Protocol.DevToolsStubErrorCode, data: messageObject }; - this._onMessage.call(null, {id: messageObject.id, error: error}); + if (this._onMessage) + this._onMessage.call(null, {id: messageObject.id, error: error}); } /** @@ -199,59 +245,60 @@ SDK.StubConnection = class extends Protocol.InspectorBackend.Connection { * @return {!Promise} */ disconnect() { - this._onDisconnect.call(null, 'force disconnect'); + if (this._onDisconnect) + this._onDisconnect.call(null, 'force disconnect'); this._onDisconnect = null; this._onMessage = null; return Promise.resolve(); } }; -SDK.ChildConnection = class extends Protocol.InspectorBackend.Connection { - /** - * @param {!Protocol.TargetAgent} agent - * @param {string} sessionId - * @param {!Protocol.InspectorBackend.Connection.Params} params - */ - constructor(agent, sessionId, params) { - super(); - this._agent = agent; - this._sessionId = sessionId; - this.onMessage = params.onMessage; - this.onDisconnect = params.onDisconnect; - } - - /** - * @override - * @param {string} message - */ - sendRawMessage(message) { - this._agent.sendMessageToTarget(message, this._sessionId); - } - - /** - * @override - * @return {!Promise} - */ - disconnect() { - throw 'Not implemented'; - } +/** + * @param {function()} createMainTarget + * @param {function()} websocketConnectionLost + */ +SDK.initMainConnection = function(createMainTarget, websocketConnectionLost) { + SDK._websocketConnectionLost = websocketConnectionLost; + SDK._createMainTarget = createMainTarget; + Protocol.Connection.setFactory(SDK._createMainConnection); + SDK._createMainTarget(); + InspectorFrontendHost.connectionReady(); }; /** - * @param {!Protocol.InspectorBackend.Connection.Params} params - * @param {function()} connectionLostCallback - * @return {!Protocol.InspectorBackend.Connection} + * @return {!Protocol.Connection} */ -SDK.createMainConnection = function(params, connectionLostCallback) { +SDK._createMainConnection = function() { const wsParam = Runtime.queryParam('ws'); const wssParam = Runtime.queryParam('wss'); - if (wsParam || wssParam) { const ws = wsParam ? `ws://${wsParam}` : `wss://${wssParam}`; - return new SDK.WebSocketConnection(ws, connectionLostCallback, params); + SDK._mainConnection = new SDK.WebSocketConnection(ws, SDK._websocketConnectionLost); + } else if (InspectorFrontendHost.isHostedMode()) { + SDK._mainConnection = new SDK.StubConnection(); + } else { + SDK._mainConnection = new SDK.MainConnection(); } + return SDK._mainConnection; +}; + +/** @type {!Protocol.Connection} */ +SDK._mainConnection; - if (InspectorFrontendHost.isHostedMode()) - return new SDK.StubConnection(params); - return new SDK.MainConnection(params); +/** @type {function()} */ +SDK._createMainTarget; + +/** @type {function()} */ +SDK._websocketConnectionLost; + +/** + * @param {function((!Object|string))} onMessage + * @return {!Promise<!Protocol.Connection>} + */ +SDK.interceptMainConnection = async function(onMessage) { + await SDK._mainConnection.disconnect(); + const connection = SDK._createMainConnection(); + connection.setOnMessage(onMessage); + connection.setOnDisconnect(SDK._createMainTarget); + return connection; }; |