Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(306)

Side by Side Diff: extensions/renderer/guest_view/guest_view_container.cc

Issue 801173002: Fix message routing for BrowserPlugin in iframe (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix tests that don't have a RenderThreadImpl Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "extensions/renderer/guest_view/guest_view_container.h" 5 #include "extensions/renderer/guest_view/guest_view_container.h"
6 6
7 #include "content/public/renderer/render_frame.h" 7 #include "content/public/renderer/render_frame.h"
8 #include "content/public/renderer/render_view.h" 8 #include "content/public/renderer/render_view.h"
9 #include "extensions/common/extension_messages.h"
9 #include "extensions/common/guest_view/guest_view_constants.h" 10 #include "extensions/common/guest_view/guest_view_constants.h"
10 11
11 namespace extensions { 12 namespace extensions {
12 13
13 GuestViewContainer::GuestViewContainer(content::RenderFrame* render_frame) 14 GuestViewContainer::GuestViewContainer(content::RenderFrame* render_frame)
14 : content::RenderFrameObserver(render_frame), 15 : element_instance_id_(guestview::kInstanceIDNone),
15 element_instance_id_(guestview::kInstanceIDNone), 16 render_view_routing_id_(render_frame->GetRenderView()->GetRoutingID()),
16 render_view_routing_id_(render_frame->GetRenderView()->GetRoutingID()) { 17 render_frame_(render_frame) {
17 } 18 }
18 19
19 GuestViewContainer::~GuestViewContainer() {} 20 GuestViewContainer::~GuestViewContainer() {}
20 21
22 // static.
23 bool GuestViewContainer::HandlesMessage(const IPC::Message& msg) {
24 switch (msg.type()) {
25 case ExtensionMsg_GuestAttached::ID:
26 case ExtensionMsg_GuestDetached::ID:
27 case ExtensionMsg_CreateMimeHandlerViewGuestACK::ID:
28 return true;
29 default:
30 return false;
31 }
32 }
33
21 void GuestViewContainer::SetElementInstanceID(int element_instance_id) { 34 void GuestViewContainer::SetElementInstanceID(int element_instance_id) {
22 DCHECK_EQ(element_instance_id_, guestview::kInstanceIDNone); 35 DCHECK_EQ(element_instance_id_, guestview::kInstanceIDNone);
23 element_instance_id_ = element_instance_id; 36 element_instance_id_ = element_instance_id;
24 } 37 }
25 38
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 39 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698