|
@@ -12,6 +12,7 @@
|
|
|
#include "base/files/file_util.h"
|
|
|
#include "base/logging.h"
|
|
|
#include "base/memory/ref_counted_memory.h"
|
|
|
+#include "base/numerics/safe_conversions.h"
|
|
|
#include "base/strings/pattern.h"
|
|
|
#include "base/strings/utf_string_conversions.h"
|
|
|
#include "gin/arguments.h"
|
|
@@ -147,13 +148,13 @@ NativeImage::~NativeImage() {
|
|
|
}
|
|
|
|
|
|
void NativeImage::UpdateExternalAllocatedMemoryUsage() {
|
|
|
- int32_t new_memory_usage = 0;
|
|
|
+ int64_t new_memory_usage = 0;
|
|
|
|
|
|
if (image_.HasRepresentation(gfx::Image::kImageRepSkia)) {
|
|
|
auto* const image_skia = image_.ToImageSkia();
|
|
|
- if (!image_skia->isNull()) {
|
|
|
- new_memory_usage = image_skia->bitmap()->computeByteSize();
|
|
|
- }
|
|
|
+ if (!image_skia->isNull())
|
|
|
+ new_memory_usage =
|
|
|
+ base::as_signed(image_skia->bitmap()->computeByteSize());
|
|
|
}
|
|
|
|
|
|
isolate_->AdjustAmountOfExternalAllocatedMemory(new_memory_usage -
|
|
@@ -491,9 +492,8 @@ gin::Handle<NativeImage> NativeImage::CreateFromBitmap(
|
|
|
return gin::Handle<NativeImage>();
|
|
|
}
|
|
|
|
|
|
- unsigned int width = 0;
|
|
|
- unsigned int height = 0;
|
|
|
- double scale_factor = 1.;
|
|
|
+ int width = 0;
|
|
|
+ int height = 0;
|
|
|
|
|
|
if (!options.Get("width", &width)) {
|
|
|
thrower.ThrowError("width is required");
|
|
@@ -505,6 +505,9 @@ gin::Handle<NativeImage> NativeImage::CreateFromBitmap(
|
|
|
return gin::Handle<NativeImage>();
|
|
|
}
|
|
|
|
|
|
+ if (width <= 0 || height <= 0)
|
|
|
+ return CreateEmpty(thrower.isolate());
|
|
|
+
|
|
|
auto info = SkImageInfo::MakeN32(width, height, kPremul_SkAlphaType);
|
|
|
auto size_bytes = info.computeMinByteSize();
|
|
|
|
|
@@ -514,16 +517,12 @@ gin::Handle<NativeImage> NativeImage::CreateFromBitmap(
|
|
|
return gin::Handle<NativeImage>();
|
|
|
}
|
|
|
|
|
|
- options.Get("scaleFactor", &scale_factor);
|
|
|
-
|
|
|
- if (width == 0 || height == 0) {
|
|
|
- return CreateEmpty(thrower.isolate());
|
|
|
- }
|
|
|
-
|
|
|
SkBitmap bitmap;
|
|
|
bitmap.allocN32Pixels(width, height, false);
|
|
|
bitmap.writePixels({info, buffer_data.data(), bitmap.rowBytes()});
|
|
|
|
|
|
+ float scale_factor = 1.0F;
|
|
|
+ options.Get("scaleFactor", &scale_factor);
|
|
|
gfx::ImageSkia image_skia =
|
|
|
gfx::ImageSkia::CreateFromBitmap(bitmap, scale_factor);
|
|
|
|