NS_IMETHODIMP Location::SetProtocol(const nsAString& aProtocol) { nsCOMPtr<nsIURI> uri; nsresult rv = GetWritableURI(getter_AddRefs(uri)); if (NS_WARN_IF(NS_FAILED(rv) || !uri)) { return rv; } rv = uri->SetScheme(NS_ConvertUTF16toUTF8(aProtocol)); if (NS_WARN_IF(NS_FAILED(rv))) { return rv; } nsAutoCString newSpec; rv = uri->GetSpec(newSpec); if (NS_FAILED(rv)) { return rv; } // We may want a new URI class for the new URI, so recreate it: rv = NS_NewURI(getter_AddRefs(uri), newSpec); if (NS_FAILED(rv)) { return rv; } return SetURI(uri); }
NS_IMETHODIMP nsLocation::SetPort(const nsAString& aPort) { if (!CallerSubsumes()) return NS_ERROR_DOM_SECURITY_ERR; nsCOMPtr<nsIURI> uri; nsresult rv = GetWritableURI(getter_AddRefs(uri)); if (uri) { // perhaps use nsReadingIterators at some point? NS_ConvertUTF16toUTF8 portStr(aPort); const char *buf = portStr.get(); int32_t port = -1; if (buf) { if (*buf == ':') { port = atol(buf+1); } else { port = atol(buf); } } rv = uri->SetPort(port); if (NS_SUCCEEDED(rv)) { SetURI(uri); } } return rv; }
NS_IMETHODIMP Location::SetPort(const nsAString& aPort) { nsCOMPtr<nsIURI> uri; nsresult rv = GetWritableURI(getter_AddRefs(uri)); if (NS_WARN_IF(NS_FAILED(rv) || !uri)) { return rv; } // perhaps use nsReadingIterators at some point? NS_ConvertUTF16toUTF8 portStr(aPort); const char *buf = portStr.get(); int32_t port = -1; if (!portStr.IsEmpty() && buf) { if (*buf == ':') { port = atol(buf+1); } else { port = atol(buf); } } rv = uri->SetPort(port); if (NS_WARN_IF(NS_FAILED(rv))) { return rv; } return SetURI(uri); }
NS_IMETHODIMP Location::SetHash(const nsAString& aHash) { NS_ConvertUTF16toUTF8 hash(aHash); if (hash.IsEmpty() || hash.First() != char16_t('#')) { hash.Insert(char16_t('#'), 0); } nsCOMPtr<nsIURI> uri; nsresult rv = GetWritableURI(getter_AddRefs(uri), &hash); if (NS_FAILED(rv) || !uri) { return rv; } return SetURI(uri); }
NS_IMETHODIMP nsLocation::SetProtocol(const nsAString& aProtocol) { nsCOMPtr<nsIURI> uri; nsresult rv = GetWritableURI(getter_AddRefs(uri)); if (uri) { rv = uri->SetScheme(NS_ConvertUTF16toUTF8(aProtocol)); if (NS_SUCCEEDED(rv)) { SetURI(uri); } } return rv; }
NS_IMETHODIMP Location::SetPathname(const nsAString& aPathname) { nsCOMPtr<nsIURI> uri; nsresult rv = GetWritableURI(getter_AddRefs(uri)); if (NS_WARN_IF(NS_FAILED(rv) || !uri)) { return rv; } nsCOMPtr<nsIURIWithQuery> url(do_QueryInterface(uri)); if (url && NS_SUCCEEDED(url->SetFilePath(NS_ConvertUTF16toUTF8(aPathname)))) { return SetURI(uri); } return NS_OK; }
NS_IMETHODIMP Location::SetHostname(const nsAString& aHostname) { nsCOMPtr<nsIURI> uri; nsresult rv = GetWritableURI(getter_AddRefs(uri)); if (NS_WARN_IF(NS_FAILED(rv) || !uri)) { return rv; } rv = uri->SetHost(NS_ConvertUTF16toUTF8(aHostname)); if (NS_WARN_IF(NS_FAILED(rv))) { return rv; } return SetURI(uri); }
NS_IMETHODIMP nsLocation::SetSearch(const nsAString& aSearch) { nsCOMPtr<nsIURI> uri; nsresult rv = GetWritableURI(getter_AddRefs(uri)); nsCOMPtr<nsIURL> url(do_QueryInterface(uri)); if (url) { rv = url->SetQuery(NS_ConvertUTF16toUTF8(aSearch)); if (NS_SUCCEEDED(rv)) { SetURI(uri); } } return rv; }
nsresult Location::SetSearchInternal(const nsAString& aSearch) { nsCOMPtr<nsIURI> uri; nsresult rv = GetWritableURI(getter_AddRefs(uri)); nsCOMPtr<nsIURL> url(do_QueryInterface(uri)); if (NS_WARN_IF(NS_FAILED(rv) || !url)) { return rv; } rv = url->SetQuery(NS_ConvertUTF16toUTF8(aSearch)); if (NS_WARN_IF(NS_FAILED(rv))) { return rv; } return SetURI(uri); }
NS_IMETHODIMP nsLocation::SetPathname(const nsAString& aPathname) { if (!CallerSubsumes()) return NS_ERROR_DOM_SECURITY_ERR; nsCOMPtr<nsIURI> uri; nsresult rv = GetWritableURI(getter_AddRefs(uri)); if (uri) { rv = uri->SetPath(NS_ConvertUTF16toUTF8(aPathname)); if (NS_SUCCEEDED(rv)) { SetURI(uri); } } return rv; }
NS_IMETHODIMP nsLocation::SetHash(const nsAString& aHash) { nsCOMPtr<nsIURI> uri; nsresult rv = GetWritableURI(getter_AddRefs(uri)); if (NS_FAILED(rv) || !uri) { return rv; } NS_ConvertUTF16toUTF8 hash(aHash); if (hash.IsEmpty() || hash.First() != PRUnichar('#')) { hash.Insert(PRUnichar('#'), 0); } rv = uri->SetRef(hash); if (NS_SUCCEEDED(rv)) { SetURI(uri); } return rv; }