| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import <Cocoa/Cocoa.h> | 5 #import <Cocoa/Cocoa.h> |
| 6 | 6 |
| 7 #import "content/browser/accessibility/browser_accessibility_mac.h" | 7 #import "content/browser/accessibility/browser_accessibility_mac.h" |
| 8 | 8 |
| 9 #import "content/browser/accessibility/browser_accessibility_cocoa.h" | 9 #import "content/browser/accessibility/browser_accessibility_cocoa.h" |
| 10 #import "content/browser/accessibility/browser_accessibility_delegate_mac.h" | |
| 11 #include "content/browser/accessibility/browser_accessibility_manager_mac.h" | 10 #include "content/browser/accessibility/browser_accessibility_manager_mac.h" |
| 12 | 11 |
| 13 namespace content { | 12 namespace content { |
| 14 | 13 |
| 15 // Static. | 14 // Static. |
| 16 BrowserAccessibility* BrowserAccessibility::Create() { | 15 BrowserAccessibility* BrowserAccessibility::Create() { |
| 17 return new BrowserAccessibilityMac(); | 16 return new BrowserAccessibilityMac(); |
| 18 } | 17 } |
| 19 | 18 |
| 20 BrowserAccessibilityMac::BrowserAccessibilityMac() | 19 BrowserAccessibilityMac::BrowserAccessibilityMac() |
| 21 : browser_accessibility_cocoa_(NULL) { | 20 : browser_accessibility_cocoa_(NULL) { |
| 22 } | 21 } |
| 23 | 22 |
| 24 void BrowserAccessibilityMac::OnDataChanged() { | 23 void BrowserAccessibilityMac::OnDataChanged() { |
| 25 BrowserAccessibility::OnDataChanged(); | 24 BrowserAccessibility::OnDataChanged(); |
| 26 | 25 |
| 27 if (browser_accessibility_cocoa_) { | 26 if (browser_accessibility_cocoa_) { |
| 28 [browser_accessibility_cocoa_ childrenChanged]; | 27 [browser_accessibility_cocoa_ childrenChanged]; |
| 29 return; | 28 return; |
| 30 } | 29 } |
| 31 | 30 |
| 32 // We take ownership of the cocoa obj here. | 31 // We take ownership of the cocoa obj here. |
| 33 BrowserAccessibilityManagerMac* manager = | |
| 34 static_cast<BrowserAccessibilityManagerMac*>(manager_); | |
| 35 browser_accessibility_cocoa_ = [[BrowserAccessibilityCocoa alloc] | 32 browser_accessibility_cocoa_ = [[BrowserAccessibilityCocoa alloc] |
| 36 initWithObject:this | 33 initWithObject:this]; |
| 37 delegate: | |
| 38 (id<BrowserAccessibilityDelegateCocoa>)manager->parent_view()]; | |
| 39 } | 34 } |
| 40 | 35 |
| 41 void BrowserAccessibilityMac::NativeReleaseReference() { | 36 void BrowserAccessibilityMac::NativeReleaseReference() { |
| 42 // Detach this object from |browser_accessibility_cocoa_| so it | 37 // Detach this object from |browser_accessibility_cocoa_| so it |
| 43 // no longer has a pointer to this object. | 38 // no longer has a pointer to this object. |
| 44 [browser_accessibility_cocoa_ detach]; | 39 [browser_accessibility_cocoa_ detach]; |
| 45 // Now, release it - but at this point, other processes may have a | 40 // Now, release it - but at this point, other processes may have a |
| 46 // reference to the cocoa object. | 41 // reference to the cocoa object. |
| 47 [browser_accessibility_cocoa_ release]; | 42 [browser_accessibility_cocoa_ release]; |
| 48 // Finally, it's safe to delete this since we've detached. | 43 // Finally, it's safe to delete this since we've detached. |
| 49 delete this; | 44 delete this; |
| 50 } | 45 } |
| 51 | 46 |
| 52 bool BrowserAccessibilityMac::IsNative() const { | 47 bool BrowserAccessibilityMac::IsNative() const { |
| 53 return true; | 48 return true; |
| 54 } | 49 } |
| 55 | 50 |
| 56 BrowserAccessibilityCocoa* BrowserAccessibility::ToBrowserAccessibilityCocoa() { | 51 BrowserAccessibilityCocoa* BrowserAccessibility::ToBrowserAccessibilityCocoa() { |
| 57 return static_cast<BrowserAccessibilityMac*>(this)-> | 52 return static_cast<BrowserAccessibilityMac*>(this)-> |
| 58 native_view(); | 53 native_view(); |
| 59 } | 54 } |
| 60 | 55 |
| 61 } // namespace content | 56 } // namespace content |
| OLD | NEW |