summaryrefslogtreecommitdiffstats
path: root/chrome/common/extensions/extension_unpacker.h
diff options
context:
space:
mode:
authormpcomplete@google.com <mpcomplete@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-05 23:15:02 +0000
committermpcomplete@google.com <mpcomplete@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-05 23:15:02 +0000
commitfacd7a7651cf81da7fbe48596be7f4324ff86ab8 (patch)
tree21c25659a8feb5fff0c93856211e27e9ee830514 /chrome/common/extensions/extension_unpacker.h
parentcc7c1c77040c26a56de3eeb953f468ced2a32186 (diff)
downloadchromium_src-facd7a7651cf81da7fbe48596be7f4324ff86ab8.zip
chromium_src-facd7a7651cf81da7fbe48596be7f4324ff86ab8.tar.gz
chromium_src-facd7a7651cf81da7fbe48596be7f4324ff86ab8.tar.bz2
Fix an issue where themes would sporadically fail to install.
Trying to send decoded images over IPC didn't work too well. Instead, we'll write them to a file and have the browser slurp them in from there. My first instinct was to use SharedMemory, but that would require us to impose a limit on the size of the decoded image data. Also made sure that the undecoded images are deleted when we install. BUG=13455 TEST=Try the repro steps in bug 13455 several times and make sure it works every time. Review URL: http://codereview.chromium.org/119255 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17797 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/extensions/extension_unpacker.h')
-rw-r--r--chrome/common/extensions/extension_unpacker.h18
1 files changed, 15 insertions, 3 deletions
diff --git a/chrome/common/extensions/extension_unpacker.h b/chrome/common/extensions/extension_unpacker.h
index 7e83363..65af750 100644
--- a/chrome/common/extensions/extension_unpacker.h
+++ b/chrome/common/extensions/extension_unpacker.h
@@ -15,9 +15,10 @@
class DictionaryValue;
class SkBitmap;
-// Implements IO for the ExtensionsService.
-// TODO(aa): Extract an interface out of this for testing the frontend, once the
-// frontend has significant logic to test.
+// This class unpacks an extension. It is designed to be used in a sandboxed
+// child process. We unpack and parse various bits of the extension, then
+// report back to the browser process, who then transcodes the pre-parsed bits
+// and writes them back out to disk for later use.
class ExtensionUnpacker {
public:
typedef std::vector< Tuple2<SkBitmap, FilePath> > DecodedImages;
@@ -29,6 +30,17 @@ class ExtensionUnpacker {
// Otherwise, error_message will contain a string explaining what went wrong.
bool Run();
+ // Write the decoded images to kDecodedImagesFilename. We do this instead
+ // of sending them over IPC, since they are so large. Returns true on
+ // success.
+ bool DumpImagesToFile();
+
+ // Read the decoded images back from the file we saved them to.
+ // |extension_path| is the path to the extension we unpacked that wrote the
+ // data. Returns true on success.
+ static bool ReadImagesFromFile(const FilePath& extension_path,
+ DecodedImages* images);
+
const std::string& error_message() { return error_message_; }
DictionaryValue* parsed_manifest() {
return parsed_manifest_.get();