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

Side by Side Diff: chrome/browser/extensions/api/gcd_private/gcd_private_api.cc

Issue 363883002: Add API stubs for GCD device commands. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Thu 07/10/2014 0:13:26.25 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 "chrome/browser/extensions/api/gcd_private/gcd_private_api.h" 5 #include "chrome/browser/extensions/api/gcd_private/gcd_private_api.h"
6 6
7 #include "base/lazy_instance.h" 7 #include "base/lazy_instance.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "chrome/browser/local_discovery/cloud_device_list.h" 9 #include "chrome/browser/local_discovery/cloud_device_list.h"
10 #include "chrome/browser/local_discovery/cloud_print_printer_list.h" 10 #include "chrome/browser/local_discovery/cloud_print_printer_list.h"
11 #include "chrome/browser/local_discovery/gcd_constants.h" 11 #include "chrome/browser/local_discovery/gcd_constants.h"
12 #include "chrome/browser/local_discovery/privet_device_lister_impl.h" 12 #include "chrome/browser/local_discovery/privet_device_lister_impl.h"
13 #include "chrome/browser/profiles/profile.h" 13 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" 14 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
15 #include "chrome/browser/signin/signin_manager_factory.h" 15 #include "chrome/browser/signin/signin_manager_factory.h"
16 #include "components/signin/core/browser/profile_oauth2_token_service.h" 16 #include "components/signin/core/browser/profile_oauth2_token_service.h"
17 #include "components/signin/core/browser/signin_manager.h" 17 #include "components/signin/core/browser/signin_manager.h"
18 #include "components/signin/core/browser/signin_manager_base.h" 18 #include "components/signin/core/browser/signin_manager_base.h"
19 19
20 namespace extensions { 20 namespace extensions {
21 21
22 namespace gcd_private = api::gcd_private; 22 namespace gcd_private = api::gcd_private;
23 23
24 namespace { 24 namespace {
25 25
26 scoped_ptr<Event> MakeCloudDeviceStateChangedEvent(
27 bool available,
28 const gcd_private::GCDDevice& device) {
29 scoped_ptr<base::ListValue> params =
30 gcd_private::OnCloudDeviceStateChanged::Create(available, device);
31 scoped_ptr<Event> event(new Event(
32 gcd_private::OnCloudDeviceStateChanged::kEventName, params.Pass()));
33 return event.Pass();
34 }
35
36 const int kNumRequestsNeeded = 2; 26 const int kNumRequestsNeeded = 2;
37 27
38 const char kIDPrefixCloudPrinter[] = "cloudprint:"; 28 const char kIDPrefixCloudPrinter[] = "cloudprint:";
39 const char kIDPrefixGcd[] = "gcd:"; 29 const char kIDPrefixGcd[] = "gcd:";
40 const char kIDPrefixMdns[] = "mdns:"; 30 const char kIDPrefixMdns[] = "mdns:";
41 31
32 scoped_ptr<Event> MakeDeviceStateChangedEvent(
33 const gcd_private::GCDDevice& device) {
34 scoped_ptr<base::ListValue> params =
35 gcd_private::OnDeviceStateChanged::Create(device);
36 scoped_ptr<Event> event(
37 new Event(gcd_private::OnDeviceStateChanged::kEventName, params.Pass()));
38 return event.Pass();
39 }
40
41 scoped_ptr<Event> MakeDeviceRemovedEvent(const std::string& device) {
42 scoped_ptr<base::ListValue> params =
43 gcd_private::OnDeviceRemoved::Create(device);
44 scoped_ptr<Event> event(
45 new Event(gcd_private::OnDeviceRemoved::kEventName, params.Pass()));
46 return event.Pass();
47 }
48
42 GcdPrivateAPI::GCDApiFlowFactoryForTests* g_gcd_api_flow_factory = NULL; 49 GcdPrivateAPI::GCDApiFlowFactoryForTests* g_gcd_api_flow_factory = NULL;
43 50
44 base::LazyInstance<BrowserContextKeyedAPIFactory<GcdPrivateAPI> > g_factory = 51 base::LazyInstance<BrowserContextKeyedAPIFactory<GcdPrivateAPI> > g_factory =
45 LAZY_INSTANCE_INITIALIZER; 52 LAZY_INSTANCE_INITIALIZER;
46 53
47 scoped_ptr<local_discovery::GCDApiFlow> MakeGCDApiFlow(Profile* profile) { 54 scoped_ptr<local_discovery::GCDApiFlow> MakeGCDApiFlow(Profile* profile) {
48 if (g_gcd_api_flow_factory) { 55 if (g_gcd_api_flow_factory) {
49 return g_gcd_api_flow_factory->CreateGCDApiFlow(); 56 return g_gcd_api_flow_factory->CreateGCDApiFlow();
50 } 57 }
51 58
(...skipping 10 matching lines...) Expand all
62 token_service, 69 token_service,
63 signin_manager->GetAuthenticatedAccountId()); 70 signin_manager->GetAuthenticatedAccountId());
64 } 71 }
65 72
66 } // namespace 73 } // namespace
67 74
68 GcdPrivateAPI::GcdPrivateAPI(content::BrowserContext* context) 75 GcdPrivateAPI::GcdPrivateAPI(content::BrowserContext* context)
69 : num_device_listeners_(0), browser_context_(context) { 76 : num_device_listeners_(0), browser_context_(context) {
70 DCHECK(browser_context_); 77 DCHECK(browser_context_);
71 if (EventRouter::Get(context)) { 78 if (EventRouter::Get(context)) {
72 EventRouter::Get(context)->RegisterObserver( 79 EventRouter::Get(context)
73 this, gcd_private::OnCloudDeviceStateChanged::kEventName); 80 ->RegisterObserver(this, gcd_private::OnDeviceStateChanged::kEventName);
81 EventRouter::Get(context)
82 ->RegisterObserver(this, gcd_private::OnDeviceRemoved::kEventName);
74 } 83 }
75 } 84 }
76 85
77 GcdPrivateAPI::~GcdPrivateAPI() { 86 GcdPrivateAPI::~GcdPrivateAPI() {
78 if (EventRouter::Get(browser_context_)) { 87 if (EventRouter::Get(browser_context_)) {
79 EventRouter::Get(browser_context_)->UnregisterObserver(this); 88 EventRouter::Get(browser_context_)->UnregisterObserver(this);
80 } 89 }
81 } 90 }
82 91
83 // static 92 // static
84 BrowserContextKeyedAPIFactory<GcdPrivateAPI>* 93 BrowserContextKeyedAPIFactory<GcdPrivateAPI>*
85 GcdPrivateAPI::GetFactoryInstance() { 94 GcdPrivateAPI::GetFactoryInstance() {
86 return g_factory.Pointer(); 95 return g_factory.Pointer();
87 } 96 }
88 97
89 void GcdPrivateAPI::OnListenerAdded(const EventListenerInfo& details) { 98 void GcdPrivateAPI::OnListenerAdded(const EventListenerInfo& details) {
90 num_device_listeners_++; 99 if (details.event_name == gcd_private::OnDeviceStateChanged::kEventName ||
100 details.event_name == gcd_private::OnDeviceRemoved::kEventName) {
101 num_device_listeners_++;
91 102
92 if (num_device_listeners_ == 1) { 103 if (num_device_listeners_ == 1) {
93 service_discovery_client_ = 104 service_discovery_client_ =
94 local_discovery::ServiceDiscoverySharedClient::GetInstance(); 105 local_discovery::ServiceDiscoverySharedClient::GetInstance();
95 privet_device_lister_.reset(new local_discovery::PrivetDeviceListerImpl( 106 privet_device_lister_.reset(new local_discovery::PrivetDeviceListerImpl(
96 service_discovery_client_.get(), this)); 107 service_discovery_client_.get(), this));
97 privet_device_lister_->Start(); 108 privet_device_lister_->Start();
98 } 109 }
99 110
100 for (GCDDeviceMap::iterator i = known_devices_.begin(); 111 for (GCDDeviceMap::iterator i = known_devices_.begin();
101 i != known_devices_.end(); 112 i != known_devices_.end();
102 i++) { 113 i++) {
103 EventRouter::Get(browser_context_)->DispatchEventToExtension( 114 EventRouter::Get(browser_context_)->DispatchEventToExtension(
104 details.extension_id, 115 details.extension_id, MakeDeviceStateChangedEvent(*i->second));
105 MakeCloudDeviceStateChangedEvent(true, *i->second)); 116 }
106 } 117 }
107 } 118 }
108 119
109 void GcdPrivateAPI::OnListenerRemoved(const EventListenerInfo& details) { 120 void GcdPrivateAPI::OnListenerRemoved(const EventListenerInfo& details) {
110 num_device_listeners_--; 121 if (details.event_name == gcd_private::OnDeviceStateChanged::kEventName ||
122 details.event_name == gcd_private::OnDeviceRemoved::kEventName) {
123 num_device_listeners_--;
111 124
112 if (num_device_listeners_ == 0) { 125 if (num_device_listeners_ == 0) {
113 privet_device_lister_.reset(); 126 privet_device_lister_.reset();
114 service_discovery_client_ = NULL; 127 service_discovery_client_ = NULL;
128 }
115 } 129 }
116 } 130 }
117 131
118 void GcdPrivateAPI::DeviceChanged( 132 void GcdPrivateAPI::DeviceChanged(
119 bool added, 133 bool added,
120 const std::string& name, 134 const std::string& name,
121 const local_discovery::DeviceDescription& description) { 135 const local_discovery::DeviceDescription& description) {
122 linked_ptr<gcd_private::GCDDevice> device(new gcd_private::GCDDevice); 136 linked_ptr<gcd_private::GCDDevice> device(new gcd_private::GCDDevice);
123 device->setup_type = gcd_private::SETUP_TYPE_MDNS; 137 device->setup_type = gcd_private::SETUP_TYPE_MDNS;
124 device->id_string = kIDPrefixMdns + name; 138 device->device_id = kIDPrefixMdns + name;
125 device->device_type = description.type; 139 device->device_type = description.type;
126 device->device_name = description.name; 140 device->device_name = description.name;
127 device->device_description = description.description; 141 device->device_description = description.description;
128 if (!description.id.empty()) 142 if (!description.id.empty())
129 device->cloud_id.reset(new std::string(description.id)); 143 device->cloud_id.reset(new std::string(description.id));
130 144
131 known_devices_[device->id_string] = device; 145 known_devices_[device->device_id] = device;
132 146
133 EventRouter::Get(browser_context_) 147 EventRouter::Get(browser_context_)
134 ->BroadcastEvent(MakeCloudDeviceStateChangedEvent(true, *device)); 148 ->BroadcastEvent(MakeDeviceStateChangedEvent(*device));
135 } 149 }
136 150
137 void GcdPrivateAPI::DeviceRemoved(const std::string& name) { 151 void GcdPrivateAPI::DeviceRemoved(const std::string& name) {
138 GCDDeviceMap::iterator found = known_devices_.find(kIDPrefixMdns + name); 152 GCDDeviceMap::iterator found = known_devices_.find(kIDPrefixMdns + name);
139 linked_ptr<gcd_private::GCDDevice> device = found->second; 153 linked_ptr<gcd_private::GCDDevice> device = found->second;
140 known_devices_.erase(found); 154 known_devices_.erase(found);
141 155
142 EventRouter::Get(browser_context_) 156 EventRouter::Get(browser_context_)
143 ->BroadcastEvent(MakeCloudDeviceStateChangedEvent(false, *device)); 157 ->BroadcastEvent(MakeDeviceRemovedEvent(device->device_id));
144 } 158 }
145 159
146 void GcdPrivateAPI::DeviceCacheFlushed() { 160 void GcdPrivateAPI::DeviceCacheFlushed() {
147 for (GCDDeviceMap::iterator i = known_devices_.begin(); 161 for (GCDDeviceMap::iterator i = known_devices_.begin();
148 i != known_devices_.end(); 162 i != known_devices_.end();
149 i++) { 163 i++) {
150 EventRouter::Get(browser_context_) 164 EventRouter::Get(browser_context_)
151 ->BroadcastEvent(MakeCloudDeviceStateChangedEvent(false, *i->second)); 165 ->BroadcastEvent(MakeDeviceRemovedEvent(i->second->device_id));
152 } 166 }
153 167
154 known_devices_.clear(); 168 known_devices_.clear();
155 } 169 }
156 170
157 // static 171 // static
158 void GcdPrivateAPI::SetGCDApiFlowFactoryForTests( 172 void GcdPrivateAPI::SetGCDApiFlowFactoryForTests(
159 GCDApiFlowFactoryForTests* factory) { 173 GCDApiFlowFactoryForTests* factory) {
160 g_gcd_api_flow_factory = factory; 174 g_gcd_api_flow_factory = factory;
161 } 175 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 SendResponse(false); 223 SendResponse(false);
210 return; 224 return;
211 } 225 }
212 226
213 std::vector<linked_ptr<gcd_private::GCDDevice> > devices; 227 std::vector<linked_ptr<gcd_private::GCDDevice> > devices;
214 228
215 for (DeviceList::iterator i = devices_.begin(); i != devices_.end(); i++) { 229 for (DeviceList::iterator i = devices_.begin(); i != devices_.end(); i++) {
216 linked_ptr<gcd_private::GCDDevice> device(new gcd_private::GCDDevice); 230 linked_ptr<gcd_private::GCDDevice> device(new gcd_private::GCDDevice);
217 device->setup_type = gcd_private::SETUP_TYPE_CLOUD; 231 device->setup_type = gcd_private::SETUP_TYPE_CLOUD;
218 if (i->type == local_discovery::kGCDTypePrinter) { 232 if (i->type == local_discovery::kGCDTypePrinter) {
219 device->id_string = kIDPrefixCloudPrinter + i->id; 233 device->device_id = kIDPrefixCloudPrinter + i->id;
220 } else { 234 } else {
221 device->id_string = kIDPrefixGcd + i->id; 235 device->device_id = kIDPrefixGcd + i->id;
222 } 236 }
223 237
224 device->cloud_id.reset(new std::string(i->id)); 238 device->cloud_id.reset(new std::string(i->id));
225 device->device_type = i->type; 239 device->device_type = i->type;
226 device->device_name = i->display_name; 240 device->device_name = i->display_name;
227 device->device_description = i->description; 241 device->device_description = i->description;
228 242
229 devices.push_back(device); 243 devices.push_back(device);
230 } 244 }
231 245
232 results_ = gcd_private::GetCloudDeviceList::Results::Create(devices); 246 results_ = gcd_private::GetCloudDeviceList::Results::Create(devices);
233 247
234 SendResponse(true); 248 SendResponse(true);
235 Release(); 249 Release();
236 } 250 }
237 251
252 GcdPrivateQueryForNewLocalDevicesFunction::
253 GcdPrivateQueryForNewLocalDevicesFunction() {
254 }
255
256 GcdPrivateQueryForNewLocalDevicesFunction::
257 ~GcdPrivateQueryForNewLocalDevicesFunction() {
258 }
259
260 bool GcdPrivateQueryForNewLocalDevicesFunction::RunSync() {
261 return false;
262 }
263
238 GcdPrivateStartSetupFunction::GcdPrivateStartSetupFunction() { 264 GcdPrivateStartSetupFunction::GcdPrivateStartSetupFunction() {
239 } 265 }
240 266
241 GcdPrivateStartSetupFunction::~GcdPrivateStartSetupFunction() { 267 GcdPrivateStartSetupFunction::~GcdPrivateStartSetupFunction() {
242 } 268 }
243 269
244 bool GcdPrivateStartSetupFunction::RunAsync() { 270 bool GcdPrivateStartSetupFunction::RunAsync() {
245 return false; 271 return false;
246 } 272 }
247 273
248 GcdPrivateSetWiFiNetworksFunction::GcdPrivateSetWiFiNetworksFunction() { 274 GcdPrivateSetWiFiNetworkFunction::GcdPrivateSetWiFiNetworkFunction() {
249 } 275 }
250 276
251 GcdPrivateSetWiFiNetworksFunction::~GcdPrivateSetWiFiNetworksFunction() { 277 GcdPrivateSetWiFiNetworkFunction::~GcdPrivateSetWiFiNetworkFunction() {
252 } 278 }
253 279
254 bool GcdPrivateSetWiFiNetworksFunction::RunAsync() { 280 bool GcdPrivateSetWiFiNetworkFunction::RunAsync() {
255 return false; 281 return false;
256 } 282 }
257 283
258 GcdPrivateSetWiFiCredentialsFunction::GcdPrivateSetWiFiCredentialsFunction() { 284 GcdPrivateSetWiFiPasswordFunction::GcdPrivateSetWiFiPasswordFunction() {
259 } 285 }
260 286
261 GcdPrivateSetWiFiCredentialsFunction::~GcdPrivateSetWiFiCredentialsFunction() { 287 GcdPrivateSetWiFiPasswordFunction::~GcdPrivateSetWiFiPasswordFunction() {
262 } 288 }
263 289
264 bool GcdPrivateSetWiFiCredentialsFunction::RunAsync() { 290 bool GcdPrivateSetWiFiPasswordFunction::RunAsync() {
265 return false; 291 return false;
266 } 292 }
267 293
268 GcdPrivateConfirmCodeFunction::GcdPrivateConfirmCodeFunction() { 294 GcdPrivateConfirmCodeFunction::GcdPrivateConfirmCodeFunction() {
269 } 295 }
270 296
271 GcdPrivateConfirmCodeFunction::~GcdPrivateConfirmCodeFunction() { 297 GcdPrivateConfirmCodeFunction::~GcdPrivateConfirmCodeFunction() {
272 } 298 }
273 299
274 bool GcdPrivateConfirmCodeFunction::RunAsync() { 300 bool GcdPrivateConfirmCodeFunction::RunAsync() {
275 return false; 301 return false;
276 } 302 }
277 303
278 GcdPrivateStopSetupFunction::GcdPrivateStopSetupFunction() { 304 GcdPrivateStopSetupFunction::GcdPrivateStopSetupFunction() {
279 } 305 }
280 306
281 GcdPrivateStopSetupFunction::~GcdPrivateStopSetupFunction() { 307 GcdPrivateStopSetupFunction::~GcdPrivateStopSetupFunction() {
282 } 308 }
283 309
284 bool GcdPrivateStopSetupFunction::RunAsync() { 310 bool GcdPrivateStopSetupFunction::RunAsync() {
285 return false; 311 return false;
286 } 312 }
287 313
314 GcdPrivateGetCommandDefinitionsFunction::
315 GcdPrivateGetCommandDefinitionsFunction() {
316 }
317
318 GcdPrivateGetCommandDefinitionsFunction::
319 ~GcdPrivateGetCommandDefinitionsFunction() {
320 }
321
322 bool GcdPrivateGetCommandDefinitionsFunction::RunAsync() {
323 return false;
324 }
325
326 GcdPrivateInsertCommandFunction::GcdPrivateInsertCommandFunction() {
327 }
328
329 GcdPrivateInsertCommandFunction::~GcdPrivateInsertCommandFunction() {
330 }
331
332 bool GcdPrivateInsertCommandFunction::RunAsync() {
333 return false;
334 }
335
336 GcdPrivateGetCommandFunction::GcdPrivateGetCommandFunction() {
337 }
338
339 GcdPrivateGetCommandFunction::~GcdPrivateGetCommandFunction() {
340 }
341
342 bool GcdPrivateGetCommandFunction::RunAsync() {
343 return false;
344 }
345
346 GcdPrivateCancelCommandFunction::GcdPrivateCancelCommandFunction() {
347 }
348
349 GcdPrivateCancelCommandFunction::~GcdPrivateCancelCommandFunction() {
350 }
351
352 bool GcdPrivateCancelCommandFunction::RunAsync() {
353 return false;
354 }
355
356 GcdPrivateGetCommandsListFunction::GcdPrivateGetCommandsListFunction() {
357 }
358
359 GcdPrivateGetCommandsListFunction::~GcdPrivateGetCommandsListFunction() {
360 }
361
362 bool GcdPrivateGetCommandsListFunction::RunAsync() {
363 return false;
364 }
365
288 } // namespace extensions 366 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/gcd_private/gcd_private_api.h ('k') | chrome/common/extensions/api/gcd_private.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698