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

Unified Diff: chrome/installer/setup/setup_util.cc

Issue 15908002: Differential updates for components. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Sync to LKGR revision 207804. Created 7 years, 6 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
« no previous file with comments | « chrome/installer/setup/setup_util.h ('k') | chrome/installer/util/util_constants.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/installer/setup/setup_util.cc
diff --git a/chrome/installer/setup/setup_util.cc b/chrome/installer/setup/setup_util.cc
index ef0f836039beefc75af561bc93b24801e9771385..d67927402c43f4e93c733c2b580fe08cb080e68f 100644
--- a/chrome/installer/setup/setup_util.cc
+++ b/chrome/installer/setup/setup_util.cc
@@ -24,6 +24,7 @@
#include "chrome/installer/util/util_constants.h"
#include "chrome/installer/util/work_item.h"
#include "courgette/courgette.h"
+#include "courgette/third_party/bsdiff.h"
#include "third_party/bspatch/mbspatch.h"
namespace installer {
@@ -86,12 +87,59 @@ bool SupportsSingleInstall(BrowserDistribution::Type type) {
} // namespace
+int CourgettePatchFiles(const base::FilePath& src,
+ const base::FilePath& patch,
+ const base::FilePath& dest) {
+ VLOG(1) << "Applying Courgette patch " << patch.value()
+ << " to file " << src.value()
+ << " and generating file " << dest.value();
+
+ if (src.empty() || patch.empty() || dest.empty())
+ return installer::PATCH_INVALID_ARGUMENTS;
+
+ const courgette::Status patch_status =
+ courgette::ApplyEnsemblePatch(src.value().c_str(),
+ patch.value().c_str(),
+ dest.value().c_str());
+ const int exit_code = (patch_status != courgette::C_OK) ?
+ static_cast<int>(patch_status) + kCourgetteErrorOffset : 0;
+
+ LOG_IF(ERROR, exit_code)
+ << "Failed to apply Courgette patch " << patch.value()
+ << " to file " << src.value() << " and generating file " << dest.value()
+ << ". err=" << exit_code;
+
+ return exit_code;
+}
+
+int BsdiffPatchFiles(const base::FilePath& src,
+ const base::FilePath& patch,
+ const base::FilePath& dest) {
+ VLOG(1) << "Applying bsdiff patch " << patch.value()
+ << " to file " << src.value()
+ << " and generating file " << dest.value();
+
+ if (src.empty() || patch.empty() || dest.empty())
+ return installer::PATCH_INVALID_ARGUMENTS;
+
+ const int patch_status = courgette::ApplyBinaryPatch(src, patch, dest);
+ const int exit_code = patch_status != OK ?
+ patch_status + kBsdiffErrorOffset : 0;
+
+ LOG_IF(ERROR, exit_code)
+ << "Failed to apply bsdiff patch " << patch.value()
+ << " to file " << src.value() << " and generating file " << dest.value()
+ << ". err=" << exit_code;
+
+ return exit_code;
+}
+
int ApplyDiffPatch(const base::FilePath& src,
const base::FilePath& patch,
const base::FilePath& dest,
const InstallerState* installer_state) {
- VLOG(1) << "Applying patch " << patch.value() << " to file " << src.value()
- << " and generating file " << dest.value();
+ VLOG(1) << "Applying patch " << patch.value() << " to file "
+ << src.value() << " and generating file " << dest.value();
if (installer_state != NULL)
installer_state->UpdateStage(installer::ENSEMBLE_PATCHING);
@@ -105,8 +153,10 @@ int ApplyDiffPatch(const base::FilePath& src,
if (patch_status == courgette::C_OK)
return 0;
- VLOG(1) << "Failed to apply patch " << patch.value()
- << " using courgette. err=" << patch_status;
+ LOG(ERROR)
+ << "Failed to apply patch " << patch.value()
+ << " to file " << src.value() << " and generating file " << dest.value()
+ << " using courgette. err=" << patch_status;
// If we ran out of memory or disk space, then these are likely the errors
// we will see. If we run into them, return an error and stay on the
@@ -119,8 +169,16 @@ int ApplyDiffPatch(const base::FilePath& src,
if (installer_state != NULL)
installer_state->UpdateStage(installer::BINARY_PATCHING);
- return ApplyBinaryPatch(src.value().c_str(), patch.value().c_str(),
- dest.value().c_str());
+ int binary_patch_status = ApplyBinaryPatch(src.value().c_str(),
+ patch.value().c_str(),
+ dest.value().c_str());
+
+ LOG_IF(ERROR, binary_patch_status != OK)
+ << "Failed to apply patch " << patch.value()
+ << " to file " << src.value() << " and generating file " << dest.value()
+ << " using bsdiff. err=" << binary_patch_status;
+
+ return binary_patch_status;
}
Version* GetMaxVersionFromArchiveDir(const base::FilePath& chrome_path) {
« no previous file with comments | « chrome/installer/setup/setup_util.h ('k') | chrome/installer/util/util_constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698