Index: chrome/browser/media_galleries/fileapi/itunes_finder_mac.mm |
diff --git a/chrome/browser/media_galleries/fileapi/itunes_finder_mac.mm b/chrome/browser/media_galleries/fileapi/itunes_finder_mac.mm |
index 3780160263982a9f35de8a998d938ec81cf53bc4..ef125336e9fce0fe1d27476f99d8e1f51000ce90 100644 |
--- a/chrome/browser/media_galleries/fileapi/itunes_finder_mac.mm |
+++ b/chrome/browser/media_galleries/fileapi/itunes_finder_mac.mm |
@@ -10,11 +10,31 @@ |
#import "base/mac/scoped_nsobject.h" |
#include "base/strings/sys_string_conversions.h" |
#include "base/time/time.h" |
+#include "chrome/browser/policy/preferences_mac.h" |
#include "content/public/browser/browser_thread.h" |
using base::mac::CFCast; |
using base::mac::CFToNSCast; |
+namespace { |
+ |
+static MacPreferences* g_mac_preferences = NULL; |
+ |
+NSArray* GetItunesRecentDatabasePaths() { |
+ scoped_ptr<MacPreferences> real_preferences; |
+ MacPreferences* prefs = g_mac_preferences; |
+ if (!prefs) { |
+ real_preferences.reset(new MacPreferences()); |
+ prefs = real_preferences.get(); |
+ } |
+ CFStringRef iapp_id = CFSTR("com.apple.iApps"); |
+ CFStringRef itunes_db_key = CFSTR("iTunesRecentDatabasePaths"); |
+ return CFToNSCast(CFCast<CFArrayRef>(prefs->CopyAppValue(itunes_db_key, |
+ iapp_id))); |
+} |
+ |
+} // namespace |
+ |
namespace itunes { |
ITunesFinderMac::ITunesFinderMac(const ITunesFinderCallback& callback) |
@@ -23,13 +43,17 @@ ITunesFinderMac::ITunesFinderMac(const ITunesFinderCallback& callback) |
ITunesFinderMac::~ITunesFinderMac() {} |
+// static |
+void ITunesFinderMac::SetMacPreferencesForTesting(MacPreferences* preferences) { |
+ if (g_mac_preferences) |
Lei Zhang
2013/08/13 20:02:34
delete does this check already.
|
+ delete g_mac_preferences; |
+ g_mac_preferences = preferences; |
+} |
+ |
void ITunesFinderMac::FindITunesLibraryOnFileThread() { |
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::FILE)); |
- CFStringRef iapp_id = CFSTR("com.apple.iApps"); |
- CFStringRef itunes_db_key = CFSTR("iTunesRecentDatabasePaths"); |
- base::scoped_nsobject<NSArray> plist(CFToNSCast( |
- CFCast<CFArrayRef>(CFPreferencesCopyAppValue(itunes_db_key, iapp_id)))); |
+ base::scoped_nsobject<NSArray> plist(GetItunesRecentDatabasePaths()); |
if (!plist) { |
PostResultToUIThread(std::string()); |
return; |