blob: d20a38eb76f27d865c1e5bfac9d5bcfd72b55012 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This module provides the test page for WebUIMojoTest. Once the page is
// loaded it sends "syn" message to the native code. Once page receives "ack"
// from the native code, the page then sends "fin". Test succeeds only when
// "fin" is received by the native page. Refer to
// ios/web/webui/web_ui_mojo_inttest.mm for testing code.
var pageImpl, browserProxy;
/** @constructor */
function TestPageImpl() {
this.binding = new mojo.Binding(TestPage, this);
}
TestPageImpl.prototype = {
/** @override */
handleNativeMessage: function(result) {
if (result.message == 'ack') {
// Native code has replied with "ack", send "fin" to complete the
// test.
browserProxy.handleJsMessage('fin');
}
},
};
/**
* @return {!Promise} Fires when DOMContentLoaded event is received.
*/
function whenDomContentLoaded() {
return new Promise(function(resolve, reject) {
document.addEventListener('DOMContentLoaded', resolve);
});
}
function main() {
whenDomContentLoaded().then(function() {
browserProxy = new TestUIHandlerMojoPtr();
Mojo.bindInterface(TestUIHandlerMojo.name,
mojo.makeRequest(browserProxy).handle);
pageImpl = new TestPageImpl();
var pagePtr = new TestPagePtr();
pageImpl.binding.bind(mojo.makeRequest(pagePtr));
browserProxy.setClientPage(pagePtr);
// Send "syn" so native code should reply with "ack".
browserProxy.handleJsMessage('syn');
});
}
main();