Index: chrome/browser/chromeos/extensions/external_filesystem_apitest.cc |
diff --git a/chrome/browser/chromeos/extensions/external_filesystem_apitest.cc b/chrome/browser/chromeos/extensions/external_filesystem_apitest.cc |
index 0d2f09102492a593c4cecd1c4594b93ba82186d2..b4379a8e16e89a4399fb6bb2a753f49c1ad88022 100644 |
--- a/chrome/browser/chromeos/extensions/external_filesystem_apitest.cc |
+++ b/chrome/browser/chromeos/extensions/external_filesystem_apitest.cc |
@@ -43,8 +43,8 @@ namespace { |
// These should match the counterparts in remote.js. |
// Also, the size of the file in |kTestRootFeed| has to be set to |
-// |size(kTestFileContents)|. |
-const char kTestFileContents[] = "hello, world"; |
+// length of kTestFileContent string. |
+const char kTestFileContent[] = "hello, world!"; |
// Contains a folder entry for the folder 'Folder' that will be 'created'. |
const char kTestDirectory[] = "new_folder_entry.json"; |
@@ -136,10 +136,10 @@ ACTION_P2(MockGetDocumentEntryCallback, status, value) { |
} |
// Creates a cache representation of the test file with predetermined content. |
-void CreateDownloadFile(const FilePath& path) { |
- int file_content_size = static_cast<int>(sizeof(kTestFileContents)); |
- ASSERT_EQ(file_content_size, |
- file_util::WriteFile(path, kTestFileContents, file_content_size)); |
+void CreateFileWithContent(const FilePath& path, const std::string& content) { |
+ int content_size = static_cast<int>(content.length()); |
+ ASSERT_EQ(content_size, |
+ file_util::WriteFile(path, content.c_str(), content_size)); |
} |
// Action used to set mock expectations for DownloadFile(). |
@@ -147,7 +147,7 @@ ACTION_P(MockDownloadFileCallback, status) { |
ASSERT_TRUE(content::BrowserThread::PostTaskAndReply( |
content::BrowserThread::FILE, |
FROM_HERE, |
- base::Bind(&CreateDownloadFile, arg1), |
+ base::Bind(&CreateFileWithContent, arg1, kTestFileContent), |
base::Bind(arg3, status, arg2, arg1))); |
} |
@@ -189,6 +189,56 @@ class FileSystemExtensionApiTest : public ExtensionApiTest { |
FilePath test_mount_point_; |
}; |
+class RestrictedFileSystemExtensionApiTest : public ExtensionApiTest { |
+ public: |
+ RestrictedFileSystemExtensionApiTest() {} |
+ |
+ virtual ~RestrictedFileSystemExtensionApiTest() {} |
+ |
+ virtual void SetUp() OVERRIDE { |
+ FilePath tmp_path; |
+ PathService::Get(base::DIR_TEMP, &tmp_path); |
+ ASSERT_TRUE(tmp_dir_.CreateUniqueTempDirUnderPath(tmp_path)); |
+ mount_point_dir_ = tmp_dir_.path().Append("mount"); |
+ // Create the mount point. |
+ file_util::CreateDirectory(mount_point_dir_); |
+ |
+ FilePath test_dir = mount_point_dir_.Append("test_dir"); |
+ file_util::CreateDirectory(test_dir); |
+ |
+ FilePath test_file = test_dir.AppendASCII("test_file.foo"); |
+ CreateFileWithContent(test_file, kTestFileContent); |
+ |
+ test_file = test_dir.AppendASCII("mutable_test_file.foo"); |
+ CreateFileWithContent(test_file, kTestFileContent); |
+ |
+ test_file = test_dir.AppendASCII("test_file_to_delete.foo"); |
+ CreateFileWithContent(test_file, kTestFileContent); |
+ |
+ test_file = test_dir.AppendASCII("test_file_to_move.foo"); |
+ CreateFileWithContent(test_file, kTestFileContent); |
+ |
+ // Create test files. |
+ ExtensionApiTest::SetUp(); |
+ } |
+ |
+ virtual void TearDown() OVERRIDE { |
+ ExtensionApiTest::TearDown(); |
+ } |
+ |
+ void AddRestrictedMountPoint() { |
+ fileapi::ExternalFileSystemMountPointProvider* provider = |
+ BrowserContext::GetDefaultStoragePartition( |
+ browser()->profile())->GetFileSystemContext()->external_provider(); |
+ provider->AddRestrictedLocalMountPoint(mount_point_dir_); |
+ } |
+ |
+ protected: |
+ ScopedTempDir tmp_dir_; |
+ FilePath mount_point_dir_; |
+}; |
+ |
+ |
class RemoteFileSystemExtensionApiTest : public ExtensionApiTest { |
public: |
RemoteFileSystemExtensionApiTest() {} |
@@ -256,7 +306,7 @@ IN_PROC_BROWSER_TEST_F(FileSystemExtensionApiTest, FileBrowserWebIntentTest) { |
// Create a test file inside the ScopedTempDir. |
FilePath test_file = tmp_dir.path().AppendASCII("text_file.xul"); |
- CreateDownloadFile(test_file); |
+ CreateFileWithContent(test_file, kTestFileContent); |
ASSERT_TRUE(LoadExtension( |
test_data_dir_.AppendASCII("webintent_handler"))) << message_; |
@@ -300,6 +350,12 @@ IN_PROC_BROWSER_TEST_F(FileSystemExtensionApiTest, |
"filebrowser_component", "write.html", kComponentFlags)) << message_; |
} |
+IN_PROC_BROWSER_TEST_F(RestrictedFileSystemExtensionApiTest, Basic) { |
+ AddRestrictedMountPoint(); |
+ ASSERT_TRUE(RunExtensionSubtest( |
+ "filebrowser_component", "restricted.html", kComponentFlags)) << message_; |
+} |
+ |
IN_PROC_BROWSER_TEST_F(RemoteFileSystemExtensionApiTest, |
RemoteMountPoint) { |
EXPECT_CALL(*mock_drive_service_, GetAccountMetadata(_)).Times(1); |