| OLD | NEW |
| (Empty) |
| 1 // Copyright 2014 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. | |
| 4 | |
| 5 #ifndef COMPONENTS_TEST_RUNNER_WEB_AX_OBJECT_PROXY_H_ | |
| 6 #define COMPONENTS_TEST_RUNNER_WEB_AX_OBJECT_PROXY_H_ | |
| 7 | |
| 8 #include <stdint.h> | |
| 9 | |
| 10 #include <string> | |
| 11 | |
| 12 #include "base/macros.h" | |
| 13 #include "gin/object_template_builder.h" | |
| 14 #include "gin/wrappable.h" | |
| 15 #include "third_party/WebKit/public/web/WebAXObject.h" | |
| 16 #include "v8/include/v8-util.h" | |
| 17 #include "v8/include/v8.h" | |
| 18 | |
| 19 namespace blink { | |
| 20 class WebFrame; | |
| 21 } | |
| 22 | |
| 23 namespace test_runner { | |
| 24 | |
| 25 class WebAXObjectProxy : public gin::Wrappable<WebAXObjectProxy> { | |
| 26 public: | |
| 27 class Factory { | |
| 28 public: | |
| 29 virtual ~Factory() { } | |
| 30 virtual v8::Local<v8::Object> GetOrCreate( | |
| 31 const blink::WebAXObject& object) = 0; | |
| 32 }; | |
| 33 | |
| 34 static gin::WrapperInfo kWrapperInfo; | |
| 35 | |
| 36 WebAXObjectProxy(const blink::WebAXObject& object, Factory* factory); | |
| 37 ~WebAXObjectProxy() override; | |
| 38 | |
| 39 // gin::Wrappable: | |
| 40 gin::ObjectTemplateBuilder GetObjectTemplateBuilder( | |
| 41 v8::Isolate* isolate) override; | |
| 42 | |
| 43 virtual v8::Local<v8::Object> GetChildAtIndex(unsigned index); | |
| 44 virtual bool IsRoot() const; | |
| 45 bool IsEqualToObject(const blink::WebAXObject& object); | |
| 46 | |
| 47 void NotificationReceived(blink::WebFrame* frame, | |
| 48 const std::string& notification_name); | |
| 49 void Reset(); | |
| 50 | |
| 51 protected: | |
| 52 const blink::WebAXObject& accessibility_object() const { | |
| 53 return accessibility_object_; | |
| 54 } | |
| 55 | |
| 56 Factory* factory() const { return factory_; } | |
| 57 | |
| 58 private: | |
| 59 friend class WebAXObjectProxyBindings; | |
| 60 | |
| 61 // Bound properties. | |
| 62 std::string Role(); | |
| 63 std::string StringValue(); | |
| 64 std::string Language(); | |
| 65 int X(); | |
| 66 int Y(); | |
| 67 int Width(); | |
| 68 int Height(); | |
| 69 int IntValue(); | |
| 70 int MinValue(); | |
| 71 int MaxValue(); | |
| 72 std::string ValueDescription(); | |
| 73 int ChildrenCount(); | |
| 74 | |
| 75 // The following selection functions return global information about the | |
| 76 // current selection and can be called on any object in the tree. | |
| 77 v8::Local<v8::Value> SelectionAnchorObject(); | |
| 78 int SelectionAnchorOffset(); | |
| 79 std::string SelectionAnchorAffinity(); | |
| 80 v8::Local<v8::Value> SelectionFocusObject(); | |
| 81 int SelectionFocusOffset(); | |
| 82 std::string SelectionFocusAffinity(); | |
| 83 | |
| 84 // The following selection functions return text offsets calculated starting | |
| 85 // at this object. They only report on a selection that is placed on the | |
| 86 // current object or on any of its descendants. | |
| 87 // For example, they can be used to retrieve the selection in an input or | |
| 88 // a textarea. | |
| 89 int SelectionStart(); | |
| 90 int SelectionEnd(); | |
| 91 int SelectionStartLineNumber(); | |
| 92 int SelectionEndLineNumber(); | |
| 93 | |
| 94 bool IsEnabled(); | |
| 95 bool IsRequired(); | |
| 96 bool IsEditable(); | |
| 97 bool IsRichlyEditable(); | |
| 98 bool IsFocused(); | |
| 99 bool IsFocusable(); | |
| 100 bool IsModal(); | |
| 101 bool IsSelected(); | |
| 102 bool IsSelectable(); | |
| 103 bool IsMultiSelectable(); | |
| 104 bool IsSelectedOptionActive(); | |
| 105 bool IsExpanded(); | |
| 106 bool IsChecked(); | |
| 107 bool IsVisible(); | |
| 108 bool IsOffScreen(); | |
| 109 bool IsCollapsed(); | |
| 110 bool HasPopup(); | |
| 111 bool IsValid(); | |
| 112 bool IsReadOnly(); | |
| 113 unsigned int BackgroundColor(); | |
| 114 unsigned int Color(); | |
| 115 // For input elements of type color. | |
| 116 unsigned int ColorValue(); | |
| 117 std::string FontFamily(); | |
| 118 float FontSize(); | |
| 119 std::string Orientation(); | |
| 120 int PosInSet(); | |
| 121 int SetSize(); | |
| 122 int ClickPointX(); | |
| 123 int ClickPointY(); | |
| 124 int32_t RowCount(); | |
| 125 int32_t RowHeadersCount(); | |
| 126 int32_t ColumnCount(); | |
| 127 int32_t ColumnHeadersCount(); | |
| 128 bool IsClickable(); | |
| 129 bool IsButtonStateMixed(); | |
| 130 float BoundsX(); | |
| 131 float BoundsY(); | |
| 132 float BoundsWidth(); | |
| 133 float BoundsHeight(); | |
| 134 | |
| 135 // Bound methods. | |
| 136 v8::Local<v8::Object> AriaControlsElementAtIndex(unsigned index); | |
| 137 v8::Local<v8::Object> AriaFlowToElementAtIndex(unsigned index); | |
| 138 v8::Local<v8::Object> AriaOwnsElementAtIndex(unsigned index); | |
| 139 std::string AllAttributes(); | |
| 140 std::string AttributesOfChildren(); | |
| 141 int LineForIndex(int index); | |
| 142 std::string BoundsForRange(int start, int end); | |
| 143 v8::Local<v8::Object> ChildAtIndex(int index); | |
| 144 v8::Local<v8::Object> ElementAtPoint(int x, int y); | |
| 145 v8::Local<v8::Object> TableHeader(); | |
| 146 v8::Local<v8::Object> RowHeaderAtIndex(unsigned index); | |
| 147 v8::Local<v8::Object> ColumnHeaderAtIndex(unsigned index); | |
| 148 std::string RowIndexRange(); | |
| 149 std::string ColumnIndexRange(); | |
| 150 v8::Local<v8::Object> CellForColumnAndRow(int column, int row); | |
| 151 void SetSelectedTextRange(int selection_start, int length); | |
| 152 void SetSelection(v8::Local<v8::Value> anchor_object, int anchor_offset, | |
| 153 v8::Local<v8::Value> focus_object, int focus_offset); | |
| 154 bool IsAttributeSettable(const std::string& attribute); | |
| 155 bool IsPressActionSupported(); | |
| 156 bool IsIncrementActionSupported(); | |
| 157 bool IsDecrementActionSupported(); | |
| 158 v8::Local<v8::Object> ParentElement(); | |
| 159 void Increment(); | |
| 160 void Decrement(); | |
| 161 void ShowMenu(); | |
| 162 void Press(); | |
| 163 bool SetValue(const std::string& value); | |
| 164 bool IsEqual(v8::Local<v8::Object> proxy); | |
| 165 void SetNotificationListener(v8::Local<v8::Function> callback); | |
| 166 void UnsetNotificationListener(); | |
| 167 void TakeFocus(); | |
| 168 void ScrollToMakeVisible(); | |
| 169 void ScrollToMakeVisibleWithSubFocus(int x, int y, int width, int height); | |
| 170 void ScrollToGlobalPoint(int x, int y); | |
| 171 int ScrollX(); | |
| 172 int ScrollY(); | |
| 173 int WordStart(int character_index); | |
| 174 int WordEnd(int character_index); | |
| 175 v8::Local<v8::Object> NextOnLine(); | |
| 176 v8::Local<v8::Object> PreviousOnLine(); | |
| 177 std::string MisspellingAtIndex(int index); | |
| 178 v8::Local<v8::Object> OffsetContainer(); | |
| 179 float BoundsInContainerX(); | |
| 180 float BoundsInContainerY(); | |
| 181 float BoundsInContainerWidth(); | |
| 182 float BoundsInContainerHeight(); | |
| 183 bool HasNonIdentityTransform(); | |
| 184 | |
| 185 std::string Name(); | |
| 186 std::string NameFrom(); | |
| 187 int NameElementCount(); | |
| 188 v8::Local<v8::Object> NameElementAtIndex(unsigned index); | |
| 189 | |
| 190 std::string Description(); | |
| 191 std::string DescriptionFrom(); | |
| 192 int MisspellingsCount(); | |
| 193 int DescriptionElementCount(); | |
| 194 v8::Local<v8::Object> DescriptionElementAtIndex(unsigned index); | |
| 195 | |
| 196 std::string Placeholder(); | |
| 197 | |
| 198 blink::WebAXObject accessibility_object_; | |
| 199 Factory* factory_; | |
| 200 | |
| 201 v8::Persistent<v8::Function> notification_callback_; | |
| 202 | |
| 203 DISALLOW_COPY_AND_ASSIGN(WebAXObjectProxy); | |
| 204 }; | |
| 205 | |
| 206 class RootWebAXObjectProxy : public WebAXObjectProxy { | |
| 207 public: | |
| 208 RootWebAXObjectProxy(const blink::WebAXObject&, Factory*); | |
| 209 | |
| 210 v8::Local<v8::Object> GetChildAtIndex(unsigned index) override; | |
| 211 bool IsRoot() const override; | |
| 212 }; | |
| 213 | |
| 214 | |
| 215 // Provides simple lifetime management of the WebAXObjectProxy instances: all | |
| 216 // WebAXObjectProxys ever created from the controller are stored in a list and | |
| 217 // cleared explicitly. | |
| 218 class WebAXObjectProxyList : public WebAXObjectProxy::Factory { | |
| 219 public: | |
| 220 WebAXObjectProxyList(); | |
| 221 ~WebAXObjectProxyList() override; | |
| 222 | |
| 223 void Clear(); | |
| 224 v8::Local<v8::Object> GetOrCreate(const blink::WebAXObject&) override; | |
| 225 | |
| 226 private: | |
| 227 typedef v8::PersistentValueVector<v8::Object> ElementList; | |
| 228 ElementList elements_; | |
| 229 }; | |
| 230 | |
| 231 } // namespace test_runner | |
| 232 | |
| 233 #endif // COMPONENTS_TEST_RUNNER_WEB_AX_OBJECT_PROXY_H_ | |
| OLD | NEW |