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

Side by Side Diff: mojo/examples/keyboard/keyboard.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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/strings/string_util.h" 6 #include "base/strings/string_util.h"
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "mojo/examples/keyboard/keyboard.mojom.h" 8 #include "mojo/examples/keyboard/keyboard.mojom.h"
9 #include "mojo/examples/keyboard/keyboard_delegate.h" 9 #include "mojo/examples/keyboard/keyboard_delegate.h"
10 #include "mojo/examples/keyboard/keyboard_view.h" 10 #include "mojo/examples/keyboard/keyboard_view.h"
11 #include "mojo/public/cpp/application/application_connection.h" 11 #include "mojo/public/cpp/application/application_connection.h"
12 #include "mojo/public/cpp/application/application_delegate.h" 12 #include "mojo/public/cpp/application/application_delegate.h"
13 #include "mojo/public/cpp/application/context_interface_factory.h"
13 #include "mojo/services/public/cpp/view_manager/node.h" 14 #include "mojo/services/public/cpp/view_manager/node.h"
14 #include "mojo/services/public/cpp/view_manager/view.h" 15 #include "mojo/services/public/cpp/view_manager/view.h"
15 #include "mojo/services/public/cpp/view_manager/view_manager.h" 16 #include "mojo/services/public/cpp/view_manager/view_manager.h"
17 #include "mojo/services/public/cpp/view_manager/view_manager_client_factory.h"
16 #include "mojo/services/public/cpp/view_manager/view_manager_delegate.h" 18 #include "mojo/services/public/cpp/view_manager/view_manager_delegate.h"
17 #include "mojo/services/public/cpp/view_manager/view_observer.h" 19 #include "mojo/services/public/cpp/view_manager/view_observer.h"
18 #include "mojo/services/public/interfaces/navigation/navigation.mojom.h" 20 #include "mojo/services/public/interfaces/navigation/navigation.mojom.h"
19 #include "mojo/views/native_widget_view_manager.h" 21 #include "mojo/views/native_widget_view_manager.h"
20 #include "mojo/views/views_init.h" 22 #include "mojo/views/views_init.h"
21 #include "ui/events/event.h" 23 #include "ui/events/event.h"
22 #include "ui/views/layout/fill_layout.h" 24 #include "ui/views/layout/fill_layout.h"
23 #include "ui/views/widget/widget.h" 25 #include "ui/views/widget/widget.h"
24 #include "ui/views/widget/widget_delegate.h" 26 #include "ui/views/widget/widget_delegate.h"
25 #include "url/gurl.h" 27 #include "url/gurl.h"
26 28
27 using mojo::view_manager::Id; 29 using mojo::view_manager::Id;
28 30
29 namespace mojo { 31 namespace mojo {
30 namespace examples { 32 namespace examples {
31 33
32 class Keyboard; 34 class Keyboard;
33 35
34 class KeyboardServiceImpl : public InterfaceImpl<KeyboardService> { 36 class KeyboardServiceImpl : public InterfaceImpl<KeyboardService> {
35 public: 37 public:
36 KeyboardServiceImpl(ApplicationConnection* connection, Keyboard* keyboard); 38 explicit KeyboardServiceImpl(Keyboard* keyboard);
37 virtual ~KeyboardServiceImpl() {} 39 virtual ~KeyboardServiceImpl() {}
38 40
39 // KeyboardService: 41 // KeyboardService:
40 virtual void SetTarget(uint32_t node_id) OVERRIDE; 42 virtual void SetTarget(uint32_t node_id) OVERRIDE;
41 43
42 private: 44 private:
43 Keyboard* keyboard_; 45 Keyboard* keyboard_;
44 46
45 DISALLOW_COPY_AND_ASSIGN(KeyboardServiceImpl); 47 DISALLOW_COPY_AND_ASSIGN(KeyboardServiceImpl);
46 }; 48 };
47 49
48 class Keyboard : public ApplicationDelegate, 50 class Keyboard : public ApplicationDelegate,
49 public view_manager::ViewManagerDelegate, 51 public view_manager::ViewManagerDelegate,
50 public KeyboardDelegate { 52 public KeyboardDelegate,
53 public ContextInterfaceFactory<KeyboardServiceImpl, Keyboard> {
51 public: 54 public:
52 Keyboard() : view_manager_(NULL), keyboard_service_(NULL), target_(0) {} 55 Keyboard()
56 : ContextInterfaceFactory(this),
57 view_manager_(NULL),
58 view_manager_client_factory_(this),
59 keyboard_service_(NULL),
60 target_(0) {}
53 61
54 virtual ~Keyboard() { 62 virtual ~Keyboard() {
55 } 63 }
56 64
57 void set_target(Id id) { target_ = id; } 65 void set_target(Id id) { target_ = id; }
58 66
59 void set_keyboard_service(KeyboardServiceImpl* keyboard) { 67 void set_keyboard_service(KeyboardServiceImpl* keyboard) {
60 keyboard_service_ = keyboard; 68 keyboard_service_ = keyboard;
61 } 69 }
62 70
63 private: 71 private:
64 // Overridden from ApplicationDelegate: 72 // Overridden from ApplicationDelegate:
65 virtual bool ConfigureIncomingConnection(ApplicationConnection* connection) 73 virtual bool ConfigureIncomingConnection(ApplicationConnection* connection)
66 MOJO_OVERRIDE { 74 MOJO_OVERRIDE {
67 views_init_.reset(new ViewsInit); 75 views_init_.reset(new ViewsInit);
68 view_manager::ViewManager::ConfigureIncomingConnection(connection, this); 76 connection->AddServiceFactory(&view_manager_client_factory_);
69 connection->AddService<KeyboardServiceImpl>(this); 77 connection->AddServiceFactory(this);
70 return true; 78 return true;
71 } 79 }
72 80
73 void CreateWidget(view_manager::Node* node) { 81 void CreateWidget(view_manager::Node* node) {
74 views::WidgetDelegateView* widget_delegate = new views::WidgetDelegateView; 82 views::WidgetDelegateView* widget_delegate = new views::WidgetDelegateView;
75 widget_delegate->GetContentsView()->AddChildView(new KeyboardView(this)); 83 widget_delegate->GetContentsView()->AddChildView(new KeyboardView(this));
76 widget_delegate->GetContentsView()->SetLayoutManager(new views::FillLayout); 84 widget_delegate->GetContentsView()->SetLayoutManager(new views::FillLayout);
77 85
78 views::Widget* widget = new views::Widget; 86 views::Widget* widget = new views::Widget;
79 views::Widget::InitParams params( 87 views::Widget::InitParams params(
(...skipping 24 matching lines...) Expand all
104 virtual void OnKeyPressed(int key_code, int event_flags) OVERRIDE { 112 virtual void OnKeyPressed(int key_code, int event_flags) OVERRIDE {
105 if (!target_) 113 if (!target_)
106 return; 114 return;
107 keyboard_service_->client()->OnKeyboardEvent(target_, key_code, 115 keyboard_service_->client()->OnKeyboardEvent(target_, key_code,
108 event_flags); 116 event_flags);
109 } 117 }
110 118
111 scoped_ptr<ViewsInit> views_init_; 119 scoped_ptr<ViewsInit> views_init_;
112 120
113 view_manager::ViewManager* view_manager_; 121 view_manager::ViewManager* view_manager_;
122 view_manager::ViewManagerClientFactory view_manager_client_factory_;
114 123
115 KeyboardServiceImpl* keyboard_service_; 124 KeyboardServiceImpl* keyboard_service_;
116 125
117 Id target_; 126 Id target_;
118 127
119 DISALLOW_COPY_AND_ASSIGN(Keyboard); 128 DISALLOW_COPY_AND_ASSIGN(Keyboard);
120 }; 129 };
121 130
122 KeyboardServiceImpl::KeyboardServiceImpl(ApplicationConnection* connection, 131 KeyboardServiceImpl::KeyboardServiceImpl(Keyboard* keyboard)
123 Keyboard* keyboard)
124 : keyboard_(keyboard) { 132 : keyboard_(keyboard) {
125 keyboard_->set_keyboard_service(this); 133 keyboard_->set_keyboard_service(this);
126 } 134 }
127 135
128 void KeyboardServiceImpl::SetTarget(uint32_t node_id) { 136 void KeyboardServiceImpl::SetTarget(uint32_t node_id) {
129 keyboard_->set_target(node_id); 137 keyboard_->set_target(node_id);
130 } 138 }
131 139
132 } // namespace examples 140 } // namespace examples
133 141
134 // static 142 // static
135 ApplicationDelegate* ApplicationDelegate::Create() { 143 ApplicationDelegate* ApplicationDelegate::Create() {
136 return new examples::Keyboard; 144 return new examples::Keyboard;
137 } 145 }
138 146
139 } // namespace mojo 147 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698