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

Unified Diff: Source/bindings/core/v8/Dictionary.h

Issue 373423002: Split Dictionary's get and convert into DictionaryHelper. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 5 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
« no previous file with comments | « Source/bindings/core/v8/CustomElementConstructorBuilder.cpp ('k') | Source/bindings/core/v8/Dictionary.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/bindings/core/v8/Dictionary.h
diff --git a/Source/bindings/core/v8/Dictionary.h b/Source/bindings/core/v8/Dictionary.h
index 6069bb90b5cbfe75c05773bc9be36905d37fe13b..baf2f769610df29fef04584f2850dd633a7652c7 100644
--- a/Source/bindings/core/v8/Dictionary.h
+++ b/Source/bindings/core/v8/Dictionary.h
@@ -43,23 +43,8 @@
namespace WebCore {
-class ArrayValue;
-class DOMError;
class Element;
-class LocalDOMWindow;
-class Gamepad;
-class MediaStream;
-class Headers;
-class IDBKeyRange;
-class MIDIPort;
-class MediaKeyError;
-class Notification;
class Path2D;
-class SpeechRecognitionResult;
-class SpeechRecognitionResultList;
-class Storage;
-class TrackBase;
-class VoidCallback;
class Dictionary {
ALLOW_ONLY_INLINE_ALLOCATION();
@@ -78,38 +63,8 @@ public:
bool isObject() const;
bool isUndefinedOrNull() const;
- bool get(const String&, bool&) const;
- bool get(const String&, int32_t&) const;
- bool get(const String&, double&, bool& hasValue) const;
- bool get(const String&, double&) const;
- bool get(const String&, String&) const;
- bool get(const String&, AtomicString&) const;
- bool get(const String&, ScriptValue&) const;
- bool get(const String&, short&) const;
- bool get(const String&, unsigned short&) const;
- bool get(const String&, unsigned&) const;
- bool get(const String&, unsigned long&) const;
- bool get(const String&, unsigned long long&) const;
- bool get(const String&, RefPtrWillBeMember<LocalDOMWindow>&) const;
- bool get(const String&, RefPtrWillBeMember<Storage>&) const;
- bool get(const String&, MessagePortArray&) const;
- bool get(const String&, RefPtr<Uint8Array>&) const;
- bool get(const String&, RefPtr<ArrayBufferView>&) const;
- bool get(const String&, Member<MIDIPort>&) const;
- bool get(const String&, RefPtrWillBeMember<MediaKeyError>&) const;
- bool get(const String&, RefPtrWillBeMember<TrackBase>&) const;
- bool get(const String&, Member<SpeechRecognitionResult>&) const;
- bool get(const String&, Member<SpeechRecognitionResultList>&) const;
- bool get(const String&, Member<Gamepad>&) const;
- bool get(const String&, Member<MediaStream>&) const;
- bool get(const String&, RefPtrWillBeMember<EventTarget>&) const;
- bool get(const String&, HashSet<AtomicString>&) const;
bool get(const String&, Dictionary&) const;
- bool get(const String&, Vector<String>&) const;
- bool get(const String&, ArrayValue&) const;
- bool get(const String&, RefPtrWillBeMember<DOMError>&) const;
bool get(const String&, v8::Local<v8::Value>&) const;
- bool get(const String&, RefPtr<Headers>&) const;
// Sets properties using default attributes.
bool set(const String&, const v8::Handle<v8::Value>&);
@@ -166,26 +121,7 @@ public:
ConversionContext& m_context;
};
- bool convert(ConversionContext&, const String&, bool&) const;
- bool convert(ConversionContext&, const String&, double&) const;
- bool convert(ConversionContext&, const String&, String&) const;
- bool convert(ConversionContext&, const String&, ScriptValue&) const;
-
- template<typename IntegralType>
- bool convert(ConversionContext&, const String&, IntegralType&) const;
- template<typename IntegralType>
- bool convert(ConversionContext&, const String&, Nullable<IntegralType>&) const;
-
- bool convert(ConversionContext&, const String&, MessagePortArray&) const;
- bool convert(ConversionContext&, const String&, HashSet<AtomicString>&) const;
bool convert(ConversionContext&, const String&, Dictionary&) const;
- bool convert(ConversionContext&, const String&, Vector<String>&) const;
- bool convert(ConversionContext&, const String&, ArrayValue&) const;
- template<template <typename> class PointerType, typename T>
- bool convert(ConversionContext&, const String&, PointerType<T>&) const;
-
- template<typename StringType>
- bool getStringType(const String&, StringType&) const;
bool getOwnPropertiesAsStringHashMap(HashMap<String, String>&) const;
bool getOwnPropertyNames(Vector<String>&) const;
@@ -196,6 +132,8 @@ public:
bool hasProperty(const String&) const;
+ v8::Isolate* isolate() const { return m_isolate; }
+
private:
bool getKey(const String& key, v8::Local<v8::Value>&) const;
@@ -211,156 +149,23 @@ struct NativeValueTraits<Dictionary> {
}
};
-template <typename T>
-struct IntegralTypeTraits {
-};
-
-template <>
-struct IntegralTypeTraits<uint8_t> {
- static inline uint8_t toIntegral(v8::Handle<v8::Value> value, IntegerConversionConfiguration configuration, ExceptionState& exceptionState)
- {
- return toUInt8(value, configuration, exceptionState);
- }
- static const String typeName() { return "UInt8"; }
-};
-
-template <>
-struct IntegralTypeTraits<int8_t> {
- static inline int8_t toIntegral(v8::Handle<v8::Value> value, IntegerConversionConfiguration configuration, ExceptionState& exceptionState)
- {
- return toInt8(value, configuration, exceptionState);
- }
- static const String typeName() { return "Int8"; }
-};
-
-template <>
-struct IntegralTypeTraits<unsigned short> {
- static inline uint16_t toIntegral(v8::Handle<v8::Value> value, IntegerConversionConfiguration configuration, ExceptionState& exceptionState)
- {
- return toUInt16(value, configuration, exceptionState);
- }
- static const String typeName() { return "UInt16"; }
-};
-
-template <>
-struct IntegralTypeTraits<short> {
- static inline int16_t toIntegral(v8::Handle<v8::Value> value, IntegerConversionConfiguration configuration, ExceptionState& exceptionState)
- {
- return toInt16(value, configuration, exceptionState);
- }
- static const String typeName() { return "Int16"; }
-};
-
-template <>
-struct IntegralTypeTraits<unsigned> {
- static inline uint32_t toIntegral(v8::Handle<v8::Value> value, IntegerConversionConfiguration configuration, ExceptionState& exceptionState)
- {
- return toUInt32(value, configuration, exceptionState);
- }
- static const String typeName() { return "UInt32"; }
-};
-
-template <>
-struct IntegralTypeTraits<unsigned long> {
- static inline uint32_t toIntegral(v8::Handle<v8::Value> value, IntegerConversionConfiguration configuration, ExceptionState& exceptionState)
- {
- return toUInt32(value, configuration, exceptionState);
- }
- static const String typeName() { return "UInt32"; }
-};
-
-template <>
-struct IntegralTypeTraits<int> {
- static inline int32_t toIntegral(v8::Handle<v8::Value> value, IntegerConversionConfiguration configuration, ExceptionState& exceptionState)
- {
- return toInt32(value, configuration, exceptionState);
- }
- static const String typeName() { return "Int32"; }
+// DictionaryHelper is a collection of static methods for getting or
+// converting a value from Dictionary.
+struct DictionaryHelper {
+ template <typename T>
+ static bool get(const Dictionary&, const String& key, T& value);
+ template <typename T>
+ static bool get(const Dictionary&, const String& key, T& value, bool& hasValue);
+ template <template <typename> class PointerType, typename T>
+ static bool get(const Dictionary&, const String& key, PointerType<T>& value);
+ template <typename T>
+ static bool convert(const Dictionary&, Dictionary::ConversionContext&, const String& key, T& value);
+ template <typename T>
+ static bool convert(const Dictionary&, Dictionary::ConversionContext&, const String& key, Nullable<T>& value);
+ template <template <typename> class PointerType, typename T>
+ static bool convert(const Dictionary&, Dictionary::ConversionContext&, const String& key, PointerType<T>& value);
};
-template <>
-struct IntegralTypeTraits<long> {
- static inline int32_t toIntegral(v8::Handle<v8::Value> value, IntegerConversionConfiguration configuration, ExceptionState& exceptionState)
- {
- return toInt32(value, configuration, exceptionState);
- }
- static const String typeName() { return "Int32"; }
-};
-
-template <>
-struct IntegralTypeTraits<unsigned long long> {
- static inline unsigned long long toIntegral(v8::Handle<v8::Value> value, IntegerConversionConfiguration configuration, ExceptionState& exceptionState)
- {
- return toUInt64(value, configuration, exceptionState);
- }
- static const String typeName() { return "UInt64"; }
-};
-
-template <>
-struct IntegralTypeTraits<long long> {
- static inline long long toIntegral(v8::Handle<v8::Value> value, IntegerConversionConfiguration configuration, ExceptionState& exceptionState)
- {
- return toInt64(value, configuration, exceptionState);
- }
- static const String typeName() { return "Int64"; }
-};
-
-template<typename T> bool Dictionary::convert(ConversionContext& context, const String& key, T& value) const
-{
- ConversionContextScope scope(context);
-
- v8::Local<v8::Value> v8Value;
- if (!getKey(key, v8Value))
- return true;
-
- value = IntegralTypeTraits<T>::toIntegral(v8Value, NormalConversion, context.exceptionState());
- if (context.exceptionState().throwIfNeeded())
- return false;
-
- return true;
-}
-
-template<typename T> bool Dictionary::convert(ConversionContext& context, const String& key, Nullable<T>& value) const
-{
- ConversionContextScope scope(context);
-
- v8::Local<v8::Value> v8Value;
- if (!getKey(key, v8Value))
- return true;
-
- if (context.isNullable() && WebCore::isUndefinedOrNull(v8Value)) {
- value = Nullable<T>();
- return true;
- }
-
- T converted = IntegralTypeTraits<T>::toIntegral(v8Value, NormalConversion, context.exceptionState());
-
- if (context.exceptionState().throwIfNeeded())
- return false;
-
- value = Nullable<T>(converted);
- return true;
-}
-
-template<template <typename> class PointerType, typename T> bool Dictionary::convert(ConversionContext& context, const String& key, PointerType<T>& value) const
-{
- ConversionContextScope scope(context);
-
- if (!get(key, value))
- return true;
-
- if (value)
- return true;
-
- v8::Local<v8::Value> v8Value;
- getKey(key, v8Value);
- if (context.isNullable() && WebCore::isUndefinedOrNull(v8Value))
- return true;
-
- context.throwTypeError(ExceptionMessages::incorrectPropertyType(key, "does not have a " + context.typeName() + " type."));
- return false;
-}
-
}
#endif // Dictionary_h
« no previous file with comments | « Source/bindings/core/v8/CustomElementConstructorBuilder.cpp ('k') | Source/bindings/core/v8/Dictionary.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698