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 |