void GMPParent::ActorDestroy(ActorDestroyReason aWhy) { #ifdef MOZ_CRASHREPORTER if (AbnormalShutdown == aWhy) { nsString dumpID; GetCrashID(dumpID); nsString id; // use the parent address to identify it // We could use any unique-to-the-parent value id.AppendInt(reinterpret_cast<uint64_t>(this)); id.Append(NS_LITERAL_STRING(" ")); AppendUTF8toUTF16(mDisplayName, id); id.Append(NS_LITERAL_STRING(" ")); id.Append(dumpID); // NotifyObservers is mainthread-only NS_DispatchToMainThread(WrapRunnableNM(&GMPNotifyObservers, id), NS_DISPATCH_NORMAL); } #endif // warn us off trying to close again mState = GMPStateClosing; CloseActive(); // Normal Shutdown() will delete the process on unwind. if (AbnormalShutdown == aWhy) { NS_DispatchToCurrentThread(NS_NewRunnableMethod(this, &GMPParent::DeleteProcess)); } }
void GMPParent::ActorDestroy(ActorDestroyReason aWhy) { LOGD(("%s::%s: %p (%d)", __CLASS__, __FUNCTION__, this, (int) aWhy)); #ifdef MOZ_CRASHREPORTER if (AbnormalShutdown == aWhy) { nsString dumpID; GetCrashID(dumpID); nsString id; // use the parent address to identify it // We could use any unique-to-the-parent value id.AppendInt(reinterpret_cast<uint64_t>(this)); id.Append(NS_LITERAL_STRING(" ")); AppendUTF8toUTF16(mDisplayName, id); id.Append(NS_LITERAL_STRING(" ")); id.Append(dumpID); // NotifyObservers is mainthread-only NS_DispatchToMainThread(WrapRunnableNM(&GMPNotifyObservers, id), NS_DISPATCH_NORMAL); } #endif // warn us off trying to close again mState = GMPStateClosing; mAbnormalShutdownInProgress = true; CloseActive(false); // Normal Shutdown() will delete the process on unwind. if (AbnormalShutdown == aWhy) { mState = GMPStateClosing; nsRefPtr<GMPParent> self(this); // Note: final destruction will be Dispatched to ourself mService->ReAddOnGMPThread(self); } }
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; }
void AppendUTF8toUTF16( const nsACString& aSource, nsAString& aDest ) { if (!AppendUTF8toUTF16(aSource, aDest, mozilla::fallible_t())) { NS_ABORT_OOM(aDest.Length() + aSource.Length()); } }
void AppendUTF8toUTF16( const char* aSource, nsAString& aDest ) { if (aSource) { AppendUTF8toUTF16(nsDependentCString(aSource), aDest); } }
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; }
nsresult DOMFileImplFile::GetType(nsAString& aType) { if (mContentType.IsVoid()) { NS_ASSERTION(mWholeFile, "Should only use lazy ContentType when using the whole file"); nsresult rv; nsCOMPtr<nsIMIMEService> mimeService = do_GetService(NS_MIMESERVICE_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); nsAutoCString mimeType; rv = mimeService->GetTypeFromFile(mFile, mimeType); if (NS_FAILED(rv)) { mimeType.Truncate(); } AppendUTF8toUTF16(mimeType, mContentType); mContentType.SetIsVoid(false); } aType = mContentType; return NS_OK; }
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::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); }
bool test_valid() { for (unsigned int i = 0; i < ArrayLength(ValidStrings); ++i) { nsDependentCString str8(ValidStrings[i].m8); nsDependentString str16(ValidStrings[i].m16); if (!NS_ConvertUTF16toUTF8(str16).Equals(str8)) return false; if (!NS_ConvertUTF8toUTF16(str8).Equals(str16)) return false; nsCString tmp8("string "); AppendUTF16toUTF8(str16, tmp8); if (!tmp8.Equals(NS_LITERAL_CSTRING("string ") + str8)) return false; nsString tmp16(NS_LITERAL_STRING("string ")); AppendUTF8toUTF16(str8, tmp16); if (!tmp16.Equals(NS_LITERAL_STRING("string ") + str16)) return false; if (CompareUTF8toUTF16(str8, str16) != 0) return false; } return true; }
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; }
NS_IMETHODIMP nsCSSDocumentRule::GetCssText(nsAString& aCssText) { aCssText.AssignLiteral("@-moz-document "); for (URL *url = mURLs; url; url = url->next) { switch (url->func) { case eURL: aCssText.AppendLiteral("url(\""); break; case eURLPrefix: aCssText.AppendLiteral("url-prefix(\""); break; case eDomain: aCssText.AppendLiteral("domain(\""); break; } nsCAutoString escapedURL(url->url); escapedURL.ReplaceSubstring("\"", "\\\""); // escape quotes AppendUTF8toUTF16(escapedURL, aCssText); aCssText.AppendLiteral("\"), "); } aCssText.Cut(aCssText.Length() - 2, 1); // remove last , return nsCSSGroupRule::AppendRulesToCssText(aCssText); }
void AppendUTF8toUTF16(const nsACString& aSource, nsAString& aDest) { if (!AppendUTF8toUTF16(aSource, aDest, mozilla::fallible)) { aDest.AllocFailed(aDest.Length() + aSource.Length()); } }
void AppendUTF8toUTF16( const nsACString& aSource, nsAString& aDest ) { if (!AppendUTF8toUTF16(aSource, aDest, mozilla::fallible_t())) { NS_RUNTIMEABORT("OOM"); } }
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; }
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); } } }
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; }
PRBool test_valid() { for (unsigned int i = 0; i < NS_ARRAY_LENGTH(ValidStrings); ++i) { nsDependentCString str8(ValidStrings[i].m8); nsDependentString str16(ValidStrings[i].m16); if (!NS_ConvertUTF16toUTF8(str16).Equals(str8)) return PR_FALSE; if (!NS_ConvertUTF8toUTF16(str8).Equals(str16)) return PR_FALSE; nsCString tmp8("string "); AppendUTF16toUTF8(str16, tmp8); if (!tmp8.Equals(NS_LITERAL_CSTRING("string ") + str8)) return PR_FALSE; nsString tmp16(NS_LITERAL_STRING("string ")); AppendUTF8toUTF16(str8, tmp16); if (!tmp16.Equals(NS_LITERAL_STRING("string ") + str16)) return PR_FALSE; if (CompareUTF8toUTF16(str8, str16) != 0) return PR_FALSE; } return PR_TRUE; }
void ChromeHangAnnotations::AddAnnotation(const nsAString& aName, const nsACString& aData) { nsString dataString; AppendUTF8toUTF16(aData, dataString); AnnotationType annotation = std::make_pair(nsString(aName), dataString); mAnnotations.push_back(annotation); }
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 URL::GetHash(nsAString& aHash) const { MOZ_ASSERT(mURI); aHash.Truncate(); nsAutoCString ref; nsresult rv = mURI->GetRef(ref); if (NS_SUCCEEDED(rv) && !ref.IsEmpty()) { aHash.Assign(char16_t('#')); AppendUTF8toUTF16(ref, aHash); } }
/* static */ already_AddRefed<dom::Promise> MP4Decoder::IsVideoAccelerated(layers::LayersBackend aBackend, nsIGlobalObject* aParent) { MOZ_ASSERT(NS_IsMainThread()); ErrorResult rv; RefPtr<dom::Promise> promise; promise = dom::Promise::Create(aParent, rv); if (rv.Failed()) { rv.SuppressException(); return nullptr; } RefPtr<TaskQueue> taskQueue = new TaskQueue(GetMediaThreadPool(MediaThreadType::PLATFORM_DECODER)); VideoInfo config; RefPtr<MediaDataDecoder> decoder(CreateTestH264Decoder(aBackend, config, taskQueue)); if (!decoder) { taskQueue->BeginShutdown(); taskQueue->AwaitShutdownAndIdle(); promise->MaybeResolve(NS_LITERAL_STRING("No; Failed to create H264 decoder")); return promise.forget(); } decoder->Init() ->Then(AbstractThread::MainThread(), __func__, [promise, decoder, taskQueue] (TrackInfo::TrackType aTrack) { nsCString failureReason; bool ok = decoder->IsHardwareAccelerated(failureReason); nsAutoString result; if (ok) { result.AssignLiteral("Yes"); } else { result.AssignLiteral("No"); } if (failureReason.Length()) { result.AppendLiteral("; "); AppendUTF8toUTF16(failureReason, result); } decoder->Shutdown(); taskQueue->BeginShutdown(); taskQueue->AwaitShutdownAndIdle(); promise->MaybeResolve(result); }, [promise, decoder, taskQueue] (MediaDataDecoder::DecoderFailureReason aResult) { decoder->Shutdown(); taskQueue->BeginShutdown(); taskQueue->AwaitShutdownAndIdle(); promise->MaybeResolve(NS_LITERAL_STRING("No; Failed to initialize H264 decoder")); }); return promise.forget(); }
void URLMainThread::GetHash(nsAString& aHash, ErrorResult& aRv) const { aHash.Truncate(); nsAutoCString ref; nsresult rv = mURI->GetRef(ref); if (NS_SUCCEEDED(rv) && !ref.IsEmpty()) { aHash.Assign(char16_t('#')); AppendUTF8toUTF16(ref, aHash); } }
void URL::GetHash(nsString& aHash) const { aHash.Truncate(); nsAutoCString ref; nsresult rv = mURI->GetRef(ref); if (NS_SUCCEEDED(rv) && !ref.IsEmpty()) { NS_UnescapeURL(ref); // XXX may result in random non-ASCII bytes! aHash.Assign(PRUnichar('#')); AppendUTF8toUTF16(ref, aHash); } }
NS_IMETHODIMP nsSHEntry::GetTitle(PRUnichar** aTitle) { // Check for empty title... if (mTitle.IsEmpty() && mURI) { // Default title is the URL. nsCAutoString spec; if (NS_SUCCEEDED(mURI->GetSpec(spec))) AppendUTF8toUTF16(spec, mTitle); } *aTitle = ToNewUnicode(mTitle); return NS_OK; }
/* readonly attribute DOMString URI; */ NS_IMETHODIMP nsFontFace::GetURI(nsAString & aURI) { aURI.Truncate(); if (mFontEntry->IsUserFont() && !mFontEntry->IsLocalUserFont()) { NS_ASSERTION(mFontEntry->mUserFontData, "missing userFontData"); if (mFontEntry->mUserFontData->mURI) { nsAutoCString spec; mFontEntry->mUserFontData->mURI->GetSpec(spec); AppendUTF8toUTF16(spec, aURI); } } return NS_OK; }
void nsCSSValuePair::AppendToString(nsAString& aString, nsCSSProperty aPropName) const { if (mXValue.GetUnit() != eCSSUnit_Null) { AppendUTF8toUTF16(nsCSSProps::GetStringValue(aPropName), aString); aString.Append(NS_LITERAL_STRING(": ")); mXValue.AppendToString(aString); NS_ASSERTION(mYValue.GetUnit() != eCSSUnit_Null, nsPrintfCString("Parsed half of a %s?", nsCSSProps::GetStringValue(aPropName).get()).get()); aString.Append(PRUnichar(' ')); mYValue.AppendToString(aString); } }
void URLMainThread::GetHash(nsAString& aHash, ErrorResult& aRv) const { aHash.Truncate(); nsAutoCString ref; nsresult rv = mURI->GetRef(ref); if (NS_SUCCEEDED(rv) && !ref.IsEmpty()) { aHash.Assign(char16_t('#')); if (nsContentUtils::GettersDecodeURLHash()) { NS_UnescapeURL(ref); // XXX may result in random non-ASCII bytes! } AppendUTF8toUTF16(ref, aHash); } }
NS_IMETHODIMP nsApplicationAccessible::GetPlatformVersion(nsAString& aVersion) { aVersion.Truncate(); if (!mAppInfo) return NS_ERROR_FAILURE; nsCAutoString cversion; nsresult rv = mAppInfo->GetPlatformVersion(cversion); NS_ENSURE_SUCCESS(rv, rv); AppendUTF8toUTF16(cversion, aVersion); return NS_OK; }
NS_IMETHODIMP nsApplicationAccessible::GetAppName(nsAString& aName) { aName.Truncate(); if (!mAppInfo) return NS_ERROR_FAILURE; nsCAutoString cname; nsresult rv = mAppInfo->GetName(cname); NS_ENSURE_SUCCESS(rv, rv); AppendUTF8toUTF16(cname, aName); return NS_OK; }