// 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 "components/guest_view/renderer/guest_view_container_dispatcher.h"

#include "components/guest_view/common/guest_view_constants.h"
#include "components/guest_view/renderer/guest_view_container.h"
#include "ipc/ipc_message_macros.h"

namespace guest_view {

GuestViewContainerDispatcher::GuestViewContainerDispatcher() {
}

GuestViewContainerDispatcher::~GuestViewContainerDispatcher() {
}

bool GuestViewContainerDispatcher::HandlesMessage(const IPC::Message& message) {
  return IPC_MESSAGE_CLASS(message) == GuestViewMsgStart;
}

bool GuestViewContainerDispatcher::OnControlMessageReceived(
    const IPC::Message& message) {
  if (!HandlesMessage(message))
    return false;

  int element_instance_id = kInstanceIDNone;
  PickleIterator iter(message);
  bool success = iter.ReadInt(&element_instance_id);
  DCHECK(success);

  auto* container = GuestViewContainer::FromID(element_instance_id);
  if (!container)
    return false;

  return container->OnMessageReceived(message);
}

}  // namespace guest_view
