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

Unified Diff: chrome/browser/printing/cloud_print/cloud_print_proxy_service.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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/printing/cloud_print/cloud_print_proxy_service.cc
diff --git a/chrome/browser/printing/cloud_print/cloud_print_proxy_service.cc b/chrome/browser/printing/cloud_print/cloud_print_proxy_service.cc
index 3c4a8c894ee3647e50cdc9676cbeecfdfe238027..6947c3b4cf74bb67daaf078f887b076b49da0f4c 100644
--- a/chrome/browser/printing/cloud_print/cloud_print_proxy_service.cc
+++ b/chrome/browser/printing/cloud_print/cloud_print_proxy_service.cc
@@ -45,6 +45,7 @@ CloudPrintProxyService::~CloudPrintProxyService() {
}
void CloudPrintProxyService::Initialize() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
UMA_HISTOGRAM_ENUMERATION("CloudPrint.ServiceEvents",
ServiceProcessControl::SERVICE_EVENT_INITIALIZE,
ServiceProcessControl::SERVICE_EVENT_MAX);
@@ -72,6 +73,7 @@ void CloudPrintProxyService::Initialize() {
}
void CloudPrintProxyService::RefreshStatusFromService() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
InvokeServiceTask(
base::Bind(&CloudPrintProxyService::RefreshCloudPrintProxyStatus,
weak_factory_.GetWeakPtr()));
@@ -90,6 +92,7 @@ void CloudPrintProxyService::EnableForUserWithRobot(
const std::string& robot_email,
const std::string& user_email,
const base::DictionaryValue& user_preferences) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
UMA_HISTOGRAM_ENUMERATION("CloudPrint.ServiceEvents",
ServiceProcessControl::SERVICE_EVENT_ENABLE,
ServiceProcessControl::SERVICE_EVENT_MAX);
@@ -102,6 +105,7 @@ void CloudPrintProxyService::EnableForUserWithRobot(
}
void CloudPrintProxyService::DisableForUser() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
UMA_HISTOGRAM_ENUMERATION("CloudPrint.ServiceEvents",
ServiceProcessControl::SERVICE_EVENT_DISABLE,
ServiceProcessControl::SERVICE_EVENT_MAX);
@@ -111,6 +115,7 @@ void CloudPrintProxyService::DisableForUser() {
}
bool CloudPrintProxyService::ApplyCloudPrintConnectorPolicy() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
if (!profile_->GetPrefs()->GetBoolean(prefs::kCloudPrintProxyEnabled)) {
std::string email =
profile_->GetPrefs()->GetString(prefs::kCloudPrintEmail);
@@ -136,8 +141,11 @@ bool CloudPrintProxyService::ApplyCloudPrintConnectorPolicy() {
return true;
}
-void CloudPrintProxyService::GetPrintersAvalibleForRegistration(
- std::vector<std::string>* printers) {
+void CloudPrintProxyService::GetPrinters(const PrintersCallback& callback) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ if (!profile_->GetPrefs()->GetBoolean(prefs::kCloudPrintProxyEnabled))
+ return;
+
base::FilePath list_path(
CommandLine::ForCurrentProcess()->GetSwitchValuePath(
switches::kCloudPrintSetupProxy));
@@ -146,36 +154,40 @@ void CloudPrintProxyService::GetPrintersAvalibleForRegistration(
base::ReadFileToString(list_path, &printers_json);
scoped_ptr<base::Value> value(base::JSONReader::Read(printers_json));
base::ListValue* list = NULL;
+ std::vector<std::string> printers;
if (value && value->GetAsList(&list) && list) {
for (size_t i = 0; i < list->GetSize(); ++i) {
std::string printer;
if (list->GetString(i, &printer))
- printers->push_back(printer);
+ printers.push_back(printer);
}
}
UMA_HISTOGRAM_COUNTS_10000("CloudPrint.AvailablePrintersList",
- printers->size());
+ printers.size());
+ base::MessageLoop::current()->PostTask(FROM_HERE,
+ base::Bind(callback, printers));
} else {
- printing::PrinterList printer_list;
- scoped_refptr<printing::PrintBackend> backend(
- printing::PrintBackend::CreateInstance(NULL));
- if (backend.get())
- backend->EnumeratePrinters(&printer_list);
- for (size_t i = 0; i < printer_list.size(); ++i)
- printers->push_back(printer_list[i].printer_name);
- UMA_HISTOGRAM_COUNTS_10000("CloudPrint.AvailablePrinters",
- printers->size());
+ InvokeServiceTask(
+ base::Bind(&CloudPrintProxyService::GetCloudPrintProxyPrinters,
+ weak_factory_.GetWeakPtr(),
+ callback));
}
}
+void CloudPrintProxyService::GetCloudPrintProxyPrinters(
+ const PrintersCallback& callback) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ ServiceProcessControl* process_control = GetServiceProcessControl();
+ DCHECK(process_control->IsConnected());
+ process_control->GetPrinters(callback);
+}
+
void CloudPrintProxyService::RefreshCloudPrintProxyStatus() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
ServiceProcessControl* process_control = GetServiceProcessControl();
DCHECK(process_control->IsConnected());
- ServiceProcessControl::CloudPrintProxyInfoHandler callback =
- base::Bind(&CloudPrintProxyService::ProxyInfoCallback,
- base::Unretained(this));
- // GetCloudPrintProxyInfo takes ownership of callback.
+ ServiceProcessControl::CloudPrintProxyInfoCallback callback = base::Bind(
+ &CloudPrintProxyService::ProxyInfoCallback, base::Unretained(this));
process_control->GetCloudPrintProxyInfo(callback);
}

Powered by Google App Engine
This is Rietveld 408576698