diff options
author | dtseng@chromium.org <dtseng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-13 18:50:10 +0000 |
---|---|---|
committer | dtseng@chromium.org <dtseng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-13 18:50:10 +0000 |
commit | 1dbadbd465e5cce4031dd20eb901ac7da2d67668 (patch) | |
tree | 83f16e5657ccc3a17c6059f72dbba171fce8c478 /chrome/browser/accessibility/browser_accessibility_manager_mac.mm | |
parent | fd21468f5e0b3d8523a6ad93e337e27632c2b1b6 (diff) | |
download | chromium_src-1dbadbd465e5cce4031dd20eb901ac7da2d67668.zip chromium_src-1dbadbd465e5cce4031dd20eb901ac7da2d67668.tar.gz chromium_src-1dbadbd465e5cce4031dd20eb901ac7da2d67668.tar.bz2 |
Refactoring of BrowserAccessibility (Mac) to use cross platform base classes.
BUG=none
TEST=passing unit tests.
Review URL: http://codereview.chromium.org/3696003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62431 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/accessibility/browser_accessibility_manager_mac.mm')
-rw-r--r-- | chrome/browser/accessibility/browser_accessibility_manager_mac.mm | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/chrome/browser/accessibility/browser_accessibility_manager_mac.mm b/chrome/browser/accessibility/browser_accessibility_manager_mac.mm new file mode 100644 index 0000000..8aadf8b --- /dev/null +++ b/chrome/browser/accessibility/browser_accessibility_manager_mac.mm @@ -0,0 +1,80 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/accessibility/browser_accessibility_manager_mac.h" + +#include "chrome/browser/accessibility/browser_accessibility_mac.h" +#import "chrome/browser/cocoa/browser_accessibility.h" +// TODO(dtseng): move to delegate? +#import "chrome/browser/renderer_host/render_widget_host_view_mac.h" + +// static +BrowserAccessibilityManager* BrowserAccessibilityManager::Create( + gfx::NativeView parent_view, + const WebAccessibility& src, + BrowserAccessibilityDelegate* delegate, + BrowserAccessibilityFactory* factory) { + return new BrowserAccessibilityManagerMac( + parent_view, src, delegate, factory); +} + +BrowserAccessibility* BrowserAccessibilityFactory::Create() { + return BrowserAccessibility::Create(); +} + +BrowserAccessibilityManagerMac::BrowserAccessibilityManagerMac( + gfx::NativeView parent_window, + const webkit_glue::WebAccessibility& src, + BrowserAccessibilityDelegate* delegate, + BrowserAccessibilityFactory* factory) + : BrowserAccessibilityManager(parent_window, src, delegate, factory) { +} + +void BrowserAccessibilityManagerMac::NotifyAccessibilityEvent( + ViewHostMsg_AccessibilityNotification_Params::NotificationType n, + BrowserAccessibility* node) { + // TODO(dtseng): support all notifications. + NSString* event_id = @""; + switch (n) { + case ViewHostMsg_AccessibilityNotification_Params:: + NOTIFICATION_TYPE_CHECK_STATE_CHANGED: + return; + case ViewHostMsg_AccessibilityNotification_Params:: + NOTIFICATION_TYPE_CHILDREN_CHANGED: + event_id = NSAccessibilityValueChangedNotification; + if (GetRoot() == node) + [((RenderWidgetHostViewCocoa*)GetParentView()) + setAccessibilityTreeRoot:GetRoot()]; + else + [node->GetParent()->toBrowserAccessibilityMac()->native_view() + updateDescendants]; + break; + case ViewHostMsg_AccessibilityNotification_Params:: + NOTIFICATION_TYPE_FOCUS_CHANGED: + event_id = NSAccessibilityFocusedUIElementChangedNotification; + if (GetRoot() == node) + [((RenderWidgetHostViewCocoa*)GetParentView()) + setAccessibilityTreeRoot:GetRoot()]; + else + [node->GetParent()->toBrowserAccessibilityMac()->native_view() + updateDescendants]; + break; + case ViewHostMsg_AccessibilityNotification_Params:: + NOTIFICATION_TYPE_LOAD_COMPLETE: + [((RenderWidgetHostViewCocoa*)GetParentView()) + setAccessibilityTreeRoot:GetRoot()]; + return; + case ViewHostMsg_AccessibilityNotification_Params:: + NOTIFICATION_TYPE_VALUE_CHANGED: + event_id = NSAccessibilityValueChangedNotification; + break; + case ViewHostMsg_AccessibilityNotification_Params:: + NOTIFICATION_TYPE_SELECTED_TEXT_CHANGED: + return; + } + BrowserAccessibilityCocoa* native_node = node->toBrowserAccessibilityMac()-> + native_view(); + DCHECK(native_node); + NSAccessibilityPostNotification(native_node, event_id); +} |