blob: 0b1f98f3e9a92f944692ac3e670494d89311a3a9 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
<script src="resources/shadow-dom.js"></script>
</head>
<body>
<p id="description"></p>
<div id="contenteditable-host1" contenteditable></div>
<div id="contenteditable-host2" contenteditable></div>
<div id="contenteditable-host3" contenteditable></div>
<div id="non-contenteditable-host1"></div>
<div id="non-contenteditable-host2"></div>
<div id="non-contenteditable-host3"></div>
<div id="sandbox"></div>
<div id="sandbox2"></div>
<pre id="console"></pre>
<script>
description("Tests to ensure that a '-webkit-user-modify' CSS porperty is not inherited across shadow boundaries.");
if (window.testRunner)
testRunner.dumpAsText();
function computedStyle(element, style) {
var cs = window.getComputedStyle(element);
if (!cs)
return '(NA)';
if (cs.getPropertyCSSValue(style))
return cs.getPropertyCSSValue(style).cssText;
return undefined;
}
function getUserModifyProperty(id) {
return computedStyle(document.getElementById(id), userModifyPropertyName);
}
function prepareNodeInShadowRoot(host, contentEditableAttributeValueForNode) {
var shadowRoot = host.webkitCreateShadowRoot();
var nodeInShadow = document.createElement('div');
if (contentEditableAttributeValueForNode != null)
nodeInShadow.setAttribute('contenteditable', contentEditableAttributeValueForNode);
shadowRoot.appendChild(nodeInShadow);
document.body.offsetLeft;
return nodeInShadow;
}
var userModifyPropertyName = '-webkit-user-modify';
shouldBeEqualToString('computedStyle(prepareNodeInShadowRoot(document.getElementById("contenteditable-host1"), null), userModifyPropertyName)', 'read-only');
shouldBeEqualToString('computedStyle(prepareNodeInShadowRoot(document.getElementById("contenteditable-host2"), "false"), userModifyPropertyName)', 'read-only');
shouldBeEqualToString('computedStyle(prepareNodeInShadowRoot(document.getElementById("contenteditable-host3"), "true"), userModifyPropertyName)', 'read-write');
shouldBeEqualToString('computedStyle(prepareNodeInShadowRoot(document.getElementById("non-contenteditable-host1"), null), userModifyPropertyName)', 'read-only');
shouldBeEqualToString('computedStyle(prepareNodeInShadowRoot(document.getElementById("non-contenteditable-host2"), "false"), userModifyPropertyName)', 'read-only');
shouldBeEqualToString('computedStyle(prepareNodeInShadowRoot(document.getElementById("non-contenteditable-host3"), "true"), userModifyPropertyName)', 'read-write');
document.getElementById('sandbox').appendChild(
createDOM('div', {'id': 'host', 'contenteditable': 'true'},
createShadowRoot(createDOM('content', {'select': '#child-a'}),
createDOM('div', {},
createDOM('content', {'select': '#child-b'}))),
createDOM('div', {'id': 'child-a'}),
createDOM('div', {'id': 'child-b'})));
document.body.offsetLeft;
shouldBeEqualToString('getUserModifyProperty("child-a")', 'read-write');
shouldBeEqualToString('getUserModifyProperty("child-b")', 'read-write');
document.getElementById('sandbox2').appendChild(
createDOM('div', {'id': 'host', 'contenteditable': 'false'},
createShadowRoot(createDOM('content', {'select': '#child-c'}),
createDOM('div', {'contenteditable' : 'true'},
createDOM('content', {'select': '#child-d'}))),
createDOM('div', {'id': 'child-c'}),
createDOM('div', {'id': 'child-d'})));
shouldBeEqualToString('getUserModifyProperty("child-c")', 'read-only');
shouldBeEqualToString('getUserModifyProperty("child-d")', 'read-only');
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>