| 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 8e6a69ddb2146f028fcf53ba313e5d47b1397d4d..e336469cbedf0b58dd87836377d5938d6d51f28c 100644
|
| --- a/chrome/utility/chrome_content_utility_client.cc
|
| +++ b/chrome/utility/chrome_content_utility_client.cc
|
| @@ -21,6 +21,7 @@
|
| #include "chrome/common/extensions/unpacker.h"
|
| #include "chrome/common/extensions/update_manifest.h"
|
| #include "chrome/common/web_resource/web_resource_unpacker.h"
|
| +#include "chrome/common/zip.h"
|
| #include "chrome/utility/profile_import_handler.h"
|
| #include "content/public/utility/utility_thread.h"
|
| #include "printing/backend/print_backend.h"
|
| @@ -88,6 +89,7 @@ bool ChromeContentUtilityClient::OnMessageReceived(
|
| IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseJSON, OnParseJSON)
|
| IPC_MESSAGE_HANDLER(ChromeUtilityMsg_GetPrinterCapsAndDefaults,
|
| OnGetPrinterCapsAndDefaults)
|
| + IPC_MESSAGE_HANDLER(ChromeUtilityMsg_CreateZipFile, OnCreateZipFile)
|
| IPC_MESSAGE_UNHANDLED(handled = false)
|
| IPC_END_MESSAGE_MAP()
|
|
|
| @@ -186,6 +188,29 @@ void ChromeContentUtilityClient::OnDecodeImageBase64(
|
| OnDecodeImage(decoded_vector);
|
| }
|
|
|
| +bool ZipSelectionFilter(const std::vector<FilePath>& selection,
|
| + const FilePath& file_path) {
|
| + for (std::vector<FilePath>::const_iterator iter = selection.begin();
|
| + iter != selection.end(); ++iter) {
|
| + if (*iter == file_path || iter->IsParent(file_path))
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| +void ChromeContentUtilityClient::OnCreateZipFile(
|
| + const FilePath& dir_path,
|
| + const FilePath& dest_path,
|
| + const std::vector<FilePath>& file_paths) {
|
| + if (zip::ZipWithFilterCallback(dir_path, dest_path,
|
| + base::Bind(&ZipSelectionFilter, file_paths))) {
|
| + Send(new ChromeUtilityHostMsg_CreateZipFile_Succeeded());
|
| + } else {
|
| + Send(new ChromeUtilityHostMsg_CreateZipFile_Failed());
|
| + }
|
| + content::UtilityThread::Get()->ReleaseProcessIfNeeded();
|
| +}
|
| +
|
| void ChromeContentUtilityClient::OnRenderPDFPagesToMetafile(
|
| base::PlatformFile pdf_file,
|
| const FilePath& metafile_path,
|
|
|