blob: e836ed2237d9368b3c747820c6531be0783f5b1e [file] [log] [blame]
'use strict';
class MockBadgeService {
constructor() {
this.bindingSet_ = new mojo.BindingSet(blink.mojom.BadgeService);
this.interceptor_ = new MojoInterfaceInterceptor(
blink.mojom.BadgeService.name);
this.interceptor_.oninterfacerequest =
e => this.bindingSet_.addBinding(this, e.handle);
this.interceptor_.start();
}
init_(expectCalled) {
this.expectCalled_ = expectCalled;
return new Promise((resolve, reject) => {
this.reject_ = reject;
this.resolve_ = resolve;
});
}
setBadge(contents) {
try {
assert_equals(this.expectCalled_, 'setBadge');
assert_equals(contents, undefined);
this.resolve_();
} catch (error) {
this.reject_(error);
}
}
clearBadge() {
try {
assert_equals(this.expectCalled_, 'clearBadge');
this.resolve_();
} catch (error) {
this.reject_(error);
}
}
}
let mockBadgeService = new MockBadgeService();
function callAndObserveErrors(func, expectedErrorName) {
return new Promise((resolve, reject) => {
try {
func();
} catch (error) {
try {
assert_equals(error.name, expectedErrorName);
resolve();
} catch (reason) {
reject(reason);
}
}
});
}
function badge_test(func, expectCalled, expectError) {
promise_test(() => {
let mockPromise = mockBadgeService.init_(expectCalled);
return Promise.race([callAndObserveErrors(func, expectError), mockPromise]);
});
}