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

Side by Side Diff: extensions/browser/api/document_scan/document_scan_interface_chromeos.cc

Issue 899523004: Move chrome.documentScan API to extensions/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated DEPS Created 5 years, 10 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/document_scan/document_scan_interface_ch romeos.h" 5 #include "extensions/browser/api/document_scan/document_scan_interface_chromeos. h"
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "chromeos/dbus/dbus_thread_manager.h" 9 #include "chromeos/dbus/dbus_thread_manager.h"
10 #include "chromeos/dbus/lorgnette_manager_client.h" 10 #include "chromeos/dbus/lorgnette_manager_client.h"
11 #include "third_party/cros_system_api/dbus/service_constants.h" 11 #include "third_party/cros_system_api/dbus/service_constants.h"
12 12
13 namespace { 13 namespace {
14 14
15 const char kImageScanFailedError[] = "Image scan failed"; 15 const char kImageScanFailedError[] = "Image scan failed";
16 const char kScannerImageMimeTypePng[] = "image/png"; 16 const char kScannerImageMimeTypePng[] = "image/png";
17 const char kPngImageDataUrlPrefix[] = "data:image/png;base64,"; 17 const char kPngImageDataUrlPrefix[] = "data:image/png;base64,";
18 18
19 } // namespace 19 } // namespace
20 20
21 namespace extensions { 21 namespace extensions {
22 22
23 namespace api { 23 namespace core_api {
24 24
25 DocumentScanInterfaceChromeos::DocumentScanInterfaceChromeos() 25 DocumentScanInterfaceChromeos::DocumentScanInterfaceChromeos()
26 : lorgnette_manager_client_(nullptr) {} 26 : lorgnette_manager_client_(nullptr) {
27 }
27 28
28 DocumentScanInterfaceChromeos::~DocumentScanInterfaceChromeos() {} 29 DocumentScanInterfaceChromeos::~DocumentScanInterfaceChromeos() {
30 }
29 31
30 void DocumentScanInterfaceChromeos::ListScanners( 32 void DocumentScanInterfaceChromeos::ListScanners(
31 const ListScannersResultsCallback& callback) { 33 const ListScannersResultsCallback& callback) {
32 GetLorgnetteManagerClient()->ListScanners(base::Bind( 34 GetLorgnetteManagerClient()->ListScanners(
33 &DocumentScanInterfaceChromeos::OnScannerListReceived, 35 base::Bind(&DocumentScanInterfaceChromeos::OnScannerListReceived,
34 base::Unretained(this), 36 base::Unretained(this), callback));
35 callback));
36 } 37 }
37 38
38 void DocumentScanInterfaceChromeos::OnScannerListReceived( 39 void DocumentScanInterfaceChromeos::OnScannerListReceived(
39 const ListScannersResultsCallback& callback, 40 const ListScannersResultsCallback& callback,
40 bool succeeded, 41 bool succeeded,
41 const chromeos::LorgnetteManagerClient::ScannerTable &scanners) { 42 const chromeos::LorgnetteManagerClient::ScannerTable& scanners) {
42 std::vector<ScannerDescription> scanner_descriptions; 43 std::vector<ScannerDescription> scanner_descriptions;
43 for (const auto& scanner : scanners) { 44 for (const auto& scanner : scanners) {
44 ScannerDescription description; 45 ScannerDescription description;
45 description.name = scanner.first; 46 description.name = scanner.first;
46 const auto &entry = scanner.second; 47 const auto& entry = scanner.second;
47 auto info_it = entry.find(lorgnette::kScannerPropertyManufacturer); 48 auto info_it = entry.find(lorgnette::kScannerPropertyManufacturer);
48 if (info_it != entry.end()) { 49 if (info_it != entry.end()) {
49 description.manufacturer = info_it->second; 50 description.manufacturer = info_it->second;
50 } 51 }
51 info_it = entry.find(lorgnette::kScannerPropertyModel); 52 info_it = entry.find(lorgnette::kScannerPropertyModel);
52 if (info_it != entry.end()) { 53 if (info_it != entry.end()) {
53 description.model = info_it->second; 54 description.model = info_it->second;
54 } 55 }
55 info_it = entry.find(lorgnette::kScannerPropertyType); 56 info_it = entry.find(lorgnette::kScannerPropertyType);
56 if (info_it != entry.end()) { 57 if (info_it != entry.end()) {
(...skipping 26 matching lines...) Expand all
83 break; 84 break;
84 } 85 }
85 86
86 if (resolution_dpi != 0) { 87 if (resolution_dpi != 0) {
87 properties.resolution_dpi = resolution_dpi; 88 properties.resolution_dpi = resolution_dpi;
88 } 89 }
89 90
90 GetLorgnetteManagerClient()->ScanImageToString( 91 GetLorgnetteManagerClient()->ScanImageToString(
91 scanner_name, properties, 92 scanner_name, properties,
92 base::Bind(&DocumentScanInterfaceChromeos::OnScanCompleted, 93 base::Bind(&DocumentScanInterfaceChromeos::OnScanCompleted,
93 base::Unretained(this), 94 base::Unretained(this), callback));
94 callback));
95 } 95 }
96 96
97 void DocumentScanInterfaceChromeos::OnScanCompleted( 97 void DocumentScanInterfaceChromeos::OnScanCompleted(
98 const ScanResultsCallback &callback, 98 const ScanResultsCallback& callback,
99 bool succeeded, 99 bool succeeded,
100 const std::string& image_data) { 100 const std::string& image_data) {
101 VLOG(1) << "ScanImage returns " << succeeded; 101 VLOG(1) << "ScanImage returns " << succeeded;
102 std::string error_string; 102 std::string error_string;
103 if (!succeeded) { 103 if (!succeeded) {
104 error_string = kImageScanFailedError; 104 error_string = kImageScanFailedError;
105 } 105 }
106 106
107 std::string image_base64; 107 std::string image_base64;
108 base::Base64Encode(image_data, &image_base64); 108 base::Base64Encode(image_data, &image_base64);
109 std::string image_url(std::string(kPngImageDataUrlPrefix) + image_base64); 109 std::string image_url(std::string(kPngImageDataUrlPrefix) + image_base64);
110 110
111 callback.Run(image_url, kScannerImageMimeTypePng, error_string); 111 callback.Run(image_url, kScannerImageMimeTypePng, error_string);
112 } 112 }
113 113
114 chromeos::LorgnetteManagerClient* 114 chromeos::LorgnetteManagerClient*
115 DocumentScanInterfaceChromeos::GetLorgnetteManagerClient() { 115 DocumentScanInterfaceChromeos::GetLorgnetteManagerClient() {
116 if (!lorgnette_manager_client_) { 116 if (!lorgnette_manager_client_) {
117 lorgnette_manager_client_ = 117 lorgnette_manager_client_ =
118 chromeos::DBusThreadManager::Get()->GetLorgnetteManagerClient(); 118 chromeos::DBusThreadManager::Get()->GetLorgnetteManagerClient();
119 CHECK(lorgnette_manager_client_); 119 CHECK(lorgnette_manager_client_);
120 } 120 }
121 return lorgnette_manager_client_; 121 return lorgnette_manager_client_;
122 } 122 }
123 123
124 // static 124 // static
125 DocumentScanInterface *DocumentScanInterface::CreateInstance() { 125 DocumentScanInterface* DocumentScanInterface::CreateInstance() {
126 return new DocumentScanInterfaceChromeos(); 126 return new DocumentScanInterfaceChromeos();
127 } 127 }
128 128
129 } // namespace api 129 } // namespace core_api
130 130
131 } // namespace extensions 131 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698