summaryrefslogtreecommitdiffstats
path: root/src/core/renderer
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-09-10 11:36:08 +0200
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-10-28 10:19:33 +0000
commit8af33b19f8f24f49a0ca8ef5c8097757103e5253 (patch)
treee0786009a2dc4d75d728b3fc0ce9bf1600c0dbf9 /src/core/renderer
parentfd73b33893e0acb22c6082a1754b01bf9f5c436e (diff)
Use web_cache component
Use the web_cache component which monitors and adjusts the web cache, so that the memory use is limited across multiple renderer processes. Change-Id: I9faa060d48f99a3c527fe0e0963bbe86db4b502c Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com> Reviewed-by: Michael BrĂ¼ning <michael.bruning@theqtcompany.com>
Diffstat (limited to 'src/core/renderer')
-rw-r--r--src/core/renderer/content_renderer_client_qt.cpp5
-rw-r--r--src/core/renderer/content_renderer_client_qt.h5
-rw-r--r--src/core/renderer/qt_render_view_observer.cpp12
-rw-r--r--src/core/renderer/qt_render_view_observer.h10
4 files changed, 29 insertions, 3 deletions
diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp
index 72ca29be9..e281cbc95 100644
--- a/src/core/renderer/content_renderer_client_qt.cpp
+++ b/src/core/renderer/content_renderer_client_qt.cpp
@@ -40,6 +40,7 @@
#include "chrome/common/localized_error.h"
#include "components/error_page/common/error_page_params.h"
#include "components/visitedlink/renderer/visitedlink_slave.h"
+#include "components/web_cache/renderer/web_cache_render_process_observer.h"
#include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_thread.h"
#include "content/public/renderer/render_view.h"
@@ -77,7 +78,9 @@ void ContentRendererClientQt::RenderThreadStarted()
content::RenderThread *renderThread = content::RenderThread::Get();
renderThread->RegisterExtension(WebChannelIPCTransport::getV8Extension());
m_visitedLinkSlave.reset(new visitedlink::VisitedLinkSlave);
+ m_webCacheObserver.reset(new web_cache::WebCacheRenderProcessObserver());
renderThread->AddObserver(m_visitedLinkSlave.data());
+ renderThread->AddObserver(m_webCacheObserver.data());
renderThread->AddObserver(UserScriptController::instance());
// mark qrc as a secure scheme (avoids deprecation warnings)
@@ -87,7 +90,7 @@ void ContentRendererClientQt::RenderThreadStarted()
void ContentRendererClientQt::RenderViewCreated(content::RenderView* render_view)
{
// RenderViewObservers destroy themselves with their RenderView.
- new QtRenderViewObserver(render_view);
+ new QtRenderViewObserver(render_view, m_webCacheObserver.data());
new WebChannelIPCTransport(render_view);
UserScriptController::instance()->renderViewCreated(render_view);
}
diff --git a/src/core/renderer/content_renderer_client_qt.h b/src/core/renderer/content_renderer_client_qt.h
index fab88441f..eb55156ad 100644
--- a/src/core/renderer/content_renderer_client_qt.h
+++ b/src/core/renderer/content_renderer_client_qt.h
@@ -45,6 +45,10 @@ namespace visitedlink {
class VisitedLinkSlave;
}
+namespace web_cache {
+class WebCacheRenderProcessObserver;
+}
+
namespace QtWebEngineCore {
class ContentRendererClientQt : public content::ContentRendererClient {
@@ -64,6 +68,7 @@ public:
private:
QScopedPointer<visitedlink::VisitedLinkSlave> m_visitedLinkSlave;
+ QScopedPointer<web_cache::WebCacheRenderProcessObserver> m_webCacheObserver;
};
} // namespace
diff --git a/src/core/renderer/qt_render_view_observer.cpp b/src/core/renderer/qt_render_view_observer.cpp
index ba91e54ae..086b07d17 100644
--- a/src/core/renderer/qt_render_view_observer.cpp
+++ b/src/core/renderer/qt_render_view_observer.cpp
@@ -38,14 +38,18 @@
#include "common/qt_messages.h"
+#include "components/web_cache/renderer/web_cache_render_process_observer.h"
#include "content/public/renderer/render_view.h"
#include "third_party/WebKit/public/web/WebDocument.h"
#include "third_party/WebKit/public/web/WebElement.h"
#include "third_party/WebKit/public/web/WebFrame.h"
#include "third_party/WebKit/public/web/WebView.h"
-QtRenderViewObserver::QtRenderViewObserver(content::RenderView* render_view)
+QtRenderViewObserver::QtRenderViewObserver(
+ content::RenderView* render_view,
+ web_cache::WebCacheRenderProcessObserver* web_cache_render_process_observer)
: content::RenderViewObserver(render_view)
+ , m_web_cache_render_process_observer(web_cache_render_process_observer)
{
}
@@ -86,3 +90,9 @@ bool QtRenderViewObserver::OnMessageReceived(const IPC::Message& message)
IPC_END_MESSAGE_MAP()
return handled;
}
+
+void QtRenderViewObserver::Navigate(const GURL &)
+{
+ if (m_web_cache_render_process_observer)
+ m_web_cache_render_process_observer->ExecutePendingClearCache();
+}
diff --git a/src/core/renderer/qt_render_view_observer.h b/src/core/renderer/qt_render_view_observer.h
index 3f7829a92..1ead53141 100644
--- a/src/core/renderer/qt_render_view_observer.h
+++ b/src/core/renderer/qt_render_view_observer.h
@@ -40,9 +40,14 @@
#include <QtGlobal>
+namespace web_cache {
+class WebCacheRenderProcessObserver;
+}
+
class QtRenderViewObserver : public content::RenderViewObserver {
public:
- QtRenderViewObserver(content::RenderView* render_view);
+ QtRenderViewObserver(content::RenderView* render_view,
+ web_cache::WebCacheRenderProcessObserver* web_cache_render_process_observer);
private:
void onFetchDocumentMarkup(quint64 requestId);
@@ -52,6 +57,9 @@ private:
void OnFirstVisuallyNonEmptyLayout() Q_DECL_OVERRIDE;
virtual bool OnMessageReceived(const IPC::Message& message) Q_DECL_OVERRIDE;
+ virtual void Navigate(const GURL& url) Q_DECL_OVERRIDE;
+
+ web_cache::WebCacheRenderProcessObserver* m_web_cache_render_process_observer;
DISALLOW_COPY_AND_ASSIGN(QtRenderViewObserver);
};