void Link::SetHostname(const nsAString &aHostname) { nsCOMPtr<nsIURI> uri(GetURIToMutate()); if (!uri) { // Ignore failures to be compatible with NS4. return; } (void)uri->SetHost(NS_ConvertUTF16toUTF8(aHostname)); SetHrefAttribute(uri); }
void Link::SetHash(const nsAString &aHash, ErrorResult& aError) { nsCOMPtr<nsIURI> uri(GetURIToMutate()); if (!uri) { // Ignore failures to be compatible with NS4. return; } (void)uri->SetRef(NS_ConvertUTF16toUTF8(aHash)); SetHrefAttribute(uri); }
void Link::SetPassword(const nsAString &aPassword) { nsCOMPtr<nsIURI> uri(GetURIToMutate()); if (!uri) { // Ignore failures to be compatible with NS4. return; } uri->SetPassword(NS_ConvertUTF16toUTF8(aPassword)); SetHrefAttribute(uri); }
void Link::SetSearchInternal(const nsAString& aSearch) { nsCOMPtr<nsIURI> uri(GetURIToMutate()); nsCOMPtr<nsIURL> url(do_QueryInterface(uri)); if (!url) { // Ignore failures to be compatible with NS4. return; } (void)url->SetQuery(NS_ConvertUTF16toUTF8(aSearch)); SetHrefAttribute(uri); }
void Link::SetPathname(const nsAString &aPathname, ErrorResult& aError) { nsCOMPtr<nsIURI> uri(GetURIToMutate()); nsCOMPtr<nsIURL> url(do_QueryInterface(uri)); if (!url) { // Ignore failures to be compatible with NS4. return; } (void)url->SetFilePath(NS_ConvertUTF16toUTF8(aPathname)); SetHrefAttribute(uri); }
void Link::SetProtocol(const nsAString &aProtocol, ErrorResult& aError) { nsCOMPtr<nsIURI> uri(GetURIToMutate()); if (!uri) { // Ignore failures to be compatible with NS4. return; } nsAString::const_iterator start, end; aProtocol.BeginReading(start); aProtocol.EndReading(end); nsAString::const_iterator iter(start); (void)FindCharInReadable(':', iter, end); (void)uri->SetScheme(NS_ConvertUTF16toUTF8(Substring(start, iter))); SetHrefAttribute(uri); }
void Link::SetPort(const nsAString &aPort) { nsCOMPtr<nsIURI> uri(GetURIToMutate()); if (!uri) { // Ignore failures to be compatible with NS4. return; } nsresult rv; nsAutoString portStr(aPort); int32_t port = portStr.ToInteger(&rv); if (NS_FAILED(rv)) { return; } (void)uri->SetPort(port); SetHrefAttribute(uri); }
void Link::SetHost(const nsAString &aHost) { nsCOMPtr<nsIURI> uri(GetURIToMutate()); if (!uri) { // Ignore failures to be compatible with NS4. return; } // We cannot simply call nsIURI::SetHost because that would treat the name as // an IPv6 address (like http:://[server:443]/). We also cannot call // nsIURI::SetHostPort because that isn't implemented. Sadfaces. // First set the hostname. nsAString::const_iterator start, end; aHost.BeginReading(start); aHost.EndReading(end); nsAString::const_iterator iter(start); (void)FindCharInReadable(':', iter, end); NS_ConvertUTF16toUTF8 host(Substring(start, iter)); (void)uri->SetHost(host); // Also set the port if needed. if (iter != end) { iter++; if (iter != end) { nsAutoString portStr(Substring(iter, end)); nsresult rv; int32_t port = portStr.ToInteger(&rv); if (NS_SUCCEEDED(rv)) { (void)uri->SetPort(port); } } }; SetHrefAttribute(uri); return; }
void Link::SetPort(const nsAString &aPort, ErrorResult& aError) { nsCOMPtr<nsIURI> uri(GetURIToMutate()); if (!uri) { // Ignore failures to be compatible with NS4. return; } nsresult rv; nsAutoString portStr(aPort); // nsIURI uses -1 as default value. int32_t port = -1; if (!aPort.IsEmpty()) { port = portStr.ToInteger(&rv); if (NS_FAILED(rv)) { return; } } (void)uri->SetPort(port); SetHrefAttribute(uri); }