summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authordmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-06 17:10:07 +0000
committerdmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-06 17:10:07 +0000
commit95b3f544eae3f1de91d29d0f4e1abef05592bd86 (patch)
treed311ee75208f1dba65bcf8116d568a6fd251af04 /content
parentca2f7f1069844f6274008209473c2db7fff4bbf4 (diff)
downloadchromium_src-95b3f544eae3f1de91d29d0f4e1abef05592bd86.zip
chromium_src-95b3f544eae3f1de91d29d0f4e1abef05592bd86.tar.gz
chromium_src-95b3f544eae3f1de91d29d0f4e1abef05592bd86.tar.bz2
Revert 135593 - Add initial GTK web accessibility framework (new with valgrind fix).
This is the same as http://codereview.chromium.org/9839069/ which was landed but reverted due to a valgrind failure in content_unittests. The valgrind failure was because browser_accessibility_manager_unittest.cc is constructing its own subclass of BrowserAccessibility (for testing), but BrowserAccessibilityManagerGtk was assuming that any BrowserAccessibility could be static_casted to a BrowserAccessibilityGtk. I fixed this by making ToBrowserAccessibilityGtk() a virtual method with a default impl that returns NULL. Original change: This enables Linux desktop assistive technology such as the Orca screen reader to access the web contents. Builds on the same accessibility stack used by Mac & Windows already. This change works with Orca now, but it's minimal: all that works is getting the correct feedback when you tab through focusable links and controls in a webpage. Future changes will add the rest of the support. BUG=24585 TEST=Run Chrome on desktop Linux with Orca turned on, tab through links. TBR=darin,sky Review URL: https://chromiumcodereview.appspot.com/10381010 TBR=dmazzoni@chromium.org Review URL: https://chromiumcodereview.appspot.com/10379029 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@135595 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/browser/accessibility/browser_accessibility.cc22
-rw-r--r--content/browser/accessibility/browser_accessibility.h14
-rw-r--r--content/browser/accessibility/browser_accessibility_cocoa.mm17
-rw-r--r--content/browser/accessibility/browser_accessibility_gtk.cc343
-rw-r--r--content/browser/accessibility/browser_accessibility_gtk.h93
-rw-r--r--content/browser/accessibility/browser_accessibility_mac.h5
-rw-r--r--content/browser/accessibility/browser_accessibility_mac.mm5
-rw-r--r--content/browser/accessibility/browser_accessibility_mac_unittest.mm5
-rw-r--r--content/browser/accessibility/browser_accessibility_manager.cc8
-rw-r--r--content/browser/accessibility/browser_accessibility_manager.h2
-rw-r--r--content/browser/accessibility/browser_accessibility_manager_gtk.cc71
-rw-r--r--content/browser/accessibility/browser_accessibility_manager_gtk.h41
-rw-r--r--content/browser/accessibility/browser_accessibility_manager_mac.mm10
-rw-r--r--content/browser/accessibility/browser_accessibility_manager_win.cc2
-rw-r--r--content/browser/accessibility/browser_accessibility_win.cc99
-rw-r--r--content/browser/accessibility/browser_accessibility_win.h3
-rw-r--r--content/browser/accessibility/browser_accessibility_win_unittest.cc14
-rw-r--r--content/browser/accessibility/dump_accessibility_tree_helper_mac.mm3
-rw-r--r--content/browser/accessibility/dump_accessibility_tree_helper_win.cc2
-rw-r--r--content/browser/renderer_host/render_widget_host_view_gtk.cc76
-rw-r--r--content/browser/renderer_host/render_widget_host_view_gtk.h25
-rw-r--r--content/browser/renderer_host/render_widget_host_view_mac.mm9
-rw-r--r--content/browser/renderer_host/render_widget_host_view_win.cc2
-rw-r--r--content/content_browser.gypi4
24 files changed, 92 insertions, 783 deletions
diff --git a/content/browser/accessibility/browser_accessibility.cc b/content/browser/accessibility/browser_accessibility.cc
index 93e8f9c..4f81569 100644
--- a/content/browser/accessibility/browser_accessibility.cc
+++ b/content/browser/accessibility/browser_accessibility.cc
@@ -15,11 +15,9 @@ typedef WebAccessibility::FloatAttribute FloatAttribute;
typedef WebAccessibility::IntAttribute IntAttribute;
typedef WebAccessibility::StringAttribute StringAttribute;
-#if !defined(OS_MACOSX) && \
- !(defined(OS_WIN) && !defined(USE_AURA)) && \
- !defined(TOOLKIT_GTK)
-// We have subclassess of BrowserAccessibility on Mac, Linux/GTK,
-// and non-Aura Win. For any other platform, instantiate the base class.
+#if (defined(OS_POSIX) && !defined(OS_MACOSX)) || defined(USE_AURA)
+// There's no OS-specific implementation of BrowserAccessibilityManager
+// on Unix, so just instantiate the base class.
// static
BrowserAccessibility* BrowserAccessibility::Create() {
return new BrowserAccessibility();
@@ -204,20 +202,6 @@ void BrowserAccessibility::NativeReleaseReference() {
delete this;
}
-#if defined(OS_MACOSX)
-BrowserAccessibilityMac* BrowserAccessibility::ToBrowserAccessibilityMac() {
- return NULL;
-}
-#elif defined(OS_WIN)
-BrowserAccessibilityWin* BrowserAccessibility::ToBrowserAccessibilityWin() {
- return NULL;
-}
-#elif defined(TOOLKIT_GTK)
-BrowserAccessibilityGtk* BrowserAccessibility::ToBrowserAccessibilityGtk() {
- return NULL;
-}
-#endif
-
bool BrowserAccessibility::GetBoolAttribute(
BoolAttribute attribute, bool* value) const {
BoolAttrMap::const_iterator iter = bool_attributes_.find(attribute);
diff --git a/content/browser/accessibility/browser_accessibility.h b/content/browser/accessibility/browser_accessibility.h
index c789c19..0fbb3eb 100644
--- a/content/browser/accessibility/browser_accessibility.h
+++ b/content/browser/accessibility/browser_accessibility.h
@@ -16,12 +16,10 @@
#include "webkit/glue/webaccessibility.h"
class BrowserAccessibilityManager;
-#if defined(OS_MACOSX)
-class BrowserAccessibilityMac;
+#if defined(OS_MACOSX) && __OBJC__
+@class BrowserAccessibilityCocoa;
#elif defined(OS_WIN)
class BrowserAccessibilityWin;
-#elif defined(TOOLKIT_GTK)
-class BrowserAccessibilityGtk;
#endif
using webkit_glue::WebAccessibility;
@@ -189,12 +187,10 @@ class CONTENT_EXPORT BrowserAccessibility {
bool instance_active() const { return instance_active_; }
int32 ref_count() const { return ref_count_; }
-#if defined(OS_MACOSX)
- virtual BrowserAccessibilityMac* ToBrowserAccessibilityMac();
+#if defined(OS_MACOSX) && __OBJC__
+ BrowserAccessibilityCocoa* toBrowserAccessibilityCocoa();
#elif defined(OS_WIN)
- virtual BrowserAccessibilityWin* ToBrowserAccessibilityWin();
-#elif defined(TOOLKIT_GTK)
- virtual BrowserAccessibilityGtk* ToBrowserAccessibilityGtk();
+ BrowserAccessibilityWin* toBrowserAccessibilityWin();
#endif
// Retrieve the value of a bool attribute from the bool attribute
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm
index 3a434ff..b282cad 100644
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
@@ -12,7 +12,6 @@
#include "base/string16.h"
#include "base/sys_string_conversions.h"
#include "base/utf_string_conversions.h"
-#include "content/browser/accessibility/browser_accessibility_mac.h"
#include "content/browser/accessibility/browser_accessibility_manager.h"
#include "content/public/common/content_client.h"
#include "grit/webkit_strings.h"
@@ -344,8 +343,7 @@ NSDictionary* attributeToMethodNameMap = nil;
index < browserAccessibility_->child_count();
++index) {
BrowserAccessibilityCocoa* child =
- browserAccessibility_->GetChild(index)->
- ToBrowserAccessibilityMac()->native_view();
+ browserAccessibility_->GetChild(index)->toBrowserAccessibilityCocoa();
if ([child isIgnored])
[children_ addObjectsFromArray:[child children]];
else
@@ -364,7 +362,7 @@ NSDictionary* attributeToMethodNameMap = nil;
// a DCHECK in the future.
if (child) {
BrowserAccessibilityCocoa* child_cocoa =
- child->ToBrowserAccessibilityMac()->native_view();
+ child->toBrowserAccessibilityCocoa();
[children_ addObject:child_cocoa];
}
}
@@ -375,9 +373,9 @@ NSDictionary* attributeToMethodNameMap = nil;
- (void)childrenChanged {
if (![self isIgnored]) {
children_.reset();
- } else if (browserAccessibility_->parent()) {
- [browserAccessibility_->parent()->ToBrowserAccessibilityMac()->native_view()
- childrenChanged];
+ } else {
+ [browserAccessibility_->parent()->toBrowserAccessibilityCocoa()
+ childrenChanged];
}
}
@@ -490,8 +488,7 @@ NSDictionary* attributeToMethodNameMap = nil;
// A nil parent means we're the root.
if (browserAccessibility_->parent()) {
return NSAccessibilityUnignoredAncestor(
- browserAccessibility_->parent()->ToBrowserAccessibilityMac()->
- native_view());
+ browserAccessibility_->parent()->toBrowserAccessibilityCocoa());
} else {
// Hook back up to RenderWidgetHostViewCocoa.
return browserAccessibility_->manager()->GetParentView();
@@ -635,7 +632,7 @@ NSDictionary* attributeToMethodNameMap = nil;
BrowserAccessibility* titleElement =
browserAccessibility_->manager()->GetFromRendererID(titleElementId);
if (titleElement)
- return titleElement->ToBrowserAccessibilityMac()->native_view();
+ return titleElement->toBrowserAccessibilityCocoa();
}
return nil;
}
diff --git a/content/browser/accessibility/browser_accessibility_gtk.cc b/content/browser/accessibility/browser_accessibility_gtk.cc
deleted file mode 100644
index 7a3e3f7..0000000
--- a/content/browser/accessibility/browser_accessibility_gtk.cc
+++ /dev/null
@@ -1,343 +0,0 @@
-// Copyright (c) 2012 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 "content/browser/accessibility/browser_accessibility_gtk.h"
-
-#include "base/utf_string_conversions.h"
-#include "content/browser/accessibility/browser_accessibility_manager_gtk.h"
-#include "content/common/accessibility_messages.h"
-
-#include <gtk/gtk.h>
-
-using webkit_glue::WebAccessibility;
-
-// The maximum length of an autogenerated unique type name string,
-// generated from the 16-bit interface mask from an AtkObject.
-// 30 is enough for the prefix "WAIType" + 5 hex chars (max) */
-static const int kWAITypeNameLen = 30;
-
-static gpointer browser_accessibility_parent_class = NULL;
-
-static BrowserAccessibilityGtk* ToBrowserAccessibilityGtk(
- BrowserAccessibilityAtk* atk_object) {
- if (!atk_object)
- return NULL;
-
- return atk_object->m_object;
-}
-
-static BrowserAccessibilityGtk* ToBrowserAccessibilityGtk(
- AtkObject* atk_object) {
- if (!IS_BROWSER_ACCESSIBILITY(atk_object))
- return NULL;
-
- return ToBrowserAccessibilityGtk(BROWSER_ACCESSIBILITY(atk_object));
-}
-
-static const gchar* browser_accessibility_get_name(AtkObject* atk_object) {
- BrowserAccessibilityGtk* obj = ToBrowserAccessibilityGtk(atk_object);
- return obj->atk_acc_name().c_str();
-}
-
-static const gchar* browser_accessibility_get_description(
- AtkObject* atk_object) {
- BrowserAccessibilityGtk* obj = ToBrowserAccessibilityGtk(atk_object);
- string16 description;
- obj->GetStringAttribute(WebAccessibility::ATTR_DESCRIPTION, &description);
- return UTF16ToUTF8(description).c_str();
-}
-
-static AtkObject* browser_accessibility_get_parent(AtkObject* atk_object) {
- BrowserAccessibilityGtk* obj = ToBrowserAccessibilityGtk(atk_object);
- if (obj->parent())
- return obj->parent()->ToBrowserAccessibilityGtk()->GetAtkObject();
- else
- return gtk_widget_get_accessible(obj->manager()->GetParentView());
-}
-
-static gint browser_accessibility_get_n_children(AtkObject* atk_object) {
- BrowserAccessibilityGtk* obj = ToBrowserAccessibilityGtk(atk_object);
- return obj->children().size();
-}
-
-static AtkObject* browser_accessibility_ref_child(
- AtkObject* atk_object, gint index) {
- BrowserAccessibilityGtk* obj = ToBrowserAccessibilityGtk(atk_object);
- AtkObject* result =
- obj->children()[index]->ToBrowserAccessibilityGtk()->GetAtkObject();
- g_object_ref(result);
- return result;
-}
-
-static gint browser_accessibility_get_index_in_parent(AtkObject* atk_object) {
- BrowserAccessibilityGtk* obj = ToBrowserAccessibilityGtk(atk_object);
- return obj->index_in_parent();
-}
-
-static AtkAttributeSet* browser_accessibility_get_attributes(
- AtkObject* atk_object) {
- return NULL;
-}
-
-static AtkRole browser_accessibility_get_role(AtkObject* atk_object) {
- BrowserAccessibilityGtk* obj = ToBrowserAccessibilityGtk(atk_object);
- return obj->atk_role();
-}
-
-static AtkStateSet* browser_accessibility_ref_state_set(AtkObject* atk_object) {
- BrowserAccessibilityGtk* obj = ToBrowserAccessibilityGtk(atk_object);
- AtkStateSet* state_set =
- ATK_OBJECT_CLASS(browser_accessibility_parent_class)->
- ref_state_set(atk_object);
- int32 state = obj->state();
-
- if ((state >> WebAccessibility::STATE_FOCUSABLE) & 1)
- atk_state_set_add_state(state_set, ATK_STATE_FOCUSABLE);
- if (obj->manager()->GetFocus(NULL) == obj)
- atk_state_set_add_state(state_set, ATK_STATE_FOCUSED);
-
- return state_set;
-}
-
-static AtkRelationSet* browser_accessibility_ref_relation_set(
- AtkObject* atk_object) {
- AtkRelationSet* relation_set =
- ATK_OBJECT_CLASS(browser_accessibility_parent_class)
- ->ref_relation_set(atk_object);
- return relation_set;
-}
-
-static void browser_accessibility_init(AtkObject* atk_object, gpointer data) {
- if (ATK_OBJECT_CLASS(browser_accessibility_parent_class)->initialize) {
- ATK_OBJECT_CLASS(browser_accessibility_parent_class)->initialize(
- atk_object, data);
- }
-
- BROWSER_ACCESSIBILITY(atk_object)->m_object =
- reinterpret_cast<BrowserAccessibilityGtk*>(data);
-}
-
-static void browser_accessibility_finalize(GObject* atk_object) {
- G_OBJECT_CLASS(browser_accessibility_parent_class)->finalize(atk_object);
-}
-
-static void browser_accessibility_class_init(AtkObjectClass* klass) {
- GObjectClass* gobject_class = G_OBJECT_CLASS(klass);
- browser_accessibility_parent_class = g_type_class_peek_parent(klass);
-
- gobject_class->finalize = browser_accessibility_finalize;
- klass->initialize = browser_accessibility_init;
- klass->get_name = browser_accessibility_get_name;
- klass->get_description = browser_accessibility_get_description;
- klass->get_parent = browser_accessibility_get_parent;
- klass->get_n_children = browser_accessibility_get_n_children;
- klass->ref_child = browser_accessibility_ref_child;
- klass->get_role = browser_accessibility_get_role;
- klass->ref_state_set = browser_accessibility_ref_state_set;
- klass->get_index_in_parent = browser_accessibility_get_index_in_parent;
- klass->get_attributes = browser_accessibility_get_attributes;
- klass->ref_relation_set = browser_accessibility_ref_relation_set;
-}
-
-GType browser_accessibility_get_type() {
- static volatile gsize type_volatile = 0;
-
- if (g_once_init_enter(&type_volatile)) {
- static const GTypeInfo tinfo = {
- sizeof(BrowserAccessibilityAtkClass),
- (GBaseInitFunc) 0,
- (GBaseFinalizeFunc) 0,
- (GClassInitFunc) browser_accessibility_class_init,
- (GClassFinalizeFunc) 0,
- 0, /* class data */
- sizeof(BrowserAccessibilityAtk), /* instance size */
- 0, /* nb preallocs */
- (GInstanceInitFunc) 0,
- 0 /* value table */
- };
-
- GType type = g_type_register_static(
- ATK_TYPE_OBJECT, "BrowserAccessibility", &tinfo, GTypeFlags(0));
- g_once_init_leave(&type_volatile, type);
- }
-
- return type_volatile;
-}
-
-static guint16 GetInterfaceMaskFromObject(BrowserAccessibilityGtk* obj) {
- return 0;
-}
-
-static const char* GetUniqueAccessibilityTypeName(guint16 interface_mask)
-{
- static char name[kWAITypeNameLen + 1];
-
- sprintf(name, "WAIType%x", interface_mask);
- name[kWAITypeNameLen] = '\0';
-
- return name;
-}
-
-static const GInterfaceInfo AtkInterfacesInitFunctions[] = {
-};
-
-enum WAIType {
- WAI_ACTION,
- WAI_SELECTION,
- WAI_EDITABLE_TEXT,
- WAI_TEXT,
- WAI_COMPONENT,
- WAI_IMAGE,
- WAI_TABLE,
- WAI_HYPERTEXT,
- WAI_HYPERLINK,
- WAI_DOCUMENT,
- WAI_VALUE,
-};
-
-static GType GetAtkInterfaceTypeFromWAIType(WAIType type) {
- switch (type) {
- case WAI_ACTION:
- return ATK_TYPE_ACTION;
- case WAI_SELECTION:
- return ATK_TYPE_SELECTION;
- case WAI_EDITABLE_TEXT:
- return ATK_TYPE_EDITABLE_TEXT;
- case WAI_TEXT:
- return ATK_TYPE_TEXT;
- case WAI_COMPONENT:
- return ATK_TYPE_COMPONENT;
- case WAI_IMAGE:
- return ATK_TYPE_IMAGE;
- case WAI_TABLE:
- return ATK_TYPE_TABLE;
- case WAI_HYPERTEXT:
- return ATK_TYPE_HYPERTEXT;
- case WAI_HYPERLINK:
- return ATK_TYPE_HYPERLINK_IMPL;
- case WAI_DOCUMENT:
- return ATK_TYPE_DOCUMENT;
- case WAI_VALUE:
- return ATK_TYPE_VALUE;
- }
-
- return G_TYPE_INVALID;
-}
-
-static GType GetAccessibilityTypeFromObject(BrowserAccessibilityGtk* obj) {
- static const GTypeInfo type_info = {
- sizeof(BrowserAccessibilityAtkClass),
- (GBaseInitFunc) 0,
- (GBaseFinalizeFunc) 0,
- (GClassInitFunc) 0,
- (GClassFinalizeFunc) 0,
- 0, /* class data */
- sizeof(BrowserAccessibilityAtk), /* instance size */
- 0, /* nb preallocs */
- (GInstanceInitFunc) 0,
- 0 /* value table */
- };
-
- guint16 interface_mask = GetInterfaceMaskFromObject(obj);
- const char* atk_type_name = GetUniqueAccessibilityTypeName(interface_mask);
- GType type = g_type_from_name(atk_type_name);
- if (type)
- return type;
-
- type = g_type_register_static(BROWSER_ACCESSIBILITY_TYPE,
- atk_type_name,
- &type_info,
- GTypeFlags(0));
- for (guint i = 0; i < G_N_ELEMENTS(AtkInterfacesInitFunctions); i++) {
- if (interface_mask & (1 << i)) {
- g_type_add_interface_static(
- type,
- GetAtkInterfaceTypeFromWAIType(static_cast<WAIType>(i)),
- &AtkInterfacesInitFunctions[i]);
- }
- }
-
- return type;
-}
-
-BrowserAccessibilityAtk* browser_accessibility_new(
- BrowserAccessibilityGtk* obj) {
- GType type = GetAccessibilityTypeFromObject(obj);
- AtkObject* atk_object = static_cast<AtkObject*>(g_object_new(type, 0));
-
- atk_object_initialize(atk_object, obj);
-
- return BROWSER_ACCESSIBILITY(atk_object);
-}
-
-void browser_accessibility_detach(BrowserAccessibilityAtk* atk_object) {
-}
-
-// static
-BrowserAccessibility* BrowserAccessibility::Create() {
- return new BrowserAccessibilityGtk();
-}
-
-BrowserAccessibilityGtk::BrowserAccessibilityGtk() {
- atk_object_ = ATK_OBJECT(browser_accessibility_new(this));
-}
-
-BrowserAccessibilityGtk::~BrowserAccessibilityGtk() {
- browser_accessibility_detach(BROWSER_ACCESSIBILITY(atk_object_));
-}
-
-BrowserAccessibilityGtk* BrowserAccessibilityGtk::ToBrowserAccessibilityGtk() {
- return this;
-}
-
-AtkObject* BrowserAccessibilityGtk::GetAtkObject() const {
- if (!G_IS_OBJECT(atk_object_))
- return NULL;
- return atk_object_;
-}
-
-void BrowserAccessibilityGtk::PreInitialize() {
- BrowserAccessibility::PreInitialize();
- InitRoleAndState();
-
- if (this->parent()) {
- atk_object_set_parent(
- atk_object_,
- this->parent()->ToBrowserAccessibilityGtk()->GetAtkObject());
- }
-}
-
-void BrowserAccessibilityGtk::InitRoleAndState() {
- atk_acc_name_ = UTF16ToUTF8(name()).c_str();
-
- switch(role_) {
- case WebAccessibility::ROLE_BUTTON:
- atk_role_ = ATK_ROLE_PUSH_BUTTON;
- break;
- case WebAccessibility::ROLE_CHECKBOX:
- atk_role_ = ATK_ROLE_CHECK_BOX;
- break;
- case WebAccessibility::ROLE_COMBO_BOX:
- atk_role_ = ATK_ROLE_COMBO_BOX;
- break;
- case WebAccessibility::ROLE_LINK:
- atk_role_ = ATK_ROLE_LINK;
- break;
- case WebAccessibility::ROLE_RADIO_BUTTON:
- atk_role_ = ATK_ROLE_RADIO_BUTTON;
- break;
- case WebAccessibility::ROLE_TEXTAREA:
- atk_role_ = ATK_ROLE_ENTRY;
- break;
- case WebAccessibility::ROLE_TEXT_FIELD:
- atk_role_ = ATK_ROLE_ENTRY;
- break;
- case WebAccessibility::ROLE_WEBCORE_LINK:
- atk_role_ = ATK_ROLE_LINK;
- break;
- default:
- atk_role_ = ATK_ROLE_UNKNOWN;
- break;
- }
-}
diff --git a/content/browser/accessibility/browser_accessibility_gtk.h b/content/browser/accessibility/browser_accessibility_gtk.h
deleted file mode 100644
index 222da8a..0000000
--- a/content/browser/accessibility/browser_accessibility_gtk.h
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright (c) 2012 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.
-
-#ifndef CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_GTK_H_
-#define CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_GTK_H_
-#pragma once
-
-#include "base/compiler_specific.h"
-#include "content/browser/accessibility/browser_accessibility.h"
-#include "webkit/glue/webaccessibility.h"
-
-#include <atk/atk.h>
-
-using webkit_glue::WebAccessibility;
-
-class BrowserAccessibilityGtk;
-class BrowserAccessibilityManagerGtk;
-
-G_BEGIN_DECLS
-
-#define BROWSER_ACCESSIBILITY_TYPE (browser_accessibility_get_type())
-#define BROWSER_ACCESSIBILITY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST( \
- (obj), BROWSER_ACCESSIBILITY_TYPE, BrowserAccessibilityAtk))
-#define BROWSER_ACCESSIBILITY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST( \
- (klass), BROWSER_ACCESSIBILITY_TYPE, BrowserAccessibilityAtkClass))
-#define IS_BROWSER_ACCESSIBILITY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), BROWSER_ACCESSIBILITY_TYPE))
-#define IS_BROWSER_ACCESSIBILITY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), BROWSER_ACCESSIBILITY_TYPE))
-#define BROWSER_ACCESSIBILITY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS( \
- (obj), BROWSER_ACCESSIBILITY_TYPE, BrowserAccessibilityAtkClass))
-
-typedef struct _BrowserAccessibilityAtk BrowserAccessibilityAtk;
-typedef struct _BrowserAccessibilityAtkClass BrowserAccessibilityAtkClass;
-
-struct _BrowserAccessibilityAtk {
- AtkObject parent;
- BrowserAccessibilityGtk* m_object;
-};
-
-struct _BrowserAccessibilityAtkClass {
- AtkObjectClass parent_class;
-};
-
-GType browser_accessibility_get_type (void) G_GNUC_CONST;
-
-BrowserAccessibilityAtk* browser_accessibility_new(
- BrowserAccessibilityGtk* object);
-
-BrowserAccessibilityGtk* browser_accessibility_get_object(
- BrowserAccessibilityAtk* atk_object);
-
-void browser_accessibility_detach (BrowserAccessibilityAtk* atk_object);
-
-AtkObject* browser_accessibility_get_focused_element(
- BrowserAccessibilityAtk* atk_object);
-
-G_END_DECLS
-
-class BrowserAccessibilityGtk : public BrowserAccessibility {
- public:
- BrowserAccessibilityGtk();
-
- virtual ~BrowserAccessibilityGtk();
-
- AtkObject* GetAtkObject() const;
-
- AtkRole atk_role() { return atk_role_; }
- const std::string& atk_acc_name() { return atk_acc_name_; }
-
- // BrowserAccessibility methods.
- virtual void PreInitialize() OVERRIDE;
- virtual BrowserAccessibilityGtk* ToBrowserAccessibilityGtk() OVERRIDE;
-
- private:
- virtual void InitRoleAndState();
-
- // Give BrowserAccessibility::Create access to our constructor.
- friend class BrowserAccessibility;
-
- AtkObject* atk_object_;
- AtkRole atk_role_;
- std::string atk_acc_name_;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(BrowserAccessibilityGtk);
-};
-
-#endif // CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_GTK_H_
diff --git a/content/browser/accessibility/browser_accessibility_mac.h b/content/browser/accessibility/browser_accessibility_mac.h
index 7eae766..c6fd27e 100644
--- a/content/browser/accessibility/browser_accessibility_mac.h
+++ b/content/browser/accessibility/browser_accessibility_mac.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 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.
@@ -12,7 +12,6 @@
#include "base/memory/scoped_nsobject.h"
#include "content/browser/accessibility/browser_accessibility.h"
-#include "content/common/content_export.h"
@class BrowserAccessibilityCocoa;
@@ -24,8 +23,6 @@ class BrowserAccessibilityMac : public BrowserAccessibility {
// Overrides from BrowserAccessibility.
virtual void DetachTree(std::vector<BrowserAccessibility*>* nodes) OVERRIDE;
- CONTENT_EXPORT virtual BrowserAccessibilityMac*
- ToBrowserAccessibilityMac() OVERRIDE;
// The BrowserAccessibilityCocoa associated with us.
BrowserAccessibilityCocoa* native_view() const {
diff --git a/content/browser/accessibility/browser_accessibility_mac.mm b/content/browser/accessibility/browser_accessibility_mac.mm
index ff0ab2f..6a209d8 100644
--- a/content/browser/accessibility/browser_accessibility_mac.mm
+++ b/content/browser/accessibility/browser_accessibility_mac.mm
@@ -53,6 +53,7 @@ void BrowserAccessibilityMac::DetachTree(
BrowserAccessibility::DetachTree(nodes);
}
-BrowserAccessibilityMac* BrowserAccessibilityMac::ToBrowserAccessibilityMac() {
- return this;
+BrowserAccessibilityCocoa* BrowserAccessibility::toBrowserAccessibilityCocoa() {
+ return static_cast<BrowserAccessibilityMac*>(this)->
+ native_view();
}
diff --git a/content/browser/accessibility/browser_accessibility_mac_unittest.mm b/content/browser/accessibility/browser_accessibility_mac_unittest.mm
index 1477c89..bb80935 100644
--- a/content/browser/accessibility/browser_accessibility_mac_unittest.mm
+++ b/content/browser/accessibility/browser_accessibility_mac_unittest.mm
@@ -8,7 +8,6 @@
#include "base/string_util.h"
#include "base/utf_string_conversions.h"
#include "content/browser/accessibility/browser_accessibility_cocoa.h"
-#include "content/browser/accessibility/browser_accessibility_mac.h"
#include "content/browser/accessibility/browser_accessibility_manager.h"
#include "testing/gtest/include/gtest/gtest.h"
#import "testing/gtest_mac.h"
@@ -78,8 +77,8 @@ class BrowserAccessibilityTest : public ui::CocoaTest {
delegate_.reset([[MockAccessibilityDelegate alloc] init]);
manager_.reset(
BrowserAccessibilityManager::Create(delegate_, root, NULL));
- accessibility_.reset([manager_->GetRoot()->ToBrowserAccessibilityMac()->
- native_view() retain]);
+ accessibility_.reset([manager_->GetRoot()->toBrowserAccessibilityCocoa()
+ retain]);
}
protected:
diff --git a/content/browser/accessibility/browser_accessibility_manager.cc b/content/browser/accessibility/browser_accessibility_manager.cc
index 4440d28..9c5329d 100644
--- a/content/browser/accessibility/browser_accessibility_manager.cc
+++ b/content/browser/accessibility/browser_accessibility_manager.cc
@@ -21,11 +21,9 @@ BrowserAccessibility* BrowserAccessibilityFactory::Create() {
// static
int32 BrowserAccessibilityManager::next_child_id_ = -1;
-#if !defined(OS_MACOSX) && \
- !(defined(OS_WIN) && !defined(USE_AURA)) && \
- !defined(TOOLKIT_GTK)
-// We have subclassess of BrowserAccessibilityManager on Mac, Linux/GTK,
-// and non-Aura Win. For any other platform, instantiate the base class.
+#if (defined(OS_POSIX) && !defined(OS_MACOSX)) || defined(USE_AURA)
+// There's no OS-specific implementation of BrowserAccessibilityManager
+// on Unix, so just instantiate the base class.
// static
BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
gfx::NativeView parent_view,
diff --git a/content/browser/accessibility/browser_accessibility_manager.h b/content/browser/accessibility/browser_accessibility_manager.h
index 7e1757b..8b2d7fd 100644
--- a/content/browser/accessibility/browser_accessibility_manager.h
+++ b/content/browser/accessibility/browser_accessibility_manager.h
@@ -133,7 +133,7 @@ class CONTENT_EXPORT BrowserAccessibilityManager {
gfx::NativeView GetParentView();
#if defined(OS_WIN)
- BrowserAccessibilityManagerWin* ToBrowserAccessibilityManagerWin();
+ BrowserAccessibilityManagerWin* toBrowserAccessibilityManagerWin();
#endif
// Return the object that has focus, if it's a descandant of the
diff --git a/content/browser/accessibility/browser_accessibility_manager_gtk.cc b/content/browser/accessibility/browser_accessibility_manager_gtk.cc
deleted file mode 100644
index 4bac86a..0000000
--- a/content/browser/accessibility/browser_accessibility_manager_gtk.cc
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2012 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 "content/browser/accessibility/browser_accessibility_manager_gtk.h"
-
-#include "content/browser/accessibility/browser_accessibility_gtk.h"
-#include "content/common/accessibility_messages.h"
-
-using webkit_glue::WebAccessibility;
-
-// static
-BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
- gfx::NativeView parent_view,
- const WebAccessibility& src,
- BrowserAccessibilityDelegate* delegate,
- BrowserAccessibilityFactory* factory) {
- return new BrowserAccessibilityManagerGtk(
- parent_view,
- src,
- delegate,
- factory);
-}
-
-BrowserAccessibilityManagerGtk::BrowserAccessibilityManagerGtk(
- GtkWidget* parent_view,
- const WebAccessibility& src,
- BrowserAccessibilityDelegate* delegate,
- BrowserAccessibilityFactory* factory)
- : BrowserAccessibilityManager(parent_view, src, delegate, factory) {
-}
-
-BrowserAccessibilityManagerGtk::~BrowserAccessibilityManagerGtk() {
-}
-
-void BrowserAccessibilityManagerGtk::NotifyAccessibilityEvent(
- int type,
- BrowserAccessibility* node) {
- if (!node->ToBrowserAccessibilityGtk())
- return;
- AtkObject* atk_object = node->ToBrowserAccessibilityGtk()->GetAtkObject();
-
- switch (type) {
- case AccessibilityNotificationChildrenChanged:
- RecursivelySendChildrenChanged(GetRoot()->ToBrowserAccessibilityGtk());
- break;
- case AccessibilityNotificationFocusChanged:
- // Note: atk_focus_tracker_notify may be deprecated in the future;
- // follow this bug for the replacement:
- // https://bugzilla.gnome.org/show_bug.cgi?id=649575#c4
- g_signal_emit_by_name(atk_object, "focus-event", true);
- atk_focus_tracker_notify(atk_object);
- break;
- default:
- break;
- }
-}
-
-void BrowserAccessibilityManagerGtk::RecursivelySendChildrenChanged(
- BrowserAccessibilityGtk* node) {
- AtkObject* atkObject = node->ToBrowserAccessibilityGtk()->GetAtkObject();
- for (unsigned int i = 0; i < node->children().size(); ++i) {
- BrowserAccessibilityGtk* child =
- node->children()[i]->ToBrowserAccessibilityGtk();
- g_signal_emit_by_name(atkObject,
- "children-changed::add",
- i,
- child->GetAtkObject());
- RecursivelySendChildrenChanged(child);
- }
-}
diff --git a/content/browser/accessibility/browser_accessibility_manager_gtk.h b/content/browser/accessibility/browser_accessibility_manager_gtk.h
deleted file mode 100644
index 4de6678..0000000
--- a/content/browser/accessibility/browser_accessibility_manager_gtk.h
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2012 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.
-
-#ifndef CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_MANAGER_GTK_H_
-#define CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_MANAGER_GTK_H_
-#pragma once
-
-#include "content/browser/accessibility/browser_accessibility_manager.h"
-#include "webkit/glue/webaccessibility.h"
-
-class BrowserAccessibilityGtk;
-struct ViewHostMsg_AccessibilityNotification_Params;
-
-using webkit_glue::WebAccessibility;
-
-// Manages a tree of BrowserAccessibilityGtk objects.
-class BrowserAccessibilityManagerGtk : public BrowserAccessibilityManager {
- public:
- virtual ~BrowserAccessibilityManagerGtk();
-
- // BrowserAccessibilityManager methods
- virtual void NotifyAccessibilityEvent(int type, BrowserAccessibility* node)
- OVERRIDE;
-
- private:
- BrowserAccessibilityManagerGtk(
- GtkWidget* parent_window,
- const WebAccessibility& src,
- BrowserAccessibilityDelegate* delegate,
- BrowserAccessibilityFactory* factory);
-
- void RecursivelySendChildrenChanged(BrowserAccessibilityGtk* node);
-
- // Give BrowserAccessibilityManager::Create access to our constructor.
- friend class BrowserAccessibilityManager;
-
- DISALLOW_COPY_AND_ASSIGN(BrowserAccessibilityManagerGtk);
-};
-
-#endif // CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_MANAGER_GTK_H_
diff --git a/content/browser/accessibility/browser_accessibility_manager_mac.mm b/content/browser/accessibility/browser_accessibility_manager_mac.mm
index e6163c6..92da9d5 100644
--- a/content/browser/accessibility/browser_accessibility_manager_mac.mm
+++ b/content/browser/accessibility/browser_accessibility_manager_mac.mm
@@ -6,7 +6,6 @@
#import "base/logging.h"
#import "content/browser/accessibility/browser_accessibility_cocoa.h"
-#import "content/browser/accessibility/browser_accessibility_mac.h"
#include "content/common/accessibility_messages.h"
// static
@@ -30,13 +29,6 @@ BrowserAccessibilityManagerMac::BrowserAccessibilityManagerMac(
void BrowserAccessibilityManagerMac::NotifyAccessibilityEvent(
int type,
BrowserAccessibility* node) {
- BrowserAccessibilityMac* mac_node = node->ToBrowserAccessibilityMac();
- if (!mac_node)
- return;
- BrowserAccessibilityCocoa* native_node = mac_node->native_view();
- if (!native_node)
- return;
-
// Refer to AXObjectCache.mm (webkit).
NSString* event_id = @"";
switch (type) {
@@ -106,5 +98,7 @@ void BrowserAccessibilityManagerMac::NotifyAccessibilityEvent(
event_id = NSAccessibilityValueChangedNotification;
break;
}
+ BrowserAccessibilityCocoa* native_node = node->toBrowserAccessibilityCocoa();
+ DCHECK(native_node);
NSAccessibilityPostNotification(native_node, event_id);
}
diff --git a/content/browser/accessibility/browser_accessibility_manager_win.cc b/content/browser/accessibility/browser_accessibility_manager_win.cc
index b54d6fe..a00d233 100644
--- a/content/browser/accessibility/browser_accessibility_manager_win.cc
+++ b/content/browser/accessibility/browser_accessibility_manager_win.cc
@@ -23,7 +23,7 @@ BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
}
BrowserAccessibilityManagerWin*
-BrowserAccessibilityManager::ToBrowserAccessibilityManagerWin() {
+BrowserAccessibilityManager::toBrowserAccessibilityManagerWin() {
return static_cast<BrowserAccessibilityManagerWin*>(this);
}
diff --git a/content/browser/accessibility/browser_accessibility_win.cc b/content/browser/accessibility/browser_accessibility_win.cc
index a0b1aa0..8d38e01 100644
--- a/content/browser/accessibility/browser_accessibility_win.cc
+++ b/content/browser/accessibility/browser_accessibility_win.cc
@@ -135,7 +135,7 @@ STDMETHODIMP BrowserAccessibilityRelation::get_target(
return E_FAIL;
*target = static_cast<IAccessible*>(
- result->ToBrowserAccessibilityWin()->NewReference());
+ result->toBrowserAccessibilityWin()->NewReference());
return S_OK;
}
@@ -176,8 +176,8 @@ BrowserAccessibility* BrowserAccessibility::Create() {
return instance->NewReference();
}
-BrowserAccessibilityWin* BrowserAccessibilityWin::ToBrowserAccessibilityWin() {
- return this;
+BrowserAccessibilityWin* BrowserAccessibility::toBrowserAccessibilityWin() {
+ return static_cast<BrowserAccessibilityWin*>(this);
}
BrowserAccessibilityWin::BrowserAccessibilityWin()
@@ -238,7 +238,7 @@ STDMETHODIMP BrowserAccessibilityWin::accHitTest(LONG x_left,
child->lVal = CHILDID_SELF;
} else {
child->vt = VT_DISPATCH;
- child->pdispVal = result->ToBrowserAccessibilityWin()->NewReference();
+ child->pdispVal = result->toBrowserAccessibilityWin()->NewReference();
}
return S_OK;
}
@@ -307,7 +307,7 @@ STDMETHODIMP BrowserAccessibilityWin::accNavigate(
}
end->vt = VT_DISPATCH;
- end->pdispVal = result->ToBrowserAccessibilityWin()->NewReference();
+ end->pdispVal = result->toBrowserAccessibilityWin()->NewReference();
return S_OK;
}
@@ -465,13 +465,11 @@ STDMETHODIMP BrowserAccessibilityWin::get_accParent(IDispatch** disp_parent) {
if (!disp_parent)
return E_INVALIDARG;
- IAccessible* parent;
- if (parent_) {
- parent = parent_->ToBrowserAccessibilityWin();
- } else {
+ IAccessible* parent = parent_->toBrowserAccessibilityWin();
+ if (parent == NULL) {
// This happens if we're the root of the tree;
// return the IAccessible for the window.
- parent = manager_->ToBrowserAccessibilityManagerWin()->
+ parent = manager_->toBrowserAccessibilityManagerWin()->
GetParentWindowIAccessible();
}
@@ -568,7 +566,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_accSelection(VARIANT* selected) {
if (children_[i]->HasState(WebAccessibility::STATE_SELECTED)) {
selected->vt = VT_DISPATCH;
selected->pdispVal =
- children_[i]->ToBrowserAccessibilityWin()->NewReference();
+ children_[i]->toBrowserAccessibilityWin()->NewReference();
return S_OK;
}
}
@@ -583,7 +581,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_accSelection(VARIANT* selected) {
if (children_[i]->HasState(WebAccessibility::STATE_SELECTED)) {
enum_variant->ItemAt(index)->vt = VT_DISPATCH;
enum_variant->ItemAt(index)->pdispVal =
- children_[i]->ToBrowserAccessibilityWin()->NewReference();
+ children_[i]->toBrowserAccessibilityWin()->NewReference();
++index;
}
}
@@ -1074,7 +1072,8 @@ STDMETHODIMP BrowserAccessibilityWin::get_columnIndex(
return S_FALSE;
int cell_id = unique_cell_ids_[cell_index];
- BrowserAccessibility* cell = manager_->GetFromRendererID(cell_id);
+ BrowserAccessibilityWin* cell =
+ manager_->GetFromRendererID(cell_id)->toBrowserAccessibilityWin();
int col_index;
if (cell &&
cell->GetIntAttribute(
@@ -1180,14 +1179,15 @@ STDMETHODIMP BrowserAccessibilityWin::get_rowDescription(
for (int i = 0; i < columns; ++i) {
int cell_id = cell_ids_[row * columns + i];
- BrowserAccessibility* cell = manager_->GetFromRendererID(cell_id);
- if (cell && cell->role() == WebAccessibility::ROLE_ROW_HEADER) {
- if (cell->name().size() > 0) {
- *description = SysAllocString(cell->name().c_str());
+ BrowserAccessibilityWin* cell =
+ manager_->GetFromRendererID(cell_id)->toBrowserAccessibilityWin();
+ if (cell && cell->role_ == WebAccessibility::ROLE_ROW_HEADER) {
+ if (cell->name_.size() > 0) {
+ *description = SysAllocString(cell->name_.c_str());
return S_OK;
}
- return cell->ToBrowserAccessibilityWin()->GetStringAttributeAsBstr(
+ return cell->GetStringAttributeAsBstr(
WebAccessibility::ATTR_DESCRIPTION, description);
}
}
@@ -1218,7 +1218,8 @@ STDMETHODIMP BrowserAccessibilityWin::get_rowExtentAt(
return E_INVALIDARG;
int cell_id = cell_ids_[row * columns + column];
- BrowserAccessibility* cell = manager_->GetFromRendererID(cell_id);
+ BrowserAccessibilityWin* cell =
+ manager_->GetFromRendererID(cell_id)->toBrowserAccessibilityWin();
int rowspan;
if (cell &&
cell->GetIntAttribute(
@@ -1254,7 +1255,8 @@ STDMETHODIMP BrowserAccessibilityWin::get_rowIndex(
return S_FALSE;
int cell_id = unique_cell_ids_[cell_index];
- BrowserAccessibility* cell = manager_->GetFromRendererID(cell_id);
+ BrowserAccessibilityWin* cell =
+ manager_->GetFromRendererID(cell_id)->toBrowserAccessibilityWin();
int cell_row_index;
if (cell &&
cell->GetIntAttribute(
@@ -1386,7 +1388,8 @@ STDMETHODIMP BrowserAccessibilityWin::get_rowColumnExtentsAtIndex(
return S_FALSE;
int cell_id = unique_cell_ids_[index];
- BrowserAccessibility* cell = manager_->GetFromRendererID(cell_id);
+ BrowserAccessibilityWin* cell =
+ manager_->GetFromRendererID(cell_id)->toBrowserAccessibilityWin();
int rowspan;
int colspan;
if (cell &&
@@ -1523,8 +1526,9 @@ STDMETHODIMP BrowserAccessibilityWin::get_columnHeaderCells(
for (int i = 0; i < rows; ++i) {
int cell_id = table->cell_ids()[i * columns + column];
- BrowserAccessibility* cell = manager_->GetFromRendererID(cell_id);
- if (cell && cell->role() == WebAccessibility::ROLE_COLUMN_HEADER)
+ BrowserAccessibilityWin* cell =
+ manager_->GetFromRendererID(cell_id)->toBrowserAccessibilityWin();
+ if (cell && cell->role_ == WebAccessibility::ROLE_COLUMN_HEADER)
(*n_column_header_cells)++;
}
@@ -1533,11 +1537,11 @@ STDMETHODIMP BrowserAccessibilityWin::get_columnHeaderCells(
int index = 0;
for (int i = 0; i < rows; ++i) {
int cell_id = table->cell_ids()[i * columns + column];
- BrowserAccessibility* cell = manager_->GetFromRendererID(cell_id);
- if (cell && cell->role() == WebAccessibility::ROLE_COLUMN_HEADER) {
+ BrowserAccessibilityWin* cell =
+ manager_->GetFromRendererID(cell_id)->toBrowserAccessibilityWin();
+ if (cell && cell->role_ == WebAccessibility::ROLE_COLUMN_HEADER) {
(*cell_accessibles)[index] =
- static_cast<IAccessible*>(
- cell->ToBrowserAccessibilityWin()->NewReference());
+ static_cast<IAccessible*>(cell->NewReference());
++index;
}
}
@@ -1620,8 +1624,9 @@ STDMETHODIMP BrowserAccessibilityWin::get_rowHeaderCells(
for (int i = 0; i < columns; ++i) {
int cell_id = table->cell_ids()[row * columns + i];
- BrowserAccessibility* cell = manager_->GetFromRendererID(cell_id);
- if (cell && cell->role() == WebAccessibility::ROLE_ROW_HEADER)
+ BrowserAccessibilityWin* cell =
+ manager_->GetFromRendererID(cell_id)->toBrowserAccessibilityWin();
+ if (cell && cell->role_ == WebAccessibility::ROLE_ROW_HEADER)
(*n_row_header_cells)++;
}
@@ -1630,11 +1635,11 @@ STDMETHODIMP BrowserAccessibilityWin::get_rowHeaderCells(
int index = 0;
for (int i = 0; i < columns; ++i) {
int cell_id = table->cell_ids()[row * columns + i];
- BrowserAccessibility* cell = manager_->GetFromRendererID(cell_id);
- if (cell && cell->role() == WebAccessibility::ROLE_ROW_HEADER) {
+ BrowserAccessibilityWin* cell =
+ manager_->GetFromRendererID(cell_id)->toBrowserAccessibilityWin();
+ if (cell && cell->role_ == WebAccessibility::ROLE_ROW_HEADER) {
(*cell_accessibles)[index] =
- static_cast<IAccessible*>(
- cell->ToBrowserAccessibilityWin()->NewReference());
+ static_cast<IAccessible*>(cell->NewReference());
++index;
}
}
@@ -1732,7 +1737,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_table(
}
*table = static_cast<IAccessibleTable*>(
- find_table->ToBrowserAccessibilityWin()->NewReference());
+ find_table->toBrowserAccessibilityWin()->NewReference());
return S_OK;
}
@@ -2090,7 +2095,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_hyperlink(
}
BrowserAccessibilityWin* child =
- children_[hyperlinks_[index]]->ToBrowserAccessibilityWin();
+ children_[hyperlinks_[index]]->toBrowserAccessibilityWin();
*hyperlink = static_cast<IAccessibleHyperlink*>(child->NewReference());
return S_OK;
}
@@ -2392,12 +2397,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_parentNode(ISimpleDOMNode** node) {
if (!node)
return E_INVALIDARG;
- if (!parent_) {
- *node = NULL;
- return S_FALSE;
- }
-
- *node = parent_->ToBrowserAccessibilityWin()->NewReference();
+ *node = parent_->toBrowserAccessibilityWin()->NewReference();
return S_OK;
}
@@ -2409,7 +2409,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_firstChild(ISimpleDOMNode** node) {
return E_INVALIDARG;
if (children_.size()) {
- *node = children_[0]->ToBrowserAccessibilityWin()->NewReference();
+ *node = children_[0]->toBrowserAccessibilityWin()->NewReference();
return S_OK;
} else {
*node = NULL;
@@ -2425,7 +2425,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_lastChild(ISimpleDOMNode** node) {
return E_INVALIDARG;
if (children_.size()) {
- *node = children_[children_.size() - 1]->ToBrowserAccessibilityWin()->
+ *node = children_[children_.size() - 1]->toBrowserAccessibilityWin()->
NewReference();
return S_OK;
} else {
@@ -2444,7 +2444,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_previousSibling(
if (parent_ && index_in_parent_ > 0) {
*node = parent_->children()[index_in_parent_ - 1]->
- ToBrowserAccessibilityWin()->NewReference();
+ toBrowserAccessibilityWin()->NewReference();
return S_OK;
} else {
*node = NULL;
@@ -2463,7 +2463,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_nextSibling(ISimpleDOMNode** node) {
index_in_parent_ >= 0 &&
index_in_parent_ < static_cast<int>(parent_->children().size()) - 1) {
*node = parent_->children()[index_in_parent_ + 1]->
- ToBrowserAccessibilityWin()->NewReference();
+ toBrowserAccessibilityWin()->NewReference();
return S_OK;
} else {
*node = NULL;
@@ -2481,7 +2481,7 @@ STDMETHODIMP BrowserAccessibilityWin::get_childAt(
return E_INVALIDARG;
if (child_index < children_.size()) {
- *node = children_[child_index]->ToBrowserAccessibilityWin()->NewReference();
+ *node = children_[child_index]->toBrowserAccessibilityWin()->NewReference();
return S_OK;
} else {
*node = NULL;
@@ -2848,9 +2848,9 @@ BrowserAccessibilityWin* BrowserAccessibilityWin::GetTargetFromChildID(
return this;
if (child_id >= 1 && child_id <= static_cast<LONG>(children_.size()))
- return children_[child_id - 1]->ToBrowserAccessibilityWin();
+ return children_[child_id - 1]->toBrowserAccessibilityWin();
- return manager_->GetFromChildID(child_id)->ToBrowserAccessibilityWin();
+ return manager_->GetFromChildID(child_id)->toBrowserAccessibilityWin();
}
HRESULT BrowserAccessibilityWin::GetStringAttributeAsBstr(
@@ -2944,8 +2944,7 @@ LONG BrowserAccessibilityWin::FindBoundary(
BrowserAccessibilityWin* BrowserAccessibilityWin::GetFromRendererID(
int32 renderer_id) {
- BrowserAccessibility* result = manager_->GetFromRendererID(renderer_id);
- return result ? result->ToBrowserAccessibilityWin() : NULL;
+ return manager_->GetFromRendererID(renderer_id)->toBrowserAccessibilityWin();
}
void BrowserAccessibilityWin::InitRoleAndState() {
diff --git a/content/browser/accessibility/browser_accessibility_win.h b/content/browser/accessibility/browser_accessibility_win.h
index 60ca7db..6386e5f 100644
--- a/content/browser/accessibility/browser_accessibility_win.h
+++ b/content/browser/accessibility/browser_accessibility_win.h
@@ -13,7 +13,6 @@
#include <vector>
-#include "base/compiler_specific.h"
#include "content/browser/accessibility/browser_accessibility.h"
#include "content/common/content_export.h"
#include "third_party/iaccessible2/ia2_api_all.h"
@@ -101,8 +100,6 @@ BrowserAccessibilityWin
CONTENT_EXPORT virtual void PostInitialize();
CONTENT_EXPORT virtual void NativeAddReference();
CONTENT_EXPORT virtual void NativeReleaseReference();
- CONTENT_EXPORT virtual BrowserAccessibilityWin* ToBrowserAccessibilityWin()
- OVERRIDE;
//
// IAccessible methods.
diff --git a/content/browser/accessibility/browser_accessibility_win_unittest.cc b/content/browser/accessibility/browser_accessibility_win_unittest.cc
index 7841d4b..4afcd27 100644
--- a/content/browser/accessibility/browser_accessibility_win_unittest.cc
+++ b/content/browser/accessibility/browser_accessibility_win_unittest.cc
@@ -115,7 +115,7 @@ TEST_F(BrowserAccessibilityTest, TestNoLeaks) {
new CountedBrowserAccessibilityFactory());
ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_);
IAccessible* root_accessible =
- manager->GetRoot()->ToBrowserAccessibilityWin();
+ manager->GetRoot()->toBrowserAccessibilityWin();
IDispatch* root_iaccessible = NULL;
IDispatch* child1_iaccessible = NULL;
VARIANT var_child;
@@ -170,7 +170,7 @@ TEST_F(BrowserAccessibilityTest, TestChildrenChange) {
// Query for the text IAccessible and verify that it returns "old text" as its
// value.
base::win::ScopedComPtr<IDispatch> text_dispatch;
- HRESULT hr = manager->GetRoot()->ToBrowserAccessibilityWin()->get_accChild(
+ HRESULT hr = manager->GetRoot()->toBrowserAccessibilityWin()->get_accChild(
CreateI4Variant(1), text_dispatch.Receive());
ASSERT_EQ(S_OK, hr);
@@ -199,7 +199,7 @@ TEST_F(BrowserAccessibilityTest, TestChildrenChange) {
// Query for the text IAccessible and verify that it now returns "new text"
// as its value.
- hr = manager->GetRoot()->ToBrowserAccessibilityWin()->get_accChild(
+ hr = manager->GetRoot()->toBrowserAccessibilityWin()->get_accChild(
CreateI4Variant(1),
text_dispatch.Receive());
ASSERT_EQ(S_OK, hr);
@@ -297,9 +297,9 @@ TEST_F(BrowserAccessibilityTest, TestTextBoundaries) {
ASSERT_EQ(2, CountedBrowserAccessibility::global_obj_count_);
BrowserAccessibilityWin* root_obj =
- manager->GetRoot()->ToBrowserAccessibilityWin();
+ manager->GetRoot()->toBrowserAccessibilityWin();
BrowserAccessibilityWin* text1_obj =
- root_obj->GetChild(0)->ToBrowserAccessibilityWin();
+ root_obj->GetChild(0)->toBrowserAccessibilityWin();
BSTR text;
long start;
@@ -393,7 +393,7 @@ TEST_F(BrowserAccessibilityTest, TestSimpleHypertext) {
ASSERT_EQ(3, CountedBrowserAccessibility::global_obj_count_);
BrowserAccessibilityWin* root_obj =
- manager->GetRoot()->ToBrowserAccessibilityWin();
+ manager->GetRoot()->toBrowserAccessibilityWin();
BSTR text;
@@ -477,7 +477,7 @@ TEST_F(BrowserAccessibilityTest, TestComplexHypertext) {
ASSERT_EQ(7, CountedBrowserAccessibility::global_obj_count_);
BrowserAccessibilityWin* root_obj =
- manager->GetRoot()->ToBrowserAccessibilityWin();
+ manager->GetRoot()->toBrowserAccessibilityWin();
BSTR text;
diff --git a/content/browser/accessibility/dump_accessibility_tree_helper_mac.mm b/content/browser/accessibility/dump_accessibility_tree_helper_mac.mm
index afdd1f1..50c40cd 100644
--- a/content/browser/accessibility/dump_accessibility_tree_helper_mac.mm
+++ b/content/browser/accessibility/dump_accessibility_tree_helper_mac.mm
@@ -15,8 +15,7 @@ void DumpAccessibilityTreeHelper::Initialize() {}
string16 DumpAccessibilityTreeHelper::ToString(BrowserAccessibility* node,
char* prefix) {
- BrowserAccessibilityCocoa* cocoa_node = node->ToBrowserAccessibilityMac()->
- native_view();
+ BrowserAccessibilityCocoa* cocoa_node = node->toBrowserAccessibilityCocoa();
NSString* dump =
[NSString stringWithFormat:@"%s%@ "
"subrole=%@ "
diff --git a/content/browser/accessibility/dump_accessibility_tree_helper_win.cc b/content/browser/accessibility/dump_accessibility_tree_helper_win.cc
index f1d2c80..a567b2b 100644
--- a/content/browser/accessibility/dump_accessibility_tree_helper_win.cc
+++ b/content/browser/accessibility/dump_accessibility_tree_helper_win.cc
@@ -197,7 +197,7 @@ string16 DumpAccessibilityTreeHelper::ToString(
if (role_string_map.empty())
Initialize();
- BrowserAccessibilityWin* acc_obj = node->ToBrowserAccessibilityWin();
+ BrowserAccessibilityWin* acc_obj = node->toBrowserAccessibilityWin();
string16 state;
std::map<int32, string16>::iterator it;
diff --git a/content/browser/renderer_host/render_widget_host_view_gtk.cc b/content/browser/renderer_host/render_widget_host_view_gtk.cc
index 91c3ddf..15a0073 100644
--- a/content/browser/renderer_host/render_widget_host_view_gtk.cc
+++ b/content/browser/renderer_host/render_widget_host_view_gtk.cc
@@ -27,7 +27,6 @@
#include "base/time.h"
#include "base/utf_offset_string_conversions.h"
#include "base/utf_string_conversions.h"
-#include "content/browser/accessibility/browser_accessibility_gtk.h"
#include "content/browser/renderer_host/backing_store_gtk.h"
#include "content/browser/renderer_host/gtk_im_context_wrapper.h"
#include "content/browser/renderer_host/gtk_key_bindings_handler.h"
@@ -112,11 +111,6 @@ using WebKit::WebMouseWheelEvent;
// static methods.
class RenderWidgetHostViewGtkWidget {
public:
- static AtkObject* GetAccessible(void* userdata) {
- return (static_cast<RenderWidgetHostViewGtk*>(userdata))->
- GetAccessible();
- }
-
static GtkWidget* CreateNewWidget(RenderWidgetHostViewGtk* host_view) {
GtkWidget* widget = gtk_preserve_window_new();
gtk_widget_set_name(widget, "chrome-render-widget-host-view");
@@ -175,10 +169,6 @@ class RenderWidgetHostViewGtkWidget {
g_signal_connect_after(widget, "scroll-event",
G_CALLBACK(OnMouseScrollEvent), host_view);
- // Route calls to get_accessible to the view.
- gtk_preserve_window_set_accessible_factory(
- GTK_PRESERVE_WINDOW(widget), GetAccessible, host_view);
-
return widget;
}
@@ -1414,69 +1404,3 @@ void content::RenderWidgetHostViewPort::GetDefaultScreenInfo(
gdk_display_get_default_group(gdk_display_get_default());
content::GetScreenInfoFromNativeWindow(gdk_window, results);
}
-
-void RenderWidgetHostViewGtk::SetAccessibilityFocus(int acc_obj_id) {
- if (!host_)
- return;
-
- host_->AccessibilitySetFocus(acc_obj_id);
-}
-
-void RenderWidgetHostViewGtk::AccessibilityDoDefaultAction(int acc_obj_id) {
- if (!host_)
- return;
-
- host_->AccessibilityDoDefaultAction(acc_obj_id);
-}
-
-void RenderWidgetHostViewGtk::AccessibilityScrollToMakeVisible(
- int acc_obj_id, gfx::Rect subfocus) {
- if (!host_)
- return;
-
- host_->AccessibilityScrollToMakeVisible(acc_obj_id, subfocus);
-}
-
-void RenderWidgetHostViewGtk::AccessibilityScrollToPoint(
- int acc_obj_id, gfx::Point point) {
- if (!host_)
- return;
-
- host_->AccessibilityScrollToPoint(acc_obj_id, point);
-}
-
-void RenderWidgetHostViewGtk::AccessibilitySetTextSelection(
- int acc_obj_id, int start_offset, int end_offset) {
- if (!host_)
- return;
-
- host_->AccessibilitySetTextSelection(acc_obj_id, start_offset, end_offset);
-}
-
-void RenderWidgetHostViewGtk::OnAccessibilityNotifications(
- const std::vector<AccessibilityHostMsg_NotificationParams>& params) {
- if (!browser_accessibility_manager_.get()) {
- GtkWidget* parent = gtk_widget_get_parent(view_.get());
- browser_accessibility_manager_.reset(
- BrowserAccessibilityManager::CreateEmptyDocument(
- parent, static_cast<WebAccessibility::State>(0), this));
- }
- browser_accessibility_manager_->OnAccessibilityNotifications(params);
-}
-
-AtkObject* RenderWidgetHostViewGtk::GetAccessible() {
- RenderWidgetHostImpl::From(GetRenderWidgetHost())->
- SetAccessibilityMode(AccessibilityModeComplete);
-
- if (!browser_accessibility_manager_.get()) {
- GtkWidget* parent = gtk_widget_get_parent(view_.get());
- browser_accessibility_manager_.reset(
- BrowserAccessibilityManager::CreateEmptyDocument(
- parent, static_cast<WebAccessibility::State>(0), this));
- }
- BrowserAccessibilityGtk* root =
- browser_accessibility_manager_->GetRoot()->ToBrowserAccessibilityGtk();
-
- atk_object_set_role(root->GetAtkObject(), ATK_ROLE_HTML_CONTAINER);
- return root->GetAtkObject();
-}
diff --git a/content/browser/renderer_host/render_widget_host_view_gtk.h b/content/browser/renderer_host/render_widget_host_view_gtk.h
index db9a6a7..0f7c00a 100644
--- a/content/browser/renderer_host/render_widget_host_view_gtk.h
+++ b/content/browser/renderer_host/render_widget_host_view_gtk.h
@@ -13,7 +13,6 @@
#include "base/memory/scoped_ptr.h"
#include "base/time.h"
-#include "content/browser/accessibility/browser_accessibility_manager.h"
#include "content/browser/renderer_host/render_widget_host_view_base.h"
#include "content/common/content_export.h"
#include "ui/base/animation/animation_delegate.h"
@@ -43,9 +42,7 @@ typedef struct _GtkSelectionData GtkSelectionData;
// -----------------------------------------------------------------------------
// See comments in render_widget_host_view.h about this class and its members.
// -----------------------------------------------------------------------------
-class CONTENT_EXPORT RenderWidgetHostViewGtk
- : public content::RenderWidgetHostViewBase,
- public BrowserAccessibilityDelegate {
+class RenderWidgetHostViewGtk : public content::RenderWidgetHostViewBase {
public:
virtual ~RenderWidgetHostViewGtk();
@@ -125,9 +122,6 @@ class CONTENT_EXPORT RenderWidgetHostViewGtk
virtual gfx::GLSurfaceHandle GetCompositingSurface() OVERRIDE;
virtual bool LockMouse() OVERRIDE;
virtual void UnlockMouse() OVERRIDE;
- virtual void OnAccessibilityNotifications(
- const std::vector<AccessibilityHostMsg_NotificationParams>& params)
- OVERRIDE;
// If the widget is aligned with an edge of the monitor its on and the user
// attempts to drag past that edge we track the number of times it has
@@ -152,19 +146,6 @@ class CONTENT_EXPORT RenderWidgetHostViewGtk
bool RetrieveSurrounding(std::string* text, size_t* cursor_index);
- // BrowserAccessibilityDelegate implementation.
- virtual void SetAccessibilityFocus(int acc_obj_id) OVERRIDE;
- virtual void AccessibilityDoDefaultAction(int acc_obj_id) OVERRIDE;
- virtual void AccessibilityScrollToMakeVisible(
- int acc_obj_id, gfx::Rect subfocus) OVERRIDE;
- virtual void AccessibilityScrollToPoint(
- int acc_obj_id, gfx::Point point) OVERRIDE;
- virtual void AccessibilitySetTextSelection(
- int acc_obj_id, int start_offset, int end_offset) OVERRIDE;
-
- // Get the root of the AtkObject* tree for accessibility.
- AtkObject* GetAccessible();
-
protected:
friend class content::RenderWidgetHostView;
@@ -306,10 +287,6 @@ class CONTENT_EXPORT RenderWidgetHostViewGtk
// menus and drags.
GdkEventButton* last_mouse_down_;
- // Instance of accessibility information for the root of the AtkObject
- // tree representation of the WebKit render tree.
- scoped_ptr<BrowserAccessibilityManager> browser_accessibility_manager_;
-
ui::GtkSignalRegistrar signals_;
};
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
index c3acf4b..83f76a8 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -20,7 +20,6 @@
#include "base/sys_string_conversions.h"
#include "base/utf_string_conversions.h"
#import "content/browser/accessibility/browser_accessibility_cocoa.h"
-#import "content/browser/accessibility/browser_accessibility_mac.h"
#include "content/browser/accessibility/browser_accessibility_manager.h"
#include "content/browser/plugin_process_host.h"
#import "content/browser/renderer_host/accelerated_plugin_view_mac.h"
@@ -2107,7 +2106,7 @@ void RenderWidgetHostViewMac::SetTextInputActive(bool active) {
[attribute isEqualToString:NSAccessibilityContentsAttribute]) &&
manager) {
return [NSArray arrayWithObjects:manager->
- GetRoot()->ToBrowserAccessibilityMac()->native_view(), nil];
+ GetRoot()->toBrowserAccessibilityCocoa(), nil];
} else if ([attribute isEqualToString:NSAccessibilityRoleAttribute]) {
return NSAccessibilityScrollAreaRole;
}
@@ -2130,7 +2129,7 @@ void RenderWidgetHostViewMac::SetTextInputActive(bool active) {
localPoint.y = NSHeight([self bounds]) - localPoint.y;
BrowserAccessibilityCocoa* root = renderWidgetHostView_->
GetBrowserAccessibilityManager()->
- GetRoot()->ToBrowserAccessibilityMac()->native_view();
+ GetRoot()->toBrowserAccessibilityCocoa();
id obj = [root accessibilityHitTest:localPoint];
return obj;
}
@@ -2144,7 +2143,7 @@ void RenderWidgetHostViewMac::SetTextInputActive(bool active) {
renderWidgetHostView_->GetBrowserAccessibilityManager();
// Only child is root.
if (manager &&
- manager->GetRoot()->ToBrowserAccessibilityMac()->native_view() == child) {
+ manager->GetRoot()->toBrowserAccessibilityCocoa() == child) {
return 0;
} else {
return NSNotFound;
@@ -2159,7 +2158,7 @@ void RenderWidgetHostViewMac::SetTextInputActive(bool active) {
DCHECK(focused_item);
if (focused_item) {
BrowserAccessibilityCocoa* focused_item_cocoa =
- focused_item->ToBrowserAccessibilityMac()->native_view();
+ focused_item->toBrowserAccessibilityCocoa();
DCHECK(focused_item_cocoa);
if (focused_item_cocoa)
return focused_item_cocoa;
diff --git a/content/browser/renderer_host/render_widget_host_view_win.cc b/content/browser/renderer_host/render_widget_host_view_win.cc
index 60b596c..5cd8d27 100644
--- a/content/browser/renderer_host/render_widget_host_view_win.cc
+++ b/content/browser/renderer_host/render_widget_host_view_win.cc
@@ -478,7 +478,7 @@ RenderWidgetHostViewWin::GetNativeViewAccessible() {
}
return GetBrowserAccessibilityManager()->GetRoot()->
- ToBrowserAccessibilityWin();
+ toBrowserAccessibilityWin();
}
void RenderWidgetHostViewWin::MovePluginWindows(
diff --git a/content/content_browser.gypi b/content/content_browser.gypi
index 10efd83..36ab74e 100644
--- a/content/content_browser.gypi
+++ b/content/content_browser.gypi
@@ -166,14 +166,10 @@
'browser/accessibility/browser_accessibility_cocoa.h',
'browser/accessibility/browser_accessibility_cocoa.mm',
'browser/accessibility/browser_accessibility_delegate_mac.h',
- 'browser/accessibility/browser_accessibility_gtk.cc',
- 'browser/accessibility/browser_accessibility_gtk.h',
'browser/accessibility/browser_accessibility_mac.h',
'browser/accessibility/browser_accessibility_mac.mm',
'browser/accessibility/browser_accessibility_manager.cc',
'browser/accessibility/browser_accessibility_manager.h',
- 'browser/accessibility/browser_accessibility_manager_gtk.cc',
- 'browser/accessibility/browser_accessibility_manager_gtk.h',
'browser/accessibility/browser_accessibility_manager_mac.h',
'browser/accessibility/browser_accessibility_manager_mac.mm',
'browser/accessibility/browser_accessibility_manager_win.cc',