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

Side by Side Diff: content/renderer/pepper/v8_var_converter_unittest.cc

Issue 753523002: remove some calls to to-be-deprecated v8::Value::To* functions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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
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 "content/renderer/pepper/v8_var_converter.h" 5 #include "content/renderer/pepper/v8_var_converter.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 bool Equals(const PP_Var& var, 76 bool Equals(const PP_Var& var,
77 v8::Handle<v8::Value> val, 77 v8::Handle<v8::Value> val,
78 VarHandleMap* visited_ids) { 78 VarHandleMap* visited_ids) {
79 if (ppapi::VarTracker::IsVarTypeRefcounted(var.type)) { 79 if (ppapi::VarTracker::IsVarTypeRefcounted(var.type)) {
80 VarHandleMap::iterator it = visited_ids->find(var.value.as_id); 80 VarHandleMap::iterator it = visited_ids->find(var.value.as_id);
81 if (it != visited_ids->end()) 81 if (it != visited_ids->end())
82 return it->second == val; 82 return it->second == val;
83 (*visited_ids)[var.value.as_id] = val; 83 (*visited_ids)[var.value.as_id] = val;
84 } 84 }
85 85
86 v8::Isolate* isolate = v8::Isolate::GetCurrent();
86 if (val->IsUndefined()) { 87 if (val->IsUndefined()) {
87 return var.type == PP_VARTYPE_UNDEFINED; 88 return var.type == PP_VARTYPE_UNDEFINED;
88 } else if (val->IsNull()) { 89 } else if (val->IsNull()) {
89 return var.type == PP_VARTYPE_NULL; 90 return var.type == PP_VARTYPE_NULL;
90 } else if (val->IsBoolean() || val->IsBooleanObject()) { 91 } else if (val->IsBoolean() || val->IsBooleanObject()) {
91 return var.type == PP_VARTYPE_BOOL && 92 return var.type == PP_VARTYPE_BOOL &&
92 PP_FromBool(val->ToBoolean()->Value()) == var.value.as_bool; 93 PP_FromBool(val->ToBoolean(isolate)->Value()) == var.value.as_bool;
93 } else if (val->IsInt32()) { 94 } else if (val->IsInt32()) {
94 return var.type == PP_VARTYPE_INT32 && 95 return var.type == PP_VARTYPE_INT32 &&
95 val->ToInt32()->Value() == var.value.as_int; 96 val->ToInt32(isolate)->Value() == var.value.as_int;
96 } else if (val->IsNumber() || val->IsNumberObject()) { 97 } else if (val->IsNumber() || val->IsNumberObject()) {
97 return var.type == PP_VARTYPE_DOUBLE && 98 return var.type == PP_VARTYPE_DOUBLE &&
98 fabs(val->ToNumber()->Value() - var.value.as_double) <= 1.0e-4; 99 fabs(val->ToNumber(isolate)->Value() - var.value.as_double) <=
100 1.0e-4;
99 } else if (val->IsString() || val->IsStringObject()) { 101 } else if (val->IsString() || val->IsStringObject()) {
100 if (var.type != PP_VARTYPE_STRING) 102 if (var.type != PP_VARTYPE_STRING)
101 return false; 103 return false;
102 StringVar* string_var = StringVar::FromPPVar(var); 104 StringVar* string_var = StringVar::FromPPVar(var);
103 DCHECK(string_var); 105 DCHECK(string_var);
104 v8::String::Utf8Value utf8(val->ToString()); 106 v8::String::Utf8Value utf8(val);
105 return std::string(*utf8, utf8.length()) == string_var->value(); 107 return std::string(*utf8, utf8.length()) == string_var->value();
106 } else if (val->IsArray()) { 108 } else if (val->IsArray()) {
107 if (var.type != PP_VARTYPE_ARRAY) 109 if (var.type != PP_VARTYPE_ARRAY)
108 return false; 110 return false;
109 ArrayVar* array_var = ArrayVar::FromPPVar(var); 111 ArrayVar* array_var = ArrayVar::FromPPVar(var);
110 DCHECK(array_var); 112 DCHECK(array_var);
111 v8::Handle<v8::Array> v8_array = val.As<v8::Array>(); 113 v8::Handle<v8::Array> v8_array = val.As<v8::Array>();
112 if (v8_array->Length() != array_var->elements().size()) 114 if (v8_array->Length() != array_var->elements().size())
113 return false; 115 return false;
114 for (uint32 i = 0; i < v8_array->Length(); ++i) { 116 for (uint32 i = 0; i < v8_array->Length(); ++i) {
115 v8::Handle<v8::Value> child_v8 = v8_array->Get(i); 117 v8::Handle<v8::Value> child_v8 = v8_array->Get(i);
116 if (!Equals(array_var->elements()[i].get(), child_v8, visited_ids)) 118 if (!Equals(array_var->elements()[i].get(), child_v8, visited_ids))
117 return false; 119 return false;
118 } 120 }
119 return true; 121 return true;
120 } else if (val->IsObject()) { 122 } else if (val->IsObject()) {
121 if (var.type == PP_VARTYPE_ARRAY_BUFFER) { 123 if (var.type == PP_VARTYPE_ARRAY_BUFFER) {
122 // TODO(raymes): Implement this when we have tests for array buffers. 124 // TODO(raymes): Implement this when we have tests for array buffers.
123 NOTIMPLEMENTED(); 125 NOTIMPLEMENTED();
124 return false; 126 return false;
125 } else { 127 } else {
126 v8::Handle<v8::Object> v8_object = val->ToObject(); 128 v8::Handle<v8::Object> v8_object = val.As<v8::Object>();
127 if (var.type != PP_VARTYPE_DICTIONARY) 129 if (var.type != PP_VARTYPE_DICTIONARY)
128 return false; 130 return false;
129 DictionaryVar* dict_var = DictionaryVar::FromPPVar(var); 131 DictionaryVar* dict_var = DictionaryVar::FromPPVar(var);
130 DCHECK(dict_var); 132 DCHECK(dict_var);
131 v8::Handle<v8::Array> property_names(v8_object->GetOwnPropertyNames()); 133 v8::Handle<v8::Array> property_names(v8_object->GetOwnPropertyNames());
132 if (property_names->Length() != dict_var->key_value_map().size()) 134 if (property_names->Length() != dict_var->key_value_map().size())
133 return false; 135 return false;
134 for (uint32 i = 0; i < property_names->Length(); ++i) { 136 for (uint32 i = 0; i < property_names->Length(); ++i) {
135 v8::Handle<v8::Value> key(property_names->Get(i)); 137 v8::Handle<v8::Value> key(property_names->Get(i));
136 138
137 if (!key->IsString() && !key->IsNumber()) 139 if (!key->IsString() && !key->IsNumber())
138 return false; 140 return false;
139 v8::Handle<v8::Value> child_v8 = v8_object->Get(key); 141 v8::Handle<v8::Value> child_v8 = v8_object->Get(key);
140 142
141 v8::String::Utf8Value name_utf8(key->ToString()); 143 v8::String::Utf8Value name_utf8(key);
142 ScopedPPVar release_key(ScopedPPVar::PassRef(), 144 ScopedPPVar release_key(ScopedPPVar::PassRef(),
143 StringVar::StringToPPVar(std::string( 145 StringVar::StringToPPVar(std::string(
144 *name_utf8, name_utf8.length()))); 146 *name_utf8, name_utf8.length())));
145 if (!dict_var->HasKey(release_key.get())) 147 if (!dict_var->HasKey(release_key.get()))
146 return false; 148 return false;
147 ScopedPPVar release_value(ScopedPPVar::PassRef(), 149 ScopedPPVar release_value(ScopedPPVar::PassRef(),
148 dict_var->Get(release_key.get())); 150 dict_var->Get(release_key.get()));
149 if (!Equals(release_value.get(), child_v8, visited_ids)) 151 if (!Equals(release_value.get(), child_v8, visited_ids))
150 return false; 152 return false;
151 } 153 }
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 expected->SetWithStringKey("null", quux.get()); 437 expected->SetWithStringKey("null", quux.get());
436 ScopedPPVar oops(ScopedPPVar::PassRef(), StringVar::StringToPPVar("oops")); 438 ScopedPPVar oops(ScopedPPVar::PassRef(), StringVar::StringToPPVar("oops"));
437 expected->SetWithStringKey("undefined", oops.get()); 439 expected->SetWithStringKey("undefined", oops.get());
438 ScopedPPVar release_expected(ScopedPPVar::PassRef(), expected->GetPPVar()); 440 ScopedPPVar release_expected(ScopedPPVar::PassRef(), expected->GetPPVar());
439 441
440 ASSERT_TRUE(TestEqual(release_expected.get(), release_actual.get(), true)); 442 ASSERT_TRUE(TestEqual(release_expected.get(), release_actual.get(), true));
441 } 443 }
442 } 444 }
443 445
444 } // namespace content 446 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/pepper/v8_var_converter.cc ('k') | content/renderer/v8_value_converter_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698