bool nsCSSValue::URL::operator==(const URL& aOther) const { bool eq; return NS_strcmp(GetBufferValue(mString), GetBufferValue(aOther.mString)) == 0 && (GetURI() == aOther.GetURI() || // handles null == null (mURI && aOther.mURI && NS_SUCCEEDED(mURI->Equals(aOther.mURI, &eq)) && eq)) && (mOriginPrincipal == aOther.mOriginPrincipal || (NS_SUCCEEDED(mOriginPrincipal->Equals(aOther.mOriginPrincipal, &eq)) && eq)); }
/* static */ already_AddRefed<URL> URL::Constructor(const GlobalObject& aGlobal, const nsAString& aUrl, URL& aBase, ErrorResult& aRv) { nsresult rv; nsCOMPtr<nsIIOService> ioService(do_GetService(NS_IOSERVICE_CONTRACTID, &rv)); if (NS_FAILED(rv)) { aRv.Throw(rv); return nullptr; } nsCOMPtr<nsIURI> uri; rv = ioService->NewURI(NS_ConvertUTF16toUTF8(aUrl), nullptr, aBase.GetURI(), getter_AddRefs(uri)); if (NS_FAILED(rv)) { aRv.Throw(NS_ERROR_DOM_SYNTAX_ERR); return nullptr; } nsRefPtr<URL> url = new URL(uri); return url.forget(); }