| 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 5f620084cfef55e40924886f5701cab5bd5268d0..4d869887d3a7787984b59f023da3d751bd11c6df 100644
|
| --- a/content/browser/devtools/renderer_overrides_handler.cc
|
| +++ b/content/browser/devtools/renderer_overrides_handler.cc
|
| @@ -470,43 +470,37 @@ 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");
|
|
|
| - gfx::Rect view_bounds = host->GetView()->GetViewBounds();
|
| - gfx::Rect snapshot_bounds(view_bounds.size());
|
| - gfx::Size snapshot_size = snapshot_bounds.size();
|
| -
|
| - std::vector<unsigned char> png_data;
|
| - if (ui::GrabViewSnapshot(host->GetView()->GetNativeView(),
|
| - &png_data,
|
| - snapshot_bounds)) {
|
| - if (png_data.size())
|
| - return command->SuccessResponse(CreateScreenshotResponse(png_data));
|
| - else
|
| - return command->InternalErrorResponse("Unable to capture screenshot");
|
| - }
|
| -
|
| - ui::GrabViewSnapshotAsync(
|
| - host->GetView()->GetNativeView(),
|
| - snapshot_bounds,
|
| - base::ThreadTaskRunnerHandle::Get(),
|
| + host->GetSnapshotFromBrowser(
|
| base::Bind(&RendererOverridesHandler::ScreenshotCaptured,
|
| - weak_factory_.GetWeakPtr(), command));
|
| + weak_factory_.GetWeakPtr(), command));
|
| return command->AsyncResponsePromise();
|
| }
|
|
|
| void RendererOverridesHandler::ScreenshotCaptured(
|
| scoped_refptr<DevToolsProtocol::Command> command,
|
| - scoped_refptr<base::RefCountedBytes> png_data) {
|
| - if (png_data) {
|
| - SendAsyncResponse(
|
| - command->SuccessResponse(CreateScreenshotResponse(png_data->data())));
|
| - } else {
|
| + const unsigned char* png_data,
|
| + size_t png_size) {
|
| + if (!png_data || !png_size) {
|
| SendAsyncResponse(
|
| command->InternalErrorResponse("Unable to capture screenshot"));
|
| + return;
|
| }
|
| +
|
| + std::string base_64_data;
|
| + base::Base64Encode(
|
| + base::StringPiece(reinterpret_cast<const char*>(png_data), png_size),
|
| + &base_64_data);
|
| +
|
| + base::DictionaryValue* response = new base::DictionaryValue();
|
| + response->SetString(devtools::Page::screencastFrame::kParamData,
|
| + base_64_data);
|
| +
|
| + SendAsyncResponse(command->SuccessResponse(response));
|
| }
|
|
|
| scoped_refptr<DevToolsProtocol::Response>
|
|
|