diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2015-09-28 18:37:14 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2015-09-29 07:47:06 +0000 |
commit | 0e8ff63a407fe323e215bb1a2c423c09a4747c8a (patch) | |
tree | e27e357e125d2d705bd504e1e3c8a3da1ed20f1d /chromium/components/web_cache/renderer | |
parent | c3d0bb5bb15d008606b18b865841e19cd9bb5847 (diff) | |
download | qtwebengine-chromium-upstream-45.tar.gz |
BASELINE: Update chromium to 45.0.2454.101upstream-45
Also adds web_cache component
Change-Id: I51238ceea8ee99854cc4989ae70a4fc2fc6bedcb
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Diffstat (limited to 'chromium/components/web_cache/renderer')
4 files changed, 156 insertions, 0 deletions
diff --git a/chromium/components/web_cache/renderer/BUILD.gn b/chromium/components/web_cache/renderer/BUILD.gn new file mode 100644 index 00000000000..cdd703a8145 --- /dev/null +++ b/chromium/components/web_cache/renderer/BUILD.gn @@ -0,0 +1,17 @@ +# 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. + +static_library("renderer") { + output_name = "web_cache_renderer" + sources = [ + "web_cache_render_process_observer.cc", + "web_cache_render_process_observer.h", + ] + + deps = [ + "//components/web_cache/common", + "//content/public/renderer", + "//third_party/WebKit/public:blink", + ] +} diff --git a/chromium/components/web_cache/renderer/DEPS b/chromium/components/web_cache/renderer/DEPS new file mode 100644 index 00000000000..100b3d3a109 --- /dev/null +++ b/chromium/components/web_cache/renderer/DEPS @@ -0,0 +1,4 @@ +include_rules = [ + "+content/public/renderer", + "+third_party/WebKit/public/web", +] diff --git a/chromium/components/web_cache/renderer/web_cache_render_process_observer.cc b/chromium/components/web_cache/renderer/web_cache_render_process_observer.cc new file mode 100644 index 00000000000..a273817a2c0 --- /dev/null +++ b/chromium/components/web_cache/renderer/web_cache_render_process_observer.cc @@ -0,0 +1,84 @@ +// 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. + +#include "components/web_cache/renderer/web_cache_render_process_observer.h" + +#include <limits> + +#include "components/web_cache/common/web_cache_messages.h" +#include "third_party/WebKit/public/web/WebCache.h" + +using blink::WebCache; + +namespace web_cache { + +namespace { +const size_t kUnitializedCacheCapacity = UINT_MAX; +} + +WebCacheRenderProcessObserver::WebCacheRenderProcessObserver() + : clear_cache_pending_(false), + webkit_initialized_(false), + pending_cache_min_dead_capacity_(0), + pending_cache_max_dead_capacity_(0), + pending_cache_capacity_(kUnitializedCacheCapacity) { +} + +WebCacheRenderProcessObserver::~WebCacheRenderProcessObserver() { +} + +void WebCacheRenderProcessObserver::ExecutePendingClearCache() { + if (clear_cache_pending_ && webkit_initialized_) { + clear_cache_pending_ = false; + WebCache::clear(); + } +} + +bool WebCacheRenderProcessObserver::OnControlMessageReceived( + const IPC::Message& message) { + bool handled = true; + IPC_BEGIN_MESSAGE_MAP(WebCacheRenderProcessObserver, message) + IPC_MESSAGE_HANDLER(WebCacheMsg_SetCacheCapacities, OnSetCacheCapacities) + IPC_MESSAGE_HANDLER(WebCacheMsg_ClearCache, OnClearCache) + IPC_MESSAGE_UNHANDLED(handled = false) + IPC_END_MESSAGE_MAP() + return handled; +} + +void WebCacheRenderProcessObserver::WebKitInitialized() { + webkit_initialized_ = true; + if (pending_cache_capacity_ != kUnitializedCacheCapacity) { + WebCache::setCapacities(pending_cache_min_dead_capacity_, + pending_cache_max_dead_capacity_, + pending_cache_capacity_); + } +} + +void WebCacheRenderProcessObserver::OnRenderProcessShutdown() { + webkit_initialized_ = false; +} + +void WebCacheRenderProcessObserver::OnSetCacheCapacities( + size_t min_dead_capacity, + size_t max_dead_capacity, + size_t capacity) { + if (!webkit_initialized_) { + pending_cache_min_dead_capacity_ = min_dead_capacity; + pending_cache_max_dead_capacity_ = max_dead_capacity; + pending_cache_capacity_ = capacity; + return; + } + + WebCache::setCapacities( + min_dead_capacity, max_dead_capacity, capacity); +} + +void WebCacheRenderProcessObserver::OnClearCache(bool on_navigation) { + if (on_navigation || !webkit_initialized_) + clear_cache_pending_ = true; + else + WebCache::clear(); +} + +} // namespace web_cache diff --git a/chromium/components/web_cache/renderer/web_cache_render_process_observer.h b/chromium/components/web_cache/renderer/web_cache_render_process_observer.h new file mode 100644 index 00000000000..06ffc53319c --- /dev/null +++ b/chromium/components/web_cache/renderer/web_cache_render_process_observer.h @@ -0,0 +1,51 @@ +// 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_ + |