summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/devtools/front_end/sdk
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-02-13 15:05:36 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-02-14 10:33:47 +0000
commite684a3455bcc29a6e3e66a004e352dea4e1141e7 (patch)
treed55b4003bde34d7d05f558f02cfd82b2a66a7aac /chromium/third_party/blink/renderer/devtools/front_end/sdk
parent2b94bfe47ccb6c08047959d1c26e392919550e86 (diff)
downloadqtwebengine-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')
-rw-r--r--chromium/third_party/blink/renderer/devtools/front_end/sdk/ChildTargetManager.js80
-rw-r--r--chromium/third_party/blink/renderer/devtools/front_end/sdk/Connections.js187
-rw-r--r--chromium/third_party/blink/renderer/devtools/front_end/sdk/DOMModel.js8
-rw-r--r--chromium/third_party/blink/renderer/devtools/front_end/sdk/DebuggerModel.js16
-rw-r--r--chromium/third_party/blink/renderer/devtools/front_end/sdk/HARLog.js3
-rw-r--r--chromium/third_party/blink/renderer/devtools/front_end/sdk/HeapProfilerModel.js8
-rw-r--r--chromium/third_party/blink/renderer/devtools/front_end/sdk/NetworkManager.js18
-rw-r--r--chromium/third_party/blink/renderer/devtools/front_end/sdk/NetworkRequest.js23
-rw-r--r--chromium/third_party/blink/renderer/devtools/front_end/sdk/OverlayModel.js7
-rw-r--r--chromium/third_party/blink/renderer/devtools/front_end/sdk/RuntimeModel.js6
-rw-r--r--chromium/third_party/blink/renderer/devtools/front_end/sdk/ServiceWorkerManager.js2
-rw-r--r--chromium/third_party/blink/renderer/devtools/front_end/sdk/Target.js117
-rw-r--r--chromium/third_party/blink/renderer/devtools/front_end/sdk/TargetManager.js50
-rw-r--r--chromium/third_party/blink/renderer/devtools/front_end/sdk/module.json18
14 files changed, 317 insertions, 226 deletions
diff --git a/chromium/third_party/blink/renderer/devtools/front_end/sdk/ChildTargetManager.js b/chromium/third_party/blink/renderer/devtools/front_end/sdk/ChildTargetManager.js
index 559e26aa151..2af3af65392 100644
--- a/chromium/third_party/blink/renderer/devtools/front_end/sdk/ChildTargetManager.js
+++ b/chromium/third_party/blink/renderer/devtools/front_end/sdk/ChildTargetManager.js
@@ -17,20 +17,20 @@ SDK.ChildTargetManager = class extends SDK.SDKModel {
/** @type {!Map<string, !Protocol.Target.TargetInfo>} */
this._targetInfos = new Map();
- /** @type {!Map<string, !SDK.ChildConnection>} */
- this._childConnections = new Map();
+ /** @type {!Map<string, !SDK.Target>} */
+ this._childTargets = new Map();
parentTarget.registerTargetDispatcher(this);
- this._targetAgent.invoke_setAutoAttach({autoAttach: true, waitForDebuggerOnStart: true});
+ this._targetAgent.invoke_setAutoAttach({autoAttach: true, waitForDebuggerOnStart: true, flatten: true});
- if (!parentTarget.parentTarget()) {
+ if (!parentTarget.parentTarget() && !Host.isUnderTest()) {
this._targetAgent.setDiscoverTargets(true);
this._targetAgent.setRemoteLocations([{host: 'localhost', port: 9229}]);
}
}
/**
- * @param {function({target: !SDK.Target, waitingForDebugger: boolean})=} attachCallback
+ * @param {function({target: !SDK.Target, waitingForDebugger: boolean}):!Promise=} attachCallback
*/
static install(attachCallback) {
SDK.ChildTargetManager._attachCallback = attachCallback;
@@ -42,7 +42,7 @@ SDK.ChildTargetManager = class extends SDK.SDKModel {
* @return {!Promise}
*/
suspendModel() {
- return this._targetAgent.invoke_setAutoAttach({autoAttach: true, waitForDebuggerOnStart: false});
+ return this._targetAgent.invoke_setAutoAttach({autoAttach: true, waitForDebuggerOnStart: false, flatten: true});
}
/**
@@ -50,37 +50,18 @@ SDK.ChildTargetManager = class extends SDK.SDKModel {
* @return {!Promise}
*/
resumeModel() {
- return this._targetAgent.invoke_setAutoAttach({autoAttach: true, waitForDebuggerOnStart: true});
+ return this._targetAgent.invoke_setAutoAttach({autoAttach: true, waitForDebuggerOnStart: true, flatten: true});
}
/**
* @override
*/
dispose() {
- for (const sessionId of this._childConnections.keys())
+ for (const sessionId of this._childTargets.keys())
this.detachedFromTarget(sessionId, undefined);
}
/**
- * @param {string} type
- * @return {number}
- */
- _capabilitiesForType(type) {
- if (type === 'worker') {
- return SDK.Target.Capability.JS | SDK.Target.Capability.Log | SDK.Target.Capability.Network |
- SDK.Target.Capability.Target;
- }
- if (type === 'service_worker')
- return SDK.Target.Capability.Log | SDK.Target.Capability.Network | SDK.Target.Capability.Target;
- if (type === 'iframe') {
- return SDK.Target.Capability.Browser | SDK.Target.Capability.DOM | SDK.Target.Capability.JS |
- SDK.Target.Capability.Log | SDK.Target.Capability.Network | SDK.Target.Capability.Target |
- SDK.Target.Capability.Tracing | SDK.Target.Capability.Emulation | SDK.Target.Capability.Input;
- }
- return 0;
- }
-
- /**
* @override
* @param {!Protocol.Target.TargetInfo} targetInfo
*/
@@ -134,13 +115,26 @@ SDK.ChildTargetManager = class extends SDK.SDKModel {
targetName = parsedURL ? parsedURL.lastPathComponentWithFragment() :
'#' + (++SDK.ChildTargetManager._lastAnonymousTargetId);
}
- const target = this._targetManager.createTarget(
- targetInfo.targetId, targetName, this._capabilitiesForType(targetInfo.type),
- this._createChildConnection.bind(this, this._targetAgent, sessionId), this._parentTarget, false /* isNodeJS */);
- if (SDK.ChildTargetManager._attachCallback)
- SDK.ChildTargetManager._attachCallback({target, waitingForDebugger});
- target.runtimeAgent().runIfWaitingForDebugger();
+ let type = SDK.Target.Type.Browser;
+ if (targetInfo.type === 'iframe')
+ type = SDK.Target.Type.Frame;
+ else if (targetInfo.type === 'worker')
+ type = SDK.Target.Type.Worker;
+ else if (targetInfo.type === 'service_worker')
+ type = SDK.Target.Type.ServiceWorker;
+
+ const target =
+ this._targetManager.createTarget(targetInfo.targetId, targetName, type, this._parentTarget, sessionId);
+ this._childTargets.set(sessionId, target);
+
+ if (SDK.ChildTargetManager._attachCallback) {
+ SDK.ChildTargetManager._attachCallback({target, waitingForDebugger}).then(() => {
+ target.runtimeAgent().runIfWaitingForDebugger();
+ });
+ } else {
+ target.runtimeAgent().runIfWaitingForDebugger();
+ }
}
/**
@@ -149,8 +143,8 @@ SDK.ChildTargetManager = class extends SDK.SDKModel {
* @param {string=} childTargetId
*/
detachedFromTarget(sessionId, childTargetId) {
- this._childConnections.get(sessionId).onDisconnect.call(null, 'target terminated');
- this._childConnections.delete(sessionId);
+ this._childTargets.get(sessionId).dispose('target terminated');
+ this._childTargets.delete(sessionId);
}
/**
@@ -160,21 +154,7 @@ SDK.ChildTargetManager = class extends SDK.SDKModel {
* @param {string=} childTargetId
*/
receivedMessageFromTarget(sessionId, message, childTargetId) {
- const connection = this._childConnections.get(sessionId);
- if (connection)
- connection.onMessage.call(null, message);
- }
-
- /**
- * @param {!Protocol.TargetAgent} agent
- * @param {string} sessionId
- * @param {!Protocol.InspectorBackend.Connection.Params} params
- * @return {!Protocol.InspectorBackend.Connection}
- */
- _createChildConnection(agent, sessionId, params) {
- const connection = new SDK.ChildConnection(agent, sessionId, params);
- this._childConnections.set(sessionId, connection);
- return connection;
+ // We use flatten protocol.
}
};
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;
};
diff --git a/chromium/third_party/blink/renderer/devtools/front_end/sdk/DOMModel.js b/chromium/third_party/blink/renderer/devtools/front_end/sdk/DOMModel.js
index 65be108c064..eebd73a792d 100644
--- a/chromium/third_party/blink/renderer/devtools/front_end/sdk/DOMModel.js
+++ b/chromium/third_party/blink/renderer/devtools/front_end/sdk/DOMModel.js
@@ -1594,9 +1594,11 @@ SDK.DOMModel = class extends SDK.SDKModel {
* @param {boolean} includeUserAgentShadowDOM
* @return {!Promise<?SDK.DOMNode>}
*/
- nodeForLocation(x, y, includeUserAgentShadowDOM) {
- return this._agent.getNodeForLocation(x, y, includeUserAgentShadowDOM)
- .then(nodeId => nodeId ? this.nodeForId(nodeId) : null);
+ async nodeForLocation(x, y, includeUserAgentShadowDOM) {
+ const response = await this._agent.invoke_getNodeForLocation({x, y, includeUserAgentShadowDOM});
+ if (response[Protocol.Error] || !response.nodeId)
+ return null;
+ return this.nodeForId(response.nodeId);
}
/**
diff --git a/chromium/third_party/blink/renderer/devtools/front_end/sdk/DebuggerModel.js b/chromium/third_party/blink/renderer/devtools/front_end/sdk/DebuggerModel.js
index ac6ec6fe0f9..d77ced84d19 100644
--- a/chromium/third_party/blink/renderer/devtools/front_end/sdk/DebuggerModel.js
+++ b/chromium/third_party/blink/renderer/devtools/front_end/sdk/DebuggerModel.js
@@ -136,6 +136,14 @@ SDK.DebuggerModel = class extends SDK.SDKModel {
return;
SDK.DebuggerModel._debuggerIdToModel.set(debuggerId, this);
this._debuggerId = debuggerId;
+ this.dispatchEventToListeners(SDK.DebuggerModel.Events.DebuggerIsReadyToPause, this);
+ }
+
+ /**
+ * @return {boolean}
+ */
+ isReadyToPause() {
+ return !!this._debuggerId;
}
/**
@@ -220,6 +228,9 @@ SDK.DebuggerModel = class extends SDK.SDKModel {
}
scheduleStepIntoAsync() {
+ // Node v8.x does not support breakOnAsyncCall flag but supports old style schdeuleStepIntoAsync.
+ // End-of-life of Node 8.x is around December 2019.
+ this._agent.scheduleStepIntoAsync();
this._agent.invoke_stepInto({breakOnAsyncCall: true});
}
@@ -252,7 +263,7 @@ SDK.DebuggerModel = class extends SDK.SDKModel {
async setBreakpointByURL(url, lineNumber, columnNumber, condition) {
// Convert file url to node-js path.
let urlRegex;
- if (this.target().isNodeJS()) {
+ if (this.target().type() === SDK.Target.Type.Node) {
const platformPath = Common.ParsedURL.urlToPlatformPath(url, Host.isWin());
urlRegex = `${platformPath.escapeForRegExp()}|${url.escapeForRegExp()}`;
}
@@ -929,7 +940,8 @@ SDK.DebuggerModel.Events = {
DiscardedAnonymousScriptSource: Symbol('DiscardedAnonymousScriptSource'),
GlobalObjectCleared: Symbol('GlobalObjectCleared'),
CallFrameSelected: Symbol('CallFrameSelected'),
- ConsoleCommandEvaluatedInSelectedCallFrame: Symbol('ConsoleCommandEvaluatedInSelectedCallFrame')
+ ConsoleCommandEvaluatedInSelectedCallFrame: Symbol('ConsoleCommandEvaluatedInSelectedCallFrame'),
+ DebuggerIsReadyToPause: Symbol('DebuggerIsReadyToPause'),
};
/** @enum {string} */
diff --git a/chromium/third_party/blink/renderer/devtools/front_end/sdk/HARLog.js b/chromium/third_party/blink/renderer/devtools/front_end/sdk/HARLog.js
index e39b3fe5eb7..6bc75d286b2 100644
--- a/chromium/third_party/blink/renderer/devtools/front_end/sdk/HARLog.js
+++ b/chromium/third_party/blink/renderer/devtools/front_end/sdk/HARLog.js
@@ -169,7 +169,8 @@ SDK.HARLog.Entry = class {
// IPv6 address should not have square brackets per (https://tools.ietf.org/html/rfc2373#section-2.2).
serverIPAddress: ipAddress.replace(/\[\]/g, ''),
_initiator: exportedInitiator,
- _priority: harEntry._request.priority()
+ _priority: harEntry._request.priority(),
+ _resourceType: harEntry._request.resourceType().name()
};
// Chrome specific.
diff --git a/chromium/third_party/blink/renderer/devtools/front_end/sdk/HeapProfilerModel.js b/chromium/third_party/blink/renderer/devtools/front_end/sdk/HeapProfilerModel.js
index 7de66309643..60c222e8e70 100644
--- a/chromium/third_party/blink/renderer/devtools/front_end/sdk/HeapProfilerModel.js
+++ b/chromium/third_party/blink/renderer/devtools/front_end/sdk/HeapProfilerModel.js
@@ -45,10 +45,16 @@ SDK.HeapProfilerModel = class extends SDK.SDKModel {
* @return {!Promise<?Protocol.HeapProfiler.SamplingHeapProfile>}
*/
stopSampling() {
- this._isRecording = false;
return this._heapProfilerAgent.stopSampling();
}
+ /**
+ * @return {!Promise<?Protocol.HeapProfiler.SamplingHeapProfile>}
+ */
+ getSamplingProfile() {
+ return this._heapProfilerAgent.getSamplingProfile();
+ }
+
startNativeSampling() {
const defaultSamplingIntervalInBytes = 65536;
this._memoryAgent.startSampling(defaultSamplingIntervalInBytes);
diff --git a/chromium/third_party/blink/renderer/devtools/front_end/sdk/NetworkManager.js b/chromium/third_party/blink/renderer/devtools/front_end/sdk/NetworkManager.js
index a9b236a71cf..6790512da8e 100644
--- a/chromium/third_party/blink/renderer/devtools/front_end/sdk/NetworkManager.js
+++ b/chromium/third_party/blink/renderer/devtools/front_end/sdk/NetworkManager.js
@@ -886,7 +886,7 @@ SDK.NetworkDispatcher = class {
};
/**
- * @implements {SDK.TargetManager.Observer}
+ * @implements {SDK.SDKModelObserver<!SDK.NetworkManager>}
* @unrestricted
*/
SDK.MultitargetNetworkManager = class extends Common.Object {
@@ -911,7 +911,7 @@ SDK.MultitargetNetworkManager = class extends Common.Object {
/** @type {!Multimap<!SDK.MultitargetNetworkManager.RequestInterceptor, !SDK.MultitargetNetworkManager.InterceptionPattern>} */
this._urlsForRequestInterceptor = new Multimap();
- SDK.targetManager.observeTargets(this, SDK.Target.Capability.Network);
+ SDK.targetManager.observeModels(SDK.NetworkManager, this);
}
/**
@@ -929,10 +929,10 @@ SDK.MultitargetNetworkManager = class extends Common.Object {
/**
* @override
- * @param {!SDK.Target} target
+ * @param {!SDK.NetworkManager} networkManager
*/
- targetAdded(target) {
- const networkAgent = target.networkAgent();
+ modelAdded(networkManager) {
+ const networkAgent = networkManager.target().networkAgent();
if (this._extraHeaders)
networkAgent.setExtraHTTPHeaders(this._extraHeaders);
if (this._currentUserAgent())
@@ -948,16 +948,16 @@ SDK.MultitargetNetworkManager = class extends Common.Object {
/**
* @override
- * @param {!SDK.Target} target
+ * @param {!SDK.NetworkManager} networkManager
*/
- targetRemoved(target) {
+ modelRemoved(networkManager) {
for (const entry of this._inflightMainResourceRequests) {
const manager = SDK.NetworkManager.forRequest(/** @type {!SDK.NetworkRequest} */ (entry[1]));
- if (manager.target() !== target)
+ if (manager !== networkManager)
continue;
this._inflightMainResourceRequests.delete(/** @type {string} */ (entry[0]));
}
- this._agents.delete(target.networkAgent());
+ this._agents.delete(networkManager.target().networkAgent());
}
/**
diff --git a/chromium/third_party/blink/renderer/devtools/front_end/sdk/NetworkRequest.js b/chromium/third_party/blink/renderer/devtools/front_end/sdk/NetworkRequest.js
index a00645cc6ad..b5e422346a1 100644
--- a/chromium/third_party/blink/renderer/devtools/front_end/sdk/NetworkRequest.js
+++ b/chromium/third_party/blink/renderer/devtools/front_end/sdk/NetworkRequest.js
@@ -1151,12 +1151,13 @@ SDK.NetworkRequest = class extends Common.Object {
async populateImageSource(image) {
const {content, encoded} = await this.contentData();
let imageSrc = Common.ContentProvider.contentAsDataURL(content, this._mimeType, encoded);
- if (imageSrc === null) {
+ if (imageSrc === null && !this._failed) {
const cacheControl = this.responseHeaderValue('cache-control') || '';
if (!cacheControl.includes('no-cache'))
imageSrc = this._url;
}
- image.src = imageSrc;
+ if (imageSrc !== null)
+ image.src = imageSrc;
}
/**
@@ -1244,6 +1245,24 @@ SDK.NetworkRequest = class extends Common.Object {
this._backendRequestId = requestId;
this._requestId = requestId;
}
+
+ /**
+ * @return {?string}
+ */
+ charset() {
+ const contentTypeHeader = this.responseHeaderValue('content-type');
+ if (!contentTypeHeader)
+ return null;
+
+ const responseCharsets = contentTypeHeader.replace(/ /g, '')
+ .split(';')
+ .filter(parameter => parameter.toLowerCase().startsWith('charset='))
+ .map(parameter => parameter.slice('charset='.length));
+ if (responseCharsets.length)
+ return responseCharsets[0];
+
+ return null;
+ }
};
/** @enum {symbol} */
diff --git a/chromium/third_party/blink/renderer/devtools/front_end/sdk/OverlayModel.js b/chromium/third_party/blink/renderer/devtools/front_end/sdk/OverlayModel.js
index e2ca71a5876..ad2bd2d2014 100644
--- a/chromium/third_party/blink/renderer/devtools/front_end/sdk/OverlayModel.js
+++ b/chromium/third_party/blink/renderer/devtools/front_end/sdk/OverlayModel.js
@@ -58,6 +58,13 @@ SDK.OverlayModel = class extends SDK.SDKModel {
() => this._overlayAgent.setShowScrollBottleneckRects(this._showScrollBottleneckRectsSetting.get()));
if (this._showScrollBottleneckRectsSetting.get())
this._overlayAgent.setShowScrollBottleneckRects(true);
+
+ this._showHitTestBordersSetting = Common.moduleSetting('showHitTestBorders');
+ this._showHitTestBordersSetting.addChangeListener(
+ () => this._overlayAgent.setShowHitTestBorders(this._showHitTestBordersSetting.get()));
+ if (this._showHitTestBordersSetting.get())
+ this._overlayAgent.setShowHitTestBorders(true);
+
if (target.suspended())
this._overlayAgent.setSuspended(true);
}
diff --git a/chromium/third_party/blink/renderer/devtools/front_end/sdk/RuntimeModel.js b/chromium/third_party/blink/renderer/devtools/front_end/sdk/RuntimeModel.js
index a8da06aef2c..3262081af36 100644
--- a/chromium/third_party/blink/renderer/devtools/front_end/sdk/RuntimeModel.js
+++ b/chromium/third_party/blink/renderer/devtools/front_end/sdk/RuntimeModel.js
@@ -695,10 +695,12 @@ SDK.ExecutionContext = class {
*/
function targetWeight(target) {
if (!target.parentTarget())
+ return 5;
+ if (target.type() === SDK.Target.Type.Frame)
return 4;
- if (target.hasBrowserCapability())
+ if (target.type() === SDK.Target.Type.ServiceWorker)
return 3;
- if (target.hasJSCapability())
+ if (target.type() === SDK.Target.Type.Worker)
return 2;
return 1;
}
diff --git a/chromium/third_party/blink/renderer/devtools/front_end/sdk/ServiceWorkerManager.js b/chromium/third_party/blink/renderer/devtools/front_end/sdk/ServiceWorkerManager.js
index bbe4f76f2cb..4a6e9084e55 100644
--- a/chromium/third_party/blink/renderer/devtools/front_end/sdk/ServiceWorkerManager.js
+++ b/chromium/third_party/blink/renderer/devtools/front_end/sdk/ServiceWorkerManager.js
@@ -580,7 +580,7 @@ SDK.ServiceWorkerContextNamer = class {
const parent = target.parentTarget();
if (!parent || parent.parentTarget() !== this._target)
return null;
- return parent.id();
+ return parent.type() === SDK.Target.Type.ServiceWorker ? parent.id() : null;
}
_updateAllContextLabels() {
diff --git a/chromium/third_party/blink/renderer/devtools/front_end/sdk/Target.js b/chromium/third_party/blink/renderer/devtools/front_end/sdk/Target.js
index 9ed9f30a07a..96473067591 100644
--- a/chromium/third_party/blink/renderer/devtools/front_end/sdk/Target.js
+++ b/chromium/third_party/blink/renderer/devtools/front_end/sdk/Target.js
@@ -12,18 +12,46 @@ SDK.Target = class extends Protocol.TargetBase {
* @param {!SDK.TargetManager} targetManager
* @param {string} id
* @param {string} name
- * @param {number} capabilitiesMask
- * @param {!Protocol.InspectorBackend.Connection.Factory} connectionFactory
+ * @param {!SDK.Target.Type} type
* @param {?SDK.Target} parentTarget
+ * @param {string} sessionId
* @param {boolean} suspended
- * @param {boolean} isNodeJS
*/
- constructor(targetManager, id, name, capabilitiesMask, connectionFactory, parentTarget, suspended, isNodeJS) {
- super(connectionFactory, isNodeJS);
+ constructor(targetManager, id, name, type, parentTarget, sessionId, suspended) {
+ const needsNodeJSPatching = type === SDK.Target.Type.Node;
+ super(needsNodeJSPatching, parentTarget, sessionId);
this._targetManager = targetManager;
this._name = name;
this._inspectedURL = '';
- this._capabilitiesMask = capabilitiesMask;
+ this._capabilitiesMask = 0;
+ switch (type) {
+ case SDK.Target.Type.Frame:
+ this._capabilitiesMask = SDK.Target.Capability.Browser | SDK.Target.Capability.DOM | SDK.Target.Capability.JS |
+ SDK.Target.Capability.Log | SDK.Target.Capability.Network | SDK.Target.Capability.Target |
+ SDK.Target.Capability.Tracing | SDK.Target.Capability.Emulation | SDK.Target.Capability.Input;
+ if (!parentTarget) {
+ this._capabilitiesMask |= SDK.Target.Capability.DeviceEmulation | SDK.Target.Capability.ScreenCapture |
+ SDK.Target.Capability.Security | SDK.Target.Capability.Inspector;
+ }
+ break;
+ case SDK.Target.Type.ServiceWorker:
+ this._capabilitiesMask =
+ SDK.Target.Capability.Log | SDK.Target.Capability.Network | SDK.Target.Capability.Target;
+ if (!parentTarget)
+ this._capabilitiesMask |= SDK.Target.Capability.Browser | SDK.Target.Capability.Inspector;
+ break;
+ case SDK.Target.Type.Worker:
+ this._capabilitiesMask = SDK.Target.Capability.JS | SDK.Target.Capability.Log | SDK.Target.Capability.Network |
+ SDK.Target.Capability.Target;
+ break;
+ case SDK.Target.Type.Node:
+ this._capabilitiesMask = SDK.Target.Capability.JS;
+ break;
+ case SDK.Target.Type.Browser:
+ this._capabilitiesMask = SDK.Target.Capability.Target;
+ break;
+ }
+ this._type = type;
this._parentTarget = parentTarget;
this._id = id;
this._modelByConstructor = new Map();
@@ -58,6 +86,21 @@ SDK.Target = class extends Protocol.TargetBase {
}
/**
+ * @return {!SDK.Target.Type}
+ */
+ type() {
+ return this._type;
+ }
+
+ /**
+ * @override
+ */
+ markAsNodeJSForTest() {
+ super.markAsNodeJSForTest();
+ this._type = SDK.Target.Type.Node;
+ }
+
+ /**
* @return {!SDK.TargetManager}
*/
targetManager() {
@@ -69,6 +112,8 @@ SDK.Target = class extends Protocol.TargetBase {
* @return {boolean}
*/
hasAllCapabilities(capabilitiesMask) {
+ // TODO(dgozman): get rid of this method, once we never observe targets with
+ // capability mask.
return (this._capabilitiesMask & capabilitiesMask) === capabilitiesMask;
}
@@ -77,49 +122,8 @@ SDK.Target = class extends Protocol.TargetBase {
* @return {string}
*/
decorateLabel(label) {
- return !this.hasBrowserCapability() ? '\u2699 ' + label : label;
- }
-
- /**
- * @return {boolean}
- */
- hasBrowserCapability() {
- return this.hasAllCapabilities(SDK.Target.Capability.Browser);
- }
-
- /**
- * @return {boolean}
- */
- hasJSCapability() {
- return this.hasAllCapabilities(SDK.Target.Capability.JS);
- }
-
- /**
- * @return {boolean}
- */
- hasLogCapability() {
- return this.hasAllCapabilities(SDK.Target.Capability.Log);
- }
-
- /**
- * @return {boolean}
- */
- hasNetworkCapability() {
- return this.hasAllCapabilities(SDK.Target.Capability.Network);
- }
-
- /**
- * @return {boolean}
- */
- hasTargetCapability() {
- return this.hasAllCapabilities(SDK.Target.Capability.Target);
- }
-
- /**
- * @return {boolean}
- */
- hasDOMCapability() {
- return this.hasAllCapabilities(SDK.Target.Capability.DOM);
+ return (this._type === SDK.Target.Type.Worker || this._type === SDK.Target.Type.ServiceWorker) ? '\u2699 ' + label :
+ label;
}
/**
@@ -131,8 +135,10 @@ SDK.Target = class extends Protocol.TargetBase {
/**
* @override
+ * @param {string} reason
*/
- dispose() {
+ dispose(reason) {
+ super.dispose(reason);
this._targetManager.removeTarget(this);
for (const model of this._modelByConstructor.valuesArray())
model.dispose();
@@ -241,8 +247,17 @@ SDK.Target.Capability = {
DeviceEmulation: 1 << 12,
None: 0,
+};
- AllForTests: (1 << 13) - 1
+/**
+ * @enum {string}
+ */
+SDK.Target.Type = {
+ Frame: 'frame',
+ ServiceWorker: 'service-worker',
+ Worker: 'worker',
+ Node: 'node',
+ Browser: 'browser',
};
/**
diff --git a/chromium/third_party/blink/renderer/devtools/front_end/sdk/TargetManager.js b/chromium/third_party/blink/renderer/devtools/front_end/sdk/TargetManager.js
index bf2bad76d02..976eba20150 100644
--- a/chromium/third_party/blink/renderer/devtools/front_end/sdk/TargetManager.js
+++ b/chromium/third_party/blink/renderer/devtools/front_end/sdk/TargetManager.js
@@ -11,7 +11,6 @@ SDK.TargetManager = class extends Common.Object {
this._targets = [];
/** @type {!Array.<!SDK.TargetManager.Observer>} */
this._observers = [];
- this._observerCapabiliesMaskSymbol = Symbol('observerCapabilitiesMask');
/** @type {!Multimap<symbol, !{modelClass: !Function, thisObject: (!Object|undefined), listener: function(!Common.Event)}>} */
this._modelListeners = new Multimap();
/** @type {!Multimap<function(new:SDK.SDKModel, !SDK.Target), !SDK.SDKModelObserver>} */
@@ -150,13 +149,12 @@ SDK.TargetManager = class extends Common.Object {
/**
* @param {!SDK.TargetManager.Observer} targetObserver
- * @param {number=} capabilitiesMask
*/
- observeTargets(targetObserver, capabilitiesMask) {
- if (this._observerCapabiliesMaskSymbol in targetObserver)
+ observeTargets(targetObserver) {
+ if (this._observers.indexOf(targetObserver) !== -1)
throw new Error('Observer can only be registered once');
- targetObserver[this._observerCapabiliesMaskSymbol] = capabilitiesMask || 0;
- this.targets(capabilitiesMask).forEach(targetObserver.targetAdded.bind(targetObserver));
+ for (const target of this._targets)
+ targetObserver.targetAdded(target);
this._observers.push(targetObserver);
}
@@ -164,28 +162,25 @@ SDK.TargetManager = class extends Common.Object {
* @param {!SDK.TargetManager.Observer} targetObserver
*/
unobserveTargets(targetObserver) {
- delete targetObserver[this._observerCapabiliesMaskSymbol];
this._observers.remove(targetObserver);
}
/**
* @param {string} id
* @param {string} name
- * @param {number} capabilitiesMask
- * @param {!Protocol.InspectorBackend.Connection.Factory} connectionFactory
+ * @param {!SDK.Target.Type} type
* @param {?SDK.Target} parentTarget
- * @param {boolean} isNodeJS
+ * @param {string=} sessionId
* @return {!SDK.Target}
*/
- createTarget(id, name, capabilitiesMask, connectionFactory, parentTarget, isNodeJS) {
- const target =
- new SDK.Target(this, id, name, capabilitiesMask, connectionFactory, parentTarget, this._isSuspended, isNodeJS);
+ createTarget(id, name, type, parentTarget, sessionId) {
+ const target = new SDK.Target(this, id, name, type, parentTarget, sessionId || '', this._isSuspended);
target.createModels(new Set(this._modelObservers.keysArray()));
this._targets.push(target);
- const copy = this._observersForTarget(target);
- for (let i = 0; i < copy.length; ++i)
- copy[i].targetAdded(target);
+ const copy = this._observers.slice(0);
+ for (const observer of copy)
+ observer.targetAdded(target);
for (const modelClass of target.models().keys())
this.modelAdded(target, modelClass, target.models().get(modelClass));
@@ -203,15 +198,6 @@ SDK.TargetManager = class extends Common.Object {
/**
* @param {!SDK.Target} target
- * @return {!Array<!SDK.TargetManager.Observer>}
- */
- _observersForTarget(target) {
- return this._observers.filter(
- observer => target.hasAllCapabilities(observer[this._observerCapabiliesMaskSymbol] || 0));
- }
-
- /**
- * @param {!SDK.Target} target
*/
removeTarget(target) {
if (!this._targets.includes(target))
@@ -221,9 +207,9 @@ SDK.TargetManager = class extends Common.Object {
for (const modelClass of target.models().keys())
this._modelRemoved(target, modelClass, target.models().get(modelClass));
- const copy = this._observersForTarget(target);
- for (let i = 0; i < copy.length; ++i)
- copy[i].targetRemoved(target);
+ const copy = this._observers.slice(0);
+ for (const observer of copy)
+ observer.targetRemoved(target);
for (const key of this._modelListeners.keysArray()) {
for (const info of this._modelListeners.get(key)) {
@@ -235,14 +221,10 @@ SDK.TargetManager = class extends Common.Object {
}
/**
- * @param {number=} capabilitiesMask
* @return {!Array.<!SDK.Target>}
*/
- targets(capabilitiesMask) {
- if (!capabilitiesMask)
- return this._targets.slice();
- else
- return this._targets.filter(target => target.hasAllCapabilities(capabilitiesMask || 0));
+ targets() {
+ return this._targets.slice();
}
/**
diff --git a/chromium/third_party/blink/renderer/devtools/front_end/sdk/module.json b/chromium/third_party/blink/renderer/devtools/front_end/sdk/module.json
index 89048fb52ac..2ece8d277b6 100644
--- a/chromium/third_party/blink/renderer/devtools/front_end/sdk/module.json
+++ b/chromium/third_party/blink/renderer/devtools/front_end/sdk/module.json
@@ -189,6 +189,24 @@
{
"type": "setting",
"category": "Rendering",
+ "settingName": "showHitTestBorders",
+ "settingType": "boolean",
+ "storageType": "session",
+ "options": [
+ {
+ "value": true,
+ "title": "Show hit-test borders"
+ },
+ {
+ "value": false,
+ "title": "Hide hit-test borders"
+ }
+ ],
+ "defaultValue": false
+ },
+ {
+ "type": "setting",
+ "category": "Rendering",
"settingName": "emulatedCSSMedia",
"settingType": "enum",
"storageType": "session",