| Index: chrome/utility/chrome_content_utility_client.cc
|
| diff --git a/chrome/utility/chrome_content_utility_client.cc b/chrome/utility/chrome_content_utility_client.cc
|
| index 9c883f5161fb9b962c82f314a635035691fdaf93..0c6854a5cf3493db661afcbe53fe670965a80ee7 100644
|
| --- a/chrome/utility/chrome_content_utility_client.cc
|
| +++ b/chrome/utility/chrome_content_utility_client.cc
|
| @@ -28,6 +28,8 @@
|
| #include "content/public/child/image_decoder_utils.h"
|
| #include "content/public/common/content_paths.h"
|
| #include "content/public/utility/utility_thread.h"
|
| +#include "courgette/courgette.h"
|
| +#include "courgette/third_party/bsdiff.h"
|
| #include "extensions/common/extension.h"
|
| #include "extensions/common/manifest.h"
|
| #include "media/base/media.h"
|
| @@ -348,6 +350,10 @@ bool ChromeContentUtilityClient::OnMessageReceived(
|
| IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseJSON, OnParseJSON)
|
| IPC_MESSAGE_HANDLER(ChromeUtilityMsg_GetPrinterCapsAndDefaults,
|
| OnGetPrinterCapsAndDefaults)
|
| + IPC_MESSAGE_HANDLER(ChromeUtilityMsg_PatchFileBsdiff,
|
| + OnPatchFileBsdiff)
|
| + IPC_MESSAGE_HANDLER(ChromeUtilityMsg_PatchFileCourgette,
|
| + OnPatchFileCourgette)
|
| IPC_MESSAGE_HANDLER(ChromeUtilityMsg_StartupPing, OnStartupPing)
|
| IPC_MESSAGE_HANDLER(ChromeUtilityMsg_AnalyzeZipFileForDownloadProtection,
|
| OnAnalyzeZipFileForDownloadProtection)
|
| @@ -747,6 +753,43 @@ void ChromeContentUtilityClient::OnGetPrinterCapsAndDefaults(
|
| ReleaseProcessIfNeeded();
|
| }
|
|
|
| +void ChromeContentUtilityClient::OnPatchFileBsdiff(
|
| + const base::FilePath& input_file,
|
| + const base::FilePath& patch_file,
|
| + const base::FilePath& output_file) {
|
| + if (input_file.empty() || patch_file.empty() || output_file.empty()) {
|
| + Send(new ChromeUtilityHostMsg_PatchFile_Failed(-1));
|
| + } else {
|
| + const int patch_status = courgette::ApplyBinaryPatch(input_file,
|
| + patch_file,
|
| + output_file);
|
| + if (patch_status != courgette::OK)
|
| + Send(new ChromeUtilityHostMsg_PatchFile_Failed(patch_status));
|
| + else
|
| + Send(new ChromeUtilityHostMsg_PatchFile_Succeeded());
|
| + }
|
| + ReleaseProcessIfNeeded();
|
| +}
|
| +
|
| +void ChromeContentUtilityClient::OnPatchFileCourgette(
|
| + const base::FilePath& input_file,
|
| + const base::FilePath& patch_file,
|
| + const base::FilePath& output_file) {
|
| + if (input_file.empty() || patch_file.empty() || output_file.empty()) {
|
| + Send(new ChromeUtilityHostMsg_PatchFile_Failed(-1));
|
| + } else {
|
| + const int patch_status = courgette::ApplyEnsemblePatch(
|
| + input_file.value().c_str(),
|
| + patch_file.value().c_str(),
|
| + output_file.value().c_str());
|
| + if (patch_status != courgette::C_OK)
|
| + Send(new ChromeUtilityHostMsg_PatchFile_Failed(patch_status));
|
| + else
|
| + Send(new ChromeUtilityHostMsg_PatchFile_Succeeded());
|
| + }
|
| + ReleaseProcessIfNeeded();
|
| +}
|
| +
|
| void ChromeContentUtilityClient::OnStartupPing() {
|
| Send(new ChromeUtilityHostMsg_ProcessStarted);
|
| // Don't release the process, we assume further messages are on the way.
|
|
|