diff --git a/mozilla/chrome/src/nsChromeProtocolHandler.cpp b/mozilla/chrome/src/nsChromeProtocolHandler.cpp index 66a7f4c54de..4018105609a 100644 --- a/mozilla/chrome/src/nsChromeProtocolHandler.cpp +++ b/mozilla/chrome/src/nsChromeProtocolHandler.cpp @@ -114,8 +114,6 @@ protected: nsCOMPtr mOwner; nsresult mStatus; - nsresult PostLoadEvent(); - #ifdef PR_LOGGING static PRLogModuleInfo* gLog; #endif @@ -223,7 +221,7 @@ nsCachedChromeChannel::AsyncOpen(nsIStreamListener *listener, nsISupports *ctxt) // Queue an event to ourselves to let the stack unwind before // calling OnStartRequest(). This allows embedding to occur // before we fire OnStopRequest(). - rv = PostLoadEvent(); + rv = NS_DispatchToCurrentThread(this); if (NS_FAILED(rv)) return rv; @@ -347,15 +345,6 @@ nsCachedChromeChannel::SetContentLength(PRInt32 aContentLength) return NS_ERROR_NOT_IMPLEMENTED; } -nsresult -nsCachedChromeChannel::PostLoadEvent() -{ - nsCOMPtr thread = do_GetCurrentThread(); - NS_ENSURE_STATE(thread); - - return thread->Dispatch(this, NS_DISPATCH_NORMAL); -} - NS_IMETHODIMP nsCachedChromeChannel::Run() { diff --git a/mozilla/content/base/src/nsDocument.cpp b/mozilla/content/base/src/nsDocument.cpp index b640a7248e9..10b9906d69b 100644 --- a/mozilla/content/base/src/nsDocument.cpp +++ b/mozilla/content/base/src/nsDocument.cpp @@ -5277,20 +5277,13 @@ private: void nsDocument::PostUnblockOnloadEvent() { - nsCOMPtr thread = do_GetCurrentThread(); - if (!thread) { - return; - } - nsCOMPtr evt = new nsUnblockOnloadEvent(this); - if (!evt) { - return; - } - - nsresult rv = thread->Dispatch(evt, NS_DISPATCH_NORMAL); + nsresult rv = NS_DispatchToCurrentThread(evt); if (NS_SUCCEEDED(rv)) { // Stabilize block count so we don't post more events while this one is up ++mOnloadBlockCount; + } else { + NS_WARNING("failed to dispatch nsUnblockOnloadEvent"); } } diff --git a/mozilla/content/base/src/nsImageLoadingContent.cpp b/mozilla/content/base/src/nsImageLoadingContent.cpp index 2298d6a027a..88db68de568 100644 --- a/mozilla/content/base/src/nsImageLoadingContent.cpp +++ b/mozilla/content/base/src/nsImageLoadingContent.cpp @@ -770,10 +770,8 @@ nsImageLoadingContent::FireEvent(const nsAString& aEventType) return NS_OK; } - // Use the UI thread event queue (though we should not be getting called from - // off the UI thread in any case....) - nsCOMPtr thread = do_GetMainThread(); - NS_ENSURE_STATE(thread); + // We should not be getting called from off the UI thread... + NS_ASSERTION(NS_IsMainThread(), "should be on the main thread"); nsIPresShell *shell = document->GetShellAt(0); NS_ENSURE_TRUE(shell, NS_ERROR_FAILURE); @@ -791,5 +789,5 @@ nsImageLoadingContent::FireEvent(const nsAString& aEventType) // want to block now, even if posting will fail. document->BlockOnload(); - return thread->Dispatch(evt, NS_DISPATCH_NORMAL); + return NS_DispatchToCurrentThread(evt); } diff --git a/mozilla/content/base/src/nsObjectLoadingContent.cpp b/mozilla/content/base/src/nsObjectLoadingContent.cpp index abe449537f0..83507621594 100644 --- a/mozilla/content/base/src/nsObjectLoadingContent.cpp +++ b/mozilla/content/base/src/nsObjectLoadingContent.cpp @@ -162,7 +162,8 @@ public: NS_IMETHODIMP nsPluginNotFoundEvent::Run() { - LOG(("OBJLC []: Firing plugin not found event for content %p\n", mContent)); + LOG(("OBJLC []: Firing plugin not found event for content %p\n", + mContent.get())); nsContentUtils::DispatchTrustedEvent(mContent->GetDocument(), mContent, NS_LITERAL_STRING("PluginNotFound"), PR_TRUE, PR_TRUE); @@ -576,11 +577,6 @@ nsObjectLoadingContent::HasNewFrame(nsIObjectFrame* aFrame) return NS_OK; } - nsCOMPtr thread = do_GetCurrentThread(); - if (!thread) { - return NS_ERROR_UNEXPECTED; - } - mPendingInstantiateEvent = new nsAsyncInstantiateEvent(this, aFrame, mContentType, mURI); if (!mPendingInstantiateEvent) { @@ -588,7 +584,7 @@ nsObjectLoadingContent::HasNewFrame(nsIObjectFrame* aFrame) } LOG((" dispatching event\n")); - nsresult rv = thread->Dispatch(mPendingInstantiateEvent, NS_DISPATCH_NORMAL); + nsresult rv = NS_DispatchToCurrentThread(mPendingInstantiateEvent); if (NS_FAILED(rv)) { NS_NOTREACHED("failed to dispatch nsAsyncInstantiateEvent"); mPendingInstantiateEvent = nsnull; // break cycle @@ -1153,21 +1149,13 @@ nsObjectLoadingContent::NotifyStateChanged(ObjectType aOldType, /* static */ void nsObjectLoadingContent::FirePluginNotFound(nsIContent* thisContent) { - nsCOMPtr thread = do_GetCurrentThread(); - if (!thread) { - return; - } - - nsCOMPtr ev = new nsPluginNotFoundEvent(thisContent); - if (!ev) { - return; - } - LOG(("OBJLC []: Dispatching PluginNotFound event for content %p\n", thisContent)); - nsresult rv = thread->Dispatch(ev, NS_DISPATCH_NORMAL); + + nsCOMPtr ev = new nsPluginNotFoundEvent(thisContent); + nsresult rv = NS_DispatchToCurrentThread(ev); if (NS_FAILED(rv)) { - NS_NOTREACHED("failed to dispatch PluginNotFound event"); + NS_WARNING("failed to dispatch nsPluginNotFoundEvent"); } } @@ -1180,8 +1168,8 @@ nsObjectLoadingContent::GetTypeOfContent(const nsCString& aMIMEType) return eType_Image; } - PRBool isSVG = aMIMEType.LowerCaseEqualsLiteral("image/svg+xml"); #ifdef MOZ_SVG + PRBool isSVG = aMIMEType.LowerCaseEqualsLiteral("image/svg+xml"); PRBool supportedSVG = isSVG && (caps & eSupportSVG); #else PRBool supportedSVG = PR_FALSE; diff --git a/mozilla/content/events/src/nsPLDOMEvent.cpp b/mozilla/content/events/src/nsPLDOMEvent.cpp index ff9a13e820f..1ecf0acf018 100644 --- a/mozilla/content/events/src/nsPLDOMEvent.cpp +++ b/mozilla/content/events/src/nsPLDOMEvent.cpp @@ -71,8 +71,5 @@ NS_IMETHODIMP nsPLDOMEvent::Run() nsresult nsPLDOMEvent::PostDOMEvent() { - nsCOMPtr thread = do_GetCurrentThread(); - NS_ENSURE_STATE(thread); - - return thread->Dispatch(this, NS_DISPATCH_NORMAL); + return NS_DispatchToCurrentThread(this); } diff --git a/mozilla/content/xslt/src/xslt/txMozillaXSLTProcessor.cpp b/mozilla/content/xslt/src/xslt/txMozillaXSLTProcessor.cpp index 3ba6e89edd7..2e4c8e33a64 100644 --- a/mozilla/content/xslt/src/xslt/txMozillaXSLTProcessor.cpp +++ b/mozilla/content/xslt/src/xslt/txMozillaXSLTProcessor.cpp @@ -351,14 +351,12 @@ txMozillaXSLTProcessor::DoTransform() NS_ENSURE_TRUE(mSource, NS_ERROR_UNEXPECTED); NS_ENSURE_TRUE(mStylesheet, NS_ERROR_UNEXPECTED); NS_ASSERTION(mObserver, "no observer"); + NS_ASSERTION(NS_IsMainThread(), "should only be on main thread"); nsresult rv; nsCOMPtr document = do_QueryInterface(mSource, &rv); NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr thread = do_GetMainThread(); - NS_ENSURE_STATE(thread); - nsCOMPtr event = new nsTransformBlockerEvent(this); if (!event) { return NS_ERROR_OUT_OF_MEMORY; @@ -366,7 +364,7 @@ txMozillaXSLTProcessor::DoTransform() document->BlockOnload(); - rv = thread->Dispatch(event, NS_DISPATCH_NORMAL); + rv = NS_DispatchToCurrentThread(event); if (NS_FAILED(rv)) { // XXX Maybe we should just display the source document in this case? // Also, set up context information, see bug 204655. diff --git a/mozilla/directory/xpcom/base/src/nsLDAPConnection.cpp b/mozilla/directory/xpcom/base/src/nsLDAPConnection.cpp index dd83cbcff83..8d3af07c8a0 100644 --- a/mozilla/directory/xpcom/base/src/nsLDAPConnection.cpp +++ b/mozilla/directory/xpcom/base/src/nsLDAPConnection.cpp @@ -49,13 +49,12 @@ #include "nsIComponentManager.h" #include "nsLDAPConnection.h" #include "nsLDAPMessage.h" -#include "nsIEventQueueService.h" +#include "nsThreadUtils.h" #include "nsIConsoleService.h" #include "nsIDNSService.h" #include "nsIDNSRecord.h" #include "nsIRequestObserver.h" #include "nsIProxyObjectManager.h" -#include "nsEventQueueUtils.h" #include "nsNetError.h" #include "nsLDAPOperation.h" #include "nsILDAPErrors.h" @@ -193,11 +192,10 @@ nsLDAPConnection::Init(const char *aHost, PRInt32 aPort, PRBool aSSL, return NS_ERROR_FAILURE; } - nsCOMPtr curEventQ; - rv = NS_GetCurrentEventQ(getter_AddRefs(curEventQ)); - if (NS_FAILED(rv)) { + nsCOMPtr curThread = do_GetCurrentThread(); + if (!curThread) { NS_ERROR("nsLDAPConnection::Init(): couldn't " - "get current event queue"); + "get current thread"); return NS_ERROR_FAILURE; } // Do the pre-resolve of the hostname, using the DNS service. This @@ -229,7 +227,7 @@ nsLDAPConnection::Init(const char *aHost, PRInt32 aPort, PRBool aSSL, if (spacePos != kNotFound) mDNSHost.Truncate(spacePos); - rv = pDNSService->AsyncResolve(mDNSHost, 0, this, curEventQ, + rv = pDNSService->AsyncResolve(mDNSHost, 0, this, curThread, getter_AddRefs(mDNSRequest)); if (NS_FAILED(rv)) { @@ -1023,13 +1021,13 @@ nsLDAPConnection::OnLookupComplete(nsICancelable *aRequest, mRunnable->mWeakConn = do_GetWeakReference(conn); // kick off a thread for result listening and marshalling - // XXXdmose - should this be JOINABLE? // - rv = NS_NewThread(getter_AddRefs(mThread), mRunnable, 0, - PR_UNJOINABLE_THREAD); + rv = NS_NewThread(getter_AddRefs(mThread), mRunnable); if (NS_FAILED(rv)) { rv = NS_ERROR_NOT_AVAILABLE; } + // XXX(darin): We need to shutdown this thread at some point. + // Otherwise, it will stick around until shutdown. } } diff --git a/mozilla/docshell/base/nsDocShell.cpp b/mozilla/docshell/base/nsDocShell.cpp index 529783eac35..90fb6cecdcd 100644 --- a/mozilla/docshell/base/nsDocShell.cpp +++ b/mozilla/docshell/base/nsDocShell.cpp @@ -5156,18 +5156,13 @@ nsDocShell::RestorePresentation(nsISHEntry *aSHEntry, PRBool *aRestoring) // to the event loop. This mimics the way it is called by nsIChannel // implementations. - nsCOMPtr thread = do_GetCurrentThread(); - NS_ENSURE_TRUE(thread, NS_ERROR_UNEXPECTED); - if (!mWeakSelf) { mWeakSelf = this; NS_ENSURE_TRUE(mWeakSelf, NS_ERROR_OUT_OF_MEMORY); } nsCOMPtr evt = new RestorePresentationEvent(mWeakSelf); - NS_ENSURE_TRUE(evt, NS_ERROR_OUT_OF_MEMORY); - - nsresult rv = thread->Dispatch(evt, NS_DISPATCH_NORMAL); + nsresult rv = NS_DispatchToCurrentThread(evt); if (NS_SUCCEEDED(rv)) { // The rest of the restore processing will happen on our PLEvent // callback. diff --git a/mozilla/docshell/base/nsWebShell.cpp b/mozilla/docshell/base/nsWebShell.cpp index a6099a74547..b07324a8c0e 100644 --- a/mozilla/docshell/base/nsWebShell.cpp +++ b/mozilla/docshell/base/nsWebShell.cpp @@ -621,15 +621,10 @@ nsWebShell::OnLinkClick(nsIContent* aContent, nsIInputStream* aPostDataStream, nsIInputStream* aHeadersDataStream) { - nsCOMPtr thread = do_GetCurrentThread(); - NS_ENSURE_STATE(thread); - nsCOMPtr ev = new OnLinkClickEvent(this, aContent, aVerb, aURI, aTargetSpec, aPostDataStream, aHeadersDataStream); - NS_ENSURE_TRUE(ev, NS_ERROR_OUT_OF_MEMORY); - - return thread->Dispatch(ev, NS_DISPATCH_NORMAL); + return NS_DispatchToCurrentThread(ev); } NS_IMETHODIMP diff --git a/mozilla/docshell/shistory/src/nsSHEntry.cpp b/mozilla/docshell/shistory/src/nsSHEntry.cpp index 4ac37827da3..f86ed837798 100644 --- a/mozilla/docshell/shistory/src/nsSHEntry.cpp +++ b/mozilla/docshell/shistory/src/nsSHEntry.cpp @@ -711,18 +711,10 @@ nsSHEntry::DocumentMutated() // Release the reference to the contentviewer asynchronously so that the // document doesn't get nuked mid-mutation. - nsCOMPtr thread = do_GetCurrentThread(); - if (!thread) { - return; - } nsCOMPtr evt = new DestroyViewerEvent(mContentViewer, mDocument); - if (!evt) { - return; - } - - nsresult rv = thread->Dispatch(evt, NS_DISPATCH_NORMAL); + nsresult rv = NS_DispatchToCurrentThread(evt); if (NS_FAILED(rv)) { NS_WARNING("failed to dispatch DestroyViewerEvent"); } diff --git a/mozilla/dom/src/base/nsGlobalWindow.cpp b/mozilla/dom/src/base/nsGlobalWindow.cpp index de019ccaec4..6ec716a0c8f 100644 --- a/mozilla/dom/src/base/nsGlobalWindow.cpp +++ b/mozilla/dom/src/base/nsGlobalWindow.cpp @@ -4334,22 +4334,12 @@ public: NS_IMETHOD Run() { if (mWindow) mWindow->ReallyCloseWindow(); + return NS_OK; } - nsresult PostCloseEvent(); - nsRefPtr mWindow; }; -nsresult -nsCloseEvent::PostCloseEvent() -{ - nsCOMPtr thread = do_GetCurrentThread(); - NS_ENSURE_STATE(thread); - - return thread->Dispatch(this, NS_DISPATCH_NORMAL); -} - NS_IMETHODIMP nsGlobalWindow::Close() { @@ -4486,10 +4476,7 @@ nsGlobalWindow::Close() rv = NS_ERROR_FAILURE; if (!IsCallerChrome()) { nsRefPtr ev = new nsCloseEvent(this); - - if (ev) { - rv = ev->PostCloseEvent(); - } else rv = NS_ERROR_OUT_OF_MEMORY; + rv = NS_DispatchToCurrentThread(ev); } if (NS_FAILED(rv)) { diff --git a/mozilla/extensions/gnomevfs/nsGnomeVFSProtocolHandler.cpp b/mozilla/extensions/gnomevfs/nsGnomeVFSProtocolHandler.cpp index 9a0f9b14ae0..524de11da92 100644 --- a/mozilla/extensions/gnomevfs/nsGnomeVFSProtocolHandler.cpp +++ b/mozilla/extensions/gnomevfs/nsGnomeVFSProtocolHandler.cpp @@ -306,10 +306,6 @@ AuthCallback(gconstpointer in, // Need to proxy this callback over to the main thread. Synchronous dispatch // is required in order to provide data to the GnomeVFS callback. - nsCOMPtr mainThread = do_GetMainThread(); - if (!mainThread) - return; - nsRefPtr ev = new nsGnomeVFSAuthCallbackEvent(); if (!ev) return; // OOM @@ -320,7 +316,7 @@ AuthCallback(gconstpointer in, ev->out_size = out_size; ev->callback_data = callback_data; - mainThread->Dispatch(ev, NS_DISPATCH_SYNC); + NS_DispatchToMainThread(ev, NS_DISPATCH_SYNC); } //----------------------------------------------------------------------------- @@ -631,9 +627,6 @@ nsGnomeVFSInputStream::SetContentTypeOfChannel(const char *contentType) // released asynchronously as well. We trust the ordering of the main // thread's event queue to protect us against memory corruption. - nsCOMPtr thread = do_GetMainThread(); - NS_ENSURE_STATE(thread); - nsresult rv; nsCOMPtr ev = new nsGnomeVFSSetContentTypeEvent(mChannel, contentType); @@ -643,7 +636,7 @@ nsGnomeVFSInputStream::SetContentTypeOfChannel(const char *contentType) } else { - rv = thread->Dispatch(ev, NS_DISPATCH_NORMAL); + rv = NS_DispatchToMainThread(ev); } return rv; } diff --git a/mozilla/extensions/pref/autoconfig/src/nsLDAPSyncQuery.cpp b/mozilla/extensions/pref/autoconfig/src/nsLDAPSyncQuery.cpp index c91938c2326..e0f917ff996 100644 --- a/mozilla/extensions/pref/autoconfig/src/nsLDAPSyncQuery.cpp +++ b/mozilla/extensions/pref/autoconfig/src/nsLDAPSyncQuery.cpp @@ -44,7 +44,7 @@ #include "nsIProxyObjectManager.h" #include "nsXPIDLString.h" #include "nsILDAPErrors.h" -#include "nsIEventQueueService.h" +#include "nsThreadUtils.h" #include "nsReadableUtils.h" #include "nsILDAPMessage.h" @@ -144,10 +144,10 @@ nsLDAPSyncQuery::OnLDAPInit(nsILDAPConnection *aConn, nsresult aStatus) // get a proxy object so the callback happens on the main thread // - rv = NS_GetProxyForObject(NS_CURRENT_EVENTQ, + rv = NS_GetProxyForObject(NS_PROXY_TO_CURRENT_THREAD, NS_GET_IID(nsILDAPMessageListener), NS_STATIC_CAST(nsILDAPMessageListener *, this), - PROXY_ASYNC | PROXY_ALWAYS, + NS_PROXY_ASYNC | NS_PROXY_ALWAYS, getter_AddRefs(selfProxy)); if (NS_FAILED(rv)) { FinishLDAPQuery(); @@ -283,10 +283,10 @@ nsLDAPSyncQuery::StartLDAPSearch() // get a proxy object so the callback happens on the main thread // - rv = NS_GetProxyForObject(NS_CURRENT_EVENTQ, + rv = NS_GetProxyForObject(NS_PROXY_TO_CURRENT_THREAD, NS_GET_IID(nsILDAPMessageListener), NS_STATIC_CAST(nsILDAPMessageListener *, this), - PROXY_ASYNC | PROXY_ALWAYS, + NS_PROXY_ASYNC | NS_PROXY_ALWAYS, getter_AddRefs(selfProxy)); if (NS_FAILED(rv)) { NS_ERROR("nsLDAPSyncQuery::StartLDAPSearch(): couldn't " @@ -407,10 +407,10 @@ nsresult nsLDAPSyncQuery::InitConnection() // get a proxy object so the callback happens on the main thread // - rv = NS_GetProxyForObject(NS_CURRENT_EVENTQ, + rv = NS_GetProxyForObject(NS_PROXY_TO_CURRENT_THREAD, NS_GET_IID(nsILDAPMessageListener), NS_STATIC_CAST(nsILDAPMessageListener *, this), - PROXY_ASYNC | PROXY_ALWAYS, + NS_PROXY_ASYNC | NS_PROXY_ALWAYS, getter_AddRefs(selfProxy)); if (NS_FAILED(rv)) { FinishLDAPQuery(); @@ -461,22 +461,7 @@ NS_IMETHODIMP nsLDAPSyncQuery::GetQueryResults(nsILDAPURL *aServerURL, mServerURL = aServerURL; mProtocolVersion = aProtocolVersion; - nsCOMPtr currentThreadQ; - nsCOMPtr service; - - // Get the eventQueue Service - // - service = do_GetService(NS_EVENTQUEUESERVICE_CONTRACTID, &rv); - if (NS_FAILED(rv)) { - return rv; - } - - // Get the eventQ for the Current Thread - // - rv = service->PushThreadEventQueue(getter_AddRefs(currentThreadQ)); - if (NS_FAILED(rv)) { - return rv; - } + nsCOMPtr currentThread = do_GetCurrentThread(); // Start an LDAP query. // InitConnection will bind to the ldap server and post a OnLDAPMessage @@ -484,10 +469,8 @@ NS_IMETHODIMP nsLDAPSyncQuery::GetQueryResults(nsILDAPURL *aServerURL, // be carried out by chain of events // rv = InitConnection(); - if (NS_FAILED(rv)) { - service->PopThreadEventQueue(currentThreadQ); + if (NS_FAILED(rv)) return rv; - } // We want this LDAP query to be synchronous while the XPCOM LDAP is // async in nature. So this eventQueue handling will wait for the @@ -500,25 +483,10 @@ NS_IMETHODIMP nsLDAPSyncQuery::GetQueryResults(nsILDAPURL *aServerURL, // mFinished is a control variable // while (!mFinished) { - - PRBool isEventPending; - rv = currentThreadQ->PendingEvents(&isEventPending); - if (NS_FAILED(rv)) { - service->PopThreadEventQueue(currentThreadQ); + rv = currentThread->ProcessNextEvent(); + if (NS_FAILED(rv)) return rv; - } - if (isEventPending) { - rv = currentThreadQ->ProcessPendingEvents(); - if (NS_FAILED(rv)) { - service->PopThreadEventQueue(currentThreadQ); - return rv; - } - } - } - rv = service->PopThreadEventQueue(currentThreadQ); - if (NS_FAILED(rv)) - return rv; // Return results // diff --git a/mozilla/layout/base/nsCSSFrameConstructor.cpp b/mozilla/layout/base/nsCSSFrameConstructor.cpp index 2df00e432d0..94be98356c5 100644 --- a/mozilla/layout/base/nsCSSFrameConstructor.cpp +++ b/mozilla/layout/base/nsCSSFrameConstructor.cpp @@ -13522,11 +13522,10 @@ nsCSSFrameConstructor::PostRestyleEvent(nsIContent* aContent, mPendingRestyles.Put(aContent, existingData); - nsCOMPtr thread = do_GetCurrentThread(); if (!mRestyleEventPending) { nsCOMPtr ev = new RestyleEvent(mWeakSelf); - if (NS_FAILED(thread->Dispatch(ev, NS_DISPATCH_NORMAL))) { - NS_NOTREACHED("failed to dispatch restyle event"); + if (NS_FAILED(NS_DispatchToCurrentThread(ev))) { + NS_WARNING("failed to dispatch restyle event"); // XXXbz and what? } else { mRestyleEventPending = PR_TRUE; diff --git a/mozilla/layout/base/nsPresShell.cpp b/mozilla/layout/base/nsPresShell.cpp index 5bb6a7c956e..ef032f981dc 100644 --- a/mozilla/layout/base/nsPresShell.cpp +++ b/mozilla/layout/base/nsPresShell.cpp @@ -6368,8 +6368,6 @@ ReflowEvent::ReflowEvent(const PresShellWeakRef &aPresShell) void PresShell::PostReflowEvent() { - nsCOMPtr thread = do_GetCurrentThread(); - if (!mReflowEventPending && !mIsDestroying && !mIsReflowing && mReflowCommands.Count() > 0) { if (!mWeakSelf) { @@ -6378,8 +6376,8 @@ PresShell::PostReflowEvent() return; // OOM } nsCOMPtr ev = new ReflowEvent(mWeakSelf); - if (NS_FAILED(thread->Dispatch(ev, NS_DISPATCH_NORMAL))) { - NS_ERROR("failed to dispatch reflow event"); + if (NS_FAILED(NS_DispatchToCurrentThread(ev))) { + NS_WARNING("failed to dispatch reflow event"); } else { mReflowEventPending = PR_TRUE; diff --git a/mozilla/layout/forms/nsComboboxControlFrame.cpp b/mozilla/layout/forms/nsComboboxControlFrame.cpp index e02a8bd5ef3..acda481305f 100644 --- a/mozilla/layout/forms/nsComboboxControlFrame.cpp +++ b/mozilla/layout/forms/nsComboboxControlFrame.cpp @@ -1607,8 +1607,6 @@ nsComboboxControlFrame::RedisplayText(PRInt32 aIndex) // Don't call ActuallyDisplayText(PR_TRUE) directly here since that // could cause recursive frame construction. See bug 283117 and the comment in // HandleRedisplayTextEvent() below. - nsCOMPtr thread = do_GetCurrentThread(); - NS_ENSURE_STATE(thread); nsCOMPtr event = new RedisplayTextEvent(mWeakSelf); NS_ENSURE_TRUE(event, NS_ERROR_OUT_OF_MEMORY); @@ -1626,7 +1624,7 @@ nsComboboxControlFrame::RedisplayText(PRInt32 aIndex) return NS_ERROR_OUT_OF_MEMORY; } - rv = thread->Dispatch(event, NS_DISPATCH_NORMAL); + rv = NS_DispatchToCurrentThread(event); if (NS_SUCCEEDED(rv)) mRedisplayTextEventPosted = PR_TRUE; } diff --git a/mozilla/layout/generic/nsGfxScrollFrame.cpp b/mozilla/layout/generic/nsGfxScrollFrame.cpp index ea94a13307e..1a231c3d2b3 100644 --- a/mozilla/layout/generic/nsGfxScrollFrame.cpp +++ b/mozilla/layout/generic/nsGfxScrollFrame.cpp @@ -1881,9 +1881,6 @@ nsGfxScrollFrameInner::FireScrollEvent() void nsGfxScrollFrameInner::PostScrollEvent() { - nsCOMPtr thread = do_GetCurrentThread(); - NS_ASSERTION(thread, "no thread object for the current thread"); - if (mScrollEventPending) return; @@ -1894,11 +1891,8 @@ nsGfxScrollFrameInner::PostScrollEvent() } nsCOMPtr ev = new nsGfxScrollEvent(mWeakSelf); - if (!ev) - return; // out of memory - - if (NS_FAILED(thread->Dispatch(ev, NS_DISPATCH_NORMAL))) { - NS_NOTREACHED("failed to dispatch scroll event"); + if (NS_FAILED(NS_DispatchToCurrentThread(ev))) { + NS_WARNING("failed to dispatch scroll event"); } else { mScrollEventPending = PR_TRUE; } diff --git a/mozilla/layout/generic/nsSelection.cpp b/mozilla/layout/generic/nsSelection.cpp index cdd2531a83e..4499708831d 100644 --- a/mozilla/layout/generic/nsSelection.cpp +++ b/mozilla/layout/generic/nsSelection.cpp @@ -7092,9 +7092,6 @@ struct nsScrollSelectionIntoViewEvent : public nsRunnable { nsresult nsTypedSelection::PostScrollSelectionIntoViewEvent(SelectionRegion aRegion) { - nsCOMPtr thread = do_GetCurrentThread(); - NS_ENSURE_STATE(thread); - if (mScrollEventPosted) { // We've already posted an event, revoke it and // place a new one at the end of the queue to make @@ -7114,10 +7111,7 @@ nsTypedSelection::PostScrollSelectionIntoViewEvent(SelectionRegion aRegion) nsCOMPtr ev = new nsScrollSelectionIntoViewEvent(mWeakSelf, aRegion); - if (!ev) - return NS_ERROR_OUT_OF_MEMORY; - - if (NS_FAILED(thread->Dispatch(ev, NS_DISPATCH_NORMAL))) + if (NS_FAILED(NS_DispatchToCurrentThread(ev))) return NS_ERROR_UNEXPECTED; mScrollEventPosted = PR_TRUE; diff --git a/mozilla/layout/printing/nsPrintEngine.cpp b/mozilla/layout/printing/nsPrintEngine.cpp index 1553ddbda47..d71c3b18dfd 100644 --- a/mozilla/layout/printing/nsPrintEngine.cpp +++ b/mozilla/layout/printing/nsPrintEngine.cpp @@ -4424,23 +4424,8 @@ private: void nsPrintEngine::FirePrintCompletionEvent() { - nsCOMPtr thread = do_GetCurrentThread(); - - if (!thread) - { - NS_WARNING("Failed to get current thread"); - return; - } - nsCOMPtr event = new nsPrintCompletionEvent(mDocViewerPrint); - - if (!event) - { - NS_WARNING("Out of memory?"); - return; - } - - if (NS_FAILED(thread->Dispatch(event, NS_DISPATCH_NORMAL))) + if (NS_FAILED(NS_DispatchToCurrentThread(event))) NS_WARNING("failed to dispatch print completion event"); } diff --git a/mozilla/layout/style/nsCSSLoader.cpp b/mozilla/layout/style/nsCSSLoader.cpp index dc5d77fec9a..08779a37d5c 100644 --- a/mozilla/layout/style/nsCSSLoader.cpp +++ b/mozilla/layout/style/nsCSSLoader.cpp @@ -1956,9 +1956,6 @@ CSSLoaderImpl::PostLoadEvent(nsIURI* aURI, // observer, since we may need to unblock the parser // NS_PRECONDITION(aObserver, "Must have observer"); - nsCOMPtr thread = do_GetMainThread(); - NS_ENSURE_STATE(thread); - SheetLoadData *evt = new SheetLoadData(this, EmptyString(), // title doesn't matter here aParserToUnblock, @@ -1983,8 +1980,9 @@ CSSLoaderImpl::PostLoadEvent(nsIURI* aURI, return NS_ERROR_OUT_OF_MEMORY; } - nsresult rv = thread->Dispatch(evt, NS_DISPATCH_NORMAL); + nsresult rv = NS_DispatchToCurrentThread(evt); if (NS_FAILED(rv)) { + NS_WARNING("failed to dispatch stylesheet load event"); DestroyLoadEvent(evt); } else { // We want to notify the observer for this data. We didn't want to set diff --git a/mozilla/layout/xul/base/src/nsImageBoxFrame.cpp b/mozilla/layout/xul/base/src/nsImageBoxFrame.cpp index 7f9865cfb7b..3320ee4f8d4 100644 --- a/mozilla/layout/xul/base/src/nsImageBoxFrame.cpp +++ b/mozilla/layout/xul/base/src/nsImageBoxFrame.cpp @@ -148,29 +148,14 @@ nsImageBoxFrameEvent::Run() // is loaded from the netswork the notifications come back // asynchronously. -void +static void FireDOMEvent(nsIContent* aContent, PRUint32 aMessage) { NS_ASSERTION(aMessage == NS_IMAGE_LOAD || aMessage == NS_IMAGE_ERROR, "invalid message"); - nsCOMPtr thread = do_GetCurrentThread(); - if (!thread) { - NS_WARNING("Failed to get the current thread"); - - return; - } - nsCOMPtr event = new nsImageBoxFrameEvent(aContent, aMessage); - if (!event) { - // Out of memory, but none of our callers care, so just warn and - // don't fire the event - NS_WARNING("Out of memory?"); - - return; - } - - if (NS_FAILED(thread->Dispatch(event, NS_DISPATCH_NORMAL))) + if (NS_FAILED(NS_DispatchToCurrentThread(event))) NS_WARNING("failed to dispatch image event"); } diff --git a/mozilla/mailnews/addrbook/src/nsAbLDAPDirectoryQuery.cpp b/mozilla/mailnews/addrbook/src/nsAbLDAPDirectoryQuery.cpp index 6c2abf03bcc..21e57da1d4b 100644 --- a/mozilla/mailnews/addrbook/src/nsAbLDAPDirectoryQuery.cpp +++ b/mozilla/mailnews/addrbook/src/nsAbLDAPDirectoryQuery.cpp @@ -402,10 +402,10 @@ NS_IMETHODIMP nsAbQueryLDAPMessageListener::OnLDAPInit(nsILDAPConnection *aConn, NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr proxyListener; - rv = NS_GetProxyForObject(NS_UI_THREAD_EVENTQ, + rv = NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsILDAPMessageListener), NS_STATIC_CAST(nsILDAPMessageListener *, this), - PROXY_SYNC | PROXY_ALWAYS, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, getter_AddRefs(proxyListener)); rv = ldapOperation->Init(mConnection, proxyListener, nsnull); @@ -471,13 +471,11 @@ nsresult nsAbQueryLDAPMessageListener::OnLDAPMessageBind (nsILDAPMessage *aMessa mSearchOperation = do_CreateInstance(NS_LDAPOPERATION_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr proxyMgr = - do_GetService(NS_XPCOMPROXY_CONTRACTID, &rv); - NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr proxyListener; - rv = proxyMgr->GetProxyForObject( NS_UI_THREAD_EVENTQ, NS_GET_IID(nsILDAPMessageListener), - this, PROXY_SYNC | PROXY_ALWAYS, getter_AddRefs(proxyListener)); + rv = NS_GetProxyForObject( NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID(nsILDAPMessageListener), + this, NS_PROXY_SYNC | NS_PROXY_ALWAYS, + getter_AddRefs(proxyListener)); NS_ENSURE_SUCCESS(rv, rv); rv = mSearchOperation->Init (mConnection, proxyListener, nsnull); diff --git a/mozilla/mailnews/addrbook/src/nsAbLDAPReplicationData.cpp b/mozilla/mailnews/addrbook/src/nsAbLDAPReplicationData.cpp index 150466a67a4..527c55d17c9 100644 --- a/mozilla/mailnews/addrbook/src/nsAbLDAPReplicationData.cpp +++ b/mozilla/mailnews/addrbook/src/nsAbLDAPReplicationData.cpp @@ -132,10 +132,10 @@ NS_IMETHODIMP nsAbLDAPProcessReplicationData::OnLDAPInit(nsILDAPConnection *aCon } nsCOMPtr listener; - nsresult rv = NS_GetProxyForObject(NS_CURRENT_EVENTQ, + nsresult rv = NS_GetProxyForObject(NS_PROXY_TO_CURRENT_THREAD, NS_GET_IID(nsILDAPMessageListener), NS_STATIC_CAST(nsILDAPMessageListener*, this), - PROXY_SYNC | PROXY_ALWAYS, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, getter_AddRefs(listener)); if(NS_FAILED(rv)) { Done(PR_FALSE); diff --git a/mozilla/mailnews/addrbook/src/nsAbLDAPReplicationQuery.cpp b/mozilla/mailnews/addrbook/src/nsAbLDAPReplicationQuery.cpp index e949e87576c..0dd659c62c2 100644 --- a/mozilla/mailnews/addrbook/src/nsAbLDAPReplicationQuery.cpp +++ b/mozilla/mailnews/addrbook/src/nsAbLDAPReplicationQuery.cpp @@ -149,10 +149,10 @@ NS_IMETHODIMP nsAbLDAPReplicationQuery::ConnectToLDAPServer(nsILDAPURL *aURL, co // Initiate LDAP message listener to the current thread nsCOMPtr listener; - rv = NS_GetProxyForObject(NS_CURRENT_EVENTQ, + rv = NS_GetProxyForObject(NS_PROXY_TO_CURRENT_THREAD, NS_GET_IID(nsILDAPMessageListener), NS_STATIC_CAST(nsILDAPMessageListener*, mDataProcessor), - PROXY_SYNC | PROXY_ALWAYS, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, getter_AddRefs(listener)); if (!listener) return NS_ERROR_FAILURE; diff --git a/mozilla/mailnews/addrbook/src/nsAbRDFDataSource.cpp b/mozilla/mailnews/addrbook/src/nsAbRDFDataSource.cpp index e19948139ba..6fbe4bfe82b 100644 --- a/mozilla/mailnews/addrbook/src/nsAbRDFDataSource.cpp +++ b/mozilla/mailnews/addrbook/src/nsAbRDFDataSource.cpp @@ -48,8 +48,6 @@ #include "nsRDFCID.h" #include "nsIRDFNode.h" #include "nsEnumeratorUtils.h" -#include "nsIThread.h" -#include "nsIEventQueueService.h" #include "nsIProxyObjectManager.h" #include "nsString.h" @@ -57,6 +55,7 @@ #include "nsXPIDLString.h" #include "nsAutoLock.h" #include "nsIServiceManager.h" +#include "nsThreadUtils.h" // this is used for notification of observers using nsVoidArray typedef struct _nsAbRDFNotification { @@ -136,34 +135,21 @@ nsresult nsAbRDFDataSource::CreateProxyObserver (nsIRDFObserver* observer, { nsresult rv; - nsCOMPtr eventQSvc = do_GetService (NS_EVENTQUEUESERVICE_CONTRACTID, &rv); - NS_ENSURE_SUCCESS(rv, rv); - - // Get the UI event queue - nsCOMPtr uiQueue; - rv = eventQSvc->GetSpecialEventQueue ( - nsIEventQueueService::UI_THREAD_EVENT_QUEUE, - getter_AddRefs (uiQueue)); - NS_ENSURE_SUCCESS(rv, rv); - - nsCOMPtr proxyMgr = - do_GetService(NS_XPCOMPROXY_CONTRACTID, &rv); - NS_ENSURE_SUCCESS(rv, rv); - - // Proxy the observer on the UI queue + // Proxy the observer on the UI thread /* * TODO - * Currenly using PROXY_ASYNC, however + * Currenly using NS_PROXY_ASYNC, however * this can flood the event queue if * rate of events on the observer is * greater that the time to process the * events. * This causes the UI to pause. */ - rv = proxyMgr->GetProxyForObject (uiQueue, + rv = NS_GetProxyForObject ( + NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIRDFObserver), observer, - PROXY_ASYNC | PROXY_ALWAYS, + NS_PROXY_ASYNC | NS_PROXY_ALWAYS, (void** )proxyObserver); return rv; @@ -232,12 +218,6 @@ nsresult nsAbRDFDataSource::NotifyObservers(nsIRDFResource *subject, return NS_OK; - // Get the current thread - nsCOMPtr currentThread; - rv = nsIThread::GetCurrent (getter_AddRefs(currentThread)); - NS_ENSURE_SUCCESS (rv, rv); - - // Get the main thread, which is the UI thread /* * TODO * Is the main thread always guaranteed to be @@ -249,12 +229,8 @@ nsresult nsAbRDFDataSource::NotifyObservers(nsIRDFResource *subject, * RDF datasources that are not UI specific * but are used in the UI? */ - nsCOMPtr uiThread; - rv = nsIThread::GetMainThread (getter_AddRefs(uiThread)); - NS_ENSURE_SUCCESS (rv, rv); - nsCOMPtr observers; - if (currentThread == uiThread) + if (NS_IsMainThread()) { /* * Since this is the UI Thread use the diff --git a/mozilla/mailnews/addrbook/src/nsAddrDatabase.cpp b/mozilla/mailnews/addrbook/src/nsAddrDatabase.cpp index 894bf3427c8..caf501abe92 100644 --- a/mozilla/mailnews/addrbook/src/nsAddrDatabase.cpp +++ b/mozilla/mailnews/addrbook/src/nsAddrDatabase.cpp @@ -43,6 +43,7 @@ #include "nsIEnumerator.h" #include "nsString.h" #include "nsReadableUtils.h" +#include "nsAutoPtr.h" #include "nsRDFCID.h" #include "nsUnicharUtils.h" #include "nsMsgUtils.h" @@ -3619,12 +3620,9 @@ NS_IMETHODIMP nsAddrDatabase::AddListDirNode(nsIMdbRow * listRow) { nsresult rv = NS_OK; - nsCOMPtr proxyMgr = - do_GetService(NS_XPCOMPROXY_CONTRACTID, &rv); - NS_ENSURE_SUCCESS(rv, rv); - - static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID); - NS_WITH_PROXIED_SERVICE(nsIRDFService, rdfService, kRDFServiceCID, NS_UI_THREAD_EVENTQ, &rv); + static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID); + NS_WITH_PROXIED_SERVICE(nsIRDFService, rdfService, kRDFServiceCID, + NS_PROXY_TO_MAIN_THREAD, &rv); if (NS_SUCCEEDED(rv)) { nsCOMPtr parentResource; @@ -3637,8 +3635,11 @@ NS_IMETHODIMP nsAddrDatabase::AddListDirNode(nsIMdbRow * listRow) rv = rdfService->GetResource(NS_ConvertUTF16toUTF8(parentURI), getter_AddRefs(parentResource)); nsCOMPtr parentDir; - rv = proxyMgr->GetProxyForObject( NS_UI_THREAD_EVENTQ, NS_GET_IID( nsIAbDirectory), - parentResource, PROXY_SYNC | PROXY_ALWAYS, getter_AddRefs( parentDir)); + rv = NS_GetProxyForObject( NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID( nsIAbDirectory), + parentResource, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, + getter_AddRefs( parentDir)); if (parentDir) { m_dbDirectory = parentDir; diff --git a/mozilla/mailnews/addrbook/src/nsLDAPAutoCompleteSession.cpp b/mozilla/mailnews/addrbook/src/nsLDAPAutoCompleteSession.cpp index 3762a63e89e..740557b7608 100644 --- a/mozilla/mailnews/addrbook/src/nsLDAPAutoCompleteSession.cpp +++ b/mozilla/mailnews/addrbook/src/nsLDAPAutoCompleteSession.cpp @@ -581,10 +581,10 @@ nsLDAPAutoCompleteSession::OnLDAPInit(nsILDAPConnection *aConn, nsresult aStatus // get a proxy object so the callback happens on the main thread // - rv = NS_GetProxyForObject(NS_UI_THREAD_EVENTQ, + rv = NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsILDAPMessageListener), NS_STATIC_CAST(nsILDAPMessageListener *, this), - PROXY_ASYNC | PROXY_ALWAYS, + NS_PROXY_ASYNC | NS_PROXY_ALWAYS, getter_AddRefs(selfProxy)); if (NS_FAILED(rv)) { NS_ERROR("nsLDAPAutoCompleteSession::OnLDAPInit(): couldn't " @@ -866,10 +866,10 @@ nsLDAPAutoCompleteSession::StartLDAPSearch() // get a proxy object so the callback happens on the main thread // - rv = NS_GetProxyForObject(NS_UI_THREAD_EVENTQ, + rv = NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsILDAPMessageListener), NS_STATIC_CAST(nsILDAPMessageListener *, this), - PROXY_ASYNC | PROXY_ALWAYS, + NS_PROXY_ASYNC | NS_PROXY_ALWAYS, getter_AddRefs(selfProxy)); if (NS_FAILED(rv)) { NS_ERROR("nsLDAPAutoCompleteSession::StartLDAPSearch(): couldn't " @@ -1170,10 +1170,10 @@ nsLDAPAutoCompleteSession::InitConnection() // get a proxy object so the callback happens on the main thread // - rv = NS_GetProxyForObject(NS_UI_THREAD_EVENTQ, + rv = NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsILDAPMessageListener), NS_STATIC_CAST(nsILDAPMessageListener *, this), - PROXY_ASYNC | PROXY_ALWAYS, + NS_PROXY_ASYNC | NS_PROXY_ALWAYS, getter_AddRefs(selfProxy)); if (NS_FAILED(rv)) { NS_ERROR("nsLDAPAutoCompleteSession::InitConnection(): couldn't " diff --git a/mozilla/mailnews/base/src/nsMsgAccountManager.cpp b/mozilla/mailnews/base/src/nsMsgAccountManager.cpp index a1eae491c7c..e52756e372b 100644 --- a/mozilla/mailnews/base/src/nsMsgAccountManager.cpp +++ b/mozilla/mailnews/base/src/nsMsgAccountManager.cpp @@ -76,7 +76,6 @@ #include "nsIMsgPurgeService.h" #include "nsIObserverService.h" #include "nsIMsgMailSession.h" -#include "nsIEventQueueService.h" #include "nsIDirectoryService.h" #include "nsAppDirectoryServiceDefs.h" #include "nsMsgFolderFlags.h" @@ -94,6 +93,7 @@ #include "nsIDBFolderInfo.h" #include "nsIMsgHdr.h" #include "nsILineInputStream.h" +#include "nsThreadUtils.h" #include "nsNetUtil.h" #include "nsEscape.h" @@ -112,7 +112,6 @@ static NS_DEFINE_CID(kMsgAccountCID, NS_MSGACCOUNT_CID); static NS_DEFINE_CID(kMsgFolderCacheCID, NS_MSGFOLDERCACHE_CID); -static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); // use this to search for all servers with the given hostname/iid and // put them in "servers" @@ -1052,12 +1051,6 @@ PRBool PR_CALLBACK nsMsgAccountManager::cleanupOnExit(nsHashKey *aKey, void *aDa nsCOMPtr accountManager = do_GetService(NS_MSGACCOUNTMANAGER_CONTRACTID, &rv); if (NS_FAILED(rv)) return rv; - nsCOMPtr pEventQService = - do_GetService(kEventQueueServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - nsCOMPtr eventQueue; - pEventQService->GetThreadEventQueue(NS_CURRENT_THREAD, - getter_AddRefs(eventQueue)); if (isImap) urlListener = do_QueryInterface(accountManager, &rv); @@ -1094,6 +1087,8 @@ PRBool PR_CALLBACK nsMsgAccountManager::cleanupOnExit(nsHashKey *aKey, void *aDa if (isImap && urlListener) { + nsCOMPtr thread = do_GetCurrentThread(); + PRBool inProgress = PR_FALSE; if (cleanupInboxOnExit) { @@ -1104,8 +1099,7 @@ PRBool PR_CALLBACK nsMsgAccountManager::cleanupOnExit(nsHashKey *aKey, void *aDa PR_CEnterMonitor(folder); PR_CWait(folder, PR_MicrosecondsToInterval(1000UL)); PR_CExitMonitor(folder); - if (eventQueue) - eventQueue->ProcessPendingEvents(); + NS_ProcessPendingEvents(thread); } } if (emptyTrashOnExit) @@ -1117,8 +1111,7 @@ PRBool PR_CALLBACK nsMsgAccountManager::cleanupOnExit(nsHashKey *aKey, void *aDa PR_CEnterMonitor(folder); PR_CWait(folder, PR_MicrosecondsToInterval(1000UL)); PR_CExitMonitor(folder); - if (eventQueue) - eventQueue->ProcessPendingEvents(); + NS_ProcessPendingEvents(thread); } } } diff --git a/mozilla/mailnews/base/src/nsMsgPrintEngine.cpp b/mozilla/mailnews/base/src/nsMsgPrintEngine.cpp index bda17197d16..468af267e6c 100644 --- a/mozilla/mailnews/base/src/nsMsgPrintEngine.cpp +++ b/mozilla/mailnews/base/src/nsMsgPrintEngine.cpp @@ -69,12 +69,7 @@ #include "nsIXULWindow.h" #include "nsIPrefService.h" #include "nsIPrefBranch.h" - -// For PLEvents -#include "plevent.h" -#include "nsIEventQueue.h" -#include "nsIEventQueueService.h" -#include "nsIServiceManager.h" +#include "nsThreadUtils.h" // Interfaces Needed #include "nsIBaseWindow.h" @@ -726,114 +721,61 @@ nsMsgPrintEngine::PrintMsgWindow() } //--------------------------------------------------------------- -//-- PLEvent Notification +//-- Event Notification //--------------------------------------------------------------- + +//--------------------------------------------------------------- +class nsPrintMsgWindowEvent : public nsRunnable +{ +public: + nsPrintMsgWindowEvent(nsMsgPrintEngine *mpe) + : mMsgPrintEngine(mpe) + {} + + NS_IMETHOD Run() + { + if (mMsgPrintEngine) + mMsgPrintEngine->PrintMsgWindow(); + return NS_OK; + } + +private: + nsRefPtr mMsgPrintEngine; +}; + //----------------------------------------------------------- -PRBool -FireEvent(nsMsgPrintEngine* aMPE, PLHandleEventProc handler, PLDestroyEventProc destructor) +class nsStartNextPrintOpEvent : public nsRunnable { - static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); +public: + nsStartNextPrintOpEvent(nsMsgPrintEngine *mpe) + : mMsgPrintEngine(mpe) + {} - nsCOMPtr event_service = do_GetService(kEventQueueServiceCID); - - if (!event_service) + NS_IMETHOD Run() { - NS_WARNING("Failed to get event queue service"); - return PR_FALSE; + if (mMsgPrintEngine) + mMsgPrintEngine->StartNextPrintOperation(); + return NS_OK; } - nsCOMPtr event_queue; - - event_service->GetThreadEventQueue(NS_CURRENT_THREAD, - getter_AddRefs(event_queue)); - - if (!event_queue) - { - NS_WARNING("Failed to get event queue from service"); - return PR_FALSE; - } - - PLEvent *event = new PLEvent; - - if (!event) - { - NS_WARNING("Out of memory?"); - return PR_FALSE; - } - - PL_InitEvent(event, aMPE, handler, destructor); - - // The event owns the msgPrintEngine pointer now. - NS_ADDREF(aMPE); - - if (NS_FAILED(event_queue->PostEvent(event))) - { - NS_WARNING("Failed to post event"); - PL_DestroyEvent(event); - return PR_FALSE; - } - - return PR_TRUE; -} - -PR_STATIC_CALLBACK(void*) HandlePLEventPrintMsgWindow(PLEvent* aEvent) -{ - nsMsgPrintEngine *msgPrintEngine = (nsMsgPrintEngine*)PL_GetEventOwner(aEvent); - - NS_ASSERTION(msgPrintEngine, "The event owner is null."); - if (msgPrintEngine) - { - msgPrintEngine->PrintMsgWindow(); - } - - return nsnull; -} - -//------------------------------------------------------------------------ -PR_STATIC_CALLBACK(void) DestroyPLEventPrintMsgWindow(PLEvent* aEvent) -{ - nsMsgPrintEngine *msgPrintEngine = (nsMsgPrintEngine*)PL_GetEventOwner(aEvent); - NS_IF_RELEASE(msgPrintEngine); - - delete aEvent; -} +private: + nsRefPtr mMsgPrintEngine; +}; //----------------------------------------------------------- PRBool nsMsgPrintEngine::FirePrintEvent() { - return FireEvent(this, ::HandlePLEventPrintMsgWindow, - ::DestroyPLEventPrintMsgWindow); -} - -PR_STATIC_CALLBACK(void*) HandlePLEventStartNext(PLEvent* aEvent) -{ - nsMsgPrintEngine *msgPrintEngine = (nsMsgPrintEngine*)PL_GetEventOwner(aEvent); - - NS_ASSERTION(msgPrintEngine, "The event owner is null."); - if (msgPrintEngine) - { - msgPrintEngine->StartNextPrintOperation(); - } - - return nsnull; -} - -//------------------------------------------------------------------------ -PR_STATIC_CALLBACK(void) DestroyPLEventStartNext(PLEvent* aEvent) -{ - nsMsgPrintEngine *msgPrintEngine = (nsMsgPrintEngine*)PL_GetEventOwner(aEvent); - NS_IF_RELEASE(msgPrintEngine); - - delete aEvent; + nsCOMPtr event = new nsPrintMsgWindowEvent(this); + return NS_DispatchToCurrentThread(event); } //----------------------------------------------------------- PRBool nsMsgPrintEngine::FireStartNextEvent() { - return FireEvent(this, ::HandlePLEventStartNext, - ::DestroyPLEventStartNext); + nsCOMPtr event = new nsStartNextPrintOpEvent(this); + return NS_DispatchToCurrentThread(event); } /* void setStartupPPObserver (in nsIObserver startupPPObs); */ diff --git a/mozilla/mailnews/base/util/nsImapMoveCoalescer.cpp b/mozilla/mailnews/base/util/nsImapMoveCoalescer.cpp index 399acbc7197..27cfd50e8d4 100755 --- a/mozilla/mailnews/base/util/nsImapMoveCoalescer.cpp +++ b/mozilla/mailnews/base/util/nsImapMoveCoalescer.cpp @@ -45,10 +45,8 @@ #include "nsIMsgFolder.h" // TO include biffState enum. Change to bool later... #include "nsMsgFolderFlags.h" #include "nsIMsgHdr.h" -#include "nsIEventQueueService.h" #include "nsIMsgImapMailFolder.h" - -static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); +#include "nsThreadUtils.h" NS_IMPL_ISUPPORTS1(nsImapMoveCoalescer, nsIUrlListener) @@ -287,14 +285,9 @@ NS_IMETHODIMP nsMoveCoalescerCopyListener::OnStopCopy(nsresult aStatus) nsCOMPtr imapService = do_GetService(NS_IMAPSERVICE_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr url; - nsCOMPtr pEventQService = - do_GetService(kEventQueueServiceCID, &rv); - nsCOMPtr eventQueue; - if (NS_SUCCEEDED(rv) && pEventQService) - pEventQService->GetThreadEventQueue(NS_CURRENT_THREAD, - getter_AddRefs(eventQueue)); + nsCOMPtr thread = do_GetCurrentThread(); nsCOMPtr listener = do_QueryInterface(m_coalescer); - rv = imapService->SelectFolder(eventQueue, m_destFolder, listener, nsnull, getter_AddRefs(url)); + rv = imapService->SelectFolder(thread, m_destFolder, listener, nsnull, getter_AddRefs(url)); } } return rv; diff --git a/mozilla/mailnews/base/util/nsMsgProtocol.cpp b/mozilla/mailnews/base/util/nsMsgProtocol.cpp index 7c830318d90..b70e93bc2c3 100644 --- a/mozilla/mailnews/base/util/nsMsgProtocol.cpp +++ b/mozilla/mailnews/base/util/nsMsgProtocol.cpp @@ -59,7 +59,7 @@ #include "nsIStringBundle.h" #include "nsIProtocolProxyService.h" #include "nsIProxyInfo.h" -#include "nsEventQueueUtils.h" +#include "nsThreadUtils.h" #include "nsIPrefBranch.h" #include "nsIPrefService.h" @@ -142,10 +142,9 @@ nsMsgProtocol::OpenNetworkSocketWithInfo(const char * aHostName, strans->SetSecurityCallbacks(callbacks); // creates cyclic reference! - nsCOMPtr eventQ; - NS_GetCurrentEventQ(getter_AddRefs(eventQ)); - if (eventQ) - strans->SetEventSink(this, eventQ); + nsCOMPtr thread = do_GetCurrentThread(); + if (thread) + strans->SetEventSink(this, thread); m_socketIsOpen = PR_FALSE; m_transport = strans; @@ -1093,7 +1092,7 @@ public: // try to write again... if (NS_SUCCEEDED(rv)) - rv = aOutStream->AsyncWait(this, 0, 0, mMsgProtocol->mProviderEventQ); + rv = aOutStream->AsyncWait(this, 0, 0, mMsgProtocol->mProviderThread); NS_ASSERTION(NS_SUCCEEDED(rv) || rv == NS_BINDING_ABORTED, "unexpected error writing stream"); return NS_OK; @@ -1192,7 +1191,7 @@ NS_IMETHODIMP nsMsgFilePostHelper::OnDataAvailable(nsIRequest * /* aChannel */, // things off again. mProtInstance->mSuspendedWrite = PR_FALSE; mProtInstance->mAsyncOutStream->AsyncWait(mProtInstance->mProvider, 0, 0, - mProtInstance->mProviderEventQ); + mProtInstance->mProviderThread); } return NS_OK; @@ -1459,7 +1458,7 @@ nsresult nsMsgAsyncWriteProtocol::SetupTransportState() PR_TRUE, PR_TRUE); - rv = NS_GetCurrentEventQ(getter_AddRefs(mProviderEventQ)); + rv = NS_GetCurrentThread(getter_AddRefs(mProviderThread)); if (NS_FAILED(rv)) return rv; nsMsgProtocolStreamProvider *provider; @@ -1477,7 +1476,7 @@ nsresult nsMsgAsyncWriteProtocol::SetupTransportState() if (NS_FAILED(rv)) return rv; // wait for the output stream to become writable - rv = mAsyncOutStream->AsyncWait(mProvider, 0, 0, mProviderEventQ); + rv = mAsyncOutStream->AsyncWait(mProvider, 0, 0, mProviderThread); } // if m_transport return rv; @@ -1499,7 +1498,7 @@ nsresult nsMsgAsyncWriteProtocol::CloseSocket() mAsyncOutStream = 0; mProvider = 0; - mProviderEventQ = 0; + mProviderThread = 0; return rv; } @@ -1541,7 +1540,7 @@ PRInt32 nsMsgAsyncWriteProtocol::SendData(nsIURI * aURL, const char * dataBuffer // data to write (i.e. the pipe went empty). So resume the channel to kick // things off again. mSuspendedWrite = PR_FALSE; - mAsyncOutStream->AsyncWait(mProvider, 0, 0, mProviderEventQ); + mAsyncOutStream->AsyncWait(mProvider, 0, 0, mProviderThread); } return NS_OK; } diff --git a/mozilla/mailnews/base/util/nsMsgProtocol.h b/mozilla/mailnews/base/util/nsMsgProtocol.h index a811403574a..e5b0660cb83 100644 --- a/mozilla/mailnews/base/util/nsMsgProtocol.h +++ b/mozilla/mailnews/base/util/nsMsgProtocol.h @@ -43,6 +43,7 @@ #include "nsIOutputStream.h" #include "nsIChannel.h" #include "nsIURL.h" +#include "nsIThread.h" #include "nsILoadGroup.h" #include "nsCOMPtr.h" #include "nsIFileSpec.h" @@ -51,7 +52,6 @@ #include "nsIProgressEventSink.h" #include "nsITransport.h" #include "nsIAsyncOutputStream.h" -#include "nsIEventQueue.h" #include "nsIAuthModule.h" #define UNKNOWN_ERROR 101 @@ -217,7 +217,7 @@ public: nsCOMPtr m_WriteRequest; nsCOMPtr mAsyncOutStream; nsCOMPtr mProvider; - nsCOMPtr mProviderEventQ; + nsCOMPtr mProviderThread; // because we are reading the post data in asychronously, it's possible that we aren't sending it // out fast enough and the reading gets blocked. The following set of state variables are used to diff --git a/mozilla/mailnews/compose/src/nsMsgCopy.cpp b/mozilla/mailnews/compose/src/nsMsgCopy.cpp index 008ffc5b534..6775eb45204 100644 --- a/mozilla/mailnews/compose/src/nsMsgCopy.cpp +++ b/mozilla/mailnews/compose/src/nsMsgCopy.cpp @@ -56,13 +56,12 @@ #include "nsMsgCompUtils.h" #include "prcmon.h" #include "nsIMsgImapMailFolder.h" -#include "nsIEventQueueService.h" +#include "nsThreadUtils.h" #include "nsMsgSimulateError.h" #include "nsIMsgWindow.h" #include "nsIMsgProgress.h" static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID); -static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); //////////////////////////////////////////////////////////////////////////////////// // This is the listener class for the copy operation. We have to create this class @@ -282,7 +281,7 @@ nsMsgCopy::DoCopy(nsIFileSpec *aDiskFile, nsIMsgFolder *dstFolder, return NS_ERROR_OUT_OF_MEMORY; copyListener->SetMsgComposeAndSendObject(aMsgSendObj); - nsCOMPtr eventQueue; + nsCOMPtr thread; if (aIsDraft) { @@ -299,11 +298,7 @@ nsMsgCopy::DoCopy(nsIFileSpec *aDiskFile, nsIMsgFolder *dstFolder, // set the following only when we were in the middle of shutdown // process copyListener->mCopyInProgress = PR_TRUE; - nsCOMPtr pEventQService = - do_GetService(kEventQueueServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - pEventQService->GetThreadEventQueue(NS_CURRENT_THREAD, - getter_AddRefs(eventQueue)); + thread = do_GetCurrentThread(); } } nsCOMPtr copyService = do_GetService(NS_MSGCOPYSERVICE_CONTRACTID, &rv); @@ -318,8 +313,8 @@ nsMsgCopy::DoCopy(nsIFileSpec *aDiskFile, nsIMsgFolder *dstFolder, PR_CEnterMonitor(copyListener); PR_CWait(copyListener, PR_MicrosecondsToInterval(1000UL)); PR_CExitMonitor(copyListener); - if (eventQueue) - eventQueue->ProcessPendingEvents(); + if (thread) + NS_ProcessPendingEvents(thread); } } diff --git a/mozilla/mailnews/compose/src/nsMsgCreate.cpp b/mozilla/mailnews/compose/src/nsMsgCreate.cpp index c02cddf1bec..0d0bba0c14a 100644 --- a/mozilla/mailnews/compose/src/nsMsgCreate.cpp +++ b/mozilla/mailnews/compose/src/nsMsgCreate.cpp @@ -37,7 +37,6 @@ * ***** END LICENSE BLOCK ***** */ #include "nsCOMPtr.h" #include "nsIURL.h" -#include "nsIEventQueueService.h" #include "nsIInputStream.h" #include "nsIOutputStream.h" #include "nsIGenericFactory.h" diff --git a/mozilla/mailnews/imap/public/nsIImapIncomingServer.idl b/mozilla/mailnews/imap/public/nsIImapIncomingServer.idl index d53b8751918..12825955f66 100644 --- a/mozilla/mailnews/imap/public/nsIImapIncomingServer.idl +++ b/mozilla/mailnews/imap/public/nsIImapIncomingServer.idl @@ -40,7 +40,7 @@ interface nsIUrlListener; interface nsIURI; interface nsIImapUrl; -interface nsIEventQueue; +interface nsIEventTarget; interface nsIImapProtocol; interface nsISupportsArray; interface nsIMsgFolder; @@ -88,7 +88,7 @@ interface nsIImapIncomingServer : nsISupports { nsIMsgFolder getPFC(in boolean createIfMissing); attribute boolean downloadBodiesOnGetNewMail; attribute boolean autoSyncOfflineStores; - void GetImapConnectionAndLoadUrl(in nsIEventQueue aClientEventQueue, + void GetImapConnectionAndLoadUrl(in nsIEventTarget aClientEventTarget, in nsIImapUrl aImapUrl, in nsISupports aConsumer); diff --git a/mozilla/mailnews/imap/public/nsIImapProtocol.idl b/mozilla/mailnews/imap/public/nsIImapProtocol.idl index 382a1c1e2bb..16a8958390e 100644 --- a/mozilla/mailnews/imap/public/nsIImapProtocol.idl +++ b/mozilla/mailnews/imap/public/nsIImapProtocol.idl @@ -41,7 +41,7 @@ interface nsIUrlListener; interface nsIURI; interface nsIImapUrl; -interface nsIEventQueue; +interface nsIEventTarget; interface nsIImapProtocol; interface nsIImapIncomingServer; interface nsISupportsArray; @@ -79,7 +79,7 @@ interface nsIImapProtocol : nsISupports { // protocol data. The protocol also needs a host session list. ///////////////////////////////////////////////////////////////////////// void Initialize(in nsIImapHostSessionList aHostSessionList, in nsIImapIncomingServer aServer, - in nsIEventQueue aSinkEventQueue) ; + in nsIEventTarget aSinkEventTarget) ; void NotifyHdrsToDownload(out unsigned long keys, in unsigned long keyCount); void NotifyBodysToDownload(out unsigned long keys, in unsigned long count); diff --git a/mozilla/mailnews/imap/public/nsIImapService.idl b/mozilla/mailnews/imap/public/nsIImapService.idl index da2054f9624..87594e0a9e8 100644 --- a/mozilla/mailnews/imap/public/nsIImapService.idl +++ b/mozilla/mailnews/imap/public/nsIImapService.idl @@ -51,27 +51,27 @@ interface nsIImapProtocol; interface nsIImapMessageSink; interface nsIUrlListener; interface nsIURI; -interface nsIEventQueue; +interface nsIEventTarget; interface nsIMsgFolder; interface nsIMsgWindow; interface nsIImapIncomingServer; interface nsICacheSession; -[scriptable, uuid(4032dc12-8684-4458-9b41-647034d8c7d2)] +[scriptable, uuid(0819ca53-746b-4072-896a-87a452dc5a77)] interface nsIImapService : nsISupports { // As always, you can pass in null for the url listener and the url if you don't require either..... - // aClientEventQueue is the event queue of the event sinks. We post events into this queue. + // aClientEventTarget is the event queue of the event sinks. We post events into this queue. // mscott -- eventually this function will take in the account (identity/incoming server) associated with // the request - void selectFolder(in nsIEventQueue aClientEventQueue, + void selectFolder(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aImapMailFolder, in nsIUrlListener aUrlListener, in nsIMsgWindow aMsgWindow, out nsIURI aURL); - void liteSelectFolder(in nsIEventQueue aClientEventQueue, + void liteSelectFolder(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aImapMailFolder, in nsIUrlListener aUrlListener, out nsIURI aURL); @@ -87,52 +87,52 @@ interface nsIImapService : nsISupports in string additionalHeader, out nsIURI aOutURL); - void noop(in nsIEventQueue aClientEventQueue, + void noop(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aImapMailFolder, in nsIUrlListener aUrlListener, out nsIURI aURL); - void getHeaders(in nsIEventQueue aClientEventQueue, + void getHeaders(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aImapMailFolder, in nsIUrlListener aUrlListener, out nsIURI aURL, in string aMessageIdentifierList, in boolean aMessageIdsAreUID); - nsIURI getBodyStart(in nsIEventQueue aClientEventQueue, + nsIURI getBodyStart(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aImapMailFolder, in nsIUrlListener aUrlListener, in string aMessageIdentifierList, in long numBytes); - void expunge(in nsIEventQueue aClientEventQueue, + void expunge(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aImapMailFolder, in nsIUrlListener aUrlListener, out nsIURI aURL); - nsIURI updateFolderStatus(in nsIEventQueue aClientEventQueue, + nsIURI updateFolderStatus(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aImapMailFolder, in nsIUrlListener aUrlListener); - void biff(in nsIEventQueue aClientEventQueue, + void biff(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aImapMailFolder, in nsIUrlListener aUrlListener, out nsIURI aURL, in unsigned long aUidHighWater); - void deleteMessages(in nsIEventQueue aClientEventQueue, + void deleteMessages(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aImapMailFolder, in nsIUrlListener aUrlListener, out nsIURI aURL, in string aMessageIdentifierList, in boolean aMessageIdsAreUID); - void deleteAllMessages(in nsIEventQueue aClientEventQueue, + void deleteAllMessages(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aImapMailFolder, in nsIUrlListener aUrlListener, out nsIURI aURL); - void addMessageFlags(in nsIEventQueue aClientEventQueue, + void addMessageFlags(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aImapMailFolder, in nsIUrlListener aUrlListener, out nsIURI aURL, @@ -140,7 +140,7 @@ interface nsIImapService : nsISupports in imapMessageFlagsType aFlags, in boolean aMessageIdsAreUID); - void subtractMessageFlags(in nsIEventQueue aClientEventQueue, + void subtractMessageFlags(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aImapMailFolder, in nsIUrlListener aUrlListener, out nsIURI aURL, @@ -148,7 +148,7 @@ interface nsIImapService : nsISupports in imapMessageFlagsType aFlags, in boolean aMessageIdsAreUID); - void setMessageFlags(in nsIEventQueue aClientEventQueue, + void setMessageFlags(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aImapMailFolder, in nsIUrlListener aUrlListener, out nsIURI aURL, @@ -156,23 +156,23 @@ interface nsIImapService : nsISupports in imapMessageFlagsType aFlags, in boolean aMessageIdsAreUID); - void discoverAllFolders(in nsIEventQueue aClientEventQueue, + void discoverAllFolders(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aImapMailFolder, in nsIUrlListener aUrlListener, in nsIMsgWindow aMsgWindow, out nsIURI aURL); - void discoverAllAndSubscribedFolders(in nsIEventQueue aClientEventQueue, + void discoverAllAndSubscribedFolders(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aImapMailFolder, in nsIUrlListener aUrlListener, out nsIURI aURL); - void discoverChildren(in nsIEventQueue aClientEventQueue, + void discoverChildren(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aImapMailFolder, in nsIUrlListener aUrlListener, in string folderPath, out nsIURI aURL); - void onlineMessageCopy(in nsIEventQueue aClientEventQueue, + void onlineMessageCopy(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aSrcFolder, in string aMessageIds, in nsIMsgFolder aDstFolder, @@ -184,7 +184,7 @@ interface nsIImapService : nsISupports in nsIMsgWindow aWindow); - void appendMessageFromFile(in nsIEventQueue aClientEventQueue, + void appendMessageFromFile(in nsIEventTarget aClientEventTarget, in nsIFileSpec aFileSpec, in nsIMsgFolder aDstFolder, in string aMessageId, @@ -198,37 +198,37 @@ interface nsIImapService : nsISupports void downloadMessagesForOffline(in string aMessageIds, in nsIMsgFolder aSrcFolder, in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow); - nsIURI moveFolder(in nsIEventQueue aClientEventQueue, + nsIURI moveFolder(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aSrcFolder, in nsIMsgFolder aDstFolder, in nsIUrlListener aUrlListener, in nsIMsgWindow msgWindow); - nsIURI renameLeaf(in nsIEventQueue aClientEventQueue, + nsIURI renameLeaf(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aSrcFolder, in wstring aLeafName, in nsIUrlListener aUrlListener, in nsIMsgWindow msgWindow); - nsIURI deleteFolder(in nsIEventQueue aClientEventQueue, + nsIURI deleteFolder(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aFolder, in nsIUrlListener aUrlListener); - nsIURI createFolder(in nsIEventQueue aClientEventQueue, + nsIURI createFolder(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aParentFolder, in wstring aLeafName, in nsIUrlListener aUrlListener); - nsIURI listFolder(in nsIEventQueue aClientEventQueue, + nsIURI listFolder(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aMailFolder, in nsIUrlListener aUrlListener); - nsIURI subscribeFolder(in nsIEventQueue aClientEventQueue, + nsIURI subscribeFolder(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aMailFolder, in wstring mailboxName, in nsIUrlListener aUrlListener); - nsIURI unsubscribeFolder(in nsIEventQueue aClientEventQueue, + nsIURI unsubscribeFolder(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aMailFolder, in wstring mailboxName, in nsIUrlListener aUrlListener); @@ -237,30 +237,30 @@ interface nsIImapService : nsISupports // not subscribed to, in which case it will subscribe to the folder. // otherwise, it will try to create the folder. It will try to do this // with one url. - nsIURI ensureFolderExists(in nsIEventQueue aClientEventQueue, + nsIURI ensureFolderExists(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aParentFolder, in wstring aLeafName, in nsIUrlListener aUrlListener); - nsIURI getFolderAdminUrl(in nsIEventQueue aClientEventQueue, + nsIURI getFolderAdminUrl(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aMailFolder, in nsIMsgWindow aMsgWindow, in nsIUrlListener aUrlListener); - nsIURI issueCommandOnMsgs(in nsIEventQueue aClientEventQueue, + nsIURI issueCommandOnMsgs(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aMailFolder, in nsIMsgWindow aMsgWindow, in string aCommand, in string aMessageIdentifierList); - nsIURI fetchCustomMsgAttribute(in nsIEventQueue aClientEventQueue, + nsIURI fetchCustomMsgAttribute(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aMailFolder, in nsIMsgWindow aMsgWindow, in string aAttribute, in string aMessageIdentifierList); - nsIURI storeCustomKeywords(in nsIEventQueue aClientEventQueue, + nsIURI storeCustomKeywords(in nsIEventTarget aClientEventTarget, in nsIMsgFolder aMailFolder, in nsIMsgWindow aMsgWindow, in string flagsToAdd, diff --git a/mozilla/mailnews/imap/src/nsImapIncomingServer.cpp b/mozilla/mailnews/imap/src/nsImapIncomingServer.cpp index 40104f727a2..546fe1f09ec 100644 --- a/mozilla/mailnews/imap/src/nsImapIncomingServer.cpp +++ b/mozilla/mailnews/imap/src/nsImapIncomingServer.cpp @@ -56,7 +56,7 @@ #include "nsIMsgIdentity.h" #include "nsIImapUrl.h" #include "nsIUrlListener.h" -#include "nsIEventQueue.h" +#include "nsThreadUtils.h" #include "nsImapProtocol.h" #include "nsISupportsArray.h" #include "nsVoidArray.h" @@ -75,7 +75,6 @@ #include "nsIRDFService.h" #include "nsRDFCID.h" #include "nsEnumeratorUtils.h" -#include "nsIEventQueueService.h" #include "nsIMsgMailNewsUrl.h" #include "nsIImapService.h" #include "nsMsgI18N.h" @@ -100,7 +99,6 @@ static NS_DEFINE_CID(kImapProtocolCID, NS_IMAPPROTOCOL_CID); static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID); -static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); static NS_DEFINE_CID(kImapServiceCID, NS_IMAPSERVICE_CID); static NS_DEFINE_CID(kSubscribableServerCID, NS_SUBSCRIBABLESERVER_CID); static NS_DEFINE_CID(kCImapHostSessionListCID, NS_IIMAPHOSTSESSIONLIST_CID); @@ -430,14 +428,14 @@ nsImapIncomingServer::SetIsAOLServer(PRBool aBool) NS_IMETHODIMP -nsImapIncomingServer::GetImapConnectionAndLoadUrl(nsIEventQueue * aClientEventQueue, +nsImapIncomingServer::GetImapConnectionAndLoadUrl(nsIEventTarget * aClientEventTarget, nsIImapUrl* aImapUrl, nsISupports* aConsumer) { nsresult rv = NS_OK; nsCOMPtr aProtocol; - rv = GetImapConnection(aClientEventQueue, aImapUrl, getter_AddRefs(aProtocol)); + rv = GetImapConnection(aClientEventTarget, aImapUrl, getter_AddRefs(aProtocol)); if (NS_FAILED(rv)) return rv; nsCOMPtr mailnewsurl = do_QueryInterface(aImapUrl, &rv); @@ -476,16 +474,11 @@ NS_IMETHODIMP nsImapIncomingServer::RetryUrl(nsIImapUrl *aImapUrl) { nsresult rv; - nsCOMPtr aEventQueue; + nsCOMPtr thread = do_GetCurrentThread(); // Get current thread envent queue - nsCOMPtr pEventQService = - do_GetService(kEventQueueServiceCID, &rv); - if (NS_SUCCEEDED(rv) && pEventQService) - pEventQService->GetThreadEventQueue(NS_CURRENT_THREAD, - getter_AddRefs(aEventQueue)); nsCOMPtr protocolInstance; nsImapProtocol::LogImapUrl("creating protocol instance to retry queued url", aImapUrl); - rv = GetImapConnection(aEventQueue, aImapUrl, getter_AddRefs(protocolInstance)); + rv = GetImapConnection(thread, aImapUrl, getter_AddRefs(protocolInstance)); if (NS_SUCCEEDED(rv) && protocolInstance) { nsCOMPtr url = do_QueryInterface(aImapUrl, &rv); @@ -691,7 +684,7 @@ nsImapIncomingServer::ConnectionTimeOut(nsIImapProtocol* aConnection) } nsresult -nsImapIncomingServer::GetImapConnection(nsIEventQueue *aEventQueue, +nsImapIncomingServer::GetImapConnection(nsIEventTarget *aEventTarget, nsIImapUrl * aImapUrl, nsIImapProtocol ** aImapConnection) { @@ -853,10 +846,10 @@ nsImapIncomingServer::GetImapConnection(nsIEventQueue *aEventQueue, // (e.g., a folder delete or msg append) but we shouldn't create new connections // for these types of urls if we have a free connection. So we check the actual // required state here. - else if (cnt < ((PRUint32)maxConnections) && aEventQueue + else if (cnt < ((PRUint32)maxConnections) && aEventTarget && (!freeConnection || requiredState == nsIImapUrl::nsImapSelectedState)) { - rv = CreateProtocolInstance(aEventQueue, aImapConnection); + rv = CreateProtocolInstance(aEventTarget, aImapConnection); } else if (freeConnection) { @@ -876,7 +869,7 @@ nsImapIncomingServer::GetImapConnection(nsIEventQueue *aEventQueue, } nsresult -nsImapIncomingServer::CreateProtocolInstance(nsIEventQueue *aEventQueue, +nsImapIncomingServer::CreateProtocolInstance(nsIEventTarget *aEventTarget, nsIImapProtocol ** aImapConnection) { // create a new connection and add it to the connection cache @@ -899,7 +892,7 @@ nsImapIncomingServer::CreateProtocolInstance(nsIEventQueue *aEventQueue, nsCOMPtr hostSession = do_GetService(kCImapHostSessionListCID, &rv); if (NS_SUCCEEDED(rv)) - rv = protocolInstance->Initialize(hostSession, this, aEventQueue); + rv = protocolInstance->Initialize(hostSession, this, aEventTarget); } // take the protocol instance and add it to the connectionCache @@ -1003,16 +996,9 @@ nsImapIncomingServer::PerformExpand(nsIMsgWindow *aMsgWindow) nsCOMPtr imapService = do_GetService(kImapServiceCID, &rv); if (NS_FAILED(rv)) return rv; if (!imapService) return NS_ERROR_FAILURE; - nsCOMPtr queue; - // get the Event Queue for this thread... - nsCOMPtr pEventQService = - do_GetService(kEventQueueServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - if (!pEventQService) return NS_ERROR_FAILURE; - - rv = pEventQService->GetThreadEventQueue(NS_CURRENT_THREAD, getter_AddRefs(queue)); - if (NS_FAILED(rv)) return rv; - rv = imapService->DiscoverAllFolders(queue, rootMsgFolder, this, aMsgWindow, nsnull); + nsCOMPtr thread = do_GetCurrentThread(); + if (!thread) return NS_ERROR_FAILURE; + rv = imapService->DiscoverAllFolders(thread, rootMsgFolder, this, aMsgWindow, nsnull); return rv; } @@ -2569,19 +2555,13 @@ NS_IMETHODIMP nsImapIncomingServer::OnLogonRedirectionError(const PRUnichar *pEr if (urlQueueCnt > 0) { nsCOMPtr imapProtocol; - nsCOMPtr aEventQueue; - // Get current thread envent queue - nsCOMPtr pEventQService = - do_GetService(kEventQueueServiceCID, &rv); - if (NS_SUCCEEDED(rv) && pEventQService) - pEventQService->GetThreadEventQueue(NS_CURRENT_THREAD, - getter_AddRefs(aEventQueue)); + nsCOMPtr thread = do_GetCurrentThread(); if (aImapUrl) { nsCOMPtr protocolInstance ; m_waitingForConnectionInfo = PR_FALSE; - rv = GetImapConnection(aEventQueue, aImapUrl, getter_AddRefs(protocolInstance)); + rv = GetImapConnection(thread, aImapUrl, getter_AddRefs(protocolInstance)); // If users cancel the login then we need to reset url state. if (rv == NS_BINDING_ABORTED) resetUrlState = PR_TRUE; @@ -2623,14 +2603,8 @@ NS_IMETHODIMP nsImapIncomingServer::OnLogonRedirectionReply(const PRUnichar *pHo PRBool urlRun = PR_FALSE; nsresult rv; nsCOMPtr imapProtocol; - nsCOMPtr aEventQueue; + nsCOMPtr thread = do_GetCurrentThread(); nsCAutoString cookie(pCookieData, pCookieSize); - // Get current thread envent queue - nsCOMPtr pEventQService = - do_GetService(kEventQueueServiceCID, &rv); - if (NS_SUCCEEDED(rv) && pEventQService) - pEventQService->GetThreadEventQueue(NS_CURRENT_THREAD, - getter_AddRefs(aEventQueue)); // we used to logoff the external requestor...we no longer need to do // that. @@ -2648,7 +2622,7 @@ NS_IMETHODIMP nsImapIncomingServer::OnLogonRedirectionReply(const PRUnichar *pHo nsCOMPtr aConsumer = (nsISupports*)m_urlConsumers.ElementAt(0); nsCOMPtr protocolInstance ; - rv = GetImapConnection(aEventQueue, aImapUrl, getter_AddRefs(protocolInstance)); + rv = GetImapConnection(thread, aImapUrl, getter_AddRefs(protocolInstance)); m_waitingForConnectionInfo = PR_FALSE; if (NS_SUCCEEDED(rv) && protocolInstance) { @@ -2985,23 +2959,16 @@ nsImapIncomingServer::SubscribeToFolder(const PRUnichar *aName, PRBool subscribe rv = rootMsgFolder->FindSubFolder(folderCName, getter_AddRefs(msgFolder)); } - nsCOMPtr queue; - // get the Event Queue for this thread... - nsCOMPtr pEventQService = - do_GetService(kEventQueueServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - - rv = pEventQService->GetThreadEventQueue(NS_CURRENT_THREAD, getter_AddRefs(queue)); - if (NS_FAILED(rv)) return rv; + nsCOMPtr thread = do_GetCurrentThread(); nsAutoString unicodeName; rv = CopyMUTF7toUTF16(folderCName, unicodeName); NS_ENSURE_SUCCESS(rv, rv); if (subscribe) - rv = imapService->SubscribeFolder(queue, msgFolder, unicodeName.get(), nsnull, aUri); + rv = imapService->SubscribeFolder(thread, msgFolder, unicodeName.get(), nsnull, aUri); else - rv = imapService->UnsubscribeFolder(queue, msgFolder, unicodeName.get(), nsnull, nsnull); + rv = imapService->UnsubscribeFolder(thread, msgFolder, unicodeName.get(), nsnull, nsnull); if (NS_FAILED(rv)) return rv; return NS_OK; diff --git a/mozilla/mailnews/imap/src/nsImapIncomingServer.h b/mozilla/mailnews/imap/src/nsImapIncomingServer.h index 1180e9c1c08..7e906c2f228 100644 --- a/mozilla/mailnews/imap/src/nsImapIncomingServer.h +++ b/mozilla/mailnews/imap/src/nsImapIncomingServer.h @@ -51,6 +51,9 @@ #include "nsAdapterEnumerator.h" #include "nsIMsgImapMailFolder.h" #include "nsCOMArray.h" + +class nsIEventTarget; + /* get some implementation from nsMsgIncomingServer */ class nsImapIncomingServer : public nsMsgIncomingServer, public nsIImapIncomingServer, @@ -115,10 +118,10 @@ protected: private: nsresult SetDelimiterFromHierarchyDelimiter(); nsresult SubscribeToFolder(const PRUnichar *aName, PRBool subscribe); - nsresult GetImapConnection (nsIEventQueue* aEventQueue, + nsresult GetImapConnection (nsIEventTarget* aEventTarget, nsIImapUrl* aImapUrl, nsIImapProtocol** aImapConnection); - nsresult CreateProtocolInstance(nsIEventQueue *aEventQueue, + nsresult CreateProtocolInstance(nsIEventTarget *aEventTarget, nsIImapProtocol ** aImapConnection); nsresult RequestOverrideInfo(nsIMsgWindow *aMsgWindow); nsresult CreateHostSpecificPrefName(const char *prefPrefix, nsCAutoString &prefName); diff --git a/mozilla/mailnews/imap/src/nsImapMailFolder.cpp b/mozilla/mailnews/imap/src/nsImapMailFolder.cpp index 9deb7e29dd5..92fa0dabe83 100644 --- a/mozilla/mailnews/imap/src/nsImapMailFolder.cpp +++ b/mozilla/mailnews/imap/src/nsImapMailFolder.cpp @@ -53,7 +53,7 @@ #include "nsMsgDBCID.h" #include "nsMsgFolderFlags.h" #include "nsImapFlagAndUidState.h" -#include "nsIEventQueueService.h" +#include "nsThreadUtils.h" #include "nsIImapUrl.h" #include "nsImapUtils.h" #include "nsMsgUtils.h" @@ -117,7 +117,6 @@ static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID); static NS_DEFINE_CID(kCMailDB, NS_MAILDB_CID); static NS_DEFINE_CID(kCImapDB, NS_IMAPDB_CID); -static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); static NS_DEFINE_CID(kParseMailMsgStateCID, NS_PARSEMAILMSGSTATE_CID); static NS_DEFINE_CID(kCImapHostSessionList, NS_IIMAPHOSTSESSIONLIST_CID); @@ -221,12 +220,7 @@ nsImapMailFolder::nsImapMailFolder() : nsresult rv; - // Get current thread envent queue - nsCOMPtr pEventQService = - do_GetService(kEventQueueServiceCID, &rv); - if (NS_SUCCEEDED(rv) && pEventQService) - pEventQService->GetThreadEventQueue(NS_CURRENT_THREAD, - getter_AddRefs(m_eventQueue)); + m_thread = do_GetCurrentThread(); m_moveCoalescer = nsnull; m_boxFlags = 0; m_uidValidity = kUidUnknown; @@ -810,7 +804,7 @@ nsImapMailFolder::UpdateFolder(nsIMsgWindow *msgWindow) if (NS_FAILED(rv)) return rv; nsCOMPtr url; - rv = imapService->SelectFolder(m_eventQueue, this, m_urlListener, msgWindow, getter_AddRefs(url)); + rv = imapService->SelectFolder(m_thread, this, m_urlListener, msgWindow, getter_AddRefs(url)); if (NS_SUCCEEDED(rv)) m_urlRunning = PR_TRUE; if (url) @@ -880,8 +874,7 @@ NS_IMETHODIMP nsImapMailFolder::CreateSubfolder(const PRUnichar* folderName, nsI nsCOMPtr imapService = do_GetService(NS_IMAPSERVICE_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv,rv); - rv = imapService->CreateFolder(m_eventQueue, this, - folderName, this, nsnull); + rv = imapService->CreateFolder(m_thread, this, folderName, this, nsnull); return rv; } @@ -1032,7 +1025,7 @@ NS_IMETHODIMP nsImapMailFolder::List() nsCOMPtr imapService = do_GetService(NS_IMAPSERVICE_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv,rv); - rv = imapService->ListFolder(m_eventQueue, this, this, nsnull); + rv = imapService->ListFolder(m_thread, this, this, nsnull); return rv; } @@ -1088,7 +1081,7 @@ NS_IMETHODIMP nsImapMailFolder::CreateStorageIfMissing(nsIUrlListener* urlListen if (NS_SUCCEEDED(rv) && imapService) { nsCOMPtr uri; - imapService->EnsureFolderExists(m_eventQueue, msgParent, folderName.get(), urlListener, getter_AddRefs(uri)); + imapService->EnsureFolderExists(m_thread, msgParent, folderName.get(), urlListener, getter_AddRefs(uri)); } } @@ -1247,7 +1240,7 @@ NS_IMETHODIMP nsImapMailFolder::Compact(nsIUrlListener *aListener, nsIMsgWindow nsCOMPtr imapService = do_GetService(NS_IMAPSERVICE_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv,rv); - return imapService->Expunge(m_eventQueue, this, aListener, nsnull); + return imapService->Expunge(m_thread, this, aListener, nsnull); } NS_IMETHODIMP nsImapMailFolder::CompactAll(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow, nsISupportsArray *aFolderArray, PRBool aCompactOfflineAlso, nsISupportsArray *aOfflineFolderArray) @@ -1300,7 +1293,7 @@ NS_IMETHODIMP nsImapMailFolder::UpdateStatus(nsIUrlListener *aListener, nsIMsgWi nsCOMPtr uri; - rv = imapService->UpdateFolderStatus(m_eventQueue, this, aListener, getter_AddRefs(uri)); + rv = imapService->UpdateFolderStatus(m_thread, this, aListener, getter_AddRefs(uri)); if (uri) { nsCOMPtr mailNewsUrl = do_QueryInterface(uri); @@ -1436,14 +1429,14 @@ NS_IMETHODIMP nsImapMailFolder::EmptyTrash(nsIMsgWindow *aMsgWindow, } if (aListener) { - rv = imapService->DeleteAllMessages(m_eventQueue, trashFolder, + rv = imapService->DeleteAllMessages(m_thread, trashFolder, aListener, nsnull); } else { nsCOMPtr urlListener = do_QueryInterface(trashFolder); - rv = imapService->DeleteAllMessages(m_eventQueue, trashFolder, + rv = imapService->DeleteAllMessages(m_thread, trashFolder, urlListener, nsnull); } // return an error if this failed. We want the empty trash on exit code @@ -1562,7 +1555,7 @@ NS_IMETHODIMP nsImapMailFolder::Rename (const PRUnichar *newName, nsIMsgWindow * nsCOMPtr imapService = do_GetService(NS_IMAPSERVICE_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv,rv); - return imapService->RenameLeaf(m_eventQueue, this, newName, this, msgWindow, + return imapService->RenameLeaf(m_thread, this, newName, this, msgWindow, nsnull); } @@ -2226,7 +2219,7 @@ NS_IMETHODIMP nsImapMailFolder::DeleteMessages(nsISupportsArray *messages, //need to take care of these two delete models nsImapMoveCopyMsgTxn* undoMsgTxn = new nsImapMoveCopyMsgTxn( this, &srcKeyArray, messageIds.get(), nsnull, - PR_TRUE, isMove, m_eventQueue, nsnull); + PR_TRUE, isMove, m_thread, nsnull); if (!undoMsgTxn) return NS_ERROR_OUT_OF_MEMORY; undoMsgTxn->SetTransactionType(nsIMessenger::eDeleteMsg); // we're adding this undo action before the delete is successful. This is evil, @@ -2433,7 +2426,7 @@ nsImapMailFolder::DeleteSubFolders(nsISupportsArray* folders, nsIMsgWindow *msgW { urlListener = do_QueryInterface(curFolder); if (deleteNoTrash) - rv = imapService->DeleteFolder(m_eventQueue, + rv = imapService->DeleteFolder(m_thread, curFolder, urlListener, nsnull); @@ -2448,7 +2441,7 @@ nsImapMailFolder::DeleteSubFolders(nsISupportsArray* folders, nsIMsgWindow *msgW if (!confirm) return NS_OK; } - rv = imapService->MoveFolder(m_eventQueue, + rv = imapService->MoveFolder(m_thread, curFolder, trashFolder, urlListener, @@ -3229,7 +3222,7 @@ NS_IMETHODIMP nsImapMailFolder::EndCopy(PRBool copySucceeded) nsCOMPtr copySupport; if (m_copyState) copySupport = do_QueryInterface(m_copyState); - rv = imapService->AppendMessageFromFile(m_eventQueue, + rv = imapService->AppendMessageFromFile(m_thread, m_copyState->m_tmpFileSpec, this, "", PR_TRUE, m_copyState->m_selectedState, @@ -3534,7 +3527,7 @@ NS_IMETHODIMP nsImapMailFolder::SetImapFlags(const char *uids, PRInt32 flags, ns nsCOMPtr imapService = do_GetService(NS_IMAPSERVICE_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv,rv); - return imapService->SetMessageFlags(m_eventQueue, this, this, + return imapService->SetMessageFlags(m_thread, this, this, url, uids, flags, PR_TRUE); } @@ -3547,7 +3540,7 @@ NS_IMETHODIMP nsImapMailFolder::PlaybackOfflineFolderCreate(const PRUnichar *aFo nsCOMPtr imapService = do_GetService(NS_IMAPSERVICE_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv,rv); - return imapService->CreateFolder(m_eventQueue, this, + return imapService->CreateFolder(m_thread, this, aFolderName, this, url); } @@ -3561,7 +3554,7 @@ NS_IMETHODIMP nsImapMailFolder::ReplayOfflineMoveCopy(nsMsgKey *msgKeys, PRUint3 nsCOMPtr resultUrl; nsCAutoString uids; AllocateUidStringFromKeys(msgKeys, numKeys, uids); - rv = imapService->OnlineMessageCopy(m_eventQueue, + rv = imapService->OnlineMessageCopy(m_thread, this, uids.get(), aDstFolder, @@ -3598,12 +3591,12 @@ NS_IMETHODIMP nsImapMailFolder::StoreImapFlags(PRInt32 flags, PRBool addFlags, if (addFlags) { - imapService->AddMessageFlags(m_eventQueue, this, aUrlListener ? aUrlListener : this, + imapService->AddMessageFlags(m_thread, this, aUrlListener ? aUrlListener : this, nsnull, msgIds.get(), flags, PR_TRUE); } else { - imapService->SubtractMessageFlags(m_eventQueue, this, aUrlListener ? aUrlListener : this, + imapService->SubtractMessageFlags(m_thread, this, aUrlListener ? aUrlListener : this, nsnull, msgIds.get(), flags, PR_TRUE); } @@ -3644,7 +3637,7 @@ NS_IMETHODIMP nsImapMailFolder::LiteSelect(nsIUrlListener *aUrlListener) nsCOMPtr imapService = do_GetService(NS_IMAPSERVICE_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv,rv); - return imapService->LiteSelectFolder(m_eventQueue, this, aUrlListener, nsnull); + return imapService->LiteSelectFolder(m_thread, this, aUrlListener, nsnull); } nsresult nsImapMailFolder::GetFolderOwnerUserName(char **userName) @@ -3791,7 +3784,7 @@ NS_IMETHODIMP nsImapMailFolder::FolderPrivileges(nsIMsgWindow *window) nsCOMPtr imapService = do_GetService(NS_IMAPSERVICE_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv,rv); - rv = imapService->GetFolderAdminUrl(m_eventQueue, this, window, this, nsnull); + rv = imapService->GetFolderAdminUrl(m_thread, this, window, this, nsnull); if (NS_SUCCEEDED(rv)) m_urlRunning = PR_TRUE; } @@ -3836,7 +3829,7 @@ NS_IMETHODIMP nsImapMailFolder::IssueCommandOnMsgs(const char *command, const ch nsCOMPtr imapService = do_GetService(NS_IMAPSERVICE_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv,rv); - return imapService->IssueCommandOnMsgs(m_eventQueue, this, aWindow, command, uids, url); + return imapService->IssueCommandOnMsgs(m_thread, this, aWindow, command, uids, url); } NS_IMETHODIMP nsImapMailFolder::FetchCustomMsgAttribute(const char *attribute, const char *uids, nsIMsgWindow *aWindow, nsIURI **url) @@ -3845,7 +3838,7 @@ NS_IMETHODIMP nsImapMailFolder::FetchCustomMsgAttribute(const char *attribute, c nsCOMPtr imapService = do_GetService(NS_IMAPSERVICE_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv,rv); - return imapService->FetchCustomMsgAttribute(m_eventQueue, this, aWindow, attribute, uids, url); + return imapService->FetchCustomMsgAttribute(m_thread, this, aWindow, attribute, uids, url); } nsresult nsImapMailFolder::MoveIncorporatedMessage(nsIMsgDBHdr *mailHdr, @@ -4197,7 +4190,7 @@ NS_IMETHODIMP nsImapMailFolder::DownloadAllForOffline(nsIUrlListener *listener, // selecting the folder with m_downloadingFolderForOfflineUse true will cause // us to fetch any message bodies we don't have. - rv = imapService->SelectFolder(m_eventQueue, this, listener, msgWindow, nsnull); + rv = imapService->SelectFolder(m_thread, this, listener, msgWindow, nsnull); if (NS_SUCCEEDED(rv)) m_urlRunning = PR_TRUE; } @@ -4330,7 +4323,7 @@ nsImapMailFolder::OnlineCopyCompleted(nsIImapProtocol *aProtocol, ImapOnlineCopy do_GetService(NS_IMAPSERVICE_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv,rv); - rv = imapService->AddMessageFlags(m_eventQueue, this, nsnull, nsnull, + rv = imapService->AddMessageFlags(m_thread, this, nsnull, nsnull, messageIds, kImapMsgDeletedFlag, PR_TRUE); @@ -6300,7 +6293,7 @@ nsImapMailFolder::CopyMessagesWithStream(nsIMsgFolder* srcFolder, nsImapMoveCopyMsgTxn* undoMsgTxn = new nsImapMoveCopyMsgTxn( srcFolder, &srcKeyArray, messageIds.get(), this, - PR_TRUE, isMove, m_eventQueue, urlListener); + PR_TRUE, isMove, m_thread, urlListener); if (!undoMsgTxn) return NS_ERROR_OUT_OF_MEMORY; if (isMove) @@ -6606,7 +6599,7 @@ nsresult nsImapMailFolder::CopyMessagesOffline(nsIMsgFolder* srcFolder, rv = QueryInterface(NS_GET_IID(nsIUrlListener), getter_AddRefs(urlListener)); nsImapOfflineTxn *undoMsgTxn = new nsImapOfflineTxn(srcFolder, &srcKeyArray, this, isMove, opType, message, - m_eventQueue, urlListener); + m_thread, urlListener); if (undoMsgTxn) { @@ -6679,7 +6672,7 @@ nsresult nsImapMailFolder::CopyMessagesOffline(nsIMsgFolder* srcFolder, keyArray.Add(fakeBase + sourceKeyIndex); nsImapOfflineTxn *undoMsgTxn = new nsImapOfflineTxn(this, &keyArray, this, isMove, nsIMsgOfflineImapOperation::kAddedHeader, - newMailHdr, m_eventQueue, urlListener); + newMailHdr, m_thread, urlListener); if (undoMsgTxn) { if (txnMgr) @@ -6710,7 +6703,7 @@ nsresult nsImapMailFolder::CopyMessagesOffline(nsIMsgFolder* srcFolder, srcKeyArray.Add(msgKey); nsImapOfflineTxn *undoMsgTxn = new nsImapOfflineTxn(srcFolder, &srcKeyArray, this, isMove, opType, mailHdr, - m_eventQueue, urlListener); + m_thread, urlListener); if (undoMsgTxn) { if (isMove) @@ -6867,7 +6860,7 @@ nsImapMailFolder::CopyMessages(nsIMsgFolder* srcFolder, copySupport = do_QueryInterface(m_copyState); if (imapService) - rv = imapService->OnlineMessageCopy(m_eventQueue, + rv = imapService->OnlineMessageCopy(m_thread, srcFolder, messageIds.get(), this, PR_TRUE, isMove, urlListener, nsnull, @@ -6877,7 +6870,7 @@ nsImapMailFolder::CopyMessages(nsIMsgFolder* srcFolder, { nsImapMoveCopyMsgTxn* undoMsgTxn = new nsImapMoveCopyMsgTxn( srcFolder, &srcKeyArray, messageIds.get(), this, - PR_TRUE, isMove, m_eventQueue, urlListener); + PR_TRUE, isMove, m_thread, urlListener); if (!undoMsgTxn) return NS_ERROR_OUT_OF_MEMORY; if (isMove) { @@ -6967,14 +6960,9 @@ nsImapFolderCopyState::StartNextCopy() nsXPIDLString folderName; m_srcFolder->GetName(getter_Copies(folderName)); - nsCOMPtr pEventQService = - do_GetService(kEventQueueServiceCID, &rv); - nsCOMPtr eventQueue; - if (NS_SUCCEEDED(rv) && pEventQService) - pEventQService->GetThreadEventQueue(NS_CURRENT_THREAD, - getter_AddRefs(eventQueue)); + nsCOMPtr thread = do_GetCurrentThread(); - rv = imapService->EnsureFolderExists(eventQueue, m_destParent, + rv = imapService->EnsureFolderExists(thread, m_destParent, folderName.get(), this, nsnull); } @@ -7258,7 +7246,7 @@ nsImapMailFolder::CopyFolder(nsIMsgFolder* srcFolder, return NS_OK; } } - rv = imapService->MoveFolder(m_eventQueue, + rv = imapService->MoveFolder(m_thread, srcFolder, this, urlListener, @@ -7322,7 +7310,7 @@ nsImapMailFolder::CopyFileMessage(nsIFileSpec* fileSpec, copySupport = do_QueryInterface(m_copyState); if (!isDraftOrTemplate) m_copyState->m_totalCount = 1; - rv = imapService->AppendMessageFromFile(m_eventQueue, fileSpec, this, + rv = imapService->AppendMessageFromFile(m_thread, fileSpec, this, messageId.get(), PR_TRUE, isDraftOrTemplate, urlListener, nsnull, @@ -7809,7 +7797,7 @@ NS_IMETHODIMP nsImapMailFolder::PerformExpand(nsIMsgWindow *aMsgWindow) nsCOMPtr imapService = do_GetService(NS_IMAPSERVICE_CONTRACTID, &rv); if (NS_SUCCEEDED(rv)) - rv = imapService->DiscoverChildren(m_eventQueue, this, this, + rv = imapService->DiscoverChildren(m_thread, this, this, m_onlineFolderName.get(), nsnull); } @@ -8142,7 +8130,7 @@ nsImapMailFolder::StoreCustomKeywords(nsIMsgWindow *aMsgWindow, const char *aFla NS_ENSURE_SUCCESS(rv, rv); nsCAutoString msgIds; AllocateUidStringFromKeys(aKeysToStore, aNumKeys, msgIds); - return imapService->StoreCustomKeywords(m_eventQueue, this, aMsgWindow, aFlagsToAdd, aFlagsToSubtract, msgIds.get(), _retval); + return imapService->StoreCustomKeywords(m_thread, this, aMsgWindow, aFlagsToAdd, aFlagsToSubtract, msgIds.get(), _retval); } NS_IMETHODIMP nsImapMailFolder::NotifyIfNewMail() @@ -8453,7 +8441,7 @@ NS_IMETHODIMP nsImapMailFolder::FetchMsgPreviewText(nsMsgKey *aKeysToFetch, PRUi AllocateImapUidString(keysToFetchFromServer.GetArray(), msgCount, nsnull, messageIds); - rv = imapService->GetBodyStart(m_eventQueue, this, aUrlListener, + rv = imapService->GetBodyStart(m_thread, this, aUrlListener, messageIds.get(), 2048, nsnull); *aAsyncResults = PR_TRUE; // the preview text will be available async... } diff --git a/mozilla/mailnews/imap/src/nsImapMailFolder.h b/mozilla/mailnews/imap/src/nsImapMailFolder.h index d334a6844c6..6c89807347d 100644 --- a/mozilla/mailnews/imap/src/nsImapMailFolder.h +++ b/mozilla/mailnews/imap/src/nsImapMailFolder.h @@ -54,12 +54,13 @@ #include "nsIMsgFilterList.h" #include "nsIMsgFilterPlugin.h" #include "prmon.h" -#include "nsIEventQueue.h" #include "nsIMsgImapMailFolder.h" #include "nsIMsgLocalMailFolder.h" #include "nsIImapMailFolderSink.h" #include "nsIImapServerSink.h" #include "nsIMsgFilterPlugin.h" +#include "nsIEventTarget.h" +#include "nsIThread.h" class nsImapMoveCoalescer; class nsHashtable; class nsHashKey; @@ -441,7 +442,7 @@ protected: PRInt32 m_numStatusRecentMessages; // used to store counts from Status command PRInt32 m_numStatusUnseenMessages; PRInt32 m_nextMessageByteLength; - nsCOMPtr m_eventQueue; + nsCOMPtr m_thread; nsCOMPtr m_urlListener; PRBool m_urlRunning; diff --git a/mozilla/mailnews/imap/src/nsImapProtocol.cpp b/mozilla/mailnews/imap/src/nsImapProtocol.cpp index 6660fe48575..6dcfeb66612 100644 --- a/mozilla/mailnews/imap/src/nsImapProtocol.cpp +++ b/mozilla/mailnews/imap/src/nsImapProtocol.cpp @@ -53,7 +53,7 @@ #include "nsIStringBundle.h" #include "nsMsgImapCID.h" -#include "nsIEventQueueService.h" +#include "nsThreadUtils.h" #include "nsISupportsObsolete.h" #include "nsImapCore.h" @@ -106,13 +106,11 @@ PRLogModuleInfo *IMAP; #include "nsIProxyObjectManager.h" #include "nsIStreamConverterService.h" #include "nsIProxyInfo.h" -#include "nsEventQueueUtils.h" #include "nsISSLSocketControl.h" #define ONE_SECOND ((PRUint32)1000) // one second static NS_DEFINE_CID(kSocketTransportServiceCID, NS_SOCKETTRANSPORTSERVICE_CID); -static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID); static NS_DEFINE_CID(kProxyObjectManagerCID, NS_PROXYEVENT_MANAGER_CID); static NS_DEFINE_CID(kStreamListenerTeeCID, NS_STREAMLISTENERTEE_CID); @@ -473,11 +471,11 @@ nsresult nsImapProtocol::Configure(PRInt32 TooFastTime, PRInt32 IdealTime, nsresult nsImapProtocol::Initialize(nsIImapHostSessionList * aHostSessionList, nsIImapIncomingServer *aServer, - nsIEventQueue * aSinkEventQueue) + nsIEventTarget * aSinkEventTarget) { - NS_PRECONDITION(aSinkEventQueue && aHostSessionList, + NS_PRECONDITION(aSinkEventTarget && aHostSessionList, "oops...trying to initalize with a null sink event queue!"); - if (!aSinkEventQueue || !aHostSessionList || !aServer) + if (!aSinkEventTarget || !aHostSessionList || !aServer) return NS_ERROR_NULL_POINTER; nsresult rv = m_downloadLineCache.GrowBuffer(kDownLoadCacheSize); @@ -490,7 +488,7 @@ nsresult nsImapProtocol::Initialize(nsIImapHostSessionList * aHostSessionList, n aServer->GetUseIdle(&m_useIdle); NS_ADDREF(m_flagState); - m_sinkEventQueue = aSinkEventQueue; + m_sinkEventTarget = aSinkEventTarget; m_hostSessionList = aHostSessionList; // no ref count...host session list has life time > connection m_parser.SetHostSessionList(aHostSessionList); m_parser.SetFlagState(m_flagState); @@ -507,7 +505,7 @@ nsresult nsImapProtocol::Initialize(nsIImapHostSessionList * aHostSessionList, n m_fetchMsgListMonitor = PR_NewMonitor(); m_fetchBodyListMonitor = PR_NewMonitor(); - nsresult rv = NS_NewThread(getter_AddRefs(m_iThread), this); + nsresult rv = NS_NewThread(getter_AddRefs(m_iThread), this, "imap"); if (NS_FAILED(rv)) { NS_ASSERTION(m_iThread, "Unable to create imap thread.\n"); @@ -613,7 +611,7 @@ nsImapProtocol::SetupSinkProxy() if (m_runningUrl) { - NS_ASSERTION(m_sinkEventQueue && m_thread, "fatal... null sink event queue or thread"); + NS_ASSERTION(m_sinkEventTarget && m_thread, "fatal... null sink event queue or thread"); nsCOMPtr proxyManager(do_GetService(kProxyObjectManagerCID, &res)); if (proxyManager) // if we don't get one of these are as good as dead... @@ -623,10 +621,10 @@ nsImapProtocol::SetupSinkProxy() nsCOMPtr aImapMailFolderSink; res = m_runningUrl->GetImapMailFolderSink(getter_AddRefs(aImapMailFolderSink)); if (NS_SUCCEEDED(res) && aImapMailFolderSink) - res = proxyManager->GetProxyForObject(m_sinkEventQueue, + res = proxyManager->GetProxyForObject(m_sinkEventTarget, NS_GET_IID(nsIImapMailFolderSink), aImapMailFolderSink, - PROXY_SYNC | PROXY_ALWAYS, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, getter_AddRefs(m_imapMailFolderSink)); } @@ -635,10 +633,10 @@ nsImapProtocol::SetupSinkProxy() nsCOMPtr aImapMessageSink; res = m_runningUrl->GetImapMessageSink(getter_AddRefs(aImapMessageSink)); if (NS_SUCCEEDED(res) && aImapMessageSink) - res = proxyManager->GetProxyForObject(m_sinkEventQueue, + res = proxyManager->GetProxyForObject(m_sinkEventTarget, NS_GET_IID(nsIImapMessageSink), aImapMessageSink, - PROXY_SYNC | PROXY_ALWAYS, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, getter_AddRefs(m_imapMessageSink)); } if (!m_imapServerSink) @@ -646,10 +644,10 @@ nsImapProtocol::SetupSinkProxy() nsCOMPtr aImapServerSink; res = m_runningUrl->GetImapServerSink(getter_AddRefs(aImapServerSink)); if (NS_SUCCEEDED(res) && aImapServerSink) - res = proxyManager->GetProxyForObject( m_sinkEventQueue, + res = proxyManager->GetProxyForObject( m_sinkEventTarget, NS_GET_IID(nsIImapServerSink), aImapServerSink, - PROXY_SYNC | PROXY_ALWAYS, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, getter_AddRefs(m_imapServerSink)); NS_ASSERTION(NS_SUCCEEDED(res), "couldn't get proxies"); } @@ -715,7 +713,12 @@ nsresult nsImapProtocol::SetupWithUrl(nsIURI * aURL, nsISupports* aConsumer) if (aRealStreamListener) { NS_ASSERTION(!m_channelListener, "shouldn't already have a channel listener"); - rv = NS_NewAsyncStreamListener(getter_AddRefs(m_channelListener), aRealStreamListener, m_sinkEventQueue); + rv = NS_GetProxyForObject(m_sinkEventTarget, + NS_GET_IID(nsIStreamListener), + aRealStreamListener, + NS_PROXY_ASYNC | NS_PROXY_ALWAYS, + getter_AddRefs(m_channelListener)); + if (NS_FAILED(rv)) return rv; } PRUint32 capability = kCapabilityUndefined; @@ -824,9 +827,8 @@ nsresult nsImapProtocol::SetupWithUrl(nsIURI * aURL, nsISupports* aConsumer) nsCOMPtr sink = do_QueryInterface(m_mockChannel); if (sink) { - nsCOMPtr eventQ; - NS_GetMainEventQ(getter_AddRefs(eventQ)); - m_transport->SetEventSink(sink, eventQ); + nsCOMPtr thread = do_GetMainThread(); + m_transport->SetEventSink(sink, thread); } // and if we have a cache entry that we are saving the message to, set the security info on it too. @@ -933,7 +935,7 @@ NS_IMETHODIMP nsImapProtocol::Run() me->m_runningUrl = nsnull; CloseStreams(); - me->m_sinkEventQueue = nsnull; + me->m_sinkEventTarget = nsnull; me->m_imapMailFolderSink = nsnull; me->m_imapMessageSink = nsnull; m_iThread = nsnull; @@ -1412,8 +1414,11 @@ PRBool nsImapProtocol::ProcessCurrentURL() { nsCOMPtr request = do_QueryInterface(m_mockChannel); NS_ASSERTION(request, "no request"); - if (request) - rv = m_channelListener->OnStopRequest(request, m_channelContext, NS_OK); + if (request) { + nsresult status; + request->GetStatus(&status); + rv = m_channelListener->OnStopRequest(request, m_channelContext, status); + } } SetFlag(IMAP_CLEAN_UP_URL_STATE); @@ -8276,14 +8281,9 @@ nsresult nsImapMockChannel::ReadFromImapConnection() NS_ENSURE_SUCCESS(rv, rv); // Assume AsyncRead is always called from the UI thread..... - nsCOMPtr queue; - // get the Event Queue for this thread... - nsCOMPtr pEventQService (do_GetService(kEventQueueServiceCID, &rv)); - NS_ENSURE_SUCCESS(rv, rv); - - rv = pEventQService->GetThreadEventQueue(NS_CURRENT_THREAD, getter_AddRefs(queue)); - NS_ENSURE_SUCCESS(rv, rv); - rv = imapServer->GetImapConnectionAndLoadUrl(queue, imapUrl, nsnull); + nsCOMPtr thread = do_GetCurrentThread(); + NS_ENSURE_STATE(thread); + rv = imapServer->GetImapConnectionAndLoadUrl(thread, imapUrl, nsnull); return rv; } diff --git a/mozilla/mailnews/imap/src/nsImapProtocol.h b/mozilla/mailnews/imap/src/nsImapProtocol.h index da074045198..ebea7bc6eb6 100644 --- a/mozilla/mailnews/imap/src/nsImapProtocol.h +++ b/mozilla/mailnews/imap/src/nsImapProtocol.h @@ -43,7 +43,7 @@ #include "nsIImapUrl.h" #include "nsMsgProtocol.h" -#include "nsIEventQueue.h" +#include "nsIEventTarget.h" #include "nsIStreamListener.h" #include "nsIOutputStream.h" #include "nsIOutputStream.h" @@ -353,8 +353,8 @@ private: // ******* Thread support ******* - nsCOMPtr m_sinkEventQueue; - nsCOMPtr m_iThread; + nsCOMPtr m_sinkEventTarget; + nsCOMPtr m_iThread; PRThread *m_thread; PRMonitor *m_dataAvailableMonitor; // used to notify the arrival of data from the server PRMonitor *m_urlReadyToRunMonitor; // used to notify the arrival of a new url to be processed diff --git a/mozilla/mailnews/imap/src/nsImapProxyEvent.h b/mozilla/mailnews/imap/src/nsImapProxyEvent.h index 216f3f64eb9..db0c1f9de05 100644 --- a/mozilla/mailnews/imap/src/nsImapProxyEvent.h +++ b/mozilla/mailnews/imap/src/nsImapProxyEvent.h @@ -38,7 +38,7 @@ #ifndef nsImapProxyEvent_h__ #define nsImapProxyEvent_h__ -#include "plevent.h" +#include "nsThreadUtils.h" #include "prthread.h" #include "nsISupports.h" #include "nsIURL.h" @@ -50,35 +50,31 @@ #include "nsIImapUrl.h" #include "nsIImapMailFolderSink.h" #include "nsIMsgFolder.h" // TO include biffState enum. Change to bool later... - - #include "nsCOMPtr.h" + class nsImapProxyBase { public: nsImapProxyBase(nsIImapProtocol* aProtocol, - nsIEventQueue* aEventQ, + nsIEventTarget* aEventTarget, PRThread* aThread); virtual ~nsImapProxyBase(); - nsIEventQueue* m_eventQueue; + nsIEventTarget* m_eventTarget; PRThread* m_thread; nsIImapProtocol* m_protocol; }; /* ******* Imap Base Event struct ******** */ -struct nsImapEvent : public PLEvent +struct nsImapEvent : public nsRunnable { nsImapEvent(); virtual ~nsImapEvent(); virtual void InitEvent(); - NS_IMETHOD HandleEvent() = 0; - void PostEvent(nsIEventQueue* aEventQ); + void PostEvent(nsIEventTarget* aTarget); virtual void SetNotifyCompletion(PRBool notifyCompletion); - static void* PR_CALLBACK imap_event_handler(PLEvent* aEvent); - static void PR_CALLBACK imap_event_destructor(PLEvent *aEvent); PRBool m_notifyCompletion; }; diff --git a/mozilla/mailnews/imap/src/nsImapService.cpp b/mozilla/mailnews/imap/src/nsImapService.cpp index ed3deadb34f..882697ea059 100644 --- a/mozilla/mailnews/imap/src/nsImapService.cpp +++ b/mozilla/mailnews/imap/src/nsImapService.cpp @@ -57,7 +57,6 @@ #include "nsIDocShell.h" #include "nsIDocShellLoadInfo.h" #include "nsIRDFService.h" -#include "nsIEventQueueService.h" #include "nsXPIDLString.h" #include "nsReadableUtils.h" #include "nsRDFCID.h" @@ -100,13 +99,13 @@ #include "nsImapProtocol.h" #include "nsIMsgMailSession.h" #include "nsIStreamConverterService.h" +#include "nsThreadUtils.h" #include "nsNetUtil.h" #include "nsInt64.h" #define PREF_MAIL_ROOT_IMAP "mail.root.imap" // old - for backward compatibility only #define PREF_MAIL_ROOT_IMAP_REL "mail.root.imap-rel" -static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); static NS_DEFINE_CID(kImapUrlCID, NS_IMAPURL_CID); static NS_DEFINE_CID(kCacheServiceCID, NS_CACHESERVICE_CID); @@ -202,15 +201,15 @@ nsImapService::GetFolderName(nsIMsgFolder* aImapFolder, } NS_IMETHODIMP -nsImapService::SelectFolder(nsIEventQueue * aClientEventQueue, +nsImapService::SelectFolder(nsIEventTarget * aClientEventTarget, nsIMsgFolder * aImapMailFolder, nsIUrlListener * aUrlListener, nsIMsgWindow *aMsgWindow, nsIURI ** aURL) { - NS_ASSERTION (aImapMailFolder && aClientEventQueue, + NS_ASSERTION (aImapMailFolder && aClientEventTarget, "Oops ... null pointer"); - if (!aImapMailFolder || !aClientEventQueue) + if (!aImapMailFolder || !aClientEventTarget) return NS_ERROR_NULL_POINTER; if (WeAreOffline()) @@ -253,7 +252,7 @@ nsImapService::SelectFolder(nsIEventQueue * aClientEventQueue, urlSpec.Append((const char *) folderName); rv = mailNewsUrl->SetSpec(urlSpec); if (NS_SUCCEEDED(rv)) - rv = GetImapConnectionAndLoadUrl(aClientEventQueue, + rv = GetImapConnectionAndLoadUrl(aClientEventTarget, imapUrl, nsnull, aURL); @@ -265,12 +264,12 @@ nsImapService::SelectFolder(nsIEventQueue * aClientEventQueue, // lite select, used to verify UIDVALIDITY while going on/offline NS_IMETHODIMP -nsImapService::LiteSelectFolder(nsIEventQueue * aClientEventQueue, +nsImapService::LiteSelectFolder(nsIEventTarget * aClientEventTarget, nsIMsgFolder * aImapMailFolder, nsIUrlListener * aUrlListener, nsIURI ** aURL) { - return FolderCommand(aClientEventQueue, aImapMailFolder, aUrlListener, + return FolderCommand(aClientEventTarget, aImapMailFolder, aUrlListener, "/liteselect>", nsIImapUrl::nsImapLiteSelectFolder, aURL); } @@ -693,16 +692,8 @@ nsresult nsImapService::FetchMimePart(nsIImapUrl * aImapUrl, #if defined(DEBUG_mscott) || defined(DEBUG_bienvenu) NS_ASSERTION(0, "oops...someone still is reaching this part of the code"); #endif - nsCOMPtr queue; - // get the Event Queue for this thread... - nsCOMPtr pEventQService = - do_GetService(kEventQueueServiceCID, &rv); - - if (NS_FAILED(rv)) return rv; - - rv = pEventQService->GetThreadEventQueue(NS_CURRENT_THREAD, getter_AddRefs(queue)); - if (NS_FAILED(rv)) return rv; - rv = GetImapConnectionAndLoadUrl(queue, aImapUrl, aDisplayConsumer, aURL); + nsCOMPtr thread = do_GetCurrentThread(); + rv = GetImapConnectionAndLoadUrl(thread, aImapUrl, aDisplayConsumer, aURL); } } } @@ -858,16 +849,8 @@ NS_IMETHODIMP nsImapService::Search(nsIMsgSearchSession *aSearchSession, nsIMsgW rv = mailNewsUrl->SetSpec(urlSpec); if (NS_SUCCEEDED(rv)) { - nsCOMPtr queue; - // get the Event Queue for this thread... - nsCOMPtr pEventQService = - do_GetService(kEventQueueServiceCID, &rv); - - if (NS_FAILED(rv)) return rv; - - rv = pEventQService->GetThreadEventQueue(NS_CURRENT_THREAD, getter_AddRefs(queue)); - if (NS_FAILED(rv)) return rv; - rv = GetImapConnectionAndLoadUrl(queue, imapUrl, nsnull, nsnull); + nsCOMPtr thread = do_GetCurrentThread(); + rv = GetImapConnectionAndLoadUrl(thread, imapUrl, nsnull, nsnull); } } return rv; @@ -1101,16 +1084,8 @@ nsImapService::FetchMessage(nsIImapUrl * aImapUrl, #if defined(DEBUG_mscott) || defined(DEBUG_bienvenu) NS_ASSERTION(0, "oops...someone still is reaching this part of the code"); #endif - nsCOMPtr queue; - // get the Event Queue for this thread... - nsCOMPtr pEventQService = - do_GetService(kEventQueueServiceCID, &rv); - - if (NS_FAILED(rv)) return rv; - - rv = pEventQService->GetThreadEventQueue(NS_CURRENT_THREAD, getter_AddRefs(queue)); - if (NS_FAILED(rv)) return rv; - rv = GetImapConnectionAndLoadUrl(queue, aImapUrl, aDisplayConsumer, aURL); + nsCOMPtr thread = do_GetCurrentThread(); + rv = GetImapConnectionAndLoadUrl(thread, aImapUrl, aDisplayConsumer, aURL); } } return rv; @@ -1254,7 +1229,7 @@ nsImapService::CreateStartOfImapUrl(const char * aImapURI, nsIImapUrl ** imapUrl /* 'x' is the message UID or sequence number list */ /* will not affect the 'SEEN' flag */ NS_IMETHODIMP -nsImapService::GetHeaders(nsIEventQueue * aClientEventQueue, +nsImapService::GetHeaders(nsIEventTarget * aClientEventTarget, nsIMsgFolder * aImapMailFolder, nsIUrlListener * aUrlListener, nsIURI ** aURL, @@ -1264,9 +1239,9 @@ nsImapService::GetHeaders(nsIEventQueue * aClientEventQueue, // create a protocol instance to handle the request. // NOTE: once we start working with multiple connections, this step will be much more complicated...but for now // just create a connection and process the request. - NS_ASSERTION (aImapMailFolder && aClientEventQueue, + NS_ASSERTION (aImapMailFolder && aClientEventTarget, "Oops ... null pointer"); - if (!aImapMailFolder || !aClientEventQueue) + if (!aImapMailFolder || !aClientEventTarget) return NS_ERROR_NULL_POINTER; nsCOMPtr imapUrl; @@ -1298,7 +1273,7 @@ nsImapService::GetHeaders(nsIEventQueue * aClientEventQueue, rv = uri->SetSpec(urlSpec); if (NS_SUCCEEDED(rv)) - rv = GetImapConnectionAndLoadUrl(aClientEventQueue, imapUrl, + rv = GetImapConnectionAndLoadUrl(aClientEventTarget, imapUrl, nsnull, aURL); } @@ -1313,7 +1288,7 @@ nsImapService::GetHeaders(nsIEventQueue * aClientEventQueue, /* 'n' is the number of bytes to fetch */ /* will not affect the 'SEEN' flag */ NS_IMETHODIMP -nsImapService::GetBodyStart(nsIEventQueue * aClientEventQueue, +nsImapService::GetBodyStart(nsIEventTarget * aClientEventTarget, nsIMsgFolder * aImapMailFolder, nsIUrlListener * aUrlListener, const char *messageIdentifierList, @@ -1321,9 +1296,9 @@ nsImapService::GetBodyStart(nsIEventQueue * aClientEventQueue, nsIURI ** aURL) { nsresult rv; - NS_ASSERTION (aImapMailFolder && aClientEventQueue, + NS_ASSERTION (aImapMailFolder && aClientEventTarget, "Oops ... null pointer"); - if (!aImapMailFolder || !aClientEventQueue) + if (!aImapMailFolder || !aClientEventTarget) return NS_ERROR_NULL_POINTER; nsCOMPtr imapUrl; @@ -1357,23 +1332,23 @@ nsImapService::GetBodyStart(nsIEventQueue * aClientEventQueue, urlSpec.AppendInt(numBytes); rv = uri->SetSpec(urlSpec); if (NS_SUCCEEDED(rv)) - rv = GetImapConnectionAndLoadUrl(aClientEventQueue, imapUrl, + rv = GetImapConnectionAndLoadUrl(aClientEventTarget, imapUrl, nsnull, aURL); } } return rv; } -nsresult nsImapService::FolderCommand(nsIEventQueue * clientEventQueue, +nsresult nsImapService::FolderCommand(nsIEventTarget * clientEventTarget, nsIMsgFolder * imapMailFolder, nsIUrlListener * urlListener, const char *command, nsImapAction imapAction, nsIURI ** url) { - NS_ASSERTION (imapMailFolder && clientEventQueue, + NS_ASSERTION (imapMailFolder && clientEventTarget, "Oops ... null pointer"); - if (!imapMailFolder || !clientEventQueue) + if (!imapMailFolder || !clientEventTarget) return NS_ERROR_NULL_POINTER; nsCOMPtr imapUrl; @@ -1401,7 +1376,7 @@ nsresult nsImapService::FolderCommand(nsIEventQueue * clientEventQueue, urlSpec.Append((const char *) folderName); rv = uri->SetSpec(urlSpec); if (NS_SUCCEEDED(rv)) - rv = GetImapConnectionAndLoadUrl(clientEventQueue, imapUrl, + rv = GetImapConnectionAndLoadUrl(clientEventTarget, imapUrl, nsnull, url); } } @@ -1410,40 +1385,40 @@ nsresult nsImapService::FolderCommand(nsIEventQueue * clientEventQueue, // Noop, used to update a folder (causes server to send changes). NS_IMETHODIMP -nsImapService::Noop(nsIEventQueue * aClientEventQueue, +nsImapService::Noop(nsIEventTarget * aClientEventTarget, nsIMsgFolder * aImapMailFolder, nsIUrlListener * aUrlListener, nsIURI ** aURL) { - return FolderCommand(aClientEventQueue, aImapMailFolder, aUrlListener, + return FolderCommand(aClientEventTarget, aImapMailFolder, aUrlListener, "/selectnoop>", nsIImapUrl::nsImapSelectNoopFolder, aURL); } // FolderStatus, used to update message counts NS_IMETHODIMP -nsImapService::UpdateFolderStatus(nsIEventQueue * aClientEventQueue, +nsImapService::UpdateFolderStatus(nsIEventTarget * aClientEventTarget, nsIMsgFolder * aImapMailFolder, nsIUrlListener * aUrlListener, nsIURI ** aURL) { - return FolderCommand(aClientEventQueue, aImapMailFolder, aUrlListener, + return FolderCommand(aClientEventTarget, aImapMailFolder, aUrlListener, "/folderstatus>", nsIImapUrl::nsImapFolderStatus, aURL); } // Expunge, used to "compress" an imap folder,removes deleted messages. NS_IMETHODIMP -nsImapService::Expunge(nsIEventQueue * aClientEventQueue, +nsImapService::Expunge(nsIEventTarget * aClientEventTarget, nsIMsgFolder * aImapMailFolder, nsIUrlListener * aUrlListener, nsIURI ** aURL) { - return FolderCommand(aClientEventQueue, aImapMailFolder, aUrlListener, + return FolderCommand(aClientEventTarget, aImapMailFolder, aUrlListener, "/Expunge>", nsIImapUrl::nsImapExpungeFolder, aURL); } /* old-stle biff that doesn't download headers */ NS_IMETHODIMP -nsImapService::Biff(nsIEventQueue * aClientEventQueue, +nsImapService::Biff(nsIEventTarget * aClientEventTarget, nsIMsgFolder * aImapMailFolder, nsIUrlListener * aUrlListener, nsIURI ** aURL, @@ -1451,9 +1426,9 @@ nsImapService::Biff(nsIEventQueue * aClientEventQueue, { // static const char *formatString = "biff>%c%s>%ld"; - NS_ASSERTION (aImapMailFolder && aClientEventQueue, + NS_ASSERTION (aImapMailFolder && aClientEventTarget, "Oops ... null pointer"); - if (!aImapMailFolder || !aClientEventQueue) + if (!aImapMailFolder || !aClientEventTarget) return NS_ERROR_NULL_POINTER; nsCOMPtr imapUrl; @@ -1483,7 +1458,7 @@ nsImapService::Biff(nsIEventQueue * aClientEventQueue, urlSpec.AppendInt(uidHighWater); rv = uri->SetSpec(urlSpec); if (NS_SUCCEEDED(rv)) - rv = GetImapConnectionAndLoadUrl(aClientEventQueue, imapUrl, + rv = GetImapConnectionAndLoadUrl(aClientEventTarget, imapUrl, nsnull, aURL); } } @@ -1491,7 +1466,7 @@ nsImapService::Biff(nsIEventQueue * aClientEventQueue, } NS_IMETHODIMP -nsImapService::DeleteFolder(nsIEventQueue* aClientEventQueue, +nsImapService::DeleteFolder(nsIEventTarget* aClientEventTarget, nsIMsgFolder* aImapMailFolder, nsIUrlListener* aUrlListener, nsIURI** aURL) @@ -1508,14 +1483,14 @@ nsImapService::DeleteFolder(nsIEventQueue* aClientEventQueue, imapServer->GetIsAOLServer(&removeFolderAndMsgs); } - return FolderCommand(aClientEventQueue, aImapMailFolder, aUrlListener, + return FolderCommand(aClientEventTarget, aImapMailFolder, aUrlListener, removeFolderAndMsgs ? "/deletefolder>": "/delete>", nsIImapUrl::nsImapDeleteFolder, aURL); } NS_IMETHODIMP -nsImapService::DeleteMessages(nsIEventQueue * aClientEventQueue, +nsImapService::DeleteMessages(nsIEventTarget * aClientEventTarget, nsIMsgFolder * aImapMailFolder, nsIUrlListener * aUrlListener, nsIURI ** aURL, @@ -1526,9 +1501,9 @@ nsImapService::DeleteMessages(nsIEventQueue * aClientEventQueue, // create a protocol instance to handle the request. // NOTE: once we start working with multiple connections, this step will be much more complicated...but for now // just create a connection and process the request. - NS_ASSERTION (aImapMailFolder && aClientEventQueue, + NS_ASSERTION (aImapMailFolder && aClientEventTarget, "Oops ... null pointer"); - if (!aImapMailFolder || !aClientEventQueue) + if (!aImapMailFolder || !aClientEventTarget) return NS_ERROR_NULL_POINTER; nsCOMPtr imapUrl; @@ -1560,7 +1535,7 @@ nsImapService::DeleteMessages(nsIEventQueue * aClientEventQueue, urlSpec.Append(messageIdentifierList); rv = uri->SetSpec(urlSpec); if (NS_SUCCEEDED(rv)) - rv = GetImapConnectionAndLoadUrl(aClientEventQueue, imapUrl, + rv = GetImapConnectionAndLoadUrl(aClientEventTarget, imapUrl, nsnull, aURL); } @@ -1570,17 +1545,17 @@ nsImapService::DeleteMessages(nsIEventQueue * aClientEventQueue, // Delete all messages in a folder, used to empty trash NS_IMETHODIMP -nsImapService::DeleteAllMessages(nsIEventQueue * aClientEventQueue, +nsImapService::DeleteAllMessages(nsIEventTarget * aClientEventTarget, nsIMsgFolder * aImapMailFolder, nsIUrlListener * aUrlListener, nsIURI ** aURL) { - return FolderCommand(aClientEventQueue, aImapMailFolder, aUrlListener, + return FolderCommand(aClientEventTarget, aImapMailFolder, aUrlListener, "/deleteallmsgs>", nsIImapUrl::nsImapSelectNoopFolder, aURL); } NS_IMETHODIMP -nsImapService::AddMessageFlags(nsIEventQueue * aClientEventQueue, +nsImapService::AddMessageFlags(nsIEventTarget * aClientEventTarget, nsIMsgFolder * aImapMailFolder, nsIUrlListener * aUrlListener, nsIURI ** aURL, @@ -1588,12 +1563,12 @@ nsImapService::AddMessageFlags(nsIEventQueue * aClientEventQueue, imapMessageFlagsType flags, PRBool messageIdsAreUID) { - return DiddleFlags(aClientEventQueue, aImapMailFolder, aUrlListener, aURL, messageIdentifierList, + return DiddleFlags(aClientEventTarget, aImapMailFolder, aUrlListener, aURL, messageIdentifierList, "addmsgflags", flags, messageIdsAreUID); } NS_IMETHODIMP -nsImapService::SubtractMessageFlags(nsIEventQueue * aClientEventQueue, +nsImapService::SubtractMessageFlags(nsIEventTarget * aClientEventTarget, nsIMsgFolder * aImapMailFolder, nsIUrlListener * aUrlListener, nsIURI ** aURL, @@ -1601,12 +1576,12 @@ nsImapService::SubtractMessageFlags(nsIEventQueue * aClientEventQueue, imapMessageFlagsType flags, PRBool messageIdsAreUID) { - return DiddleFlags(aClientEventQueue, aImapMailFolder, aUrlListener, aURL, messageIdentifierList, + return DiddleFlags(aClientEventTarget, aImapMailFolder, aUrlListener, aURL, messageIdentifierList, "subtractmsgflags", flags, messageIdsAreUID); } NS_IMETHODIMP -nsImapService::SetMessageFlags(nsIEventQueue * aClientEventQueue, +nsImapService::SetMessageFlags(nsIEventTarget * aClientEventTarget, nsIMsgFolder * aImapMailFolder, nsIUrlListener * aUrlListener, nsIURI ** aURL, @@ -1618,11 +1593,11 @@ nsImapService::SetMessageFlags(nsIEventQueue * aClientEventQueue, // NOTE: once we start working with multiple connections, this step will be much more complicated...but for now // just create a connection and process the request. - return DiddleFlags(aClientEventQueue, aImapMailFolder, aUrlListener, aURL, messageIdentifierList, + return DiddleFlags(aClientEventTarget, aImapMailFolder, aUrlListener, aURL, messageIdentifierList, "setmsgflags", flags, messageIdsAreUID); } -nsresult nsImapService::DiddleFlags(nsIEventQueue * aClientEventQueue, +nsresult nsImapService::DiddleFlags(nsIEventTarget * aClientEventTarget, nsIMsgFolder * aImapMailFolder, nsIUrlListener * aUrlListener, nsIURI ** aURL, @@ -1634,9 +1609,9 @@ nsresult nsImapService::DiddleFlags(nsIEventQueue * aClientEventQueue, // create a protocol instance to handle the request. // NOTE: once we start working with multiple connections, this step will be much more complicated...but for now // just create a connection and process the request. - NS_ASSERTION (aImapMailFolder && aClientEventQueue, + NS_ASSERTION (aImapMailFolder && aClientEventTarget, "Oops ... null pointer"); - if (!aImapMailFolder || !aClientEventQueue) + if (!aImapMailFolder || !aClientEventTarget) return NS_ERROR_NULL_POINTER; nsCOMPtr imapUrl; @@ -1671,7 +1646,7 @@ nsresult nsImapService::DiddleFlags(nsIEventQueue * aClientEventQueue, urlSpec.AppendInt(flags); rv = uri->SetSpec(urlSpec); if (NS_SUCCEEDED(rv)) - rv = GetImapConnectionAndLoadUrl(aClientEventQueue, imapUrl, + rv = GetImapConnectionAndLoadUrl(aClientEventTarget, imapUrl, nsnull, aURL); } } @@ -1720,15 +1695,15 @@ nsImapService::SetImapUrlSink(nsIMsgFolder* aMsgFolder, } NS_IMETHODIMP -nsImapService::DiscoverAllFolders(nsIEventQueue* aClientEventQueue, +nsImapService::DiscoverAllFolders(nsIEventTarget* aClientEventTarget, nsIMsgFolder* aImapMailFolder, nsIUrlListener* aUrlListener, nsIMsgWindow * aMsgWindow, nsIURI** aURL) { - NS_ASSERTION (aImapMailFolder && aClientEventQueue, - "Oops ... null aClientEventQueue or aImapMailFolder"); - if (!aImapMailFolder || ! aClientEventQueue) + NS_ASSERTION (aImapMailFolder && aClientEventTarget, + "Oops ... null aClientEventTarget or aImapMailFolder"); + if (!aImapMailFolder || ! aClientEventTarget) return NS_ERROR_NULL_POINTER; nsCOMPtr imapUrl; @@ -1752,7 +1727,7 @@ nsImapService::DiscoverAllFolders(nsIEventQueue* aClientEventQueue, nsCOMPtr url = do_QueryInterface(imapUrl, &rv); rv = uri->SetSpec(urlSpec); if (NS_SUCCEEDED(rv)) - rv = GetImapConnectionAndLoadUrl(aClientEventQueue, imapUrl, + rv = GetImapConnectionAndLoadUrl(aClientEventTarget, imapUrl, nsnull, aURL); } } @@ -1760,14 +1735,14 @@ nsImapService::DiscoverAllFolders(nsIEventQueue* aClientEventQueue, } NS_IMETHODIMP -nsImapService::DiscoverAllAndSubscribedFolders(nsIEventQueue* aClientEventQueue, +nsImapService::DiscoverAllAndSubscribedFolders(nsIEventTarget* aClientEventTarget, nsIMsgFolder* aImapMailFolder, nsIUrlListener* aUrlListener, nsIURI** aURL) { - NS_ASSERTION (aImapMailFolder && aClientEventQueue, - "Oops ... null aClientEventQueue or aImapMailFolder"); - if (!aImapMailFolder || ! aClientEventQueue) + NS_ASSERTION (aImapMailFolder && aClientEventTarget, + "Oops ... null aClientEventTarget or aImapMailFolder"); + if (!aImapMailFolder || ! aClientEventTarget) return NS_ERROR_NULL_POINTER; nsCOMPtr aImapUrl; @@ -1788,7 +1763,7 @@ nsImapService::DiscoverAllAndSubscribedFolders(nsIEventQueue* aClientEventQueue, urlSpec.Append("/discoverallandsubscribedboxes"); rv = uri->SetSpec(urlSpec); if (NS_SUCCEEDED(rv)) - rv = GetImapConnectionAndLoadUrl(aClientEventQueue, aImapUrl, + rv = GetImapConnectionAndLoadUrl(aClientEventTarget, aImapUrl, nsnull, aURL); } } @@ -1796,15 +1771,15 @@ nsImapService::DiscoverAllAndSubscribedFolders(nsIEventQueue* aClientEventQueue, } NS_IMETHODIMP -nsImapService::DiscoverChildren(nsIEventQueue* aClientEventQueue, +nsImapService::DiscoverChildren(nsIEventTarget* aClientEventTarget, nsIMsgFolder* aImapMailFolder, nsIUrlListener* aUrlListener, const char *folderPath, nsIURI** aURL) { - NS_ASSERTION (aImapMailFolder && aClientEventQueue, - "Oops ... null aClientEventQueue or aImapMailFolder"); - if (!aImapMailFolder || ! aClientEventQueue) + NS_ASSERTION (aImapMailFolder && aClientEventTarget, + "Oops ... null aClientEventTarget or aImapMailFolder"); + if (!aImapMailFolder || ! aClientEventTarget) return NS_ERROR_NULL_POINTER; nsCOMPtr aImapUrl; @@ -1842,7 +1817,7 @@ nsImapService::DiscoverChildren(nsIEventQueue* aClientEventQueue, if (NS_SUCCEEDED(rv)) - rv = GetImapConnectionAndLoadUrl(aClientEventQueue, + rv = GetImapConnectionAndLoadUrl(aClientEventTarget, aImapUrl, nsnull, aURL); } @@ -1857,7 +1832,7 @@ nsImapService::DiscoverChildren(nsIEventQueue* aClientEventQueue, NS_IMETHODIMP -nsImapService::OnlineMessageCopy(nsIEventQueue* aClientEventQueue, +nsImapService::OnlineMessageCopy(nsIEventTarget* aClientEventTarget, nsIMsgFolder* aSrcFolder, const char* messageIds, nsIMsgFolder* aDstFolder, @@ -1868,9 +1843,9 @@ nsImapService::OnlineMessageCopy(nsIEventQueue* aClientEventQueue, nsISupports* copyState, nsIMsgWindow *aMsgWindow) { - NS_ASSERTION(aSrcFolder && aDstFolder && messageIds && aClientEventQueue, + NS_ASSERTION(aSrcFolder && aDstFolder && messageIds && aClientEventTarget, "Fatal ... missing key parameters"); - if (!aClientEventQueue || !aSrcFolder || !aDstFolder || !messageIds || + if (!aClientEventTarget || !aSrcFolder || !aDstFolder || !messageIds || *messageIds == 0) return NS_ERROR_NULL_POINTER; @@ -1936,7 +1911,7 @@ nsImapService::OnlineMessageCopy(nsIEventQueue* aClientEventQueue, rv = uri->SetSpec(urlSpec); if (NS_SUCCEEDED(rv)) - rv = GetImapConnectionAndLoadUrl(aClientEventQueue, imapUrl, + rv = GetImapConnectionAndLoadUrl(aClientEventTarget, imapUrl, nsnull, aURL); } return rv; @@ -2056,7 +2031,7 @@ nsresult nsImapService::OfflineAppendFromFile(nsIFileSpec* aFileSpec, /* imap://HOST>appendmsgfromfile>DESTINATIONMAILBOXPATH */ /* imap://HOST>appenddraftfromfile>DESTINATIONMAILBOXPATH>UID>messageId */ NS_IMETHODIMP -nsImapService::AppendMessageFromFile(nsIEventQueue* aClientEventQueue, +nsImapService::AppendMessageFromFile(nsIEventTarget* aClientEventTarget, nsIFileSpec* aFileSpec, nsIMsgFolder* aDstFolder, const char* messageId, // te be replaced @@ -2068,7 +2043,7 @@ nsImapService::AppendMessageFromFile(nsIEventQueue* aClientEventQueue, nsIMsgWindow *aMsgWindow) { nsresult rv = NS_ERROR_NULL_POINTER; - if (!aClientEventQueue || !aFileSpec || !aDstFolder) + if (!aClientEventTarget || !aFileSpec || !aDstFolder) return rv; nsCOMPtr imapUrl; @@ -2122,14 +2097,14 @@ nsImapService::AppendMessageFromFile(nsIEventQueue* aClientEventQueue, // handle offline append to drafts or templates folder here. } if (NS_SUCCEEDED(rv)) - rv = GetImapConnectionAndLoadUrl(aClientEventQueue, imapUrl, + rv = GetImapConnectionAndLoadUrl(aClientEventTarget, imapUrl, nsnull, aURL); } return rv; } nsresult -nsImapService::GetImapConnectionAndLoadUrl(nsIEventQueue* aClientEventQueue, +nsImapService::GetImapConnectionAndLoadUrl(nsIEventTarget* aClientEventTarget, nsIImapUrl* aImapUrl, nsISupports* aConsumer, nsIURI** aURL) @@ -2160,20 +2135,20 @@ nsImapService::GetImapConnectionAndLoadUrl(nsIEventQueue* aClientEventQueue, { nsCOMPtr aImapServer(do_QueryInterface(aMsgIncomingServer, &rv)); if (NS_SUCCEEDED(rv) && aImapServer) - rv = aImapServer->GetImapConnectionAndLoadUrl(aClientEventQueue, + rv = aImapServer->GetImapConnectionAndLoadUrl(aClientEventTarget, aImapUrl, aConsumer); } return rv; } NS_IMETHODIMP -nsImapService::MoveFolder(nsIEventQueue* eventQueue, nsIMsgFolder* srcFolder, +nsImapService::MoveFolder(nsIEventTarget* eventTarget, nsIMsgFolder* srcFolder, nsIMsgFolder* dstFolder, nsIUrlListener* urlListener, nsIMsgWindow *msgWindow, nsIURI** url) { - NS_ASSERTION(eventQueue && srcFolder && dstFolder, + NS_ASSERTION(eventTarget && srcFolder && dstFolder, "Oops ... null pointer"); - if (!eventQueue || !srcFolder || !dstFolder) + if (!eventTarget || !srcFolder || !dstFolder) return NS_ERROR_NULL_POINTER; nsCOMPtr imapUrl; @@ -2210,7 +2185,7 @@ nsImapService::MoveFolder(nsIEventQueue* eventQueue, nsIMsgFolder* srcFolder, if (NS_SUCCEEDED(rv)) { GetFolderName(srcFolder, getter_Copies(folderName)); - rv = GetImapConnectionAndLoadUrl(eventQueue, imapUrl, + rv = GetImapConnectionAndLoadUrl(eventTarget, imapUrl, nsnull, url); } @@ -2220,13 +2195,13 @@ nsImapService::MoveFolder(nsIEventQueue* eventQueue, nsIMsgFolder* srcFolder, } NS_IMETHODIMP -nsImapService::RenameLeaf(nsIEventQueue* eventQueue, nsIMsgFolder* srcFolder, +nsImapService::RenameLeaf(nsIEventTarget* eventTarget, nsIMsgFolder* srcFolder, const PRUnichar* newLeafName, nsIUrlListener* urlListener, nsIMsgWindow *msgWindow, nsIURI** url) { - NS_ASSERTION(eventQueue && srcFolder && newLeafName && *newLeafName, + NS_ASSERTION(eventTarget && srcFolder && newLeafName && *newLeafName, "Oops ... [RenameLeaf] null pointers"); - if (!eventQueue || !srcFolder || !newLeafName || !*newLeafName) + if (!eventTarget || !srcFolder || !newLeafName || !*newLeafName) return NS_ERROR_NULL_POINTER; nsCOMPtr imapUrl; @@ -2277,7 +2252,7 @@ nsImapService::RenameLeaf(nsIEventQueue* eventQueue, nsIMsgFolder* srcFolder, rv = uri->SetSpec(urlSpec); if (NS_SUCCEEDED(rv)) { - rv = GetImapConnectionAndLoadUrl(eventQueue, imapUrl, + rv = GetImapConnectionAndLoadUrl(eventTarget, imapUrl, nsnull, url); } } // if (NS_SUCCEEDED(rv)) @@ -2286,13 +2261,13 @@ nsImapService::RenameLeaf(nsIEventQueue* eventQueue, nsIMsgFolder* srcFolder, } NS_IMETHODIMP -nsImapService::CreateFolder(nsIEventQueue* eventQueue, nsIMsgFolder* parent, +nsImapService::CreateFolder(nsIEventTarget* eventTarget, nsIMsgFolder* parent, const PRUnichar* newFolderName, nsIUrlListener* urlListener, nsIURI** url) { - NS_ASSERTION(eventQueue && parent && newFolderName && *newFolderName, + NS_ASSERTION(eventTarget && parent && newFolderName && *newFolderName, "Oops ... [CreateFolder] null pointers"); - if (!eventQueue || !parent || !newFolderName || !*newFolderName) + if (!eventTarget || !parent || !newFolderName || !*newFolderName) return NS_ERROR_NULL_POINTER; nsCOMPtr imapUrl; @@ -2330,7 +2305,7 @@ nsImapService::CreateFolder(nsIEventQueue* eventQueue, nsIMsgFolder* parent, rv = uri->SetSpec(urlSpec); if (NS_SUCCEEDED(rv)) - rv = GetImapConnectionAndLoadUrl(eventQueue, imapUrl, + rv = GetImapConnectionAndLoadUrl(eventTarget, imapUrl, nsnull, url); } // if (NS_SUCCEEDED(rv)) @@ -2339,13 +2314,13 @@ nsImapService::CreateFolder(nsIEventQueue* eventQueue, nsIMsgFolder* parent, } NS_IMETHODIMP -nsImapService::EnsureFolderExists(nsIEventQueue* eventQueue, nsIMsgFolder* parent, +nsImapService::EnsureFolderExists(nsIEventTarget* eventTarget, nsIMsgFolder* parent, const PRUnichar* newFolderName, nsIUrlListener* urlListener, nsIURI** url) { - NS_ASSERTION(eventQueue && parent && newFolderName && *newFolderName, + NS_ASSERTION(eventTarget && parent && newFolderName && *newFolderName, "Oops ... [EnsureExists] null pointers"); - if (!eventQueue || !parent || !newFolderName || !*newFolderName) + if (!eventTarget || !parent || !newFolderName || !*newFolderName) return NS_ERROR_NULL_POINTER; nsCOMPtr imapUrl; @@ -2378,7 +2353,7 @@ nsImapService::EnsureFolderExists(nsIEventQueue* eventQueue, nsIMsgFolder* paren rv = uri->SetSpec(urlSpec); if (NS_SUCCEEDED(rv)) - rv = GetImapConnectionAndLoadUrl(eventQueue, imapUrl, + rv = GetImapConnectionAndLoadUrl(eventTarget, imapUrl, nsnull, url); } // if (NS_SUCCEEDED(rv)) @@ -2388,12 +2363,12 @@ nsImapService::EnsureFolderExists(nsIEventQueue* eventQueue, nsIMsgFolder* paren NS_IMETHODIMP -nsImapService::ListFolder(nsIEventQueue* aClientEventQueue, +nsImapService::ListFolder(nsIEventTarget* aClientEventTarget, nsIMsgFolder* aImapMailFolder, nsIUrlListener* aUrlListener, nsIURI** aURL) { - return FolderCommand(aClientEventQueue, aImapMailFolder, aUrlListener, + return FolderCommand(aClientEventTarget, aImapMailFolder, aUrlListener, "/listfolder>", nsIImapUrl::nsImapListFolder, aURL); } @@ -2944,15 +2919,6 @@ nsImapService::GetListOfFoldersWithPath(nsIImapIncomingServer *aServer, nsIMsgWi if (NS_FAILED(rv)) return rv; if (!listener) return NS_ERROR_FAILURE; - nsCOMPtr queue; - // get the Event Queue for this thread... - nsCOMPtr pEventQService = - do_GetService(kEventQueueServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - - rv = pEventQService->GetThreadEventQueue(NS_CURRENT_THREAD, getter_AddRefs(queue)); - if (NS_FAILED(rv)) return rv; - // Locate the folder so that the correct hierarchical delimiter is used in the folder // pathnames, otherwise root's (ie, '^') is used and this is wrong. nsCOMPtr msgFolder; @@ -2983,7 +2949,8 @@ nsImapService::GetListOfFoldersWithPath(nsIImapIncomingServer *aServer, nsIMsgWi rv = rootMsgFolder->FindSubFolder(changedStr, getter_AddRefs(msgFolder)); } - rv = DiscoverChildren(queue, msgFolder, listener, folderPath, nsnull); + nsCOMPtr thread = do_GetCurrentThread(); + rv = DiscoverChildren(thread, msgFolder, listener, folderPath, nsnull); if (NS_FAILED(rv)) return rv; return NS_OK; @@ -3007,38 +2974,30 @@ nsImapService::GetListOfFoldersOnServer(nsIImapIncomingServer *aServer, nsIMsgWi if (NS_FAILED(rv)) return rv; if (!listener) return NS_ERROR_FAILURE; - nsCOMPtr queue; - // get the Event Queue for this thread... - nsCOMPtr pEventQService = - do_GetService(kEventQueueServiceCID, &rv); - if (NS_FAILED(rv)) return rv; - - rv = pEventQService->GetThreadEventQueue(NS_CURRENT_THREAD, getter_AddRefs(queue)); - if (NS_FAILED(rv)) return rv; - - rv = DiscoverAllAndSubscribedFolders(queue, rootMsgFolder, listener, nsnull); + nsCOMPtr thread = do_GetCurrentThread(); + rv = DiscoverAllAndSubscribedFolders(thread, rootMsgFolder, listener, nsnull); if (NS_FAILED(rv)) return rv; return NS_OK; } NS_IMETHODIMP -nsImapService::SubscribeFolder(nsIEventQueue* eventQueue, +nsImapService::SubscribeFolder(nsIEventTarget* eventTarget, nsIMsgFolder* aFolder, const PRUnichar* aFolderName, nsIUrlListener* urlListener, nsIURI** url) { - return ChangeFolderSubscription(eventQueue, aFolder, aFolderName, + return ChangeFolderSubscription(eventTarget, aFolder, aFolderName, "/subscribe>", urlListener, url); } -nsresult nsImapService::ChangeFolderSubscription(nsIEventQueue* eventQueue, +nsresult nsImapService::ChangeFolderSubscription(nsIEventTarget* eventTarget, nsIMsgFolder* folder, const PRUnichar* folderName, const char *command, nsIUrlListener* urlListener, nsIURI** url) { - NS_ENSURE_ARG_POINTER(eventQueue); + NS_ENSURE_ARG_POINTER(eventTarget); NS_ENSURE_ARG_POINTER(folder); NS_ENSURE_ARG_POINTER(folderName); @@ -3064,7 +3023,7 @@ nsresult nsImapService::ChangeFolderSubscription(nsIEventQueue* eventQueue, nsCRT::free(escapedFolderName); rv = uri->SetSpec(urlSpec); if (NS_SUCCEEDED(rv)) - rv = GetImapConnectionAndLoadUrl(eventQueue, imapUrl, + rv = GetImapConnectionAndLoadUrl(eventTarget, imapUrl, nsnull, url); } } @@ -3072,35 +3031,35 @@ nsresult nsImapService::ChangeFolderSubscription(nsIEventQueue* eventQueue, } NS_IMETHODIMP -nsImapService::UnsubscribeFolder(nsIEventQueue* aEventQueue, +nsImapService::UnsubscribeFolder(nsIEventTarget* aEventTarget, nsIMsgFolder* aFolder, const PRUnichar* aFolderName, nsIUrlListener* aUrlListener, nsIURI** aUrl) { - return ChangeFolderSubscription(aEventQueue, aFolder, aFolderName, + return ChangeFolderSubscription(aEventTarget, aFolder, aFolderName, "/unsubscribe>", aUrlListener, aUrl); } NS_IMETHODIMP -nsImapService::GetFolderAdminUrl(nsIEventQueue *aClientEventQueue, +nsImapService::GetFolderAdminUrl(nsIEventTarget *aClientEventTarget, nsIMsgFolder *aImapMailFolder, nsIMsgWindow *aMsgWindow, nsIUrlListener *aUrlListener, nsIURI** aURL) { - return FolderCommand(aClientEventQueue, aImapMailFolder, aUrlListener, + return FolderCommand(aClientEventTarget, aImapMailFolder, aUrlListener, "/refreshfolderurls>", nsIImapUrl::nsImapRefreshFolderUrls, aURL); } NS_IMETHODIMP -nsImapService::IssueCommandOnMsgs(nsIEventQueue *aClientEventQueue, +nsImapService::IssueCommandOnMsgs(nsIEventTarget *aClientEventTarget, nsIMsgFolder *anImapFolder, nsIMsgWindow *aMsgWindow, const char *aCommand, const char *uids, nsIURI** aURL) { - NS_ENSURE_ARG_POINTER(aClientEventQueue); + NS_ENSURE_ARG_POINTER(aClientEventTarget); NS_ENSURE_ARG_POINTER(anImapFolder); NS_ENSURE_ARG_POINTER(aMsgWindow); nsCOMPtr imapUrl; @@ -3135,7 +3094,7 @@ nsImapService::IssueCommandOnMsgs(nsIEventQueue *aClientEventQueue, urlSpec.Append(uids); rv = mailNewsUrl->SetSpec(urlSpec); if (NS_SUCCEEDED(rv)) - rv = GetImapConnectionAndLoadUrl(aClientEventQueue, + rv = GetImapConnectionAndLoadUrl(aClientEventTarget, imapUrl, nsnull, aURL); @@ -3146,14 +3105,14 @@ nsImapService::IssueCommandOnMsgs(nsIEventQueue *aClientEventQueue, } NS_IMETHODIMP -nsImapService::FetchCustomMsgAttribute(nsIEventQueue *aClientEventQueue, +nsImapService::FetchCustomMsgAttribute(nsIEventTarget *aClientEventTarget, nsIMsgFolder *anImapFolder, nsIMsgWindow *aMsgWindow, const char *aAttribute, const char *uids, nsIURI** aURL) { - NS_ENSURE_ARG_POINTER(aClientEventQueue); + NS_ENSURE_ARG_POINTER(aClientEventTarget); NS_ENSURE_ARG_POINTER(anImapFolder); NS_ENSURE_ARG_POINTER(aMsgWindow); nsCOMPtr imapUrl; @@ -3186,7 +3145,7 @@ nsImapService::FetchCustomMsgAttribute(nsIEventQueue *aClientEventQueue, urlSpec.Append(aAttribute); rv = mailNewsUrl->SetSpec(urlSpec); if (NS_SUCCEEDED(rv)) - rv = GetImapConnectionAndLoadUrl(aClientEventQueue, + rv = GetImapConnectionAndLoadUrl(aClientEventTarget, imapUrl, nsnull, aURL); @@ -3197,7 +3156,7 @@ nsImapService::FetchCustomMsgAttribute(nsIEventQueue *aClientEventQueue, } NS_IMETHODIMP -nsImapService::StoreCustomKeywords(nsIEventQueue *aClientEventQueue, +nsImapService::StoreCustomKeywords(nsIEventTarget *aClientEventTarget, nsIMsgFolder *anImapFolder, nsIMsgWindow *aMsgWindow, const char *flagsToAdd, @@ -3205,7 +3164,7 @@ nsImapService::StoreCustomKeywords(nsIEventQueue *aClientEventQueue, const char *uids, nsIURI** aURL) { - NS_ENSURE_ARG_POINTER(aClientEventQueue); + NS_ENSURE_ARG_POINTER(aClientEventTarget); NS_ENSURE_ARG_POINTER(anImapFolder); nsCOMPtr imapUrl; nsCAutoString urlSpec; @@ -3239,7 +3198,7 @@ nsImapService::StoreCustomKeywords(nsIEventQueue *aClientEventQueue, urlSpec.Append(flagsToSubtract); rv = mailNewsUrl->SetSpec(urlSpec); if (NS_SUCCEEDED(rv)) - rv = GetImapConnectionAndLoadUrl(aClientEventQueue, + rv = GetImapConnectionAndLoadUrl(aClientEventTarget, imapUrl, nsnull, aURL); diff --git a/mozilla/mailnews/imap/src/nsImapService.h b/mozilla/mailnews/imap/src/nsImapService.h index c15c62dd700..5a93d8e9c29 100644 --- a/mozilla/mailnews/imap/src/nsImapService.h +++ b/mozilla/mailnews/imap/src/nsImapService.h @@ -98,7 +98,7 @@ protected: nsIUrlListener * aUrlListener, nsCString & urlSpec, PRUnichar &hierarchyDelimiter); - nsresult GetImapConnectionAndLoadUrl(nsIEventQueue* aClientEventQueue, + nsresult GetImapConnectionAndLoadUrl(nsIEventTarget* aClientEventTarget, nsIImapUrl* aImapUrl, nsISupports* aConsumer, nsIURI** aURL); @@ -114,20 +114,20 @@ protected: const char *messageIdentifierList, const char *mimePart); - nsresult FolderCommand(nsIEventQueue * clientEventQueue, + nsresult FolderCommand(nsIEventTarget * clientEventTarget, nsIMsgFolder * imapMailFolder, nsIUrlListener * urlListener, const char *command, nsImapAction imapAction, nsIURI ** url); - nsresult ChangeFolderSubscription(nsIEventQueue* eventQueue, + nsresult ChangeFolderSubscription(nsIEventTarget* eventTarget, nsIMsgFolder* folder, const PRUnichar* folderName, const char *command, nsIUrlListener* urlListener, nsIURI** url); - nsresult DiddleFlags(nsIEventQueue * aClientEventQueue, + nsresult DiddleFlags(nsIEventTarget * aClientEventTarget, nsIMsgFolder * aImapMailFolder, nsIUrlListener * aUrlListener, nsIURI ** aURL, diff --git a/mozilla/mailnews/imap/src/nsImapUndoTxn.cpp b/mozilla/mailnews/imap/src/nsImapUndoTxn.cpp index 42ea58a9b58..fa06b483a6e 100644 --- a/mozilla/mailnews/imap/src/nsImapUndoTxn.cpp +++ b/mozilla/mailnews/imap/src/nsImapUndoTxn.cpp @@ -54,11 +54,11 @@ nsImapMoveCopyMsgTxn::nsImapMoveCopyMsgTxn( nsIMsgFolder* srcFolder, nsMsgKeyArray* srcKeyArray, const char* srcMsgIdString, nsIMsgFolder* dstFolder, PRBool idsAreUids, PRBool isMove, - nsIEventQueue* eventQueue, nsIUrlListener* urlListener) : + nsIEventTarget* eventTarget, nsIUrlListener* urlListener) : m_idsAreUids(PR_FALSE), m_isMove(PR_FALSE), m_srcIsPop3(PR_FALSE) { Init(srcFolder, srcKeyArray, srcMsgIdString, dstFolder, idsAreUids, - isMove, eventQueue, urlListener); + isMove, eventTarget, urlListener); } nsresult @@ -66,7 +66,7 @@ nsImapMoveCopyMsgTxn::Init( nsIMsgFolder* srcFolder, nsMsgKeyArray* srcKeyArray, const char* srcMsgIdString, nsIMsgFolder* dstFolder, PRBool idsAreUids, PRBool isMove, - nsIEventQueue* eventQueue, nsIUrlListener* urlListener) + nsIEventTarget* eventTarget, nsIUrlListener* urlListener) { nsresult rv; NS_NewISupportsArray(getter_AddRefs(m_srcHdrs)); @@ -75,7 +75,7 @@ nsImapMoveCopyMsgTxn::Init( m_isMove = isMove; m_srcFolder = do_GetWeakReference(srcFolder); m_dstFolder = do_GetWeakReference(dstFolder); - m_eventQueue = do_QueryInterface(eventQueue, &rv); + m_eventTarget = eventTarget; if (urlListener) m_urlListener = do_QueryInterface(urlListener, &rv); m_srcKeyArray.CopyArray(srcKeyArray); @@ -179,7 +179,7 @@ nsImapMoveCopyMsgTxn::UndoTransaction(void) return rv; // ** make sure we are in the selected state; use lite select // folder so we won't hit performance hard - rv = imapService->LiteSelectFolder(m_eventQueue, srcFolder, + rv = imapService->LiteSelectFolder(m_eventTarget, srcFolder, srcListener, nsnull); if (NS_FAILED(rv)) return rv; @@ -198,11 +198,11 @@ nsImapMoveCopyMsgTxn::UndoTransaction(void) if (deletedMsgs) rv = imapService->SubtractMessageFlags( - m_eventQueue, srcFolder, srcListener, nsnull, + m_eventTarget, srcFolder, srcListener, nsnull, m_srcMsgIdString.get(), kImapMsgDeletedFlag, m_idsAreUids); else - rv = imapService->AddMessageFlags(m_eventQueue, srcFolder, + rv = imapService->AddMessageFlags(m_eventTarget, srcFolder, srcListener, nsnull, m_srcMsgIdString.get(), kImapMsgDeletedFlag, @@ -211,7 +211,7 @@ nsImapMoveCopyMsgTxn::UndoTransaction(void) return rv; if (deleteModel != nsMsgImapDeleteModels::IMAPDelete) - rv = imapService->GetHeaders(m_eventQueue, srcFolder, + rv = imapService->GetHeaders(m_eventTarget, srcFolder, srcListener, nsnull, m_srcMsgIdString.get(), PR_TRUE); @@ -228,10 +228,10 @@ nsImapMoveCopyMsgTxn::UndoTransaction(void) if (NS_FAILED(rv)) return rv; // ** make sure we are in the selected state; use lite select folder // so we won't potentially download a bunch of headers. - rv = imapService->LiteSelectFolder(m_eventQueue, dstFolder, + rv = imapService->LiteSelectFolder(m_eventTarget, dstFolder, dstListener, nsnull); if (NS_FAILED(rv)) return rv; - rv = imapService->AddMessageFlags(m_eventQueue, dstFolder, + rv = imapService->AddMessageFlags(m_eventTarget, dstFolder, dstListener, nsnull, m_dstMsgIdString.get(), kImapMsgDeletedFlag, @@ -279,17 +279,17 @@ nsImapMoveCopyMsgTxn::RedoTransaction(void) // ** make sire we are in the selected state; use lite select // folder so we won't hit preformace hard - rv = imapService->LiteSelectFolder(m_eventQueue, srcFolder, + rv = imapService->LiteSelectFolder(m_eventTarget, srcFolder, srcListener, nsnull); if (NS_FAILED(rv)) return rv; if (deletedMsgs) - rv = imapService->SubtractMessageFlags(m_eventQueue, srcFolder, + rv = imapService->SubtractMessageFlags(m_eventTarget, srcFolder, srcListener, nsnull, m_srcMsgIdString.get(), kImapMsgDeletedFlag, m_idsAreUids); else - rv = imapService->AddMessageFlags(m_eventQueue, srcFolder, + rv = imapService->AddMessageFlags(m_eventTarget, srcFolder, srcListener, nsnull, m_srcMsgIdString.get(), kImapMsgDeletedFlag, m_idsAreUids); } @@ -306,11 +306,11 @@ nsImapMoveCopyMsgTxn::RedoTransaction(void) return rv; // ** make sure we are in the selected state; use lite select // folder so we won't hit preformace hard - rv = imapService->LiteSelectFolder(m_eventQueue, dstFolder, + rv = imapService->LiteSelectFolder(m_eventTarget, dstFolder, dstListener, nsnull); if (NS_FAILED(rv)) return rv; - rv = imapService->SubtractMessageFlags(m_eventQueue, dstFolder, + rv = imapService->SubtractMessageFlags(m_eventTarget, dstFolder, dstListener, nsnull, m_dstMsgIdString.get(), kImapMsgDeletedFlag, @@ -320,7 +320,7 @@ nsImapMoveCopyMsgTxn::RedoTransaction(void) nsMsgImapDeleteModel deleteModel; rv = GetImapDeleteModel(dstFolder, &deleteModel); if (NS_FAILED(rv) || deleteModel == nsMsgImapDeleteModels::MoveToTrash) - rv = imapService->GetHeaders(m_eventQueue, dstFolder, + rv = imapService->GetHeaders(m_eventTarget, dstFolder, dstListener, nsnull, m_dstMsgIdString.get(), PR_TRUE); @@ -451,10 +451,10 @@ nsresult nsImapMoveCopyMsgTxn::GetImapDeleteModel(nsIMsgFolder *aFolder, nsMsgIm nsImapOfflineTxn::nsImapOfflineTxn(nsIMsgFolder* srcFolder, nsMsgKeyArray* srcKeyArray, nsIMsgFolder* dstFolder, PRBool isMove, nsOfflineImapOperationType opType, nsIMsgDBHdr *srcHdr, - nsIEventQueue* eventQueue, nsIUrlListener* urlListener) + nsIEventTarget* eventTarget, nsIUrlListener* urlListener) { Init(srcFolder, srcKeyArray, nsnull, dstFolder, PR_TRUE, - isMove, eventQueue, urlListener); + isMove, eventTarget, urlListener); m_opType = opType; m_flags = 0; diff --git a/mozilla/mailnews/imap/src/nsImapUndoTxn.h b/mozilla/mailnews/imap/src/nsImapUndoTxn.h index f55b2435318..a80d73b3cfd 100644 --- a/mozilla/mailnews/imap/src/nsImapUndoTxn.h +++ b/mozilla/mailnews/imap/src/nsImapUndoTxn.h @@ -43,7 +43,7 @@ #include "nsIImapService.h" #include "nsIImapIncomingServer.h" #include "nsIUrlListener.h" -#include "nsIEventQueue.h" +#include "nsIEventTarget.h" #include "nsMsgTxn.h" #include "nsMsgKeyArray.h" #include "nsIMsgOfflineImapOperation.h" @@ -64,7 +64,7 @@ public: nsImapMoveCopyMsgTxn(nsIMsgFolder* srcFolder, nsMsgKeyArray* srcKeyArray, const char* srcMsgIdString, nsIMsgFolder* dstFolder, PRBool idsAreUids, PRBool isMove, - nsIEventQueue *eventQueue, + nsIEventTarget *eventTarget, nsIUrlListener *urlListener); virtual ~nsImapMoveCopyMsgTxn(); @@ -82,7 +82,7 @@ public: nsresult Init(nsIMsgFolder* srcFolder, nsMsgKeyArray* srcKeyArray, const char* srcMsgIdString, nsIMsgFolder* dstFolder, PRBool idsAreUids, PRBool isMove, - nsIEventQueue *eventQueue, + nsIEventTarget *eventTarget, nsIUrlListener *urlListener); protected: @@ -94,7 +94,7 @@ protected: nsCString m_srcMsgIdString; nsWeakPtr m_dstFolder; nsCString m_dstMsgIdString; - nsCOMPtr m_eventQueue; + nsCOMPtr m_eventTarget; nsCOMPtr m_urlListener; PRBool m_idsAreUids; PRBool m_isMove; @@ -114,7 +114,7 @@ public: PRBool isMove, nsOfflineImapOperationType opType, nsIMsgDBHdr *srcHdr, - nsIEventQueue *eventQueue, + nsIEventTarget *eventTarget, nsIUrlListener *urlListener); virtual ~nsImapOfflineTxn(); diff --git a/mozilla/mailnews/imap/src/nsImapUrl.cpp b/mozilla/mailnews/imap/src/nsImapUrl.cpp index 7243040204b..7fe006ae3f7 100644 --- a/mozilla/mailnews/imap/src/nsImapUrl.cpp +++ b/mozilla/mailnews/imap/src/nsImapUrl.cpp @@ -39,8 +39,6 @@ #include "msgCore.h" // precompiled header... #include "nsMsgImapCID.h" -#include "nsIEventQueueService.h" - #include "nsIURL.h" #include "nsImapUrl.h" #include "nsIMsgMailSession.h" diff --git a/mozilla/mailnews/import/comm4x/src/nsComm4xMailImport.cpp b/mozilla/mailnews/import/comm4x/src/nsComm4xMailImport.cpp index 17507e0aa49..95759127efa 100644 --- a/mozilla/mailnews/import/comm4x/src/nsComm4xMailImport.cpp +++ b/mozilla/mailnews/import/comm4x/src/nsComm4xMailImport.cpp @@ -74,8 +74,6 @@ #include "nsIProxyObjectManager.h" #include "nsProxiedService.h" -static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); - #define COMM4XMAIL_MSGS_URL "chrome://messenger/locale/comm4xMailImportMsgs.properties" PRLogModuleInfo *COMM4XLOGMODULE = nsnull; @@ -172,7 +170,7 @@ NS_IMETHODIMP nsComm4xMailImport::GetImportInterface(const char *pImportType, ns NS_ENSURE_SUCCESS(rv,rv); nameString->SetData(name); pGeneric->SetData("name", nameString); - rv = pGeneric->QueryInterface(kISupportsIID, (void **)ppInterface); + rv = CallQueryInterface(pGeneric, ppInterface); } } } @@ -196,13 +194,14 @@ nsresult ImportComm4xMailImpl::Initialize() nsCOMPtr pBundle; pBundleService = do_GetService(NS_STRINGBUNDLE_CONTRACTID, &rv); - if (NS_SUCCEEDED(rv) && (pBundleService)) + if (NS_SUCCEEDED(rv) && (pBundleService)) { pBundleService->CreateBundle(COMM4XMAIL_MSGS_URL, getter_AddRefs(pBundle)); - nsCOMPtr proxyMgr(do_GetService(NS_XPCOMPROXY_CONTRACTID, &rv)); - if (NS_SUCCEEDED(rv)) { - rv = proxyMgr->GetProxyForObject( NS_UI_THREAD_EVENTQ, NS_GET_IID(nsIStringBundle), - pBundle, PROXY_SYNC | PROXY_ALWAYS, getter_AddRefs(m_pBundleProxy)); + rv = NS_GetProxyForObject( NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID(nsIStringBundle), + pBundle, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, + getter_AddRefs(m_pBundleProxy)); } return rv; } diff --git a/mozilla/mailnews/import/src/nsImportAddressBooks.cpp b/mozilla/mailnews/import/src/nsImportAddressBooks.cpp index 56f045330ed..4fae34ac0f3 100644 --- a/mozilla/mailnews/import/src/nsImportAddressBooks.cpp +++ b/mozilla/mailnews/import/src/nsImportAddressBooks.cpp @@ -747,7 +747,9 @@ nsIAddrDatabase *GetAddressBookFromUri( const char *pUri) nsIAddrDatabase * pDatabase = nsnull; if (pUri) { nsresult rv = NS_OK; - NS_WITH_PROXIED_SERVICE(nsIAddressBook, addressBook, NS_ADDRESSBOOK_CONTRACTID, NS_UI_THREAD_EVENTQ, &rv); + NS_WITH_PROXIED_SERVICE(nsIAddressBook, addressBook, + NS_ADDRESSBOOK_CONTRACTID, + NS_PROXY_TO_MAIN_THREAD, &rv); if (addressBook) rv = addressBook->GetAbDatabaseFromURI(pUri, &pDatabase); } @@ -767,19 +769,14 @@ nsIAddrDatabase *GetAddressBook( const PRUnichar *name, PRBool makeNew) IMPORT_LOG0( "In GetAddressBook\n"); - nsCOMPtr proxyMgr = - do_GetService(kProxyObjectManagerCID, &rv); - if (NS_FAILED( rv)) { - IMPORT_LOG0( "*** Error: Unable to get proxy manager\n"); - return( nsnull); - } - nsIAddrDatabase * pDatabase = nsnull; /* Get the profile directory */ nsCOMPtr dbPath; - NS_WITH_PROXIED_SERVICE(nsIAddrBookSession, abSession, NS_ADDRBOOKSESSION_CONTRACTID, NS_UI_THREAD_EVENTQ, &rv); + NS_WITH_PROXIED_SERVICE(nsIAddrBookSession, abSession, + NS_ADDRBOOKSESSION_CONTRACTID, + NS_PROXY_TO_MAIN_THREAD, &rv); if (NS_SUCCEEDED(rv)) rv = abSession->GetUserProfileDirectory(getter_AddRefs(dbPath)); @@ -793,7 +790,9 @@ nsIAddrDatabase *GetAddressBook( const PRUnichar *name, PRBool makeNew) if (NS_SUCCEEDED(rv)) { IMPORT_LOG0( "Getting the address database factory\n"); - NS_WITH_PROXIED_SERVICE(nsIAddrDatabase, addrDBFactory, NS_ADDRDATABASE_CONTRACTID, NS_UI_THREAD_EVENTQ, &rv); + NS_WITH_PROXIED_SERVICE(nsIAddrDatabase, addrDBFactory, + NS_ADDRDATABASE_CONTRACTID, + NS_PROXY_TO_MAIN_THREAD, &rv); if (NS_SUCCEEDED(rv) && addrDBFactory) { IMPORT_LOG0( "Opening the new address book\n"); rv = addrDBFactory->Open( dbPath, PR_TRUE, PR_TRUE, &pDatabase); @@ -811,7 +810,8 @@ nsIAddrDatabase *GetAddressBook( const PRUnichar *name, PRBool makeNew) // This is major bogosity again! Why doesn't the address book // just handle this properly for me? Uggggg... - NS_WITH_PROXIED_SERVICE(nsIRDFService, rdfService, kRDFServiceCID, NS_UI_THREAD_EVENTQ, &rv); + NS_WITH_PROXIED_SERVICE(nsIRDFService, rdfService, kRDFServiceCID, + NS_PROXY_TO_MAIN_THREAD, &rv); if (NS_SUCCEEDED(rv)) { nsCOMPtr parentResource; rv = rdfService->GetResource(NS_LITERAL_CSTRING(kAllDirectoryRoot), @@ -828,8 +828,11 @@ nsIAddrDatabase *GetAddressBook( const PRUnichar *name, PRBool makeNew) * a thread other than the UI thread. * */ - rv = proxyMgr->GetProxyForObject( NS_UI_THREAD_EVENTQ, NS_GET_IID( nsIAbDirectory), - parentResource, PROXY_SYNC | PROXY_ALWAYS, getter_AddRefs( parentDir)); + rv = NS_GetProxyForObject( NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID( nsIAbDirectory), + parentResource, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, + getter_AddRefs( parentDir)); if (parentDir) { nsCAutoString URI("moz-abmdbdirectory://"); @@ -907,10 +910,10 @@ PR_STATIC_CALLBACK( void) ImportAddressThread( void *stuff) } nsCOMPtr proxyAddrDatabase; - rv = NS_GetProxyForObject(NS_UI_THREAD_EVENTQ, + rv = NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIAddrDatabase), pDestDB, - PROXY_SYNC | PROXY_ALWAYS, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, getter_AddRefs(proxyAddrDatabase)); if (NS_FAILED(rv)) return; diff --git a/mozilla/mailnews/import/src/nsImportMail.cpp b/mozilla/mailnews/import/src/nsImportMail.cpp index 463d88e0f2b..7ab3dfb2f64 100644 --- a/mozilla/mailnews/import/src/nsImportMail.cpp +++ b/mozilla/mailnews/import/src/nsImportMail.cpp @@ -769,24 +769,17 @@ ImportMailThread( void *stuff) nsCOMPtr bundle( dont_AddRef( nsImportStringBundle::GetStringBundleProxy())); // Initialize the curFolder proxy object - nsCOMPtr proxyMgr = - do_GetService(kProxyObjectManagerCID, &rv); - if (NS_SUCCEEDED(rv)) { - rv = proxyMgr->GetProxyForObject( NS_UI_THREAD_EVENTQ, NS_GET_IID(nsIMsgFolder), - curFolder, PROXY_SYNC | PROXY_ALWAYS, getter_AddRefs( curProxy)); - - if (NS_SUCCEEDED(rv)) - // GetSubfolders() will initialize folders if they are not already initialized. - curProxy->GetSubFolders(getter_AddRefs(enumerator)); - else - IMPORT_LOG1( "*** ImportMailThread: Can't get the destination root folder proxy. rv=(0x%lx)", (long) rv); + rv = NS_GetProxyForObject( NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID(nsIMsgFolder), + curFolder, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, + getter_AddRefs( curProxy)); + if (NS_SUCCEEDED(rv)) { + // GetSubfolders() will initialize folders if they are not already initialized. + curProxy->GetSubFolders(getter_AddRefs(enumerator)); + } else { + IMPORT_LOG1( "*** ImportMailThread: Can't get the destination root folder proxy. rv=(0x%lx)", (long) rv); } - else { - IMPORT_LOG0("*** ImportMailThread: Unable to obtain proxy service to do the import."); - nsImportStringBundle::GetStringByID( IMPORT_ERROR_MB_NOPROXY, error, bundle); - pData->abort = PR_TRUE; - } - IMPORT_LOG1("ImportMailThread: Total number of folders to import = %d.", count); @@ -817,8 +810,11 @@ ImportMailThread( void *stuff) break; } - rv = proxyMgr->GetProxyForObject( NS_UI_THREAD_EVENTQ, NS_GET_IID(nsIMsgFolder), - subFolder, PROXY_SYNC | PROXY_ALWAYS, getter_AddRefs( curProxy)); + rv = NS_GetProxyForObject( NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID(nsIMsgFolder), + subFolder, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, + getter_AddRefs( curProxy)); if (NS_FAILED( rv)) { IMPORT_LOG1("*** ImportMailThread: Failed to get the proxy interface for child folder '%s'.", NS_ConvertUTF16toUTF8(lastName).get()); nsImportStringBundle::GetStringByID( IMPORT_ERROR_MB_NOPROXY, error, bundle); @@ -841,8 +837,11 @@ ImportMailThread( void *stuff) break; } - rv = proxyMgr->GetProxyForObject( NS_UI_THREAD_EVENTQ, NS_GET_IID(nsIMsgFolder), - parFolder, PROXY_SYNC | PROXY_ALWAYS, getter_AddRefs( curProxy)); + rv = NS_GetProxyForObject( NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID(nsIMsgFolder), + parFolder, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, + getter_AddRefs( curProxy)); depth--; } if (NS_FAILED( rv)) { diff --git a/mozilla/mailnews/import/src/nsImportStringBundle.cpp b/mozilla/mailnews/import/src/nsImportStringBundle.cpp index 0ddc283d382..c9af0e406b9 100644 --- a/mozilla/mailnews/import/src/nsImportStringBundle.cpp +++ b/mozilla/mailnews/import/src/nsImportStringBundle.cpp @@ -76,15 +76,12 @@ nsIStringBundle *nsImportStringBundle::GetStringBundleProxy( void) return( nsnull); nsIStringBundle *strProxy = nsnull; - nsresult rv; // create a proxy object if we aren't on the same thread? - nsCOMPtr proxyMgr = - do_GetService(kProxyObjectManagerCID, &rv); - if (NS_SUCCEEDED(rv)) { - rv = proxyMgr->GetProxyForObject( NS_UI_THREAD_EVENTQ, NS_GET_IID(nsIStringBundle), - m_pBundle, PROXY_SYNC | PROXY_ALWAYS, (void **) &strProxy); - } - + NS_GetProxyForObject( NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID(nsIStringBundle), + m_pBundle, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, + (void **) &strProxy); return( strProxy); } diff --git a/mozilla/mailnews/import/text/src/nsTextStringBundle.cpp b/mozilla/mailnews/import/text/src/nsTextStringBundle.cpp index 2bdeec051ce..b27c2c2eb0a 100644 --- a/mozilla/mailnews/import/text/src/nsTextStringBundle.cpp +++ b/mozilla/mailnews/import/text/src/nsTextStringBundle.cpp @@ -79,14 +79,12 @@ nsIStringBundle *nsTextStringBundle::GetStringBundleProxy( void) return( nsnull); nsIStringBundle *strProxy = nsnull; - nsresult rv; // create a proxy object if we aren't on the same thread? - nsCOMPtr proxyMgr = - do_GetService(kProxyObjectManagerCID, &rv); - if (NS_SUCCEEDED(rv)) { - rv = proxyMgr->GetProxyForObject( NS_UI_THREAD_EVENTQ, NS_GET_IID(nsIStringBundle), - m_pBundle, PROXY_SYNC | PROXY_ALWAYS, (void **) &strProxy); - } + NS_GetProxyForObject( NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID(nsIStringBundle), + m_pBundle, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, + (void **) &strProxy); return( strProxy); } diff --git a/mozilla/mailnews/local/src/nsLocalUndoTxn.cpp b/mozilla/mailnews/local/src/nsLocalUndoTxn.cpp index 0928e8d423e..610b0402ca1 100644 --- a/mozilla/mailnews/local/src/nsLocalUndoTxn.cpp +++ b/mozilla/mailnews/local/src/nsLocalUndoTxn.cpp @@ -44,10 +44,8 @@ #include "nsIImapService.h" #include "nsIUrlListener.h" #include "nsIMsgLocalMailFolder.h" -#include "nsIEventQueueService.h" #include "nsIMsgMailSession.h" - -static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); +#include "nsThreadUtils.h" nsLocalMoveCopyMsgTxn::nsLocalMoveCopyMsgTxn() : m_isMove(PR_FALSE), m_srcIsImap4(PR_FALSE) @@ -190,36 +188,29 @@ nsLocalMoveCopyMsgTxn::UndoImapDeleteFlag(nsIMsgFolder* folder, msgIds.Append(','); msgIds.AppendInt((PRInt32) keyArray.GetAt(i)); } - nsCOMPtr eventQueue; - nsCOMPtr pEventQService = - do_GetService(kEventQueueServiceCID, &rv); - if (NS_SUCCEEDED(rv) && pEventQService) + nsCOMPtr thread = do_GetCurrentThread(); + if (thread) { - pEventQService->GetThreadEventQueue(NS_CURRENT_THREAD, - getter_AddRefs(eventQueue)); - if (eventQueue) - { - // This is to make sure that we are in the selected state - // when executing the imap url; we don't want to load the - // folder so use lite select to do the trick - rv = imapService->LiteSelectFolder(eventQueue, folder, - urlListener, nsnull); - if (!deleteFlag) - rv =imapService->AddMessageFlags(eventQueue, folder, - urlListener, nsnull, - msgIds.get(), - kImapMsgDeletedFlag, - PR_TRUE); - else - rv = imapService->SubtractMessageFlags(eventQueue, - folder, - urlListener, nsnull, - msgIds.get(), - kImapMsgDeletedFlag, - PR_TRUE); - if (NS_SUCCEEDED(rv) && m_msgWindow) - folder->UpdateFolder(m_msgWindow); - } + // This is to make sure that we are in the selected state + // when executing the imap url; we don't want to load the + // folder so use lite select to do the trick + rv = imapService->LiteSelectFolder(thread, folder, + urlListener, nsnull); + if (!deleteFlag) + rv =imapService->AddMessageFlags(thread, folder, + urlListener, nsnull, + msgIds.get(), + kImapMsgDeletedFlag, + PR_TRUE); + else + rv = imapService->SubtractMessageFlags(thread, + folder, + urlListener, nsnull, + msgIds.get(), + kImapMsgDeletedFlag, + PR_TRUE); + if (NS_SUCCEEDED(rv) && m_msgWindow) + folder->UpdateFolder(m_msgWindow); } } rv = NS_OK; // always return NS_OK to indicate that the src is imap diff --git a/mozilla/modules/oji/public/nsIJVMThreadManager.h b/mozilla/modules/oji/public/nsIJVMThreadManager.h index 42c7ced614e..87408e698bb 100644 --- a/mozilla/modules/oji/public/nsIJVMThreadManager.h +++ b/mozilla/modules/oji/public/nsIJVMThreadManager.h @@ -127,4 +127,10 @@ public: NS_DEFINE_STATIC_IID_ACCESSOR(nsIJVMThreadManager, NS_IJVMTHREADMANAGER_IID) +#ifndef NS_OJI_IMPL +// For backwards compatibility: +typedef nsIJVMThreadManager nsIThreadManager; +#define NS_ITHREADMANAGER_IID NS_IJVMTHREADMANAGER_IID +#endif + #endif /* nsIJVMThreadManager_h___ */ diff --git a/mozilla/modules/oji/src/Makefile.in b/mozilla/modules/oji/src/Makefile.in index 02e69776902..73e099404e5 100644 --- a/mozilla/modules/oji/src/Makefile.in +++ b/mozilla/modules/oji/src/Makefile.in @@ -101,13 +101,14 @@ CPPSRCS += \ $(NULL) endif +DEFINES += -DNS_OJI_IMPL=1 + EXPORTS = \ jvmmgr.h \ nsJVMManager.h \ nsJVMPluginTagInfo.h \ $(NULL) - EXTRA_DSO_LDOPTS = \ $(LIBS_DIR) \ $(EXTRA_DSO_LIBS) \ diff --git a/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp b/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp index 5fb88a0ed25..0ce35f79a9e 100644 --- a/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp +++ b/mozilla/modules/plugin/base/src/nsPluginHostImpl.cpp @@ -977,12 +977,9 @@ public: // unload plugin asynchronously if possible, otherwise just unload now nsresult PostPluginUnloadEvent(PRLibrary* aLibrary) { - nsCOMPtr thread = do_GetCurrentThread(); - if (thread) { - nsCOMPtr ev = new nsPluginUnloadEvent(aLibrary); - if (ev && NS_SUCCEEDED(thread->Dispatch(ev, NS_DISPATCH_NORMAL))) - return NS_OK; - } + nsCOMPtr ev = new nsPluginUnloadEvent(aLibrary); + if (ev && NS_SUCCEEDED(NS_DispatchToCurrentThread(ev))) + return NS_OK; // failure case NS_TRY_SAFE_CALL_VOID(PR_UnloadLibrary(aLibrary), nsnull, nsnull); @@ -2711,12 +2708,9 @@ nsresult nsPluginHostImpl::ReloadPlugins(PRBool reloadPages) instsToReload && NS_SUCCEEDED(instsToReload->Count(&c)) && c > 0) { - nsCOMPtr thread = do_GetCurrentThread(); - if (thread) { - nsCOMPtr ev = new nsPluginDocReframeEvent(instsToReload); - if (ev) - thread->Dispatch(ev, NS_DISPATCH_NORMAL); - } + nsCOMPtr ev = new nsPluginDocReframeEvent(instsToReload); + if (ev) + NS_DispatchToCurrentThread(ev); } PLUGIN_LOG(PLUGIN_LOG_NORMAL, diff --git a/mozilla/modules/plugin/base/src/nsPluginNativeWindowWin.cpp b/mozilla/modules/plugin/base/src/nsPluginNativeWindowWin.cpp index 9d359740875..1108cb3000c 100644 --- a/mozilla/modules/plugin/base/src/nsPluginNativeWindowWin.cpp +++ b/mozilla/modules/plugin/base/src/nsPluginNativeWindowWin.cpp @@ -169,13 +169,10 @@ static PRBool ProcessFlashMessageDelayed(nsPluginNativeWindowWin * aWin, return PR_FALSE; // no need to delay // do stuff - nsCOMPtr thread = do_GetCurrentThread(); - if (thread) { - nsCOMPtr pwe = aWin->GetPluginWindowEvent(hWnd, msg, wParam, lParam); - if (pwe) { - thread->Dispatch(pwe, NS_DISPATCH_NORMAL); - return PR_TRUE; - } + nsCOMPtr pwe = aWin->GetPluginWindowEvent(hWnd, msg, wParam, lParam); + if (pwe) { + NS_DispatchToCurrentThread(pwe); + return PR_TRUE; } return PR_FALSE; } @@ -367,13 +364,10 @@ static LRESULT CALLBACK PluginWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM // code will pop any popup state pushed by this plugin on // destruction. - nsCOMPtr thread = do_GetCurrentThread(); - if (thread) { - nsCOMPtr event = - new nsDelayedPopupsEnabledEvent(instInternal); - if (event) { - thread->Dispatch(event, NS_DISPATCH_NORMAL); - } + nsCOMPtr event = + new nsDelayedPopupsEnabledEvent(instInternal); + if (event) { + NS_DispatchToCurrentThread(event); } } diff --git a/mozilla/netwerk/base/src/nsPACMan.cpp b/mozilla/netwerk/base/src/nsPACMan.cpp index d079fee084f..f88d3a5a59f 100644 --- a/mozilla/netwerk/base/src/nsPACMan.cpp +++ b/mozilla/netwerk/base/src/nsPACMan.cpp @@ -268,10 +268,8 @@ nsPACMan::LoadPACFromURI(nsIURI *pacURI) // queries the enter between now and when we actually load the PAC file. if (!mLoadPending) { - nsCOMPtr thread; - nsresult rv = NS_GetCurrentThread(getter_AddRefs(thread)); - if (NS_FAILED(rv) || - NS_FAILED(rv = thread->Dispatch(this, NS_DISPATCH_NORMAL))) + nsresult rv; + if (NS_FAILED(rv = NS_DispatchToCurrentThread(this))) return rv; mLoadPending = PR_TRUE; } diff --git a/mozilla/netwerk/base/src/nsProtocolProxyService.cpp b/mozilla/netwerk/base/src/nsProtocolProxyService.cpp index 5118a38674c..96e0e3d7c6c 100644 --- a/mozilla/netwerk/base/src/nsProtocolProxyService.cpp +++ b/mozilla/netwerk/base/src/nsProtocolProxyService.cpp @@ -126,18 +126,12 @@ public: if (mDispatched) // Only need to dispatch once return NS_OK; - nsCOMPtr thread; - nsresult rv = NS_GetCurrentThread(getter_AddRefs(thread)); + nsresult rv = NS_DispatchToCurrentThread(this); if (NS_FAILED(rv)) - NS_WARNING("could not get current event queue"); + NS_WARNING("unable to dispatch callback event"); else { - rv = thread->Dispatch(this, NS_DISPATCH_NORMAL); - if (NS_FAILED(rv)) - NS_WARNING("unable to dispatch callback event"); - else { - mDispatched = PR_TRUE; - return NS_OK; - } + mDispatched = PR_TRUE; + return NS_OK; } mCallback = nsnull; // break possible reference cycle diff --git a/mozilla/netwerk/base/src/nsServerSocket.cpp b/mozilla/netwerk/base/src/nsServerSocket.cpp index cbb4f724190..a29bc7f827d 100644 --- a/mozilla/netwerk/base/src/nsServerSocket.cpp +++ b/mozilla/netwerk/base/src/nsServerSocket.cpp @@ -382,12 +382,11 @@ nsServerSocket::AsyncListen(nsIServerSocketListener *aListener) NS_ENSURE_TRUE(mFD, NS_ERROR_NOT_INITIALIZED); NS_ENSURE_TRUE(mListener == nsnull, NS_ERROR_IN_PROGRESS); { - nsCOMPtr thread = do_GetCurrentThread(); nsAutoLock lock(mLock); - nsresult rv = NS_GetProxyForObject(thread, + nsresult rv = NS_GetProxyForObject(NS_PROXY_TO_CURRENT_THREAD, NS_GET_IID(nsIServerSocketListener), aListener, - PROXY_ASYNC | PROXY_ALWAYS, + NS_PROXY_ASYNC | NS_PROXY_ALWAYS, getter_AddRefs(mListener)); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/netwerk/base/src/nsSocketTransport2.cpp b/mozilla/netwerk/base/src/nsSocketTransport2.cpp index bfb812f216e..d9dcae796d7 100644 --- a/mozilla/netwerk/base/src/nsSocketTransport2.cpp +++ b/mozilla/netwerk/base/src/nsSocketTransport2.cpp @@ -50,6 +50,7 @@ #include "nsProxyInfo.h" #include "nsNetCID.h" #include "nsAutoLock.h" +#include "nsAutoPtr.h" #include "nsCOMPtr.h" #include "netCore.h" #include "nsInt64.h" diff --git a/mozilla/netwerk/base/src/nsSocketTransportService2.cpp b/mozilla/netwerk/base/src/nsSocketTransportService2.cpp index e7879bdefd6..c01499fd96f 100644 --- a/mozilla/netwerk/base/src/nsSocketTransportService2.cpp +++ b/mozilla/netwerk/base/src/nsSocketTransportService2.cpp @@ -364,7 +364,7 @@ nsSocketTransportService::Init() "running socket transport thread without a pollable event"); } - nsresult rv = NS_NewThread("net.socket", this, &mThread); + nsresult rv = NS_NewThread(&mThread, this, "net.socket"); if (NS_FAILED(rv)) return rv; mInitialized = PR_TRUE; diff --git a/mozilla/netwerk/cache/src/nsCacheService.cpp b/mozilla/netwerk/cache/src/nsCacheService.cpp index 2cb65271a6a..90519be2194 100644 --- a/mozilla/netwerk/cache/src/nsCacheService.cpp +++ b/mozilla/netwerk/cache/src/nsCacheService.cpp @@ -622,11 +622,10 @@ nsCacheService::EvictEntriesForClient(const char * clientID, // We use an async proxy, since this it's not important whether this // notification happens before or after the actual eviction. - nsCOMPtr thread = do_GetMainThread(); - nsCOMPtr obsProxy; - NS_GetProxyForObject(thread, NS_GET_IID(nsIObserverService), - obsSvc, PROXY_ASYNC, getter_AddRefs(obsProxy)); + NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID(nsIObserverService), obsSvc, + NS_PROXY_ASYNC, getter_AddRefs(obsProxy)); if (obsProxy) { obsProxy->NotifyObservers(this, @@ -848,7 +847,7 @@ nsCacheService::NotifyListener(nsCacheRequest * request, rv = NS_GetProxyForObject(request->mThread, NS_GET_IID(nsICacheListener), request->mListener, - PROXY_ASYNC|PROXY_ALWAYS, + NS_PROXY_ASYNC | NS_PROXY_ALWAYS, getter_AddRefs(listenerProxy)); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/netwerk/dns/src/nsDNSService2.cpp b/mozilla/netwerk/dns/src/nsDNSService2.cpp index c63d9c296dd..d11292479aa 100644 --- a/mozilla/netwerk/dns/src/nsDNSService2.cpp +++ b/mozilla/netwerk/dns/src/nsDNSService2.cpp @@ -403,7 +403,7 @@ nsDNSService::AsyncResolve(const nsACString &hostname, rv = NS_GetProxyForObject(target, NS_GET_IID(nsIDNSListener), listener, - PROXY_ASYNC | PROXY_ALWAYS, + NS_PROXY_ASYNC | NS_PROXY_ALWAYS, getter_AddRefs(listenerProxy)); if (NS_FAILED(rv)) return rv; listener = listenerProxy; diff --git a/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.cpp b/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.cpp index 27b27fed2bc..65c4b71b4ff 100644 --- a/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.cpp +++ b/mozilla/netwerk/protocol/ftp/src/nsFTPChannel.cpp @@ -359,11 +359,10 @@ nsFTPChannel::GetFTPEventSink(nsCOMPtr &aResult) nsCOMPtr ftpSink; GetCallback(ftpSink); if (ftpSink) { - nsCOMPtr thread = do_GetCurrentThread(); - NS_GetProxyForObject(thread, + NS_GetProxyForObject(NS_PROXY_TO_CURRENT_THREAD, NS_GET_IID(nsIFTPEventSink), ftpSink, - PROXY_ASYNC | PROXY_ALWAYS, + NS_PROXY_ASYNC | NS_PROXY_ALWAYS, getter_AddRefs(mFTPEventSink)); } } @@ -379,11 +378,10 @@ nsFTPChannel::InitProgressSink() nsCOMPtr progressSink; NS_QueryNotificationCallbacks(mCallbacks, mLoadGroup, progressSink); if (progressSink) { - nsCOMPtr thread = do_GetCurrentThread(); - NS_GetProxyForObject(thread, + NS_GetProxyForObject(NS_PROXY_TO_CURRENT_THREAD, NS_GET_IID(nsIProgressEventSink), progressSink, - PROXY_ASYNC | PROXY_ALWAYS, + NS_PROXY_ASYNC | NS_PROXY_ALWAYS, getter_AddRefs(mProgressSink)); } } diff --git a/mozilla/netwerk/test/TestCommon.h b/mozilla/netwerk/test/TestCommon.h index 0862dfc4b24..3a336736819 100644 --- a/mozilla/netwerk/test/TestCommon.h +++ b/mozilla/netwerk/test/TestCommon.h @@ -37,6 +37,7 @@ #ifndef TestCommon_h__ #define TestCommon_h__ +#include #include "nsThreadUtils.h" inline int test_common_init(int *argc, char ***argv) @@ -73,9 +74,8 @@ static void QuitPumpingEvents() { // Dispatch a task that toggles gKeepPumpingEvents so that we flush all // of the pending tasks before exiting from PumpEvents. - nsCOMPtr thread = do_GetMainThread(); - nsCOMPtr task = new nsQuitPumpingEvent(); - thread->Dispatch(task, NS_DISPATCH_NORMAL); + nsCOMPtr event = new nsQuitPumpingEvent(); + NS_DispatchToMainThread(event); } #endif diff --git a/mozilla/parser/htmlparser/src/nsParser.cpp b/mozilla/parser/htmlparser/src/nsParser.cpp index eb3f52a76ed..824af0d8551 100644 --- a/mozilla/parser/htmlparser/src/nsParser.cpp +++ b/mozilla/parser/htmlparser/src/nsParser.cpp @@ -305,13 +305,8 @@ nsParser::PostContinueEvent() // If this flag isn't set, then there shouldn't be a live continue event! NS_ASSERTION(!mContinueEvent, "bad"); - nsCOMPtr thread = do_GetCurrentThread(); - NS_ENSURE_STATE(thread); - mContinueEvent = new nsParserContinueEvent(this); - NS_ENSURE_TRUE(mContinueEvent, NS_ERROR_OUT_OF_MEMORY); - - if (NS_FAILED(thread->Dispatch(mContinueEvent, NS_DISPATCH_NORMAL))) { + if (NS_FAILED(NS_DispatchToCurrentThread(mContinueEvent))) { NS_ERROR("failed to dispatch parser continuation event"); mContinueEvent = nsnull; } else { diff --git a/mozilla/security/manager/boot/src/nsSecureBrowserUIImpl.cpp b/mozilla/security/manager/boot/src/nsSecureBrowserUIImpl.cpp index 672ce00bc62..56235b58381 100644 --- a/mozilla/security/manager/boot/src/nsSecureBrowserUIImpl.cpp +++ b/mozilla/security/manager/boot/src/nsSecureBrowserUIImpl.cpp @@ -1408,13 +1408,10 @@ GetNSSDialogs(nsISecurityWarningDialogs **result) if (!proxyman) return NS_ERROR_FAILURE; - nsCOMPtr thread = do_GetMainThread(); - NS_ENSURE_STATE(thread); - nsCOMPtr proxiedResult; - proxyman->GetProxyForObject(thread, + proxyman->GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsISecurityWarningDialogs), - my_result, PROXY_SYNC, + my_result, NS_PROXY_SYNC, getter_AddRefs(proxiedResult)); if (!proxiedResult) { diff --git a/mozilla/security/manager/ssl/src/Makefile.in b/mozilla/security/manager/ssl/src/Makefile.in index e2123e2d8a4..f82978d5fe9 100644 --- a/mozilla/security/manager/ssl/src/Makefile.in +++ b/mozilla/security/manager/ssl/src/Makefile.in @@ -87,7 +87,6 @@ CPPSRCS = \ nsCRLManager.cpp \ nsNSSShutDown.cpp \ nsNTLMAuthModule.cpp \ - nsNSSEvent.cpp \ nsSmartCardMonitor.cpp \ nsSmartCardEvent.cpp \ $(NULL) diff --git a/mozilla/security/manager/ssl/src/nsCrypto.cpp b/mozilla/security/manager/ssl/src/nsCrypto.cpp index 6b8c9d39486..43b813a1063 100644 --- a/mozilla/security/manager/ssl/src/nsCrypto.cpp +++ b/mozilla/security/manager/ssl/src/nsCrypto.cpp @@ -1625,7 +1625,7 @@ nsCrypto::GenerateCRMFRequest(nsIDOMCRMFObject** aReturn) if (!cryptoRunnable) return NS_ERROR_OUT_OF_MEMORY; - nsresult rv = nsNSSEventPostToUIThread(cryptoRunnable); + nsresult rv = NS_DispatchToMainThread(cryptoRunnable); if (NS_FAILED(rv)) delete cryptoRunnable; @@ -2009,7 +2009,7 @@ nsCrypto::ImportUserCertificates(const nsAString& aNickname, // memory on the way out. certArr = nsnull; - rv = nsNSSEventPostToUIThread(p12Runnable); + rv = NS_DispatchToMainThread(p12Runnable); if (NS_FAILED(rv)) goto loser; } @@ -2193,11 +2193,10 @@ nsCrypto::SignText(const nsAString& aStringToSign, const nsAString& aCaOption, return NS_OK; } - nsCOMPtr thread = do_GetMainThread(); nsCOMPtr proxied_fsd; - nsresult rv = proxyman->GetProxyForObject(thread, + nsresult rv = proxyman->GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIFormSigningDialog), - fsd, PROXY_SYNC, + fsd, NS_PROXY_SYNC, getter_AddRefs(proxied_fsd)); if (NS_FAILED(rv)) { aResult.Append(internalError); diff --git a/mozilla/security/manager/ssl/src/nsCrypto.h b/mozilla/security/manager/ssl/src/nsCrypto.h index 0c24c5ee845..23cc4a1e6e7 100644 --- a/mozilla/security/manager/ssl/src/nsCrypto.h +++ b/mozilla/security/manager/ssl/src/nsCrypto.h @@ -44,7 +44,6 @@ #include "nsIDOMPkcs11.h" #include "nsIRunnable.h" #include "nsString.h" -#include "nsNSSEvent.h" #include "jsapi.h" #include "nsIPrincipal.h" diff --git a/mozilla/security/manager/ssl/src/nsKeygenThread.cpp b/mozilla/security/manager/ssl/src/nsKeygenThread.cpp index dbba453d53e..1e384cc3fd0 100644 --- a/mozilla/security/manager/ssl/src/nsKeygenThread.cpp +++ b/mozilla/security/manager/ssl/src/nsKeygenThread.cpp @@ -154,12 +154,11 @@ nsresult nsKeygenThread::StartKeyGeneration(nsIObserver* aObserver) if (!proxyman) return NS_OK; - nsCOMPtr thread = do_GetMainThread(); nsCOMPtr obs; - proxyman->GetProxyForObject( thread, + proxyman->GetProxyForObject( NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIObserver), aObserver, - PROXY_SYNC | PROXY_ALWAYS, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, getter_AddRefs(obs)); PR_Lock(mutex); diff --git a/mozilla/security/manager/ssl/src/nsNSSCallbacks.cpp b/mozilla/security/manager/ssl/src/nsNSSCallbacks.cpp index 427ef844e07..88cf3bb3068 100644 --- a/mozilla/security/manager/ssl/src/nsNSSCallbacks.cpp +++ b/mozilla/security/manager/ssl/src/nsNSSCallbacks.cpp @@ -158,14 +158,11 @@ PK11PasswordPrompt(PK11SlotInfo* slot, PRBool retry, void* arg) { nsCOMPtr proxyman(do_GetService(NS_XPCOMPROXY_CONTRACTID)); if (!proxyman) return nsnull; - nsCOMPtr thread = do_GetMainThread(); - NS_ENSURE_TRUE(thread, nsnull); - nsCOMPtr proxiedCallbacks; - proxyman->GetProxyForObject(thread, + proxyman->GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIInterfaceRequestor), ir, - PROXY_SYNC, + NS_PROXY_SYNC, getter_AddRefs(proxiedCallbacks)); // Get the desired interface @@ -176,10 +173,10 @@ PK11PasswordPrompt(PK11SlotInfo* slot, PRBool retry, void* arg) { } // Finally, get a proxy for the nsIPrompt - proxyman->GetProxyForObject(thread, + proxyman->GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIPrompt), prompt, - PROXY_SYNC, + NS_PROXY_SYNC, getter_AddRefs(proxyPrompt)); diff --git a/mozilla/security/manager/ssl/src/nsNSSCertificate.cpp b/mozilla/security/manager/ssl/src/nsNSSCertificate.cpp index 7f0b3e911db..a128b0d25d2 100644 --- a/mozilla/security/manager/ssl/src/nsNSSCertificate.cpp +++ b/mozilla/security/manager/ssl/src/nsNSSCertificate.cpp @@ -218,12 +218,11 @@ nsNSSCertificate::FormatUIStrings(const nsAutoString &nickname, nsAutoString &ni return NS_ERROR_FAILURE; } - nsCOMPtr thread = do_GetMainThread(); nsCOMPtr x509Proxy; - proxyman->GetProxyForObject( thread, + proxyman->GetProxyForObject( NS_PROXY_TO_MAIN_THREAD, nsIX509Cert::GetIID(), NS_STATIC_CAST(nsIX509Cert*, this), - PROXY_SYNC | PROXY_ALWAYS, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, getter_AddRefs(x509Proxy)); if (!x509Proxy) { @@ -267,11 +266,10 @@ nsNSSCertificate::FormatUIStrings(const nsAutoString &nickname, nsAutoString &ni nsCOMPtr originalValidity; rv = x509Proxy->GetValidity(getter_AddRefs(originalValidity)); if (NS_SUCCEEDED(rv) && originalValidity) { - nsCOMPtr thread = do_GetMainThread(); - proxyman->GetProxyForObject( thread, + proxyman->GetProxyForObject( NS_PROXY_TO_MAIN_THREAD, nsIX509CertValidity::GetIID(), originalValidity, - PROXY_SYNC | PROXY_ALWAYS, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, getter_AddRefs(validity)); } diff --git a/mozilla/security/manager/ssl/src/nsNSSComponent.cpp b/mozilla/security/manager/ssl/src/nsNSSComponent.cpp index ddb48a49d09..88190ab183d 100644 --- a/mozilla/security/manager/ssl/src/nsNSSComponent.cpp +++ b/mozilla/security/manager/ssl/src/nsNSSComponent.cpp @@ -44,7 +44,6 @@ #include "nsNSSComponent.h" #include "nsNSSCallbacks.h" #include "nsNSSIOLayer.h" -#include "nsNSSEvent.h" #include "nsNetUtil.h" #include "nsAppDirectoryServiceDefs.h" @@ -78,6 +77,7 @@ #include "nsIDOMSmartCardEvent.h" #include "nsIDOMCrypto.h" #include "nsThreadUtils.h" +#include "nsAutoPtr.h" #include "nsCRT.h" #include "nsCRLInfo.h" @@ -334,7 +334,7 @@ nsNSSComponent::PostEvent(const nsAString &eventType, return NS_ERROR_OUT_OF_MEMORY; } - return nsNSSEventPostToUIThread(runnable); + return NS_DispatchToMainThread(runnable); } @@ -898,7 +898,7 @@ nsNSSComponent::PostCRLImportEvent(const nsCSubstring &urlString, return NS_ERROR_OUT_OF_MEMORY; //Get a handle to the ui thread - return nsNSSEventPostToUIThread(event); + return NS_DispatchToMainThread(event); } nsresult @@ -1950,10 +1950,11 @@ void nsNSSComponent::ShowAlert(AlertIdentifier ai) PR_LOG(gPIPNSSLog, PR_LOG_DEBUG, ("can't get proxy manager\n")); } else { - nsCOMPtr thread = do_GetMainThread(); nsCOMPtr proxyPrompt; - proxyman->GetProxyForObject(thread, NS_GET_IID(nsIPrompt), - prompter, PROXY_SYNC, getter_AddRefs(proxyPrompt)); + proxyman->GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID(nsIPrompt), + prompter, NS_PROXY_SYNC, + getter_AddRefs(proxyPrompt)); if (!proxyPrompt) { PR_LOG(gPIPNSSLog, PR_LOG_DEBUG, ("can't get proxy for nsIPrompt\n")); } @@ -2202,10 +2203,11 @@ NS_IMETHODIMP PipUIContext::GetInterface(const nsIID & uuid, void * *result) if (wwatch) { wwatch->GetNewPrompter(0, getter_AddRefs(prompter)); if (prompter) { - nsCOMPtr thread = do_GetMainThread(); nsCOMPtr proxyPrompt; - proxyman->GetProxyForObject(thread, NS_GET_IID(nsIPrompt), - prompter, PROXY_SYNC, getter_AddRefs(proxyPrompt)); + proxyman->GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID(nsIPrompt), + prompter, NS_PROXY_SYNC, + getter_AddRefs(proxyPrompt)); if (!proxyPrompt) return NS_ERROR_FAILURE; *result = proxyPrompt; NS_ADDREF((nsIPrompt*)*result); @@ -2232,9 +2234,8 @@ getNSSDialogs(void **_result, REFNSIID aIID, const char *contract) if (NS_FAILED(rv)) return rv; - nsCOMPtr thread = do_GetMainThread(); - rv = proxyman->GetProxyForObject(thread, - aIID, svc, PROXY_SYNC, + rv = proxyman->GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, + aIID, svc, NS_PROXY_SYNC, _result); return rv; } diff --git a/mozilla/security/manager/ssl/src/nsNSSEvent.cpp b/mozilla/security/manager/ssl/src/nsNSSEvent.cpp index 8ec7470b184..b5696533540 100644 --- a/mozilla/security/manager/ssl/src/nsNSSEvent.cpp +++ b/mozilla/security/manager/ssl/src/nsNSSEvent.cpp @@ -45,6 +45,5 @@ nsresult nsNSSEventPostToUIThread(nsIRunnable *event) { - nsCOMPtr uiThread = do_GetMainThread(); - return uiThread->Dispatch(event, NS_DISPATCH_NORMAL); + return NS_DispatchToMainThread(event); } diff --git a/mozilla/security/manager/ssl/src/nsNSSIOLayer.cpp b/mozilla/security/manager/ssl/src/nsNSSIOLayer.cpp index c5ca00e8c40..a7b9e950ce4 100644 --- a/mozilla/security/manager/ssl/src/nsNSSIOLayer.cpp +++ b/mozilla/security/manager/ssl/src/nsNSSIOLayer.cpp @@ -62,6 +62,7 @@ #include "nsReadableUtils.h" #include "nsHashSets.h" #include "nsCRT.h" +#include "nsAutoPtr.h" #include "nsPrintfCString.h" #include "nsNSSShutDown.h" #include "nsNSSCertHelper.h" @@ -263,14 +264,11 @@ nsNSSSocketInfo::SetNotificationCallbacks(nsIInterfaceRequestor* aCallbacks) if (!proxyman) return NS_ERROR_FAILURE; - nsCOMPtr thread = do_GetMainThread(); - NS_ENSURE_STATE(thread); - nsCOMPtr proxiedCallbacks; - proxyman->GetProxyForObject(thread, + proxyman->GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIInterfaceRequestor), NS_STATIC_CAST(nsIInterfaceRequestor*,aCallbacks), - PROXY_SYNC, + NS_PROXY_SYNC, getter_AddRefs(proxiedCallbacks)); mCallbacks = proxiedCallbacks; @@ -447,14 +445,11 @@ displayAlert(nsAFlatString &formattedString, nsNSSSocketInfo *infoObject) if (!proxyman) return NS_ERROR_FAILURE; - nsCOMPtr thread = do_GetMainThread(); - NS_ENSURE_STATE(thread); - nsCOMPtr proxiedCallbacks; - proxyman->GetProxyForObject(thread, + proxyman->GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIInterfaceRequestor), NS_STATIC_CAST(nsIInterfaceRequestor*,infoObject), - PROXY_SYNC, + NS_PROXY_SYNC, getter_AddRefs(proxiedCallbacks)); nsCOMPtr prompt (do_GetInterface(proxiedCallbacks)); @@ -464,10 +459,10 @@ displayAlert(nsAFlatString &formattedString, nsNSSSocketInfo *infoObject) nsCOMPtr proxyPrompt; // Finally, get a proxy for the nsIPrompt - proxyman->GetProxyForObject(thread, + proxyman->GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIPrompt), prompt, - PROXY_SYNC, + NS_PROXY_SYNC, getter_AddRefs(proxyPrompt)); proxyPrompt->Alert(nsnull, formattedString.get()); return NS_OK; @@ -1275,11 +1270,10 @@ nsContinueDespiteCertError(nsNSSSocketInfo *infoObject, if (callbacks) { nsCOMPtr handler = do_GetInterface(callbacks); if (handler) { - nsCOMPtr thread = do_GetMainThread(); - NS_GetProxyForObject(thread, + NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIBadCertListener), handler, - PROXY_SYNC, + NS_PROXY_SYNC, (void**)&badCertHandler); } } diff --git a/mozilla/security/manager/ssl/src/nsPKCS12Blob.cpp b/mozilla/security/manager/ssl/src/nsPKCS12Blob.cpp index ec8087f31f8..9a56e09fcde 100644 --- a/mozilla/security/manager/ssl/src/nsPKCS12Blob.cpp +++ b/mozilla/security/manager/ssl/src/nsPKCS12Blob.cpp @@ -34,7 +34,7 @@ * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ -/* $Id: nsPKCS12Blob.cpp,v 1.46.4.1 2006-02-22 17:25:07 darin%meer.net Exp $ */ +/* $Id: nsPKCS12Blob.cpp,v 1.46.4.2 2006-03-02 18:20:39 darin%meer.net Exp $ */ #include "prmem.h" #include "prprf.h" @@ -852,11 +852,10 @@ nsPKCS12Blob::handleError(int myerr) if (wwatch) { wwatch->GetNewPrompter(0, getter_AddRefs(errPrompt)); if (errPrompt) { - nsCOMPtr thread = do_GetMainThread(); nsCOMPtr proxyPrompt; - proxyman->GetProxyForObject(thread, NS_GET_IID(nsIPrompt), - errPrompt, PROXY_SYNC, - getter_AddRefs(proxyPrompt)); + proxyman->GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID(nsIPrompt), errPrompt, + NS_PROXY_SYNC, getter_AddRefs(proxyPrompt)); if (!proxyPrompt) return PR_FALSE; } else { return PR_FALSE; diff --git a/mozilla/security/manager/ssl/src/nsSDR.cpp b/mozilla/security/manager/ssl/src/nsSDR.cpp index 0f7b2ff6d8a..4c62cee6908 100644 --- a/mozilla/security/manager/ssl/src/nsSDR.cpp +++ b/mozilla/security/manager/ssl/src/nsSDR.cpp @@ -103,10 +103,11 @@ NS_IMETHODIMP nsSDRContext::GetInterface(const nsIID & uuid, void * *result) if (wwatch) { wwatch->GetNewPrompter(0, getter_AddRefs(prompter)); if (prompter) { - nsCOMPtr thread = do_GetMainThread(); nsCOMPtr proxyPrompt; - proxyman->GetProxyForObject(thread, NS_GET_IID(nsIPrompt), - prompter, PROXY_SYNC, getter_AddRefs(proxyPrompt)); + proxyman->GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID(nsIPrompt), + prompter, NS_PROXY_SYNC, + getter_AddRefs(proxyPrompt)); if (!proxyPrompt) return NS_ERROR_FAILURE; *result = proxyPrompt; NS_ADDREF((nsIPrompt*)*result); diff --git a/mozilla/toolkit/components/startup/src/nsAppStartup.cpp b/mozilla/toolkit/components/startup/src/nsAppStartup.cpp index 65439c4e32e..935808859da 100644 --- a/mozilla/toolkit/components/startup/src/nsAppStartup.cpp +++ b/mozilla/toolkit/components/startup/src/nsAppStartup.cpp @@ -311,23 +311,13 @@ nsAppStartup::Quit(PRUint32 aMode) // no matter what, make sure we send the exit event. If // worst comes to worst, we'll do a leaky shutdown but we WILL // shut down. Well, assuming that all *this* stuff works ;-). - nsCOMPtr thread = do_GetCurrentThread(); - if (thread) { - nsCOMPtr event = new nsAppExitEvent(this); - if (event) { - rv = thread->Dispatch(event, NS_DISPATCH_NORMAL); - if (NS_SUCCEEDED(rv)) { - postedExitEvent = PR_TRUE; - } - else { - NS_WARNING("failed to dispatch nsAppExitEvent"); - } - } - else { - rv = NS_ERROR_OUT_OF_MEMORY; - } - } else { - rv = NS_ERROR_UNEXPECTED; + nsCOMPtr event = new nsAppExitEvent(this); + rv = NS_DispatchToCurrentThread(event); + if (NS_SUCCEEDED(rv)) { + postedExitEvent = PR_TRUE; + } + else { + NS_WARNING("failed to dispatch nsAppExitEvent"); } } } diff --git a/mozilla/uriloader/exthandler/nsExternalHelperAppService.cpp b/mozilla/uriloader/exthandler/nsExternalHelperAppService.cpp index 75c87681112..9a9b20dcc48 100644 --- a/mozilla/uriloader/exthandler/nsExternalHelperAppService.cpp +++ b/mozilla/uriloader/exthandler/nsExternalHelperAppService.cpp @@ -1094,14 +1094,8 @@ class nsExternalLoadRequest : public nsRunnable { NS_IMETHODIMP nsExternalHelperAppService::LoadURI(nsIURI * aURL, nsIPrompt * aPrompt) { - nsCOMPtr thread = do_GetCurrentThread(); - NS_ENSURE_STATE(thread); - nsCOMPtr event = new nsExternalLoadRequest(aURL, aPrompt); - if (!event) - return NS_ERROR_OUT_OF_MEMORY; - - return thread->Dispatch(event, NS_DISPATCH_NORMAL); + return NS_DispatchToCurrentThread(event); } // helper routines used by LoadURI to check whether we're allowed diff --git a/mozilla/view/src/nsViewManager.cpp b/mozilla/view/src/nsViewManager.cpp index fed46b68731..a3c41f7e2ba 100644 --- a/mozilla/view/src/nsViewManager.cpp +++ b/mozilla/view/src/nsViewManager.cpp @@ -153,18 +153,13 @@ nsViewManager::PostInvalidateEvent() if (!EnsureWeakRef()) return; // out of memory - nsCOMPtr thread = do_GetCurrentThread(); - if (!thread) - return; - if (!mInvalidateEventPending) { nsCOMPtr ev = new nsInvalidateEvent(mWeakRef); - - if (NS_FAILED(thread->Dispatch(ev, NS_DISPATCH_NORMAL))) { - NS_NOTREACHED("failed to dispatch nsSynthMouseMoveEvent"); - return; + if (NS_FAILED(NS_DispatchToCurrentThread(ev))) { + NS_WARNING("failed to dispatch nsSynthMouseMoveEvent"); + } else { + mInvalidateEventPending = PR_TRUE; } - mInvalidateEventPending = PR_TRUE; } } @@ -2905,15 +2900,12 @@ nsViewManager::SynthesizeMouseMove(PRBool aFromScroll) if (!EnsureWeakRef()) return NS_ERROR_OUT_OF_MEMORY; - nsCOMPtr thread = do_GetCurrentThread(); - NS_ENSURE_STATE(thread); - if (!mSynthMouseMoveEventPending) { nsCOMPtr ev = new nsSynthMouseMoveEvent(mWeakRef, aFromScroll); - if (NS_FAILED(thread->Dispatch(ev, NS_DISPATCH_NORMAL))) { - NS_NOTREACHED("failed to dispatch nsSynthMouseMoveEvent"); + if (NS_FAILED(NS_DispatchToCurrentThread(ev))) { + NS_WARNING("failed to dispatch nsSynthMouseMoveEvent"); return NS_ERROR_UNEXPECTED; } diff --git a/mozilla/xpcom/base/nsConsoleService.cpp b/mozilla/xpcom/base/nsConsoleService.cpp index 53fe7d098c5..d849dda887a 100644 --- a/mozilla/xpcom/base/nsConsoleService.cpp +++ b/mozilla/xpcom/base/nsConsoleService.cpp @@ -309,27 +309,14 @@ nsresult nsConsoleService::GetProxyForListener(nsIConsoleListener* aListener, nsIConsoleListener** aProxy) { - nsresult rv; - *aProxy = nsnull; - - nsCOMPtr proxyManager = - (do_GetService(NS_XPCOMPROXY_CONTRACTID)); - - if (proxyManager == nsnull) - return NS_ERROR_NOT_AVAILABLE; - /* * NOTE this will fail if the calling thread doesn't have an eventQ. * * Would it be better to catch that case and leave the listener unproxied? */ - - nsCOMPtr thread = do_GetCurrentThread(); - - rv = proxyManager->GetProxyForObject(thread, - NS_GET_IID(nsIConsoleListener), - aListener, - PROXY_ASYNC | PROXY_ALWAYS, - (void**) aProxy); - return rv; + return NS_GetProxyForObject(NS_PROXY_TO_CURRENT_THREAD, + NS_GET_IID(nsIConsoleListener), + aListener, + NS_PROXY_ASYNC | NS_PROXY_ALWAYS, + (void**) aProxy); } diff --git a/mozilla/xpcom/base/nsMemoryImpl.cpp b/mozilla/xpcom/base/nsMemoryImpl.cpp index 144a377527a..5b565b997c7 100644 --- a/mozilla/xpcom/base/nsMemoryImpl.cpp +++ b/mozilla/xpcom/base/nsMemoryImpl.cpp @@ -238,11 +238,8 @@ nsMemoryImpl::FlushMemory(const PRUnichar* aReason, PRBool aImmediate) rv = RunFlushers(aReason); } else { - nsCOMPtr thread = do_GetMainThread(); - if (thread) { - sFlushEvent.mReason = aReason; - rv = thread->Dispatch(&sFlushEvent, NS_DISPATCH_NORMAL); - } + sFlushEvent.mReason = aReason; + rv = NS_DispatchToMainThread(&sFlushEvent, NS_DISPATCH_NORMAL); } return rv; diff --git a/mozilla/xpcom/components/nsCategoryManager.cpp b/mozilla/xpcom/components/nsCategoryManager.cpp index ce1abfb56ff..c3a671bbd48 100644 --- a/mozilla/xpcom/components/nsCategoryManager.cpp +++ b/mozilla/xpcom/components/nsCategoryManager.cpp @@ -545,13 +545,11 @@ nsCategoryManager::NotifyObservers( const char *aTopic, if (!observerService) return; - nsCOMPtr mainThread = do_GetMainThread(); - nsCOMPtr obsProxy; - NS_GetProxyForObject(mainThread, + NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIObserverService), observerService, - PROXY_ASYNC, + NS_PROXY_ASYNC, getter_AddRefs(obsProxy)); if (!obsProxy) return; diff --git a/mozilla/xpcom/proxy/public/nsIProxyObjectManager.idl b/mozilla/xpcom/proxy/public/nsIProxyObjectManager.idl index 3a39850cc6a..59855bb74d7 100644 --- a/mozilla/xpcom/proxy/public/nsIProxyObjectManager.idl +++ b/mozilla/xpcom/proxy/public/nsIProxyObjectManager.idl @@ -68,6 +68,9 @@ interface nsIProxyObjectManager : nsISupports */ const long FORCE_PROXY_CREATION = 0x0004; + /** + * If target is null, then the current thread is used as the target. + */ void getProxyForObject(in nsIEventTarget target, in nsIIDRef iid, in nsISupports object, @@ -77,8 +80,6 @@ interface nsIProxyObjectManager : nsISupports %{C++ -#include "nsProxyEvent.h" - #define NS_XPCOMPROXY_CONTRACTID "@mozilla.org/xpcomproxy;1" #define NS_XPCOMPROXY_CLASSNAME "XPCom Proxy" @@ -87,7 +88,24 @@ interface nsIProxyObjectManager : nsISupports 0xb059, \ 0x11d2, \ {0x91, 0x5e, 0xc1, 0x2b, 0x69, 0x6c, 0x93, 0x33}\ -} +} + +// convenience macros +#define NS_PROXY_SYNC nsIProxyObjectManager::INVOKE_SYNC +#define NS_PROXY_ASYNC nsIProxyObjectManager::INVOKE_ASYNC +#define NS_PROXY_ALWAYS nsIProxyObjectManager::FORCE_PROXY_CREATION + +/** + * Pass this value as the target to NS_GetProxyForObject to specify the current + * thread as the target for the proxy object. + */ +#define NS_PROXY_TO_CURRENT_THREAD ((nsIEventTarget *) 0) + +/** + * Pass this value as the target to NS_GetProxyForObject to specify the main + * thread as the target for the proxy object. + */ +#define NS_PROXY_TO_MAIN_THREAD ((nsIEventTarget *) 1) /** * Helper function for code that already has a link-time dependency on diff --git a/mozilla/xpcom/proxy/public/nsProxiedService.h b/mozilla/xpcom/proxy/public/nsProxiedService.h index 62860ea2d1e..d3a3ca1ef46 100644 --- a/mozilla/xpcom/proxy/public/nsProxiedService.h +++ b/mozilla/xpcom/proxy/public/nsProxiedService.h @@ -59,7 +59,7 @@ // nsIMyService pIProxiedObject = NULL; // rv = pIProxyObjectManager->GetProxyForObject(pIDispatchTarget, // NS_GET_IID(nsIMyService), -// pIMyService, PROXY_SYNC, +// pIMyService, NS_PROXY_SYNC, // (void**)&pIProxiedObject); // pIProxiedObject->DoIt(...); // Executed on same thread as pIProxyQueue // ... @@ -121,9 +121,9 @@ private: void InitProxy(nsISupports *aObj, const nsIID &aIID, nsIEventTarget* aTarget, PRBool always, nsresult*rv) { - PRInt32 proxyType = PROXY_SYNC; + PRInt32 proxyType = NS_PROXY_SYNC; if (always) - proxyType |= PROXY_ALWAYS; + proxyType |= NS_PROXY_ALWAYS; *rv = NS_GetProxyForObject(aTarget, aIID, diff --git a/mozilla/xpcom/proxy/public/nsProxyEvent.h b/mozilla/xpcom/proxy/public/nsProxyEvent.h index 531d2018542..33754126ce5 100644 --- a/mozilla/xpcom/proxy/public/nsProxyEvent.h +++ b/mozilla/xpcom/proxy/public/nsProxyEvent.h @@ -52,13 +52,9 @@ class nsProxyObjectCallInfo; class nsIRunnable; -#define PROXY_SYNC 0x0001 // acts just like a function call. -#define PROXY_ASYNC 0x0002 // fire and forget. This will return immediately and you will lose all return information. -#define PROXY_ALWAYS 0x0004 // ignore check to see if the eventQ is on the same thread as the caller, and alway return a proxied object. - //#define AUTOPROXIFICATION -// WARNING about PROXY_ASYNC: +// WARNING about NS_PROXY_ASYNC: // // If the calling thread goes away, any function which accesses the calling stack // will blow up. @@ -164,7 +160,7 @@ private: PRInt32 mCompleted; /* is true when the method has been called. */ nsCOMPtr mCallersTarget; /* this is the dispatch target that we must post a message back to - when we are done invoking the method (only PROXY_SYNC). */ + when we are done invoking the method (only NS_PROXY_SYNC). */ nsRefPtr mOwner; /* this is the strong referenced nsProxyObject */ diff --git a/mozilla/xpcom/proxy/src/nsProxyEvent.cpp b/mozilla/xpcom/proxy/src/nsProxyEvent.cpp index 1caf164ce38..0af4e20634b 100644 --- a/mozilla/xpcom/proxy/src/nsProxyEvent.cpp +++ b/mozilla/xpcom/proxy/src/nsProxyEvent.cpp @@ -102,7 +102,7 @@ public: if (proxyObject == nsnull) return NS_OK; - if (proxyObject->GetProxyType() & PROXY_ASYNC) + if (proxyObject->GetProxyType() & NS_PROXY_ASYNC) { delete mInfo; } @@ -191,7 +191,7 @@ nsProxyObjectCallInfo::nsProxyObjectCallInfo(nsProxyObject* owner, mOwner = owner; RefCountInInterfacePointers(PR_TRUE); - if (mOwner->GetProxyType() & PROXY_ASYNC) + if (mOwner->GetProxyType() & NS_PROXY_ASYNC) CopyStrings(PR_TRUE); } @@ -199,7 +199,7 @@ nsProxyObjectCallInfo::nsProxyObjectCallInfo(nsProxyObject* owner, nsProxyObjectCallInfo::~nsProxyObjectCallInfo() { RefCountInInterfacePointers(PR_FALSE); - if (mOwner->GetProxyType() & PROXY_ASYNC) + if (mOwner->GetProxyType() & NS_PROXY_ASYNC) CopyStrings(PR_FALSE); mOwner = nsnull; @@ -465,7 +465,7 @@ nsProxyObject::convertMiniVariantToVariant(nsXPTMethodInfo *methodInfo, for (int i = 0; i < paramCount; i++) { const nsXPTParamInfo& paramInfo = methodInfo->GetParam(i); - if ((mProxyType & PROXY_ASYNC) && paramInfo.IsDipper()) + if ((mProxyType & NS_PROXY_ASYNC) && paramInfo.IsDipper()) { NS_WARNING("Async proxying of out parameters is not supported"); return NS_ERROR_PROXY_INVALID_OUT_PARAMETER; @@ -504,7 +504,7 @@ nsProxyObject::Post( PRUint32 methodIndex, // (methodIndex == 0), or it is a sync proxy and this code is running on the same thread // as the destination dispatch target. if ( (methodIndex == 0) || - (mProxyType & PROXY_SYNC && + (mProxyType & NS_PROXY_SYNC && NS_SUCCEEDED(mTarget->IsOnCurrentThread(&callDirectly)) && callDirectly)) { @@ -543,7 +543,7 @@ nsProxyObject::Post( PRUint32 methodIndex, event->SetInfo(proxyInfo); - if (mProxyType & PROXY_SYNC) + if (mProxyType & NS_PROXY_SYNC) { rv = PostAndWait(proxyInfo); @@ -553,7 +553,7 @@ nsProxyObject::Post( PRUint32 methodIndex, return rv; } - if (mProxyType & PROXY_ASYNC) + if (mProxyType & NS_PROXY_ASYNC) { mTarget->Dispatch(event, NS_DISPATCH_NORMAL); return NS_OK; diff --git a/mozilla/xpcom/proxy/src/nsProxyObjectManager.cpp b/mozilla/xpcom/proxy/src/nsProxyObjectManager.cpp index aca8dd9cb41..0921a96dd91 100644 --- a/mozilla/xpcom/proxy/src/nsProxyObjectManager.cpp +++ b/mozilla/xpcom/proxy/src/nsProxyObjectManager.cpp @@ -50,6 +50,7 @@ #include "nsProxyEvent.h" #include "nsIProxyObjectManager.h" #include "nsProxyEventPrivate.h" +#include "nsThreadUtils.h" #include "nsIProxyCreateInstance.h" @@ -60,50 +61,6 @@ #include "nsIThread.h" -#if 0 -static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); - -/***************************************************************************/ -/* nsProxyCreateInstance */ -/* This private class will allow us to create Instances on another thread */ -/***************************************************************************/ -class nsProxyCreateInstance : public nsIProxyCreateInstance -{ - NS_DECL_ISUPPORTS - NS_IMETHOD CreateInstanceByIID(const nsIID & cid, nsISupports *aOuter, const nsIID & iid, void * *result); - NS_IMETHOD CreateInstanceByContractID(const char *aContractID, nsISupports *aOuter, const nsIID & iid, void * *result); - - nsProxyCreateInstance() - { - NS_GetComponentManager(getter_AddRefs(mCompMgr)); - NS_ASSERTION(mCompMgr, "no component manager"); - } - -private: - - nsCOMPtr mCompMgr; -}; - -NS_IMPL_ISUPPORTS1(nsProxyCreateInstance, nsIProxyCreateInstance) - -NS_IMETHODIMP nsProxyCreateInstance::CreateInstanceByIID(const nsIID & cid, nsISupports *aOuter, const nsIID & iid, void * *result) -{ - return mCompMgr->CreateInstance(cid, - aOuter, - iid, - result); -} - - -NS_IMETHODIMP nsProxyCreateInstance::CreateInstanceByContractID(const char *aContractID, nsISupports *aOuter, const nsIID & iid, void * *result) -{ - return mCompMgr->CreateInstanceByContractID(aContractID, - aOuter, - iid, - result); -} -#endif - ///////////////////////////////////////////////////////////////////////// // nsProxyObjectManager ///////////////////////////////////////////////////////////////////////// @@ -180,10 +137,16 @@ nsProxyObjectManager::GetProxyForObject(nsIEventTarget* aTarget, *aProxyObject = nsnull; + nsCOMPtr currentThread; + if (!aTarget) { + currentThread = do_GetCurrentThread(); + aTarget = currentThread.get(); + } + // check to see if the target is on our thread. If so, just return the // real object. - if (!(proxyType & PROXY_ASYNC) && !(proxyType & PROXY_ALWAYS)) + if (!(proxyType & NS_PROXY_ASYNC) && !(proxyType & NS_PROXY_ALWAYS)) { PRBool result; aTarget->IsOnCurrentThread(&result); @@ -219,6 +182,12 @@ NS_GetProxyForObject(nsIEventTarget *target, nsresult rv; + nsCOMPtr mainThread; + if (target == NS_PROXY_TO_MAIN_THREAD) { + mainThread = do_GetMainThread(); + target = mainThread.get(); + } + // get the proxy object manager // nsCOMPtr proxyObjMgr = diff --git a/mozilla/xpcom/proxy/tests/proxytests.cpp b/mozilla/xpcom/proxy/tests/proxytests.cpp index 04411f34a2c..af64222e8c5 100644 --- a/mozilla/xpcom/proxy/tests/proxytests.cpp +++ b/mozilla/xpcom/proxy/tests/proxytests.cpp @@ -142,7 +142,7 @@ NS_IMETHODIMP nsTestXPCFoo2::Test(PRInt32 p1, PRInt32 p2, PRInt32* retval) nsCOMPtr proxyObject; manager->GetProxyForObject((nsIThread*)p1, NS_GET_IID(nsITestProxy), - this, PROXY_SYNC, (void**)&proxyObject); + this, NS_PROXY_SYNC, (void**)&proxyObject); proxyObject->Test3(nsnull, nsnull); printf("Deleting Proxy Object\n"); @@ -197,9 +197,9 @@ void TestCase_TwoClassesOneInterface(void *arg) PR_ASSERT(foo2); - manager->GetProxyForObject(argsStruct->thread, NS_GET_IID(nsITestProxy), foo, PROXY_SYNC, (void**)&proxyObject); + manager->GetProxyForObject(argsStruct->thread, NS_GET_IID(nsITestProxy), foo, NS_PROXY_SYNC, (void**)&proxyObject); - manager->GetProxyForObject(argsStruct->thread, NS_GET_IID(nsITestProxy), foo2, PROXY_SYNC, (void**)&proxyObject2); + manager->GetProxyForObject(argsStruct->thread, NS_GET_IID(nsITestProxy), foo2, NS_PROXY_SYNC, (void**)&proxyObject2); @@ -260,7 +260,7 @@ void TestCase_NestedLoop(void *arg) PR_ASSERT(foo); - manager->GetProxyForObject(argsStruct->thread, NS_GET_IID(nsITestProxy), foo, PROXY_SYNC, (void**)&proxyObject); + manager->GetProxyForObject(argsStruct->thread, NS_GET_IID(nsITestProxy), foo, NS_PROXY_SYNC, (void**)&proxyObject); if (proxyObject) { @@ -307,7 +307,7 @@ void TestCase_nsISupports(void *arg) PR_ASSERT(foo); - manager->GetProxyForObject(argsStruct->thread, NS_GET_IID(nsITestProxy), foo, PROXY_SYNC, (void**)&proxyObject); + manager->GetProxyForObject(argsStruct->thread, NS_GET_IID(nsITestProxy), foo, NS_PROXY_SYNC, (void**)&proxyObject); if (proxyObject != nsnull) { @@ -368,7 +368,7 @@ static void PR_CALLBACK EventLoop( void *arg ) PR_ASSERT(foo); - manager->GetProxyForObject(gEventThread, NS_GET_IID(nsITestProxy), foo, PROXY_SYNC, (void**)&proxyObject); + manager->GetProxyForObject(gEventThread, NS_GET_IID(nsITestProxy), foo, NS_PROXY_SYNC, (void**)&proxyObject); PRInt32 a; proxyObject->Test(1, 2, &a); diff --git a/mozilla/xpcom/tests/TestPipes.cpp b/mozilla/xpcom/tests/TestPipes.cpp index d93d3922941..834348f9c9f 100644 --- a/mozilla/xpcom/tests/TestPipes.cpp +++ b/mozilla/xpcom/tests/TestPipes.cpp @@ -135,7 +135,7 @@ TestPipe(nsIInputStream* in, nsIOutputStream* out) if (receiver == nsnull) return NS_ERROR_OUT_OF_MEMORY; NS_ADDREF(receiver); - rv = NS_NewThread("TestPipe", receiver, &thread); + rv = NS_NewThread(&thread, receiver, "TestPipe"); if (NS_FAILED(rv)) return rv; PRUint32 total = 0; @@ -248,7 +248,7 @@ TestShortWrites(nsIInputStream* in, nsIOutputStream* out) if (receiver == nsnull) return NS_ERROR_OUT_OF_MEMORY; NS_ADDREF(receiver); - rv = NS_NewThread("TestShortWrites", receiver, &thread); + rv = NS_NewThread(&thread, receiver, "TestShortWrites"); if (NS_FAILED(rv)) return rv; PRUint32 total = 0; @@ -473,7 +473,7 @@ TestChainedPipes() if (pump == nsnull) return NS_ERROR_OUT_OF_MEMORY; NS_ADDREF(pump); - rv = NS_NewThread("TestChainedPipes.pump", pump, &thread); + rv = NS_NewThread(&thread, pump, "TestChainedPipes.pump"); if (NS_FAILED(rv)) return rv; nsIThread* receiverThread; @@ -481,7 +481,7 @@ TestChainedPipes() if (receiver == nsnull) return NS_ERROR_OUT_OF_MEMORY; NS_ADDREF(receiver); - rv = NS_NewThread("TestChainedPipes.receiver", receiver, &receiverThread); + rv = NS_NewThread(&receiverThread, receiver, "TestChainedPipes.receiver"); if (NS_FAILED(rv)) return rv; PRUint32 total = 0; diff --git a/mozilla/xpcom/tests/TestThreads.cpp b/mozilla/xpcom/tests/TestThreads.cpp index 8bb4916dbb7..34f0ed74f33 100644 --- a/mozilla/xpcom/tests/TestThreads.cpp +++ b/mozilla/xpcom/tests/TestThreads.cpp @@ -78,12 +78,12 @@ TestThreads() { nsresult rv; - nsCOMPtr task = new nsRunner(0); - if (!task) + nsCOMPtr event = new nsRunner(0); + if (!event) return NS_ERROR_OUT_OF_MEMORY; nsCOMPtr runner; - rv = NS_NewThread("TestThreads", task, getter_AddRefs(runner)); + rv = NS_NewThread(getter_AddRefs(runner), event, "TestThreads"); if (NS_FAILED(rv)) { printf("failed to create thread\n"); return rv; @@ -155,7 +155,7 @@ static int Stress(int loops, int threads) for (k = 0; k < threads; k++) { nsCOMPtr t; - nsresult rv = NS_NewThread("", new nsStressRunner(k), getter_AddRefs(t)); + nsresult rv = NS_NewThread(getter_AddRefs(t), new nsStressRunner(k)); NS_ASSERTION(NS_SUCCEEDED(rv), "can't create thread"); NS_ADDREF(array[k] = t); } diff --git a/mozilla/xpcom/threads/TimerThread.cpp b/mozilla/xpcom/threads/TimerThread.cpp index 0885914894a..56afc2737a3 100644 --- a/mozilla/xpcom/threads/TimerThread.cpp +++ b/mozilla/xpcom/threads/TimerThread.cpp @@ -111,7 +111,7 @@ nsresult TimerThread::Init() if (NS_SUCCEEDED(rv)) { // We hold on to mThread to keep the thread alive. - rv = NS_NewThread("xpcom.timer", this, getter_AddRefs(mThread)); + rv = NS_NewThread(getter_AddRefs(mThread), this, "xpcom.timer"); if (NS_FAILED(rv)) { mThread = nsnull; } diff --git a/mozilla/xpcom/threads/nsIEventTarget.idl b/mozilla/xpcom/threads/nsIEventTarget.idl index 24ddc0325df..fc856a70f0a 100644 --- a/mozilla/xpcom/threads/nsIEventTarget.idl +++ b/mozilla/xpcom/threads/nsIEventTarget.idl @@ -51,6 +51,8 @@ interface nsIEventTarget : nsISupports * NOTE: Calling dispatch with DISPATCH_SYNC may have the side-effect of * processing other events on the current thread while waiting for the given * event to be processed. This method is thread-safe and re-entrant. + * + * @throws NS_ERROR_INVALID_ARG if event is null. */ void dispatch(in nsIRunnable event, in unsigned long flags); const unsigned long DISPATCH_NORMAL = 0; diff --git a/mozilla/xpcom/threads/nsThread.cpp b/mozilla/xpcom/threads/nsThread.cpp index 6d942e748c6..a53991719fa 100644 --- a/mozilla/xpcom/threads/nsThread.cpp +++ b/mozilla/xpcom/threads/nsThread.cpp @@ -290,24 +290,26 @@ nsThread::PutEvent(nsIRunnable *event, PRUint32 dispatchFlags) } NS_IMETHODIMP -nsThread::Dispatch(nsIRunnable *runnable, PRUint32 flags) +nsThread::Dispatch(nsIRunnable *event, PRUint32 flags) { - LOG(("THRD(%p) Dispatch [%p %x]\n", this, runnable, flags)); + LOG(("THRD(%p) Dispatch [%p %x]\n", this, event, flags)); + NS_ENSURE_ARG_POINTER(event); NS_ENSURE_STATE(mThread); - if (flags == DISPATCH_NORMAL) { - PutEvent(runnable, flags); - } else if (flags & DISPATCH_SYNC) { + if (flags & DISPATCH_SYNC) { nsCOMPtr thread; nsThreadManager::get()->GetCurrentThread(getter_AddRefs(thread)); NS_ENSURE_STATE(thread); - nsRefPtr event = new nsThreadSyncDispatch(runnable); + nsRefPtr event = new nsThreadSyncDispatch(event); PutEvent(event, flags); while (event->IsPending()) thread->ProcessNextEvent(); + } else { + NS_ASSERTION(flags == NS_DISPATCH_NORMAL, "unexpected dispatch flags"); + PutEvent(event, flags); } return NS_OK; } diff --git a/mozilla/xpcom/threads/nsThreadPool.cpp b/mozilla/xpcom/threads/nsThreadPool.cpp index b4410dab392..ffeacd4a0d2 100644 --- a/mozilla/xpcom/threads/nsThreadPool.cpp +++ b/mozilla/xpcom/threads/nsThreadPool.cpp @@ -138,14 +138,14 @@ nsThreadPool::ShutdownThread(nsIThread *thread) NS_ASSERTION(!NS_IsMainThread(), "wrong thread"); - nsCOMPtr mainThread = do_GetMainThread(); - nsCOMPtr doomed; - NS_GetProxyForObject(mainThread, NS_GET_IID(nsIThread), thread, - PROXY_ASYNC, getter_AddRefs(doomed)); - NS_ASSERTION(doomed, "failed to construct proxy"); - if (doomed) + NS_GetProxyForObject(NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIThread), thread, + NS_PROXY_ASYNC, getter_AddRefs(doomed)); + if (doomed) { doomed->Shutdown(); + } else { + NS_WARNING("failed to construct proxy to main thread"); + } } NS_IMETHODIMP @@ -221,9 +221,7 @@ nsThreadPool::Dispatch(nsIRunnable *event, PRUint32 flags) NS_ENSURE_STATE(!mShutdown); - if (flags == DISPATCH_NORMAL) { - PutEvent(event); - } else if (flags & DISPATCH_SYNC) { + if (flags & DISPATCH_SYNC) { nsCOMPtr thread; nsThreadManager::get()->GetCurrentThread(getter_AddRefs(thread)); NS_ENSURE_STATE(thread); @@ -233,6 +231,9 @@ nsThreadPool::Dispatch(nsIRunnable *event, PRUint32 flags) while (wrapper->IsPending()) thread->ProcessNextEvent(); + } else { + NS_ASSERTION(flags == NS_DISPATCH_NORMAL, "unexpected dispatch flags"); + PutEvent(event); } return NS_OK; } diff --git a/mozilla/xpcom/threads/nsThreadUtils.cpp b/mozilla/xpcom/threads/nsThreadUtils.cpp index 743bb51a388..a59ec951a17 100644 --- a/mozilla/xpcom/threads/nsThreadUtils.cpp +++ b/mozilla/xpcom/threads/nsThreadUtils.cpp @@ -51,11 +51,11 @@ nsRunnable::Run() //----------------------------------------------------------------------------- NS_COM NS_METHOD -NS_NewThread(const nsACString &name, nsIRunnable *runnable, nsIThread **result) +NS_NewThread(nsIThread **result, nsIRunnable *event, const nsACString &name) { nsresult rv = nsThreadManager::get()->nsThreadManager::NewThread(name, result); - if (NS_SUCCEEDED(rv)) - rv = (*result)->Dispatch(runnable, NS_DISPATCH_NORMAL); + if (NS_SUCCEEDED(rv) && event) + rv = (*result)->Dispatch(event, NS_DISPATCH_NORMAL); return rv; } @@ -72,7 +72,7 @@ NS_GetMainThread(nsIThread **result) } NS_COM NS_METHOD -NS_GetThread(const nsACString &name, nsIThread **result) +NS_GetThread(nsIThread **result, const nsACString &name) { return nsThreadManager::get()->nsThreadManager::GetThread(name, result); } @@ -84,3 +84,48 @@ NS_IsMainThread() nsThreadManager::get()->nsThreadManager::GetIsMainThread(&result); return result; } + +NS_COM NS_METHOD +NS_DispatchToCurrentThread(nsIRunnable *event) +{ + nsCOMPtr thread; + nsresult rv = nsThreadManager::get()-> + nsThreadManager::GetCurrentThread(getter_AddRefs(thread)); + NS_ENSURE_SUCCESS(rv, rv); + + return thread->Dispatch(event, NS_DISPATCH_NORMAL); +} + +NS_COM NS_METHOD +NS_DispatchToMainThread(nsIRunnable *event, PRUint32 dispatchFlags) +{ + nsCOMPtr thread; + nsresult rv = nsThreadManager::get()-> + nsThreadManager::GetMainThread(getter_AddRefs(thread)); + NS_ENSURE_SUCCESS(rv, rv); + + return thread->Dispatch(event, dispatchFlags); +} + +NS_COM NS_METHOD +NS_ProcessPendingEvents(nsIThread *thread, PRIntervalTime timeout) +{ + PRIntervalTime start = PR_IntervalNow(); + + nsCOMPtr current; + if (!thread) { + current = do_GetCurrentThread(); + thread = current.get(); + } + + nsresult rv; + PRBool val; + while (NS_SUCCEEDED(thread->HasPendingEvents(&val)) && val) { + rv = thread->ProcessNextEvent(); + if (NS_FAILED(rv)) + break; + if (PR_IntervalNow() - start > timeout) + break; + } + return rv; +} diff --git a/mozilla/xpcom/threads/nsThreadUtils.h b/mozilla/xpcom/threads/nsThreadUtils.h index f145bc25b01..93a7b83e632 100644 --- a/mozilla/xpcom/threads/nsThreadUtils.h +++ b/mozilla/xpcom/threads/nsThreadUtils.h @@ -42,85 +42,175 @@ #include "nsIRunnable.h" #include "nsIThread.h" #include "nsCOMPtr.h" -#include "nsStringGlue.h" - -class nsIThread; - -//----------------------------------------------------------------------------- -// This class is designed to be subclassed. +#include "prinrval.h" #ifdef MOZILLA_INTERNAL_API -#undef IMETHOD_VISIBILITY -#define IMETHOD_VISIBILITY NS_VISIBILITY_DEFAULT +# include "nsString.h" +# define NS_THREADUTILS_METHOD_(x) extern NS_COM NS_METHOD_(x) +#else +# include "nsXPCOMCID.h" +# include "nsStringAPI.h" +# include "nsIThreadManager.h" +# include "nsServiceManagerUtils.h" +# define NS_THREADUTILS_METHOD_(x) inline NS_METHOD_(x) +#endif +#define NS_THREADUTILS_METHOD NS_THREADUTILS_METHOD_(nsresult) -class NS_COM nsRunnable : public nsIRunnable -{ -public: - NS_DECL_ISUPPORTS - NS_DECL_NSIRUNNABLE - - nsRunnable() { - } - -protected: - virtual ~nsRunnable() { - } -}; - -#undef IMETHOD_VISIBILITY -#define IMETHOD_VISIBILITY NS_VISIBILITY_HIDDEN +class nsIThread; //----------------------------------------------------------------------------- // These methods are alternatives to the methods on nsIThreadManager, provided // for convenience. /** - * Create a new thread, and optionally provide an initial task for the thread. - * @param name - * The name of the thread (may be empty). - * @param runnable - * The initial task to run on this thread. + * Create a new thread, and optionally provide an initial event for the thread. + * * @param result - * The resulting thread. + * The resulting nsIThread object. + * @param event + * The initial event to run on this thread. This parameter can be null. + * @param name + * The name of the thread, which must be unique, or the empty string to + * create an anonymous thread. */ -extern NS_COM NS_METHOD -NS_NewThread(const nsACString &name, nsIRunnable *runnable, nsIThread **result); +NS_THREADUTILS_METHOD +NS_NewThread(nsIThread **result, nsIRunnable *event = nsnull, + const nsACString &name = EmptyCString()); /** - * Equivalent to nsIThreadManager::GetCurrentThread. + * Get a reference to the current thread. + * + * @param result + * The resulting nsIThread object. */ -extern NS_COM NS_METHOD +NS_THREADUTILS_METHOD NS_GetCurrentThread(nsIThread **result); /** - * Equivalent to nsIThreadManager::GetMainThread. + * Get a reference to the main thread. + * + * @param result + * The resulting nsIThread object. */ -extern NS_COM NS_METHOD +NS_THREADUTILS_METHOD NS_GetMainThread(nsIThread **result); /** - * Equivalent to nsIThreadManager::GetThread. + * Get a reference to the thread with the given name. + * + * @param result + * The resulting nsIThread object. */ -extern NS_COM NS_METHOD -NS_GetThread(const nsACString &name, nsIThread **result); +NS_THREADUTILS_METHOD +NS_GetThread(nsIThread **result, const nsACString &name); /** - * Equivalent to nsIThreadManager::GetIsMainThread. + * Test to see if the current thread is the main thread. + * + * @returns PR_TRUE if the current thread is the main thread, and PR_FALSE + * otherwise. */ -extern NS_COM PRBool +NS_THREADUTILS_METHOD_(PRBool) NS_IsMainThread(); -#else // MOZILLA_INTERNAL_API -#include "nsXPCOMCID.h" -#include "nsIThreadManager.h" -#include "nsServiceManagerUtils.h" +/** + * Dispatch the given event to the current thread. + * + * @param event + * The event to dispatch. + */ +NS_THREADUTILS_METHOD +NS_DispatchToCurrentThread(nsIRunnable *event); /** - * XPCOM glue compatible versions + * Dispatch the given event to the main thread. + * + * @param event + * The event to dispatch. + * @param dispatchFlags + * The flags to pass to the main thread's dispatch method. */ +NS_THREADUTILS_METHOD +NS_DispatchToMainThread(nsIRunnable *event, + PRUint32 dispatchFlags = NS_DISPATCH_NORMAL); + +/** + * Process all pending events for the given thread before returning. This + * method simply calls ProcessNextEvent on the thread while HasPendingEvents + * continues to return true and the time spent in NS_ProcessPendingEvents + * does not exceed the given timeout value. + * + * @param thread + * The thread object for which to process pending events. If null, + * then events will be processed for the current thread. + * @param timeout + * The maximum number of milliseconds to spend processing pending + * events. Events are not pre-empted to honor this timeout. Rather, + * the timeout value is simply used to determine whether or not to + * process another event. Pass PR_INTERVAL_NO_TIMEOUT to specify no + * timeout. + */ +NS_THREADUTILS_METHOD +NS_ProcessPendingEvents(nsIThread *thread, + PRIntervalTime timeout = PR_INTERVAL_NO_TIMEOUT); + +//----------------------------------------------------------------------------- + +/** + * Variant on NS_NewThread. + */ +inline NS_METHOD +NS_NewThread(nsIThread **result, nsIRunnable *event, const char *name) { + NS_ASSERTION(name, "thread name must not be null"); + return NS_NewThread(result, event, nsDependentCString(name)); +} + +/** + * Variant on NS_GetThread. + */ +inline NS_METHOD +NS_GetThread(nsIThread **result, const char *name) { + NS_ASSERTION(name, "thread name must not be null"); + return NS_GetThread(result, nsDependentCString(name)); +} + +//----------------------------------------------------------------------------- +// Helpers that work with nsCOMPtr: + +inline already_AddRefed +do_GetCurrentThread() { + nsIThread *thread = nsnull; + NS_GetCurrentThread(&thread); + return already_AddRefed(thread); +} + +inline already_AddRefed +do_GetMainThread() { + nsIThread *thread = nsnull; + NS_GetMainThread(&thread); + return already_AddRefed(thread); +} + +inline already_AddRefed +do_GetThread(const nsACString &name) { + nsIThread *thread = nsnull; + NS_GetThread(&thread, name); + return already_AddRefed(thread); +} + +inline already_AddRefed +do_GetThread(const char *name) { + nsIThread *thread = nsnull; + NS_GetThread(&thread, name); + return already_AddRefed(thread); +} + +//----------------------------------------------------------------------------- + +#ifndef MOZILLA_INTERNAL_API inline NS_METHOD -NS_NewThread(const nsACString &name, nsIRunnable *runnable, nsIThread **result) { +NS_NewThread(nsIThread **result, nsIRunnable *event, const nsACString &name) { nsresult rv; nsCOMPtr mgr = do_GetService(NS_THREADMANAGER_CONTRACTID, &rv); @@ -129,8 +219,8 @@ NS_NewThread(const nsACString &name, nsIRunnable *runnable, nsIThread **result) rv = mgr->NewThread(name, result); NS_ENSURE_SUCCESS(rv, rv); - if (runnable) - rv = (*result)->Dispatch(runnable, NS_DISPATCH_NORMAL); + if (event) + rv = (*result)->Dispatch(event, NS_DISPATCH_NORMAL); return rv; } @@ -155,7 +245,7 @@ NS_GetMainThread(nsIThread **result) { } inline NS_METHOD -NS_GetThread(const nsACString &name, nsIThread **result) { +NS_GetThread(nsIThread **result, const nsACString &name) { nsresult rv; nsCOMPtr mgr = do_GetService(NS_THREADMANAGER_CONTRACTID, &rv); @@ -174,69 +264,74 @@ NS_IsMainThread() { return result; } - -#endif // MOZILLA_INTERNAL_API - -/** - * Variant on NS_NewThread. - */ inline NS_METHOD -NS_NewThread(const char *name, nsIRunnable *runnable, nsIThread **result) { - return NS_NewThread(nsDependentCString(name), runnable, result); -} - -/** - * Variant on NS_GetThread. - */ -inline NS_METHOD -NS_GetThread(const char *name, nsIThread **result) { - return NS_GetThread(nsDependentCString(name), result); -} - -/** - * Helpers that work with nsCOMPtr. - */ - -inline already_AddRefed -do_GetCurrentThread() { - nsIThread *thread = nsnull; - NS_GetCurrentThread(&thread); - return already_AddRefed(thread); -} - -inline already_AddRefed -do_GetMainThread() { - nsIThread *thread = nsnull; - NS_GetMainThread(&thread); - return already_AddRefed(thread); -} - -inline already_AddRefed -do_GetThread(const nsACString &name) { - nsIThread *thread = nsnull; - NS_GetThread(name, &thread); - return already_AddRefed(thread); -} - -inline already_AddRefed -do_GetThread(const char *name) { - nsIThread *thread = nsnull; - NS_GetThread(name, &thread); - return already_AddRefed(thread); -} - -/** - * Run all pending tasks for a given thread before returning. - */ -inline NS_METHOD -NS_ProcessPendingEvents(nsIThread *thread) +NS_DispatchToCurrentThread(nsIRunnable *event) { + nsCOMPtr thread; + nsresult rv = NS_GetCurrentThread(getter_AddRefs(thread)); + if (NS_FAILED(rv)) + return rv; + return thread->Dispatch(event, NS_DISPATCH_NORMAL); +} + +inline NS_METHOD +NS_DispatchToMainThread(nsIRunnable *event, PRUint32 dispatchFlags) +{ + nsCOMPtr thread; + nsresult rv = NS_GetMainThread(getter_AddRefs(thread)); + if (NS_FAILED(rv)) + return rv; + return thread->Dispatch(event, dispatchFlags); +} + +inline NS_METHOD +NS_ProcessPendingEvents(nsIThread *thread, PRIntervalTime timeout) +{ + PRIntervalTime start = PR_IntervalNow(); + + nsCOMPtr current; + if (!thread) { + current = do_GetCurrentThread(); + thread = current.get(); + } + nsresult rv; PRBool val; while (NS_SUCCEEDED(thread->HasPendingEvents(&val)) && val) { rv = thread->ProcessNextEvent(); + if (NS_FAILED(rv)) + break; + if (PR_IntervalNow() - start > timeout) + break; } return rv; } +#else // MOZILLA_INTERNAL_API + +//----------------------------------------------------------------------------- +// This class is designed to be subclassed. + +#undef IMETHOD_VISIBILITY +#define IMETHOD_VISIBILITY NS_VISIBILITY_DEFAULT + +class NS_COM nsRunnable : public nsIRunnable +{ +public: + NS_DECL_ISUPPORTS + NS_DECL_NSIRUNNABLE + + nsRunnable() { + } + +protected: + virtual ~nsRunnable() { + } +}; + +#undef IMETHOD_VISIBILITY +#define IMETHOD_VISIBILITY NS_VISIBILITY_HIDDEN + +#endif // MOZILLA_INTERNAL_API + #endif // nsThreadUtils_h__ diff --git a/mozilla/xpfe/browser/src/nsBrowserInstance.cpp b/mozilla/xpfe/browser/src/nsBrowserInstance.cpp index 078e2a0aa14..d30c4292868 100644 --- a/mozilla/xpfe/browser/src/nsBrowserInstance.cpp +++ b/mozilla/xpfe/browser/src/nsBrowserInstance.cpp @@ -69,6 +69,7 @@ #include "nsIWebBrowserChrome.h" #include "nsIWindowWatcher.h" #include "nsCOMPtr.h" +#include "nsAutoPtr.h" #include "nsXPIDLString.h" #include "nsReadableUtils.h" #include "nsThreadUtils.h" @@ -108,7 +109,6 @@ /* Define Class IDs */ static NS_DEFINE_CID(kPrefServiceCID, NS_PREF_CID); -static NS_DEFINE_CID(kProxyObjectManagerCID, NS_PROXYEVENT_MANAGER_CID); #ifdef DEBUG static int APP_DEBUG = 0; // Set to 1 in debugger to turn on debugging. @@ -129,7 +129,6 @@ const char *kIgnoreOverrideMilestone = "ignore"; //***************************************************************************** #ifdef ENABLE_PAGE_CYCLER -#include "nsIProxyObjectManager.h" #include "nsITimer.h" static void TimesUp(nsITimer *aTimer, void *aClosure); @@ -230,14 +229,11 @@ public: nsCOMPtr appStartup = do_GetService(NS_APPSTARTUP_CONTRACTID, &rv); if(NS_FAILED(rv)) return rv; - nsCOMPtr pIProxyObjectManager = - do_GetService(kProxyObjectManagerCID, &rv); - if(NS_FAILED(rv)) return rv; - nsCOMPtr thread = do_GetCurrentThread(); nsCOMPtr appStartupProxy; - rv = pIProxyObjectManager->GetProxyForObject(thread, NS_GET_IID(nsIAppStartup), - appStartup, PROXY_ASYNC | PROXY_ALWAYS, - getter_AddRefs(appStartupProxy)); + rv = NS_GetProxyForObject(NS_PROXY_TO_CURRENT_THREAD, + NS_GET_IID(nsIAppStartup), appStartup, + NS_PROXY_ASYNC | NS_PROXY_ALWAYS, + getter_AddRefs(appStartupProxy)); (void)appStartupProxy->Quit(nsIAppStartup::eAttemptQuit); return NS_ERROR_FAILURE; @@ -276,14 +272,9 @@ public: // otherwise we'll run the risk of confusing the docshell // (which notifies observers before propagating the // DocumentEndLoad up to parent docshells). - nsCOMPtr thread = do_GetCurrentThread(); - rv = NS_ERROR_FAILURE; - - if (thread) { - nsCOMPtr ev = new PageCyclerEvent(this); - if (ev) - rv = thread->Dispatch(ev, NS_DISPATCH_NORMAL); - } + nsCOMPtr ev = new PageCyclerEvent(this); + if (ev) + rv = NS_DispatchToCurrentThread(ev); if (NS_FAILED(rv)) { printf("######### PageCycler couldn't asynchronously load: %s\n", NS_ConvertUTF16toUTF8(mLastRequest).get()); diff --git a/mozilla/xpinstall/src/nsInstall.cpp b/mozilla/xpinstall/src/nsInstall.cpp index 7a1252c18bd..9754fbb7f28 100644 --- a/mozilla/xpinstall/src/nsInstall.cpp +++ b/mozilla/xpinstall/src/nsInstall.cpp @@ -1406,10 +1406,11 @@ nsPIXPIProxy* nsInstall::GetUIThreadProxy() do_GetService(kProxyObjectManagerCID, &rv); if (NS_SUCCEEDED(rv)) { - nsCOMPtr thread = do_GetMainThread(); nsCOMPtr tmp(do_QueryInterface(new nsXPIProxy())); - rv = pmgr->GetProxyForObject( thread, NS_GET_IID(nsPIXPIProxy), - tmp, PROXY_SYNC | PROXY_ALWAYS, getter_AddRefs(mUIThreadProxy) ); + rv = pmgr->GetProxyForObject( NS_PROXY_TO_MAIN_THREAD, + NS_GET_IID(nsPIXPIProxy), tmp, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, + getter_AddRefs(mUIThreadProxy) ); } } diff --git a/mozilla/xpinstall/src/nsXPITriggerInfo.cpp b/mozilla/xpinstall/src/nsXPITriggerInfo.cpp index 61ab6d7a4af..bcb82a20cb8 100644 --- a/mozilla/xpinstall/src/nsXPITriggerInfo.cpp +++ b/mozilla/xpinstall/src/nsXPITriggerInfo.cpp @@ -352,7 +352,7 @@ void nsXPITriggerInfo::SendStatus(const PRUnichar* URL, PRInt32 status) // JSContext from dying before we handle this event. event->ref = mGlobalWrapper; - mThread->Dispatch(event, NS_DISPATCH_NORMAL); + rv = mThread->Dispatch(event, NS_DISPATCH_NORMAL); } else rv = NS_ERROR_OUT_OF_MEMORY; @@ -361,6 +361,7 @@ void nsXPITriggerInfo::SendStatus(const PRUnichar* URL, PRInt32 status) { // couldn't get event queue -- maybe window is gone or // some similarly catastrophic occurrance + NS_WARNING("failed to dispatch XPITriggerEvent"); } } } diff --git a/mozilla/xpinstall/src/nsXPInstallManager.cpp b/mozilla/xpinstall/src/nsXPInstallManager.cpp index 6ab7be24201..072e5279a70 100644 --- a/mozilla/xpinstall/src/nsXPInstallManager.cpp +++ b/mozilla/xpinstall/src/nsXPInstallManager.cpp @@ -549,11 +549,10 @@ NS_IMETHODIMP nsXPInstallManager::Observe( nsISupports *aSubject, do_GetService(kProxyObjectManagerCID, &rv); if (pmgr) { - nsCOMPtr mainThread = do_GetMainThread(); - rv = pmgr->GetProxyForObject( mainThread, + rv = pmgr->GetProxyForObject( NS_PROXY_TO_MAIN_THREAD, NS_GET_IID(nsIXPIProgressDialog), dlg, - PROXY_SYNC | PROXY_ALWAYS, + NS_PROXY_SYNC | NS_PROXY_ALWAYS, getter_AddRefs(mDlg) ); } }