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

Side by Side Diff: chrome/service/cloud_print/cloud_print_proxy.cc

Issue 208653010: Use service process to collect printers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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
« no previous file with comments | « chrome/service/cloud_print/cloud_print_proxy.h ('k') | chrome/service/service_ipc_server.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/service/cloud_print/cloud_print_proxy.h" 5 #include "chrome/service/cloud_print/cloud_print_proxy.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 if (client_) { 136 if (client_) {
137 client_->OnCloudPrintProxyEnabled(true); 137 client_->OnCloudPrintProxyEnabled(true);
138 } 138 }
139 } 139 }
140 140
141 bool CloudPrintProxy::CreateBackend() { 141 bool CloudPrintProxy::CreateBackend() {
142 DCHECK(CalledOnValidThread()); 142 DCHECK(CalledOnValidThread());
143 if (backend_.get()) 143 if (backend_.get())
144 return false; 144 return false;
145 145
146 settings_.InitFrom(service_prefs_); 146 ConnectorSettings settings;
147 settings.InitFrom(service_prefs_);
147 148
148 // By default we don't poll for jobs when we lose XMPP connection. But this 149 // By default we don't poll for jobs when we lose XMPP connection. But this
149 // behavior can be overridden by a preference. 150 // behavior can be overridden by a preference.
150 bool enable_job_poll = 151 bool enable_job_poll =
151 service_prefs_->GetBoolean(prefs::kCloudPrintEnableJobPoll, false); 152 service_prefs_->GetBoolean(prefs::kCloudPrintEnableJobPoll, false);
152 153
153 gaia::OAuthClientInfo oauth_client_info; 154 gaia::OAuthClientInfo oauth_client_info;
154 oauth_client_info.client_id = 155 oauth_client_info.client_id =
155 google_apis::GetOAuth2ClientID(google_apis::CLIENT_CLOUD_PRINT); 156 google_apis::GetOAuth2ClientID(google_apis::CLIENT_CLOUD_PRINT);
156 oauth_client_info.client_secret = 157 oauth_client_info.client_secret =
157 google_apis::GetOAuth2ClientSecret(google_apis::CLIENT_CLOUD_PRINT); 158 google_apis::GetOAuth2ClientSecret(google_apis::CLIENT_CLOUD_PRINT);
158 oauth_client_info.redirect_uri = "oob"; 159 oauth_client_info.redirect_uri = "oob";
159 backend_.reset(new CloudPrintProxyBackend(this, settings_, oauth_client_info, 160 backend_.reset(new CloudPrintProxyBackend(
160 enable_job_poll)); 161 this, settings, oauth_client_info, enable_job_poll));
161 return true; 162 return true;
162 } 163 }
163 164
164 void CloudPrintProxy::UnregisterPrintersAndDisableForUser() { 165 void CloudPrintProxy::UnregisterPrintersAndDisableForUser() {
165 DCHECK(CalledOnValidThread()); 166 DCHECK(CalledOnValidThread());
166 if (backend_.get()) { 167 if (backend_.get()) {
167 // Try getting auth and printers info from the backend. 168 // Try getting auth and printers info from the backend.
168 // We'll get notified in this case. 169 // We'll get notified in this case.
169 backend_->UnregisterPrinters(); 170 backend_->UnregisterPrinters();
170 } else { 171 } else {
(...skipping 10 matching lines...) Expand all
181 client_->OnCloudPrintProxyDisabled(true); 182 client_->OnCloudPrintProxyDisabled(true);
182 } 183 }
183 ShutdownBackend(); 184 ShutdownBackend();
184 } 185 }
185 186
186 void CloudPrintProxy::GetProxyInfo(CloudPrintProxyInfo* info) { 187 void CloudPrintProxy::GetProxyInfo(CloudPrintProxyInfo* info) {
187 info->enabled = enabled_; 188 info->enabled = enabled_;
188 info->email.clear(); 189 info->email.clear();
189 if (enabled_) 190 if (enabled_)
190 info->email = user_email(); 191 info->email = user_email();
191 info->proxy_id = settings_.proxy_id(); 192 ConnectorSettings settings;
192 // If the Cloud Print service is not enabled, we may need to read the old 193 settings.InitFrom(service_prefs_);
193 // value of proxy_id from prefs. 194 info->proxy_id = settings.proxy_id();
194 if (info->proxy_id.empty()) 195 }
195 info->proxy_id = 196
196 service_prefs_->GetString(prefs::kCloudPrintProxyId, std::string()); 197 void CloudPrintProxy::GetPrinters(std::vector<std::string>* printers) {
198 ConnectorSettings settings;
199 settings.InitFrom(service_prefs_);
200 scoped_refptr<PrintSystem> print_system =
201 PrintSystem::CreateInstance(settings.print_system_settings());
202 if (!print_system)
203 return;
204 PrintSystem::PrintSystemResult result = print_system->Init();
205 if (!result.succeeded())
206 return;
207 printing::PrinterList printer_list;
208 print_system->EnumeratePrinters(&printer_list);
209 for (size_t i = 0; i < printer_list.size(); ++i)
210 printers->push_back(printer_list[i].printer_name);
197 } 211 }
198 212
199 void CloudPrintProxy::CheckCloudPrintProxyPolicy() { 213 void CloudPrintProxy::CheckCloudPrintProxyPolicy() {
200 g_service_process->io_thread()->message_loop_proxy()->PostTask( 214 g_service_process->io_thread()->message_loop_proxy()->PostTask(
201 FROM_HERE, base::Bind(&CheckCloudPrintProxyPolicyInBrowser)); 215 FROM_HERE, base::Bind(&CheckCloudPrintProxyPolicyInBrowser));
202 } 216 }
203 217
204 void CloudPrintProxy::OnAuthenticated( 218 void CloudPrintProxy::OnAuthenticated(
205 const std::string& robot_oauth_refresh_token, 219 const std::string& robot_oauth_refresh_token,
206 const std::string& robot_email, 220 const std::string& robot_email,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 client_->OnCloudPrintProxyDisabled(false); 260 client_->OnCloudPrintProxyDisabled(false);
247 } 261 }
248 } 262 }
249 263
250 void CloudPrintProxy::OnUnregisterPrinters( 264 void CloudPrintProxy::OnUnregisterPrinters(
251 const std::string& auth_token, 265 const std::string& auth_token,
252 const std::list<std::string>& printer_ids) { 266 const std::list<std::string>& printer_ids) {
253 UMA_HISTOGRAM_COUNTS_10000("CloudPrint.UnregisterPrinters", 267 UMA_HISTOGRAM_COUNTS_10000("CloudPrint.UnregisterPrinters",
254 printer_ids.size()); 268 printer_ids.size());
255 ShutdownBackend(); 269 ShutdownBackend();
256 wipeout_.reset(new CloudPrintWipeout(this, settings_.server_url())); 270 ConnectorSettings settings;
271 settings.InitFrom(service_prefs_);
272 wipeout_.reset(new CloudPrintWipeout(this, settings.server_url()));
257 wipeout_->UnregisterPrinters(auth_token, printer_ids); 273 wipeout_->UnregisterPrinters(auth_token, printer_ids);
258 } 274 }
259 275
260 void CloudPrintProxy::OnXmppPingUpdated(int ping_timeout) { 276 void CloudPrintProxy::OnXmppPingUpdated(int ping_timeout) {
261 DCHECK(CalledOnValidThread()); 277 DCHECK(CalledOnValidThread());
262 service_prefs_->SetInt(prefs::kCloudPrintXmppPingTimeout, ping_timeout); 278 service_prefs_->SetInt(prefs::kCloudPrintXmppPingTimeout, ping_timeout);
263 service_prefs_->WritePrefs(); 279 service_prefs_->WritePrefs();
264 } 280 }
265 281
266 void CloudPrintProxy::OnUnregisterPrintersComplete() { 282 void CloudPrintProxy::OnUnregisterPrintersComplete() {
267 wipeout_.reset(); 283 wipeout_.reset();
268 // Finish disabling cloud print for this user. 284 // Finish disabling cloud print for this user.
269 DisableForUser(); 285 DisableForUser();
270 } 286 }
271 287
272 void CloudPrintProxy::ShutdownBackend() { 288 void CloudPrintProxy::ShutdownBackend() {
273 DCHECK(CalledOnValidThread()); 289 DCHECK(CalledOnValidThread());
274 if (backend_.get()) 290 if (backend_.get())
275 backend_->Shutdown(); 291 backend_->Shutdown();
276 backend_.reset(); 292 backend_.reset();
277 } 293 }
278 294
279 } // namespace cloud_print 295 } // namespace cloud_print
OLDNEW
« no previous file with comments | « chrome/service/cloud_print/cloud_print_proxy.h ('k') | chrome/service/service_ipc_server.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698