Fix valgrind error.
[chromium-blink-merge.git] / chrome / browser / accessibility / browser_accessibility_mac.mm
blob3048b602d982fef911ccc6f3aba68e33089691a2
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"
15 // Static.
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_)
26     return;
28   // We take ownership of the cocoa obj here.
29   browser_accessibility_cocoa_ = [[BrowserAccessibilityCocoa alloc]
30       initWithObject:this
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.
39     [temp release];
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.
45   }
48 BrowserAccessibilityCocoa* BrowserAccessibility::toBrowserAccessibilityCocoa() {
49   return static_cast<BrowserAccessibilityMac*>(this)->
50       native_view();