From f2a1e755c78d6b1edd52b4bb85fb643eae3783c9 Mon Sep 17 00:00:00 2001 From: Simone Manganelli Date: Thu, 25 Jun 2009 03:53:00 -0700 Subject: [PATCH] Added an application whitelist; four apps are on it by default: Hulu Desktop, iSwiff, Wii Transfer, and PandoraJam --- Plugin/Plugin.h | 1 + Plugin/Plugin.m | 24 ++++++++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/Plugin/Plugin.h b/Plugin/Plugin.h index 1fc9e339..c7ba6029 100755 --- a/Plugin/Plugin.h +++ b/Plugin/Plugin.h @@ -53,6 +53,7 @@ THE SOFTWARE. - (id) initWithArguments:(NSDictionary *)arguments; - (void)_migratePrefsToExternalFile; +- (void) _addApplicationWhitelistToPrefsFile; - (DOMElement *)container; - (void)setContainer:(DOMElement *)newValue; diff --git a/Plugin/Plugin.m b/Plugin/Plugin.m index 23fd0968..11eaf150 100755 --- a/Plugin/Plugin.m +++ b/Plugin/Plugin.m @@ -46,6 +46,7 @@ of this software and associated documentation files (the "Software"), to deal static NSString *sUseYouTubeH264DefaultsKey = @"useYouTubeH264"; static NSString *sAutoLoadInvisibleFlashViewsKey = @"autoLoadInvisibleViews"; static NSString *sPluginEnabled = @"pluginEnabled"; +static NSString *sApplicationWhitelist = @"applicationWhitelist"; BOOL usingMATrackingArea = NO; @@ -125,6 +126,7 @@ - (id) initWithArguments:(NSDictionary *)arguments [self _migrateWhitelist]; [self _migratePrefsToExternalFile]; + [self _addApplicationWhitelistToPrefsFile]; // Get URL @@ -189,7 +191,11 @@ - (id) initWithArguments:(NSDictionary *)arguments // check whether plugin is disabled, load all content as normal if so - if ( ![ [ CTFUserDefaultsController standardUserDefaults ] boolForKey: sPluginEnabled ] ) { + CTFUserDefaultsController *standardUserDefaults = [CTFUserDefaultsController standardUserDefaults]; + BOOL pluginEnabled = [standardUserDefaults boolForKey:sPluginEnabled ]; + NSString *hostAppBundleID = [[NSBundle mainBundle] bundleIdentifier]; + BOOL hostAppIsInWhitelist = [[standardUserDefaults arrayForKey:sApplicationWhitelist] containsObject:hostAppBundleID]; + if ( (! pluginEnabled) || (hostAppIsInWhitelist) ) { _isLoadingFromWhitelist = YES; [self _convertTypesForContainer]; return self; @@ -358,7 +364,7 @@ - (void) dealloc [super dealloc]; } -- (void)_migratePrefsToExternalFile +- (void) _migratePrefsToExternalFile { NSArray *parasiticDefaultsNameArray = [NSArray arrayWithObjects:@"ClickToFlash_pluginEnabled", @"ClickToFlash_useYouTubeH264", @@ -389,6 +395,20 @@ - (void)_migratePrefsToExternalFile } } +- (void) _addApplicationWhitelistToPrefsFile +{ + CTFUserDefaultsController *standardUserDefaults = [CTFUserDefaultsController standardUserDefaults]; + NSArray *applicationWhitelist = [standardUserDefaults arrayForKey:sApplicationWhitelist]; + if (! applicationWhitelist) { + // add the default list of apps to the whitelist + NSArray *defaultWhitelist = [NSArray arrayWithObjects:@"com.hulu.HuluDesktop", + @"com.riverfold.WiiTransfer", + @"com.bitcartel.pandorajam", + nil]; + [standardUserDefaults setObject:defaultWhitelist forKey:sApplicationWhitelist]; + } +} + - (void) drawRect:(NSRect)rect { if(!_isLoadingFromWhitelist)