OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "sky/shell/ui/engine.h" | 5 #include "sky/shell/ui/engine.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "mojo/public/cpp/application/connect.h" | 8 #include "mojo/public/cpp/application/connect.h" |
9 #include "sky/engine/public/platform/WebInputEvent.h" | 9 #include "sky/engine/public/platform/WebInputEvent.h" |
10 #include "sky/engine/public/web/Sky.h" | 10 #include "sky/engine/public/web/Sky.h" |
11 #include "sky/engine/public/web/WebLocalFrame.h" | 11 #include "sky/engine/public/web/WebLocalFrame.h" |
12 #include "sky/engine/public/web/WebSettings.h" | 12 #include "sky/engine/public/web/WebSettings.h" |
13 #include "sky/engine/public/web/WebView.h" | 13 #include "sky/engine/public/web/WebView.h" |
14 #include "sky/services/platform/platform_impl.h" | 14 #include "sky/services/platform/platform_impl.h" |
| 15 #include "sky/shell/java_service_provider.h" |
15 #include "sky/shell/ui/animator.h" | 16 #include "sky/shell/ui/animator.h" |
16 #include "sky/shell/ui/input_event_converter.h" | 17 #include "sky/shell/ui/input_event_converter.h" |
17 #include "sky/shell/ui/internals.h" | 18 #include "sky/shell/ui/internals.h" |
18 #include "third_party/skia/include/core/SkCanvas.h" | 19 #include "third_party/skia/include/core/SkCanvas.h" |
19 #include "third_party/skia/include/core/SkPictureRecorder.h" | 20 #include "third_party/skia/include/core/SkPictureRecorder.h" |
20 | 21 |
21 namespace sky { | 22 namespace sky { |
22 namespace shell { | 23 namespace shell { |
23 | 24 |
24 namespace { | 25 namespace { |
25 | 26 |
26 void ConfigureSettings(blink::WebSettings* settings) { | 27 void ConfigureSettings(blink::WebSettings* settings) { |
27 settings->setDefaultFixedFontSize(13); | 28 settings->setDefaultFixedFontSize(13); |
28 settings->setDefaultFontSize(16); | 29 settings->setDefaultFontSize(16); |
29 settings->setLoadsImagesAutomatically(true); | 30 settings->setLoadsImagesAutomatically(true); |
30 } | 31 } |
31 | 32 |
32 } | 33 } |
33 | 34 |
34 Engine::Engine(const Config& config) | 35 Engine::Engine(const Config& config) |
35 : animator_(new Animator(config, this)), | 36 : java_task_runner_(config.java_task_runner), |
| 37 animator_(new Animator(config, this)), |
36 web_view_(nullptr), | 38 web_view_(nullptr), |
37 device_pixel_ratio_(1.0f), | 39 device_pixel_ratio_(1.0f), |
38 viewport_observer_binding_(this), | 40 viewport_observer_binding_(this), |
39 weak_factory_(this) { | 41 weak_factory_(this) { |
40 } | 42 } |
41 | 43 |
42 Engine::~Engine() { | 44 Engine::~Engine() { |
43 if (web_view_) | 45 if (web_view_) |
44 web_view_->close(); | 46 web_view_->close(); |
45 } | 47 } |
46 | 48 |
47 base::WeakPtr<Engine> Engine::GetWeakPtr() { | 49 base::WeakPtr<Engine> Engine::GetWeakPtr() { |
48 return weak_factory_.GetWeakPtr(); | 50 return weak_factory_.GetWeakPtr(); |
49 } | 51 } |
50 | 52 |
51 void Engine::Init(mojo::ScopedMessagePipeHandle service_provider_handle) { | 53 mojo::ServiceProviderPtr Engine::CreateServiceProvider() { |
52 service_provider_ = | 54 mojo::MessagePipe pipe; |
53 mojo::MakeProxy<mojo::ServiceProvider>(service_provider_handle.Pass()); | 55 java_task_runner_->PostTask(FROM_HERE, base::Bind( |
| 56 CreateJavaServiceProvider, |
| 57 base::Passed(mojo::MakeRequest<mojo::ServiceProvider>( |
| 58 pipe.handle1.Pass())))); |
| 59 return mojo::MakeProxy<mojo::ServiceProvider>(pipe.handle0.Pass()); |
| 60 } |
| 61 |
| 62 void Engine::Init() { |
| 63 service_provider_ = CreateServiceProvider(); |
54 mojo::NetworkServicePtr network_service; | 64 mojo::NetworkServicePtr network_service; |
55 mojo::ConnectToService(service_provider_.get(), &network_service); | 65 mojo::ConnectToService(service_provider_.get(), &network_service); |
56 platform_impl_.reset(new PlatformImpl(network_service.Pass())); | 66 platform_impl_.reset(new PlatformImpl(network_service.Pass())); |
57 | 67 |
58 blink::initialize(platform_impl_.get()); | 68 blink::initialize(platform_impl_.get()); |
59 } | 69 } |
60 | 70 |
61 void Engine::BeginFrame(base::TimeTicks frame_time) { | 71 void Engine::BeginFrame(base::TimeTicks frame_time) { |
62 double frame_time_sec = (frame_time - base::TimeTicks()).InSecondsF(); | 72 double frame_time_sec = (frame_time - base::TimeTicks()).InSecondsF(); |
63 double deadline_sec = frame_time_sec; | 73 double deadline_sec = frame_time_sec; |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 | 147 |
138 void Engine::initializeLayerTreeView() { | 148 void Engine::initializeLayerTreeView() { |
139 } | 149 } |
140 | 150 |
141 void Engine::scheduleVisualUpdate() { | 151 void Engine::scheduleVisualUpdate() { |
142 animator_->RequestFrame(); | 152 animator_->RequestFrame(); |
143 } | 153 } |
144 | 154 |
145 void Engine::didCreateIsolate(blink::WebLocalFrame* frame, | 155 void Engine::didCreateIsolate(blink::WebLocalFrame* frame, |
146 Dart_Isolate isolate) { | 156 Dart_Isolate isolate) { |
147 Internals::Create(isolate, service_provider_.Pass()); | 157 Internals::Create(isolate, CreateServiceProvider()); |
148 } | 158 } |
149 | 159 |
150 blink::ServiceProvider* Engine::services() { | 160 blink::ServiceProvider* Engine::services() { |
151 return this; | 161 return this; |
152 } | 162 } |
153 | 163 |
154 mojo::NavigatorHost* Engine::NavigatorHost() { | 164 mojo::NavigatorHost* Engine::NavigatorHost() { |
155 return this; | 165 return this; |
156 } | 166 } |
157 | 167 |
158 void Engine::RequestNavigate(mojo::Target target, | 168 void Engine::RequestNavigate(mojo::Target target, |
159 mojo::URLRequestPtr request) { | 169 mojo::URLRequestPtr request) { |
160 // Ignoring target for now. | 170 // Ignoring target for now. |
161 base::MessageLoop::current()->PostTask(FROM_HERE, | 171 base::MessageLoop::current()->PostTask(FROM_HERE, |
162 base::Bind(&Engine::LoadURL, GetWeakPtr(), request->url)); | 172 base::Bind(&Engine::LoadURL, GetWeakPtr(), request->url)); |
163 } | 173 } |
164 | 174 |
165 void Engine::DidNavigateLocally(const mojo::String& url) { | 175 void Engine::DidNavigateLocally(const mojo::String& url) { |
166 } | 176 } |
167 | 177 |
168 void Engine::RequestNavigateHistory(int32_t delta) { | 178 void Engine::RequestNavigateHistory(int32_t delta) { |
169 NOTIMPLEMENTED(); | 179 NOTIMPLEMENTED(); |
170 } | 180 } |
171 | 181 |
172 } // namespace shell | 182 } // namespace shell |
173 } // namespace sky | 183 } // namespace sky |
OLD | NEW |