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
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::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..f2755c00c 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 @@
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 @@
// 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 @@
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 bae1cfae..3ed7b6de 100644
--- a/chrome/browser/render_widget_host_hwnd.cc
+++ b/chrome/browser/render_widget_host_hwnd.cc
@@ -773,8 +773,9 @@
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());