| OLD | NEW | 
|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/chromeos/drive/file_system/search_operation.h" | 5 #include "chrome/browser/chromeos/drive/file_system/search_operation.h" | 
| 6 | 6 | 
|  | 7 #include "base/callback_helpers.h" | 
|  | 8 #include "chrome/browser/chromeos/drive/change_list_loader.h" | 
| 7 #include "chrome/browser/chromeos/drive/file_system/operation_test_base.h" | 9 #include "chrome/browser/chromeos/drive/file_system/operation_test_base.h" | 
| 8 #include "chrome/browser/drive/fake_drive_service.h" | 10 #include "chrome/browser/drive/fake_drive_service.h" | 
| 9 #include "google_apis/drive/gdata_wapi_parser.h" | 11 #include "google_apis/drive/gdata_wapi_parser.h" | 
| 10 #include "google_apis/drive/test_util.h" | 12 #include "google_apis/drive/test_util.h" | 
| 11 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" | 
| 12 | 14 | 
| 13 namespace drive { | 15 namespace drive { | 
| 14 namespace file_system { | 16 namespace file_system { | 
| 15 | 17 | 
| 16 typedef OperationTestBase SearchOperationTest; | 18 typedef OperationTestBase SearchOperationTest; | 
| 17 | 19 | 
| 18 TEST_F(SearchOperationTest, ContentSearch) { | 20 TEST_F(SearchOperationTest, ContentSearch) { | 
| 19   SearchOperation operation(blocking_task_runner(), scheduler(), metadata()); | 21   SearchOperation operation(blocking_task_runner(), scheduler(), metadata(), | 
|  | 22                             loader_controller()); | 
| 20 | 23 | 
| 21   std::set<std::string> expected_results; | 24   std::set<std::string> expected_results; | 
| 22   expected_results.insert( | 25   expected_results.insert( | 
| 23       "drive/root/Directory 1/Sub Directory Folder/Sub Sub Directory Folder"); | 26       "drive/root/Directory 1/Sub Directory Folder/Sub Sub Directory Folder"); | 
| 24   expected_results.insert("drive/root/Directory 1/Sub Directory Folder"); | 27   expected_results.insert("drive/root/Directory 1/Sub Directory Folder"); | 
| 25   expected_results.insert("drive/root/Directory 1/SubDirectory File 1.txt"); | 28   expected_results.insert("drive/root/Directory 1/SubDirectory File 1.txt"); | 
| 26   expected_results.insert("drive/root/Directory 1"); | 29   expected_results.insert("drive/root/Directory 1"); | 
| 27   expected_results.insert("drive/root/Directory 2 excludeDir-test"); | 30   expected_results.insert("drive/root/Directory 2 excludeDir-test"); | 
| 28 | 31 | 
| 29   FileError error = FILE_ERROR_FAILED; | 32   FileError error = FILE_ERROR_FAILED; | 
| 30   GURL next_link; | 33   GURL next_link; | 
| 31   scoped_ptr<std::vector<SearchResultInfo> > results; | 34   scoped_ptr<std::vector<SearchResultInfo> > results; | 
| 32 | 35 | 
| 33   operation.Search("Directory", GURL(), | 36   operation.Search("Directory", GURL(), | 
| 34                    google_apis::test_util::CreateCopyResultCallback( | 37                    google_apis::test_util::CreateCopyResultCallback( | 
| 35                        &error, &next_link, &results)); | 38                        &error, &next_link, &results)); | 
| 36   test_util::RunBlockingPoolTask(); | 39   test_util::RunBlockingPoolTask(); | 
| 37 | 40 | 
| 38   EXPECT_EQ(FILE_ERROR_OK, error); | 41   EXPECT_EQ(FILE_ERROR_OK, error); | 
| 39   EXPECT_TRUE(next_link.is_empty()); | 42   EXPECT_TRUE(next_link.is_empty()); | 
| 40   EXPECT_EQ(expected_results.size(), results->size()); | 43   EXPECT_EQ(expected_results.size(), results->size()); | 
| 41   for (size_t i = 0; i < results->size(); i++) { | 44   for (size_t i = 0; i < results->size(); i++) { | 
| 42     EXPECT_TRUE(expected_results.count(results->at(i).path.AsUTF8Unsafe())) | 45     EXPECT_TRUE(expected_results.count(results->at(i).path.AsUTF8Unsafe())) | 
| 43         << results->at(i).path.AsUTF8Unsafe(); | 46         << results->at(i).path.AsUTF8Unsafe(); | 
| 44   } | 47   } | 
| 45 } | 48 } | 
| 46 | 49 | 
| 47 TEST_F(SearchOperationTest, ContentSearchWithNewEntry) { | 50 TEST_F(SearchOperationTest, ContentSearchWithNewEntry) { | 
| 48   SearchOperation operation(blocking_task_runner(), scheduler(), metadata()); | 51   SearchOperation operation(blocking_task_runner(), scheduler(), metadata(), | 
|  | 52                             loader_controller()); | 
| 49 | 53 | 
| 50   // Create a new directory in the drive service. | 54   // Create a new directory in the drive service. | 
| 51   google_apis::GDataErrorCode gdata_error = google_apis::GDATA_OTHER_ERROR; | 55   google_apis::GDataErrorCode gdata_error = google_apis::GDATA_OTHER_ERROR; | 
| 52   scoped_ptr<google_apis::ResourceEntry> resource_entry; | 56   scoped_ptr<google_apis::ResourceEntry> resource_entry; | 
| 53   fake_service()->AddNewDirectory( | 57   fake_service()->AddNewDirectory( | 
| 54       fake_service()->GetRootResourceId(), | 58       fake_service()->GetRootResourceId(), | 
| 55       "New Directory 1!", | 59       "New Directory 1!", | 
| 56       google_apis::test_util::CreateCopyResultCallback( | 60       google_apis::test_util::CreateCopyResultCallback( | 
| 57           &gdata_error, &resource_entry)); | 61           &gdata_error, &resource_entry)); | 
| 58   test_util::RunBlockingPoolTask(); | 62   test_util::RunBlockingPoolTask(); | 
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 98   EXPECT_EQ(FILE_ERROR_OK, error); | 102   EXPECT_EQ(FILE_ERROR_OK, error); | 
| 99   EXPECT_TRUE(next_link.is_empty()); | 103   EXPECT_TRUE(next_link.is_empty()); | 
| 100   ASSERT_EQ(expected_results.size(), results->size()); | 104   ASSERT_EQ(expected_results.size(), results->size()); | 
| 101   for (size_t i = 0; i < results->size(); i++) { | 105   for (size_t i = 0; i < results->size(); i++) { | 
| 102     EXPECT_TRUE(expected_results.count(results->at(i).path.AsUTF8Unsafe())) | 106     EXPECT_TRUE(expected_results.count(results->at(i).path.AsUTF8Unsafe())) | 
| 103         << results->at(i).path.AsUTF8Unsafe(); | 107         << results->at(i).path.AsUTF8Unsafe(); | 
| 104   } | 108   } | 
| 105 } | 109 } | 
| 106 | 110 | 
| 107 TEST_F(SearchOperationTest, ContentSearchEmptyResult) { | 111 TEST_F(SearchOperationTest, ContentSearchEmptyResult) { | 
| 108   SearchOperation operation(blocking_task_runner(), scheduler(), metadata()); | 112   SearchOperation operation(blocking_task_runner(), scheduler(), metadata(), | 
|  | 113                             loader_controller()); | 
| 109 | 114 | 
| 110   FileError error = FILE_ERROR_FAILED; | 115   FileError error = FILE_ERROR_FAILED; | 
| 111   GURL next_link; | 116   GURL next_link; | 
| 112   scoped_ptr<std::vector<SearchResultInfo> > results; | 117   scoped_ptr<std::vector<SearchResultInfo> > results; | 
| 113 | 118 | 
| 114   operation.Search("\"no-match query\"", GURL(), | 119   operation.Search("\"no-match query\"", GURL(), | 
| 115                    google_apis::test_util::CreateCopyResultCallback( | 120                    google_apis::test_util::CreateCopyResultCallback( | 
| 116                        &error, &next_link, &results)); | 121                        &error, &next_link, &results)); | 
| 117   test_util::RunBlockingPoolTask(); | 122   test_util::RunBlockingPoolTask(); | 
| 118 | 123 | 
| 119   EXPECT_EQ(FILE_ERROR_OK, error); | 124   EXPECT_EQ(FILE_ERROR_OK, error); | 
| 120   EXPECT_TRUE(next_link.is_empty()); | 125   EXPECT_TRUE(next_link.is_empty()); | 
| 121   EXPECT_EQ(0U, results->size()); | 126   EXPECT_EQ(0U, results->size()); | 
| 122 } | 127 } | 
| 123 | 128 | 
|  | 129 TEST_F(SearchOperationTest, Lock) { | 
|  | 130   SearchOperation operation(blocking_task_runner(), scheduler(), metadata(), | 
|  | 131                             loader_controller()); | 
|  | 132 | 
|  | 133   // Lock. | 
|  | 134   scoped_ptr<base::ScopedClosureRunner> lock = loader_controller()->GetLock(); | 
|  | 135 | 
|  | 136   // Search does not return the result as long as lock is alive. | 
|  | 137   FileError error = FILE_ERROR_FAILED; | 
|  | 138   GURL next_link; | 
|  | 139   scoped_ptr<std::vector<SearchResultInfo> > results; | 
|  | 140 | 
|  | 141   operation.Search("\"Directory 1\"", GURL(), | 
|  | 142                    google_apis::test_util::CreateCopyResultCallback( | 
|  | 143                        &error, &next_link, &results)); | 
|  | 144   test_util::RunBlockingPoolTask(); | 
|  | 145   EXPECT_EQ(FILE_ERROR_FAILED, error); | 
|  | 146   EXPECT_FALSE(results); | 
|  | 147 | 
|  | 148   // Unlock, this should resume the pending search. | 
|  | 149   lock.reset(); | 
|  | 150   test_util::RunBlockingPoolTask(); | 
|  | 151   EXPECT_EQ(FILE_ERROR_OK, error); | 
|  | 152   ASSERT_TRUE(results); | 
|  | 153   EXPECT_EQ(1u, results->size()); | 
|  | 154 } | 
|  | 155 | 
| 124 }  // namespace file_system | 156 }  // namespace file_system | 
| 125 }  // namespace drive | 157 }  // namespace drive | 
| OLD | NEW | 
|---|