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 #ifndef CHROME_BROWSER_EXTENSIONS_SANDBOXED_UNPACKER_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_SANDBOXED_UNPACKER_H_ |
6 #define CHROME_BROWSER_EXTENSIONS_SANDBOXED_UNPACKER_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_SANDBOXED_UNPACKER_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
11 #include "base/files/scoped_temp_dir.h" | 11 #include "base/files/scoped_temp_dir.h" |
12 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
13 #include "chrome/common/extensions/extension.h" | 13 #include "base/time.h" |
| 14 #include "chrome/common/extensions/manifest.h" |
14 #include "content/public/browser/utility_process_host_client.h" | 15 #include "content/public/browser/utility_process_host_client.h" |
15 | 16 |
16 namespace base { | 17 namespace base { |
17 class DictionaryValue; | 18 class DictionaryValue; |
18 class SequencedTaskRunner; | 19 class SequencedTaskRunner; |
19 } | 20 } |
20 | 21 |
21 namespace extensions { | 22 namespace extensions { |
| 23 class Extension; |
22 | 24 |
23 class SandboxedUnpackerClient | 25 class SandboxedUnpackerClient |
24 : public base::RefCountedThreadSafe<SandboxedUnpackerClient> { | 26 : public base::RefCountedThreadSafe<SandboxedUnpackerClient> { |
25 public: | 27 public: |
26 // temp_dir - A temporary directory containing the results of the extension | 28 // temp_dir - A temporary directory containing the results of the extension |
27 // unpacking. The client is responsible for deleting this directory. | 29 // unpacking. The client is responsible for deleting this directory. |
28 // | 30 // |
29 // extension_root - The path to the extension root inside of temp_dir. | 31 // extension_root - The path to the extension root inside of temp_dir. |
30 // | 32 // |
31 // original_manifest - The parsed but unmodified version of the manifest, | 33 // original_manifest - The parsed but unmodified version of the manifest, |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 // | 68 // |
67 // | 69 // |
68 // NOTE: This class should only be used on the file thread. | 70 // NOTE: This class should only be used on the file thread. |
69 class SandboxedUnpacker : public content::UtilityProcessHostClient { | 71 class SandboxedUnpacker : public content::UtilityProcessHostClient { |
70 public: | 72 public: |
71 // Unpacks the extension in |crx_path| into a temporary directory and calls | 73 // Unpacks the extension in |crx_path| into a temporary directory and calls |
72 // |client| with the result. If |run_out_of_process| is provided, unpacking | 74 // |client| with the result. If |run_out_of_process| is provided, unpacking |
73 // is done in a sandboxed subprocess. Otherwise, it is done in-process. | 75 // is done in a sandboxed subprocess. Otherwise, it is done in-process. |
74 SandboxedUnpacker(const FilePath& crx_path, | 76 SandboxedUnpacker(const FilePath& crx_path, |
75 bool run_out_of_process, | 77 bool run_out_of_process, |
76 Extension::Location location, | 78 Manifest::Location location, |
77 int creation_flags, | 79 int creation_flags, |
78 const FilePath& extensions_dir, | 80 const FilePath& extensions_dir, |
79 base::SequencedTaskRunner* unpacker_io_task_runner, | 81 base::SequencedTaskRunner* unpacker_io_task_runner, |
80 SandboxedUnpackerClient* client); | 82 SandboxedUnpackerClient* client); |
81 | 83 |
82 // Start unpacking the extension. The client is called with the results. | 84 // Start unpacking the extension. The client is called with the results. |
83 void Start(); | 85 void Start(); |
84 | 86 |
85 private: | 87 private: |
86 class ProcessHostClient; | 88 class ProcessHostClient; |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 std::string public_key_; | 220 std::string public_key_; |
219 | 221 |
220 // The extension's ID. This will be calculated from the public key in the crx | 222 // The extension's ID. This will be calculated from the public key in the crx |
221 // header. | 223 // header. |
222 std::string extension_id_; | 224 std::string extension_id_; |
223 | 225 |
224 // Time at which unpacking started. Used to compute the time unpacking takes. | 226 // Time at which unpacking started. Used to compute the time unpacking takes. |
225 base::TimeTicks unpack_start_time_; | 227 base::TimeTicks unpack_start_time_; |
226 | 228 |
227 // Location to use for the unpacked extension. | 229 // Location to use for the unpacked extension. |
228 Extension::Location location_; | 230 Manifest::Location location_; |
229 | 231 |
230 // Creation flags to use for the extension. These flags will be used | 232 // Creation flags to use for the extension. These flags will be used |
231 // when calling Extenion::Create() by the crx installer. | 233 // when calling Extenion::Create() by the crx installer. |
232 int creation_flags_; | 234 int creation_flags_; |
233 | 235 |
234 // Sequenced task runner where file I/O operations will be performed at. | 236 // Sequenced task runner where file I/O operations will be performed at. |
235 scoped_refptr<base::SequencedTaskRunner> unpacker_io_task_runner_; | 237 scoped_refptr<base::SequencedTaskRunner> unpacker_io_task_runner_; |
236 }; | 238 }; |
237 | 239 |
238 } // namespace extensions | 240 } // namespace extensions |
239 | 241 |
240 #endif // CHROME_BROWSER_EXTENSIONS_SANDBOXED_UNPACKER_H_ | 242 #endif // CHROME_BROWSER_EXTENSIONS_SANDBOXED_UNPACKER_H_ |
OLD | NEW |