OLD | NEW |
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 "chrome/browser/guest_view/guest_view_base.h" | 5 #include "chrome/browser/guest_view/guest_view_base.h" |
6 | 6 |
7 #include "base/lazy_instance.h" | 7 #include "base/lazy_instance.h" |
8 #include "chrome/browser/guest_view/ad_view/ad_view_guest.h" | 8 #include "chrome/browser/guest_view/ad_view/ad_view_guest.h" |
9 #include "chrome/browser/guest_view/guest_view_constants.h" | 9 #include "chrome/browser/guest_view/guest_view_constants.h" |
10 #include "chrome/browser/guest_view/guest_view_manager.h" | 10 #include "chrome/browser/guest_view/guest_view_manager.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 embedder_web_contents_(NULL), | 46 embedder_web_contents_(NULL), |
47 embedder_extension_id_(embedder_extension_id), | 47 embedder_extension_id_(embedder_extension_id), |
48 embedder_render_process_id_(0), | 48 embedder_render_process_id_(0), |
49 browser_context_(guest_web_contents->GetBrowserContext()), | 49 browser_context_(guest_web_contents->GetBrowserContext()), |
50 guest_instance_id_(guest_web_contents->GetEmbeddedInstanceID()), | 50 guest_instance_id_(guest_web_contents->GetEmbeddedInstanceID()), |
51 view_instance_id_(guestview::kInstanceIDNone), | 51 view_instance_id_(guestview::kInstanceIDNone), |
52 opener_(opener), | 52 opener_(opener), |
53 weak_ptr_factory_(this) { | 53 weak_ptr_factory_(this) { |
54 webcontents_guestview_map.Get().insert( | 54 webcontents_guestview_map.Get().insert( |
55 std::make_pair(guest_web_contents, this)); | 55 std::make_pair(guest_web_contents, this)); |
| 56 GuestViewManager::FromBrowserContext(browser_context_)-> |
| 57 AddGuest(guest_instance_id_, guest_web_contents); |
56 } | 58 } |
57 | 59 |
58 // static | 60 // static |
59 GuestViewBase* GuestViewBase::Create( | 61 GuestViewBase* GuestViewBase::Create( |
60 WebContents* guest_web_contents, | 62 WebContents* guest_web_contents, |
61 const std::string& embedder_extension_id, | 63 const std::string& embedder_extension_id, |
62 const std::string& view_type, | 64 const std::string& view_type, |
63 const base::WeakPtr<GuestViewBase>& opener) { | 65 const base::WeakPtr<GuestViewBase>& opener) { |
64 if (view_type == "webview") { | 66 if (view_type == "webview") { |
65 return new WebViewGuest(guest_web_contents, embedder_extension_id, opener); | 67 return new WebViewGuest(guest_web_contents, embedder_extension_id, opener); |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
178 return; | 180 return; |
179 } | 181 } |
180 opener_ = base::WeakPtr<GuestViewBase>(); | 182 opener_ = base::WeakPtr<GuestViewBase>(); |
181 } | 183 } |
182 | 184 |
183 GuestViewBase::~GuestViewBase() { | 185 GuestViewBase::~GuestViewBase() { |
184 std::pair<int, int> key(embedder_render_process_id_, guest_instance_id_); | 186 std::pair<int, int> key(embedder_render_process_id_, guest_instance_id_); |
185 | 187 |
186 webcontents_guestview_map.Get().erase(guest_web_contents()); | 188 webcontents_guestview_map.Get().erase(guest_web_contents()); |
187 | 189 |
| 190 GuestViewManager::FromBrowserContext(browser_context_)-> |
| 191 RemoveGuest(guest_instance_id_); |
| 192 |
188 pending_events_.clear(); | 193 pending_events_.clear(); |
189 } | 194 } |
190 | 195 |
191 void GuestViewBase::DispatchEvent(Event* event) { | 196 void GuestViewBase::DispatchEvent(Event* event) { |
192 scoped_ptr<Event> event_ptr(event); | 197 scoped_ptr<Event> event_ptr(event); |
193 if (!in_extension()) { | 198 if (!in_extension()) { |
194 NOTREACHED(); | 199 NOTREACHED(); |
195 return; | 200 return; |
196 } | 201 } |
197 | 202 |
(...skipping 23 matching lines...) Expand all Loading... |
221 void GuestViewBase::SendQueuedEvents() { | 226 void GuestViewBase::SendQueuedEvents() { |
222 if (!attached()) | 227 if (!attached()) |
223 return; | 228 return; |
224 | 229 |
225 while (!pending_events_.empty()) { | 230 while (!pending_events_.empty()) { |
226 linked_ptr<Event> event_ptr = pending_events_.front(); | 231 linked_ptr<Event> event_ptr = pending_events_.front(); |
227 pending_events_.pop_front(); | 232 pending_events_.pop_front(); |
228 DispatchEvent(event_ptr.release()); | 233 DispatchEvent(event_ptr.release()); |
229 } | 234 } |
230 } | 235 } |
OLD | NEW |