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 |