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

Unified Diff: chrome/renderer/render_thread.cc

Issue 437077: Remember zoom on a per-host basis.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years 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
« no previous file with comments | « chrome/renderer/render_thread.h ('k') | chrome/renderer/render_view.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/render_thread.cc
===================================================================
--- chrome/renderer/render_thread.cc (revision 33695)
+++ chrome/renderer/render_thread.cc (working copy)
@@ -50,6 +50,7 @@
#include "chrome/renderer/net/render_dns_master.h"
#include "chrome/renderer/render_process.h"
#include "chrome/renderer/render_view.h"
+#include "chrome/renderer/render_view_visitor.h"
#include "chrome/renderer/renderer_webkitclient_impl.h"
#include "chrome/renderer/renderer_web_database_observer.h"
#include "chrome/renderer/socket_stream_dispatcher.h"
@@ -63,6 +64,7 @@
#include "third_party/WebKit/WebKit/chromium/public/WebCrossOriginPreflightResultCache.h"
#include "third_party/WebKit/WebKit/chromium/public/WebDatabase.h"
#include "third_party/WebKit/WebKit/chromium/public/WebFontCache.h"
+#include "third_party/WebKit/WebKit/chromium/public/WebFrame.h"
#include "third_party/WebKit/WebKit/chromium/public/WebKit.h"
#include "third_party/WebKit/WebKit/chromium/public/WebRuntimeFeatures.h"
#include "third_party/WebKit/WebKit/chromium/public/WebScriptController.h"
@@ -117,6 +119,27 @@
}
};
#endif
+
+class RenderViewZoomer : public RenderViewVisitor {
+ public:
+ RenderViewZoomer(const std::string& host, int zoom_level)
+ : host_(host),
+ zoom_level_(zoom_level) {
+ }
+
+ virtual bool Visit(RenderView* render_view) {
+ WebView* webview = render_view->webview(); // Guaranteed non-NULL.
+ if (GURL(webview->mainFrame()->url()).host() == host_)
+ webview->setZoomLevel(false, zoom_level_);
+ return true;
+ }
+
+ private:
+ std::string host_;
+ int zoom_level_;
+
+ DISALLOW_COPY_AND_ASSIGN(RenderViewZoomer);
+};
} // namespace
// When we run plugins in process, we actually run them on the render thread,
@@ -243,6 +266,12 @@
WebView::resetVisitedLinkState();
}
+void RenderThread::OnSetZoomLevelForCurrentHost(const std::string& host,
+ int zoom_level) {
+ RenderViewZoomer zoomer(host, zoom_level);
+ RenderView::ForEach(&zoomer);
+}
+
void RenderThread::OnUpdateUserScripts(
base::SharedMemoryHandle scripts) {
DCHECK(base::SharedMemory::IsHandleValid(scripts)) << "Bad scripts handle";
@@ -297,6 +326,8 @@
IPC_MESSAGE_HANDLER(ViewMsg_VisitedLink_NewTable, OnUpdateVisitedLinks)
IPC_MESSAGE_HANDLER(ViewMsg_VisitedLink_Add, OnAddVisitedLinks)
IPC_MESSAGE_HANDLER(ViewMsg_VisitedLink_Reset, OnResetVisitedLinks)
+ IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForCurrentHost,
+ OnSetZoomLevelForCurrentHost)
IPC_MESSAGE_HANDLER(ViewMsg_SetNextPageID, OnSetNextPageID)
IPC_MESSAGE_HANDLER(ViewMsg_SetCSSColors, OnSetCSSColors)
// TODO(port): removed from render_messages_internal.h;
« no previous file with comments | « chrome/renderer/render_thread.h ('k') | chrome/renderer/render_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698