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

Unified Diff: Source/bindings/v8/Dictionary.cpp

Issue 23812006: Have Dictionary use V8TRYCATCH_FOR_V8STRINGRESOURCE() macro (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Add test Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: Source/bindings/v8/Dictionary.cpp
diff --git a/Source/bindings/v8/Dictionary.cpp b/Source/bindings/v8/Dictionary.cpp
index 6b29255755998d90c5cfa72516566cd6fe871f3e..e34d4401dc6e85b687a732a04957e247de053686 100644
--- a/Source/bindings/v8/Dictionary.cpp
+++ b/Source/bindings/v8/Dictionary.cpp
@@ -170,11 +170,8 @@ bool Dictionary::get(const String& key, String& value) const
if (!getKey(key, v8Value))
return false;
- // FIXME: It is possible for this to throw in which case we'd be getting back
- // an empty string and returning true when we should be returning false.
- // See fast/dom/Geolocation/script-tests/argument-types.js for a similar
- // example.
- value = toWebCoreString(v8Value);
+ V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringValue, v8Value, false);
+ value = stringValue;
return true;
}
@@ -310,7 +307,8 @@ bool Dictionary::get(const String& key, HashSet<AtomicString>& value) const
v8::Local<v8::Array> v8Array = v8::Local<v8::Array>::Cast(v8Value);
for (size_t i = 0; i < v8Array->Length(); ++i) {
v8::Local<v8::Value> indexedValue = v8Array->Get(v8::Integer::New(i, m_isolate));
- value.add(toWebCoreString(indexedValue));
+ V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringValue, indexedValue, false);
+ value.add(stringValue);
}
return true;
@@ -322,11 +320,13 @@ bool Dictionary::getWithUndefinedOrNullCheck(const String& key, String& value) c
if (!getKey(key, v8Value) || v8Value->IsNull() || v8Value->IsUndefined())
return false;
- // FIXME: It is possible for this to throw in which case we'd be getting back
- // an empty string and returning true when we should be returning false.
- // See fast/dom/Geolocation/script-tests/argument-types.js for a similar
- // example.
- value = WebCore::isUndefinedOrNull(v8Value) ? String() : toWebCoreString(v8Value);
+ if (WebCore::isUndefinedOrNull(v8Value)) {
+ value = String();
+ return true;
+ }
+
+ V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringValue, v8Value, false);
+ value = stringValue;
return true;
}
@@ -498,7 +498,8 @@ bool Dictionary::get(const String& key, Vector<String>& value) const
v8::Local<v8::Array> v8Array = v8::Local<v8::Array>::Cast(v8Value);
for (size_t i = 0; i < v8Array->Length(); ++i) {
v8::Local<v8::Value> indexedValue = v8Array->Get(v8::Uint32::New(i));
- value.append(toWebCoreString(indexedValue));
+ V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringValue, indexedValue, false);
+ value.append(stringValue);
}
return true;
@@ -584,9 +585,9 @@ bool Dictionary::getOwnPropertiesAsStringHashMap(HashMap<String, String>& hashMa
continue;
v8::Local<v8::Value> value = options->Get(key);
- String stringKey = toWebCoreString(key);
- String stringValue = toWebCoreString(value);
- if (!stringKey.isEmpty())
+ V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringKey, key, false);
+ V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringValue, value, false);
+ if (!static_cast<const String&>(stringKey).isEmpty())
hashMap.set(stringKey, stringValue);
}
@@ -609,7 +610,8 @@ bool Dictionary::getOwnPropertyNames(Vector<String>& names) const
v8::Local<v8::String> key = properties->Get(i)->ToString();
if (!options->Has(key))
continue;
- names.append(toWebCoreString(key));
+ V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<>, stringKey, key, false);
+ names.append(stringKey);
}
return true;
« no previous file with comments | « LayoutTests/fast/js/dictionary-string-conversion-exception-expected.txt ('k') | Source/bindings/v8/V8BindingMacros.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698