Commit cd7b545a authored by Saman Sami's avatar Saman Sami Committed by Commit Bot

Fix performance timeline screenshots on Android WebView

They just don't work at all right now. Video capture doesn't work on
Android WebView. We need to call CopyFromSurface.

Bug: 813929, 865430
Change-Id: I4360d3f53f852eb7e3182ac58540a1500cc6fee3
Reviewed-on: https://chromium-review.googlesource.com/1159199Reviewed-by: default avatarAndrey Kosyakov <caseq@chromium.org>
Commit-Queue: Saman Sami <samans@chromium.org>
Cr-Commit-Position: refs/heads/master@{#580759}
parent 2f6a9937
......@@ -42,6 +42,10 @@
#include "services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.h"
#include "services/tracing/public/mojom/constants.mojom.h"
#ifdef OS_ANDROID
#include "content/browser/renderer_host/compositor_impl_android.h"
#endif
namespace content {
namespace protocol {
......@@ -214,9 +218,16 @@ TracingHandler::TracingHandler(FrameTreeNode* frame_tree_node_,
return_as_stream_(false),
gzip_compression_(false),
weak_factory_(this) {
if (base::FeatureList::IsEnabled(features::kVizDisplayCompositor) ||
bool use_video_capture_api =
base::FeatureList::IsEnabled(features::kVizDisplayCompositor) ||
base::FeatureList::IsEnabled(
features::kUseVideoCaptureApiForDevToolsSnapshots)) {
features::kUseVideoCaptureApiForDevToolsSnapshots);
#ifdef OS_ANDROID
// Video capture API cannot be used on Android WebView.
if (!CompositorImpl::IsInitialized())
use_video_capture_api = false;
#endif
if (use_video_capture_api) {
video_consumer_ =
std::make_unique<DevToolsVideoConsumer>(base::BindRepeating(
&TracingHandler::OnFrameFromVideoConsumer, base::Unretained(this)));
......
......@@ -60,6 +60,7 @@
#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
#if defined(OS_ANDROID)
#include "content/browser/renderer_host/compositor_impl_android.h"
#include "content/public/browser/render_widget_host_view.h"
#include "services/device/public/mojom/wake_lock_context.mojom.h"
#endif
......@@ -476,12 +477,19 @@ bool RenderFrameDevToolsAgentHost::AttachSession(DevToolsSession* session,
session->AttachToAgent(agent_ptr_);
if (sessions().size() == 1) {
// Taking screenshots using the video capture API is done in TracingHandler.
if (!base::FeatureList::IsEnabled(features::kVizDisplayCompositor) &&
!base::FeatureList::IsEnabled(
features::kUseVideoCaptureApiForDevToolsSnapshots)) {
bool use_video_capture_api =
base::FeatureList::IsEnabled(features::kVizDisplayCompositor) ||
base::FeatureList::IsEnabled(
features::kUseVideoCaptureApiForDevToolsSnapshots);
#ifdef OS_ANDROID
// Video capture API cannot be used on Android WebView.
if (!CompositorImpl::IsInitialized())
use_video_capture_api = false;
#endif
// When video capture API is used, don't instantiate
// DevToolsFrameTraceRecorder. Taking snapshots happens in TracingHandler.
if (!use_video_capture_api)
frame_trace_recorder_.reset(new DevToolsFrameTraceRecorder());
}
GrantPolicy();
#if defined(OS_ANDROID)
GetWakeLock()->RequestWakeLock();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment