Commit e1291669 authored by Alexei Filippov's avatar Alexei Filippov Committed by Commit Bot

[Devtools] Changed once to emit a promise instead of using callback

Moves to use a promise instead of a callback for event emitable items.

R=dgozman
BUG=None

Change-Id: I1d4cd1084127d73d9ed96a9dddcef1e0d8a5fe7d
Reviewed-on: https://chromium-review.googlesource.com/527660
Commit-Queue: Alexei Filippov <alph@chromium.org>
Reviewed-by: default avatarAlexei Filippov <alph@chromium.org>
Cr-Commit-Position: refs/heads/master@{#478825}
parent 759ec5f5
......@@ -475,7 +475,7 @@ InspectorTest.waitForUISourceCode = function(urlSuffix, projectType)
InspectorTest.waitForUISourceCodeRemoved = function(callback)
{
InspectorTest.waitForEvent(Workspace.Workspace.Events.UISourceCodeRemoved, Workspace.workspace).then(callback);
Workspace.workspace.once(Workspace.Workspace.Events.UISourceCodeRemoved).then(callback);
}
InspectorTest.waitForTarget = function(filter) {
......@@ -503,7 +503,7 @@ InspectorTest.waitForTarget = function(filter) {
InspectorTest.waitForExecutionContext = function(runtimeModel) {
if (runtimeModel.executionContexts().length)
return Promise.resolve(runtimeModel.executionContexts()[0]);
return InspectorTest.waitForEvent(SDK.RuntimeModel.Events.ExecutionContextCreated, runtimeModel);
return runtimeModel.once(SDK.RuntimeModel.Events.ExecutionContextCreated);
}
InspectorTest.waitForExecutionContextDestroyed = function(context) {
......
......@@ -750,9 +750,7 @@ Audits2.DetailsRenderer = class extends DetailsRenderer {
var mainTarget = SDK.targetManager.mainTarget();
if (!this._onMainFrameNavigatedPromise) {
var resourceTreeModel = mainTarget.model(SDK.ResourceTreeModel);
this._onMainFrameNavigatedPromise = new Promise(resolve => {
resourceTreeModel.once(SDK.ResourceTreeModel.Events.MainFrameNavigated, resolve);
});
this._onMainFrameNavigatedPromise = resourceTreeModel.once(SDK.ResourceTreeModel.Events.MainFrameNavigated);
}
await this._onMainFrameNavigatedPromise;
......
......@@ -56,21 +56,15 @@ Common.Object = class {
/**
* @override
* @param {symbol} eventType
* @param {function(!Common.Event)} listener
* @param {!Object=} thisObject
* @return {!Common.EventTarget.EventDescriptor}
* @return {!Promise<*>}
*/
once(eventType, listener, thisObject) {
/**
* @this {Common.Object}
* @param {!Common.Event} event
*/
function onEvent(event) {
listener.call(thisObject, event);
this.removeEventListener(eventType, onEventBound, thisObject);
}
var onEventBound = onEvent.bind(this);
return this.addEventListener(eventType, onEventBound, thisObject);
once(eventType) {
return new Promise(resolve => {
var descriptor = this.addEventListener(eventType, event => {
this.removeEventListener(eventType, descriptor.listener);
resolve(event.data);
});
});
}
/**
......@@ -162,11 +156,9 @@ Common.EventTarget.prototype = {
/**
* @param {symbol} eventType
* @param {function(!Common.Event)} listener
* @param {!Object=} thisObject
* @return {!Common.EventTarget.EventDescriptor}
* @return {!Promise<*>}
*/
once(eventType, listener, thisObject) {},
once(eventType) {},
/**
* @param {symbol} eventType
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment