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
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>