15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "apps/saved_files_service.h" 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/files/file_util.h" 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/path_service.h" 86d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include "base/scoped_observer.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "build/build_config.h" 103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/apps/app_browsertest_util.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/api/file_system/file_system_api.h" 12a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/common/chrome_paths.h" 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/browser/extension_prefs.h" 156d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include "extensions/browser/extension_registry.h" 166d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include "extensions/browser/extension_registry_observer.h" 176d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 186d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)namespace content { 196d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)class BrowserContext; 206d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)} 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace extensions { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace { 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 266d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)class AppLoadObserver : public ExtensionRegistryObserver { 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 286d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) AppLoadObserver(content::BrowserContext* browser_context, 296d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) base::Callback<void(const Extension*)> callback) 306d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) : callback_(callback), extension_registry_observer_(this) { 316d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context)); 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 346d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) virtual void OnExtensionLoaded(content::BrowserContext* browser_context, 356d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) const Extension* extension) OVERRIDE { 366d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) callback_.Run(extension); 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::Callback<void(const Extension*)> callback_; 416d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver> 426d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) extension_registry_observer_; 436d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AppLoadObserver); 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void SetLastChooseEntryDirectory(const base::FilePath& choose_entry_directory, 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ExtensionPrefs* prefs, 48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const Extension* extension) { 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch file_system_api::SetLastChooseEntryDirectory( 50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch prefs, extension->id(), choose_entry_directory); 5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void AddSavedEntry(const base::FilePath& path_to_save, 54424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) bool is_directory, 5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) apps::SavedFilesService* service, 56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const Extension* extension) { 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) service->RegisterFileEntry( 58424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) extension->id(), "magic id", path_to_save, is_directory); 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 61a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)const int kGraylistedPath = base::DIR_HOME; 6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 65eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass FileSystemApiTest : public PlatformAppBrowserTest { 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 68eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PlatformAppBrowserTest::SetUpCommandLine(command_line); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_root_folder_ = test_data_dir_.AppendASCII("api_test") 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .AppendASCII("file_system"); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FileSystemChooseEntryFunction::RegisterTempExternalFileSystemForTest( 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "test_root", test_root_folder_); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) virtual void SetUpOnMainThread() OVERRIDE { 76424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ClearCommandLineArgs(); 77424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) } 78424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void TearDown() OVERRIDE { 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemChooseEntryFunction::StopSkippingPickerForTest(); 81eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PlatformAppBrowserTest::TearDown(); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath TempFilePath(const std::string& destination_name, 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool copy_gold) { 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!temp_dir_.CreateUniqueTempDir()) { 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ADD_FAILURE() << "CreateUniqueTempDir failed"; 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return base::FilePath(); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FileSystemChooseEntryFunction::RegisterTempExternalFileSystemForTest( 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "test_temp", temp_dir_.path()); 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath destination = temp_dir_.path().AppendASCII(destination_name); 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (copy_gold) { 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath source = test_root_folder_.AppendASCII("gold.txt"); 977dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(base::CopyFile(source, destination)); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return destination; 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 102a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) std::vector<base::FilePath> TempFilePaths( 103a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) const std::vector<std::string>& destination_names, 104a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) bool copy_gold) { 105a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (!temp_dir_.CreateUniqueTempDir()) { 106a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ADD_FAILURE() << "CreateUniqueTempDir failed"; 107a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) return std::vector<base::FilePath>(); 108a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 109a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) FileSystemChooseEntryFunction::RegisterTempExternalFileSystemForTest( 110a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) "test_temp", temp_dir_.path()); 111a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 112a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) std::vector<base::FilePath> result; 113a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) for (std::vector<std::string>::const_iterator it = 114a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) destination_names.begin(); 115a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) it != destination_names.end(); ++it) { 116a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) base::FilePath destination = temp_dir_.path().AppendASCII(*it); 117a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (copy_gold) { 118a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) base::FilePath source = test_root_folder_.AppendASCII("gold.txt"); 119a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) EXPECT_TRUE(base::CopyFile(source, destination)); 120a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 121a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) result.push_back(destination); 122a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 123a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) return result; 124a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 125a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void CheckStoredDirectoryMatches(const base::FilePath& filename) { 127eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const Extension* extension = GetSingleLoadedExtension(); 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(extension); 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string extension_id = extension->id(); 130eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ExtensionPrefs* prefs = ExtensionPrefs::Get(profile()); 1310f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) base::FilePath stored_value = 1320f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) file_system_api::GetLastChooseEntryDirectory(prefs, extension_id); 133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (filename.empty()) { 1340f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(stored_value.empty()); 135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } else { 136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(base::MakeAbsoluteFilePath(filename.DirName()), 137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::MakeAbsoluteFilePath(stored_value)); 138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_root_folder_; 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::ScopedTempDir temp_dir_; 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiGetDisplayPath) { 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_file = test_root_folder_.AppendASCII("gold.txt"); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &test_file); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/get_display_path")) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << message_; 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) || defined(OS_POSIX) 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiGetDisplayPathPrettify) { 155a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(PathService::OverrideAndCreateIfNeeded(base::DIR_HOME, 156010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) test_root_folder_, false, false)); 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_file = test_root_folder_.AppendASCII("gold.txt"); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &test_file); 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest( 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "api_test/file_system/get_display_path_prettify")) << message_; 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemApiGetDisplayPathPrettifyMac) { 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // On Mac, "test.localized" will be localized into just "test". 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_path = TempFilePath("test.localized", false); 171a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ASSERT_TRUE(base::CreateDirectory(test_path)); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_file = test_path.AppendASCII("gold.txt"); 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath source = test_root_folder_.AppendASCII("gold.txt"); 1757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(base::CopyFile(source, test_file)); 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &test_file); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest( 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "api_test/file_system/get_display_path_prettify_mac")) << message_; 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiOpenExistingFileTest) { 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_file = TempFilePath("open_existing.txt", true); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &test_file); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/open_existing")) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << message_; 191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckStoredDirectoryMatches(test_file); 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FileSystemApiOpenExistingFileUsingPreviousPathTest) { 196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::FilePath test_file = TempFilePath("open_existing.txt", true); 197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_FALSE(test_file.empty()); 198c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FileSystemChooseEntryFunction:: 199c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SkipPickerAndSelectSuggestedPathForTest(); 200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 2016d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) AppLoadObserver observer(profile(), 2026d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) base::Bind(SetLastChooseEntryDirectory, 2036d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) test_file.DirName(), 2046d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) ExtensionPrefs::Get(profile()))); 205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/open_existing")) 206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << message_; 207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 208c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckStoredDirectoryMatches(test_file); 209c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 210c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 211c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 212c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FileSystemApiOpenExistingFilePreviousPathDoesNotExistTest) { 213c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::FilePath test_file = TempFilePath("open_existing.txt", true); 214c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_FALSE(test_file.empty()); 215c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(PathService::OverrideAndCreateIfNeeded( 216010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) chrome::DIR_USER_DOCUMENTS, test_file.DirName(), false, false)); 217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FileSystemChooseEntryFunction:: 218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SkipPickerAndSelectSuggestedPathForTest(); 219c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 2206d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) AppLoadObserver observer( 2216d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) profile(), 2226d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) base::Bind(SetLastChooseEntryDirectory, 2236d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) test_file.DirName().Append(base::FilePath::FromUTF8Unsafe( 2246d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) "fake_directory_does_not_exist")), 2256d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) ExtensionPrefs::Get(profile()))); 226c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/open_existing")) 227c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << message_; 228c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 229c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckStoredDirectoryMatches(test_file); 230c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 231c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 232c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 233c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FileSystemApiOpenExistingFileDefaultPathTest) { 234c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::FilePath test_file = TempFilePath("open_existing.txt", true); 235c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_FALSE(test_file.empty()); 236c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(PathService::OverrideAndCreateIfNeeded( 237010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) chrome::DIR_USER_DOCUMENTS, test_file.DirName(), false, false)); 238c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FileSystemChooseEntryFunction:: 239c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SkipPickerAndSelectSuggestedPathForTest(); 240c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/open_existing")) 241c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << message_; 242c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckStoredDirectoryMatches(test_file); 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiOpenMultipleSuggested) { 246a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) base::FilePath test_file = TempFilePath("open_existing.txt", true); 247a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 248a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ASSERT_TRUE(PathService::OverrideAndCreateIfNeeded( 249010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) chrome::DIR_USER_DOCUMENTS, test_file.DirName(), false, false)); 250a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndSelectSuggestedPathForTest(); 251a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest( 252a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) "api_test/file_system/open_multiple_with_suggested_name")) 253a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) << message_; 254a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) CheckStoredDirectoryMatches(test_file); 255a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 256a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 257a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 258a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) FileSystemApiOpenMultipleExistingFilesTest) { 259a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) std::vector<std::string> names; 260a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) names.push_back("open_existing1.txt"); 261a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) names.push_back("open_existing2.txt"); 262a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) std::vector<base::FilePath> test_files = TempFilePaths(names, true); 263a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ASSERT_EQ(2u, test_files.size()); 264a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathsForTest( 265a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) &test_files); 266a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/open_multiple_existing")) 267a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) << message_; 268a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 269a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 270424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiOpenDirectoryTest) { 271424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) base::FilePath test_file = TempFilePath("open_existing.txt", true); 272424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 273424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) base::FilePath test_directory = test_file.DirName(); 274424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 275424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) &test_directory); 276424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/open_directory")) 277424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) << message_; 278424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) CheckStoredDirectoryMatches(test_file); 279424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} 280424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 281424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 282424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) FileSystemApiOpenDirectoryWithWriteTest) { 283424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) base::FilePath test_file = TempFilePath("open_existing.txt", true); 284424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 285424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) base::FilePath test_directory = test_file.DirName(); 286424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 287424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) &test_directory); 288424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_TRUE( 289424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) RunPlatformAppTest("api_test/file_system/open_directory_with_write")) 290424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) << message_; 291424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) CheckStoredDirectoryMatches(test_file); 292424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} 293424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 294424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 295424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) FileSystemApiOpenDirectoryWithoutPermissionTest) { 296424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) base::FilePath test_file = TempFilePath("open_existing.txt", true); 297424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 298424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) base::FilePath test_directory = test_file.DirName(); 299424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 300424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) &test_directory); 301424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest( 302424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) "api_test/file_system/open_directory_without_permission")) 303424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) << message_; 304424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) CheckStoredDirectoryMatches(base::FilePath()); 305424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} 306424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 307424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 308424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) FileSystemApiOpenDirectoryWithOnlyWritePermissionTest) { 309424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) base::FilePath test_file = TempFilePath("open_existing.txt", true); 310424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 311424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) base::FilePath test_directory = test_file.DirName(); 312424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 313424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) &test_directory); 314424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest( 315424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) "api_test/file_system/open_directory_with_only_write")) 316424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) << message_; 317424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) CheckStoredDirectoryMatches(base::FilePath()); 318424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} 319424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 32058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#if defined(OS_WIN) || defined(OS_POSIX) 32158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 32258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) FileSystemApiOpenDirectoryOnGraylistAndAllowTest) { 32358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) FileSystemChooseEntryFunction::SkipDirectoryConfirmationForTest(); 32458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::FilePath test_file = TempFilePath("open_existing.txt", true); 32558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ASSERT_FALSE(test_file.empty()); 32658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::FilePath test_directory = test_file.DirName(); 32758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ASSERT_TRUE(PathService::OverrideAndCreateIfNeeded( 328010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) kGraylistedPath, test_directory, false, false)); 32958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 33058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) &test_directory); 33158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/open_directory")) 33258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) << message_; 33358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) CheckStoredDirectoryMatches(test_file); 33458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 33558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 33658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 33758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) FileSystemApiOpenDirectoryOnGraylistTest) { 33858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) FileSystemChooseEntryFunction::AutoCancelDirectoryConfirmationForTest(); 33958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::FilePath test_file = TempFilePath("open_existing.txt", true); 34058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ASSERT_FALSE(test_file.empty()); 34158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::FilePath test_directory = test_file.DirName(); 34258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ASSERT_TRUE(PathService::OverrideAndCreateIfNeeded( 343010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) kGraylistedPath, test_directory, false, false)); 34458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 34558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) &test_directory); 34658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/open_directory_cancel")) 34758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) << message_; 34858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) CheckStoredDirectoryMatches(test_file); 34958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 35058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 35158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 35258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) FileSystemApiOpenDirectoryContainingGraylistTest) { 35358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) FileSystemChooseEntryFunction::AutoCancelDirectoryConfirmationForTest(); 35458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::FilePath test_file = TempFilePath("open_existing.txt", true); 35558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ASSERT_FALSE(test_file.empty()); 35658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::FilePath test_directory = test_file.DirName(); 35758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::FilePath parent_directory = test_directory.DirName(); 35858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ASSERT_TRUE(PathService::OverrideAndCreateIfNeeded( 359010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) kGraylistedPath, test_directory, false, false)); 36058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 36158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) &parent_directory); 36258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/open_directory_cancel")) 36358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) << message_; 36458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) CheckStoredDirectoryMatches(test_directory); 36558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 36658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 36758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Test that choosing a subdirectory of a path does not require confirmation. 36858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 36958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) FileSystemApiOpenDirectorySubdirectoryOfGraylistTest) { 37058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // If a dialog is erroneously displayed, auto cancel it, so that the test 37158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // fails. 37258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) FileSystemChooseEntryFunction::AutoCancelDirectoryConfirmationForTest(); 37358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::FilePath test_file = TempFilePath("open_existing.txt", true); 37458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ASSERT_FALSE(test_file.empty()); 37558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::FilePath test_directory = test_file.DirName(); 37658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::FilePath parent_directory = test_directory.DirName(); 37758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ASSERT_TRUE(PathService::OverrideAndCreateIfNeeded( 378010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) kGraylistedPath, parent_directory, false, false)); 37958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 38058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) &test_directory); 38158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/open_directory")) 38258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) << message_; 38358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) CheckStoredDirectoryMatches(test_file); 38458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 38558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif // defined(OS_WIN) || defined(OS_POSIX) 38658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemApiInvalidChooseEntryTypeTest) { 3892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_file = TempFilePath("open_existing.txt", true); 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &test_file); 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest( 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "api_test/file_system/invalid_choose_file_type")) << message_; 395c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckStoredDirectoryMatches(base::FilePath()); 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 398868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// http://crbug.com/177163 399868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#if defined(OS_WIN) && !defined(NDEBUG) 400868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#define MAYBE_FileSystemApiOpenExistingFileWithWriteTest DISABLED_FileSystemApiOpenExistingFileWithWriteTest 401868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#else 402868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#define MAYBE_FileSystemApiOpenExistingFileWithWriteTest FileSystemApiOpenExistingFileWithWriteTest 403868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#endif 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 405868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) MAYBE_FileSystemApiOpenExistingFileWithWriteTest) { 4062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_file = TempFilePath("open_existing.txt", true); 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &test_file); 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest( 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "api_test/file_system/open_existing_with_write")) << message_; 412c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckStoredDirectoryMatches(test_file); 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemApiOpenWritableExistingFileTest) { 4172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_file = TempFilePath("open_existing.txt", true); 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &test_file); 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest( 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "api_test/file_system/open_writable_existing")) << message_; 423c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckStoredDirectoryMatches(base::FilePath()); 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemApiOpenWritableExistingFileWithWriteTest) { 4282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_file = TempFilePath("open_existing.txt", true); 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &test_file); 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest( 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "api_test/file_system/open_writable_existing_with_write")) << message_; 434c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckStoredDirectoryMatches(test_file); 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 437a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 438a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) FileSystemApiOpenMultipleWritableExistingFilesTest) { 439a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) std::vector<std::string> names; 440a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) names.push_back("open_existing1.txt"); 441a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) names.push_back("open_existing2.txt"); 442a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) std::vector<base::FilePath> test_files = TempFilePaths(names, true); 443a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ASSERT_EQ(2u, test_files.size()); 444a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathsForTest( 445a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) &test_files); 446a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest( 447a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) "api_test/file_system/open_multiple_writable_existing_with_write")) 448a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) << message_; 449a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 450a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiOpenCancelTest) { 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysCancelForTest(); 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/open_cancel")) 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << message_; 455c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckStoredDirectoryMatches(base::FilePath()); 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiOpenBackgroundTest) { 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/open_background")) 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << message_; 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiSaveNewFileTest) { 4642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_file = TempFilePath("save_new.txt", false); 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &test_file); 4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/save_new")) 4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << message_; 470c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckStoredDirectoryMatches(base::FilePath()); 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiSaveExistingFileTest) { 4742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_file = TempFilePath("save_existing.txt", true); 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &test_file); 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/save_existing")) 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << message_; 480c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckStoredDirectoryMatches(base::FilePath()); 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemApiSaveNewFileWithWriteTest) { 4852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_file = TempFilePath("save_new.txt", false); 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &test_file); 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/save_new_with_write")) 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << message_; 491c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckStoredDirectoryMatches(test_file); 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemApiSaveExistingFileWithWriteTest) { 4962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_file = TempFilePath("save_existing.txt", true); 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &test_file); 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest( 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "api_test/file_system/save_existing_with_write")) << message_; 502c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CheckStoredDirectoryMatches(test_file); 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiSaveMultipleFilesTest) { 506a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) std::vector<std::string> names; 507a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) names.push_back("save1.txt"); 508a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) names.push_back("save2.txt"); 509a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) std::vector<base::FilePath> test_files = TempFilePaths(names, false); 510a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ASSERT_EQ(2u, test_files.size()); 511a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathsForTest( 512a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) &test_files); 513a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/save_multiple")) 514a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) << message_; 515a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 516a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiSaveCancelTest) { 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysCancelForTest(); 5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/save_cancel")) 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << message_; 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiSaveBackgroundTest) { 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/save_background")) 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << message_; 5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiGetWritableTest) { 5292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_file = TempFilePath("writable.txt", true); 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &test_file); 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest( 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "api_test/file_system/get_writable_file_entry")) << message_; 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemApiGetWritableWithWriteTest) { 5392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_file = TempFilePath("writable.txt", true); 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &test_file); 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest( 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "api_test/file_system/get_writable_file_entry_with_write")) << message_; 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 5485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FileSystemApiGetWritableRootEntryTest) { 5495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::FilePath test_file = TempFilePath("writable.txt", true); 5505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 5515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 5525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &test_file); 5535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest( 5545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "api_test/file_system/get_writable_root_entry")) << message_; 5555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 5565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 557424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiIsWritableTest) { 558424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) base::FilePath test_file = TempFilePath("writable.txt", true); 559868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 560868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 561868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) &test_file); 562424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/is_writable_file_entry")) 563868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) << message_; 564868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 565868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 566868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, 567424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) FileSystemApiIsWritableWithWritePermissionTest) { 5682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_file = TempFilePath("writable.txt", true); 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &test_file); 5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest( 573424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) "api_test/file_system/is_writable_file_entry_with_write")) 574424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) << message_; 5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 57790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiRetainEntry) { 5782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath test_file = TempFilePath("writable.txt", true); 5792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(test_file.empty()); 5802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 5812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &test_file); 5822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest( 58390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) "api_test/file_system/retain_entry")) << message_; 58490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) std::vector<apps::SavedFileEntry> file_entries = apps::SavedFilesService::Get( 58590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) profile())->GetAllFileEntries(GetSingleLoadedExtension()->id()); 58690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ASSERT_EQ(1u, file_entries.size()); 58790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EXPECT_EQ(test_file, file_entries[0].path); 58890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) EXPECT_EQ(1, file_entries[0].sequence_number); 5894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_FALSE(file_entries[0].is_directory); 59090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 59190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 592424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiRetainDirectoryEntry) { 593868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) base::FilePath test_file = TempFilePath("open_existing.txt", true); 594868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 595424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) base::FilePath test_directory = test_file.DirName(); 596868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 597424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) &test_directory); 598424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/retain_directory")) 599868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) << message_; 600424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) std::vector<apps::SavedFileEntry> file_entries = apps::SavedFilesService::Get( 601424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) profile())->GetAllFileEntries(GetSingleLoadedExtension()->id()); 602424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_EQ(1u, file_entries.size()); 603424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) EXPECT_EQ(test_directory, file_entries[0].path); 604424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) EXPECT_EQ(1, file_entries[0].sequence_number); 605424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) EXPECT_TRUE(file_entries[0].is_directory); 606868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 607868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 608424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiRestoreEntry) { 609424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) base::FilePath test_file = TempFilePath("writable.txt", true); 610868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 611868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 612868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) &test_file); 6136d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) AppLoadObserver observer(profile(), 6146d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) base::Bind(AddSavedEntry, 6156d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) test_file, 6166d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) false, 6176d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) apps::SavedFilesService::Get(profile()))); 618424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/restore_entry")) 619424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) << message_; 620868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 621868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 622424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FileSystemApiTest, FileSystemApiRestoreDirectoryEntry) { 623424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) base::FilePath test_file = TempFilePath("writable.txt", true); 624868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_FALSE(test_file.empty()); 625424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) base::FilePath test_directory = test_file.DirName(); 626868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( 627868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) &test_file); 6286d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) AppLoadObserver observer(profile(), 6296d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) base::Bind(AddSavedEntry, 6306d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) test_directory, 6316d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) true, 6326d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) apps::SavedFilesService::Get(profile()))); 633424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/restore_directory")) 634424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) << message_; 635868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 636eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 637eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace extensions 638