| OLD | NEW |
| 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 698 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 709 // The leaf node shouldn't have any properties. | 709 // The leaf node shouldn't have any properties. |
| 710 base::DictionaryValue empty; | 710 base::DictionaryValue empty; |
| 711 EXPECT_TRUE(base::Value::Equals(&empty, current)) << *current; | 711 EXPECT_TRUE(base::Value::Equals(&empty, current)) << *current; |
| 712 } | 712 } |
| 713 | 713 |
| 714 class V8ValueConverterOverridingStrategyForTesting | 714 class V8ValueConverterOverridingStrategyForTesting |
| 715 : public V8ValueConverter::Strategy { | 715 : public V8ValueConverter::Strategy { |
| 716 public: | 716 public: |
| 717 V8ValueConverterOverridingStrategyForTesting() | 717 V8ValueConverterOverridingStrategyForTesting() |
| 718 : reference_value_(NewReferenceValue()) {} | 718 : reference_value_(NewReferenceValue()) {} |
| 719 virtual bool FromV8Object( | 719 bool FromV8Object(v8::Handle<v8::Object> value, |
| 720 v8::Handle<v8::Object> value, | 720 base::Value** out, |
| 721 base::Value** out, | 721 v8::Isolate* isolate, |
| 722 v8::Isolate* isolate, | 722 const FromV8ValueCallback& callback) const override { |
| 723 const FromV8ValueCallback& callback) const override { | |
| 724 *out = NewReferenceValue(); | 723 *out = NewReferenceValue(); |
| 725 return true; | 724 return true; |
| 726 } | 725 } |
| 727 virtual bool FromV8Array(v8::Handle<v8::Array> value, | 726 bool FromV8Array(v8::Handle<v8::Array> value, |
| 728 base::Value** out, | 727 base::Value** out, |
| 729 v8::Isolate* isolate, | 728 v8::Isolate* isolate, |
| 730 const FromV8ValueCallback& callback) const override { | 729 const FromV8ValueCallback& callback) const override { |
| 731 *out = NewReferenceValue(); | 730 *out = NewReferenceValue(); |
| 732 return true; | 731 return true; |
| 733 } | 732 } |
| 734 virtual bool FromV8ArrayBuffer(v8::Handle<v8::Object> value, | 733 bool FromV8ArrayBuffer(v8::Handle<v8::Object> value, |
| 735 base::Value** out, | 734 base::Value** out, |
| 736 v8::Isolate* isolate) const override { | 735 v8::Isolate* isolate) const override { |
| 737 *out = NewReferenceValue(); | 736 *out = NewReferenceValue(); |
| 738 return true; | 737 return true; |
| 739 } | 738 } |
| 740 virtual bool FromV8Number(v8::Handle<v8::Number> value, | 739 bool FromV8Number(v8::Handle<v8::Number> value, |
| 741 base::Value** out) const override { | 740 base::Value** out) const override { |
| 742 *out = NewReferenceValue(); | 741 *out = NewReferenceValue(); |
| 743 return true; | 742 return true; |
| 744 } | 743 } |
| 745 virtual bool FromV8Undefined(base::Value** out) const override { | 744 bool FromV8Undefined(base::Value** out) const override { |
| 746 *out = NewReferenceValue(); | 745 *out = NewReferenceValue(); |
| 747 return true; | 746 return true; |
| 748 } | 747 } |
| 749 base::Value* reference_value() const { return reference_value_.get(); } | 748 base::Value* reference_value() const { return reference_value_.get(); } |
| 750 | 749 |
| 751 private: | 750 private: |
| 752 static base::Value* NewReferenceValue() { | 751 static base::Value* NewReferenceValue() { |
| 753 return new base::StringValue("strategy"); | 752 return new base::StringValue("strategy"); |
| 754 } | 753 } |
| 755 scoped_ptr<base::Value> reference_value_; | 754 scoped_ptr<base::Value> reference_value_; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 802 scoped_ptr<base::Value> undefined_value( | 801 scoped_ptr<base::Value> undefined_value( |
| 803 converter.FromV8Value(undefined, context)); | 802 converter.FromV8Value(undefined, context)); |
| 804 ASSERT_TRUE(undefined_value); | 803 ASSERT_TRUE(undefined_value); |
| 805 EXPECT_TRUE( | 804 EXPECT_TRUE( |
| 806 base::Value::Equals(strategy.reference_value(), undefined_value.get())); | 805 base::Value::Equals(strategy.reference_value(), undefined_value.get())); |
| 807 } | 806 } |
| 808 | 807 |
| 809 class V8ValueConverterBypassStrategyForTesting | 808 class V8ValueConverterBypassStrategyForTesting |
| 810 : public V8ValueConverter::Strategy { | 809 : public V8ValueConverter::Strategy { |
| 811 public: | 810 public: |
| 812 virtual bool FromV8Object( | 811 bool FromV8Object(v8::Handle<v8::Object> value, |
| 813 v8::Handle<v8::Object> value, | 812 base::Value** out, |
| 814 base::Value** out, | 813 v8::Isolate* isolate, |
| 815 v8::Isolate* isolate, | 814 const FromV8ValueCallback& callback) const override { |
| 816 const FromV8ValueCallback& callback) const override { | |
| 817 return false; | 815 return false; |
| 818 } | 816 } |
| 819 virtual bool FromV8Array(v8::Handle<v8::Array> value, | 817 bool FromV8Array(v8::Handle<v8::Array> value, |
| 820 base::Value** out, | 818 base::Value** out, |
| 821 v8::Isolate* isolate, | 819 v8::Isolate* isolate, |
| 822 const FromV8ValueCallback& callback) const override { | 820 const FromV8ValueCallback& callback) const override { |
| 823 return false; | 821 return false; |
| 824 } | 822 } |
| 825 virtual bool FromV8ArrayBuffer(v8::Handle<v8::Object> value, | 823 bool FromV8ArrayBuffer(v8::Handle<v8::Object> value, |
| 826 base::Value** out, | 824 base::Value** out, |
| 827 v8::Isolate* isolate) const override { | 825 v8::Isolate* isolate) const override { |
| 828 return false; | 826 return false; |
| 829 } | 827 } |
| 830 virtual bool FromV8Number(v8::Handle<v8::Number> value, | 828 bool FromV8Number(v8::Handle<v8::Number> value, |
| 831 base::Value** out) const override { | 829 base::Value** out) const override { |
| 832 return false; | 830 return false; |
| 833 } | 831 } |
| 834 virtual bool FromV8Undefined(base::Value** out) const override { | 832 bool FromV8Undefined(base::Value** out) const override { return false; } |
| 835 return false; | |
| 836 } | |
| 837 }; | 833 }; |
| 838 | 834 |
| 839 // Verify that having a strategy that fallbacks to default behaviour | 835 // Verify that having a strategy that fallbacks to default behaviour |
| 840 // actually preserves it. | 836 // actually preserves it. |
| 841 TEST_F(V8ValueConverterImplTest, StrategyBypass) { | 837 TEST_F(V8ValueConverterImplTest, StrategyBypass) { |
| 842 v8::HandleScope handle_scope(isolate_); | 838 v8::HandleScope handle_scope(isolate_); |
| 843 v8::Local<v8::Context> context = | 839 v8::Local<v8::Context> context = |
| 844 v8::Local<v8::Context>::New(isolate_, context_); | 840 v8::Local<v8::Context>::New(isolate_, context_); |
| 845 v8::Context::Scope context_scope(context); | 841 v8::Context::Scope context_scope(context); |
| 846 | 842 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 872 EXPECT_TRUE( | 868 EXPECT_TRUE( |
| 873 base::Value::Equals(reference_number_value.get(), number_value.get())); | 869 base::Value::Equals(reference_number_value.get(), number_value.get())); |
| 874 | 870 |
| 875 v8::Handle<v8::Primitive> undefined(v8::Undefined(isolate_)); | 871 v8::Handle<v8::Primitive> undefined(v8::Undefined(isolate_)); |
| 876 scoped_ptr<base::Value> undefined_value( | 872 scoped_ptr<base::Value> undefined_value( |
| 877 converter.FromV8Value(undefined, context)); | 873 converter.FromV8Value(undefined, context)); |
| 878 EXPECT_FALSE(undefined_value); | 874 EXPECT_FALSE(undefined_value); |
| 879 } | 875 } |
| 880 | 876 |
| 881 } // namespace content | 877 } // namespace content |
| OLD | NEW |