aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/DOMURL.cpp
diff options
context:
space:
mode:
authorGravatar Dylan Conway <dylan.conway567@gmail.com> 2023-10-17 14:10:25 -0700
committerGravatar Dylan Conway <dylan.conway567@gmail.com> 2023-10-17 14:10:25 -0700
commit7458b969c5d9971e89d187b687e1924e78da427e (patch)
treeee3dbf95c728cf407bf49a27826b541e9264a8bd /src/bun.js/bindings/DOMURL.cpp
parentd4a2c29131ec154f5e4db897d4deedab2002cbc4 (diff)
parente91436e5248d947b50f90b4a7402690be8a41f39 (diff)
downloadbun-7458b969c5d9971e89d187b687e1924e78da427e.tar.gz
bun-7458b969c5d9971e89d187b687e1924e78da427e.tar.zst
bun-7458b969c5d9971e89d187b687e1924e78da427e.zip
Merge branch 'main' into postinstall_3
Diffstat (limited to 'src/bun.js/bindings/DOMURL.cpp')
-rw-r--r--src/bun.js/bindings/DOMURL.cpp33
1 files changed, 26 insertions, 7 deletions
diff --git a/src/bun.js/bindings/DOMURL.cpp b/src/bun.js/bindings/DOMURL.cpp
index 31381b867..b88161a4d 100644
--- a/src/bun.js/bindings/DOMURL.cpp
+++ b/src/bun.js/bindings/DOMURL.cpp
@@ -36,26 +36,45 @@
namespace WebCore {
+static inline String redact(const String& input)
+{
+ if (input.contains("@"_s))
+ return "<redacted>"_s;
+
+ return makeString('"', input, '"');
+}
+
inline DOMURL::DOMURL(URL&& completeURL, const URL& baseURL)
: m_baseURL(baseURL)
, m_url(WTFMove(completeURL))
{
}
+DOMURL::~DOMURL() = default;
+
+bool DOMURL::canParse(const String& url, const String& base)
+{
+ URL baseURL { base };
+ if (!base.isNull() && !baseURL.isValid())
+ return false;
+ URL completeURL { baseURL, url };
+ return completeURL.isValid();
+}
+
ExceptionOr<Ref<DOMURL>> DOMURL::create(const String& url, const URL& base)
{
ASSERT(base.isValid() || base.isNull());
URL completeURL { base, url };
if (!completeURL.isValid())
- return Exception { TypeError };
+ return Exception { TypeError, makeString(redact(url), " cannot be parsed as a URL.") };
return adoptRef(*new DOMURL(WTFMove(completeURL), base));
}
ExceptionOr<Ref<DOMURL>> DOMURL::create(const String& url, const String& base)
{
- URL baseURL { URL {}, base };
+ URL baseURL { base };
if (!base.isNull() && !baseURL.isValid())
- return Exception { TypeError };
+ return Exception { TypeError, makeString(redact(url), " cannot be parsed as a URL against "_s, redact(base)) };
return create(url, baseURL);
}
@@ -64,13 +83,13 @@ ExceptionOr<Ref<DOMURL>> DOMURL::create(const String& url, const DOMURL& base)
return create(url, base.href());
}
-DOMURL::~DOMURL() = default;
-
ExceptionOr<void> DOMURL::setHref(const String& url)
{
URL completeURL { URL {}, url };
- if (!completeURL.isValid())
- return Exception { TypeError };
+ if (!completeURL.isValid()) {
+
+ return Exception { TypeError, makeString(redact(url), " cannot be parsed as a URL.") };
+ }
m_url = WTFMove(completeURL);
if (m_searchParams)
m_searchParams->updateFromAssociatedURL();