diff options
author | 2023-10-17 14:10:25 -0700 | |
---|---|---|
committer | 2023-10-17 14:10:25 -0700 | |
commit | 7458b969c5d9971e89d187b687e1924e78da427e (patch) | |
tree | ee3dbf95c728cf407bf49a27826b541e9264a8bd /src/bun.js/bindings/DOMURL.cpp | |
parent | d4a2c29131ec154f5e4db897d4deedab2002cbc4 (diff) | |
parent | e91436e5248d947b50f90b4a7402690be8a41f39 (diff) | |
download | bun-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.cpp | 33 |
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(); |