// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_WEB_CACHE_RENDERER_WEB_CACHE_RENDER_PROCESS_OBSERVER_H_ #define COMPONENTS_WEB_CACHE_RENDERER_WEB_CACHE_RENDER_PROCESS_OBSERVER_H_ #include "base/compiler_specific.h" #include "base/macros.h" #include "content/public/renderer/render_process_observer.h" namespace web_cache { // This class filters the incoming cache related control messages. class WebCacheRenderProcessObserver : public content::RenderProcessObserver { public: WebCacheRenderProcessObserver(); ~WebCacheRenderProcessObserver() override; // Needs to be called by RenderViews in case of navigations to execute // any 'clear cache' commands that were delayed until the next navigation. void ExecutePendingClearCache(); private: // RenderProcessObserver implementation. bool OnControlMessageReceived(const IPC::Message& message) override; void WebKitInitialized() override; void OnRenderProcessShutdown() override; // Message handlers. void OnSetCacheCapacities(size_t min_dead_capacity, size_t max_dead_capacity, size_t capacity); // If |on_navigation| is true, the clearing is delayed until the next // navigation event. void OnClearCache(bool on_navigation); // If true, the web cache shall be cleared before the next navigation event. bool clear_cache_pending_; bool webkit_initialized_; size_t pending_cache_min_dead_capacity_; size_t pending_cache_max_dead_capacity_; size_t pending_cache_capacity_; DISALLOW_COPY_AND_ASSIGN(WebCacheRenderProcessObserver); }; } // namespace web_cache #endif // COMPONENTS_WEB_CACHE_RENDERER_WEB_CACHE_RENDER_PROCESS_OBSERVER_H_