OLD | NEW |
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 #include "chrome/browser/extensions/api/document_scan/document_scan_api.h" | 4 |
| 5 #include "extensions/browser/api/document_scan/document_scan_api.h" |
5 | 6 |
6 #include <string> | 7 #include <string> |
7 #include <vector> | 8 #include <vector> |
8 | 9 |
9 #include "chrome/browser/extensions/api/document_scan/mock_document_scan_interfa
ce.h" | 10 #include "extensions/browser/api/document_scan/mock_document_scan_interface.h" |
10 #include "chrome/browser/extensions/extension_api_unittest.h" | 11 #include "extensions/browser/api_test_utils.h" |
11 #include "chrome/browser/extensions/extension_function_test_utils.h" | 12 #include "extensions/browser/api_unittest.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
13 | 14 |
14 using testing::_; | 15 using testing::_; |
15 | 16 |
16 namespace extensions { | 17 namespace extensions { |
17 | 18 |
18 namespace api { | 19 namespace core_api { |
19 | 20 |
20 // Tests of networking_private_crypto support for Networking Private API. | 21 // Tests of networking_private_crypto support for Networking Private API. |
21 class DocumentScanScanFunctionTest : public ExtensionApiUnittest { | 22 class DocumentScanScanFunctionTest : public ApiUnitTest { |
22 public: | 23 public: |
23 DocumentScanScanFunctionTest() | 24 DocumentScanScanFunctionTest() |
24 : function_(new DocumentScanScanFunction()), | 25 : function_(new DocumentScanScanFunction()), |
25 document_scan_interface_(new MockDocumentScanInterface()) {} | 26 document_scan_interface_(new MockDocumentScanInterface()) {} |
26 ~DocumentScanScanFunctionTest() override {} | 27 ~DocumentScanScanFunctionTest() override {} |
27 | 28 |
28 void SetUp() override { | 29 void SetUp() override { |
29 ExtensionApiUnittest::SetUp(); | 30 ApiUnitTest::SetUp(); |
30 // Passes ownership. | 31 // Passes ownership. |
31 function_->document_scan_interface_.reset(document_scan_interface_); | 32 function_->document_scan_interface_.reset(document_scan_interface_); |
32 } | 33 } |
33 | 34 |
34 protected: | 35 protected: |
35 std::string RunFunctionAndReturnError(const std::string& args) { | 36 std::string RunFunctionAndReturnError(const std::string& args) { |
36 function_->set_extension(extension()); | 37 function_->set_extension(extension()); |
37 std::string error = | 38 std::string error = api_test_utils::RunFunctionAndReturnError( |
38 extension_function_test_utils::RunFunctionAndReturnError( | 39 function_, args, browser_context(), api_test_utils::NONE); |
39 function_, args, browser(), | |
40 extension_function_test_utils::NONE); | |
41 return error; | 40 return error; |
42 } | 41 } |
43 | 42 |
44 DocumentScanScanFunction* function_; | 43 DocumentScanScanFunction* function_; |
45 MockDocumentScanInterface* document_scan_interface_; // Owned by function_. | 44 MockDocumentScanInterface* document_scan_interface_; // Owned by function_. |
46 }; | 45 }; |
47 | 46 |
48 ACTION_P2(InvokeListScannersCallback, scanner_list, error) { | 47 ACTION_P2(InvokeListScannersCallback, scanner_list, error) { |
49 ::std::tr1::get<0>(args).Run(scanner_list, error); | 48 ::std::tr1::get<0>(args).Run(scanner_list, error); |
50 } | 49 } |
51 | 50 |
52 ACTION_P3(InvokeScanCallback, data, mime_type, error) { | 51 ACTION_P3(InvokeScanCallback, data, mime_type, error) { |
53 ::std::tr1::get<3>(args).Run(data, mime_type, error); | 52 ::std::tr1::get<3>(args).Run(data, mime_type, error); |
54 } | 53 } |
55 | 54 |
56 TEST_F(DocumentScanScanFunctionTest, GestureRequired) { | 55 TEST_F(DocumentScanScanFunctionTest, GestureRequired) { |
57 EXPECT_EQ("User gesture required to perform scan", | 56 EXPECT_EQ("User gesture required to perform scan", |
58 RunFunctionAndReturnError("[{}]")); | 57 RunFunctionAndReturnError("[{}]")); |
59 } | 58 } |
60 | 59 |
61 TEST_F(DocumentScanScanFunctionTest, NoScanners) { | 60 TEST_F(DocumentScanScanFunctionTest, NoScanners) { |
62 function_->set_user_gesture(true); | 61 function_->set_user_gesture(true); |
63 EXPECT_CALL(*document_scan_interface_, ListScanners(_)) | 62 EXPECT_CALL(*document_scan_interface_, ListScanners(_)) |
64 .WillOnce(InvokeListScannersCallback( | 63 .WillOnce(InvokeListScannersCallback( |
65 std::vector<DocumentScanInterface::ScannerDescription>(), | 64 std::vector<DocumentScanInterface::ScannerDescription>(), "")); |
66 "")); | 65 EXPECT_EQ("Scanner not available", RunFunctionAndReturnError("[{}]")); |
67 EXPECT_EQ("Scanner not available", | |
68 RunFunctionAndReturnError("[{}]")); | |
69 } | 66 } |
70 | 67 |
71 TEST_F(DocumentScanScanFunctionTest, NoMatchingScanners) { | 68 TEST_F(DocumentScanScanFunctionTest, NoMatchingScanners) { |
72 function_->set_user_gesture(true); | 69 function_->set_user_gesture(true); |
73 std::vector<DocumentScanInterface::ScannerDescription> scanner_list; | 70 std::vector<DocumentScanInterface::ScannerDescription> scanner_list; |
74 DocumentScanInterface::ScannerDescription scanner; | 71 DocumentScanInterface::ScannerDescription scanner; |
75 scanner.image_mime_type = "img/fresco"; | 72 scanner.image_mime_type = "img/fresco"; |
76 scanner_list.push_back(scanner); | 73 scanner_list.push_back(scanner); |
77 EXPECT_CALL(*document_scan_interface_, ListScanners(_)) | 74 EXPECT_CALL(*document_scan_interface_, ListScanners(_)) |
78 .WillOnce(InvokeListScannersCallback(scanner_list, "")); | 75 .WillOnce(InvokeListScannersCallback(scanner_list, "")); |
(...skipping 23 matching lines...) Expand all Loading... |
102 TEST_F(DocumentScanScanFunctionTest, Success) { | 99 TEST_F(DocumentScanScanFunctionTest, Success) { |
103 std::vector<DocumentScanInterface::ScannerDescription> scanner_list; | 100 std::vector<DocumentScanInterface::ScannerDescription> scanner_list; |
104 scanner_list.push_back(DocumentScanInterface::ScannerDescription()); | 101 scanner_list.push_back(DocumentScanInterface::ScannerDescription()); |
105 EXPECT_CALL(*document_scan_interface_, ListScanners(_)) | 102 EXPECT_CALL(*document_scan_interface_, ListScanners(_)) |
106 .WillOnce(InvokeListScannersCallback(scanner_list, "")); | 103 .WillOnce(InvokeListScannersCallback(scanner_list, "")); |
107 const char kScanData[] = "A beautiful picture"; | 104 const char kScanData[] = "A beautiful picture"; |
108 const char kMimeType[] = "img/encaustic"; | 105 const char kMimeType[] = "img/encaustic"; |
109 EXPECT_CALL(*document_scan_interface_, Scan(_, _, _, _)) | 106 EXPECT_CALL(*document_scan_interface_, Scan(_, _, _, _)) |
110 .WillOnce(InvokeScanCallback(kScanData, kMimeType, "")); | 107 .WillOnce(InvokeScanCallback(kScanData, kMimeType, "")); |
111 function_->set_user_gesture(true); | 108 function_->set_user_gesture(true); |
112 scoped_ptr<base::DictionaryValue> result(RunFunctionAndReturnDictionary( | 109 scoped_ptr<base::DictionaryValue> result( |
113 function_, "[{}]")); | 110 RunFunctionAndReturnDictionary(function_, "[{}]")); |
114 ASSERT_NE(nullptr, result.get()); | 111 ASSERT_NE(nullptr, result.get()); |
115 document_scan::ScanResults scan_results; | 112 document_scan::ScanResults scan_results; |
116 EXPECT_TRUE(document_scan::ScanResults::Populate(*result, &scan_results)); | 113 EXPECT_TRUE(document_scan::ScanResults::Populate(*result, &scan_results)); |
117 EXPECT_THAT(scan_results.data_urls, testing::ElementsAre(kScanData)); | 114 EXPECT_THAT(scan_results.data_urls, testing::ElementsAre(kScanData)); |
118 EXPECT_EQ(kMimeType, scan_results.mime_type); | 115 EXPECT_EQ(kMimeType, scan_results.mime_type); |
119 } | 116 } |
120 | 117 |
121 } // namespace api | 118 } // namespace core_api |
122 | 119 |
123 } // namespace extensions | 120 } // namespace extensions |
OLD | NEW |