diff options
author | klink@chromium.org <klink@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-10-09 00:03:18 +0000 |
---|---|---|
committer | klink@chromium.org <klink@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-10-09 00:03:18 +0000 |
commit | bdf647955f0bed7bd2fd3b7a9133ff46e9604687 (patch) | |
tree | 906f28e577382543a9a20fe913b5eec81af83e84 /chrome | |
parent | 0d13416b940db94edc3d0a275f41abfe15b36a84 (diff) | |
download | chromium_src-bdf647955f0bed7bd2fd3b7a9133ff46e9604687.zip chromium_src-bdf647955f0bed7bd2fd3b7a9133ff46e9604687.tar.gz chromium_src-bdf647955f0bed7bd2fd3b7a9133ff46e9604687.tar.bz2 |
Fixes crash in BrowserAccessibilityManager destructor (see CPBrowsingContextManager for example of this type of fix).
Also fixes small style issue, to be consistent with other Singleton implementations.
Review URL: http://codereview.chromium.org/6282
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3078 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/browser_accessibility.cc | 11 | ||||
-rw-r--r-- | chrome/browser/browser_accessibility_manager.cc | 6 | ||||
-rw-r--r-- | chrome/browser/browser_accessibility_manager.h | 4 | ||||
-rw-r--r-- | chrome/browser/render_widget_host_hwnd.cc | 5 |
4 files changed, 14 insertions, 12 deletions
diff --git a/chrome/browser/browser_accessibility.cc b/chrome/browser/browser_accessibility.cc index bb6b8d2..fea5bf2 100644 --- a/chrome/browser/browser_accessibility.cc +++ b/chrome/browser/browser_accessibility.cc @@ -533,23 +533,24 @@ STDMETHODIMP BrowserAccessibility::put_accValue(VARIANT var_id, BSTR put_val) { STDMETHODIMP BrowserAccessibility::CreateInstance(REFIID iid, int iaccessible_id, void** interface_ptr) { - return BrowserAccessibilityManager::Instance()->CreateAccessibilityInstance( - iid, iaccessible_id, instance_id(), interface_ptr); + return BrowserAccessibilityManager::GetInstance()-> + CreateAccessibilityInstance(iid, iaccessible_id, instance_id(), + interface_ptr); } bool BrowserAccessibility::RequestAccessibilityInfo(int iaccessible_func_id, VARIANT var_id, LONG input1, LONG input2) { - return BrowserAccessibilityManager::Instance()->RequestAccessibilityInfo( + return BrowserAccessibilityManager::GetInstance()->RequestAccessibilityInfo( iaccessible_id(), instance_id(), iaccessible_func_id, var_id, input1, input2); } ViewHostMsg_Accessibility_Out_Params BrowserAccessibility::response() { - return BrowserAccessibilityManager::Instance()->response(); + return BrowserAccessibilityManager::GetInstance()->response(); } HWND BrowserAccessibility::parent_hwnd() { - return BrowserAccessibilityManager::Instance()->parent_hwnd(instance_id()); + return BrowserAccessibilityManager::GetInstance()->parent_hwnd(instance_id()); } diff --git a/chrome/browser/browser_accessibility_manager.cc b/chrome/browser/browser_accessibility_manager.cc index c670cf8..f2755c0 100644 --- a/chrome/browser/browser_accessibility_manager.cc +++ b/chrome/browser/browser_accessibility_manager.cc @@ -13,7 +13,7 @@ static const int kAccessibilityMessageTimeOut = 500; // static -BrowserAccessibilityManager* BrowserAccessibilityManager::Instance() { +BrowserAccessibilityManager* BrowserAccessibilityManager::GetInstance() { return Singleton<BrowserAccessibilityManager>::get(); } @@ -28,8 +28,8 @@ BrowserAccessibilityManager::~BrowserAccessibilityManager() { instance_map_.clear(); render_process_host_map_.clear(); - NotificationService::current()->RemoveObserver(this, - NOTIFY_RENDERER_PROCESS_TERMINATED, NotificationService::AllSources()); + // We don't remove ourselves as an observer because we are a Singleton object, + // and NotifcationService is likely gone by this point. } STDMETHODIMP BrowserAccessibilityManager::CreateAccessibilityInstance( diff --git a/chrome/browser/browser_accessibility_manager.h b/chrome/browser/browser_accessibility_manager.h index 1ac25e4..4d837bf 100644 --- a/chrome/browser/browser_accessibility_manager.h +++ b/chrome/browser/browser_accessibility_manager.h @@ -47,7 +47,7 @@ class BrowserAccessibilityManager : public NotificationObserver { // Gets the singleton BrowserAccessibilityManager object. The first time this // method is called, a CacheManagerHost object is constructed and returned. // Subsequent calls will return the same object. - static BrowserAccessibilityManager* Instance(); + static BrowserAccessibilityManager* GetInstance(); // Creates an instance of BrowserAccessibility, initializes it and sets the // iaccessible_id and parent_id. @@ -86,7 +86,7 @@ class BrowserAccessibilityManager : public NotificationObserver { protected: // This class is a singleton. Do not instantiate directly. BrowserAccessibilityManager(); - friend DefaultSingletonTraits<BrowserAccessibilityManager>; + friend struct DefaultSingletonTraits<BrowserAccessibilityManager>; ~BrowserAccessibilityManager(); diff --git a/chrome/browser/render_widget_host_hwnd.cc b/chrome/browser/render_widget_host_hwnd.cc index bae1cfa..3ed7b6d 100644 --- a/chrome/browser/render_widget_host_hwnd.cc +++ b/chrome/browser/render_widget_host_hwnd.cc @@ -773,8 +773,9 @@ LRESULT RenderWidgetHostHWND::OnGetObject(UINT message, WPARAM wparam, accessibility->set_iaccessible_id(0); // Set the unique member variables of this particular process. - accessibility->set_instance_id(BrowserAccessibilityManager::Instance()-> - SetMembers(accessibility, m_hWnd, render_widget_host_)); + accessibility->set_instance_id( + BrowserAccessibilityManager::GetInstance()-> + SetMembers(accessibility, m_hWnd, render_widget_host_)); // All is well, assign the temp instance to the class smart pointer. browser_accessibility_root_.Attach(accessibility_comptr.Detach()); |