| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 // A tool to dump HTML5 filesystem from CUI. | 5 // A tool to dump HTML5 filesystem from CUI. |
| 6 // | 6 // |
| 7 // Usage: | 7 // Usage: |
| 8 // | 8 // |
| 9 // ./out/Release/dump_file_system [options] <filesystem dir> [origin]... | 9 // ./out/Release/dump_file_system [options] <filesystem dir> [origin]... |
| 10 // | 10 // |
| 11 // If no origin is specified, this dumps all origins in the profile dir. | 11 // If no origin is specified, this dumps all origins in the profile dir. |
| 12 // For Chrome App, which has a separate storage directory, specify "primary" |
| 13 // as the origin name. |
| 12 // | 14 // |
| 13 // Available options: | 15 // Available options: |
| 14 // | 16 // |
| 15 // -t : dumps temporary files instead of persistent. | 17 // -t : dumps temporary files instead of persistent. |
| 16 // -s : dumps syncable files instead of persistent. | 18 // -s : dumps syncable files instead of persistent. |
| 17 // -l : more information will be displayed. | 19 // -l : more information will be displayed. |
| 18 // | 20 // |
| 19 // The format of -l option is: | 21 // The format of -l option is: |
| 20 // | 22 // |
| 21 // === ORIGIN origin_name origin_dir === | 23 // === ORIGIN origin_name origin_dir === |
| (...skipping 13 matching lines...) Expand all Loading... |
| 35 #include <vector> | 37 #include <vector> |
| 36 | 38 |
| 37 #include "base/files/file_path.h" | 39 #include "base/files/file_path.h" |
| 38 #include "base/files/file_util.h" | 40 #include "base/files/file_util.h" |
| 39 #include "base/format_macros.h" | 41 #include "base/format_macros.h" |
| 40 #include "base/strings/stringprintf.h" | 42 #include "base/strings/stringprintf.h" |
| 41 #include "storage/browser/fileapi/obfuscated_file_util.h" | 43 #include "storage/browser/fileapi/obfuscated_file_util.h" |
| 42 #include "storage/browser/fileapi/sandbox_directory_database.h" | 44 #include "storage/browser/fileapi/sandbox_directory_database.h" |
| 43 #include "storage/browser/fileapi/sandbox_file_system_backend.h" | 45 #include "storage/browser/fileapi/sandbox_file_system_backend.h" |
| 44 #include "storage/browser/fileapi/sandbox_origin_database.h" | 46 #include "storage/browser/fileapi/sandbox_origin_database.h" |
| 47 #include "storage/browser/fileapi/sandbox_prioritized_origin_database.h" |
| 45 #include "storage/common/fileapi/file_system_types.h" | 48 #include "storage/common/fileapi/file_system_types.h" |
| 46 #include "storage/common/fileapi/file_system_util.h" | 49 #include "storage/common/fileapi/file_system_util.h" |
| 47 | 50 |
| 48 namespace { | 51 namespace { |
| 49 | 52 |
| 50 bool g_opt_long; | 53 bool g_opt_long; |
| 51 const char* g_opt_fs_type = "p"; | 54 const char* g_opt_fs_type = "p"; |
| 52 | 55 |
| 53 void ShowMessageAndExit(const std::string& msg) { | 56 void ShowMessageAndExit(const std::string& msg) { |
| 54 fprintf(stderr, "%s\n", msg.c_str()); | 57 fprintf(stderr, "%s\n", msg.c_str()); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 directory_suffix, | 127 directory_suffix, |
| 125 id, | 128 id, |
| 126 size, | 129 size, |
| 127 FilePathToString(info.data_path).c_str()); | 130 FilePathToString(info.data_path).c_str()); |
| 128 } else { | 131 } else { |
| 129 printf("%s%s\n", display_name, directory_suffix); | 132 printf("%s%s\n", display_name, directory_suffix); |
| 130 } | 133 } |
| 131 } | 134 } |
| 132 } | 135 } |
| 133 | 136 |
| 134 static void DumpOrigin(const base::FilePath& file_system_dir, | 137 static base::FilePath GetOriginDir(const base::FilePath& file_system_dir, |
| 135 const std::string& origin_name) { | 138 const std::string& origin_name) { |
| 139 if (base::PathExists(file_system_dir.Append( |
| 140 SandboxPrioritizedOriginDatabase::kPrimaryOriginFile))) { |
| 141 return base::FilePath( |
| 142 SandboxPrioritizedOriginDatabase::kPrimaryOriginFile); |
| 143 } |
| 144 |
| 136 SandboxOriginDatabase origin_db(file_system_dir, NULL); | 145 SandboxOriginDatabase origin_db(file_system_dir, NULL); |
| 137 base::FilePath origin_dir; | 146 base::FilePath origin_dir; |
| 138 if (!origin_db.HasOriginPath(origin_name)) { | 147 if (!origin_db.HasOriginPath(origin_name)) { |
| 139 ShowMessageAndExit("Origin " + origin_name + " is not in " + | 148 ShowMessageAndExit("Origin " + origin_name + " is not in " + |
| 140 FilePathToString(file_system_dir)); | 149 FilePathToString(file_system_dir)); |
| 141 } | 150 } |
| 142 | 151 |
| 143 if (!origin_db.GetPathForOrigin(origin_name, &origin_dir)) { | 152 if (!origin_db.GetPathForOrigin(origin_name, &origin_dir)) { |
| 144 ShowMessageAndExit("Failed to get path of origin " + origin_name + | 153 ShowMessageAndExit("Failed to get path of origin " + origin_name + |
| 145 " in " + FilePathToString(file_system_dir)); | 154 " in " + FilePathToString(file_system_dir)); |
| 146 } | 155 } |
| 156 |
| 157 return origin_dir; |
| 158 } |
| 159 |
| 160 static void DumpOrigin(const base::FilePath& file_system_dir, |
| 161 const std::string& origin_name) { |
| 162 base::FilePath origin_dir = GetOriginDir(file_system_dir, origin_name); |
| 147 DumpDirectoryTree(origin_name, file_system_dir.Append(origin_dir)); | 163 DumpDirectoryTree(origin_name, file_system_dir.Append(origin_dir)); |
| 148 } | 164 } |
| 149 | 165 |
| 150 static void DumpFileSystem(const base::FilePath& file_system_dir) { | 166 static void DumpFileSystem(const base::FilePath& file_system_dir) { |
| 151 SandboxOriginDatabase origin_db(file_system_dir, NULL); | 167 SandboxOriginDatabase origin_db(file_system_dir, NULL); |
| 152 std::vector<SandboxOriginDatabase::OriginRecord> origins; | 168 std::vector<SandboxOriginDatabase::OriginRecord> origins; |
| 153 origin_db.ListAllOrigins(&origins); | 169 origin_db.ListAllOrigins(&origins); |
| 154 for (size_t i = 0; i < origins.size(); i++) { | 170 for (size_t i = 0; i < origins.size(); i++) { |
| 155 const SandboxOriginDatabase::OriginRecord& origin = origins[i]; | 171 const SandboxOriginDatabase::OriginRecord& origin = origins[i]; |
| 156 DumpDirectoryTree(origin.origin, file_system_dir.Append(origin.path)); | 172 DumpDirectoryTree(origin.origin, file_system_dir.Append(origin.path)); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 | 211 |
| 196 if (argc == 2) { | 212 if (argc == 2) { |
| 197 storage::DumpFileSystem(file_system_dir); | 213 storage::DumpFileSystem(file_system_dir); |
| 198 } else { | 214 } else { |
| 199 for (int i = 2; i < argc; i++) { | 215 for (int i = 2; i < argc; i++) { |
| 200 storage::DumpOrigin(file_system_dir, argv[i]); | 216 storage::DumpOrigin(file_system_dir, argv[i]); |
| 201 } | 217 } |
| 202 } | 218 } |
| 203 return 0; | 219 return 0; |
| 204 } | 220 } |
| OLD | NEW |