1 // Copyright (c) 2012 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_RENDERER_HOST_JAVA_JAVA_TYPE_H_ 6 #define CONTENT_BROWSER_RENDERER_HOST_JAVA_JAVA_TYPE_H_ 7 8 #include <string> 9 10 #include "base/memory/scoped_ptr.h" 11 12 namespace content { 13 14 // The type of a Java value. A light-weight enum-like structure intended for 15 // use by value and in STL containers. 16 struct JavaType { 17 JavaType(); 18 JavaType(const JavaType& other); 19 ~JavaType(); 20 JavaType& operator=(const JavaType& other); 21 22 // Java's reflection API represents types as a string using an extended 23 // 'binary name'. 24 static JavaType CreateFromBinaryName(const std::string& binary_name); 25 26 enum Type { 27 TypeBoolean, 28 TypeByte, 29 TypeChar, 30 TypeShort, 31 TypeInt, 32 TypeLong, 33 TypeFloat, 34 TypeDouble, 35 // This is only used as a return type, so we should never convert from 36 // JavaScript with this type. 37 TypeVoid, 38 TypeArray, 39 // We special-case strings, as they get special handling when coercing. 40 TypeString, 41 TypeObject, 42 }; 43 44 Type type; 45 scoped_ptr<JavaType> inner_type; // Used for TypeArray only. 46 }; 47 48 } // namespace content 49 50 #endif // CONTENT_BROWSER_RENDERER_HOST_JAVA_JAVA_TYPE_H_ 51