Index: third_party/WebKit/LayoutTests/ballista/resources/mock-ballista-service.js |
diff --git a/third_party/WebKit/LayoutTests/ballista/resources/mock-ballista-service.js b/third_party/WebKit/LayoutTests/ballista/resources/mock-ballista-service.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d926abebfa55a10086e3c9535ed31912e392e7c5 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/ballista/resources/mock-ballista-service.js |
@@ -0,0 +1,77 @@ |
+'use strict'; |
+ |
+// Globals for use with expectations. |
+var title; |
+var text; |
+var expectTitle; |
Sam McNally
2016/04/13 04:32:35
expectedTitle
Matt Giuca
2016/04/13 05:43:01
Done.
|
+var expectText; |
Sam McNally
2016/04/13 04:32:35
expectedText
Matt Giuca
2016/04/13 05:43:01
Done.
|
+ |
+let mockBallistaService = loadMojoModules( |
+ 'mockBallistaService', |
+ ['third_party/WebKit/public/platform/modules/ballista/ballista.mojom', |
Sam McNally
2016/04/13 04:32:35
Sort these.
Matt Giuca
2016/04/13 05:43:01
Done.
|
+ 'mojo/public/js/router', |
+ ]).then(mojo => { |
+ let [ballista, router] = mojo.modules; |
+ |
+ class MockBallistaService extends ballista.BallistaService.stubClass { |
+ constructor(serviceRegistry) { |
+ super(); |
+ serviceRegistry.addServiceOverrideForTesting( |
+ ballista.BallistaService.name, |
+ handle => this.connect_(handle)); |
+ |
+ // sequence of [title, text, callback]. |
+ this.pendingRequests_ = []; |
+ // sequence of [expectTitle, expectText, result]. |
+ this.shareResultQueue_ = []; |
+ } |
+ |
+ connect_(handle) { |
+ this.router_ = new router.Router(handle); |
+ this.router_.setIncomingReceiver(this); |
+ } |
+ |
+ share(title, text) { |
+ let result = new Promise(resolve => this.pendingRequests_.push([title, text, resolve])); |
Sam McNally
2016/04/13 04:32:35
Wrap to 80 chars.
Matt Giuca
2016/04/13 05:43:01
Done.
|
+ this.runCallbacks_(); |
+ return result; |
+ } |
+ |
+ pushShareResult(expectTitle, expectText, result) { |
+ this.shareResultQueue_.push([expectTitle, expectText, result]); |
+ this.runCallbacks_(); |
+ } |
+ |
+ runCallbacks_() { |
+ while (this.pendingRequests_.length && this.shareResultQueue_.length) { |
+ let callback, result; |
+ [title, text, callback] = this.pendingRequests_.shift(); |
+ [expectTitle, expectText, result] = this.shareResultQueue_.shift(); |
+ shouldBe('title', 'expectTitle'); |
+ shouldBe('text', 'expectText'); |
+ callback({error: result}); |
+ } |
+ } |
+ } |
+ return new MockBallistaService(mojo.frameServiceRegistry); |
+}); |
+ |
+// Pushes a result onto the queue. Results will be returned from the Mojo |
+// service in the order they were pushed. |
+function pushMockBallistaServiceResult(expectTitle, expectText, shareResult) { |
+ mockBallistaService.then(mock => mock.pushShareResult(expectTitle, expectText, shareResult)); |
+} |
+ |
+// Callbacks for use in the HTML files. |
+ |
+function shareSuccess() { |
+ debug('share completed successfully'); |
Sam McNally
2016/04/13 04:32:35
Be consistent with indentation.
Matt Giuca
2016/04/13 05:43:01
Done.
|
+ setTimeout(finishJSTest, 0); |
+} |
+ |
+function shareFailure(error) { |
+ debug('share failed: ' + error); |
+ setTimeout(finishJSTest, 0); |
+} |
+ |
+var mockBallistaServiceReady = mockBallistaService.then(); |