| OLD | NEW |
| 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 <set> | 5 #include <set> |
| 6 #include <string> | 6 #include <string> |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
| (...skipping 906 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 917 scoped_ptr<FileSystemOperationContext> context(NewContext(NULL)); | 917 scoped_ptr<FileSystemOperationContext> context(NewContext(NULL)); |
| 918 | 918 |
| 919 bool exclusive = false; | 919 bool exclusive = false; |
| 920 bool recursive = false; | 920 bool recursive = false; |
| 921 FileSystemURL url = CreateURLFromUTF8("foo/bar"); | 921 FileSystemURL url = CreateURLFromUTF8("foo/bar"); |
| 922 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, ofu()->CreateDirectory( | 922 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, ofu()->CreateDirectory( |
| 923 context.get(), url, exclusive, recursive)); | 923 context.get(), url, exclusive, recursive)); |
| 924 | 924 |
| 925 context.reset(NewContext(NULL)); | 925 context.reset(NewContext(NULL)); |
| 926 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, | 926 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, |
| 927 ofu()->DeleteSingleDirectory(context.get(), url)); | 927 ofu()->DeleteDirectory(context.get(), url)); |
| 928 | 928 |
| 929 FileSystemURL root = CreateURLFromUTF8(""); | 929 FileSystemURL root = CreateURLFromUTF8(""); |
| 930 EXPECT_FALSE(DirectoryExists(url)); | 930 EXPECT_FALSE(DirectoryExists(url)); |
| 931 EXPECT_FALSE(PathExists(url)); | 931 EXPECT_FALSE(PathExists(url)); |
| 932 context.reset(NewContext(NULL)); | 932 context.reset(NewContext(NULL)); |
| 933 EXPECT_TRUE(ofu()->IsDirectoryEmpty(context.get(), root)); | 933 EXPECT_TRUE(ofu()->IsDirectoryEmpty(context.get(), root)); |
| 934 | 934 |
| 935 context.reset(NewContext(NULL)); | 935 context.reset(NewContext(NULL)); |
| 936 exclusive = false; | 936 exclusive = false; |
| 937 recursive = true; | 937 recursive = true; |
| 938 EXPECT_EQ(base::PLATFORM_FILE_OK, ofu()->CreateDirectory( | 938 EXPECT_EQ(base::PLATFORM_FILE_OK, ofu()->CreateDirectory( |
| 939 context.get(), url, exclusive, recursive)); | 939 context.get(), url, exclusive, recursive)); |
| 940 EXPECT_EQ(2, change_observer()->get_and_reset_create_directory_count()); | 940 EXPECT_EQ(2, change_observer()->get_and_reset_create_directory_count()); |
| 941 | 941 |
| 942 EXPECT_TRUE(DirectoryExists(url)); | 942 EXPECT_TRUE(DirectoryExists(url)); |
| 943 EXPECT_TRUE(PathExists(url)); | 943 EXPECT_TRUE(PathExists(url)); |
| 944 | 944 |
| 945 context.reset(NewContext(NULL)); | 945 context.reset(NewContext(NULL)); |
| 946 EXPECT_FALSE(ofu()->IsDirectoryEmpty(context.get(), root)); | 946 EXPECT_FALSE(ofu()->IsDirectoryEmpty(context.get(), root)); |
| 947 EXPECT_TRUE(DirectoryExists(url.WithPath(url.path().DirName()))); | 947 EXPECT_TRUE(DirectoryExists(url.WithPath(url.path().DirName()))); |
| 948 | 948 |
| 949 context.reset(NewContext(NULL)); | 949 context.reset(NewContext(NULL)); |
| 950 EXPECT_FALSE(ofu()->IsDirectoryEmpty(context.get(), | 950 EXPECT_FALSE(ofu()->IsDirectoryEmpty(context.get(), |
| 951 url.WithPath(url.path().DirName()))); | 951 url.WithPath(url.path().DirName()))); |
| 952 | 952 |
| 953 // Can't remove a non-empty directory. | 953 // Can't remove a non-empty directory. |
| 954 context.reset(NewContext(NULL)); | 954 context.reset(NewContext(NULL)); |
| 955 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_EMPTY, | 955 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_EMPTY, |
| 956 ofu()->DeleteSingleDirectory(context.get(), | 956 ofu()->DeleteDirectory(context.get(), |
| 957 url.WithPath(url.path().DirName()))); | 957 url.WithPath(url.path().DirName()))); |
| 958 EXPECT_TRUE(change_observer()->HasNoChange()); | 958 EXPECT_TRUE(change_observer()->HasNoChange()); |
| 959 | 959 |
| 960 base::PlatformFileInfo file_info; | 960 base::PlatformFileInfo file_info; |
| 961 FilePath local_path; | 961 FilePath local_path; |
| 962 EXPECT_EQ(base::PLATFORM_FILE_OK, ofu()->GetFileInfo( | 962 EXPECT_EQ(base::PLATFORM_FILE_OK, ofu()->GetFileInfo( |
| 963 context.get(), url, &file_info, &local_path)); | 963 context.get(), url, &file_info, &local_path)); |
| 964 EXPECT_TRUE(local_path.empty()); | 964 EXPECT_TRUE(local_path.empty()); |
| 965 EXPECT_TRUE(file_info.is_directory); | 965 EXPECT_TRUE(file_info.is_directory); |
| 966 EXPECT_FALSE(file_info.is_symbolic_link); | 966 EXPECT_FALSE(file_info.is_symbolic_link); |
| 967 | 967 |
| 968 // Same create again should succeed, since exclusive is false. | 968 // Same create again should succeed, since exclusive is false. |
| 969 context.reset(NewContext(NULL)); | 969 context.reset(NewContext(NULL)); |
| 970 EXPECT_EQ(base::PLATFORM_FILE_OK, ofu()->CreateDirectory( | 970 EXPECT_EQ(base::PLATFORM_FILE_OK, ofu()->CreateDirectory( |
| 971 context.get(), url, exclusive, recursive)); | 971 context.get(), url, exclusive, recursive)); |
| 972 EXPECT_TRUE(change_observer()->HasNoChange()); | 972 EXPECT_TRUE(change_observer()->HasNoChange()); |
| 973 | 973 |
| 974 exclusive = true; | 974 exclusive = true; |
| 975 recursive = true; | 975 recursive = true; |
| 976 context.reset(NewContext(NULL)); | 976 context.reset(NewContext(NULL)); |
| 977 EXPECT_EQ(base::PLATFORM_FILE_ERROR_EXISTS, ofu()->CreateDirectory( | 977 EXPECT_EQ(base::PLATFORM_FILE_ERROR_EXISTS, ofu()->CreateDirectory( |
| 978 context.get(), url, exclusive, recursive)); | 978 context.get(), url, exclusive, recursive)); |
| 979 EXPECT_TRUE(change_observer()->HasNoChange()); | 979 EXPECT_TRUE(change_observer()->HasNoChange()); |
| 980 | 980 |
| 981 // Verify that deleting a directory isn't stopped by zero quota, and that it | 981 // Verify that deleting a directory isn't stopped by zero quota, and that it |
| 982 // frees up quota from its path. | 982 // frees up quota from its path. |
| 983 context.reset(NewContext(NULL)); | 983 context.reset(NewContext(NULL)); |
| 984 context->set_allowed_bytes_growth(0); | 984 context->set_allowed_bytes_growth(0); |
| 985 EXPECT_EQ(base::PLATFORM_FILE_OK, | 985 EXPECT_EQ(base::PLATFORM_FILE_OK, ofu()->DeleteDirectory(context.get(), url)); |
| 986 ofu()->DeleteSingleDirectory(context.get(), url)); | |
| 987 EXPECT_EQ(1, change_observer()->get_and_reset_remove_directory_count()); | 986 EXPECT_EQ(1, change_observer()->get_and_reset_remove_directory_count()); |
| 988 EXPECT_EQ(ObfuscatedFileUtil::ComputeFilePathCost(url.path()), | 987 EXPECT_EQ(ObfuscatedFileUtil::ComputeFilePathCost(url.path()), |
| 989 context->allowed_bytes_growth()); | 988 context->allowed_bytes_growth()); |
| 990 | 989 |
| 991 url = CreateURLFromUTF8("foo/bop"); | 990 url = CreateURLFromUTF8("foo/bop"); |
| 992 | 991 |
| 993 EXPECT_FALSE(DirectoryExists(url)); | 992 EXPECT_FALSE(DirectoryExists(url)); |
| 994 EXPECT_FALSE(PathExists(url)); | 993 EXPECT_FALSE(PathExists(url)); |
| 995 | 994 |
| 996 context.reset(NewContext(NULL)); | 995 context.reset(NewContext(NULL)); |
| (...skipping 825 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1822 ofu()->DeleteFile(context.get(), url)); | 1821 ofu()->DeleteFile(context.get(), url)); |
| 1823 EXPECT_NE(base::Time(), GetModifiedTime(dir_url)); | 1822 EXPECT_NE(base::Time(), GetModifiedTime(dir_url)); |
| 1824 | 1823 |
| 1825 // fail case. | 1824 // fail case. |
| 1826 ClearTimestamp(dir_url); | 1825 ClearTimestamp(dir_url); |
| 1827 context.reset(NewContext(NULL)); | 1826 context.reset(NewContext(NULL)); |
| 1828 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, | 1827 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, |
| 1829 ofu()->DeleteFile(context.get(), url)); | 1828 ofu()->DeleteFile(context.get(), url)); |
| 1830 EXPECT_EQ(base::Time(), GetModifiedTime(dir_url)); | 1829 EXPECT_EQ(base::Time(), GetModifiedTime(dir_url)); |
| 1831 | 1830 |
| 1832 // DeleteSingleDirectory, fail case. | 1831 // DeleteDirectory, fail case. |
| 1833 url = dir_url.WithPath( | 1832 url = dir_url.WithPath(dir_url.path().AppendASCII("DeleteDirectory_dir")); |
| 1834 dir_url.path().AppendASCII("DeleteSingleDirectory_dir")); | |
| 1835 FileSystemURL file_path(url.WithPath(url.path().AppendASCII("pakeratta"))); | 1833 FileSystemURL file_path(url.WithPath(url.path().AppendASCII("pakeratta"))); |
| 1836 context.reset(NewContext(NULL)); | 1834 context.reset(NewContext(NULL)); |
| 1837 EXPECT_EQ(base::PLATFORM_FILE_OK, | 1835 EXPECT_EQ(base::PLATFORM_FILE_OK, |
| 1838 ofu()->CreateDirectory(context.get(), url, true, true)); | 1836 ofu()->CreateDirectory(context.get(), url, true, true)); |
| 1839 created = false; | 1837 created = false; |
| 1840 context.reset(NewContext(NULL)); | 1838 context.reset(NewContext(NULL)); |
| 1841 EXPECT_EQ(base::PLATFORM_FILE_OK, | 1839 EXPECT_EQ(base::PLATFORM_FILE_OK, |
| 1842 ofu()->EnsureFileExists(context.get(), file_path, &created)); | 1840 ofu()->EnsureFileExists(context.get(), file_path, &created)); |
| 1843 EXPECT_TRUE(created); | 1841 EXPECT_TRUE(created); |
| 1844 | 1842 |
| 1845 ClearTimestamp(dir_url); | 1843 ClearTimestamp(dir_url); |
| 1846 context.reset(NewContext(NULL)); | 1844 context.reset(NewContext(NULL)); |
| 1847 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_EMPTY, | 1845 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_EMPTY, |
| 1848 ofu()->DeleteSingleDirectory(context.get(), url)); | 1846 ofu()->DeleteDirectory(context.get(), url)); |
| 1849 EXPECT_EQ(base::Time(), GetModifiedTime(dir_url)); | 1847 EXPECT_EQ(base::Time(), GetModifiedTime(dir_url)); |
| 1850 | 1848 |
| 1851 // delete case. | 1849 // delete case. |
| 1852 context.reset(NewContext(NULL)); | 1850 context.reset(NewContext(NULL)); |
| 1853 EXPECT_EQ(base::PLATFORM_FILE_OK, | 1851 EXPECT_EQ(base::PLATFORM_FILE_OK, |
| 1854 ofu()->DeleteFile(context.get(), file_path)); | 1852 ofu()->DeleteFile(context.get(), file_path)); |
| 1855 | 1853 |
| 1856 ClearTimestamp(dir_url); | 1854 ClearTimestamp(dir_url); |
| 1857 context.reset(NewContext(NULL)); | 1855 context.reset(NewContext(NULL)); |
| 1858 EXPECT_EQ(base::PLATFORM_FILE_OK, | 1856 EXPECT_EQ(base::PLATFORM_FILE_OK, ofu()->DeleteDirectory(context.get(), url)); |
| 1859 ofu()->DeleteSingleDirectory(context.get(), url)); | |
| 1860 EXPECT_NE(base::Time(), GetModifiedTime(dir_url)); | 1857 EXPECT_NE(base::Time(), GetModifiedTime(dir_url)); |
| 1861 } | 1858 } |
| 1862 | 1859 |
| 1863 TEST_F(ObfuscatedFileUtilTest, TestDirectoryTimestampForCopyAndMove) { | 1860 TEST_F(ObfuscatedFileUtilTest, TestDirectoryTimestampForCopyAndMove) { |
| 1864 TestDirectoryTimestampHelper( | 1861 TestDirectoryTimestampHelper( |
| 1865 CreateURLFromUTF8("copy overwrite"), true, true); | 1862 CreateURLFromUTF8("copy overwrite"), true, true); |
| 1866 TestDirectoryTimestampHelper( | 1863 TestDirectoryTimestampHelper( |
| 1867 CreateURLFromUTF8("copy non-overwrite"), true, false); | 1864 CreateURLFromUTF8("copy non-overwrite"), true, false); |
| 1868 TestDirectoryTimestampHelper( | 1865 TestDirectoryTimestampHelper( |
| 1869 CreateURLFromUTF8("move overwrite"), false, true); | 1866 CreateURLFromUTF8("move overwrite"), false, true); |
| (...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2232 ASSERT_EQ(base::PLATFORM_FILE_OK, | 2229 ASSERT_EQ(base::PLATFORM_FILE_OK, |
| 2233 ofu()->CreateOrOpen( | 2230 ofu()->CreateOrOpen( |
| 2234 AllowUsageIncrease(-length)->context(), file, | 2231 AllowUsageIncrease(-length)->context(), file, |
| 2235 base::PLATFORM_FILE_OPEN_TRUNCATED | base::PLATFORM_FILE_WRITE, | 2232 base::PLATFORM_FILE_OPEN_TRUNCATED | base::PLATFORM_FILE_WRITE, |
| 2236 &file_handle, &created)); | 2233 &file_handle, &created)); |
| 2237 ASSERT_EQ(0, ComputeTotalFileSize()); | 2234 ASSERT_EQ(0, ComputeTotalFileSize()); |
| 2238 EXPECT_TRUE(base::ClosePlatformFile(file_handle)); | 2235 EXPECT_TRUE(base::ClosePlatformFile(file_handle)); |
| 2239 } | 2236 } |
| 2240 | 2237 |
| 2241 } // namespace fileapi | 2238 } // namespace fileapi |
| OLD | NEW |