blob: d930177073930ad2f7a4e7192898dba7244ecdb1 [file] [log] [blame]
// 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 WEBKIT_TOOLS_TEST_SHELL_ACCESSIBILITY_UI_ELEMENT_H_
#define WEBKIT_TOOLS_TEST_SHELL_ACCESSIBILITY_UI_ELEMENT_H_
#include "webkit/glue/cpp_bound_class.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebAccessibilityObject.h"
class AccessibilityUIElement : public webkit_glue::CppBoundClass {
public:
class Factory {
public:
virtual ~Factory() { }
virtual AccessibilityUIElement* Create(
const WebKit::WebAccessibilityObject& object) = 0;
};
AccessibilityUIElement(
const WebKit::WebAccessibilityObject& accessibility_object,
Factory* factory);
virtual ~AccessibilityUIElement();
virtual AccessibilityUIElement* GetChildAtIndex(unsigned index);
virtual bool IsRoot() const;
protected:
const WebKit::WebAccessibilityObject& accessibility_object() const {
return accessibility_object_;
}
Factory* factory() const { return factory_; }
private:
// Bound methods and properties.
void AllAttributesCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void AttributesOfLinkedUIElementsCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void AttributesOfDocumentLinksCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void AttributesOfChildrenCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void ParametrizedAttributeNamesCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void LineForIndexCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void BoundsForRangeCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void StringForRangeCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void ChildAtIndexCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void ElementAtPointCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void AttributesOfColumnHeadersCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void AttributesOfRowHeadersCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void AttributesOfColumnsCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void AttributesOfRowsCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void AttributesOfVisibleCellsCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void AttributesOfHeaderCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void IndexInTableCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void RowIndexRangeCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void ColumnIndexRangeCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void CellForColumnAndRowCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void TitleUIElementCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void SetSelectedTextRangeCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void AttributeValueCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void IsAttributeSettableCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void IsActionSupportedCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void ParentElementCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void IncrementCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void DecrementCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void FallbackCallback(
const webkit_glue::CppArgumentList& args,
webkit_glue::CppVariant* result);
void ChildrenCountGetterCallback(webkit_glue::CppVariant* result);
void DescriptionGetterCallback(webkit_glue::CppVariant* result);
void IsEnabledGetterCallback(webkit_glue::CppVariant* result);
void IsSelectedGetterCallback(webkit_glue::CppVariant* result);
void RoleGetterCallback(webkit_glue::CppVariant* result);
void TitleGetterCallback(webkit_glue::CppVariant* result);
webkit_glue::CppVariant subrole_;
webkit_glue::CppVariant language_;
webkit_glue::CppVariant x_;
webkit_glue::CppVariant y_;
webkit_glue::CppVariant width_;
webkit_glue::CppVariant height_;
webkit_glue::CppVariant click_point_x_;
webkit_glue::CppVariant click_point_y_;
webkit_glue::CppVariant int_value_;
webkit_glue::CppVariant min_value_;
webkit_glue::CppVariant max_value_;
webkit_glue::CppVariant children_count_;
webkit_glue::CppVariant insertion_point_line_number_;
webkit_glue::CppVariant selected_text_range;
webkit_glue::CppVariant is_required_;
webkit_glue::CppVariant value_description_;
WebKit::WebAccessibilityObject accessibility_object_;
Factory* factory_;
};
class RootAccessibilityUIElement : public AccessibilityUIElement {
public:
RootAccessibilityUIElement(
const WebKit::WebAccessibilityObject& accessibility_object,
Factory* factory);
virtual ~RootAccessibilityUIElement();
virtual AccessibilityUIElement* GetChildAtIndex(unsigned index) OVERRIDE;
virtual bool IsRoot() const OVERRIDE;
};
// Provides simple lifetime management of the AccessibilityUIElement instances:
// all AccessibilityUIElements ever created from the controller are stored in
// a list and cleared explicitly.
class AccessibilityUIElementList : public AccessibilityUIElement::Factory {
public:
AccessibilityUIElementList();
virtual ~AccessibilityUIElementList();
void Clear();
virtual AccessibilityUIElement* Create(
const WebKit::WebAccessibilityObject& object) OVERRIDE;
AccessibilityUIElement* CreateRoot(
const WebKit::WebAccessibilityObject& object);
private:
typedef std::vector<AccessibilityUIElement*> ElementList;
ElementList elements_;
};
#endif // WEBKIT_TOOLS_TEST_SHELL_ACCESSIBILITY_UI_ELEMENT_H_