Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5650)

Unified Diff: chrome/renderer/chrome_content_renderer_client.cc

Issue 7222023: Forward handling of low-mem message to the content renderer client. Add APIs to handle this case. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Fix constructor Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/chrome_content_renderer_client.cc
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index ee7db8e0a72e4b8a568906070be85010264247f5..458202c702eb2ac51216518c144b6fcd10e8c9ed 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -20,6 +20,9 @@
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/extension_set.h"
#include "chrome/common/jstemplate_builder.h"
+#include "content/common/notification_details.h"
+#include "content/common/notification_service.h"
+#include "content/common/notification_source.h"
#include "chrome/common/render_messages.h"
#include "chrome/common/url_constants.h"
#include "chrome/renderer/autofill/autofill_agent.h"
@@ -204,6 +207,9 @@ void ChromeContentRendererClient::RenderThreadStarted() {
// chrome-extension: resources shouldn't trigger insecure content warnings.
WebString extension_scheme(ASCIIToUTF16(chrome::kExtensionScheme));
WebSecurityPolicy::registerURLSchemeAsSecure(extension_scheme);
+
+ // Get updates when we need to purge memory.
+ registrar_.Add(this, content::NOTIFICATION_PURGE_MEMORY, Source<void>(NULL));
}
void ChromeContentRendererClient::RenderViewCreated(RenderView* render_view) {
@@ -214,7 +220,8 @@ void ChromeContentRendererClient::RenderViewCreated(RenderView* render_view) {
new PageLoadHistograms(render_view, histogram_snapshots_.get());
new PrintWebViewHelper(render_view);
new SearchBox(render_view);
- new SpellCheckProvider(render_view, spellcheck_.get());
+ spellcheck_provider_.reset(new SpellCheckProvider(render_view,
+ spellcheck_.get()));
#if defined(ENABLE_SAFE_BROWSING)
safe_browsing::MalwareDOMDetails::Create(render_view);
#endif
@@ -624,4 +631,22 @@ bool ChromeContentRendererClient::CrossesExtensionExtents(WebFrame* frame,
return !extensions->InSameExtent(old_url, new_url);
}
+void ChromeContentRendererClient::Observe(int type,
+ const NotificationSource& source,
+ const NotificationDetails& details) {
+ if (type == content::NOTIFICATION_PURGE_MEMORY)
+ ResetSpellCheck();
+}
+
+void ChromeContentRendererClient::ResetSpellCheck() {
+ LOG(INFO) << "Resetting spellcheck in renderer client";
+ RenderThread* thread = RenderThread::current();
+ if (spellcheck_.get())
+ thread->RemoveObserver(spellcheck_.get());
+ spellcheck_.reset(new SpellCheck());
+ thread->AddObserver(spellcheck_.get());
+ if (spellcheck_provider_.get())
+ spellcheck_provider_->SetSpellCheck(spellcheck_.get());
+}
+
} // namespace chrome

Powered by Google App Engine
This is Rietveld 408576698