OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ppapi/tests/test_var_deprecated.h" | 5 #include "ppapi/tests/test_var_deprecated.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include <limits> | 9 #include <limits> |
10 | 10 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 var_interface_->Release(str); | 66 var_interface_->Release(str); |
67 result = var_interface_->VarToUtf8(str, &len); | 67 result = var_interface_->VarToUtf8(str, &len); |
68 ASSERT_EQ(0, len); | 68 ASSERT_EQ(0, len); |
69 ASSERT_EQ(NULL, result); | 69 ASSERT_EQ(NULL, result); |
70 } | 70 } |
71 | 71 |
72 // Make sure nothing leaked. | 72 // Make sure nothing leaked. |
73 ASSERT_TRUE(testing_interface_->GetLiveObjectCount( | 73 ASSERT_TRUE(testing_interface_->GetLiveObjectCount( |
74 pp::Module::Get()->pp_module()) == before_object); | 74 pp::Module::Get()->pp_module()) == before_object); |
75 | 75 |
76 return std::string(); | 76 PASS(); |
77 } | 77 } |
78 | 78 |
79 std::string TestVarDeprecated::TestInvalidAndEmpty() { | 79 std::string TestVarDeprecated::TestInvalidAndEmpty() { |
80 PP_Var invalid_string; | 80 PP_Var invalid_string; |
81 invalid_string.type = PP_VARTYPE_STRING; | 81 invalid_string.type = PP_VARTYPE_STRING; |
82 invalid_string.value.as_id = 31415926; | 82 invalid_string.value.as_id = 31415926; |
83 | 83 |
84 // Invalid strings should give NULL as the return value. | 84 // Invalid strings should give NULL as the return value. |
85 uint32_t len = std::numeric_limits<uint32_t>::max(); | 85 uint32_t len = std::numeric_limits<uint32_t>::max(); |
86 const char* result = var_interface_->VarToUtf8(invalid_string, &len); | 86 const char* result = var_interface_->VarToUtf8(invalid_string, &len); |
87 ASSERT_EQ(0, len); | 87 ASSERT_EQ(0, len); |
88 ASSERT_EQ(NULL, result); | 88 ASSERT_EQ(NULL, result); |
89 | 89 |
90 // Same with vars that are not strings. | 90 // Same with vars that are not strings. |
91 len = std::numeric_limits<uint32_t>::max(); | 91 len = std::numeric_limits<uint32_t>::max(); |
92 pp::Var int_var(42); | 92 pp::Var int_var(42); |
93 result = var_interface_->VarToUtf8(int_var.pp_var(), &len); | 93 result = var_interface_->VarToUtf8(int_var.pp_var(), &len); |
94 ASSERT_EQ(0, len); | 94 ASSERT_EQ(0, len); |
95 ASSERT_EQ(NULL, result); | 95 ASSERT_EQ(NULL, result); |
96 | 96 |
97 // Empty strings should return non-NULL. | 97 // Empty strings should return non-NULL. |
98 pp::Var empty_string(""); | 98 pp::Var empty_string(""); |
99 len = std::numeric_limits<uint32_t>::max(); | 99 len = std::numeric_limits<uint32_t>::max(); |
100 result = var_interface_->VarToUtf8(empty_string.pp_var(), &len); | 100 result = var_interface_->VarToUtf8(empty_string.pp_var(), &len); |
101 ASSERT_EQ(0, len); | 101 ASSERT_EQ(0, len); |
102 ASSERT_NE(NULL, result); | 102 ASSERT_NE(NULL, result); |
103 | 103 |
104 return std::string(); | 104 PASS(); |
105 } | 105 } |
106 | 106 |
107 std::string TestVarDeprecated::TestInvalidUtf8() { | 107 std::string TestVarDeprecated::TestInvalidUtf8() { |
108 // utf8じゃない (japanese for "is not utf8") in shift-jis encoding. | 108 // utf8じゃない (japanese for "is not utf8") in shift-jis encoding. |
109 static const char kSjisString[] = "utf8\x82\xb6\x82\xe1\x82\xc8\x82\xa2"; | 109 static const char kSjisString[] = "utf8\x82\xb6\x82\xe1\x82\xc8\x82\xa2"; |
110 pp::Var sjis(kSjisString); | 110 pp::Var sjis(kSjisString); |
111 if (!sjis.is_null()) | 111 if (!sjis.is_null()) |
112 return "Non-UTF8 string permitted."; | 112 return "Non-UTF8 string permitted."; |
113 | 113 |
114 return ""; | 114 PASS(); |
115 } | 115 } |
116 | 116 |
117 std::string TestVarDeprecated::TestNullInputInUtf8Conversion() { | 117 std::string TestVarDeprecated::TestNullInputInUtf8Conversion() { |
118 // This test talks directly to the C interface to access edge cases that | 118 // This test talks directly to the C interface to access edge cases that |
119 // cannot be exercised via the C++ interface. | 119 // cannot be exercised via the C++ interface. |
120 PP_Var converted_string; | 120 PP_Var converted_string; |
121 | 121 |
122 // 0-length string should not dereference input string, and should produce | 122 // 0-length string should not dereference input string, and should produce |
123 // an empty string. | 123 // an empty string. |
124 converted_string = var_interface_->VarFromUtf8( | 124 converted_string = var_interface_->VarFromUtf8( |
(...skipping 13 matching lines...) Expand all Loading... |
138 return "Expected a non-null result for 0-lengthed string from VarToUtf8."; | 138 return "Expected a non-null result for 0-lengthed string from VarToUtf8."; |
139 } | 139 } |
140 | 140 |
141 // Should not crash, and make an empty string. | 141 // Should not crash, and make an empty string. |
142 const char* null_string = NULL; | 142 const char* null_string = NULL; |
143 pp::Var null_var(null_string); | 143 pp::Var null_var(null_string); |
144 if (!null_var.is_string() || null_var.AsString() != "") { | 144 if (!null_var.is_string() || null_var.AsString() != "") { |
145 return "Expected NULL input to make an empty string Var."; | 145 return "Expected NULL input to make an empty string Var."; |
146 } | 146 } |
147 | 147 |
148 return ""; | 148 PASS(); |
149 } | 149 } |
150 | 150 |
151 std::string TestVarDeprecated::TestValidUtf8() { | 151 std::string TestVarDeprecated::TestValidUtf8() { |
152 // From UTF8 string -> PP_Var. | 152 // From UTF8 string -> PP_Var. |
153 // Chinese for "I am utf8." | 153 // Chinese for "I am utf8." |
154 static const char kValidUtf8[] = "\xe6\x88\x91\xe6\x98\xafutf8."; | 154 static const char kValidUtf8[] = "\xe6\x88\x91\xe6\x98\xafutf8."; |
155 pp::Var converted_string(kValidUtf8); | 155 pp::Var converted_string(kValidUtf8); |
156 | 156 |
157 if (converted_string.is_null()) | 157 if (converted_string.is_null()) |
158 return "Unable to convert valid utf8 to var."; | 158 return "Unable to convert valid utf8 to var."; |
159 | 159 |
160 // Since we're already here, test PP_Var back to UTF8 string. | 160 // Since we're already here, test PP_Var back to UTF8 string. |
161 std::string returned_string = converted_string.AsString(); | 161 std::string returned_string = converted_string.AsString(); |
162 | 162 |
163 // We need to check against 1 less than sizeof because the resulting string | 163 // We need to check against 1 less than sizeof because the resulting string |
164 // is technically not NULL terminated by API design. | 164 // is technically not NULL terminated by API design. |
165 if (returned_string.size() != sizeof(kValidUtf8) - 1) { | 165 if (returned_string.size() != sizeof(kValidUtf8) - 1) { |
166 return "Unable to convert utf8 string back from var."; | 166 return "Unable to convert utf8 string back from var."; |
167 } | 167 } |
168 if (returned_string != kValidUtf8) { | 168 if (returned_string != kValidUtf8) { |
169 return "String mismatches on conversion back from PP_Var."; | 169 return "String mismatches on conversion back from PP_Var."; |
170 } | 170 } |
171 | 171 |
172 return ""; | 172 PASS(); |
173 } | 173 } |
174 | 174 |
175 std::string TestVarDeprecated::TestUtf8WithEmbeddedNulls() { | 175 std::string TestVarDeprecated::TestUtf8WithEmbeddedNulls() { |
176 // From UTF8 string with embedded nulls -> PP_Var. | 176 // From UTF8 string with embedded nulls -> PP_Var. |
177 // Chinese for "also utf8." | 177 // Chinese for "also utf8." |
178 static const char kUtf8WithEmbededNull[] = "\xe6\xb9\x9f\xe6\x98\xaf\0utf8."; | 178 static const char kUtf8WithEmbededNull[] = "\xe6\xb9\x9f\xe6\x98\xaf\0utf8."; |
179 std::string orig_string(kUtf8WithEmbededNull, | 179 std::string orig_string(kUtf8WithEmbededNull, |
180 sizeof(kUtf8WithEmbededNull) -1); | 180 sizeof(kUtf8WithEmbededNull) -1); |
181 pp::Var converted_string(orig_string); | 181 pp::Var converted_string(orig_string); |
182 | 182 |
183 if (converted_string.is_null()) | 183 if (converted_string.is_null()) |
184 return "Unable to convert utf8 with embedded nulls to var."; | 184 return "Unable to convert utf8 with embedded nulls to var."; |
185 | 185 |
186 // Since we're already here, test PP_Var back to UTF8 string. | 186 // Since we're already here, test PP_Var back to UTF8 string. |
187 std::string returned_string = converted_string.AsString(); | 187 std::string returned_string = converted_string.AsString(); |
188 | 188 |
189 if (returned_string.size() != orig_string.size()) { | 189 if (returned_string.size() != orig_string.size()) { |
190 return "Unable to convert utf8 with embedded nulls back from var."; | 190 return "Unable to convert utf8 with embedded nulls back from var."; |
191 } | 191 } |
192 if (returned_string != orig_string) { | 192 if (returned_string != orig_string) { |
193 return "String mismatches on conversion back from PP_Var."; | 193 return "String mismatches on conversion back from PP_Var."; |
194 } | 194 } |
195 | 195 |
196 return ""; | 196 PASS(); |
197 } | 197 } |
198 | 198 |
199 std::string TestVarDeprecated::TestVarToUtf8ForWrongType() { | 199 std::string TestVarDeprecated::TestVarToUtf8ForWrongType() { |
200 uint32_t length = kInvalidLength; | 200 uint32_t length = kInvalidLength; |
201 const char* result = NULL; | 201 const char* result = NULL; |
202 result = var_interface_->VarToUtf8(PP_MakeUndefined(), &length); | 202 result = var_interface_->VarToUtf8(PP_MakeUndefined(), &length); |
203 if (length != 0) { | 203 if (length != 0) { |
204 return "Expected 0 on string conversion from Void var."; | 204 return "Expected 0 on string conversion from Void var."; |
205 } | 205 } |
206 if (result != NULL) { | 206 if (result != NULL) { |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 length = kInvalidLength; | 240 length = kInvalidLength; |
241 result = NULL; | 241 result = NULL; |
242 result = var_interface_->VarToUtf8(PP_MakeDouble(1.0), &length); | 242 result = var_interface_->VarToUtf8(PP_MakeDouble(1.0), &length); |
243 if (length != 0) { | 243 if (length != 0) { |
244 return "Expected 0 on string conversion from Double var."; | 244 return "Expected 0 on string conversion from Double var."; |
245 } | 245 } |
246 if (result != NULL) { | 246 if (result != NULL) { |
247 return "Expected NULL on string conversion from Double var."; | 247 return "Expected NULL on string conversion from Double var."; |
248 } | 248 } |
249 | 249 |
250 return ""; | 250 PASS(); |
251 } | 251 } |
252 | 252 |
253 std::string TestVarDeprecated::TestHasPropertyAndMethod() { | 253 std::string TestVarDeprecated::TestHasPropertyAndMethod() { |
254 uint32_t before_objects = testing_interface_->GetLiveObjectCount( | 254 uint32_t before_objects = testing_interface_->GetLiveObjectCount( |
255 pp::Module::Get()->pp_module()); | 255 pp::Module::Get()->pp_module()); |
256 { | 256 { |
257 pp::Var window = instance_->GetWindowObject(); | 257 pp::Var window = instance_->GetWindowObject(); |
258 ASSERT_TRUE(window.is_object()); | 258 ASSERT_TRUE(window.is_object()); |
259 | 259 |
260 // Regular property. | 260 // Regular property. |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 ASSERT_FALSE(window.HasProperty("find", &exception)); | 317 ASSERT_FALSE(window.HasProperty("find", &exception)); |
318 ASSERT_FALSE(exception.is_undefined()); | 318 ASSERT_FALSE(exception.is_undefined()); |
319 ASSERT_FALSE(window.HasMethod("find", &exception)); | 319 ASSERT_FALSE(window.HasMethod("find", &exception)); |
320 ASSERT_FALSE(exception.is_undefined()); | 320 ASSERT_FALSE(exception.is_undefined()); |
321 } | 321 } |
322 | 322 |
323 // Make sure nothing leaked. | 323 // Make sure nothing leaked. |
324 ASSERT_TRUE(testing_interface_->GetLiveObjectCount( | 324 ASSERT_TRUE(testing_interface_->GetLiveObjectCount( |
325 pp::Module::Get()->pp_module()) == before_objects); | 325 pp::Module::Get()->pp_module()) == before_objects); |
326 | 326 |
327 return std::string(); | 327 PASS(); |
328 } | 328 } |
329 | 329 |
OLD | NEW |