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());