Commit eeaff3e9 authored by jl@opera.com's avatar jl@opera.com

Make 'crossOrigin' IDL attributes nullable

This affects the 'crossOrigin' IDL attributes in the interfaces
HTMLImageElement, HTMLLinkElement, HTMLMediaElement and HTMLScriptElement,
and is done to match the corresponding specification change:
  http://html5.org/r/8727

The effect is that on setting the IDL attribute to null, the content
attribute is removed (if present) instead of set to the string "null", and
on getting null is returned instead of the empty string if the content
attribute is not present.

BUG=409524

Review URL: https://codereview.chromium.org/529933002

git-svn-id: svn://svn.chromium.org/blink/trunk@181728 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 49fe9614
......@@ -4,15 +4,15 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
PASS 'crossOrigin' in img is true
PASS img.crossOrigin is ""
PASS img.crossOrigin is null
PASS img.setAttribute('crossorigin', ''); img.crossOrigin is "anonymous"
PASS img.removeAttribute('crossorigin'); img.crossOrigin is ""
PASS img.removeAttribute('crossorigin'); img.crossOrigin is null
PASS img.setAttribute('crossorigin', 'foo'); img.crossOrigin is "anonymous"
PASS img.setAttribute('crossorigin', 'ANONYMOUS'); img.crossOrigin is "anonymous"
PASS img.setAttribute('crossorigin', 'use-credentials'); img.crossOrigin is "use-credentials"
PASS img.crossOrigin = ''; img.getAttribute('crossorigin') is ""
PASS img.crossOrigin = 'foo'; img.getAttribute('crossorigin') is "foo"
PASS img.crossOrigin = null; img.getAttribute('crossorigin') is "null"
PASS img.crossOrigin = null; img.hasAttribute('crossorigin') is false
PASS img.crossOrigin = 'ANONYMOUS'; img.getAttribute('crossorigin') is "ANONYMOUS"
PASS img.crossOrigin = 'use-credentials'; img.getAttribute('crossorigin') is "use-credentials"
PASS successfullyParsed is true
......
......@@ -4,15 +4,15 @@
description("This tests the handling of the img.crossOrigin attribute");
var img = document.createElement("img");
shouldBeTrue("'crossOrigin' in img");
shouldBeEqualToString("img.crossOrigin", "");
shouldBeNull("img.crossOrigin");
shouldBeEqualToString("img.setAttribute('crossorigin', ''); img.crossOrigin", "anonymous");
shouldBeEqualToString("img.removeAttribute('crossorigin'); img.crossOrigin", "");
shouldBeNull("img.removeAttribute('crossorigin'); img.crossOrigin");
shouldBeEqualToString("img.setAttribute('crossorigin', 'foo'); img.crossOrigin", "anonymous");
shouldBeEqualToString("img.setAttribute('crossorigin', 'ANONYMOUS'); img.crossOrigin", "anonymous");
shouldBeEqualToString("img.setAttribute('crossorigin', 'use-credentials'); img.crossOrigin", "use-credentials");
shouldBeEqualToString("img.crossOrigin = ''; img.getAttribute('crossorigin')", "");
shouldBeEqualToString("img.crossOrigin = 'foo'; img.getAttribute('crossorigin')", "foo");
shouldBeEqualToString("img.crossOrigin = null; img.getAttribute('crossorigin')", "null");
shouldBeFalse("img.crossOrigin = null; img.hasAttribute('crossorigin')");
shouldBeEqualToString("img.crossOrigin = 'ANONYMOUS'; img.getAttribute('crossorigin')", "ANONYMOUS");
shouldBeEqualToString("img.crossOrigin = 'use-credentials'; img.getAttribute('crossorigin')", "use-credentials");
</script>
......@@ -4,15 +4,15 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
PASS 'crossOrigin' in link is true
PASS link.crossOrigin is ""
PASS link.crossOrigin is null
PASS link.setAttribute('crossorigin', ''); link.crossOrigin is "anonymous"
PASS link.removeAttribute('crossorigin'); link.crossOrigin is ""
PASS link.removeAttribute('crossorigin'); link.crossOrigin is null
PASS link.setAttribute('crossorigin', 'foo'); link.crossOrigin is "anonymous"
PASS link.setAttribute('crossorigin', 'ANONYMOUS'); link.crossOrigin is "anonymous"
PASS link.setAttribute('crossorigin', 'use-credentials'); link.crossOrigin is "use-credentials"
PASS link.crossOrigin = ''; link.getAttribute('crossorigin') is ""
PASS link.crossOrigin = 'foo'; link.getAttribute('crossorigin') is "foo"
PASS link.crossOrigin = null; link.getAttribute('crossorigin') is "null"
PASS link.crossOrigin = null; link.hasAttribute('crossorigin') is false
PASS link.crossOrigin = 'ANONYMOUS'; link.getAttribute('crossorigin') is "ANONYMOUS"
PASS link.crossOrigin = 'use-credentials'; link.getAttribute('crossorigin') is "use-credentials"
PASS successfullyParsed is true
......
......@@ -4,15 +4,15 @@
description("This tests the handling of the link.crossOrigin attribute");
var link = document.createElement("link");
shouldBeTrue("'crossOrigin' in link");
shouldBeEqualToString("link.crossOrigin", "");
shouldBeNull("link.crossOrigin");
shouldBeEqualToString("link.setAttribute('crossorigin', ''); link.crossOrigin", "anonymous");
shouldBeEqualToString("link.removeAttribute('crossorigin'); link.crossOrigin", "");
shouldBeNull("link.removeAttribute('crossorigin'); link.crossOrigin");
shouldBeEqualToString("link.setAttribute('crossorigin', 'foo'); link.crossOrigin", "anonymous");
shouldBeEqualToString("link.setAttribute('crossorigin', 'ANONYMOUS'); link.crossOrigin", "anonymous");
shouldBeEqualToString("link.setAttribute('crossorigin', 'use-credentials'); link.crossOrigin", "use-credentials");
shouldBeEqualToString("link.crossOrigin = ''; link.getAttribute('crossorigin')", "");
shouldBeEqualToString("link.crossOrigin = 'foo'; link.getAttribute('crossorigin')", "foo");
shouldBeEqualToString("link.crossOrigin = null; link.getAttribute('crossorigin')", "null");
shouldBeFalse("link.crossOrigin = null; link.hasAttribute('crossorigin')");
shouldBeEqualToString("link.crossOrigin = 'ANONYMOUS'; link.getAttribute('crossorigin')", "ANONYMOUS");
shouldBeEqualToString("link.crossOrigin = 'use-credentials'; link.getAttribute('crossorigin')", "use-credentials");
</script>
......@@ -4,15 +4,15 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
PASS 'crossOrigin' in script is true
PASS script.crossOrigin is ""
PASS script.crossOrigin is null
PASS script.setAttribute('crossorigin', ''); script.crossOrigin is "anonymous"
PASS script.removeAttribute('crossorigin'); script.crossOrigin is ""
PASS script.removeAttribute('crossorigin'); script.crossOrigin is null
PASS script.setAttribute('crossorigin', 'foo'); script.crossOrigin is "anonymous"
PASS script.setAttribute('crossorigin', 'ANONYMOUS'); script.crossOrigin is "anonymous"
PASS script.setAttribute('crossorigin', 'use-credentials'); script.crossOrigin is "use-credentials"
PASS script.crossOrigin = ''; script.getAttribute('crossorigin') is ""
PASS script.crossOrigin = 'foo'; script.getAttribute('crossorigin') is "foo"
PASS script.crossOrigin = null; script.getAttribute('crossorigin') is "null"
PASS script.crossOrigin = null; script.hasAttribute('crossorigin') is false
PASS script.crossOrigin = 'ANONYMOUS'; script.getAttribute('crossorigin') is "ANONYMOUS"
PASS script.crossOrigin = 'use-credentials'; script.getAttribute('crossorigin') is "use-credentials"
PASS successfullyParsed is true
......
......@@ -4,15 +4,15 @@
description("This tests the handling of the script.crossOrigin attribute");
var script = document.createElement("script");
shouldBeTrue("'crossOrigin' in script");
shouldBeEqualToString("script.crossOrigin", "");
shouldBeNull("script.crossOrigin");
shouldBeEqualToString("script.setAttribute('crossorigin', ''); script.crossOrigin", "anonymous");
shouldBeEqualToString("script.removeAttribute('crossorigin'); script.crossOrigin", "");
shouldBeNull("script.removeAttribute('crossorigin'); script.crossOrigin");
shouldBeEqualToString("script.setAttribute('crossorigin', 'foo'); script.crossOrigin", "anonymous");
shouldBeEqualToString("script.setAttribute('crossorigin', 'ANONYMOUS'); script.crossOrigin", "anonymous");
shouldBeEqualToString("script.setAttribute('crossorigin', 'use-credentials'); script.crossOrigin", "use-credentials");
shouldBeEqualToString("script.crossOrigin = ''; script.getAttribute('crossorigin')", "");
shouldBeEqualToString("script.crossOrigin = 'foo'; script.getAttribute('crossorigin')", "foo");
shouldBeEqualToString("script.crossOrigin = null; script.getAttribute('crossorigin')", "null");
shouldBeFalse("script.crossOrigin = null; script.hasAttribute('crossorigin')");
shouldBeEqualToString("script.crossOrigin = 'ANONYMOUS'; script.getAttribute('crossorigin')", "ANONYMOUS");
shouldBeEqualToString("script.crossOrigin = 'use-credentials'; script.getAttribute('crossorigin')", "use-credentials");
</script>
......@@ -136,7 +136,7 @@ TEST SUCCEEDED: The value was the string 'null'. [tested HTMLIFrameElement.width
TEST SUCCEEDED: The value was the string 'null'. [tested HTMLImageElement.align]
TEST SUCCEEDED: The value was the string 'null'. [tested HTMLImageElement.alt]
TEST SUCCEEDED: The value was the empty string. [tested HTMLImageElement.border]
TEST SUCCEEDED: The value was the string 'anonymous'. [tested HTMLImageElement.crossOrigin]
TEST SUCCEEDED: The value was null. [tested HTMLImageElement.crossOrigin]
TEST SUCCEEDED: The value was the string 'null' resolved as a URL. [tested HTMLImageElement.longDesc]
TEST SUCCEEDED: The value was the string 'null' resolved as a URL. [tested HTMLImageElement.lowsrc]
TEST SUCCEEDED: The value was the string 'null'. [tested HTMLImageElement.name]
......@@ -242,7 +242,7 @@ TEST SUCCEEDED: The value was the string 'null'. [tested HTMLScriptElement.event
TEST SUCCEEDED: The value was the string 'null'. [tested HTMLScriptElement.charset]
TEST SUCCEEDED: The value was the string 'null' resolved as a URL. [tested HTMLScriptElement.src]
TEST SUCCEEDED: The value was the string 'null'. [tested HTMLScriptElement.type]
TEST SUCCEEDED: The value was the string 'anonymous'. [tested HTMLScriptElement.crossOrigin]
TEST SUCCEEDED: The value was null. [tested HTMLScriptElement.crossOrigin]
TEST SUCCEEDED: The value was the string 'null'. [tested HTMLScriptElement.nonce]
TEST SUCCEEDED: The value was the empty string. [tested HTMLSelectElement.value]
......
......@@ -338,7 +338,7 @@
{name: 'align', expectedNull: 'null'},
{name: 'alt', expectedNull: 'null'},
{name: 'border', expectedNull: ''},
{name: 'crossOrigin', expectedNull: 'anonymous'},
{name: 'crossOrigin', expectedNull: null},
{name: 'longDesc', expectedNull: 'null', isUrl: true},
{name: 'lowsrc', expectedNull: 'null', isUrl: true},
{name: 'name', expectedNull: 'null'},
......@@ -557,7 +557,7 @@
{name: 'charset', expectedNull: 'null'},
{name: 'src', expectedNull: 'null', isUrl: true},
{name: 'type', expectedNull: 'null'},
{name: 'crossOrigin', expectedNull: 'anonymous'},
{name: 'crossOrigin', expectedNull: null},
{name: 'nonce', expectedNull: 'null'}
]
},
......
......@@ -10,7 +10,7 @@ test(function(){
});
test(function(){
var video = document.createElement('video');
assert_equals(video.crossOrigin, '');
assert_equals(video.crossOrigin, null);
}, document.title+', content attribute missing');
test(function(){
var video = document.createElement('video');
......@@ -40,7 +40,7 @@ test(function(){
test(function(){
var video = document.createElement('video');
video.crossOrigin = null;
assert_equals(video.getAttribute('crossorigin'), 'null');
assert_false(video.hasAttribute('crossorigin'));
}, document.title+', setting to null');
test(function(){
var video = document.createElement('video');
......
......@@ -28,7 +28,7 @@
[Reflect] attribute DOMString alt;
[Reflect, TreatNullAs=EmptyString] attribute DOMString border;
readonly attribute boolean complete;
[Reflect, ReflectOnly=("anonymous","use-credentials"), ReflectEmpty="anonymous", ReflectInvalid="anonymous"] attribute DOMString crossOrigin;
[Reflect, ReflectOnly=("anonymous","use-credentials"), ReflectEmpty="anonymous", ReflectInvalid="anonymous"] attribute DOMString? crossOrigin;
attribute long height;
[Reflect] attribute long hspace;
[Reflect] attribute boolean isMap;
......
......@@ -23,7 +23,7 @@ interface HTMLLinkElement : HTMLElement {
[Reflect] attribute boolean disabled;
[Reflect] attribute DOMString charset;
[Reflect, URL] attribute DOMString href;
[Reflect, ReflectOnly=("anonymous","use-credentials"), ReflectEmpty="anonymous", ReflectInvalid="anonymous"] attribute DOMString crossOrigin;
[Reflect, ReflectOnly=("anonymous","use-credentials"), ReflectEmpty="anonymous", ReflectInvalid="anonymous"] attribute DOMString? crossOrigin;
[Reflect] attribute DOMString hreflang;
[Reflect] attribute DOMString media;
[Reflect] attribute DOMString rel;
......
......@@ -36,7 +36,7 @@
// network state
[Reflect, URL] attribute DOMString src;
[URL] readonly attribute DOMString currentSrc;
[Reflect, ReflectOnly=("anonymous","use-credentials"), ReflectEmpty="anonymous", ReflectInvalid="anonymous"] attribute DOMString crossOrigin;
[Reflect, ReflectOnly=("anonymous","use-credentials"), ReflectEmpty="anonymous", ReflectInvalid="anonymous"] attribute DOMString? crossOrigin;
const unsigned short NETWORK_EMPTY = 0;
const unsigned short NETWORK_IDLE = 1;
......
......@@ -26,7 +26,7 @@ interface HTMLScriptElement : HTMLElement {
[Reflect] attribute boolean defer;
[Reflect, URL] attribute DOMString src;
[Reflect] attribute DOMString type;
[Reflect, ReflectOnly=("anonymous","use-credentials"), ReflectEmpty="anonymous", ReflectInvalid="anonymous"] attribute DOMString crossOrigin;
[Reflect, ReflectOnly=("anonymous","use-credentials"), ReflectEmpty="anonymous", ReflectInvalid="anonymous"] attribute DOMString? crossOrigin;
[Reflect, RuntimeEnabled=ExperimentalContentSecurityPolicyFeatures] attribute DOMString nonce;
[Reflect, RuntimeEnabled=SubresourceIntegrity] attribute DOMString integrity;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment