summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authorhayato@chromium.org <hayato@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-10 10:37:27 +0000
committerhayato@chromium.org <hayato@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-10 10:37:27 +0000
commita9944f08e4c9730993d012496a688039cf48936e (patch)
tree595999cb4b26d8eb72d7c4d8033e7d71b7cffb38 /base
parentc0ce9d8162a70abb545e3ca7376003a492b08490 (diff)
downloadchromium_src-a9944f08e4c9730993d012496a688039cf48936e.zip
chromium_src-a9944f08e4c9730993d012496a688039cf48936e.tar.gz
chromium_src-a9944f08e4c9730993d012496a688039cf48936e.tar.bz2
Separate ProxyResolverMac and ProxyConfigServiceMac into their own files and extract common utility functions into other files.
TEST=trybot and MacUtilTest in base_unittests BUG=27310 Review URL: http://codereview.chromium.org/463028 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34243 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r--base/mac_util.h6
-rw-r--r--base/mac_util.mm24
-rw-r--r--base/mac_util_unittest.mm17
3 files changed, 47 insertions, 0 deletions
diff --git a/base/mac_util.h b/base/mac_util.h
index ed49e2f..7b697c9 100644
--- a/base/mac_util.h
+++ b/base/mac_util.h
@@ -92,6 +92,12 @@ FilePath GetAppBundlePath(const FilePath& exec_name);
// Set the Time Machine exclusion property for the given file.
bool SetFileBackupExclusion(const FilePath& file_path, bool exclude);
+// Utility function to pull out a value from a dictionary, check its type, and
+// return it. Returns NULL if the key is not present or of the wrong type.
+CFTypeRef GetValueFromDictionary(CFDictionaryRef dict,
+ CFStringRef key,
+ CFTypeID expected_type);
+
} // namespace mac_util
#endif // BASE_MAC_UTIL_H_
diff --git a/base/mac_util.mm b/base/mac_util.mm
index 1418453..f585233 100644
--- a/base/mac_util.mm
+++ b/base/mac_util.mm
@@ -254,5 +254,29 @@ bool SetFileBackupExclusion(const FilePath& file_path, bool exclude) {
return success;
}
+CFTypeRef GetValueFromDictionary(CFDictionaryRef dict,
+ CFStringRef key,
+ CFTypeID expected_type) {
+ CFTypeRef value = CFDictionaryGetValue(dict, key);
+ if (!value)
+ return value;
+
+ if (CFGetTypeID(value) != expected_type) {
+ scoped_cftyperef<CFStringRef> expected_type_ref(
+ CFCopyTypeIDDescription(expected_type));
+ scoped_cftyperef<CFStringRef> actual_type_ref(
+ CFCopyTypeIDDescription(CFGetTypeID(value)));
+ LOG(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;
+}
} // namespace mac_util
diff --git a/base/mac_util_unittest.mm b/base/mac_util_unittest.mm
index 5e97356..9e56358 100644
--- a/base/mac_util_unittest.mm
+++ b/base/mac_util_unittest.mm
@@ -9,6 +9,7 @@
#include "base/file_path.h"
#include "base/file_util.h"
+#include "base/scoped_cftyperef.h"
#include "base/scoped_nsobject.h"
#include "base/scoped_ptr.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -125,3 +126,19 @@ TEST_F(MacUtilTest, TestExcludeFileFromBackups) {
EXPECT_TRUE(mac_util::SetFileBackupExclusion(file_path, false));
EXPECT_FALSE(CSBackupIsItemExcluded((CFURLRef)fileURL, &excludeByPath));
}
+
+TEST_F(MacUtilTest, TestGetValueFromDictionary) {
+ scoped_cftyperef<CFMutableDictionaryRef> dict(
+ CFDictionaryCreateMutable(0, 0,
+ &kCFTypeDictionaryKeyCallBacks,
+ &kCFTypeDictionaryValueCallBacks));
+ CFDictionarySetValue(dict.get(), CFSTR("key"), CFSTR("value"));
+
+ EXPECT_TRUE(CFEqual(CFSTR("value"),
+ mac_util::GetValueFromDictionary(
+ dict, CFSTR("key"), CFStringGetTypeID())));
+ EXPECT_FALSE(mac_util::GetValueFromDictionary(
+ dict, CFSTR("key"), CFNumberGetTypeID()));
+ EXPECT_FALSE(mac_util::GetValueFromDictionary(
+ dict, CFSTR("no-exist"), CFStringGetTypeID()));
+}