Index: extensions/utility/utility_handler.cc |
diff --git a/extensions/utility/utility_handler.cc b/extensions/utility/utility_handler.cc |
index a8772de305abd82e0be99bb0a4a1de4547ea375f..4b8e4ac3c7fcbb45b29e93ed737c78a054f766d3 100644 |
--- a/extensions/utility/utility_handler.cc |
+++ b/extensions/utility/utility_handler.cc |
@@ -10,14 +10,12 @@ |
#include "extensions/common/constants.h" |
#include "extensions/common/extension_l10n_util.h" |
#include "extensions/common/extension_unpacker.mojom.h" |
-#include "extensions/common/extension_utility_messages.h" |
#include "extensions/common/extensions_client.h" |
#include "extensions/common/manifest.h" |
+#include "extensions/common/manifest_parser.mojom.h" |
#include "extensions/common/update_manifest.h" |
#include "extensions/strings/grit/extensions_strings.h" |
#include "extensions/utility/unpacker.h" |
-#include "ipc/ipc_message.h" |
-#include "ipc/ipc_message_macros.h" |
#include "mojo/public/cpp/bindings/strong_binding.h" |
#include "services/service_manager/public/cpp/interface_registry.h" |
#include "third_party/zlib/google/zip.h" |
@@ -101,54 +99,52 @@ class ExtensionUnpackerImpl : public extensions::mojom::ExtensionUnpacker { |
DISALLOW_COPY_AND_ASSIGN(ExtensionUnpackerImpl); |
}; |
-} // namespace |
+class ManifestParserImpl : public extensions::mojom::ManifestParser { |
+ public: |
+ ManifestParserImpl() = default; |
+ ~ManifestParserImpl() override = default; |
-UtilityHandler::UtilityHandler() = default; |
+ static void Create(extensions::mojom::ManifestParserRequest request) { |
+ mojo::MakeStrongBinding(base::MakeUnique<ManifestParserImpl>(), |
+ std::move(request)); |
+ } |
-UtilityHandler::~UtilityHandler() = default; |
+ private: |
+ void Parse(const std::string& xml, const ParseCallback& callback) override { |
+ UpdateManifest manifest; |
+ if (manifest.Parse(xml)) { |
+ callback.Run(manifest.results()); |
+ } else { |
+ LOG(WARNING) << "Error parsing update manifest:\n" << manifest.errors(); |
+ callback.Run(base::nullopt); |
+ } |
+ } |
-// static |
-void UtilityHandler::UtilityThreadStarted() { |
+ DISALLOW_COPY_AND_ASSIGN(ManifestParserImpl); |
+}; |
+ |
+} // namespace |
+ |
+namespace utility_handler { |
+ |
+void UtilityThreadStarted() { |
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
std::string lang = command_line->GetSwitchValueASCII(switches::kLang); |
if (!lang.empty()) |
extension_l10n_util::SetProcessLocale(lang); |
} |
-// static |
-void UtilityHandler::ExposeInterfacesToBrowser( |
- service_manager::InterfaceRegistry* registry, |
- bool running_elevated) { |
+void ExposeInterfacesToBrowser(service_manager::InterfaceRegistry* registry, |
+ bool running_elevated) { |
// If our process runs with elevated privileges, only add elevated Mojo |
// interfaces to the interface registry. |
if (running_elevated) |
return; |
registry->AddInterface(base::Bind(&ExtensionUnpackerImpl::Create)); |
+ registry->AddInterface(base::Bind(&ManifestParserImpl::Create)); |
} |
-bool UtilityHandler::OnMessageReceived(const IPC::Message& message) { |
- bool handled = true; |
- IPC_BEGIN_MESSAGE_MAP(UtilityHandler, message) |
- IPC_MESSAGE_HANDLER(ExtensionUtilityMsg_ParseUpdateManifest, |
- OnParseUpdateManifest) |
- IPC_MESSAGE_UNHANDLED(handled = false) |
- IPC_END_MESSAGE_MAP() |
- return handled; |
-} |
- |
-void UtilityHandler::OnParseUpdateManifest(const std::string& xml) { |
- UpdateManifest manifest; |
- if (!manifest.Parse(xml)) { |
- content::UtilityThread::Get()->Send( |
- new ExtensionUtilityHostMsg_ParseUpdateManifest_Failed( |
- manifest.errors())); |
- } else { |
- content::UtilityThread::Get()->Send( |
- new ExtensionUtilityHostMsg_ParseUpdateManifest_Succeeded( |
- manifest.results())); |
- } |
- content::UtilityThread::Get()->ReleaseProcessIfNeeded(); |
-} |
+} // namespace utility_handler |
} // namespace extensions |