Commit 9f147b47 authored by Orsi Batiz's avatar Orsi Batiz Committed by Commit Bot

Changes to HTMLMediaElement

Changing src attribute of HTMLMediaElement from DOMString to URLString
Adding SetSrc to html_media_element.cc which takes USVStringOrTrustedURL
as argument
Added tests

Bug: 739170
Change-Id: Ifde2c90add06cb7ba55596e3cbc06fb160ee2378
Reviewed-on: https://chromium-review.googlesource.com/1141737
Commit-Queue: Orsolya Bernadett Batiz <orsibatiz@google.com>
Reviewed-by: default avatarMike West <mkwst@chromium.org>
Cr-Commit-Position: refs/heads/master@{#576045}
parent 717b551f
<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="./support/helper.js"></script>
<body>
<script>
test(t => {
var url = TrustedURL.create(URLS.safe);
var d = document.createElement('video');
d.src = url;
assert_equals("" + d.src, URLS.safe);
}, "src = TrustedURL.create().");
test(t => {
var url = TrustedURL.unsafelyCreate(URLS.safe);
var d = document.createElement('video');
d.src = url;
assert_equals("" + d.src, URLS.safe);
}, "src = TrustedURL.unsafelyCreate().");
</script>
<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="./support/helper.js"></script>
<meta http-equiv="Content-Security-Policy" content="require-trusted-types">
<body>
<script>
//URL assignments don't throw
test(t => {
var url = TrustedURL.create(URLS.safe);
var d = document.createElement('video');
d.src = url;
assert_equals("" + d.src, URLS.safe);
}, "src = TrustedURL.create().");
test(t => {
var url = TrustedURL.unsafelyCreate(URLS.safe);
var d = document.createElement('video');
d.src = url;
assert_equals("" + d.src, URLS.safe);
}, "src = TrustedURL.unsafelyCreate().");
//String assignment throws
test(t => {
var d = document.createElement('video');
assert_throws(new TypeError(), _ => {
d.src = "Fail.";
});
}, "'src = string' throws.");
</script>
...@@ -789,6 +789,11 @@ void HTMLMediaElement::SetSrc(const AtomicString& url) { ...@@ -789,6 +789,11 @@ void HTMLMediaElement::SetSrc(const AtomicString& url) {
setAttribute(srcAttr, url); setAttribute(srcAttr, url);
} }
void HTMLMediaElement::SetSrc(const USVStringOrTrustedURL& stringOrURL,
ExceptionState& exception_state) {
setAttribute(srcAttr, stringOrURL, exception_state);
}
void HTMLMediaElement::SetSrcObject(MediaStreamDescriptor* src_object) { void HTMLMediaElement::SetSrcObject(MediaStreamDescriptor* src_object) {
BLINK_MEDIA_LOG << "setSrcObject(" << (void*)this << ")"; BLINK_MEDIA_LOG << "setSrcObject(" << (void*)this << ")";
src_object_ = src_object; src_object_ = src_object;
......
...@@ -139,6 +139,7 @@ class CORE_EXPORT HTMLMediaElement ...@@ -139,6 +139,7 @@ class CORE_EXPORT HTMLMediaElement
// network state // network state
void SetSrc(const AtomicString&); void SetSrc(const AtomicString&);
void SetSrc(const USVStringOrTrustedURL&, ExceptionState&);
const KURL& currentSrc() const { return current_src_; } const KURL& currentSrc() const { return current_src_; }
void SetSrcObject(MediaStreamDescriptor*); void SetSrcObject(MediaStreamDescriptor*);
MediaStreamDescriptor* GetSrcObject() const { return src_object_.Get(); } MediaStreamDescriptor* GetSrcObject() const { return src_object_.Get(); }
......
...@@ -25,6 +25,9 @@ ...@@ -25,6 +25,9 @@
// https://html.spec.whatwg.org/#media-elements // https://html.spec.whatwg.org/#media-elements
// The `URLString` reference below is from Trusted Types:
// https://github.com/WICG/trusted-types/, which is still WIP.
// https://crbug.com/739170.
enum CanPlayTypeResult { "" /* empty string */, "maybe", "probably" }; enum CanPlayTypeResult { "" /* empty string */, "maybe", "probably" };
[ [
ActiveScriptWrappable ActiveScriptWrappable
...@@ -34,7 +37,7 @@ enum CanPlayTypeResult { "" /* empty string */, "maybe", "probably" }; ...@@ -34,7 +37,7 @@ enum CanPlayTypeResult { "" /* empty string */, "maybe", "probably" };
readonly attribute MediaError? error; readonly attribute MediaError? error;
// network state // network state
[CEReactions, Reflect, URL] attribute DOMString src; [CEReactions, Reflect, URL, RaisesException=Setter] attribute URLString src;
// FIXME: attribute MediaProvider? srcObject; crbug.com/387740 // FIXME: attribute MediaProvider? srcObject; crbug.com/387740
readonly attribute DOMString currentSrc; readonly attribute DOMString currentSrc;
[CEReactions, Reflect, ReflectOnly=("anonymous","use-credentials"), ReflectEmpty="anonymous", ReflectInvalid="anonymous"] attribute DOMString? crossOrigin; [CEReactions, Reflect, ReflectOnly=("anonymous","use-credentials"), ReflectEmpty="anonymous", ReflectInvalid="anonymous"] attribute DOMString? crossOrigin;
......
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