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

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: Remove 'anonymous'. Created 4 years, 7 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 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 252
253 private: 253 private:
254 // WebThreadImplForWorkerScheduler: 254 // WebThreadImplForWorkerScheduler:
255 std::unique_ptr<scheduler::WorkerScheduler> CreateWorkerScheduler() override { 255 std::unique_ptr<scheduler::WorkerScheduler> CreateWorkerScheduler() override {
256 return base::WrapUnique(new scheduler::CompositorWorkerScheduler(thread())); 256 return base::WrapUnique(new scheduler::CompositorWorkerScheduler(thread()));
257 } 257 }
258 258
259 DISALLOW_COPY_AND_ASSIGN(WebThreadForCompositor); 259 DISALLOW_COPY_AND_ASSIGN(WebThreadForCompositor);
260 }; 260 };
261 261
262 class RenderViewZoomer : public RenderViewVisitor {
263 public:
264 RenderViewZoomer(const std::string& scheme,
265 const std::string& host,
266 double zoom_level) : scheme_(scheme),
267 host_(host),
268 zoom_level_(zoom_level) {
269 }
270
271 bool Visit(RenderView* render_view) override {
272 WebView* webview = render_view->GetWebView();
273 RenderViewImpl* render_view_impl =
274 static_cast<RenderViewImpl*>(render_view);
275 // Remote frames don't host documents.
276 // TODO(wjmaclean) Although it seems likely that a frame without a
277 // document can safely early-out here, we should confirm this is truly
278 // the case. https://crbug.com/477007
279 if (webview->mainFrame()->isWebRemoteFrame())
280 return true;
281
282 WebDocument document = webview->mainFrame()->document();
283
284 // Don't set zoom level for full-page plugin since they don't use the same
285 // zoom settings.
286 if (document.isPluginDocument())
287 return true;
288 GURL url(document.url());
289 // Empty scheme works as wildcard that matches any scheme,
290 if ((net::GetHostOrSpecFromURL(url) == host_) &&
291 (scheme_.empty() || scheme_ == url.scheme()) &&
292 !render_view_impl->uses_temporary_zoom_level()) {
293 webview->hidePopups();
294 render_view_impl->SetZoomLevel(zoom_level_);
295 }
296 return true;
297 }
298
299 private:
300 const std::string scheme_;
301 const std::string host_;
302 const double zoom_level_;
303
304 DISALLOW_COPY_AND_ASSIGN(RenderViewZoomer);
305 };
306
307 void* CreateHistogram( 262 void* CreateHistogram(
308 const char *name, int min, int max, size_t buckets) { 263 const char *name, int min, int max, size_t buckets) {
309 if (min <= 0) 264 if (min <= 0)
310 min = 1; 265 min = 1;
311 std::string histogram_name; 266 std::string histogram_name;
312 RenderThreadImpl* render_thread_impl = RenderThreadImpl::current(); 267 RenderThreadImpl* render_thread_impl = RenderThreadImpl::current();
313 if (render_thread_impl) { // Can be null in tests. 268 if (render_thread_impl) { // Can be null in tests.
314 histogram_name = render_thread_impl-> 269 histogram_name = render_thread_impl->
315 histogram_customizer()->ConvertToCustomHistogramName(name); 270 histogram_customizer()->ConvertToCustomHistogramName(name);
316 } else { 271 } else {
(...skipping 1376 matching lines...) Expand 10 before | Expand all | Expand 10 after
1693 if (appcache_dispatcher_->OnMessageReceived(msg) || 1648 if (appcache_dispatcher_->OnMessageReceived(msg) ||
1694 dom_storage_dispatcher_->OnMessageReceived(msg) || 1649 dom_storage_dispatcher_->OnMessageReceived(msg) ||
1695 embedded_worker_dispatcher_->OnMessageReceived(msg)) { 1650 embedded_worker_dispatcher_->OnMessageReceived(msg)) {
1696 return true; 1651 return true;
1697 } 1652 }
1698 1653
1699 bool handled = true; 1654 bool handled = true;
1700 IPC_BEGIN_MESSAGE_MAP(RenderThreadImpl, msg) 1655 IPC_BEGIN_MESSAGE_MAP(RenderThreadImpl, msg)
1701 IPC_MESSAGE_HANDLER(FrameMsg_NewFrame, OnCreateNewFrame) 1656 IPC_MESSAGE_HANDLER(FrameMsg_NewFrame, OnCreateNewFrame)
1702 IPC_MESSAGE_HANDLER(FrameMsg_NewFrameProxy, OnCreateNewFrameProxy) 1657 IPC_MESSAGE_HANDLER(FrameMsg_NewFrameProxy, OnCreateNewFrameProxy)
1703 IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForCurrentURL,
1704 OnSetZoomLevelForCurrentURL)
1705 // TODO(port): removed from render_messages_internal.h; 1658 // TODO(port): removed from render_messages_internal.h;
1706 // is there a new non-windows message I should add here? 1659 // is there a new non-windows message I should add here?
1707 IPC_MESSAGE_HANDLER(ViewMsg_New, OnCreateNewView) 1660 IPC_MESSAGE_HANDLER(ViewMsg_New, OnCreateNewView)
1708 IPC_MESSAGE_HANDLER(ViewMsg_NetworkConnectionChanged, 1661 IPC_MESSAGE_HANDLER(ViewMsg_NetworkConnectionChanged,
1709 OnNetworkConnectionChanged) 1662 OnNetworkConnectionChanged)
1710 IPC_MESSAGE_HANDLER(WorkerProcessMsg_CreateWorker, OnCreateNewSharedWorker) 1663 IPC_MESSAGE_HANDLER(WorkerProcessMsg_CreateWorker, OnCreateNewSharedWorker)
1711 IPC_MESSAGE_HANDLER(ViewMsg_TimezoneChange, OnUpdateTimezone) 1664 IPC_MESSAGE_HANDLER(ViewMsg_TimezoneChange, OnUpdateTimezone)
1712 #if defined(OS_ANDROID) 1665 #if defined(OS_ANDROID)
1713 IPC_MESSAGE_HANDLER(ViewMsg_SetWebKitSharedTimersSuspended, 1666 IPC_MESSAGE_HANDLER(ViewMsg_SetWebKitSharedTimersSuspended,
1714 OnSetWebKitSharedTimersSuspended) 1667 OnSetWebKitSharedTimersSuspended)
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1756 base::IntToString(render_view_routing_id)); 1709 base::IntToString(render_view_routing_id));
1757 base::debug::SetCrashKeyValue("newproxy_opener_id", 1710 base::debug::SetCrashKeyValue("newproxy_opener_id",
1758 base::IntToString(opener_routing_id)); 1711 base::IntToString(opener_routing_id));
1759 base::debug::SetCrashKeyValue("newproxy_parent_id", 1712 base::debug::SetCrashKeyValue("newproxy_parent_id",
1760 base::IntToString(parent_routing_id)); 1713 base::IntToString(parent_routing_id));
1761 RenderFrameProxy::CreateFrameProxy(routing_id, render_view_routing_id, 1714 RenderFrameProxy::CreateFrameProxy(routing_id, render_view_routing_id,
1762 opener_routing_id, parent_routing_id, 1715 opener_routing_id, parent_routing_id,
1763 replicated_state); 1716 replicated_state);
1764 } 1717 }
1765 1718
1766 void RenderThreadImpl::OnSetZoomLevelForCurrentURL(const std::string& scheme,
1767 const std::string& host,
1768 double zoom_level) {
1769 RenderViewZoomer zoomer(scheme, host, zoom_level);
1770 RenderView::ForEach(&zoomer);
1771 }
1772
1773 void RenderThreadImpl::OnCreateNewView(const ViewMsg_New_Params& params) { 1719 void RenderThreadImpl::OnCreateNewView(const ViewMsg_New_Params& params) {
1774 CompositorDependencies* compositor_deps = this; 1720 CompositorDependencies* compositor_deps = this;
1775 // When bringing in render_view, also bring in webkit's glue and jsbindings. 1721 // When bringing in render_view, also bring in webkit's glue and jsbindings.
1776 RenderViewImpl::Create(compositor_deps, params, false); 1722 RenderViewImpl::Create(compositor_deps, params, false);
1777 } 1723 }
1778 1724
1779 gpu::GpuChannelHost* RenderThreadImpl::EstablishGpuChannelSync( 1725 gpu::GpuChannelHost* RenderThreadImpl::EstablishGpuChannelSync(
1780 CauseForGpuLaunch cause_for_gpu_launch) { 1726 CauseForGpuLaunch cause_for_gpu_launch) {
1781 TRACE_EVENT0("gpu", "RenderThreadImpl::EstablishGpuChannelSync"); 1727 TRACE_EVENT0("gpu", "RenderThreadImpl::EstablishGpuChannelSync");
1782 1728
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
2105 } 2051 }
2106 2052
2107 void RenderThreadImpl::PendingRenderFrameConnect::OnConnectionError() { 2053 void RenderThreadImpl::PendingRenderFrameConnect::OnConnectionError() {
2108 size_t erased = 2054 size_t erased =
2109 RenderThreadImpl::current()->pending_render_frame_connects_.erase( 2055 RenderThreadImpl::current()->pending_render_frame_connects_.erase(
2110 routing_id_); 2056 routing_id_);
2111 DCHECK_EQ(1u, erased); 2057 DCHECK_EQ(1u, erased);
2112 } 2058 }
2113 2059
2114 } // namespace content 2060 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698