Chromium Code Reviews| 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); |
| + }); |
| }, |
| /** |