1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// found in the LICENSE file. 4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#ifndef CONTENT_SHELL_RENDERER_TEST_RUNNER_ACCESSIBILITY_CONTROLLER_H_ 6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#define CONTENT_SHELL_RENDERER_TEST_RUNNER_ACCESSIBILITY_CONTROLLER_H_ 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include <vector> 9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "base/memory/weak_ptr.h" 11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "content/shell/renderer/test_runner/web_ax_object_proxy.h" 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "third_party/WebKit/public/web/WebAXObject.h" 13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "v8/include/v8.h" 14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace blink { 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class WebFrame; 17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class WebString; 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class WebView; 19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace content { 22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class WebTestDelegate; 24010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class AccessibilityController : 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public base::SupportsWeakPtr<AccessibilityController> { 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public: 28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AccessibilityController(); 29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ~AccessibilityController(); 30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void Reset(); 32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void Install(blink::WebFrame* frame); 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void SetFocusedElement(const blink::WebAXObject&); 34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool ShouldLogAccessibilityEvents(); 35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void NotificationReceived(const blink::WebAXObject& target, 36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const std::string& notification_name); 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 38010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void SetDelegate(WebTestDelegate* delegate); 39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void SetWebView(blink::WebView* web_view); 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private: 42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) friend class AccessibilityControllerBindings; 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Bound methods and properties 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void LogAccessibilityEvents(); 46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void SetNotificationListener(v8::Handle<v8::Function> callback); 47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) void UnsetNotificationListener(); 48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) v8::Handle<v8::Object> FocusedElement(); 49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) v8::Handle<v8::Object> RootElement(); 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) v8::Handle<v8::Object> AccessibleElementById(const std::string& id); 51a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 52a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) v8::Handle<v8::Object> FindAccessibleElementByIdRecursive( 53a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const blink::WebAXObject&, const blink::WebString& id); 54a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 55a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // If true, will log all accessibility notifications. 56a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool log_accessibility_events_; 57a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) blink::WebAXObject focused_element_; 59a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) blink::WebAXObject root_element_; 60a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 61a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) WebAXObjectProxyList elements_; 62a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 63a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) v8::Persistent<v8::Function> notification_callback_; 64a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 65010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) WebTestDelegate* delegate_; 66a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) blink::WebView* web_view_; 67a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 68a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::WeakPtrFactory<AccessibilityController> weak_factory_; 69a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 70a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AccessibilityController); 71a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}; 72a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 73a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} // namespace content 74a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 75a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif // CONTENT_SHELL_RENDERER_TEST_RUNNER_ACCESSIBILITY_CONTROLLER_H_ 76