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_RENDERER_CHROME_RENDER_PROCESS_OBSERVER_H_ 6 #define CHROME_RENDERER_CHROME_RENDER_PROCESS_OBSERVER_H_ 7 8 #include <string> 9 10 #include "base/compiler_specific.h" 11 #include "base/files/file_path.h" 12 #include "base/memory/scoped_ptr.h" 13 #include "components/content_settings/core/common/content_settings.h" 14 #include "content/public/renderer/render_process_observer.h" 15 16 class ChromeContentRendererClient; 17 class GURL; 18 struct ContentSettings; 19 20 namespace content { 21 class ResourceDispatcherDelegate; 22 } 23 24 // This class filters the incoming control messages (i.e. ones not destined for 25 // a RenderView) for Chrome specific messages that the content layer doesn't 26 // happen. If a few messages are related, they should probably have their own 27 // observer. 28 class ChromeRenderProcessObserver : public content::RenderProcessObserver { 29 public: 30 explicit ChromeRenderProcessObserver( 31 ChromeContentRendererClient* client); 32 virtual ~ChromeRenderProcessObserver(); 33 is_incognito_process()34 static bool is_incognito_process() { return is_incognito_process_; } 35 36 // Returns a pointer to the content setting rules owned by 37 // |ChromeRenderProcessObserver|. 38 const RendererContentSettingRules* content_setting_rules() const; 39 40 private: 41 // RenderProcessObserver implementation. 42 virtual bool OnControlMessageReceived(const IPC::Message& message) OVERRIDE; 43 virtual void WebKitInitialized() OVERRIDE; 44 virtual void OnRenderProcessShutdown() OVERRIDE; 45 46 void OnSetIsIncognitoProcess(bool is_incognito_process); 47 void OnSetContentSettingsForCurrentURL( 48 const GURL& url, const ContentSettings& content_settings); 49 void OnSetContentSettingRules(const RendererContentSettingRules& rules); 50 void OnGetCacheResourceStats(); 51 void OnSetFieldTrialGroup(const std::string& fiel_trial_name, 52 const std::string& group_name); 53 void OnGetV8HeapStats(); 54 55 static bool is_incognito_process_; 56 scoped_ptr<content::ResourceDispatcherDelegate> resource_delegate_; 57 ChromeContentRendererClient* client_; 58 // If true, the web cache shall be cleared before the next navigation event. 59 bool clear_cache_pending_; 60 RendererContentSettingRules content_setting_rules_; 61 62 bool webkit_initialized_; 63 64 DISALLOW_COPY_AND_ASSIGN(ChromeRenderProcessObserver); 65 }; 66 67 #endif // CHROME_RENDERER_CHROME_RENDER_PROCESS_OBSERVER_H_ 68