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

Unified 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, 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/file_system/file_system_apitest.cc
diff --git a/chrome/browser/extensions/api/file_system/file_system_apitest.cc b/chrome/browser/extensions/api/file_system/file_system_apitest.cc
index 08570dfca11264b087c3e2269503e8a996600d24..b26f5309e4e37a87dc81ac1be6b87a970e459d7c 100644
--- a/chrome/browser/extensions/api/file_system/file_system_apitest.cc
+++ b/chrome/browser/extensions/api/file_system/file_system_apitest.cc
@@ -11,6 +11,7 @@
#include "chrome/browser/extensions/api/file_system/file_system_api.h"
#include "chrome/browser/extensions/extension_prefs.h"
#include "chrome/common/chrome_paths.h"
+#include "chrome/common/extensions/features/feature_channel.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_service.h"
@@ -56,9 +57,11 @@ void SetLastChooseEntryDirectoryToAppDirectory(
}
void AddSavedEntry(const base::FilePath& path_to_save,
+ bool is_directory,
apps::SavedFilesService* service,
const Extension* extension) {
- service->RegisterFileEntry(extension->id(), "magic id", path_to_save);
+ service->RegisterFileEntry(
+ extension->id(), "magic id", path_to_save, is_directory);
}
} // namespace
@@ -274,6 +277,58 @@ IN_PROC_BROWSER_TEST_F(FileSystemApiTest,
<< message_;
}
+IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiOpenDirectoryTest) {
+ ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_UNKNOWN);
+ base::FilePath test_file = TempFilePath("open_existing.txt", true);
+ ASSERT_FALSE(test_file.empty());
+ base::FilePath test_directory = test_file.DirName();
+ FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest(
+ &test_directory);
+ ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/open_directory"))
+ << message_;
+ CheckStoredDirectoryMatches(test_file);
+}
+
+IN_PROC_BROWSER_TEST_F(FileSystemApiTest,
+ FileSystemApiOpenDirectoryWithWriteTest) {
+ ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_UNKNOWN);
+ base::FilePath test_file = TempFilePath("open_existing.txt", true);
+ ASSERT_FALSE(test_file.empty());
+ base::FilePath test_directory = test_file.DirName();
+ FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest(
+ &test_directory);
+ ASSERT_TRUE(
+ RunPlatformAppTest("api_test/file_system/open_directory_with_write"))
+ << message_;
+ CheckStoredDirectoryMatches(test_file);
+}
+
+IN_PROC_BROWSER_TEST_F(FileSystemApiTest,
+ FileSystemApiOpenDirectoryWithoutPermissionTest) {
+ base::FilePath test_file = TempFilePath("open_existing.txt", true);
+ ASSERT_FALSE(test_file.empty());
+ base::FilePath test_directory = test_file.DirName();
+ FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest(
+ &test_directory);
+ ASSERT_TRUE(RunPlatformAppTest(
+ "api_test/file_system/open_directory_without_permission"))
+ << message_;
+ CheckStoredDirectoryMatches(base::FilePath());
+}
+
+IN_PROC_BROWSER_TEST_F(FileSystemApiTest,
+ FileSystemApiOpenDirectoryWithOnlyWritePermissionTest) {
+ base::FilePath test_file = TempFilePath("open_existing.txt", true);
+ ASSERT_FALSE(test_file.empty());
+ base::FilePath test_directory = test_file.DirName();
+ FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest(
+ &test_directory);
+ ASSERT_TRUE(RunPlatformAppTest(
+ "api_test/file_system/open_directory_with_only_write"))
+ << message_;
+ CheckStoredDirectoryMatches(base::FilePath());
+}
+
IN_PROC_BROWSER_TEST_F(FileSystemApiTest,
FileSystemApiInvalidChooseEntryTypeTest) {
base::FilePath test_file = TempFilePath("open_existing.txt", true);
@@ -468,17 +523,51 @@ IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiRetainEntry) {
EXPECT_EQ(1, file_entries[0].sequence_number);
}
+IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiRetainDirectoryEntry) {
+ ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_UNKNOWN);
+ base::FilePath test_file = TempFilePath("open_existing.txt", true);
+ ASSERT_FALSE(test_file.empty());
+ base::FilePath test_directory = test_file.DirName();
+ FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest(
+ &test_directory);
+ ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/retain_directory"))
+ << message_;
+ std::vector<apps::SavedFileEntry> file_entries = apps::SavedFilesService::Get(
+ profile())->GetAllFileEntries(GetSingleLoadedExtension()->id());
+ ASSERT_EQ(1u, file_entries.size());
+ EXPECT_EQ(test_directory, file_entries[0].path);
+ EXPECT_EQ(1, file_entries[0].sequence_number);
+ EXPECT_TRUE(file_entries[0].is_directory);
+}
+
IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiRestoreEntry) {
base::FilePath test_file = TempFilePath("writable.txt", true);
ASSERT_FALSE(test_file.empty());
FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest(
&test_file);
- {
- AppInstallObserver observer(base::Bind(
- AddSavedEntry, test_file, apps::SavedFilesService::Get(profile())));
- ASSERT_TRUE(RunPlatformAppTest(
- "api_test/file_system/restore_entry")) << message_;
- }
+ AppInstallObserver observer(
+ base::Bind(AddSavedEntry,
+ test_file,
+ false,
+ apps::SavedFilesService::Get(profile())));
+ ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/restore_entry"))
+ << message_;
+}
+
+IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiRestoreDirectoryEntry) {
+ ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_UNKNOWN);
+ base::FilePath test_file = TempFilePath("writable.txt", true);
+ ASSERT_FALSE(test_file.empty());
+ base::FilePath test_directory = test_file.DirName();
+ FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest(
+ &test_file);
+ AppInstallObserver observer(
+ base::Bind(AddSavedEntry,
+ test_directory,
+ true,
+ apps::SavedFilesService::Get(profile())));
+ ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/restore_directory"))
+ << message_;
}
} // namespace extensions
« no previous file with comments | « chrome/browser/extensions/api/file_system/file_system_api.cc ('k') | chrome/common/extensions/api/_permission_features.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698