Changeset 61523 in webkit


Ignore:
Timestamp:
Jun 20, 2010 7:34:54 PM (14 years ago)
Author:
andersca@apple.com
Message:

2010-06-20 Anders Carlsson <andersca@apple.com>

Reviewed by Dan Bernstein.

Get rid of the extensionToMIME mapping in WebBasePluginPackage
https://bugs.webkit.org/show_bug.cgi?id=40897

Instead of using the extensionToMIME mutable dictionary, use the MIME types vector.
While this makes lookup of MIME types based on extensions linear instead of constant,
the number of extensions per plug-in is too small for it to matter.

  • Plugins/WebBasePluginPackage.h:
  • Plugins/WebBasePluginPackage.mm: (-[WebBasePluginPackage initWithPath:]): (-[WebBasePluginPackage dealloc]): (-[WebBasePluginPackage supportsExtension:]): (-[WebBasePluginPackage MIMETypeForExtension:]): (-[WebBasePluginPackage setMIMEToExtensionsDictionary:]):
Location:
trunk/WebKit/mac
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit/mac/ChangeLog

    r61522 r61523  
     12010-06-20  Anders Carlsson  <andersca@apple.com>
     2
     3        Reviewed by Dan Bernstein.
     4
     5        Get rid of the extensionToMIME mapping in WebBasePluginPackage
     6        https://bugs.webkit.org/show_bug.cgi?id=40897
     7
     8        Instead of using the extensionToMIME mutable dictionary, use the MIME types vector.
     9        While this makes lookup of MIME types based on extensions linear instead of constant,
     10        the number of extensions per plug-in is too small for it to matter.
     11
     12        * Plugins/WebBasePluginPackage.h:
     13        * Plugins/WebBasePluginPackage.mm:
     14        (-[WebBasePluginPackage initWithPath:]):
     15        (-[WebBasePluginPackage dealloc]):
     16        (-[WebBasePluginPackage supportsExtension:]):
     17        (-[WebBasePluginPackage MIMETypeForExtension:]):
     18        (-[WebBasePluginPackage setMIMEToExtensionsDictionary:]):
     19
    1202010-06-20  Anders Carlsson  <andersca@apple.com>
    221
  • trunk/WebKit/mac/Plugins/WebBasePluginPackage.h

    r61522 r61523  
    6767    NSDictionary *MIMEToDescription;
    6868    NSDictionary *MIMEToExtensions;
    69     NSMutableDictionary *extensionToMIME;
    7069   
    7170    BP_CreatePluginMIMETypesPreferencesFuncPtr BP_CreatePluginMIMETypesPreferences;
     
    8988- (WebCore::String)bundleIdentifier;
    9089
    91 - (BOOL)supportsExtension:(NSString *)extension;
     90- (BOOL)supportsExtension:(const WebCore::String&)extension;
    9291- (BOOL)supportsMIMEType:(NSString *)MIMEType;
    9392
     
    9594
    9695- (NSString *)descriptionForMIMEType:(NSString *)MIMEType;
    97 - (NSString *)MIMETypeForExtension:(NSString *)extension;
     96- (NSString *)MIMETypeForExtension:(const WebCore::String&)extension;
    9897- (NSArray *)extensionsForMIMEType:(NSString *)MIMEType;
    9998
  • trunk/WebKit/mac/Plugins/WebBasePluginPackage.mm

    r61522 r61523  
    134134    }
    135135#endif
    136     extensionToMIME = [[NSMutableDictionary alloc] init];
    137136   
    138137    return self;
     
    278277    [MIMEToDescription release];
    279278    [MIMEToExtensions release];
    280     [extensionToMIME release];
    281279
    282280    if (cfBundle)
     
    328326}
    329327
    330 - (BOOL)supportsExtension:(NSString *)extension
    331 {
    332     return [extensionToMIME objectForKey:extension] != 0;
     328- (BOOL)supportsExtension:(const String&)extension
     329{
     330    ASSERT(extension.lower() == extension);
     331   
     332    for (size_t i = 0; i < mimeTypes.size(); ++i) {
     333        const MimeClassInfo& mimeClassInfo = mimeTypes[i];
     334       
     335        for (size_t j = 0; i < mimeClassInfo.extensions.size(); ++j) {
     336            if (mimeClassInfo.extensions[j] == extension)
     337                return YES;
     338        }
     339    }
     340
     341    return NO;
    333342}
    334343
     
    343352}
    344353
    345 - (NSString *)MIMETypeForExtension:(NSString *)extension
    346 {
    347     return [extensionToMIME objectForKey:extension];
     354- (NSString *)MIMETypeForExtension:(const String&)extension
     355{
     356    ASSERT(extension.lower() == extension);
     357   
     358    for (size_t i = 0; i < mimeTypes.size(); ++i) {
     359        const MimeClassInfo& mimeClassInfo = mimeTypes[i];
     360       
     361        for (size_t j = 0; j < mimeClassInfo.extensions.size(); ++j) {
     362            if (mimeClassInfo.extensions[j] == extension)
     363                return mimeClassInfo.type;
     364        }
     365    }
     366
     367    return nil;
    348368}
    349369
     
    363383    [MIMEToExtensions release];
    364384    MIMEToExtensions = [MIMEToExtensionsDictionary retain];
    365 
    366     // Reverse the mapping
    367     [extensionToMIME removeAllObjects];
    368 
    369     NSEnumerator *MIMEEnumerator = [MIMEToExtensions keyEnumerator], *extensionEnumerator;
    370     NSString *MIME, *extension;
    371     NSArray *extensions;
    372    
    373     while ((MIME = [MIMEEnumerator nextObject]) != nil) {
    374         extensions = [MIMEToExtensions objectForKey:MIME];
    375         extensionEnumerator = [extensions objectEnumerator];
    376 
    377         while ((extension = [extensionEnumerator nextObject]) != nil) {
    378             if (![extension isEqualToString:@""])
    379                 [extensionToMIME setObject:MIME forKey:extension];
    380         }
    381     }
    382385}
    383386
Note: See TracChangeset for help on using the changeset viewer.