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