diff --git a/mozilla/content/base/public/nsContentUtils.h b/mozilla/content/base/public/nsContentUtils.h index 1dcdde2d695..2296d99a71a 100644 --- a/mozilla/content/base/public/nsContentUtils.h +++ b/mozilla/content/base/public/nsContentUtils.h @@ -80,6 +80,7 @@ class nsIStringBundle; class nsIContentPolicy; class nsILineBreaker; class nsIWordBreaker; +class nsIEventQueueService; #ifdef MOZ_XTF class nsIXTFService; #endif @@ -572,6 +573,14 @@ public: * Return the content policy service */ static nsIContentPolicy *GetContentPolicy(); + + /** + * Return the event queue service + */ + static nsIEventQueueService* EventQueueService() + { + return sEventQueueService; + } private: static nsresult doReparentContentWrapper(nsIContent *aChild, @@ -618,6 +627,8 @@ private: static nsILineBreaker* sLineBreaker; static nsIWordBreaker* sWordBreaker; + static nsIEventQueueService* sEventQueueService; + // Holds pointers to nsISupports* that should be released at shutdown static nsVoidArray* sPtrsToPtrsToRelease; diff --git a/mozilla/content/base/src/nsContentUtils.cpp b/mozilla/content/base/src/nsContentUtils.cpp index eb0cdc1da17..ac1abb09352 100644 --- a/mozilla/content/base/src/nsContentUtils.cpp +++ b/mozilla/content/base/src/nsContentUtils.cpp @@ -112,6 +112,7 @@ static NS_DEFINE_CID(kXTFServiceCID, NS_XTFSERVICE_CID); #include "nsLWBrkCIID.h" #include "nsILineBreaker.h" #include "nsIWordBreaker.h" +#include "nsIEventQueueService.h" // for ReportToConsole #include "nsIStringBundle.h" @@ -141,6 +142,7 @@ nsIContentPolicy *nsContentUtils::sContentPolicyService; PRBool nsContentUtils::sTriedToGetContentPolicy = PR_FALSE; nsILineBreaker *nsContentUtils::sLineBreaker = nsnull; nsIWordBreaker *nsContentUtils::sWordBreaker = nsnull; +nsIEventQueueService *nsContentUtils::sEventQueueService; nsVoidArray *nsContentUtils::sPtrsToPtrsToRelease; @@ -196,6 +198,9 @@ nsContentUtils::Init() rv = CallGetService(NS_WBRK_CONTRACTID, &sWordBreaker); NS_ENSURE_SUCCESS(rv, rv); + rv = CallGetService(NS_EVENTQUEUESERVICE_CONTRACTID, &sEventQueueService); + NS_ENSURE_SUCCESS(rv, rv); + // Ignore failure and just don't load images rv = CallGetService("@mozilla.org/image/loader;1", &sImgLoader); if (NS_FAILED(rv)) { diff --git a/mozilla/content/base/src/nsDocument.cpp b/mozilla/content/base/src/nsDocument.cpp index 9e1a2bf07fb..e9d58b8a80d 100644 --- a/mozilla/content/base/src/nsDocument.cpp +++ b/mozilla/content/base/src/nsDocument.cpp @@ -5104,15 +5104,10 @@ nsDocument::UnblockOnload(PRBool aFireSync) void nsDocument::PostUnblockOnloadEvent() { - nsCOMPtr eventQService = - do_GetService("@mozilla.org/event-queue-service;1"); - if (!eventQService) { - return; - } - nsCOMPtr eventQ; - eventQService->GetSpecialEventQueue(nsIEventQueueService::UI_THREAD_EVENT_QUEUE, - getter_AddRefs(eventQ)); + nsContentUtils::EventQueueService()-> + GetSpecialEventQueue(nsIEventQueueService::UI_THREAD_EVENT_QUEUE, + getter_AddRefs(eventQ)); if (!eventQ) { return; } diff --git a/mozilla/content/base/src/nsImageLoadingContent.cpp b/mozilla/content/base/src/nsImageLoadingContent.cpp index fc0ee8f79c1..35f0e4026ad 100644 --- a/mozilla/content/base/src/nsImageLoadingContent.cpp +++ b/mozilla/content/base/src/nsImageLoadingContent.cpp @@ -687,16 +687,12 @@ nsImageLoadingContent::FireEvent(const nsAString& aEventType) // no use to fire events if there is no document.... return NS_OK; } - nsresult rv; - nsCOMPtr eventQService = - do_GetService("@mozilla.org/event-queue-service;1", &rv); - NS_ENSURE_TRUE(eventQService, rv); - nsCOMPtr eventQ; // Use the UI thread event queue (though we should not be getting called from // off the UI thread in any case....) - rv = eventQService->GetSpecialEventQueue(nsIEventQueueService::UI_THREAD_EVENT_QUEUE, - getter_AddRefs(eventQ)); + nsresult rv = nsContentUtils::EventQueueService()-> + GetSpecialEventQueue(nsIEventQueueService::UI_THREAD_EVENT_QUEUE, + getter_AddRefs(eventQ)); NS_ENSURE_TRUE(eventQ, rv); nsIPresShell *shell = document->GetShellAt(0); diff --git a/mozilla/layout/base/nsPresShell.cpp b/mozilla/layout/base/nsPresShell.cpp index ccb47523109..1cd908afc9a 100644 --- a/mozilla/layout/base/nsPresShell.cpp +++ b/mozilla/layout/base/nsPresShell.cpp @@ -207,7 +207,6 @@ static void ColorToString(nscolor aColor, nsAutoString &aString); // Class ID's static NS_DEFINE_CID(kFrameSelectionCID, NS_FRAMESELECTION_CID); -static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); #undef NOISY @@ -1376,7 +1375,6 @@ protected: PRInt16 mSelectionFlags; PRPackedBool mBatchReflows; // When set to true, the pres shell batches reflow commands. PresShellViewEventListener *mViewEventListener; - nsCOMPtr mEventQueueService; nsCOMPtr mReflowEventQueue; FrameArena mFrameArena; StackArena* mStackArena; @@ -1749,14 +1747,6 @@ PresShell::Init(nsIDocument* aDocument, } } - mEventQueueService = do_GetService(kEventQueueServiceCID, &result); - - if (!mEventQueueService) { - NS_WARNING("couldn't get event queue service"); - mStyleSet = nsnull; - return NS_ERROR_FAILURE; - } - if (gMaxRCProcessingTime == -1) { gMaxRCProcessingTime = nsContentUtils::GetIntPref("layout.reflow.timeslice", @@ -1908,8 +1898,9 @@ PresShell::Destroy() mPostedReplaces = nsnull; mReflowEventQueue = nsnull; nsCOMPtr eventQueue; - mEventQueueService->GetSpecialEventQueue(nsIEventQueueService::UI_THREAD_EVENT_QUEUE, - getter_AddRefs(eventQueue)); + nsContentUtils::EventQueueService()-> + GetSpecialEventQueue(nsIEventQueueService::UI_THREAD_EVENT_QUEUE, + getter_AddRefs(eventQueue)); eventQueue->RevokeEvents(this); CancelAllReflowCommands(); @@ -3900,7 +3891,7 @@ PresShell::DequeuePostedEventFor(nsIFrame* aFrame) // Dequeue it from the event queue nsCOMPtr eventQueue; - mEventQueueService-> + nsContentUtils::EventQueueService()-> GetSpecialEventQueue(nsIEventQueueService::UI_THREAD_EVENT_QUEUE, getter_AddRefs(eventQueue)); @@ -3966,7 +3957,7 @@ PresShell::CantRenderReplacedElement(nsIFrame* aFrame) // Handle this asynchronously nsCOMPtr eventQueue; - nsresult rv = mEventQueueService-> + nsresult rv = nsContentUtils::EventQueueService()-> GetSpecialEventQueue(nsIEventQueueService::UI_THREAD_EVENT_QUEUE, getter_AddRefs(eventQueue)); @@ -6562,8 +6553,9 @@ void PresShell::PostReflowEvent() { nsCOMPtr eventQueue; - mEventQueueService->GetSpecialEventQueue(nsIEventQueueService::UI_THREAD_EVENT_QUEUE, - getter_AddRefs(eventQueue)); + nsContentUtils::EventQueueService()-> + GetSpecialEventQueue(nsIEventQueueService::UI_THREAD_EVENT_QUEUE, + getter_AddRefs(eventQueue)); if (eventQueue != mReflowEventQueue && !mIsDestroying && !mIsReflowing && mReflowCommands.Count() > 0) {