summaryrefslogtreecommitdiffstats
path: root/src/core
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
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')
-rw-r--r--src/core/qtwebengine.gypi2
-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
-rw-r--r--src/core/web_contents_delegate_qt.cpp7
-rw-r--r--src/core/web_contents_delegate_qt.h1
7 files changed, 39 insertions, 3 deletions
diff --git a/src/core/qtwebengine.gypi b/src/core/qtwebengine.gypi
index a420918a0..96b48e2ca 100644
--- a/src/core/qtwebengine.gypi
+++ b/src/core/qtwebengine.gypi
@@ -13,6 +13,8 @@
'<(chromium_src_dir)/components/components.gyp:error_page_renderer',
'<(chromium_src_dir)/components/components.gyp:visitedlink_browser',
'<(chromium_src_dir)/components/components.gyp:visitedlink_renderer',
+ '<(chromium_src_dir)/components/components.gyp:web_cache_browser',
+ '<(chromium_src_dir)/components/components.gyp:web_cache_renderer',
'<(chromium_src_dir)/content/content.gyp:content',
'<(chromium_src_dir)/content/content.gyp:content_app_browser',
'<(chromium_src_dir)/content/content.gyp:content_browser',
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);
};
diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp
index 1f789161a..1897664e3 100644
--- a/src/core/web_contents_delegate_qt.cpp
+++ b/src/core/web_contents_delegate_qt.cpp
@@ -51,12 +51,14 @@
#include "web_engine_settings.h"
#include "web_engine_visited_links_manager.h"
+#include "components/web_cache/browser/web_cache_manager.h"
#include "content/browser/renderer_host/render_widget_host_impl.h"
#include "content/public/browser/favicon_status.h"
#include "content/public/browser/invalidate_type.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/render_frame_host.h"
+#include "content/public/browser/render_process_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/favicon_url.h"
#include "content/public/common/file_chooser_params.h"
@@ -315,6 +317,11 @@ void WebContentsDelegateQt::DidNavigateAnyFrame(content::RenderFrameHost* render
m_viewClient->browserContextAdapter()->visitedLinksManager()->addUrl(params.url);
}
+void WebContentsDelegateQt::WasShown()
+{
+ web_cache::WebCacheManager::GetInstance()->ObserveActivity(web_contents()->GetRenderProcessHost()->GetID());
+}
+
void WebContentsDelegateQt::RequestToLockMouse(content::WebContents *web_contents, bool user_gesture, bool last_unlocked_by_target)
{
Q_UNUSED(user_gesture);
diff --git a/src/core/web_contents_delegate_qt.h b/src/core/web_contents_delegate_qt.h
index abdf75fe5..8f1317b6d 100644
--- a/src/core/web_contents_delegate_qt.h
+++ b/src/core/web_contents_delegate_qt.h
@@ -104,6 +104,7 @@ public:
virtual void DidFinishLoad(content::RenderFrameHost *render_frame_host, const GURL &validated_url) Q_DECL_OVERRIDE;
virtual void DidUpdateFaviconURL(const std::vector<content::FaviconURL> &candidates) Q_DECL_OVERRIDE;
virtual void DidNavigateAnyFrame(content::RenderFrameHost *render_frame_host, const content::LoadCommittedDetails &details, const content::FrameNavigateParams &params) Q_DECL_OVERRIDE;
+ virtual void WasShown() Q_DECL_OVERRIDE;
void overrideWebPreferences(content::WebContents *, content::WebPreferences*);
void allowCertificateError(const QSharedPointer<CertificateErrorController> &) ;