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

Side by Side Diff: content/renderer/render_thread_impl.cc

Issue 1804023002: Fix page zoom to be frame-centric for out-of-process frames. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Convert to use PageMsg instead of FrameMsg. Created 4 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/render_thread_impl.h" 5 #include "content/renderer/render_thread_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <map> 9 #include <map>
10 #include <utility> 10 #include <utility>
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 259
260 private: 260 private:
261 // WebThreadImplForWorkerScheduler: 261 // WebThreadImplForWorkerScheduler:
262 scoped_ptr<scheduler::WorkerScheduler> CreateWorkerScheduler() override { 262 scoped_ptr<scheduler::WorkerScheduler> CreateWorkerScheduler() override {
263 return make_scoped_ptr(new scheduler::CompositorWorkerScheduler(thread())); 263 return make_scoped_ptr(new scheduler::CompositorWorkerScheduler(thread()));
264 } 264 }
265 265
266 DISALLOW_COPY_AND_ASSIGN(WebThreadForCompositor); 266 DISALLOW_COPY_AND_ASSIGN(WebThreadForCompositor);
267 }; 267 };
268 268
269 class RenderViewZoomer : public RenderViewVisitor {
270 public:
271 RenderViewZoomer(const std::string& scheme,
272 const std::string& host,
273 double zoom_level) : scheme_(scheme),
274 host_(host),
275 zoom_level_(zoom_level) {
276 }
277
278 bool Visit(RenderView* render_view) override {
279 WebView* webview = render_view->GetWebView();
280 RenderViewImpl* render_view_impl =
281 static_cast<RenderViewImpl*>(render_view);
282 // Remote frames don't host documents.
283 // TODO(wjmaclean) Although it seems likely that a frame without a
284 // document can safely early-out here, we should confirm this is truly
285 // the case. https://crbug.com/477007
286 if (webview->mainFrame()->isWebRemoteFrame())
287 return true;
288
289 WebDocument document = webview->mainFrame()->document();
290
291 // Don't set zoom level for full-page plugin since they don't use the same
292 // zoom settings.
293 if (document.isPluginDocument())
294 return true;
295 GURL url(document.url());
296 // Empty scheme works as wildcard that matches any scheme,
297 if ((net::GetHostOrSpecFromURL(url) == host_) &&
298 (scheme_.empty() || scheme_ == url.scheme()) &&
299 !render_view_impl->uses_temporary_zoom_level()) {
300 webview->hidePopups();
301 render_view_impl->SetZoomLevel(zoom_level_);
302 }
303 return true;
304 }
305
306 private:
307 const std::string scheme_;
308 const std::string host_;
309 const double zoom_level_;
310
311 DISALLOW_COPY_AND_ASSIGN(RenderViewZoomer);
312 };
313
314 void* CreateHistogram( 269 void* CreateHistogram(
315 const char *name, int min, int max, size_t buckets) { 270 const char *name, int min, int max, size_t buckets) {
316 if (min <= 0) 271 if (min <= 0)
317 min = 1; 272 min = 1;
318 std::string histogram_name; 273 std::string histogram_name;
319 RenderThreadImpl* render_thread_impl = RenderThreadImpl::current(); 274 RenderThreadImpl* render_thread_impl = RenderThreadImpl::current();
320 if (render_thread_impl) { // Can be null in tests. 275 if (render_thread_impl) { // Can be null in tests.
321 histogram_name = render_thread_impl-> 276 histogram_name = render_thread_impl->
322 histogram_customizer()->ConvertToCustomHistogramName(name); 277 histogram_customizer()->ConvertToCustomHistogramName(name);
323 } else { 278 } else {
(...skipping 1444 matching lines...) Expand 10 before | Expand all | Expand 10 after
1768 if (appcache_dispatcher_->OnMessageReceived(msg) || 1723 if (appcache_dispatcher_->OnMessageReceived(msg) ||
1769 dom_storage_dispatcher_->OnMessageReceived(msg) || 1724 dom_storage_dispatcher_->OnMessageReceived(msg) ||
1770 embedded_worker_dispatcher_->OnMessageReceived(msg)) { 1725 embedded_worker_dispatcher_->OnMessageReceived(msg)) {
1771 return true; 1726 return true;
1772 } 1727 }
1773 1728
1774 bool handled = true; 1729 bool handled = true;
1775 IPC_BEGIN_MESSAGE_MAP(RenderThreadImpl, msg) 1730 IPC_BEGIN_MESSAGE_MAP(RenderThreadImpl, msg)
1776 IPC_MESSAGE_HANDLER(FrameMsg_NewFrame, OnCreateNewFrame) 1731 IPC_MESSAGE_HANDLER(FrameMsg_NewFrame, OnCreateNewFrame)
1777 IPC_MESSAGE_HANDLER(FrameMsg_NewFrameProxy, OnCreateNewFrameProxy) 1732 IPC_MESSAGE_HANDLER(FrameMsg_NewFrameProxy, OnCreateNewFrameProxy)
1778 IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForCurrentURL,
1779 OnSetZoomLevelForCurrentURL)
1780 // TODO(port): removed from render_messages_internal.h; 1733 // TODO(port): removed from render_messages_internal.h;
1781 // is there a new non-windows message I should add here? 1734 // is there a new non-windows message I should add here?
1782 IPC_MESSAGE_HANDLER(ViewMsg_New, OnCreateNewView) 1735 IPC_MESSAGE_HANDLER(ViewMsg_New, OnCreateNewView)
1783 IPC_MESSAGE_HANDLER(ViewMsg_NetworkConnectionChanged, 1736 IPC_MESSAGE_HANDLER(ViewMsg_NetworkConnectionChanged,
1784 OnNetworkConnectionChanged) 1737 OnNetworkConnectionChanged)
1785 IPC_MESSAGE_HANDLER(WorkerProcessMsg_CreateWorker, OnCreateNewSharedWorker) 1738 IPC_MESSAGE_HANDLER(WorkerProcessMsg_CreateWorker, OnCreateNewSharedWorker)
1786 IPC_MESSAGE_HANDLER(ViewMsg_TimezoneChange, OnUpdateTimezone) 1739 IPC_MESSAGE_HANDLER(ViewMsg_TimezoneChange, OnUpdateTimezone)
1787 #if defined(OS_ANDROID) 1740 #if defined(OS_ANDROID)
1788 IPC_MESSAGE_HANDLER(ViewMsg_SetWebKitSharedTimersSuspended, 1741 IPC_MESSAGE_HANDLER(ViewMsg_SetWebKitSharedTimersSuspended,
1789 OnSetWebKitSharedTimersSuspended) 1742 OnSetWebKitSharedTimersSuspended)
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1831 base::IntToString(render_view_routing_id)); 1784 base::IntToString(render_view_routing_id));
1832 base::debug::SetCrashKeyValue("newproxy_opener_id", 1785 base::debug::SetCrashKeyValue("newproxy_opener_id",
1833 base::IntToString(opener_routing_id)); 1786 base::IntToString(opener_routing_id));
1834 base::debug::SetCrashKeyValue("newproxy_parent_id", 1787 base::debug::SetCrashKeyValue("newproxy_parent_id",
1835 base::IntToString(parent_routing_id)); 1788 base::IntToString(parent_routing_id));
1836 RenderFrameProxy::CreateFrameProxy(routing_id, render_view_routing_id, 1789 RenderFrameProxy::CreateFrameProxy(routing_id, render_view_routing_id,
1837 opener_routing_id, parent_routing_id, 1790 opener_routing_id, parent_routing_id,
1838 replicated_state); 1791 replicated_state);
1839 } 1792 }
1840 1793
1841 void RenderThreadImpl::OnSetZoomLevelForCurrentURL(const std::string& scheme,
1842 const std::string& host,
1843 double zoom_level) {
1844 RenderViewZoomer zoomer(scheme, host, zoom_level);
1845 RenderView::ForEach(&zoomer);
1846 }
1847
1848 void RenderThreadImpl::OnCreateNewView(const ViewMsg_New_Params& params) { 1794 void RenderThreadImpl::OnCreateNewView(const ViewMsg_New_Params& params) {
1849 CompositorDependencies* compositor_deps = this; 1795 CompositorDependencies* compositor_deps = this;
1850 // When bringing in render_view, also bring in webkit's glue and jsbindings. 1796 // When bringing in render_view, also bring in webkit's glue and jsbindings.
1851 RenderViewImpl::Create(compositor_deps, params, false); 1797 RenderViewImpl::Create(compositor_deps, params, false);
1852 } 1798 }
1853 1799
1854 gpu::GpuChannelHost* RenderThreadImpl::EstablishGpuChannelSync( 1800 gpu::GpuChannelHost* RenderThreadImpl::EstablishGpuChannelSync(
1855 CauseForGpuLaunch cause_for_gpu_launch) { 1801 CauseForGpuLaunch cause_for_gpu_launch) {
1856 TRACE_EVENT0("gpu", "RenderThreadImpl::EstablishGpuChannelSync"); 1802 TRACE_EVENT0("gpu", "RenderThreadImpl::EstablishGpuChannelSync");
1857 1803
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
2174 } 2120 }
2175 2121
2176 void RenderThreadImpl::PendingRenderFrameConnect::OnConnectionError() { 2122 void RenderThreadImpl::PendingRenderFrameConnect::OnConnectionError() {
2177 size_t erased = 2123 size_t erased =
2178 RenderThreadImpl::current()->pending_render_frame_connects_.erase( 2124 RenderThreadImpl::current()->pending_render_frame_connects_.erase(
2179 routing_id_); 2125 routing_id_);
2180 DCHECK_EQ(1u, erased); 2126 DCHECK_EQ(1u, erased);
2181 } 2127 }
2182 2128
2183 } // namespace content 2129 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698