Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(45)

Unified Diff: third_party/WebKit/LayoutTests/inspector-protocol/resources/tracing-test.js

Issue 2953663003: [DevTools] Migrate inspector-protocol/{timeline,worker} tests to new harness (Closed)
Patch Set: addressed comments Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/inspector-protocol/resources/tracing-test.js
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/resources/tracing-test.js b/third_party/WebKit/LayoutTests/inspector-protocol/resources/tracing-test.js
index 0c545b56164c1f4c2583754af0934c562e8b66d8..8f24f8713fb931c8aa01c57c0a5e93fb98d62214 100644
--- a/third_party/WebKit/LayoutTests/inspector-protocol/resources/tracing-test.js
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/resources/tracing-test.js
@@ -2,135 +2,117 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-var evalCallbackCallId = 3;
+(class TracingHelper {
+ constructor(testRunner, session) {
+ this._testRunner = testRunner;
+ this._session = session;
+ }
-initialize_tracingHarness = function()
-{
+ startTracing() {
+ return this.startTracingWithArguments({ "categories": "-*,disabled-by-default-devtools.timeline,devtools.timeline", "type": "", "options": "" });
+ }
-InspectorTest.startTracing = function(callback)
-{
- InspectorTest.startTracingWithArguments({ "categories": "-*,disabled-by-default-devtools.timeline,devtools.timeline", "type": "", "options": "" }, callback);
-}
-
-InspectorTest.startTracingAndSaveAsStream = function(callback)
-{
+ startTracingAndSaveAsStream() {
var args = {
- "categories": "-*,disabled-by-default-devtools.timeline,devtools.timeline",
- "type": "",
- "options": "",
- "transferMode": "ReturnAsStream"
+ "categories": "-*,disabled-by-default-devtools.timeline,devtools.timeline",
+ "type": "",
+ "options": "",
+ "transferMode": "ReturnAsStream"
};
- InspectorTest.startTracingWithArguments(args, callback);
-}
-
-InspectorTest.startTracingWithArguments = function(args, callback)
-{
- InspectorTest.sendCommand("Tracing.start", args, onStart);
-
- function onStart(response)
- {
- InspectorTest.log("Recording started");
- callback();
- }
-}
-
-InspectorTest.stopTracing = function(callback)
-{
- InspectorTest.eventHandler["Tracing.tracingComplete"] = tracingComplete;
- InspectorTest.eventHandler["Tracing.dataCollected"] = dataCollected;
- InspectorTest.sendCommand("Tracing.end", { });
-
- InspectorTest.devtoolsEvents = [];
- function dataCollected(reply)
- {
- var allEvents = reply.params.value;
- InspectorTest.devtoolsEvents = InspectorTest.devtoolsEvents.concat(allEvents.filter(function(e)
- {
- return /devtools.timeline/.test(e.cat);
- }));
- }
-
- function tracingComplete(event)
- {
- InspectorTest.log("Tracing complete");
- InspectorTest.eventHandler["Tracing.tracingComplete"] = null;
- InspectorTest.eventHandler["Tracing.dataCollected"] = null;
- callback(InspectorTest.devtoolsEvents);
- }
-}
+ return this.startTracingWithArguments(args);
+ }
-InspectorTest.stopTracingAndReturnStream = function(callback)
-{
- InspectorTest.eventHandler["Tracing.tracingComplete"] = tracingComplete;
- InspectorTest.eventHandler["Tracing.dataCollected"] = dataCollected;
- InspectorTest.sendCommand("Tracing.end");
+ async startTracingWithArguments(args) {
+ await this._session.protocol.Tracing.start(args);
+ this._testRunner.log("Recording started");
+ }
- function dataCollected(reply)
- {
- InspectorTest.log("FAIL: dataCollected event should not be fired when returning trace as stream.");
+ async stopTracing() {
+ var devtoolsEvents = [];
- }
+ function dataCollected(reply) {
+ var allEvents = reply.params.value;
+ var filteredEvents = allEvents.filter(e => /devtools.timeline/.test(e.cat));
+ devtoolsEvents = devtoolsEvents.concat(filteredEvents);
+ };
- function tracingComplete(event)
- {
- InspectorTest.log("Tracing complete");
- InspectorTest.eventHandler["Tracing.tracingComplete"] = null;
- InspectorTest.eventHandler["Tracing.dataCollected"] = null;
- callback(event.params.stream);
+ this._session.protocol.Tracing.onDataCollected(dataCollected);
+ this._session.protocol.Tracing.end();
+ await this._session.protocol.Tracing.onceTracingComplete();
+ this._testRunner.log("Tracing complete");
+ this._session.protocol.Tracing.offDataCollected(dataCollected);
+ this._devtoolsEvents = devtoolsEvents;
+ return devtoolsEvents;
+ }
+
+ async stopTracingAndReturnStream() {
+ function dataCollected() {
+ this._testRunner.log("FAIL: dataCollected event should not be fired when returning trace as stream.");
}
-}
-InspectorTest.retrieveStream = function(streamHandle, offset, chunkSize, callback)
-{
+ this._session.protocol.Tracing.onDataCollected(dataCollected);
+ this._session.protocol.Tracing.end();
+ var event = await this._session.protocol.Tracing.onceTracingComplete();
+ this._testRunner.log("Tracing complete");
+ this._session.protocol.Tracing.offDataCollected(dataCollected);
+ return event.params.stream;
+ }
+
+ retrieveStream(streamHandle, offset, chunkSize) {
+ var callback;
+ var promise = new Promise(f => callback = f);
var result = "";
var had_eof = false;
var readArguments = { handle: streamHandle };
if (typeof chunkSize === "number")
- readArguments.size = chunkSize;
+ readArguments.size = chunkSize;
var firstReadArguments = JSON.parse(JSON.stringify(readArguments));
if (typeof offset === "number")
- firstReadArguments.offset = 0;
- InspectorTest.sendCommandOrDie("IO.read", firstReadArguments, onChunkRead);
- // Assure multiple in-lfight reads are fine (also, save on latencies).
- InspectorTest.sendCommandOrDie("IO.read", readArguments, onChunkRead);
-
- function onChunkRead(response)
- {
- if (had_eof)
- return;
- result += response.data;
- if (response.eof) {
- // Ignore stray callbacks from proactive read requests.
- had_eof = true;
- callback(result);
- return;
- }
- InspectorTest.sendCommandOrDie("IO.read", readArguments, onChunkRead);
+ firstReadArguments.offset = 0;
+ this._session.protocol.IO.read(firstReadArguments).then(message => onChunkRead.call(this, message.result));
+ // Assure multiple in-flight reads are fine (also, save on latencies).
+ this._session.protocol.IO.read(readArguments).then(message => onChunkRead.call(this, message.result));
+ return promise;
+
+ function onChunkRead(response) {
+ if (had_eof)
+ return;
+ result += response.data;
+ if (response.eof) {
+ // Ignore stray callbacks from proactive read requests.
+ had_eof = true;
+ callback(result);
+ return;
+ }
+ this._session.protocol.IO.read(readArguments).then(message => onChunkRead.call(this, message.result));
}
-}
+ }
-InspectorTest.findEvents = function(name, ph, condition)
-{
- return InspectorTest.devtoolsEvents.filter(e => e.name === name && e.ph === ph && (!condition || condition(e)));
-}
+ findEvents(name, ph, condition) {
+ return this._devtoolsEvents.filter(e => e.name === name && e.ph === ph && (!condition || condition(e)));
+ }
-InspectorTest.findEvent = function(name, ph, condition)
-{
- var events = InspectorTest.findEvents(name, ph, condition);
+ findEvent(name, ph, condition) {
+ var events = this.findEvents(name, ph, condition);
if (events.length)
- return events[0];
- throw new Error("Couldn't find event " + name + " / " + ph + "\n\n in " + JSON.stringify(InspectorTest.devtoolsEvents, null, 2));
-}
-
-InspectorTest.invokeAsyncWithTracing = function(functionName, callback)
-{
- InspectorTest.startTracing(onStart);
-
- function onStart()
- {
- InspectorTest.evaluateInPageAsync(functionName + "()").then((data) => InspectorTest.stopTracing((devtoolsEvents) => callback(devtoolsEvents, data)));
- }
-}
-
-}
+ return events[0];
+ throw new Error("Couldn't find event " + name + " / " + ph + "\n\n in " + JSON.stringify(this.devtoolsEvents, null, 2));
+ }
+
+ filterEvents(callback) {
+ return this._devtoolsEvents.filter(callback);
+ }
+
+ async invokeAsyncWithTracing(performActions) {
+ await this.startTracing();
+ var data = await this._session.evaluateAsync(`(${performActions.toString()})()`);
+ await this.stopTracing();
+ return data;
+ }
+
+ formattedEvents() {
+ var formattedEvents = this._devtoolsEvents.map(e => e.name + (e.args.data ? '(' + e.args.data.type + ')' : ''));
+ return JSON.stringify(formattedEvents, null, 2);
+ }
+})

Powered by Google App Engine
This is Rietveld 408576698