OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <map> | 5 #include <map> |
6 #include <string> | 6 #include <string> |
7 | 7 |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
11 #include "mojo/examples/media_viewer/media_viewer.mojom.h" | 11 #include "mojo/examples/media_viewer/media_viewer.mojom.h" |
12 #include "mojo/public/cpp/application/application_connection.h" | 12 #include "mojo/public/cpp/application/application_connection.h" |
13 #include "mojo/public/cpp/application/application_delegate.h" | 13 #include "mojo/public/cpp/application/application_delegate.h" |
14 #include "mojo/public/cpp/application/application_impl.h" | 14 #include "mojo/public/cpp/application/application_impl.h" |
| 15 #include "mojo/public/cpp/application/context_interface_factory.h" |
15 #include "mojo/public/cpp/bindings/interface_impl.h" | 16 #include "mojo/public/cpp/bindings/interface_impl.h" |
16 #include "mojo/services/public/cpp/view_manager/node.h" | 17 #include "mojo/services/public/cpp/view_manager/node.h" |
17 #include "mojo/services/public/cpp/view_manager/view.h" | 18 #include "mojo/services/public/cpp/view_manager/view.h" |
18 #include "mojo/services/public/cpp/view_manager/view_manager.h" | 19 #include "mojo/services/public/cpp/view_manager/view_manager.h" |
| 20 #include "mojo/services/public/cpp/view_manager/view_manager_client_factory.h" |
19 #include "mojo/services/public/cpp/view_manager/view_manager_delegate.h" | 21 #include "mojo/services/public/cpp/view_manager/view_manager_delegate.h" |
20 #include "mojo/services/public/interfaces/navigation/navigation.mojom.h" | 22 #include "mojo/services/public/interfaces/navigation/navigation.mojom.h" |
21 #include "mojo/views/native_widget_view_manager.h" | 23 #include "mojo/views/native_widget_view_manager.h" |
22 #include "mojo/views/views_init.h" | 24 #include "mojo/views/views_init.h" |
23 #include "skia/ext/platform_canvas.h" | 25 #include "skia/ext/platform_canvas.h" |
24 #include "skia/ext/refptr.h" | 26 #include "skia/ext/refptr.h" |
25 #include "third_party/skia/include/core/SkBitmap.h" | 27 #include "third_party/skia/include/core/SkBitmap.h" |
26 #include "third_party/skia/include/core/SkCanvas.h" | 28 #include "third_party/skia/include/core/SkCanvas.h" |
27 #include "third_party/skia/include/core/SkColor.h" | 29 #include "third_party/skia/include/core/SkColor.h" |
28 #include "third_party/skia/include/core/SkPaint.h" | 30 #include "third_party/skia/include/core/SkPaint.h" |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
177 } | 179 } |
178 | 180 |
179 Delegate* delegate_; | 181 Delegate* delegate_; |
180 views::Button* buttons_[CONTROL_COUNT]; | 182 views::Button* buttons_[CONTROL_COUNT]; |
181 | 183 |
182 DISALLOW_COPY_AND_ASSIGN(ControlPanel); | 184 DISALLOW_COPY_AND_ASSIGN(ControlPanel); |
183 }; | 185 }; |
184 | 186 |
185 class NavigatorImpl : public InterfaceImpl<navigation::Navigator> { | 187 class NavigatorImpl : public InterfaceImpl<navigation::Navigator> { |
186 public: | 188 public: |
187 NavigatorImpl(ApplicationConnection* connection, | 189 explicit NavigatorImpl(MediaViewer* viewer) : viewer_(viewer) {} |
188 MediaViewer* viewer) : viewer_(viewer) {} | |
189 virtual ~NavigatorImpl() {} | 190 virtual ~NavigatorImpl() {} |
190 | 191 |
191 private: | 192 private: |
192 // Overridden from navigation::Navigate: | 193 // Overridden from navigation::Navigate: |
193 virtual void Navigate( | 194 virtual void Navigate( |
194 uint32_t node_id, | 195 uint32_t node_id, |
195 navigation::NavigationDetailsPtr navigation_details, | 196 navigation::NavigationDetailsPtr navigation_details, |
196 navigation::ResponseDetailsPtr response_details) OVERRIDE; | 197 navigation::ResponseDetailsPtr response_details) OVERRIDE; |
197 | 198 |
198 MediaViewer* viewer_; | 199 MediaViewer* viewer_; |
199 | 200 |
200 DISALLOW_COPY_AND_ASSIGN(NavigatorImpl); | 201 DISALLOW_COPY_AND_ASSIGN(NavigatorImpl); |
201 }; | 202 }; |
202 | 203 |
203 class MediaViewer : public ApplicationDelegate, | 204 class MediaViewer : public ApplicationDelegate, |
204 public view_manager::ViewManagerDelegate, | 205 public view_manager::ViewManagerDelegate, |
205 public ControlPanel::Delegate { | 206 public ControlPanel::Delegate, |
| 207 public ContextInterfaceFactory<NavigatorImpl, MediaViewer> { |
206 public: | 208 public: |
207 MediaViewer() : app_(NULL), | 209 MediaViewer() |
208 view_manager_(NULL), | 210 : ContextInterfaceFactory(this), |
209 control_node_(NULL), | 211 app_(NULL), |
210 content_node_(NULL), | 212 view_manager_(NULL), |
211 control_panel_(this) { | 213 view_manager_client_factory_(this), |
| 214 control_node_(NULL), |
| 215 content_node_(NULL), |
| 216 control_panel_(this) { |
212 handler_map_["image/png"] = "mojo:mojo_png_viewer"; | 217 handler_map_["image/png"] = "mojo:mojo_png_viewer"; |
213 } | 218 } |
214 | 219 |
215 virtual ~MediaViewer() {} | 220 virtual ~MediaViewer() {} |
216 | 221 |
217 void Navigate( | 222 void Navigate( |
218 uint32_t node_id, | 223 uint32_t node_id, |
219 navigation::NavigationDetailsPtr navigation_details, | 224 navigation::NavigationDetailsPtr navigation_details, |
220 navigation::ResponseDetailsPtr response_details) { | 225 navigation::ResponseDetailsPtr response_details) { |
221 // TODO(yzshen): This shouldn't be needed once FIFO is ready. | 226 // TODO(yzshen): This shouldn't be needed once FIFO is ready. |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 | 263 |
259 | 264 |
260 // Overridden from ApplicationDelegate: | 265 // Overridden from ApplicationDelegate: |
261 virtual void Initialize(ApplicationImpl* app) OVERRIDE { | 266 virtual void Initialize(ApplicationImpl* app) OVERRIDE { |
262 app_ = app; | 267 app_ = app; |
263 views_init_.reset(new ViewsInit); | 268 views_init_.reset(new ViewsInit); |
264 } | 269 } |
265 | 270 |
266 virtual bool ConfigureIncomingConnection(ApplicationConnection* connection) | 271 virtual bool ConfigureIncomingConnection(ApplicationConnection* connection) |
267 OVERRIDE { | 272 OVERRIDE { |
268 connection->AddService<NavigatorImpl>(this); | 273 connection->AddServiceFactory(this); |
269 view_manager::ViewManager::ConfigureIncomingConnection(connection, this); | 274 connection->AddServiceFactory(&view_manager_client_factory_); |
270 return true; | 275 return true; |
271 } | 276 } |
272 | 277 |
273 // Overridden from view_manager::ViewManagerDelegate: | 278 // Overridden from view_manager::ViewManagerDelegate: |
274 virtual void OnRootAdded(view_manager::ViewManager* view_manager, | 279 virtual void OnRootAdded(view_manager::ViewManager* view_manager, |
275 view_manager::Node* root) OVERRIDE { | 280 view_manager::Node* root) OVERRIDE { |
276 view_manager_ = view_manager; | 281 view_manager_ = view_manager; |
277 | 282 |
278 control_node_ = view_manager::Node::Create(view_manager_); | 283 control_node_ = view_manager::Node::Create(view_manager_); |
279 root->AddChild(control_node_); | 284 root->AddChild(control_node_); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 } | 327 } |
323 | 328 |
324 std::string GetHandlerForContentType(const std::string& content_type) { | 329 std::string GetHandlerForContentType(const std::string& content_type) { |
325 HandlerMap::const_iterator it = handler_map_.find(content_type); | 330 HandlerMap::const_iterator it = handler_map_.find(content_type); |
326 return it != handler_map_.end() ? it->second : std::string(); | 331 return it != handler_map_.end() ? it->second : std::string(); |
327 } | 332 } |
328 | 333 |
329 ApplicationImpl* app_; | 334 ApplicationImpl* app_; |
330 scoped_ptr<ViewsInit> views_init_; | 335 scoped_ptr<ViewsInit> views_init_; |
331 view_manager::ViewManager* view_manager_; | 336 view_manager::ViewManager* view_manager_; |
| 337 view_manager::ViewManagerClientFactory view_manager_client_factory_; |
332 view_manager::Node* control_node_; | 338 view_manager::Node* control_node_; |
333 view_manager::Node* content_node_; | 339 view_manager::Node* content_node_; |
334 ControlPanel control_panel_; | 340 ControlPanel control_panel_; |
335 ZoomableMediaPtr zoomable_media_; | 341 ZoomableMediaPtr zoomable_media_; |
336 HandlerMap handler_map_; | 342 HandlerMap handler_map_; |
337 scoped_ptr<PendingNavigateRequest> pending_navigate_request_; | 343 scoped_ptr<PendingNavigateRequest> pending_navigate_request_; |
338 | 344 |
339 DISALLOW_COPY_AND_ASSIGN(MediaViewer); | 345 DISALLOW_COPY_AND_ASSIGN(MediaViewer); |
340 }; | 346 }; |
341 | 347 |
342 void NavigatorImpl::Navigate( | 348 void NavigatorImpl::Navigate( |
343 uint32_t node_id, | 349 uint32_t node_id, |
344 navigation::NavigationDetailsPtr navigation_details, | 350 navigation::NavigationDetailsPtr navigation_details, |
345 navigation::ResponseDetailsPtr response_details) { | 351 navigation::ResponseDetailsPtr response_details) { |
346 viewer_->Navigate(node_id, navigation_details.Pass(), | 352 viewer_->Navigate(node_id, navigation_details.Pass(), |
347 response_details.Pass()); | 353 response_details.Pass()); |
348 } | 354 } |
349 | 355 |
350 } // namespace examples | 356 } // namespace examples |
351 | 357 |
352 // static | 358 // static |
353 ApplicationDelegate* ApplicationDelegate::Create() { | 359 ApplicationDelegate* ApplicationDelegate::Create() { |
354 return new examples::MediaViewer; | 360 return new examples::MediaViewer; |
355 } | 361 } |
356 | 362 |
357 } // namespace mojo | 363 } // namespace mojo |
OLD | NEW |