Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(10)

Side by Side Diff: chrome/browser/chromeos/file_system_provider/service_unittest.cc

Issue 194693002: [fsp] Add requestUnmount() method together with the request manager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased. Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 <string> 5 #include <string>
6 #include <vector>
6 7
8 #include "base/files/file.h"
7 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
8 #include "base/memory/scoped_vector.h"
9 #include "chrome/browser/chromeos/file_system_provider/observer.h" 10 #include "chrome/browser/chromeos/file_system_provider/observer.h"
10 #include "chrome/browser/chromeos/file_system_provider/provided_file_system.h" 11 #include "chrome/browser/chromeos/file_system_provider/provided_file_system.h"
11 #include "chrome/browser/chromeos/file_system_provider/service.h" 12 #include "chrome/browser/chromeos/file_system_provider/service.h"
12 #include "chrome/browser/chromeos/login/fake_user_manager.h" 13 #include "chrome/browser/chromeos/login/fake_user_manager.h"
13 #include "chrome/test/base/testing_profile.h" 14 #include "chrome/test/base/testing_profile.h"
14 #include "content/public/test/test_browser_thread_bundle.h" 15 #include "content/public/test/test_browser_thread_bundle.h"
16 #include "content/public/test/test_browser_thread_bundle.h"
hashimoto 2014/03/25 10:38:57 nit: This line is duplicated.
mtomasz 2014/03/26 00:52:34 Done.
15 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
16 #include "webkit/browser/fileapi/external_mount_points.h" 18 #include "webkit/browser/fileapi/external_mount_points.h"
17 19
18 namespace chromeos { 20 namespace chromeos {
19 namespace file_system_provider { 21 namespace file_system_provider {
20 namespace { 22 namespace {
21 23
22 static const std::string kExtensionId = "mbflcebpggnecokmikipoihdbecnjfoj"; 24 static const std::string kExtensionId = "mbflcebpggnecokmikipoihdbecnjfoj";
23 static const std::string kFileSystemName = "Camera Pictures"; 25 static const std::string kFileSystemName = "Camera Pictures";
24 26
25 class LoggingObserver : public Observer { 27 class LoggingObserver : public Observer {
26 public: 28 public:
29 class Event {
30 public:
31 Event(const ProvidedFileSystem& file_system, base::File::Error error)
32 : file_system_(file_system), error_(error) {}
33 ~Event() {};
34
35 const ProvidedFileSystem& file_system() { return file_system_; }
36 base::File::Error error() { return error_; }
37
38 private:
39 ProvidedFileSystem file_system_;
40 base::File::Error error_;
41 };
42
27 LoggingObserver() {} 43 LoggingObserver() {}
28 virtual ~LoggingObserver() {} 44 virtual ~LoggingObserver() {}
29 45
30 // file_system_provider::Observer overrides. 46 // file_system_provider::Observer overrides.
31 virtual void OnProvidedFileSystemRegistered( 47 virtual void OnProvidedFileSystemMount(const ProvidedFileSystem& file_system,
32 const ProvidedFileSystem& file_system) OVERRIDE { 48 base::File::Error error) OVERRIDE {
33 registered.push_back(new const ProvidedFileSystem(file_system)); 49 mounts.push_back(Event(file_system, error));
34 } 50 }
35 51
36 virtual void OnProvidedFileSystemUnregistered( 52 virtual void OnProvidedFileSystemUnmount(
37 const ProvidedFileSystem& file_system) OVERRIDE { 53 const ProvidedFileSystem& file_system,
38 unregistered.push_back(new const ProvidedFileSystem(file_system)); 54 base::File::Error error) OVERRIDE {
55 unmounts.push_back(Event(file_system, error));
39 } 56 }
40 57
41 ScopedVector<const ProvidedFileSystem> registered; 58 std::vector<Event> mounts;
42 ScopedVector<const ProvidedFileSystem> unregistered; 59 std::vector<Event> unmounts;
43 }; 60 };
44 61
45 } // namespace 62 } // namespace
46 63
47 class FileSystemProviderServiceTest : public testing::Test { 64 class FileSystemProviderServiceTest : public testing::Test {
48 protected: 65 protected:
49 FileSystemProviderServiceTest() {} 66 FileSystemProviderServiceTest() {}
50 virtual ~FileSystemProviderServiceTest() {} 67 virtual ~FileSystemProviderServiceTest() {}
51 68
52 virtual void SetUp() OVERRIDE { 69 virtual void SetUp() OVERRIDE {
53 user_manager_ = new FakeUserManager(); 70 user_manager_ = new FakeUserManager();
54 user_manager_enabler_.reset(new ScopedUserManagerEnabler(user_manager_)); 71 user_manager_enabler_.reset(new ScopedUserManagerEnabler(user_manager_));
55 profile_.reset(new TestingProfile); 72 profile_.reset(new TestingProfile);
56 user_manager_->AddUser(profile_->GetProfileName()); 73 user_manager_->AddUser(profile_->GetProfileName());
57 file_system_provider_service_.reset(new Service(profile_.get())); 74 file_system_provider_service_.reset(new Service(profile_.get()));
58 } 75 }
59 76
60 virtual void TearDown() { 77 virtual void TearDown() {
61 fileapi::ExternalMountPoints::GetSystemInstance()->RevokeAllFileSystems(); 78 fileapi::ExternalMountPoints::GetSystemInstance()->RevokeAllFileSystems();
62 } 79 }
63 80
64 content::TestBrowserThreadBundle thread_bundle_; 81 content::TestBrowserThreadBundle thread_bundle_;
65 scoped_ptr<TestingProfile> profile_; 82 scoped_ptr<TestingProfile> profile_;
66 scoped_ptr<ScopedUserManagerEnabler> user_manager_enabler_; 83 scoped_ptr<ScopedUserManagerEnabler> user_manager_enabler_;
67 FakeUserManager* user_manager_; 84 FakeUserManager* user_manager_;
68 scoped_ptr<Service> file_system_provider_service_; 85 scoped_ptr<Service> file_system_provider_service_;
69 }; 86 };
70 87
71 TEST_F(FileSystemProviderServiceTest, RegisterFileSystem) { 88 TEST_F(FileSystemProviderServiceTest, MountFileSystem) {
72 LoggingObserver observer; 89 LoggingObserver observer;
73 file_system_provider_service_->AddObserver(&observer); 90 file_system_provider_service_->AddObserver(&observer);
74 91
75 int file_system_id = file_system_provider_service_->RegisterFileSystem( 92 int file_system_id = file_system_provider_service_->MountFileSystem(
76 kExtensionId, kFileSystemName); 93 kExtensionId, kFileSystemName);
77 94
78 EXPECT_LT(0, file_system_id); 95 EXPECT_LT(0, file_system_id);
79 ASSERT_EQ(1u, observer.registered.size()); 96 ASSERT_EQ(1u, observer.mounts.size());
80 EXPECT_EQ(kExtensionId, observer.registered[0]->extension_id()); 97 EXPECT_EQ(kExtensionId, observer.mounts[0].file_system().extension_id());
81 EXPECT_EQ(1, observer.registered[0]->file_system_id()); 98 EXPECT_EQ(1, observer.mounts[0].file_system().file_system_id());
82 EXPECT_EQ("/provided/mbflcebpggnecokmikipoihdbecnjfoj-1-testing_profile-hash", 99 EXPECT_EQ("/provided/mbflcebpggnecokmikipoihdbecnjfoj-1-testing_profile-hash",
83 observer.registered[0]->mount_path().AsUTF8Unsafe()); 100 observer.mounts[0].file_system().mount_path().AsUTF8Unsafe());
84 EXPECT_EQ(kFileSystemName, observer.registered[0]->file_system_name()); 101 EXPECT_EQ(kFileSystemName,
85 ASSERT_EQ(0u, observer.unregistered.size()); 102 observer.mounts[0].file_system().file_system_name());
103 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error());
104 ASSERT_EQ(0u, observer.unmounts.size());
86 105
87 std::vector<ProvidedFileSystem> provided_file_systems = 106 std::vector<ProvidedFileSystem> provided_file_systems =
88 file_system_provider_service_->GetRegisteredFileSystems(); 107 file_system_provider_service_->GetMountedFileSystems();
89 ASSERT_EQ(1u, provided_file_systems.size()); 108 ASSERT_EQ(1u, provided_file_systems.size());
90 109
91 file_system_provider_service_->RemoveObserver(&observer); 110 file_system_provider_service_->RemoveObserver(&observer);
92 } 111 }
93 112
94 TEST_F(FileSystemProviderServiceTest, RegisterFileSystem_UniqueIds) { 113 TEST_F(FileSystemProviderServiceTest, MountFileSystem_UniqueIds) {
95 LoggingObserver observer; 114 LoggingObserver observer;
96 file_system_provider_service_->AddObserver(&observer); 115 file_system_provider_service_->AddObserver(&observer);
97 116
98 int file_system_first_id = file_system_provider_service_->RegisterFileSystem( 117 int file_system_first_id = file_system_provider_service_->MountFileSystem(
99 kExtensionId, kFileSystemName); 118 kExtensionId, kFileSystemName);
100 ASSERT_LT(0, file_system_first_id); 119 EXPECT_LT(0, file_system_first_id);
101 120
102 int file_system_second_id = file_system_provider_service_->RegisterFileSystem( 121 int file_system_second_id = file_system_provider_service_->MountFileSystem(
103 kExtensionId, kFileSystemName); 122 kExtensionId, kFileSystemName);
104 ASSERT_LT(0, file_system_second_id); 123 EXPECT_LT(0, file_system_second_id);
105 124
106 ASSERT_NE(file_system_first_id, file_system_second_id); 125 EXPECT_NE(file_system_first_id, file_system_second_id);
107 ASSERT_EQ(2u, observer.registered.size()); 126 ASSERT_EQ(2u, observer.mounts.size());
127 EXPECT_EQ(base::File::FILE_OK, observer.mounts[0].error());
128 EXPECT_EQ(base::File::FILE_OK, observer.mounts[1].error());
108 129
109 std::vector<ProvidedFileSystem> provided_file_systems = 130 std::vector<ProvidedFileSystem> provided_file_systems =
110 file_system_provider_service_->GetRegisteredFileSystems(); 131 file_system_provider_service_->GetMountedFileSystems();
111 ASSERT_EQ(2u, provided_file_systems.size()); 132 ASSERT_EQ(2u, provided_file_systems.size());
112 133
113 file_system_provider_service_->RemoveObserver(&observer); 134 file_system_provider_service_->RemoveObserver(&observer);
114 } 135 }
115 136
116 TEST_F(FileSystemProviderServiceTest, RegisterFileSystem_StressTest) { 137 TEST_F(FileSystemProviderServiceTest, MountFileSystem_StressTest) {
117 LoggingObserver observer; 138 LoggingObserver observer;
118 file_system_provider_service_->AddObserver(&observer); 139 file_system_provider_service_->AddObserver(&observer);
119 140
120 static const size_t kMaxFileSystems = 16; 141 static const size_t kMaxFileSystems = 16;
121 for (size_t i = 0; i < kMaxFileSystems; ++i) { 142 for (size_t i = 0; i < kMaxFileSystems; ++i) {
122 int file_system_id = file_system_provider_service_->RegisterFileSystem( 143 int file_system_id = file_system_provider_service_->MountFileSystem(
123 kExtensionId, kFileSystemName); 144 kExtensionId, kFileSystemName);
124 ASSERT_LT(0, file_system_id); 145 EXPECT_LT(0, file_system_id);
125 } 146 }
126 ASSERT_EQ(kMaxFileSystems, observer.registered.size()); 147 ASSERT_EQ(kMaxFileSystems, observer.mounts.size());
127 148
128 // The next file system is out of limit, and registering it should fail. 149 // The next file system is out of limit, and registering it should fail.
129 int file_system_id = file_system_provider_service_->RegisterFileSystem( 150 int file_system_id = file_system_provider_service_->MountFileSystem(
130 kExtensionId, kFileSystemName); 151 kExtensionId, kFileSystemName);
131 ASSERT_EQ(0, file_system_id); 152 EXPECT_LT(0, file_system_id);
132 ASSERT_EQ(kMaxFileSystems, observer.registered.size()); 153
154 ASSERT_EQ(kMaxFileSystems + 1, observer.mounts.size());
155 EXPECT_EQ(base::File::FILE_ERROR_TOO_MANY_OPENED,
156 observer.mounts[kMaxFileSystems].error());
157 ASSERT_EQ(kMaxFileSystems,
158 file_system_provider_service_->GetMountedFileSystems().size());
133 159
134 std::vector<ProvidedFileSystem> provided_file_systems = 160 std::vector<ProvidedFileSystem> provided_file_systems =
135 file_system_provider_service_->GetRegisteredFileSystems(); 161 file_system_provider_service_->GetMountedFileSystems();
136 ASSERT_EQ(kMaxFileSystems, provided_file_systems.size()); 162 ASSERT_EQ(kMaxFileSystems, provided_file_systems.size());
137 163
138 file_system_provider_service_->RemoveObserver(&observer); 164 file_system_provider_service_->RemoveObserver(&observer);
139 } 165 }
140 166
141 TEST_F(FileSystemProviderServiceTest, UnregisterFileSystem) { 167 TEST_F(FileSystemProviderServiceTest, UnmountFileSystem) {
142 LoggingObserver observer; 168 LoggingObserver observer;
143 file_system_provider_service_->AddObserver(&observer); 169 file_system_provider_service_->AddObserver(&observer);
144 170
145 int file_system_id = file_system_provider_service_->RegisterFileSystem( 171 int file_system_id = file_system_provider_service_->MountFileSystem(
146 kExtensionId, kFileSystemName); 172 kExtensionId, kFileSystemName);
147 ASSERT_LT(0, file_system_id); 173 EXPECT_LT(0, file_system_id);
148 ASSERT_EQ(1u, observer.registered.size()); 174 ASSERT_EQ(1u, observer.mounts.size());
149 175
150 const bool result = file_system_provider_service_->UnregisterFileSystem( 176 const bool result = file_system_provider_service_->UnmountFileSystem(
151 kExtensionId, file_system_id); 177 kExtensionId, file_system_id);
152 ASSERT_TRUE(result); 178 EXPECT_TRUE(result);
153 ASSERT_EQ(1u, observer.unregistered.size()); 179 ASSERT_EQ(1u, observer.unmounts.size());
180 EXPECT_EQ(base::File::FILE_OK, observer.unmounts[0].error());
154 181
155 EXPECT_EQ(kExtensionId, observer.unregistered[0]->extension_id()); 182 EXPECT_EQ(kExtensionId, observer.unmounts[0].file_system().extension_id());
156 EXPECT_EQ(1, observer.unregistered[0]->file_system_id()); 183 EXPECT_EQ(1, observer.unmounts[0].file_system().file_system_id());
157 EXPECT_EQ("/provided/mbflcebpggnecokmikipoihdbecnjfoj-1-testing_profile-hash", 184 EXPECT_EQ("/provided/mbflcebpggnecokmikipoihdbecnjfoj-1-testing_profile-hash",
158 observer.unregistered[0]->mount_path().AsUTF8Unsafe()); 185 observer.unmounts[0].file_system().mount_path().AsUTF8Unsafe());
159 EXPECT_EQ(kFileSystemName, observer.unregistered[0]->file_system_name()); 186 EXPECT_EQ(kFileSystemName,
187 observer.unmounts[0].file_system().file_system_name());
160 188
161 std::vector<ProvidedFileSystem> provided_file_systems = 189 std::vector<ProvidedFileSystem> provided_file_systems =
162 file_system_provider_service_->GetRegisteredFileSystems(); 190 file_system_provider_service_->GetMountedFileSystems();
163 ASSERT_EQ(0u, provided_file_systems.size()); 191 ASSERT_EQ(0u, provided_file_systems.size());
164 192
165 file_system_provider_service_->RemoveObserver(&observer); 193 file_system_provider_service_->RemoveObserver(&observer);
166 } 194 }
167 195
168 TEST_F(FileSystemProviderServiceTest, UnregisterFileSystem_WrongExtensionId) { 196 TEST_F(FileSystemProviderServiceTest, UnmountFileSystem_WrongExtensionId) {
169 LoggingObserver observer; 197 LoggingObserver observer;
170 file_system_provider_service_->AddObserver(&observer); 198 file_system_provider_service_->AddObserver(&observer);
171 199
172 const std::string kWrongExtensionId = "helloworldhelloworldhelloworldhe"; 200 const std::string kWrongExtensionId = "helloworldhelloworldhelloworldhe";
173 201
174 int file_system_id = file_system_provider_service_->RegisterFileSystem( 202 int file_system_id = file_system_provider_service_->MountFileSystem(
175 kExtensionId, kFileSystemName); 203 kExtensionId, kFileSystemName);
176 ASSERT_LT(0, file_system_id); 204 EXPECT_LT(0, file_system_id);
177 ASSERT_EQ(1u, observer.registered.size()); 205 ASSERT_EQ(1u, observer.mounts.size());
206 ASSERT_EQ(1u, file_system_provider_service_->GetMountedFileSystems().size());
178 207
179 const bool result = file_system_provider_service_->UnregisterFileSystem( 208 const bool result = file_system_provider_service_->UnmountFileSystem(
180 kWrongExtensionId, file_system_id); 209 kWrongExtensionId, file_system_id);
181 ASSERT_FALSE(result); 210 EXPECT_FALSE(result);
182 ASSERT_EQ(0u, observer.unregistered.size()); 211 ASSERT_EQ(1u, observer.unmounts.size());
212 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, observer.unmounts[0].error());
213 ASSERT_EQ(1u, file_system_provider_service_->GetMountedFileSystems().size());
183 214
184 std::vector<ProvidedFileSystem> provided_file_systems = 215 std::vector<ProvidedFileSystem> provided_file_systems =
185 file_system_provider_service_->GetRegisteredFileSystems(); 216 file_system_provider_service_->GetMountedFileSystems();
186 ASSERT_EQ(1u, provided_file_systems.size()); 217 ASSERT_EQ(1u, provided_file_systems.size());
187 218
188 file_system_provider_service_->RemoveObserver(&observer); 219 file_system_provider_service_->RemoveObserver(&observer);
189 } 220 }
190 221
191 } // namespace file_system_provider 222 } // namespace file_system_provider
192 } // namespace chromeos 223 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698