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

Side by Side Diff: chrome/browser/extensions/api/file_system/file_system_apitest.cc

Issue 23146016: Add support for directory access to the file system API. (Closed) Base URL: http://git.chromium.org/chromium/src.git@simpler-write-permissions
Patch Set: Created 7 years, 3 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "apps/saved_files_service.h" 5 #include "apps/saved_files_service.h"
6 #include "base/file_util.h" 6 #include "base/file_util.h"
7 #include "base/path_service.h" 7 #include "base/path_service.h"
8 #include "build/build_config.h" 8 #include "build/build_config.h"
9 #include "chrome/browser/apps/app_browsertest_util.h" 9 #include "chrome/browser/apps/app_browsertest_util.h"
10 #include "chrome/browser/chrome_notification_types.h" 10 #include "chrome/browser/chrome_notification_types.h"
11 #include "chrome/browser/extensions/api/file_system/file_system_api.h" 11 #include "chrome/browser/extensions/api/file_system/file_system_api.h"
12 #include "chrome/browser/extensions/extension_prefs.h" 12 #include "chrome/browser/extensions/extension_prefs.h"
13 #include "chrome/common/chrome_paths.h" 13 #include "chrome/common/chrome_paths.h"
14 #include "chrome/common/extensions/features/feature_channel.h"
14 #include "content/public/browser/notification_observer.h" 15 #include "content/public/browser/notification_observer.h"
15 #include "content/public/browser/notification_service.h" 16 #include "content/public/browser/notification_service.h"
16 17
17 namespace extensions { 18 namespace extensions {
18 19
19 namespace { 20 namespace {
20 21
21 class AppInstallObserver : public content::NotificationObserver { 22 class AppInstallObserver : public content::NotificationObserver {
22 public: 23 public:
23 AppInstallObserver( 24 AppInstallObserver(
(...skipping 25 matching lines...) Expand all
49 } 50 }
50 51
51 void SetLastChooseEntryDirectoryToAppDirectory( 52 void SetLastChooseEntryDirectoryToAppDirectory(
52 ExtensionPrefs* prefs, 53 ExtensionPrefs* prefs,
53 const Extension* extension) { 54 const Extension* extension) {
54 file_system_api::SetLastChooseEntryDirectory( 55 file_system_api::SetLastChooseEntryDirectory(
55 prefs, extension->id(), extension->path()); 56 prefs, extension->id(), extension->path());
56 } 57 }
57 58
58 void AddSavedEntry(const base::FilePath& path_to_save, 59 void AddSavedEntry(const base::FilePath& path_to_save,
60 bool is_directory,
59 apps::SavedFilesService* service, 61 apps::SavedFilesService* service,
60 const Extension* extension) { 62 const Extension* extension) {
61 service->RegisterFileEntry(extension->id(), "magic id", path_to_save); 63 service->RegisterFileEntry(
64 extension->id(), "magic id", path_to_save, is_directory);
62 } 65 }
63 66
64 } // namespace 67 } // namespace
65 68
66 class FileSystemApiTest : public PlatformAppBrowserTest { 69 class FileSystemApiTest : public PlatformAppBrowserTest {
67 public: 70 public:
68 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 71 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
69 PlatformAppBrowserTest::SetUpCommandLine(command_line); 72 PlatformAppBrowserTest::SetUpCommandLine(command_line);
70 test_root_folder_ = test_data_dir_.AppendASCII("api_test") 73 test_root_folder_ = test_data_dir_.AppendASCII("api_test")
71 .AppendASCII("file_system"); 74 .AppendASCII("file_system");
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 names.push_back("open_existing1.txt"); 266 names.push_back("open_existing1.txt");
264 names.push_back("open_existing2.txt"); 267 names.push_back("open_existing2.txt");
265 std::vector<base::FilePath> test_files = TempFilePaths(names, true); 268 std::vector<base::FilePath> test_files = TempFilePaths(names, true);
266 ASSERT_EQ(2u, test_files.size()); 269 ASSERT_EQ(2u, test_files.size());
267 FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathsForTest( 270 FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathsForTest(
268 &test_files); 271 &test_files);
269 ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/open_multiple_existing")) 272 ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/open_multiple_existing"))
270 << message_; 273 << message_;
271 } 274 }
272 275
276 IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiOpenDirectoryTest) {
277 ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_UNKNOWN);
278 base::FilePath test_file = TempFilePath("open_existing.txt", true);
279 ASSERT_FALSE(test_file.empty());
280 base::FilePath test_directory = test_file.DirName();
281 FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest(
282 &test_directory);
283 ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/open_directory"))
284 << message_;
285 CheckStoredDirectoryMatches(test_file);
286 }
287
288 IN_PROC_BROWSER_TEST_F(FileSystemApiTest,
289 FileSystemApiOpenDirectoryWithWriteTest) {
290 ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_UNKNOWN);
291 base::FilePath test_file = TempFilePath("open_existing.txt", true);
292 ASSERT_FALSE(test_file.empty());
293 base::FilePath test_directory = test_file.DirName();
294 FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest(
295 &test_directory);
296 ASSERT_TRUE(
297 RunPlatformAppTest("api_test/file_system/open_directory_with_write"))
298 << message_;
299 CheckStoredDirectoryMatches(test_file);
300 }
301
302 IN_PROC_BROWSER_TEST_F(FileSystemApiTest,
303 FileSystemApiOpenDirectoryWithoutPermissionTest) {
304 base::FilePath test_file = TempFilePath("open_existing.txt", true);
305 ASSERT_FALSE(test_file.empty());
306 base::FilePath test_directory = test_file.DirName();
307 FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest(
308 &test_directory);
309 ASSERT_TRUE(RunPlatformAppTest(
310 "api_test/file_system/open_directory_without_permission"))
311 << message_;
312 CheckStoredDirectoryMatches(base::FilePath());
313 }
314
273 IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 315 IN_PROC_BROWSER_TEST_F(FileSystemApiTest,
274 FileSystemApiInvalidChooseEntryTypeTest) { 316 FileSystemApiInvalidChooseEntryTypeTest) {
275 base::FilePath test_file = TempFilePath("open_existing.txt", true); 317 base::FilePath test_file = TempFilePath("open_existing.txt", true);
276 ASSERT_FALSE(test_file.empty()); 318 ASSERT_FALSE(test_file.empty());
277 FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 319 FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest(
278 &test_file); 320 &test_file);
279 ASSERT_TRUE(RunPlatformAppTest( 321 ASSERT_TRUE(RunPlatformAppTest(
280 "api_test/file_system/invalid_choose_file_type")) << message_; 322 "api_test/file_system/invalid_choose_file_type")) << message_;
281 CheckStoredDirectoryMatches(base::FilePath()); 323 CheckStoredDirectoryMatches(base::FilePath());
282 } 324 }
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 &test_file); 499 &test_file);
458 ASSERT_TRUE(RunPlatformAppTest( 500 ASSERT_TRUE(RunPlatformAppTest(
459 "api_test/file_system/retain_entry")) << message_; 501 "api_test/file_system/retain_entry")) << message_;
460 std::vector<apps::SavedFileEntry> file_entries = apps::SavedFilesService::Get( 502 std::vector<apps::SavedFileEntry> file_entries = apps::SavedFilesService::Get(
461 profile())->GetAllFileEntries(GetSingleLoadedExtension()->id()); 503 profile())->GetAllFileEntries(GetSingleLoadedExtension()->id());
462 ASSERT_EQ(1u, file_entries.size()); 504 ASSERT_EQ(1u, file_entries.size());
463 EXPECT_EQ(test_file, file_entries[0].path); 505 EXPECT_EQ(test_file, file_entries[0].path);
464 EXPECT_EQ(1, file_entries[0].sequence_number); 506 EXPECT_EQ(1, file_entries[0].sequence_number);
465 } 507 }
466 508
509 IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiRetainDirectoryEntry) {
510 ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_UNKNOWN);
511 base::FilePath test_file = TempFilePath("open_existing.txt", true);
512 ASSERT_FALSE(test_file.empty());
513 base::FilePath test_directory = test_file.DirName();
514 FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest(
515 &test_directory);
516 ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/retain_directory"))
517 << message_;
518 std::vector<apps::SavedFileEntry> file_entries = apps::SavedFilesService::Get(
519 profile())->GetAllFileEntries(GetSingleLoadedExtension()->id());
520 ASSERT_EQ(1u, file_entries.size());
521 EXPECT_EQ(test_directory, file_entries[0].path);
522 EXPECT_EQ(1, file_entries[0].sequence_number);
523 EXPECT_TRUE(file_entries[0].is_directory);
524 }
525
467 IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiRestoreEntry) { 526 IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiRestoreEntry) {
468 base::FilePath test_file = TempFilePath("writable.txt", true); 527 base::FilePath test_file = TempFilePath("writable.txt", true);
469 ASSERT_FALSE(test_file.empty()); 528 ASSERT_FALSE(test_file.empty());
470 FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 529 FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest(
471 &test_file); 530 &test_file);
472 { 531 {
473 AppInstallObserver observer(base::Bind( 532 AppInstallObserver observer(
474 AddSavedEntry, test_file, apps::SavedFilesService::Get(profile()))); 533 base::Bind(AddSavedEntry,
534 test_file,
535 false,
536 apps::SavedFilesService::Get(profile())));
475 ASSERT_TRUE(RunPlatformAppTest( 537 ASSERT_TRUE(RunPlatformAppTest(
476 "api_test/file_system/restore_entry")) << message_; 538 "api_test/file_system/restore_entry")) << message_;
477 } 539 }
478 } 540 }
479 541
542 IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiRestoreDirectoryEntry) {
543 ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_UNKNOWN);
544 base::FilePath test_file = TempFilePath("writable.txt", true);
545 ASSERT_FALSE(test_file.empty());
546 base::FilePath test_directory = test_file.DirName();
547 FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest(
548 &test_file);
549 {
550 AppInstallObserver observer(
551 base::Bind(AddSavedEntry,
552 test_directory,
553 true,
554 apps::SavedFilesService::Get(profile())));
555 ASSERT_TRUE(RunPlatformAppTest(
556 "api_test/file_system/restore_directory")) << message_;
557 }
558 }
559
480 } // namespace extensions 560 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698