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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 scoped_ptr<DriveFileSystem> file_system_; | 100 scoped_ptr<DriveFileSystem> file_system_; |
101 }; | 101 }; |
102 | 102 |
103 TEST_F(SearchMetadataTest, SearchMetadata_ZeroMatches) { | 103 TEST_F(SearchMetadataTest, SearchMetadata_ZeroMatches) { |
104 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 104 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
105 scoped_ptr<MetadataSearchResultVector> result; | 105 scoped_ptr<MetadataSearchResultVector> result; |
106 | 106 |
107 SearchMetadata(file_system_.get(), | 107 SearchMetadata(file_system_.get(), |
108 "NonExistent", | 108 "NonExistent", |
109 kDefaultAtMostNumMatches, | 109 kDefaultAtMostNumMatches, |
110 base::Bind(&test_util::CopyResultsFromSearchMetadataCallback, | 110 google_apis::test_util::CreateCopyResultCallback( |
111 &error, | 111 &error, &result)); |
112 &result)); | |
113 | |
114 google_apis::test_util::RunBlockingPoolTask(); | 112 google_apis::test_util::RunBlockingPoolTask(); |
115 EXPECT_EQ(DRIVE_FILE_OK, error); | 113 EXPECT_EQ(DRIVE_FILE_OK, error); |
116 ASSERT_EQ(0U, result->size()); | 114 ASSERT_EQ(0U, result->size()); |
117 } | 115 } |
118 | 116 |
119 TEST_F(SearchMetadataTest, SearchMetadata_RegularFile) { | 117 TEST_F(SearchMetadataTest, SearchMetadata_RegularFile) { |
120 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 118 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
121 scoped_ptr<MetadataSearchResultVector> result; | 119 scoped_ptr<MetadataSearchResultVector> result; |
122 | 120 |
123 SearchMetadata(file_system_.get(), | 121 SearchMetadata(file_system_.get(), |
124 "SubDirectory File 1.txt", | 122 "SubDirectory File 1.txt", |
125 kDefaultAtMostNumMatches, | 123 kDefaultAtMostNumMatches, |
126 base::Bind(&test_util::CopyResultsFromSearchMetadataCallback, | 124 google_apis::test_util::CreateCopyResultCallback( |
127 &error, | 125 &error, &result)); |
128 &result)); | |
129 | |
130 google_apis::test_util::RunBlockingPoolTask(); | 126 google_apis::test_util::RunBlockingPoolTask(); |
131 EXPECT_EQ(DRIVE_FILE_OK, error); | 127 EXPECT_EQ(DRIVE_FILE_OK, error); |
132 ASSERT_EQ(1U, result->size()); | 128 ASSERT_EQ(1U, result->size()); |
133 EXPECT_EQ(base::FilePath::FromUTF8Unsafe( | 129 EXPECT_EQ(base::FilePath::FromUTF8Unsafe( |
134 "drive/Directory 1/SubDirectory File 1.txt"), result->at(0).path); | 130 "drive/Directory 1/SubDirectory File 1.txt"), result->at(0).path); |
135 } | 131 } |
136 | 132 |
137 // This test checks if |FindAndHighlight| does case-insensitive search. | 133 // This test checks if |FindAndHighlight| does case-insensitive search. |
138 // Tricker test cases for |FindAndHighlight| can be found below. | 134 // Tricker test cases for |FindAndHighlight| can be found below. |
139 TEST_F(SearchMetadataTest, SearchMetadata_CaseInsensitiveSearch) { | 135 TEST_F(SearchMetadataTest, SearchMetadata_CaseInsensitiveSearch) { |
140 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 136 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
141 scoped_ptr<MetadataSearchResultVector> result; | 137 scoped_ptr<MetadataSearchResultVector> result; |
142 | 138 |
143 // The query is all in lower case. | 139 // The query is all in lower case. |
144 SearchMetadata(file_system_.get(), | 140 SearchMetadata(file_system_.get(), |
145 "subdirectory file 1.txt", | 141 "subdirectory file 1.txt", |
146 kDefaultAtMostNumMatches, | 142 kDefaultAtMostNumMatches, |
147 base::Bind(&test_util::CopyResultsFromSearchMetadataCallback, | 143 google_apis::test_util::CreateCopyResultCallback( |
148 &error, | 144 &error, &result)); |
149 &result)); | |
150 | |
151 google_apis::test_util::RunBlockingPoolTask(); | 145 google_apis::test_util::RunBlockingPoolTask(); |
152 EXPECT_EQ(DRIVE_FILE_OK, error); | 146 EXPECT_EQ(DRIVE_FILE_OK, error); |
153 ASSERT_EQ(1U, result->size()); | 147 ASSERT_EQ(1U, result->size()); |
154 EXPECT_EQ(base::FilePath::FromUTF8Unsafe( | 148 EXPECT_EQ(base::FilePath::FromUTF8Unsafe( |
155 "drive/Directory 1/SubDirectory File 1.txt"), result->at(0).path); | 149 "drive/Directory 1/SubDirectory File 1.txt"), result->at(0).path); |
156 } | 150 } |
157 | 151 |
158 TEST_F(SearchMetadataTest, SearchMetadata_RegularFiles) { | 152 TEST_F(SearchMetadataTest, SearchMetadata_RegularFiles) { |
159 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 153 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
160 scoped_ptr<MetadataSearchResultVector> result; | 154 scoped_ptr<MetadataSearchResultVector> result; |
161 | 155 |
162 SearchMetadata(file_system_.get(), | 156 SearchMetadata(file_system_.get(), |
163 "SubDir", | 157 "SubDir", |
164 kDefaultAtMostNumMatches, | 158 kDefaultAtMostNumMatches, |
165 base::Bind(&test_util::CopyResultsFromSearchMetadataCallback, | 159 google_apis::test_util::CreateCopyResultCallback( |
166 &error, | 160 &error, &result)); |
167 &result)); | |
168 | |
169 google_apis::test_util::RunBlockingPoolTask(); | 161 google_apis::test_util::RunBlockingPoolTask(); |
170 EXPECT_EQ(DRIVE_FILE_OK, error); | 162 EXPECT_EQ(DRIVE_FILE_OK, error); |
171 ASSERT_EQ(2U, result->size()); | 163 ASSERT_EQ(2U, result->size()); |
172 | 164 |
173 // The results should be sorted by the last accessed time. | 165 // The results should be sorted by the last accessed time. |
174 EXPECT_EQ(12970368000000000LL, | 166 EXPECT_EQ(12970368000000000LL, |
175 result->at(0).entry_proto.file_info().last_accessed()); | 167 result->at(0).entry_proto.file_info().last_accessed()); |
176 EXPECT_EQ(12969849600000000LL, | 168 EXPECT_EQ(12969849600000000LL, |
177 result->at(1).entry_proto.file_info().last_accessed()); | 169 result->at(1).entry_proto.file_info().last_accessed()); |
178 | 170 |
179 // All base names should contain "File". | 171 // All base names should contain "File". |
180 EXPECT_EQ( | 172 EXPECT_EQ( |
181 base::FilePath::FromUTF8Unsafe( | 173 base::FilePath::FromUTF8Unsafe( |
182 "drive/Slash \xE2\x88\x95 in directory/Slash SubDir File.txt"), | 174 "drive/Slash \xE2\x88\x95 in directory/Slash SubDir File.txt"), |
183 result->at(0).path); | 175 result->at(0).path); |
184 EXPECT_EQ(base::FilePath::FromUTF8Unsafe( | 176 EXPECT_EQ(base::FilePath::FromUTF8Unsafe( |
185 "drive/Directory 1/SubDirectory File 1.txt"), result->at(1).path); | 177 "drive/Directory 1/SubDirectory File 1.txt"), result->at(1).path); |
186 } | 178 } |
187 | 179 |
188 TEST_F(SearchMetadataTest, SearchMetadata_AtMostOneFile) { | 180 TEST_F(SearchMetadataTest, SearchMetadata_AtMostOneFile) { |
189 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 181 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
190 scoped_ptr<MetadataSearchResultVector> result; | 182 scoped_ptr<MetadataSearchResultVector> result; |
191 | 183 |
192 // There are two files matching "SubDir" but only one file should be | 184 // There are two files matching "SubDir" but only one file should be |
193 // returned. | 185 // returned. |
194 SearchMetadata(file_system_.get(), | 186 SearchMetadata(file_system_.get(), |
195 "SubDir", | 187 "SubDir", |
196 1, // at_most_num_matches | 188 1, // at_most_num_matches |
197 base::Bind(&test_util::CopyResultsFromSearchMetadataCallback, | 189 google_apis::test_util::CreateCopyResultCallback( |
198 &error, | 190 &error, &result)); |
199 &result)); | |
200 | |
201 google_apis::test_util::RunBlockingPoolTask(); | 191 google_apis::test_util::RunBlockingPoolTask(); |
202 EXPECT_EQ(DRIVE_FILE_OK, error); | 192 EXPECT_EQ(DRIVE_FILE_OK, error); |
203 ASSERT_EQ(1U, result->size()); | 193 ASSERT_EQ(1U, result->size()); |
204 EXPECT_EQ( | 194 EXPECT_EQ( |
205 base::FilePath::FromUTF8Unsafe( | 195 base::FilePath::FromUTF8Unsafe( |
206 "drive/Slash \xE2\x88\x95 in directory/Slash SubDir File.txt"), | 196 "drive/Slash \xE2\x88\x95 in directory/Slash SubDir File.txt"), |
207 result->at(0).path); | 197 result->at(0).path); |
208 } | 198 } |
209 | 199 |
210 TEST_F(SearchMetadataTest, SearchMetadata_Directory) { | 200 TEST_F(SearchMetadataTest, SearchMetadata_Directory) { |
211 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 201 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
212 scoped_ptr<MetadataSearchResultVector> result; | 202 scoped_ptr<MetadataSearchResultVector> result; |
213 | 203 |
214 SearchMetadata(file_system_.get(), | 204 SearchMetadata(file_system_.get(), |
215 "Directory 1", | 205 "Directory 1", |
216 kDefaultAtMostNumMatches, | 206 kDefaultAtMostNumMatches, |
217 base::Bind(&test_util::CopyResultsFromSearchMetadataCallback, | 207 google_apis::test_util::CreateCopyResultCallback( |
218 &error, | 208 &error, &result)); |
219 &result)); | |
220 | |
221 google_apis::test_util::RunBlockingPoolTask(); | 209 google_apis::test_util::RunBlockingPoolTask(); |
222 EXPECT_EQ(DRIVE_FILE_OK, error); | 210 EXPECT_EQ(DRIVE_FILE_OK, error); |
223 ASSERT_EQ(1U, result->size()); | 211 ASSERT_EQ(1U, result->size()); |
224 EXPECT_EQ( | 212 EXPECT_EQ( |
225 base::FilePath::FromUTF8Unsafe("drive/Directory 1"), | 213 base::FilePath::FromUTF8Unsafe("drive/Directory 1"), |
226 result->at(0).path); | 214 result->at(0).path); |
227 } | 215 } |
228 | 216 |
229 TEST_F(SearchMetadataTest, SearchMetadata_HostedDocument) { | 217 TEST_F(SearchMetadataTest, SearchMetadata_HostedDocument) { |
230 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 218 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
231 scoped_ptr<MetadataSearchResultVector> result; | 219 scoped_ptr<MetadataSearchResultVector> result; |
232 | 220 |
233 SearchMetadata(file_system_.get(), | 221 SearchMetadata(file_system_.get(), |
234 "Document", | 222 "Document", |
235 kDefaultAtMostNumMatches, | 223 kDefaultAtMostNumMatches, |
236 base::Bind(&test_util::CopyResultsFromSearchMetadataCallback, | 224 google_apis::test_util::CreateCopyResultCallback( |
237 &error, | 225 &error, &result)); |
238 &result)); | |
239 | |
240 google_apis::test_util::RunBlockingPoolTask(); | 226 google_apis::test_util::RunBlockingPoolTask(); |
241 EXPECT_EQ(DRIVE_FILE_OK, error); | 227 EXPECT_EQ(DRIVE_FILE_OK, error); |
242 ASSERT_EQ(1U, result->size()); | 228 ASSERT_EQ(1U, result->size()); |
243 | 229 |
244 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/Document 1.gdoc"), | 230 EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/Document 1.gdoc"), |
245 result->at(0).path); | 231 result->at(0).path); |
246 } | 232 } |
247 | 233 |
248 TEST_F(SearchMetadataTest, SearchMetadata_HideHostedDocument) { | 234 TEST_F(SearchMetadataTest, SearchMetadata_HideHostedDocument) { |
249 // This test is similar to HostedDocument test above, but change a | 235 // This test is similar to HostedDocument test above, but change a |
250 // preference to hide hosted documents from the result. | 236 // preference to hide hosted documents from the result. |
251 PrefService* pref_service = profile_->GetPrefs(); | 237 PrefService* pref_service = profile_->GetPrefs(); |
252 pref_service->SetBoolean(prefs::kDisableDriveHostedFiles, true); | 238 pref_service->SetBoolean(prefs::kDisableDriveHostedFiles, true); |
253 | 239 |
254 DriveFileError error = DRIVE_FILE_ERROR_FAILED; | 240 DriveFileError error = DRIVE_FILE_ERROR_FAILED; |
255 scoped_ptr<MetadataSearchResultVector> result; | 241 scoped_ptr<MetadataSearchResultVector> result; |
256 | 242 |
257 SearchMetadata(file_system_.get(), | 243 SearchMetadata(file_system_.get(), |
258 "Document", | 244 "Document", |
259 kDefaultAtMostNumMatches, | 245 kDefaultAtMostNumMatches, |
260 base::Bind(&test_util::CopyResultsFromSearchMetadataCallback, | 246 google_apis::test_util::CreateCopyResultCallback( |
261 &error, | 247 &error, &result)); |
262 &result)); | |
263 | |
264 google_apis::test_util::RunBlockingPoolTask(); | 248 google_apis::test_util::RunBlockingPoolTask(); |
265 EXPECT_EQ(DRIVE_FILE_OK, error); | 249 EXPECT_EQ(DRIVE_FILE_OK, error); |
266 ASSERT_EQ(0U, result->size()); | 250 ASSERT_EQ(0U, result->size()); |
267 } | 251 } |
268 | 252 |
269 TEST(SearchMetadataSimpleTest, FindAndHighlight_ZeroMatches) { | 253 TEST(SearchMetadataSimpleTest, FindAndHighlight_ZeroMatches) { |
270 std::string highlighted_text; | 254 std::string highlighted_text; |
271 EXPECT_FALSE(FindAndHighlight("text", "query", &highlighted_text)); | 255 EXPECT_FALSE(FindAndHighlight("text", "query", &highlighted_text)); |
272 } | 256 } |
273 | 257 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
328 EXPECT_EQ("<<b>hello</b>>", highlighted_text); | 312 EXPECT_EQ("<<b>hello</b>>", highlighted_text); |
329 } | 313 } |
330 | 314 |
331 TEST(SearchMetadataSimpleTest, FindAndHighlight_MoreMetaChars) { | 315 TEST(SearchMetadataSimpleTest, FindAndHighlight_MoreMetaChars) { |
332 std::string highlighted_text; | 316 std::string highlighted_text; |
333 EXPECT_TRUE(FindAndHighlight("a&b&c&d", "b&c", &highlighted_text)); | 317 EXPECT_TRUE(FindAndHighlight("a&b&c&d", "b&c", &highlighted_text)); |
334 EXPECT_EQ("a&<b>b&c</b>&d", highlighted_text); | 318 EXPECT_EQ("a&<b>b&c</b>&d", highlighted_text); |
335 } | 319 } |
336 | 320 |
337 } // namespace drive | 321 } // namespace drive |
OLD | NEW |