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

Side by Side Diff: services/keyboard_native/main.cc

Issue 1453823005: Implement Linux IME support (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 1 month 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
OLDNEW
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 "base/message_loop/message_loop.h" 5 #include "base/message_loop/message_loop.h"
6 #include "mojo/application/application_runner_chromium.h" 6 #include "mojo/application/application_runner_chromium.h"
7 #include "mojo/public/c/system/main.h" 7 #include "mojo/public/c/system/main.h"
8 #include "mojo/public/cpp/application/application_connection.h" 8 #include "mojo/public/cpp/application/application_connection.h"
9 #include "mojo/public/cpp/application/application_delegate.h" 9 #include "mojo/public/cpp/application/application_delegate.h"
10 #include "mojo/public/cpp/application/application_impl.h" 10 #include "mojo/public/cpp/application/application_impl.h"
11 #include "mojo/public/cpp/application/interface_factory.h" 11 #include "mojo/public/cpp/application/interface_factory.h"
12 #include "mojo/public/cpp/application/service_provider_impl.h" 12 #include "mojo/public/cpp/application/service_provider_impl.h"
13 #include "mojo/public/cpp/bindings/interface_request.h" 13 #include "mojo/public/cpp/bindings/interface_request.h"
14 #include "mojo/services/view_manager/cpp/view_manager_client_factory.h" 14 #include "mojo/services/view_manager/cpp/view_manager_client_factory.h"
15 #include "mojo/services/view_manager/cpp/view_manager_delegate.h" 15 #include "mojo/services/view_manager/cpp/view_manager_delegate.h"
16 #include "services/keyboard_native/keyboard_service_impl.h" 16 #include "services/keyboard_native/keyboard_service_impl.h"
17 17
18 namespace keyboard { 18 namespace keyboard {
19 19
20 class KeyboardServiceFactory : public mojo::InterfaceFactory<KeyboardService> { 20 class NativeKeyboardServiceFactory
21 : public mojo::InterfaceFactory<KeyboardService> {
21 public: 22 public:
22 explicit KeyboardServiceFactory( 23 explicit NativeKeyboardServiceFactory(
23 mojo::InterfaceRequest<mojo::ServiceProvider> service_provider_request) { 24 mojo::InterfaceRequest<mojo::ServiceProvider> service_provider_request) {
24 if (service_provider_request.is_pending()) { 25 if (service_provider_request.is_pending()) {
25 service_provider_impl_.Bind(service_provider_request.Pass()); 26 service_provider_impl_.Bind(service_provider_request.Pass());
26 service_provider_impl_.AddService<KeyboardService>(this); 27 service_provider_impl_.AddService<KeyboardService>(this);
27 } 28 }
28 } 29 }
29 ~KeyboardServiceFactory() override {} 30 ~NativeKeyboardServiceFactory() override {}
30 31
31 void OnViewCreated(mojo::View* view, mojo::Shell* shell) { 32 void OnViewCreated(mojo::View* view, mojo::Shell* shell) {
32 view_observer_delegate_.OnViewCreated(view, shell); 33 view_observer_delegate_.OnViewCreated(view, shell);
33 } 34 }
34 35
35 // mojo::InterfaceFactory<KeyboardService> implementation. 36 // mojo::InterfaceFactory<KeyboardService> implementation.
36 void Create(mojo::ApplicationConnection* connection, 37 void Create(mojo::ApplicationConnection* connection,
37 mojo::InterfaceRequest<KeyboardService> request) override { 38 mojo::InterfaceRequest<KeyboardService> request) override {
38 KeyboardServiceImpl* keyboard_service_impl = 39 KeyboardServiceImpl* keyboard_service_impl =
39 new KeyboardServiceImpl(request.Pass()); 40 new KeyboardServiceImpl(request.Pass());
(...skipping 21 matching lines...) Expand all
61 bool ConfigureIncomingConnection( 62 bool ConfigureIncomingConnection(
62 mojo::ApplicationConnection* connection) override { 63 mojo::ApplicationConnection* connection) override {
63 connection->AddService(view_manager_client_factory_.get()); 64 connection->AddService(view_manager_client_factory_.get());
64 return true; 65 return true;
65 } 66 }
66 67
67 // mojo::ViewManagerDelegate implementation. 68 // mojo::ViewManagerDelegate implementation.
68 void OnEmbed(mojo::View* root, 69 void OnEmbed(mojo::View* root,
69 mojo::InterfaceRequest<mojo::ServiceProvider> services, 70 mojo::InterfaceRequest<mojo::ServiceProvider> services,
70 mojo::ServiceProviderPtr exposed_services) override { 71 mojo::ServiceProviderPtr exposed_services) override {
71 KeyboardServiceFactory* keyboard_service_factory = 72 NativeKeyboardServiceFactory* keyboard_service_factory =
72 new KeyboardServiceFactory(services.Pass()); 73 new NativeKeyboardServiceFactory(services.Pass());
73 keyboard_service_factory->OnViewCreated(root, shell_); 74 keyboard_service_factory->OnViewCreated(root, shell_);
74 } 75 }
75 76
76 void OnViewManagerDisconnected(mojo::ViewManager* view_manager) override { 77 void OnViewManagerDisconnected(mojo::ViewManager* view_manager) override {
77 base::MessageLoop::current()->Quit(); 78 base::MessageLoop::current()->Quit();
78 } 79 }
79 80
80 private: 81 private:
81 mojo::Shell* shell_; 82 mojo::Shell* shell_;
82 scoped_ptr<mojo::ViewManagerClientFactory> view_manager_client_factory_; 83 scoped_ptr<mojo::ViewManagerClientFactory> view_manager_client_factory_;
83 84
84 DISALLOW_COPY_AND_ASSIGN(KeyboardServiceDelegate); 85 DISALLOW_COPY_AND_ASSIGN(KeyboardServiceDelegate);
85 }; 86 };
86 87
87 } // namespace keyboard 88 } // namespace keyboard
88 89
89 MojoResult MojoMain(MojoHandle application_request) { 90 MojoResult MojoMain(MojoHandle application_request) {
90 mojo::ApplicationRunnerChromium runner( 91 mojo::ApplicationRunnerChromium runner(
91 new keyboard::KeyboardServiceDelegate()); 92 new keyboard::KeyboardServiceDelegate());
92 return runner.Run(application_request); 93 return runner.Run(application_request);
93 } 94 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698