| 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);
|
| }
|
|
|
|
|