From d27980931bd8e19c8f727dbc38f0a7847e9a2104 Mon Sep 17 00:00:00 2001 From: "spider%netscape.com" Date: Mon, 12 Oct 1998 20:16:50 +0000 Subject: [PATCH] Move ObserverManager to XPCOM ServiceManager. Fix Netlib bug where data not complete git-svn-id: svn://10.0.0.236/trunk@12601 18797224-902f-48f8-a5cc-f745e15eee43 --- .../parser/calxml/src/nsCalXMLContentSink.cpp | 17 ++++++++-- .../modules/shell/inc/nsCalendarShell.h | 7 ++--- .../modules/shell/public/nsICalendarShell.h | 4 --- .../modules/shell/src/nsCalendarShell.cpp | 31 ++++--------------- .../modules/shell/src/nsCalendarWidget.cpp | 3 -- .../ui/canvas/src/nsCalTimebarCanvas.cpp | 11 ++++++- .../ui/context/src/nsCalTimeContext.cpp | 23 ++++++++++++-- .../controller/src/nsCalContextController.cpp | 14 ++++++++- .../modules/ui/toolkit/inc/nsCalToolkit.h | 1 - .../observer/src/nsXPFCObserverManager.cpp | 4 ++- mozilla/xpfc/shell/src/nsShellInstance.cpp | 14 --------- mozilla/xpfc/toolkit/inc/nsXPFCToolkit.h | 5 --- mozilla/xpfc/toolkit/public/nsIXPFCToolkit.h | 4 --- mozilla/xpfc/toolkit/src/nsXPFCToolkit.cpp | 12 ------- 14 files changed, 70 insertions(+), 80 deletions(-) diff --git a/mozilla/calendar/modules/parser/calxml/src/nsCalXMLContentSink.cpp b/mozilla/calendar/modules/parser/calxml/src/nsCalXMLContentSink.cpp index 343b46dd211..74c0774b746 100644 --- a/mozilla/calendar/modules/parser/calxml/src/nsCalXMLContentSink.cpp +++ b/mozilla/calendar/modules/parser/calxml/src/nsCalXMLContentSink.cpp @@ -35,6 +35,9 @@ #include "nsxpfcCIID.h" #include "nsCalendarContainer.h" #include "nsXPFCToolkit.h" +#include "nsIServiceManager.h" +#include "nsxpfcCIID.h" +#include "nsIXPFCObserverManager.h" static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); static NS_DEFINE_IID(kIContentSinkIID, NS_ICONTENT_SINK_IID); @@ -64,6 +67,8 @@ static NS_DEFINE_IID(kIXPFCXMLContentSinkIID, NS_IXPFC_XML_CONTENT_SINK_IID); static NS_DEFINE_IID(kCXPFolderCanvas, NS_XP_FOLDER_CANVAS_CID); static NS_DEFINE_IID(kCXPItem, NS_XP_ITEM_CID); +static NS_DEFINE_IID(kCXPFCObserverManagerCID, NS_XPFC_OBSERVERMANAGER_CID); +static NS_DEFINE_IID(kIXPFCObserverManagerIID, NS_IXPFC_OBSERVERMANAGER_IID); class ControlListEntry { @@ -779,6 +784,10 @@ NS_IMETHODIMP nsCalXMLContentSink::DidBuildModel(PRInt32 aQualityLevel) nsIXPFCObserver * observer2; nsICalTimeContext * context; + + nsIXPFCObserverManager* om; + nsServiceManager::GetService(kCXPFCObserverManagerCID, kIXPFCObserverManagerIID, (nsISupports**)&om); + while(!(iterator->IsDone())) { item = (ControlListEntry *) iterator->CurrentItem(); @@ -829,7 +838,7 @@ NS_IMETHODIMP nsCalXMLContentSink::DidBuildModel(PRInt32 aQualityLevel) if (res == NS_OK) { - gXPFCToolkit->GetObserverManager()->Register(subject, observer); + om->Register(subject, observer); NS_RELEASE(observer); } @@ -848,7 +857,7 @@ NS_IMETHODIMP nsCalXMLContentSink::DidBuildModel(PRInt32 aQualityLevel) if (res == NS_OK) { - gXPFCToolkit->GetObserverManager()->Register(subject2, observer2); + om->Register(subject2, observer2); NS_RELEASE(observer2); @@ -907,7 +916,7 @@ NS_IMETHODIMP nsCalXMLContentSink::DidBuildModel(PRInt32 aQualityLevel) if (res == NS_OK) { - gXPFCToolkit->GetObserverManager()->Register(subject, observer); + om->Register(subject, observer); NS_RELEASE(observer); } @@ -950,6 +959,8 @@ NS_IMETHODIMP nsCalXMLContentSink::DidBuildModel(PRInt32 aQualityLevel) NS_RELEASE(root); + nsServiceManager::ReleaseService(kCXPFCObserverManagerCID, om); + // XXX: Should we clean up everything here? return NS_OK; } diff --git a/mozilla/calendar/modules/shell/inc/nsCalendarShell.h b/mozilla/calendar/modules/shell/inc/nsCalendarShell.h index e2cb7e2c314..0f20eaab251 100644 --- a/mozilla/calendar/modules/shell/inc/nsCalendarShell.h +++ b/mozilla/calendar/modules/shell/inc/nsCalendarShell.h @@ -62,9 +62,6 @@ public: NS_METHOD LoadPreferences(); NS_METHOD EnsureUserPath( JulianString& sPath ); - NS_IMETHOD SetObserverManager(nsIXPFCObserverManager * aObserverManager); - NS_IMETHOD_(nsIXPFCObserverManager *) GetObserverManager(); - NS_IMETHOD SetCAPISession(CAPISession aCAPISession); NS_IMETHOD_(CAPISession) GetCAPISession(); @@ -94,11 +91,13 @@ private: NS_METHOD SetDefaultPreferences(); NS_METHOD EnvVarsToValues(JulianString& s); +private: + nsIXPFCObserverManager * mObserverManager; + // XXX Should be private public: nsIShellInstance * mShellInstance ; nsICalendarContainer * mDocumentContainer ; - nsIXPFCObserverManager * mObserverManager; CAPISession mCAPISession; CAPIHandle mCAPIHandle; diff --git a/mozilla/calendar/modules/shell/public/nsICalendarShell.h b/mozilla/calendar/modules/shell/public/nsICalendarShell.h index 9f52ed27039..6853170d3e6 100644 --- a/mozilla/calendar/modules/shell/public/nsICalendarShell.h +++ b/mozilla/calendar/modules/shell/public/nsICalendarShell.h @@ -21,7 +21,6 @@ #include "nsISupports.h" #include "nsIApplicationShell.h" #include "nscore.h" -#include "nsIXPFCObserverManager.h" #include "nsIAppShell.h" #include "capi.h" @@ -44,9 +43,6 @@ public: NS_IMETHOD LoadUI() = 0; NS_IMETHOD LoadPreferences() = 0; - NS_IMETHOD SetObserverManager(nsIXPFCObserverManager * aObserverManager) = 0; - NS_IMETHOD_(nsIXPFCObserverManager *) GetObserverManager() = 0; - NS_IMETHOD SetCAPISession(CAPISession aCAPISession) = 0; NS_IMETHOD_(CAPISession) GetCAPISession() = 0; diff --git a/mozilla/calendar/modules/shell/src/nsCalendarShell.cpp b/mozilla/calendar/modules/shell/src/nsCalendarShell.cpp index 8661fafda2d..4150c627326 100644 --- a/mozilla/calendar/modules/shell/src/nsCalendarShell.cpp +++ b/mozilla/calendar/modules/shell/src/nsCalendarShell.cpp @@ -29,8 +29,6 @@ #include "icalfrdr.h" #include "nsIPref.h" #include "nsCurlParser.h" -//#include "nsCalUser.h" -//#include "nsCalLoggedInUser.h" #include "nsCalendarShell.h" #include "nscalstrings.h" #include "nsxpfcCIID.h" @@ -44,6 +42,7 @@ #include "prcvar.h" #include "nsXPFCToolkit.h" #include "nsX400Parser.h" +#include "nsxpfcCIID.h" #include "capi.h" #include "nsICapi.h" @@ -54,6 +53,8 @@ #include "nsCalUser.h" #include "nsCalendarUser.h" #include "nsCalendarModel.h" +#include "nsIServiceManager.h" + /* for CAPI to work in general form */ #include "nsCapiCallbackReader.h" @@ -141,7 +142,7 @@ nsCalendarShell::~nsCalendarShell() Logoff(); - NS_IF_RELEASE(mObserverManager); + nsServiceManager::ReleaseService(kCXPFCObserverManagerCID, mObserverManager); if (mCAPIPassword) PR_Free(mCAPIPassword); @@ -577,15 +578,7 @@ nsresult nsCalendarShell::LoadUI() * First, create the ObserverManager */ - nsresult res = nsRepository::CreateInstance(kCXPFCObserverManagerCID, - nsnull, - kIXPFCObserverManagerIID, - (void **)&mObserverManager); - - if (NS_OK != res) - return res ; - - mObserverManager->Init(); + nsServiceManager::GetService(kCXPFCObserverManagerCID, kIXPFCObserverManagerIID, (nsISupports**)&mObserverManager); /* * Now create an actual window into the world @@ -599,7 +592,7 @@ nsresult nsCalendarShell::LoadUI() nsIAppShell * appshell = nsnull; - res = QueryInterface(kIAppShellIID,(void**)&appshell); + nsresult res = QueryInterface(kIAppShellIID,(void**)&appshell); if (NS_OK != res) return res ; @@ -645,18 +638,6 @@ nsresult nsCalendarShell::LoadUI() return res ; } -nsresult nsCalendarShell::SetObserverManager(nsIXPFCObserverManager * aObserverManager) -{ - mObserverManager = aObserverManager; - return NS_OK; -} - -nsIXPFCObserverManager * nsCalendarShell::GetObserverManager() -{ - return (mObserverManager); -} - - nsresult nsCalendarShell::SetCAPIPassword(char * aCAPIPassword) { if (mCAPIPassword) diff --git a/mozilla/calendar/modules/shell/src/nsCalendarWidget.cpp b/mozilla/calendar/modules/shell/src/nsCalendarWidget.cpp index 80b7e09be8b..cc214726d73 100644 --- a/mozilla/calendar/modules/shell/src/nsCalendarWidget.cpp +++ b/mozilla/calendar/modules/shell/src/nsCalendarWidget.cpp @@ -36,7 +36,6 @@ class nsICalendarShell; #include "nsICalTimeContext.h" #include "nsICalComponent.h" #include "nsIXPFCObserver.h" -#include "nsIXPFCObserverManager.h" #include "nsIXPFCCanvasManager.h" #include "nsIXPFCCommand.h" #include "nsCalDurationCommand.h" @@ -138,8 +137,6 @@ nsresult nsCalendarWidget::Init(nsIView * aParent, NS_ADDREF(((nsIApplicationShell *)mCalendarShell)); - gXPFCToolkit->SetObserverManager(mCalendarShell->GetObserverManager()); - return NS_OK; } diff --git a/mozilla/calendar/modules/ui/canvas/src/nsCalTimebarCanvas.cpp b/mozilla/calendar/modules/ui/canvas/src/nsCalTimebarCanvas.cpp index f074b945e8f..a7df484b746 100644 --- a/mozilla/calendar/modules/ui/canvas/src/nsCalTimebarCanvas.cpp +++ b/mozilla/calendar/modules/ui/canvas/src/nsCalTimebarCanvas.cpp @@ -20,9 +20,14 @@ #include "nsCalUICIID.h" #include "nsXPFCToolkit.h" #include "nsBoxLayout.h" +#include "nsxpfcCIID.h" +#include "nsIXPFCObserverManager.h" +#include "nsIServiceManager.h" static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); static NS_DEFINE_IID(kCalTimebarCanvasCID, NS_CAL_TIMEBARCANVAS_CID); +static NS_DEFINE_IID(kCXPFCObserverManagerCID, NS_XPFC_OBSERVERMANAGER_CID); +static NS_DEFINE_IID(kIXPFCObserverManagerIID, NS_IXPFC_OBSERVERMANAGER_IID); #define LOCAL_INSET 1 @@ -317,8 +322,12 @@ nsresult nsCalTimebarCanvas :: SetChildTimeContext(nsCalTimebarCanvas * aCanvas, aContext->QueryInterface(kXPFCSubjectIID, (void **)&context_subject); context->QueryInterface(kXPFCObserverIID, (void **)&context_observer); - gXPFCToolkit->GetObserverManager()->Register(context_subject, context_observer); + nsIXPFCObserverManager* om; + nsServiceManager::GetService(kCXPFCObserverManagerCID, kIXPFCObserverManagerIID, (nsISupports**)&om); + om->Register(context_subject, context_observer); + + nsServiceManager::ReleaseService(kCXPFCObserverManagerCID, om); /* * TODO: Add the increment here for the appropriate period diff --git a/mozilla/calendar/modules/ui/context/src/nsCalTimeContext.cpp b/mozilla/calendar/modules/ui/context/src/nsCalTimeContext.cpp index 619590ea3e2..4291a528d1b 100644 --- a/mozilla/calendar/modules/ui/context/src/nsCalTimeContext.cpp +++ b/mozilla/calendar/modules/ui/context/src/nsCalTimeContext.cpp @@ -26,6 +26,10 @@ #include "math.h" #include "nscalstrings.h" #include "nsIXMLParserObject.h" +#include "nsxpfcCIID.h" +#include "nsIXPFCObserverManager.h" +#include "nsIServiceManager.h" + static NS_DEFINE_IID(kXPFCSubjectIID, NS_IXPFC_SUBJECT_IID); static NS_DEFINE_IID(kXPFCCommandIID, NS_IXPFC_COMMAND_IID); @@ -37,6 +41,9 @@ static NS_DEFINE_IID(kCalTimeContextIID, NS_ICAL_TIME_CONTEXT_IID); static NS_DEFINE_IID(kCalDateTimeCID, NS_DATETIME_CID); static NS_DEFINE_IID(kCalDateTimeIID, NS_IDATETIME_IID); +static NS_DEFINE_IID(kCXPFCObserverManagerCID, NS_XPFC_OBSERVERMANAGER_CID); +static NS_DEFINE_IID(kIXPFCObserverManagerIID, NS_IXPFC_OBSERVERMANAGER_IID); + // XXX: TODO: Simplify this code! // XXX: TODO: Much of this code should be in a nsCalTimebarContext // XXX: TODO: DO NOT USE DateTime objects for all the private data @@ -60,7 +67,12 @@ nsCalTimeContext :: nsCalTimeContext() nsCalTimeContext :: ~nsCalTimeContext() { - gXPFCToolkit->GetObserverManager()->Unregister((nsISupports*)(nsICalTimeContext*)this); + nsIXPFCObserverManager* om; + nsServiceManager::GetService(kCXPFCObserverManagerCID, kIXPFCObserverManagerIID, (nsISupports**)&om); + + om->Unregister((nsISupports*)(nsICalTimeContext*)this); + + nsServiceManager::ReleaseService(kCXPFCObserverManagerCID, om); NS_IF_RELEASE(mStartTime); NS_IF_RELEASE(mEndTime); @@ -792,7 +804,14 @@ nsresult nsCalTimeContext :: Notify(nsIXPFCCommand * aCommand) if (res != NS_OK) return res; - return(gXPFCToolkit->GetObserverManager()->Notify(subject,aCommand)); + nsIXPFCObserverManager* om; + nsServiceManager::GetService(kCXPFCObserverManagerCID, kIXPFCObserverManagerIID, (nsISupports**)&om); + + res = om->Notify(subject,aCommand); + + nsServiceManager::ReleaseService(kCXPFCObserverManagerCID, om); + + return(res); } diff --git a/mozilla/calendar/modules/ui/controller/src/nsCalContextController.cpp b/mozilla/calendar/modules/ui/controller/src/nsCalContextController.cpp index 73eadfe2fc1..5c6fa71a486 100644 --- a/mozilla/calendar/modules/ui/controller/src/nsCalContextController.cpp +++ b/mozilla/calendar/modules/ui/controller/src/nsCalContextController.cpp @@ -23,12 +23,17 @@ #include "nsCalToolkit.h" #include "nsIXPFCCommand.h" #include "nscalstrings.h" +#include "nsxpfcCIID.h" +#include "nsIXPFCObserverManager.h" +#include "nsIServiceManager.h" static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); static NS_DEFINE_IID(kCalContextControllerIID, NS_ICAL_CONTEXT_CONTROLLER_IID); static NS_DEFINE_IID(kXPFCSubjectIID, NS_IXPFC_SUBJECT_IID); static NS_DEFINE_IID(kXPFCCommandIID, NS_IXPFC_COMMAND_IID); static NS_DEFINE_IID(kXPFCCommandCID, NS_XPFC_COMMAND_CID); +static NS_DEFINE_IID(kCXPFCObserverManagerCID, NS_XPFC_OBSERVERMANAGER_CID); +static NS_DEFINE_IID(kIXPFCObserverManagerIID, NS_IXPFC_OBSERVERMANAGER_IID); #define kNotFound -1 @@ -131,7 +136,14 @@ nsresult nsCalContextController :: Notify(nsIXPFCCommand * aCommand) if (res != NS_OK) return res; - return(gXPFCToolkit->GetObserverManager()->Notify(subject,aCommand)); + nsIXPFCObserverManager* om; + nsServiceManager::GetService(kCXPFCObserverManagerCID, kIXPFCObserverManagerIID, (nsISupports**)&om); + + res = om->Notify(subject,aCommand); + + nsServiceManager::ReleaseService(kCXPFCObserverManagerCID, om); + + return(res); } nsresult nsCalContextController :: SetDuration(nsDuration * aDuration) diff --git a/mozilla/calendar/modules/ui/toolkit/inc/nsCalToolkit.h b/mozilla/calendar/modules/ui/toolkit/inc/nsCalToolkit.h index 9674ecfce88..a67e4b482b8 100644 --- a/mozilla/calendar/modules/ui/toolkit/inc/nsCalToolkit.h +++ b/mozilla/calendar/modules/ui/toolkit/inc/nsCalToolkit.h @@ -21,7 +21,6 @@ #include "nsICalToolkit.h" #include "nsICalendarShell.h" -#include "nsIXPFCObserverManager.h" #include "nsIXPFCCanvasManager.h" #include "nsXPFCToolkit.h" diff --git a/mozilla/xpfc/observer/src/nsXPFCObserverManager.cpp b/mozilla/xpfc/observer/src/nsXPFCObserverManager.cpp index d60dab6ed25..c53177d2c7d 100644 --- a/mozilla/xpfc/observer/src/nsXPFCObserverManager.cpp +++ b/mozilla/xpfc/observer/src/nsXPFCObserverManager.cpp @@ -47,6 +47,8 @@ nsXPFCObserverManager :: nsXPFCObserverManager() NS_INIT_REFCNT(); mList = nsnull; monitor = nsnull; + + Init(); } nsXPFCObserverManager :: ~nsXPFCObserverManager() @@ -202,7 +204,7 @@ nsresult nsXPFCObserverManager::Unregister(nsISupports * aSubjectObserver) nsresult nsXPFCObserverManager::Notify(nsIXPFCSubject * aSubject, nsIXPFCCommand * aCommand) { PR_EnterMonitor(monitor); - + nsIIterator * iterator; mList->CreateIterator(&iterator); diff --git a/mozilla/xpfc/shell/src/nsShellInstance.cpp b/mozilla/xpfc/shell/src/nsShellInstance.cpp index fee038d1034..78283c814b8 100644 --- a/mozilla/xpfc/shell/src/nsShellInstance.cpp +++ b/mozilla/xpfc/shell/src/nsShellInstance.cpp @@ -146,28 +146,14 @@ nsresult nsShellInstance::Init() return res; } -static nsITimer* gNetTimer; - -static void -PollNet(nsITimer *aTimer, void *aClosure) -{ - NET_PollSockets(); - NS_IF_RELEASE(gNetTimer); - if (NS_OK == NS_NewTimer(&gNetTimer)) { - gNetTimer->Init(PollNet, nsnull, 1000 / 50); - } -} - nsresult nsShellInstance::Run() { #ifdef NS_WIN32 MSG msg; - PollNet(0, 0); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); - NET_PollSockets(); } return ((nsresult)msg.wParam); #elif NS_UNIX diff --git a/mozilla/xpfc/toolkit/inc/nsXPFCToolkit.h b/mozilla/xpfc/toolkit/inc/nsXPFCToolkit.h index 1eb4decfe6d..57d5a57e0c4 100644 --- a/mozilla/xpfc/toolkit/inc/nsXPFCToolkit.h +++ b/mozilla/xpfc/toolkit/inc/nsXPFCToolkit.h @@ -22,7 +22,6 @@ #include "nsxpfc.h" #include "nsIXPFCToolkit.h" #include "nsIApplicationShell.h" -#include "nsIXPFCObserverManager.h" #include "nsIXPFCCanvasManager.h" #include "nsIViewManager.h" @@ -35,9 +34,6 @@ public: NS_IMETHOD Init(nsIApplicationShell * aApplicationShell) ; - NS_IMETHOD SetObserverManager(nsIXPFCObserverManager * aObserverManager); - NS_IMETHOD_(nsIXPFCObserverManager *) GetObserverManager(); - NS_IMETHOD SetCanvasManager(nsIXPFCCanvasManager * aCanvasManager); NS_IMETHOD_(nsIXPFCCanvasManager *) GetCanvasManager(); @@ -54,7 +50,6 @@ protected: private: nsIApplicationShell * mApplicationShell; - nsIXPFCObserverManager * mObserverManager; nsIXPFCCanvasManager * mCanvasManager; }; diff --git a/mozilla/xpfc/toolkit/public/nsIXPFCToolkit.h b/mozilla/xpfc/toolkit/public/nsIXPFCToolkit.h index 92796acb079..072dd24c1e6 100644 --- a/mozilla/xpfc/toolkit/public/nsIXPFCToolkit.h +++ b/mozilla/xpfc/toolkit/public/nsIXPFCToolkit.h @@ -20,7 +20,6 @@ #define nsIXPFCToolkit_h___ #include "nsISupports.h" -#include "nsIXPFCObserverManager.h" #include "nsIXPFCCanvasManager.h" #include "nsIXPFCCanvas.h" @@ -40,9 +39,6 @@ public: NS_IMETHOD Init(nsIApplicationShell * aApplicationShell) = 0; - NS_IMETHOD SetObserverManager(nsIXPFCObserverManager * aObserverManager) = 0; - NS_IMETHOD_(nsIXPFCObserverManager *) GetObserverManager() = 0; - NS_IMETHOD SetCanvasManager(nsIXPFCCanvasManager * aCanvasManager) = 0; NS_IMETHOD_(nsIXPFCCanvasManager *) GetCanvasManager() = 0; diff --git a/mozilla/xpfc/toolkit/src/nsXPFCToolkit.cpp b/mozilla/xpfc/toolkit/src/nsXPFCToolkit.cpp index bd936a055e3..53950f279f2 100644 --- a/mozilla/xpfc/toolkit/src/nsXPFCToolkit.cpp +++ b/mozilla/xpfc/toolkit/src/nsXPFCToolkit.cpp @@ -34,7 +34,6 @@ nsXPFCToolkit :: nsXPFCToolkit() gXPFCToolkit = (nsXPFCToolkit *)this; mApplicationShell = nsnull; - mObserverManager = nsnull; mCanvasManager = nsnull; } @@ -73,17 +72,6 @@ nsresult nsXPFCToolkit::Init(nsIApplicationShell * aApplicationShell) return NS_OK; } -nsresult nsXPFCToolkit::SetObserverManager(nsIXPFCObserverManager * aObserverManager) -{ - mObserverManager = aObserverManager; - return NS_OK; -} - -nsIXPFCObserverManager * nsXPFCToolkit::GetObserverManager() -{ - return (mObserverManager); -} - nsresult nsXPFCToolkit::SetApplicationShell(nsIApplicationShell * aApplicationShell) { mApplicationShell = aApplicationShell;