Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / extensions / renderer / guest_view / guest_view_container.cc
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.
4
5 #include "extensions/renderer/guest_view/guest_view_container.h"
6
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"
10
11 namespace extensions {
12
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()) {
17 }
18
19 GuestViewContainer::~GuestViewContainer() {}
20
21 void GuestViewContainer::SetElementInstanceID(int element_instance_id) {
22   DCHECK_EQ(element_instance_id_, guestview::kInstanceIDNone);
23   element_instance_id_ = element_instance_id;
24 }
25
26 void GuestViewContainer::OnDestruct() {
27   // GuestViewContainer's lifetime is managed by BrowserPlugin so don't let
28   // RenderFrameObserver self-destruct here.
29 }
30
31 bool GuestViewContainer::OnMessageReceived(
32     const IPC::Message& message) {
33   if (!HandlesMessage(message))
34     return false;
35
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);
40   DCHECK(success);
41   if (element_instance_id != element_instance_id_)
42     return false;
43
44   return OnMessage(message);
45 }
46
47 }  // namespace extensions