Commit c5700bb9 authored by haraken@chromium.org's avatar haraken@chromium.org

Revert 289489 "Ensure there's no layout pending before accessing..."

accessibility/deleting-iframe-destroys-axcache.html started to fail after this CL.
http://build.chromium.org/p/tryserver.blink/builders/linux_blink_rel/builds/20592

> Ensure there's no layout pending before accessing WebAXObject from TestRunner.
> 
> It's not safe to call WebAXObject functions when there's a layout pending.
> Chrome never does this, it only calls WebAXObject from
> renderer_accessibility_complete, and it makes sure to update layout before
> accessing the accessibility tree.
> 
> TestRunner didn't have the same protections, so this just explicitly updates
> the layout before any accessibility call.
> 
> BUG=393829
> 
> Review URL: https://codereview.chromium.org/469803003

TBR=dmazzoni@chromium.org

Review URL: https://codereview.chromium.org/464403003

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