[chromium] move EventSender into TestRunner.a
[WebKit-https.git] / Tools / DumpRenderTree / chromium / TestRunner / TestInterfaces.cpp
1 /*
2  * Copyright (C) 2012 Google Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  *
8  *     * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *     * Redistributions in binary form must reproduce the above
11  * copyright notice, this list of conditions and the following disclaimer
12  * in the documentation and/or other materials provided with the
13  * distribution.
14  *     * Neither the name of Google Inc. nor the names of its
15  * contributors may be used to endorse or promote products derived from
16  * this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 #include "config.h"
32 #include "TestInterfaces.h"
33
34 #include "AccessibilityController.h"
35 #include "EventSender.h"
36 #include "GamepadController.h"
37 #include "TextInputController.h"
38 #include "platform/WebString.h"
39
40 #include <wtf/OwnPtr.h>
41
42 using WebKit::WebFrame;
43 using WebKit::WebString;
44 using WebKit::WebView;
45
46 class TestInterfaces::Internal {
47 public:
48     Internal();
49     ~Internal();
50
51     void setWebView(WebView*);
52     void setDelegate(TestDelegate*);
53     void bindTo(WebFrame*);
54     void resetAll();
55
56     AccessibilityController* accessibilityController() { return m_accessibilityController.get(); }
57     EventSender* eventSender() { return m_eventSender.get(); }
58
59 private:
60     OwnPtr<AccessibilityController> m_accessibilityController;
61     OwnPtr<EventSender> m_eventSender;
62     OwnPtr<GamepadController> m_gamepadController;
63     OwnPtr<TextInputController> m_textInputController;
64 };
65
66 TestInterfaces::Internal::Internal()
67 {
68     m_accessibilityController = adoptPtr(new AccessibilityController());
69     m_eventSender = adoptPtr(new EventSender());
70     m_gamepadController = adoptPtr(new GamepadController());
71     m_textInputController = adoptPtr(new TextInputController());
72 }
73
74 TestInterfaces::Internal::~Internal()
75 {
76     m_accessibilityController->setWebView(0);
77     m_eventSender->setWebView(0);
78     // m_gamepadController doesn't depend on WebView.
79     m_textInputController->setWebView(0);
80
81     // m_accessibilityController doesn't depend on TestDelegate.
82     m_eventSender->setDelegate(0);
83     m_gamepadController->setDelegate(0);
84     // m_textInputController doesn't depend on TestDelegate.
85 }
86
87 void TestInterfaces::Internal::setWebView(WebView* webView)
88 {
89     m_accessibilityController->setWebView(webView);
90     m_eventSender->setWebView(webView);
91     // m_gamepadController doesn't depend on WebView.
92     m_textInputController->setWebView(webView);
93 }
94
95 void TestInterfaces::Internal::setDelegate(TestDelegate* delegate)
96 {
97     // m_accessibilityController doesn't depend on TestDelegate.
98     m_eventSender->setDelegate(delegate);
99     m_gamepadController->setDelegate(delegate);
100     // m_textInputController doesn't depend on TestDelegate.
101 }
102
103 void TestInterfaces::Internal::bindTo(WebFrame* frame)
104 {
105     m_accessibilityController->bindToJavascript(frame, WebString::fromUTF8("accessibilityController"));
106     m_eventSender->bindToJavascript(frame, WebString::fromUTF8("eventSender"));
107     m_gamepadController->bindToJavascript(frame, WebString::fromUTF8("gamepadController"));
108     m_textInputController->bindToJavascript(frame, WebString::fromUTF8("textInputController"));
109 }
110
111 void TestInterfaces::Internal::resetAll()
112 {
113     m_accessibilityController->reset();
114     m_eventSender->reset();
115     m_gamepadController->reset();
116     // m_textInputController doesn't have any state to reset.
117 }
118
119 TestInterfaces::TestInterfaces()
120     : m_internal(new TestInterfaces::Internal())
121 {
122 }
123
124 TestInterfaces::~TestInterfaces()
125 {
126     delete m_internal;
127 }
128
129 void TestInterfaces::setWebView(WebView* webView)
130 {
131     m_internal->setWebView(webView);
132 }
133
134 void TestInterfaces::setDelegate(TestDelegate* delegate)
135 {
136     m_internal->setDelegate(delegate);
137 }
138
139 void TestInterfaces::bindTo(WebFrame* frame)
140 {
141     m_internal->bindTo(frame);
142 }
143
144 void TestInterfaces::resetAll()
145 {
146     m_internal->resetAll();
147 }
148
149 AccessibilityController* TestInterfaces::accessibilityController()
150 {
151     return m_internal->accessibilityController();
152 }
153
154 EventSender* TestInterfaces::eventSender()
155 {
156     return m_internal->eventSender();
157 }