OLD | NEW |
---|---|
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <vector> | |
6 | |
5 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
6 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
7 #include "third_party/WebKit/Source/WebKit/chromium/public/WebBindings.h" | 9 #include "third_party/WebKit/Source/WebKit/chromium/public/WebBindings.h" |
8 #include "webkit/glue/cpp_variant.h" | 10 #include "webkit/glue/cpp_variant.h" |
9 | 11 |
10 using WebKit::WebBindings; | 12 using WebKit::WebBindings; |
11 | 13 |
12 // Creates a std::string from an NPVariant of string type. If the NPVariant | 14 // Creates a std::string from an NPVariant of string type. If the NPVariant |
13 // is not a string, empties the std::string. | 15 // is not a string, empties the std::string. |
14 void MakeStdString(const NPVariant& np, std::string* std_string) { | 16 void MakeStdString(const NPVariant& np, std::string* std_string) { |
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
417 EXPECT_FALSE(cpp.isDouble()); | 419 EXPECT_FALSE(cpp.isDouble()); |
418 EXPECT_FALSE(cpp.isNumber()); | 420 EXPECT_FALSE(cpp.isNumber()); |
419 EXPECT_FALSE(cpp.isString()); | 421 EXPECT_FALSE(cpp.isString()); |
420 EXPECT_FALSE(cpp.isVoid()); | 422 EXPECT_FALSE(cpp.isVoid()); |
421 EXPECT_FALSE(cpp.isNull()); | 423 EXPECT_FALSE(cpp.isNull()); |
422 EXPECT_FALSE(cpp.isEmpty()); | 424 EXPECT_FALSE(cpp.isEmpty()); |
423 EXPECT_TRUE(cpp.isObject()); | 425 EXPECT_TRUE(cpp.isObject()); |
424 WebBindings::releaseObject(obj); | 426 WebBindings::releaseObject(obj); |
425 CheckObject(cpp); | 427 CheckObject(cpp); |
426 } | 428 } |
429 | |
430 bool MockNPHasPropertyFunction(NPObject *npobj, NPIdentifier name) { | |
431 return true; | |
432 } | |
433 | |
434 bool MockNPGetPropertyFunction(NPObject *npobj, NPIdentifier name, | |
435 NPVariant *result) { | |
436 if (WebBindings::getStringIdentifier("length") == name) { | |
437 DOUBLE_TO_NPVARIANT(4, *result); | |
438 } else if (WebBindings::getIntIdentifier(0) == name) { | |
439 DOUBLE_TO_NPVARIANT(0, *result); | |
440 } else if (WebBindings::getIntIdentifier(1) == name) { | |
441 BOOLEAN_TO_NPVARIANT(true, *result); | |
442 } else if (WebBindings::getIntIdentifier(2) == name) { | |
443 NULL_TO_NPVARIANT(*result); | |
444 } else if (WebBindings::getIntIdentifier(3) == name) { | |
445 const char* s = "string"; | |
446 size_t length = strlen(s); | |
447 char* mem = static_cast<char*>(malloc((length + 1) * sizeof(char))); | |
Evan Martin
2011/01/27 22:12:58
Unless you're copying code from somewhere else, yo
arv (Not doing code reviews)
2011/01/27 23:35:10
Done.
| |
448 strcpy(mem, s); | |
449 mem[length] = '\0'; | |
450 STRINGZ_TO_NPVARIANT(mem, *result); | |
451 } | |
452 | |
453 return true; | |
454 } | |
455 | |
456 TEST(CppVariantTest, ToVector) { | |
457 NPClass array_like_class = { | |
458 NP_CLASS_STRUCT_VERSION, | |
459 MockNPAllocate, // NPAllocateFunctionPtr allocate; | |
460 MockNPDeallocate, // NPDeallocateFunctionPtr deallocate; | |
Evan Martin
2011/01/27 22:12:58
Do you still need these?
arv (Not doing code reviews)
2011/01/27 23:35:10
Nope. Removing
| |
461 0, // NPInvalidateFunctionPtr invalidate; | |
462 0, // NPHasMethodFunctionPtr hasMethod; | |
463 0, // NPInvokeFunctionPtr invoke; | |
464 0, // NPInvokeDefaultFunctionPtr invokeDefault; | |
465 MockNPHasPropertyFunction, // NPHasPropertyFunctionPtr hasProperty; | |
466 MockNPGetPropertyFunction, // NPGetPropertyFunctionPtr getProperty; | |
467 0, // NPSetPropertyFunctionPtr setProperty; | |
468 0, // NPRemovePropertyFunctionPtr removeProperty; | |
469 0, // NPEnumerationFunctionPtr enumerate; | |
470 0 // NPConstructFunctionPtr construct; | |
471 }; | |
472 | |
473 NPObject* obj = WebBindings::createObject(NULL, &array_like_class); | |
474 | |
475 CppVariant cpp; | |
476 cpp.Set(obj); | |
477 | |
478 std::vector<CppVariant> cpp_vector = cpp.ToVector(); | |
479 EXPECT_EQ(4u, cpp_vector.size()); | |
480 | |
481 EXPECT_TRUE(cpp_vector[0].isDouble()); | |
482 EXPECT_EQ(0, cpp_vector[0].ToDouble()); | |
483 | |
484 EXPECT_TRUE(cpp_vector[1].isBool()); | |
485 EXPECT_EQ(true, cpp_vector[1].ToBoolean()); | |
486 | |
487 EXPECT_TRUE(cpp_vector[2].isNull()); | |
488 | |
489 EXPECT_TRUE(cpp_vector[3].isString()); | |
490 CheckString("string", cpp_vector[3]); | |
491 | |
492 WebBindings::releaseObject(obj); | |
493 } | |
OLD | NEW |