chrome_render_message_filter.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
1551ccae044b0ff658fe629dd67edd5ffe75d10e8Reid Spencer// Copyright (c) 2012 The Chromium Authors. All rights reserved.
263b3afa98460ce38a1c48d3c44ef6edfdaf37b77Misha Brukman// Use of this source code is governed by a BSD-style license that can be
36c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke// found in the LICENSE file.
46c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke
57ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner#ifndef CHROME_BROWSER_RENDERER_HOST_CHROME_RENDER_MESSAGE_FILTER_H_
67ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner#define CHROME_BROWSER_RENDERER_HOST_CHROME_RENDER_MESSAGE_FILTER_H_
763b3afa98460ce38a1c48d3c44ef6edfdaf37b77Misha Brukman
86c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke#include <string>
96c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke#include <vector>
106c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke
116c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke#include "base/files/file_path.h"
1263b3afa98460ce38a1c48d3c44ef6edfdaf37b77Misha Brukman#include "base/memory/weak_ptr.h"
139a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson#include "base/sequenced_task_runner_helpers.h"
149a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson#include "chrome/browser/profiles/profile.h"
159a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson#include "chrome/common/content_settings.h"
169a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson#include "content/public/browser/browser_message_filter.h"
176c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke#include "third_party/WebKit/Source/WebKit/chromium/public/WebCache.h"
186c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke
196c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaekeclass CookieSettings;
20551ccae044b0ff658fe629dd67edd5ffe75d10e8Reid Spencerstruct ExtensionHostMsg_DOMAction_Params;
21551ccae044b0ff658fe629dd67edd5ffe75d10e8Reid Spencerstruct ExtensionHostMsg_Request_Params;
22551ccae044b0ff658fe629dd67edd5ffe75d10e8Reid Spencerclass ExtensionInfoMap;
238b67f774e9c38b7718b2b300b628388f966df4e0Chandler Carruthclass GURL;
246c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke
256c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaekenamespace nacl {
266c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaekestruct NaClLaunchParams;
276c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke}
286c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke
296c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaekenamespace net {
306c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaekeclass HostResolver;
316c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaekeclass URLRequestContextGetter;
326c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke}
336c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke
346c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke// This class filters out incoming Chrome-specific IPC messages for the renderer
356c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke// process on the IPC thread.
36620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaekeclass ChromeRenderMessageFilter : public content::BrowserMessageFilter {
37620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke public:
38620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke  ChromeRenderMessageFilter(int render_process_id,
39620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke                            Profile* profile,
40620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke                            net::URLRequestContextGetter* request_context);
41620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke
42620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke  // Notification detail classes.
43620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke  class FPSDetails {
44620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke   public:
45620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke    FPSDetails(int routing_id, float fps)
466c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke        : routing_id_(routing_id),
47757c1f9d87b516a1e3bc4cd678245b207ae9c559Brian Gaeke          fps_(fps) {}
486c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke    int routing_id() const { return routing_id_; }
499a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson    float fps() const { return fps_; }
509a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson   private:
519a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson    int routing_id_;
529a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson    float fps_;
539a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson  };
549a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson
559a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson  class V8HeapStatsDetails {
569a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson   public:
579a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson    V8HeapStatsDetails(size_t v8_memory_allocated,
589a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson                       size_t v8_memory_used)
599a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson        : v8_memory_allocated_(v8_memory_allocated),
609a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson          v8_memory_used_(v8_memory_used) {}
619a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson    size_t v8_memory_allocated() const { return v8_memory_allocated_; }
629a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson    size_t v8_memory_used() const { return v8_memory_used_; }
639a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson   private:
646c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke    size_t v8_memory_allocated_;
659a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson    size_t v8_memory_used_;
666c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  };
676c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke
686c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  // content::BrowserMessageFilter methods:
696c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  virtual bool OnMessageReceived(const IPC::Message& message,
706c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke                                 bool* message_was_ok) OVERRIDE;
716c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  virtual void OverrideThreadForMessage(
726c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke      const IPC::Message& message,
736c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke      content::BrowserThread::ID* thread) OVERRIDE;
746c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke
756c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  int render_process_id() { return render_process_id_; }
766c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  bool off_the_record() { return off_the_record_; }
776c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  net::HostResolver* GetHostResolver();
786c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke
79fe4591bfc2b147c10d6a7b1a5af56454fb78daceStephen Wilson private:
80314451326ad1ef89241b240a704e104897e4ee81Stephen Wilson  friend class content::BrowserThread;
816c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  friend class base::DeleteHelper<ChromeRenderMessageFilter>;
829a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson
839a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson  virtual ~ChromeRenderMessageFilter();
846c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke
856c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke#if !defined(DISABLE_NACL)
86620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke  void OnLaunchNaCl(const nacl::NaClLaunchParams& launch_params,
87620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke                    IPC::Message* reply_msg);
88e9f6f2c0492af8097166f1b7d62f131f20ca5714Brian Gaeke  void OnGetReadonlyPnaclFd(const std::string& filename,
899a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson                            IPC::Message* reply_msg);
90620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke  void OnNaClCreateTemporaryFile(IPC::Message* reply_msg);
91620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke  void OnNaClErrorStatus(int render_view_id, int error_id);
92620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke#endif
93620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke  void OnDnsPrefetch(const std::vector<std::string>& hostnames);
94620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke  void OnResourceTypeStats(const WebKit::WebCache::ResourceTypeStats& stats);
95620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke  void OnUpdatedCacheStats(const WebKit::WebCache::UsageStats& stats);
96620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke  void OnFPS(int routing_id, float fps);
97620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke  void OnV8HeapStats(int v8_memory_allocated, int v8_memory_used);
98620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke  void OnOpenChannelToExtension(int routing_id,
99620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke                                const std::string& source_extension_id,
100620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke                                const std::string& target_extension_id,
101620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke                                const std::string& channel_name, int* port_id);
102620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke  void OpenChannelToExtensionOnUIThread(int source_process_id,
1039a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson                                        int source_routing_id,
1049a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson                                        int receiver_port_id,
1059a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson                                        const std::string& source_extension_id,
1069a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson                                        const std::string& target_extension_id,
1079a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson                                        const std::string& channel_name);
108e9f6f2c0492af8097166f1b7d62f131f20ca5714Brian Gaeke  void OnOpenChannelToNativeApp(int routing_id,
109620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke                                const std::string& source_extension_id,
1106c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke                                const std::string& native_app_name,
1116c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke                                int* port_id);
1126c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  void OpenChannelToNativeAppOnUIThread(int source_routing_id,
1136c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke                                        int receiver_port_id,
1146c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke                                        const std::string& source_extension_id,
1156c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke                                        const std::string& native_app_name);
1166c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  void OnOpenChannelToTab(int routing_id, int tab_id,
1176c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke                          const std::string& extension_id,
1186c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke                          const std::string& channel_name, int* port_id);
1196c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  void OpenChannelToTabOnUIThread(int source_process_id, int source_routing_id,
1206c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke                                  int receiver_port_id,
1215af8f421b6412e52530608097e39d2602195629fDan Gohman                                  int tab_id, const std::string& extension_id,
1225af8f421b6412e52530608097e39d2602195629fDan Gohman                                  const std::string& channel_name);
1235af8f421b6412e52530608097e39d2602195629fDan Gohman  void OnGetExtensionMessageBundle(const std::string& extension_id,
1245af8f421b6412e52530608097e39d2602195629fDan Gohman                                   IPC::Message* reply_msg);
1255af8f421b6412e52530608097e39d2602195629fDan Gohman  void OnGetExtensionMessageBundleOnFileThread(
1265af8f421b6412e52530608097e39d2602195629fDan Gohman      const base::FilePath& extension_path,
1276c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke      const std::string& extension_id,
1286c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke      const std::string& default_locale,
1296c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke      IPC::Message* reply_msg);
1306c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  void OnExtensionAddListener(const std::string& extension_id,
1316c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke                              const std::string& event_name);
1326c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  void OnExtensionRemoveListener(const std::string& extension_id,
1336c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke                                 const std::string& event_name);
1346c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  void OnExtensionAddLazyListener(const std::string& extension_id,
135620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke                                  const std::string& event_name);
1366c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  void OnExtensionRemoveLazyListener(const std::string& extension_id,
137620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke                                     const std::string& event_name);
138620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke  void OnExtensionAddFilteredListener(const std::string& extension_id,
1399a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson                                      const std::string& event_name,
140620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke                                      const base::DictionaryValue& filter,
141620ee02353d8b65959dc01a66b073adfcdef9eacBrian Gaeke                                      bool lazy);
142cc5fc60468a1915049ef19a549fe4a6ae8708a00Bruno Cardoso Lopes  void OnExtensionRemoveFilteredListener(const std::string& extension_id,
143cc5fc60468a1915049ef19a549fe4a6ae8708a00Bruno Cardoso Lopes                                         const std::string& event_name,
1446c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke                                         const base::DictionaryValue& filter,
1456c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke                                         bool lazy);
1466c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  void OnExtensionCloseChannel(int port_id, const std::string& error_message);
1476c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  void OnExtensionRequestForIOThread(
1486c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke      int routing_id,
1496c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke      const ExtensionHostMsg_Request_Params& params);
1506c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  void OnExtensionShouldSuspendAck(const std::string& extension_id,
1516c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke                                   int sequence_id);
1526c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  void OnExtensionSuspendAck(const std::string& extension_id);
1536c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  void OnExtensionGenerateUniqueID(int* unique_id);
1549a9ad77847c1be4ffc5ba6304e33ccecbf72e43fStephen Wilson  void OnExtensionResumeRequests(int route_id);
1556c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  void OnAddDOMActionToExtensionActivityLog(
1566c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke      const std::string& extension_id,
1576c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke      const ExtensionHostMsg_DOMAction_Params& params);
1586c39a42b5c93b6d0af008dbafed6134d1deaa848Brian Gaeke  void OnAllowDatabase(int render_view_id,
159e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming                       const GURL& origin_url,
1605af8f421b6412e52530608097e39d2602195629fDan Gohman                       const GURL& top_origin_url,
161e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming                       const string16& name,
162e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming                       const string16& display_name,
163e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming                       bool* allowed);
164e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming  void OnAllowDOMStorage(int render_view_id,
165e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming                         const GURL& origin_url,
166e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming                         const GURL& top_origin_url,
167e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming                         bool local,
168e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming                         bool* allowed);
169e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming  void OnAllowFileSystem(int render_view_id,
170e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming                         const GURL& origin_url,
171e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming                         const GURL& top_origin_url,
172e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming                         bool* allowed);
173e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming  void OnAllowIndexedDB(int render_view_id,
174e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming                        const GURL& origin_url,
175e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming                        const GURL& top_origin_url,
176e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming                        const string16& name,
177e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming                        bool* allowed);
178e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming  void OnCanTriggerClipboardRead(const GURL& origin, bool* allowed);
179e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming  void OnCanTriggerClipboardWrite(const GURL& origin, bool* allowed);
180e07cc5dab102c0f8c3f66c2703c95e547d6bf1c6Matt Fleming  void OnGetCookies(const GURL& url,
1815af8f421b6412e52530608097e39d2602195629fDan Gohman                    const GURL& first_party_for_cookies,
1825af8f421b6412e52530608097e39d2602195629fDan Gohman                    IPC::Message* reply_msg);
183004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming  void OnSetCookie(const IPC::Message& message,
184004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming                   const GURL& url,
185004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming                   const GURL& first_party_for_cookies,
186004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming                   const std::string& cookie);
187004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming
188004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming  int render_process_id_;
189004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming
190004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming  // The Profile associated with our renderer process.  This should only be
191004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming  // accessed on the UI thread!
192004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming  Profile* profile_;
193004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming  // Copied from the profile so that it can be read on the IO thread.
194004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming  bool off_the_record_;
195004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming  scoped_refptr<net::URLRequestContextGetter> request_context_;
196004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming  scoped_refptr<ExtensionInfoMap> extension_info_map_;
197004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming  // Used to look up permissions at database creation time.
198004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming  scoped_refptr<CookieSettings> cookie_settings_;
199004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming
200004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming  base::WeakPtrFactory<ChromeRenderMessageFilter> weak_ptr_factory_;
201004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming
202004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming  DISALLOW_COPY_AND_ASSIGN(ChromeRenderMessageFilter);
203004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming};
204004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming
205004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming#endif  // CHROME_BROWSER_RENDERER_HOST_CHROME_RENDER_MESSAGE_FILTER_H_
206004c82ad7c0d2da761726f063373c28ffd18e66dMatt Fleming