blob: 594525900575f6f69a4d98062c15ee6f7ed34f30 [file] [log] [blame]
<!DOCTYPE html>
<html>
<!--
Copyright 2011 The Closure Library Authors. All Rights Reserved.
Use of this source code is governed by the Apache License, Version 2.0.
See the COPYING file for details.
-->
<!--
-->
<head>
<title>
Closure Unit Tests - goog.messaging.PortNetwork
</title>
<script src="../base.js"></script>
<script>
goog.require('goog.events.EventTarget');
goog.require('goog.messaging.PortChannel');
goog.require('goog.messaging.PortOperator');
goog.require('goog.testing.AsyncTestCase');
goog.require('goog.testing.MockControl');
goog.require('goog.testing.async.MockControl');
goog.require('goog.testing.messaging.MockMessageEvent');
goog.require('goog.testing.jsunit');
</script>
</head>
<body>
<iframe style="display: none;" name="inner" id="inner"
src="testdata/portnetwork_inner.html"></iframe>
<script>
var asyncTestCase = goog.testing.AsyncTestCase.createAndInstall();
// Use a relatively long timeout because workers can take a while to start up.
asyncTestCase.stepTimeout = 5 * 1000;
var timer;
function setUp() {
timer = new goog.Timer(50);
}
function tearDown() {
goog.dispose(timer);
}
function testRouteMessageThroughWorkers() {
if (!('MessageChannel' in goog.global)) {
return;
}
var master = new goog.messaging.PortOperator('main');
master.addPort('worker1', new goog.messaging.PortChannel(
new Worker('testdata/portnetwork_worker1.js')));
master.addPort('worker2', new goog.messaging.PortChannel(
new Worker('testdata/portnetwork_worker2.js')));
master.addPort(
'frame', goog.messaging.PortChannel.forEmbeddedWindow(
window.frames['inner'], '*', timer));
master.dial('worker1').registerService('result', function(msg) {
assertArrayEquals(['main', 'worker2', 'frame', 'worker1'], msg);
master.dispose();
asyncTestCase.continueTesting();
}, true);
master.dial('worker2').send('sendToFrame', ['main']);
asyncTestCase.waitForAsync('routing messages');
}
</script>
</body>
</html>