OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/guest_view/browser/guest_view_message_filter.h" | 5 #include "components/guest_view/browser/guest_view_message_filter.h" |
6 | 6 |
7 #include "base/memory/ptr_util.h" | 7 #include "base/memory/ptr_util.h" |
8 #include "components/guest_view/browser/guest_view_base.h" | 8 #include "components/guest_view/browser/guest_view_base.h" |
9 #include "components/guest_view/browser/guest_view_manager.h" | 9 #include "components/guest_view/browser/guest_view_manager.h" |
10 #include "components/guest_view/browser/guest_view_manager_delegate.h" | 10 #include "components/guest_view/browser/guest_view_manager_delegate.h" |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 | 93 |
94 void GuestViewMessageFilter::OnViewGarbageCollected(int view_instance_id) { | 94 void GuestViewMessageFilter::OnViewGarbageCollected(int view_instance_id) { |
95 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 95 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
96 GetOrCreateGuestViewManager()->ViewGarbageCollected(render_process_id_, | 96 GetOrCreateGuestViewManager()->ViewGarbageCollected(render_process_id_, |
97 view_instance_id); | 97 view_instance_id); |
98 } | 98 } |
99 | 99 |
100 void GuestViewMessageFilter::OnAttachGuest( | 100 void GuestViewMessageFilter::OnAttachGuest( |
101 int element_instance_id, | 101 int element_instance_id, |
102 int guest_instance_id, | 102 int guest_instance_id, |
| 103 int embedder_routing_id, |
103 const base::DictionaryValue& params) { | 104 const base::DictionaryValue& params) { |
104 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 105 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
105 auto* manager = GuestViewManager::FromBrowserContext(browser_context_); | 106 auto* manager = GuestViewManager::FromBrowserContext(browser_context_); |
106 // We should have a GuestViewManager at this point. If we don't then the | 107 // We should have a GuestViewManager at this point. If we don't then the |
107 // embedder is misbehaving. | 108 // embedder is misbehaving. |
108 if (!manager) | 109 if (!manager) |
109 return; | 110 return; |
110 | 111 |
111 manager->AttachGuest(render_process_id_, | 112 manager->AttachGuest(render_process_id_, embedder_routing_id, |
112 element_instance_id, | 113 element_instance_id, guest_instance_id, params); |
113 guest_instance_id, | |
114 params); | |
115 } | 114 } |
116 | 115 |
117 void GuestViewMessageFilter::OnAttachToEmbedderFrame( | 116 void GuestViewMessageFilter::OnAttachToEmbedderFrame( |
118 int embedder_local_render_frame_id, | 117 int embedder_local_render_frame_id, |
119 int element_instance_id, | 118 int element_instance_id, |
120 int guest_instance_id, | 119 int guest_instance_id, |
121 const base::DictionaryValue& params) { | 120 const base::DictionaryValue& params) { |
122 auto* manager = GuestViewManager::FromBrowserContext(browser_context_); | 121 auto* manager = GuestViewManager::FromBrowserContext(browser_context_); |
123 DCHECK(manager); | 122 DCHECK(manager); |
124 content::WebContents* guest_web_contents = | 123 content::WebContents* guest_web_contents = |
(...skipping 10 matching lines...) Expand all Loading... |
135 | 134 |
136 // Attach this inner WebContents |guest_web_contents| to the outer | 135 // Attach this inner WebContents |guest_web_contents| to the outer |
137 // WebContents |owner_web_contents|. The outer WebContents's | 136 // WebContents |owner_web_contents|. The outer WebContents's |
138 // frame |embedder_frame| hosts the inner WebContents. | 137 // frame |embedder_frame| hosts the inner WebContents. |
139 guest_web_contents->AttachToOuterWebContentsFrame(owner_web_contents, | 138 guest_web_contents->AttachToOuterWebContentsFrame(owner_web_contents, |
140 embedder_frame); | 139 embedder_frame); |
141 | 140 |
142 // Update the guest manager about the attachment. | 141 // Update the guest manager about the attachment. |
143 // This sets up the embedder and guest pairing information inside | 142 // This sets up the embedder and guest pairing information inside |
144 // the manager. | 143 // the manager. |
145 manager->AttachGuest(render_process_id_, element_instance_id, | 144 manager->AttachGuest(render_process_id_, embedder_local_render_frame_id, |
146 guest_instance_id, params); | 145 element_instance_id, guest_instance_id, params); |
147 | 146 |
148 owner_web_contents->GetMainFrame()->Send( | 147 owner_web_contents->GetMainFrame()->Send( |
149 new GuestViewMsg_AttachToEmbedderFrame_ACK(element_instance_id)); | 148 new GuestViewMsg_AttachToEmbedderFrame_ACK(element_instance_id)); |
150 | 149 |
151 guest->WillAttach( | 150 guest->WillAttach( |
152 owner_web_contents, element_instance_id, false, | 151 owner_web_contents, element_instance_id, false, |
153 base::Bind(&GuestViewMessageFilter::WillAttachCallback, this, guest)); | 152 base::Bind(&GuestViewMessageFilter::WillAttachCallback, this, guest)); |
154 } | 153 } |
155 | 154 |
156 void GuestViewMessageFilter::WillAttachCallback(GuestViewBase* guest) { | 155 void GuestViewMessageFilter::WillAttachCallback(GuestViewBase* guest) { |
157 guest->DidAttach(MSG_ROUTING_NONE); | 156 guest->DidAttach(MSG_ROUTING_NONE); |
158 } | 157 } |
159 | 158 |
160 } // namespace guest_view | 159 } // namespace guest_view |
OLD | NEW |