summaryrefslogtreecommitdiffstats
path: root/chrome/installer/setup/setup_util.cc
diff options
context:
space:
mode:
authorkuchhal@chromium.org <kuchhal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-05 20:59:12 +0000
committerkuchhal@chromium.org <kuchhal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-05 20:59:12 +0000
commitc256c0b0e7a2ca6401528b33b325cb19a981762b (patch)
tree4f21b432be4673c51f0dc6b6e1b3264c075504b4 /chrome/installer/setup/setup_util.cc
parentba15f7a45453eaf4f4c928d0c8a572b48d6f7541 (diff)
downloadchromium_src-c256c0b0e7a2ca6401528b33b325cb19a981762b.zip
chromium_src-c256c0b0e7a2ca6401528b33b325cb19a981762b.tar.gz
chromium_src-c256c0b0e7a2ca6401528b33b325cb19a981762b.tar.bz2
Add unit tests for unpacking and patching methods.
BUG=12849 TEST=none Review URL: http://codereview.chromium.org/160623 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22535 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/installer/setup/setup_util.cc')
-rw-r--r--chrome/installer/setup/setup_util.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/chrome/installer/setup/setup_util.cc b/chrome/installer/setup/setup_util.cc
index 985d704..b90ec9c 100644
--- a/chrome/installer/setup/setup_util.cc
+++ b/chrome/installer/setup/setup_util.cc
@@ -10,7 +10,28 @@
#include "base/logging.h"
#include "chrome/installer/util/master_preferences.h"
#include "chrome/installer/util/util_constants.h"
+#include "courgette/courgette.h"
+#include "third_party/bspatch/mbspatch.h"
+
+int setup_util::ApplyDiffPatch(const std::wstring& src,
+ const std::wstring& patch,
+ const std::wstring& dest) {
+ LOG(INFO) << "Applying patch " << patch
+ << " to file " << src
+ << " and generating file " << dest;
+
+ // Try Courgette first. Courgette checks the patch file first and fails
+ // quickly if the patch file does not have a valid Courgette header.
+ courgette::Status patch_status =
+ courgette::ApplyEnsemblePatch(src.c_str(), patch.c_str(), dest.c_str());
+ if (patch_status == courgette::C_OK) {
+ return 0;
+ } else {
+ LOG(INFO) << "Failed to apply patch " << patch << " using courgette.";
+ }
+ return ApplyBinaryPatch(src.c_str(), patch.c_str(), dest.c_str());
+}
DictionaryValue* setup_util::GetInstallPreferences(
const CommandLine& cmd_line) {