1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #import <Cocoa/Cocoa.h>
7 #import "chrome/browser/accessibility/browser_accessibility_mac.h"
9 #import "chrome/browser/accessibility/browser_accessibility_cocoa.h"
10 #import "chrome/browser/accessibility/browser_accessibility_delegate_mac.h"
11 #include "chrome/browser/accessibility/browser_accessibility_manager.h"
12 #import "chrome/browser/renderer_host/render_widget_host_view_mac.h"
16 BrowserAccessibility* BrowserAccessibility::Create() {
17 return new BrowserAccessibilityMac();
20 BrowserAccessibilityMac::BrowserAccessibilityMac()
21 : browser_accessibility_cocoa_(NULL) {
24 void BrowserAccessibilityMac::Initialize() {
25 if (browser_accessibility_cocoa_)
28 // We take ownership of the cocoa obj here.
29 browser_accessibility_cocoa_ = [[BrowserAccessibilityCocoa alloc]
31 delegate:(RenderWidgetHostViewCocoa*)manager_->GetParentView()];
34 void BrowserAccessibilityMac::ReleaseReference() {
35 if (browser_accessibility_cocoa_) {
36 BrowserAccessibilityCocoa* temp = browser_accessibility_cocoa_;
37 browser_accessibility_cocoa_ = nil;
38 // Relinquish ownership of the cocoa obj.
40 // At this point, other processes may have a reference to
41 // the cocoa object. When the retain count hits zero, it will
42 // destroy us in dealloc.
43 // For that reason, do *not* make any more calls here after
44 // as we might have been deleted.
48 BrowserAccessibilityCocoa* BrowserAccessibility::toBrowserAccessibilityCocoa() {
49 return static_cast<BrowserAccessibilityMac*>(this)->