| Index: content/shell/renderer/test_runner/web_ax_object_proxy.cc
|
| diff --git a/content/shell/renderer/test_runner/web_ax_object_proxy.cc b/content/shell/renderer/test_runner/web_ax_object_proxy.cc
|
| index 6b328686ebc612aba14563d655f392a925151f35..bb0c31a5077c32d0ad5078fd3acacf63c32c323d 100644
|
| --- a/content/shell/renderer/test_runner/web_ax_object_proxy.cc
|
| +++ b/content/shell/renderer/test_runner/web_ax_object_proxy.cc
|
| @@ -556,7 +556,7 @@ WebAXObjectProxy::GetObjectTemplateBuilder(v8::Isolate* isolate) {
|
| }
|
|
|
| v8::Handle<v8::Object> WebAXObjectProxy::GetChildAtIndex(unsigned index) {
|
| - return factory_->GetOrCreate(accessibility_object().childAt(index));
|
| + return factory_->GetOrCreate(accessibility_object_.childAt(index));
|
| }
|
|
|
| bool WebAXObjectProxy::IsRoot() const {
|
| @@ -564,7 +564,7 @@ bool WebAXObjectProxy::IsRoot() const {
|
| }
|
|
|
| bool WebAXObjectProxy::IsEqualToObject(const blink::WebAXObject& other) {
|
| - return accessibility_object().equals(other);
|
| + return accessibility_object_.equals(other);
|
| }
|
|
|
| void WebAXObjectProxy::NotificationReceived(
|
| @@ -596,189 +596,226 @@ void WebAXObjectProxy::Reset() {
|
| }
|
|
|
| std::string WebAXObjectProxy::Role() {
|
| - return GetRole(accessibility_object());
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return GetRole(accessibility_object_);
|
| }
|
|
|
| std::string WebAXObjectProxy::Title() {
|
| - return GetTitle(accessibility_object());
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return GetTitle(accessibility_object_);
|
| }
|
|
|
| std::string WebAXObjectProxy::Description() {
|
| - return GetDescription(accessibility_object());
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return GetDescription(accessibility_object_);
|
| }
|
|
|
| std::string WebAXObjectProxy::HelpText() {
|
| - return GetHelpText(accessibility_object());
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return GetHelpText(accessibility_object_);
|
| }
|
|
|
| std::string WebAXObjectProxy::StringValue() {
|
| - return GetStringValue(accessibility_object());
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return GetStringValue(accessibility_object_);
|
| }
|
|
|
| int WebAXObjectProxy::X() {
|
| - accessibility_object_.updateBackingStoreAndCheckValidity();
|
| - return accessibility_object().boundingBoxRect().x;
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.boundingBoxRect().x;
|
| }
|
|
|
| int WebAXObjectProxy::Y() {
|
| - accessibility_object_.updateBackingStoreAndCheckValidity();
|
| - return accessibility_object().boundingBoxRect().y;
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.boundingBoxRect().y;
|
| }
|
|
|
| int WebAXObjectProxy::Width() {
|
| - accessibility_object_.updateBackingStoreAndCheckValidity();
|
| - return accessibility_object().boundingBoxRect().width;
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.boundingBoxRect().width;
|
| }
|
|
|
| int WebAXObjectProxy::Height() {
|
| - accessibility_object_.updateBackingStoreAndCheckValidity();
|
| - return accessibility_object().boundingBoxRect().height;
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.boundingBoxRect().height;
|
| }
|
|
|
| int WebAXObjectProxy::IntValue() {
|
| - if (accessibility_object().supportsRangeValue())
|
| - return accessibility_object().valueForRange();
|
| - else if (accessibility_object().role() == blink::WebAXRoleHeading)
|
| - return accessibility_object().headingLevel();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + if (accessibility_object_.supportsRangeValue())
|
| + return accessibility_object_.valueForRange();
|
| + else if (accessibility_object_.role() == blink::WebAXRoleHeading)
|
| + return accessibility_object_.headingLevel();
|
| else
|
| - return atoi(accessibility_object().stringValue().utf8().data());
|
| + return atoi(accessibility_object_.stringValue().utf8().data());
|
| }
|
|
|
| int WebAXObjectProxy::MinValue() {
|
| - return accessibility_object().minValueForRange();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.minValueForRange();
|
| }
|
|
|
| int WebAXObjectProxy::MaxValue() {
|
| - return accessibility_object().maxValueForRange();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.maxValueForRange();
|
| }
|
|
|
| std::string WebAXObjectProxy::ValueDescription() {
|
| - return GetValueDescription(accessibility_object());
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return GetValueDescription(accessibility_object_);
|
| }
|
|
|
| int WebAXObjectProxy::ChildrenCount() {
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| int count = 1; // Root object always has only one child, the WebView.
|
| if (!IsRoot())
|
| - count = accessibility_object().childCount();
|
| + count = accessibility_object_.childCount();
|
| return count;
|
| }
|
|
|
| int WebAXObjectProxy::InsertionPointLineNumber() {
|
| - if (!accessibility_object().isFocused())
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + if (!accessibility_object_.isFocused())
|
| return -1;
|
| - return accessibility_object().selectionEndLineNumber();
|
| + return accessibility_object_.selectionEndLineNumber();
|
| }
|
|
|
| std::string WebAXObjectProxy::SelectedTextRange() {
|
| - unsigned selection_start = accessibility_object().selectionStart();
|
| - unsigned selection_end = accessibility_object().selectionEnd();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + unsigned selection_start = accessibility_object_.selectionStart();
|
| + unsigned selection_end = accessibility_object_.selectionEnd();
|
| return base::StringPrintf("{%d, %d}",
|
| selection_start, selection_end - selection_start);
|
| }
|
|
|
| bool WebAXObjectProxy::IsEnabled() {
|
| - return accessibility_object().isEnabled();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.isEnabled();
|
| }
|
|
|
| bool WebAXObjectProxy::IsRequired() {
|
| - return accessibility_object().isRequired();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.isRequired();
|
| }
|
|
|
| bool WebAXObjectProxy::IsFocused() {
|
| - return accessibility_object().isFocused();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.isFocused();
|
| }
|
|
|
| bool WebAXObjectProxy::IsFocusable() {
|
| - return accessibility_object().canSetFocusAttribute();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.canSetFocusAttribute();
|
| }
|
|
|
| bool WebAXObjectProxy::IsSelected() {
|
| - return accessibility_object().isSelected();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.isSelected();
|
| }
|
|
|
| bool WebAXObjectProxy::IsSelectable() {
|
| - return accessibility_object().canSetSelectedAttribute();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.canSetSelectedAttribute();
|
| }
|
|
|
| bool WebAXObjectProxy::IsMultiSelectable() {
|
| - return accessibility_object().isMultiSelectable();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.isMultiSelectable();
|
| }
|
|
|
| bool WebAXObjectProxy::IsSelectedOptionActive() {
|
| - return accessibility_object().isSelectedOptionActive();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.isSelectedOptionActive();
|
| }
|
|
|
| bool WebAXObjectProxy::IsExpanded() {
|
| - return !accessibility_object().isCollapsed();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return !accessibility_object_.isCollapsed();
|
| }
|
|
|
| bool WebAXObjectProxy::IsChecked() {
|
| - return accessibility_object().isChecked();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.isChecked();
|
| }
|
|
|
| bool WebAXObjectProxy::IsVisible() {
|
| - return accessibility_object().isVisible();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.isVisible();
|
| }
|
|
|
| bool WebAXObjectProxy::IsOffScreen() {
|
| - return accessibility_object().isOffScreen();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.isOffScreen();
|
| }
|
|
|
| bool WebAXObjectProxy::IsCollapsed() {
|
| - return accessibility_object().isCollapsed();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.isCollapsed();
|
| }
|
|
|
| bool WebAXObjectProxy::HasPopup() {
|
| - return accessibility_object().ariaHasPopup();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.ariaHasPopup();
|
| }
|
|
|
| bool WebAXObjectProxy::IsValid() {
|
| - return !accessibility_object().isDetached();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return !accessibility_object_.isDetached();
|
| }
|
|
|
| bool WebAXObjectProxy::IsReadOnly() {
|
| - return accessibility_object().isReadOnly();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.isReadOnly();
|
| }
|
|
|
| std::string WebAXObjectProxy::Orientation() {
|
| - return GetOrientation(accessibility_object());
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return GetOrientation(accessibility_object_);
|
| }
|
|
|
| int WebAXObjectProxy::ClickPointX() {
|
| - return accessibility_object().clickPoint().x;
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.clickPoint().x;
|
| }
|
|
|
| int WebAXObjectProxy::ClickPointY() {
|
| - return accessibility_object().clickPoint().y;
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.clickPoint().y;
|
| }
|
|
|
| int32_t WebAXObjectProxy::RowCount() {
|
| - return static_cast<int32_t>(accessibility_object().rowCount());
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return static_cast<int32_t>(accessibility_object_.rowCount());
|
| }
|
|
|
| int32_t WebAXObjectProxy::ColumnCount() {
|
| - return static_cast<int32_t>(accessibility_object().columnCount());
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return static_cast<int32_t>(accessibility_object_.columnCount());
|
| }
|
|
|
| bool WebAXObjectProxy::IsClickable() {
|
| - return accessibility_object().isClickable();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.isClickable();
|
| }
|
|
|
| std::string WebAXObjectProxy::AllAttributes() {
|
| - return GetAttributes(accessibility_object());
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return GetAttributes(accessibility_object_);
|
| }
|
|
|
| std::string WebAXObjectProxy::AttributesOfChildren() {
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| AttributesCollector collector;
|
| - unsigned size = accessibility_object().childCount();
|
| + unsigned size = accessibility_object_.childCount();
|
| for (unsigned i = 0; i < size; ++i)
|
| - collector.CollectAttributes(accessibility_object().childAt(i));
|
| + collector.CollectAttributes(accessibility_object_.childAt(i));
|
| return collector.attributes();
|
| }
|
|
|
| int WebAXObjectProxy::LineForIndex(int index) {
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| blink::WebVector<int> line_breaks;
|
| - accessibility_object().lineBreaks(line_breaks);
|
| + accessibility_object_.lineBreaks(line_breaks);
|
| int line = 0;
|
| int vector_size = static_cast<int>(line_breaks.size());
|
| while (line < vector_size && line_breaks[line] <= index)
|
| @@ -787,19 +824,20 @@ int WebAXObjectProxy::LineForIndex(int index) {
|
| }
|
|
|
| std::string WebAXObjectProxy::BoundsForRange(int start, int end) {
|
| - if (accessibility_object().role() != blink::WebAXRoleStaticText)
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + if (accessibility_object_.role() != blink::WebAXRoleStaticText)
|
| return std::string();
|
|
|
| - if (!accessibility_object_.updateBackingStoreAndCheckValidity())
|
| + if (!accessibility_object_.updateLayoutAndCheckValidity())
|
| return std::string();
|
|
|
| int len = end - start;
|
|
|
| // Get the bounds for each character and union them into one large rectangle.
|
| // This is just for testing so it doesn't need to be efficient.
|
| - blink::WebRect bounds = BoundsForCharacter(accessibility_object(), start);
|
| + blink::WebRect bounds = BoundsForCharacter(accessibility_object_, start);
|
| for (int i = 1; i < len; i++) {
|
| - blink::WebRect next = BoundsForCharacter(accessibility_object(), start + i);
|
| + blink::WebRect next = BoundsForCharacter(accessibility_object_, start + i);
|
| int right = std::max(bounds.x + bounds.width, next.x + next.width);
|
| int bottom = std::max(bounds.y + bounds.height, next.y + next.height);
|
| bounds.x = std::min(bounds.x, next.x);
|
| @@ -813,12 +851,14 @@ std::string WebAXObjectProxy::BoundsForRange(int start, int end) {
|
| }
|
|
|
| v8::Handle<v8::Object> WebAXObjectProxy::ChildAtIndex(int index) {
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| return GetChildAtIndex(index);
|
| }
|
|
|
| v8::Handle<v8::Object> WebAXObjectProxy::ElementAtPoint(int x, int y) {
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| blink::WebPoint point(x, y);
|
| - blink::WebAXObject obj = accessibility_object().hitTest(point);
|
| + blink::WebAXObject obj = accessibility_object_.hitTest(point);
|
| if (obj.isNull())
|
| return v8::Handle<v8::Object>();
|
|
|
| @@ -826,7 +866,8 @@ v8::Handle<v8::Object> WebAXObjectProxy::ElementAtPoint(int x, int y) {
|
| }
|
|
|
| v8::Handle<v8::Object> WebAXObjectProxy::TableHeader() {
|
| - blink::WebAXObject obj = accessibility_object().headerContainerObject();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + blink::WebAXObject obj = accessibility_object_.headerContainerObject();
|
| if (obj.isNull())
|
| return v8::Handle<v8::Object>();
|
|
|
| @@ -834,21 +875,24 @@ v8::Handle<v8::Object> WebAXObjectProxy::TableHeader() {
|
| }
|
|
|
| std::string WebAXObjectProxy::RowIndexRange() {
|
| - unsigned row_index = accessibility_object().cellRowIndex();
|
| - unsigned row_span = accessibility_object().cellRowSpan();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + unsigned row_index = accessibility_object_.cellRowIndex();
|
| + unsigned row_span = accessibility_object_.cellRowSpan();
|
| return base::StringPrintf("{%d, %d}", row_index, row_span);
|
| }
|
|
|
| std::string WebAXObjectProxy::ColumnIndexRange() {
|
| - unsigned column_index = accessibility_object().cellColumnIndex();
|
| - unsigned column_span = accessibility_object().cellColumnSpan();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + unsigned column_index = accessibility_object_.cellColumnIndex();
|
| + unsigned column_span = accessibility_object_.cellColumnSpan();
|
| return base::StringPrintf("{%d, %d}", column_index, column_span);
|
| }
|
|
|
| v8::Handle<v8::Object> WebAXObjectProxy::CellForColumnAndRow(
|
| int column, int row) {
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| blink::WebAXObject obj =
|
| - accessibility_object().cellForColumnAndRow(column, row);
|
| + accessibility_object_.cellForColumnAndRow(column, row);
|
| if (obj.isNull())
|
| return v8::Handle<v8::Object>();
|
|
|
| @@ -856,7 +900,8 @@ v8::Handle<v8::Object> WebAXObjectProxy::CellForColumnAndRow(
|
| }
|
|
|
| v8::Handle<v8::Object> WebAXObjectProxy::TitleUIElement() {
|
| - blink::WebAXObject obj = accessibility_object().titleUIElement();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + blink::WebAXObject obj = accessibility_object_.titleUIElement();
|
| if (obj.isNull())
|
| return v8::Handle<v8::Object>();
|
|
|
| @@ -865,49 +910,58 @@ v8::Handle<v8::Object> WebAXObjectProxy::TitleUIElement() {
|
|
|
| void WebAXObjectProxy::SetSelectedTextRange(int selection_start,
|
| int length) {
|
| - accessibility_object().setSelectedTextRange(selection_start,
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + accessibility_object_.setSelectedTextRange(selection_start,
|
| selection_start + length);
|
| }
|
|
|
| bool WebAXObjectProxy::IsAttributeSettable(const std::string& attribute) {
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| bool settable = false;
|
| if (attribute == "AXValue")
|
| - settable = accessibility_object().canSetValueAttribute();
|
| + settable = accessibility_object_.canSetValueAttribute();
|
| return settable;
|
| }
|
|
|
| bool WebAXObjectProxy::IsPressActionSupported() {
|
| - return accessibility_object().canPress();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.canPress();
|
| }
|
|
|
| bool WebAXObjectProxy::IsIncrementActionSupported() {
|
| - return accessibility_object().canIncrement();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.canIncrement();
|
| }
|
|
|
| bool WebAXObjectProxy::IsDecrementActionSupported() {
|
| - return accessibility_object().canDecrement();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + return accessibility_object_.canDecrement();
|
| }
|
|
|
| v8::Handle<v8::Object> WebAXObjectProxy::ParentElement() {
|
| - blink::WebAXObject parent_object = accessibility_object().parentObject();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + blink::WebAXObject parent_object = accessibility_object_.parentObject();
|
| while (parent_object.accessibilityIsIgnored())
|
| parent_object = parent_object.parentObject();
|
| return factory_->GetOrCreate(parent_object);
|
| }
|
|
|
| void WebAXObjectProxy::Increment() {
|
| - accessibility_object().increment();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + accessibility_object_.increment();
|
| }
|
|
|
| void WebAXObjectProxy::Decrement() {
|
| - accessibility_object().decrement();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + accessibility_object_.decrement();
|
| }
|
|
|
| void WebAXObjectProxy::ShowMenu() {
|
| }
|
|
|
| void WebAXObjectProxy::Press() {
|
| - accessibility_object().press();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + accessibility_object_.press();
|
| }
|
|
|
| bool WebAXObjectProxy::IsEqual(v8::Handle<v8::Object> proxy) {
|
| @@ -928,39 +982,45 @@ void WebAXObjectProxy::UnsetNotificationListener() {
|
| }
|
|
|
| void WebAXObjectProxy::TakeFocus() {
|
| - accessibility_object().setFocused(true);
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + accessibility_object_.setFocused(true);
|
| }
|
|
|
| void WebAXObjectProxy::ScrollToMakeVisible() {
|
| - accessibility_object().scrollToMakeVisible();
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + accessibility_object_.scrollToMakeVisible();
|
| }
|
|
|
| void WebAXObjectProxy::ScrollToMakeVisibleWithSubFocus(int x, int y,
|
| int width, int height) {
|
| - accessibility_object().scrollToMakeVisibleWithSubFocus(
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + accessibility_object_.scrollToMakeVisibleWithSubFocus(
|
| blink::WebRect(x, y, width, height));
|
| }
|
|
|
| void WebAXObjectProxy::ScrollToGlobalPoint(int x, int y) {
|
| - accessibility_object().scrollToGlobalPoint(blink::WebPoint(x, y));
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + accessibility_object_.scrollToGlobalPoint(blink::WebPoint(x, y));
|
| }
|
|
|
| int WebAXObjectProxy::WordStart(int character_index) {
|
| - if (accessibility_object().role() != blink::WebAXRoleStaticText)
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + if (accessibility_object_.role() != blink::WebAXRoleStaticText)
|
| return -1;
|
|
|
| int word_start, word_end;
|
| - GetBoundariesForOneWord(accessibility_object(), character_index,
|
| + GetBoundariesForOneWord(accessibility_object_, character_index,
|
| word_start, word_end);
|
| return word_start;
|
| }
|
|
|
| int WebAXObjectProxy::WordEnd(int character_index) {
|
| - if (accessibility_object().role() != blink::WebAXRoleStaticText)
|
| + accessibility_object_.updateLayoutAndCheckValidity();
|
| + if (accessibility_object_.role() != blink::WebAXRoleStaticText)
|
| return -1;
|
|
|
| int word_start, word_end;
|
| - GetBoundariesForOneWord(accessibility_object(), character_index,
|
| + GetBoundariesForOneWord(accessibility_object_, character_index,
|
| word_start, word_end);
|
| return word_end;
|
| }
|
|
|