// Copyright 2014 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 COMPONENTS_TEST_RUNNER_ACCESSIBILITY_CONTROLLER_H_ #define COMPONENTS_TEST_RUNNER_ACCESSIBILITY_CONTROLLER_H_ #include #include "base/memory/weak_ptr.h" #include "components/test_runner/web_ax_object_proxy.h" #include "third_party/WebKit/public/web/WebAXObject.h" #include "v8/include/v8.h" namespace blink { class WebFrame; class WebString; class WebView; } namespace test_runner { class WebTestDelegate; class AccessibilityController : public base::SupportsWeakPtr { public: AccessibilityController(); ~AccessibilityController(); void Reset(); void Install(blink::WebFrame* frame); void SetFocusedElement(const blink::WebAXObject&); bool ShouldLogAccessibilityEvents(); void NotificationReceived(const blink::WebAXObject& target, const std::string& notification_name); void SetDelegate(WebTestDelegate* delegate); void SetWebView(blink::WebView* web_view); private: friend class AccessibilityControllerBindings; // Bound methods and properties void LogAccessibilityEvents(); void SetNotificationListener(v8::Local callback); void UnsetNotificationListener(); v8::Local FocusedElement(); v8::Local RootElement(); v8::Local AccessibleElementById(const std::string& id); v8::Local FindAccessibleElementByIdRecursive( const blink::WebAXObject&, const blink::WebString& id); // If true, will log all accessibility notifications. bool log_accessibility_events_; blink::WebAXObject focused_element_; blink::WebAXObject root_element_; WebAXObjectProxyList elements_; v8::Persistent notification_callback_; WebTestDelegate* delegate_; blink::WebView* web_view_; base::WeakPtrFactory weak_factory_; DISALLOW_COPY_AND_ASSIGN(AccessibilityController); }; } // namespace test_runner #endif // COMPONENTS_TEST_RUNNER_ACCESSIBILITY_CONTROLLER_H_