OLD | NEW |
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/extensions/api/cloud_print_private/cloud_print_private_
api.h" | 5 #include "chrome/browser/extensions/api/cloud_print_private/cloud_print_private_
api.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
| 9 #include "base/command_line.h" |
| 10 #include "base/file_util.h" |
| 11 #include "base/json/json_reader.h" |
9 #include "base/threading/sequenced_worker_pool.h" | 12 #include "base/threading/sequenced_worker_pool.h" |
10 #include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h" | 13 #include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h" |
11 #include "chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory.
h" | 14 #include "chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory.
h" |
| 15 #include "chrome/common/chrome_switches.h" |
12 #include "chrome/common/extensions/api/cloud_print_private.h" | 16 #include "chrome/common/extensions/api/cloud_print_private.h" |
13 #include "google_apis/google_api_keys.h" | 17 #include "google_apis/google_api_keys.h" |
14 #include "net/base/net_util.h" | 18 #include "net/base/net_util.h" |
15 #include "printing/backend/print_backend.h" | 19 #include "printing/backend/print_backend.h" |
16 | 20 |
17 | 21 |
18 | 22 |
19 namespace extensions { | 23 namespace extensions { |
20 | 24 |
21 CloudPrintTestsDelegate* CloudPrintTestsDelegate::instance_ = NULL; | 25 CloudPrintTestsDelegate* CloudPrintTestsDelegate::instance_ = NULL; |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 CloudPrintPrivateGetPrintersFunction::~CloudPrintPrivateGetPrintersFunction() { | 88 CloudPrintPrivateGetPrintersFunction::~CloudPrintPrivateGetPrintersFunction() { |
85 } | 89 } |
86 | 90 |
87 void CloudPrintPrivateGetPrintersFunction::ReturnResult( | 91 void CloudPrintPrivateGetPrintersFunction::ReturnResult( |
88 const base::ListValue* printers) { | 92 const base::ListValue* printers) { |
89 SetResult(printers->DeepCopy()); | 93 SetResult(printers->DeepCopy()); |
90 SendResponse(true); | 94 SendResponse(true); |
91 } | 95 } |
92 | 96 |
93 void CloudPrintPrivateGetPrintersFunction::CollectPrinters() { | 97 void CloudPrintPrivateGetPrintersFunction::CollectPrinters() { |
94 scoped_ptr<base::ListValue> result(new base::ListValue()); | 98 scoped_ptr<base::ListValue> result; |
95 if (CloudPrintTestsDelegate::instance()) { | 99 |
96 std::vector<std::string> printers = | 100 CommandLine* command_line = CommandLine::ForCurrentProcess(); |
97 CloudPrintTestsDelegate::instance()->GetPrinters(); | 101 base::FilePath list_path( |
98 for (size_t i = 0; i < printers.size(); ++i) | 102 command_line->GetSwitchValuePath(switches::kCloudPrintAddPrinters)); |
99 result->Append(Value::CreateStringValue(printers[i])); | 103 if (!list_path.empty()) { |
| 104 std::string printers_json; |
| 105 file_util::ReadFileToString(list_path, &printers_json); |
| 106 scoped_ptr<Value> value(base::JSONReader::Read(printers_json)); |
| 107 base::ListValue* list = NULL; |
| 108 if (value) |
| 109 value->GetAsList(&list); |
| 110 if (list) { |
| 111 result.reset(list); |
| 112 value.release(); // Holds the same object as result. |
| 113 } |
100 } else { | 114 } else { |
101 printing::PrinterList printers; | 115 result.reset(new base::ListValue()); |
102 scoped_refptr<printing::PrintBackend> backend( | 116 if (CloudPrintTestsDelegate::instance()) { |
103 printing::PrintBackend::CreateInstance(NULL)); | 117 std::vector<std::string> printers = |
104 if (backend) | 118 CloudPrintTestsDelegate::instance()->GetPrinters(); |
105 backend->EnumeratePrinters(&printers); | 119 for (size_t i = 0; i < printers.size(); ++i) |
106 for (size_t i = 0; i < printers.size(); ++i) | 120 result->Append(Value::CreateStringValue(printers[i])); |
107 result->Append(Value::CreateStringValue(printers[i].printer_name)); | 121 } else { |
| 122 printing::PrinterList printers; |
| 123 scoped_refptr<printing::PrintBackend> backend( |
| 124 printing::PrintBackend::CreateInstance(NULL)); |
| 125 if (backend) |
| 126 backend->EnumeratePrinters(&printers); |
| 127 for (size_t i = 0; i < printers.size(); ++i) |
| 128 result->Append(Value::CreateStringValue(printers[i].printer_name)); |
| 129 } |
108 } | 130 } |
109 content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, | 131 content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, |
110 base::Bind(&CloudPrintPrivateGetPrintersFunction::ReturnResult, this, | 132 base::Bind(&CloudPrintPrivateGetPrintersFunction::ReturnResult, this, |
111 base::Owned(result.release()))); | 133 base::Owned(result.release()))); |
112 } | 134 } |
113 | 135 |
114 | 136 |
115 bool CloudPrintPrivateGetPrintersFunction::RunImpl() { | 137 bool CloudPrintPrivateGetPrintersFunction::RunImpl() { |
116 content::BrowserThread::GetBlockingPool()->PostTask(FROM_HERE, | 138 content::BrowserThread::GetBlockingPool()->PostTask(FROM_HERE, |
117 base::Bind(&CloudPrintPrivateGetPrintersFunction::CollectPrinters, this)); | 139 base::Bind(&CloudPrintPrivateGetPrintersFunction::CollectPrinters, this)); |
(...skipping 10 matching lines...) Expand all Loading... |
128 bool CloudPrintPrivateGetClientIdFunction::RunImpl() { | 150 bool CloudPrintPrivateGetClientIdFunction::RunImpl() { |
129 SetResult(Value::CreateStringValue( | 151 SetResult(Value::CreateStringValue( |
130 CloudPrintTestsDelegate::instance() ? | 152 CloudPrintTestsDelegate::instance() ? |
131 CloudPrintTestsDelegate::instance()->GetClientId() : | 153 CloudPrintTestsDelegate::instance()->GetClientId() : |
132 google_apis::GetOAuth2ClientID(google_apis::CLIENT_CLOUD_PRINT))); | 154 google_apis::GetOAuth2ClientID(google_apis::CLIENT_CLOUD_PRINT))); |
133 SendResponse(true); | 155 SendResponse(true); |
134 return true; | 156 return true; |
135 } | 157 } |
136 | 158 |
137 } // namespace extensions | 159 } // namespace extensions |
OLD | NEW |