Adding mapbox-gl branch
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
// Copyright 2007 The Closure Library Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS-IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
goog.provide('goog.net.iframeXhrTest');
|
||||
goog.setTestOnly('goog.net.iframeXhrTest');
|
||||
|
||||
goog.require('goog.Timer');
|
||||
goog.require('goog.debug.Console');
|
||||
goog.require('goog.debug.LogManager');
|
||||
goog.require('goog.debug.Logger');
|
||||
goog.require('goog.events');
|
||||
goog.require('goog.net.IframeIo');
|
||||
goog.require('goog.net.XhrIo');
|
||||
goog.require('goog.testing.AsyncTestCase');
|
||||
goog.require('goog.testing.jsunit');
|
||||
goog.require('goog.userAgent');
|
||||
|
||||
var c = new goog.debug.Console;
|
||||
c.setCapturing(true);
|
||||
goog.debug.LogManager.getRoot().setLevel(goog.debug.Logger.Level.ALL);
|
||||
|
||||
// Can't use exportSymbol if we want JsUnit support
|
||||
top.GG_iframeFn = goog.net.IframeIo.handleIncrementalData;
|
||||
|
||||
// Make the dispose time short enough that it will cause the bug to appear
|
||||
goog.net.IframeIo.IFRAME_DISPOSE_DELAY_MS = 0;
|
||||
|
||||
|
||||
var fileName = 'iframe_xhr_test_response.html';
|
||||
var iframeio;
|
||||
|
||||
// Create an async test case
|
||||
var testCase = new goog.testing.AsyncTestCase(document.title);
|
||||
testCase.stepTimeout = 4 * 1000;
|
||||
testCase.resultCount = 0;
|
||||
testCase.xhrCount = 0;
|
||||
testCase.error = null;
|
||||
|
||||
|
||||
/**
|
||||
* Set up the iframe io and request the test response page.
|
||||
* @this {goog.testing.AsyncTestCase}
|
||||
*/
|
||||
testCase.setUpPage = function() {
|
||||
testCase.waitForAsync('setUpPage');
|
||||
iframeio = new goog.net.IframeIo();
|
||||
goog.events.listen(
|
||||
iframeio, 'incrementaldata', this.onIframeData, false, this);
|
||||
goog.events.listen(
|
||||
iframeio, 'ready', this.onIframeReady, false, this);
|
||||
iframeio.send(fileName);
|
||||
};
|
||||
|
||||
|
||||
/** Disposes the iframe object. */
|
||||
testCase.tearDownPage = function() {
|
||||
iframeio.dispose();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Handles the packets received from the Iframe incremental results.
|
||||
* @this {goog.testing.AsyncTestCase}
|
||||
*/
|
||||
testCase.onIframeData = function(e) {
|
||||
this.log('Data received : ' + e.data);
|
||||
this.resultCount++;
|
||||
goog.net.XhrIo.send(fileName, goog.bind(this.onXhrData, this));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Handles the iframe becoming ready.
|
||||
* @this {goog.testing.AsyncTestCase}
|
||||
*/
|
||||
testCase.onIframeReady = function(e) {
|
||||
this.log('Iframe ready');
|
||||
var me = this;
|
||||
goog.net.XhrIo.send(fileName, goog.bind(this.onXhrData, this));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Handles the response from an Xhr request.
|
||||
* @this {goog.testing.AsyncTestCase}
|
||||
*/
|
||||
testCase.onXhrData = function(e) {
|
||||
this.xhrCount++;
|
||||
// We access status directly so that XhrLite doesn't mask the error that
|
||||
// would be thrown in FF if this worked correctly.
|
||||
try {
|
||||
this.log('Xhr Received: ' + e.target.xhr_.status);
|
||||
} catch (e) {
|
||||
this.log('ERROR: ' + e.message);
|
||||
this.error = e;
|
||||
}
|
||||
if (this.xhrCount == 4 && this.resultCount == 3) {
|
||||
// Wait for the async iframe disposal to fire.
|
||||
this.log('Test set up finished, waiting 500ms for iframe disposal');
|
||||
goog.Timer.callOnce(goog.bind(this.continueTesting, this), 0);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/** The main test function that validates the results were as expected. */
|
||||
testCase.addNewTest('testResults', function() {
|
||||
assertEquals('There should be 3 data packets', 3, this.resultCount);
|
||||
// 3 results + 1 ready
|
||||
assertEquals('There should be 4 XHR results', 4, this.xhrCount);
|
||||
if (this.error) {
|
||||
throw this.error;
|
||||
}
|
||||
|
||||
assertEquals('There should be no iframes left', 0,
|
||||
document.getElementsByTagName('iframe').length);
|
||||
});
|
||||
|
||||
|
||||
/** This test only runs on GECKO browsers. */
|
||||
if (goog.userAgent.GECKO) {
|
||||
/** Used by the JsUnit test runner. */
|
||||
var testXhrMonitorWorksForIframeIoRequests = function() {
|
||||
testCase.reset();
|
||||
testCase.cycleTests();
|
||||
};
|
||||
}
|
||||
|
||||
// Standalone Closure Test Runner.
|
||||
if (goog.userAgent.GECKO) {
|
||||
G_testRunner.initialize(testCase);
|
||||
} else {
|
||||
G_testRunner.setStrict(false);
|
||||
}
|
||||
Reference in New Issue
Block a user