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

Side by Side Diff: content/browser/renderer_host/render_widget_host_impl.cc

Issue 914183002: Remove window.chrome.gpuBenchmarking.beginWindowSnapshotPNG (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 5 years, 9 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/browser/renderer_host/render_widget_host_impl.h" 5 #include "content/browser/renderer_host/render_widget_host_impl.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 1982 matching lines...) Expand 10 before | Expand all | Expand 10 after
1993 1993
1994 OnRenderAutoResized(new_size); 1994 OnRenderAutoResized(new_size);
1995 } 1995 }
1996 1996
1997 void RenderWidgetHostImpl::DetachDelegate() { 1997 void RenderWidgetHostImpl::DetachDelegate() {
1998 delegate_ = NULL; 1998 delegate_ = NULL;
1999 } 1999 }
2000 2000
2001 void RenderWidgetHostImpl::FrameSwapped(const ui::LatencyInfo& latency_info) { 2001 void RenderWidgetHostImpl::FrameSwapped(const ui::LatencyInfo& latency_info) {
2002 ui::LatencyInfo::LatencyComponent window_snapshot_component; 2002 ui::LatencyInfo::LatencyComponent window_snapshot_component;
2003 if (latency_info.FindLatency(ui::WINDOW_OLD_SNAPSHOT_FRAME_NUMBER_COMPONENT,
2004 GetLatencyComponentId(),
2005 &window_snapshot_component)) {
2006 WindowOldSnapshotReachedScreen(
2007 static_cast<int>(window_snapshot_component.sequence_number));
2008 }
2009 if (latency_info.FindLatency(ui::WINDOW_SNAPSHOT_FRAME_NUMBER_COMPONENT, 2003 if (latency_info.FindLatency(ui::WINDOW_SNAPSHOT_FRAME_NUMBER_COMPONENT,
2010 GetLatencyComponentId(), 2004 GetLatencyComponentId(),
2011 &window_snapshot_component)) { 2005 &window_snapshot_component)) {
2012 int sequence_number = static_cast<int>( 2006 int sequence_number = static_cast<int>(
2013 window_snapshot_component.sequence_number); 2007 window_snapshot_component.sequence_number);
2014 #if defined(OS_MACOSX) 2008 #if defined(OS_MACOSX)
2015 // On Mac, when using CoreAnmation, there is a delay between when content 2009 // On Mac, when using CoreAnmation, there is a delay between when content
2016 // is drawn to the screen, and when the snapshot will actually pick up 2010 // is drawn to the screen, and when the snapshot will actually pick up
2017 // that content. Insert a manual delay of 1/6th of a second (to simulate 2011 // that content. Insert a manual delay of 1/6th of a second (to simulate
2018 // 10 frames at 60 fps) before actually taking the snapshot. 2012 // 10 frames at 60 fps) before actually taking the snapshot.
2019 base::MessageLoop::current()->PostDelayedTask( 2013 base::MessageLoop::current()->PostDelayedTask(
2020 FROM_HERE, 2014 FROM_HERE,
2021 base::Bind(&RenderWidgetHostImpl::WindowSnapshotReachedScreen, 2015 base::Bind(&RenderWidgetHostImpl::WindowSnapshotReachedScreen,
2022 weak_factory_.GetWeakPtr(), 2016 weak_factory_.GetWeakPtr(),
2023 sequence_number), 2017 sequence_number),
2024 base::TimeDelta::FromSecondsD(1. / 6)); 2018 base::TimeDelta::FromSecondsD(1. / 6));
2025 #else 2019 #else
2026 WindowSnapshotReachedScreen(sequence_number); 2020 WindowSnapshotReachedScreen(sequence_number);
2027 #endif 2021 #endif
2028 } 2022 }
2029 2023
2030 latency_tracker_.OnFrameSwapped(latency_info); 2024 latency_tracker_.OnFrameSwapped(latency_info);
2031 } 2025 }
2032 2026
2033 void RenderWidgetHostImpl::DidReceiveRendererFrame() { 2027 void RenderWidgetHostImpl::DidReceiveRendererFrame() {
2034 view_->DidReceiveRendererFrame(); 2028 view_->DidReceiveRendererFrame();
2035 } 2029 }
2036 2030
2037 void RenderWidgetHostImpl::WindowSnapshotAsyncCallback(
2038 int routing_id,
2039 int snapshot_id,
2040 gfx::Size snapshot_size,
2041 scoped_refptr<base::RefCountedBytes> png_data) {
2042 if (!png_data.get()) {
2043 std::vector<unsigned char> png_vector;
2044 Send(new ViewMsg_WindowSnapshotCompleted(
2045 routing_id, snapshot_id, gfx::Size(), png_vector));
2046 return;
2047 }
2048
2049 Send(new ViewMsg_WindowSnapshotCompleted(
2050 routing_id, snapshot_id, snapshot_size, png_data->data()));
2051 }
2052
2053 void RenderWidgetHostImpl::WindowOldSnapshotReachedScreen(int snapshot_id) {
2054 DCHECK(base::MessageLoopForUI::IsCurrent());
2055
2056 std::vector<unsigned char> png;
2057
2058 // This feature is behind the kEnableGpuBenchmarking command line switch
2059 // because it poses security concerns and should only be used for testing.
2060 const base::CommandLine& command_line =
2061 *base::CommandLine::ForCurrentProcess();
2062 if (!command_line.HasSwitch(cc::switches::kEnableGpuBenchmarking)) {
2063 Send(new ViewMsg_WindowSnapshotCompleted(
2064 GetRoutingID(), snapshot_id, gfx::Size(), png));
2065 return;
2066 }
2067
2068 gfx::Rect view_bounds = GetView()->GetViewBounds();
2069 gfx::Rect snapshot_bounds(view_bounds.size());
2070 gfx::Size snapshot_size = snapshot_bounds.size();
2071
2072 if (ui::GrabViewSnapshot(
2073 GetView()->GetNativeView(), &png, snapshot_bounds)) {
2074 Send(new ViewMsg_WindowSnapshotCompleted(
2075 GetRoutingID(), snapshot_id, snapshot_size, png));
2076 return;
2077 }
2078
2079 ui::GrabViewSnapshotAsync(
2080 GetView()->GetNativeView(),
2081 snapshot_bounds,
2082 base::ThreadTaskRunnerHandle::Get(),
2083 base::Bind(&RenderWidgetHostImpl::WindowSnapshotAsyncCallback,
2084 weak_factory_.GetWeakPtr(),
2085 GetRoutingID(),
2086 snapshot_id,
2087 snapshot_size));
2088 }
2089
2090 void RenderWidgetHostImpl::WindowSnapshotReachedScreen(int snapshot_id) { 2031 void RenderWidgetHostImpl::WindowSnapshotReachedScreen(int snapshot_id) {
2091 DCHECK(base::MessageLoopForUI::IsCurrent()); 2032 DCHECK(base::MessageLoopForUI::IsCurrent());
2092 2033
2093 gfx::Rect view_bounds = GetView()->GetViewBounds(); 2034 gfx::Rect view_bounds = GetView()->GetViewBounds();
2094 gfx::Rect snapshot_bounds(view_bounds.size()); 2035 gfx::Rect snapshot_bounds(view_bounds.size());
2095 2036
2096 std::vector<unsigned char> png; 2037 std::vector<unsigned char> png;
2097 if (ui::GrabViewSnapshot( 2038 if (ui::GrabViewSnapshot(
2098 GetView()->GetNativeView(), &png, snapshot_bounds)) { 2039 GetView()->GetNativeView(), &png, snapshot_bounds)) {
2099 OnSnapshotDataReceived(snapshot_id, &png.front(), png.size()); 2040 OnSnapshotDataReceived(snapshot_id, &png.front(), png.size());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
2138 void RenderWidgetHostImpl::CompositorFrameDrawn( 2079 void RenderWidgetHostImpl::CompositorFrameDrawn(
2139 const std::vector<ui::LatencyInfo>& latency_info) { 2080 const std::vector<ui::LatencyInfo>& latency_info) {
2140 for (size_t i = 0; i < latency_info.size(); i++) { 2081 for (size_t i = 0; i < latency_info.size(); i++) {
2141 std::set<RenderWidgetHostImpl*> rwhi_set; 2082 std::set<RenderWidgetHostImpl*> rwhi_set;
2142 for (ui::LatencyInfo::LatencyMap::const_iterator b = 2083 for (ui::LatencyInfo::LatencyMap::const_iterator b =
2143 latency_info[i].latency_components.begin(); 2084 latency_info[i].latency_components.begin();
2144 b != latency_info[i].latency_components.end(); 2085 b != latency_info[i].latency_components.end();
2145 ++b) { 2086 ++b) {
2146 if (b->first.first == ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT || 2087 if (b->first.first == ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT ||
2147 b->first.first == ui::WINDOW_SNAPSHOT_FRAME_NUMBER_COMPONENT || 2088 b->first.first == ui::WINDOW_SNAPSHOT_FRAME_NUMBER_COMPONENT ||
2148 b->first.first == ui::WINDOW_OLD_SNAPSHOT_FRAME_NUMBER_COMPONENT ||
2149 b->first.first == ui::TAB_SHOW_COMPONENT) { 2089 b->first.first == ui::TAB_SHOW_COMPONENT) {
2150 // Matches with GetLatencyComponentId 2090 // Matches with GetLatencyComponentId
2151 int routing_id = b->first.second & 0xffffffff; 2091 int routing_id = b->first.second & 0xffffffff;
2152 int process_id = (b->first.second >> 32) & 0xffffffff; 2092 int process_id = (b->first.second >> 32) & 0xffffffff;
2153 RenderWidgetHost* rwh = 2093 RenderWidgetHost* rwh =
2154 RenderWidgetHost::FromID(process_id, routing_id); 2094 RenderWidgetHost::FromID(process_id, routing_id);
2155 if (!rwh) { 2095 if (!rwh) {
2156 continue; 2096 continue;
2157 } 2097 }
2158 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(rwh); 2098 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(rwh);
(...skipping 26 matching lines...) Expand all
2185 } 2125 }
2186 #endif 2126 #endif
2187 2127
2188 SkColorType RenderWidgetHostImpl::PreferredReadbackFormat() { 2128 SkColorType RenderWidgetHostImpl::PreferredReadbackFormat() {
2189 if (view_) 2129 if (view_)
2190 return view_->PreferredReadbackFormat(); 2130 return view_->PreferredReadbackFormat();
2191 return kN32_SkColorType; 2131 return kN32_SkColorType;
2192 } 2132 }
2193 2133
2194 } // namespace content 2134 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698