diff --git a/Plugin/Info-Plugin.plist b/Plugin/Info-Plugin.plist index 8c82771b..a50c366f 100644 --- a/Plugin/Info-Plugin.plist +++ b/Plugin/Info-Plugin.plist @@ -30,7 +30,7 @@ http://rentzsch.github.com/clicktoflash/release_notes/appcast.xml WebPluginDescription - Shockwave Flash 10.0 r22 + Shockwave Flash 10.0 r45 WebPluginMIMETypes application/x-shockwave-flash @@ -45,5 +45,7 @@ WebPluginName Shockwave Flash + CTFFlashVariableVersion + MAC 10,0,45,2 diff --git a/Plugin/Plugin.m b/Plugin/Plugin.m index 4c731dea..0e1f2627 100755 --- a/Plugin/Plugin.m +++ b/Plugin/Plugin.m @@ -1126,6 +1126,75 @@ - (void) _removeTrackingAreaForCTF } +#pragma mark - +#pragma mark WebScripting Protocol + +- (id)objectForWebScript { + //NSLog(@"objectForWebScript => %@", self); + return self; +} + ++ (NSString *)webScriptNameForSelector:(SEL)aSelector { + // javascript may call GetVariable("$version") on us + + NSString *result = nil; + + if (aSelector == @selector(flashGetVariable:)) + result = @"GetVariable"; + + //NSLog(@"webScriptNameForSelector:%@ => %@", NSStringFromSelector(aSelector), result); + return result; +} + ++ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector { + BOOL result = YES; + + if (aSelector == @selector(flashGetVariable:)) + result = NO; + + //NSLog(@"isSelectorExcludedFromWebScript:%@ => %d", NSStringFromSelector(aSelector), result); + return result; +} + +- (id)flashGetVariable:(id)flashVar { + static NSString *sFlashVersion = nil; + static NSString *sClickToFlashVersion = nil; + + //NSLog(@"flashVar: %p %@", flashVar, flashVar); + + if (flashVar && [flashVar isKindOfClass:[NSString class]]) { + if ([flashVar isEqualToString:@"$version"]) { + if (sFlashVersion == nil) { + NSBundle *bundle = [NSBundle bundleForClass:[self class]]; + if (bundle) { + id version = [bundle objectForInfoDictionaryKey:@"CTFFlashVariableVersion"]; + if (version && [version isKindOfClass:[NSString class]]) { + sFlashVersion = [(NSString *)version copy]; + } + } + } + + return sFlashVersion; + } else if ([flashVar isEqualToString:@"$ClickToFlashVersion"]) { + if (sClickToFlashVersion == nil) { + NSBundle *bundle = [NSBundle bundleForClass:[self class]]; + if (bundle) { + id version = [bundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; + if (version && [version isKindOfClass:[NSString class]]) { + sClickToFlashVersion = [(NSString *)version copy]; + } + } + } + + return sClickToFlashVersion; + } else { + return [self flashvarWithName:flashVar]; + } + } + + return nil; +} + #pragma mark - #pragma mark YouTube H.264 support