bool MainThreadRun() override { MOZ_ASSERT(NS_IsMainThread()); nsIPrincipal* principal = GetPrincipalFromWorkerPrivate(mWorkerPrivate); if (!principal) { mRv.Throw(NS_ERROR_FAILURE); return true; } bool isNullPrincipal; mRv = principal->GetIsNullPrincipal(&isNullPrincipal); if (NS_WARN_IF(mRv.Failed())) { return true; } if (NS_WARN_IF(isNullPrincipal)) { mRv.Throw(NS_ERROR_FAILURE); return true; } mRv = PrincipalToPrincipalInfo(principal, &mPrincipalInfo); if (NS_WARN_IF(mRv.Failed())) { return true; } mRv = principal->GetOrigin(mOrigin); if (NS_WARN_IF(mRv.Failed())) { return true; } // Walk up to our containing page WorkerPrivate* wp = mWorkerPrivate; while (wp->GetParent()) { wp = wp->GetParent(); } // Window doesn't exist for some kind of workers (eg: SharedWorkers) nsPIDOMWindow* window = wp->GetWindow(); if (!window) { return true; } nsIDocument* doc = window->GetExtantDoc(); if (doc) { mPrivateBrowsing = nsContentUtils::IsInPrivateBrowsing(doc); // No bfcache when BroadcastChannel is used. doc->DisallowBFCaching(); } return true; }
bool MainThreadRun() override { MOZ_ASSERT(NS_IsMainThread()); nsIPrincipal* principal = GetPrincipalFromWorkerPrivate(mWorkerPrivate); if (!principal) { mRv.Throw(NS_ERROR_FAILURE); return true; } bool isNullPrincipal; mRv = principal->GetIsNullPrincipal(&isNullPrincipal); if (NS_WARN_IF(mRv.Failed())) { return true; } if (NS_WARN_IF(isNullPrincipal)) { mRv.Throw(NS_ERROR_FAILURE); return true; } mRv = PrincipalToPrincipalInfo(principal, &mPrincipalInfo); if (NS_WARN_IF(mRv.Failed())) { return true; } mRv = principal->GetOrigin(mOrigin); if (NS_WARN_IF(mRv.Failed())) { return true; } // Walk up to our containing page WorkerPrivate* wp = mWorkerPrivate; while (wp->GetParent()) { wp = wp->GetParent(); } // Window doesn't exist for some kind of workers (eg: SharedWorkers) nsPIDOMWindowInner* window = wp->GetWindow(); if (!window) { return true; } return true; }
virtual bool MainThreadRun() override { AssertIsOnMainThread(); // Walk up to the containing window. WorkerPrivate* wp = mWorkerPrivate; while (wp->GetParent()) { wp = wp->GetParent(); } nsPIDOMWindowInner* window = wp->GetWindow(); // TODO SharedWorker has null window. Don't need to worry about at this // point, though. if (!window) { mRv.Throw(NS_ERROR_FAILURE); return false; } RefPtr<Promise> promise = Navigator::GetDataStores(window, mName, mOwner, mRv); promise->AppendNativeHandler(mPromiseWorkerProxy); return true; }