Support toDataURL without 1x representation

This commit is contained in:
Kevin Sawicki 2017-03-06 13:24:50 -08:00
parent 8eaf48e552
commit 0bbbeb307e
3 changed files with 14 additions and 6 deletions

View file

@ -21,6 +21,7 @@
#include "net/base/data_url.h"
#include "third_party/skia/include/core/SkPixelRef.h"
#include "ui/base/layout.h"
#include "ui/base/webui/web_ui_util.h"
#include "ui/gfx/codec/jpeg_codec.h"
#include "ui/gfx/codec/png_codec.h"
#include "ui/gfx/geometry/size.h"
@ -257,12 +258,12 @@ v8::Local<v8::Value> NativeImage::ToJPEG(v8::Isolate* isolate, int quality) {
}
std::string NativeImage::ToDataURL() {
scoped_refptr<base::RefCountedMemory> png = image_.As1xPNGBytes();
std::string data_url;
data_url.insert(data_url.end(), png->front(), png->front() + png->size());
base::Base64Encode(data_url, &data_url);
data_url.insert(0, "data:image/png;base64,");
return data_url;
if (HasRepresentation(1.0)) {
scoped_refptr<base::RefCountedMemory> png = image_.As1xPNGBytes();
return webui::GetPngDataUrl(png->front(), png->size());
} else {
return webui::GetBitmapDataUrl(image_.AsBitmap());
}
}
v8::Local<v8::Value> NativeImage::GetBitmap(v8::Isolate* isolate) {
@ -297,6 +298,10 @@ bool NativeImage::IsEmpty() {
return image_.IsEmpty();
}
bool NativeImage::HasRepresentation(float scale_factor) {
return image_.AsImageSkia().HasRepresentation(scale_factor);
}
gfx::Size NativeImage::GetSize() {
return image_.Size();
}
@ -468,6 +473,7 @@ void NativeImage::BuildPrototype(
.SetMethod("resize", &NativeImage::Resize)
.SetMethod("crop", &NativeImage::Crop)
.SetMethod("getAspectRatio", &NativeImage::GetAspectRatio)
.SetMethod("hasRepresentation", &NativeImage::HasRepresentation)
// TODO(kevinsawicki): Remove in 2.0, deprecate before then with warnings
.SetMethod("toPng", &NativeImage::ToPNG)
.SetMethod("toJpeg", &NativeImage::ToJPEG);