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

Side by Side Diff: content/browser/devtools/devtools_frame_trace_recorder.cc

Issue 2702093002: Consistent CopyFromSurface() API, consolidated to RWHV (Closed)
Patch Set: REBASE Created 3 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) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2015 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/devtools/devtools_frame_trace_recorder.h" 5 #include "content/browser/devtools/devtools_frame_trace_recorder.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 return; 76 return;
77 base::subtle::NoBarrier_AtomicIncrement(&frame_data_count, 1); 77 base::subtle::NoBarrier_AtomicIncrement(&frame_data_count, 1);
78 TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID_AND_TIMESTAMP( 78 TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID_AND_TIMESTAMP(
79 TRACE_DISABLED_BY_DEFAULT("devtools.screenshot"), "Screenshot", 1, 79 TRACE_DISABLED_BY_DEFAULT("devtools.screenshot"), "Screenshot", 1,
80 timestamp, 80 timestamp,
81 std::unique_ptr<base::trace_event::ConvertableToTraceFormat>( 81 std::unique_ptr<base::trace_event::ConvertableToTraceFormat>(
82 new TraceableDevToolsScreenshot(bitmap))); 82 new TraceableDevToolsScreenshot(bitmap)));
83 } 83 }
84 84
85 void CaptureFrame(RenderFrameHostImpl* host, 85 void CaptureFrame(RenderFrameHostImpl* host,
86 const cc::CompositorFrameMetadata& metadata) { 86 const cc::CompositorFrameMetadata& metadata) {
87 RenderWidgetHostViewBase* view = 87 RenderWidgetHostViewBase* view =
88 static_cast<RenderWidgetHostViewBase*>(host->GetView()); 88 static_cast<RenderWidgetHostViewBase*>(host->GetView());
89 if (!view) 89 if (!view)
90 return; 90 return;
91 int current_frame_count = base::subtle::NoBarrier_Load(&frame_data_count); 91 int current_frame_count = base::subtle::NoBarrier_Load(&frame_data_count);
92 if (current_frame_count >= kMaximumFrameDataCount) 92 if (current_frame_count >= kMaximumFrameDataCount)
93 return; 93 return;
94 94
95 gfx::Size src_size = gfx::ToCeiledSize(gfx::ScaleSize( 95 gfx::Size predicted_bitmap_size = gfx::ToCeiledSize(gfx::ScaleSize(
96 metadata.scrollable_viewport_size, metadata.page_scale_factor)); 96 metadata.scrollable_viewport_size, metadata.page_scale_factor));
97 gfx::Size snapshot_size; 97 gfx::Size snapshot_size;
98 float area = src_size.GetArea(); 98 float area = predicted_bitmap_size.GetArea();
99 if (area <= kFrameAreaLimit) { 99 if (area <= kFrameAreaLimit) {
100 snapshot_size = src_size; 100 snapshot_size = predicted_bitmap_size;
101 } else { 101 } else {
102 double scale = sqrt(kFrameAreaLimit / area); 102 double scale = sqrt(kFrameAreaLimit / area);
103 snapshot_size = gfx::ScaleToCeiledSize(src_size, scale); 103 snapshot_size = gfx::ScaleToCeiledSize(predicted_bitmap_size, scale);
104 } 104 }
105 105
106 view->CopyFromCompositingSurface( 106 view->CopyFromSurface(gfx::Rect(), snapshot_size,
107 gfx::Rect(gfx::Point(), src_size), snapshot_size, 107 base::Bind(FrameCaptured, base::TimeTicks::Now()),
108 base::Bind(FrameCaptured, base::TimeTicks::Now()), 108 kN32_SkColorType);
109 kN32_SkColorType);
110 } 109 }
111 110
112 bool ScreenshotCategoryEnabled() { 111 bool ScreenshotCategoryEnabled() {
113 bool enabled; 112 bool enabled;
114 TRACE_EVENT_CATEGORY_GROUP_ENABLED( 113 TRACE_EVENT_CATEGORY_GROUP_ENABLED(
115 TRACE_DISABLED_BY_DEFAULT("devtools.screenshot"), &enabled); 114 TRACE_DISABLED_BY_DEFAULT("devtools.screenshot"), &enabled);
116 return enabled; 115 return enabled;
117 } 116 }
118 117
119 } // namespace 118 } // namespace
(...skipping 20 matching lines...) Expand all
140 139
141 bool is_new_trace; 140 bool is_new_trace;
142 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace); 141 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace);
143 if (!is_new_trace && last_metadata_) 142 if (!is_new_trace && last_metadata_)
144 CaptureFrame(host, *last_metadata_); 143 CaptureFrame(host, *last_metadata_);
145 last_metadata_.reset(new cc::CompositorFrameMetadata); 144 last_metadata_.reset(new cc::CompositorFrameMetadata);
146 *last_metadata_ = frame_metadata.Clone(); 145 *last_metadata_ = frame_metadata.Clone();
147 } 146 }
148 147
149 } // namespace content 148 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698