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

Unified Diff: extensions/browser/guest_view/guest_view_manager.cc

Issue 444813002: Remove BrowserPlugin's -internal-attach method (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated Created 6 years, 4 months 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 side-by-side diff with in-line comments
Download patch
Index: extensions/browser/guest_view/guest_view_manager.cc
diff --git a/extensions/browser/guest_view/guest_view_manager.cc b/extensions/browser/guest_view/guest_view_manager.cc
index 3a2412e43d93ef10f7afcab47f084e1fc64a4178..7efc99c229f7cc7bd5e95ba40f37b64affe5d794 100644
--- a/extensions/browser/guest_view/guest_view_manager.cc
+++ b/extensions/browser/guest_view/guest_view_manager.cc
@@ -4,9 +4,11 @@
#include "extensions/browser/guest_view/guest_view_manager.h"
+#include "base/debug/stack_trace.h"
#include "base/strings/stringprintf.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/render_process_host.h"
+#include "content/public/browser/render_view_host.h"
#include "content/public/browser/user_metrics.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/common/result_codes.h"
@@ -60,6 +62,34 @@ content::WebContents* GuestViewManager::GetGuestByInstanceIDSafely(
return GetGuestByInstanceID(guest_instance_id);
}
+void GuestViewManager::SetAttachParamsForGuest(
+ int embedder_render_process_id,
+ int embedder_routing_id,
+ int element_instance_id,
+ int guest_instance_id,
+ const base::DictionaryValue& params) {
+ content::WebContents* guest_web_contents =
+ GetGuestByInstanceIDSafely(guest_instance_id, embedder_render_process_id);
+ if (!guest_web_contents)
+ return;
+
+ GuestViewBase* guest_view =
+ GuestViewBase::FromWebContents(guest_web_contents);
+ DCHECK(guest_view);
+
+ content::RenderViewHost* rvh =
+ content::RenderViewHost::FromID(embedder_render_process_id,
+ embedder_routing_id);
+ content::WebContents* embedder_web_contents =
+ content::WebContents::FromRenderViewHost(rvh);
+ if (!embedder_web_contents)
+ return;
+ ElementInstanceKey key(embedder_web_contents, element_instance_id);
+ instance_id_map_[key] = guest_instance_id;
+ reverse_instance_id_map_.insert(std::make_pair(guest_instance_id, key));
+ guest_view->SetAttachParams(params);
+}
+
int GuestViewManager::GetNextInstanceID() {
return ++current_instance_id_;
}
@@ -114,6 +144,16 @@ void GuestViewManager::MaybeGetGuestByInstanceIDOrKill(
callback.Run(guest_web_contents);
}
+int GuestViewManager::GetGuestInstanceIDForPluginID(
+ content::WebContents* embedder_web_contents,
+ int element_instance_id) {
+ GuestInstanceIDMap::iterator iter = instance_id_map_.find(
+ ElementInstanceKey(embedder_web_contents, element_instance_id));
+ DCHECK(iter != instance_id_map_.end());
+ int guest_instance_id = iter->second;
+ return guest_instance_id;
+}
+
SiteInstance* GuestViewManager::GetGuestSiteInstance(
const GURL& guest_site) {
for (GuestInstanceMap::const_iterator it =
@@ -154,6 +194,14 @@ void GuestViewManager::RemoveGuest(int guest_instance_id) {
DCHECK(it != guest_web_contents_by_instance_id_.end());
guest_web_contents_by_instance_id_.erase(it);
+ GuestInstanceIDReverseMap::iterator id_iter =
+ reverse_instance_id_map_.find(guest_instance_id);
+ if (id_iter != reverse_instance_id_map_.end()) {
+ const ElementInstanceKey& instance_id_key = id_iter->second;
+ instance_id_map_.erase(instance_id_map_.find(instance_id_key));
+ reverse_instance_id_map_.erase(id_iter);
+ }
+
// All the instance IDs that lie within [0, last_instance_id_removed_]
// are invalid.
// The remaining sparse invalid IDs are kept in |removed_instance_ids_| set.

Powered by Google App Engine
This is Rietveld 408576698