[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

cblu cblu at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 05:56:31 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit f0234ab83a185582ec8d221af485c023eaebeaa6
Author: cblu <cblu at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sat Mar 2 00:29:12 2002 +0000

    Improved the plug-in search scheme to make it easier to change the plug-in locations in the future. Added Alexander's PlugIns directory to the search locations
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@683 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/kwq/WCPluginDatabase.h b/WebCore/kwq/WCPluginDatabase.h
index af546ac..0443373 100644
--- a/WebCore/kwq/WCPluginDatabase.h
+++ b/WebCore/kwq/WCPluginDatabase.h
@@ -38,4 +38,5 @@
 
 @end
 
+NSArray *pluginLocations(void);
 NSArray *findPlugins(void);
\ No newline at end of file
diff --git a/WebCore/kwq/WCPluginDatabase.mm b/WebCore/kwq/WCPluginDatabase.mm
index 196e54b..58fc5ca 100644
--- a/WebCore/kwq/WCPluginDatabase.mm
+++ b/WebCore/kwq/WCPluginDatabase.mm
@@ -99,31 +99,52 @@ static WCPluginDatabase *__WCPluginDatabase = nil;
 
 @end
 
-NSArray *findPlugins(void){
+NSArray *pluginLocations(void)
+{
+    NSMutableArray *locations;
+    NSBundle *applicationBundle;
+    
+    // Plug-ins are found in order of precedence.
+    // If there are duplicates, the first found plug-in is used.
+    // For example, if there is a QuickTime.plugin in the users's home directory
+    // that is used instead of the /Library/Internet Plug-ins version.
+    // The purpose is to allow non-admin user's to update their plug-ins.
+    
+    locations = [NSMutableArray arrayWithCapacity:3];
+    [locations addObject:[NSHomeDirectory() stringByAppendingPathComponent:@"Library/Internet Plug-Ins"]];
+    [locations addObject:@"/Library/Internet Plug-Ins"];
+
+    applicationBundle = [NSBundle mainBundle];
+    [locations addObject:[applicationBundle builtInPlugInsPath]];
+    
+    return locations;
+}
+
+NSArray *findPlugins(void)
+{
     NSFileManager *fileManager;
-    NSArray *libraryPlugins, *homePlugins;
-    NSString *homePluginDir, *libPluginDir;
-    NSMutableArray *pluginPaths, *pluginArray;
+    NSArray *pluginDirectories, *files;
+    NSString *file;
+    NSMutableArray *pluginPaths, *pluginArray, *filenames;
     WCPlugin *plugin;
-    uint i;
+    uint i, n;
     
+    pluginDirectories = pluginLocations();    
     fileManager = [NSFileManager defaultManager];
-    homePluginDir = [[NSString stringWithString:NSHomeDirectory()] stringByAppendingPathComponent:@"Library/Internet Plug-Ins"];
-    libPluginDir = [NSString stringWithString:@"/Library/Internet Plug-Ins"];
+    pluginPaths = [NSMutableArray arrayWithCapacity:10];
+    filenames = [NSMutableArray arrayWithCapacity:10];
     
-    homePlugins = [fileManager directoryContentsAtPath:homePluginDir];
-    libraryPlugins = [fileManager directoryContentsAtPath:libPluginDir];
-
-    pluginPaths = [NSMutableArray arrayWithCapacity:[homePlugins count]+[libraryPlugins count]];
-
-    for(i=0; i<[homePlugins count]; i++){
-        [pluginPaths addObject:[homePluginDir stringByAppendingPathComponent:[homePlugins objectAtIndex:i]]];
-    }
-    for(i=0; i<[libraryPlugins count]; i++){
-        if(![homePlugins containsObject:[libraryPlugins objectAtIndex:i]]){ // avoid dups, give precedense to home dir
-            [pluginPaths addObject:[libPluginDir stringByAppendingPathComponent:[libraryPlugins objectAtIndex:i]]];
+    for(i=0; i<[pluginDirectories count]; i++){
+        files = [fileManager directoryContentsAtPath:[pluginDirectories objectAtIndex:i]];
+        for(n=0; n<[files count]; n++){
+            file = [files objectAtIndex:n];
+            if(![filenames containsObject:file]){ // avoid duplicates
+                [filenames addObject:file];
+                [pluginPaths addObject:[[pluginDirectories objectAtIndex:i] stringByAppendingPathComponent:file]];
+            }
         }
     }
+    
     pluginArray = [NSMutableArray arrayWithCapacity:[pluginPaths count]];
     
     for(i=0; i<[pluginPaths count]; i++){
diff --git a/WebCore/src/kwq/WCPluginDatabase.h b/WebCore/src/kwq/WCPluginDatabase.h
index af546ac..0443373 100644
--- a/WebCore/src/kwq/WCPluginDatabase.h
+++ b/WebCore/src/kwq/WCPluginDatabase.h
@@ -38,4 +38,5 @@
 
 @end
 
+NSArray *pluginLocations(void);
 NSArray *findPlugins(void);
\ No newline at end of file
diff --git a/WebCore/src/kwq/WCPluginDatabase.mm b/WebCore/src/kwq/WCPluginDatabase.mm
index 196e54b..58fc5ca 100644
--- a/WebCore/src/kwq/WCPluginDatabase.mm
+++ b/WebCore/src/kwq/WCPluginDatabase.mm
@@ -99,31 +99,52 @@ static WCPluginDatabase *__WCPluginDatabase = nil;
 
 @end
 
-NSArray *findPlugins(void){
+NSArray *pluginLocations(void)
+{
+    NSMutableArray *locations;
+    NSBundle *applicationBundle;
+    
+    // Plug-ins are found in order of precedence.
+    // If there are duplicates, the first found plug-in is used.
+    // For example, if there is a QuickTime.plugin in the users's home directory
+    // that is used instead of the /Library/Internet Plug-ins version.
+    // The purpose is to allow non-admin user's to update their plug-ins.
+    
+    locations = [NSMutableArray arrayWithCapacity:3];
+    [locations addObject:[NSHomeDirectory() stringByAppendingPathComponent:@"Library/Internet Plug-Ins"]];
+    [locations addObject:@"/Library/Internet Plug-Ins"];
+
+    applicationBundle = [NSBundle mainBundle];
+    [locations addObject:[applicationBundle builtInPlugInsPath]];
+    
+    return locations;
+}
+
+NSArray *findPlugins(void)
+{
     NSFileManager *fileManager;
-    NSArray *libraryPlugins, *homePlugins;
-    NSString *homePluginDir, *libPluginDir;
-    NSMutableArray *pluginPaths, *pluginArray;
+    NSArray *pluginDirectories, *files;
+    NSString *file;
+    NSMutableArray *pluginPaths, *pluginArray, *filenames;
     WCPlugin *plugin;
-    uint i;
+    uint i, n;
     
+    pluginDirectories = pluginLocations();    
     fileManager = [NSFileManager defaultManager];
-    homePluginDir = [[NSString stringWithString:NSHomeDirectory()] stringByAppendingPathComponent:@"Library/Internet Plug-Ins"];
-    libPluginDir = [NSString stringWithString:@"/Library/Internet Plug-Ins"];
+    pluginPaths = [NSMutableArray arrayWithCapacity:10];
+    filenames = [NSMutableArray arrayWithCapacity:10];
     
-    homePlugins = [fileManager directoryContentsAtPath:homePluginDir];
-    libraryPlugins = [fileManager directoryContentsAtPath:libPluginDir];
-
-    pluginPaths = [NSMutableArray arrayWithCapacity:[homePlugins count]+[libraryPlugins count]];
-
-    for(i=0; i<[homePlugins count]; i++){
-        [pluginPaths addObject:[homePluginDir stringByAppendingPathComponent:[homePlugins objectAtIndex:i]]];
-    }
-    for(i=0; i<[libraryPlugins count]; i++){
-        if(![homePlugins containsObject:[libraryPlugins objectAtIndex:i]]){ // avoid dups, give precedense to home dir
-            [pluginPaths addObject:[libPluginDir stringByAppendingPathComponent:[libraryPlugins objectAtIndex:i]]];
+    for(i=0; i<[pluginDirectories count]; i++){
+        files = [fileManager directoryContentsAtPath:[pluginDirectories objectAtIndex:i]];
+        for(n=0; n<[files count]; n++){
+            file = [files objectAtIndex:n];
+            if(![filenames containsObject:file]){ // avoid duplicates
+                [filenames addObject:file];
+                [pluginPaths addObject:[[pluginDirectories objectAtIndex:i] stringByAppendingPathComponent:file]];
+            }
         }
     }
+    
     pluginArray = [NSMutableArray arrayWithCapacity:[pluginPaths count]];
     
     for(i=0; i<[pluginPaths count]; i++){

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list