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

Unified Diff: content/browser/devtools/renderer_overrides_handler.cc

Issue 190693002: Migrate Telemetry from beginWindowSnapshotPNG to Page.captureScreenshot (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/devtools/renderer_overrides_handler.cc
diff --git a/content/browser/devtools/renderer_overrides_handler.cc b/content/browser/devtools/renderer_overrides_handler.cc
index 0f906152dab2d609ac01db099107d7438b27b791..c40e3839281c2a9ce253f1dbb45ad7591a7fbc6f 100644
--- a/content/browser/devtools/renderer_overrides_handler.cc
+++ b/content/browser/devtools/renderer_overrides_handler.cc
@@ -201,10 +201,9 @@ void RendererOverridesHandler::InnerSwapCompositorFrame() {
view_port->CopyFromCompositingSurface(
view_bounds, snapshot_size,
- base::Bind(&RendererOverridesHandler::ScreenshotCaptured,
+ base::Bind(&RendererOverridesHandler::ScreencastFrameCaptured,
weak_factory_.GetWeakPtr(),
- scoped_refptr<DevToolsProtocol::Command>(), format, quality,
- last_compositor_frame_metadata_),
+ format, quality, last_compositor_frame_metadata_),
SkBitmap::kARGB_8888_Config);
}
@@ -219,13 +218,13 @@ void RendererOverridesHandler::ParseCaptureParameters(
double max_height = -1;
base::DictionaryValue* params = command->params();
if (params) {
- params->GetString(devtools::Page::captureScreenshot::kParamFormat,
+ params->GetString(devtools::Page::startScreencast::kParamFormat,
format);
- params->GetInteger(devtools::Page::captureScreenshot::kParamQuality,
+ params->GetInteger(devtools::Page::startScreencast::kParamQuality,
quality);
- params->GetDouble(devtools::Page::captureScreenshot::kParamMaxWidth,
+ params->GetDouble(devtools::Page::startScreencast::kParamMaxWidth,
&max_width);
- params->GetDouble(devtools::Page::captureScreenshot::kParamMaxHeight,
+ params->GetDouble(devtools::Page::startScreencast::kParamMaxHeight,
&max_height);
}
@@ -423,47 +422,38 @@ RendererOverridesHandler::PageNavigateToHistoryEntry(
scoped_refptr<DevToolsProtocol::Response>
RendererOverridesHandler::PageCaptureScreenshot(
scoped_refptr<DevToolsProtocol::Command> command) {
- RenderViewHost* host = agent_->GetRenderViewHost();
+ RenderViewHostImpl* host = static_cast<RenderViewHostImpl*>(
+ agent_->GetRenderViewHost());
if (!host->GetView())
return command->InternalErrorResponse("Unable to access the view");
- std::string format;
- int quality = kDefaultScreenshotQuality;
- double scale = 1;
- ParseCaptureParameters(command.get(), &format, &quality, &scale);
+ host->RequestWindowSnapshot(
+ base::Bind(&RendererOverridesHandler::ScreenshotCaptured,
+ weak_factory_.GetWeakPtr(), command));
- gfx::Rect view_bounds = host->GetView()->GetViewBounds();
- gfx::Size snapshot_size = gfx::ToFlooredSize(
- gfx::ScaleSize(view_bounds.size(), scale));
+ return command->AsyncResponsePromise();
+}
- // Grab screen pixels if available for current platform.
- // TODO(pfeldman): support format, scale and quality in ui::GrabViewSnapshot.
- std::vector<unsigned char> png;
- bool is_unscaled_png = scale == 1 && format == kPng;
- if (is_unscaled_png && ui::GrabViewSnapshot(host->GetView()->GetNativeView(),
- &png,
- gfx::Rect(snapshot_size))) {
- std::string base64_data;
- base::Base64Encode(
- base::StringPiece(reinterpret_cast<char*>(&*png.begin()), png.size()),
- &base64_data);
- base::DictionaryValue* result = new base::DictionaryValue();
- result->SetString(
- devtools::Page::captureScreenshot::kResponseData, base64_data);
- return command->SuccessResponse(result);
+void RendererOverridesHandler::ScreenshotCaptured(
+ scoped_refptr<DevToolsProtocol::Command> command,
+ const unsigned char* png_data,
+ size_t png_size) {
+ if (!png_data || !png_size) {
+ SendAsyncResponse(
+ command->InternalErrorResponse("Unable to capture screenshot"));
+ return;
}
- // Fallback to copying from compositing surface.
- RenderWidgetHostViewPort* view_port =
- RenderWidgetHostViewPort::FromRWHV(host->GetView());
+ std::string base_64_data;
+ base::Base64Encode(
+ base::StringPiece(reinterpret_cast<const char*>(png_data), png_size),
+ &base_64_data);
- view_port->CopyFromCompositingSurface(
- view_bounds, snapshot_size,
- base::Bind(&RendererOverridesHandler::ScreenshotCaptured,
- weak_factory_.GetWeakPtr(), command, format, quality,
- last_compositor_frame_metadata_),
- SkBitmap::kARGB_8888_Config);
- return command->AsyncResponsePromise();
+ base::DictionaryValue* response = new base::DictionaryValue();
+ response->SetString(devtools::Page::screencastFrame::kParamData,
+ base_64_data);
+
+ SendAsyncResponse(command->SuccessResponse(response));
}
scoped_refptr<DevToolsProtocol::Response>
@@ -499,18 +489,14 @@ RendererOverridesHandler::PageStopScreencast(
return command->SuccessResponse(NULL);
}
-void RendererOverridesHandler::ScreenshotCaptured(
- scoped_refptr<DevToolsProtocol::Command> command,
+void RendererOverridesHandler::ScreencastFrameCaptured(
const std::string& format,
int quality,
const cc::CompositorFrameMetadata& metadata,
bool success,
const SkBitmap& bitmap) {
if (!success) {
- if (command) {
- SendAsyncResponse(
- command->InternalErrorResponse("Unable to capture screenshot"));
- } else if (capture_retry_count_) {
+ if (capture_retry_count_) {
--capture_retry_count_;
base::MessageLoop::current()->PostDelayedTask(
FROM_HERE,
@@ -543,13 +529,8 @@ void RendererOverridesHandler::ScreenshotCaptured(
encoded = false;
}
- if (!encoded) {
- if (command) {
- SendAsyncResponse(
- command->InternalErrorResponse("Unable to encode screenshot"));
- }
+ if (!encoded)
return;
- }
std::string base_64_data;
base::Base64Encode(
@@ -595,20 +576,11 @@ void RendererOverridesHandler::ScreenshotCaptured(
response_metadata->Set(
devtools::Page::ScreencastFrameMetadata::kParamViewport, viewport);
- if (command) {
- response->Set(devtools::Page::captureScreenshot::kResponseMetadata,
- response_metadata);
- } else {
- response->Set(devtools::Page::screencastFrame::kParamMetadata,
- response_metadata);
- }
+ response->Set(devtools::Page::screencastFrame::kParamMetadata,
+ response_metadata);
}
- if (command) {
- SendAsyncResponse(command->SuccessResponse(response));
- } else {
- SendNotification(devtools::Page::screencastFrame::kName, response);
- }
+ SendNotification(devtools::Page::screencastFrame::kName, response);
}
// Quota and Usage ------------------------------------------

Powered by Google App Engine
This is Rietveld 408576698