| 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;
|
|
|