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

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: Rebase to master@{#386187}. 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 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 251
252 private: 252 private:
253 // WebThreadImplForWorkerScheduler: 253 // WebThreadImplForWorkerScheduler:
254 scoped_ptr<scheduler::WorkerScheduler> CreateWorkerScheduler() override { 254 scoped_ptr<scheduler::WorkerScheduler> CreateWorkerScheduler() override {
255 return make_scoped_ptr(new scheduler::CompositorWorkerScheduler(thread())); 255 return make_scoped_ptr(new scheduler::CompositorWorkerScheduler(thread()));
256 } 256 }
257 257
258 DISALLOW_COPY_AND_ASSIGN(WebThreadForCompositor); 258 DISALLOW_COPY_AND_ASSIGN(WebThreadForCompositor);
259 }; 259 };
260 260
261 class RenderViewZoomer : public RenderViewVisitor {
262 public:
263 RenderViewZoomer(const std::string& scheme,
264 const std::string& host,
265 double zoom_level) : scheme_(scheme),
266 host_(host),
267 zoom_level_(zoom_level) {
268 }
269
270 bool Visit(RenderView* render_view) override {
271 WebView* webview = render_view->GetWebView();
272 RenderViewImpl* render_view_impl =
273 static_cast<RenderViewImpl*>(render_view);
274 // Remote frames don't host documents.
275 // TODO(wjmaclean) Although it seems likely that a frame without a
276 // document can safely early-out here, we should confirm this is truly
277 // the case. https://crbug.com/477007
278 if (webview->mainFrame()->isWebRemoteFrame())
279 return true;
280
281 WebDocument document = webview->mainFrame()->document();
282
283 // Don't set zoom level for full-page plugin since they don't use the same
284 // zoom settings.
285 if (document.isPluginDocument())
286 return true;
287 GURL url(document.url());
288 // Empty scheme works as wildcard that matches any scheme,
289 if ((net::GetHostOrSpecFromURL(url) == host_) &&
290 (scheme_.empty() || scheme_ == url.scheme()) &&
291 !render_view_impl->uses_temporary_zoom_level()) {
292 webview->hidePopups();
293 render_view_impl->SetZoomLevel(zoom_level_);
294 }
295 return true;
296 }
297
298 private:
299 const std::string scheme_;
300 const std::string host_;
301 const double zoom_level_;
302
303 DISALLOW_COPY_AND_ASSIGN(RenderViewZoomer);
304 };
305
306 void* CreateHistogram( 261 void* CreateHistogram(
307 const char *name, int min, int max, size_t buckets) { 262 const char *name, int min, int max, size_t buckets) {
308 if (min <= 0) 263 if (min <= 0)
309 min = 1; 264 min = 1;
310 std::string histogram_name; 265 std::string histogram_name;
311 RenderThreadImpl* render_thread_impl = RenderThreadImpl::current(); 266 RenderThreadImpl* render_thread_impl = RenderThreadImpl::current();
312 if (render_thread_impl) { // Can be null in tests. 267 if (render_thread_impl) { // Can be null in tests.
313 histogram_name = render_thread_impl-> 268 histogram_name = render_thread_impl->
314 histogram_customizer()->ConvertToCustomHistogramName(name); 269 histogram_customizer()->ConvertToCustomHistogramName(name);
315 } else { 270 } else {
(...skipping 1423 matching lines...) Expand 10 before | Expand all | Expand 10 after
1739 if (appcache_dispatcher_->OnMessageReceived(msg) || 1694 if (appcache_dispatcher_->OnMessageReceived(msg) ||
1740 dom_storage_dispatcher_->OnMessageReceived(msg) || 1695 dom_storage_dispatcher_->OnMessageReceived(msg) ||
1741 embedded_worker_dispatcher_->OnMessageReceived(msg)) { 1696 embedded_worker_dispatcher_->OnMessageReceived(msg)) {
1742 return true; 1697 return true;
1743 } 1698 }
1744 1699
1745 bool handled = true; 1700 bool handled = true;
1746 IPC_BEGIN_MESSAGE_MAP(RenderThreadImpl, msg) 1701 IPC_BEGIN_MESSAGE_MAP(RenderThreadImpl, msg)
1747 IPC_MESSAGE_HANDLER(FrameMsg_NewFrame, OnCreateNewFrame) 1702 IPC_MESSAGE_HANDLER(FrameMsg_NewFrame, OnCreateNewFrame)
1748 IPC_MESSAGE_HANDLER(FrameMsg_NewFrameProxy, OnCreateNewFrameProxy) 1703 IPC_MESSAGE_HANDLER(FrameMsg_NewFrameProxy, OnCreateNewFrameProxy)
1749 IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForCurrentURL,
1750 OnSetZoomLevelForCurrentURL)
1751 // TODO(port): removed from render_messages_internal.h; 1704 // TODO(port): removed from render_messages_internal.h;
1752 // is there a new non-windows message I should add here? 1705 // is there a new non-windows message I should add here?
1753 IPC_MESSAGE_HANDLER(ViewMsg_New, OnCreateNewView) 1706 IPC_MESSAGE_HANDLER(ViewMsg_New, OnCreateNewView)
1754 IPC_MESSAGE_HANDLER(ViewMsg_NetworkConnectionChanged, 1707 IPC_MESSAGE_HANDLER(ViewMsg_NetworkConnectionChanged,
1755 OnNetworkConnectionChanged) 1708 OnNetworkConnectionChanged)
1756 IPC_MESSAGE_HANDLER(WorkerProcessMsg_CreateWorker, OnCreateNewSharedWorker) 1709 IPC_MESSAGE_HANDLER(WorkerProcessMsg_CreateWorker, OnCreateNewSharedWorker)
1757 IPC_MESSAGE_HANDLER(ViewMsg_TimezoneChange, OnUpdateTimezone) 1710 IPC_MESSAGE_HANDLER(ViewMsg_TimezoneChange, OnUpdateTimezone)
1758 #if defined(OS_ANDROID) 1711 #if defined(OS_ANDROID)
1759 IPC_MESSAGE_HANDLER(ViewMsg_SetWebKitSharedTimersSuspended, 1712 IPC_MESSAGE_HANDLER(ViewMsg_SetWebKitSharedTimersSuspended,
1760 OnSetWebKitSharedTimersSuspended) 1713 OnSetWebKitSharedTimersSuspended)
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1802 base::IntToString(render_view_routing_id)); 1755 base::IntToString(render_view_routing_id));
1803 base::debug::SetCrashKeyValue("newproxy_opener_id", 1756 base::debug::SetCrashKeyValue("newproxy_opener_id",
1804 base::IntToString(opener_routing_id)); 1757 base::IntToString(opener_routing_id));
1805 base::debug::SetCrashKeyValue("newproxy_parent_id", 1758 base::debug::SetCrashKeyValue("newproxy_parent_id",
1806 base::IntToString(parent_routing_id)); 1759 base::IntToString(parent_routing_id));
1807 RenderFrameProxy::CreateFrameProxy(routing_id, render_view_routing_id, 1760 RenderFrameProxy::CreateFrameProxy(routing_id, render_view_routing_id,
1808 opener_routing_id, parent_routing_id, 1761 opener_routing_id, parent_routing_id,
1809 replicated_state); 1762 replicated_state);
1810 } 1763 }
1811 1764
1812 void RenderThreadImpl::OnSetZoomLevelForCurrentURL(const std::string& scheme,
1813 const std::string& host,
1814 double zoom_level) {
1815 RenderViewZoomer zoomer(scheme, host, zoom_level);
1816 RenderView::ForEach(&zoomer);
1817 }
1818
1819 void RenderThreadImpl::OnCreateNewView(const ViewMsg_New_Params& params) { 1765 void RenderThreadImpl::OnCreateNewView(const ViewMsg_New_Params& params) {
1820 CompositorDependencies* compositor_deps = this; 1766 CompositorDependencies* compositor_deps = this;
1821 // When bringing in render_view, also bring in webkit's glue and jsbindings. 1767 // When bringing in render_view, also bring in webkit's glue and jsbindings.
1822 RenderViewImpl::Create(compositor_deps, params, false); 1768 RenderViewImpl::Create(compositor_deps, params, false);
1823 } 1769 }
1824 1770
1825 gpu::GpuChannelHost* RenderThreadImpl::EstablishGpuChannelSync( 1771 gpu::GpuChannelHost* RenderThreadImpl::EstablishGpuChannelSync(
1826 CauseForGpuLaunch cause_for_gpu_launch) { 1772 CauseForGpuLaunch cause_for_gpu_launch) {
1827 TRACE_EVENT0("gpu", "RenderThreadImpl::EstablishGpuChannelSync"); 1773 TRACE_EVENT0("gpu", "RenderThreadImpl::EstablishGpuChannelSync");
1828 1774
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
2145 } 2091 }
2146 2092
2147 void RenderThreadImpl::PendingRenderFrameConnect::OnConnectionError() { 2093 void RenderThreadImpl::PendingRenderFrameConnect::OnConnectionError() {
2148 size_t erased = 2094 size_t erased =
2149 RenderThreadImpl::current()->pending_render_frame_connects_.erase( 2095 RenderThreadImpl::current()->pending_render_frame_connects_.erase(
2150 routing_id_); 2096 routing_id_);
2151 DCHECK_EQ(1u, erased); 2097 DCHECK_EQ(1u, erased);
2152 } 2098 }
2153 2099
2154 } // namespace content 2100 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698