OLD | NEW |
| (Empty) |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "components/test_runner/web_view_test_client.h" | |
6 | |
7 #include "base/bind.h" | |
8 #include "base/bind_helpers.h" | |
9 #include "base/i18n/rtl.h" | |
10 #include "base/strings/string16.h" | |
11 #include "base/strings/utf_string_conversions.h" | |
12 #include "base/time/time.h" | |
13 #include "components/test_runner/event_sender.h" | |
14 #include "components/test_runner/mock_web_speech_recognizer.h" | |
15 #include "components/test_runner/test_common.h" | |
16 #include "components/test_runner/test_interfaces.h" | |
17 #include "components/test_runner/test_runner.h" | |
18 #include "components/test_runner/test_runner_for_specific_view.h" | |
19 #include "components/test_runner/web_test_delegate.h" | |
20 #include "components/test_runner/web_view_test_proxy.h" | |
21 #include "components/test_runner/web_widget_test_proxy.h" | |
22 #include "third_party/WebKit/public/platform/WebURLRequest.h" | |
23 #include "third_party/WebKit/public/web/WebFrame.h" | |
24 #include "third_party/WebKit/public/web/WebLocalFrame.h" | |
25 #include "third_party/WebKit/public/web/WebPagePopup.h" | |
26 #include "third_party/WebKit/public/web/WebPrintParams.h" | |
27 #include "third_party/WebKit/public/web/WebView.h" | |
28 #include "third_party/WebKit/public/web/WebWidget.h" | |
29 | |
30 namespace test_runner { | |
31 | |
32 WebViewTestClient::WebViewTestClient( | |
33 WebViewTestProxyBase* web_view_test_proxy_base) | |
34 : web_view_test_proxy_base_(web_view_test_proxy_base) { | |
35 DCHECK(web_view_test_proxy_base); | |
36 } | |
37 | |
38 WebViewTestClient::~WebViewTestClient() {} | |
39 | |
40 // The output from these methods in layout test mode should match that | |
41 // expected by the layout tests. See EditingDelegate.m in DumpRenderTree. | |
42 | |
43 void WebViewTestClient::didChangeContents() { | |
44 if (test_runner()->shouldDumpEditingCallbacks()) | |
45 delegate()->PrintMessage( | |
46 "EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification\n"); | |
47 } | |
48 | |
49 blink::WebView* WebViewTestClient::createView( | |
50 blink::WebLocalFrame* frame, | |
51 const blink::WebURLRequest& request, | |
52 const blink::WebWindowFeatures& features, | |
53 const blink::WebString& frame_name, | |
54 blink::WebNavigationPolicy policy, | |
55 bool suppress_opener) { | |
56 if (test_runner()->shouldDumpNavigationPolicy()) { | |
57 delegate()->PrintMessage("Default policy for createView for '" + | |
58 URLDescription(request.url()) + "' is '" + | |
59 WebNavigationPolicyToString(policy) + "'\n"); | |
60 } | |
61 | |
62 if (!test_runner()->canOpenWindows()) | |
63 return nullptr; | |
64 if (test_runner()->shouldDumpCreateView()) | |
65 delegate()->PrintMessage(std::string("createView(") + | |
66 URLDescription(request.url()) + ")\n"); | |
67 | |
68 // The return value below is used to communicate to WebViewTestProxy whether | |
69 // it should forward the createView request to RenderViewImpl or not. The | |
70 // somewhat ugly cast is used to do this while fitting into the existing | |
71 // WebViewClient interface. | |
72 return reinterpret_cast<blink::WebView*>(0xdeadbeef); | |
73 } | |
74 | |
75 void WebViewTestClient::setStatusText(const blink::WebString& text) { | |
76 if (!test_runner()->shouldDumpStatusCallbacks()) | |
77 return; | |
78 delegate()->PrintMessage( | |
79 std::string("UI DELEGATE STATUS CALLBACK: setStatusText:") + | |
80 text.utf8().data() + "\n"); | |
81 } | |
82 | |
83 // Simulate a print by going into print mode and then exit straight away. | |
84 void WebViewTestClient::printPage(blink::WebLocalFrame* frame) { | |
85 blink::WebSize page_size_in_pixels = frame->view()->size(); | |
86 if (page_size_in_pixels.isEmpty()) | |
87 return; | |
88 blink::WebPrintParams printParams(page_size_in_pixels); | |
89 frame->printBegin(printParams); | |
90 frame->printEnd(); | |
91 } | |
92 | |
93 void WebViewTestClient::showValidationMessage( | |
94 const blink::WebRect& anchor_in_root_view, | |
95 const blink::WebString& main_message, | |
96 blink::WebTextDirection main_message_hint, | |
97 const blink::WebString& sub_message, | |
98 blink::WebTextDirection sub_message_hint) { | |
99 if (test_runner()->is_web_platform_tests_mode()) | |
100 return; | |
101 | |
102 base::string16 wrapped_main_text = main_message.utf16(); | |
103 base::string16 wrapped_sub_text = sub_message.utf16(); | |
104 | |
105 if (main_message_hint == blink::WebTextDirectionLeftToRight) { | |
106 wrapped_main_text = | |
107 base::i18n::GetDisplayStringInLTRDirectionality(wrapped_main_text); | |
108 } else if (main_message_hint == blink::WebTextDirectionRightToLeft && | |
109 !base::i18n::IsRTL()) { | |
110 base::i18n::WrapStringWithRTLFormatting(&wrapped_main_text); | |
111 } | |
112 | |
113 if (!wrapped_sub_text.empty()) { | |
114 if (sub_message_hint == blink::WebTextDirectionLeftToRight) { | |
115 wrapped_sub_text = | |
116 base::i18n::GetDisplayStringInLTRDirectionality(wrapped_sub_text); | |
117 } else if (sub_message_hint == blink::WebTextDirectionRightToLeft) { | |
118 base::i18n::WrapStringWithRTLFormatting(&wrapped_sub_text); | |
119 } | |
120 } | |
121 delegate()->PrintMessage("ValidationMessageClient: main-message=" + | |
122 base::UTF16ToUTF8(wrapped_main_text) + | |
123 " sub-message=" + | |
124 base::UTF16ToUTF8(wrapped_sub_text) + "\n"); | |
125 } | |
126 | |
127 blink::WebSpeechRecognizer* WebViewTestClient::speechRecognizer() { | |
128 return test_runner()->getMockWebSpeechRecognizer(); | |
129 } | |
130 | |
131 blink::WebString WebViewTestClient::acceptLanguages() { | |
132 return blink::WebString::fromUTF8(test_runner()->GetAcceptLanguages()); | |
133 } | |
134 | |
135 WebTestDelegate* WebViewTestClient::delegate() { | |
136 return web_view_test_proxy_base_->delegate(); | |
137 } | |
138 | |
139 void WebViewTestClient::didFocus() { | |
140 test_runner()->SetFocus(web_view_test_proxy_base_->web_view(), true); | |
141 } | |
142 | |
143 TestRunner* WebViewTestClient::test_runner() { | |
144 return web_view_test_proxy_base_->test_interfaces()->GetTestRunner(); | |
145 } | |
146 | |
147 } // namespace test_runner | |
OLD | NEW |