// Copyright 2015 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/service/cloud_print/cloud_print_message_handler.h" #include #include "chrome/common/service_messages.h" #include "ipc/ipc_sender.h" namespace cloud_print { CloudPrintMessageHandler::CloudPrintMessageHandler( IPC::Sender* ipc_sender, CloudPrintProxy::Provider* proxy_provider) : ipc_sender_(ipc_sender), proxy_provider_(proxy_provider) { DCHECK(ipc_sender); DCHECK(proxy_provider); } CloudPrintMessageHandler::~CloudPrintMessageHandler() { } bool CloudPrintMessageHandler::HandleMessage(const IPC::Message& message) { bool handled = true; IPC_BEGIN_MESSAGE_MAP(CloudPrintMessageHandler, message) IPC_MESSAGE_HANDLER(ServiceMsg_EnableCloudPrintProxyWithRobot, OnEnableCloudPrintProxyWithRobot) IPC_MESSAGE_HANDLER(ServiceMsg_DisableCloudPrintProxy, OnDisableCloudPrintProxy) IPC_MESSAGE_HANDLER(ServiceMsg_GetCloudPrintProxyInfo, OnGetCloudPrintProxyInfo) IPC_MESSAGE_HANDLER(ServiceMsg_GetPrinters, OnGetPrinters) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() return handled; } void CloudPrintMessageHandler::OnEnableCloudPrintProxyWithRobot( const std::string& robot_auth_code, const std::string& robot_email, const std::string& user_email, const base::DictionaryValue& user_settings) { proxy_provider_->GetCloudPrintProxy()->EnableForUserWithRobot( robot_auth_code, robot_email, user_email, user_settings); } void CloudPrintMessageHandler::OnGetCloudPrintProxyInfo() { CloudPrintProxyInfo info; proxy_provider_->GetCloudPrintProxy()->GetProxyInfo(&info); ipc_sender_->Send(new ServiceHostMsg_CloudPrintProxy_Info(info)); } void CloudPrintMessageHandler::OnGetPrinters() { std::vector printers; proxy_provider_->GetCloudPrintProxy()->GetPrinters(&printers); ipc_sender_->Send(new ServiceHostMsg_Printers(printers)); } void CloudPrintMessageHandler::OnDisableCloudPrintProxy() { proxy_provider_->GetCloudPrintProxy()->UnregisterPrintersAndDisableForUser(); } } // namespace cloud_print