Home | History | Annotate | Download | only in java
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CONTENT_BROWSER_ANDROID_JAVA_JAVA_TYPE_H_
      6 #define CONTENT_BROWSER_ANDROID_JAVA_JAVA_TYPE_H_
      7 
      8 #include <string>
      9 
     10 #include "base/memory/scoped_ptr.h"
     11 #include "content/common/content_export.h"
     12 
     13 namespace content {
     14 
     15 // The type of a Java value. A light-weight enum-like structure intended for
     16 // use by value and in STL containers.
     17 struct CONTENT_EXPORT JavaType {
     18   JavaType();
     19   JavaType(const JavaType& other);
     20   ~JavaType();
     21   JavaType& operator=(const JavaType& other);
     22 
     23   // Java's reflection API represents types as a string using an extended
     24   // 'binary name'.
     25   static JavaType CreateFromBinaryName(const std::string& binary_name);
     26 
     27   // JNIName is used with FindClass.
     28   std::string JNIName() const;
     29   // JNISignature is used for creating method signatures.
     30   std::string JNISignature() const;
     31 
     32   enum Type {
     33     TypeBoolean,
     34     TypeByte,
     35     TypeChar,
     36     TypeShort,
     37     TypeInt,
     38     TypeLong,
     39     TypeFloat,
     40     TypeDouble,
     41     // This is only used as a return type, so we should never convert from
     42     // JavaScript with this type.
     43     TypeVoid,
     44     TypeArray,
     45     // We special-case strings, as they get special handling when coercing.
     46     TypeString,
     47     TypeObject,
     48   };
     49 
     50   Type type;
     51   scoped_ptr<JavaType> inner_type;  // Used for TypeArray only.
     52   std::string class_jni_name;  // Used for TypeString and TypeObject only.
     53 };
     54 
     55 }  // namespace content
     56 
     57 #endif  // CONTENT_BROWSER_ANDROID_JAVA_JAVA_TYPE_H_
     58