void RasterImage::ReportDecoderError() { nsCOMPtr<nsIConsoleService> consoleService = do_GetService(NS_CONSOLESERVICE_CONTRACTID); nsCOMPtr<nsIScriptError> errorObject = do_CreateInstance(NS_SCRIPTERROR_CONTRACTID); if (consoleService && errorObject) { nsAutoString msg(NS_LITERAL_STRING("Image corrupt or truncated.")); nsAutoString src; if (GetURI()) { nsCString uri; if (GetURI()->GetSpecTruncatedTo1k(uri) == ImageURL::TruncatedTo1k) { msg += NS_LITERAL_STRING(" URI in this note truncated due to length."); } src = NS_ConvertUTF8toUTF16(uri); } if (NS_SUCCEEDED(errorObject->InitWithWindowID( msg, src, EmptyString(), 0, 0, nsIScriptError::errorFlag, "Image", InnerWindowID() ))) { consoleService->LogMessage(errorObject); } } }
void Location::SetSearch(const nsAString& aSearch, nsIPrincipal& aSubjectPrincipal, ErrorResult& aRv) { if (!CallerSubsumes(&aSubjectPrincipal)) { aRv.Throw(NS_ERROR_DOM_SECURITY_ERR); return; } nsCOMPtr<nsIURI> uri; aRv = GetURI(getter_AddRefs(uri)); nsCOMPtr<nsIURL> url(do_QueryInterface(uri)); if (NS_WARN_IF(aRv.Failed()) || !url) { return; } if (nsIDocument* doc = GetEntryDocument()) { aRv = NS_MutateURI(uri) .SetQueryWithEncoding(NS_ConvertUTF16toUTF8(aSearch), doc->GetDocumentCharacterSet()) .Finalize(uri); } else { aRv = NS_MutateURI(uri) .SetQuery(NS_ConvertUTF16toUTF8(aSearch)) .Finalize(uri); } if (NS_WARN_IF(aRv.Failed())) { return; } aRv = SetURI(uri); }
void Location::GetPort(nsAString& aPort, nsIPrincipal& aSubjectPrincipal, ErrorResult& aRv) { if (!CallerSubsumes(&aSubjectPrincipal)) { aRv.Throw(NS_ERROR_DOM_SECURITY_ERR); return; } aPort.SetLength(0); nsCOMPtr<nsIURI> uri; aRv = GetURI(getter_AddRefs(uri), true); if (NS_WARN_IF(aRv.Failed()) || !uri) { return; } int32_t port; nsresult result = uri->GetPort(&port); // Don't propagate this exception to caller if (NS_SUCCEEDED(result) && -1 != port) { nsAutoString portStr; portStr.AppendInt(port); aPort.Append(portStr); } }
void Location::GetProtocol(nsAString& aProtocol, nsIPrincipal& aSubjectPrincipal, ErrorResult& aRv) { if (!CallerSubsumes(&aSubjectPrincipal)) { aRv.Throw(NS_ERROR_DOM_SECURITY_ERR); return; } aProtocol.SetLength(0); nsCOMPtr<nsIURI> uri; aRv = GetURI(getter_AddRefs(uri)); if (NS_WARN_IF(aRv.Failed()) || !uri) { return; } nsAutoCString protocol; aRv = uri->GetScheme(protocol); if (NS_WARN_IF(aRv.Failed())) { return; } CopyASCIItoUTF16(protocol, aProtocol); aProtocol.Append(char16_t(':')); }
void Location::GetPathname(nsAString& aPathname, nsIPrincipal& aSubjectPrincipal, ErrorResult& aRv) { if (!CallerSubsumes(&aSubjectPrincipal)) { aRv.Throw(NS_ERROR_DOM_SECURITY_ERR); return; } aPathname.Truncate(); nsCOMPtr<nsIURI> uri; aRv = GetURI(getter_AddRefs(uri)); if (NS_WARN_IF(aRv.Failed()) || !uri) { return; } nsAutoCString file; aRv = uri->GetFilePath(file); if (NS_WARN_IF(aRv.Failed())) { return; } AppendUTF8toUTF16(file, aPathname); }
void Location::SetPathname(const nsAString& aPathname, nsIPrincipal& aSubjectPrincipal, ErrorResult& aRv) { if (!CallerSubsumes(&aSubjectPrincipal)) { aRv.Throw(NS_ERROR_DOM_SECURITY_ERR); return; } nsCOMPtr<nsIURI> uri; aRv = GetURI(getter_AddRefs(uri)); if (NS_WARN_IF(aRv.Failed()) || !uri) { return; } nsresult rv = NS_MutateURI(uri) .SetFilePath(NS_ConvertUTF16toUTF8(aPathname)) .Finalize(uri); if (NS_FAILED(rv)) { return; } aRv = SetURI(uri); }
void Location::GetHost(nsAString& aHost, nsIPrincipal& aSubjectPrincipal, ErrorResult& aRv) { if (!CallerSubsumes(&aSubjectPrincipal)) { aRv.Throw(NS_ERROR_DOM_SECURITY_ERR); return; } aHost.Truncate(); nsCOMPtr<nsIURI> uri; nsresult result; result = GetURI(getter_AddRefs(uri), true); if (uri) { nsAutoCString hostport; result = uri->GetHostPort(hostport); if (NS_SUCCEEDED(result)) { AppendUTF8toUTF16(hostport, aHost); } } }
void Location::GetOrigin(nsAString& aOrigin, nsIPrincipal& aSubjectPrincipal, ErrorResult& aRv) { if (!CallerSubsumes(&aSubjectPrincipal)) { aRv.Throw(NS_ERROR_DOM_SECURITY_ERR); return; } aOrigin.Truncate(); nsCOMPtr<nsIURI> uri; aRv = GetURI(getter_AddRefs(uri), true); if (NS_WARN_IF(aRv.Failed()) || !uri) { return; } nsAutoString origin; aRv = nsContentUtils::GetUTFOrigin(uri, origin); if (NS_WARN_IF(aRv.Failed())) { return; } aOrigin = origin; }
void Location::SetHash(const nsAString& aHash, nsIPrincipal& aSubjectPrincipal, ErrorResult& aRv) { if (!CallerSubsumes(&aSubjectPrincipal)) { aRv.Throw(NS_ERROR_DOM_SECURITY_ERR); return; } NS_ConvertUTF16toUTF8 hash(aHash); if (hash.IsEmpty() || hash.First() != char16_t('#')) { hash.Insert(char16_t('#'), 0); } nsCOMPtr<nsIURI> uri; aRv = GetURI(getter_AddRefs(uri)); if (NS_WARN_IF(aRv.Failed()) || !uri) { return; } aRv = NS_MutateURI(uri) .SetRef(hash) .Finalize(uri); if (NS_WARN_IF(aRv.Failed()) || !uri) { return; } aRv = SetURI(uri); }
NS_IMETHODIMP Location::GetPort(nsAString& aPort) { aPort.SetLength(0); nsCOMPtr<nsIURI> uri; nsresult result = NS_OK; result = GetURI(getter_AddRefs(uri), true); if (uri) { int32_t port; result = uri->GetPort(&port); if (NS_SUCCEEDED(result) && -1 != port) { nsAutoString portStr; portStr.AppendInt(port); aPort.Append(portStr); } // Don't propagate this exception to caller result = NS_OK; } return result; }
NS_IMETHODIMP Location::GetSearch(nsAString& aSearch) { aSearch.SetLength(0); nsCOMPtr<nsIURI> uri; nsresult result = NS_OK; result = GetURI(getter_AddRefs(uri)); nsCOMPtr<nsIURL> url(do_QueryInterface(uri)); if (url) { nsAutoCString search; result = url->GetQuery(search); if (NS_SUCCEEDED(result) && !search.IsEmpty()) { aSearch.Assign(char16_t('?')); AppendUTF8toUTF16(search, aSearch); } } return NS_OK; }
void URLMainThread::SetProtocol(const nsAString& aProtocol, ErrorResult& aRv) { nsAString::const_iterator start, end; aProtocol.BeginReading(start); aProtocol.EndReading(end); nsAString::const_iterator iter(start); FindCharInReadable(':', iter, end); // Changing the protocol of a URL, changes the "nature" of the URI // implementation. In order to do this properly, we have to serialize the // existing URL and reparse it in a new object. nsCOMPtr<nsIURI> clone; nsresult rv = NS_MutateURI(GetURI()) .SetScheme(NS_ConvertUTF16toUTF8(Substring(start, iter))) .Finalize(clone); if (NS_WARN_IF(NS_FAILED(rv))) { return; } nsAutoCString href; rv = clone->GetSpec(href); if (NS_WARN_IF(NS_FAILED(rv))) { return; } nsCOMPtr<nsIURI> uri; rv = NS_NewURI(getter_AddRefs(uri), href); if (NS_WARN_IF(NS_FAILED(rv))) { return; } SetURI(uri.forget()); }
void Location::GetSearch(nsAString& aSearch, nsIPrincipal& aSubjectPrincipal, ErrorResult& aRv) { if (!CallerSubsumes(&aSubjectPrincipal)) { aRv.Throw(NS_ERROR_DOM_SECURITY_ERR); return; } aSearch.SetLength(0); nsCOMPtr<nsIURI> uri; nsresult result = NS_OK; result = GetURI(getter_AddRefs(uri)); nsCOMPtr<nsIURL> url(do_QueryInterface(uri)); if (url) { nsAutoCString search; result = url->GetQuery(search); if (NS_SUCCEEDED(result) && !search.IsEmpty()) { aSearch.Assign(char16_t('?')); AppendUTF8toUTF16(search, aSearch); } } }
string DownloadImage(ThreadInfo* t, ImgMeta* Img){ //creating temp file string FileName; if(t->WorkDir != "") FileName = t->WorkDir + "\\" + Img->id + ".jpg"; else FileName = (string)Img->id + ".jpg"; FILE* f = fopen(FileName.c_str(), "wb"); //setting up big file buffer if(f) setvbuf(f, 0, _IOFBF, FILE_BUFFER_SIZE); else return ""; //retrieving url string URI = GetURI(Img, t->WantSize); //downloading file curl_easy_setopt(t->Curl, CURLOPT_URL, URI.c_str()); curl_easy_setopt(t->Curl, CURLOPT_WRITEDATA, f); curl_easy_perform(t->Curl); fclose(f); return FileName; };
NS_IMETHODIMP nsLocation::GetProtocol(nsAString& aProtocol) { if (!CallerSubsumes()) return NS_ERROR_DOM_SECURITY_ERR; aProtocol.SetLength(0); nsCOMPtr<nsIURI> uri; nsresult result = NS_OK; result = GetURI(getter_AddRefs(uri)); if (uri) { nsAutoCString protocol; result = uri->GetScheme(protocol); if (NS_SUCCEEDED(result)) { CopyASCIItoUTF16(protocol, aProtocol); aProtocol.Append(PRUnichar(':')); } } return result; }
NS_IMETHODIMP nsLocation::GetSearch(nsAString& aSearch) { if (!CallerSubsumes()) return NS_ERROR_DOM_SECURITY_ERR; aSearch.SetLength(0); nsCOMPtr<nsIURI> uri; nsresult result = NS_OK; result = GetURI(getter_AddRefs(uri)); nsCOMPtr<nsIURL> url(do_QueryInterface(uri)); if (url) { nsAutoCString search; result = url->GetQuery(search); if (NS_SUCCEEDED(result) && !search.IsEmpty()) { aSearch.Assign(PRUnichar('?')); AppendUTF8toUTF16(search, aSearch); } } return NS_OK; }
NS_IMETHODIMP nsLocation::GetPathname(nsAString& aPathname) { if (!CallerSubsumes()) return NS_ERROR_DOM_SECURITY_ERR; aPathname.Truncate(); nsCOMPtr<nsIURI> uri; nsresult result = NS_OK; result = GetURI(getter_AddRefs(uri)); nsCOMPtr<nsIURL> url(do_QueryInterface(uri)); if (url) { nsAutoCString file; result = url->GetFilePath(file); if (NS_SUCCEEDED(result)) { AppendUTF8toUTF16(file, aPathname); } } return result; }
NS_IMETHODIMP nsLocation::GetHref(nsAString& aHref) { if (!CallerSubsumes()) return NS_ERROR_DOM_SECURITY_ERR; aHref.Truncate(); nsCOMPtr<nsIURI> uri; nsresult result; result = GetURI(getter_AddRefs(uri)); if (uri) { nsAutoCString uriString; result = uri->GetSpec(uriString); if (NS_SUCCEEDED(result)) { AppendUTF8toUTF16(uriString, aHref); } } return result; }
NS_IMETHODIMP nsLocation::GetHostname(nsAString& aHostname) { if (!CallerSubsumes()) return NS_ERROR_DOM_SECURITY_ERR; aHostname.Truncate(); nsCOMPtr<nsIURI> uri; nsresult result; result = GetURI(getter_AddRefs(uri), true); if (uri) { nsAutoCString host; result = uri->GetHost(host); if (NS_SUCCEEDED(result)) { AppendUTF8toUTF16(host, aHostname); } } return NS_OK; }
lunchbox::URI deserializeDataSource( const ::zeq::Event& event ) { if( event.getType() != EVENT_DATASOURCE ) return lunchbox::URI(); auto data = GetURI( event.getData( )); return lunchbox::URI( data->uri()->c_str( )); }
NS_IMETHODIMP Location::GetHash(nsAString& aHash) { aHash.SetLength(0); nsCOMPtr<nsIURI> uri; nsresult rv = GetURI(getter_AddRefs(uri)); if (NS_FAILED(rv) || !uri) { return rv; } nsAutoCString ref; nsAutoString unicodeRef; rv = uri->GetRef(ref); if (nsContentUtils::GettersDecodeURLHash()) { if (NS_SUCCEEDED(rv)) { nsCOMPtr<nsITextToSubURI> textToSubURI( do_GetService(NS_ITEXTTOSUBURI_CONTRACTID, &rv)); if (NS_SUCCEEDED(rv)) { nsAutoCString charset; uri->GetOriginCharset(charset); rv = textToSubURI->UnEscapeURIForUI(charset, ref, unicodeRef); } if (NS_FAILED(rv)) { // Oh, well. No intl here! NS_UnescapeURL(ref); CopyASCIItoUTF16(ref, unicodeRef); rv = NS_OK; } } if (NS_SUCCEEDED(rv) && !unicodeRef.IsEmpty()) { aHash.Assign(char16_t('#')); aHash.Append(unicodeRef); } } else { // URL Hash should simply return the value of the Ref segment if (NS_SUCCEEDED(rv) && !ref.IsEmpty()) { aHash.Assign(char16_t('#')); AppendUTF8toUTF16(ref, aHash); } } if (aHash == mCachedHash) { // Work around ShareThis stupidly polling location.hash every // 5ms all the time by handing out the same exact string buffer // we handed out last time. aHash = mCachedHash; } else { mCachedHash = aHash; } return rv; }
void nsPartChannel::SetContentDisposition(const nsACString& aContentDispositionHeader) { mContentDispositionHeader = aContentDispositionHeader; nsCOMPtr<nsIURI> uri; GetURI(getter_AddRefs(uri)); NS_GetFilenameFromDisposition(mContentDispositionFilename, mContentDispositionHeader, uri); mContentDisposition = NS_GetContentDispositionFromHeader(mContentDispositionHeader, this); }
NS_IMETHODIMP nsGeolocationRequest::GetRequestingURI(nsIURI * *aRequestingURI) { NS_ENSURE_ARG_POINTER(aRequestingURI); nsCOMPtr<nsIURI> uri = mLocator->GetURI(); uri.forget(aRequestingURI); return NS_OK; }
already_AddRefed<nsIURI> Link::GetURIToMutate() { nsCOMPtr<nsIURI> uri(GetURI()); if (!uri) { return nullptr; } nsCOMPtr<nsIURI> clone; (void)uri->Clone(getter_AddRefs(clone)); return clone.forget(); }
NS_IMETHODIMP nsLocation::GetHash(nsAString& aHash) { if (!CallerSubsumes()) return NS_ERROR_DOM_SECURITY_ERR; aHash.SetLength(0); nsCOMPtr<nsIURI> uri; nsresult rv = GetURI(getter_AddRefs(uri)); if (NS_FAILED(rv) || !uri) { return rv; } nsCAutoString ref; nsAutoString unicodeRef; rv = uri->GetRef(ref); if (NS_SUCCEEDED(rv)) { nsCOMPtr<nsITextToSubURI> textToSubURI( do_GetService(NS_ITEXTTOSUBURI_CONTRACTID, &rv)); if (NS_SUCCEEDED(rv)) { nsCAutoString charset; uri->GetOriginCharset(charset); rv = textToSubURI->UnEscapeURIForUI(charset, ref, unicodeRef); } if (NS_FAILED(rv)) { // Oh, well. No intl here! NS_UnescapeURL(ref); CopyASCIItoUTF16(ref, unicodeRef); rv = NS_OK; } } if (NS_SUCCEEDED(rv) && !unicodeRef.IsEmpty()) { aHash.Assign(PRUnichar('#')); aHash.Append(unicodeRef); } if (aHash == mCachedHash) { // Work around ShareThis stupidly polling location.hash every // 5ms all the time by handing out the same exact string buffer // we handed out last time. aHash = mCachedHash; } else { mCachedHash = aHash; } return rv; }
nsEventStates Link::LinkState() const { // We are a constant method, but we are just lazily doing things and have to // track that state. Cast away that constness! Link *self = const_cast<Link *>(this); // If we are not in the document, default to not visited. Element *element = self->mElement; if (!element->IsInDoc()) { self->mLinkState = eLinkState_Unvisited; } // If we have not yet registered for notifications and are in an unknown // state, register now! if (!mRegistered && mLinkState == eLinkState_Unknown) { // First, make sure the href attribute has a valid link (bug 23209). nsCOMPtr<nsIURI> hrefURI(GetURI()); if (!hrefURI) { self->mLinkState = eLinkState_NotLink; return nsEventStates(); } // Assume that we are not visited until we are told otherwise. self->mLinkState = eLinkState_Unvisited; // We have a good href, so register with History. if (mHistory) { nsresult rv = mHistory->RegisterVisitedCallback(hrefURI, self); if (NS_SUCCEEDED(rv)) { self->mRegistered = true; // And make sure we are in the document's link map. nsIDocument *doc = element->GetCurrentDoc(); if (doc) { doc->AddStyleRelevantLink(self); } } } } // Otherwise, return our known state. if (mLinkState == eLinkState_Visited) { return NS_EVENT_STATE_VISITED; } if (mLinkState == eLinkState_Unvisited) { return NS_EVENT_STATE_UNVISITED; } return nsEventStates(); }
NS_IMETHODIMP Location::GetHostname(nsAString& aHostname) { aHostname.Truncate(); nsCOMPtr<nsIURI> uri; GetURI(getter_AddRefs(uri), true); if (uri) { nsContentUtils::GetHostOrIPv6WithBrackets(uri, aHostname); } return NS_OK; }
void URL::UpdateURLSearchParams() { if (!mSearchParams) { return; } nsAutoCString search; nsresult rv = GetURI()->GetQuery(search); if (NS_WARN_IF(NS_FAILED(rv))) { search.Truncate(); } mSearchParams->ParseInput(search); }
void Link::GetPassword(nsAString &aPassword, ErrorResult& aError) { aPassword.Truncate(); nsCOMPtr<nsIURI> uri(GetURI()); if (!uri) { return; } nsAutoCString password; uri->GetPassword(password); CopyASCIItoUTF16(password, aPassword); }
void Link::GetUsername(nsAString& aUsername, ErrorResult& aError) { aUsername.Truncate(); nsCOMPtr<nsIURI> uri(GetURI()); if (!uri) { return; } nsAutoCString username; uri->GetUsername(username); CopyASCIItoUTF16(username, aUsername); }