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

Unified Diff: content/browser/browser_plugin/browser_plugin_message_filter.cc

Issue 269113002: Remove BrowserPluginGuestManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@guestview_manager_createguest
Patch Set: Updateed Created 6 years, 7 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: content/browser/browser_plugin/browser_plugin_message_filter.cc
diff --git a/content/browser/browser_plugin/browser_plugin_message_filter.cc b/content/browser/browser_plugin/browser_plugin_message_filter.cc
index 512f8a7df8c0aaa9c5d8134b6d2f897ba5dd76e5..93d58d9e0f616211a5b4e01719aa2fa6ddeb5a6d 100644
--- a/content/browser/browser_plugin/browser_plugin_message_filter.cc
+++ b/content/browser/browser_plugin/browser_plugin_message_filter.cc
@@ -6,7 +6,6 @@
#include "base/supports_user_data.h"
#include "content/browser/browser_plugin/browser_plugin_guest.h"
-#include "content/browser/browser_plugin/browser_plugin_guest_manager.h"
#include "content/browser/gpu/gpu_process_host.h"
#include "content/browser/web_contents/web_contents_impl.h"
#include "content/common/browser_plugin/browser_plugin_constants.h"
@@ -14,6 +13,7 @@
#include "content/common/gpu/gpu_messages.h"
#include "content/common/view_messages.h"
#include "content/public/browser/browser_context.h"
+#include "content/public/browser/browser_plugin_guest_manager_delegate.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_view_host.h"
@@ -36,10 +36,7 @@ bool BrowserPluginMessageFilter::OnMessageReceived(
// Any message requested by a BrowserPluginGuest should be routed through
// a BrowserPluginGuestManager.
if (BrowserPluginGuest::ShouldForwardToBrowserPluginGuest(message)) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- BrowserPluginGuestManager* guest_manager = GetBrowserPluginGuestManager();
- if (guest_manager)
- guest_manager->OnMessageReceived(message, render_process_id_);
+ ForwardMessageToGuest(message);
// We always swallow messages destined for BrowserPluginGuestManager because
// we're on the UI thread and fallback code is expected to be run on the IO
// thread.
@@ -65,18 +62,33 @@ void BrowserPluginMessageFilter::OverrideThreadForMessage(
*thread = BrowserThread::UI;
}
-BrowserPluginGuestManager*
- BrowserPluginMessageFilter::GetBrowserPluginGuestManager() {
+static void BrowserPluginGuestMessageCallback(const IPC::Message& message,
+ WebContents* guest_web_contents) {
+ if (!guest_web_contents)
+ return;
+ static_cast<WebContentsImpl*>(guest_web_contents)->GetBrowserPluginGuest()->
+ OnMessageReceivedFromEmbedder(message);
+}
+
+void BrowserPluginMessageFilter::ForwardMessageToGuest(
+ const IPC::Message& message) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
RenderProcessHostImpl* host = static_cast<RenderProcessHostImpl*>(
RenderProcessHost::FromID(render_process_id_));
if (!host)
- return NULL;
+ return;
- BrowserContext* browser_context = host->GetBrowserContext();
- return static_cast<BrowserPluginGuestManager*>(
- browser_context->GetUserData(
- browser_plugin::kBrowserPluginGuestManagerKeyName));
+ int instance_id = 0;
+ // All allowed messages must have instance_id as their first parameter.
+ PickleIterator iter(message);
+ bool success = iter.ReadInt(&instance_id);
+ DCHECK(success);
+ host->GetBrowserContext()->GetGuestManagerDelegate()->
+ MaybeGetGuestByInstanceIDOrKill(
+ instance_id,
+ render_process_id_,
+ base::Bind(&BrowserPluginGuestMessageCallback,
+ message));
}
void BrowserPluginMessageFilter::OnSwapBuffersACK(

Powered by Google App Engine
This is Rietveld 408576698