[webkit-changes] [17701] trunk
Timothy Hatcher
timothy at apple.com
Fri Nov 10 10:46:33 PST 2006
WebKit could have a MIME type registry object that is ObjC++ that has
an ObjC only interface, then other non-ObjC++ files can use it. No
need for a bridge class in WebCore.
On Nov 10, 2006, at 10:42 AM, Brady Eidson wrote:
> I approved the new bridge because I thought it would be sloppy to
> just go around making WebKit files .mm - Indeed that'd be cleaner
> interface-wise, but is that our new policy?
>
> On Nov 10, 2006, at 8:29 AM, Geoffrey Garen wrote:
>
>> Why this new bridge, instead of having WebKit call directly into
>> WebCore? If a file is ObjC-only, the solution is to make it ObjC++,
>> not to add a new bridge.
>>
>> Geoff
>>
>> On Nov 9, 2006, at 11:31 PM, oliver at opensource.apple.com wrote:
>>
>>> Revision
>>> 17701
>>> Author
>>> oliver
>>> Date
>>> 2006-11-09 23:31:04 -0800 (Thu, 09 Nov 2006)
>>> Log Message
>>>
>>> 2006-11-09 Oliver Hunt
>>>
>>> Reviewed by Brady.
>>>
>>> Pulled MIME type handling out of WebFrameBridge and added
>>> a general C++ class to store/query MIME info
>>> Added an Obj-C bridge to provide WebKit with access to the
>>> MimeTypeRegistry for non-Obj-C++ classes.
>>>
>>> * WebCore.exp:
>>> * WebCore.xcodeproj/project.pbxproj:
>>> * bridge/mac/WebCoreFrameBridge.h:
>>> * bridge/mac/WebCoreFrameBridge.mm:
>>> * bridge/mac/WebMimeTypeRegistryBridge.h: Added.
>>> * bridge/mac/WebMimeTypeRegistryBridge.mm: Added.
>>> (+[WebMimeTypeRegistryBridge supportsImageWithMIMEType:]):
>>> (+[WebMimeTypeRegistryBridge
>>> supportsNonImageWithMIMEType:]):
>>> (+[WebMimeTypeRegistryBridge supportedNonImageMIMETypes]):
>>> (+[WebMimeTypeRegistryBridge supportedImageMIMETypes]):
>>> (+[WebMimeTypeRegistryBridge
>>> supportedImageResourceMIMETypes]):
>>> * platform/Image.cpp:
>>> (WebCore::Image::supportsType):
>>> * platform/Image.h:
>>> * platform/MimeTypeRegistry.cpp: Added.
>>> (WebCore::initialiseSupportedImageMIMETypes):
>>> (WebCore::initialiseSupportedNonImageMimeTypes):
>>> (WebCore::initialiseMimeTypeRegistry):
>>> (WebCore::MimeTypeRegistry::isSupportedImageMIMEType):
>>>
>>> (WebCore::MimeTypeRegistry::isSupportedImageResourceMIMEType):
>>> (WebCore::MimeTypeRegistry::isSupportedNonImageMIMEType):
>>> (WebCore::MimeTypeRegistry::getSupportedImageMIMETypes):
>>>
>>> (WebCore::MimeTypeRegistry::getSupportedImageResourceMIMETypes):
>>> (WebCore::MimeTypeRegistry::getSupportedNonImageMIMETypes):
>>> * platform/MimeTypeRegistry.h: Added.
>>> * platform/mac/ImageMac.mm:
>>> * platform/mac/MimeTypeRegistryMac.mm: Added.
>>> (WebCore::getMIMETypeForUTI):
>>> (WebCore::MimeTypeRegistry::getMIMETypeForExtension):
>>>
>>> Updated to make use of MimeTypeRegistry/bridge
>>>
>>> * Misc/WebNSPasteboardExtras.m:
>>> (-[NSPasteboard
>>> _web_writeImage:element:URL:title:archive:types:]):
>>> * WebCoreSupport/WebFrameBridge.mm:
>>> (-[WebFrameBridge determineObjectFromMIMEType:URL:]):
>>> * WebView/WebDataSource.mm:
>>> (-[WebDataSource _documentFragmentWithArchive:]):
>>> * WebView/WebHTMLRepresentation.m:
>>> (+[WebHTMLRepresentation supportedNonImageMIMETypes]):
>>> (+[WebHTMLRepresentation supportedImageMIMETypes]):
>>> * WebView/WebHTMLView.m:
>>> (-[WebHTMLView _imageExistsAtPaths:]):
>>> (-[WebHTMLView _documentFragmentWithPaths:]):
>>>
>>> Modified Paths
>>>
>>> trunk/WebCore/ChangeLog
>>> trunk/WebCore/WebCore.exp
>>> trunk/WebCore/WebCore.xcodeproj/project.pbxproj
>>> trunk/WebCore/bridge/mac/WebCoreFrameBridge.h
>>> trunk/WebCore/bridge/mac/WebCoreFrameBridge.mm
>>> trunk/WebCore/platform/Image.cpp
>>> trunk/WebCore/platform/Image.h
>>> trunk/WebCore/platform/mac/ImageMac.mm
>>> trunk/WebKit/ChangeLog
>>> trunk/WebKit/Misc/WebNSPasteboardExtras.m
>>> trunk/WebKit/WebCoreSupport/WebFrameBridge.mm
>>> trunk/WebKit/WebView/WebDataSource.mm
>>> trunk/WebKit/WebView/WebHTMLRepresentation.m
>>> trunk/WebKit/WebView/WebHTMLView.m
>>> Added Paths
>>>
>>> trunk/WebCore/bridge/mac/WebMimeTypeRegistryBridge.h
>>> trunk/WebCore/bridge/mac/WebMimeTypeRegistryBridge.mm
>>> trunk/WebCore/platform/MimeTypeRegistry.cpp
>>> trunk/WebCore/platform/MimeTypeRegistry.h
>>> trunk/WebCore/platform/mac/MimeTypeRegistryMac.mm
>>> Diff
>>>
>>> Modified: trunk/WebCore/ChangeLog (17700 => 17701)
>>>
>>> --- trunk/WebCore/ChangeLog 2006-11-10 05:17:06 UTC (rev 17700)
>>> +++ trunk/WebCore/ChangeLog 2006-11-10 07:31:04 UTC (rev 17701)
>>> @@ -1,3 +1,42 @@
>>> +2006-11-09 Oliver Hunt <oliver at apple.com>
>>> +
>>> + Reviewed by Brady.
>>> +
>>> + Pulled MIME type handling out of WebFrameBridge and added
>>> + a general C++ class to store/query MIME info
>>> + Added an Obj-C bridge to provide WebKit with access to the
>>> + MimeTypeRegistry for non-Obj-C++ classes.
>>> +
>>> + * WebCore.exp:
>>> + * WebCore.xcodeproj/project.pbxproj:
>>> + * bridge/mac/WebCoreFrameBridge.h:
>>> + * bridge/mac/WebCoreFrameBridge.mm:
>>> + * bridge/mac/WebMimeTypeRegistryBridge.h: Added.
>>> + * bridge/mac/WebMimeTypeRegistryBridge.mm: Added.
>>> + (+[WebMimeTypeRegistryBridge supportsImageWithMIMEType:]):
>>> + (+[WebMimeTypeRegistryBridge
>>> supportsNonImageWithMIMEType:]):
>>> + (+[WebMimeTypeRegistryBridge supportedNonImageMIMETypes]):
>>> + (+[WebMimeTypeRegistryBridge supportedImageMIMETypes]):
>>> + (+[WebMimeTypeRegistryBridge
>>> supportedImageResourceMIMETypes]):
>>> + * platform/Image.cpp:
>>> + (WebCore::Image::supportsType):
>>> + * platform/Image.h:
>>> + * platform/MimeTypeRegistry.cpp: Added.
>>> + (WebCore::initialiseSupportedImageMIMETypes):
>>> + (WebCore::initialiseSupportedNonImageMimeTypes):
>>> + (WebCore::initialiseMimeTypeRegistry):
>>> + (WebCore::MimeTypeRegistry::isSupportedImageMIMEType):
>>> +
>>> (WebCore::MimeTypeRegistry::isSupportedImageResourceMIMEType):
>>> + (WebCore::MimeTypeRegistry::isSupportedNonImageMIMEType):
>>> + (WebCore::MimeTypeRegistry::getSupportedImageMIMETypes):
>>> +
>>> (WebCore::MimeTypeRegistry::getSupportedImageResourceMIMETypes):
>>> + (WebCore::MimeTypeRegistry::getSupportedNonImageMIMETypes):
>>> + * platform/MimeTypeRegistry.h: Added.
>>> + * platform/mac/ImageMac.mm:
>>> + * platform/mac/MimeTypeRegistryMac.mm: Added.
>>> + (WebCore::getMIMETypeForUTI):
>>> + (WebCore::MimeTypeRegistry::getMIMETypeForExtension):
>>> +
>>> 2006-11-09 Maciej Stachowiak <mjs at apple.com>
>>>
>>> Reviewed by Oliver.
>>> Modified: trunk/WebCore/WebCore.exp (17700 => 17701)
>>>
>>> --- trunk/WebCore/WebCore.exp 2006-11-10 05:17:06 UTC (rev 17700)
>>> +++ trunk/WebCore/WebCore.exp 2006-11-10 07:31:04 UTC (rev 17701)
>>> @@ -116,6 +116,7 @@
>>> .objc_class_name_WebCoreSettings
>>> .objc_class_name_WebCoreStringTruncator
>>> .objc_class_name_WebCoreViewFactory
>>> +.objc_class_name_WebMimeTypeRegistryBridge
>>> .objc_class_name_WebDashboardRegion
>>> .objc_class_name_WebScriptObject
>>> .objc_class_name_WebScriptObjectPrivate
>>> @@ -392,6 +393,9 @@
>>> __ZNK7WebCore9FrameTree24traversePreviousWithWrapEb
>>> __ZNK7WebCore9FrameTree4findERKNS_12AtomicStringE
>>> __ZNK7WebCore9FrameTree5childERKNS_12AtomicStringE
>>> +
>>> __ZN7WebCore16MimeTypeRegistry24isSupportedImageMIMETypeERKNS_6StringE
>>> +
>>> __ZN7WebCore16MimeTypeRegistry32isSupportedImageResourceMIMETypeERKNS_6StringE
>>> +
>>> __ZN7WebCore16MimeTypeRegistry27isSupportedNonImageMIMETypeERKNS_6StringE
>>> __ZNK7WebCore9Selection17isContentEditableEv
>>> __ZNK7WebCore9Selection23isContentRichlyEditableEv
>>> __ZNK7WebCore9Selection7toRangeEv
>>> Modified: trunk/WebCore/WebCore.xcodeproj/project.pbxproj (17700
>>> => 17701)
>>>
>>> --- trunk/WebCore/WebCore.xcodeproj/project.pbxproj 2006-11-10
>>> 05:17:06 UTC (rev 17700)
>>> +++ trunk/WebCore/WebCore.xcodeproj/project.pbxproj 2006-11-10
>>> 07:31:04 UTC (rev 17701)
>>> @@ -1626,6 +1626,9 @@
>>> 93F19B1608245E59001E9ABC /* JavaScriptCore.framework in
>>> Frameworks */ = {isa = PBXBuildFile; fileRef =
>>> F8216299029F4FB501000131 /* JavaScriptCore.framework */; };
>>> 93F19B1708245E59001E9ABC /* libicucore.dylib in Frameworks */ =
>>> {isa = PBXBuildFile; fileRef = 93F1D31A0558CC5C00821BC0 /*
>>> libicucore.dylib */; };
>>> 93F19B1808245E59001E9ABC /* libxslt.dylib in Frameworks */ =
>>> {isa = PBXBuildFile; fileRef = 840633070731A77200DB1FD1 /*
>>> libxslt.dylib */; };
>>> + A70023FD0B02BEAB00170215 /* MimeTypeRegistry.cpp in Sources */
>>> = {isa = PBXBuildFile; fileRef = A70023FB0B02BEAB00170215 /*
>>> MimeTypeRegistry.cpp */; };
>>> + A70023FE0B02BEAB00170215 /* MimeTypeRegistry.h in Headers */ =
>>> {isa = PBXBuildFile; fileRef = A70023FC0B02BEAB00170215 /*
>>> MimeTypeRegistry.h */; settings = {ATTRIBUTES = (Private, ); }; };
>>> + A70024000B02BECC00170215 /* MimeTypeRegistryMac.mm in Sources
>>> */ = {isa = PBXBuildFile; fileRef = A70023FF0B02BECC00170215 /*
>>> MimeTypeRegistryMac.mm */; };
>>> A7638A8B09958EA50007E14F /* WKDisplacementMapFilter.h in
>>> Headers */ = {isa = PBXBuildFile; fileRef =
>>> A7638A8909958EA50007E14F /* WKDisplacementMapFilter.h */; };
>>> A7638A8C09958EA50007E14F /* WKDisplacementMapFilter.m in
>>> Sources */ = {isa = PBXBuildFile; fileRef =
>>> A7638A8A09958EA50007E14F /* WKDisplacementMapFilter.m */; };
>>> A7638A92099592C30007E14F /* WKDisplacementMapFilter.cikernel in
>>> Resources */ = {isa = PBXBuildFile; fileRef =
>>> A7638A91099592C30007E14F /* WKDisplacementMapFilter.cikernel */; };
>>> @@ -1648,6 +1651,8 @@
>>> A7B97B850979C3A1000E8EB1 /* WKTableTransferFilter.cikernel in
>>> Resources */ = {isa = PBXBuildFile; fileRef =
>>> A7B97B740979C3A1000E8EB1 /* WKTableTransferFilter.cikernel */; };
>>> A7B97B860979C3A1000E8EB1 /* WKTableTransferFilter.h in Headers
>>> */ = {isa = PBXBuildFile; fileRef = A7B97B750979C3A1000E8EB1 /*
>>> WKTableTransferFilter.h */; };
>>> A7B97B870979C3A1000E8EB1 /* WKTableTransferFilter.m in Sources
>>> */ = {isa = PBXBuildFile; fileRef = A7B97B760979C3A1000E8EB1 /*
>>> WKTableTransferFilter.m */; };
>>> + A7D23C540B03E41300582A4F /* WebMimeTypeRegistryBridge.h in
>>> Headers */ = {isa = PBXBuildFile; fileRef =
>>> A7D23C520B03E41300582A4F /* WebMimeTypeRegistryBridge.h */;
>>> settings = {ATTRIBUTES = (Private, ); }; };
>>> + A7D23C550B03E41300582A4F /* WebMimeTypeRegistryBridge.mm in
>>> Sources */ = {isa = PBXBuildFile; fileRef =
>>> A7D23C530B03E41300582A4F /* WebMimeTypeRegistryBridge.mm */; };
>>> A80E6CE40A1989CA007FB8C5 /* CSSValueList.cpp in Sources */ =
>>> {isa = PBXBuildFile; fileRef = A80E6CBA0A1989CA007FB8C5 /*
>>> CSSValueList.cpp */; };
>>> A80E6CE50A1989CA007FB8C5 /* CSSBorderImageValue.cpp in Sources
>>> */ = {isa = PBXBuildFile; fileRef = A80E6CBB0A1989CA007FB8C5 /*
>>> CSSBorderImageValue.cpp */; };
>>> A80E6CE60A1989CA007FB8C5 /* CSSPrimitiveValue.h in Headers */ =
>>> {isa = PBXBuildFile; fileRef = A80E6CBC0A1989CA007FB8C5 /*
>>> CSSPrimitiveValue.h */; settings = {ATTRIBUTES = (Private, ); }; };
>>> @@ -4441,6 +4446,9 @@
>>> 93F8B3060A300FEA00F61AB8 /* CodeGeneratorJS.pm */ = {isa =
>>> PBXFileReference; fileEncoding = 4; lastKnownFileType =
>>> text.script.perl; name = CodeGeneratorJS.pm; path = ../scripts/
>>> CodeGeneratorJS.pm; sourceTree = "<group>"; };
>>> 93F8B3070A300FEA00F61AB8 /* generate-bindings.pl */ = {isa =
>>> PBXFileReference; fileEncoding = 4; lastKnownFileType =
>>> text.script.perl; name = "generate-bindings.pl"; path = "scripts/
>>> generate-bindings.pl"; sourceTree = "<group>"; };
>>> 93F8B3080A300FEA00F61AB8 /* IDLStructure.pm */ = {isa =
>>> PBXFileReference; fileEncoding = 4; lastKnownFileType =
>>> text.script.perl; name = IDLStructure.pm; path = scripts/
>>> IDLStructure.pm; sourceTree = "<group>"; };
>>> + A70023FB0B02BEAB00170215 /* MimeTypeRegistry.cpp */ = {isa =
>>> PBXFileReference; fileEncoding = 30; lastKnownFileType =
>>> sourcecode.cpp.cpp; path = MimeTypeRegistry.cpp; sourceTree =
>>> "<group>"; };
>>> + A70023FC0B02BEAB00170215 /* MimeTypeRegistry.h */ = {isa =
>>> PBXFileReference; fileEncoding = 30; lastKnownFileType =
>>> sourcecode.c.h; path = MimeTypeRegistry.h; sourceTree =
>>> "<group>"; };
>>> + A70023FF0B02BECC00170215 /* MimeTypeRegistryMac.mm */ = {isa =
>>> PBXFileReference; fileEncoding = 30; lastKnownFileType =
>>> sourcecode.cpp.objcpp; path = MimeTypeRegistryMac.mm; sourceTree =
>>> "<group>"; };
>>> A7638A8909958EA50007E14F /* WKDisplacementMapFilter.h */ = {isa
>>> = PBXFileReference; fileEncoding = 30; lastKnownFileType =
>>> sourcecode.c.h; path = WKDisplacementMapFilter.h; sourceTree =
>>> "<group>"; };
>>> A7638A8A09958EA50007E14F /* WKDisplacementMapFilter.m */ = {isa
>>> = PBXFileReference; fileEncoding = 30; lastKnownFileType =
>>> sourcecode.c.objc; path = WKDisplacementMapFilter.m; sourceTree =
>>> "<group>"; };
>>> A7638A91099592C30007E14F /* WKDisplacementMapFilter.cikernel */
>>> = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType =
>>> text; path = WKDisplacementMapFilter.cikernel; sourceTree =
>>> "<group>"; };
>>> @@ -4463,6 +4471,8 @@
>>> A7B97B740979C3A1000E8EB1 /* WKTableTransferFilter.cikernel */ =
>>> {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType =
>>> text; path = WKTableTransferFilter.cikernel; sourceTree =
>>> "<group>"; };
>>> A7B97B750979C3A1000E8EB1 /* WKTableTransferFilter.h */ = {isa =
>>> PBXFileReference; fileEncoding = 30; lastKnownFileType =
>>> sourcecode.c.h; path = WKTableTransferFilter.h; sourceTree =
>>> "<group>"; };
>>> A7B97B760979C3A1000E8EB1 /* WKTableTransferFilter.m */ = {isa =
>>> PBXFileReference; fileEncoding = 30; lastKnownFileType =
>>> sourcecode.c.objc; path = WKTableTransferFilter.m; sourceTree =
>>> "<group>"; };
>>> + A7D23C520B03E41300582A4F /* WebMimeTypeRegistryBridge.h */ =
>>> {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType =
>>> sourcecode.c.h; path = WebMimeTypeRegistryBridge.h; sourceTree =
>>> "<group>"; };
>>> + A7D23C530B03E41300582A4F /* WebMimeTypeRegistryBridge.mm */ =
>>> {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType =
>>> sourcecode.cpp.objcpp; path = WebMimeTypeRegistryBridge.mm;
>>> sourceTree = "<group>"; };
>>> A80E6CBA0A1989CA007FB8C5 /* CSSValueList.cpp */ = {isa =
>>> PBXFileReference; fileEncoding = 30; lastKnownFileType =
>>> sourcecode.cpp.cpp; path = CSSValueList.cpp; sourceTree =
>>> "<group>"; };
>>> A80E6CBB0A1989CA007FB8C5 /* CSSBorderImageValue.cpp */ = {isa =
>>> PBXFileReference; fileEncoding = 30; lastKnownFileType =
>>> sourcecode.cpp.cpp; path = CSSBorderImageValue.cpp; sourceTree =
>>> "<group>"; };
>>> A80E6CBC0A1989CA007FB8C5 /* CSSPrimitiveValue.h */ = {isa =
>>> PBXFileReference; fileEncoding = 30; lastKnownFileType =
>>> sourcecode.c.h; path = CSSPrimitiveValue.h; sourceTree =
>>> "<group>"; };
>>> @@ -6436,6 +6446,7 @@
>>> 935207BF09BD412000F2038D /* LocalizedStringsMac.mm */,
>>> 1402645D0AFDC19B005919E2 /* LoggingMac.mm */,
>>> 65F5382409B2B57500F3DC4A /* mac-encodings.txt */,
>>> + A70023FF0B02BECC00170215 /* MimeTypeRegistryMac.mm */,
>>> 935C476F09AC4D7300A6AAB4 /* PlatformMouseEventMac.mm */,
>>> BC3FCAA80AC3DB5800BA54AD /* PlatformScrollBar.h */,
>>> BC7B2AF90450824100A8000F /* PlatformScrollBarMac.mm */,
>>> @@ -6552,6 +6563,8 @@
>>> F587855502DE375901EA4122 /* WebCoreViewFactory.m */,
>>> 5150C2A10702629000AF642C /* WebDashboardRegion.h */,
>>> 5150C2A50702629800AF642C /* WebDashboardRegion.m */,
>>> + A7D23C520B03E41300582A4F /* WebMimeTypeRegistryBridge.h */,
>>> + A7D23C530B03E41300582A4F /* WebMimeTypeRegistryBridge.mm */,
>>> );
>>> path = mac;
>>> sourceTree = "<group>";
>>> @@ -8571,6 +8584,8 @@
>>> 935207BD09BD410A00F2038D /* LocalizedStrings.h */,
>>> A8239DFE09B3CF8A00B60641 /* Logging.cpp */,
>>> A8239DFF09B3CF8A00B60641 /* Logging.h */,
>>> + A70023FB0B02BEAB00170215 /* MimeTypeRegistry.cpp */,
>>> + A70023FC0B02BEAB00170215 /* MimeTypeRegistry.h */,
>>> AA98B87C0AAA02F8001A44C2 /* Path.cpp */,
>>> 93032CC909AEC34B00F82A18 /* Path.h */,
>>> BCC8D1710988301200140BF2 /* Pen.cpp */,
>>> @@ -9127,6 +9142,8 @@
>>> 93F1996D08245E59001E9ABC /* DeprecatedPtrListImpl.h in
>>> Headers */,
>>> 93F1996E08245E59001E9ABC /* LoaderFunctions.h in Headers */,
>>> 93F1997708245E59001E9ABC /* WebCorePageState.h in Headers */,
>>> + A70023FE0B02BEAB00170215 /* MimeTypeRegistry.h in Headers */,
>>> + A7D23C540B03E41300582A4F /* WebMimeTypeRegistryBridge.h in
>>> Headers */,
>>> 93F1998208245E59001E9ABC /* DeprecatedPtrList.h in Headers */,
>>> 93F1998308245E59001E9ABC /* DeprecatedPtrQueue.h in Headers */,
>>> 93F1998A08245E59001E9ABC /* RegularExpression.h in Headers */,
>>> @@ -11756,8 +11773,11 @@
>>> 1402692D0AFE72D8005919E2 /* ScreenMac.mm in Sources */,
>>> 65DAD9FC0AFD86B400CE53ED /* FormData.cpp in Sources */,
>>> 65DADA010AFD86BF00CE53ED /* FormDataStreamMac.mm in Sources */,
>>> + A70023FD0B02BEAB00170215 /* MimeTypeRegistry.cpp in Sources */,
>>> + A70024000B02BECC00170215 /* MimeTypeRegistryMac.mm in Sources
>>> */,
>>> 651888880AFF3BF700164720 /* ResourceError.cpp in Sources */,
>>> 6518888B0AFF3C1400164720 /* ResourceErrorMac.mm in Sources */,
>>> + A7D23C550B03E41300582A4F /* WebMimeTypeRegistryBridge.mm in
>>> Sources */,
>>> );
>>> runOnlyForDeploymentPostprocessing = 0;
>>> };
>>> Modified: trunk/WebCore/bridge/mac/WebCoreFrameBridge.h (17700 =>
>>> 17701)
>>>
>>> --- trunk/WebCore/bridge/mac/WebCoreFrameBridge.h 2006-11-10
>>> 05:17:06 UTC (rev 17700)
>>> +++ trunk/WebCore/bridge/mac/WebCoreFrameBridge.h 2006-11-10
>>> 07:31:04 UTC (rev 17701)
>>> @@ -132,10 +132,6 @@
>>>
>>> - (void)close;
>>>
>>> -+ (NSArray *)supportedNonImageMIMETypes;
>>> -+ (NSArray *)supportedImageMIMETypes;
>>> -+ (NSArray *)supportedImageResourceMIMETypes; // includes types
>>> like PDF
>>> -
>>> - (void)addData:(NSData *)data;
>>>
>>> - (void)saveDocumentState;
>>> Modified: trunk/WebCore/bridge/mac/WebCoreFrameBridge.mm (17700 =>
>>> 17701)
>>>
>>> --- trunk/WebCore/bridge/mac/WebCoreFrameBridge.mm 2006-11-10
>>> 05:17:06 UTC (rev 17700)
>>> +++ trunk/WebCore/bridge/mac/WebCoreFrameBridge.mm 2006-11-10
>>> 07:31:04 UTC (rev 17701)
>>> @@ -247,74 +247,6 @@
>>> return nil;
>>> }
>>>
>>> -+ (NSArray *)supportedNonImageMIMETypes
>>> -{
>>> - return [NSArray arrayWithObjects:
>>> - @"text/html",
>>> - @"text/xml",
>>> - @"text/xsl",
>>> - @"text/",
>>> - @"application/x-javascript",
>>> - @"application/xml",
>>> - @"application/xhtml+xml",
>>> - @"application/rss+xml",
>>> - @"application/atom+xml",
>>> - @"application/x-webarchive",
>>> - @"multipart/x-mixed-replace",
>>> -#ifdef SVG_SUPPORT
>>> - @"image/svg+xml",
>>> -#endif
>>> - nil];
>>> -}
>>> -
>>> -+ (NSArray *)supportedImageResourceMIMETypes
>>> -{
>>> - static RetainPtr<NSArray> supportedTypes;
>>> - if (!supportedTypes) {
>>> - NSMutableSet* set = [[NSMutableSet alloc] init];
>>> -
>>> - // FIXME: Doesn't make sense to ask NSImage for a list of
>>> file types and extensions
>>> - // because we aren't using NSImage to decode the images
>>> any more.
>>> - NSEnumerator* enumerator = [[NSImage imageFileTypes]
>>> objectEnumerator];
>>> - while (NSString* type = [enumerator nextObject]) {
>>> - NSString* mime = wkGetMIMETypeForExtension(type);
>>> - if (mime)
>>> - [set addObject:mime];
>>> - }
>>> -
>>> - // image/pjpeg is the MIME type for progressive jpeg.
>>> These files have the jpg file extension.
>>> - // I believe we need this this to work around
>>> wkGetMIMETypeForExtension's limitation of only
>>> - // providing one MIME type for each extension.
>>> - [set addObject:@"image/pjpeg"];
>>> -
>>> - [set removeObject:@"application/octet-stream"];
>>> -
>>> - supportedTypes = [set allObjects];
>>> -
>>> - [set release];
>>> - }
>>> -
>>> - return supportedTypes.get();
>>> -}
>>> -
>>> -+ (NSArray *)supportedImageMIMETypes
>>> -{
>>> - static RetainPtr<NSArray> supportedTypes;
>>> - if (!supportedTypes) {
>>> - NSMutableArray* types = [[self
>>> supportedImageResourceMIMETypes] mutableCopy];
>>> - [types removeObject:@"application/pdf"];
>>> - [types removeObject:@"application/postscript"];
>>> - NSArray* copy = [types copy];
>>> - [types release];
>>> -
>>> - supportedTypes = copy;
>>> -
>>> - [copy release];
>>> - }
>>> -
>>> - return supportedTypes.get();
>>> -}
>>> -
>>> + (WebCoreFrameBridge *)bridgeForDOMDocument:(DOMDocument
>>> *)document
>>> {
>>> return bridge([document _document]->frame());
>>> Added: trunk/WebCore/bridge/mac/WebMimeTypeRegistryBridge.h (0 =>
>>> 17701)
>>>
>>> --- trunk/WebCore/bridge/mac/
>>> WebMimeTypeRegistryBridge.h (rev 0)
>>> +++ trunk/WebCore/bridge/mac/WebMimeTypeRegistryBridge.h
>>> 2006-11-10 07:31:04 UTC (rev 17701)
>>> @@ -0,0 +1,39 @@
>>> +/*
>>> + * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. All
>>> rights reserved.
>>> + *
>>> + * Redistribution and use in source and binary forms, with or
>>> without
>>> + * modification, are permitted provided that the following
>>> conditions
>>> + * are met:
>>> + * 1. Redistributions of source code must retain the above
>>> copyright
>>> + * notice, this list of conditions and the following disclaimer.
>>> + * 2. Redistributions in binary form must reproduce the above
>>> copyright
>>> + * notice, this list of conditions and the following
>>> disclaimer in the
>>> + * documentation and/or other materials provided with the
>>> distribution.
>>> + *
>>> + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS''
>>> AND ANY
>>> + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
>>> THE
>>> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
>>> PARTICULAR
>>> + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER,
>>> INC. OR
>>> + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>>> SPECIAL,
>>> + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
>>> LIMITED TO,
>>> + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
>>> DATA, OR
>>> + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
>>> THEORY
>>> + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
>>> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
>>> THE USE
>>> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
>>> DAMAGE.
>>> + */
>>> + at interface WebMimeTypeRegistryBridge : NSObject {
>>> +
>>> +}
>>> +
>>> +//Provide access to WebCore MimeTypeManager
>>> ++ (BOOL)supportsImageResourceWithMIMEType:(NSString *)mimeType;
>>> ++ (BOOL)supportsImageWithMIMEType:(NSString *)mimeType;
>>> ++ (BOOL)supportsNonImageWithMIMEType:(NSString *)mimeType;
>>> +
>>> + //Access to the underlying lists of supported types, needed
>>> by WebKit
>>> ++ (NSArray *)supportedNonImageMIMETypes;
>>> ++ (NSArray *)supportedImageMIMETypes;
>>> ++ (NSArray *)supportedImageResourceMIMETypes; // includes types
>>> like PDF
>>> +
>>> + at end
>>> Added: trunk/WebCore/bridge/mac/WebMimeTypeRegistryBridge.mm (0 =>
>>> 17701)
>>>
>>> --- trunk/WebCore/bridge/mac/
>>> WebMimeTypeRegistryBridge.mm (rev 0)
>>> +++ trunk/WebCore/bridge/mac/WebMimeTypeRegistryBridge.mm
>>> 2006-11-10 07:31:04 UTC (rev 17701)
>>> @@ -0,0 +1,99 @@
>>> +/*
>>> + * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. All
>>> rights reserved.
>>> + *
>>> + * Redistribution and use in source and binary forms, with or
>>> without
>>> + * modification, are permitted provided that the following
>>> conditions
>>> + * are met:
>>> + * 1. Redistributions of source code must retain the above
>>> copyright
>>> + * notice, this list of conditions and the following disclaimer.
>>> + * 2. Redistributions in binary form must reproduce the above
>>> copyright
>>> + * notice, this list of conditions and the following
>>> disclaimer in the
>>> + * documentation and/or other materials provided with the
>>> distribution.
>>> + *
>>> + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS''
>>> AND ANY
>>> + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
>>> THE
>>> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
>>> PARTICULAR
>>> + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER,
>>> INC. OR
>>> + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>>> SPECIAL,
>>> + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
>>> LIMITED TO,
>>> + * PROCUREMENT OF
>>> SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
>>> + * PROFITS; OR BUSINESS
>>> INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
>>> + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
>>> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
>>> THE USE
>>> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
>>> DAMAGE.
>>> + */
>>> +
>>> +#import "config.h"
>>> +#import "WebMimeTypeRegistryBridge.h"
>>> +#import "MimeTypeRegistry.h"
>>> +#import "RetainPtr.h"
>>> +
>>> +using namespace WebCore;
>>> +
>>> + at implementation WebMimeTypeRegistryBridge
>>> +
>>> ++ (BOOL)supportsImageResourceWithMIMEType:(NSString *)mimeType
>>> +{
>>> + return
>>> MimeTypeRegistry::isSupportedImageResourceMIMEType(mimeType);
>>> +}
>>> +
>>> ++ (BOOL)supportsImageWithMIMEType:(NSString *)mimeType
>>> +{
>>> + return MimeTypeRegistry::isSupportedImageMIMEType(mimeType);
>>> +}
>>> +
>>> ++ (BOOL)supportsNonImageWithMIMEType:(NSString *)mimeType
>>> +{
>>> + return MimeTypeRegistry::isSupportedNonImageMIMEType(mimeType);
>>> +}
>>> +
>>> +
>>> ++ (NSArray *)supportedNonImageMIMETypes
>>> +{
>>> + static RetainPtr<NSArray> supportedTypes;
>>> + if (!supportedTypes) {
>>> + NSMutableArray* atypes = [[NSMutableArray alloc] init];
>>> + const HashSet<String>& types =
>>> MimeTypeRegistry::getSupportedNonImageMIMETypes();
>>> + for (HashSet<String>::const_iterator it = types.begin();
>>> it != types.end(); ++it) {
>>> + [atypes addObject:(NSString *)(*it)];
>>> + }
>>> + supportedTypes = (NSArray *)[atypes copy];
>>> + [atypes release];
>>> + }
>>> +
>>> + return supportedTypes.get();
>>> +}
>>> +
>>> ++ (NSArray *)supportedImageMIMETypes
>>> +{
>>> + static RetainPtr<NSArray> supportedTypes;
>>> + if (!supportedTypes) {
>>> + NSMutableArray* atypes = [[NSMutableArray alloc] init];
>>> + const HashSet<String>& types =
>>> MimeTypeRegistry::getSupportedImageMIMETypes();
>>> + for (HashSet<String>::const_iterator it = types.begin();
>>> it != types.end(); ++it) {
>>> + [atypes addObject:(NSString *)(*it)];
>>> + }
>>> + supportedTypes = (NSArray *)[atypes copy];
>>> + [atypes release];
>>> + }
>>> +
>>> + return supportedTypes.get();
>>> +}
>>> +
>>> ++ (NSArray *)supportedImageResourceMIMETypes
>>> +{
>>> + static RetainPtr<NSArray> supportedTypes;
>>> + if (!supportedTypes) {
>>> + NSMutableArray* atypes = [[NSMutableArray alloc] init];
>>> + const HashSet<String>& types =
>>> MimeTypeRegistry::getSupportedImageResourceMIMETypes();
>>> + for (HashSet<String>::const_iterator it = types.begin();
>>> it != types.end(); ++it) {
>>> + [atypes addObject:(NSString *)(*it)];
>>> + }
>>> + supportedTypes = (NSArray *)[atypes copy];
>>> + [atypes release];
>>> + }
>>> +
>>> + return supportedTypes.get();
>>> +}
>>> +
>>> + at end
>>> Modified: trunk/WebCore/platform/Image.cpp (17700 => 17701)
>>>
>>> --- trunk/WebCore/platform/Image.cpp 2006-11-10 05:17:06 UTC (rev
>>> 17700)
>>> +++ trunk/WebCore/platform/Image.cpp 2006-11-10 07:31:04 UTC (rev
>>> 17701)
>>> @@ -34,6 +34,7 @@
>>> #include "PlatformString.h"
>>> #include "Timer.h"
>>> #include <wtf/Vector.h>
>>> +#include "MimeTypeRegistry.h"
>>>
>>> #if PLATFORM(CG)
>>> // FIXME: Will go away when we make PDF a subclass.
>>> @@ -114,6 +115,12 @@
>>> m_frames[index].m_hasAlpha =
>>> m_source.frameHasAlphaAtIndex(index);
>>> }
>>>
>>> +
>>> +bool Image::supportsType(const String& type)
>>> +{
>>> + return
>>> MimeTypeRegistry::isSupportedImageResourceMIMEType(type);
>>> +}
>>> +
>>> bool Image::isNull() const
>>> {
>>> return size().isEmpty();
>>> Modified: trunk/WebCore/platform/Image.h (17700 => 17701)
>>>
>>> --- trunk/WebCore/platform/Image.h 2006-11-10 05:17:06 UTC (rev
>>> 17700)
>>> +++ trunk/WebCore/platform/Image.h 2006-11-10 07:31:04 UTC (rev
>>> 17701)
>>> @@ -103,7 +103,7 @@
>>> ~Image();
>>>
>>> static Image* loadPlatformResource(const char *name);
>>> - static bool supportsType(const String& type);
>>> + static bool supportsType(const String& type);
>>>
>>> bool isNull() const;
>>>
>>> Added: trunk/WebCore/platform/MimeTypeRegistry.cpp (0 => 17701)
>>>
>>> --- trunk/WebCore/platform/
>>> MimeTypeRegistry.cpp (rev 0)
>>> +++ trunk/WebCore/platform/MimeTypeRegistry.cpp 2006-11-10
>>> 07:31:04 UTC (rev 17701)
>>> @@ -0,0 +1,156 @@
>>> +/*
>>> + * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
>>> + *
>>> + * Redistribution and use in source and binary forms, with or
>>> without
>>> + * modification, are permitted provided that the following
>>> conditions
>>> + * are met:
>>> + * 1. Redistributions of source code must retain the above
>>> copyright
>>> + * notice, this list of conditions and the following disclaimer.
>>> + * 2. Redistributions in binary form must reproduce the above
>>> copyright
>>> + * notice, this list of conditions and the following
>>> disclaimer in the
>>> + * documentation and/or other materials provided with the
>>> distribution.
>>> + *
>>> + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS''
>>> AND ANY
>>> + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
>>> THE
>>> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
>>> PARTICULAR
>>> + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER,
>>> INC. OR
>>> + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>>> SPECIAL,
>>> + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
>>> LIMITED TO,
>>> + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
>>> DATA, OR
>>> + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
>>> THEORY
>>> + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
>>> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
>>> THE USE
>>> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
>>> DAMAGE.
>>> + */
>>> +
>>> +#include "config.h"
>>> +#include "MimeTypeRegistry.h"
>>> +#include "wtf/HashMap.h"
>>> +#include "wtf/HashSet.h"
>>> +#include <ApplicationServices/ApplicationServices.h>
>>> +#include "WebCoreSystemInterface.h"
>>> +
>>> +#include "StringHash.h"
>>> +
>>> +namespace WebCore
>>> +{
>>> +static WTF::HashSet<String> *supportedImageResourceMIMETypes;
>>> +static WTF::HashSet<String> *supportedImageMIMETypes;
>>> +static WTF::HashSet<String> *supportedNonImageMIMETypes;
>>> +
>>> +#if PLATFORM(CG)
>>> +extern String getMIMETypeForUTI(const String & uti);
>>> +#endif
>>> +
>>> +static void initialiseSupportedImageMIMETypes()
>>> +{
>>> +#if PLATFORM(CG)
>>> + CFArrayRef supportedTypes = CGImageSourceCopyTypeIdentifiers();
>>> + int cnt = CFArrayGetCount(supportedTypes);
>>> + for(int i = 0; i < cnt; i++) {
>>> + CFStringRef supportedType =
>>> (CFStringRef)CFArrayGetValueAtIndex(supportedTypes, i);
>>> + String mimeType=getMIMETypeForUTI(supportedType);
>>> + if (!mimeType.isEmpty()) {
>>> + supportedImageMIMETypes->add(mimeType);
>>> + supportedImageResourceMIMETypes->add(mimeType);
>>> + }
>>> + CFRelease(supportedType);
>>> + }
>>> + CFRelease(supportedTypes);
>>> +
>>> + //We only get one MIME type per UTI, hence our need to add
>>> these manually
>>> + supportedImageMIMETypes->add("image/pjpeg");
>>> + supportedImageResourceMIMETypes->add("image/pjpeg");
>>> +
>>> + //We don't want to try to treat all binary data as an image
>>> + supportedImageMIMETypes->remove("application/octet-stream");
>>> + supportedImageResourceMIMETypes->remove("application/octet-
>>> stream");
>>> +
>>> + //Don't treat pdf/postscript as images directly
>>> + supportedImageMIMETypes->remove("application/pdf");
>>> + supportedImageMIMETypes->remove("application/postscript");
>>> +
>>> +#else
>>> + //assume that all implementations at least support
>>> + supportedImageMIMETypes->add("jpg", "image/jpeg");
>>> + supportedImageMIMETypes->add("jpeg", "image/jpeg");
>>> + supportedImageMIMETypes->add("png", "image/png");
>>> + supportedImageMIMETypes->add("gif", "image/gif");
>>> + supportedImageMIMETypes->add("bmp", "image/bmp");
>>> +#endif;
>>> +}
>>> +
>>> +static void initialiseSupportedNonImageMimeTypes()
>>> +{
>>> + supportedNonImageMIMETypes->add("text/html");
>>> + supportedNonImageMIMETypes->add("text/xml");
>>> + supportedNonImageMIMETypes->add("text/xsl");
>>> + supportedNonImageMIMETypes->add("text/plain");
>>> + supportedNonImageMIMETypes->add("text/");
>>> + supportedNonImageMIMETypes->add("application/x-javascript");
>>> + supportedNonImageMIMETypes->add("application/xml");
>>> + supportedNonImageMIMETypes->add("application/xhtml+xml");
>>> + supportedNonImageMIMETypes->add("application/rss+xml");
>>> + supportedNonImageMIMETypes->add("application/atom+xml");
>>> +#if PLATFORM(MAC)
>>> + supportedNonImageMIMETypes->add("application/x-webarchive");
>>> +#endif
>>> + supportedNonImageMIMETypes->add("multipart/x-mixed-replace");
>>> +#ifdef SVG_SUPPORT
>>> + supportedNonImageMIMETypes->add("image/svg+xml");
>>> +#endif
>>> +}
>>> +
>>> +static void initialiseMimeTypeRegistry()
>>> +{
>>> + supportedImageResourceMIMETypes = new WTF::HashSet<String>();
>>> + supportedImageMIMETypes = new WTF::HashSet<String>();
>>> + supportedNonImageMIMETypes = new WTF::HashSet<String>();
>>> +
>>> + initialiseSupportedNonImageMimeTypes();
>>> + initialiseSupportedImageMIMETypes();
>>> +}
>>> +
>>> +bool MimeTypeRegistry::isSupportedImageMIMEType(const String
>>> &mimeType)
>>> +{
>>> + if (!supportedImageMIMETypes)
>>> + initialiseMimeTypeRegistry();
>>> + return !mimeType.isEmpty() && supportedImageMIMETypes-
>>> >contains(mimeType);
>>> +}
>>> +
>>> +bool MimeTypeRegistry::isSupportedImageResourceMIMEType(const
>>> String &mimeType)
>>> +{
>>> + if (!supportedImageResourceMIMETypes)
>>> + initialiseMimeTypeRegistry();
>>> + return !mimeType.isEmpty() && supportedImageResourceMIMETypes-
>>> >contains(mimeType);
>>> +}
>>> +
>>> +bool MimeTypeRegistry::isSupportedNonImageMIMEType(const String
>>> &mimeType)
>>> +{
>>> + if (!supportedNonImageMIMETypes)
>>> + initialiseMimeTypeRegistry();
>>> + return !mimeType.isEmpty() && supportedNonImageMIMETypes-
>>> >contains(mimeType);
>>> +}
>>> +
>>> +const HashSet<String>
>>> &MimeTypeRegistry::getSupportedImageMIMETypes()
>>> +{
>>> + if (!supportedImageMIMETypes)
>>> + initialiseMimeTypeRegistry();
>>> + return *supportedImageMIMETypes;
>>> +}
>>> +
>>> +const HashSet<String>
>>> &MimeTypeRegistry::getSupportedImageResourceMIMETypes()
>>> +{
>>> + if (!supportedImageResourceMIMETypes)
>>> + initialiseMimeTypeRegistry();
>>> + return *supportedImageResourceMIMETypes;
>>> +}
>>> +
>>> +const HashSet<String>
>>> &MimeTypeRegistry::getSupportedNonImageMIMETypes()
>>> +{
>>> + if (!supportedNonImageMIMETypes)
>>> + initialiseMimeTypeRegistry();
>>> + return *supportedNonImageMIMETypes;
>>> +}
>>> +
>>> +}
>>> Added: trunk/WebCore/platform/MimeTypeRegistry.h (0 => 17701)
>>>
>>> --- trunk/WebCore/platform/
>>> MimeTypeRegistry.h (rev 0)
>>> +++ trunk/WebCore/platform/MimeTypeRegistry.h 2006-11-10 07:31:04
>>> UTC (rev 17701)
>>> @@ -0,0 +1,49 @@
>>> +/*
>>> + * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
>>> + *
>>> + * Redistribution and use in source and binary forms, with or
>>> without
>>> + * modification, are permitted provided that the following
>>> conditions
>>> + * are met:
>>> + * 1. Redistributions of source code must retain the above
>>> copyright
>>> + * notice, this list of conditions and the following disclaimer.
>>> + * 2. Redistributions in binary form must reproduce the above
>>> copyright
>>> + * notice, this list of conditions and the following
>>> disclaimer in the
>>> + * documentation and/or other materials provided with the
>>> distribution.
>>> + *
>>> + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS''
>>> AND ANY
>>> + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
>>> THE
>>> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
>>> PARTICULAR
>>> + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER,
>>> INC. OR
>>> + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>>> SPECIAL,
>>> + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
>>> LIMITED TO,
>>> + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
>>> DATA, OR
>>> + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
>>> THEORY
>>> + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
>>> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
>>> THE USE
>>> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
>>> DAMAGE.
>>> + */
>>> +
>>> +#ifndef MimeTypeRegistry_h
>>> +#define MimeTypeRegistry_h
>>> +
>>> +#include "PlatformString.h"
>>> +#include "wtf/HashSet.h"
>>> +#include "StringHash.h"
>>> +
>>> +namespace WebCore
>>> +{
>>> +
>>> +class MimeTypeRegistry {
>>> +public:
>>> + static String getMIMETypeForExtension(const String &ext);
>>> + static bool isSupportedImageMIMEType(const String &mimeType);
>>> + static bool isSupportedImageResourceMIMEType(const String
>>> &mimeType);
>>> + static bool isSupportedNonImageMIMEType(const String
>>> &mimeType);
>>> + static const HashSet<String> &getSupportedImageMIMETypes();
>>> + static const HashSet<String>
>>> &getSupportedImageResourceMIMETypes();
>>> + static const HashSet<String> &getSupportedNonImageMIMETypes();
>>> +};
>>> +
>>> +}
>>> +
>>> +#endif // !MimeTypeRegistry_h
>>> Modified: trunk/WebCore/platform/mac/ImageMac.mm (17700 => 17701)
>>>
>>> --- trunk/WebCore/platform/mac/ImageMac.mm 2006-11-10 05:17:06 UTC
>>> (rev 17700)
>>> +++ trunk/WebCore/platform/mac/ImageMac.mm 2006-11-10 07:31:04 UTC
>>> (rev 17701)
>>> @@ -75,13 +75,6 @@
>>> return 0;
>>> }
>>>
>>> -bool Image::supportsType(const String& type)
>>> -{
>>> - // FIXME: Would be better if this was looking in a set rather
>>> than an NSArray.
>>> - // FIXME: Would be better not to convert to an NSString just
>>> to check if a type is supported.
>>> - return [[WebCoreFrameBridge supportedImageResourceMIMETypes]
>>> containsObject:type];
>>> -}
>>> -
>>> CFDataRef Image::getTIFFRepresentation()
>>> {
>>> if (m_tiffRep)
>>> Added: trunk/WebCore/platform/mac/MimeTypeRegistryMac.mm (0 =>
>>> 17701)
>>>
>>> --- trunk/WebCore/platform/mac/
>>> MimeTypeRegistryMac.mm (rev 0)
>>> +++ trunk/WebCore/platform/mac/MimeTypeRegistryMac.mm 2006-11-10
>>> 07:31:04 UTC (rev 17701)
>>> @@ -0,0 +1,48 @@
>>> +/*
>>> + * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
>>> + *
>>> + * Redistribution and use in source and binary forms, with or
>>> without
>>> + * modification, are permitted provided that the following
>>> conditions
>>> + * are met:
>>> + * 1. Redistributions of source code must retain the above
>>> copyright
>>> + * notice, this list of conditions and the following disclaimer.
>>> + * 2. Redistributions in binary form must reproduce the above
>>> copyright
>>> + * notice, this list of conditions and the following
>>> disclaimer in the
>>> + * documentation and/or other materials provided with the
>>> distribution.
>>> + *
>>> + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS''
>>> AND ANY
>>> + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
>>> THE
>>> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
>>> PARTICULAR
>>> + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER,
>>> INC. OR
>>> + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>>> SPECIAL,
>>> + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
>>> LIMITED TO,
>>> + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
>>> DATA, OR
>>> + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
>>> THEORY
>>> + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
>>> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
>>> THE USE
>>> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
>>> DAMAGE.
>>> + */
>>> +
>>> +#include "config.h"
>>> +#include "MimeTypeRegistry.h"
>>> +#include "WebCoreSystemInterface.h"
>>> +
>>> +namespace WebCore
>>> +{
>>> +String getMIMETypeForUTI(const String & uti)
>>> +{
>>> + CFStringRef utiref = uti.createCFString();
>>> + CFStringRef mime = UTTypeCopyPreferredTagWithClass(utiref,
>>> kUTTagClassMIMEType);
>>> + String mimeType = mime;
>>> + if (mime)
>>> + CFRelease(mime);
>>> + CFRelease(utiref);
>>> + return mimeType;
>>> +}
>>> +
>>> +String MimeTypeRegistry::getMIMETypeForExtension(const String &ext)
>>> +{
>>> + return wkGetMIMETypeForExtension(ext);
>>> +}
>>> +
>>> +}
>>> Modified: trunk/WebKit/ChangeLog (17700 => 17701)
>>>
>>> --- trunk/WebKit/ChangeLog 2006-11-10 05:17:06 UTC (rev 17700)
>>> +++ trunk/WebKit/ChangeLog 2006-11-10 07:31:04 UTC (rev 17701)
>>> @@ -1,3 +1,22 @@
>>> +2006-11-09 Oliver Hunt <oliver at apple.com>
>>> +
>>> + Reviewed by Brady.
>>> +
>>> + Updated to make use of MimeTypeRegistry/bridge
>>> +
>>> + * Misc/WebNSPasteboardExtras.m:
>>> + (-[NSPasteboard
>>> _web_writeImage:element:URL:title:archive:types:]):
>>> + * WebCoreSupport/WebFrameBridge.mm:
>>> + (-[WebFrameBridge determineObjectFromMIMEType:URL:]):
>>> + * WebView/WebDataSource.mm:
>>> + (-[WebDataSource _documentFragmentWithArchive:]):
>>> + * WebView/WebHTMLRepresentation.m:
>>> + (+[WebHTMLRepresentation supportedNonImageMIMETypes]):
>>> + (+[WebHTMLRepresentation supportedImageMIMETypes]):
>>> + * WebView/WebHTMLView.m:
>>> + (-[WebHTMLView _imageExistsAtPaths:]):
>>> + (-[WebHTMLView _documentFragmentWithPaths:]):
>>> +
>>> 2006-11-09 Brady Eidson <beidson at apple.com>
>>>
>>> Reviewed by Darin
>>> Modified: trunk/WebKit/Misc/WebNSPasteboardExtras.m (17700 => 17701)
>>>
>>> --- trunk/WebKit/Misc/WebNSPasteboardExtras.m 2006-11-10 05:17:06
>>> UTC (rev 17700)
>>> +++ trunk/WebKit/Misc/WebNSPasteboardExtras.m 2006-11-10 07:31:04
>>> UTC (rev 17701)
>>> @@ -37,6 +37,7 @@
>>> #import <JavaScriptCore/Assertions.h>
>>> #import <WebKit/DOMPrivate.h>
>>> #import <WebKitSystemInterface.h>
>>> +#import <WebCore/WebMimeTypeRegistryBridge.h>
>>>
>>> NSString *WebURLPboardType = nil;
>>> NSString *WebURLNamePboardType = nil;
>>> @@ -240,13 +241,12 @@
>>> if ([types containsObject:NSRTFDPboardType]) {
>>> // This image data is either the only subresource of
>>> an archive (HTML image case)
>>> // or the main resource (standalone image case).
>>> - NSArray *imageTypes = [WebFrameBridge
>>> supportedImageResourceMIMETypes];
>>> NSArray *subresources = [archive subresources];
>>> WebResource *mainResource = [archive mainResource];
>>> - WebResource *resource = ![imageTypes containsObject:
>>> [mainResource MIMEType]] && [subresources count] > 0 ?
>>> (WebResource *)[subresources objectAtIndex:0] : mainResource;
>>> + WebResource *resource = ![WebMimeTypeRegistryBridge
>>> supportsImageResourceWithMIMEType:[mainResource MIMEType]] &&
>>> [subresources count] > 0 ? (WebResource *)[subresources
>>> objectAtIndex:0] : mainResource;
>>> ASSERT(resource != nil);
>>>
>>> - ASSERT([imageTypes containsObject:[resource
>>> MIMEType]]);
>>> + ASSERT([WebMimeTypeRegistryBridge
>>> supportsImageResourceWithMIMEType:[resource MIMEType]]);
>>> [self _web_writeFileWrapperAsRTFDAttachment:[resource
>>> _fileWrapperRepresentation]];
>>> }
>>> if ([types containsObject:WebArchivePboardType]) {
>>> Modified: trunk/WebKit/WebCoreSupport/WebFrameBridge.mm (17700 =>
>>> 17701)
>>>
>>> --- trunk/WebKit/WebCoreSupport/WebFrameBridge.mm 2006-11-10
>>> 05:17:06 UTC (rev 17700)
>>> +++ trunk/WebKit/WebCoreSupport/WebFrameBridge.mm 2006-11-10
>>> 07:31:04 UTC (rev 17701)
>>> @@ -85,6 +85,7 @@
>>> #import <WebCore/WebCoreSettings.h>
>>> #import <WebKitSystemInterface.h>
>>> #import <wtf/RefPtr.h>
>>> +#import <WebCore/MimeTypeRegistry.h>
>>>
>>> // For compatibility with old SPI.
>>> @interface NSView (OldWebPlugin)
>>> @@ -797,7 +798,7 @@
>>> if ([MIMEType length] == 0)
>>> return ObjectElementFrame; // Go ahead and hope that we
>>> can display the content.
>>>
>>> - if ([[WebCoreFrameBridge supportedImageMIMETypes]
>>> containsObject:MIMEType])
>>> + if (MimeTypeRegistry::isSupportedImageMIMEType(MIMEType))
>>> return ObjectElementFrame;
>>>
>>> if ([[self webView] _isMIMETypeRegisteredAsPlugin:MIMEType])
>>> Modified: trunk/WebKit/WebView/WebDataSource.mm (17700 => 17701)
>>>
>>> --- trunk/WebKit/WebView/WebDataSource.mm 2006-11-10 05:17:06 UTC
>>> (rev 17700)
>>> +++ trunk/WebKit/WebView/WebDataSource.mm 2006-11-10 07:31:04 UTC
>>> (rev 17701)
>>> @@ -56,6 +56,7 @@
>>> #import <WebKit/DOMHTML.h>
>>> #import <WebKit/DOMPrivate.h>
>>> #import <WebKitSystemInterface.h>
>>> +#import <WebCore/MimeTypeRegistry.h>
>>>
>>> using namespace WebCore;
>>>
>>> @@ -247,7 +248,7 @@
>>> DOMDocumentFragment *fragment = [[self _bridge]
>>> documentFragmentWithMarkupString:markupString baseURLString:
>>> [[mainResource URL] _web_originalDataAsString]];
>>> [markupString release];
>>> return fragment;
>>> - } else if ([[WebFrameBridge
>>> supportedImageResourceMIMETypes] containsObject:MIMEType]) {
>>> + } else if
>>> (MimeTypeRegistry::isSupportedImageMIMEType(MIMEType)) {
>>> return [self
>>> _documentFragmentWithImageResource:mainResource];
>>>
>>> }
>>> Modified: trunk/WebKit/WebView/WebHTMLRepresentation.m (17700 =>
>>> 17701)
>>>
>>> --- trunk/WebKit/WebView/WebHTMLRepresentation.m 2006-11-10
>>> 05:17:06 UTC (rev 17700)
>>> +++ trunk/WebKit/WebView/WebHTMLRepresentation.m 2006-11-10
>>> 07:31:04 UTC (rev 17701)
>>> @@ -48,6 +48,7 @@
>>> #import <WebCore/DocumentLoader.h>
>>> #import <WebCore/FrameMac.h>
>>> #import <WebCore/Range.h>
>>> +#import <WebCore/WebMimeTypeRegistryBridge.h>
>>>
>>> using namespace WebCore;
>>>
>>> @@ -90,12 +91,12 @@
>>>
>>> + (NSArray *)supportedNonImageMIMETypes
>>> {
>>> - return [WebCoreFrameBridge supportedNonImageMIMETypes];
>>> + return [WebMimeTypeRegistryBridge supportedNonImageMIMETypes];
>>> }
>>>
>>> + (NSArray *)supportedImageMIMETypes
>>> {
>>> - return [WebCoreFrameBridge supportedImageMIMETypes];
>>> + return [WebMimeTypeRegistryBridge supportedImageMIMETypes];
>>> }
>>>
>>> - init
>>> Modified: trunk/WebKit/WebView/WebHTMLView.m (17700 => 17701)
>>>
>>> --- trunk/WebKit/WebView/WebHTMLView.m 2006-11-10 05:17:06 UTC
>>> (rev 17700)
>>> +++ trunk/WebKit/WebView/WebHTMLView.m 2006-11-10 07:31:04 UTC
>>> (rev 17701)
>>> @@ -84,6 +84,7 @@
>>> #import <WebKit/DOMPrivate.h>
>>> #import <WebKitSystemInterface.h>
>>> #import <mach-o/dyld.h>
>>> +#import <WebCore/WebMimeTypeRegistryBridge.h>
>>>
>>> using namespace WebCore;
>>>
>>> @@ -297,13 +298,12 @@
>>>
>>> - (BOOL)_imageExistsAtPaths:(NSArray *)paths
>>> {
>>> - NSArray *imageMIMETypes = [WebFrameBridge
>>> supportedImageResourceMIMETypes];
>>> NSEnumerator *enumerator = [paths objectEnumerator];
>>> NSString *path;
>>>
>>> while ((path = [enumerator nextObject]) != nil) {
>>> NSString *MIMEType = WKGetMIMETypeForExtension([path
>>> pathExtension]);
>>> - if ([imageMIMETypes containsObject:MIMEType]) {
>>> + if ([WebMimeTypeRegistryBridge
>>> supportsImageResourceWithMIMEType:MIMEType]) {
>>> return YES;
>>> }
>>> }
>>> @@ -334,7 +334,6 @@
>>> - (DOMDocumentFragment *)_documentFragmentWithPaths:(NSArray
>>> *)paths
>>> {
>>> DOMDocumentFragment *fragment;
>>> - NSArray *imageMIMETypes = [WebFrameBridge
>>> supportedImageResourceMIMETypes];
>>> NSEnumerator *enumerator = [paths objectEnumerator];
>>> WebDataSource *dataSource = [self _dataSource];
>>> NSMutableArray *domNodes = [[NSMutableArray alloc] init];
>>> @@ -342,7 +341,7 @@
>>>
>>> while ((path = [enumerator nextObject]) != nil) {
>>> NSString *MIMEType = WKGetMIMETypeForExtension([path
>>> pathExtension]);
>>> - if ([imageMIMETypes containsObject:MIMEType]) {
>>> + if ([WebMimeTypeRegistryBridge
>>> supportsImageResourceWithMIMEType:MIMEType]) {
>>> WebResource *resource = [[WebResource alloc]
>>> initWithData:[NSData dataWithContentsOfFile:path]
>>>
>>> URL:[NSURL fileURLWithPath:path]
>>>
>>> MIMEType:MIMEType
>>> _______________________________________________
>>> webkit-changes mailing list
>>> webkit-changes at opendarwin.org
>>> http://www.opendarwin.org/mailman/listinfo/webkit-changes
>>
>
> _______________________________________________
> webkit-changes mailing list
> webkit-changes at opendarwin.org
> http://www.opendarwin.org/mailman/listinfo/webkit-changes
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/webkit-changes/attachments/20061110/5a250ed4/attachment.html
More information about the webkit-changes
mailing list