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 | 4 |
5 #include "chrome/browser/chromeos/file_system_provider/provided_file_system.h" | 5 #include "chrome/browser/chromeos/file_system_provider/provided_file_system.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/files/file.h" | 10 #include "base/files/file.h" |
11 #include "base/memory/ref_counted.h" | 11 #include "base/memory/ref_counted.h" |
12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
13 #include "base/memory/scoped_vector.h" | 13 #include "base/memory/scoped_vector.h" |
14 #include "base/run_loop.h" | 14 #include "base/run_loop.h" |
15 #include "base/thread_task_runner_handle.h" | 15 #include "base/thread_task_runner_handle.h" |
16 #include "base/values.h" | 16 #include "base/values.h" |
17 #include "chrome/browser/chromeos/file_system_provider/mount_path_util.h" | 17 #include "chrome/browser/chromeos/file_system_provider/mount_path_util.h" |
18 #include "chrome/browser/chromeos/file_system_provider/notification_manager.h" | 18 #include "chrome/browser/chromeos/file_system_provider/notification_manager.h" |
| 19 #include "chrome/browser/chromeos/file_system_provider/observed_entry.h" |
19 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_info
.h" | 20 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_info
.h" |
20 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_inte
rface.h" | 21 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_inte
rface.h" |
21 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_obse
rver.h" | 22 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_obse
rver.h" |
22 #include "chrome/browser/chromeos/file_system_provider/request_manager.h" | 23 #include "chrome/browser/chromeos/file_system_provider/request_manager.h" |
23 #include "chrome/common/extensions/api/file_system_provider.h" | 24 #include "chrome/common/extensions/api/file_system_provider.h" |
24 #include "chrome/common/extensions/api/file_system_provider_internal.h" | 25 #include "chrome/common/extensions/api/file_system_provider_internal.h" |
25 #include "chrome/test/base/testing_profile.h" | 26 #include "chrome/test/base/testing_profile.h" |
26 #include "content/public/test/test_browser_thread_bundle.h" | 27 #include "content/public/test/test_browser_thread_bundle.h" |
27 #include "extensions/browser/event_router.h" | 28 #include "extensions/browser/event_router.h" |
28 #include "testing/gtest/include/gtest/gtest.h" | 29 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 ProvidedFileSystemObserver::ChangeType change_type, | 128 ProvidedFileSystemObserver::ChangeType change_type, |
128 const ProvidedFileSystemObserver::ChildChanges& child_changes, | 129 const ProvidedFileSystemObserver::ChildChanges& child_changes, |
129 const base::Closure& callback) override { | 130 const base::Closure& callback) override { |
130 EXPECT_EQ(kFileSystemId, file_system_info.file_system_id()); | 131 EXPECT_EQ(kFileSystemId, file_system_info.file_system_id()); |
131 change_events_.push_back(new ChangeEvent(change_type, child_changes)); | 132 change_events_.push_back(new ChangeEvent(change_type, child_changes)); |
132 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); | 133 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); |
133 } | 134 } |
134 | 135 |
135 virtual void OnObservedEntryTagUpdated( | 136 virtual void OnObservedEntryTagUpdated( |
136 const ProvidedFileSystemInfo& file_system_info, | 137 const ProvidedFileSystemInfo& file_system_info, |
137 const base::FilePath& observed_path) override { | 138 const base::FilePath& observed_path, |
| 139 const std::string& tag) override { |
138 EXPECT_EQ(kFileSystemId, file_system_info.file_system_id()); | 140 EXPECT_EQ(kFileSystemId, file_system_info.file_system_id()); |
139 ++tag_updated_counter_; | 141 ++tag_updated_counter_; |
140 } | 142 } |
141 | 143 |
142 virtual void OnObservedEntryListChanged( | 144 virtual void OnObservedEntryListChanged( |
143 const ProvidedFileSystemInfo& file_system_info) override { | 145 const ProvidedFileSystemInfo& file_system_info, |
| 146 const ObservedEntries& observed_entries) override { |
144 EXPECT_EQ(kFileSystemId, file_system_info.file_system_id()); | 147 EXPECT_EQ(kFileSystemId, file_system_info.file_system_id()); |
145 ++list_changed_counter_; | 148 ++list_changed_counter_; |
146 } | 149 } |
147 | 150 |
148 int list_changed_counter() const { return list_changed_counter_; } | 151 int list_changed_counter() const { return list_changed_counter_; } |
149 const ScopedVector<ChangeEvent>& change_events() const { | 152 const ScopedVector<ChangeEvent>& change_events() const { |
150 return change_events_; | 153 return change_events_; |
151 } | 154 } |
152 int tag_updated_counter() const { return tag_updated_counter_; } | 155 int tag_updated_counter() const { return tag_updated_counter_; } |
153 | 156 |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
285 provided_file_system_->ObserveDirectory( | 288 provided_file_system_->ObserveDirectory( |
286 base::FilePath::FromUTF8Unsafe(kDirectoryPath), | 289 base::FilePath::FromUTF8Unsafe(kDirectoryPath), |
287 false /* recursive */, | 290 false /* recursive */, |
288 base::Bind(&LogStatus, base::Unretained(&log))); | 291 base::Bind(&LogStatus, base::Unretained(&log))); |
289 base::RunLoop().RunUntilIdle(); | 292 base::RunLoop().RunUntilIdle(); |
290 | 293 |
291 // The directory should not become observed because of an error. | 294 // The directory should not become observed because of an error. |
292 ASSERT_EQ(1u, log.size()); | 295 ASSERT_EQ(1u, log.size()); |
293 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, log[0]); | 296 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, log[0]); |
294 | 297 |
295 ProvidedFileSystemInterface::ObservedEntries* const observed_entries = | 298 ObservedEntries* const observed_entries = |
296 provided_file_system_->GetObservedEntries(); | 299 provided_file_system_->GetObservedEntries(); |
297 EXPECT_EQ(0u, observed_entries->size()); | 300 EXPECT_EQ(0u, observed_entries->size()); |
298 | 301 |
299 // The observer should not be called. | 302 // The observer should not be called. |
300 EXPECT_EQ(0, observer.list_changed_counter()); | 303 EXPECT_EQ(0, observer.list_changed_counter()); |
301 EXPECT_EQ(0, observer.tag_updated_counter()); | 304 EXPECT_EQ(0, observer.tag_updated_counter()); |
302 | 305 |
303 provided_file_system_->RemoveObserver(&observer); | 306 provided_file_system_->RemoveObserver(&observer); |
304 } | 307 } |
305 | 308 |
306 TEST_F(FileSystemProviderProvidedFileSystemTest, ObserveDirectory) { | 309 TEST_F(FileSystemProviderProvidedFileSystemTest, ObserveDirectory) { |
307 Log log; | 310 Log log; |
308 Observer observer; | 311 Observer observer; |
309 | 312 |
310 provided_file_system_->AddObserver(&observer); | 313 provided_file_system_->AddObserver(&observer); |
311 | 314 |
312 provided_file_system_->ObserveDirectory( | 315 provided_file_system_->ObserveDirectory( |
313 base::FilePath::FromUTF8Unsafe(kDirectoryPath), | 316 base::FilePath::FromUTF8Unsafe(kDirectoryPath), |
314 false /* recursive */, | 317 false /* recursive */, |
315 base::Bind(&LogStatus, base::Unretained(&log))); | 318 base::Bind(&LogStatus, base::Unretained(&log))); |
316 base::RunLoop().RunUntilIdle(); | 319 base::RunLoop().RunUntilIdle(); |
317 | 320 |
318 ASSERT_EQ(1u, log.size()); | 321 ASSERT_EQ(1u, log.size()); |
319 EXPECT_EQ(base::File::FILE_OK, log[0]); | 322 EXPECT_EQ(base::File::FILE_OK, log[0]); |
320 EXPECT_EQ(1, observer.list_changed_counter()); | 323 EXPECT_EQ(1, observer.list_changed_counter()); |
321 EXPECT_EQ(0, observer.tag_updated_counter()); | 324 EXPECT_EQ(0, observer.tag_updated_counter()); |
322 | 325 |
323 ProvidedFileSystemInterface::ObservedEntries* const observed_entries = | 326 ObservedEntries* const observed_entries = |
324 provided_file_system_->GetObservedEntries(); | 327 provided_file_system_->GetObservedEntries(); |
325 ASSERT_EQ(1u, observed_entries->size()); | 328 ASSERT_EQ(1u, observed_entries->size()); |
326 const ProvidedFileSystemInterface::ObservedEntry& observed_entry = | 329 const ObservedEntry& observed_entry = observed_entries->begin()->second; |
327 observed_entries->begin()->second; | |
328 EXPECT_EQ(kDirectoryPath, observed_entry.entry_path.value()); | 330 EXPECT_EQ(kDirectoryPath, observed_entry.entry_path.value()); |
329 EXPECT_FALSE(observed_entry.recursive); | 331 EXPECT_FALSE(observed_entry.recursive); |
330 EXPECT_EQ("", observed_entry.last_tag); | 332 EXPECT_EQ("", observed_entry.last_tag); |
331 | 333 |
332 provided_file_system_->RemoveObserver(&observer); | 334 provided_file_system_->RemoveObserver(&observer); |
333 } | 335 } |
334 | 336 |
335 TEST_F(FileSystemProviderProvidedFileSystemTest, ObserveDirectory_Exists) { | 337 TEST_F(FileSystemProviderProvidedFileSystemTest, ObserveDirectory_Exists) { |
336 Observer observer; | 338 Observer observer; |
337 provided_file_system_->AddObserver(&observer); | 339 provided_file_system_->AddObserver(&observer); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
375 base::FilePath::FromUTF8Unsafe(kDirectoryPath), | 377 base::FilePath::FromUTF8Unsafe(kDirectoryPath), |
376 true /* recursive */, | 378 true /* recursive */, |
377 base::Bind(&LogStatus, base::Unretained(&log))); | 379 base::Bind(&LogStatus, base::Unretained(&log))); |
378 base::RunLoop().RunUntilIdle(); | 380 base::RunLoop().RunUntilIdle(); |
379 | 381 |
380 ASSERT_EQ(1u, log.size()); | 382 ASSERT_EQ(1u, log.size()); |
381 EXPECT_EQ(base::File::FILE_OK, log[0]); | 383 EXPECT_EQ(base::File::FILE_OK, log[0]); |
382 EXPECT_EQ(2, observer.list_changed_counter()); | 384 EXPECT_EQ(2, observer.list_changed_counter()); |
383 EXPECT_EQ(0, observer.tag_updated_counter()); | 385 EXPECT_EQ(0, observer.tag_updated_counter()); |
384 | 386 |
385 ProvidedFileSystemInterface::ObservedEntries* const observed_entries = | 387 ObservedEntries* const observed_entries = |
386 provided_file_system_->GetObservedEntries(); | 388 provided_file_system_->GetObservedEntries(); |
387 ASSERT_EQ(1u, observed_entries->size()); | 389 ASSERT_EQ(1u, observed_entries->size()); |
388 const ProvidedFileSystemInterface::ObservedEntry& observed_entry = | 390 const ObservedEntry& observed_entry = observed_entries->begin()->second; |
389 observed_entries->begin()->second; | |
390 EXPECT_EQ(kDirectoryPath, observed_entry.entry_path.value()); | 391 EXPECT_EQ(kDirectoryPath, observed_entry.entry_path.value()); |
391 EXPECT_TRUE(observed_entry.recursive); | 392 EXPECT_TRUE(observed_entry.recursive); |
392 EXPECT_EQ("", observed_entry.last_tag); | 393 EXPECT_EQ("", observed_entry.last_tag); |
393 } | 394 } |
394 | 395 |
395 { | 396 { |
396 // Lastly, create another recursive observer. That should fail, too. | 397 // Lastly, create another recursive observer. That should fail, too. |
397 Log log; | 398 Log log; |
398 provided_file_system_->ObserveDirectory( | 399 provided_file_system_->ObserveDirectory( |
399 base::FilePath::FromUTF8Unsafe(kDirectoryPath), | 400 base::FilePath::FromUTF8Unsafe(kDirectoryPath), |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 base::FilePath::FromUTF8Unsafe(kDirectoryPath), | 437 base::FilePath::FromUTF8Unsafe(kDirectoryPath), |
437 false /* recursive */, | 438 false /* recursive */, |
438 base::Bind(&LogStatus, base::Unretained(&log))); | 439 base::Bind(&LogStatus, base::Unretained(&log))); |
439 base::RunLoop().RunUntilIdle(); | 440 base::RunLoop().RunUntilIdle(); |
440 | 441 |
441 ASSERT_EQ(1u, log.size()); | 442 ASSERT_EQ(1u, log.size()); |
442 EXPECT_EQ(base::File::FILE_OK, log[0]); | 443 EXPECT_EQ(base::File::FILE_OK, log[0]); |
443 EXPECT_EQ(1, observer.list_changed_counter()); | 444 EXPECT_EQ(1, observer.list_changed_counter()); |
444 EXPECT_EQ(0, observer.tag_updated_counter()); | 445 EXPECT_EQ(0, observer.tag_updated_counter()); |
445 | 446 |
446 ProvidedFileSystemInterface::ObservedEntries* const observed_entries = | 447 ObservedEntries* const observed_entries = |
447 provided_file_system_->GetObservedEntries(); | 448 provided_file_system_->GetObservedEntries(); |
448 EXPECT_EQ(1u, observed_entries->size()); | 449 EXPECT_EQ(1u, observed_entries->size()); |
449 } | 450 } |
450 | 451 |
451 { | 452 { |
452 // Unobserve it gracefully. | 453 // Unobserve it gracefully. |
453 Log log; | 454 Log log; |
454 provided_file_system_->UnobserveEntry( | 455 provided_file_system_->UnobserveEntry( |
455 base::FilePath::FromUTF8Unsafe(kDirectoryPath), | 456 base::FilePath::FromUTF8Unsafe(kDirectoryPath), |
456 base::Bind(&LogStatus, base::Unretained(&log))); | 457 base::Bind(&LogStatus, base::Unretained(&log))); |
457 base::RunLoop().RunUntilIdle(); | 458 base::RunLoop().RunUntilIdle(); |
458 | 459 |
459 ASSERT_EQ(1u, log.size()); | 460 ASSERT_EQ(1u, log.size()); |
460 EXPECT_EQ(base::File::FILE_OK, log[0]); | 461 EXPECT_EQ(base::File::FILE_OK, log[0]); |
461 EXPECT_EQ(2, observer.list_changed_counter()); | 462 EXPECT_EQ(2, observer.list_changed_counter()); |
462 EXPECT_EQ(0, observer.tag_updated_counter()); | 463 EXPECT_EQ(0, observer.tag_updated_counter()); |
463 | 464 |
464 ProvidedFileSystemInterface::ObservedEntries* const observed_entries = | 465 ObservedEntries* const observed_entries = |
465 provided_file_system_->GetObservedEntries(); | 466 provided_file_system_->GetObservedEntries(); |
466 EXPECT_EQ(0u, observed_entries->size()); | 467 EXPECT_EQ(0u, observed_entries->size()); |
467 } | 468 } |
468 | 469 |
469 { | 470 { |
470 // Confirm that it's possible to observe it again. | 471 // Confirm that it's possible to observe it again. |
471 Log log; | 472 Log log; |
472 provided_file_system_->ObserveDirectory( | 473 provided_file_system_->ObserveDirectory( |
473 base::FilePath::FromUTF8Unsafe(kDirectoryPath), | 474 base::FilePath::FromUTF8Unsafe(kDirectoryPath), |
474 false /* recursive */, | 475 false /* recursive */, |
475 base::Bind(&LogStatus, base::Unretained(&log))); | 476 base::Bind(&LogStatus, base::Unretained(&log))); |
476 base::RunLoop().RunUntilIdle(); | 477 base::RunLoop().RunUntilIdle(); |
477 | 478 |
478 ASSERT_EQ(1u, log.size()); | 479 ASSERT_EQ(1u, log.size()); |
479 EXPECT_EQ(base::File::FILE_OK, log[0]); | 480 EXPECT_EQ(base::File::FILE_OK, log[0]); |
480 EXPECT_EQ(3, observer.list_changed_counter()); | 481 EXPECT_EQ(3, observer.list_changed_counter()); |
481 EXPECT_EQ(0, observer.tag_updated_counter()); | 482 EXPECT_EQ(0, observer.tag_updated_counter()); |
482 | 483 |
483 ProvidedFileSystemInterface::ObservedEntries* const observed_entries = | 484 ObservedEntries* const observed_entries = |
484 provided_file_system_->GetObservedEntries(); | 485 provided_file_system_->GetObservedEntries(); |
485 EXPECT_EQ(1u, observed_entries->size()); | 486 EXPECT_EQ(1u, observed_entries->size()); |
486 } | 487 } |
487 | 488 |
488 { | 489 { |
489 // Finally, unobserve it, but with an error from extension. That should | 490 // Finally, unobserve it, but with an error from extension. That should |
490 // result | 491 // result |
491 // in a removed observer, anyway. | 492 // in a removed observer, anyway. |
492 event_router_->set_reply_result(base::File::FILE_ERROR_FAILED); | 493 event_router_->set_reply_result(base::File::FILE_ERROR_FAILED); |
493 | 494 |
494 Log log; | 495 Log log; |
495 provided_file_system_->UnobserveEntry( | 496 provided_file_system_->UnobserveEntry( |
496 base::FilePath::FromUTF8Unsafe(kDirectoryPath), | 497 base::FilePath::FromUTF8Unsafe(kDirectoryPath), |
497 base::Bind(&LogStatus, base::Unretained(&log))); | 498 base::Bind(&LogStatus, base::Unretained(&log))); |
498 base::RunLoop().RunUntilIdle(); | 499 base::RunLoop().RunUntilIdle(); |
499 | 500 |
500 ASSERT_EQ(1u, log.size()); | 501 ASSERT_EQ(1u, log.size()); |
501 EXPECT_EQ(base::File::FILE_ERROR_FAILED, log[0]); | 502 EXPECT_EQ(base::File::FILE_ERROR_FAILED, log[0]); |
502 EXPECT_EQ(4, observer.list_changed_counter()); | 503 EXPECT_EQ(4, observer.list_changed_counter()); |
503 EXPECT_EQ(0, observer.tag_updated_counter()); | 504 EXPECT_EQ(0, observer.tag_updated_counter()); |
504 | 505 |
505 ProvidedFileSystemInterface::ObservedEntries* const observed_entries = | 506 ObservedEntries* const observed_entries = |
506 provided_file_system_->GetObservedEntries(); | 507 provided_file_system_->GetObservedEntries(); |
507 EXPECT_EQ(0u, observed_entries->size()); | 508 EXPECT_EQ(0u, observed_entries->size()); |
508 } | 509 } |
509 | 510 |
510 provided_file_system_->RemoveObserver(&observer); | 511 provided_file_system_->RemoveObserver(&observer); |
511 } | 512 } |
512 | 513 |
513 TEST_F(FileSystemProviderProvidedFileSystemTest, Notify) { | 514 TEST_F(FileSystemProviderProvidedFileSystemTest, Notify) { |
514 Observer observer; | 515 Observer observer; |
515 provided_file_system_->AddObserver(&observer); | 516 provided_file_system_->AddObserver(&observer); |
516 | 517 |
517 { | 518 { |
518 // Observe a directory. | 519 // Observe a directory. |
519 Log log; | 520 Log log; |
520 provided_file_system_->ObserveDirectory( | 521 provided_file_system_->ObserveDirectory( |
521 base::FilePath::FromUTF8Unsafe(kDirectoryPath), | 522 base::FilePath::FromUTF8Unsafe(kDirectoryPath), |
522 false /* recursive */, | 523 false /* recursive */, |
523 base::Bind(&LogStatus, base::Unretained(&log))); | 524 base::Bind(&LogStatus, base::Unretained(&log))); |
524 base::RunLoop().RunUntilIdle(); | 525 base::RunLoop().RunUntilIdle(); |
525 | 526 |
526 ASSERT_EQ(1u, log.size()); | 527 ASSERT_EQ(1u, log.size()); |
527 EXPECT_EQ(base::File::FILE_OK, log[0]); | 528 EXPECT_EQ(base::File::FILE_OK, log[0]); |
528 EXPECT_EQ(1, observer.list_changed_counter()); | 529 EXPECT_EQ(1, observer.list_changed_counter()); |
529 EXPECT_EQ(0, observer.tag_updated_counter()); | 530 EXPECT_EQ(0, observer.tag_updated_counter()); |
530 | 531 |
531 ProvidedFileSystemInterface::ObservedEntries* const observed_entries = | 532 ObservedEntries* const observed_entries = |
532 provided_file_system_->GetObservedEntries(); | 533 provided_file_system_->GetObservedEntries(); |
533 EXPECT_EQ(1u, observed_entries->size()); | 534 EXPECT_EQ(1u, observed_entries->size()); |
534 provided_file_system_->GetObservedEntries(); | 535 provided_file_system_->GetObservedEntries(); |
535 EXPECT_EQ("", observed_entries->begin()->second.last_tag); | 536 EXPECT_EQ("", observed_entries->begin()->second.last_tag); |
536 } | 537 } |
537 | 538 |
538 { | 539 { |
539 // Notify about a change. | 540 // Notify about a change. |
540 const ProvidedFileSystemObserver::ChangeType change_type = | 541 const ProvidedFileSystemObserver::ChangeType change_type = |
541 ProvidedFileSystemObserver::CHANGED; | 542 ProvidedFileSystemObserver::CHANGED; |
542 const std::string tag = "hello-world"; | 543 const std::string tag = "hello-world"; |
543 EXPECT_TRUE(provided_file_system_->Notify( | 544 EXPECT_TRUE(provided_file_system_->Notify( |
544 base::FilePath::FromUTF8Unsafe(kDirectoryPath), | 545 base::FilePath::FromUTF8Unsafe(kDirectoryPath), |
545 change_type, | 546 change_type, |
546 make_scoped_ptr(new ProvidedFileSystemObserver::ChildChanges), | 547 make_scoped_ptr(new ProvidedFileSystemObserver::ChildChanges), |
547 tag)); | 548 tag)); |
548 | 549 |
549 // Verify the observer event. | 550 // Verify the observer event. |
550 ASSERT_EQ(1u, observer.change_events().size()); | 551 ASSERT_EQ(1u, observer.change_events().size()); |
551 const Observer::ChangeEvent* const change_event = | 552 const Observer::ChangeEvent* const change_event = |
552 observer.change_events()[0]; | 553 observer.change_events()[0]; |
553 EXPECT_EQ(change_type, change_event->change_type()); | 554 EXPECT_EQ(change_type, change_event->change_type()); |
554 EXPECT_EQ(0u, change_event->child_changes().size()); | 555 EXPECT_EQ(0u, change_event->child_changes().size()); |
555 | 556 |
556 // The tag should not be updated in advance, before all observers handle | 557 // The tag should not be updated in advance, before all observers handle |
557 // the notification. | 558 // the notification. |
558 ProvidedFileSystemInterface::ObservedEntries* const observed_entries = | 559 ObservedEntries* const observed_entries = |
559 provided_file_system_->GetObservedEntries(); | 560 provided_file_system_->GetObservedEntries(); |
560 EXPECT_EQ(1u, observed_entries->size()); | 561 EXPECT_EQ(1u, observed_entries->size()); |
561 provided_file_system_->GetObservedEntries(); | 562 provided_file_system_->GetObservedEntries(); |
562 EXPECT_EQ("", observed_entries->begin()->second.last_tag); | 563 EXPECT_EQ("", observed_entries->begin()->second.last_tag); |
563 | 564 |
564 // Wait until all observers finish handling the notification. | 565 // Wait until all observers finish handling the notification. |
565 base::RunLoop().RunUntilIdle(); | 566 base::RunLoop().RunUntilIdle(); |
566 | 567 |
567 // Confirm, that the entry is still being observed, and that the tag is | 568 // Confirm, that the entry is still being observed, and that the tag is |
568 // updated. | 569 // updated. |
(...skipping 19 matching lines...) Expand all Loading... |
588 // Verify the observer event. | 589 // Verify the observer event. |
589 ASSERT_EQ(2u, observer.change_events().size()); | 590 ASSERT_EQ(2u, observer.change_events().size()); |
590 const Observer::ChangeEvent* const change_event = | 591 const Observer::ChangeEvent* const change_event = |
591 observer.change_events()[1]; | 592 observer.change_events()[1]; |
592 EXPECT_EQ(change_type, change_event->change_type()); | 593 EXPECT_EQ(change_type, change_event->change_type()); |
593 EXPECT_EQ(0u, change_event->child_changes().size()); | 594 EXPECT_EQ(0u, change_event->child_changes().size()); |
594 } | 595 } |
595 | 596 |
596 // Confirm, that the entry is not observed anymore. | 597 // Confirm, that the entry is not observed anymore. |
597 { | 598 { |
598 ProvidedFileSystemInterface::ObservedEntries* const observed_entries = | 599 ObservedEntries* const observed_entries = |
599 provided_file_system_->GetObservedEntries(); | 600 provided_file_system_->GetObservedEntries(); |
600 EXPECT_EQ(0u, observed_entries->size()); | 601 EXPECT_EQ(0u, observed_entries->size()); |
601 EXPECT_EQ(2, observer.list_changed_counter()); | 602 EXPECT_EQ(2, observer.list_changed_counter()); |
602 EXPECT_EQ(2, observer.tag_updated_counter()); | 603 EXPECT_EQ(2, observer.tag_updated_counter()); |
603 } | 604 } |
604 | 605 |
605 provided_file_system_->RemoveObserver(&observer); | 606 provided_file_system_->RemoveObserver(&observer); |
606 } | 607 } |
607 | 608 |
608 } // namespace file_system_provider | 609 } // namespace file_system_provider |
609 } // namespace chromeos | 610 } // namespace chromeos |
OLD | NEW |