1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "extensions/renderer/guest_view/guest_view_container.h"
7 #include "content/public/renderer/render_frame.h"
8 #include "content/public/renderer/render_view.h"
9 #include "extensions/common/guest_view/guest_view_constants.h"
11 namespace extensions {
13 GuestViewContainer::GuestViewContainer(content::RenderFrame* render_frame)
14 : content::RenderFrameObserver(render_frame),
15 element_instance_id_(guestview::kInstanceIDNone),
16 render_view_routing_id_(render_frame->GetRenderView()->GetRoutingID()) {
19 GuestViewContainer::~GuestViewContainer() {}
21 void GuestViewContainer::SetElementInstanceID(int element_instance_id) {
22 DCHECK_EQ(element_instance_id_, guestview::kInstanceIDNone);
23 element_instance_id_ = element_instance_id;
26 void GuestViewContainer::OnDestruct() {
27 // GuestViewContainer's lifetime is managed by BrowserPlugin so don't let
28 // RenderFrameObserver self-destruct here.
31 bool GuestViewContainer::OnMessageReceived(
32 const IPC::Message& message) {
33 if (!HandlesMessage(message))
36 DCHECK_NE(element_instance_id_, guestview::kInstanceIDNone);
37 int element_instance_id = guestview::kInstanceIDNone;
38 PickleIterator iter(message);
39 bool success = iter.ReadInt(&element_instance_id);
41 if (element_instance_id != element_instance_id_)
44 return OnMessage(message);
47 } // namespace extensions