Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Side by Side Diff: mojo/examples/media_viewer/media_viewer.cc

Issue 380413003: Mojo: Use InterfaceFactory<Interface> for service registration (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: convert everything over, remove ApplicationConnection::AddService Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698