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/WebThread.h"
15 #include "third_party/WebKit/public/platform/WebTraceLocation.h"
16 #include "third_party/WebKit/public/platform/WebURL.h"
19 namespace html_viewer
{
23 class InvokeTaskHelper
: public blink::WebThread::Task
{
25 InvokeTaskHelper(scoped_ptr
<test_runner::WebTask
> task
)
26 : task_(task
.Pass()) {}
28 // WebThread::Task implementation:
29 void run() override
{ task_
->run(); }
32 scoped_ptr
<test_runner::WebTask
> task_
;
37 WebTestDelegateImpl::WebTestDelegateImpl()
38 : test_interfaces_(nullptr), proxy_(nullptr) {
41 WebTestDelegateImpl::~WebTestDelegateImpl() {
44 void WebTestDelegateImpl::ClearEditCommand() {
48 void WebTestDelegateImpl::SetEditCommand(const std::string
& name
,
49 const std::string
& value
) {
53 void WebTestDelegateImpl::SetGamepadProvider(
54 test_runner::GamepadController
* controller
) {
58 void WebTestDelegateImpl::SetDeviceLightData(const double data
) {
62 void WebTestDelegateImpl::SetDeviceMotionData(
63 const blink::WebDeviceMotionData
& data
) {
67 void WebTestDelegateImpl::SetDeviceOrientationData(
68 const blink::WebDeviceOrientationData
& data
) {
72 void WebTestDelegateImpl::SetScreenOrientation(
73 const blink::WebScreenOrientationType
& orientation
) {
77 void WebTestDelegateImpl::ResetScreenOrientation() {
81 void WebTestDelegateImpl::DidChangeBatteryStatus(
82 const blink::WebBatteryStatus
& status
) {
86 void WebTestDelegateImpl::PrintMessage(const std::string
& message
) {
87 fprintf(stderr
, "%s", message
.c_str());
90 void WebTestDelegateImpl::PostTask(test_runner::WebTask
* task
) {
91 blink::Platform::current()->currentThread()->postTask(
92 blink::WebTraceLocation(__FUNCTION__
, __FILE__
),
93 new InvokeTaskHelper(make_scoped_ptr(task
)));
96 void WebTestDelegateImpl::PostDelayedTask(test_runner::WebTask
* task
,
98 blink::Platform::current()->currentThread()->postDelayedTask(
99 blink::WebTraceLocation(__FUNCTION__
, __FILE__
),
100 new InvokeTaskHelper(make_scoped_ptr(task
)), ms
);
103 blink::WebString
WebTestDelegateImpl::RegisterIsolatedFileSystem(
104 const blink::WebVector
<blink::WebString
>& absolute_filenames
) {
106 return blink::WebString();
109 long long WebTestDelegateImpl::GetCurrentTimeInMillisecond() {
110 return base::TimeDelta(base::Time::Now() - base::Time::UnixEpoch())
112 base::Time::kMicrosecondsPerMillisecond
;
115 blink::WebString
WebTestDelegateImpl::GetAbsoluteWebStringFromUTF8Path(
116 const std::string
& path
) {
118 return blink::WebString::fromUTF8(path
);
121 blink::WebURL
WebTestDelegateImpl::LocalFileToDataURL(
122 const blink::WebURL
& file_url
) {
124 return blink::WebURL();
127 blink::WebURL
WebTestDelegateImpl::RewriteLayoutTestsURL(
128 const std::string
& utf8_url
) {
129 return blink::WebURL(GURL(utf8_url
));
132 test_runner::TestPreferences
* WebTestDelegateImpl::Preferences() {
136 void WebTestDelegateImpl::ApplyPreferences() {
140 void WebTestDelegateImpl::UseUnfortunateSynchronousResizeMode(bool enable
) {
144 void WebTestDelegateImpl::EnableAutoResizeMode(const blink::WebSize
& min_size
,
145 const blink::WebSize
& max_size
) {
149 void WebTestDelegateImpl::DisableAutoResizeMode(
150 const blink::WebSize
& new_size
) {
154 void WebTestDelegateImpl::ClearDevToolsLocalStorage() {
158 void WebTestDelegateImpl::ShowDevTools(const std::string
& settings
,
159 const std::string
& frontend_url
) {
163 void WebTestDelegateImpl::CloseDevTools() {
167 void WebTestDelegateImpl::EvaluateInWebInspector(long call_id
,
168 const std::string
& script
) {
172 void WebTestDelegateImpl::ClearAllDatabases() {
176 void WebTestDelegateImpl::SetDatabaseQuota(int quota
) {
180 void WebTestDelegateImpl::SimulateWebNotificationClick(
181 const std::string
& title
) {
185 void WebTestDelegateImpl::SetDeviceScaleFactor(float factor
) {
189 void WebTestDelegateImpl::SetDeviceColorProfile(const std::string
& name
) {
193 void WebTestDelegateImpl::SetBluetoothMockDataSet(const std::string
& data_set
) {
197 void WebTestDelegateImpl::SetGeofencingMockProvider(bool service_available
) {
201 void WebTestDelegateImpl::ClearGeofencingMockProvider() {
205 void WebTestDelegateImpl::SetGeofencingMockPosition(double latitude
,
210 void WebTestDelegateImpl::SetFocus(test_runner::WebTestProxyBase
* proxy
,
215 void WebTestDelegateImpl::SetAcceptAllCookies(bool accept
) {
219 std::string
WebTestDelegateImpl::PathToLocalResource(
220 const std::string
& resource
) {
222 return std::string();
225 void WebTestDelegateImpl::SetLocale(const std::string
& locale
) {
229 void WebTestDelegateImpl::TestFinished() {
230 test_interfaces_
->SetTestIsRunning(false);
231 fprintf(stderr
, "%s", proxy_
->CaptureTree(false, false).c_str());
234 void WebTestDelegateImpl::CloseRemainingWindows() {
238 void WebTestDelegateImpl::DeleteAllCookies() {
242 int WebTestDelegateImpl::NavigationEntryCount() {
247 void WebTestDelegateImpl::GoToOffset(int offset
) {
251 void WebTestDelegateImpl::Reload() {
255 void WebTestDelegateImpl::LoadURLForFrame(const blink::WebURL
& url
,
256 const std::string
& frame_name
) {
260 bool WebTestDelegateImpl::AllowExternalPages() {
265 std::string
WebTestDelegateImpl::DumpHistoryForWindow(
266 test_runner::WebTestProxyBase
* proxy
) {
268 return std::string();
271 void WebTestDelegateImpl::FetchManifest(
272 blink::WebView
* view
,
274 const base::Callback
<void(const blink::WebURLResponse
& response
,
275 const std::string
& data
)>& callback
) {
279 void WebTestDelegateImpl::SetPermission(const std::string
& permission_name
,
280 const std::string
& permission_value
,
282 const GURL
& embedding_origin
) {
286 void WebTestDelegateImpl::ResetPermissions() {
290 scoped_refptr
<cc::TextureLayer
>
291 WebTestDelegateImpl::CreateTextureLayerForMailbox(
292 cc::TextureLayerClient
* client
) {
297 blink::WebLayer
* WebTestDelegateImpl::InstantiateWebLayer(
298 scoped_refptr
<cc::TextureLayer
> layer
) {
303 cc::SharedBitmapManager
* WebTestDelegateImpl::GetSharedBitmapManager() {
308 void WebTestDelegateImpl::DispatchBeforeInstallPromptEvent(
310 const std::vector
<std::string
>& event_platforms
,
311 const base::Callback
<void(bool)>& callback
) {
315 void WebTestDelegateImpl::ResolveBeforeInstallPromptPromise(int request_id
,
316 const std::string
& platform
) {
320 blink::WebPlugin
* WebTestDelegateImpl::CreatePluginPlaceholder(
321 blink::WebLocalFrame
* frame
,
322 const blink::WebPluginParams
& params
) {
327 } // namespace html_viewer