| Index: components/test_runner/accessibility_controller.cc
|
| diff --git a/components/test_runner/accessibility_controller.cc b/components/test_runner/accessibility_controller.cc
|
| index f6fd849ba0b417aa17511fe2195874b6926c83c0..9d660b8c3a12839cf57a87d6de33168922606de1 100644
|
| --- a/components/test_runner/accessibility_controller.cc
|
| +++ b/components/test_runner/accessibility_controller.cc
|
| @@ -8,6 +8,7 @@
|
| #include "gin/handle.h"
|
| #include "gin/object_template_builder.h"
|
| #include "gin/wrappable.h"
|
| +#include "third_party/WebKit/public/web/WebDocument.h"
|
| #include "third_party/WebKit/public/web/WebElement.h"
|
| #include "third_party/WebKit/public/web/WebFrame.h"
|
| #include "third_party/WebKit/public/web/WebKit.h"
|
| @@ -140,8 +141,6 @@ AccessibilityController::AccessibilityController()
|
| AccessibilityController::~AccessibilityController() {}
|
|
|
| void AccessibilityController::Reset() {
|
| - root_element_ = blink::WebAXObject();
|
| - focused_element_ = blink::WebAXObject();
|
| elements_.Clear();
|
| notification_callback_.Reset();
|
| log_accessibility_events_ = false;
|
| @@ -154,11 +153,6 @@ void AccessibilityController::Install(blink::WebFrame* frame) {
|
| AccessibilityControllerBindings::Install(weak_factory_.GetWeakPtr(), frame);
|
| }
|
|
|
| -void AccessibilityController::SetFocusedElement(
|
| - const blink::WebAXObject& focused_element) {
|
| - focused_element_ = focused_element;
|
| -}
|
| -
|
| bool AccessibilityController::ShouldLogAccessibilityEvents() {
|
| return log_accessibility_events_;
|
| }
|
| @@ -228,27 +222,31 @@ void AccessibilityController::UnsetNotificationListener() {
|
| }
|
|
|
| v8::Local<v8::Object> AccessibilityController::FocusedElement() {
|
| - if (focused_element_.isNull())
|
| - focused_element_ = web_view_->accessibilityObject();
|
| - return elements_.GetOrCreate(focused_element_);
|
| + blink::WebFrame* frame = web_view_->mainFrame();
|
| + if (!frame)
|
| + return v8::Local<v8::Object>();
|
| +
|
| + blink::WebAXObject focused_element =
|
| + frame->document().focusedAccessibilityObject();
|
| + if (focused_element.isNull())
|
| + focused_element = web_view_->accessibilityObject();
|
| + return elements_.GetOrCreate(focused_element);
|
| }
|
|
|
| v8::Local<v8::Object> AccessibilityController::RootElement() {
|
| - if (root_element_.isNull())
|
| - root_element_ = web_view_->accessibilityObject();
|
| - return elements_.GetOrCreate(root_element_);
|
| + blink::WebAXObject root_element = web_view_->accessibilityObject();
|
| + return elements_.GetOrCreate(root_element);
|
| }
|
|
|
| v8::Local<v8::Object>
|
| AccessibilityController::AccessibleElementById(const std::string& id) {
|
| - if (root_element_.isNull())
|
| - root_element_ = web_view_->accessibilityObject();
|
| + blink::WebAXObject root_element = web_view_->accessibilityObject();
|
|
|
| - if (!root_element_.updateLayoutAndCheckValidity())
|
| + if (!root_element.updateLayoutAndCheckValidity())
|
| return v8::Local<v8::Object>();
|
|
|
| return FindAccessibleElementByIdRecursive(
|
| - root_element_, blink::WebString::fromUTF8(id.c_str()));
|
| + root_element, blink::WebString::fromUTF8(id.c_str()));
|
| }
|
|
|
| v8::Local<v8::Object>
|
|
|