UNPKG

sku-pg

Version:

Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!

203 lines (168 loc) 5.37 kB
<!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-UA-Compatible" content="IE=edge"> <title>Closure Unit Tests - goog.dom.vendor</title> <script src="../base.js"></script> <script> goog.require('goog.array'); goog.require('goog.dom.vendor'); goog.require('goog.testing.jsunit'); goog.require('goog.testing.PropertyReplacer'); goog.require('goog.userAgent'); </script> </head> <body> <script> var documentMode; goog.userAgent.getDocumentMode_ = function() { return documentMode; }; var propertyReplacer = new goog.testing.PropertyReplacer(); var UserAgents = { GECKO: 'GECKO', IE: 'IE', OPERA: 'OPERA', WEBKIT: 'WEBKIT' }; /** * Rerun the initialization code to set all of the goog.userAgent constants. */ function reinitializeUserAgent() { goog.userAgent.init_(); // Unfortunately we can't isolate the useragent setting in a function // we can call, because things rely on it compiling to nothing when // one of the ASSUME flags is set, and the compiler isn't smart enough // to do that when the setting is done inside a function that's inlined. goog.userAgent.OPERA = goog.userAgent.detectedOpera_; goog.userAgent.IE = goog.userAgent.detectedIe_; goog.userAgent.GECKO = goog.userAgent.detectedGecko_; goog.userAgent.WEBKIT = goog.userAgent.detectedWebkit_; goog.userAgent.MOBILE = goog.userAgent.detectedMobile_; goog.userAgent.SAFARI = goog.userAgent.WEBKIT; goog.userAgent.PLATFORM = goog.userAgent.determinePlatform_(); goog.userAgent.initPlatform_(); goog.userAgent.VERSION = goog.userAgent.determineVersion_(); } function tearDown() { documentMode = undefined; propertyReplacer.reset(); } /** * Return whether a given user agent has been detected. * @param {number} agent Value in UserAgents. * @return {boolean} Whether the user agent has been detected. */ function getUserAgentDetected_(agent) { switch (agent) { case UserAgents.GECKO: return goog.userAgent.detectedGecko_; case UserAgents.IE: return goog.userAgent.detectedIe_; case UserAgents.OPERA: return goog.userAgent.detectedOpera_; case UserAgents.WEBKIT: return goog.userAgent.detectedWebkit_; } return null; } /** * 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); reinitializeUserAgent(); for (var ua in UserAgents) { var isExpected = goog.array.contains(expectedAgents, UserAgents[ua]); assertEquals(isExpected, getUserAgentDetected_(UserAgents[ua])); } } /** * Tests for the vendor prefix for Webkit. */ function testVendorPrefixWebkit() { assertUserAgent([UserAgents.WEBKIT], 'WebKit'); assertEquals('-webkit', goog.dom.vendor.getVendorPrefix()); } /** * Tests for the vendor prefix for Mozilla/Gecko. */ function testVendorPrefixGecko() { assertUserAgent([UserAgents.GECKO], 'Gecko', 'Gecko'); assertEquals('-moz', goog.dom.vendor.getVendorPrefix()); } /** * Tests for the vendor prefix for Opera. */ function testVendorPrefixOpera() { assertUserAgent([UserAgents.OPERA], 'Opera'); assertEquals('-o', goog.dom.vendor.getVendorPrefix()); } /** * Tests for the vendor prefix for IE. */ function testVendorPrefixIE() { assertUserAgent([UserAgents.IE], 'MSIE'); assertEquals('-ms', goog.dom.vendor.getVendorPrefix()); } /** * Tests for the vendor Js prefix for Webkit. */ function testVendorJsPrefixWebkit() { assertUserAgent([UserAgents.WEBKIT], 'WebKit'); assertEquals('Webkit', goog.dom.vendor.getVendorJsPrefix()); } /** * Tests for the vendor Js prefix for Mozilla/Gecko. */ function testVendorJsPrefixGecko() { assertUserAgent([UserAgents.GECKO], 'Gecko', 'Gecko'); assertEquals('Moz', goog.dom.vendor.getVendorJsPrefix()); } /** * Tests for the vendor Js prefix for Opera. */ function testVendorJsPrefixOpera() { assertUserAgent([UserAgents.OPERA], 'Opera'); assertEquals('O', goog.dom.vendor.getVendorJsPrefix()); } /** * Tests for the vendor Js prefix for IE. */ function testVendorJsPrefixIE() { assertUserAgent([UserAgents.IE], 'MSIE'); assertEquals('ms', goog.dom.vendor.getVendorJsPrefix()); } 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); } </script> </body> </html>