mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 03:15:11 +00:00
Bug 1448328 - Use thread-safe nsIURI in the URI API - part 1 - No getter/setter runnables, r=valentin
This commit is contained in:
parent
1a39373d7d
commit
4b23deda27
@ -209,26 +209,19 @@ GetRequestURLFromWorker(const GlobalObject& aGlobal, const nsAString& aInput,
|
||||
return;
|
||||
}
|
||||
nsString username;
|
||||
url->GetUsername(username, aRv);
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return;
|
||||
}
|
||||
url->GetUsername(username);
|
||||
|
||||
nsString password;
|
||||
url->GetPassword(password, aRv);
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return;
|
||||
}
|
||||
url->GetPassword(password);
|
||||
|
||||
if (!username.IsEmpty() || !password.IsEmpty()) {
|
||||
aRv.ThrowTypeError<MSG_URL_HAS_CREDENTIALS>(aInput);
|
||||
return;
|
||||
}
|
||||
|
||||
// Get the fragment from URL.
|
||||
nsAutoString fragment;
|
||||
url->GetHash(fragment, aRv);
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return;
|
||||
}
|
||||
url->GetHash(fragment);
|
||||
|
||||
// Note: URL::GetHash() includes the "#" and we want the fragment with out
|
||||
// the hash symbol.
|
||||
@ -236,14 +229,8 @@ GetRequestURLFromWorker(const GlobalObject& aGlobal, const nsAString& aInput,
|
||||
CopyUTF16toUTF8(Substring(fragment, 1), aURLfragment);
|
||||
}
|
||||
|
||||
url->SetHash(EmptyString(), aRv);
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return;
|
||||
}
|
||||
url->Stringify(aRequestURL, aRv);
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return;
|
||||
}
|
||||
url->SetHash(EmptyString());
|
||||
url->Stringify(aRequestURL);
|
||||
}
|
||||
|
||||
class ReferrerSameOriginChecker final : public WorkerMainThreadRunnable
|
||||
@ -399,11 +386,7 @@ Request::Constructor(const GlobalObject& aGlobal,
|
||||
aRv.ThrowTypeError<MSG_INVALID_REFERRER_URL>(referrer);
|
||||
return nullptr;
|
||||
}
|
||||
url->Stringify(referrerURL, aRv);
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
aRv.ThrowTypeError<MSG_INVALID_REFERRER_URL>(referrer);
|
||||
return nullptr;
|
||||
}
|
||||
url->Stringify(referrerURL);
|
||||
if (!referrerURL.EqualsLiteral(kFETCH_CLIENT_REFERRER_STR)) {
|
||||
WorkerPrivate* worker = GetCurrentThreadWorkerPrivate();
|
||||
nsresult rv = NS_OK;
|
||||
|
@ -129,11 +129,7 @@ Response::Redirect(const GlobalObject& aGlobal, const nsAString& aUrl,
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
url->Stringify(parsedURL, aRv);
|
||||
}
|
||||
|
||||
if (aRv.Failed()) {
|
||||
return nullptr;
|
||||
url->Stringify(parsedURL);
|
||||
}
|
||||
|
||||
if (aStatus != 301 && aStatus != 302 && aStatus != 303 && aStatus != 307 && aStatus != 308) {
|
||||
|
@ -126,9 +126,9 @@ URL::CreateSearchParamsIfNeeded()
|
||||
}
|
||||
|
||||
void
|
||||
URL::SetSearch(const nsAString& aSearch, ErrorResult& aRv)
|
||||
URL::SetSearch(const nsAString& aSearch)
|
||||
{
|
||||
SetSearchInternal(aSearch, aRv);
|
||||
SetSearchInternal(aSearch);
|
||||
UpdateURLSearchParams();
|
||||
}
|
||||
|
||||
@ -141,10 +141,7 @@ URL::URLSearchParamsUpdated(URLSearchParams* aSearchParams)
|
||||
nsAutoString search;
|
||||
mSearchParams->Serialize(search);
|
||||
|
||||
ErrorResult rv;
|
||||
SetSearchInternal(search, rv);
|
||||
NS_WARNING_ASSERTION(!rv.Failed(), "SetSearchInternal failed");
|
||||
rv.SuppressException();
|
||||
SetSearchInternal(search);
|
||||
}
|
||||
|
||||
} // namespace dom
|
||||
|
@ -78,7 +78,7 @@ public:
|
||||
ErrorResult& aRv);
|
||||
|
||||
virtual void
|
||||
GetHref(nsAString& aHref, ErrorResult& aRv) const = 0;
|
||||
GetHref(nsAString& aHref) const = 0;
|
||||
|
||||
virtual void
|
||||
SetHref(const nsAString& aHref, ErrorResult& aRv) = 0;
|
||||
@ -87,70 +87,70 @@ public:
|
||||
GetOrigin(nsAString& aOrigin, ErrorResult& aRv) const = 0;
|
||||
|
||||
virtual void
|
||||
GetProtocol(nsAString& aProtocol, ErrorResult& aRv) const = 0;
|
||||
GetProtocol(nsAString& aProtocol) const = 0;
|
||||
|
||||
virtual void
|
||||
SetProtocol(const nsAString& aProtocol, ErrorResult& aRv) = 0;
|
||||
|
||||
virtual void
|
||||
GetUsername(nsAString& aUsername, ErrorResult& aRv) const = 0;
|
||||
GetUsername(nsAString& aUsername) const = 0;
|
||||
|
||||
virtual void
|
||||
SetUsername(const nsAString& aUsername, ErrorResult& aRv) = 0;
|
||||
SetUsername(const nsAString& aUsername) = 0;
|
||||
|
||||
virtual void
|
||||
GetPassword(nsAString& aPassword, ErrorResult& aRv) const = 0;
|
||||
GetPassword(nsAString& aPassword) const = 0;
|
||||
|
||||
virtual void
|
||||
SetPassword(const nsAString& aPassword, ErrorResult& aRv) = 0;
|
||||
SetPassword(const nsAString& aPassword) = 0;
|
||||
|
||||
virtual void
|
||||
GetHost(nsAString& aHost, ErrorResult& aRv) const = 0;
|
||||
GetHost(nsAString& aHost) const = 0;
|
||||
|
||||
virtual void
|
||||
SetHost(const nsAString& aHost, ErrorResult& aRv) = 0;
|
||||
SetHost(const nsAString& aHost) = 0;
|
||||
|
||||
virtual void
|
||||
GetHostname(nsAString& aHostname, ErrorResult& aRv) const = 0;
|
||||
GetHostname(nsAString& aHostname) const = 0;
|
||||
|
||||
virtual void
|
||||
SetHostname(const nsAString& aHostname, ErrorResult& aRv) = 0;
|
||||
SetHostname(const nsAString& aHostname) = 0;
|
||||
|
||||
virtual void
|
||||
GetPort(nsAString& aPort, ErrorResult& aRv) const = 0;
|
||||
GetPort(nsAString& aPort) const = 0;
|
||||
|
||||
virtual void
|
||||
SetPort(const nsAString& aPort, ErrorResult& aRv) = 0;
|
||||
SetPort(const nsAString& aPort) = 0;
|
||||
|
||||
virtual void
|
||||
GetPathname(nsAString& aPathname, ErrorResult& aRv) const = 0;
|
||||
GetPathname(nsAString& aPathname) const = 0;
|
||||
|
||||
virtual void
|
||||
SetPathname(const nsAString& aPathname, ErrorResult& aRv) = 0;
|
||||
SetPathname(const nsAString& aPathname) = 0;
|
||||
|
||||
virtual void
|
||||
GetSearch(nsAString& aSearch, ErrorResult& aRv) const = 0;
|
||||
GetSearch(nsAString& aSearch) const = 0;
|
||||
|
||||
virtual void
|
||||
SetSearch(const nsAString& aSearch, ErrorResult& aRv);
|
||||
SetSearch(const nsAString& aSearch);
|
||||
|
||||
URLSearchParams* SearchParams();
|
||||
|
||||
virtual void
|
||||
GetHash(nsAString& aHost, ErrorResult& aRv) const = 0;
|
||||
GetHash(nsAString& aHost) const = 0;
|
||||
|
||||
virtual void
|
||||
SetHash(const nsAString& aHash, ErrorResult& aRv) = 0;
|
||||
SetHash(const nsAString& aHash) = 0;
|
||||
|
||||
void Stringify(nsAString& aRetval, ErrorResult& aRv) const
|
||||
void Stringify(nsAString& aRetval) const
|
||||
{
|
||||
GetHref(aRetval, aRv);
|
||||
GetHref(aRetval);
|
||||
}
|
||||
|
||||
void
|
||||
ToJSON(nsAString& aResult, ErrorResult& aRv) const
|
||||
ToJSON(nsAString& aResult) const
|
||||
{
|
||||
GetHref(aResult, aRv);
|
||||
GetHref(aResult);
|
||||
}
|
||||
|
||||
// URLSearchParamsObserver
|
||||
@ -165,7 +165,7 @@ protected:
|
||||
UpdateURLSearchParams() = 0;
|
||||
|
||||
virtual void
|
||||
SetSearchInternal(const nsAString& aSearch, ErrorResult& aRv) = 0;
|
||||
SetSearchInternal(const nsAString& aSearch) = 0;
|
||||
|
||||
void CreateSearchParamsIfNeeded();
|
||||
|
||||
|
@ -184,7 +184,7 @@ URLMainThread::IsValidURL(const GlobalObject& aGlobal, const nsAString& aURL,
|
||||
}
|
||||
|
||||
void
|
||||
URLMainThread::GetHref(nsAString& aHref, ErrorResult& aRv) const
|
||||
URLMainThread::GetHref(nsAString& aHref) const
|
||||
{
|
||||
aHref.Truncate();
|
||||
|
||||
@ -225,7 +225,7 @@ URLMainThread::GetOrigin(nsAString& aOrigin, ErrorResult& aRv) const
|
||||
}
|
||||
|
||||
void
|
||||
URLMainThread::GetProtocol(nsAString& aProtocol, ErrorResult& aRv) const
|
||||
URLMainThread::GetProtocol(nsAString& aProtocol) const
|
||||
{
|
||||
nsAutoCString protocol;
|
||||
if (NS_SUCCEEDED(mURI->GetScheme(protocol))) {
|
||||
@ -281,13 +281,13 @@ URLMainThread::SetProtocol(const nsAString& aProtocol, ErrorResult& aRv)
|
||||
}
|
||||
|
||||
void
|
||||
URLMainThread::GetUsername(nsAString& aUsername, ErrorResult& aRv) const
|
||||
URLMainThread::GetUsername(nsAString& aUsername) const
|
||||
{
|
||||
URL_GETTER(aUsername, GetUsername);
|
||||
}
|
||||
|
||||
void
|
||||
URLMainThread::SetUsername(const nsAString& aUsername, ErrorResult& aRv)
|
||||
URLMainThread::SetUsername(const nsAString& aUsername)
|
||||
{
|
||||
Unused << NS_MutateURI(mURI)
|
||||
.SetUsername(NS_ConvertUTF16toUTF8(aUsername))
|
||||
@ -295,13 +295,13 @@ URLMainThread::SetUsername(const nsAString& aUsername, ErrorResult& aRv)
|
||||
}
|
||||
|
||||
void
|
||||
URLMainThread::GetPassword(nsAString& aPassword, ErrorResult& aRv) const
|
||||
URLMainThread::GetPassword(nsAString& aPassword) const
|
||||
{
|
||||
URL_GETTER(aPassword, GetPassword);
|
||||
}
|
||||
|
||||
void
|
||||
URLMainThread::SetPassword(const nsAString& aPassword, ErrorResult& aRv)
|
||||
URLMainThread::SetPassword(const nsAString& aPassword)
|
||||
{
|
||||
Unused << NS_MutateURI(mURI)
|
||||
.SetPassword(NS_ConvertUTF16toUTF8(aPassword))
|
||||
@ -309,13 +309,13 @@ URLMainThread::SetPassword(const nsAString& aPassword, ErrorResult& aRv)
|
||||
}
|
||||
|
||||
void
|
||||
URLMainThread::GetHost(nsAString& aHost, ErrorResult& aRv) const
|
||||
URLMainThread::GetHost(nsAString& aHost) const
|
||||
{
|
||||
URL_GETTER(aHost, GetHostPort);
|
||||
}
|
||||
|
||||
void
|
||||
URLMainThread::SetHost(const nsAString& aHost, ErrorResult& aRv)
|
||||
URLMainThread::SetHost(const nsAString& aHost)
|
||||
{
|
||||
Unused << NS_MutateURI(mURI)
|
||||
.SetHostPort(NS_ConvertUTF16toUTF8(aHost))
|
||||
@ -339,14 +339,14 @@ URLMainThread::UpdateURLSearchParams()
|
||||
}
|
||||
|
||||
void
|
||||
URLMainThread::GetHostname(nsAString& aHostname, ErrorResult& aRv) const
|
||||
URLMainThread::GetHostname(nsAString& aHostname) const
|
||||
{
|
||||
aHostname.Truncate();
|
||||
nsContentUtils::GetHostOrIPv6WithBrackets(mURI, aHostname);
|
||||
}
|
||||
|
||||
void
|
||||
URLMainThread::SetHostname(const nsAString& aHostname, ErrorResult& aRv)
|
||||
URLMainThread::SetHostname(const nsAString& aHostname)
|
||||
{
|
||||
// nsStandardURL returns NS_ERROR_UNEXPECTED for an empty hostname
|
||||
// The return code is silently ignored
|
||||
@ -356,7 +356,7 @@ URLMainThread::SetHostname(const nsAString& aHostname, ErrorResult& aRv)
|
||||
}
|
||||
|
||||
void
|
||||
URLMainThread::GetPort(nsAString& aPort, ErrorResult& aRv) const
|
||||
URLMainThread::GetPort(nsAString& aPort) const
|
||||
{
|
||||
aPort.Truncate();
|
||||
|
||||
@ -370,7 +370,7 @@ URLMainThread::GetPort(nsAString& aPort, ErrorResult& aRv) const
|
||||
}
|
||||
|
||||
void
|
||||
URLMainThread::SetPort(const nsAString& aPort, ErrorResult& aRv)
|
||||
URLMainThread::SetPort(const nsAString& aPort)
|
||||
{
|
||||
nsresult rv;
|
||||
nsAutoString portStr(aPort);
|
||||
@ -390,7 +390,7 @@ URLMainThread::SetPort(const nsAString& aPort, ErrorResult& aRv)
|
||||
}
|
||||
|
||||
void
|
||||
URLMainThread::GetPathname(nsAString& aPathname, ErrorResult& aRv) const
|
||||
URLMainThread::GetPathname(nsAString& aPathname) const
|
||||
{
|
||||
aPathname.Truncate();
|
||||
|
||||
@ -405,7 +405,7 @@ URLMainThread::GetPathname(nsAString& aPathname, ErrorResult& aRv) const
|
||||
}
|
||||
|
||||
void
|
||||
URLMainThread::SetPathname(const nsAString& aPathname, ErrorResult& aRv)
|
||||
URLMainThread::SetPathname(const nsAString& aPathname)
|
||||
{
|
||||
// Do not throw!
|
||||
|
||||
@ -415,7 +415,7 @@ URLMainThread::SetPathname(const nsAString& aPathname, ErrorResult& aRv)
|
||||
}
|
||||
|
||||
void
|
||||
URLMainThread::GetSearch(nsAString& aSearch, ErrorResult& aRv) const
|
||||
URLMainThread::GetSearch(nsAString& aSearch) const
|
||||
{
|
||||
aSearch.Truncate();
|
||||
|
||||
@ -433,7 +433,7 @@ URLMainThread::GetSearch(nsAString& aSearch, ErrorResult& aRv) const
|
||||
}
|
||||
|
||||
void
|
||||
URLMainThread::GetHash(nsAString& aHash, ErrorResult& aRv) const
|
||||
URLMainThread::GetHash(nsAString& aHash) const
|
||||
{
|
||||
aHash.Truncate();
|
||||
|
||||
@ -446,7 +446,7 @@ URLMainThread::GetHash(nsAString& aHash, ErrorResult& aRv) const
|
||||
}
|
||||
|
||||
void
|
||||
URLMainThread::SetHash(const nsAString& aHash, ErrorResult& aRv)
|
||||
URLMainThread::SetHash(const nsAString& aHash)
|
||||
{
|
||||
Unused << NS_MutateURI(mURI)
|
||||
.SetRef(NS_ConvertUTF16toUTF8(aHash))
|
||||
@ -454,7 +454,7 @@ URLMainThread::SetHash(const nsAString& aHash, ErrorResult& aRv)
|
||||
}
|
||||
|
||||
void
|
||||
URLMainThread::SetSearchInternal(const nsAString& aSearch, ErrorResult& aRv)
|
||||
URLMainThread::SetSearchInternal(const nsAString& aSearch)
|
||||
{
|
||||
// Ignore failures to be compatible with NS4.
|
||||
|
||||
|
@ -51,7 +51,7 @@ public:
|
||||
URLMainThread(nsISupports* aParent, already_AddRefed<nsIURI> aURI);
|
||||
|
||||
virtual void
|
||||
GetHref(nsAString& aHref, ErrorResult& aRv) const override;
|
||||
GetHref(nsAString& aHref) const override;
|
||||
|
||||
virtual void
|
||||
SetHref(const nsAString& aHref, ErrorResult& aRv) override;
|
||||
@ -60,60 +60,60 @@ public:
|
||||
GetOrigin(nsAString& aOrigin, ErrorResult& aRv) const override;
|
||||
|
||||
virtual void
|
||||
GetProtocol(nsAString& aProtocol, ErrorResult& aRv) const override;
|
||||
GetProtocol(nsAString& aProtocol) const override;
|
||||
|
||||
virtual void
|
||||
SetProtocol(const nsAString& aProtocol, ErrorResult& aRv) override;
|
||||
|
||||
virtual void
|
||||
GetUsername(nsAString& aUsername, ErrorResult& aRv) const override;
|
||||
GetUsername(nsAString& aUsername) const override;
|
||||
|
||||
virtual void
|
||||
SetUsername(const nsAString& aUsername, ErrorResult& aRv) override;
|
||||
SetUsername(const nsAString& aUsername) override;
|
||||
|
||||
virtual void
|
||||
GetPassword(nsAString& aPassword, ErrorResult& aRv) const override;
|
||||
GetPassword(nsAString& aPassword) const override;
|
||||
|
||||
virtual void
|
||||
SetPassword(const nsAString& aPassword, ErrorResult& aRv) override;
|
||||
SetPassword(const nsAString& aPassword) override;
|
||||
|
||||
virtual void
|
||||
GetHost(nsAString& aHost, ErrorResult& aRv) const override;
|
||||
GetHost(nsAString& aHost) const override;
|
||||
|
||||
virtual void
|
||||
SetHost(const nsAString& aHost, ErrorResult& aRv) override;
|
||||
SetHost(const nsAString& aHost) override;
|
||||
|
||||
virtual void
|
||||
GetHostname(nsAString& aHostname, ErrorResult& aRv) const override;
|
||||
GetHostname(nsAString& aHostname) const override;
|
||||
|
||||
virtual void
|
||||
SetHostname(const nsAString& aHostname, ErrorResult& aRv) override;
|
||||
SetHostname(const nsAString& aHostname) override;
|
||||
|
||||
virtual void
|
||||
GetPort(nsAString& aPort, ErrorResult& aRv) const override;
|
||||
GetPort(nsAString& aPort) const override;
|
||||
|
||||
virtual void
|
||||
SetPort(const nsAString& aPort, ErrorResult& aRv) override;
|
||||
SetPort(const nsAString& aPort) override;
|
||||
|
||||
virtual void
|
||||
GetPathname(nsAString& aPathname, ErrorResult& aRv) const override;
|
||||
GetPathname(nsAString& aPathname) const override;
|
||||
|
||||
virtual void
|
||||
SetPathname(const nsAString& aPathname, ErrorResult& aRv) override;
|
||||
SetPathname(const nsAString& aPathname) override;
|
||||
|
||||
virtual void
|
||||
GetSearch(nsAString& aSearch, ErrorResult& aRv) const override;
|
||||
GetSearch(nsAString& aSearch) const override;
|
||||
|
||||
virtual void
|
||||
GetHash(nsAString& aHost, ErrorResult& aRv) const override;
|
||||
GetHash(nsAString& aHost) const override;
|
||||
|
||||
virtual void
|
||||
SetHash(const nsAString& aHash, ErrorResult& aRv) override;
|
||||
SetHash(const nsAString& aHash) override;
|
||||
|
||||
virtual void UpdateURLSearchParams() override;
|
||||
|
||||
virtual void
|
||||
SetSearchInternal(const nsAString& aSearch, ErrorResult& aRv) override;
|
||||
SetSearchInternal(const nsAString& aSearch) override;
|
||||
|
||||
nsIURI*
|
||||
GetURI() const;
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "mozilla/dom/WorkerScope.h"
|
||||
#include "mozilla/Unused.h"
|
||||
#include "nsHostObjectProtocolHandler.h"
|
||||
#include "nsProxyRelease.h"
|
||||
#include "nsStandardURL.h"
|
||||
#include "nsURLHelper.h"
|
||||
|
||||
@ -35,7 +36,6 @@ public:
|
||||
|
||||
URLMainThread* URL()
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
return mURL;
|
||||
}
|
||||
|
||||
@ -302,33 +302,17 @@ private:
|
||||
RefPtr<URLWorker::URLProxy> mURLProxy;
|
||||
};
|
||||
|
||||
// This class is the generic getter for any URL property.
|
||||
class GetterRunnable : public WorkerMainThreadRunnable
|
||||
class OriginGetterRunnable : public WorkerMainThreadRunnable
|
||||
{
|
||||
public:
|
||||
enum GetterType {
|
||||
GetterHref,
|
||||
GetterOrigin,
|
||||
GetterProtocol,
|
||||
GetterUsername,
|
||||
GetterPassword,
|
||||
GetterHost,
|
||||
GetterHostname,
|
||||
GetterPort,
|
||||
GetterPathname,
|
||||
GetterSearch,
|
||||
GetterHash,
|
||||
};
|
||||
|
||||
GetterRunnable(WorkerPrivate* aWorkerPrivate,
|
||||
GetterType aType, nsAString& aValue,
|
||||
URLWorker::URLProxy* aURLProxy)
|
||||
OriginGetterRunnable(WorkerPrivate* aWorkerPrivate,
|
||||
nsAString& aValue,
|
||||
URLWorker::URLProxy* aURLProxy)
|
||||
: WorkerMainThreadRunnable(aWorkerPrivate,
|
||||
// We can have telemetry keys for each getter when
|
||||
// needed.
|
||||
NS_LITERAL_CSTRING("URL :: getter"))
|
||||
, mValue(aValue)
|
||||
, mType(aType)
|
||||
, mURLProxy(aURLProxy)
|
||||
{
|
||||
mWorkerPrivate->AssertIsOnWorkerThread();
|
||||
@ -339,53 +323,7 @@ public:
|
||||
{
|
||||
AssertIsOnMainThread();
|
||||
ErrorResult rv;
|
||||
|
||||
switch (mType) {
|
||||
case GetterHref:
|
||||
mURLProxy->URL()->GetHref(mValue, rv);
|
||||
break;
|
||||
|
||||
case GetterOrigin:
|
||||
mURLProxy->URL()->GetOrigin(mValue, rv);
|
||||
break;
|
||||
|
||||
case GetterProtocol:
|
||||
mURLProxy->URL()->GetProtocol(mValue, rv);
|
||||
break;
|
||||
|
||||
case GetterUsername:
|
||||
mURLProxy->URL()->GetUsername(mValue, rv);
|
||||
break;
|
||||
|
||||
case GetterPassword:
|
||||
mURLProxy->URL()->GetPassword(mValue, rv);
|
||||
break;
|
||||
|
||||
case GetterHost:
|
||||
mURLProxy->URL()->GetHost(mValue, rv);
|
||||
break;
|
||||
|
||||
case GetterHostname:
|
||||
mURLProxy->URL()->GetHostname(mValue, rv);
|
||||
break;
|
||||
|
||||
case GetterPort:
|
||||
mURLProxy->URL()->GetPort(mValue, rv);
|
||||
break;
|
||||
|
||||
case GetterPathname:
|
||||
mURLProxy->URL()->GetPathname(mValue, rv);
|
||||
break;
|
||||
|
||||
case GetterSearch:
|
||||
mURLProxy->URL()->GetSearch(mValue, rv);
|
||||
break;
|
||||
|
||||
case GetterHash:
|
||||
mURLProxy->URL()->GetHash(mValue, rv);
|
||||
break;
|
||||
}
|
||||
|
||||
mURLProxy->URL()->GetOrigin(mValue, rv);
|
||||
MOZ_ASSERT(!rv.Failed(), "Main-thread getters do not fail.");
|
||||
return true;
|
||||
}
|
||||
@ -398,25 +336,15 @@ public:
|
||||
|
||||
private:
|
||||
nsAString& mValue;
|
||||
GetterType mType;
|
||||
RefPtr<URLWorker::URLProxy> mURLProxy;
|
||||
};
|
||||
|
||||
// This class is the generic setter for any URL property.
|
||||
class SetterRunnable : public WorkerMainThreadRunnable
|
||||
{
|
||||
public:
|
||||
enum SetterType {
|
||||
SetterHref,
|
||||
SetterProtocol,
|
||||
SetterUsername,
|
||||
SetterPassword,
|
||||
SetterHost,
|
||||
SetterHostname,
|
||||
SetterPort,
|
||||
SetterPathname,
|
||||
SetterSearch,
|
||||
SetterHash,
|
||||
};
|
||||
|
||||
SetterRunnable(WorkerPrivate* aWorkerPrivate,
|
||||
@ -449,38 +377,6 @@ public:
|
||||
case SetterProtocol:
|
||||
mURLProxy->URL()->SetProtocol(mValue, rv);
|
||||
break;
|
||||
|
||||
case SetterUsername:
|
||||
mURLProxy->URL()->SetUsername(mValue, rv);
|
||||
break;
|
||||
|
||||
case SetterPassword:
|
||||
mURLProxy->URL()->SetPassword(mValue, rv);
|
||||
break;
|
||||
|
||||
case SetterHost:
|
||||
mURLProxy->URL()->SetHost(mValue, rv);
|
||||
break;
|
||||
|
||||
case SetterHostname:
|
||||
mURLProxy->URL()->SetHostname(mValue, rv);
|
||||
break;
|
||||
|
||||
case SetterPort:
|
||||
mURLProxy->URL()->SetPort(mValue, rv);
|
||||
break;
|
||||
|
||||
case SetterPathname:
|
||||
mURLProxy->URL()->SetPathname(mValue, rv);
|
||||
break;
|
||||
|
||||
case SetterSearch:
|
||||
mURLProxy->URL()->SetSearch(mValue, rv);
|
||||
break;
|
||||
|
||||
case SetterHash:
|
||||
mURLProxy->URL()->SetHash(mValue, rv);
|
||||
break;
|
||||
}
|
||||
|
||||
if (NS_WARN_IF(rv.Failed())) {
|
||||
@ -682,23 +578,20 @@ URLWorker::~URLWorker()
|
||||
}
|
||||
|
||||
void
|
||||
URLWorker::GetHref(nsAString& aHref, ErrorResult& aRv) const
|
||||
URLWorker::GetHref(nsAString& aHref) const
|
||||
{
|
||||
aHref.Truncate();
|
||||
if (mStdURL) {
|
||||
nsAutoCString href;
|
||||
aRv = mStdURL->GetSpec(href);
|
||||
if (!aRv.Failed()) {
|
||||
nsresult rv = mStdURL->GetSpec(href);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
CopyUTF8toUTF16(href, aHref);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<GetterRunnable> runnable =
|
||||
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterHref, aHref,
|
||||
mURLProxy);
|
||||
runnable->Dispatch(aRv);
|
||||
mURLProxy->URL()->GetHref(aHref);
|
||||
}
|
||||
|
||||
void
|
||||
@ -777,15 +670,14 @@ URLWorker::GetOrigin(nsAString& aOrigin, ErrorResult& aRv) const
|
||||
}
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<GetterRunnable> runnable =
|
||||
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterOrigin, aOrigin,
|
||||
mURLProxy);
|
||||
RefPtr<OriginGetterRunnable> runnable =
|
||||
new OriginGetterRunnable(mWorkerPrivate, aOrigin, mURLProxy);
|
||||
|
||||
runnable->Dispatch(aRv);
|
||||
}
|
||||
|
||||
void
|
||||
URLWorker::GetProtocol(nsAString& aProtocol, ErrorResult& aRv) const
|
||||
URLWorker::GetProtocol(nsAString& aProtocol) const
|
||||
{
|
||||
aProtocol.Truncate();
|
||||
nsAutoCString protocol;
|
||||
@ -799,11 +691,7 @@ URLWorker::GetProtocol(nsAString& aProtocol, ErrorResult& aRv) const
|
||||
}
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<GetterRunnable> runnable =
|
||||
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterProtocol, aProtocol,
|
||||
mURLProxy);
|
||||
|
||||
runnable->Dispatch(aRv);
|
||||
mURLProxy->URL()->GetProtocol(aProtocol);
|
||||
}
|
||||
|
||||
void
|
||||
@ -871,142 +759,93 @@ URLWorker::SetProtocol(const nsAString& aProtocol, ErrorResult& aRv)
|
||||
|
||||
#define STDURL_SETTER(value, method) \
|
||||
if (mStdURL) { \
|
||||
aRv = NS_MutateURI(mStdURL) \
|
||||
.method(NS_ConvertUTF16toUTF8(value)) \
|
||||
.Finalize(mStdURL); \
|
||||
Unused << NS_MutateURI(mStdURL) \
|
||||
.method(NS_ConvertUTF16toUTF8(value)) \
|
||||
.Finalize(mStdURL); \
|
||||
return; \
|
||||
}
|
||||
|
||||
void
|
||||
URLWorker::GetUsername(nsAString& aUsername, ErrorResult& aRv) const
|
||||
URLWorker::GetUsername(nsAString& aUsername) const
|
||||
{
|
||||
STDURL_GETTER(aUsername, GetUsername);
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<GetterRunnable> runnable =
|
||||
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterUsername, aUsername,
|
||||
mURLProxy);
|
||||
|
||||
runnable->Dispatch(aRv);
|
||||
mURLProxy->URL()->GetUsername(aUsername);
|
||||
}
|
||||
|
||||
void
|
||||
URLWorker::SetUsername(const nsAString& aUsername, ErrorResult& aRv)
|
||||
URLWorker::SetUsername(const nsAString& aUsername)
|
||||
{
|
||||
STDURL_SETTER(aUsername, SetUsername);
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<SetterRunnable> runnable =
|
||||
new SetterRunnable(mWorkerPrivate, SetterRunnable::SetterUsername,
|
||||
aUsername, mURLProxy);
|
||||
|
||||
runnable->Dispatch(aRv);
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(!runnable->Failed());
|
||||
mURLProxy->URL()->SetUsername(aUsername);
|
||||
}
|
||||
|
||||
void
|
||||
URLWorker::GetPassword(nsAString& aPassword, ErrorResult& aRv) const
|
||||
URLWorker::GetPassword(nsAString& aPassword) const
|
||||
{
|
||||
STDURL_GETTER(aPassword, GetPassword);
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<GetterRunnable> runnable =
|
||||
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterPassword, aPassword,
|
||||
mURLProxy);
|
||||
|
||||
runnable->Dispatch(aRv);
|
||||
mURLProxy->URL()->GetPassword(aPassword);
|
||||
}
|
||||
|
||||
void
|
||||
URLWorker::SetPassword(const nsAString& aPassword, ErrorResult& aRv)
|
||||
URLWorker::SetPassword(const nsAString& aPassword)
|
||||
{
|
||||
STDURL_SETTER(aPassword, SetPassword);
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<SetterRunnable> runnable =
|
||||
new SetterRunnable(mWorkerPrivate, SetterRunnable::SetterPassword,
|
||||
aPassword, mURLProxy);
|
||||
|
||||
runnable->Dispatch(aRv);
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(!runnable->Failed());
|
||||
mURLProxy->URL()->SetPassword(aPassword);
|
||||
}
|
||||
|
||||
void
|
||||
URLWorker::GetHost(nsAString& aHost, ErrorResult& aRv) const
|
||||
URLWorker::GetHost(nsAString& aHost) const
|
||||
{
|
||||
STDURL_GETTER(aHost, GetHostPort);
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<GetterRunnable> runnable =
|
||||
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterHost, aHost,
|
||||
mURLProxy);
|
||||
|
||||
runnable->Dispatch(aRv);
|
||||
mURLProxy->URL()->GetHost(aHost);
|
||||
}
|
||||
|
||||
void
|
||||
URLWorker::SetHost(const nsAString& aHost, ErrorResult& aRv)
|
||||
URLWorker::SetHost(const nsAString& aHost)
|
||||
{
|
||||
STDURL_SETTER(aHost, SetHostPort);
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<SetterRunnable> runnable =
|
||||
new SetterRunnable(mWorkerPrivate, SetterRunnable::SetterHost,
|
||||
aHost, mURLProxy);
|
||||
|
||||
runnable->Dispatch(aRv);
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(!runnable->Failed());
|
||||
mURLProxy->URL()->SetHost(aHost);
|
||||
}
|
||||
|
||||
void
|
||||
URLWorker::GetHostname(nsAString& aHostname, ErrorResult& aRv) const
|
||||
URLWorker::GetHostname(nsAString& aHostname) const
|
||||
{
|
||||
aHostname.Truncate();
|
||||
if (mStdURL) {
|
||||
aRv = nsContentUtils::GetHostOrIPv6WithBrackets(mStdURL, aHostname);
|
||||
nsresult rv = nsContentUtils::GetHostOrIPv6WithBrackets(mStdURL, aHostname);
|
||||
if (NS_FAILED(rv)) {
|
||||
aHostname.Truncate();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<GetterRunnable> runnable =
|
||||
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterHostname, aHostname,
|
||||
mURLProxy);
|
||||
|
||||
runnable->Dispatch(aRv);
|
||||
mURLProxy->URL()->GetHostname(aHostname);
|
||||
}
|
||||
|
||||
void
|
||||
URLWorker::SetHostname(const nsAString& aHostname, ErrorResult& aRv)
|
||||
URLWorker::SetHostname(const nsAString& aHostname)
|
||||
{
|
||||
STDURL_SETTER(aHostname, SetHost);
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<SetterRunnable> runnable =
|
||||
new SetterRunnable(mWorkerPrivate, SetterRunnable::SetterHostname,
|
||||
aHostname, mURLProxy);
|
||||
|
||||
runnable->Dispatch(aRv);
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(!runnable->Failed());
|
||||
mURLProxy->URL()->SetHostname(aHostname);
|
||||
}
|
||||
|
||||
void
|
||||
URLWorker::GetPort(nsAString& aPort, ErrorResult& aRv) const
|
||||
URLWorker::GetPort(nsAString& aPort) const
|
||||
{
|
||||
aPort.Truncate();
|
||||
|
||||
@ -1022,15 +861,11 @@ URLWorker::GetPort(nsAString& aPort, ErrorResult& aRv) const
|
||||
}
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<GetterRunnable> runnable =
|
||||
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterPort, aPort,
|
||||
mURLProxy);
|
||||
|
||||
runnable->Dispatch(aRv);
|
||||
mURLProxy->URL()->GetPort(aPort);
|
||||
}
|
||||
|
||||
void
|
||||
URLWorker::SetPort(const nsAString& aPort, ErrorResult& aRv)
|
||||
URLWorker::SetPort(const nsAString& aPort)
|
||||
{
|
||||
if (mStdURL) {
|
||||
nsresult rv;
|
||||
@ -1052,20 +887,11 @@ URLWorker::SetPort(const nsAString& aPort, ErrorResult& aRv)
|
||||
}
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<SetterRunnable> runnable =
|
||||
new SetterRunnable(mWorkerPrivate, SetterRunnable::SetterPort,
|
||||
aPort, mURLProxy);
|
||||
|
||||
runnable->Dispatch(aRv);
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(!runnable->Failed());
|
||||
mURLProxy->URL()->SetPort(aPort);
|
||||
}
|
||||
|
||||
void
|
||||
URLWorker::GetPathname(nsAString& aPathname, ErrorResult& aRv) const
|
||||
URLWorker::GetPathname(nsAString& aPathname) const
|
||||
{
|
||||
aPathname.Truncate();
|
||||
|
||||
@ -1079,33 +905,20 @@ URLWorker::GetPathname(nsAString& aPathname, ErrorResult& aRv) const
|
||||
}
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<GetterRunnable> runnable =
|
||||
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterPathname,
|
||||
aPathname, mURLProxy);
|
||||
|
||||
runnable->Dispatch(aRv);
|
||||
mURLProxy->URL()->GetPathname(aPathname);
|
||||
}
|
||||
|
||||
void
|
||||
URLWorker::SetPathname(const nsAString& aPathname, ErrorResult& aRv)
|
||||
URLWorker::SetPathname(const nsAString& aPathname)
|
||||
{
|
||||
STDURL_SETTER(aPathname, SetFilePath);
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<SetterRunnable> runnable =
|
||||
new SetterRunnable(mWorkerPrivate, SetterRunnable::SetterPathname,
|
||||
aPathname, mURLProxy);
|
||||
|
||||
runnable->Dispatch(aRv);
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(!runnable->Failed());
|
||||
mURLProxy->URL()->SetPathname(aPathname);
|
||||
}
|
||||
|
||||
void
|
||||
URLWorker::GetSearch(nsAString& aSearch, ErrorResult& aRv) const
|
||||
URLWorker::GetSearch(nsAString& aSearch) const
|
||||
{
|
||||
aSearch.Truncate();
|
||||
|
||||
@ -1122,15 +935,11 @@ URLWorker::GetSearch(nsAString& aSearch, ErrorResult& aRv) const
|
||||
}
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<GetterRunnable> runnable =
|
||||
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterSearch, aSearch,
|
||||
mURLProxy);
|
||||
|
||||
runnable->Dispatch(aRv);
|
||||
mURLProxy->URL()->GetSearch(aSearch);
|
||||
}
|
||||
|
||||
void
|
||||
URLWorker::GetHash(nsAString& aHash, ErrorResult& aRv) const
|
||||
URLWorker::GetHash(nsAString& aHash) const
|
||||
{
|
||||
aHash.Truncate();
|
||||
if (mStdURL) {
|
||||
@ -1144,33 +953,20 @@ URLWorker::GetHash(nsAString& aHash, ErrorResult& aRv) const
|
||||
}
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<GetterRunnable> runnable =
|
||||
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterHash, aHash,
|
||||
mURLProxy);
|
||||
|
||||
runnable->Dispatch(aRv);
|
||||
mURLProxy->URL()->GetHash(aHash);
|
||||
}
|
||||
|
||||
void
|
||||
URLWorker::SetHash(const nsAString& aHash, ErrorResult& aRv)
|
||||
URLWorker::SetHash(const nsAString& aHash)
|
||||
{
|
||||
STDURL_SETTER(aHash, SetRef);
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<SetterRunnable> runnable =
|
||||
new SetterRunnable(mWorkerPrivate, SetterRunnable::SetterHash,
|
||||
aHash, mURLProxy);
|
||||
|
||||
runnable->Dispatch(aRv);
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(!runnable->Failed());
|
||||
mURLProxy->URL()->SetHash(aHash);
|
||||
}
|
||||
|
||||
void
|
||||
URLWorker::SetSearchInternal(const nsAString& aSearch, ErrorResult& aRv)
|
||||
URLWorker::SetSearchInternal(const nsAString& aSearch)
|
||||
{
|
||||
if (mStdURL) {
|
||||
// URLMainThread ignores failures here.
|
||||
@ -1181,16 +977,7 @@ URLWorker::SetSearchInternal(const nsAString& aSearch, ErrorResult& aRv)
|
||||
}
|
||||
|
||||
MOZ_ASSERT(mURLProxy);
|
||||
RefPtr<SetterRunnable> runnable =
|
||||
new SetterRunnable(mWorkerPrivate, SetterRunnable::SetterSearch,
|
||||
aSearch, mURLProxy);
|
||||
|
||||
runnable->Dispatch(aRv);
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(!runnable->Failed());
|
||||
mURLProxy->URL()->SetSearch(aSearch);
|
||||
}
|
||||
|
||||
void
|
||||
@ -1198,13 +985,7 @@ URLWorker::UpdateURLSearchParams()
|
||||
{
|
||||
if (mSearchParams) {
|
||||
nsAutoString search;
|
||||
|
||||
ErrorResult rv;
|
||||
GetSearch(search, rv);
|
||||
if (NS_WARN_IF(rv.Failed())) {
|
||||
rv.SuppressException();
|
||||
}
|
||||
|
||||
GetSearch(search);
|
||||
mSearchParams->ParseInput(NS_ConvertUTF16toUTF8(Substring(search, 1)));
|
||||
}
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ public:
|
||||
ErrorResult& aRv);
|
||||
|
||||
virtual void
|
||||
GetHref(nsAString& aHref, ErrorResult& aRv) const override;
|
||||
GetHref(nsAString& aHref) const override;
|
||||
|
||||
virtual void
|
||||
SetHref(const nsAString& aHref, ErrorResult& aRv) override;
|
||||
@ -62,60 +62,60 @@ public:
|
||||
GetOrigin(nsAString& aOrigin, ErrorResult& aRv) const override;
|
||||
|
||||
virtual void
|
||||
GetProtocol(nsAString& aProtocol, ErrorResult& aRv) const override;
|
||||
GetProtocol(nsAString& aProtocol) const override;
|
||||
|
||||
virtual void
|
||||
SetProtocol(const nsAString& aProtocol, ErrorResult& aRv) override;
|
||||
|
||||
virtual void
|
||||
GetUsername(nsAString& aUsername, ErrorResult& aRv) const override;
|
||||
GetUsername(nsAString& aUsername) const override;
|
||||
|
||||
virtual void
|
||||
SetUsername(const nsAString& aUsername, ErrorResult& aRv) override;
|
||||
SetUsername(const nsAString& aUsername) override;
|
||||
|
||||
virtual void
|
||||
GetPassword(nsAString& aPassword, ErrorResult& aRv) const override;
|
||||
GetPassword(nsAString& aPassword) const override;
|
||||
|
||||
virtual void
|
||||
SetPassword(const nsAString& aPassword, ErrorResult& aRv) override;
|
||||
SetPassword(const nsAString& aPassword) override;
|
||||
|
||||
virtual void
|
||||
GetHost(nsAString& aHost, ErrorResult& aRv) const override;
|
||||
GetHost(nsAString& aHost) const override;
|
||||
|
||||
virtual void
|
||||
SetHost(const nsAString& aHost, ErrorResult& aRv) override;
|
||||
SetHost(const nsAString& aHost) override;
|
||||
|
||||
virtual void
|
||||
GetHostname(nsAString& aHostname, ErrorResult& aRv) const override;
|
||||
GetHostname(nsAString& aHostname) const override;
|
||||
|
||||
virtual void
|
||||
SetHostname(const nsAString& aHostname, ErrorResult& aRv) override;
|
||||
SetHostname(const nsAString& aHostname) override;
|
||||
|
||||
virtual void
|
||||
GetPort(nsAString& aPort, ErrorResult& aRv) const override;
|
||||
GetPort(nsAString& aPort) const override;
|
||||
|
||||
virtual void
|
||||
SetPort(const nsAString& aPort, ErrorResult& aRv) override;
|
||||
SetPort(const nsAString& aPort) override;
|
||||
|
||||
virtual void
|
||||
GetPathname(nsAString& aPathname, ErrorResult& aRv) const override;
|
||||
GetPathname(nsAString& aPathname) const override;
|
||||
|
||||
virtual void
|
||||
SetPathname(const nsAString& aPathname, ErrorResult& aRv) override;
|
||||
SetPathname(const nsAString& aPathname) override;
|
||||
|
||||
virtual void
|
||||
GetSearch(nsAString& aSearch, ErrorResult& aRv) const override;
|
||||
GetSearch(nsAString& aSearch) const override;
|
||||
|
||||
virtual void
|
||||
GetHash(nsAString& aHost, ErrorResult& aRv) const override;
|
||||
GetHash(nsAString& aHost) const override;
|
||||
|
||||
virtual void
|
||||
SetHash(const nsAString& aHash, ErrorResult& aRv) override;
|
||||
SetHash(const nsAString& aHash) override;
|
||||
|
||||
virtual void UpdateURLSearchParams() override;
|
||||
|
||||
virtual void
|
||||
SetSearchInternal(const nsAString& aSearch, ErrorResult& aRv) override;
|
||||
SetSearchInternal(const nsAString& aSearch) override;
|
||||
|
||||
private:
|
||||
~URLWorker();
|
||||
|
@ -19,34 +19,25 @@ interface URL {
|
||||
// stringifier attribute USVString href;
|
||||
|
||||
// Bug 824857 should remove this.
|
||||
[Throws]
|
||||
stringifier;
|
||||
|
||||
[Throws]
|
||||
[SetterThrows]
|
||||
attribute USVString href;
|
||||
[Throws]
|
||||
[GetterThrows]
|
||||
readonly attribute USVString origin;
|
||||
[Throws]
|
||||
[SetterThrows]
|
||||
attribute USVString protocol;
|
||||
[Throws]
|
||||
attribute USVString username;
|
||||
[Throws]
|
||||
attribute USVString password;
|
||||
[Throws]
|
||||
attribute USVString host;
|
||||
[Throws]
|
||||
attribute USVString hostname;
|
||||
[Throws]
|
||||
attribute USVString port;
|
||||
[Throws]
|
||||
attribute USVString pathname;
|
||||
[Throws]
|
||||
attribute USVString search;
|
||||
[SameObject] readonly attribute URLSearchParams searchParams;
|
||||
[Throws]
|
||||
[SameObject]
|
||||
readonly attribute URLSearchParams searchParams;
|
||||
attribute USVString hash;
|
||||
|
||||
[Throws]
|
||||
USVString toJSON();
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user