| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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/search_metadata.h" | 5 #include "chrome/browser/chromeos/drive/search_metadata.h" |
| 6 | 6 |
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
| 8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
| 9 #include "base/threading/sequenced_worker_pool.h" | 9 #include "base/threading/sequenced_worker_pool.h" |
| 10 #include "chrome/browser/chromeos/drive/drive_cache.h" | 10 #include "chrome/browser/chromeos/drive/drive_cache.h" |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 SearchMetadata(resource_metadata_.get(), | 122 SearchMetadata(resource_metadata_.get(), |
| 123 "SubDirectory File 1.txt", | 123 "SubDirectory File 1.txt", |
| 124 kDefaultAtMostNumMatches, | 124 kDefaultAtMostNumMatches, |
| 125 SEARCH_METADATA_ALL, | 125 SEARCH_METADATA_ALL, |
| 126 google_apis::test_util::CreateCopyResultCallback( | 126 google_apis::test_util::CreateCopyResultCallback( |
| 127 &error, &result)); | 127 &error, &result)); |
| 128 google_apis::test_util::RunBlockingPoolTask(); | 128 google_apis::test_util::RunBlockingPoolTask(); |
| 129 EXPECT_EQ(DRIVE_FILE_OK, error); | 129 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 130 ASSERT_EQ(1U, result->size()); | 130 ASSERT_EQ(1U, result->size()); |
| 131 EXPECT_EQ(base::FilePath::FromUTF8Unsafe( | 131 EXPECT_EQ(base::FilePath::FromUTF8Unsafe( |
| 132 "drive/Directory 1/SubDirectory File 1.txt"), result->at(0).path); | 132 "drive/root/Directory 1/SubDirectory File 1.txt"), result->at(0).path); |
| 133 } | 133 } |
| 134 | 134 |
| 135 // This test checks if |FindAndHighlight| does case-insensitive search. | 135 // This test checks if |FindAndHighlight| does case-insensitive search. |
| 136 // Tricker test cases for |FindAndHighlight| can be found below. | 136 // Tricker test cases for |FindAndHighlight| can be found below. |
| 137 TEST_F(SearchMetadataTest, SearchMetadata_CaseInsensitiveSearch) { | 137 TEST_F(SearchMetadataTest, SearchMetadata_CaseInsensitiveSearch) { |
| 138 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 138 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 139 scoped_ptr<MetadataSearchResultVector> result; | 139 scoped_ptr<MetadataSearchResultVector> result; |
| 140 | 140 |
| 141 // The query is all in lower case. | 141 // The query is all in lower case. |
| 142 SearchMetadata(resource_metadata_.get(), | 142 SearchMetadata(resource_metadata_.get(), |
| 143 "subdirectory file 1.txt", | 143 "subdirectory file 1.txt", |
| 144 kDefaultAtMostNumMatches, | 144 kDefaultAtMostNumMatches, |
| 145 SEARCH_METADATA_ALL, | 145 SEARCH_METADATA_ALL, |
| 146 google_apis::test_util::CreateCopyResultCallback( | 146 google_apis::test_util::CreateCopyResultCallback( |
| 147 &error, &result)); | 147 &error, &result)); |
| 148 google_apis::test_util::RunBlockingPoolTask(); | 148 google_apis::test_util::RunBlockingPoolTask(); |
| 149 EXPECT_EQ(DRIVE_FILE_OK, error); | 149 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 150 ASSERT_EQ(1U, result->size()); | 150 ASSERT_EQ(1U, result->size()); |
| 151 EXPECT_EQ(base::FilePath::FromUTF8Unsafe( | 151 EXPECT_EQ(base::FilePath::FromUTF8Unsafe( |
| 152 "drive/Directory 1/SubDirectory File 1.txt"), result->at(0).path); | 152 "drive/root/Directory 1/SubDirectory File 1.txt"), result->at(0).path); |
| 153 } | 153 } |
| 154 | 154 |
| 155 TEST_F(SearchMetadataTest, SearchMetadata_RegularFiles) { | 155 TEST_F(SearchMetadataTest, SearchMetadata_RegularFiles) { |
| 156 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 156 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 157 scoped_ptr<MetadataSearchResultVector> result; | 157 scoped_ptr<MetadataSearchResultVector> result; |
| 158 | 158 |
| 159 SearchMetadata(resource_metadata_.get(), | 159 SearchMetadata(resource_metadata_.get(), |
| 160 "SubDir", | 160 "SubDir", |
| 161 kDefaultAtMostNumMatches, | 161 kDefaultAtMostNumMatches, |
| 162 SEARCH_METADATA_ALL, | 162 SEARCH_METADATA_ALL, |
| 163 google_apis::test_util::CreateCopyResultCallback( | 163 google_apis::test_util::CreateCopyResultCallback( |
| 164 &error, &result)); | 164 &error, &result)); |
| 165 google_apis::test_util::RunBlockingPoolTask(); | 165 google_apis::test_util::RunBlockingPoolTask(); |
| 166 EXPECT_EQ(DRIVE_FILE_OK, error); | 166 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 167 ASSERT_EQ(2U, result->size()); | 167 ASSERT_EQ(2U, result->size()); |
| 168 | 168 |
| 169 // The results should be sorted by the last accessed time. | 169 // The results should be sorted by the last accessed time. |
| 170 EXPECT_EQ(12970368000000000LL, | 170 EXPECT_EQ(12970368000000000LL, |
| 171 result->at(0).entry_proto.file_info().last_accessed()); | 171 result->at(0).entry_proto.file_info().last_accessed()); |
| 172 EXPECT_EQ(12969849600000000LL, | 172 EXPECT_EQ(12969849600000000LL, |
| 173 result->at(1).entry_proto.file_info().last_accessed()); | 173 result->at(1).entry_proto.file_info().last_accessed()); |
| 174 | 174 |
| 175 // All base names should contain "File". | 175 // All base names should contain "File". |
| 176 EXPECT_EQ( | 176 EXPECT_EQ( |
| 177 base::FilePath::FromUTF8Unsafe( | 177 base::FilePath::FromUTF8Unsafe( |
| 178 "drive/Slash \xE2\x88\x95 in directory/Slash SubDir File.txt"), | 178 "drive/root/Slash \xE2\x88\x95 in directory/Slash SubDir File.txt"), |
| 179 result->at(0).path); | 179 result->at(0).path); |
| 180 EXPECT_EQ(base::FilePath::FromUTF8Unsafe( | 180 EXPECT_EQ(base::FilePath::FromUTF8Unsafe( |
| 181 "drive/Directory 1/SubDirectory File 1.txt"), result->at(1).path); | 181 "drive/root/Directory 1/SubDirectory File 1.txt"), result->at(1).path); |
| 182 } | 182 } |
| 183 | 183 |
| 184 TEST_F(SearchMetadataTest, SearchMetadata_AtMostOneFile) { | 184 TEST_F(SearchMetadataTest, SearchMetadata_AtMostOneFile) { |
| 185 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 185 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 186 scoped_ptr<MetadataSearchResultVector> result; | 186 scoped_ptr<MetadataSearchResultVector> result; |
| 187 | 187 |
| 188 // There are two files matching "SubDir" but only one file should be | 188 // There are two files matching "SubDir" but only one file should be |
| 189 // returned. | 189 // returned. |
| 190 SearchMetadata(resource_metadata_.get(), | 190 SearchMetadata(resource_metadata_.get(), |
| 191 "SubDir", | 191 "SubDir", |
| 192 1, // at_most_num_matches | 192 1, // at_most_num_matches |
| 193 SEARCH_METADATA_ALL, | 193 SEARCH_METADATA_ALL, |
| 194 google_apis::test_util::CreateCopyResultCallback( | 194 google_apis::test_util::CreateCopyResultCallback( |
| 195 &error, &result)); | 195 &error, &result)); |
| 196 google_apis::test_util::RunBlockingPoolTask(); | 196 google_apis::test_util::RunBlockingPoolTask(); |
| 197 EXPECT_EQ(DRIVE_FILE_OK, error); | 197 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 198 ASSERT_EQ(1U, result->size()); | 198 ASSERT_EQ(1U, result->size()); |
| 199 EXPECT_EQ( | 199 EXPECT_EQ( |
| 200 base::FilePath::FromUTF8Unsafe( | 200 base::FilePath::FromUTF8Unsafe( |
| 201 "drive/Slash \xE2\x88\x95 in directory/Slash SubDir File.txt"), | 201 "drive/root/Slash \xE2\x88\x95 in directory/Slash SubDir File.txt"), |
| 202 result->at(0).path); | 202 result->at(0).path); |
| 203 } | 203 } |
| 204 | 204 |
| 205 TEST_F(SearchMetadataTest, SearchMetadata_Directory) { | 205 TEST_F(SearchMetadataTest, SearchMetadata_Directory) { |
| 206 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 206 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 207 scoped_ptr<MetadataSearchResultVector> result; | 207 scoped_ptr<MetadataSearchResultVector> result; |
| 208 | 208 |
| 209 SearchMetadata(resource_metadata_.get(), | 209 SearchMetadata(resource_metadata_.get(), |
| 210 "Directory 1", | 210 "Directory 1", |
| 211 kDefaultAtMostNumMatches, | 211 kDefaultAtMostNumMatches, |
| 212 SEARCH_METADATA_ALL, | 212 SEARCH_METADATA_ALL, |
| 213 google_apis::test_util::CreateCopyResultCallback( | 213 google_apis::test_util::CreateCopyResultCallback( |
| 214 &error, &result)); | 214 &error, &result)); |
| 215 google_apis::test_util::RunBlockingPoolTask(); | 215 google_apis::test_util::RunBlockingPoolTask(); |
| 216 EXPECT_EQ(DRIVE_FILE_OK, error); | 216 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 217 ASSERT_EQ(1U, result->size()); | 217 ASSERT_EQ(1U, result->size()); |
| 218 EXPECT_EQ( | 218 EXPECT_EQ( |
| 219 base::FilePath::FromUTF8Unsafe("drive/Directory 1"), | 219 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1"), |
| 220 result->at(0).path); | 220 result->at(0).path); |
| 221 } | 221 } |
| 222 | 222 |
| 223 TEST_F(SearchMetadataTest, SearchMetadata_HostedDocument) { | 223 TEST_F(SearchMetadataTest, SearchMetadata_HostedDocument) { |
| 224 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 224 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 225 scoped_ptr<MetadataSearchResultVector> result; | 225 scoped_ptr<MetadataSearchResultVector> result; |
| 226 | 226 |
| 227 SearchMetadata(resource_metadata_.get(), | 227 SearchMetadata(resource_metadata_.get(), |
| 228 "Document", | 228 "Document", |
| 229 kDefaultAtMostNumMatches, | 229 kDefaultAtMostNumMatches, |
| 230 SEARCH_METADATA_ALL, | 230 SEARCH_METADATA_ALL, |
| 231 google_apis::test_util::CreateCopyResultCallback( | 231 google_apis::test_util::CreateCopyResultCallback( |
| 232 &error, &result)); | 232 &error, &result)); |
| 233 google_apis::test_util::RunBlockingPoolTask(); | 233 google_apis::test_util::RunBlockingPoolTask(); |
| 234 EXPECT_EQ(DRIVE_FILE_OK, error); | 234 EXPECT_EQ(DRIVE_FILE_OK, error); |
| 235 ASSERT_EQ(1U, result->size()); | 235 ASSERT_EQ(1U, result->size()); |
| 236 | 236 |
| 237 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/Document 1.gdoc"), | 237 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/root/Document 1.gdoc"), |
| 238 result->at(0).path); | 238 result->at(0).path); |
| 239 } | 239 } |
| 240 | 240 |
| 241 TEST_F(SearchMetadataTest, SearchMetadata_ExcludeHostedDocument) { | 241 TEST_F(SearchMetadataTest, SearchMetadata_ExcludeHostedDocument) { |
| 242 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 242 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
| 243 scoped_ptr<MetadataSearchResultVector> result; | 243 scoped_ptr<MetadataSearchResultVector> result; |
| 244 | 244 |
| 245 SearchMetadata(resource_metadata_.get(), | 245 SearchMetadata(resource_metadata_.get(), |
| 246 "Document", | 246 "Document", |
| 247 kDefaultAtMostNumMatches, | 247 kDefaultAtMostNumMatches, |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 315 EXPECT_EQ("<<b>hello</b>>", highlighted_text); | 315 EXPECT_EQ("<<b>hello</b>>", highlighted_text); |
| 316 } | 316 } |
| 317 | 317 |
| 318 TEST(SearchMetadataSimpleTest, FindAndHighlight_MoreMetaChars) { | 318 TEST(SearchMetadataSimpleTest, FindAndHighlight_MoreMetaChars) { |
| 319 std::string highlighted_text; | 319 std::string highlighted_text; |
| 320 EXPECT_TRUE(FindAndHighlight("a&b&c&d", "b&c", &highlighted_text)); | 320 EXPECT_TRUE(FindAndHighlight("a&b&c&d", "b&c", &highlighted_text)); |
| 321 EXPECT_EQ("a&<b>b&c</b>&d", highlighted_text); | 321 EXPECT_EQ("a&<b>b&c</b>&d", highlighted_text); |
| 322 } | 322 } |
| 323 | 323 |
| 324 } // namespace drive | 324 } // namespace drive |
| OLD | NEW |