Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / content / renderer / skia_benchmarking_extension.h
index 73d5f83..2e0faf1 100644 (file)
@@ -5,17 +5,72 @@
 #ifndef CONTENT_RENDERER_SKIA_BENCHMARKING_EXTENSION_H_
 #define CONTENT_RENDERER_SKIA_BENCHMARKING_EXTENSION_H_
 
-namespace v8 {
-class Extension;
+#include "base/basictypes.h"
+#include "gin/wrappable.h"
+
+namespace blink {
+class WebFrame;
+}
+
+namespace gin {
+class Arguments;
 }
 
 namespace content {
 
-// V8 extension for Skia benchmarking
-class SkiaBenchmarkingExtension {
+class SkiaBenchmarking : public gin::Wrappable<SkiaBenchmarking> {
  public:
-  static v8::Extension* Get();
-  static void InitSkGraphics();
+  static gin::WrapperInfo kWrapperInfo;
+  static void Install(blink::WebFrame* frame);
+
+  // Wrapper around SkGraphics::Init that can be invoked multiple times.
+  static void Initialize();
+
+ private:
+  SkiaBenchmarking();
+  ~SkiaBenchmarking() override;
+
+  // gin::Wrappable.
+  gin::ObjectTemplateBuilder GetObjectTemplateBuilder(
+      v8::Isolate* isolate) override;
+
+  // Rasterizes a Picture JSON-encoded by cc::Picture::AsValue().
+  //
+  // Takes a JSON-encoded cc::Picture and optionally rasterization parameters:
+  //   {
+  //     'scale':    {Number},
+  //     'stop':     {Number},
+  //     'overdraw': {Boolean},
+  //     'clip':     [Number, Number, Number, Number]
+  //   }
+  //
+  // Returns
+  //  {
+  //    'width':    {Number},
+  //    'height':   {Number},
+  //    'data':     {ArrayBuffer}
+  //  }
+  void Rasterize(gin::Arguments* args);
+
+  // Extracts the Skia draw commands from a JSON-encoded cc::Picture.
+  //
+  // Takes a JSON-encoded cc::Picture and returns
+  // [{ 'cmd': {String}, 'info': [String, ...] }, ...]
+  void GetOps(gin::Arguments* args);
+
+  // Returns timing information for the given picture.
+  //
+  // Takes a JSON-encoded cc::Picture and returns
+  // { 'total_time': {Number}, 'cmd_times': [Number, ...] }
+  void GetOpTimings(gin::Arguments* args);
+
+  // Returns meta information for the given picture.
+  //
+  // Takes a base64 encoded SKP and returns
+  // { 'width': {Number}, 'height': {Number} }
+  void GetInfo(gin::Arguments* args);
+
+  DISALLOW_COPY_AND_ASSIGN(SkiaBenchmarking);
 };
 
 }  // namespace content