diff options
Diffstat (limited to 'chrome/utility/utility_thread.cc')
-rw-r--r-- | chrome/utility/utility_thread.cc | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/chrome/utility/utility_thread.cc b/chrome/utility/utility_thread.cc new file mode 100644 index 0000000..269a86b --- /dev/null +++ b/chrome/utility/utility_thread.cc @@ -0,0 +1,40 @@ +// Copyright (c) 2009 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/utility/utility_thread.h" + +#include "chrome/common/child_process.h" +#include "chrome/common/extensions/extension_unpacker.h" +#include "chrome/common/render_messages.h" + +UtilityThread::UtilityThread() : ChildThread(base::Thread::Options()) { +} + +UtilityThread::~UtilityThread() { +} + +void UtilityThread::Init() { + ChildThread::Init(); + ChildProcess::current()->AddRefProcess(); +} + +void UtilityThread::CleanUp() { + // Shutdown in reverse of the initialization order. + ChildThread::CleanUp(); +} + +void UtilityThread::OnControlMessageReceived(const IPC::Message& msg) { + IPC_BEGIN_MESSAGE_MAP(UtilityThread, msg) + IPC_MESSAGE_HANDLER(UtilityMsg_UnpackExtension, OnUnpackExtension) + IPC_END_MESSAGE_MAP() +} + +void UtilityThread::OnUnpackExtension(const FilePath& extension_path) { + ExtensionUnpacker unpacker(extension_path); + bool success = unpacker.Run(); + Send(new UtilityHostMsg_UnpackExtension_Reply(success, + unpacker.error_message())); + + ChildProcess::current()->ReleaseProcess(); +} |