summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/url/dom_url_utils.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/core/url/dom_url_utils.cc')
-rw-r--r--chromium/third_party/blink/renderer/core/url/dom_url_utils.cc25
1 files changed, 23 insertions, 2 deletions
diff --git a/chromium/third_party/blink/renderer/core/url/dom_url_utils.cc b/chromium/third_party/blink/renderer/core/url/dom_url_utils.cc
index e597624e9fe..928053a4236 100644
--- a/chromium/third_party/blink/renderer/core/url/dom_url_utils.cc
+++ b/chromium/third_party/blink/renderer/core/url/dom_url_utils.cc
@@ -26,14 +26,35 @@
#include "third_party/blink/renderer/core/url/dom_url_utils.h"
-#include "third_party/blink/renderer/bindings/core/v8/exception_state.h"
+#include "third_party/blink/renderer/bindings/core/v8/usv_string_or_trusted_url.h"
+#include "third_party/blink/renderer/core/dom/document.h"
+#include "third_party/blink/renderer/core/trustedtypes/trusted_url.h"
+#include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/weborigin/known_ports.h"
namespace blink {
DOMURLUtils::~DOMURLUtils() = default;
-void DOMURLUtils::setHref(const String& value) {
+void DOMURLUtils::setHref(ScriptState* script_state,
+ const USVStringOrTrustedURL& stringOrUrl,
+ ExceptionState& exception_state) {
+ DCHECK(stringOrUrl.IsUSVString() ||
+ RuntimeEnabledFeatures::TrustedDOMTypesEnabled());
+ DCHECK(!stringOrUrl.IsNull());
+
+ if (ExecutionContext::From(script_state)->IsDocument()) {
+ Document* document = ToDocument((ExecutionContext::From(script_state)));
+ if (!stringOrUrl.IsTrustedURL() && document->RequireTrustedTypes()) {
+ exception_state.ThrowTypeError(
+ "This document requires `TrustedURL` assignment.");
+ return;
+ }
+ }
+
+ String value = stringOrUrl.IsUSVString()
+ ? stringOrUrl.GetAsUSVString()
+ : stringOrUrl.GetAsTrustedURL()->toString();
SetInput(value);
}