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