blob: 44ef046739d95fba7337f9199d9d4468c760a110 [file] [log] [blame]
// Copyright 2014 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 "extensions/renderer/guest_view/guest_view_container.h"
#include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_view.h"
#include "extensions/common/guest_view/guest_view_constants.h"
namespace extensions {
GuestViewContainer::GuestViewContainer(content::RenderFrame* render_frame)
: content::RenderFrameObserver(render_frame),
element_instance_id_(guestview::kInstanceIDNone),
render_view_routing_id_(render_frame->GetRenderView()->GetRoutingID()) {
}
GuestViewContainer::~GuestViewContainer() {}
void GuestViewContainer::SetElementInstanceID(int element_instance_id) {
DCHECK_EQ(element_instance_id_, guestview::kInstanceIDNone);
element_instance_id_ = element_instance_id;
}
void GuestViewContainer::OnDestruct() {
// GuestViewContainer's lifetime is managed by BrowserPlugin so don't let
// RenderFrameObserver self-destruct here.
}
bool GuestViewContainer::OnMessageReceived(
const IPC::Message& message) {
if (!HandlesMessage(message))
return false;
DCHECK_NE(element_instance_id_, guestview::kInstanceIDNone);
int element_instance_id = guestview::kInstanceIDNone;
PickleIterator iter(message);
bool success = iter.ReadInt(&element_instance_id);
DCHECK(success);
if (element_instance_id != element_instance_id_)
return false;
return OnMessage(message);
}
} // namespace extensions