1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file.
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef CONTENT_RENDERER_JAVA_GIN_JAVA_BRIDGE_VALUE_CONVERTER_H_
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define CONTENT_RENDERER_JAVA_GIN_JAVA_BRIDGE_VALUE_CONVERTER_H_
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "content/common/content_export.h"
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "content/public/renderer/v8_value_converter.h"
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace content {
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class GinJavaBridgeValueConverter : public content::V8ValueConverter::Strategy {
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public:
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  CONTENT_EXPORT GinJavaBridgeValueConverter();
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  CONTENT_EXPORT virtual ~GinJavaBridgeValueConverter();
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  CONTENT_EXPORT v8::Handle<v8::Value> ToV8Value(
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      const base::Value* value,
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      v8::Handle<v8::Context> context) const;
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  CONTENT_EXPORT scoped_ptr<base::Value> FromV8Value(
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      v8::Handle<v8::Value> value,
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      v8::Handle<v8::Context> context) const;
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // content::V8ValueConverter::Strategy
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual bool FromV8Object(v8::Handle<v8::Object> value,
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                            base::Value** out,
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                            v8::Isolate* isolate,
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                            const FromV8ValueCallback& callback) const OVERRIDE;
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual bool FromV8ArrayBuffer(v8::Handle<v8::Object> value,
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                 base::Value** out,
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                 v8::Isolate* isolate) const OVERRIDE;
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual bool FromV8Number(v8::Handle<v8::Number> value,
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                            base::Value** out) const OVERRIDE;
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual bool FromV8Undefined(base::Value** out) const OVERRIDE;
37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) private:
39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  scoped_ptr<V8ValueConverter> converter_;
40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(GinJavaBridgeValueConverter);
42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace content
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif  // CONTENT_RENDERER_JAVA_GIN_JAVA_BRIDGE_VALUE_CONVERTER_H_
47