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

Unified Diff: chrome/browser/chromeos/extensions/zip_file_creator.cc

Issue 11309014: File manager: support for zipping selected files. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove the unused function (ZipSelectionFilter). Created 8 years, 1 month 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/chromeos/extensions/zip_file_creator.cc
diff --git a/chrome/browser/chromeos/extensions/zip_file_creator.cc b/chrome/browser/chromeos/extensions/zip_file_creator.cc
new file mode 100644
index 0000000000000000000000000000000000000000..3a188bc89b18c7f9cb2706e99cf610ccd29068de
--- /dev/null
+++ b/chrome/browser/chromeos/extensions/zip_file_creator.cc
@@ -0,0 +1,112 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/extensions/zip_file_creator.h"
+
+#include <set>
+
+#include "base/bind.h"
+#include "base/command_line.h"
+#include "base/file_util.h"
+#include "base/file_util_proxy.h"
+#include "base/memory/scoped_handle.h"
+#include "base/message_loop.h"
+#include "base/path_service.h"
+#include "chrome/common/chrome_paths.h"
+#include "chrome/common/chrome_switches.h"
+#include "chrome/common/chrome_utility_messages.h"
+#include "chrome/common/extensions/extension_manifest_constants.h"
+#include "chrome/common/extensions/extension_file_util.h"
+#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/utility_process_host.h"
+#include "grit/generated_resources.h"
+
+using content::BrowserThread;
+using content::UtilityProcessHost;
+
+namespace extensions {
+
+ZipFileCreator::ZipFileCreator(
+ Delegate* delegate,
+ const FilePath& dir_path,
+ const FilePath& dest_path,
+ const std::vector<FilePath>& file_paths)
+ : thread_identifier_(BrowserThread::ID_COUNT),
+ delegate_(delegate),
+ dir_path_(dir_path),
+ dest_path_(dest_path),
+ file_paths_(file_paths) {
+}
+
+void ZipFileCreator::Start() {
+ // We assume that we are started on the thread that the client wants us to do
tbarzic 2012/11/06 19:41:25 maybe it would be easier to use the class if this
hshi1 2012/11/10 02:29:11 Maybe the comments aren't clear, but this function
tbarzic 2012/11/10 03:40:56 ah, ok.. Is there a reason this is called on file
hshi1 2012/11/12 20:12:12 Done.
+ // file IO on.
+ CHECK(BrowserThread::GetCurrentThreadIdentifier(&thread_identifier_));
+
+ // The utility process will have access to the directory passed to
+ // ZipFileCreator. TODO: determine the directory.
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(
+ &ZipFileCreator::StartProcessOnIOThread,
+ this));
+}
+
+ZipFileCreator::~ZipFileCreator() {
+}
+
+bool ZipFileCreator::OnMessageReceived(const IPC::Message& message) {
+ bool handled = true;
+ IPC_BEGIN_MESSAGE_MAP(ZipFileCreator, message)
+ IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_CreateZipFile_Succeeded,
+ OnCreateZipFileSucceeded)
+ IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_CreateZipFile_Failed,
+ OnCreateZipFileFailed)
+ IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_END_MESSAGE_MAP()
+ return handled;
+}
+
+void ZipFileCreator::OnProcessCrashed(int exit_code) {
+ // Don't report crashes if they happen after we got a response.
+ if (got_response_)
+ return;
+
+ // Utility process crashed while trying to install.
+ ReportFailure();
+}
+
+void ZipFileCreator::StartProcessOnIOThread() {
+ UtilityProcessHost* host = UtilityProcessHost::Create(
+ this, thread_identifier_);
+ // Grant the subprocess access to some directory.
+ // host->SetExposedDir(temp_crx_path.DirName());
tbarzic 2012/11/06 19:41:25 Is this commented out intentionally? If so, it wou
hshi1 2012/11/10 02:29:11 Done.
+ host->Send(new ChromeUtilityMsg_CreateZipFile(dir_path_, dest_path_,
+ file_paths_));
+}
+
+void ZipFileCreator::OnCreateZipFileSucceeded() {
+ // Skip check for unittests.
+ if (thread_identifier_ != BrowserThread::ID_COUNT)
+ CHECK(BrowserThread::CurrentlyOn(thread_identifier_));
+ got_response_ = true;
+
+ ReportSuccess();
+}
+
+void ZipFileCreator::OnCreateZipFileFailed() {
+ CHECK(BrowserThread::CurrentlyOn(thread_identifier_));
+ got_response_ = true;
+ ReportFailure();
+}
+
+void ZipFileCreator::ReportFailure() {
+ delegate_->OnZipFailure();
+}
+
+void ZipFileCreator::ReportSuccess() {
+ delegate_->OnZipSuccess();
+}
+
+} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698