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

Unified Diff: chrome/browser/component_updater/component_patcher.h

Issue 25909005: Use UtilityProcessHost to patch files. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@nonblocking
Patch Set: Rebase to LKGR/248226 Created 6 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/component_updater/component_patcher.h
diff --git a/chrome/browser/component_updater/component_patcher.h b/chrome/browser/component_updater/component_patcher.h
index 6a6cb8f084cbaee4127adeed43b6b52742a8e141..dc58dca334328ab6ede8be13658bf8332fe40f52 100644
--- a/chrome/browser/component_updater/component_patcher.h
+++ b/chrome/browser/component_updater/component_patcher.h
@@ -28,9 +28,7 @@
#ifndef CHROME_BROWSER_COMPONENT_UPDATER_COMPONENT_PATCHER_H_
#define CHROME_BROWSER_COMPONENT_UPDATER_COMPONENT_PATCHER_H_
-#include "base/basictypes.h"
#include "base/callback_forward.h"
-#include "base/compiler_specific.h"
#include "chrome/browser/component_updater/component_unpacker.h"
namespace base {
@@ -40,52 +38,58 @@ class FilePath;
namespace component_updater {
class ComponentInstaller;
+class DeltaUpdateOp;
-// Applies a delta patch to a single file. Specifically, creates a file at
-// |output_file| using |input_file| patched according to the algorithm
-// specified by |patch_type| using |patch_file|. Sets the value of error to
-// the error code of the failing patch operation, if there is such a failure.
-class ComponentPatcher {
- public:
- // The type of a patch file.
- enum PatchType {
- kPatchTypeUnknown,
- kPatchTypeCourgette,
- kPatchTypeBsdiff,
- };
-
- virtual ComponentUnpacker::Error Patch(PatchType patch_type,
- const base::FilePath& input_file,
- const base::FilePath& patch_file,
- const base::FilePath& output_file,
- int* error) = 0;
- virtual ~ComponentPatcher() {}
+// The type of a patch file.
+enum PatchType {
+ kPatchTypeUnknown,
+ kPatchTypeCourgette,
+ kPatchTypeBsdiff,
};
-class ComponentPatcherCrossPlatform : public ComponentPatcher {
+// Applies a delta patch to a set of files.
+// The constructor takes an unpacked differential CRX (|input_dir|) and a
Sorin Jianu 2014/02/03 20:57:57 This comment appears to be a function comment inst
waffles 2014/02/07 01:00:59 Done.
+// component installer, and sets up the class to create a new (non-differential)
+// unpacked CRX.
+// The non-differential files are written into the |unpack_dir| directory.
+// When finished, calls |callback|, passing error codes if any errors were
+// encountered.
Sorin Jianu 2014/02/03 20:57:57 Calls |callback| when finished, with the error cod
waffles 2014/02/07 01:00:59 Done.
+class ComponentPatcher {
public:
- ComponentPatcherCrossPlatform();
- virtual ComponentUnpacker::Error Patch(PatchType patch_type,
- const base::FilePath& input_file,
- const base::FilePath& patch_file,
- const base::FilePath& output_file,
- int* error) OVERRIDE;
+ ComponentPatcher(const base::FilePath& input_dir,
+ const base::FilePath& unpack_dir,
+ ComponentInstaller* installer,
+ bool in_process,
Sorin Jianu 2014/02/03 20:57:57 might want to document |in_process|.
waffles 2014/02/07 01:00:59 Done.
+ scoped_refptr<base::SequencedTaskRunner> task_runner);
+
+ virtual ~ComponentPatcher();
+
+ // Starts patching files. This method returns immediately, after posting a
Sorin Jianu 2014/02/03 20:57:57 Technically, in C++ only virtual member functions
waffles 2014/02/07 01:00:59 Could you provide me with a reference on this? All
Sorin Jianu 2014/02/27 20:53:57 http://books.google.com/books?id=0klsAQAAQBAJ&prin
+ // task to do the patching.
+ void Start(
+ const base::Callback<void(ComponentUnpacker::Error, int)>& callback);
+
+ // Returns a weak pointer to this object.
+ base::WeakPtr<ComponentPatcher> GetWeakPtr();
+
private:
- DISALLOW_COPY_AND_ASSIGN(ComponentPatcherCrossPlatform);
-};
+ void PatchNextFile();
-// This function takes an unpacked differential CRX (|input_dir|) and a
-// component installer, and creates a new (non-differential) unpacked CRX, which
-// is then installed normally.
-// The non-differential files are written into the |unpack_dir| directory.
-// When finished, calls the callback, passing error codes if any errors were
-// encountered.
-void DifferentialUpdatePatch(
- const base::FilePath& input_dir,
- const base::FilePath& unpack_dir,
- ComponentPatcher* component_patcher,
- ComponentInstaller* installer,
- base::Callback<void(ComponentUnpacker::Error, int)> callback);
+ void DonePatchingFile(ComponentUnpacker::Error error, int extended_error);
+
+ base::FilePath input_dir_;
Sorin Jianu 2014/02/03 20:57:57 Can some of these members be declared const? The o
waffles 2014/02/07 01:00:59 Done.
+ base::FilePath unpack_dir_;
+ ComponentInstaller* installer_;
+ bool in_process_;
+ base::Callback<void(ComponentUnpacker::Error, int)> callback_;
+ scoped_ptr<base::ListValue> commands_;
+ base::ValueVector::const_iterator next_command_;
+ scoped_ptr<DeltaUpdateOp> current_operation_;
+ base::WeakPtrFactory<ComponentPatcher> ptr_factory_;
+ scoped_refptr<base::SequencedTaskRunner> task_runner_;
+
+ DISALLOW_COPY_AND_ASSIGN(ComponentPatcher);
+};
} // namespace component_updater

Powered by Google App Engine
This is Rietveld 408576698