Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(129)

Side by Side Diff: content/browser/renderer_host/java/java_type.cc

Issue 336313018: [Android] Move content/browser/{renderer_host => android}/java/* (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Updated paths for unit tests, rebased Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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 #include "content/browser/renderer_host/java/java_type.h"
6
7 #include "base/logging.h"
8
9 namespace content {
10 namespace {
11
12 JavaType JavaTypeFromJNIName(const std::string& jni_name) {
13 JavaType result;
14 DCHECK(!jni_name.empty());
15 switch (jni_name[0]) {
16 case 'Z':
17 result.type = JavaType::TypeBoolean;
18 break;
19 case 'B':
20 result.type = JavaType::TypeByte;
21 break;
22 case 'C':
23 result.type = JavaType::TypeChar;
24 break;
25 case 'S':
26 result.type = JavaType::TypeShort;
27 break;
28 case 'I':
29 result.type = JavaType::TypeInt;
30 break;
31 case 'J':
32 result.type = JavaType::TypeLong;
33 break;
34 case 'F':
35 result.type = JavaType::TypeFloat;
36 break;
37 case 'D':
38 result.type = JavaType::TypeDouble;
39 break;
40 case '[':
41 result.type = JavaType::TypeArray;
42 // LIVECONNECT_COMPLIANCE: We don't support multi-dimensional arrays, so
43 // there's no need to populate the inner types.
44 break;
45 case 'L':
46 result.type = jni_name == "Ljava.lang.String;" ?
47 JavaType::TypeString :
48 JavaType::TypeObject;
49 break;
50 default:
51 // Includes void (V).
52 NOTREACHED();
53 }
54 return result;
55 }
56
57 } // namespace
58
59 JavaType::JavaType() {
60 }
61
62 JavaType::JavaType(const JavaType& other) {
63 *this = other;
64 }
65
66 JavaType::~JavaType() {
67 }
68
69 JavaType& JavaType::operator=(const JavaType& other) {
70 type = other.type;
71 if (other.inner_type) {
72 DCHECK_EQ(JavaType::TypeArray, type);
73 inner_type.reset(new JavaType(*other.inner_type));
74 } else {
75 inner_type.reset();
76 }
77 return *this;
78 }
79
80 JavaType JavaType::CreateFromBinaryName(const std::string& binary_name) {
81 JavaType result;
82 DCHECK(!binary_name.empty());
83 if (binary_name == "boolean") {
84 result.type = JavaType::TypeBoolean;
85 } else if (binary_name == "byte") {
86 result.type = JavaType::TypeByte;
87 } else if (binary_name == "char") {
88 result.type = JavaType::TypeChar;
89 } else if (binary_name == "short") {
90 result.type = JavaType::TypeShort;
91 } else if (binary_name == "int") {
92 result.type = JavaType::TypeInt;
93 } else if (binary_name == "long") {
94 result.type = JavaType::TypeLong;
95 } else if (binary_name == "float") {
96 result.type = JavaType::TypeFloat;
97 } else if (binary_name == "double") {
98 result.type = JavaType::TypeDouble;
99 } else if (binary_name == "void") {
100 result.type = JavaType::TypeVoid;
101 } else if (binary_name[0] == '[') {
102 result.type = JavaType::TypeArray;
103 // The inner type of an array is represented in JNI format.
104 result.inner_type.reset(new JavaType(JavaTypeFromJNIName(
105 binary_name.substr(1))));
106 } else if (binary_name == "java.lang.String") {
107 result.type = JavaType::TypeString;
108 } else {
109 result.type = JavaType::TypeObject;
110 }
111 return result;
112 }
113
114 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/java/java_type.h ('k') | content/browser/renderer_host/java/jni_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698