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

Side by Side Diff: chrome/browser/printing/cloud_print/cloud_print_proxy_service.cc

Issue 12769009: Pass list of printers to chrome using file. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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
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/browser/printing/cloud_print/cloud_print_proxy_service.h" 5 #include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h"
6 6
7 #include <stack> 7 #include <stack>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/bind_helpers.h" 11 #include "base/bind_helpers.h"
12 #include "base/command_line.h"
13 #include "base/file_util.h"
14 #include "base/json/json_reader.h"
12 #include "base/message_loop.h" 15 #include "base/message_loop.h"
13 #include "base/prefs/pref_service.h" 16 #include "base/prefs/pref_service.h"
14 #include "base/utf_string_conversions.h" 17 #include "base/utf_string_conversions.h"
15 #include "chrome/browser/browser_process.h" 18 #include "chrome/browser/browser_process.h"
16 #include "chrome/browser/lifetime/application_lifetime.h" 19 #include "chrome/browser/lifetime/application_lifetime.h"
17 #include "chrome/browser/notifications/desktop_notification_service.h" 20 #include "chrome/browser/notifications/desktop_notification_service.h"
18 #include "chrome/browser/notifications/notification.h" 21 #include "chrome/browser/notifications/notification.h"
19 #include "chrome/browser/notifications/notification_ui_manager.h" 22 #include "chrome/browser/notifications/notification_ui_manager.h"
20 #include "chrome/browser/printing/cloud_print/cloud_print_setup_flow.h" 23 #include "chrome/browser/printing/cloud_print/cloud_print_setup_flow.h"
21 #include "chrome/browser/profiles/profile.h" 24 #include "chrome/browser/profiles/profile.h"
22 #include "chrome/browser/service/service_process_control.h" 25 #include "chrome/browser/service/service_process_control.h"
23 #include "chrome/common/chrome_notification_types.h" 26 #include "chrome/common/chrome_notification_types.h"
27 #include "chrome/common/chrome_switches.h"
24 #include "chrome/common/cloud_print/cloud_print_proxy_info.h" 28 #include "chrome/common/cloud_print/cloud_print_proxy_info.h"
25 #include "chrome/common/pref_names.h" 29 #include "chrome/common/pref_names.h"
26 #include "chrome/common/service_messages.h" 30 #include "chrome/common/service_messages.h"
27 #include "content/public/browser/browser_thread.h" 31 #include "content/public/browser/browser_thread.h"
28 #include "grit/generated_resources.h" 32 #include "grit/generated_resources.h"
33 #include "printing/backend/print_backend.h"
29 #include "ui/base/l10n/l10n_util.h" 34 #include "ui/base/l10n/l10n_util.h"
30 35
31 using content::BrowserThread; 36 using content::BrowserThread;
32 37
33 CloudPrintProxyService::CloudPrintProxyService(Profile* profile) 38 CloudPrintProxyService::CloudPrintProxyService(Profile* profile)
34 : profile_(profile), 39 : profile_(profile),
35 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)), 40 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)),
36 enforcing_connector_policy_(false) { 41 enforcing_connector_policy_(false) {
37 } 42 }
38 43
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 } 126 }
122 } 127 }
123 return true; 128 return true;
124 } 129 }
125 130
126 void CloudPrintProxyService::OnCloudPrintSetupClosed() { 131 void CloudPrintProxyService::OnCloudPrintSetupClosed() {
127 MessageLoop::current()->PostTask(FROM_HERE, 132 MessageLoop::current()->PostTask(FROM_HERE,
128 base::Bind(&chrome::EndKeepAlive)); 133 base::Bind(&chrome::EndKeepAlive));
129 } 134 }
130 135
136 void CloudPrintProxyService::GetPrintersAvalibleForRegistration(
137 std::vector<std::string>* printers) {
138 base::FilePath list_path(
139 CommandLine::ForCurrentProcess()->GetSwitchValuePath(
140 switches::kCloudPrintConnectoEnablePrinters));
141 if (!list_path.empty()) {
142 std::string printers_json;
143 file_util::ReadFileToString(list_path, &printers_json);
144 scoped_ptr<Value> value(base::JSONReader::Read(printers_json));
145 base::ListValue* list = NULL;
146 if (value && value->GetAsList(&list) && list) {
147 for (size_t i = 0; i < list->GetSize(); ++i) {
148 std::string printer;
149 if (list->GetString(i, &printer))
150 printers->push_back(printer);
151 }
152 }
153 } else {
154 printing::PrinterList printer_list;
155 scoped_refptr<printing::PrintBackend> backend(
156 printing::PrintBackend::CreateInstance(NULL));
157 if (backend)
158 backend->EnumeratePrinters(&printer_list);
159 for (size_t i = 0; i < printer_list.size(); ++i)
160 printers->push_back(printer_list[i].printer_name);
161 }
162 }
163
131 void CloudPrintProxyService::RefreshCloudPrintProxyStatus() { 164 void CloudPrintProxyService::RefreshCloudPrintProxyStatus() {
132 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 165 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
133 ServiceProcessControl* process_control = GetServiceProcessControl(); 166 ServiceProcessControl* process_control = GetServiceProcessControl();
134 DCHECK(process_control->IsConnected()); 167 DCHECK(process_control->IsConnected());
135 ServiceProcessControl::CloudPrintProxyInfoHandler callback = 168 ServiceProcessControl::CloudPrintProxyInfoHandler callback =
136 base::Bind(&CloudPrintProxyService::ProxyInfoCallback, 169 base::Bind(&CloudPrintProxyService::ProxyInfoCallback,
137 base::Unretained(this)); 170 base::Unretained(this));
138 // GetCloudPrintProxyInfo takes ownership of callback. 171 // GetCloudPrintProxyInfo takes ownership of callback.
139 process_control->GetCloudPrintProxyInfo(callback); 172 process_control->GetCloudPrintProxyInfo(callback);
140 } 173 }
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 } 215 }
183 216
184 bool CloudPrintProxyService::InvokeServiceTask(const base::Closure& task) { 217 bool CloudPrintProxyService::InvokeServiceTask(const base::Closure& task) {
185 GetServiceProcessControl()->Launch(task, base::Closure()); 218 GetServiceProcessControl()->Launch(task, base::Closure());
186 return true; 219 return true;
187 } 220 }
188 221
189 ServiceProcessControl* CloudPrintProxyService::GetServiceProcessControl() { 222 ServiceProcessControl* CloudPrintProxyService::GetServiceProcessControl() {
190 return ServiceProcessControl::GetInstance(); 223 return ServiceProcessControl::GetInstance();
191 } 224 }
OLDNEW
« no previous file with comments | « chrome/browser/printing/cloud_print/cloud_print_proxy_service.h ('k') | chrome/common/chrome_switches.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698