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

Side by Side Diff: content/renderer/v8_value_converter_impl_unittest.cc

Issue 122073003: Track v8 API changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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
« no previous file with comments | « content/public/test/render_view_test.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 <cmath> 5 #include <cmath>
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "base/test/values_test_util.h" 9 #include "base/test/values_test_util.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 scoped_ptr<base::Value> raw(converter.FromV8Value(val, context)); 147 scoped_ptr<base::Value> raw(converter.FromV8Value(val, context));
148 148
149 if (expected_value) { 149 if (expected_value) {
150 ASSERT_TRUE(raw.get()); 150 ASSERT_TRUE(raw.get());
151 EXPECT_TRUE(expected_value->Equals(raw.get())); 151 EXPECT_TRUE(expected_value->Equals(raw.get()));
152 EXPECT_EQ(expected_type, raw->GetType()); 152 EXPECT_EQ(expected_type, raw->GetType());
153 } else { 153 } else {
154 EXPECT_FALSE(raw.get()); 154 EXPECT_FALSE(raw.get());
155 } 155 }
156 156
157 v8::Handle<v8::Object> object(v8::Object::New()); 157 v8::Handle<v8::Object> object(v8::Object::New(isolate_));
158 object->Set(v8::String::NewFromUtf8(isolate_, "test"), val); 158 object->Set(v8::String::NewFromUtf8(isolate_, "test"), val);
159 scoped_ptr<base::DictionaryValue> dictionary( 159 scoped_ptr<base::DictionaryValue> dictionary(
160 static_cast<base::DictionaryValue*>( 160 static_cast<base::DictionaryValue*>(
161 converter.FromV8Value(object, context))); 161 converter.FromV8Value(object, context)));
162 ASSERT_TRUE(dictionary.get()); 162 ASSERT_TRUE(dictionary.get());
163 163
164 if (expected_value) { 164 if (expected_value) {
165 base::Value* temp = NULL; 165 base::Value* temp = NULL;
166 ASSERT_TRUE(dictionary->Get("test", &temp)); 166 ASSERT_TRUE(dictionary->Get("test", &temp));
167 EXPECT_EQ(expected_type, temp->GetType()); 167 EXPECT_EQ(expected_type, temp->GetType());
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 } 448 }
449 449
450 TEST_F(V8ValueConverterImplTest, RecursiveObjects) { 450 TEST_F(V8ValueConverterImplTest, RecursiveObjects) {
451 v8::HandleScope handle_scope(isolate_); 451 v8::HandleScope handle_scope(isolate_);
452 v8::Local<v8::Context> context = 452 v8::Local<v8::Context> context =
453 v8::Local<v8::Context>::New(isolate_, context_); 453 v8::Local<v8::Context>::New(isolate_, context_);
454 v8::Context::Scope context_scope(context); 454 v8::Context::Scope context_scope(context);
455 455
456 V8ValueConverterImpl converter; 456 V8ValueConverterImpl converter;
457 457
458 v8::Handle<v8::Object> object = v8::Object::New().As<v8::Object>(); 458 v8::Handle<v8::Object> object = v8::Object::New(isolate_).As<v8::Object>();
459 ASSERT_FALSE(object.IsEmpty()); 459 ASSERT_FALSE(object.IsEmpty());
460 object->Set(v8::String::NewFromUtf8(isolate_, "foo"), 460 object->Set(v8::String::NewFromUtf8(isolate_, "foo"),
461 v8::String::NewFromUtf8(isolate_, "bar")); 461 v8::String::NewFromUtf8(isolate_, "bar"));
462 object->Set(v8::String::NewFromUtf8(isolate_, "obj"), object); 462 object->Set(v8::String::NewFromUtf8(isolate_, "obj"), object);
463 463
464 scoped_ptr<base::DictionaryValue> object_result( 464 scoped_ptr<base::DictionaryValue> object_result(
465 static_cast<base::DictionaryValue*>( 465 static_cast<base::DictionaryValue*>(
466 converter.FromV8Value(object, context))); 466 converter.FromV8Value(object, context)));
467 ASSERT_TRUE(object_result.get()); 467 ASSERT_TRUE(object_result.get());
468 EXPECT_EQ(2u, object_result->size()); 468 EXPECT_EQ(2u, object_result->size());
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
629 629
630 // The actual result. 630 // The actual result.
631 scoped_ptr<base::Value> actual_list( 631 scoped_ptr<base::Value> actual_list(
632 converter.FromV8Value(recursive_array, context)); 632 converter.FromV8Value(recursive_array, context));
633 ASSERT_TRUE(actual_list.get()); 633 ASSERT_TRUE(actual_list.get());
634 634
635 EXPECT_TRUE(expected_list.Equals(actual_list.get())); 635 EXPECT_TRUE(expected_list.Equals(actual_list.get()));
636 636
637 // Now create a recursive object 637 // Now create a recursive object
638 const std::string key("key"); 638 const std::string key("key");
639 v8::Handle<v8::Object> recursive_object(v8::Object::New()); 639 v8::Handle<v8::Object> recursive_object(v8::Object::New(isolate_));
640 v8::TryCatch try_catch; 640 v8::TryCatch try_catch;
641 recursive_object->Set( 641 recursive_object->Set(
642 v8::String::NewFromUtf8( 642 v8::String::NewFromUtf8(
643 isolate_, key.c_str(), v8::String::kNormalString, key.length()), 643 isolate_, key.c_str(), v8::String::kNormalString, key.length()),
644 recursive_object); 644 recursive_object);
645 ASSERT_FALSE(try_catch.HasCaught()); 645 ASSERT_FALSE(try_catch.HasCaught());
646 646
647 // The first repetition should be trimmed and replaced by a null value. 647 // The first repetition should be trimmed and replaced by a null value.
648 base::DictionaryValue expected_dictionary; 648 base::DictionaryValue expected_dictionary;
649 expected_dictionary.Set(key, base::Value::CreateNullValue()); 649 expected_dictionary.Set(key, base::Value::CreateNullValue());
650 650
651 // The actual result. 651 // The actual result.
652 scoped_ptr<base::Value> actual_dictionary( 652 scoped_ptr<base::Value> actual_dictionary(
653 converter.FromV8Value(recursive_object, context)); 653 converter.FromV8Value(recursive_object, context));
654 ASSERT_TRUE(actual_dictionary.get()); 654 ASSERT_TRUE(actual_dictionary.get());
655 655
656 EXPECT_TRUE(expected_dictionary.Equals(actual_dictionary.get())); 656 EXPECT_TRUE(expected_dictionary.Equals(actual_dictionary.get()));
657 } 657 }
658 658
659 TEST_F(V8ValueConverterImplTest, MaxRecursionDepth) { 659 TEST_F(V8ValueConverterImplTest, MaxRecursionDepth) {
660 v8::HandleScope handle_scope(isolate_); 660 v8::HandleScope handle_scope(isolate_);
661 v8::Local<v8::Context> context = 661 v8::Local<v8::Context> context =
662 v8::Local<v8::Context>::New(isolate_, context_); 662 v8::Local<v8::Context>::New(isolate_, context_);
663 v8::Context::Scope context_scope(context); 663 v8::Context::Scope context_scope(context);
664 664
665 // Must larger than kMaxRecursionDepth in v8_value_converter_impl.cc. 665 // Must larger than kMaxRecursionDepth in v8_value_converter_impl.cc.
666 int kDepth = 1000; 666 int kDepth = 1000;
667 const char kKey[] = "key"; 667 const char kKey[] = "key";
668 668
669 v8::Local<v8::Object> deep_object = v8::Object::New(); 669 v8::Local<v8::Object> deep_object = v8::Object::New(isolate_);
670 670
671 v8::Local<v8::Object> leaf = deep_object; 671 v8::Local<v8::Object> leaf = deep_object;
672 for (int i = 0; i < kDepth; ++i) { 672 for (int i = 0; i < kDepth; ++i) {
673 v8::Local<v8::Object> new_object = v8::Object::New(); 673 v8::Local<v8::Object> new_object = v8::Object::New(isolate_);
674 leaf->Set(v8::String::NewFromUtf8(isolate_, kKey), new_object); 674 leaf->Set(v8::String::NewFromUtf8(isolate_, kKey), new_object);
675 leaf = new_object; 675 leaf = new_object;
676 } 676 }
677 677
678 V8ValueConverterImpl converter; 678 V8ValueConverterImpl converter;
679 scoped_ptr<base::Value> value(converter.FromV8Value(deep_object, context)); 679 scoped_ptr<base::Value> value(converter.FromV8Value(deep_object, context));
680 ASSERT_TRUE(value); 680 ASSERT_TRUE(value);
681 681
682 // Expected depth is kMaxRecursionDepth in v8_value_converter_impl.cc. 682 // Expected depth is kMaxRecursionDepth in v8_value_converter_impl.cc.
683 int kExpectedDepth = 100; 683 int kExpectedDepth = 100;
684 684
685 base::Value* current = value.get(); 685 base::Value* current = value.get();
686 for (int i = 1; i < kExpectedDepth; ++i) { 686 for (int i = 1; i < kExpectedDepth; ++i) {
687 base::DictionaryValue* current_as_object = NULL; 687 base::DictionaryValue* current_as_object = NULL;
688 ASSERT_TRUE(current->GetAsDictionary(&current_as_object)) << i; 688 ASSERT_TRUE(current->GetAsDictionary(&current_as_object)) << i;
689 ASSERT_TRUE(current_as_object->Get(kKey, &current)) << i; 689 ASSERT_TRUE(current_as_object->Get(kKey, &current)) << i;
690 } 690 }
691 691
692 // The leaf node shouldn't have any properties. 692 // The leaf node shouldn't have any properties.
693 base::DictionaryValue empty; 693 base::DictionaryValue empty;
694 EXPECT_TRUE(base::Value::Equals(&empty, current)) << *current; 694 EXPECT_TRUE(base::Value::Equals(&empty, current)) << *current;
695 } 695 }
696 696
697 } // namespace content 697 } // namespace content
OLDNEW
« no previous file with comments | « content/public/test/render_view_test.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698