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

Side by Side Diff: chrome/browser/extensions/api/document_scan/document_scan_interface_chromeos_unittest.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
(Empty)
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
3 // found in the LICENSE file.
4 #include "chrome/browser/extensions/api/document_scan/document_scan_interface_ch romeos.h"
5
6 #include <string>
7 #include <vector>
8
9 #include "base/bind.h"
10 #include "chromeos/dbus/mock_lorgnette_manager_client.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "third_party/cros_system_api/dbus/service_constants.h"
13
14 using testing::_;
15
16 namespace extensions {
17
18 namespace api {
19
20 // Tests of networking_private_crypto support for Networking Private API.
21 class DocumentScanInterfaceChromeosTest : public testing::Test {
22 public:
23 DocumentScanInterfaceChromeosTest()
24 : client_(new chromeos::MockLorgnetteManagerClient()) {}
25 ~DocumentScanInterfaceChromeosTest() override {}
26
27 void SetUp() override {
28 scan_interface_.lorgnette_manager_client_ = client_.get();
29 }
30
31 MOCK_METHOD2(
32 OnListScannersResultReceived,
33 void(const std::vector<DocumentScanInterface::ScannerDescription>&
34 scanners,
35 const std::string& error));
36
37 MOCK_METHOD3(OnScanCompleted, void(const std::string& scanned_image,
38 const std::string& mime_type,
39 const std::string& error));
40
41 protected:
42 DocumentScanInterfaceChromeos scan_interface_;
43 scoped_ptr<chromeos::MockLorgnetteManagerClient> client_;
44 };
45
46 ACTION_P2(InvokeListScannersCallback, scanner_list, error) {
47 ::std::tr1::get<0>(args).Run(scanner_list, error);
48 }
49
50 ACTION_P2(InvokeScanCallback, succeeded, image_data) {
51 ::std::tr1::get<2>(args).Run(succeeded, image_data);
52 }
53
54 MATCHER_P5(IsScannerDescription, name, manufacturer, model, type, mime, "") {
55 return
56 arg.name == name &&
57 arg.manufacturer == manufacturer &&
58 arg.model == model &&
59 arg.scanner_type == type &&
60 arg.image_mime_type == mime;
61 }
62
63 MATCHER_P2(IsScannerProperties, mode, resolution, "") {
64 return arg.mode == mode && arg.resolution_dpi == resolution;
65 }
66
67 TEST_F(DocumentScanInterfaceChromeosTest, ListScanners) {
68 chromeos::LorgnetteManagerClient::ScannerTable scanners;
69 const char kScannerName[] = "Monet";
70 chromeos::LorgnetteManagerClient::ScannerTableEntry entry;
71 const char kScannerManufacturer[] = "Jacques-Louis David";
72 entry[lorgnette::kScannerPropertyManufacturer] = kScannerManufacturer;
73 const char kScannerModel[] = "Le Havre";
74 entry[lorgnette::kScannerPropertyModel] = kScannerModel;
75 const char kScannerType[] = "Impressionism";
76 entry[lorgnette::kScannerPropertyType] = kScannerType;
77 scanners[kScannerName] = entry;
78 EXPECT_CALL(*client_, ListScanners(_))
79 .WillOnce(InvokeListScannersCallback(true, scanners));
80 EXPECT_CALL(*this, OnListScannersResultReceived(
81 testing::ElementsAre(
82 IsScannerDescription(kScannerName,
83 kScannerManufacturer,
84 kScannerModel,
85 kScannerType,
86 "image/png")), ""));
87 scan_interface_.ListScanners(base::Bind(
88 &DocumentScanInterfaceChromeosTest::OnListScannersResultReceived,
89 base::Unretained(this)));
90 }
91
92 TEST_F(DocumentScanInterfaceChromeosTest, ScanFailure) {
93 const char kScannerName[] = "Monet";
94 const int kResolution = 4096;
95 EXPECT_CALL(*client_, ScanImageToString(
96 kScannerName,
97 IsScannerProperties(
98 lorgnette::kScanPropertyModeColor,
99 kResolution),
100 _)).WillOnce(InvokeScanCallback(false, ""));
101 EXPECT_CALL(*this, OnScanCompleted("data:image/png;base64,",
102 "image/png",
103 "Image scan failed"));
104 scan_interface_.Scan(
105 kScannerName,
106 DocumentScanInterface::kScanModeColor,
107 kResolution,
108 base::Bind(
109 &DocumentScanInterfaceChromeosTest::OnScanCompleted,
110 base::Unretained(this)));
111 }
112
113 TEST_F(DocumentScanInterfaceChromeosTest, ScanSuccess) {
114 const char kScannerName[] = "Monet";
115 const int kResolution = 4096;
116 EXPECT_CALL(*client_,
117 ScanImageToString(
118 kScannerName,
119 IsScannerProperties(
120 lorgnette::kScanPropertyModeColor,
121 kResolution),
122 _))
123 .WillOnce(InvokeScanCallback(true, std::string("PrettyPicture")));
124
125 // Data URL plus base64 representation of "PrettyPicture".
126 const char kExpectedImageData[] =
127 "data:image/png;base64,UHJldHR5UGljdHVyZQ==";
128
129 EXPECT_CALL(*this, OnScanCompleted(kExpectedImageData, "image/png", ""));
130 scan_interface_.Scan(
131 kScannerName,
132 DocumentScanInterface::kScanModeColor,
133 kResolution,
134 base::Bind(
135 &DocumentScanInterfaceChromeosTest::OnScanCompleted,
136 base::Unretained(this)));
137 }
138
139 } // namespace api
140
141 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698