Adding mapbox-gl branch
This commit is contained in:
@@ -0,0 +1,290 @@
|
||||
// Copyright 2006 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.userAgentTest');
|
||||
goog.setTestOnly('goog.userAgentTest');
|
||||
|
||||
goog.require('goog.array');
|
||||
goog.require('goog.labs.userAgent.platform');
|
||||
goog.require('goog.labs.userAgent.testAgents');
|
||||
goog.require('goog.labs.userAgent.util');
|
||||
goog.require('goog.testing.PropertyReplacer');
|
||||
goog.require('goog.testing.jsunit');
|
||||
goog.require('goog.userAgent');
|
||||
goog.require('goog.userAgentTestUtil');
|
||||
|
||||
|
||||
var documentMode;
|
||||
goog.userAgent.getDocumentMode_ = function() {
|
||||
return documentMode;
|
||||
};
|
||||
|
||||
|
||||
var propertyReplacer = new goog.testing.PropertyReplacer();
|
||||
|
||||
var UserAgents = {
|
||||
GECKO: 'GECKO',
|
||||
IE: 'IE',
|
||||
OPERA: 'OPERA',
|
||||
WEBKIT: 'WEBKIT'
|
||||
};
|
||||
|
||||
|
||||
function tearDown() {
|
||||
goog.labs.userAgent.util.setUserAgent(null);
|
||||
documentMode = undefined;
|
||||
propertyReplacer.reset();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test browser detection for a user agent configuration.
|
||||
* @param {Array<number>} expectedAgents Array of expected userAgents.
|
||||
* @param {string} uaString User agent string.
|
||||
* @param {string=} opt_product Navigator product string.
|
||||
* @param {string=} opt_vendor Navigator vendor string.
|
||||
*/
|
||||
function assertUserAgent(expectedAgents, uaString, opt_product, opt_vendor) {
|
||||
var mockGlobal = {
|
||||
'navigator': {
|
||||
'userAgent': uaString,
|
||||
'product': opt_product,
|
||||
'vendor': opt_vendor
|
||||
}
|
||||
};
|
||||
propertyReplacer.set(goog, 'global', mockGlobal);
|
||||
|
||||
goog.labs.userAgent.util.setUserAgent(null);
|
||||
|
||||
goog.userAgentTestUtil.reinitializeUserAgent();
|
||||
for (var ua in UserAgents) {
|
||||
var isExpected = goog.array.contains(expectedAgents, UserAgents[ua]);
|
||||
assertEquals(isExpected,
|
||||
goog.userAgentTestUtil.getUserAgentDetected(UserAgents[ua]));
|
||||
}
|
||||
}
|
||||
|
||||
function testOperaInit() {
|
||||
var mockOpera = {
|
||||
'version': function() {
|
||||
return '9.20';
|
||||
}
|
||||
};
|
||||
|
||||
var mockGlobal = {
|
||||
'navigator': {
|
||||
'userAgent': 'Opera/9.20 (Windows NT 5.1; U; de),gzip(gfe)'
|
||||
},
|
||||
'opera': mockOpera
|
||||
};
|
||||
propertyReplacer.set(goog, 'global', mockGlobal);
|
||||
|
||||
propertyReplacer.set(goog.userAgent, 'getUserAgentString', function() {
|
||||
return 'Opera/9.20 (Windows NT 5.1; U; de),gzip(gfe)';
|
||||
});
|
||||
|
||||
goog.labs.userAgent.util.setUserAgent(null);
|
||||
goog.userAgentTestUtil.reinitializeUserAgent();
|
||||
assertTrue(goog.userAgent.OPERA);
|
||||
assertEquals('9.20', goog.userAgent.VERSION);
|
||||
|
||||
// What if 'opera' global has been overwritten?
|
||||
// We must degrade gracefully (rather than throwing JS errors).
|
||||
propertyReplacer.set(goog.global, 'opera', 'bobloblaw');
|
||||
|
||||
// NOTE(nnaze): window.opera is now ignored with the migration to
|
||||
// goog.labs.userAgent.*. Version is expected to should stay the same.
|
||||
goog.labs.userAgent.util.setUserAgent(null);
|
||||
goog.userAgentTestUtil.reinitializeUserAgent();
|
||||
assertUndefined(goog.userAgent.VERSION);
|
||||
}
|
||||
|
||||
function testCompare() {
|
||||
assertTrue('exact equality broken',
|
||||
goog.userAgent.compare('1.0', '1.0') == 0);
|
||||
assertTrue('mutlidot equality broken',
|
||||
goog.userAgent.compare('1.0.0.0', '1.0') == 0);
|
||||
assertTrue('less than broken',
|
||||
goog.userAgent.compare('1.0.2.1', '1.1') < 0);
|
||||
assertTrue('greater than broken',
|
||||
goog.userAgent.compare('1.1', '1.0.2.1') > 0);
|
||||
|
||||
assertTrue('b broken', goog.userAgent.compare('1.1', '1.1b') > 0);
|
||||
assertTrue('b broken', goog.userAgent.compare('1.1b', '1.1') < 0);
|
||||
assertTrue('b broken', goog.userAgent.compare('1.1b', '1.1b') == 0);
|
||||
|
||||
assertTrue('b>a broken', goog.userAgent.compare('1.1b', '1.1a') > 0);
|
||||
assertTrue('a<b broken', goog.userAgent.compare('1.1a', '1.1b') < 0);
|
||||
}
|
||||
|
||||
function testGecko() {
|
||||
|
||||
assertGecko('Mozilla/5.0 (Windows; U; Windows NT 5.1; nl-NL; rv:1.7.5)' +
|
||||
'Gecko/20041202 Gecko/1.0', '1.7.5');
|
||||
assertGecko('Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.6)' +
|
||||
'Gecko/20050512 Gecko', '1.7.6');
|
||||
assertGecko('Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.8)' +
|
||||
'Gecko/20050609 Gecko/1.0.4', '1.7.8');
|
||||
assertGecko('Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.9)' +
|
||||
'Gecko/20050711 Gecko/1.0.5', '1.7.9');
|
||||
assertGecko('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10)' +
|
||||
'Gecko/20050716 Gecko/1.0.6', '1.7.10');
|
||||
assertGecko('Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-GB;' +
|
||||
'rv:1.7.10) Gecko/20050717 Gecko/1.0.6', '1.7.10');
|
||||
assertGecko('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12)' +
|
||||
'Gecko/20050915 Gecko/1.0.7', '1.7.12');
|
||||
assertGecko('Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US;' +
|
||||
'rv:1.7.12) Gecko/20050915 Gecko/1.0.7', '1.7.12');
|
||||
assertGecko('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b4)' +
|
||||
'Gecko/20050908 Gecko/1.4', '1.8b4');
|
||||
assertGecko('Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8)' +
|
||||
'Gecko/20051107 Gecko/1.5', '1.8');
|
||||
assertGecko('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.0.1)' +
|
||||
'Gecko/20060111 Gecko/1.5.0.1', '1.8.0.1');
|
||||
assertGecko('Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.1)' +
|
||||
'Gecko/20060111 Gecko/1.5.0.1', '1.8.0.1');
|
||||
assertGecko('Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.2)' +
|
||||
'Gecko/20060308 Gecko/1.5.0.2', '1.8.0.2');
|
||||
assertGecko('Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US;' +
|
||||
'rv:1.8.0.3) Gecko/20060426 Gecko/1.5.0.3', '1.8.0.3');
|
||||
assertGecko('Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.3)' +
|
||||
'Gecko/20060426 Gecko/1.5.0.3', '1.8.0.3');
|
||||
assertGecko('Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.4)' +
|
||||
'Gecko/20060508 Gecko/1.5.0.4', '1.8.0.4');
|
||||
assertGecko('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4)' +
|
||||
'Gecko/20060508 Gecko/1.5.0.4', '1.8.0.4');
|
||||
assertGecko('Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.0.4)' +
|
||||
'Gecko/20060508 Gecko/1.5.0.4', '1.8.0.4');
|
||||
assertGecko('Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.0.6)' +
|
||||
'Gecko/20060728 Gecko/1.5.0.6', '1.8.0.6');
|
||||
assertGecko('Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6)' +
|
||||
'Gecko/20060808 Fedora/1.5.0.6-2.fc5 Gecko/1.5.0.6 pango-text',
|
||||
'1.8.0.6');
|
||||
assertGecko('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8)' +
|
||||
'Gecko/20060321 Gecko/2.0a1', '1.8');
|
||||
assertGecko('Mozilla/5.0 (X11; Linux i686; rv:6.0) Gecko/6.0 Firefox/6.0',
|
||||
'6.0');
|
||||
}
|
||||
|
||||
function testIe() {
|
||||
assertIe('Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)', '5.01');
|
||||
assertIe('Mozilla/4.0 (compatible; MSIE 5.17; Mac_PowerPC)', '5.17');
|
||||
assertIe('Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)', '5.23');
|
||||
assertIe('Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)', '5.5');
|
||||
assertIe('Mozilla/4.0 (compatible; MSIE 6.0; MSN 2.5; Windows 98)', '6.0');
|
||||
assertIe('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)', '6.0');
|
||||
assertIe('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; ' +
|
||||
'.NET CLR 1.1.4322)', '6.0');
|
||||
assertIe('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; ' +
|
||||
'.NET CLR 2.0.50727)', '6.0');
|
||||
assertIe('Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1)', '7.0b');
|
||||
assertIe('Mozilla/4.0 (compatible; MSIE 7.0b; Win32)', '7.0b');
|
||||
assertIe('Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)', '7.0b');
|
||||
assertIe('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1;' +
|
||||
'Arcor 5.005; .NET CLR 1.0.3705; .NET CLR 1.1.4322)', '7.0');
|
||||
assertIe(
|
||||
'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko', '11.0');
|
||||
}
|
||||
|
||||
function testIeDocumentModeOverride() {
|
||||
documentMode = 9;
|
||||
assertIe('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0',
|
||||
'9');
|
||||
assertIe('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0',
|
||||
'9');
|
||||
|
||||
documentMode = 8;
|
||||
assertIe('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0',
|
||||
'8.0');
|
||||
}
|
||||
|
||||
function testDocumentModeInStandardsMode() {
|
||||
goog.userAgentTestUtil.reinitializeUserAgent();
|
||||
var expectedMode = goog.userAgent.IE ? parseInt(goog.userAgent.VERSION) :
|
||||
undefined;
|
||||
assertEquals(expectedMode, goog.userAgent.DOCUMENT_MODE);
|
||||
}
|
||||
|
||||
function testOpera() {
|
||||
var assertOpera = function(uaString) {
|
||||
assertUserAgent([UserAgents.OPERA], uaString);
|
||||
};
|
||||
assertOpera('Opera/7.23 (Windows 98; U) [en]');
|
||||
assertOpera('Opera/8.00 (Windows NT 5.1; U; en)');
|
||||
assertOpera('Opera/8.0 (X11; Linux i686; U; cs)');
|
||||
assertOpera('Opera/8.02 (Windows NT 5.1; U; en)');
|
||||
assertOpera('Opera/8.50 (Windows NT 5.1; U; en)');
|
||||
assertOpera('Opera/8.5 (X11; Linux i686; U; cs)');
|
||||
assertOpera('Opera/8.51 (Windows NT 5.1; U; en)');
|
||||
assertOpera('Opera/9.0 (Windows NT 5.0; U; en)');
|
||||
assertOpera('Opera/9.00 (Macintosh; PPC Mac OS X; U; en)');
|
||||
assertOpera('Opera/9.00 (Windows NT 5.1; U; en)');
|
||||
assertOpera('Opera/9.00 (Windows NT 5.2; U; en)');
|
||||
assertOpera('Opera/9.00 (Windows NT 6.0; U; en)');
|
||||
}
|
||||
|
||||
function testWebkit() {
|
||||
var testAgents = goog.labs.userAgent.testAgents;
|
||||
assertWebkit(testAgents.ANDROID_BROWSER_403);
|
||||
assertWebkit(testAgents.ANDROID_BROWSER_403_ALT);
|
||||
}
|
||||
|
||||
function testUnknownBrowser() {
|
||||
assertUserAgent([], 'MyWebBrowser');
|
||||
assertUserAgent([], undefined);
|
||||
}
|
||||
|
||||
function testNoNavigator() {
|
||||
// global object has no "navigator" property.
|
||||
var mockGlobal = {};
|
||||
propertyReplacer.set(goog, 'global', mockGlobal);
|
||||
goog.labs.userAgent.util.setUserAgent(null);
|
||||
goog.userAgentTestUtil.reinitializeUserAgent();
|
||||
|
||||
assertEquals('Platform should be the empty string', '',
|
||||
goog.userAgent.PLATFORM);
|
||||
assertEquals('Version should be the empty string', '',
|
||||
goog.userAgent.VERSION);
|
||||
}
|
||||
|
||||
function testLegacyChromeOsAndLinux() {
|
||||
// As a legacy behavior, goog.userAgent.LINUX considers
|
||||
// ChromeOS to be Linux.
|
||||
// goog.labs.userAgent.platform.isLinux() does not.
|
||||
goog.labs.userAgent.util.setUserAgent(
|
||||
goog.labs.userAgent.testAgents.CHROME_OS);
|
||||
goog.userAgentTestUtil.reinitializeUserAgent();
|
||||
assertTrue(goog.userAgent.LINUX);
|
||||
assertFalse(goog.labs.userAgent.platform.isLinux());
|
||||
}
|
||||
|
||||
function assertIe(uaString, expectedVersion) {
|
||||
assertUserAgent([UserAgents.IE], uaString);
|
||||
assertEquals('User agent ' + uaString + ' should have had version ' +
|
||||
expectedVersion + ' but had ' + goog.userAgent.VERSION,
|
||||
expectedVersion,
|
||||
goog.userAgent.VERSION);
|
||||
}
|
||||
|
||||
function assertGecko(uaString, expectedVersion) {
|
||||
assertUserAgent([UserAgents.GECKO], uaString, 'Gecko');
|
||||
assertEquals('User agent ' + uaString + ' should have had version ' +
|
||||
expectedVersion + ' but had ' + goog.userAgent.VERSION,
|
||||
expectedVersion,
|
||||
goog.userAgent.VERSION);
|
||||
}
|
||||
|
||||
function assertWebkit(uaString) {
|
||||
assertUserAgent([UserAgents.WEBKIT], uaString, 'WebKit');
|
||||
}
|
||||
Reference in New Issue
Block a user