Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Side by Side Diff: chrome/browser/extensions/sandboxed_extension_unpacker.h

Issue 10375021: Move Extension into extensions namespace (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Take 6 Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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_EXTENSION_UNPACKER_H_ 5 #ifndef CHROME_BROWSER_EXTENSIONS_SANDBOXED_EXTENSION_UNPACKER_H_
6 #define CHROME_BROWSER_EXTENSIONS_SANDBOXED_EXTENSION_UNPACKER_H_ 6 #define CHROME_BROWSER_EXTENSIONS_SANDBOXED_EXTENSION_UNPACKER_H_
7 #pragma once 7 #pragma once
8 8
9 #include <string> 9 #include <string>
10 10
11 #include "base/file_path.h" 11 #include "base/file_path.h"
12 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
13 #include "base/scoped_temp_dir.h" 13 #include "base/scoped_temp_dir.h"
14 #include "chrome/common/extensions/extension.h" 14 #include "chrome/common/extensions/extension.h"
15 #include "content/public/browser/browser_thread.h" 15 #include "content/public/browser/browser_thread.h"
16 #include "content/public/browser/utility_process_host_client.h" 16 #include "content/public/browser/utility_process_host_client.h"
17 17
18 class Extension;
19
20 namespace base { 18 namespace base {
21 class DictionaryValue; 19 class DictionaryValue;
22 } 20 }
23 21
24 class SandboxedExtensionUnpackerClient 22 class SandboxedExtensionUnpackerClient
25 : public base::RefCountedThreadSafe<SandboxedExtensionUnpackerClient> { 23 : public base::RefCountedThreadSafe<SandboxedExtensionUnpackerClient> {
26 public: 24 public:
27 // temp_dir - A temporary directory containing the results of the extension 25 // temp_dir - A temporary directory containing the results of the extension
28 // unpacking. The client is responsible for deleting this directory. 26 // unpacking. The client is responsible for deleting this directory.
29 // 27 //
30 // extension_root - The path to the extension root inside of temp_dir. 28 // extension_root - The path to the extension root inside of temp_dir.
31 // 29 //
32 // original_manifest - The parsed but unmodified version of the manifest, 30 // original_manifest - The parsed but unmodified version of the manifest,
33 // with no modifications such as localization, etc. 31 // with no modifications such as localization, etc.
34 // 32 //
35 // extension - The extension that was unpacked. The client is responsible 33 // extension - The extension that was unpacked. The client is responsible
36 // for deleting this memory. 34 // for deleting this memory.
37 virtual void OnUnpackSuccess(const FilePath& temp_dir, 35 virtual void OnUnpackSuccess(const FilePath& temp_dir,
38 const FilePath& extension_root, 36 const FilePath& extension_root,
39 const base::DictionaryValue* original_manifest, 37 const base::DictionaryValue* original_manifest,
40 const Extension* extension) = 0; 38 const extensions::Extension* extension) = 0;
41 virtual void OnUnpackFailure(const string16& error) = 0; 39 virtual void OnUnpackFailure(const string16& error) = 0;
42 40
43 protected: 41 protected:
44 friend class base::RefCountedThreadSafe<SandboxedExtensionUnpackerClient>; 42 friend class base::RefCountedThreadSafe<SandboxedExtensionUnpackerClient>;
45 43
46 virtual ~SandboxedExtensionUnpackerClient() {} 44 virtual ~SandboxedExtensionUnpackerClient() {}
47 }; 45 };
48 46
49 // SandboxedExtensionUnpacker unpacks extensions from the CRX format into a 47 // SandboxedExtensionUnpacker unpacks extensions from the CRX format into a
50 // directory. This is done in a sandboxed subprocess to protect the browser 48 // directory. This is done in a sandboxed subprocess to protect the browser
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 static const char kExtensionHeaderMagic[]; 93 static const char kExtensionHeaderMagic[];
96 94
97 // The current version of the crx format. 95 // The current version of the crx format.
98 static const uint32 kCurrentVersion = 2; 96 static const uint32 kCurrentVersion = 2;
99 97
100 // Unpacks the extension in |crx_path| into a temporary directory and calls 98 // Unpacks the extension in |crx_path| into a temporary directory and calls
101 // |client| with the result. If |run_out_of_process| is provided, unpacking 99 // |client| with the result. If |run_out_of_process| is provided, unpacking
102 // is done in a sandboxed subprocess. Otherwise, it is done in-process. 100 // is done in a sandboxed subprocess. Otherwise, it is done in-process.
103 SandboxedExtensionUnpacker(const FilePath& crx_path, 101 SandboxedExtensionUnpacker(const FilePath& crx_path,
104 bool run_out_of_process, 102 bool run_out_of_process,
105 Extension::Location location, 103 extensions::Extension::Location location,
106 int creation_flags, 104 int creation_flags,
107 SandboxedExtensionUnpackerClient* client); 105 SandboxedExtensionUnpackerClient* client);
108 106
109 // Start unpacking the extension. The client is called with the results. 107 // Start unpacking the extension. The client is called with the results.
110 void Start(); 108 void Start();
111 109
112 private: 110 private:
113 class ProcessHostClient; 111 class ProcessHostClient;
114 112
115 // Enumerate all the ways unpacking can fail. Calls to ReportFailure() 113 // Enumerate all the ways unpacking can fail. Calls to ReportFailure()
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 // Our client. 224 // Our client.
227 scoped_refptr<SandboxedExtensionUnpackerClient> client_; 225 scoped_refptr<SandboxedExtensionUnpackerClient> client_;
228 226
229 // A temporary directory to use for unpacking. 227 // A temporary directory to use for unpacking.
230 ScopedTempDir temp_dir_; 228 ScopedTempDir temp_dir_;
231 229
232 // The root directory of the unpacked extension. This is a child of temp_dir_. 230 // The root directory of the unpacked extension. This is a child of temp_dir_.
233 FilePath extension_root_; 231 FilePath extension_root_;
234 232
235 // Represents the extension we're unpacking. 233 // Represents the extension we're unpacking.
236 scoped_refptr<Extension> extension_; 234 scoped_refptr<extensions::Extension> extension_;
237 235
238 // Whether we've received a response from the utility process yet. 236 // Whether we've received a response from the utility process yet.
239 bool got_response_; 237 bool got_response_;
240 238
241 // The public key that was extracted from the CRX header. 239 // The public key that was extracted from the CRX header.
242 std::string public_key_; 240 std::string public_key_;
243 241
244 // The extension's ID. This will be calculated from the public key in the crx 242 // The extension's ID. This will be calculated from the public key in the crx
245 // header. 243 // header.
246 std::string extension_id_; 244 std::string extension_id_;
247 245
248 // Time at which unpacking started. Used to compute the time unpacking takes. 246 // Time at which unpacking started. Used to compute the time unpacking takes.
249 base::TimeTicks unpack_start_time_; 247 base::TimeTicks unpack_start_time_;
250 248
251 // Location to use for the unpacked extension. 249 // Location to use for the unpacked extension.
252 Extension::Location location_; 250 extensions::Extension::Location location_;
253 251
254 // Creation flags to use for the extension. These flags will be used 252 // Creation flags to use for the extension. These flags will be used
255 // when calling Extenion::Create() by the crx installer. 253 // when calling Extenion::Create() by the crx installer.
256 int creation_flags_; 254 int creation_flags_;
257 }; 255 };
258 256
259 #endif // CHROME_BROWSER_EXTENSIONS_SANDBOXED_EXTENSION_UNPACKER_H_ 257 #endif // CHROME_BROWSER_EXTENSIONS_SANDBOXED_EXTENSION_UNPACKER_H_
OLDNEW
« no previous file with comments | « chrome/browser/extensions/process_management_browsertest.cc ('k') | chrome/browser/extensions/sandboxed_extension_unpacker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698