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