1 // Copyright 2015 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.
5 #include "components/html_viewer/web_test_delegate_impl.h"
7 #include "base/time/time.h"
8 #include "cc/layers/texture_layer.h"
9 #include "components/test_runner/web_task.h"
10 #include "components/test_runner/web_test_interfaces.h"
11 #include "components/test_runner/web_test_proxy.h"
12 #include "third_party/WebKit/public/platform/Platform.h"
13 #include "third_party/WebKit/public/platform/WebString.h"
14 #include "third_party/WebKit/public/platform/WebTaskRunner.h"
15 #include "third_party/WebKit/public/platform/WebThread.h"
16 #include "third_party/WebKit/public/platform/WebTraceLocation.h"
17 #include "third_party/WebKit/public/platform/WebURL.h"
20 namespace html_viewer
{
24 class InvokeTaskHelper
: public blink::WebTaskRunner::Task
{
26 InvokeTaskHelper(scoped_ptr
<test_runner::WebTask
> task
)
27 : task_(task
.Pass()) {}
29 // WebThread::Task implementation:
30 void run() override
{ task_
->run(); }
33 scoped_ptr
<test_runner::WebTask
> task_
;
38 WebTestDelegateImpl::WebTestDelegateImpl()
39 : test_interfaces_(nullptr), proxy_(nullptr) {
42 WebTestDelegateImpl::~WebTestDelegateImpl() {
45 void WebTestDelegateImpl::ClearEditCommand() {
49 void WebTestDelegateImpl::SetEditCommand(const std::string
& name
,
50 const std::string
& value
) {
54 void WebTestDelegateImpl::SetGamepadProvider(
55 test_runner::GamepadController
* controller
) {
59 void WebTestDelegateImpl::SetDeviceLightData(const double data
) {
63 void WebTestDelegateImpl::SetDeviceMotionData(
64 const blink::WebDeviceMotionData
& data
) {
68 void WebTestDelegateImpl::SetDeviceOrientationData(
69 const blink::WebDeviceOrientationData
& data
) {
73 void WebTestDelegateImpl::SetScreenOrientation(
74 const blink::WebScreenOrientationType
& orientation
) {
78 void WebTestDelegateImpl::ResetScreenOrientation() {
82 void WebTestDelegateImpl::DidChangeBatteryStatus(
83 const blink::WebBatteryStatus
& status
) {
87 void WebTestDelegateImpl::PrintMessage(const std::string
& message
) {
88 fprintf(stderr
, "%s", message
.c_str());
91 void WebTestDelegateImpl::PostTask(test_runner::WebTask
* task
) {
92 blink::Platform::current()->currentThread()->taskRunner()->postTask(
93 blink::WebTraceLocation(__FUNCTION__
, __FILE__
),
94 new InvokeTaskHelper(make_scoped_ptr(task
)));
97 void WebTestDelegateImpl::PostDelayedTask(test_runner::WebTask
* task
,
99 blink::Platform::current()->currentThread()->taskRunner()->postDelayedTask(
100 blink::WebTraceLocation(__FUNCTION__
, __FILE__
),
101 new InvokeTaskHelper(make_scoped_ptr(task
)), ms
);
104 blink::WebString
WebTestDelegateImpl::RegisterIsolatedFileSystem(
105 const blink::WebVector
<blink::WebString
>& absolute_filenames
) {
107 return blink::WebString();
110 long long WebTestDelegateImpl::GetCurrentTimeInMillisecond() {
111 return base::TimeDelta(base::Time::Now() - base::Time::UnixEpoch())
113 base::Time::kMicrosecondsPerMillisecond
;
116 blink::WebString
WebTestDelegateImpl::GetAbsoluteWebStringFromUTF8Path(
117 const std::string
& path
) {
119 return blink::WebString::fromUTF8(path
);
122 blink::WebURL
WebTestDelegateImpl::LocalFileToDataURL(
123 const blink::WebURL
& file_url
) {
125 return blink::WebURL();
128 blink::WebURL
WebTestDelegateImpl::RewriteLayoutTestsURL(
129 const std::string
& utf8_url
) {
130 return blink::WebURL(GURL(utf8_url
));
133 test_runner::TestPreferences
* WebTestDelegateImpl::Preferences() {
137 void WebTestDelegateImpl::ApplyPreferences() {
141 void WebTestDelegateImpl::UseUnfortunateSynchronousResizeMode(bool enable
) {
145 void WebTestDelegateImpl::EnableAutoResizeMode(const blink::WebSize
& min_size
,
146 const blink::WebSize
& max_size
) {
150 void WebTestDelegateImpl::DisableAutoResizeMode(
151 const blink::WebSize
& new_size
) {
155 void WebTestDelegateImpl::ClearDevToolsLocalStorage() {
159 void WebTestDelegateImpl::ShowDevTools(const std::string
& settings
,
160 const std::string
& frontend_url
) {
164 void WebTestDelegateImpl::CloseDevTools() {
168 void WebTestDelegateImpl::EvaluateInWebInspector(long call_id
,
169 const std::string
& script
) {
173 void WebTestDelegateImpl::ClearAllDatabases() {
177 void WebTestDelegateImpl::SetDatabaseQuota(int quota
) {
181 void WebTestDelegateImpl::SimulateWebNotificationClick(
182 const std::string
& title
, int action_index
) {
186 void WebTestDelegateImpl::SetDeviceScaleFactor(float factor
) {
190 void WebTestDelegateImpl::SetDeviceColorProfile(const std::string
& name
) {
194 void WebTestDelegateImpl::SetBluetoothMockDataSet(const std::string
& data_set
) {
198 void WebTestDelegateImpl::SetGeofencingMockProvider(bool service_available
) {
202 void WebTestDelegateImpl::ClearGeofencingMockProvider() {
206 void WebTestDelegateImpl::SetGeofencingMockPosition(double latitude
,
211 void WebTestDelegateImpl::SetFocus(test_runner::WebTestProxyBase
* proxy
,
216 void WebTestDelegateImpl::SetAcceptAllCookies(bool accept
) {
220 std::string
WebTestDelegateImpl::PathToLocalResource(
221 const std::string
& resource
) {
223 return std::string();
226 void WebTestDelegateImpl::SetLocale(const std::string
& locale
) {
230 void WebTestDelegateImpl::TestFinished() {
231 test_interfaces_
->SetTestIsRunning(false);
232 fprintf(stderr
, "%s", proxy_
? proxy_
->CaptureTree(false, false).c_str()
233 : dump_tree_
.c_str());
236 void WebTestDelegateImpl::CloseRemainingWindows() {
240 void WebTestDelegateImpl::DeleteAllCookies() {
244 int WebTestDelegateImpl::NavigationEntryCount() {
249 void WebTestDelegateImpl::GoToOffset(int offset
) {
253 void WebTestDelegateImpl::Reload() {
257 void WebTestDelegateImpl::LoadURLForFrame(const blink::WebURL
& url
,
258 const std::string
& frame_name
) {
262 bool WebTestDelegateImpl::AllowExternalPages() {
267 std::string
WebTestDelegateImpl::DumpHistoryForWindow(
268 test_runner::WebTestProxyBase
* proxy
) {
270 return std::string();
273 void WebTestDelegateImpl::FetchManifest(
274 blink::WebView
* view
,
276 const base::Callback
<void(const blink::WebURLResponse
& response
,
277 const std::string
& data
)>& callback
) {
281 void WebTestDelegateImpl::SetPermission(const std::string
& permission_name
,
282 const std::string
& permission_value
,
284 const GURL
& embedding_origin
) {
288 void WebTestDelegateImpl::ResetPermissions() {
292 cc::SharedBitmapManager
* WebTestDelegateImpl::GetSharedBitmapManager() {
297 void WebTestDelegateImpl::DispatchBeforeInstallPromptEvent(
299 const std::vector
<std::string
>& event_platforms
,
300 const base::Callback
<void(bool)>& callback
) {
304 void WebTestDelegateImpl::ResolveBeforeInstallPromptPromise(int request_id
,
305 const std::string
& platform
) {
309 blink::WebPlugin
* WebTestDelegateImpl::CreatePluginPlaceholder(
310 blink::WebLocalFrame
* frame
,
311 const blink::WebPluginParams
& params
) {
316 void WebTestDelegateImpl::OnWebTestProxyBaseDestroy(
317 test_runner::WebTestProxyBase
* base
) {
318 DCHECK_EQ(proxy_
, base
);
319 dump_tree_
= proxy_
->CaptureTree(false, false);
323 } // namespace html_viewer