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

Side by Side Diff: webkit/chromeos/fileapi/cros_mount_point_provider_unittest.cc

Issue 11787028: New FileSystemURL cracking (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix test on Win Created 7 years, 11 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 (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 "webkit/chromeos/fileapi/cros_mount_point_provider.h" 5 #include "webkit/chromeos/fileapi/cros_mount_point_provider.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/file_path.h" 9 #include "base/file_path.h"
10 #include "googleurl/src/url_util.h" 10 #include "googleurl/src/url_util.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "webkit/fileapi/external_mount_points.h" 12 #include "webkit/fileapi/external_mount_points.h"
13 #include "webkit/fileapi/file_system_url.h" 13 #include "webkit/fileapi/file_system_url.h"
14 #include "webkit/fileapi/isolated_context.h" 14 #include "webkit/fileapi/isolated_context.h"
15 #include "webkit/quota/mock_special_storage_policy.h" 15 #include "webkit/quota/mock_special_storage_policy.h"
16 16
17 #define FPL(x) FILE_PATH_LITERAL(x) 17 #define FPL(x) FILE_PATH_LITERAL(x)
18 18
19 using fileapi::ExternalMountPoints;
20 using fileapi::FileSystemURL;
21
19 namespace { 22 namespace {
20 23
21 fileapi::FileSystemURL CreateFileSystemURL(const std::string& extension, 24 FileSystemURL CreateFileSystemURL(const std::string& extension,
22 const char* path) { 25 const char* path,
23 return fileapi::FileSystemURL(GURL("chrome-extension://" + extension + "/"), 26 ExternalMountPoints* mount_points) {
24 fileapi::kFileSystemTypeNativeLocal, 27 return mount_points->CreateCrackedFileSystemURL(
25 FilePath::FromUTF8Unsafe(path)); 28 GURL("chrome-extension://" + extension + "/"),
29 fileapi::kFileSystemTypeExternal,
30 FilePath::FromUTF8Unsafe(path));
26 } 31 }
27 32
28 TEST(CrosMountPointProviderTest, DefaultMountPoints) { 33 TEST(CrosMountPointProviderTest, DefaultMountPoints) {
29 scoped_refptr<quota::SpecialStoragePolicy> storage_policy = 34 scoped_refptr<quota::SpecialStoragePolicy> storage_policy =
30 new quota::MockSpecialStoragePolicy(); 35 new quota::MockSpecialStoragePolicy();
31 scoped_refptr<fileapi::ExternalMountPoints> mount_points( 36 scoped_refptr<fileapi::ExternalMountPoints> mount_points(
32 fileapi::ExternalMountPoints::CreateRefCounted()); 37 fileapi::ExternalMountPoints::CreateRefCounted());
33 chromeos::CrosMountPointProvider provider( 38 chromeos::CrosMountPointProvider provider(
34 storage_policy, 39 storage_policy,
35 mount_points.get(), 40 mount_points.get(),
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 // Initialize mount points. 198 // Initialize mount points.
194 system_mount_points->RegisterFileSystem("system", 199 system_mount_points->RegisterFileSystem("system",
195 fileapi::kFileSystemTypeNativeLocal, 200 fileapi::kFileSystemTypeNativeLocal,
196 FilePath(FPL("/g/system"))); 201 FilePath(FPL("/g/system")));
197 ASSERT_TRUE(provider.AddLocalMountPoint(FilePath(FPL("/media/removable")))); 202 ASSERT_TRUE(provider.AddLocalMountPoint(FilePath(FPL("/media/removable"))));
198 ASSERT_TRUE(provider.AddRestrictedLocalMountPoint( 203 ASSERT_TRUE(provider.AddRestrictedLocalMountPoint(
199 FilePath(FPL("/usr/share/oem")))); 204 FilePath(FPL("/usr/share/oem"))));
200 205
201 // Provider specific mount point access. 206 // Provider specific mount point access.
202 EXPECT_FALSE(provider.IsAccessAllowed( 207 EXPECT_FALSE(provider.IsAccessAllowed(
203 CreateFileSystemURL(extension, "removable/foo"))); 208 CreateFileSystemURL(extension, "removable/foo", mount_points.get())));
204 209
205 provider.GrantFileAccessToExtension(extension, 210 provider.GrantFileAccessToExtension(extension,
206 FilePath(FPL("removable/foo"))); 211 FilePath(FPL("removable/foo")));
207 EXPECT_TRUE(provider.IsAccessAllowed( 212 EXPECT_TRUE(provider.IsAccessAllowed(
208 CreateFileSystemURL(extension, "removable/foo"))); 213 CreateFileSystemURL(extension, "removable/foo", mount_points.get())));
209 EXPECT_FALSE(provider.IsAccessAllowed( 214 EXPECT_FALSE(provider.IsAccessAllowed(
210 CreateFileSystemURL(extension, "removable/foo1"))); 215 CreateFileSystemURL(extension, "removable/foo1", mount_points.get())));
211 216
212 // System mount point access. 217 // System mount point access.
213 EXPECT_FALSE(provider.IsAccessAllowed( 218 EXPECT_FALSE(provider.IsAccessAllowed(
214 CreateFileSystemURL(extension, "system/foo"))); 219 CreateFileSystemURL(extension, "system/foo", system_mount_points.get())));
215 220
216 provider.GrantFileAccessToExtension(extension, FilePath(FPL("system/foo"))); 221 provider.GrantFileAccessToExtension(extension, FilePath(FPL("system/foo")));
217 EXPECT_TRUE(provider.IsAccessAllowed( 222 EXPECT_TRUE(provider.IsAccessAllowed(
218 CreateFileSystemURL(extension, "system/foo"))); 223 CreateFileSystemURL(extension, "system/foo", system_mount_points.get())));
219 EXPECT_FALSE(provider.IsAccessAllowed( 224 EXPECT_FALSE(provider.IsAccessAllowed(CreateFileSystemURL(
220 CreateFileSystemURL(extension, "system/foo1"))); 225 extension, "system/foo1", system_mount_points.get())));
221 226
222 // oem is restricted file system. 227 // oem is restricted file system.
223 provider.GrantFileAccessToExtension(extension, FilePath(FPL("oem/foo"))); 228 provider.GrantFileAccessToExtension(extension, FilePath(FPL("oem/foo")));
224 // The extension should not be able to access the file even if 229 // The extension should not be able to access the file even if
225 // GrantFileAccessToExtension was called. 230 // GrantFileAccessToExtension was called.
226 EXPECT_FALSE(provider.IsAccessAllowed( 231 EXPECT_FALSE(provider.IsAccessAllowed(
227 CreateFileSystemURL(extension, "oem/foo"))); 232 CreateFileSystemURL(extension, "oem/foo", mount_points.get())));
228 233
229 provider.GrantFullAccessToExtension(extension); 234 provider.GrantFullAccessToExtension(extension);
230 // The extension should be able to access restricted file system after it was 235 // The extension should be able to access restricted file system after it was
231 // granted full access. 236 // granted full access.
232 EXPECT_TRUE(provider.IsAccessAllowed( 237 EXPECT_TRUE(provider.IsAccessAllowed(
233 CreateFileSystemURL(extension, "oem/foo"))); 238 CreateFileSystemURL(extension, "oem/foo", mount_points.get())));
234 // The extension which was granted full access should be able to access any 239 // The extension which was granted full access should be able to access any
235 // path on current file systems. 240 // path on curent file systems.
236 EXPECT_TRUE(provider.IsAccessAllowed( 241 EXPECT_TRUE(provider.IsAccessAllowed(
237 CreateFileSystemURL(extension, "removable/foo1"))); 242 CreateFileSystemURL(extension, "removable/foo1", mount_points.get())));
238 EXPECT_TRUE(provider.IsAccessAllowed( 243 EXPECT_TRUE(provider.IsAccessAllowed(CreateFileSystemURL(
239 CreateFileSystemURL(extension, "system/foo1"))); 244 extension, "system/foo1", system_mount_points.get())));
240 245
241 // The extension still cannot access new mount points. 246 // The extension cannot access new mount points.
247 // TODO(tbarzic): This should probably be changed.
242 ASSERT_TRUE(provider.AddLocalMountPoint(FilePath(FPL("/foo/test")))); 248 ASSERT_TRUE(provider.AddLocalMountPoint(FilePath(FPL("/foo/test"))));
243 EXPECT_FALSE(provider.IsAccessAllowed( 249 EXPECT_FALSE(provider.IsAccessAllowed(
244 CreateFileSystemURL(extension, "test_/foo"))); 250 CreateFileSystemURL(extension, "test_/foo", mount_points.get())));
245 251
246 provider.RevokeAccessForExtension(extension); 252 provider.RevokeAccessForExtension(extension);
247 EXPECT_FALSE(provider.IsAccessAllowed( 253 EXPECT_FALSE(provider.IsAccessAllowed(
248 CreateFileSystemURL(extension, "removable/foo"))); 254 CreateFileSystemURL(extension, "removable/foo", mount_points.get())));
249 255
250 fileapi::FileSystemURL internal_url(GURL("chrome://foo"), 256 fileapi::FileSystemURL internal_url = FileSystemURL::CreateForTest(
251 fileapi::kFileSystemTypeExternal, 257 GURL("chrome://foo"),
252 FilePath(FPL("removable/"))); 258 fileapi::kFileSystemTypeExternal,
259 FilePath(FPL("removable/")));
253 // Internal WebUI should have full access. 260 // Internal WebUI should have full access.
254 EXPECT_TRUE(provider.IsAccessAllowed(internal_url)); 261 EXPECT_TRUE(provider.IsAccessAllowed(internal_url));
255 } 262 }
256 263
257 TEST(CrosMountPointProvider, GetVirtualPathConflictWithSystemPoints) { 264 TEST(CrosMountPointProvider, GetVirtualPathConflictWithSystemPoints) {
258 scoped_refptr<quota::MockSpecialStoragePolicy> storage_policy = 265 scoped_refptr<quota::MockSpecialStoragePolicy> storage_policy =
259 new quota::MockSpecialStoragePolicy(); 266 new quota::MockSpecialStoragePolicy();
260 scoped_refptr<fileapi::ExternalMountPoints> mount_points( 267 scoped_refptr<fileapi::ExternalMountPoints> mount_points(
261 fileapi::ExternalMountPoints::CreateRefCounted()); 268 fileapi::ExternalMountPoints::CreateRefCounted());
262 scoped_refptr<fileapi::ExternalMountPoints> system_mount_points( 269 scoped_refptr<fileapi::ExternalMountPoints> system_mount_points(
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 continue; 323 continue;
317 324
318 FilePath expected_virtual_path(kTestCases[i].virtual_path); 325 FilePath expected_virtual_path(kTestCases[i].virtual_path);
319 EXPECT_EQ(expected_virtual_path, virtual_path) 326 EXPECT_EQ(expected_virtual_path, virtual_path)
320 << "Resolving " << kTestCases[i].local_path; 327 << "Resolving " << kTestCases[i].local_path;
321 } 328 }
322 } 329 }
323 330
324 } // namespace 331 } // namespace
325 332
OLDNEW
« no previous file with comments | « webkit/chromeos/fileapi/cros_mount_point_provider.cc ('k') | webkit/fileapi/external_mount_points.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698