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 <memory> |
7 #include <string> | 8 #include <string> |
8 #include <utility> | 9 #include <utility> |
9 #include <vector> | 10 #include <vector> |
10 | 11 |
11 #include "base/files/file.h" | 12 #include "base/files/file.h" |
12 #include "base/macros.h" | 13 #include "base/macros.h" |
| 14 #include "base/memory/ptr_util.h" |
13 #include "base/memory/ref_counted.h" | 15 #include "base/memory/ref_counted.h" |
14 #include "base/memory/scoped_ptr.h" | |
15 #include "base/memory/scoped_vector.h" | 16 #include "base/memory/scoped_vector.h" |
16 #include "base/run_loop.h" | 17 #include "base/run_loop.h" |
17 #include "base/thread_task_runner_handle.h" | 18 #include "base/thread_task_runner_handle.h" |
18 #include "base/values.h" | 19 #include "base/values.h" |
19 #include "chrome/browser/chromeos/file_system_provider/mount_path_util.h" | 20 #include "chrome/browser/chromeos/file_system_provider/mount_path_util.h" |
20 #include "chrome/browser/chromeos/file_system_provider/notification_manager.h" | 21 #include "chrome/browser/chromeos/file_system_provider/notification_manager.h" |
21 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_info
.h" | 22 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_info
.h" |
22 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_inte
rface.h" | 23 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_inte
rface.h" |
23 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_obse
rver.h" | 24 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_obse
rver.h" |
24 #include "chrome/browser/chromeos/file_system_provider/request_manager.h" | 25 #include "chrome/browser/chromeos/file_system_provider/request_manager.h" |
(...skipping 29 matching lines...) Expand all Loading... |
54 class FakeEventRouter : public extensions::EventRouter { | 55 class FakeEventRouter : public extensions::EventRouter { |
55 public: | 56 public: |
56 FakeEventRouter(Profile* profile, ProvidedFileSystemInterface* file_system) | 57 FakeEventRouter(Profile* profile, ProvidedFileSystemInterface* file_system) |
57 : EventRouter(profile, NULL), | 58 : EventRouter(profile, NULL), |
58 file_system_(file_system), | 59 file_system_(file_system), |
59 reply_result_(base::File::FILE_OK) {} | 60 reply_result_(base::File::FILE_OK) {} |
60 ~FakeEventRouter() override {} | 61 ~FakeEventRouter() override {} |
61 | 62 |
62 // Handles an event which would normally be routed to an extension. Instead | 63 // Handles an event which would normally be routed to an extension. Instead |
63 // replies with a hard coded response. | 64 // replies with a hard coded response. |
64 void DispatchEventToExtension(const std::string& extension_id, | 65 void DispatchEventToExtension( |
65 scoped_ptr<extensions::Event> event) override { | 66 const std::string& extension_id, |
| 67 std::unique_ptr<extensions::Event> event) override { |
66 ASSERT_TRUE(file_system_); | 68 ASSERT_TRUE(file_system_); |
67 std::string file_system_id; | 69 std::string file_system_id; |
68 const base::DictionaryValue* dictionary_value = NULL; | 70 const base::DictionaryValue* dictionary_value = NULL; |
69 ASSERT_TRUE(event->event_args->GetDictionary(0, &dictionary_value)); | 71 ASSERT_TRUE(event->event_args->GetDictionary(0, &dictionary_value)); |
70 EXPECT_TRUE(dictionary_value->GetString("fileSystemId", &file_system_id)); | 72 EXPECT_TRUE(dictionary_value->GetString("fileSystemId", &file_system_id)); |
71 EXPECT_EQ(kFileSystemId, file_system_id); | 73 EXPECT_EQ(kFileSystemId, file_system_id); |
72 int request_id = -1; | 74 int request_id = -1; |
73 EXPECT_TRUE(dictionary_value->GetInteger("requestId", &request_id)); | 75 EXPECT_TRUE(dictionary_value->GetInteger("requestId", &request_id)); |
74 EXPECT_TRUE(event->event_name == extensions::api::file_system_provider:: | 76 EXPECT_TRUE(event->event_name == extensions::api::file_system_provider:: |
75 OnAddWatcherRequested::kEventName || | 77 OnAddWatcherRequested::kEventName || |
76 event->event_name == extensions::api::file_system_provider:: | 78 event->event_name == extensions::api::file_system_provider:: |
77 OnRemoveWatcherRequested::kEventName || | 79 OnRemoveWatcherRequested::kEventName || |
78 event->event_name == extensions::api::file_system_provider:: | 80 event->event_name == extensions::api::file_system_provider:: |
79 OnOpenFileRequested::kEventName || | 81 OnOpenFileRequested::kEventName || |
80 event->event_name == extensions::api::file_system_provider:: | 82 event->event_name == extensions::api::file_system_provider:: |
81 OnCloseFileRequested::kEventName); | 83 OnCloseFileRequested::kEventName); |
82 | 84 |
83 if (reply_result_ == base::File::FILE_OK) { | 85 if (reply_result_ == base::File::FILE_OK) { |
84 base::ListValue value_as_list; | 86 base::ListValue value_as_list; |
85 value_as_list.Set(0, new base::StringValue(kFileSystemId)); | 87 value_as_list.Set(0, new base::StringValue(kFileSystemId)); |
86 value_as_list.Set(1, new base::FundamentalValue(request_id)); | 88 value_as_list.Set(1, new base::FundamentalValue(request_id)); |
87 value_as_list.Set(2, new base::FundamentalValue(0) /* execution_time */); | 89 value_as_list.Set(2, new base::FundamentalValue(0) /* execution_time */); |
88 | 90 |
89 using extensions::api::file_system_provider_internal:: | 91 using extensions::api::file_system_provider_internal:: |
90 OperationRequestedSuccess::Params; | 92 OperationRequestedSuccess::Params; |
91 scoped_ptr<Params> params(Params::Create(value_as_list)); | 93 std::unique_ptr<Params> params(Params::Create(value_as_list)); |
92 ASSERT_TRUE(params.get()); | 94 ASSERT_TRUE(params.get()); |
93 file_system_->GetRequestManager()->FulfillRequest( | 95 file_system_->GetRequestManager()->FulfillRequest( |
94 request_id, | 96 request_id, |
95 RequestValue::CreateForOperationSuccess(std::move(params)), | 97 RequestValue::CreateForOperationSuccess(std::move(params)), |
96 false /* has_more */); | 98 false /* has_more */); |
97 } else { | 99 } else { |
98 file_system_->GetRequestManager()->RejectRequest( | 100 file_system_->GetRequestManager()->RejectRequest( |
99 request_id, make_scoped_ptr(new RequestValue()), reply_result_); | 101 request_id, base::WrapUnique(new RequestValue()), reply_result_); |
100 } | 102 } |
101 } | 103 } |
102 | 104 |
103 void set_reply_result(base::File::Error result) { reply_result_ = result; } | 105 void set_reply_result(base::File::Error result) { reply_result_ = result; } |
104 | 106 |
105 private: | 107 private: |
106 ProvidedFileSystemInterface* const file_system_; // Not owned. | 108 ProvidedFileSystemInterface* const file_system_; // Not owned. |
107 base::File::Error reply_result_; | 109 base::File::Error reply_result_; |
108 DISALLOW_COPY_AND_ASSIGN(FakeEventRouter); | 110 DISALLOW_COPY_AND_ASSIGN(FakeEventRouter); |
109 }; | 111 }; |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
250 NULL, | 252 NULL, |
251 kExtensionId); | 253 kExtensionId); |
252 event_router_->AddEventListener( | 254 event_router_->AddEventListener( |
253 extensions::api::file_system_provider::OnOpenFileRequested::kEventName, | 255 extensions::api::file_system_provider::OnOpenFileRequested::kEventName, |
254 NULL, kExtensionId); | 256 NULL, kExtensionId); |
255 event_router_->AddEventListener( | 257 event_router_->AddEventListener( |
256 extensions::api::file_system_provider::OnCloseFileRequested::kEventName, | 258 extensions::api::file_system_provider::OnCloseFileRequested::kEventName, |
257 NULL, kExtensionId); | 259 NULL, kExtensionId); |
258 provided_file_system_->SetEventRouterForTesting(event_router_.get()); | 260 provided_file_system_->SetEventRouterForTesting(event_router_.get()); |
259 provided_file_system_->SetNotificationManagerForTesting( | 261 provided_file_system_->SetNotificationManagerForTesting( |
260 make_scoped_ptr(new StubNotificationManager)); | 262 base::WrapUnique(new StubNotificationManager)); |
261 } | 263 } |
262 | 264 |
263 content::TestBrowserThreadBundle thread_bundle_; | 265 content::TestBrowserThreadBundle thread_bundle_; |
264 scoped_ptr<TestingProfile> profile_; | 266 std::unique_ptr<TestingProfile> profile_; |
265 scoped_ptr<FakeEventRouter> event_router_; | 267 std::unique_ptr<FakeEventRouter> event_router_; |
266 scoped_ptr<ProvidedFileSystemInfo> file_system_info_; | 268 std::unique_ptr<ProvidedFileSystemInfo> file_system_info_; |
267 scoped_ptr<ProvidedFileSystem> provided_file_system_; | 269 std::unique_ptr<ProvidedFileSystem> provided_file_system_; |
268 }; | 270 }; |
269 | 271 |
270 TEST_F(FileSystemProviderProvidedFileSystemTest, AutoUpdater) { | 272 TEST_F(FileSystemProviderProvidedFileSystemTest, AutoUpdater) { |
271 Log log; | 273 Log log; |
272 base::Closure firstCallback; | 274 base::Closure firstCallback; |
273 base::Closure secondCallback; | 275 base::Closure secondCallback; |
274 | 276 |
275 { | 277 { |
276 // Auto updater is ref counted, and bound to all callbacks. | 278 // Auto updater is ref counted, and bound to all callbacks. |
277 scoped_refptr<AutoUpdater> auto_updater(new AutoUpdater( | 279 scoped_refptr<AutoUpdater> auto_updater(new AutoUpdater( |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
414 mount_options.file_system_id = kFileSystemId; | 416 mount_options.file_system_id = kFileSystemId; |
415 mount_options.display_name = kDisplayName; | 417 mount_options.display_name = kDisplayName; |
416 mount_options.supports_notify_tag = false; | 418 mount_options.supports_notify_tag = false; |
417 ProvidedFileSystemInfo file_system_info( | 419 ProvidedFileSystemInfo file_system_info( |
418 kExtensionId, mount_options, mount_path, false /* configurable */, | 420 kExtensionId, mount_options, mount_path, false /* configurable */, |
419 true /* watchable */, extensions::SOURCE_FILE); | 421 true /* watchable */, extensions::SOURCE_FILE); |
420 ProvidedFileSystem simple_provided_file_system(profile_.get(), | 422 ProvidedFileSystem simple_provided_file_system(profile_.get(), |
421 file_system_info); | 423 file_system_info); |
422 simple_provided_file_system.SetEventRouterForTesting(event_router_.get()); | 424 simple_provided_file_system.SetEventRouterForTesting(event_router_.get()); |
423 simple_provided_file_system.SetNotificationManagerForTesting( | 425 simple_provided_file_system.SetNotificationManagerForTesting( |
424 make_scoped_ptr(new StubNotificationManager)); | 426 base::WrapUnique(new StubNotificationManager)); |
425 | 427 |
426 simple_provided_file_system.AddObserver(&observer); | 428 simple_provided_file_system.AddObserver(&observer); |
427 | 429 |
428 simple_provided_file_system.AddWatcher( | 430 simple_provided_file_system.AddWatcher( |
429 GURL(kOrigin), base::FilePath(kDirectoryPath), false /* recursive */, | 431 GURL(kOrigin), base::FilePath(kDirectoryPath), false /* recursive */, |
430 true /* persistent */, base::Bind(&LogStatus, base::Unretained(&log)), | 432 true /* persistent */, base::Bind(&LogStatus, base::Unretained(&log)), |
431 storage::WatcherManager::NotificationCallback()); | 433 storage::WatcherManager::NotificationCallback()); |
432 base::RunLoop().RunUntilIdle(); | 434 base::RunLoop().RunUntilIdle(); |
433 | 435 |
434 ASSERT_EQ(1u, log.size()); | 436 ASSERT_EQ(1u, log.size()); |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
743 | 745 |
744 { | 746 { |
745 // Notify about a change. | 747 // Notify about a change. |
746 const storage::WatcherManager::ChangeType change_type = | 748 const storage::WatcherManager::ChangeType change_type = |
747 storage::WatcherManager::CHANGED; | 749 storage::WatcherManager::CHANGED; |
748 const std::string tag = "hello-world"; | 750 const std::string tag = "hello-world"; |
749 | 751 |
750 Log log; | 752 Log log; |
751 provided_file_system_->Notify( | 753 provided_file_system_->Notify( |
752 base::FilePath(kDirectoryPath), false /* recursive */, change_type, | 754 base::FilePath(kDirectoryPath), false /* recursive */, change_type, |
753 make_scoped_ptr(new ProvidedFileSystemObserver::Changes), tag, | 755 base::WrapUnique(new ProvidedFileSystemObserver::Changes), tag, |
754 base::Bind(&LogStatus, base::Unretained(&log))); | 756 base::Bind(&LogStatus, base::Unretained(&log))); |
755 base::RunLoop().RunUntilIdle(); | 757 base::RunLoop().RunUntilIdle(); |
756 | 758 |
757 // Confirm that the notification callback was called. | 759 // Confirm that the notification callback was called. |
758 ASSERT_EQ(1u, notification_log.size()); | 760 ASSERT_EQ(1u, notification_log.size()); |
759 EXPECT_EQ(change_type, notification_log[0]); | 761 EXPECT_EQ(change_type, notification_log[0]); |
760 | 762 |
761 // Verify the observer event. | 763 // Verify the observer event. |
762 ASSERT_EQ(1u, observer.change_events().size()); | 764 ASSERT_EQ(1u, observer.change_events().size()); |
763 const Observer::ChangeEvent* const change_event = | 765 const Observer::ChangeEvent* const change_event = |
(...skipping 25 matching lines...) Expand all Loading... |
789 { | 791 { |
790 // Notify about deleting of the watched entry. | 792 // Notify about deleting of the watched entry. |
791 const storage::WatcherManager::ChangeType change_type = | 793 const storage::WatcherManager::ChangeType change_type = |
792 storage::WatcherManager::DELETED; | 794 storage::WatcherManager::DELETED; |
793 const ProvidedFileSystemObserver::Changes changes; | 795 const ProvidedFileSystemObserver::Changes changes; |
794 const std::string tag = "chocolate-disco"; | 796 const std::string tag = "chocolate-disco"; |
795 | 797 |
796 Log log; | 798 Log log; |
797 provided_file_system_->Notify( | 799 provided_file_system_->Notify( |
798 base::FilePath(kDirectoryPath), false /* recursive */, change_type, | 800 base::FilePath(kDirectoryPath), false /* recursive */, change_type, |
799 make_scoped_ptr(new ProvidedFileSystemObserver::Changes), tag, | 801 base::WrapUnique(new ProvidedFileSystemObserver::Changes), tag, |
800 base::Bind(&LogStatus, base::Unretained(&log))); | 802 base::Bind(&LogStatus, base::Unretained(&log))); |
801 base::RunLoop().RunUntilIdle(); | 803 base::RunLoop().RunUntilIdle(); |
802 | 804 |
803 // Complete all change events. | 805 // Complete all change events. |
804 observer.CompleteOnWatcherChanged(); | 806 observer.CompleteOnWatcherChanged(); |
805 base::RunLoop().RunUntilIdle(); | 807 base::RunLoop().RunUntilIdle(); |
806 | 808 |
807 ASSERT_EQ(1u, log.size()); | 809 ASSERT_EQ(1u, log.size()); |
808 EXPECT_EQ(base::File::FILE_OK, log[0]); | 810 EXPECT_EQ(base::File::FILE_OK, log[0]); |
809 | 811 |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
914 | 916 |
915 ASSERT_EQ(1u, close_log.size()); | 917 ASSERT_EQ(1u, close_log.size()); |
916 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, close_log[0]); | 918 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, close_log[0]); |
917 EXPECT_EQ(0u, opened_files.size()); | 919 EXPECT_EQ(0u, opened_files.size()); |
918 | 920 |
919 provided_file_system_->RemoveObserver(&observer); | 921 provided_file_system_->RemoveObserver(&observer); |
920 } | 922 } |
921 | 923 |
922 } // namespace file_system_provider | 924 } // namespace file_system_provider |
923 } // namespace chromeos | 925 } // namespace chromeos |
OLD | NEW |