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

Unified Diff: content/browser/renderer_host/pepper_message_filter.h

Issue 9379002: Move socket API restriction check to browser process (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nit Created 8 years, 10 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/renderer_host/pepper_message_filter.h
diff --git a/content/browser/renderer_host/pepper_message_filter.h b/content/browser/renderer_host/pepper_message_filter.h
index e55a5237b351fa3ff5becd7158086197984b3244..38596c4f89cfe7184338d263c34b55248d1f09b7 100644
--- a/content/browser/renderer_host/pepper_message_filter.h
+++ b/content/browser/renderer_host/pepper_message_filter.h
@@ -7,15 +7,18 @@
#pragma once
#include <map>
+#include <set>
#include <string>
#include "base/basictypes.h"
#include "base/memory/linked_ptr.h"
#include "base/memory/scoped_ptr.h"
#include "base/process.h"
+#include "base/synchronization/lock.h"
#include "base/time.h"
#include "content/browser/font_list_async.h"
#include "content/public/browser/browser_message_filter.h"
+#include "googleurl/src/gurl.h"
#include "net/base/ssl_config_service.h"
#include "ppapi/c/pp_stdint.h"
@@ -40,7 +43,8 @@ class HostResolver;
// handle requests that out-of-process plugins send directly to the browser.
class PepperMessageFilter : public content::BrowserMessageFilter {
public:
- explicit PepperMessageFilter(content::ResourceContext* resource_context);
+ PepperMessageFilter(int process_id,
+ content::ResourceContext* resource_context);
explicit PepperMessageFilter(net::HostResolver* host_resolver);
virtual ~PepperMessageFilter();
@@ -56,6 +60,9 @@ class PepperMessageFilter : public content::BrowserMessageFilter {
const net::SSLConfig& ssl_config() { return ssl_config_; }
+ // Notify PepperMessageFilter about site for given render.
+ static void SetRenderSite(int process_id, int routing_id, const GURL& url);
+
private:
#if defined(ENABLE_FLAPPER_HACKS)
// Message handlers.
@@ -121,6 +128,12 @@ class PepperMessageFilter : public content::BrowserMessageFilter {
uint32 GenerateSocketID();
+ // Return true if render with given ID can use socket APIs.
+ bool CanUseSocketAPIs(int32 render_id);
+
+ // Notify and site URL for given render.
+ void SetRenderSite(int render_id, const GURL& url);
+
// When non-NULL, this should be used instead of the host_resolver_.
content::ResourceContext* const resource_context_;
@@ -128,6 +141,21 @@ class PepperMessageFilter : public content::BrowserMessageFilter {
// GetHostResolver instead of accessing directly.
net::HostResolver* host_resolver_;
+ // ID of corresponding RenderProcessHost.
+ int process_id_;
+
+ // Map of render process IDs to corresponding PepperMessageFilters.
+ typedef std::map<int, PepperMessageFilter*> PepperMessageFilterMap;
+ static PepperMessageFilterMap instance_map_;
+ static base::Lock instance_map_mutex_;
+
+ // Set of origins that can use socket APIs from in-process plugins and NaCl.
+ std::set<std::string> allowed_socket_origins_;
+
+ // Set render IDs that can use socket APIs from in-process plugins and NaCl.
+ std::set<int> allowed_socket_renders_;
+ base::Lock allowed_socket_renders_mutex_;
+
// The default SSL configuration settings are used, as opposed to Chrome's SSL
// settings.
net::SSLConfig ssl_config_;

Powered by Google App Engine
This is Rietveld 408576698