| OLD | NEW |
| (Empty) |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "webkit/browser/fileapi/sandbox_isolated_origin_database.h" | |
| 6 | |
| 7 #include "base/files/file_util.h" | |
| 8 #include "base/logging.h" | |
| 9 #include "webkit/browser/fileapi/sandbox_origin_database.h" | |
| 10 | |
| 11 namespace storage { | |
| 12 | |
| 13 // Special directory name for isolated origin. | |
| 14 const base::FilePath::CharType | |
| 15 SandboxIsolatedOriginDatabase::kObsoleteOriginDirectory[] = | |
| 16 FILE_PATH_LITERAL("iso"); | |
| 17 | |
| 18 SandboxIsolatedOriginDatabase::SandboxIsolatedOriginDatabase( | |
| 19 const std::string& origin, | |
| 20 const base::FilePath& file_system_directory, | |
| 21 const base::FilePath& origin_directory) | |
| 22 : migration_checked_(false), | |
| 23 origin_(origin), | |
| 24 file_system_directory_(file_system_directory), | |
| 25 origin_directory_(origin_directory) { | |
| 26 } | |
| 27 | |
| 28 SandboxIsolatedOriginDatabase::~SandboxIsolatedOriginDatabase() { | |
| 29 } | |
| 30 | |
| 31 bool SandboxIsolatedOriginDatabase::HasOriginPath( | |
| 32 const std::string& origin) { | |
| 33 return (origin_ == origin); | |
| 34 } | |
| 35 | |
| 36 bool SandboxIsolatedOriginDatabase::GetPathForOrigin( | |
| 37 const std::string& origin, base::FilePath* directory) { | |
| 38 if (origin != origin_) | |
| 39 return false; | |
| 40 *directory = origin_directory_; | |
| 41 return true; | |
| 42 } | |
| 43 | |
| 44 bool SandboxIsolatedOriginDatabase::RemovePathForOrigin( | |
| 45 const std::string& origin) { | |
| 46 return true; | |
| 47 } | |
| 48 | |
| 49 bool SandboxIsolatedOriginDatabase::ListAllOrigins( | |
| 50 std::vector<OriginRecord>* origins) { | |
| 51 origins->push_back(OriginRecord(origin_, origin_directory_)); | |
| 52 return true; | |
| 53 } | |
| 54 | |
| 55 void SandboxIsolatedOriginDatabase::DropDatabase() { | |
| 56 } | |
| 57 | |
| 58 void SandboxIsolatedOriginDatabase::MigrateBackFromObsoleteOriginDatabase( | |
| 59 const std::string& origin, | |
| 60 const base::FilePath& file_system_directory, | |
| 61 SandboxOriginDatabase* database) { | |
| 62 base::FilePath isolated_directory = | |
| 63 file_system_directory.Append(kObsoleteOriginDirectory); | |
| 64 | |
| 65 if (database->HasOriginPath(origin)) { | |
| 66 // Don't bother. | |
| 67 base::DeleteFile(isolated_directory, true /* recursive */); | |
| 68 return; | |
| 69 } | |
| 70 | |
| 71 base::FilePath directory_name; | |
| 72 if (database->GetPathForOrigin(origin, &directory_name)) { | |
| 73 base::FilePath origin_directory = | |
| 74 file_system_directory.Append(directory_name); | |
| 75 base::DeleteFile(origin_directory, true /* recursive */); | |
| 76 base::Move(isolated_directory, origin_directory); | |
| 77 } | |
| 78 } | |
| 79 | |
| 80 } // namespace storage | |
| OLD | NEW |