diff options
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/net/channelrequest_test.html')
-rw-r--r-- | contexts/data/lib/closure-library/closure/goog/net/channelrequest_test.html | 280 |
1 files changed, 0 insertions, 280 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/net/channelrequest_test.html b/contexts/data/lib/closure-library/closure/goog/net/channelrequest_test.html deleted file mode 100644 index 4581067..0000000 --- a/contexts/data/lib/closure-library/closure/goog/net/channelrequest_test.html +++ /dev/null @@ -1,280 +0,0 @@ -<!DOCTYPE html> -<html> -<!-- -Copyright 2008 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-UA-Compatible" content="IE=edge"> -<title>Closure Unit Tests - goog.net.ChannelRequest</title> -<script src="../base.js" type="text/javascript"></script> -<script type="text/javascript"> -goog.require('goog.functions'); -goog.require('goog.net.BrowserChannel'); -goog.require('goog.net.ChannelDebug'); -goog.require('goog.net.ChannelRequest'); -goog.require('goog.testing.MockClock'); -goog.require('goog.testing.PropertyReplacer'); -goog.require('goog.testing.jsunit'); -goog.require('goog.testing.net.XhrIo'); -goog.require('goog.testing.recordFunction'); -</script> -</head> -<body> -<script type="text/javascript"> - -var channelRequest; -var mockBrowserChannel; -var mockClock; -var stubs; -var xhrIo; - -/** - * Time to wait for a network request to time out, before aborting. - */ -var WATCHDOG_TIME = 2000; - -/** - * Time to throttle readystatechange events. - */ -var THROTTLE_TIME = 500; - -/** - * A really long time - used to make sure no more timeouts will fire. - */ -var ALL_DAY_MS = 1000 * 60 * 60 * 24; - - -function setUp() { - mockClock = new goog.testing.MockClock(); - mockClock.install(); - stubs = new goog.testing.PropertyReplacer(); -} - - -function tearDown() { - stubs.reset(); - mockClock.uninstall(); -} - - -/** - * Constructs a duck-type BrowserChannel that tracks the completed requests. - * @constructor - */ -function MockBrowserChannel() { - this.reachabilityEvents = {}; - this.isClosed = function() { - return false; - }; - this.isActive = function() { - return true; - }; - this.shouldUseSecondaryDomains = function() { - return false; - } - this.completedRequests = []; - this.notifyServerReachabilityEvent = function(reachabilityType) { - if (!this.reachabilityEvents[reachabilityType]) { - this.reachabilityEvents[reachabilityType] = 0; - } - this.reachabilityEvents[reachabilityType]++; - }; - this.onRequestComplete = function(request) { - this.completedRequests.push(request); - }; - this.onRequestData = function(request, data) {}; -} - - -/** - * Creates a real ChannelRequest object, with some modifications for - * testability: - * <ul> - * <li>The BrowserChannel is a MockBrowserChannel. - * <li>The new watchdogTimeoutCallCount property tracks onWatchDogTimeout_() - * calls. - * <li>The timeout is set to WATCHDOG_TIME. - * </ul> - */ -function createChannelRequest() { - xhrIo = new goog.testing.net.XhrIo(); - xhrIo.abort = xhrIo.abort || function() { - this.active_ = false; - }; - - // Install mock browser channel and no-op debug logger. - mockBrowserChannel = new MockBrowserChannel(); - channelRequest = new goog.net.ChannelRequest( - mockBrowserChannel, - new goog.net.ChannelDebug()); - - // Install test XhrIo. - mockBrowserChannel.createXhrIo = function() { - return xhrIo; - }; - - // Install watchdogTimeoutCallCount. - channelRequest.watchdogTimeoutCallCount = 0; - channelRequest.originalOnWatchDogTimeout = channelRequest.onWatchDogTimeout_; - channelRequest.onWatchDogTimeout_ = function() { - this.watchdogTimeoutCallCount++; - return this.originalOnWatchDogTimeout(); - }; - - channelRequest.setTimeout(WATCHDOG_TIME); -} - - -/** - * Run through the lifecycle of a long lived request, checking that the right - * network events are reported. - */ -function testNetworkEvents() { - createChannelRequest(); - - channelRequest.xmlHttpPost(new goog.Uri('some_uri'), 'some_postdata', true); - checkReachabilityEvents(1, 0, 0, 0); - if (goog.net.ChannelRequest.supportsXhrStreaming()) { - xhrIo.simulatePartialResponse('17\nI am a BC Message'); - checkReachabilityEvents(1, 0, 0, 1); - xhrIo.simulatePartialResponse('23\nI am another BC Message'); - checkReachabilityEvents(1, 0, 0, 2); - xhrIo.simulateResponse(200, '16\Final BC Message'); - checkReachabilityEvents(1, 1, 0, 2); - } else { - xhrIo.simulateResponse(200, '16\Final BC Message'); - checkReachabilityEvents(1, 1, 0, 0); - } -} - - -/** - * Test throttling of readystatechange events. - */ -function testNetworkEvents_throttleReadyStateChange() { - createChannelRequest(); - channelRequest.setReadyStateChangeThrottle(THROTTLE_TIME); - - var recordedHandler = - goog.testing.recordFunction(channelRequest.xmlHttpHandler_); - stubs.set(channelRequest, 'xmlHttpHandler_', recordedHandler); - - channelRequest.xmlHttpPost(new goog.Uri('some_uri'), 'some_postdata', true); - assertEquals(1, recordedHandler.getCallCount()); - - checkReachabilityEvents(1, 0, 0, 0); - if (goog.net.ChannelRequest.supportsXhrStreaming()) { - xhrIo.simulatePartialResponse('17\nI am a BC Message'); - checkReachabilityEvents(1, 0, 0, 1); - assertEquals(3, recordedHandler.getCallCount()); - - // Second event should be throttled - xhrIo.simulatePartialResponse('23\nI am another BC Message'); - assertEquals(3, recordedHandler.getCallCount()); - - xhrIo.simulatePartialResponse('27\nI am yet another BC Message'); - assertEquals(3, recordedHandler.getCallCount()); - mockClock.tick(THROTTLE_TIME); - - checkReachabilityEvents(1, 0, 0, 3); - // Only one more call because of throttling. - assertEquals(4, recordedHandler.getCallCount()); - - xhrIo.simulateResponse(200, '16\Final BC Message'); - checkReachabilityEvents(1, 1, 0, 3); - assertEquals(5, recordedHandler.getCallCount()); - } else { - xhrIo.simulateResponse(200, '16\Final BC Message'); - checkReachabilityEvents(1, 1, 0, 0); - } -} - - -/** - * Make sure that the request "completes" with an error when the timeout - * expires. - */ -function testRequestTimeout() { - createChannelRequest(); - - channelRequest.xmlHttpPost(new goog.Uri('some_uri'), 'some_postdata', true); - assertEquals(0, channelRequest.watchdogTimeoutCallCount); - assertEquals(0, channelRequest.channel_.completedRequests.length); - - // Watchdog timeout. - mockClock.tick(WATCHDOG_TIME); - assertEquals(1, channelRequest.watchdogTimeoutCallCount); - assertEquals(1, channelRequest.channel_.completedRequests.length); - assertFalse(channelRequest.getSuccess()); - - // Make sure no more timers are firing. - mockClock.tick(ALL_DAY_MS); - assertEquals(1, channelRequest.watchdogTimeoutCallCount); - assertEquals(1, channelRequest.channel_.completedRequests.length); - - checkReachabilityEvents(1, 0, 1, 0); -} - - -function testRequestTimeoutWithUnexpectedException() { - createChannelRequest(); - channelRequest.channel_.createXhrIo = goog.functions.error('Weird error'); - - try { - channelRequest.xmlHttpGet(new goog.Uri('some_uri'), true, null); - fail('Expected error'); - } catch (e) { - assertEquals('Weird error', e.message); - } - - - assertEquals(0, channelRequest.watchdogTimeoutCallCount); - assertEquals(0, channelRequest.channel_.completedRequests.length); - - // Watchdog timeout. - mockClock.tick(WATCHDOG_TIME); - assertEquals(1, channelRequest.watchdogTimeoutCallCount); - assertEquals(1, channelRequest.channel_.completedRequests.length); - assertFalse(channelRequest.getSuccess()); - - // Make sure no more timers are firing. - mockClock.tick(ALL_DAY_MS); - assertEquals(1, channelRequest.watchdogTimeoutCallCount); - assertEquals(1, channelRequest.channel_.completedRequests.length); - - checkReachabilityEvents(0, 0, 1, 0); -} - -function testActiveXBlocked() { - createChannelRequest(); - stubs.set(goog.global, 'ActiveXObject', - goog.functions.error('Active X blocked')); - - channelRequest.tridentGet(new goog.Uri('some_uri'), false); - assertFalse(channelRequest.getSuccess()); - assertEquals(goog.net.ChannelRequest.Error.ACTIVE_X_BLOCKED, - channelRequest.getLastError()); - - checkReachabilityEvents(0, 0, 0, 0); -} - -function checkReachabilityEvents(reqMade, reqSucceeded, reqFail, backChannel) { - var Reachability = goog.net.BrowserChannel.ServerReachability; - assertEquals(reqMade, - mockBrowserChannel.reachabilityEvents[Reachability.REQUEST_MADE] || 0); - assertEquals(reqSucceeded, - mockBrowserChannel.reachabilityEvents[Reachability.REQUEST_SUCCEEDED] || 0); - assertEquals(reqFail, - mockBrowserChannel.reachabilityEvents[Reachability.REQUEST_FAILED] || 0); - assertEquals(backChannel, - mockBrowserChannel.reachabilityEvents[Reachability.BACK_CHANNEL_ACTIVITY] - || 0); -} -</script> -</body> -</html> |