summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-20 17:03:07 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-20 17:03:07 +0000
commit6dd625e74fdc972f52ab08d39adc22555389e1e8 (patch)
tree77193b19d0da42f31d62b20558281998c3ee7e0e
parentbd4fdd4f4d129207a7d699768990c50afa126b7d (diff)
downloadchromium_src-6dd625e74fdc972f52ab08d39adc22555389e1e8.zip
chromium_src-6dd625e74fdc972f52ab08d39adc22555389e1e8.tar.gz
chromium_src-6dd625e74fdc972f52ab08d39adc22555389e1e8.tar.bz2
Make PepperWebPlugin not use RenderView.
BUG=304341 R=nasko@chromium.org, yoz@chromium.org, yzshen@chromium.org Review URL: https://codereview.chromium.org/105553005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@242110 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/extensions/api/page_capture/page_capture_api.cc6
-rw-r--r--chrome/browser/extensions/api/page_capture/page_capture_api.h3
-rw-r--r--chrome/browser/extensions/extension_function_dispatcher.cc25
-rw-r--r--chrome/browser/extensions/extension_function_dispatcher.h13
-rw-r--r--chrome/browser/nacl_host/nacl_browser_delegate_impl.cc11
-rw-r--r--chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc2
-rw-r--r--chrome/browser/renderer_host/pepper/pepper_extensions_common_message_filter.cc40
-rw-r--r--chrome/browser/renderer_host/pepper/pepper_extensions_common_message_filter.h4
-rw-r--r--chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc2
-rw-r--r--chrome/browser/renderer_host/pepper/pepper_flash_drm_host.cc28
-rw-r--r--chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc8
-rw-r--r--chrome/browser/renderer_host/pepper/pepper_output_protection_message_filter.cc73
-rw-r--r--chrome/browser/renderer_host/pepper/pepper_platform_verification_message_filter.cc18
-rw-r--r--chrome/browser/renderer_host/pepper/pepper_platform_verification_message_filter.h2
-rw-r--r--chrome/browser/renderer_host/pepper/pepper_talk_host.cc38
-rw-r--r--chrome/chrome_renderer.gypi2
-rw-r--r--chrome/renderer/chrome_content_renderer_client.cc3
-rw-r--r--chrome/renderer/extensions/extension_frame_helper.cc39
-rw-r--r--chrome/renderer/extensions/extension_frame_helper.h35
-rw-r--r--content/browser/frame_host/render_frame_host_impl.cc12
-rw-r--r--content/browser/frame_host/render_frame_host_impl.h2
-rw-r--r--content/browser/renderer_host/pepper/browser_ppapi_host_impl.cc10
-rw-r--r--content/browser/renderer_host/pepper/browser_ppapi_host_impl.h7
-rw-r--r--content/browser/renderer_host/pepper/pepper_file_io_host.cc6
-rw-r--r--content/browser/renderer_host/pepper/pepper_file_ref_host.cc12
-rw-r--r--content/browser/renderer_host/pepper/pepper_file_system_browser_host.cc14
-rw-r--r--content/browser/renderer_host/pepper/pepper_flash_file_message_filter.cc2
-rw-r--r--content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.cc14
-rw-r--r--content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.h2
-rw-r--r--content/browser/renderer_host/pepper/pepper_network_monitor_host.cc14
-rw-r--r--content/browser/renderer_host/pepper/pepper_network_proxy_host.cc29
-rw-r--r--content/browser/renderer_host/pepper/pepper_network_proxy_host.h2
-rw-r--r--content/browser/renderer_host/pepper/pepper_socket_utils.cc25
-rw-r--r--content/browser/renderer_host/pepper/pepper_socket_utils.h10
-rw-r--r--content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.cc10
-rw-r--r--content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.h2
-rw-r--r--content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.cc24
-rw-r--r--content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.h2
-rw-r--r--content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.cc12
-rw-r--r--content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.h2
-rw-r--r--content/common/pepper_renderer_instance_data.cc6
-rw-r--r--content/common/pepper_renderer_instance_data.h4
-rw-r--r--content/common/view_messages.h2
-rw-r--r--content/public/browser/browser_ppapi_host.h12
-rw-r--r--content/public/browser/render_frame_host.h7
-rw-r--r--content/renderer/pepper/host_dispatcher_wrapper.cc12
-rw-r--r--content/renderer/pepper/pepper_browser_connection.cc4
-rw-r--r--content/renderer/pepper/pepper_browser_connection.h2
-rw-r--r--content/renderer/pepper/pepper_plugin_instance_impl.cc2
-rw-r--r--content/renderer/pepper/pepper_webplugin_impl.cc11
-rw-r--r--content/renderer/pepper/pepper_webplugin_impl.h6
-rw-r--r--content/renderer/render_frame_impl.cc4
-rw-r--r--extensions/browser/extension_function.cc52
-rw-r--r--extensions/browser/extension_function.h18
54 files changed, 412 insertions, 295 deletions
diff --git a/chrome/browser/extensions/api/page_capture/page_capture_api.cc b/chrome/browser/extensions/api/page_capture/page_capture_api.cc
index 1dd31b7..9454b2a 100644
--- a/chrome/browser/extensions/api/page_capture/page_capture_api.cc
+++ b/chrome/browser/extensions/api/page_capture/page_capture_api.cc
@@ -66,7 +66,7 @@ bool PageCaptureSaveAsMHTMLFunction::RunImpl() {
return true;
}
-bool PageCaptureSaveAsMHTMLFunction::OnMessageReceivedFromRenderView(
+bool PageCaptureSaveAsMHTMLFunction::OnMessageReceived(
const IPC::Message& message) {
if (message.type() != ExtensionHostMsg_ResponseAck::ID)
return false;
@@ -181,8 +181,8 @@ void PageCaptureSaveAsMHTMLFunction::ReturnSuccess(int64 file_size) {
SendResponse(true);
// Note that we'll wait for a response ack message received in
- // OnMessageReceivedFromRenderView before we call Release() (to prevent the
- // blob file from being deleted).
+ // OnMessageReceived before we call Release() (to prevent the blob file from
+ // being deleted).
}
WebContents* PageCaptureSaveAsMHTMLFunction::GetWebContents() {
diff --git a/chrome/browser/extensions/api/page_capture/page_capture_api.h b/chrome/browser/extensions/api/page_capture/page_capture_api.h
index b7619c6..1bc5611 100644
--- a/chrome/browser/extensions/api/page_capture/page_capture_api.h
+++ b/chrome/browser/extensions/api/page_capture/page_capture_api.h
@@ -38,8 +38,7 @@ class PageCaptureSaveAsMHTMLFunction : public ChromeAsyncExtensionFunction {
private:
virtual ~PageCaptureSaveAsMHTMLFunction();
virtual bool RunImpl() OVERRIDE;
- virtual bool OnMessageReceivedFromRenderView(
- const IPC::Message& message) OVERRIDE;
+ virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
// Called on the file thread.
void CreateTemporaryFile();
diff --git a/chrome/browser/extensions/extension_function_dispatcher.cc b/chrome/browser/extensions/extension_function_dispatcher.cc
index 733d79a..3f54f5b 100644
--- a/chrome/browser/extensions/extension_function_dispatcher.cc
+++ b/chrome/browser/extensions/extension_function_dispatcher.cc
@@ -25,6 +25,7 @@
#include "chrome/common/extensions/extension_messages.h"
#include "chrome/common/url_constants.h"
#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/user_metrics.h"
@@ -311,14 +312,24 @@ void ExtensionFunctionDispatcher::Dispatch(
callback_wrapper = iter->second;
}
- DispatchWithCallback(params, render_view_host,
- callback_wrapper->CreateCallback(params.request_id));
+ DispatchWithCallbackInternal(
+ params, render_view_host, NULL,
+ callback_wrapper->CreateCallback(params.request_id));
}
void ExtensionFunctionDispatcher::DispatchWithCallback(
const ExtensionHostMsg_Request_Params& params,
+ content::RenderFrameHost* render_frame_host,
+ const ExtensionFunction::ResponseCallback& callback) {
+ DispatchWithCallbackInternal(params, NULL, render_frame_host, callback);
+}
+
+void ExtensionFunctionDispatcher::DispatchWithCallbackInternal(
+ const ExtensionHostMsg_Request_Params& params,
RenderViewHost* render_view_host,
+ content::RenderFrameHost* render_frame_host,
const ExtensionFunction::ResponseCallback& callback) {
+ DCHECK(render_view_host || render_frame_host);
// TODO(yzshen): There is some shared logic between this method and
// DispatchOnIOThread(). It is nice to deduplicate.
ExtensionSystem* extension_system =
@@ -333,10 +344,12 @@ void ExtensionFunctionDispatcher::DispatchWithCallback(
if (!extension)
extension = service->extensions()->GetHostedAppByURL(params.source_url);
+ int process_id = render_view_host ? render_view_host->GetProcess()->GetID() :
+ render_frame_host->GetProcess()->GetID();
scoped_refptr<ExtensionFunction> function(
CreateExtensionFunction(params,
extension,
- render_view_host->GetProcess()->GetID(),
+ process_id,
*process_map,
extensions::ExtensionAPI::GetSharedInstance(),
browser_context_,
@@ -352,7 +365,11 @@ void ExtensionFunctionDispatcher::DispatchWithCallback(
NOTREACHED();
return;
}
- function_ui->SetRenderViewHost(render_view_host);
+ if (render_view_host) {
+ function_ui->SetRenderViewHost(render_view_host);
+ } else {
+ function_ui->SetRenderFrameHost(render_frame_host);
+ }
function_ui->set_dispatcher(AsWeakPtr());
function_ui->set_context(browser_context_);
function->set_include_incognito(extension_util::CanCrossIncognito(extension,
diff --git a/chrome/browser/extensions/extension_function_dispatcher.h b/chrome/browser/extensions/extension_function_dispatcher.h
index 9e80fca..9261a89 100644
--- a/chrome/browser/extensions/extension_function_dispatcher.h
+++ b/chrome/browser/extensions/extension_function_dispatcher.h
@@ -19,6 +19,7 @@ struct ExtensionHostMsg_Request_Params;
namespace content {
class BrowserContext;
+class RenderFrameHost;
class RenderViewHost;
class WebContents;
}
@@ -106,12 +107,14 @@ class ExtensionFunctionDispatcher
// Message handlers.
// The response is sent to the corresponding render view in an
// ExtensionMsg_Response message.
+ // TODO (jam): convert all callers to use RenderFrameHost.
void Dispatch(const ExtensionHostMsg_Request_Params& params,
content::RenderViewHost* render_view_host);
- // |callback| is called when the function execution completes.
+ // Dispatch an extension function and calls |callback| when the execution
+ // completes.
void DispatchWithCallback(
const ExtensionHostMsg_Request_Params& params,
- content::RenderViewHost* render_view_host,
+ content::RenderFrameHost* render_frame_host,
const ExtensionFunction::ResponseCallback& callback);
// Called when an ExtensionFunction is done executing, after it has sent
@@ -156,6 +159,12 @@ class ExtensionFunctionDispatcher
static void SendAccessDenied(
const ExtensionFunction::ResponseCallback& callback);
+ void DispatchWithCallbackInternal(
+ const ExtensionHostMsg_Request_Params& params,
+ content::RenderViewHost* render_view_host,
+ content::RenderFrameHost* render_frame_host,
+ const ExtensionFunction::ResponseCallback& callback);
+
content::BrowserContext* browser_context_;
Delegate* delegate_;
diff --git a/chrome/browser/nacl_host/nacl_browser_delegate_impl.cc b/chrome/browser/nacl_host/nacl_browser_delegate_impl.cc
index 96e0c1f..9e32c6c 100644
--- a/chrome/browser/nacl_host/nacl_browser_delegate_impl.cc
+++ b/chrome/browser/nacl_host/nacl_browser_delegate_impl.cc
@@ -19,7 +19,7 @@
#include "chrome/common/chrome_version_info.h"
#include "chrome/common/logging_chrome.h"
#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/render_view_host.h"
+#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/site_instance.h"
#include "extensions/browser/info_map.h"
#include "extensions/browser/process_manager.h"
@@ -58,12 +58,13 @@ void OnKeepaliveOnUIThread(
if (instance_data.size() < 1)
return;
- content::RenderViewHost* render_view_host = content::RenderViewHost::FromID(
- instance_data[0].render_process_id, instance_data[0].render_view_id);
- if (!render_view_host)
+ content::RenderFrameHost* render_frame_host =
+ content::RenderFrameHost::FromID(
+ instance_data[0].render_process_id, instance_data[0].render_frame_id);
+ if (!render_frame_host)
return;
- content::SiteInstance* site_instance = render_view_host->GetSiteInstance();
+ content::SiteInstance* site_instance = render_frame_host->GetSiteInstance();
if (!site_instance)
return;
diff --git a/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc
index 60ffa5c8..aecc2a2 100644
--- a/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc
+++ b/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc
@@ -29,7 +29,7 @@ PepperBrokerMessageFilter::PepperBrokerMessageFilter(
BrowserPpapiHost* host)
: document_url_(host->GetDocumentURLForInstance(instance)) {
int unused;
- host->GetRenderViewIDsForInstance(instance, &render_process_id_, &unused);
+ host->GetRenderFrameIDsForInstance(instance, &render_process_id_, &unused);
}
PepperBrokerMessageFilter::~PepperBrokerMessageFilter() {
diff --git a/chrome/browser/renderer_host/pepper/pepper_extensions_common_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_extensions_common_message_filter.cc
index 1ce27bf..351b9262 100644
--- a/chrome/browser/renderer_host/pepper/pepper_extensions_common_message_filter.cc
+++ b/chrome/browser/renderer_host/pepper/pepper_extensions_common_message_filter.cc
@@ -14,7 +14,7 @@
#include "chrome/common/extensions/extension_messages.h"
#include "content/public/browser/browser_ppapi_host.h"
#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/render_view_host.h"
+#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_observer.h"
#include "extensions/common/constants.h"
@@ -33,10 +33,10 @@ class PepperExtensionsCommonMessageFilter::DispatcherOwner
public:
DispatcherOwner(PepperExtensionsCommonMessageFilter* message_filter,
Profile* profile,
- content::RenderViewHost* view_host,
+ content::RenderFrameHost* frame_host,
content::WebContents* web_contents)
: content::WebContentsObserver(web_contents),
- render_view_host_(view_host),
+ render_frame_host_(frame_host),
message_filter_(message_filter),
dispatcher_(profile, this) {
}
@@ -46,9 +46,9 @@ class PepperExtensionsCommonMessageFilter::DispatcherOwner
}
// content::WebContentsObserver implementation.
- virtual void RenderViewDeleted(
- content::RenderViewHost* render_view_host) OVERRIDE {
- if (render_view_host == render_view_host_)
+ virtual void RenderFrameDeleted(
+ content::RenderFrameHost* render_frame_host) OVERRIDE {
+ if (render_frame_host == render_frame_host_)
delete this;
}
@@ -65,10 +65,10 @@ class PepperExtensionsCommonMessageFilter::DispatcherOwner
}
ExtensionFunctionDispatcher* dispatcher() { return &dispatcher_; }
- content::RenderViewHost* render_view_host() { return render_view_host_; }
+ content::RenderFrameHost* render_frame_host() { return render_frame_host_; }
private:
- content::RenderViewHost* render_view_host_;
+ content::RenderFrameHost* render_frame_host_;
scoped_refptr<PepperExtensionsCommonMessageFilter> message_filter_;
ExtensionFunctionDispatcher dispatcher_;
@@ -82,9 +82,9 @@ PepperExtensionsCommonMessageFilter::Create(content::BrowserPpapiHost* host,
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
int render_process_id = 0;
- int render_view_id = 0;
- if (!host->GetRenderViewIDsForInstance(instance, &render_process_id,
- &render_view_id)) {
+ int render_frame_id = 0;
+ if (!host->GetRenderFrameIDsForInstance(instance, &render_process_id,
+ &render_frame_id)) {
return NULL;
}
@@ -92,18 +92,18 @@ PepperExtensionsCommonMessageFilter::Create(content::BrowserPpapiHost* host,
GURL document_url = host->GetDocumentURLForInstance(instance);
return new PepperExtensionsCommonMessageFilter(render_process_id,
- render_view_id,
+ render_frame_id,
profile_directory,
document_url);
}
PepperExtensionsCommonMessageFilter::PepperExtensionsCommonMessageFilter(
int render_process_id,
- int render_view_id,
+ int render_frame_id,
const base::FilePath& profile_directory,
const GURL& document_url)
: render_process_id_(render_process_id),
- render_view_id_(render_view_id),
+ render_frame_id_(render_frame_id),
profile_directory_(profile_directory),
document_url_(document_url),
dispatcher_owner_(NULL),
@@ -159,12 +159,12 @@ void PepperExtensionsCommonMessageFilter::EnsureDispatcherOwnerInitialized() {
dispatcher_owner_initialized_ = true;
DCHECK(!dispatcher_owner_);
- content::RenderViewHost* view_host = content::RenderViewHost::FromID(
- render_process_id_, render_view_id_);
- if (!view_host)
+ content::RenderFrameHost* frame_host = content::RenderFrameHost::FromID(
+ render_process_id_, render_frame_id_);
+ if (!frame_host)
return;
content::WebContents* web_contents =
- content::WebContents::FromRenderViewHost(view_host);
+ content::WebContents::FromRenderFrameHost(frame_host);
if (!document_url_.SchemeIs(extensions::kExtensionScheme))
return;
@@ -176,7 +176,7 @@ void PepperExtensionsCommonMessageFilter::EnsureDispatcherOwnerInitialized() {
// It will be automatically destroyed when |view_host| goes away.
dispatcher_owner_ = new DispatcherOwner(
- this, profile, view_host, web_contents);
+ this, profile, frame_host, web_contents);
}
void PepperExtensionsCommonMessageFilter::DetachDispatcherOwner() {
@@ -249,7 +249,7 @@ bool PepperExtensionsCommonMessageFilter::HandleRequest(
}
dispatcher_owner_->dispatcher()->DispatchWithCallback(
- params, dispatcher_owner_->render_view_host(),
+ params, dispatcher_owner_->render_frame_host(),
base::Bind(
&PepperExtensionsCommonMessageFilter::OnExtensionFunctionCompleted,
this,
diff --git a/chrome/browser/renderer_host/pepper/pepper_extensions_common_message_filter.h b/chrome/browser/renderer_host/pepper/pepper_extensions_common_message_filter.h
index 87a11a3..5776719 100644
--- a/chrome/browser/renderer_host/pepper/pepper_extensions_common_message_filter.h
+++ b/chrome/browser/renderer_host/pepper/pepper_extensions_common_message_filter.h
@@ -44,7 +44,7 @@ class PepperExtensionsCommonMessageFilter
protected:
PepperExtensionsCommonMessageFilter(int render_process_id,
- int render_view_id,
+ int render_frame_id,
const base::FilePath& profile_directory,
const GURL& document_url);
virtual ~PepperExtensionsCommonMessageFilter();
@@ -97,7 +97,7 @@ class PepperExtensionsCommonMessageFilter
// All the members are initialized on the IO thread when the object is
// constructed, and accessed only on the UI thread afterwards.
int render_process_id_;
- int render_view_id_;
+ int render_frame_id_;
base::FilePath profile_directory_;
GURL document_url_;
diff --git a/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc b/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc
index 85849cf..b408d0f 100644
--- a/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc
+++ b/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc
@@ -57,7 +57,7 @@ PepperFlashBrowserHost::PepperFlashBrowserHost(
host_(host),
weak_factory_(this) {
int unused;
- host->GetRenderViewIDsForInstance(instance, &render_process_id_, &unused);
+ host->GetRenderFrameIDsForInstance(instance, &render_process_id_, &unused);
}
PepperFlashBrowserHost::~PepperFlashBrowserHost() {
diff --git a/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.cc b/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.cc
index 99d76a1..db47ce3 100644
--- a/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.cc
+++ b/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.cc
@@ -15,8 +15,7 @@
#include "content/public/browser/browser_ppapi_host.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/child_process_security_policy.h"
-#include "content/public/browser/render_widget_host.h"
-#include "content/public/browser/render_widget_host_view.h"
+#include "content/public/browser/render_frame_host.h"
#include "content/public/common/pepper_plugin_info.h"
#include "ppapi/c/pp_errors.h"
#include "ppapi/host/dispatch_host_message.h"
@@ -46,9 +45,9 @@ const base::FilePath::CharType kVoucherFilename[] =
// right monitor.
class MonitorFinder : public base::RefCountedThreadSafe<MonitorFinder> {
public:
- MonitorFinder(int process_id, int render_id)
+ MonitorFinder(int process_id, int render_frame_id)
: process_id_(process_id),
- render_id_(render_id),
+ render_frame_id_(render_frame_id),
monitor_(NULL),
request_sent_(0) {
}
@@ -72,14 +71,11 @@ class MonitorFinder : public base::RefCountedThreadSafe<MonitorFinder> {
void FetchMonitorFromWidget() {
InterlockedExchange(&request_sent_, 0);
- content::RenderWidgetHost* rwh =
- content::RenderWidgetHost::FromID(process_id_, render_id_);
- if (!rwh)
+ content::RenderFrameHost* rfh =
+ content::RenderFrameHost::FromID(process_id_, render_frame_id_);
+ if (!rfh)
return;
- content::RenderWidgetHostView* view = rwh->GetView();
- if (!view)
- return;
- gfx::NativeView native_view = view->GetNativeView();
+ gfx::NativeView native_view = rfh->GetNativeView();
#if defined(USE_AURA)
aura::WindowEventDispatcher* dispatcher = native_view->GetDispatcher();
if (!dispatcher)
@@ -94,7 +90,7 @@ class MonitorFinder : public base::RefCountedThreadSafe<MonitorFinder> {
}
const int process_id_;
- const int render_id_;
+ const int render_frame_id_;
volatile HMONITOR monitor_;
volatile long request_sent_;
};
@@ -118,10 +114,10 @@ PepperFlashDRMHost::PepperFlashDRMHost(BrowserPpapiHost* host,
weak_factory_(this){
// Grant permissions to read the flash voucher file.
int render_process_id;
- int render_view_id;
+ int render_frame_id;
bool success =
- host->GetRenderViewIDsForInstance(
- instance, &render_process_id, &render_view_id);
+ host->GetRenderFrameIDsForInstance(
+ instance, &render_process_id, &render_frame_id);
base::FilePath plugin_dir = host->GetPluginPath().DirName();
DCHECK(!plugin_dir.empty() && success);
base::FilePath voucher_file = plugin_dir.Append(
@@ -130,7 +126,7 @@ PepperFlashDRMHost::PepperFlashDRMHost(BrowserPpapiHost* host,
render_process_id, voucher_file);
fetcher_ = new DeviceIDFetcher(render_process_id);
- monitor_finder_ = new MonitorFinder(render_process_id, render_view_id);
+ monitor_finder_ = new MonitorFinder(render_process_id, render_frame_id);
monitor_finder_->GetMonitor();
}
diff --git a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc
index 415ee0b..ca1555e 100644
--- a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc
+++ b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc
@@ -42,10 +42,10 @@ PepperIsolatedFileSystemMessageFilter*
PepperIsolatedFileSystemMessageFilter::Create(
PP_Instance instance, content::BrowserPpapiHost* host) {
int render_process_id;
- int unused_render_view_id;
- if (!host->GetRenderViewIDsForInstance(instance,
- &render_process_id,
- &unused_render_view_id)) {
+ int unused_render_frame_id;
+ if (!host->GetRenderFrameIDsForInstance(instance,
+ &render_process_id,
+ &unused_render_frame_id)) {
return NULL;
}
return new PepperIsolatedFileSystemMessageFilter(
diff --git a/chrome/browser/renderer_host/pepper/pepper_output_protection_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_output_protection_message_filter.cc
index eaa9340..5ffd4b2 100644
--- a/chrome/browser/renderer_host/pepper/pepper_output_protection_message_filter.cc
+++ b/chrome/browser/renderer_host/pepper/pepper_output_protection_message_filter.cc
@@ -8,8 +8,7 @@
#include "chrome/browser/media/media_capture_devices_dispatcher.h"
#include "content/public/browser/browser_ppapi_host.h"
#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/render_widget_host_view.h"
+#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#include "ppapi/c/pp_errors.h"
#include "ppapi/c/private/ppb_output_protection_private.h"
@@ -72,12 +71,9 @@ COMPILE_ASSERT(
static_cast<int>(chromeos::OUTPUT_PROTECTION_METHOD_HDCP),
PP_OUTPUT_PROTECTION_METHOD_PRIVATE_HDCP);
-bool GetCurrentDisplayId(content::RenderViewHost* rvh, int64* display_id) {
+bool GetCurrentDisplayId(content::RenderFrameHost* rfh, int64* display_id) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
- content::RenderWidgetHostView* view = rvh->GetView();
- if (!view)
- return false;
- gfx::NativeView native_view = view->GetNativeView();
+ gfx::NativeView native_view = rfh->GetNativeView();
gfx::Screen* screen = gfx::Screen::GetScreenFor(native_view);
if (!screen)
return false;
@@ -95,7 +91,7 @@ bool GetCurrentDisplayId(content::RenderViewHost* rvh, int64* display_id) {
class PepperOutputProtectionMessageFilter::Delegate
: public aura::WindowObserver {
public:
- Delegate(int render_process_id, int render_view_id);
+ Delegate(int render_process_id, int render_frame_id);
virtual ~Delegate();
// aura::WindowObserver overrides.
@@ -110,7 +106,7 @@ class PepperOutputProtectionMessageFilter::Delegate
// Used to lookup the WebContents associated with this PP_Instance.
int render_process_id_;
- int render_view_id_;
+ int render_frame_id_;
chromeos::OutputConfigurator::OutputProtectionClientId client_id_;
// The display id which the renderer currently uses.
@@ -121,9 +117,9 @@ class PepperOutputProtectionMessageFilter::Delegate
};
PepperOutputProtectionMessageFilter::Delegate::Delegate(int render_process_id,
- int render_view_id)
+ int render_frame_id)
: render_process_id_(render_process_id),
- render_view_id_(render_view_id),
+ render_frame_id_(render_frame_id),
client_id_(chromeos::OutputConfigurator::kInvalidClientId),
display_id_(0) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
@@ -137,14 +133,11 @@ PepperOutputProtectionMessageFilter::Delegate::~Delegate() {
ash::Shell::GetInstance()->output_configurator();
configurator->UnregisterOutputProtectionClient(client_id_);
- content::RenderViewHost* rvh =
- content::RenderViewHost::FromID(render_process_id_, render_view_id_);
- if (rvh) {
- content::RenderWidgetHostView* view = rvh->GetView();
- if (view) {
- gfx::NativeView native_view = view->GetNativeView();
- native_view->RemoveObserver(this);
- }
+ content::RenderFrameHost* rfh =
+ content::RenderFrameHost::FromID(render_process_id_, render_frame_id_);
+ if (rfh) {
+ gfx::NativeView native_view = rfh->GetNativeView();
+ native_view->RemoveObserver(this);
}
}
@@ -152,15 +145,12 @@ chromeos::OutputConfigurator::OutputProtectionClientId
PepperOutputProtectionMessageFilter::Delegate::GetClientId() {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
if (client_id_ == chromeos::OutputConfigurator::kInvalidClientId) {
- content::RenderViewHost* rvh =
- content::RenderViewHost::FromID(render_process_id_, render_view_id_);
- if (!GetCurrentDisplayId(rvh, &display_id_))
- return chromeos::OutputConfigurator::kInvalidClientId;
- content::RenderWidgetHostView* view = rvh->GetView();
- if (!view)
+ content::RenderFrameHost* rfh =
+ content::RenderFrameHost::FromID(render_process_id_, render_frame_id_);
+ if (!GetCurrentDisplayId(rfh, &display_id_))
return chromeos::OutputConfigurator::kInvalidClientId;
- gfx::NativeView native_view = view->GetNativeView();
- if (!view)
+ gfx::NativeView native_view = rfh->GetNativeView();
+ if (!native_view)
return chromeos::OutputConfigurator::kInvalidClientId;
native_view->AddObserver(this);
@@ -175,10 +165,10 @@ int32_t PepperOutputProtectionMessageFilter::Delegate::OnQueryStatus(
uint32_t* link_mask, uint32_t* protection_mask) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
- content::RenderViewHost* rvh =
- content::RenderViewHost::FromID(render_process_id_, render_view_id_);
- if (!rvh) {
- LOG(WARNING) << "RenderViewHost is not alive.";
+ content::RenderFrameHost* rfh =
+ content::RenderFrameHost::FromID(render_process_id_, render_frame_id_);
+ if (!rfh) {
+ LOG(WARNING) << "RenderFrameHost is not alive.";
return PP_ERROR_FAILED;
}
@@ -191,7 +181,8 @@ int32_t PepperOutputProtectionMessageFilter::Delegate::OnQueryStatus(
if (result) {
const bool capture_detected =
// Check for tab capture on the current tab.
- content::WebContents::FromRenderViewHost(rvh)->GetCapturerCount() > 0 ||
+ content::WebContents::FromRenderFrameHost(rfh)->
+ GetCapturerCount() > 0 ||
// Check for desktop capture.
MediaCaptureDevicesDispatcher::GetInstance()
->IsDesktopCaptureInProgress();
@@ -216,15 +207,15 @@ int32_t PepperOutputProtectionMessageFilter::Delegate::OnEnableProtection(
void PepperOutputProtectionMessageFilter::Delegate::OnWindowHierarchyChanged(
const aura::WindowObserver::HierarchyChangeParams& params) {
- content::RenderViewHost* rvh =
- content::RenderViewHost::FromID(render_process_id_, render_view_id_);
- if (!rvh) {
- LOG(WARNING) << "RenderViewHost is not alive.";
+ content::RenderFrameHost* rfh =
+ content::RenderFrameHost::FromID(render_process_id_, render_frame_id_);
+ if (!rfh) {
+ LOG(WARNING) << "RenderFrameHost is not alive.";
return;
}
int64 new_display_id = 0;
- if (!GetCurrentDisplayId(rvh, &new_display_id))
+ if (!GetCurrentDisplayId(rfh, &new_display_id))
return;
if (display_id_ == new_display_id)
return;
@@ -250,10 +241,10 @@ PepperOutputProtectionMessageFilter::PepperOutputProtectionMessageFilter(
#if defined(OS_CHROMEOS)
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
int render_process_id = 0;
- int render_view_id = 0;
- host->GetRenderViewIDsForInstance(
- instance, &render_process_id, &render_view_id);
- delegate_ = new Delegate(render_process_id, render_view_id);
+ int render_frame_id = 0;
+ host->GetRenderFrameIDsForInstance(
+ instance, &render_process_id, &render_frame_id);
+ delegate_ = new Delegate(render_process_id, render_frame_id);
#else
NOTIMPLEMENTED();
#endif
diff --git a/chrome/browser/renderer_host/pepper/pepper_platform_verification_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_platform_verification_message_filter.cc
index 29ae36c..1cd07f7 100644
--- a/chrome/browser/renderer_host/pepper/pepper_platform_verification_message_filter.cc
+++ b/chrome/browser/renderer_host/pepper/pepper_platform_verification_message_filter.cc
@@ -7,7 +7,7 @@
#include "base/bind_helpers.h"
#include "content/public/browser/browser_ppapi_host.h"
#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/render_view_host.h"
+#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#include "ppapi/c/pp_errors.h"
#include "ppapi/host/dispatch_host_message.h"
@@ -22,9 +22,9 @@ namespace chrome {
PepperPlatformVerificationMessageFilter::
PepperPlatformVerificationMessageFilter(content::BrowserPpapiHost* host,
PP_Instance instance)
- : render_process_id_(0), render_view_id_(0) {
- host->GetRenderViewIDsForInstance(
- instance, &render_process_id_, &render_view_id_);
+ : render_process_id_(0), render_frame_id_(0) {
+ host->GetRenderFrameIDsForInstance(
+ instance, &render_process_id_, &render_frame_id_);
}
PepperPlatformVerificationMessageFilter::
@@ -57,10 +57,10 @@ int32_t PepperPlatformVerificationMessageFilter::OnChallengePlatform(
const std::vector<uint8_t>& challenge) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
- // Ensure the RenderViewHost is still alive.
- content::RenderViewHost* rvh =
- content::RenderViewHost::FromID(render_process_id_, render_view_id_);
- if (!rvh) {
+ // Ensure the RenderFrameHost is still alive.
+ content::RenderFrameHost* rfh =
+ content::RenderFrameHost::FromID(render_process_id_, render_frame_id_);
+ if (!rfh) {
ppapi::host::ReplyMessageContext reply_context =
context->MakeReplyMessageContext();
reply_context.params.set_result(PP_ERROR_FAILED);
@@ -75,7 +75,7 @@ int32_t PepperPlatformVerificationMessageFilter::OnChallengePlatform(
pv_ = new PlatformVerificationFlow();
pv_->ChallengePlatformKey(
- content::WebContents::FromRenderViewHost(rvh),
+ content::WebContents::FromRenderFrameHost(rfh),
service_id,
std::string(challenge.begin(), challenge.end()),
base::Bind(
diff --git a/chrome/browser/renderer_host/pepper/pepper_platform_verification_message_filter.h b/chrome/browser/renderer_host/pepper/pepper_platform_verification_message_filter.h
index 90b3eff..5ca7035 100644
--- a/chrome/browser/renderer_host/pepper/pepper_platform_verification_message_filter.h
+++ b/chrome/browser/renderer_host/pepper/pepper_platform_verification_message_filter.h
@@ -52,7 +52,7 @@ class PepperPlatformVerificationMessageFilter
// Used to lookup the WebContents associated with this PP_Instance.
int render_process_id_;
- int render_view_id_;
+ int render_frame_id_;
// Must only be accessed on the UI thread.
scoped_refptr<chromeos::attestation::PlatformVerificationFlow> pv_;
diff --git a/chrome/browser/renderer_host/pepper/pepper_talk_host.cc b/chrome/browser/renderer_host/pepper/pepper_talk_host.cc
index 5fe65ad..ac24052 100644
--- a/chrome/browser/renderer_host/pepper/pepper_talk_host.cc
+++ b/chrome/browser/renderer_host/pepper/pepper_talk_host.cc
@@ -7,7 +7,7 @@
#include "base/bind.h"
#include "content/public/browser/browser_ppapi_host.h"
#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/render_view_host.h"
+#include "content/public/browser/render_frame_host.h"
#include "grit/generated_resources.h"
#include "ppapi/c/pp_errors.h"
#include "ppapi/host/dispatch_host_message.h"
@@ -31,15 +31,15 @@ namespace {
ppapi::host::ReplyMessageContext GetPermissionOnUIThread(
PP_TalkPermission permission,
int render_process_id,
- int render_view_id,
+ int render_frame_id,
ppapi::host::ReplyMessageContext reply) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
reply.params.set_result(0);
- content::RenderViewHost* render_view_host =
- content::RenderViewHost::FromID(render_process_id, render_view_id);
- if (!render_view_host)
- return reply; // RVH destroyed while task was pending.
+ content::RenderFrameHost* render_frame_host =
+ content::RenderFrameHost::FromID(render_process_id, render_frame_id);
+ if (!render_frame_host)
+ return reply; // RFH destroyed while task was pending.
#if defined(USE_ASH)
base::string16 title;
@@ -91,14 +91,14 @@ void OnTerminateRemotingEventOnUIThread(const base::Closure& stop_callback) {
ppapi::host::ReplyMessageContext StartRemotingOnUIThread(
const base::Closure& stop_callback,
int render_process_id,
- int render_view_id,
+ int render_frame_id,
ppapi::host::ReplyMessageContext reply) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
- content::RenderViewHost* render_view_host =
- content::RenderViewHost::FromID(render_process_id, render_view_id);
- if (!render_view_host) {
+ content::RenderFrameHost* render_frame_host =
+ content::RenderFrameHost::FromID(render_process_id, render_frame_id);
+ if (!render_frame_host) {
reply.params.set_result(PP_ERROR_FAILED);
- return reply; // RVH destroyed while task was pending.
+ return reply; // RFH destroyed while task was pending.
}
#if defined(USE_ASH) && defined(OS_CHROMEOS)
@@ -175,14 +175,14 @@ int32_t PepperTalkHost::OnRequestPermission(
return PP_ERROR_BADARGUMENT;
int render_process_id = 0;
- int render_view_id = 0;
- browser_ppapi_host_->GetRenderViewIDsForInstance(
- pp_instance(), &render_process_id, &render_view_id);
+ int render_frame_id = 0;
+ browser_ppapi_host_->GetRenderFrameIDsForInstance(
+ pp_instance(), &render_process_id, &render_frame_id);
content::BrowserThread::PostTaskAndReplyWithResult(
content::BrowserThread::UI, FROM_HERE,
base::Bind(&GetPermissionOnUIThread, permission, render_process_id,
- render_view_id, context->MakeReplyMessageContext()),
+ render_frame_id, context->MakeReplyMessageContext()),
base::Bind(&PepperTalkHost::OnRequestPermissionCompleted,
weak_factory_.GetWeakPtr()));
return PP_OK_COMPLETIONPENDING;
@@ -191,9 +191,9 @@ int32_t PepperTalkHost::OnRequestPermission(
int32_t PepperTalkHost::OnStartRemoting(
ppapi::host::HostMessageContext* context) {
int render_process_id = 0;
- int render_view_id = 0;
- browser_ppapi_host_->GetRenderViewIDsForInstance(
- pp_instance(), &render_process_id, &render_view_id);
+ int render_frame_id = 0;
+ browser_ppapi_host_->GetRenderFrameIDsForInstance(
+ pp_instance(), &render_process_id, &render_frame_id);
base::Closure remoting_stop_callback = base::Bind(
&PepperTalkHost::OnRemotingStopEvent,
@@ -202,7 +202,7 @@ int32_t PepperTalkHost::OnStartRemoting(
content::BrowserThread::PostTaskAndReplyWithResult(
content::BrowserThread::UI, FROM_HERE,
base::Bind(&StartRemotingOnUIThread, remoting_stop_callback,
- render_process_id, render_view_id,
+ render_process_id, render_frame_id,
context->MakeReplyMessageContext()),
base::Bind(&PepperTalkHost::OnStartRemotingCompleted,
weak_factory_.GetWeakPtr()));
diff --git a/chrome/chrome_renderer.gypi b/chrome/chrome_renderer.gypi
index ff7467a..ef0bc09 100644
--- a/chrome/chrome_renderer.gypi
+++ b/chrome/chrome_renderer.gypi
@@ -88,6 +88,8 @@
'renderer/extensions/dom_activity_logger.h',
'renderer/extensions/event_bindings.cc',
'renderer/extensions/event_bindings.h',
+ 'renderer/extensions/extension_frame_helper.cc',
+ 'renderer/extensions/extension_frame_helper.h',
'renderer/extensions/extension_groups.h',
'renderer/extensions/extension_helper.cc',
'renderer/extensions/extension_helper.h',
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index b49148c..2052bc6 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -34,6 +34,7 @@
#include "chrome/renderer/extensions/chrome_v8_context.h"
#include "chrome/renderer/extensions/chrome_v8_extension.h"
#include "chrome/renderer/extensions/dispatcher.h"
+#include "chrome/renderer/extensions/extension_frame_helper.h"
#include "chrome/renderer/extensions/extension_helper.h"
#include "chrome/renderer/extensions/renderer_permissions_policy_delegate.h"
#include "chrome/renderer/extensions/resource_request_policy.h"
@@ -358,6 +359,8 @@ void ChromeContentRendererClient::RenderFrameCreated(
chrome_observer_->content_setting_rules());
}
+ new extensions::ExtensionFrameHelper(render_frame);
+
#if defined(ENABLE_PLUGINS)
new PepperHelper(render_frame);
#endif
diff --git a/chrome/renderer/extensions/extension_frame_helper.cc b/chrome/renderer/extensions/extension_frame_helper.cc
new file mode 100644
index 0000000..9db9f1b
--- /dev/null
+++ b/chrome/renderer/extensions/extension_frame_helper.cc
@@ -0,0 +1,39 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/renderer/extensions/extension_frame_helper.h"
+
+#include "chrome/common/extensions/extension_messages.h"
+#include "chrome/renderer/extensions/console.h"
+#include "content/public/renderer/render_frame.h"
+#include "third_party/WebKit/public/web/WebConsoleMessage.h"
+#include "third_party/WebKit/public/web/WebFrame.h"
+
+namespace extensions {
+
+ExtensionFrameHelper::ExtensionFrameHelper(content::RenderFrame* render_frame)
+ : content::RenderFrameObserver(render_frame),
+ content::RenderFrameObserverTracker<ExtensionFrameHelper>(render_frame) {
+}
+
+ExtensionFrameHelper::~ExtensionFrameHelper() {
+}
+
+bool ExtensionFrameHelper::OnMessageReceived(const IPC::Message& message) {
+ bool handled = true;
+ IPC_BEGIN_MESSAGE_MAP(ExtensionFrameHelper, message)
+ IPC_MESSAGE_HANDLER(ExtensionMsg_AddMessageToConsole,
+ OnAddMessageToConsole)
+ IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_END_MESSAGE_MAP()
+ return handled;
+}
+
+void ExtensionFrameHelper::OnAddMessageToConsole(
+ content::ConsoleMessageLevel level,
+ const std::string& message) {
+ console::AddMessage(render_frame()->GetRenderView(), level, message);
+}
+
+} // namespace extensions
diff --git a/chrome/renderer/extensions/extension_frame_helper.h b/chrome/renderer/extensions/extension_frame_helper.h
new file mode 100644
index 0000000..b9ee44c
--- /dev/null
+++ b/chrome/renderer/extensions/extension_frame_helper.h
@@ -0,0 +1,35 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_RENDERER_EXTENSIONS_EXTENSION_FRAME_HELPER_H_
+#define CHROME_RENDERER_EXTENSIONS_EXTENSION_FRAME_HELPER_H_
+
+#include "content/public/common/console_message_level.h"
+#include "content/public/renderer/render_frame_observer.h"
+#include "content/public/renderer/render_frame_observer_tracker.h"
+
+namespace extensions {
+
+// RenderFrame-level plumbing for extension features.
+class ExtensionFrameHelper
+ : public content::RenderFrameObserver,
+ public content::RenderFrameObserverTracker<ExtensionFrameHelper> {
+ public:
+ explicit ExtensionFrameHelper(content::RenderFrame* render_frame);
+ virtual ~ExtensionFrameHelper();
+
+ private:
+ // RenderFrameObserver implementation.
+ virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
+
+ // IPC handlers.
+ void OnAddMessageToConsole(content::ConsoleMessageLevel level,
+ const std::string& message);
+
+ DISALLOW_COPY_AND_ASSIGN(ExtensionFrameHelper);
+};
+
+} // namespace extensions
+
+#endif // CHROME_RENDERER_EXTENSIONS_EXTENSION_FRAME_HELPER_H_
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index 135bfd6..e021d19 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -14,6 +14,7 @@
#include "content/common/frame_messages.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_process_host.h"
+#include "content/public/browser/render_widget_host_view.h"
#include "content/public/browser/user_metrics.h"
#include "url/gurl.h"
@@ -73,6 +74,10 @@ RenderFrameHostImpl::~RenderFrameHostImpl() {
frame_tree_->UnregisterRenderFrameHost(this);
}
+SiteInstance* RenderFrameHostImpl::GetSiteInstance() {
+ return render_view_host_->GetSiteInstance();
+}
+
RenderProcessHost* RenderFrameHostImpl::GetProcess() {
// TODO(nasko): This should return its own process, once we have working
// cross-process navigation for subframes.
@@ -83,6 +88,13 @@ int RenderFrameHostImpl::GetRoutingID() {
return routing_id_;
}
+gfx::NativeView RenderFrameHostImpl::GetNativeView() {
+ RenderWidgetHostView* view = render_view_host_->GetView();
+ if (!view)
+ return NULL;
+ return view->GetNativeView();
+}
+
bool RenderFrameHostImpl::Send(IPC::Message* message) {
return GetProcess()->Send(message);
}
diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h
index e12d07a..8dfc7e5 100644
--- a/content/browser/frame_host/render_frame_host_impl.h
+++ b/content/browser/frame_host/render_frame_host_impl.h
@@ -32,8 +32,10 @@ class CONTENT_EXPORT RenderFrameHostImpl : public RenderFrameHost {
virtual ~RenderFrameHostImpl();
// RenderFrameHost
+ virtual SiteInstance* GetSiteInstance() OVERRIDE;
virtual RenderProcessHost* GetProcess() OVERRIDE;
virtual int GetRoutingID() OVERRIDE;
+ virtual gfx::NativeView GetNativeView() OVERRIDE;
// IPC::Sender
virtual bool Send(IPC::Message* msg) OVERRIDE;
diff --git a/content/browser/renderer_host/pepper/browser_ppapi_host_impl.cc b/content/browser/renderer_host/pepper/browser_ppapi_host_impl.cc
index fd2c82e..562ca7e 100644
--- a/content/browser/renderer_host/pepper/browser_ppapi_host_impl.cc
+++ b/content/browser/renderer_host/pepper/browser_ppapi_host_impl.cc
@@ -84,19 +84,19 @@ bool BrowserPpapiHostImpl::IsValidInstance(PP_Instance instance) const {
return instance_map_.find(instance) != instance_map_.end();
}
-bool BrowserPpapiHostImpl::GetRenderViewIDsForInstance(
+bool BrowserPpapiHostImpl::GetRenderFrameIDsForInstance(
PP_Instance instance,
int* render_process_id,
- int* render_view_id) const {
+ int* render_frame_id) const {
InstanceMap::const_iterator found = instance_map_.find(instance);
if (found == instance_map_.end()) {
*render_process_id = 0;
- *render_view_id = 0;
+ *render_frame_id = 0;
return false;
}
*render_process_id = found->second.render_process_id;
- *render_view_id = found->second.render_view_id;
+ *render_frame_id = found->second.render_frame_id;
return true;
}
@@ -202,7 +202,7 @@ void BrowserPpapiHostImpl::OnKeepalive() {
int i = 0;
while (instance != instance_map_.end()) {
instance_data[i].render_process_id = instance->second.render_process_id;
- instance_data[i].render_view_id = instance->second.render_view_id;
+ instance_data[i].render_frame_id = instance->second.render_frame_id;
instance_data[i].document_url = instance->second.document_url;
++instance;
++i;
diff --git a/content/browser/renderer_host/pepper/browser_ppapi_host_impl.h b/content/browser/renderer_host/pepper/browser_ppapi_host_impl.h
index d987bd4..2ad5ca8 100644
--- a/content/browser/renderer_host/pepper/browser_ppapi_host_impl.h
+++ b/content/browser/renderer_host/pepper/browser_ppapi_host_impl.h
@@ -45,9 +45,10 @@ class CONTENT_EXPORT BrowserPpapiHostImpl : public BrowserPpapiHost {
virtual ppapi::host::PpapiHost* GetPpapiHost() OVERRIDE;
virtual base::ProcessHandle GetPluginProcessHandle() const OVERRIDE;
virtual bool IsValidInstance(PP_Instance instance) const OVERRIDE;
- virtual bool GetRenderViewIDsForInstance(PP_Instance instance,
- int* render_process_id,
- int* render_view_id) const OVERRIDE;
+ virtual bool GetRenderFrameIDsForInstance(
+ PP_Instance instance,
+ int* render_process_id,
+ int* render_frame_id) const OVERRIDE;
virtual const std::string& GetPluginName() OVERRIDE;
virtual const base::FilePath& GetPluginPath() OVERRIDE;
virtual const base::FilePath& GetProfileDataDirectory() OVERRIDE;
diff --git a/content/browser/renderer_host/pepper/pepper_file_io_host.cc b/content/browser/renderer_host/pepper/pepper_file_io_host.cc
index 7a27e27..6f7b55f 100644
--- a/content/browser/renderer_host/pepper/pepper_file_io_host.cc
+++ b/content/browser/renderer_host/pepper/pepper_file_io_host.cc
@@ -94,9 +94,9 @@ PepperFileIOHost::PepperFileIOHost(BrowserPpapiHostImpl* host,
check_quota_(false),
weak_factory_(this) {
int unused;
- if (!host->GetRenderViewIDsForInstance(instance,
- &render_process_id_,
- &unused)) {
+ if (!host->GetRenderFrameIDsForInstance(instance,
+ &render_process_id_,
+ &unused)) {
render_process_id_ = -1;
}
file_message_loop_ = BrowserThread::GetMessageLoopProxyForThread(
diff --git a/content/browser/renderer_host/pepper/pepper_file_ref_host.cc b/content/browser/renderer_host/pepper/pepper_file_ref_host.cc
index 75350a0..bf2fb76 100644
--- a/content/browser/renderer_host/pepper/pepper_file_ref_host.cc
+++ b/content/browser/renderer_host/pepper/pepper_file_ref_host.cc
@@ -39,9 +39,9 @@ PepperFileRefHost::PepperFileRefHost(BrowserPpapiHost* host,
int render_process_id;
int unused;
- if (!host->GetRenderViewIDsForInstance(instance,
- &render_process_id,
- &unused)) {
+ if (!host->GetRenderFrameIDsForInstance(instance,
+ &render_process_id,
+ &unused)) {
return;
}
@@ -88,9 +88,9 @@ PepperFileRefHost::PepperFileRefHost(BrowserPpapiHost* host,
int render_process_id;
int unused;
- if (!host->GetRenderViewIDsForInstance(instance,
- &render_process_id,
- &unused)) {
+ if (!host->GetRenderFrameIDsForInstance(instance,
+ &render_process_id,
+ &unused)) {
return;
}
diff --git a/content/browser/renderer_host/pepper/pepper_file_system_browser_host.cc b/content/browser/renderer_host/pepper/pepper_file_system_browser_host.cc
index b95f79c..9161ad7 100644
--- a/content/browser/renderer_host/pepper/pepper_file_system_browser_host.cc
+++ b/content/browser/renderer_host/pepper/pepper_file_system_browser_host.cc
@@ -85,7 +85,7 @@ void PepperFileSystemBrowserHost::OpenExisting(const GURL& root_url,
root_url_ = root_url;
int render_process_id = 0;
int unused;
- if (!browser_ppapi_host_->GetRenderViewIDsForInstance(
+ if (!browser_ppapi_host_->GetRenderFrameIDsForInstance(
pp_instance(), &render_process_id, &unused)) {
NOTREACHED();
}
@@ -197,9 +197,9 @@ int32_t PepperFileSystemBrowserHost::OnHostMsgOpen(
int render_process_id = 0;
int unused;
- if (!browser_ppapi_host_->GetRenderViewIDsForInstance(pp_instance(),
- &render_process_id,
- &unused)) {
+ if (!browser_ppapi_host_->GetRenderFrameIDsForInstance(pp_instance(),
+ &render_process_id,
+ &unused)) {
return PP_ERROR_FAILED;
}
@@ -360,9 +360,9 @@ int32_t PepperFileSystemBrowserHost::OnHostMsgInitIsolatedFileSystem(
int render_process_id = 0;
int unused;
- if (!browser_ppapi_host_->GetRenderViewIDsForInstance(pp_instance(),
- &render_process_id,
- &unused)) {
+ if (!browser_ppapi_host_->GetRenderFrameIDsForInstance(pp_instance(),
+ &render_process_id,
+ &unused)) {
fileapi::IsolatedContext::GetInstance()->RevokeFileSystem(fsid);
return PP_ERROR_FAILED;
}
diff --git a/content/browser/renderer_host/pepper/pepper_flash_file_message_filter.cc b/content/browser/renderer_host/pepper/pepper_flash_file_message_filter.cc
index ba8a8b9..8ddf86a 100644
--- a/content/browser/renderer_host/pepper/pepper_flash_file_message_filter.cc
+++ b/content/browser/renderer_host/pepper/pepper_flash_file_message_filter.cc
@@ -43,7 +43,7 @@ PepperFlashFileMessageFilter::PepperFlashFileMessageFilter(
BrowserPpapiHost* host)
: plugin_process_handle_(host->GetPluginProcessHandle()) {
int unused;
- host->GetRenderViewIDsForInstance(instance, &render_process_id_, &unused);
+ host->GetRenderFrameIDsForInstance(instance, &render_process_id_, &unused);
base::FilePath profile_data_directory = host->GetProfileDataDirectory();
std::string plugin_name = host->GetPluginName();
diff --git a/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.cc b/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.cc
index bdbdf87..897fc4d 100644
--- a/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.cc
+++ b/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.cc
@@ -86,13 +86,13 @@ PepperHostResolverMessageFilter::PepperHostResolverMessageFilter(
: external_plugin_(host->external_plugin()),
private_api_(private_api),
render_process_id_(0),
- render_view_id_(0) {
+ render_frame_id_(0) {
DCHECK(host);
- if (!host->GetRenderViewIDsForInstance(
+ if (!host->GetRenderFrameIDsForInstance(
instance,
&render_process_id_,
- &render_view_id_)) {
+ &render_frame_id_)) {
NOTREACHED();
}
}
@@ -127,13 +127,11 @@ int32_t PepperHostResolverMessageFilter::OnMsgResolve(
// Check plugin permissions.
SocketPermissionRequest request(
SocketPermissionRequest::RESOLVE_HOST, host_port.host, host_port.port);
- RenderViewHost* render_view_host =
- RenderViewHost::FromID(render_process_id_, render_view_id_);
- if (!render_view_host ||
- !pepper_socket_utils::CanUseSocketAPIs(external_plugin_,
+ if (!pepper_socket_utils::CanUseSocketAPIs(external_plugin_,
private_api_,
&request,
- render_view_host)) {
+ render_process_id_,
+ render_frame_id_)) {
return PP_ERROR_NOACCESS;
}
diff --git a/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.h b/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.h
index cc93603..8fb404d 100644
--- a/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.h
+++ b/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.h
@@ -79,7 +79,7 @@ class CONTENT_EXPORT PepperHostResolverMessageFilter
bool external_plugin_;
bool private_api_;
int render_process_id_;
- int render_view_id_;
+ int render_frame_id_;
DISALLOW_COPY_AND_ASSIGN(PepperHostResolverMessageFilter);
};
diff --git a/content/browser/renderer_host/pepper/pepper_network_monitor_host.cc b/content/browser/renderer_host/pepper/pepper_network_monitor_host.cc
index 32ed3cf..bc48bc9 100644
--- a/content/browser/renderer_host/pepper/pepper_network_monitor_host.cc
+++ b/content/browser/renderer_host/pepper/pepper_network_monitor_host.cc
@@ -20,14 +20,14 @@ namespace {
bool CanUseNetworkMonitor(bool external_plugin,
int render_process_id,
- int render_view_id) {
+ int render_frame_id) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
SocketPermissionRequest request = SocketPermissionRequest(
SocketPermissionRequest::NETWORK_STATE, std::string(), 0);
return pepper_socket_utils::CanUseSocketAPIs(
external_plugin, false /* private_api */, &request, render_process_id,
- render_view_id);
+ render_frame_id);
}
scoped_ptr<net::NetworkInterfaceList> GetNetworkList() {
@@ -45,15 +45,15 @@ PepperNetworkMonitorHost::PepperNetworkMonitorHost(
: ResourceHost(host->GetPpapiHost(), instance, resource),
weak_factory_(this) {
int render_process_id;
- int render_view_id;
- host->GetRenderViewIDsForInstance(instance,
- &render_process_id,
- &render_view_id);
+ int render_frame_id;
+ host->GetRenderFrameIDsForInstance(instance,
+ &render_process_id,
+ &render_frame_id);
BrowserThread::PostTaskAndReplyWithResult(
BrowserThread::UI, FROM_HERE,
base::Bind(&CanUseNetworkMonitor, host->external_plugin(),
- render_process_id, render_view_id),
+ render_process_id, render_frame_id),
base::Bind(&PepperNetworkMonitorHost::OnPermissionCheckResult,
weak_factory_.GetWeakPtr()));
}
diff --git a/content/browser/renderer_host/pepper/pepper_network_proxy_host.cc b/content/browser/renderer_host/pepper/pepper_network_proxy_host.cc
index 13f0fc3..8f44537 100644
--- a/content/browser/renderer_host/pepper/pepper_network_proxy_host.cc
+++ b/content/browser/renderer_host/pepper/pepper_network_proxy_host.cc
@@ -30,15 +30,15 @@ PepperNetworkProxyHost::PepperNetworkProxyHost(BrowserPpapiHostImpl* host,
is_allowed_(false),
waiting_for_ui_thread_data_(true),
weak_factory_(this) {
- int render_process_id(0), render_view_id(0);
- host->GetRenderViewIDsForInstance(instance,
+ int render_process_id(0), render_frame_id(0);
+ host->GetRenderFrameIDsForInstance(instance,
&render_process_id,
- &render_view_id);
+ &render_frame_id);
BrowserThread::PostTaskAndReplyWithResult(
BrowserThread::UI, FROM_HERE,
base::Bind(&GetUIThreadDataOnUIThread,
render_process_id,
- render_view_id,
+ render_frame_id,
host->external_plugin()),
base::Bind(&PepperNetworkProxyHost::DidGetUIThreadData,
weak_factory_.GetWeakPtr()));
@@ -65,7 +65,7 @@ PepperNetworkProxyHost::UIThreadData::~UIThreadData() {
// static
PepperNetworkProxyHost::UIThreadData
PepperNetworkProxyHost::GetUIThreadDataOnUIThread(int render_process_id,
- int render_view_id,
+ int render_frame_id,
bool is_external_plugin) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
PepperNetworkProxyHost::UIThreadData result;
@@ -76,17 +76,14 @@ PepperNetworkProxyHost::GetUIThreadDataOnUIThread(int render_process_id,
GetRequestContextForRenderProcess(render_process_id);
}
- RenderViewHost* render_view_host =
- RenderViewHost::FromID(render_process_id, render_view_id);
- if (render_view_host) {
- SocketPermissionRequest request(
- content::SocketPermissionRequest::RESOLVE_PROXY, std::string(), 0);
- result.is_allowed = pepper_socket_utils::CanUseSocketAPIs(
- is_external_plugin,
- false /* is_private_api */,
- &request,
- render_view_host);
- }
+ SocketPermissionRequest request(
+ content::SocketPermissionRequest::RESOLVE_PROXY, std::string(), 0);
+ result.is_allowed = pepper_socket_utils::CanUseSocketAPIs(
+ is_external_plugin,
+ false /* is_private_api */,
+ &request,
+ render_process_id,
+ render_frame_id);
return result;
}
diff --git a/content/browser/renderer_host/pepper/pepper_network_proxy_host.h b/content/browser/renderer_host/pepper/pepper_network_proxy_host.h
index 38e36cb..28f52b6 100644
--- a/content/browser/renderer_host/pepper/pepper_network_proxy_host.h
+++ b/content/browser/renderer_host/pepper/pepper_network_proxy_host.h
@@ -50,7 +50,7 @@ class CONTENT_EXPORT PepperNetworkProxyHost : public ppapi::host::ResourceHost {
scoped_refptr<net::URLRequestContextGetter> context_getter;
};
static UIThreadData GetUIThreadDataOnUIThread(int render_process_id,
- int render_view_id,
+ int render_frame_id,
bool is_external_plugin);
void DidGetUIThreadData(const UIThreadData&);
diff --git a/content/browser/renderer_host/pepper/pepper_socket_utils.cc b/content/browser/renderer_host/pepper/pepper_socket_utils.cc
index 2f109cd..9fc17c5 100644
--- a/content/browser/renderer_host/pepper/pepper_socket_utils.cc
+++ b/content/browser/renderer_host/pepper/pepper_socket_utils.cc
@@ -9,9 +9,10 @@
#include "base/logging.h"
#include "base/memory/ref_counted.h"
+#include "base/strings/string_util.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/content_browser_client.h"
-#include "content/public/browser/render_view_host.h"
+#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/site_instance.h"
#include "content/public/common/content_client.h"
#include "net/cert/x509_certificate.h"
@@ -39,22 +40,8 @@ bool CanUseSocketAPIs(bool external_plugin,
bool private_api,
const SocketPermissionRequest* params,
int render_process_id,
- int render_view_id) {
+ int render_frame_id) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- RenderViewHost* render_view_host = RenderViewHost::FromID(render_process_id,
- render_view_id);
- return render_view_host && CanUseSocketAPIs(external_plugin,
- private_api,
- params,
- render_view_host);
-}
-
-bool CanUseSocketAPIs(bool external_plugin,
- bool private_api,
- const SocketPermissionRequest* params,
- RenderViewHost* render_view_host) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-
if (!external_plugin) {
// Always allow socket APIs for out-process plugins (other than external
// plugins instantiated by the embeeder through
@@ -62,9 +49,11 @@ bool CanUseSocketAPIs(bool external_plugin,
return true;
}
- if (!render_view_host)
+ RenderFrameHost* render_frame_host =
+ RenderFrameHost::FromID(render_process_id, render_frame_id);
+ if (!render_frame_host)
return false;
- SiteInstance* site_instance = render_view_host->GetSiteInstance();
+ SiteInstance* site_instance = render_frame_host->GetSiteInstance();
if (!site_instance)
return false;
if (!GetContentClient()->browser()->AllowPepperSocketAPI(
diff --git a/content/browser/renderer_host/pepper/pepper_socket_utils.h b/content/browser/renderer_host/pepper/pepper_socket_utils.h
index 1a1a26c..e7bc1e3 100644
--- a/content/browser/renderer_host/pepper/pepper_socket_utils.h
+++ b/content/browser/renderer_host/pepper/pepper_socket_utils.h
@@ -20,8 +20,6 @@ class PPB_X509Certificate_Fields;
namespace content {
-class RenderViewHost;
-
namespace pepper_socket_utils {
SocketPermissionRequest CreateSocketPermissionRequest(
@@ -35,13 +33,7 @@ bool CanUseSocketAPIs(bool external_plugin,
bool private_api,
const SocketPermissionRequest* params,
int render_process_id,
- int render_view_id);
-
-// TODO (ygorshenin@): remove this method.
-bool CanUseSocketAPIs(bool external_plugin,
- bool private_api,
- const SocketPermissionRequest* params,
- RenderViewHost* render_view_host);
+ int render_frame_id);
// Extracts the certificate field data from a net::X509Certificate into
// PPB_X509Certificate_Fields.
diff --git a/content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.cc b/content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.cc
index 063c11e..5c59870 100644
--- a/content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.cc
+++ b/content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.cc
@@ -49,13 +49,13 @@ PepperTCPServerSocketMessageFilter::PepperTCPServerSocketMessageFilter(
external_plugin_(host->external_plugin()),
private_api_(private_api),
render_process_id_(0),
- render_view_id_(0) {
+ render_frame_id_(0) {
++g_num_instances;
DCHECK(factory_);
DCHECK(ppapi_host_);
- if (!host->GetRenderViewIDsForInstance(instance,
- &render_process_id_,
- &render_view_id_)) {
+ if (!host->GetRenderFrameIDsForInstance(instance,
+ &render_process_id_,
+ &render_frame_id_)) {
NOTREACHED();
}
}
@@ -110,7 +110,7 @@ int32_t PepperTCPServerSocketMessageFilter::OnMsgListen(
private_api_,
&request,
render_process_id_,
- render_view_id_)) {
+ render_frame_id_)) {
return PP_ERROR_NOACCESS;
}
diff --git a/content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.h b/content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.h
index 5d17333..3f5e70d 100644
--- a/content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.h
+++ b/content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.h
@@ -105,7 +105,7 @@ class CONTENT_EXPORT PepperTCPServerSocketMessageFilter
const bool external_plugin_;
const bool private_api_;
int render_process_id_;
- int render_view_id_;
+ int render_frame_id_;
DISALLOW_COPY_AND_ASSIGN(PepperTCPServerSocketMessageFilter);
};
diff --git a/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.cc b/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.cc
index f943f39..9727616 100644
--- a/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.cc
+++ b/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.cc
@@ -56,7 +56,7 @@ PepperTCPSocketMessageFilter::PepperTCPSocketMessageFilter(
: version_(version),
external_plugin_(host->external_plugin()),
render_process_id_(0),
- render_view_id_(0),
+ render_frame_id_(0),
ppapi_host_(host->GetPpapiHost()),
factory_(factory),
instance_(instance),
@@ -69,9 +69,9 @@ PepperTCPSocketMessageFilter::PepperTCPSocketMessageFilter(
pending_accept_(false) {
DCHECK(host);
++g_num_instances;
- if (!host->GetRenderViewIDsForInstance(instance,
- &render_process_id_,
- &render_view_id_)) {
+ if (!host->GetRenderFrameIDsForInstance(instance,
+ &render_process_id_,
+ &render_frame_id_)) {
NOTREACHED();
}
}
@@ -84,7 +84,7 @@ PepperTCPSocketMessageFilter::PepperTCPSocketMessageFilter(
: version_(version),
external_plugin_(host->external_plugin()),
render_process_id_(0),
- render_view_id_(0),
+ render_frame_id_(0),
ppapi_host_(host->GetPpapiHost()),
factory_(NULL),
instance_(instance),
@@ -99,9 +99,9 @@ PepperTCPSocketMessageFilter::PepperTCPSocketMessageFilter(
DCHECK_NE(version, ppapi::TCP_SOCKET_VERSION_1_0);
++g_num_instances;
- if (!host->GetRenderViewIDsForInstance(instance,
- &render_process_id_,
- &render_view_id_)) {
+ if (!host->GetRenderFrameIDsForInstance(instance,
+ &render_process_id_,
+ &render_frame_id_)) {
NOTREACHED();
}
}
@@ -181,7 +181,7 @@ int32_t PepperTCPSocketMessageFilter::OnMsgBind(
if (!pepper_socket_utils::CanUseSocketAPIs(
external_plugin_, false /* private_api */, NULL, render_process_id_,
- render_view_id_)) {
+ render_frame_id_)) {
return PP_ERROR_NOACCESS;
}
@@ -211,7 +211,7 @@ int32_t PepperTCPSocketMessageFilter::OnMsgConnect(
port);
if (!pepper_socket_utils::CanUseSocketAPIs(
external_plugin_, true /* private_api */, &request,
- render_process_id_, render_view_id_)) {
+ render_process_id_, render_frame_id_)) {
return PP_ERROR_NOACCESS;
}
@@ -241,7 +241,7 @@ int32_t PepperTCPSocketMessageFilter::OnMsgConnectWithNetAddress(
content::SocketPermissionRequest::TCP_CONNECT, net_addr);
if (!pepper_socket_utils::CanUseSocketAPIs(external_plugin_, IsPrivateAPI(),
&request, render_process_id_,
- render_view_id_)) {
+ render_frame_id_)) {
return PP_ERROR_NOACCESS;
}
@@ -381,7 +381,7 @@ int32_t PepperTCPSocketMessageFilter::OnMsgListen(
content::SocketPermissionRequest::TCP_LISTEN, bind_input_addr_);
if (!pepper_socket_utils::CanUseSocketAPIs(
external_plugin_, false /* private_api */, &request,
- render_process_id_, render_view_id_)) {
+ render_process_id_, render_frame_id_)) {
return PP_ERROR_NOACCESS;
}
diff --git a/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.h b/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.h
index fb34b98..35fdabd 100644
--- a/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.h
+++ b/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.h
@@ -169,7 +169,7 @@ class CONTENT_EXPORT PepperTCPSocketMessageFilter
const bool external_plugin_;
int render_process_id_;
- int render_view_id_;
+ int render_frame_id_;
// The following fields are used only on the IO thread.
// Non-owning ptr.
diff --git a/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.cc b/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.cc
index 3127ed2..82805cd 100644
--- a/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.cc
+++ b/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.cc
@@ -49,13 +49,13 @@ PepperUDPSocketMessageFilter::PepperUDPSocketMessageFilter(
external_plugin_(host->external_plugin()),
private_api_(private_api),
render_process_id_(0),
- render_view_id_(0) {
+ render_frame_id_(0) {
++g_num_instances;
DCHECK(host);
- if (!host->GetRenderViewIDsForInstance(instance,
- &render_process_id_,
- &render_view_id_)) {
+ if (!host->GetRenderFrameIDsForInstance(instance,
+ &render_process_id_,
+ &render_frame_id_)) {
NOTREACHED();
}
}
@@ -174,7 +174,7 @@ int32_t PepperUDPSocketMessageFilter::OnMsgBind(
SocketPermissionRequest::UDP_BIND, addr);
if (!pepper_socket_utils::CanUseSocketAPIs(external_plugin_, private_api_,
&request, render_process_id_,
- render_view_id_)) {
+ render_frame_id_)) {
return PP_ERROR_NOACCESS;
}
@@ -237,7 +237,7 @@ int32_t PepperUDPSocketMessageFilter::OnMsgSendTo(
SocketPermissionRequest::UDP_SEND_TO, addr);
if (!pepper_socket_utils::CanUseSocketAPIs(external_plugin_, private_api_,
&request, render_process_id_,
- render_view_id_)) {
+ render_frame_id_)) {
return PP_ERROR_NOACCESS;
}
diff --git a/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.h b/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.h
index 2df4cee..64dc32f 100644
--- a/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.h
+++ b/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.h
@@ -121,7 +121,7 @@ class CONTENT_EXPORT PepperUDPSocketMessageFilter
bool private_api_;
int render_process_id_;
- int render_view_id_;
+ int render_frame_id_;
DISALLOW_COPY_AND_ASSIGN(PepperUDPSocketMessageFilter);
};
diff --git a/content/common/pepper_renderer_instance_data.cc b/content/common/pepper_renderer_instance_data.cc
index 73b67a7..6fda4bf 100644
--- a/content/common/pepper_renderer_instance_data.cc
+++ b/content/common/pepper_renderer_instance_data.cc
@@ -8,16 +8,16 @@ namespace content {
PepperRendererInstanceData::PepperRendererInstanceData()
: render_process_id(0),
- render_view_id(0) {
+ render_frame_id(0) {
}
PepperRendererInstanceData::PepperRendererInstanceData(
int render_process,
- int render_view,
+ int render_frame,
const GURL& document,
const GURL& plugin)
: render_process_id(render_process),
- render_view_id(render_view),
+ render_frame_id(render_frame),
document_url(document),
plugin_url(plugin) {
}
diff --git a/content/common/pepper_renderer_instance_data.h b/content/common/pepper_renderer_instance_data.h
index ffa0106..e39017d 100644
--- a/content/common/pepper_renderer_instance_data.h
+++ b/content/common/pepper_renderer_instance_data.h
@@ -16,12 +16,12 @@ namespace content {
struct PepperRendererInstanceData {
PepperRendererInstanceData();
PepperRendererInstanceData(int render_process,
- int render_view,
+ int render_frame_id,
const GURL& document,
const GURL& plugin);
~PepperRendererInstanceData();
int render_process_id;
- int render_view_id;
+ int render_frame_id;
GURL document_url;
GURL plugin_url;
};
diff --git a/content/common/view_messages.h b/content/common/view_messages.h
index 3fe538f..37af7c7 100644
--- a/content/common/view_messages.h
+++ b/content/common/view_messages.h
@@ -246,7 +246,7 @@ IPC_STRUCT_TRAITS_END()
IPC_STRUCT_TRAITS_BEGIN(content::PepperRendererInstanceData)
IPC_STRUCT_TRAITS_MEMBER(render_process_id)
- IPC_STRUCT_TRAITS_MEMBER(render_view_id)
+ IPC_STRUCT_TRAITS_MEMBER(render_frame_id)
IPC_STRUCT_TRAITS_MEMBER(document_url)
IPC_STRUCT_TRAITS_MEMBER(plugin_url)
IPC_STRUCT_TRAITS_END()
diff --git a/content/public/browser/browser_ppapi_host.h b/content/public/browser/browser_ppapi_host.h
index ce76d16..81b78b6 100644
--- a/content/public/browser/browser_ppapi_host.h
+++ b/content/public/browser/browser_ppapi_host.h
@@ -36,7 +36,7 @@ class CONTENT_EXPORT BrowserPpapiHost {
public:
struct OnKeepaliveInstanceStruct {
int render_process_id;
- int render_view_id;
+ int render_frame_id;
GURL document_url;
};
typedef std::vector<OnKeepaliveInstanceStruct> OnKeepaliveInstanceData;
@@ -67,7 +67,7 @@ class CONTENT_EXPORT BrowserPpapiHost {
// Returns true if the given PP_Instance is valid.
virtual bool IsValidInstance(PP_Instance instance) const = 0;
- // Retrieves the process/view Ids associated with the RenderView containing
+ // Retrieves the process/frame Ids associated with the RenderFrame containing
// the given instance and returns true on success. If the instance is
// invalid, the ids will be 0 and false will be returned.
//
@@ -75,10 +75,10 @@ class CONTENT_EXPORT BrowserPpapiHost {
// validated, and the resource hosts will be deleted when the resource is
// destroyed. So it should not generally be necessary to check for errors
// from this function except as a last-minute sanity check if you convert the
- // IDs to a RenderView/ProcessHost on the UI thread.
- virtual bool GetRenderViewIDsForInstance(PP_Instance instance,
- int* render_process_id,
- int* render_view_id) const = 0;
+ // IDs to a RenderFrame/ProcessHost on the UI thread.
+ virtual bool GetRenderFrameIDsForInstance(PP_Instance instance,
+ int* render_process_id,
+ int* render_frame_id) const = 0;
// Returns the name of the plugin.
virtual const std::string& GetPluginName() = 0;
diff --git a/content/public/browser/render_frame_host.h b/content/public/browser/render_frame_host.h
index ed14b40..3aaec7c 100644
--- a/content/public/browser/render_frame_host.h
+++ b/content/public/browser/render_frame_host.h
@@ -8,9 +8,11 @@
#include "content/common/content_export.h"
#include "ipc/ipc_listener.h"
#include "ipc/ipc_sender.h"
+#include "ui/gfx/native_widget_types.h"
namespace content {
class RenderProcessHost;
+class SiteInstance;
// The interface provides a communication conduit with a frame in the renderer.
class CONTENT_EXPORT RenderFrameHost : public IPC::Listener,
@@ -22,12 +24,17 @@ class CONTENT_EXPORT RenderFrameHost : public IPC::Listener,
virtual ~RenderFrameHost() {}
+ virtual SiteInstance* GetSiteInstance() = 0;
+
// Returns the process for this frame.
virtual RenderProcessHost* GetProcess() = 0;
// Returns the route id for this frame.
virtual int GetRoutingID() = 0;
+ // Returns the associated widget's native view.
+ virtual gfx::NativeView GetNativeView() = 0;
+
private:
// This interface should only be implemented inside content.
friend class RenderFrameHostImpl;
diff --git a/content/renderer/pepper/host_dispatcher_wrapper.cc b/content/renderer/pepper/host_dispatcher_wrapper.cc
index 8707d94..2c568a4 100644
--- a/content/renderer/pepper/host_dispatcher_wrapper.cc
+++ b/content/renderer/pepper/host_dispatcher_wrapper.cc
@@ -11,7 +11,7 @@
#include "content/renderer/pepper/plugin_module.h"
#include "content/renderer/pepper/renderer_ppapi_host_impl.h"
#include "content/renderer/pepper/renderer_restrict_dispatch_group.h"
-#include "content/renderer/render_view_impl.h"
+#include "content/renderer/render_frame_impl.h"
namespace content {
@@ -76,14 +76,14 @@ void HostDispatcherWrapper::AddInstance(PP_Instance instance) {
// always give us an instance we can find in the map otherwise, but that
// isn't true for browser tag support.
if (host) {
- RenderView* render_view = host->GetRenderViewForInstance(instance);
+ RenderFrame* render_frame = host->GetRenderFrameForInstance(instance);
PepperPluginInstance* plugin_instance = host->GetPluginInstance(instance);
- render_view->Send(new ViewHostMsg_DidCreateOutOfProcessPepperInstance(
+ render_frame->Send(new ViewHostMsg_DidCreateOutOfProcessPepperInstance(
plugin_child_id_,
instance,
PepperRendererInstanceData(
0, // The render process id will be supplied in the browser.
- render_view->GetRoutingID(),
+ render_frame->GetRoutingID(),
host->GetDocumentURL(instance),
plugin_instance->GetPluginURL()),
is_external_));
@@ -97,8 +97,8 @@ void HostDispatcherWrapper::RemoveInstance(PP_Instance instance) {
RendererPpapiHostImpl::GetForPPInstance(instance);
// TODO(brettw) remove null check as described in AddInstance.
if (host) {
- RenderView* render_view = host->GetRenderViewForInstance(instance);
- render_view->Send(new ViewHostMsg_DidDeleteOutOfProcessPepperInstance(
+ RenderFrame* render_frame = host->GetRenderFrameForInstance(instance);
+ render_frame->Send(new ViewHostMsg_DidDeleteOutOfProcessPepperInstance(
plugin_child_id_,
instance,
is_external_));
diff --git a/content/renderer/pepper/pepper_browser_connection.cc b/content/renderer/pepper/pepper_browser_connection.cc
index dfb2429..91b25ec 100644
--- a/content/renderer/pepper/pepper_browser_connection.cc
+++ b/content/renderer/pepper/pepper_browser_connection.cc
@@ -41,14 +41,14 @@ bool PepperBrowserConnection::OnMessageReceived(const IPC::Message& msg) {
void PepperBrowserConnection::DidCreateInProcessInstance(
PP_Instance instance,
- int render_view_id,
+ int render_frame_id,
const GURL& document_url,
const GURL& plugin_url) {
Send(new ViewHostMsg_DidCreateInProcessInstance(
instance,
// Browser provides the render process id.
PepperRendererInstanceData(0,
- render_view_id,
+ render_frame_id,
document_url,
plugin_url)));
}
diff --git a/content/renderer/pepper/pepper_browser_connection.h b/content/renderer/pepper/pepper_browser_connection.h
index cfc5603..c79a6ec 100644
--- a/content/renderer/pepper/pepper_browser_connection.h
+++ b/content/renderer/pepper/pepper_browser_connection.h
@@ -49,7 +49,7 @@ class PepperBrowserConnection
// Called when the renderer creates an in-process instance.
void DidCreateInProcessInstance(PP_Instance instance,
- int render_view_id,
+ int render_frame_id,
const GURL& document_url,
const GURL& plugin_url);
diff --git a/content/renderer/pepper/pepper_plugin_instance_impl.cc b/content/renderer/pepper/pepper_plugin_instance_impl.cc
index 1277c63..7e5c968 100644
--- a/content/renderer/pepper/pepper_plugin_instance_impl.cc
+++ b/content/renderer/pepper/pepper_plugin_instance_impl.cc
@@ -548,7 +548,7 @@ PepperPluginInstanceImpl::PepperPluginInstanceImpl(
PepperBrowserConnection::Get(render_frame_);
browser_connection->DidCreateInProcessInstance(
pp_instance(),
- render_frame_->render_view()->GetRoutingID(),
+ render_frame_->GetRoutingID(),
container_->element().document().url(),
GetPluginURL());
}
diff --git a/content/renderer/pepper/pepper_webplugin_impl.cc b/content/renderer/pepper/pepper_webplugin_impl.cc
index 129ee45..8947d73 100644
--- a/content/renderer/pepper/pepper_webplugin_impl.cc
+++ b/content/renderer/pepper/pepper_webplugin_impl.cc
@@ -14,7 +14,7 @@
#include "content/renderer/pepper/npobject_var.h"
#include "content/renderer/pepper/pepper_plugin_instance_impl.h"
#include "content/renderer/pepper/plugin_module.h"
-#include "content/renderer/render_view_impl.h"
+#include "content/renderer/render_frame_impl.h"
#include "ppapi/shared_impl/ppapi_globals.h"
#include "ppapi/shared_impl/var_tracker.h"
#include "third_party/WebKit/public/platform/WebPoint.h"
@@ -48,8 +48,7 @@ namespace content {
struct PepperWebPluginImpl::InitData {
scoped_refptr<PluginModule> module;
- base::WeakPtr<RenderViewImpl> render_view;
- RenderFrame* render_frame;
+ RenderFrameImpl* render_frame;
std::vector<std::string> arg_names;
std::vector<std::string> arg_values;
GURL url;
@@ -58,15 +57,13 @@ struct PepperWebPluginImpl::InitData {
PepperWebPluginImpl::PepperWebPluginImpl(
PluginModule* plugin_module,
const WebPluginParams& params,
- const base::WeakPtr<RenderViewImpl>& render_view,
- RenderFrame* render_frame)
+ RenderFrameImpl* render_frame)
: init_data_(new InitData()),
full_frame_(params.loadManually),
instance_object_(PP_MakeUndefined()),
container_(NULL) {
DCHECK(plugin_module);
init_data_->module = plugin_module;
- init_data_->render_view = render_view;
init_data_->render_frame = render_frame;
for (size_t i = 0; i < params.attributeNames.size(); ++i) {
init_data_->arg_names.push_back(params.attributeNames[i].utf8());
@@ -88,7 +85,7 @@ blink::WebPluginContainer* PepperWebPluginImpl::container() const {
bool PepperWebPluginImpl::initialize(WebPluginContainer* container) {
// The plugin delegate may have gone away.
instance_ = init_data_->module->CreateInstance(
- init_data_->render_view->main_render_frame(), container, init_data_->url);
+ init_data_->render_frame, container, init_data_->url);
if (!instance_.get())
return false;
diff --git a/content/renderer/pepper/pepper_webplugin_impl.h b/content/renderer/pepper/pepper_webplugin_impl.h
index 600dd57..cee6690 100644
--- a/content/renderer/pepper/pepper_webplugin_impl.h
+++ b/content/renderer/pepper/pepper_webplugin_impl.h
@@ -27,15 +27,13 @@ namespace content {
class PepperPluginInstanceImpl;
class PluginModule;
class PPB_URLLoader_Impl;
-class RenderFrame;
-class RenderViewImpl;
+class RenderFrameImpl;
class PepperWebPluginImpl : public blink::WebPlugin {
public:
PepperWebPluginImpl(PluginModule* module,
const blink::WebPluginParams& params,
- const base::WeakPtr<RenderViewImpl>& render_view,
- RenderFrame* render_frame);
+ RenderFrameImpl* render_frame);
PepperPluginInstanceImpl* instance() { return instance_.get(); }
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 836be18..3be9c30 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -497,9 +497,7 @@ blink::WebPlugin* RenderFrameImpl::CreatePlugin(
this, info, &pepper_plugin_was_registered));
if (pepper_plugin_was_registered) {
if (pepper_module.get()) {
- // TODO(jam): change to take RenderFrame.
- return new PepperWebPluginImpl(
- pepper_module.get(), params, render_view_->AsWeakPtr(), this);
+ return new PepperWebPluginImpl(pepper_module.get(), params, this);
}
}
#if defined(OS_CHROMEOS)
diff --git a/extensions/browser/extension_function.cc b/extensions/browser/extension_function.cc
index a06d2c4..d1e2a9f 100644
--- a/extensions/browser/extension_function.cc
+++ b/extensions/browser/extension_function.cc
@@ -12,6 +12,7 @@
#include "chrome/common/extensions/extension_messages.h"
#include "content/public/browser/notification_source.h"
#include "content/public/browser/notification_types.h"
+#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_observer.h"
@@ -28,15 +29,18 @@ void ExtensionFunctionDeleteTraits::Destruct(const ExtensionFunction* x) {
x->Destruct();
}
-// Helper class to track the lifetime of ExtensionFunction's RenderViewHost
-// pointer and NULL it out when it dies. It also allows us to filter IPC
-// messages coming from the RenderViewHost.
-class UIThreadExtensionFunction::RenderViewHostTracker
+// Helper class to track the lifetime of ExtensionFunction's RenderViewHost or
+// RenderFrameHost pointer and NULL it out when it dies. It also allows us to
+// filter IPC messages coming from the RenderViewHost/RenderFrameHost.
+class UIThreadExtensionFunction::RenderHostTracker
: public content::WebContentsObserver {
public:
- explicit RenderViewHostTracker(UIThreadExtensionFunction* function)
+ explicit RenderHostTracker(UIThreadExtensionFunction* function)
: content::WebContentsObserver(
- WebContents::FromRenderViewHost(function->render_view_host())),
+ function->render_view_host() ?
+ WebContents::FromRenderViewHost(function->render_view_host()) :
+ WebContents::FromRenderFrameHost(
+ function->render_frame_host())),
function_(function) {
}
@@ -49,14 +53,21 @@ class UIThreadExtensionFunction::RenderViewHostTracker
function_->SetRenderViewHost(NULL);
}
+ virtual void RenderFrameDeleted(
+ content::RenderFrameHost* render_frame_host) OVERRIDE {
+ if (render_frame_host != function_->render_frame_host())
+ return;
+
+ function_->SetRenderFrameHost(NULL);
+ }
virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE {
- return function_->OnMessageReceivedFromRenderView(message);
+ return function_->OnMessageReceived(message);
}
UIThreadExtensionFunction* function_;
- DISALLOW_COPY_AND_ASSIGN(RenderViewHostTracker);
+ DISALLOW_COPY_AND_ASSIGN(RenderHostTracker);
};
ExtensionFunction::ExtensionFunction()
@@ -146,7 +157,8 @@ void ExtensionFunction::SendResponseImpl(bool success) {
}
UIThreadExtensionFunction::UIThreadExtensionFunction()
- : render_view_host_(NULL), context_(NULL), delegate_(NULL) {}
+ : render_view_host_(NULL), render_frame_host_(NULL), context_(NULL),
+ delegate_(NULL) {}
UIThreadExtensionFunction::~UIThreadExtensionFunction() {
if (dispatcher() && render_view_host())
@@ -158,8 +170,7 @@ UIThreadExtensionFunction::AsUIThreadExtensionFunction() {
return this;
}
-bool UIThreadExtensionFunction::OnMessageReceivedFromRenderView(
- const IPC::Message& message) {
+bool UIThreadExtensionFunction::OnMessageReceived(const IPC::Message& message) {
return false;
}
@@ -169,8 +180,16 @@ void UIThreadExtensionFunction::Destruct() const {
void UIThreadExtensionFunction::SetRenderViewHost(
RenderViewHost* render_view_host) {
+ DCHECK(!render_frame_host_);
render_view_host_ = render_view_host;
- tracker_.reset(render_view_host ? new RenderViewHostTracker(this) : NULL);
+ tracker_.reset(render_view_host ? new RenderHostTracker(this) : NULL);
+}
+
+void UIThreadExtensionFunction::SetRenderFrameHost(
+ content::RenderFrameHost* render_frame_host) {
+ DCHECK(!render_view_host_);
+ render_frame_host_ = render_frame_host;
+ tracker_.reset(render_frame_host ? new RenderHostTracker(this) : NULL);
}
content::WebContents* UIThreadExtensionFunction::GetAssociatedWebContents() {
@@ -191,8 +210,13 @@ void UIThreadExtensionFunction::SendResponse(bool success) {
void UIThreadExtensionFunction::WriteToConsole(
content::ConsoleMessageLevel level,
const std::string& message) {
- render_view_host_->Send(new ExtensionMsg_AddMessageToConsole(
- render_view_host_->GetRoutingID(), level, message));
+ if (render_view_host_) {
+ render_view_host_->Send(new ExtensionMsg_AddMessageToConsole(
+ render_view_host_->GetRoutingID(), level, message));
+ } else {
+ render_frame_host_->Send(new ExtensionMsg_AddMessageToConsole(
+ render_frame_host_->GetRoutingID(), level, message));
+ }
}
IOThreadExtensionFunction::IOThreadExtensionFunction()
diff --git a/extensions/browser/extension_function.h b/extensions/browser/extension_function.h
index aa0ed03..49d370e 100644
--- a/extensions/browser/extension_function.h
+++ b/extensions/browser/extension_function.h
@@ -35,6 +35,7 @@ class Value;
namespace content {
class BrowserContext;
+class RenderFrameHost;
class RenderViewHost;
class WebContents;
}
@@ -290,7 +291,7 @@ class UIThreadExtensionFunction : public ExtensionFunction {
// Called when a message was received.
// Should return true if it processed the message.
- virtual bool OnMessageReceivedFromRenderView(const IPC::Message& message);
+ virtual bool OnMessageReceived(const IPC::Message& message);
// Set the browser context which contains the extension that has originated
// this function call.
@@ -301,6 +302,10 @@ class UIThreadExtensionFunction : public ExtensionFunction {
content::RenderViewHost* render_view_host() const {
return render_view_host_;
}
+ void SetRenderFrameHost(content::RenderFrameHost* render_frame_host);
+ content::RenderFrameHost* render_frame_host() const {
+ return render_frame_host_;
+ }
void set_dispatcher(
const base::WeakPtr<ExtensionFunctionDispatcher>& dispatcher) {
@@ -330,18 +335,23 @@ class UIThreadExtensionFunction : public ExtensionFunction {
// The dispatcher that will service this extension function call.
base::WeakPtr<ExtensionFunctionDispatcher> dispatcher_;
- // The RenderViewHost we will send responses too.
+ // The RenderViewHost we will send responses to.
content::RenderViewHost* render_view_host_;
+ // The RenderFrameHost we will send responses to.
+ // NOTE: either render_view_host_ or render_frame_host_ will be set, as we
+ // port code to use RenderFrames for OOPIF. See http://crbug.com/304341.
+ content::RenderFrameHost* render_frame_host_;
+
// The content::BrowserContext of this function's extension.
content::BrowserContext* context_;
private:
- class RenderViewHostTracker;
+ class RenderHostTracker;
virtual void Destruct() const OVERRIDE;
- scoped_ptr<RenderViewHostTracker> tracker_;
+ scoped_ptr<RenderHostTracker> tracker_;
DelegateForTests* delegate_;
};