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 ...@@ -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 'crossOrigin' in img is true
PASS img.crossOrigin is "" PASS img.crossOrigin is null
PASS img.setAttribute('crossorigin', ''); img.crossOrigin is "anonymous" 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', 'foo'); img.crossOrigin is "anonymous"
PASS img.setAttribute('crossorigin', 'ANONYMOUS'); 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.setAttribute('crossorigin', 'use-credentials'); img.crossOrigin is "use-credentials"
PASS img.crossOrigin = ''; img.getAttribute('crossorigin') is "" PASS img.crossOrigin = ''; img.getAttribute('crossorigin') is ""
PASS img.crossOrigin = 'foo'; img.getAttribute('crossorigin') is "foo" 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 = 'ANONYMOUS'; img.getAttribute('crossorigin') is "ANONYMOUS"
PASS img.crossOrigin = 'use-credentials'; img.getAttribute('crossorigin') is "use-credentials" PASS img.crossOrigin = 'use-credentials'; img.getAttribute('crossorigin') is "use-credentials"
PASS successfullyParsed is true PASS successfullyParsed is true
......
...@@ -4,15 +4,15 @@ ...@@ -4,15 +4,15 @@
description("This tests the handling of the img.crossOrigin attribute"); description("This tests the handling of the img.crossOrigin attribute");
var img = document.createElement("img"); var img = document.createElement("img");
shouldBeTrue("'crossOrigin' in img"); shouldBeTrue("'crossOrigin' in img");
shouldBeEqualToString("img.crossOrigin", ""); shouldBeNull("img.crossOrigin");
shouldBeEqualToString("img.setAttribute('crossorigin', ''); img.crossOrigin", "anonymous"); 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', 'foo'); img.crossOrigin", "anonymous");
shouldBeEqualToString("img.setAttribute('crossorigin', 'ANONYMOUS'); img.crossOrigin", "anonymous"); shouldBeEqualToString("img.setAttribute('crossorigin', 'ANONYMOUS'); img.crossOrigin", "anonymous");
shouldBeEqualToString("img.setAttribute('crossorigin', 'use-credentials'); img.crossOrigin", "use-credentials"); shouldBeEqualToString("img.setAttribute('crossorigin', 'use-credentials'); img.crossOrigin", "use-credentials");
shouldBeEqualToString("img.crossOrigin = ''; img.getAttribute('crossorigin')", ""); shouldBeEqualToString("img.crossOrigin = ''; img.getAttribute('crossorigin')", "");
shouldBeEqualToString("img.crossOrigin = 'foo'; img.getAttribute('crossorigin')", "foo"); 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 = 'ANONYMOUS'; img.getAttribute('crossorigin')", "ANONYMOUS");
shouldBeEqualToString("img.crossOrigin = 'use-credentials'; img.getAttribute('crossorigin')", "use-credentials"); shouldBeEqualToString("img.crossOrigin = 'use-credentials'; img.getAttribute('crossorigin')", "use-credentials");
</script> </script>
...@@ -4,15 +4,15 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE ...@@ -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 'crossOrigin' in link is true
PASS link.crossOrigin is "" PASS link.crossOrigin is null
PASS link.setAttribute('crossorigin', ''); link.crossOrigin is "anonymous" 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', 'foo'); link.crossOrigin is "anonymous"
PASS link.setAttribute('crossorigin', 'ANONYMOUS'); 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.setAttribute('crossorigin', 'use-credentials'); link.crossOrigin is "use-credentials"
PASS link.crossOrigin = ''; link.getAttribute('crossorigin') is "" PASS link.crossOrigin = ''; link.getAttribute('crossorigin') is ""
PASS link.crossOrigin = 'foo'; link.getAttribute('crossorigin') is "foo" 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 = 'ANONYMOUS'; link.getAttribute('crossorigin') is "ANONYMOUS"
PASS link.crossOrigin = 'use-credentials'; link.getAttribute('crossorigin') is "use-credentials" PASS link.crossOrigin = 'use-credentials'; link.getAttribute('crossorigin') is "use-credentials"
PASS successfullyParsed is true PASS successfullyParsed is true
......
...@@ -4,15 +4,15 @@ ...@@ -4,15 +4,15 @@
description("This tests the handling of the link.crossOrigin attribute"); description("This tests the handling of the link.crossOrigin attribute");
var link = document.createElement("link"); var link = document.createElement("link");
shouldBeTrue("'crossOrigin' in link"); shouldBeTrue("'crossOrigin' in link");
shouldBeEqualToString("link.crossOrigin", ""); shouldBeNull("link.crossOrigin");
shouldBeEqualToString("link.setAttribute('crossorigin', ''); link.crossOrigin", "anonymous"); 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', 'foo'); link.crossOrigin", "anonymous");
shouldBeEqualToString("link.setAttribute('crossorigin', 'ANONYMOUS'); link.crossOrigin", "anonymous"); shouldBeEqualToString("link.setAttribute('crossorigin', 'ANONYMOUS'); link.crossOrigin", "anonymous");
shouldBeEqualToString("link.setAttribute('crossorigin', 'use-credentials'); link.crossOrigin", "use-credentials"); shouldBeEqualToString("link.setAttribute('crossorigin', 'use-credentials'); link.crossOrigin", "use-credentials");
shouldBeEqualToString("link.crossOrigin = ''; link.getAttribute('crossorigin')", ""); shouldBeEqualToString("link.crossOrigin = ''; link.getAttribute('crossorigin')", "");
shouldBeEqualToString("link.crossOrigin = 'foo'; link.getAttribute('crossorigin')", "foo"); 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 = 'ANONYMOUS'; link.getAttribute('crossorigin')", "ANONYMOUS");
shouldBeEqualToString("link.crossOrigin = 'use-credentials'; link.getAttribute('crossorigin')", "use-credentials"); shouldBeEqualToString("link.crossOrigin = 'use-credentials'; link.getAttribute('crossorigin')", "use-credentials");
</script> </script>
...@@ -4,15 +4,15 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE ...@@ -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 'crossOrigin' in script is true
PASS script.crossOrigin is "" PASS script.crossOrigin is null
PASS script.setAttribute('crossorigin', ''); script.crossOrigin is "anonymous" 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', 'foo'); script.crossOrigin is "anonymous"
PASS script.setAttribute('crossorigin', 'ANONYMOUS'); 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.setAttribute('crossorigin', 'use-credentials'); script.crossOrigin is "use-credentials"
PASS script.crossOrigin = ''; script.getAttribute('crossorigin') is "" PASS script.crossOrigin = ''; script.getAttribute('crossorigin') is ""
PASS script.crossOrigin = 'foo'; script.getAttribute('crossorigin') is "foo" 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 = 'ANONYMOUS'; script.getAttribute('crossorigin') is "ANONYMOUS"
PASS script.crossOrigin = 'use-credentials'; script.getAttribute('crossorigin') is "use-credentials" PASS script.crossOrigin = 'use-credentials'; script.getAttribute('crossorigin') is "use-credentials"
PASS successfullyParsed is true PASS successfullyParsed is true
......
...@@ -4,15 +4,15 @@ ...@@ -4,15 +4,15 @@
description("This tests the handling of the script.crossOrigin attribute"); description("This tests the handling of the script.crossOrigin attribute");
var script = document.createElement("script"); var script = document.createElement("script");
shouldBeTrue("'crossOrigin' in script"); shouldBeTrue("'crossOrigin' in script");
shouldBeEqualToString("script.crossOrigin", ""); shouldBeNull("script.crossOrigin");
shouldBeEqualToString("script.setAttribute('crossorigin', ''); script.crossOrigin", "anonymous"); 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', 'foo'); script.crossOrigin", "anonymous");
shouldBeEqualToString("script.setAttribute('crossorigin', 'ANONYMOUS'); script.crossOrigin", "anonymous"); shouldBeEqualToString("script.setAttribute('crossorigin', 'ANONYMOUS'); script.crossOrigin", "anonymous");
shouldBeEqualToString("script.setAttribute('crossorigin', 'use-credentials'); script.crossOrigin", "use-credentials"); shouldBeEqualToString("script.setAttribute('crossorigin', 'use-credentials'); script.crossOrigin", "use-credentials");
shouldBeEqualToString("script.crossOrigin = ''; script.getAttribute('crossorigin')", ""); shouldBeEqualToString("script.crossOrigin = ''; script.getAttribute('crossorigin')", "");
shouldBeEqualToString("script.crossOrigin = 'foo'; script.getAttribute('crossorigin')", "foo"); 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 = 'ANONYMOUS'; script.getAttribute('crossorigin')", "ANONYMOUS");
shouldBeEqualToString("script.crossOrigin = 'use-credentials'; script.getAttribute('crossorigin')", "use-credentials"); shouldBeEqualToString("script.crossOrigin = 'use-credentials'; script.getAttribute('crossorigin')", "use-credentials");
</script> </script>
...@@ -136,7 +136,7 @@ TEST SUCCEEDED: The value was the string 'null'. [tested HTMLIFrameElement.width ...@@ -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.align]
TEST SUCCEEDED: The value was the string 'null'. [tested HTMLImageElement.alt] 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 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.longDesc]
TEST SUCCEEDED: The value was the string 'null' resolved as a URL. [tested HTMLImageElement.lowsrc] 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] 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 ...@@ -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'. [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' 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 '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 string 'null'. [tested HTMLScriptElement.nonce]
TEST SUCCEEDED: The value was the empty string. [tested HTMLSelectElement.value] TEST SUCCEEDED: The value was the empty string. [tested HTMLSelectElement.value]
......
...@@ -338,7 +338,7 @@ ...@@ -338,7 +338,7 @@
{name: 'align', expectedNull: 'null'}, {name: 'align', expectedNull: 'null'},
{name: 'alt', expectedNull: 'null'}, {name: 'alt', expectedNull: 'null'},
{name: 'border', expectedNull: ''}, {name: 'border', expectedNull: ''},
{name: 'crossOrigin', expectedNull: 'anonymous'}, {name: 'crossOrigin', expectedNull: null},
{name: 'longDesc', expectedNull: 'null', isUrl: true}, {name: 'longDesc', expectedNull: 'null', isUrl: true},
{name: 'lowsrc', expectedNull: 'null', isUrl: true}, {name: 'lowsrc', expectedNull: 'null', isUrl: true},
{name: 'name', expectedNull: 'null'}, {name: 'name', expectedNull: 'null'},
...@@ -557,7 +557,7 @@ ...@@ -557,7 +557,7 @@
{name: 'charset', expectedNull: 'null'}, {name: 'charset', expectedNull: 'null'},
{name: 'src', expectedNull: 'null', isUrl: true}, {name: 'src', expectedNull: 'null', isUrl: true},
{name: 'type', expectedNull: 'null'}, {name: 'type', expectedNull: 'null'},
{name: 'crossOrigin', expectedNull: 'anonymous'}, {name: 'crossOrigin', expectedNull: null},
{name: 'nonce', expectedNull: 'null'} {name: 'nonce', expectedNull: 'null'}
] ]
}, },
......
...@@ -10,7 +10,7 @@ test(function(){ ...@@ -10,7 +10,7 @@ test(function(){
}); });
test(function(){ test(function(){
var video = document.createElement('video'); var video = document.createElement('video');
assert_equals(video.crossOrigin, ''); assert_equals(video.crossOrigin, null);
}, document.title+', content attribute missing'); }, document.title+', content attribute missing');
test(function(){ test(function(){
var video = document.createElement('video'); var video = document.createElement('video');
...@@ -40,7 +40,7 @@ test(function(){ ...@@ -40,7 +40,7 @@ test(function(){
test(function(){ test(function(){
var video = document.createElement('video'); var video = document.createElement('video');
video.crossOrigin = null; video.crossOrigin = null;
assert_equals(video.getAttribute('crossorigin'), 'null'); assert_false(video.hasAttribute('crossorigin'));
}, document.title+', setting to null'); }, document.title+', setting to null');
test(function(){ test(function(){
var video = document.createElement('video'); var video = document.createElement('video');
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
[Reflect] attribute DOMString alt; [Reflect] attribute DOMString alt;
[Reflect, TreatNullAs=EmptyString] attribute DOMString border; [Reflect, TreatNullAs=EmptyString] attribute DOMString border;
readonly attribute boolean complete; 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; attribute long height;
[Reflect] attribute long hspace; [Reflect] attribute long hspace;
[Reflect] attribute boolean isMap; [Reflect] attribute boolean isMap;
......
...@@ -23,7 +23,7 @@ interface HTMLLinkElement : HTMLElement { ...@@ -23,7 +23,7 @@ interface HTMLLinkElement : HTMLElement {
[Reflect] attribute boolean disabled; [Reflect] attribute boolean disabled;
[Reflect] attribute DOMString charset; [Reflect] attribute DOMString charset;
[Reflect, URL] attribute DOMString href; [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 hreflang;
[Reflect] attribute DOMString media; [Reflect] attribute DOMString media;
[Reflect] attribute DOMString rel; [Reflect] attribute DOMString rel;
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
// network state // network state
[Reflect, URL] attribute DOMString src; [Reflect, URL] attribute DOMString src;
[URL] readonly attribute DOMString currentSrc; [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_EMPTY = 0;
const unsigned short NETWORK_IDLE = 1; const unsigned short NETWORK_IDLE = 1;
......
...@@ -26,7 +26,7 @@ interface HTMLScriptElement : HTMLElement { ...@@ -26,7 +26,7 @@ interface HTMLScriptElement : HTMLElement {
[Reflect] attribute boolean defer; [Reflect] attribute boolean defer;
[Reflect, URL] attribute DOMString src; [Reflect, URL] attribute DOMString src;
[Reflect] attribute DOMString type; [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=ExperimentalContentSecurityPolicyFeatures] attribute DOMString nonce;
[Reflect, RuntimeEnabled=SubresourceIntegrity] attribute DOMString integrity; [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