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)