diff options
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/net/xpc/iframepollingtransport_test.html')
-rw-r--r-- | contexts/data/lib/closure-library/closure/goog/net/xpc/iframepollingtransport_test.html | 295 |
1 files changed, 0 insertions, 295 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/net/xpc/iframepollingtransport_test.html b/contexts/data/lib/closure-library/closure/goog/net/xpc/iframepollingtransport_test.html deleted file mode 100644 index 16dda85..0000000 --- a/contexts/data/lib/closure-library/closure/goog/net/xpc/iframepollingtransport_test.html +++ /dev/null @@ -1,295 +0,0 @@ -<!DOCTYPE html> -<html> -<!-- -Copyright 2012 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> -<meta http-equiv="X-IframePollingTransport-Compatible" content="IE=edge"> -<title>NativeMessagingTransport Unit-Tests</title> -<script src="../../base.js"></script> -<script> - goog.require('goog.Timer'); - goog.require('goog.dom'); - goog.require('goog.dom.TagName'); - goog.require('goog.functions'); - goog.require('goog.net.xpc'); - goog.require('goog.net.xpc.CrossPageChannel'); - goog.require('goog.net.xpc.CrossPageChannelRole'); - goog.require('goog.object'); - goog.require('goog.testing.MockClock'); - goog.require('goog.testing.jsunit'); - goog.require('goog.testing.recordFunction'); -</script> -<script> - -var mockClock = null; -var outerChannel = null; -var innerChannel = null; - -function setUp() { - mockClock = new goog.testing.MockClock(true /* opt_autoInstall */); - - // Create the peer windows. - var outerPeerHostName = 'https://www.youtube.com'; - var outerPeerWindow = createMockPeerWindow(outerPeerHostName); - - var innerPeerHostName = 'https://www.google.com'; - var innerPeerWindow = createMockPeerWindow(innerPeerHostName); - - // Create the channels. - outerChannel = createChannel(goog.net.xpc.CrossPageChannelRole.OUTER, 'test', - outerPeerHostName, outerPeerWindow, innerPeerHostName, innerPeerWindow); - innerChannel = createChannel(goog.net.xpc.CrossPageChannelRole.INNER, 'test', - innerPeerHostName, innerPeerWindow, outerPeerHostName, outerPeerWindow); -}; - - -function tearDown() { - outerChannel.dispose(); - innerChannel.dispose(); - mockClock.uninstall(); -}; - - -/** Tests that connection happens normally and callbacks are invoked. */ -function testConnect() { - var outerConnectCallback = goog.testing.recordFunction(); - var innerConnectCallback = goog.testing.recordFunction(); - - // Connect the two channels. - outerChannel.connect(outerConnectCallback); - innerChannel.connect(innerConnectCallback); - mockClock.tick(1000); - - // Check that channels were connected and callbacks invoked. - assertEquals(1, outerConnectCallback.getCallCount()); - assertEquals(1, innerConnectCallback.getCallCount()); - assertTrue(outerChannel.isConnected()); - assertTrue(innerChannel.isConnected()); -}; - - -/** Tests that messages are successfully delivered to the inner peer. */ -function testSend_outerToInner() { - var serviceCallback = goog.testing.recordFunction(); - - // Register a service handler in the inner channel. - innerChannel.registerService('svc', function(payload) { - assertEquals('hello', payload); - serviceCallback(); - }); - - // Connect the two channels. - outerChannel.connect(); - innerChannel.connect(); - mockClock.tick(1000); - - // Send a message. - outerChannel.send('svc', 'hello'); - mockClock.tick(1000); - - // Check that the message was handled. - assertEquals(1, serviceCallback.getCallCount()); -}; - - -/** Tests that messages are successfully delivered to the outer peer. */ -function testSend_innerToOuter() { - var serviceCallback = goog.testing.recordFunction(); - - // Register a service handler in the inner channel. - outerChannel.registerService('svc', function(payload) { - assertEquals('hello', payload); - serviceCallback(); - }); - - // Connect the two channels. - outerChannel.connect(); - innerChannel.connect(); - mockClock.tick(1000); - - // Send a message. - innerChannel.send('svc', 'hello'); - mockClock.tick(1000); - - // Check that the message was handled. - assertEquals(1, serviceCallback.getCallCount()); -}; - - -/** Tests that closing the outer peer does not cause an error. */ -function testSend_outerPeerClosed() { - // Connect the inner channel. - innerChannel.connect(); - mockClock.tick(1000); - - // Close the outer peer before it has a chance to connect. - closeWindow(innerChannel.getPeerWindowObject()); - - // Allow timers to execute (and fail). - mockClock.tick(1000); -}; - - -/** Tests that closing the inner peer does not cause an error. */ -function testSend_innerPeerClosed() { - // Connect the outer channel. - outerChannel.connect(); - mockClock.tick(1000); - - // Close the inner peer before it has a chance to connect. - closeWindow(outerChannel.getPeerWindowObject()); - - // Allow timers to execute (and fail). - mockClock.tick(1000); -}; - - -/** Tests that partially closing the outer peer does not cause an error. */ -function testSend_outerPeerClosing() { - // Connect the inner channel. - innerChannel.connect(); - mockClock.tick(1000); - - // Close the outer peer before it has a chance to connect, but - // leave closed set to false to simulate a partially closed window. - closeWindow(innerChannel.getPeerWindowObject()); - innerChannel.getPeerWindowObject().closed = false; - - // Allow timers to execute (and fail). - mockClock.tick(1000); -}; - - -/** Tests that partially closing the inner peer does not cause an error. */ -function testSend_innerPeerClosing() { - // Connect the outer channel. - outerChannel.connect(); - mockClock.tick(1000); - - // Close the inner peer before it has a chance to connect, but - // leave closed set to false to simulate a partially closed window. - closeWindow(outerChannel.getPeerWindowObject()); - outerChannel.getPeerWindowObject().closed = false; - - // Allow timers to execute (and fail). - mockClock.tick(1000); -}; - - -/** - * Creates a channel with the specified configuration, using frame polling. - * @param {!goog.net.xpc.CrossPageChannelRole} role The channel role. - * @param {string} channelName The channel name. - * @param {string} fromHostName The host name of the window hosting the channel. - * @param {!Object} fromWindow The window hosting the channel. - * @param {string} toHostName The host name of the peer window. - * @param {!Object} toWindow The peer window. - */ -function createChannel(role, channelName, fromHostName, fromWindow, toHostName, - toWindow) { - - // Build a channel config using frame polling. - var channelConfig = goog.object.create( - goog.net.xpc.CfgFields.ROLE, - role, - goog.net.xpc.CfgFields.PEER_HOSTNAME, - toHostName, - goog.net.xpc.CfgFields.CHANNEL_NAME, - channelName, - goog.net.xpc.CfgFields.LOCAL_POLL_URI, - fromHostName + '/robots.txt', - goog.net.xpc.CfgFields.PEER_POLL_URI, - toHostName + '/robots.txt', - goog.net.xpc.CfgFields.TRANSPORT, - goog.net.xpc.TransportTypes.IFRAME_POLLING); - - // Build the channel. - var channel = new goog.net.xpc.CrossPageChannel(channelConfig); - channel.setPeerWindowObject(toWindow); - - // Update the transport's getWindow, to return the correct host window. - channel.createTransport_(); - channel.transport_.getWindow = goog.functions.constant(fromWindow); - return channel; -}; - - -/** - * Creates a mock window to use as a peer. The peer window will host the frame - * elements. - * @param {string} url The peer window's initial URL. - */ -function createMockPeerWindow(url) { - var mockPeer = createMockWindow(url); - - // Update the appendChild method to use a mock frame window. - mockPeer.document.body.appendChild = function(el) { - assertEquals(goog.dom.TagName.IFRAME, el.tagName); - mockPeer.frames[el.name] = createMockWindow(el.src); - mockPeer.document.body.element.appendChild(el); - }; - - return mockPeer; -}; - - -/** - * Creates a mock window. - * @param {string} url The window's initial URL. - */ -function createMockWindow(url) { - // Create the mock window, document and body. - var mockWindow = {}; - var mockDocument = {}; - var mockBody = {}; - var mockLocation = {}; - - // Configure the mock window's document body. - mockBody.element = goog.dom.createDom(goog.dom.TagName.BODY); - - // Configure the mock window's document. - mockDocument.body = mockBody; - - // Configure the mock window's location. - mockLocation.href = url; - mockLocation.replace = function(value) { mockLocation.href = value; } - - // Configure the mock window. - mockWindow.document = mockDocument; - mockWindow.frames = {}; - mockWindow.location = mockLocation; - mockWindow.setTimeout = goog.Timer.callOnce; - - return mockWindow; -}; - - -/** - * Emulates closing the specified window by clearing frames, document and - * location. - */ -function closeWindow(targetWindow) { - // Close any child frame windows. - for (var frameName in targetWindow.frames) { - closeWindow(targetWindow.frames[frameName]); - } - - // Clear the target window, set closed to true. - targetWindow.closed = true; - targetWindow.frames = null; - targetWindow.document = null; - targetWindow.location = null; -}; - -</script> -</head> - -<body></body> - -</html> |