aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/cssom/cssom_test.html
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/cssom/cssom_test.html')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/cssom/cssom_test.html343
1 files changed, 0 insertions, 343 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/cssom/cssom_test.html b/contexts/data/lib/closure-library/closure/goog/cssom/cssom_test.html
deleted file mode 100644
index eef9fa4..0000000
--- a/contexts/data/lib/closure-library/closure/goog/cssom/cssom_test.html
+++ /dev/null
@@ -1,343 +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 - CSS Object Model helper</title>
- <script src="../base.js"></script>
- <script>
- goog.require('goog.array');
- goog.require('goog.cssom');
- goog.require('goog.testing.jsunit');
- goog.require('goog.userAgent');
- </script>
- </head>
-
- <link rel="stylesheet" type="text/css" href="cssom_test_link_1.css">
- <style>
- /* This will import css_test_import_1 and css_test_import_2 */
- @import "cssom_test_import_1.css?cachebust=1";
-
- .css-style-1 {
- display: block;
- }
- .css-style-2 {
- display: block;
- }
- .css-style-3 {
- display: block;
- }
- </style>
- <body>
-
- <script>
-
- // Since sheet cssom_test1.css's first line is to import
- // cssom_test2.css, we should get 2 before one in the string.
- var cssText = '.css-link-1 { display: block; } ' +
- '.css-import-2 { display: block; } ' +
- '.css-import-1 { display: block; } ' +
- '.css-style-1 { display: block; } ' +
- '.css-style-2 { display: block; } ' +
- '.css-style-3 { display: block; }';
-
- var replacementCssText = '.css-repl-1 { display: block; }';
-
- var isIe7 = goog.userAgent.IE &&
- (goog.userAgent.compare(goog.userAgent.VERSION, '7.0') == 0);
-
- // We're going to toLowerCase cssText before testing, because IE returns
- // CSS property names in UPPERCASE, and the function shouldn't
- // "fix" the text as it would be expensive and rarely of use.
- // Same goes for the trailing whitespace in IE.
- // Same goes for fixing the optimized removal of trailing ; in rules.
- // Also needed for Opera.
- function fixCssTextForIe(cssText) {
- cssText = cssText.toLowerCase().replace(/\s*$/, '');
- if (cssText.match(/[^;] \}/)) {
- cssText = cssText.replace(/([^;]) \}/g, '$1; }');
- }
- return cssText;
- }
-
- function testGetFileNameFromStyleSheet() {
- var styleSheet = {'href': 'http://foo.com/something/filename.css'};
- assertEquals('filename.css',
- goog.cssom.getFileNameFromStyleSheet(styleSheet));
-
- styleSheet = {'href': 'https://foo.com:123/something/filename.css'};
- assertEquals('filename.css',
- goog.cssom.getFileNameFromStyleSheet(styleSheet));
-
- styleSheet = {'href': 'http://foo.com/something/filename.css?bar=bas'};
- assertEquals('filename.css',
- goog.cssom.getFileNameFromStyleSheet(styleSheet));
-
- styleSheet = {'href': 'filename.css?bar=bas'};
- assertEquals('filename.css',
- goog.cssom.getFileNameFromStyleSheet(styleSheet));
-
- styleSheet = {'href': 'filename.css'};
- assertEquals('filename.css',
- goog.cssom.getFileNameFromStyleSheet(styleSheet));
- }
-
- function testGetAllCssStyleSheets() {
- var styleSheets = goog.cssom.getAllCssStyleSheets();
- assertEquals(4, styleSheets.length);
- // Makes sure they're in the right cascade order.
- assertEquals('cssom_test_link_1.css',
- goog.cssom.getFileNameFromStyleSheet(styleSheets[0]));
- assertEquals('cssom_test_import_2.css',
- goog.cssom.getFileNameFromStyleSheet(styleSheets[1]));
- assertEquals('cssom_test_import_1.css',
- goog.cssom.getFileNameFromStyleSheet(styleSheets[2]));
- // Not an external styleSheet
- assertNull(goog.cssom.getFileNameFromStyleSheet(styleSheets[3]));
- }
-
- function testGetAllCssText() {
- var allCssText = goog.cssom.getAllCssText();
- // In IE7, a CSSRule object gets included twice and replaces another
- // existing CSSRule object. We aren't using
- // goog.testing.ExpectedFailures since it brings in additional CSS
- // which breaks a lot of our expectations about the number of rules
- // present in a style sheet.
- if (!isIe7) {
- assertEquals(cssText, fixCssTextForIe(allCssText));
- }
- }
-
- function testGetAllCssStyleRules() {
- var allCssRules = goog.cssom.getAllCssStyleRules();
- assertEquals(6, allCssRules.length);
- }
-
-
- function testAddCssText() {
- var newCssText = '.css-add-1 { display: block; }';
- var newCssNode = goog.cssom.addCssText(newCssText);
-
- assertEquals(document.styleSheets.length, 3);
-
- var allCssText = goog.cssom.getAllCssText();
-
- // In IE7, a CSSRule object gets included twice and replaces another
- // existing CSSRule object. We aren't using
- // goog.testing.ExpectedFailures since it brings in additional CSS
- // which breaks a lot of our expectations about the number of rules
- // present in a style sheet.
- if (!isIe7) {
- // Opera inserts the CSSRule to the first position. And fixCssText
- // is also needed to clean up whitespace.
- if (goog.userAgent.OPERA) {
- assertEquals(newCssText + ' ' + cssText,
- fixCssTextForIe(allCssText));
- } else {
- assertEquals(cssText + ' ' + newCssText,
- fixCssTextForIe(allCssText));
- }
- }
-
- var cssRules = goog.cssom.getAllCssStyleRules();
- assertEquals(7, cssRules.length);
-
- // Remove the new stylesheet now so it doesn't interfere with other
- // tests.
- newCssNode.parentNode.removeChild(newCssNode);
- // Sanity check.
- cssRules = goog.cssom.getAllCssStyleRules();
- assertEquals(6, cssRules.length);
- }
-
- function testAddCssRule() {
- // test that addCssRule correctly adds the rule to the style
- // sheet.
- var styleSheets = goog.cssom.getAllCssStyleSheets();
- var styleSheet = styleSheets[3];
- var newCssRule = '.css-addCssRule { display: block; }';
- var rules = styleSheet.rules || styleSheet.cssRules;
- var origNumberOfRules = rules.length;
-
- goog.cssom.addCssRule(styleSheet, newCssRule, 1);
-
- rules = styleSheet.rules || styleSheet.cssRules;
- var newNumberOfRules = rules.length;
- assertEquals(newNumberOfRules, origNumberOfRules + 1);
-
- // Remove the added rule so we don't mess up other tests.
- goog.cssom.removeCssRule(styleSheet, 1);
- }
-
- function testAddCssRuleAtPos() {
- // test that addCssRule correctly adds the rule to the style
- // sheet at the specified position.
- var styleSheets = goog.cssom.getAllCssStyleSheets();
- var styleSheet = styleSheets[3];
- var newCssRule = '.css-addCssRulePos { display: block; }';
- var rules = styleSheet.rules || styleSheet.cssRules;
- var origNumberOfRules = rules.length;
-
- // Firefox croaks if we try to insert a CSSRule at an index that
- // contains a CSSImport Rule. Since we deal only with CSSStyleRule
- // objects, we find the first CSSStyleRule and return its index.
- //
- // NOTE(user): We could have unified the code block below for all
- // browsers but IE6 horribly mangled up the stylesheet by creating
- // duplicate instances of a rule when removeCssRule was invoked
- // just after addCssRule with the looping construct in. This is
- // perfectly fine since IE's styleSheet.rules does not contain
- // references to anything but CSSStyleRules.
- var pos = 0;
- if (!goog.userAgent.IE) {
- pos = goog.array.findIndex(rules, function(rule) {
- return rule.type == goog.cssom.CssRuleType.STYLE;
- });
- }
- goog.cssom.addCssRule(styleSheet, newCssRule, pos);
-
- rules = styleSheet.rules || styleSheet.cssRules;
- var newNumberOfRules = rules.length;
- assertEquals(newNumberOfRules, origNumberOfRules + 1);
-
- // Remove the added rule so we don't mess up other tests.
- goog.cssom.removeCssRule(styleSheet, pos);
-
- rules = styleSheet.rules || styleSheet.cssRules;
- assertEquals(origNumberOfRules, rules.length);
- }
-
- function testAddCssRuleNoIndex() {
- // How well do we handle cases where the optional index is
- // not passed in?
- var styleSheets = goog.cssom.getAllCssStyleSheets();
- var styleSheet = styleSheets[3];
- var rules = styleSheet.rules || styleSheet.cssRules;
- var origNumberOfRules = rules.length;
- var newCssRule = '.css-addCssRuleNoIndex { display: block; }';
-
- // Try inserting the rule without specifying an index.
- // Make sure we don't throw an exception, and that we added
- // the entry.
- goog.cssom.addCssRule(styleSheet, newCssRule);
-
- rules = styleSheet.rules || styleSheet.cssRules;
- var newNumberOfRules = rules.length;
- assertEquals(newNumberOfRules, origNumberOfRules + 1);
-
- // Remove the added rule so we don't mess up the other tests.
- goog.cssom.removeCssRule(styleSheet, newNumberOfRules - 1);
-
- rules = styleSheet.rules || styleSheet.cssRules;
- assertEquals(origNumberOfRules, rules.length);
- }
-
-
- function testGetParentStyleSheetAfterGetAllCssStyleRules() {
- var cssRules = goog.cssom.getAllCssStyleRules();
- var cssRule = cssRules[4];
- var parentStyleSheet = goog.cssom.getParentStyleSheet(cssRule);
- var styleSheets = goog.cssom.getAllCssStyleSheets();
- var styleSheet = styleSheets[3];
- assertEquals(styleSheet, parentStyleSheet);
- }
-
- function testGetCssRuleIndexInParentStyleSheetAfterGetAllCssStyleRules() {
- var cssRules = goog.cssom.getAllCssStyleRules();
- var cssRule = cssRules[4];
- // Note here that this is correct - IE's styleSheet.rules does not
- // contain references to anything but CSSStyleRules while FF and others
- // include anything that inherits from the CSSRule interface.
- // See http://dev.w3.org/csswg/cssom/#cssrule.
- var ruleIndex = goog.userAgent.IE ? 1 : 2;
- assertEquals(ruleIndex,
- goog.cssom.getCssRuleIndexInParentStyleSheet(cssRule));
- }
-
- function testGetCssRuleIndexInParentStyleSheetNonStyleRule() {
- // IE's styleSheet.rules only contain CSSStyleRules.
- if (!goog.userAgent.IE) {
- var styleSheets = goog.cssom.getAllCssStyleSheets();
- var styleSheet = styleSheets[3];
- var newCssRule = '@media print { .css-nonStyle { display: block; } }';
- goog.cssom.addCssRule(styleSheet, newCssRule);
- var rules = styleSheet.rules || styleSheet.cssRules;
- var cssRule = rules[rules.length - 1];
- assertEquals(goog.cssom.CssRuleType.MEDIA, cssRule.type);
- // Make sure we don't throw an exception.
- goog.cssom.getCssRuleIndexInParentStyleSheet(cssRule, styleSheet);
- // Remove the added rule.
- goog.cssom.removeCssRule(styleSheet, rules.length - 1);
- }
- }
-
- // Tests the scenario where we have a known stylesheet and index.
- function testReplaceCssRuleWithStyleSheetAndIndex() {
- var styleSheets = goog.cssom.getAllCssStyleSheets();
- var styleSheet = styleSheets[3];
- var rules = goog.cssom.getCssRulesFromStyleSheet(styleSheet);
- var index = 2;
- var origCssRule = rules[index];
- var origCssText =
- fixCssTextForIe(goog.cssom.getCssTextFromCssRule(origCssRule));
-
- goog.cssom.replaceCssRule(origCssRule, replacementCssText, styleSheet,
- index);
-
- var rules = goog.cssom.getCssRulesFromStyleSheet(styleSheet);
- var newCssRule = rules[index];
- var newCssText = goog.cssom.getCssTextFromCssRule(newCssRule);
- assertEquals(replacementCssText, fixCssTextForIe(newCssText));
-
- // Now we need to re-replace our rule, to preserve parity for the other
- // tests.
- goog.cssom.replaceCssRule(newCssRule, origCssText, styleSheet, index);
- var rules = goog.cssom.getCssRulesFromStyleSheet(styleSheet);
- var nowCssRule = rules[index];
- var nowCssText = goog.cssom.getCssTextFromCssRule(nowCssRule);
- assertEquals(origCssText, fixCssTextForIe(nowCssText));
- }
-
- function testReplaceCssRuleUsingGetAllCssStyleRules() {
- var cssRules = goog.cssom.getAllCssStyleRules();
- var origCssRule = cssRules[4];
- var origCssText =
- fixCssTextForIe(goog.cssom.getCssTextFromCssRule(origCssRule));
- // notice we don't pass in the stylesheet or index.
- goog.cssom.replaceCssRule(origCssRule, replacementCssText);
-
- var styleSheets = goog.cssom.getAllCssStyleSheets();
- var styleSheet = styleSheets[3];
- var rules = goog.cssom.getCssRulesFromStyleSheet(styleSheet);
- var index = goog.userAgent.IE ? 1 : 2;
- var newCssRule = rules[index];
- var newCssText =
- fixCssTextForIe(goog.cssom.getCssTextFromCssRule(newCssRule));
- assertEquals(replacementCssText, newCssText);
-
- // try getting it the other way around too.
- var cssRules = goog.cssom.getAllCssStyleRules();
- var newCssRule = cssRules[4];
- var newCssText =
- fixCssTextForIe(goog.cssom.getCssTextFromCssRule(newCssRule));
- assertEquals(replacementCssText, newCssText);
-
- // Now we need to re-replace our rule, to preserve parity for the other
- // tests.
- goog.cssom.replaceCssRule(newCssRule, origCssText);
- var cssRules = goog.cssom.getAllCssStyleRules();
- var nowCssRule = cssRules[4];
- var nowCssText =
- fixCssTextForIe(goog.cssom.getCssTextFromCssRule(nowCssRule));
- assertEquals(origCssText, nowCssText);
- }
- </script>
- </body>
-</html>