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 "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
9 #include "base/threading/worker_pool.h" | 9 #include "base/threading/worker_pool.h" |
10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 | 51 |
52 Engine::Config::Config() { | 52 Engine::Config::Config() { |
53 } | 53 } |
54 | 54 |
55 Engine::Config::~Config() { | 55 Engine::Config::~Config() { |
56 } | 56 } |
57 | 57 |
58 Engine::Engine(const Config& config) | 58 Engine::Engine(const Config& config) |
59 : config_(config), | 59 : config_(config), |
60 animator_(new Animator(config, this)), | 60 animator_(new Animator(config, this)), |
61 device_pixel_ratio_(1.0f), | |
62 binding_(this), | 61 binding_(this), |
63 weak_factory_(this) { | 62 weak_factory_(this) { |
64 } | 63 } |
65 | 64 |
66 Engine::~Engine() { | 65 Engine::~Engine() { |
67 } | 66 } |
68 | 67 |
69 base::WeakPtr<Engine> Engine::GetWeakPtr() { | 68 base::WeakPtr<Engine> Engine::GetWeakPtr() { |
70 return weak_factory_.GetWeakPtr(); | 69 return weak_factory_.GetWeakPtr(); |
71 } | 70 } |
(...skipping 23 matching lines...) Expand all Loading... |
95 | 94 |
96 SkRTreeFactory factory; | 95 SkRTreeFactory factory; |
97 SkPictureRecorder recorder; | 96 SkPictureRecorder recorder; |
98 auto canvas = skia::SharePtr(recorder.beginRecording( | 97 auto canvas = skia::SharePtr(recorder.beginRecording( |
99 physical_size_.width(), physical_size_.height(), &factory, | 98 physical_size_.width(), physical_size_.height(), &factory, |
100 SkPictureRecorder::kComputeSaveLayerInfo_RecordFlag)); | 99 SkPictureRecorder::kComputeSaveLayerInfo_RecordFlag)); |
101 | 100 |
102 if (sky_view_) { | 101 if (sky_view_) { |
103 skia::RefPtr<SkPicture> picture = sky_view_->Paint(); | 102 skia::RefPtr<SkPicture> picture = sky_view_->Paint(); |
104 canvas->clear(SK_ColorBLACK); | 103 canvas->clear(SK_ColorBLACK); |
105 canvas->scale(device_pixel_ratio_, device_pixel_ratio_); | 104 canvas->scale(display_metrics_.device_pixel_ratio, |
| 105 display_metrics_.device_pixel_ratio); |
106 if (picture) | 106 if (picture) |
107 canvas->drawPicture(picture.get()); | 107 canvas->drawPicture(picture.get()); |
108 } | 108 } |
109 | 109 |
110 return skia::AdoptRef(recorder.endRecordingAsPicture()); | 110 return skia::AdoptRef(recorder.endRecordingAsPicture()); |
111 } | 111 } |
112 | 112 |
113 void Engine::ConnectToEngine(mojo::InterfaceRequest<SkyEngine> request) { | 113 void Engine::ConnectToEngine(mojo::InterfaceRequest<SkyEngine> request) { |
114 binding_.Bind(request.Pass()); | 114 binding_.Bind(request.Pass()); |
115 } | 115 } |
116 | 116 |
117 void Engine::OnAcceleratedWidgetAvailable(gfx::AcceleratedWidget widget) { | 117 void Engine::OnAcceleratedWidgetAvailable(gfx::AcceleratedWidget widget) { |
118 config_.gpu_task_runner->PostTask( | 118 config_.gpu_task_runner->PostTask( |
119 FROM_HERE, base::Bind(&GPUDelegate::OnAcceleratedWidgetAvailable, | 119 FROM_HERE, base::Bind(&GPUDelegate::OnAcceleratedWidgetAvailable, |
120 config_.gpu_delegate, widget)); | 120 config_.gpu_delegate, widget)); |
121 if (sky_view_) | 121 if (sky_view_) |
122 ScheduleFrame(); | 122 ScheduleFrame(); |
123 } | 123 } |
124 | 124 |
125 void Engine::OnOutputSurfaceDestroyed() { | 125 void Engine::OnOutputSurfaceDestroyed() { |
126 config_.gpu_task_runner->PostTask( | 126 config_.gpu_task_runner->PostTask( |
127 FROM_HERE, | 127 FROM_HERE, |
128 base::Bind(&GPUDelegate::OnOutputSurfaceDestroyed, config_.gpu_delegate)); | 128 base::Bind(&GPUDelegate::OnOutputSurfaceDestroyed, config_.gpu_delegate)); |
129 } | 129 } |
130 | 130 |
131 void Engine::OnViewportMetricsChanged(int width, int height, | 131 void Engine::OnViewportMetricsChanged(ViewportMetricsPtr metrics) { |
132 float device_pixel_ratio) { | 132 physical_size_.SetSize(metrics->physical_width, metrics->physical_height); |
133 physical_size_.SetSize(width, height); | 133 |
134 device_pixel_ratio_ = device_pixel_ratio; | 134 display_metrics_.physical_size = physical_size_; |
| 135 display_metrics_.device_pixel_ratio = metrics->device_pixel_ratio; |
| 136 display_metrics_.padding_top = metrics->padding_top; |
| 137 display_metrics_.padding_right = metrics->padding_right; |
| 138 display_metrics_.padding_bottom = metrics->padding_bottom; |
| 139 display_metrics_.padding_left = metrics->padding_left; |
135 | 140 |
136 if (sky_view_) | 141 if (sky_view_) |
137 UpdateSkyViewSize(); | 142 sky_view_->SetDisplayMetrics(display_metrics_); |
138 } | |
139 | |
140 void Engine::UpdateSkyViewSize() { | |
141 CHECK(sky_view_); | |
142 blink::SkyDisplayMetrics metrics; | |
143 metrics.physical_size = physical_size_; | |
144 metrics.device_pixel_ratio = device_pixel_ratio_; | |
145 sky_view_->SetDisplayMetrics(metrics); | |
146 } | 143 } |
147 | 144 |
148 void Engine::OnInputEvent(InputEventPtr event) { | 145 void Engine::OnInputEvent(InputEventPtr event) { |
149 TRACE_EVENT0("sky", "Engine::OnInputEvent"); | 146 TRACE_EVENT0("sky", "Engine::OnInputEvent"); |
150 scoped_ptr<blink::WebInputEvent> web_event = | 147 scoped_ptr<blink::WebInputEvent> web_event = |
151 ConvertEvent(event, device_pixel_ratio_); | 148 ConvertEvent(event, display_metrics_.device_pixel_ratio); |
152 if (!web_event) | 149 if (!web_event) |
153 return; | 150 return; |
154 if (sky_view_) | 151 if (sky_view_) |
155 sky_view_->HandleInputEvent(*web_event); | 152 sky_view_->HandleInputEvent(*web_event); |
156 } | 153 } |
157 | 154 |
158 void Engine::RunFromLibrary(const std::string& name) { | 155 void Engine::RunFromLibrary(const std::string& name) { |
159 sky_view_ = blink::SkyView::Create(this); | 156 sky_view_ = blink::SkyView::Create(this); |
160 sky_view_->RunFromLibrary(blink::WebString::fromUTF8(name), | 157 sky_view_->RunFromLibrary(blink::WebString::fromUTF8(name), |
161 dart_library_provider_.get()); | 158 dart_library_provider_.get()); |
162 UpdateSkyViewSize(); | 159 sky_view_->SetDisplayMetrics(display_metrics_); |
163 } | 160 } |
164 | 161 |
165 void Engine::RunFromSnapshotStream( | 162 void Engine::RunFromSnapshotStream( |
166 const std::string& name, | 163 const std::string& name, |
167 mojo::ScopedDataPipeConsumerHandle snapshot) { | 164 mojo::ScopedDataPipeConsumerHandle snapshot) { |
168 sky_view_ = blink::SkyView::Create(this); | 165 sky_view_ = blink::SkyView::Create(this); |
169 sky_view_->RunFromSnapshot(blink::WebString::fromUTF8(name), snapshot.Pass()); | 166 sky_view_->RunFromSnapshot(blink::WebString::fromUTF8(name), snapshot.Pass()); |
170 UpdateSkyViewSize(); | 167 sky_view_->SetDisplayMetrics(display_metrics_); |
171 } | 168 } |
172 | 169 |
173 void Engine::RunFromNetwork(const mojo::String& url) { | 170 void Engine::RunFromNetwork(const mojo::String& url) { |
174 dart_library_provider_.reset( | 171 dart_library_provider_.reset( |
175 new DartLibraryProviderNetwork(g_platform_impl->networkService())); | 172 new DartLibraryProviderNetwork(g_platform_impl->networkService())); |
176 RunFromLibrary(url); | 173 RunFromLibrary(url); |
177 } | 174 } |
178 | 175 |
179 void Engine::RunFromFile(const mojo::String& main, | 176 void Engine::RunFromFile(const mojo::String& main, |
180 const mojo::String& package_root) { | 177 const mojo::String& package_root) { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 | 219 |
223 void Engine::DidNavigateLocally(const mojo::String& url) { | 220 void Engine::DidNavigateLocally(const mojo::String& url) { |
224 } | 221 } |
225 | 222 |
226 void Engine::RequestNavigateHistory(int32_t delta) { | 223 void Engine::RequestNavigateHistory(int32_t delta) { |
227 NOTIMPLEMENTED(); | 224 NOTIMPLEMENTED(); |
228 } | 225 } |
229 | 226 |
230 } // namespace shell | 227 } // namespace shell |
231 } // namespace sky | 228 } // namespace sky |
OLD | NEW |