Index: third_party/WebKit/Source/devtools/front_end/timeline/TimelineController.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineController.js b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineController.js |
index 3ce1bc2a3b2d5eb85e22af33d1ca022a59eb61d4..d2d78102f7a09a39f4e08a7aa43d9dc15c9ee265 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineController.js |
+++ b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineController.js |
@@ -18,6 +18,7 @@ WebInspector.TimelineController = function(target, delegate, tracingModel) |
this._targets = []; |
this._allProfilesStoppedPromise = Promise.resolve(); |
this._targetsResumedPromise = Promise.resolve(); |
+ this._extensionTraceProviders = WebInspector.extensionServer.traceProviders(); |
WebInspector.targetManager.observeTargets(this); |
} |
@@ -67,6 +68,10 @@ WebInspector.TimelineController.prototype = { |
if (captureFilmStrip) |
categoriesArray.push(disabledByDefault("devtools.screenshot")); |
+ for (var traceProvider of this._extensionTraceProviders) { |
+ traceProvider.run(); |
+ } |
+ |
var categories = categoriesArray.join(","); |
this._startRecordingWithCategories(categories, enableJSSampling); |
}, |
@@ -77,6 +82,12 @@ WebInspector.TimelineController.prototype = { |
this._target.tracingManager.stop(); |
this._targetsResumedPromise = WebInspector.targetManager.resumeAllTargets(); |
this._delegate.loadingStarted(); |
+ |
+ var target = WebInspector.targetManager.mainTarget(); |
+ var requests = target.networkLog.requests().slice(); |
+ for (var traceProvider of this._extensionTraceProviders) { |
+ traceProvider.stop(requests); |
+ } |
}, |
/** |
@@ -189,6 +200,9 @@ WebInspector.TimelineController.prototype = { |
tracingStarted: function() |
{ |
this._tracingModel.reset(); |
+ for (var provider of this._extensionTraceProviders) { |
+ provider.tracingModel.reset(); |
+ } |
this._delegate.recordingStarted(); |
}, |
@@ -214,7 +228,36 @@ WebInspector.TimelineController.prototype = { |
{ |
this._injectCpuProfileEvents(); |
this._tracingModel.tracingComplete(); |
- this._delegate.loadingComplete(true); |
+ |
+ var count = 0; |
+ var total = this._extensionTraceProviders.length; |
+ var traceProviders = this._extensionTraceProviders; |
+ var this_ = this; |
+ var p = new Promise(function(resolve, reject) { |
caseq
2016/07/11 18:58:38
Let's piggy-back on the existent allProfilesStoppp
|
+ for (var traceProvider of traceProviders) { |
+ var traceData = traceProvider.traceData; |
+ function appendEventsComplete() { |
+ if (traceData.events === null) { |
+ setTimeout(appendEventsComplete, 1000); |
+ } else { |
+ traceProvider.tracingModel.addEvents(traceData.events); |
+ traceProvider.tracingModel.tracingComplete(); |
+ count++; |
+ } |
+ } |
+ appendEventsComplete(); |
+ } |
+ function waitUntil(callback) { |
+ setTimeout(function() { |
+ count == total ? callback(): waitUntil(callback);}, 1000); |
+ } |
+ waitUntil(function() { |
+ resolve(); |
+ }); |
+ }); |
+ p.then(function() { |
+ this_._delegate.loadingComplete(true); |
+ }); |
}, |
/** |