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

Unified Diff: content/browser/devtools/protocol/page_handler.cc

Issue 2592983002: [devtools] Support different encodings for Page.CaptureScreenshot. (Closed)
Patch Set: Encode in ui snapshot methods instead. Created 3 years, 12 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/protocol/page_handler.cc
diff --git a/content/browser/devtools/protocol/page_handler.cc b/content/browser/devtools/protocol/page_handler.cc
index 03e4af0b7efd7ce916ea16fe75e8e48d17c33287..572c65c9bc1f344cc1f76f60a46625443d413ab5 100644
--- a/content/browser/devtools/protocol/page_handler.cc
+++ b/content/browser/devtools/protocol/page_handler.cc
@@ -285,15 +285,24 @@ Response PageHandler::NavigateToHistoryEntry(int entry_id) {
}
void PageHandler::CaptureScreenshot(
+ Maybe<std::string> format,
+ Maybe<int> quality,
std::unique_ptr<CaptureScreenshotCallback> callback) {
if (!host_ || !host_->GetRenderWidgetHost()) {
callback->sendFailure(Response::InternalError());
return;
}
+ ui::SnapshotEncoding snapshot_encoding = format.fromMaybe(kPng) == kPng
+ ? ui::SnapshotEncoding::PNG
+ : ui::SnapshotEncoding::JPEG;
+ ui::SnapshotQuality snapshot_quality =
+ quality.fromMaybe(kDefaultScreenshotQuality);
+
host_->GetRenderWidgetHost()->GetSnapshotFromBrowser(
- base::Bind(&PageHandler::ScreenshotCaptured,
- weak_factory_.GetWeakPtr(), base::Passed(std::move(callback))));
+ base::Bind(&PageHandler::ScreenshotCaptured, weak_factory_.GetWeakPtr(),
+ base::Passed(std::move(callback))),
+ snapshot_encoding, snapshot_quality);
}
Response PageHandler::StartScreencast(Maybe<std::string> format,
@@ -560,16 +569,16 @@ void PageHandler::ScreencastFrameEncoded(cc::CompositorFrameMetadata metadata,
void PageHandler::ScreenshotCaptured(
std::unique_ptr<CaptureScreenshotCallback> callback,
- const unsigned char* png_data,
- size_t png_size) {
- if (!png_data || !png_size) {
+ const unsigned char* image_data,
+ size_t data_size) {
+ if (!image_data || !data_size) {
callback->sendFailure(Response::Error("Unable to capture screenshot"));
return;
}
std::string base_64_data;
base::Base64Encode(
- base::StringPiece(reinterpret_cast<const char*>(png_data), png_size),
+ base::StringPiece(reinterpret_cast<const char*>(image_data), data_size),
&base_64_data);
callback->sendSuccess(base_64_data);
}

Powered by Google App Engine
This is Rietveld 408576698