Home | History | Annotate | Download | only in renderer_host
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_RENDERER_HOST_CHROME_RENDER_MESSAGE_FILTER_H_
      6 #define CHROME_BROWSER_RENDERER_HOST_CHROME_RENDER_MESSAGE_FILTER_H_
      7 
      8 #include <string>
      9 #include <vector>
     10 
     11 #include "base/sequenced_task_runner_helpers.h"
     12 #include "content/public/browser/browser_message_filter.h"
     13 #include "third_party/WebKit/public/web/WebCache.h"
     14 
     15 class CookieSettings;
     16 class GURL;
     17 class Profile;
     18 
     19 namespace chrome_browser_net {
     20 class Predictor;
     21 }
     22 
     23 namespace extensions {
     24 class InfoMap;
     25 }
     26 
     27 // This class filters out incoming Chrome-specific IPC messages for the renderer
     28 // process on the IPC thread.
     29 class ChromeRenderMessageFilter : public content::BrowserMessageFilter {
     30  public:
     31   ChromeRenderMessageFilter(int render_process_id, Profile* profile);
     32 
     33   class V8HeapStatsDetails {
     34    public:
     35     V8HeapStatsDetails(size_t v8_memory_allocated,
     36                        size_t v8_memory_used)
     37         : v8_memory_allocated_(v8_memory_allocated),
     38           v8_memory_used_(v8_memory_used) {}
     39     size_t v8_memory_allocated() const { return v8_memory_allocated_; }
     40     size_t v8_memory_used() const { return v8_memory_used_; }
     41    private:
     42     size_t v8_memory_allocated_;
     43     size_t v8_memory_used_;
     44   };
     45 
     46   // content::BrowserMessageFilter methods:
     47   virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
     48   virtual void OverrideThreadForMessage(
     49       const IPC::Message& message,
     50       content::BrowserThread::ID* thread) OVERRIDE;
     51 
     52  private:
     53   friend class content::BrowserThread;
     54   friend class base::DeleteHelper<ChromeRenderMessageFilter>;
     55 
     56   virtual ~ChromeRenderMessageFilter();
     57 
     58   void OnDnsPrefetch(const std::vector<std::string>& hostnames);
     59   void OnPreconnect(const GURL& url);
     60   void OnResourceTypeStats(const blink::WebCache::ResourceTypeStats& stats);
     61   void OnUpdatedCacheStats(const blink::WebCache::UsageStats& stats);
     62   void OnV8HeapStats(int v8_memory_allocated, int v8_memory_used);
     63 
     64   void OnAllowDatabase(int render_frame_id,
     65                        const GURL& origin_url,
     66                        const GURL& top_origin_url,
     67                        const base::string16& name,
     68                        const base::string16& display_name,
     69                        bool* allowed);
     70   void OnAllowDOMStorage(int render_frame_id,
     71                          const GURL& origin_url,
     72                          const GURL& top_origin_url,
     73                          bool local,
     74                          bool* allowed);
     75   void OnRequestFileSystemAccessSync(int render_frame_id,
     76                                      const GURL& origin_url,
     77                                      const GURL& top_origin_url,
     78                                      IPC::Message* message);
     79   void OnRequestFileSystemAccessAsync(int render_frame_id,
     80                                       int request_id,
     81                                       const GURL& origin_url,
     82                                       const GURL& top_origin_url);
     83   void OnAllowIndexedDB(int render_frame_id,
     84                         const GURL& origin_url,
     85                         const GURL& top_origin_url,
     86                         const base::string16& name,
     87                         bool* allowed);
     88 #if defined(ENABLE_PLUGINS)
     89   void OnIsCrashReportingEnabled(bool* enabled);
     90 #endif
     91 
     92   const int render_process_id_;
     93 
     94   // The Profile associated with our renderer process.  This should only be
     95   // accessed on the UI thread!
     96   Profile* profile_;
     97   // The Predictor for the associated Profile. It is stored so that it can be
     98   // used on the IO thread.
     99   chrome_browser_net::Predictor* predictor_;
    100 
    101   // Used to look up permissions at database creation time.
    102   scoped_refptr<CookieSettings> cookie_settings_;
    103 
    104   DISALLOW_COPY_AND_ASSIGN(ChromeRenderMessageFilter);
    105 };
    106 
    107 #endif  // CHROME_BROWSER_RENDERER_HOST_CHROME_RENDER_MESSAGE_FILTER_H_
    108