Index: components/arc/arc_bridge_service_impl.cc |
diff --git a/components/arc/arc_bridge_service_impl.cc b/components/arc/arc_bridge_service_impl.cc |
index 1a1c954fefa2993b44ff387ae762c8cc6c9597a2..4975075d2651945671f4b14ef5d415d6ba69e2a8 100644 |
--- a/components/arc/arc_bridge_service_impl.cc |
+++ b/components/arc/arc_bridge_service_impl.cc |
@@ -100,12 +100,19 @@ bool ArcBridgeServiceImpl::RegisterInputDevice(const std::string& name, |
const std::string& device_type, |
base::ScopedFD fd) { |
DCHECK(origin_task_runner()->RunsTasksOnCurrentThread()); |
- if (state() != State::READY) { |
- LOG(ERROR) << "Called RegisterInputDevice when the service is not ready"; |
+ return SendMessageIfReady(new ArcInstanceMsg_RegisterInputDevice( |
+ name, device_type, base::FileDescriptor(fd.Pass()))); |
+} |
+ |
+bool ArcBridgeServiceImpl::SendNotificationEventToAndroid( |
+ const std::string& key, ArcNotificationEvent event) { |
+ DCHECK(ipc_task_runner_->RunsTasksOnCurrentThread()); |
+ if (key.empty()) { |
+ LOG(ERROR) << "NotifyNotificationEvent failed: Wrong parameter"; |
elijahtaylor1
2015/12/01 07:02:36
method rename in log message
yoshiki
2015/12/02 02:38:24
Done.
|
return false; |
} |
- return ipc_channel_->Send(new ArcInstanceMsg_RegisterInputDevice( |
- name, device_type, base::FileDescriptor(fd.Pass()))); |
+ return SendMessageIfReady( |
+ new ArcInstanceMsg_NotifyNotificationEvent(key, event)); |
elijahtaylor1
2015/12/01 07:02:36
I think the method name change should go all the w
yoshiki
2015/12/02 02:38:24
Done.
|
} |
void ArcBridgeServiceImpl::SocketConnect(const base::FilePath& socket_path) { |
@@ -192,6 +199,15 @@ void ArcBridgeServiceImpl::SocketConnectAfterSetSocketPermissions( |
weak_factory_.GetWeakPtr())); |
} |
+bool ArcBridgeServiceImpl::SendMessageIfReady(IPC::Message* message) { |
+ DCHECK(ipc_task_runner_->RunsTasksOnCurrentThread()); |
+ if (state() != State::READY) { |
+ LOG(ERROR) << "Tried to send a message but the service is not ready"; |
elijahtaylor1
2015/12/01 07:02:36
too bad we lose the actual method name here, is th
yoshiki
2015/12/02 02:38:24
Let me revert back here to the original. I think c
|
+ return false; |
+ } |
+ return ipc_channel_->Send(message); |
+} |
+ |
void ArcBridgeServiceImpl::OnInstanceStarted(bool success) { |
DCHECK(origin_task_runner()->RunsTasksOnCurrentThread()); |
if (state() != State::STARTING) { |
@@ -219,6 +235,20 @@ void ArcBridgeServiceImpl::OnInstanceBootPhase(InstanceBootPhase phase) { |
FOR_EACH_OBSERVER(Observer, observer_list(), OnInstanceBootPhase(phase)); |
} |
+void ArcBridgeServiceImpl::OnNotificationPostedFromAndroid( |
+ const arc::ArcNotificationData& data) { |
+ DCHECK(origin_task_runner()->RunsTasksOnCurrentThread()); |
+ FOR_EACH_OBSERVER(Observer, observer_list(), |
+ OnNotificationPostedFromAndroid(data)); |
+} |
+ |
+void ArcBridgeServiceImpl::OnNotificationRemovedFromAndroid( |
+ const std::string& key) { |
+ DCHECK(origin_task_runner()->RunsTasksOnCurrentThread()); |
+ FOR_EACH_OBSERVER(Observer, observer_list(), |
+ OnNotificationRemovedFromAndroid(key)); |
+} |
+ |
bool ArcBridgeServiceImpl::OnMessageReceived(const IPC::Message& message) { |
DCHECK(origin_task_runner()->RunsTasksOnCurrentThread()); |
bool handled = true; |
@@ -226,6 +256,10 @@ bool ArcBridgeServiceImpl::OnMessageReceived(const IPC::Message& message) { |
IPC_BEGIN_MESSAGE_MAP(ArcBridgeServiceImpl, message) |
IPC_MESSAGE_HANDLER(ArcInstanceHostMsg_InstanceBootPhase, |
OnInstanceBootPhase) |
+ IPC_MESSAGE_HANDLER(ArcInstanceHostMsg_NotificationPosted, |
+ OnNotificationPostedFromAndroid) |
+ IPC_MESSAGE_HANDLER(ArcInstanceHostMsg_NotificationRemoved, |
+ OnNotificationRemovedFromAndroid) |
IPC_MESSAGE_UNHANDLED(handled = false) |
IPC_END_MESSAGE_MAP() |