Bug 1213815 - dom/webidl/HTMLHyperlinkElementUtils and URL don't need to throw exceptions as we did before, r=bz

This commit is contained in:
Andrea Marchesini 2015-11-23 20:05:26 +00:00
parent 94a7c782e7
commit 1456433941
15 changed files with 244 additions and 281 deletions

View File

@ -130,7 +130,7 @@ Link::GetURI() const
}
void
Link::SetProtocol(const nsAString &aProtocol, ErrorResult& aError)
Link::SetProtocol(const nsAString &aProtocol)
{
nsCOMPtr<nsIURI> uri(GetURIToMutate());
if (!uri) {
@ -149,7 +149,7 @@ Link::SetProtocol(const nsAString &aProtocol, ErrorResult& aError)
}
void
Link::SetPassword(const nsAString &aPassword, ErrorResult& aError)
Link::SetPassword(const nsAString &aPassword)
{
nsCOMPtr<nsIURI> uri(GetURIToMutate());
if (!uri) {
@ -162,7 +162,7 @@ Link::SetPassword(const nsAString &aPassword, ErrorResult& aError)
}
void
Link::SetUsername(const nsAString &aUsername, ErrorResult& aError)
Link::SetUsername(const nsAString &aUsername)
{
nsCOMPtr<nsIURI> uri(GetURIToMutate());
if (!uri) {
@ -175,7 +175,7 @@ Link::SetUsername(const nsAString &aUsername, ErrorResult& aError)
}
void
Link::SetHost(const nsAString &aHost, ErrorResult& aError)
Link::SetHost(const nsAString &aHost)
{
nsCOMPtr<nsIURI> uri(GetURIToMutate());
if (!uri) {
@ -188,7 +188,7 @@ Link::SetHost(const nsAString &aHost, ErrorResult& aError)
}
void
Link::SetHostname(const nsAString &aHostname, ErrorResult& aError)
Link::SetHostname(const nsAString &aHostname)
{
nsCOMPtr<nsIURI> uri(GetURIToMutate());
if (!uri) {
@ -201,7 +201,7 @@ Link::SetHostname(const nsAString &aHostname, ErrorResult& aError)
}
void
Link::SetPathname(const nsAString &aPathname, ErrorResult& aError)
Link::SetPathname(const nsAString &aPathname)
{
nsCOMPtr<nsIURI> uri(GetURIToMutate());
nsCOMPtr<nsIURL> url(do_QueryInterface(uri));
@ -215,7 +215,7 @@ Link::SetPathname(const nsAString &aPathname, ErrorResult& aError)
}
void
Link::SetSearch(const nsAString& aSearch, ErrorResult& aError)
Link::SetSearch(const nsAString& aSearch)
{
nsCOMPtr<nsIURI> uri(GetURIToMutate());
nsCOMPtr<nsIURL> url(do_QueryInterface(uri));
@ -229,7 +229,7 @@ Link::SetSearch(const nsAString& aSearch, ErrorResult& aError)
}
void
Link::SetPort(const nsAString &aPort, ErrorResult& aError)
Link::SetPort(const nsAString &aPort)
{
nsCOMPtr<nsIURI> uri(GetURIToMutate());
if (!uri) {
@ -254,7 +254,7 @@ Link::SetPort(const nsAString &aPort, ErrorResult& aError)
}
void
Link::SetHash(const nsAString &aHash, ErrorResult& aError)
Link::SetHash(const nsAString &aHash)
{
nsCOMPtr<nsIURI> uri(GetURIToMutate());
if (!uri) {
@ -267,7 +267,7 @@ Link::SetHash(const nsAString &aHash, ErrorResult& aError)
}
void
Link::GetOrigin(nsAString &aOrigin, ErrorResult& aError)
Link::GetOrigin(nsAString &aOrigin)
{
aOrigin.Truncate();
@ -282,7 +282,7 @@ Link::GetOrigin(nsAString &aOrigin, ErrorResult& aError)
}
void
Link::GetProtocol(nsAString &_protocol, ErrorResult& aError)
Link::GetProtocol(nsAString &_protocol)
{
nsCOMPtr<nsIURI> uri(GetURI());
if (!uri) {
@ -294,11 +294,10 @@ Link::GetProtocol(nsAString &_protocol, ErrorResult& aError)
CopyASCIItoUTF16(scheme, _protocol);
}
_protocol.Append(char16_t(':'));
return;
}
void
Link::GetUsername(nsAString& aUsername, ErrorResult& aError)
Link::GetUsername(nsAString& aUsername)
{
aUsername.Truncate();
@ -313,7 +312,7 @@ Link::GetUsername(nsAString& aUsername, ErrorResult& aError)
}
void
Link::GetPassword(nsAString &aPassword, ErrorResult& aError)
Link::GetPassword(nsAString &aPassword)
{
aPassword.Truncate();
@ -328,7 +327,7 @@ Link::GetPassword(nsAString &aPassword, ErrorResult& aError)
}
void
Link::GetHost(nsAString &_host, ErrorResult& aError)
Link::GetHost(nsAString &_host)
{
_host.Truncate();
@ -346,7 +345,7 @@ Link::GetHost(nsAString &_host, ErrorResult& aError)
}
void
Link::GetHostname(nsAString &_hostname, ErrorResult& aError)
Link::GetHostname(nsAString &_hostname)
{
_hostname.Truncate();
@ -360,7 +359,7 @@ Link::GetHostname(nsAString &_hostname, ErrorResult& aError)
}
void
Link::GetPathname(nsAString &_pathname, ErrorResult& aError)
Link::GetPathname(nsAString &_pathname)
{
_pathname.Truncate();
@ -380,7 +379,7 @@ Link::GetPathname(nsAString &_pathname, ErrorResult& aError)
}
void
Link::GetSearch(nsAString &_search, ErrorResult& aError)
Link::GetSearch(nsAString &_search)
{
_search.Truncate();
@ -400,7 +399,7 @@ Link::GetSearch(nsAString &_search, ErrorResult& aError)
}
void
Link::GetPort(nsAString &_port, ErrorResult& aError)
Link::GetPort(nsAString &_port)
{
_port.Truncate();
@ -422,7 +421,7 @@ Link::GetPort(nsAString &_port, ErrorResult& aError)
}
void
Link::GetHash(nsAString &_hash, ErrorResult& aError)
Link::GetHash(nsAString &_hash)
{
_hash.Truncate();

View File

@ -56,25 +56,25 @@ public:
/**
* Helper methods for modifying and obtaining parts of the URI of the Link.
*/
void SetProtocol(const nsAString &aProtocol, ErrorResult& aError);
void SetUsername(const nsAString &aUsername, ErrorResult& aError);
void SetPassword(const nsAString &aPassword, ErrorResult& aError);
void SetHost(const nsAString &aHost, ErrorResult& aError);
void SetHostname(const nsAString &aHostname, ErrorResult& aError);
void SetPathname(const nsAString &aPathname, ErrorResult& aError);
void SetSearch(const nsAString &aSearch, ErrorResult& aError);
void SetPort(const nsAString &aPort, ErrorResult& aError);
void SetHash(const nsAString &aHash, ErrorResult& aError);
void GetOrigin(nsAString &aOrigin, ErrorResult& aError);
void GetProtocol(nsAString &_protocol, ErrorResult& aError);
void GetUsername(nsAString &aUsername, ErrorResult& aError);
void GetPassword(nsAString &aPassword, ErrorResult& aError);
void GetHost(nsAString &_host, ErrorResult& aError);
void GetHostname(nsAString &_hostname, ErrorResult& aError);
void GetPathname(nsAString &_pathname, ErrorResult& aError);
void GetSearch(nsAString &_search, ErrorResult& aError);
void GetPort(nsAString &_port, ErrorResult& aError);
void GetHash(nsAString &_hash, ErrorResult& aError);
void SetProtocol(const nsAString &aProtocol);
void SetUsername(const nsAString &aUsername);
void SetPassword(const nsAString &aPassword);
void SetHost(const nsAString &aHost);
void SetHostname(const nsAString &aHostname);
void SetPathname(const nsAString &aPathname);
void SetSearch(const nsAString &aSearch);
void SetPort(const nsAString &aPort);
void SetHash(const nsAString &aHash);
void GetOrigin(nsAString &aOrigin);
void GetProtocol(nsAString &_protocol);
void GetUsername(nsAString &aUsername);
void GetPassword(nsAString &aPassword);
void GetHost(nsAString &_host);
void GetHostname(nsAString &_hostname);
void GetPathname(nsAString &_pathname);
void GetSearch(nsAString &_search);
void GetPort(nsAString &_port);
void GetHash(nsAString &_hash);
/**
* Invalidates any link caching, and resets the state to the default.

View File

@ -203,7 +203,7 @@ URL::RevokeObjectURL(const GlobalObject& aGlobal, const nsAString& aURL,
}
void
URL::GetHref(nsAString& aHref, ErrorResult& aRv) const
URL::GetHref(nsAString& aHref) const
{
aHref.Truncate();
@ -238,13 +238,13 @@ URL::SetHref(const nsAString& aHref, ErrorResult& aRv)
}
void
URL::GetOrigin(nsAString& aOrigin, ErrorResult& aRv) const
URL::GetOrigin(nsAString& aOrigin) const
{
nsContentUtils::GetUTFOrigin(mURI, aOrigin);
}
void
URL::GetProtocol(nsAString& aProtocol, ErrorResult& aRv) const
URL::GetProtocol(nsAString& aProtocol) const
{
nsAutoCString protocol;
if (NS_SUCCEEDED(mURI->GetScheme(protocol))) {
@ -256,7 +256,7 @@ URL::GetProtocol(nsAString& aProtocol, ErrorResult& aRv) const
}
void
URL::SetProtocol(const nsAString& aProtocol, ErrorResult& aRv)
URL::SetProtocol(const nsAString& aProtocol)
{
nsAString::const_iterator start, end;
aProtocol.BeginReading(start);
@ -303,37 +303,37 @@ URL::SetProtocol(const nsAString& aProtocol, ErrorResult& aRv)
}
void
URL::GetUsername(nsAString& aUsername, ErrorResult& aRv) const
URL::GetUsername(nsAString& aUsername) const
{
URL_GETTER(aUsername, GetUsername);
}
void
URL::SetUsername(const nsAString& aUsername, ErrorResult& aRv)
URL::SetUsername(const nsAString& aUsername)
{
mURI->SetUsername(NS_ConvertUTF16toUTF8(aUsername));
}
void
URL::GetPassword(nsAString& aPassword, ErrorResult& aRv) const
URL::GetPassword(nsAString& aPassword) const
{
URL_GETTER(aPassword, GetPassword);
}
void
URL::SetPassword(const nsAString& aPassword, ErrorResult& aRv)
URL::SetPassword(const nsAString& aPassword)
{
mURI->SetPassword(NS_ConvertUTF16toUTF8(aPassword));
}
void
URL::GetHost(nsAString& aHost, ErrorResult& aRv) const
URL::GetHost(nsAString& aHost) const
{
URL_GETTER(aHost, GetHostPort);
}
void
URL::SetHost(const nsAString& aHost, ErrorResult& aRv)
URL::SetHost(const nsAString& aHost)
{
mURI->SetHostPort(NS_ConvertUTF16toUTF8(aHost));
}
@ -369,14 +369,14 @@ URL::UpdateURLSearchParams()
}
void
URL::GetHostname(nsAString& aHostname, ErrorResult& aRv) const
URL::GetHostname(nsAString& aHostname) const
{
aHostname.Truncate();
nsContentUtils::GetHostOrIPv6WithBrackets(mURI, aHostname);
}
void
URL::SetHostname(const nsAString& aHostname, ErrorResult& aRv)
URL::SetHostname(const nsAString& aHostname)
{
// nsStandardURL returns NS_ERROR_UNEXPECTED for an empty hostname
// The return code is silently ignored
@ -384,7 +384,7 @@ URL::SetHostname(const nsAString& aHostname, ErrorResult& aRv)
}
void
URL::GetPort(nsAString& aPort, ErrorResult& aRv) const
URL::GetPort(nsAString& aPort) const
{
aPort.Truncate();
@ -398,7 +398,7 @@ URL::GetPort(nsAString& aPort, ErrorResult& aRv) const
}
void
URL::SetPort(const nsAString& aPort, ErrorResult& aRv)
URL::SetPort(const nsAString& aPort)
{
nsresult rv;
nsAutoString portStr(aPort);
@ -416,7 +416,7 @@ URL::SetPort(const nsAString& aPort, ErrorResult& aRv)
}
void
URL::GetPathname(nsAString& aPathname, ErrorResult& aRv) const
URL::GetPathname(nsAString& aPathname) const
{
aPathname.Truncate();
@ -442,7 +442,7 @@ URL::GetPathname(nsAString& aPathname, ErrorResult& aRv) const
}
void
URL::SetPathname(const nsAString& aPathname, ErrorResult& aRv)
URL::SetPathname(const nsAString& aPathname)
{
nsCOMPtr<nsIURL> url(do_QueryInterface(mURI));
if (!url) {
@ -454,7 +454,7 @@ URL::SetPathname(const nsAString& aPathname, ErrorResult& aRv)
}
void
URL::GetSearch(nsAString& aSearch, ErrorResult& aRv) const
URL::GetSearch(nsAString& aSearch) const
{
aSearch.Truncate();
@ -473,7 +473,7 @@ URL::GetSearch(nsAString& aSearch, ErrorResult& aRv) const
}
void
URL::SetSearch(const nsAString& aSearch, ErrorResult& aRv)
URL::SetSearch(const nsAString& aSearch)
{
SetSearchInternal(aSearch);
UpdateURLSearchParams();
@ -499,7 +499,7 @@ URL::SearchParams()
}
void
URL::GetHash(nsAString& aHash, ErrorResult& aRv) const
URL::GetHash(nsAString& aHash) const
{
aHash.Truncate();
@ -515,7 +515,7 @@ URL::GetHash(nsAString& aHash, ErrorResult& aRv) const
}
void
URL::SetHash(const nsAString& aHash, ErrorResult& aRv)
URL::SetHash(const nsAString& aHash)
{
mURI->SetRef(NS_ConvertUTF16toUTF8(aHash));
}

View File

@ -88,53 +88,53 @@ public:
const nsAString& aURL,
ErrorResult& aRv);
void GetHref(nsAString& aHref, ErrorResult& aRv) const;
void GetHref(nsAString& aHref) const;
void SetHref(const nsAString& aHref, ErrorResult& aRv);
void GetOrigin(nsAString& aOrigin, ErrorResult& aRv) const;
void GetOrigin(nsAString& aOrigin) const;
void GetProtocol(nsAString& aProtocol, ErrorResult& aRv) const;
void GetProtocol(nsAString& aProtocol) const;
void SetProtocol(const nsAString& aProtocol, ErrorResult& aRv);
void SetProtocol(const nsAString& aProtocol);
void GetUsername(nsAString& aUsername, ErrorResult& aRv) const;
void GetUsername(nsAString& aUsername) const;
void SetUsername(const nsAString& aUsername, ErrorResult& aRv);
void SetUsername(const nsAString& aUsername);
void GetPassword(nsAString& aPassword, ErrorResult& aRv) const;
void GetPassword(nsAString& aPassword) const;
void SetPassword(const nsAString& aPassword, ErrorResult& aRv);
void SetPassword(const nsAString& aPassword);
void GetHost(nsAString& aHost, ErrorResult& aRv) const;
void GetHost(nsAString& aHost) const;
void SetHost(const nsAString& aHost, ErrorResult& aRv);
void SetHost(const nsAString& aHost);
void GetHostname(nsAString& aHostname, ErrorResult& aRv) const;
void GetHostname(nsAString& aHostname) const;
void SetHostname(const nsAString& aHostname, ErrorResult& aRv);
void SetHostname(const nsAString& aHostname);
void GetPort(nsAString& aPort, ErrorResult& aRv) const;
void GetPort(nsAString& aPort) const;
void SetPort(const nsAString& aPort, ErrorResult& aRv);
void SetPort(const nsAString& aPort);
void GetPathname(nsAString& aPathname, ErrorResult& aRv) const;
void GetPathname(nsAString& aPathname) const;
void SetPathname(const nsAString& aPathname, ErrorResult& aRv);
void SetPathname(const nsAString& aPathname);
void GetSearch(nsAString& aRetval, ErrorResult& aRv) const;
void GetSearch(nsAString& aRetval) const;
void SetSearch(const nsAString& aArg, ErrorResult& aRv);
void SetSearch(const nsAString& aArg);
URLSearchParams* SearchParams();
void GetHash(nsAString& aRetval, ErrorResult& aRv) const;
void GetHash(nsAString& aRetval) const;
void SetHash(const nsAString& aArg, ErrorResult& aRv);
void SetHash(const nsAString& aArg);
void Stringify(nsAString& aRetval, ErrorResult& aRv) const
void Stringify(nsAString& aRetval) const
{
GetHref(aRetval, aRv);
GetHref(aRetval);
}
// URLSearchParamsObserver

View File

@ -188,31 +188,18 @@ GetRequestURLFromWorker(const GlobalObject& aGlobal, const nsAString& aInput,
}
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;
}
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);
}
} // namespace

View File

@ -92,11 +92,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) {

View File

@ -322,17 +322,13 @@ HTMLAnchorElement::RelList()
NS_IMETHODIMP \
HTMLAnchorElement::Get##_part(nsAString& a##_part) \
{ \
ErrorResult rv; \
Link::Get##_part(a##_part, rv); \
MOZ_ASSERT(!rv.Failed()); \
Link::Get##_part(a##_part); \
return NS_OK; \
} \
NS_IMETHODIMP \
HTMLAnchorElement::Set##_part(const nsAString& a##_part) \
{ \
ErrorResult rv; \
Link::Set##_part(a##_part, rv); \
MOZ_ASSERT(!rv.Failed()); \
Link::Set##_part(a##_part); \
return NS_OK; \
}

View File

@ -89,10 +89,8 @@ public:
virtual bool HasDeferredDNSPrefetchRequest() override;
// WebIDL API
void GetHref(nsAString& aValue, ErrorResult& rv)
{
GetHTMLURIAttr(nsGkAtoms::href, aValue);
}
// The XPCOM GetHref is OK for us
void SetHref(const nsAString& aValue, mozilla::ErrorResult& rv)
{
SetHTMLAttr(nsGkAtoms::href, aValue, rv);
@ -156,8 +154,8 @@ public:
// Link::GetOrigin is OK for us
using Link::GetProtocol;
using Link::SetProtocol;
// Link::GetProtocol is OK for us
// Link::SetProtocol is OK for us
// Link::GetUsername is OK for us
// Link::SetUsername is OK for us
@ -165,23 +163,23 @@ public:
// Link::GetPassword is OK for us
// Link::SetPassword is OK for us
using Link::GetHost;
using Link::SetHost;
// Link::Link::GetHost is OK for us
// Link::Link::SetHost is OK for us
using Link::GetHostname;
using Link::SetHostname;
// Link::Link::GetHostname is OK for us
// Link::Link::SetHostname is OK for us
using Link::GetPort;
using Link::SetPort;
// Link::Link::GetPort is OK for us
// Link::Link::SetPort is OK for us
using Link::GetPathname;
using Link::SetPathname;
// Link::Link::GetPathname is OK for us
// Link::Link::SetPathname is OK for us
using Link::GetSearch;
using Link::SetSearch;
// Link::Link::GetSearch is OK for us
// Link::Link::SetSearch is OK for us
using Link::GetHash;
using Link::SetHash;
// Link::Link::GetHash is OK for us
// Link::Link::SetHash is OK for us
// The XPCOM URI decomposition attributes are fine for us
void GetCoords(DOMString& aValue)
@ -224,9 +222,9 @@ public:
{
SetHTMLAttr(nsGkAtoms::shape, aValue, rv);
}
void Stringify(nsAString& aResult, ErrorResult& aError)
void Stringify(nsAString& aResult)
{
GetHref(aResult, aError);
GetHref(aResult);
}
protected:

View File

@ -205,17 +205,13 @@ HTMLAreaElement::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
NS_IMETHODIMP \
HTMLAreaElement::Get##_part(nsAString& a##_part) \
{ \
ErrorResult rv; \
Link::Get##_part(a##_part, rv); \
MOZ_ASSERT(!rv.Failed()); \
Link::Get##_part(a##_part); \
return NS_OK; \
} \
NS_IMETHODIMP \
HTMLAreaElement::Set##_part(const nsAString& a##_part) \
{ \
ErrorResult rv; \
Link::Set##_part(a##_part, rv); \
MOZ_ASSERT(!rv.Failed()); \
Link::Set##_part(a##_part); \
return NS_OK; \
}

View File

@ -90,10 +90,7 @@ public:
SetHTMLAttr(nsGkAtoms::shape, aShape, aError);
}
void GetHref(nsAString& aHref, ErrorResult& aError)
{
aError = GetHref(aHref);
}
// The XPCOM GetHref is OK for us
void SetHref(const nsAString& aHref, ErrorResult& aError)
{
aError = SetHref(aHref);
@ -139,8 +136,8 @@ public:
// The Link::GetOrigin is OK for us
using Link::GetProtocol;
using Link::SetProtocol;
// Link::Link::GetProtocol is OK for us
// Link::Link::SetProtocol is OK for us
// The Link::GetUsername is OK for us
// The Link::SetUsername is OK for us
@ -148,23 +145,23 @@ public:
// The Link::GetPassword is OK for us
// The Link::SetPassword is OK for us
using Link::GetHost;
using Link::SetHost;
// Link::Link::GetHost is OK for us
// Link::Link::SetHost is OK for us
using Link::GetHostname;
using Link::SetHostname;
// Link::Link::GetHostname is OK for us
// Link::Link::SetHostname is OK for us
using Link::GetPort;
using Link::SetPort;
// Link::Link::GetPort is OK for us
// Link::Link::SetPort is OK for us
using Link::GetPathname;
using Link::SetPathname;
// Link::Link::GetPathname is OK for us
// Link::Link::SetPathname is OK for us
using Link::GetSearch;
using Link::SetSearch;
// Link::Link::GetSearch is OK for us
// Link::Link::SetSearch is OK for us
using Link::GetHash;
using Link::SetHash;
// Link::Link::GetHash is OK for us
// Link::Link::SetHash is OK for us
// The Link::GetSearchParams is OK for us
@ -178,9 +175,9 @@ public:
SetHTMLBoolAttr(nsGkAtoms::nohref, aValue, aError);
}
void Stringify(nsAString& aResult, ErrorResult& aError)
void Stringify(nsAString& aResult)
{
GetHref(aResult, aError);
GetHref(aResult);
}
protected:

View File

@ -182,8 +182,7 @@ nsHTMLDNSPrefetch::CancelPrefetch(Link *aElement,
return NS_ERROR_NOT_AVAILABLE;
nsAutoString hostname;
ErrorResult rv;
aElement->GetHostname(hostname, rv);
aElement->GetHostname(hostname);
return CancelPrefetch(hostname, flags, aReason);
}

View File

@ -16,30 +16,19 @@ interface HTMLHyperlinkElementUtils {
// stringifier attribute USVString href;
// Bug 824857 should remove this.
[Throws]
stringifier;
[Throws]
[SetterThrows]
attribute USVString href;
[Throws]
readonly attribute USVString origin;
[Throws]
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;
[Throws]
attribute USVString hash;
};

View File

@ -17,42 +17,25 @@
Constructor(DOMString url, optional DOMString base),
Exposed=(Window,Worker)]
interface URL {
[Throws]
// Bug 824857: no support for stringifier attributes yet.
// stringifier attribute USVString href;
// Bug 824857 should remove this.
stringifier;
[Throws]
[SetterThrows]
attribute USVString href;
[Throws]
readonly attribute USVString origin;
[Throws]
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;
readonly attribute URLSearchParams searchParams;
[Throws]
attribute USVString hash;
};

View File

@ -339,54 +339,52 @@ public:
{
AssertIsOnMainThread();
ErrorResult rv;
switch (mType) {
case GetterHref:
mURLProxy->URL()->GetHref(mValue, rv);
mURLProxy->URL()->GetHref(mValue);
break;
case GetterOrigin:
mURLProxy->URL()->GetOrigin(mValue, rv);
mURLProxy->URL()->GetOrigin(mValue);
break;
case GetterProtocol:
mURLProxy->URL()->GetProtocol(mValue, rv);
mURLProxy->URL()->GetProtocol(mValue);
break;
case GetterUsername:
mURLProxy->URL()->GetUsername(mValue, rv);
mURLProxy->URL()->GetUsername(mValue);
break;
case GetterPassword:
mURLProxy->URL()->GetPassword(mValue, rv);
mURLProxy->URL()->GetPassword(mValue);
break;
case GetterHost:
mURLProxy->URL()->GetHost(mValue, rv);
mURLProxy->URL()->GetHost(mValue);
break;
case GetterHostname:
mURLProxy->URL()->GetHostname(mValue, rv);
mURLProxy->URL()->GetHostname(mValue);
break;
case GetterPort:
mURLProxy->URL()->GetPort(mValue, rv);
mURLProxy->URL()->GetPort(mValue);
break;
case GetterPathname:
mURLProxy->URL()->GetPathname(mValue, rv);
mURLProxy->URL()->GetPathname(mValue);
break;
case GetterSearch:
mURLProxy->URL()->GetSearch(mValue, rv);
mURLProxy->URL()->GetSearch(mValue);
break;
case GetterHash:
mURLProxy->URL()->GetHash(mValue, rv);
mURLProxy->URL()->GetHash(mValue);
break;
}
MOZ_ASSERT(!rv.Failed());
return true;
}
@ -415,12 +413,12 @@ public:
SetterRunnable(WorkerPrivate* aWorkerPrivate,
SetterType aType, const nsAString& aValue,
URLProxy* aURLProxy, mozilla::ErrorResult& aRv)
URLProxy* aURLProxy)
: WorkerMainThreadRunnable(aWorkerPrivate)
, mValue(aValue)
, mType(aType)
, mURLProxy(aURLProxy)
, mRv(aRv)
, mFailed(false)
{
mWorkerPrivate->AssertIsOnWorkerThread();
}
@ -431,55 +429,67 @@ public:
AssertIsOnMainThread();
switch (mType) {
case SetterHref:
mURLProxy->URL()->SetHref(mValue, mRv);
case SetterHref: {
ErrorResult rv;
mURLProxy->URL()->SetHref(mValue, rv);
if (NS_WARN_IF(rv.Failed())) {
rv.SuppressException();
mFailed = true;
}
break;
}
case SetterProtocol:
mURLProxy->URL()->SetProtocol(mValue, mRv);
mURLProxy->URL()->SetProtocol(mValue);
break;
case SetterUsername:
mURLProxy->URL()->SetUsername(mValue, mRv);
mURLProxy->URL()->SetUsername(mValue);
break;
case SetterPassword:
mURLProxy->URL()->SetPassword(mValue, mRv);
mURLProxy->URL()->SetPassword(mValue);
break;
case SetterHost:
mURLProxy->URL()->SetHost(mValue, mRv);
mURLProxy->URL()->SetHost(mValue);
break;
case SetterHostname:
mURLProxy->URL()->SetHostname(mValue, mRv);
mURLProxy->URL()->SetHostname(mValue);
break;
case SetterPort:
mURLProxy->URL()->SetPort(mValue, mRv);
mURLProxy->URL()->SetPort(mValue);
break;
case SetterPathname:
mURLProxy->URL()->SetPathname(mValue, mRv);
mURLProxy->URL()->SetPathname(mValue);
break;
case SetterSearch:
mURLProxy->URL()->SetSearch(mValue, mRv);
mURLProxy->URL()->SetSearch(mValue);
break;
case SetterHash:
mURLProxy->URL()->SetHash(mValue, mRv);
mURLProxy->URL()->SetHash(mValue);
break;
}
return true;
}
bool Failed() const
{
return mFailed;
}
private:
const nsString mValue;
SetterType mType;
RefPtr<URLProxy> mURLProxy;
mozilla::ErrorResult& mRv;
bool mFailed;
};
NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(URL, mSearchParams)
@ -590,7 +600,7 @@ URL::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
}
void
URL::GetHref(nsAString& aHref, ErrorResult& aRv) const
URL::GetHref(nsAString& aHref) const
{
RefPtr<GetterRunnable> runnable =
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterHref, aHref,
@ -606,17 +616,22 @@ URL::SetHref(const nsAString& aHref, ErrorResult& aRv)
{
RefPtr<SetterRunnable> runnable =
new SetterRunnable(mWorkerPrivate, SetterRunnable::SetterHref, aHref,
mURLProxy, aRv);
mURLProxy);
if (!runnable->Dispatch(mWorkerPrivate->GetJSContext())) {
JS_ReportPendingException(mWorkerPrivate->GetJSContext());
}
if (runnable->Failed()) {
aRv.ThrowTypeError<MSG_INVALID_URL>(aHref);
return;
}
UpdateURLSearchParams();
}
void
URL::GetOrigin(nsAString& aOrigin, ErrorResult& aRv) const
URL::GetOrigin(nsAString& aOrigin) const
{
RefPtr<GetterRunnable> runnable =
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterOrigin, aOrigin,
@ -628,7 +643,7 @@ URL::GetOrigin(nsAString& aOrigin, ErrorResult& aRv) const
}
void
URL::GetProtocol(nsAString& aProtocol, ErrorResult& aRv) const
URL::GetProtocol(nsAString& aProtocol) const
{
RefPtr<GetterRunnable> runnable =
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterProtocol, aProtocol,
@ -640,20 +655,21 @@ URL::GetProtocol(nsAString& aProtocol, ErrorResult& aRv) const
}
void
URL::SetProtocol(const nsAString& aProtocol, ErrorResult& aRv)
URL::SetProtocol(const nsAString& aProtocol)
{
ErrorResult rv;
RefPtr<SetterRunnable> runnable =
new SetterRunnable(mWorkerPrivate, SetterRunnable::SetterProtocol,
aProtocol, mURLProxy, rv);
aProtocol, mURLProxy);
if (!runnable->Dispatch(mWorkerPrivate->GetJSContext())) {
JS_ReportPendingException(mWorkerPrivate->GetJSContext());
}
MOZ_ASSERT(!runnable->Failed());
}
void
URL::GetUsername(nsAString& aUsername, ErrorResult& aRv) const
URL::GetUsername(nsAString& aUsername) const
{
RefPtr<GetterRunnable> runnable =
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterUsername, aUsername,
@ -665,20 +681,21 @@ URL::GetUsername(nsAString& aUsername, ErrorResult& aRv) const
}
void
URL::SetUsername(const nsAString& aUsername, ErrorResult& aRv)
URL::SetUsername(const nsAString& aUsername)
{
ErrorResult rv;
RefPtr<SetterRunnable> runnable =
new SetterRunnable(mWorkerPrivate, SetterRunnable::SetterUsername,
aUsername, mURLProxy, rv);
aUsername, mURLProxy);
if (!runnable->Dispatch(mWorkerPrivate->GetJSContext())) {
JS_ReportPendingException(mWorkerPrivate->GetJSContext());
}
MOZ_ASSERT(!runnable->Failed());
}
void
URL::GetPassword(nsAString& aPassword, ErrorResult& aRv) const
URL::GetPassword(nsAString& aPassword) const
{
RefPtr<GetterRunnable> runnable =
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterPassword, aPassword,
@ -690,20 +707,21 @@ URL::GetPassword(nsAString& aPassword, ErrorResult& aRv) const
}
void
URL::SetPassword(const nsAString& aPassword, ErrorResult& aRv)
URL::SetPassword(const nsAString& aPassword)
{
ErrorResult rv;
RefPtr<SetterRunnable> runnable =
new SetterRunnable(mWorkerPrivate, SetterRunnable::SetterPassword,
aPassword, mURLProxy, rv);
aPassword, mURLProxy);
if (!runnable->Dispatch(mWorkerPrivate->GetJSContext())) {
JS_ReportPendingException(mWorkerPrivate->GetJSContext());
}
MOZ_ASSERT(!runnable->Failed());
}
void
URL::GetHost(nsAString& aHost, ErrorResult& aRv) const
URL::GetHost(nsAString& aHost) const
{
RefPtr<GetterRunnable> runnable =
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterHost, aHost,
@ -715,20 +733,21 @@ URL::GetHost(nsAString& aHost, ErrorResult& aRv) const
}
void
URL::SetHost(const nsAString& aHost, ErrorResult& aRv)
URL::SetHost(const nsAString& aHost)
{
ErrorResult rv;
RefPtr<SetterRunnable> runnable =
new SetterRunnable(mWorkerPrivate, SetterRunnable::SetterHost,
aHost, mURLProxy, rv);
aHost, mURLProxy);
if (!runnable->Dispatch(mWorkerPrivate->GetJSContext())) {
JS_ReportPendingException(mWorkerPrivate->GetJSContext());
}
MOZ_ASSERT(!runnable->Failed());
}
void
URL::GetHostname(nsAString& aHostname, ErrorResult& aRv) const
URL::GetHostname(nsAString& aHostname) const
{
RefPtr<GetterRunnable> runnable =
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterHostname, aHostname,
@ -740,20 +759,21 @@ URL::GetHostname(nsAString& aHostname, ErrorResult& aRv) const
}
void
URL::SetHostname(const nsAString& aHostname, ErrorResult& aRv)
URL::SetHostname(const nsAString& aHostname)
{
ErrorResult rv;
RefPtr<SetterRunnable> runnable =
new SetterRunnable(mWorkerPrivate, SetterRunnable::SetterHostname,
aHostname, mURLProxy, rv);
aHostname, mURLProxy);
if (!runnable->Dispatch(mWorkerPrivate->GetJSContext())) {
JS_ReportPendingException(mWorkerPrivate->GetJSContext());
}
MOZ_ASSERT(!runnable->Failed());
}
void
URL::GetPort(nsAString& aPort, ErrorResult& aRv) const
URL::GetPort(nsAString& aPort) const
{
RefPtr<GetterRunnable> runnable =
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterPort, aPort,
@ -765,20 +785,21 @@ URL::GetPort(nsAString& aPort, ErrorResult& aRv) const
}
void
URL::SetPort(const nsAString& aPort, ErrorResult& aRv)
URL::SetPort(const nsAString& aPort)
{
ErrorResult rv;
RefPtr<SetterRunnable> runnable =
new SetterRunnable(mWorkerPrivate, SetterRunnable::SetterPort,
aPort, mURLProxy, rv);
aPort, mURLProxy);
if (!runnable->Dispatch(mWorkerPrivate->GetJSContext())) {
JS_ReportPendingException(mWorkerPrivate->GetJSContext());
}
MOZ_ASSERT(!runnable->Failed());
}
void
URL::GetPathname(nsAString& aPathname, ErrorResult& aRv) const
URL::GetPathname(nsAString& aPathname) const
{
RefPtr<GetterRunnable> runnable =
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterPathname, aPathname,
@ -790,20 +811,21 @@ URL::GetPathname(nsAString& aPathname, ErrorResult& aRv) const
}
void
URL::SetPathname(const nsAString& aPathname, ErrorResult& aRv)
URL::SetPathname(const nsAString& aPathname)
{
ErrorResult rv;
RefPtr<SetterRunnable> runnable =
new SetterRunnable(mWorkerPrivate, SetterRunnable::SetterPathname,
aPathname, mURLProxy, rv);
aPathname, mURLProxy);
if (!runnable->Dispatch(mWorkerPrivate->GetJSContext())) {
JS_ReportPendingException(mWorkerPrivate->GetJSContext());
}
MOZ_ASSERT(!runnable->Failed());
}
void
URL::GetSearch(nsAString& aSearch, ErrorResult& aRv) const
URL::GetSearch(nsAString& aSearch) const
{
RefPtr<GetterRunnable> runnable =
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterSearch, aSearch,
@ -815,7 +837,7 @@ URL::GetSearch(nsAString& aSearch, ErrorResult& aRv) const
}
void
URL::SetSearch(const nsAString& aSearch, ErrorResult& aRv)
URL::SetSearch(const nsAString& aSearch)
{
SetSearchInternal(aSearch);
UpdateURLSearchParams();
@ -824,14 +846,15 @@ URL::SetSearch(const nsAString& aSearch, ErrorResult& aRv)
void
URL::SetSearchInternal(const nsAString& aSearch)
{
ErrorResult rv;
RefPtr<SetterRunnable> runnable =
new SetterRunnable(mWorkerPrivate, SetterRunnable::SetterSearch,
aSearch, mURLProxy, rv);
aSearch, mURLProxy);
if (!runnable->Dispatch(mWorkerPrivate->GetJSContext())) {
JS_ReportPendingException(mWorkerPrivate->GetJSContext());
}
MOZ_ASSERT(!runnable->Failed());
}
mozilla::dom::URLSearchParams*
@ -842,7 +865,7 @@ URL::SearchParams()
}
void
URL::GetHash(nsAString& aHash, ErrorResult& aRv) const
URL::GetHash(nsAString& aHash) const
{
RefPtr<GetterRunnable> runnable =
new GetterRunnable(mWorkerPrivate, GetterRunnable::GetterHash, aHash,
@ -854,16 +877,17 @@ URL::GetHash(nsAString& aHash, ErrorResult& aRv) const
}
void
URL::SetHash(const nsAString& aHash, ErrorResult& aRv)
URL::SetHash(const nsAString& aHash)
{
ErrorResult rv;
RefPtr<SetterRunnable> runnable =
new SetterRunnable(mWorkerPrivate, SetterRunnable::SetterHash,
aHash, mURLProxy, rv);
aHash, mURLProxy);
if (!runnable->Dispatch(mWorkerPrivate->GetJSContext())) {
JS_ReportPendingException(mWorkerPrivate->GetJSContext());
}
MOZ_ASSERT(!runnable->Failed());
}
// static
@ -945,8 +969,7 @@ URL::UpdateURLSearchParams()
{
if (mSearchParams) {
nsAutoString search;
ErrorResult rv;
GetSearch(search, rv);
GetSearch(search);
mSearchParams->ParseInput(NS_ConvertUTF16toUTF8(Substring(search, 1)));
}
}

View File

@ -70,53 +70,53 @@ public:
RevokeObjectURL(const GlobalObject& aGlobal, const nsAString& aUrl,
ErrorResult& aRv);
void GetHref(nsAString& aHref, ErrorResult& aRv) const;
void GetHref(nsAString& aHref) const;
void SetHref(const nsAString& aHref, ErrorResult& aRv);
void GetOrigin(nsAString& aOrigin, ErrorResult& aRv) const;
void GetOrigin(nsAString& aOrigin) const;
void GetProtocol(nsAString& aProtocol, ErrorResult& aRv) const;
void GetProtocol(nsAString& aProtocol) const;
void SetProtocol(const nsAString& aProtocol, ErrorResult& aRv);
void SetProtocol(const nsAString& aProtocol);
void GetUsername(nsAString& aUsername, ErrorResult& aRv) const;
void GetUsername(nsAString& aUsername) const;
void SetUsername(const nsAString& aUsername, ErrorResult& aRv);
void SetUsername(const nsAString& aUsername);
void GetPassword(nsAString& aPassword, ErrorResult& aRv) const;
void GetPassword(nsAString& aPassword) const;
void SetPassword(const nsAString& aPassword, ErrorResult& aRv);
void SetPassword(const nsAString& aPassword);
void GetHost(nsAString& aHost, ErrorResult& aRv) const;
void GetHost(nsAString& aHost) const;
void SetHost(const nsAString& aHost, ErrorResult& aRv);
void SetHost(const nsAString& aHost);
void GetHostname(nsAString& aHostname, ErrorResult& aRv) const;
void GetHostname(nsAString& aHostname) const;
void SetHostname(const nsAString& aHostname, ErrorResult& aRv);
void SetHostname(const nsAString& aHostname);
void GetPort(nsAString& aPort, ErrorResult& aRv) const;
void GetPort(nsAString& aPort) const;
void SetPort(const nsAString& aPort, ErrorResult& aRv);
void SetPort(const nsAString& aPort);
void GetPathname(nsAString& aPathname, ErrorResult& aRv) const;
void GetPathname(nsAString& aPathname) const;
void SetPathname(const nsAString& aPathname, ErrorResult& aRv);
void SetPathname(const nsAString& aPathname);
void GetSearch(nsAString& aSearch, ErrorResult& aRv) const;
void GetSearch(nsAString& aSearch) const;
void SetSearch(const nsAString& aSearch, ErrorResult& aRv);
void SetSearch(const nsAString& aSearch);
URLSearchParams* SearchParams();
void GetHash(nsAString& aHost, ErrorResult& aRv) const;
void GetHash(nsAString& aHost) const;
void SetHash(const nsAString& aHash, ErrorResult& aRv);
void SetHash(const nsAString& aHash);
void Stringify(nsAString& aRetval, ErrorResult& aRv) const
void Stringify(nsAString& aRetval) const
{
GetHref(aRetval, aRv);
GetHref(aRetval);
}
// IURLSearchParamsObserver