Index: content/renderer/gpu/gpu_benchmarking_extension.cc |
diff --git a/content/renderer/gpu/gpu_benchmarking_extension.cc b/content/renderer/gpu/gpu_benchmarking_extension.cc |
index 146769b5a4f998cb3dbb848d54204786d0a10371..84b3346b7199162ac137bcdb4bd64dacd158ecfb 100644 |
--- a/content/renderer/gpu/gpu_benchmarking_extension.cc |
+++ b/content/renderer/gpu/gpu_benchmarking_extension.cc |
@@ -21,8 +21,10 @@ |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebViewBenchmarkSupport.h" |
+#include "third_party/skia/include/core/SkData.h" |
#include "third_party/skia/include/core/SkGraphics.h" |
#include "third_party/skia/include/core/SkPicture.h" |
+#include "third_party/skia/include/core/SkPixelRef.h" |
#include "third_party/skia/include/core/SkStream.h" |
#include "ui/gfx/codec/png_codec.h" |
#include "v8/include/v8.h" |
@@ -38,13 +40,20 @@ using WebKit::WebViewBenchmarkSupport; |
const char kGpuBenchmarkingExtensionName[] = "v8/GpuBenchmarking"; |
-static bool PNGEncodeBitmapToStream(SkWStream* stream, const SkBitmap& bm) { |
+static SkData* EncodeBitmapToData(size_t* offset, const SkBitmap& bm) { |
+ SkPixelRef* pr = bm.pixelRef(); |
+ if (pr != NULL) { |
+ SkData* data = pr->refEncodedData(); |
+ if (data != NULL) { |
+ *offset = bm.pixelRefOffset(); |
+ return data; |
+ } |
+ } |
std::vector<unsigned char> vector; |
if (gfx::PNGCodec::EncodeBGRASkBitmap(bm, true, &vector)) { |
- if (stream->write(&vector.front() , vector.size())) |
- return true; |
+ return SkData::NewWithCopy(&vector.front() , vector.size()); |
} |
- return false; |
+ return NULL; |
} |
namespace { |
@@ -75,7 +84,7 @@ class SkPictureRecorder : public WebViewBenchmarkSupport::PaintClient { |
DCHECK(!filepath.empty()); |
SkFILEWStream file(filepath.c_str()); |
DCHECK(file.isValid()); |
- picture_.serialize(&file, &PNGEncodeBitmapToStream); |
+ picture_.serialize(&file, &EncodeBitmapToData); |
} |
private: |