aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/cssom/iframe/style_test.html
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/cssom/iframe/style_test.html')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/cssom/iframe/style_test.html391
1 files changed, 0 insertions, 391 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/cssom/iframe/style_test.html b/contexts/data/lib/closure-library/closure/goog/cssom/iframe/style_test.html
deleted file mode 100644
index a348759..0000000
--- a/contexts/data/lib/closure-library/closure/goog/cssom/iframe/style_test.html
+++ /dev/null
@@ -1,391 +0,0 @@
-<html>
-<!--
-Copyright 2010 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">
- <script src="../../base.js"></script>
- <script>
- goog.require('goog.cssom');
- goog.require('goog.cssom.iframe.style');
- goog.require('goog.testing.jsunit');
- </script>
- <script>
- // unit tests
- var propertiesToTest = [
- 'color',
- 'font-family',
- 'font-style',
- 'font-size',
- 'font-variant',
- 'border-top-style',
- 'border-top-width',
- 'border-top-color',
- 'background-color',
- 'margin-bottom'
- ];
-
- function crawlDom(startNode, func) {
- if (startNode.nodeType != 1) { return; }
- func(startNode);
- for (var i = 0; i < startNode.childNodes.length; i++) {
- crawlDom(startNode.childNodes[i], func);
- }
- }
-
- function getCurrentCssProperties(node, propList) {
- var props = {};
- if (node.nodeType != 1) { return; }
- for (var i = 0; i < propList.length; i++) {
- var prop = propList[i];
- if (node.currentStyle) { // IE
- var propCamelCase = '';
- var propParts = prop.split('-');
- for (var j = 0; j < propParts.length; j++) {
- propCamelCase += propParts[j].charAt(0).toUpperCase() +
- propParts[j].substring(1, propParts[j].length);
- }
- props[prop] = node.currentStyle[propCamelCase];
- } else { // standards-compliant browsers
- props[prop] = node.ownerDocument.defaultView.getComputedStyle(
- node, '').getPropertyValue(prop);
- }
- }
- return props;
- }
-
- function CssPropertyCollector(){
- var propsList = [];
- this.propsList = propsList
-
- this.collectProps = function(node) {
- var nodeProps = getCurrentCssProperties(node, propertiesToTest);
- if (nodeProps) { propsList.push([nodeProps, node]); }
- }
- }
-
- function recursivelyListCssProperties(el) {
- var collector = new CssPropertyCollector();
- crawlDom(el, collector.collectProps);
- return collector.propsList;
- }
-
- function testMatchCssSelector() {
- var container = document.createElement('div');
- container.className = 'container';
- var el = document.createElement('div');
- x = el;
- el.id = 'mydiv';
- el.className = 'colorful foo';
- // set some arbirtrary content
- el.innerHTML = '<div><ul><li>One</li><li>Two</li></ul></div>';
- container.appendChild(el);
- document.body.appendChild(container);
-
- var elementAncestry = new goog.cssom.iframe.style.NodeAncestry_(el);
- assertEquals(5, elementAncestry.nodes.length);
-
- // list of input/output results. Output is the index of the selector
- // that we expect to match - for example, in 'body div div.colorful',
- // 'div.colorful' has an index of 2.
- var expectedResults = [
- ['body div', [4, 1]],
- ['h1', null],
- ['body div h1', [4, 1]],
- ['body div.colorful h1', [4, 1]],
- ['body div div', [4, 2]],
- ['body div div div', [4, 2]],
- ['body div div.somethingelse div', [4, 1]],
- ['body div.somethingelse div', [2, 0]],
- ['div.container', [3, 0]],
- ['div.container div', [4, 1]],
- ['#mydiv', [4, 0]],
- ['div#mydiv', [4, 0]],
- ['div.colorful', [4, 0]],
- ['div#mydiv .colorful', [4, 0]],
- ['.colorful', [4, 0]],
- ['body * div', [4,2]],
- ['body * *', [4,2]]
- ];
- for (var i = 0; i < expectedResults.length; i++) {
- var input = expectedResults[i][0];
- var expectedResult = expectedResults[i][1];
- var selector = new goog.cssom.iframe.style.CssSelector_(input);
- var result = selector.matchElementAncestry(elementAncestry);
- if (expectedResult == null) {
- assertEquals('Expected null result', expectedResult, result);
- } else {
- assertEquals('Expected element index for ' + input,
- expectedResult[0],
- result.elementIndex);
- assertEquals('Expected selector part index for ' + input,
- expectedResult[1],
- result.selectorPartIndex);
- }
- }
- document.body.removeChild(container);
- }
-
- function makeIframeDocument(iframe) {
- var doc = goog.dom.getFrameContentDocument(iframe);
- doc.open();
- doc.write('<html><head>');
- doc.write('<style>html,body { background-color: transparent; }</style>');
- doc.write('</head><body></body></html>');
- doc.close();
- return doc;
- }
-
- function testCopyCss() {
- for (var i = 1; i <= 4; i++) {
- var sourceElement = document.getElementById('source'+i);
- var newFrame = document.createElement('iframe');
- newFrame.allowTransparency = true;
- sourceElement.parentNode.insertBefore(newFrame,
- sourceElement.nextSibling);
- var doc = makeIframeDocument(newFrame);
- goog.cssom.addCssText(
- goog.cssom.iframe.style.getElementContext(sourceElement),
- new goog.dom.DomHelper(doc));
- doc.body.innerHTML = sourceElement.innerHTML;
-
- var oldProps = recursivelyListCssProperties(sourceElement);
- var newProps = recursivelyListCssProperties(doc.body);
-
- assertEquals(oldProps.length, newProps.length);
- for (var j = 0; j < oldProps.length; j++) {
- for (var k = 0; k < propertiesToTest.length; k++) {
- assertEquals('testing property ' + propertiesToTest[k],
- oldProps[j][0][propertiesToTest[k]],
- newProps[j][0][propertiesToTest[k]]);
- }
- }
- }
- }
-
- function normalizeCssText(cssText) {
- // Normalize cssText for testing purposes.
- return cssText.replace(/\s/g, '').toLowerCase();
- }
-
- function testAImportantInFF2() {
- var testDiv = document.getElementById('source1');
- var cssText = normalizeCssText(
- goog.cssom.iframe.style.getElementContext(testDiv));
- var color = standardizeCSSValue('color', 'red');
- var NORMAL_RULE = 'a{color:' + color;
- var FF_2_RULE = 'a{color:' + color + '!important';
- if (goog.userAgent.GECKO && !goog.userAgent.isVersion('1.9a')) {
- assertContains(FF_2_RULE, cssText);
- } else {
- assertContains(NORMAL_RULE, cssText);
- assertNotContains(FF_2_RULE, cssText);
- }
- }
-
- function testCopyBackgroundContext() {
- var testDiv = document.getElementById('backgroundTest');
- var cssText = goog.cssom.iframe.style.getElementContext(testDiv,
- null,
- true);
- var iframe = document.createElement('iframe');
- var ancestor = document.getElementById('backgroundTest-ancestor-1');
- ancestor.parentNode.insertBefore(iframe, ancestor.nextSibling);
- iframe.style.width = '100%';
- iframe.style.height = '100px';
- iframe.style.borderWidth = '0px';
- var doc = makeIframeDocument(iframe);
- goog.cssom.addCssText(cssText, new goog.dom.DomHelper(doc));
- doc.body.innerHTML = testDiv.innerHTML;
- var normalizedCssText = normalizeCssText(cssText);
- assertTrue(
- 'Background color should be copied from parent element',
- /body{[^{]*background-color:(?:rgb\(128,0,128\)|#800080)/.test(
- normalizedCssText));
- assertTrue(
- 'Background image should be copied from ancestor element',
- /body{[^{]*background-image:url\(/.test(normalizedCssText));
- // Background-position can't be calculated in FF2, due to this bug:
- // http://bugzilla.mozilla.org/show_bug.cgi?id=316981
- if (!(goog.userAgent.GECKO && !goog.userAgent.isVersion('1.9'))) {
- // Expected x position is:
- // originalBackgroundPositionX - elementOffsetLeft
- // 40px - (1px + 8px) == 31px
- // Expected y position is:
- // originalBackgroundPositionY - elementOffsetLeft
- // 70px - (1px + 10px + 5px) == 54px;
- assertTrue('Background image position should be adjusted correctly',
- /body{[^{]*background-position:31px54px/.test(normalizedCssText));
- }
- }
-
- function testCopyBackgroundContextFromIframe() {
- var testDiv = document.getElementById('backgroundTest');
- var iframe = document.createElement('iframe');
- iframe.allowTransparency = true;
- iframe.style.position = 'absolute';
- iframe.style.top = '5px';
- iframe.style.left = '5px';
- iframe.style.borderWidth = '2px';
- iframe.style.borderStyle = 'solid';
- testDiv.appendChild(iframe);
- var doc = makeIframeDocument(iframe);
- doc.body.backgroundColor = 'transparent';
- doc.body.style.margin = '0';
- doc.body.style.padding = '0';
- doc.body.innerHTML = '<p style="margin: 0">I am transparent!</p>';
- var normalizedCssText = normalizeCssText(
- goog.cssom.iframe.style.getElementContext(
- doc.body.firstChild, null, true));
- // Background properties should get copied through from the parent
- // document since the iframe is transparent
- assertTrue(
- 'Background color should be copied from parent element',
- /body{[^{]*background-color:(?:rgb\(128,0,128\)|#800080)/.test(
- normalizedCssText));
- assertTrue(
- 'Background image should be copied from ancestor element',
- /body{[^{]*background-image:url\(/.test(normalizedCssText));
- // Background-position can't be calculated in FF2, due to this bug:
- // http://bugzilla.mozilla.org/show_bug.cgi?id=316981
- if (!(goog.userAgent.GECKO && !goog.userAgent.isVersion('1.9'))) {
- // Image offset should have been calculated to be the same as the
- // above example, but adding iframe offset and borderWidth.
- // Expected x position is:
- // originalBackgroundPositionX - elementOffsetLeft
- // 40px - (1px + 8px + 5px + 2px) == 24px
- // Expected y position is:
- // originalBackgroundPositionY - elementOffsetLeft
- // 70px - (1px + 10px + 5px + 5px + 2px) == 47px;
- assertTrue('Background image position should be adjusted correctly',
- !!/body{[^{]*background-position:24px47px/.exec(
- normalizedCssText))
- }
- iframe.parentNode.removeChild(iframe);
- }
-
- function testCopyFontFaceRules() {
- var isFontFaceCssomSupported =
- goog.userAgent.WEBKIT ||
- goog.userAgent.OPERA ||
- (goog.userAgent.GECKO && goog.userAgent.isVersion('1.9.1'));
- // We cannot use goog.testing.ExpectedFailures since it dynamically
- // brings in CSS which causes the background context tests to fail
- // in IE6.
- if (isFontFaceCssomSupported) {
- var cssText = goog.cssom.iframe.style.getElementContext(
- document.getElementById('cavalier'));
- assertTrue('The font face rule should have been copied correctly',
- /@font-face/.test(cssText));
- }
- }
-
- </script>
- <style type="text/css">
- @import url("style_test_import.css");
-
- body { font-family: Verdana; }
- div { background-color: #ffc; margin: 10px 0; }
- p { margin: 10px 0; }
- .boxy { padding: 5px; background-color: #fa0; }
- .special .boxy { padding: 10px; background-color: #abef00; }
- div div strong { color: red; }
- div { line-height: 1.3; }
- .wrapper .inner-wrapper { border: 2px solid pink;}
- a { color: red; }
- #source4 { background-color: #900; }
-
- #backgroundTest-ancestor-1 {
- background-color: rgb(128,0,128);
- }
- #backgroundTest-ancestor-0 {
- background-image: url("../../images/blank.gif");
- background-position: 40px 70px;
- background-repeat: repeat;
- background-color: transparent;
- padding: 5px 8px;
- }
- div#backgroundTest-parent {
- border: 1px solid black;
- background-color: transparent;
- }
- div#backgroundTest {
- position: relative;
- background-color: transparent;
- height: 100px;
- margin-top: 0;
- }
- </style>
- <style type="text/css">
- .goog-presently-theme-monochrome {
- background-color: black;
- color: #CCC;
- }
- .goog-presently-theme-monochrome a {
- color: #FFF;
- }
- .goog-presently-theme-monochrome p#source4 {
- font-variant: small-caps;
- }
-
- .italic {
- font-style: italic;
- }
- </style>
- <style type="text/css">
- @font-face {
- font-family: Cavalier;
- }
- #cavalier {
- font-family: Cavalier;
- }
- </style>
-</head>
-<body>
-
- <div class="wrapper">
-
- <div class="inner-wrapper">
-
- <div id="source1" class="italic">
- hello world
- </div>
-
- <div id="source2">
- <div>Some <strong>strong</strong> text</div>
- <div class="boxy exciting">A box</div>
- <div class="inner-wrapper">A wrapper</div>
- </div>
-
- <div id="source3" class="special">
- Some <strong>strong</strong> text
- <div class="boxy">A box</div>
- </div>
-
- <div id="ancestor" class="goog-presently-theme-monochrome">
- <p id="source4" style="background-color: #900">
- Here's a link: <a href="#">my link</a>
- </p>
- </div>
-
- <div id="backgroundTest-ancestor-1">
- <div id="backgroundTest-ancestor-0">
- <div id="backgroundTest-parent">
- <div id="backgroundTest">
- hello
- </div>
- </div>
- </div>
-</div>
-
-<div id="cavalier"></div>
- </div>
-
- </div>
-
- <br />
-</body>
-</html>