| Index: base/mac/foundation_util.mm
|
| diff --git a/base/mac/foundation_util.mm b/base/mac/foundation_util.mm
|
| index 8a4ce471765e1157886e293ae4c7b9007ccc24f7..777836ae9c5eaec094a29dd0c8234923983a4762 100644
|
| --- a/base/mac/foundation_util.mm
|
| +++ b/base/mac/foundation_util.mm
|
| @@ -348,6 +348,41 @@ CF_CAST_DEFN(CFNumber);
|
| CF_CAST_DEFN(CFSet);
|
| CF_CAST_DEFN(CFString);
|
|
|
| +#define GET_VAL_FROM_DICT_DEFN(TypeCF) \
|
| +template<> TypeCF##Ref \
|
| +GetValueFromDictionary<TypeCF##Ref>(CFDictionaryRef dict, CFStringRef key) { \
|
| + CFTypeRef val = CFDictionaryGetValue(dict, key); \
|
| + TypeCF##Ref value = base::mac::CFCast<TypeCF##Ref>(val); \
|
| + if (!val) \
|
| + return value; \
|
| + if (!value) { \
|
| + ScopedCFTypeRef<CFStringRef> expected_type_ref( \
|
| + CFCopyTypeIDDescription(TypeCF##GetTypeID())); \
|
| + ScopedCFTypeRef<CFStringRef> actual_type_ref( \
|
| + CFCopyTypeIDDescription(CFGetTypeID(val))); \
|
| + DLOG(WARNING) << "Expected value for key " \
|
| + << base::SysCFStringRefToUTF8(key) \
|
| + << " to be " \
|
| + << base::SysCFStringRefToUTF8(expected_type_ref) \
|
| + << " but it was " \
|
| + << base::SysCFStringRefToUTF8(actual_type_ref) \
|
| + << " instead"; \
|
| + return NULL; \
|
| + } \
|
| + return value; \
|
| +}
|
| +
|
| +GET_VAL_FROM_DICT_DEFN(CFArray);
|
| +GET_VAL_FROM_DICT_DEFN(CFBag);
|
| +GET_VAL_FROM_DICT_DEFN(CFBoolean);
|
| +GET_VAL_FROM_DICT_DEFN(CFData);
|
| +GET_VAL_FROM_DICT_DEFN(CFDate);
|
| +GET_VAL_FROM_DICT_DEFN(CFDictionary);
|
| +GET_VAL_FROM_DICT_DEFN(CFNull);
|
| +GET_VAL_FROM_DICT_DEFN(CFNumber);
|
| +GET_VAL_FROM_DICT_DEFN(CFSet);
|
| +GET_VAL_FROM_DICT_DEFN(CFString);
|
| +
|
| } // namespace mac
|
| } // namespace base
|
|
|
|
|