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

Side by Side Diff: chrome/browser/service/service_process_control.h

Issue 5955001: Remove chromoting host registration from service process. More IPCs to control (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merges Created 10 years 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 (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 #ifndef CHROME_BROWSER_SERVICE_SERVICE_PROCESS_CONTROL_H_ 5 #ifndef CHROME_BROWSER_SERVICE_SERVICE_PROCESS_CONTROL_H_
6 #define CHROME_BROWSER_SERVICE_SERVICE_PROCESS_CONTROL_H_ 6 #define CHROME_BROWSER_SERVICE_SERVICE_PROCESS_CONTROL_H_
7 7
8 #include <queue> 8 #include <queue>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/id_map.h" 12 #include "base/id_map.h"
13 #include "base/callback.h" 13 #include "base/callback.h"
14 #include "base/process.h" 14 #include "base/process.h"
15 #include "base/scoped_ptr.h" 15 #include "base/scoped_ptr.h"
16 #include "base/task.h" 16 #include "base/task.h"
17 #include "chrome/common/notification_observer.h" 17 #include "chrome/common/notification_observer.h"
18 #include "chrome/common/notification_registrar.h" 18 #include "chrome/common/notification_registrar.h"
19 #include "ipc/ipc_sync_channel.h" 19 #include "ipc/ipc_sync_channel.h"
20 20
21 class Profile; 21 class Profile;
22 22
23 namespace remoting {
24 struct ChromotingHostInfo;
25 } // namespace remoting
26
23 // A ServiceProcessControl works as a portal between the service process and 27 // A ServiceProcessControl works as a portal between the service process and
24 // the browser process. 28 // the browser process.
25 // 29 //
26 // It is used to start and terminate the service process. It is also used 30 // It is used to start and terminate the service process. It is also used
27 // to send and receive IPC messages from the service process. 31 // to send and receive IPC messages from the service process.
28 // 32 //
29 // THREADING 33 // THREADING
30 // 34 //
31 // This class is accessed on the UI thread through some UI actions. It then 35 // This class is accessed on the UI thread through some UI actions. It then
32 // talks to the IPC channel on the IO thread. 36 // talks to the IPC channel on the IO thread.
33 class ServiceProcessControl : public IPC::Channel::Sender, 37 class ServiceProcessControl : public IPC::Channel::Sender,
34 public IPC::Channel::Listener, 38 public IPC::Channel::Listener,
35 public NotificationObserver { 39 public NotificationObserver {
36 public: 40 public:
37 typedef IDMap<ServiceProcessControl>::iterator iterator; 41 typedef IDMap<ServiceProcessControl>::iterator iterator;
38 typedef std::queue<IPC::Message> MessageQueue; 42 typedef std::queue<IPC::Message> MessageQueue;
43 typedef Callback1<const remoting::ChromotingHostInfo&>::Type
44 GetRemotingHostStatusCallback;
39 45
40 // An interface for handling messages received from the service process. 46 // An interface for handling messages received from the service process.
41 class MessageHandler { 47 class MessageHandler {
42 public: 48 public:
43 virtual ~MessageHandler() {} 49 virtual ~MessageHandler() {}
44 // This is a test signal sent from the service process. This can be used 50 // This is a test signal sent from the service process. This can be used
45 // the healthiness of the service. 51 // the healthiness of the service.
46 virtual void OnGoodDay() = 0; 52 virtual void OnGoodDay() = 0;
47 }; 53 };
48 54
(...skipping 30 matching lines...) Expand all
79 virtual bool Send(IPC::Message* message); 85 virtual bool Send(IPC::Message* message);
80 86
81 // NotificationObserver implementation. 87 // NotificationObserver implementation.
82 virtual void Observe(NotificationType type, 88 virtual void Observe(NotificationType type,
83 const NotificationSource& source, 89 const NotificationSource& source,
84 const NotificationDetails& details); 90 const NotificationDetails& details);
85 91
86 // Message handlers 92 // Message handlers
87 void OnGoodDay(); 93 void OnGoodDay();
88 void OnCloudPrintProxyIsEnabled(bool enabled, std::string email); 94 void OnCloudPrintProxyIsEnabled(bool enabled, std::string email);
95 void OnRemotingHostInfo(remoting::ChromotingHostInfo host_info);
89 96
90 // Send a hello message to the service process for testing purpose. 97 // Send a hello message to the service process for testing purpose.
91 // Return true if the message was sent. 98 // Return true if the message was sent.
92 bool SendHello(); 99 bool SendHello();
93 100
94 // Send a shutdown message to the service process. IPC channel will be 101 // Send a shutdown message to the service process. IPC channel will be
95 // destroyed after calling this method. 102 // destroyed after calling this method.
96 // Return true if the message was sent. 103 // Return true if the message was sent.
97 bool Shutdown(); 104 bool Shutdown();
98 105
99 // Send a message to enable the remoting service in the service process.
100 // Return true if the message was sent.
101 bool EnableRemotingWithTokens(const std::string& user,
102 const std::string& remoting_token,
103 const std::string& talk_token);
104
105 // Send a message to the service process to request a response 106 // Send a message to the service process to request a response
106 // containing the enablement status of the cloud print proxy and the 107 // containing the enablement status of the cloud print proxy and the
107 // registered email address. The callback gets the information when 108 // registered email address. The callback gets the information when
108 // received. 109 // received.
109 bool GetCloudPrintProxyStatus( 110 bool GetCloudPrintProxyStatus(
110 Callback2<bool, std::string>::Type* cloud_print_status_callback); 111 Callback2<bool, std::string>::Type* cloud_print_status_callback);
111 112
113 // Send a message to enable the remoting service in the service process.
114 // Return true if the message was sent.
115 bool SetRemotingHostCredentials(const std::string& user,
116 const std::string& auth_token);
117
118 bool EnableRemotingHost();
119 bool DisableRemotingHost();
120
121 bool GetRemotingHostStatus(
122 GetRemotingHostStatusCallback* status_callback);
123
112 // Set the message handler for receiving messages from the service process. 124 // Set the message handler for receiving messages from the service process.
113 // TODO(hclam): Allow more than 1 handler. 125 // TODO(hclam): Allow more than 1 handler.
114 void SetMessageHandler(MessageHandler* message_handler) { 126 void SetMessageHandler(MessageHandler* message_handler) {
115 message_handler_ = message_handler; 127 message_handler_ = message_handler;
116 } 128 }
117 129
118 private: 130 private:
119 class Launcher; 131 class Launcher;
120 typedef std::vector<Task*> TaskList; 132 typedef std::vector<Task*> TaskList;
121 133
(...skipping 20 matching lines...) Expand all
142 // if there was a failure in connecting. 154 // if there was a failure in connecting.
143 TaskList connect_done_tasks_; 155 TaskList connect_done_tasks_;
144 // Callbacks that get invoked ONLY when the channel is successfully connected. 156 // Callbacks that get invoked ONLY when the channel is successfully connected.
145 TaskList connect_success_tasks_; 157 TaskList connect_success_tasks_;
146 // Callbacks that get invoked ONLY when there was a connection failure. 158 // Callbacks that get invoked ONLY when there was a connection failure.
147 TaskList connect_failure_tasks_; 159 TaskList connect_failure_tasks_;
148 160
149 // Callback that gets invoked when a status message is received from 161 // Callback that gets invoked when a status message is received from
150 // the cloud print proxy. 162 // the cloud print proxy.
151 scoped_ptr<Callback2<bool, std::string>::Type> cloud_print_status_callback_; 163 scoped_ptr<Callback2<bool, std::string>::Type> cloud_print_status_callback_;
164 scoped_ptr<GetRemotingHostStatusCallback> remoting_host_status_callback_;
152 165
153 // Handler for messages from service process. 166 // Handler for messages from service process.
154 MessageHandler* message_handler_; 167 MessageHandler* message_handler_;
155 168
156 NotificationRegistrar registrar_; 169 NotificationRegistrar registrar_;
157 }; 170 };
158 171
159 #endif // CHROME_BROWSER_SERVICE_SERVICE_PROCESS_CONTROL_H_ 172 #endif // CHROME_BROWSER_SERVICE_SERVICE_PROCESS_CONTROL_H_
OLDNEW
« no previous file with comments | « chrome/browser/remoting/remoting_setup_flow.cc ('k') | chrome/browser/service/service_process_control.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698