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