Bug 787961 - Remove mDocument from WorkerPrivate, r=bent

--HG--
extra : rebase_source : 6f2560f658e365b89bb602d498b082cf84bdaef9
This commit is contained in:
Olli Pettay 2012-09-05 20:47:57 +03:00
parent d31ab32b8a
commit ed667ac966
2 changed files with 10 additions and 22 deletions

View File

@ -1892,8 +1892,7 @@ WorkerPrivateParent<Derived>::WorkerPrivateParent(
nsCOMPtr<nsPIDOMWindow>& aWindow,
nsCOMPtr<nsIScriptContext>& aScriptContext,
nsCOMPtr<nsIURI>& aBaseURI,
nsCOMPtr<nsIPrincipal>& aPrincipal,
nsCOMPtr<nsIDocument>& aDocument)
nsCOMPtr<nsIPrincipal>& aPrincipal)
: EventTarget(aParent ? aCx : NULL), mMutex("WorkerPrivateParent Mutex"),
mCondVar(mMutex, "WorkerPrivateParent CondVar"),
mJSObject(aObject), mParent(aParent), mParentJSContext(aParentJSContext),
@ -1914,7 +1913,6 @@ WorkerPrivateParent<Derived>::WorkerPrivateParent(
mScriptNotify = do_QueryInterface(mScriptContext);
mBaseURI.swap(aBaseURI);
mPrincipal.swap(aPrincipal);
mDocument.swap(aDocument);
if (aParent) {
aParent->AssertIsOnWorkerThread();
@ -2221,7 +2219,6 @@ WorkerPrivateParent<Derived>::ForgetMainThreadObjects(
SwapToISupportsArray(mBaseURI, aDoomed);
SwapToISupportsArray(mScriptURI, aDoomed);
SwapToISupportsArray(mPrincipal, aDoomed);
SwapToISupportsArray(mDocument, aDoomed);
mMainThreadObjectsForgotten = true;
}
@ -2278,7 +2275,8 @@ uint64_t
WorkerPrivateParent<Derived>::GetInnerWindowId()
{
AssertIsOnMainThread();
return mDocument ? mDocument->InnerWindowID() : 0;
NS_ASSERTION(!mWindow || mWindow->IsInnerWindow(), "Outer window?");
return mWindow ? mWindow->WindowID() : 0;
}
template <class Derived>
@ -2454,12 +2452,11 @@ WorkerPrivate::WorkerPrivate(JSContext* aCx, JSObject* aObject,
nsCOMPtr<nsPIDOMWindow>& aWindow,
nsCOMPtr<nsIScriptContext>& aParentScriptContext,
nsCOMPtr<nsIURI>& aBaseURI,
nsCOMPtr<nsIPrincipal>& aPrincipal,
nsCOMPtr<nsIDocument>& aDocument)
nsCOMPtr<nsIPrincipal>& aPrincipal)
: WorkerPrivateParent<WorkerPrivate>(aCx, aObject, aParent, aParentJSContext,
aScriptURL, aIsChromeWorker, aDomain,
aWindow, aParentScriptContext, aBaseURI,
aPrincipal, aDocument),
aPrincipal),
mJSContext(nullptr), mErrorHandlerRecursionCount(0), mNextTimeoutId(1),
mStatus(Pending), mSuspended(false), mTimerRunning(false),
mRunningExpiredTimeouts(false), mCloseHandlerStarted(false),
@ -2648,7 +2645,7 @@ WorkerPrivate::Create(JSContext* aCx, JSObject* aObj, WorkerPrivate* aParent,
nsRefPtr<WorkerPrivate> worker =
new WorkerPrivate(aCx, aObj, aParent, parentContext, scriptURL,
aIsChromeWorker, domain, window, scriptContext, baseURI,
principal, document);
principal);
worker->SetIsDOMBinding();
worker->SetWrapper(aObj);

View File

@ -11,6 +11,7 @@
#include "nsIRunnable.h"
#include "nsIThread.h"
#include "nsIThreadInternal.h"
#include "nsPIDOMWindow.h"
#include "jsapi.h"
#include "mozilla/CondVar.h"
@ -181,7 +182,6 @@ private:
nsCOMPtr<nsIURI> mBaseURI;
nsCOMPtr<nsIURI> mScriptURI;
nsCOMPtr<nsIPrincipal> mPrincipal;
nsCOMPtr<nsIDocument> mDocument;
// Only used for top level workers.
nsTArray<nsRefPtr<WorkerRunnable> > mQueuedRunnables;
@ -204,8 +204,7 @@ protected:
nsCOMPtr<nsPIDOMWindow>& aWindow,
nsCOMPtr<nsIScriptContext>& aScriptContext,
nsCOMPtr<nsIURI>& aBaseURI,
nsCOMPtr<nsIPrincipal>& aPrincipal,
nsCOMPtr<nsIDocument>& aDocument);
nsCOMPtr<nsIPrincipal>& aPrincipal);
~WorkerPrivateParent();
@ -426,14 +425,7 @@ public:
GetDocument() const
{
AssertIsOnMainThread();
return mDocument;
}
void
SetDocument(nsIDocument* aDocument)
{
AssertIsOnMainThread();
mDocument = aDocument;
return mWindow ? mWindow->GetExtantDoc() : nullptr;
}
nsPIDOMWindow*
@ -727,8 +719,7 @@ private:
bool aIsChromeWorker, const nsACString& aDomain,
nsCOMPtr<nsPIDOMWindow>& aWindow,
nsCOMPtr<nsIScriptContext>& aScriptContext,
nsCOMPtr<nsIURI>& aBaseURI, nsCOMPtr<nsIPrincipal>& aPrincipal,
nsCOMPtr<nsIDocument>& aDocument);
nsCOMPtr<nsIURI>& aBaseURI, nsCOMPtr<nsIPrincipal>& aPrincipal);
bool
Dispatch(WorkerRunnable* aEvent, EventQueue* aQueue);