Changeset 175491 in webkit
- Timestamp:
- Nov 3, 2014, 2:27:59 PM (11 years ago)
- Location:
- trunk/Source
- Files:
-
- 3 added
- 76 edited
- 2 copied
-
WebCore/CMakeLists.txt (modified) (1 diff)
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/WebCore.exp.in (modified) (4 diffs)
-
WebCore/WebCore.vcxproj/WebCore.vcxproj (modified) (2 diffs)
-
WebCore/WebCore.vcxproj/WebCore.vcxproj.filters (modified) (2 diffs)
-
WebCore/WebCore.xcodeproj/project.pbxproj (modified) (6 diffs)
-
WebCore/bindings/objc/DOMUIKitExtensions.mm (modified) (2 diffs)
-
WebCore/editing/ios/EditorIOS.mm (modified) (2 diffs)
-
WebCore/editing/mac/EditorMac.mm (modified) (2 diffs)
-
WebCore/html/ImageDocument.cpp (modified) (3 diffs)
-
WebCore/inspector/InspectorPageAgent.cpp (modified) (5 diffs)
-
WebCore/inspector/InspectorResourceAgent.cpp (modified) (3 diffs)
-
WebCore/loader/DocumentLoader.cpp (modified) (10 diffs)
-
WebCore/loader/DocumentLoader.h (modified) (2 diffs)
-
WebCore/loader/MediaResourceLoader.cpp (modified) (4 diffs)
-
WebCore/loader/ResourceBuffer.cpp (added)
-
WebCore/loader/ResourceBuffer.h (added)
-
WebCore/loader/ResourceLoader.cpp (modified) (2 diffs)
-
WebCore/loader/ResourceLoader.h (modified) (3 diffs)
-
WebCore/loader/SubresourceLoader.cpp (modified) (3 diffs)
-
WebCore/loader/TextTrackLoader.cpp (modified) (2 diffs)
-
WebCore/loader/appcache/ApplicationCacheGroup.cpp (modified) (3 diffs)
-
WebCore/loader/archive/cf/LegacyWebArchive.cpp (modified) (2 diffs)
-
WebCore/loader/cache/CachedCSSStyleSheet.cpp (modified) (2 diffs)
-
WebCore/loader/cache/CachedCSSStyleSheet.h (modified) (1 diff)
-
WebCore/loader/cache/CachedFont.cpp (modified) (3 diffs)
-
WebCore/loader/cache/CachedFont.h (modified) (1 diff)
-
WebCore/loader/cache/CachedImage.cpp (modified) (6 diffs)
-
WebCore/loader/cache/CachedImage.h (modified) (4 diffs)
-
WebCore/loader/cache/CachedRawResource.cpp (modified) (5 diffs)
-
WebCore/loader/cache/CachedRawResource.h (modified) (2 diffs)
-
WebCore/loader/cache/CachedResource.cpp (modified) (7 diffs)
-
WebCore/loader/cache/CachedResource.h (modified) (7 diffs)
-
WebCore/loader/cache/CachedResourceClient.h (modified) (3 diffs)
-
WebCore/loader/cache/CachedSVGDocument.cpp (modified) (2 diffs)
-
WebCore/loader/cache/CachedSVGDocument.h (modified) (1 diff)
-
WebCore/loader/cache/CachedScript.cpp (modified) (2 diffs)
-
WebCore/loader/cache/CachedScript.h (modified) (1 diff)
-
WebCore/loader/cache/CachedTextTrack.cpp (modified) (2 diffs)
-
WebCore/loader/cache/CachedTextTrack.h (modified) (1 diff)
-
WebCore/loader/cache/CachedXSLStyleSheet.cpp (modified) (3 diffs)
-
WebCore/loader/cache/CachedXSLStyleSheet.h (modified) (1 diff)
-
WebCore/loader/cf/SubresourceLoaderCF.cpp (modified) (1 diff)
-
WebCore/loader/cocoa/DiskCacheMonitorCocoa.h (modified) (1 diff)
-
WebCore/loader/cocoa/DiskCacheMonitorCocoa.mm (modified) (2 diffs)
-
WebCore/loader/icon/IconLoader.cpp (modified) (4 diffs)
-
WebCore/loader/mac/ResourceBuffer.mm (added)
-
WebCore/loader/mac/ResourceLoaderMac.mm (modified) (2 diffs)
-
WebCore/platform/SharedBuffer.cpp (modified) (5 diffs)
-
WebCore/platform/SharedBuffer.h (modified) (3 diffs)
-
WebCore/platform/cf/SharedBufferCF.cpp (modified) (1 diff)
-
WebCore/platform/graphics/PlatformMediaResourceLoader.h (modified) (4 diffs)
-
WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp (modified) (1 diff)
-
WebCore/platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm (modified) (2 diffs)
-
WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp (modified) (2 diffs)
-
WebCore/platform/mac/PasteboardMac.mm (modified) (1 diff)
-
WebCore/platform/soup/SharedBufferSoup.cpp (modified) (1 diff)
-
WebKit/mac/ChangeLog (modified) (1 diff)
-
WebKit/mac/WebView/WebDataSource.mm (modified) (2 diffs)
-
WebKit/mac/WebView/WebHTMLView.mm (modified) (2 diffs)
-
WebKit/win/ChangeLog (modified) (1 diff)
-
WebKit/win/WebDataSource.cpp (modified) (3 diffs)
-
WebKit2/CMakeLists.txt (modified) (1 diff)
-
WebKit2/ChangeLog (modified) (1 diff)
-
WebKit2/NetworkProcess/NetworkResourceLoader.cpp (modified) (3 diffs)
-
WebKit2/NetworkProcess/NetworkResourceLoader.h (modified) (2 diffs)
-
WebKit2/NetworkProcess/mac/NetworkDiskCacheMonitor.h (modified) (1 diff)
-
WebKit2/NetworkProcess/mac/NetworkDiskCacheMonitor.mm (modified) (1 diff)
-
WebKit2/NetworkProcess/mac/NetworkResourceLoaderMac.mm (modified) (5 diffs)
-
WebKit2/Platform/IPC/DataReference.h (modified) (1 diff)
-
WebKit2/Shared/WebResourceBuffer.cpp (copied) (copied from trunk/Source/WebCore/loader/cache/CachedTextTrack.h ) (2 diffs)
-
WebKit2/Shared/WebResourceBuffer.h (copied) (copied from trunk/Source/WebCore/loader/cache/CachedTextTrack.h ) (2 diffs)
-
WebKit2/WebKit2.xcodeproj/project.pbxproj (modified) (5 diffs)
-
WebKit2/WebProcess/Network/NetworkProcessConnection.cpp (modified) (2 diffs)
-
WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp (modified) (1 diff)
-
WebKit2/WebProcess/Network/WebResourceLoader.cpp (modified) (1 diff)
-
WebKit2/WebProcess/Network/WebResourceLoader.h (modified) (1 diff)
-
WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (modified) (2 diffs)
-
WebKit2/WebProcess/WebPage/WebFrame.cpp (modified) (2 diffs)
-
WebKit2/WebProcess/WebPage/WebPage.cpp (modified) (7 diffs)
-
WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/CMakeLists.txt
r175414 r175491 1817 1817 loader/PolicyChecker.cpp 1818 1818 loader/ProgressTracker.cpp 1819 loader/ResourceBuffer.cpp 1819 1820 loader/ResourceLoadNotifier.cpp 1820 1821 loader/ResourceLoadScheduler.cpp -
trunk/Source/WebCore/ChangeLog
r175490 r175491 1 2014-11-03 Commit Queue <commit-queue@webkit.org> 2 3 Unreviewed, rolling out r175406, r175413, and r175423. 4 https://bugs.webkit.org/show_bug.cgi?id=138327 5 6 Multipart tests are still broken (Requested by ap on #webkit). 7 8 Reverted changesets: 9 10 "Eliminate ResourceBuffer and use SharedBuffer directly 11 instead" 12 https://bugs.webkit.org/show_bug.cgi?id=138174 13 http://trac.webkit.org/changeset/175406 14 15 "Unreviewed, iOS build fix since 175406." 16 http://trac.webkit.org/changeset/175413 17 18 "Fix assertion in CachedResource::addDataBuffer" 19 http://trac.webkit.org/changeset/175423 20 1 21 2014-11-03 Chris Dumez <cdumez@apple.com> 2 22 -
trunk/Source/WebCore/WebCore.exp.in
r175484 r175491 342 342 __ZN7WebCore14CachedResource12removeClientEPNS_20CachedResourceClientE 343 343 __ZN7WebCore14CachedResource16unregisterHandleEPNS_24CachedResourceHandleBaseE 344 __ZN7WebCore14CachedResource21tryReplaceEncodedDataE RNS_12SharedBufferE344 __ZN7WebCore14CachedResource21tryReplaceEncodedDataEN3WTF10PassRefPtrINS_12SharedBufferEEE 345 345 __ZN7WebCore14CachedResource9addClientEPNS_20CachedResourceClientE 346 346 __ZN7WebCore14ClientRectListC1ERKN3WTF6VectorINS_9FloatQuadELm0ENS1_15CrashOnOverflowEEE … … 385 385 __ZN7WebCore14LoaderStrategy25loadResourceSynchronouslyEPNS_17NetworkingContextEmRKNS_15ResourceRequestENS_17StoredCredentialsENS_22ClientCredentialPolicyERNS_13ResourceErrorERNS_16ResourceResponseERN3WTF6VectorIcLm0ENSC_15CrashOnOverflowEEE 386 386 __ZN7WebCore14PluginDocument12pluginWidgetEv 387 __ZN7WebCore14ResourceBuffer12createNSDataEv 388 __ZN7WebCore14ResourceBuffer6appendEPKcj 389 __ZN7WebCore14ResourceBufferC1EPKcj 390 __ZN7WebCore14ResourceBufferC1Ev 391 __ZN7WebCore14ResourceBufferC2Ev 392 __ZN7WebCore14ResourceBufferD1Ev 393 __ZN7WebCore14ResourceBufferD2Ev 387 394 __ZN7WebCore14ResourceHandle12firstRequestEv 388 395 __ZN7WebCore14ResourceHandle16setDefersLoadingEb … … 1725 1732 __ZNK7WebCore14InsertionPoint8isActiveEv 1726 1733 __ZNK7WebCore14RenderListItem10markerTextEv 1734 __ZNK7WebCore14ResourceBuffer4dataEv 1735 __ZNK7WebCore14ResourceBuffer4sizeEv 1736 __ZNK7WebCore14ResourceBuffer7isEmptyEv 1727 1737 __ZNK7WebCore14ResourceHandle10connectionEv 1728 1738 __ZNK7WebCore14ResourceLoader11frameLoaderEv … … 2797 2807 __ZNK7WebCore14FrameSelection35characterInRelationToCaretSelectionEi 2798 2808 __ZNK7WebCore14FrameSelection36elementRangeContainingCaretSelectionEv 2809 __ZNK7WebCore14ResourceBuffer12sharedBufferEv 2799 2810 __ZNK7WebCore14SecurityOrigin8toStringEv 2800 2811 __ZNK7WebCore15GraphicsLayerCA21contentsLayerForMediaEv -
trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj
r175406 r175491 7252 7252 <ClCompile Include="..\loader\PolicyChecker.cpp" /> 7253 7253 <ClCompile Include="..\loader\ProgressTracker.cpp" /> 7254 <ClCompile Include="..\loader\ResourceBuffer.cpp" /> 7254 7255 <ClCompile Include="..\loader\ResourceLoader.cpp" /> 7255 7256 <ClCompile Include="..\loader\cf\ResourceLoaderCFNet.cpp" /> … … 19254 19255 <ClInclude Include="..\loader\ProgressTracker.h" /> 19255 19256 <ClInclude Include="..\loader\ProgressTrackerClient.h" /> 19257 <ClInclude Include="..\loader\ResourceBuffer.h" /> 19256 19258 <ClInclude Include="..\loader\ResourceLoader.h" /> 19257 19259 <ClInclude Include="..\loader\ResourceLoaderOptions.h" /> -
trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters
r175406 r175491 928 928 <Filter>loader</Filter> 929 929 </ClCompile> 930 <ClCompile Include="..\loader\ResourceBuffer.cpp"> 931 <Filter>loader</Filter> 932 </ClCompile> 930 933 <ClCompile Include="..\loader\ResourceLoader.cpp"> 931 934 <Filter>loader</Filter> … … 7946 7949 </ClInclude> 7947 7950 <ClInclude Include="..\loader\ProgressTrackerClient.h"> 7951 <Filter>loader</Filter> 7952 </ClInclude> 7953 <ClInclude Include="..\loader\ResourceBuffer.h"> 7948 7954 <Filter>loader</Filter> 7949 7955 </ClInclude> -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r175406 r175491 1869 1869 514B3F730C722047000530DF /* FileSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 514B3F720C722047000530DF /* FileSystem.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1870 1870 514B3F760C722055000530DF /* FileSystemMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 514B3F750C722055000530DF /* FileSystemMac.mm */; }; 1871 514BC83F161CF04A004D52F4 /* ResourceBuffer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 514BC83D161CF043004D52F4 /* ResourceBuffer.mm */; }; 1872 514BC842161CF05C004D52F4 /* ResourceBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514BC840161CF05C004D52F4 /* ResourceBuffer.cpp */; }; 1873 514BC843161CF05C004D52F4 /* ResourceBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 514BC841161CF05C004D52F4 /* ResourceBuffer.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1871 1874 514C76370CE9225E007EF3CD /* JSSQLError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514C76350CE9225E007EF3CD /* JSSQLError.cpp */; }; 1872 1875 514C76380CE9225E007EF3CD /* JSSQLTransaction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 514C76360CE9225E007EF3CD /* JSSQLTransaction.cpp */; }; … … 8978 8981 514B3F720C722047000530DF /* FileSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileSystem.h; sourceTree = "<group>"; }; 8979 8982 514B3F750C722055000530DF /* FileSystemMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FileSystemMac.mm; sourceTree = "<group>"; }; 8983 514BC83D161CF043004D52F4 /* ResourceBuffer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ResourceBuffer.mm; sourceTree = "<group>"; }; 8984 514BC840161CF05C004D52F4 /* ResourceBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceBuffer.cpp; sourceTree = "<group>"; }; 8985 514BC841161CF05C004D52F4 /* ResourceBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceBuffer.h; sourceTree = "<group>"; }; 8980 8986 514C76350CE9225E007EF3CD /* JSSQLError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLError.cpp; sourceTree = "<group>"; }; 8981 8987 514C76360CE9225E007EF3CD /* JSSQLTransaction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSQLTransaction.cpp; sourceTree = "<group>"; }; … … 17625 17631 656D371A0ADBA5DE00A4554D /* LoaderNSURLExtras.h */, 17626 17632 656D371B0ADBA5DE00A4554D /* LoaderNSURLExtras.mm */, 17633 514BC83D161CF043004D52F4 /* ResourceBuffer.mm */, 17627 17634 51AA3F6E0BD5AA9E00892971 /* ResourceLoaderMac.mm */, 17628 17635 ); … … 21292 21299 1A2A68220B5BEDE70002A480 /* ProgressTracker.h */, 21293 21300 1ACADD781880D91C00D8B71D /* ProgressTrackerClient.h */, 21301 514BC840161CF05C004D52F4 /* ResourceBuffer.cpp */, 21302 514BC841161CF05C004D52F4 /* ResourceBuffer.h */, 21294 21303 93E227DE0AF589AD00D48324 /* ResourceLoader.cpp */, 21295 21304 656D37270ADBA5DE00A4554D /* ResourceLoader.h */, … … 25854 25863 4998AEC613F9D0EA0090B1AA /* RequestAnimationFrameCallback.h in Headers */, 25855 25864 F55B3DD01251F12D003EF269 /* ResetInputType.h in Headers */, 25865 514BC843161CF05C004D52F4 /* ResourceBuffer.h in Headers */, 25856 25866 7EE6846A12D26E3800E79415 /* ResourceError.h in Headers */, 25857 25867 934F713C0D5A6F1900018D69 /* ResourceErrorBase.h in Headers */, … … 29321 29331 99CC0B5B18BE984A006CEBCC /* ReplaySessionSegment.cpp in Sources */, 29322 29332 F55B3DCF1251F12D003EF269 /* ResetInputType.cpp in Sources */, 29333 514BC842161CF05C004D52F4 /* ResourceBuffer.cpp in Sources */, 29334 514BC83F161CF04A004D52F4 /* ResourceBuffer.mm in Sources */, 29323 29335 934F713E0D5A6F2800018D69 /* ResourceErrorBase.cpp in Sources */, 29324 29336 7EE6846B12D26E3800E79415 /* ResourceErrorCF.cpp in Sources */, -
trunk/Source/WebCore/bindings/objc/DOMUIKitExtensions.mm
r175406 r175491 63 63 #import "RenderStyleConstants.h" 64 64 #import "RenderText.h" 65 #import "ResourceBuffer.h" 65 66 #import "SharedBuffer.h" 66 67 #import "VisiblePosition.h" … … 464 465 - (NSData *)dataRepresentation:(BOOL)rawImageData 465 466 { 466 WebCore::CachedImage *cachedImage = core(self)->cachedImage();467 WebCore::CachedImage *cachedImage = core(self)->cachedImage(); 467 468 if (!cachedImage) 468 469 return nil; 469 WebCore::Image *image = cachedImage->image();470 WebCore::Image *image = cachedImage->image(); 470 471 if (!image) 471 472 return nil; 472 WebCore::SharedBuffer* data = rawImageData ? cachedImage->resourceBuffer() : image->data(); 473 WebCore::SharedBuffer *data = nil; 474 if (rawImageData) { 475 ResourceBuffer *resourceBuffer = cachedImage->resourceBuffer(); 476 if (resourceBuffer) 477 data = resourceBuffer->sharedBuffer(); 478 } else { 479 data = image->data(); 480 } 473 481 if (!data) 474 482 return nil; 483 475 484 return data->createNSData().autorelease(); 476 485 } -
trunk/Source/WebCore/editing/ios/EditorIOS.mm
r175406 r175491 50 50 #include "RenderBlock.h" 51 51 #include "RenderImage.h" 52 #include "ResourceBuffer.h" 52 53 #include "SharedBuffer.h" 53 54 #include "SoftLinking.h" … … 385 386 pasteboardImage.url.title = title; 386 387 pasteboardImage.resourceMIMEType = pasteboard.resourceMIMEType(cachedImage->response().mimeType()); 387 pasteboardImage.resourceData = cachedImage->resourceBuffer() ;388 pasteboardImage.resourceData = cachedImage->resourceBuffer()->sharedBuffer(); 388 389 389 390 pasteboard.write(pasteboardImage); -
trunk/Source/WebCore/editing/mac/EditorMac.mm
r175406 r175491 53 53 #import "RenderBlock.h" 54 54 #import "RenderImage.h" 55 #import "ResourceBuffer.h" 55 56 #import "RuntimeApplicationChecks.h" 56 57 #import "Sound.h" … … 447 448 pasteboardImage.url.title = title; 448 449 pasteboardImage.url.userVisibleForm = client()->userVisibleString(pasteboardImage.url.url); 449 pasteboardImage.resourceData = cachedImage->resourceBuffer() ;450 pasteboardImage.resourceData = cachedImage->resourceBuffer()->sharedBuffer(); 450 451 pasteboardImage.resourceMIMEType = cachedImage->response().mimeType(); 451 452 -
trunk/Source/WebCore/html/ImageDocument.cpp
r175406 r175491 46 46 #include "RawDataDocumentParser.h" 47 47 #include "RenderElement.h" 48 #include "ResourceBuffer.h" 48 49 #include "Settings.h" 49 50 … … 134 135 createDocumentStructure(); 135 136 136 if (RefPtr<SharedBuffer> buffer = loader()->mainResourceData()) 137 m_imageElement->cachedImage()->addDataBuffer(*buffer); 137 m_imageElement->cachedImage()->addDataBuffer(loader()->mainResourceData().get()); 138 138 139 139 imageUpdated(); … … 144 144 if (!parser()->isStopped() && m_imageElement) { 145 145 CachedImage& cachedImage = *m_imageElement->cachedImage(); 146 RefPtr< SharedBuffer> data = loader()->mainResourceData();146 RefPtr<ResourceBuffer> data = loader()->mainResourceData(); 147 147 148 148 // If this is a multipart image, make a copy of the current part, since the resource data 149 149 // will be overwritten by the next part. 150 if ( data &&loader()->isLoadingMultipartContent())150 if (loader()->isLoadingMultipartContent()) 151 151 data = data->copy(); 152 152 -
trunk/Source/WebCore/inspector/InspectorPageAgent.cpp
r175406 r175491 63 63 #include "MemoryCache.h" 64 64 #include "Page.h" 65 #include "ResourceBuffer.h" 65 66 #include "ScriptController.h" 66 67 #include "SecurityOrigin.h" … … 143 144 *base64Encoded = !hasTextContent(cachedResource); 144 145 if (*base64Encoded) { 145 RefPtr<SharedBuffer> buffer = hasZeroSize ? SharedBuffer::create() : cachedResource->resourceBuffer(); 146 RefPtr<SharedBuffer> buffer = hasZeroSize ? SharedBuffer::create() : cachedResource->resourceBuffer()->sharedBuffer(); 147 146 148 if (!buffer) 147 149 return false; 150 148 151 *result = base64Encode(buffer->data(), buffer->size()); 149 152 return true; … … 164 167 return true; 165 168 case CachedResource::RawResource: { 166 auto* buffer = cachedResource->resourceBuffer();169 ResourceBuffer* buffer = cachedResource->resourceBuffer(); 167 170 if (!buffer) 168 171 return false; … … 175 178 } 176 179 default: 177 auto* buffer = cachedResource->resourceBuffer();180 ResourceBuffer* buffer = cachedResource->resourceBuffer(); 178 181 return decodeBuffer(buffer ? buffer->data() : nullptr, buffer ? buffer->size() : 0, cachedResource->encoding(), result); 179 182 } … … 184 187 bool InspectorPageAgent::mainResourceContent(Frame* frame, bool withBase64Encode, String* result) 185 188 { 186 RefPtr< SharedBuffer> buffer = frame->loader().documentLoader()->mainResourceData();189 RefPtr<ResourceBuffer> buffer = frame->loader().documentLoader()->mainResourceData(); 187 190 if (!buffer) 188 191 return false; 189 return InspectorPageAgent::dataContent(buffer->data(), buffer->size(), frame->document()->inputEncoding(), withBase64Encode, result); 192 String textEncodingName = frame->document()->inputEncoding(); 193 194 return InspectorPageAgent::dataContent(buffer->data(), buffer->size(), textEncodingName, withBase64Encode, result); 190 195 } 191 196 -
trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp
r175406 r175491 55 55 #include "Page.h" 56 56 #include "ProgressTracker.h" 57 #include "ResourceBuffer.h" 57 58 #include "ResourceError.h" 58 59 #include "ResourceLoader.h" … … 405 406 String requestId = IdentifiersFactory::requestId(identifier); 406 407 if (m_resourcesData->resourceType(requestId) == InspectorPageAgent::DocumentResource) { 407 m_resourcesData->addResourceSharedBuffer(requestId, 408 loader->frameLoader()->documentLoader()->mainResourceData(), 409 loader->frame()->document()->inputEncoding()); 408 RefPtr<ResourceBuffer> buffer = loader->frameLoader()->documentLoader()->mainResourceData(); 409 m_resourcesData->addResourceSharedBuffer(requestId, buffer ? buffer->sharedBuffer() : nullptr, loader->frame()->document()->inputEncoding()); 410 410 } 411 411 … … 436 436 Frame* frame = loader ? loader->frame() : nullptr; 437 437 if (frame && frame->loader().documentLoader() && frame->document()) { 438 m_resourcesData->addResourceSharedBuffer(requestId, 439 frame->loader().documentLoader()->mainResourceData(), 440 frame->document()->inputEncoding()); 438 RefPtr<ResourceBuffer> buffer = frame->loader().documentLoader()->mainResourceData(); 439 m_resourcesData->addResourceSharedBuffer(requestId, buffer ? buffer->sharedBuffer() : nullptr, frame->document()->inputEncoding()); 441 440 } 442 441 } -
trunk/Source/WebCore/loader/DocumentLoader.cpp
r175406 r175491 57 57 #include "PolicyChecker.h" 58 58 #include "ProgressTracker.h" 59 #include "ResourceBuffer.h" 59 60 #include "ResourceHandle.h" 60 61 #include "SchemeRegistry.h" … … 171 172 } 172 173 173 PassRefPtr< SharedBuffer> DocumentLoader::mainResourceData() const174 PassRefPtr<ResourceBuffer> DocumentLoader::mainResourceData() const 174 175 { 175 176 if (m_substituteData.isValid()) 176 return m_substituteData.content()->copy();177 return ResourceBuffer::create(m_substituteData.content()->data(), m_substituteData.content()->size()); 177 178 if (m_mainResource) 178 179 return m_mainResource->resourceBuffer(); 179 return nullptr;180 return 0; 180 181 } 181 182 … … 184 185 if (m_frame && m_frame->loader().documentLoader() == this) 185 186 return m_frame->document(); 186 return nullptr;187 return 0; 187 188 } 188 189 … … 994 995 995 996 // Give the archive machinery a crack at this document. If the MIME type is not an archive type, it will return 0. 996 m_archive = ArchiveFactory::create(m_response.url(), mainResourceData().get(), m_response.mimeType()); 997 RefPtr<ResourceBuffer> mainResourceBuffer = mainResourceData(); 998 m_archive = ArchiveFactory::create(m_response.url(), mainResourceBuffer ? mainResourceBuffer->sharedBuffer() : 0, m_response.mimeType()); 997 999 if (!m_archive) 998 1000 return false; … … 1010 1012 1011 1013 #if ENABLE(WEB_ARCHIVE) || ENABLE(MHTML) 1012 1013 1014 void DocumentLoader::setArchive(PassRefPtr<Archive> archive) 1014 1015 { … … 1058 1059 return m_parsedArchiveData.get(); 1059 1060 } 1060 1061 1061 #endif // ENABLE(WEB_ARCHIVE) || ENABLE(MHTML) 1062 1062 … … 1064 1064 { 1065 1065 if (!m_archiveResourceCollection) 1066 return nullptr; 1066 return 0; 1067 1067 1068 ArchiveResource* resource = m_archiveResourceCollection->archiveResourceForURL(url); 1068 if (!resource || resource->shouldIgnoreWhenUnarchiving()) 1069 return nullptr; 1070 return resource; 1069 1070 return resource && !resource->shouldIgnoreWhenUnarchiving() ? resource : 0; 1071 1071 } 1072 1072 1073 1073 PassRefPtr<ArchiveResource> DocumentLoader::mainResource() const 1074 1074 { 1075 RefPtr<SharedBuffer> data = mainResourceData(); 1075 const ResourceResponse& r = response(); 1076 1077 RefPtr<ResourceBuffer> mainResourceBuffer = mainResourceData(); 1078 RefPtr<SharedBuffer> data = mainResourceBuffer ? mainResourceBuffer->sharedBuffer() : 0; 1076 1079 if (!data) 1077 1080 data = SharedBuffer::create(); 1078 1081 1079 auto& response = this->response(); 1080 return ArchiveResource::create(data, response.url(), response.mimeType(), response.textEncodingName(), frame()->tree().uniqueName()); 1082 return ArchiveResource::create(data, r.url(), r.mimeType(), r.textEncodingName(), frame()->tree().uniqueName()); 1081 1083 } 1082 1084 … … 1084 1086 { 1085 1087 if (!isCommitted()) 1086 return nullptr;1088 return 0; 1087 1089 1088 1090 CachedResource* resource = m_cachedResourceLoader->cachedResource(url); … … 1091 1093 1092 1094 if (resource->type() == CachedResource::MainResource) 1093 return nullptr;1094 1095 auto* data = resource->resourceBuffer();1095 return 0; 1096 1097 ResourceBuffer* data = resource->resourceBuffer(); 1096 1098 if (!data) 1097 return nullptr;1098 1099 return ArchiveResource::create(data , url, resource->response());1099 return 0; 1100 1101 return ArchiveResource::create(data->sharedBuffer(), url, resource->response()); 1100 1102 } 1101 1103 … … 1510 1512 frameLoader()->setupForReplace(); 1511 1513 m_committed = false; 1512 RefPtr< SharedBuffer> resourceData = mainResourceData();1514 RefPtr<ResourceBuffer> resourceData = mainResourceData(); 1513 1515 commitLoad(resourceData->data(), resourceData->size()); 1514 1516 } -
trunk/Source/WebCore/loader/DocumentLoader.h
r175406 r175491 69 69 class FrameLoader; 70 70 class Page; 71 class ResourceBuffer; 71 72 class ResourceLoader; 72 73 class SharedBuffer; … … 93 94 WEBCORE_EXPORT FrameLoader* frameLoader() const; 94 95 WEBCORE_EXPORT ResourceLoader* mainResourceLoader() const; 95 WEBCORE_EXPORT PassRefPtr< SharedBuffer> mainResourceData() const;96 WEBCORE_EXPORT PassRefPtr<ResourceBuffer> mainResourceData() const; 96 97 97 98 DocumentWriter& writer() const { return m_writer; } -
trunk/Source/WebCore/loader/MediaResourceLoader.cpp
r175406 r175491 28 28 29 29 #if ENABLE(VIDEO) 30 31 30 #include "CachedRawResource.h" 32 31 #include "CachedResourceLoader.h" … … 34 33 #include "CrossOriginAccessControl.h" 35 34 #include "Document.h" 35 #include "ResourceBuffer.h" 36 36 #include "SecurityOrigin.h" 37 37 #include <wtf/NeverDestroyed.h> … … 113 113 void MediaResourceLoader::dataReceived(CachedResource* resource, const char* data, int dataLength) 114 114 { 115 ASSERT _UNUSED(resource,resource == m_resource);115 ASSERT(resource == m_resource); 116 116 117 117 RefPtr<MediaResourceLoader> protect(this); 118 118 m_client->dataReceived(data, dataLength); 119 120 if (SharedBuffer* buffer = resource->resourceBuffer() ? resource->resourceBuffer()->sharedBuffer() : nullptr) 121 m_client->bufferReceived(buffer); 119 122 } 120 123 … … 127 130 m_client->loadFailed(resource->resourceError()); 128 131 else 129 m_client->loadFinished( );132 m_client->loadFinished(resource->resourceBuffer() ? resource->resourceBuffer()->sharedBuffer() : nullptr); 130 133 stop(); 131 134 } -
trunk/Source/WebCore/loader/ResourceLoader.cpp
r175406 r175491 43 43 #include "PlatformStrategies.h" 44 44 #include "ProgressTracker.h" 45 #include "ResourceBuffer.h" 45 46 #include "ResourceError.h" 46 47 #include "ResourceHandle.h" … … 222 223 223 224 if (dataPayloadType == DataPayloadWholeResource) { 224 m_resourceData = buffer ? buffer : SharedBuffer::create(data, length);225 m_resourceData = buffer ? ResourceBuffer::adoptSharedBuffer(buffer) : ResourceBuffer::create(data, length); 225 226 return; 226 227 } 227 228 228 229 if (!m_resourceData) 229 m_resourceData = buffer ? buffer : SharedBuffer::create(data, length);230 m_resourceData = buffer ? ResourceBuffer::adoptSharedBuffer(buffer) : ResourceBuffer::create(data, length); 230 231 else { 231 232 if (buffer) -
trunk/Source/WebCore/loader/ResourceLoader.h
r175406 r175491 48 48 class FrameLoader; 49 49 class URL; 50 class ResourceBuffer; 50 51 51 52 #if USE(QUICK_LOOK) … … 88 89 const ResourceResponse& response() const; 89 90 90 SharedBuffer* resourceData() const { return m_resourceData.get(); }91 ResourceBuffer* resourceData() const { return m_resourceData.get(); } 91 92 void clearResourceData(); 92 93 … … 204 205 ResourceRequest m_request; 205 206 ResourceRequest m_originalRequest; // Before redirects. 206 RefPtr< SharedBuffer> m_resourceData;207 RefPtr<ResourceBuffer> m_resourceData; 207 208 208 209 unsigned long m_identifier; -
trunk/Source/WebCore/loader/SubresourceLoader.cpp
r175406 r175491 39 39 #include "Page.h" 40 40 #include "PageActivityAssertionToken.h" 41 #include "ResourceBuffer.h" 41 42 #include <wtf/Ref.h> 42 43 #include <wtf/RefCountedLeakCounter.h> … … 233 234 } 234 235 235 auto*buffer = resourceData();236 RefPtr<ResourceBuffer> buffer = resourceData(); 236 237 if (m_loadingMultipartContent && buffer && buffer->size()) { 237 238 // The resource data will change as the next part is loaded, so we need to make a copy. 238 m_resource->finishLoading(&buffer->copy().get()); 239 RefPtr<ResourceBuffer> copiedData = ResourceBuffer::create(buffer->data(), buffer->size()); 240 m_resource->finishLoading(copiedData.get()); 239 241 clearResourceData(); 240 242 // Since a subresource loader does not load multipart sections progressively, data was delivered to the loader all at once. … … 272 274 273 275 if (!m_loadingMultipartContent) { 274 if ( auto* resourceData = this->resourceData())275 m_resource->addDataBuffer( *resourceData);276 if (ResourceBuffer* resourceData = this->resourceData()) 277 m_resource->addDataBuffer(resourceData); 276 278 else 277 279 m_resource->addData(buffer ? buffer->data() : data, buffer ? buffer->size() : length); -
trunk/Source/WebCore/loader/TextTrackLoader.cpp
r175406 r175491 37 37 #include "Document.h" 38 38 #include "Logging.h" 39 #include "ResourceBuffer.h" 39 40 #include "SecurityOrigin.h" 40 #include "SharedBuffer.h"41 41 #include "VTTCue.h" 42 42 #include "WebVTTParser.h" … … 88 88 return; 89 89 90 auto* buffer = resource->resourceBuffer();90 ResourceBuffer* buffer = resource->resourceBuffer(); 91 91 if (m_parseOffset == buffer->size()) 92 92 return; -
trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp
r175406 r175491 42 42 #include "ManifestParser.h" 43 43 #include "Page.h" 44 #include "ResourceBuffer.h" 44 45 #include "ResourceHandle.h" 45 46 #include "SecurityOrigin.h" … … 254 255 ASSERT(!resource->storageID()); 255 256 } 256 } else 257 m_newestCache->addResource(ApplicationCacheResource::create(url, loader->response(), ApplicationCacheResource::Master, loader->mainResourceData())); 257 } else { 258 RefPtr<ResourceBuffer> buffer = loader->mainResourceData(); 259 m_newestCache->addResource(ApplicationCacheResource::create(url, loader->response(), ApplicationCacheResource::Master, buffer ? buffer->sharedBuffer() : 0)); 260 } 261 258 262 break; 259 263 case Failure: … … 273 277 ASSERT(!resource->storageID()); 274 278 } 275 } else 276 m_cacheBeingUpdated->addResource(ApplicationCacheResource::create(url, loader->response(), ApplicationCacheResource::Master, loader->mainResourceData())); 279 } else { 280 RefPtr<ResourceBuffer> buffer = loader->mainResourceData(); 281 m_cacheBeingUpdated->addResource(ApplicationCacheResource::create(url, loader->response(), ApplicationCacheResource::Master, buffer ? buffer->sharedBuffer() : 0)); 282 } 277 283 // The "cached" event will be posted to all associated documents once update is complete. 278 284 break; -
trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp
r175406 r175491 47 47 #include "Page.h" 48 48 #include "Range.h" 49 #include "ResourceBuffer.h" 49 50 #include "Settings.h" 50 51 #include "markup.h" … … 550 551 CachedResource* cachedResource = memoryCache()->resourceForRequest(request, frame->page()->sessionID()); 551 552 if (cachedResource) { 552 if (RefPtr<ArchiveResource> resource = ArchiveResource::create(cachedResource->resourceBuffer(), subresourceURL, cachedResource->response())) { 553 ResourceBuffer* data = cachedResource->resourceBuffer(); 554 555 if (RefPtr<ArchiveResource> resource = ArchiveResource::create(data ? data->sharedBuffer() : 0, subresourceURL, cachedResource->response())) { 553 556 subresources.append(WTF::move(resource)); 554 557 continue; -
trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.cpp
r175406 r175491 34 34 #include "HTTPParsers.h" 35 35 #include "MemoryCache.h" 36 #include " SharedBuffer.h"36 #include "ResourceBuffer.h" 37 37 #include "StyleSheetContents.h" 38 38 #include "TextResourceDecoder.h" … … 91 91 } 92 92 93 void CachedCSSStyleSheet::finishLoading( SharedBuffer* data)93 void CachedCSSStyleSheet::finishLoading(ResourceBuffer* data) 94 94 { 95 95 m_data = data; 96 setEncodedSize( data ?data->size() : 0);96 setEncodedSize(m_data.get() ? m_data->size() : 0); 97 97 // Decode the data to find out the encoding and keep the sheet text around during checkNotify() 98 if ( data)99 m_decodedSheetText = m_decoder->decodeAndFlush( data->data(),data->size());98 if (m_data) 99 m_decodedSheetText = m_decoder->decodeAndFlush(m_data->data(), m_data->size()); 100 100 setLoading(false); 101 101 checkNotify(); -
trunk/Source/WebCore/loader/cache/CachedCSSStyleSheet.h
r175406 r175491 55 55 virtual void setEncoding(const String&) override; 56 56 virtual String encoding() const override; 57 virtual void finishLoading( SharedBuffer*) override;57 virtual void finishLoading(ResourceBuffer*) override; 58 58 virtual void destroyDecodedData() override; 59 59 -
trunk/Source/WebCore/loader/cache/CachedFont.cpp
r175406 r175491 34 34 #include "FontPlatformData.h" 35 35 #include "MemoryCache.h" 36 #include "ResourceBuffer.h" 36 37 #include "SharedBuffer.h" 37 38 #include "TextResourceDecoder.h" … … 76 77 } 77 78 78 void CachedFont::finishLoading( SharedBuffer* data)79 void CachedFont::finishLoading(ResourceBuffer* data) 79 80 { 80 81 m_data = data; … … 95 96 { 96 97 if (!m_fontData && !errorOccurred() && !isLoading() && m_data) { 97 RefPtr<SharedBuffer> buffer = m_data; 98 SharedBuffer* buffer = m_data.get()->sharedBuffer(); 99 ASSERT(buffer); 100 98 101 bool fontIsWOFF = false; 102 #if (!PLATFORM(MAC) || __MAC_OS_X_VERSION_MIN_REQUIRED <= 1090) && (!PLATFORM(IOS) || __IPHONE_OS_VERSION_MIN_REQUIRED < 80000) 103 RefPtr<SharedBuffer> sfntBuffer; 99 104 100 #if (!PLATFORM(MAC) || __MAC_OS_X_VERSION_MIN_REQUIRED <= 1090) && (!PLATFORM(IOS) || __IPHONE_OS_VERSION_MIN_REQUIRED < 80000) 101 if (isWOFF(buffer.get())) { 102 Vector<char> convertedFont; 103 if (!convertWOFFToSfnt(buffer.get(), convertedFont)) 105 fontIsWOFF = isWOFF(buffer); 106 if (fontIsWOFF) { 107 Vector<char> sfnt; 108 if (convertWOFFToSfnt(buffer, sfnt)) { 109 sfntBuffer = SharedBuffer::adoptVector(sfnt); 110 buffer = sfntBuffer.get(); 111 } else 104 112 buffer = nullptr; 105 else {106 buffer = SharedBuffer::adoptVector(convertedFont);107 fontIsWOFF = true;108 }109 113 } 110 114 #endif 111 115 112 116 m_fontData = buffer ? createFontCustomPlatformData(*buffer) : nullptr; 113 m_hasCreatedFontDataWrappingResource = m_fontData && !fontIsWOFF; 114 if (!m_fontData) 117 if (m_fontData) 118 m_hasCreatedFontDataWrappingResource = !fontIsWOFF; 119 else 115 120 setStatus(DecodeError); 116 121 } 117 118 122 return m_fontData.get(); 119 123 } -
trunk/Source/WebCore/loader/cache/CachedFont.h
r175406 r175491 64 64 65 65 virtual void didAddClient(CachedResourceClient*) override; 66 virtual void finishLoading( SharedBuffer*) override;66 virtual void finishLoading(ResourceBuffer*) override; 67 67 68 68 virtual void allClientsRemoved() override; -
trunk/Source/WebCore/loader/cache/CachedImage.cpp
r175406 r175491 38 38 #include "Page.h" 39 39 #include "RenderElement.h" 40 #include "ResourceBuffer.h" 40 41 #include "SVGImage.h" 41 42 #include "SecurityOrigin.h" … … 116 117 } 117 118 118 void CachedImage::didAddClient(CachedResourceClient* c lient)119 void CachedImage::didAddClient(CachedResourceClient* c) 119 120 { 120 121 if (m_data && !m_image && !errorOccurred()) { 121 122 createImage(); 122 m_image->setData(m_data , true);123 m_image->setData(m_data->sharedBuffer(), true); 123 124 } 124 125 125 ASSERT(c lient->resourceClientType() == CachedImageClient::expectedType());126 ASSERT(c->resourceClientType() == CachedImageClient::expectedType()); 126 127 if (m_image && !m_image->isNull()) 127 static_cast<CachedImageClient*>(c lient)->imageChanged(this);128 129 CachedResource::didAddClient(c lient);130 } 131 132 void CachedImage::didRemoveClient(CachedResourceClient* c lient)133 { 134 ASSERT(c lient);135 ASSERT(c lient->resourceClientType() == CachedImageClient::expectedType());136 137 m_pendingContainerSizeRequests.remove(static_cast<CachedImageClient*>(c lient));128 static_cast<CachedImageClient*>(c)->imageChanged(this); 129 130 CachedResource::didAddClient(c); 131 } 132 133 void CachedImage::didRemoveClient(CachedResourceClient* c) 134 { 135 ASSERT(c); 136 ASSERT(c->resourceClientType() == CachedImageClient::expectedType()); 137 138 m_pendingContainerSizeRequests.remove(static_cast<CachedImageClient*>(c)); 138 139 139 140 if (m_svgImageCache) 140 m_svgImageCache->removeClientFromCache(static_cast<CachedImageClient*>(c lient));141 142 CachedResource::didRemoveClient(c lient);141 m_svgImageCache->removeClientFromCache(static_cast<CachedImageClient*>(c)); 142 143 CachedResource::didRemoveClient(c); 143 144 } 144 145 … … 365 366 } 366 367 367 void CachedImage::addIncrementalDataBuffer(SharedBuffer& data) 368 { 369 m_data = &data; 368 void CachedImage::addIncrementalDataBuffer(ResourceBuffer* data) 369 { 370 m_data = data; 371 if (!data) 372 return; 370 373 371 374 createImage(); … … 374 377 // It will not do anything now, but will delay decoding until 375 378 // queried for info (like size or specific image frames). 376 bool sizeAvailable = m_image->setData( &data, false);379 bool sizeAvailable = m_image->setData(m_data->sharedBuffer(), false); 377 380 if (!sizeAvailable) 378 381 return; … … 396 399 } 397 400 398 void CachedImage::addDataBuffer( SharedBuffer&data)399 { 400 ASSERT( dataBufferingPolicy() == BufferData);401 void CachedImage::addDataBuffer(ResourceBuffer* data) 402 { 403 ASSERT(m_options.dataBufferingPolicy() == BufferData); 401 404 addIncrementalDataBuffer(data); 402 CachedResource::addDataBuffer(data);403 405 } 404 406 405 407 void CachedImage::addData(const char* data, unsigned length) 406 408 { 407 ASSERT(dataBufferingPolicy() == DoNotBufferData); 408 addIncrementalDataBuffer(*SharedBuffer::create(data, length)); 409 CachedResource::addData(data, length); 410 } 411 412 void CachedImage::finishLoading(SharedBuffer* data) 409 ASSERT(m_options.dataBufferingPolicy() == DoNotBufferData); 410 addIncrementalDataBuffer(ResourceBuffer::create(data, length).get()); 411 } 412 413 void CachedImage::finishLoading(ResourceBuffer* data) 413 414 { 414 415 m_data = data; … … 417 418 418 419 if (m_image) 419 m_image->setData( data, true);420 m_image->setData(m_data->sharedBuffer(), true); 420 421 421 422 if (!m_image || m_image->isNull()) { -
trunk/Source/WebCore/loader/cache/CachedImage.h
r175406 r175491 72 72 bool imageHasRelativeHeight() const; 73 73 74 virtual void addDataBuffer( SharedBuffer&) override;75 virtual void finishLoading( SharedBuffer*) override;74 virtual void addDataBuffer(ResourceBuffer*) override; 75 virtual void finishLoading(ResourceBuffer*) override; 76 76 77 77 enum SizeType { … … 95 95 void clearImage(); 96 96 // If not null, changeRect is the changed part of the image. 97 void notifyObservers(const IntRect* changeRect = nullptr);97 void notifyObservers(const IntRect* changeRect = 0); 98 98 void checkShouldPaintBrokenImage(); 99 99 … … 123 123 virtual void changedInRect(const Image*, const IntRect&) override; 124 124 125 void addIncrementalDataBuffer( SharedBuffer&);125 void addIncrementalDataBuffer(ResourceBuffer*); 126 126 127 127 typedef std::pair<LayoutSize, float> SizeAndZoom; … … 131 131 RefPtr<Image> m_image; 132 132 std::unique_ptr<SVGImageCache> m_svgImageCache; 133 unsigned m_isManuallyCached : 1;134 unsigned m_shouldPaintBrokenImage : 1;133 unsigned char m_isManuallyCached : 1; 134 unsigned char m_shouldPaintBrokenImage : 1; 135 135 }; 136 136 -
trunk/Source/WebCore/loader/cache/CachedRawResource.cpp
r175423 r175491 31 31 #include "CachedResourceLoader.h" 32 32 #include "HTTPHeaderNames.h" 33 #include " SharedBuffer.h"33 #include "ResourceBuffer.h" 34 34 #include "SubresourceLoader.h" 35 35 #include <wtf/PassRefPtr.h> … … 47 47 } 48 48 49 const char* CachedRawResource::calculateIncrementalDataChunk( SharedBuffer* data, unsigned& incrementalDataLength)49 const char* CachedRawResource::calculateIncrementalDataChunk(ResourceBuffer* data, unsigned& incrementalDataLength) 50 50 { 51 51 incrementalDataLength = 0; … … 59 59 } 60 60 61 void CachedRawResource::addDataBuffer( SharedBuffer&data)62 { 63 CachedResourceHandle<CachedRawResource> protect(this); 64 ASSERT( dataBufferingPolicy() == BufferData);65 m_data = &data;61 void CachedRawResource::addDataBuffer(ResourceBuffer* data) 62 { 63 CachedResourceHandle<CachedRawResource> protect(this); 64 ASSERT(m_options.dataBufferingPolicy() == BufferData); 65 m_data = data; 66 66 67 67 unsigned incrementalDataLength; 68 const char* incrementalData = calculateIncrementalDataChunk(&data, incrementalDataLength); 69 setEncodedSize(data.size()); 68 const char* incrementalData = calculateIncrementalDataChunk(data, incrementalDataLength); 69 if (data) 70 setEncodedSize(data->size()); 70 71 notifyClientsDataWasReceived(incrementalData, incrementalDataLength); 71 if ( dataBufferingPolicy() == DoNotBufferData) {72 if (m_options.dataBufferingPolicy() == DoNotBufferData) { 72 73 if (m_loader) 73 74 m_loader->setDataBufferingPolicy(DoNotBufferData); 74 75 clear(); 75 return; 76 } 77 78 CachedResource::addDataBuffer(data); 76 } 79 77 } 80 78 81 79 void CachedRawResource::addData(const char* data, unsigned length) 82 80 { 83 ASSERT( dataBufferingPolicy() == DoNotBufferData);81 ASSERT(m_options.dataBufferingPolicy() == DoNotBufferData); 84 82 notifyClientsDataWasReceived(data, length); 85 CachedResource::addData(data, length); 86 } 87 88 void CachedRawResource::finishLoading(SharedBuffer* data) 89 { 90 CachedResourceHandle<CachedRawResource> protect(this); 91 DataBufferingPolicy dataBufferingPolicy = this->dataBufferingPolicy(); 83 } 84 85 void CachedRawResource::finishLoading(ResourceBuffer* data) 86 { 87 CachedResourceHandle<CachedRawResource> protect(this); 88 DataBufferingPolicy dataBufferingPolicy = m_options.dataBufferingPolicy(); 92 89 if (dataBufferingPolicy == BufferData) { 93 90 m_data = data; … … 103 100 104 101 CachedResource::finishLoading(data); 105 if (dataBufferingPolicy == BufferData && this->dataBufferingPolicy() == DoNotBufferData) {102 if (dataBufferingPolicy == BufferData && m_options.dataBufferingPolicy() == DoNotBufferData) { 106 103 if (m_loader) 107 104 m_loader->setDataBufferingPolicy(DoNotBufferData); … … 226 223 bool CachedRawResource::canReuse(const ResourceRequest& newRequest) const 227 224 { 228 if ( dataBufferingPolicy() == DoNotBufferData)225 if (m_options.dataBufferingPolicy() == DoNotBufferData) 229 226 return false; 230 227 -
trunk/Source/WebCore/loader/cache/CachedRawResource.h
r175406 r175491 49 49 private: 50 50 virtual void didAddClient(CachedResourceClient*) override; 51 virtual void addDataBuffer( SharedBuffer&) override;51 virtual void addDataBuffer(ResourceBuffer*) override; 52 52 virtual void addData(const char* data, unsigned length) override; 53 virtual void finishLoading( SharedBuffer*) override;53 virtual void finishLoading(ResourceBuffer*) override; 54 54 55 55 virtual bool shouldIgnoreHTTPStatusCodeErrors() const override { return true; } … … 65 65 virtual bool canReuse(const ResourceRequest&) const override; 66 66 67 const char* calculateIncrementalDataChunk( SharedBuffer*, unsigned& incrementalDataLength);67 const char* calculateIncrementalDataChunk(ResourceBuffer*, unsigned& incrementalDataLength); 68 68 void notifyClientsDataWasReceived(const char* data, unsigned length); 69 69 -
trunk/Source/WebCore/loader/cache/CachedResource.cpp
r175406 r175491 41 41 #include "MemoryCache.h" 42 42 #include "PlatformStrategies.h" 43 #include "ResourceBuffer.h" 43 44 #include "ResourceHandle.h" 44 45 #include "ResourceLoadScheduler.h" … … 108 109 CachedResource::CachedResource(const ResourceRequest& request, Type type, SessionID sessionID) 109 110 : m_resourceRequest(request) 110 , m_decodedDataDeletionTimer(this, &CachedResource::decodedDataDeletionTimerFired, deadDecodedDataDeletionIntervalForResourceType(type))111 111 , m_sessionID(sessionID) 112 112 , m_loadPriority(defaultPriorityForResourceType(type)) 113 113 , m_responseTimestamp(currentTime()) 114 , m_decodedDataDeletionTimer(this, &CachedResource::decodedDataDeletionTimerFired, deadDecodedDataDeletionIntervalForResourceType(type)) 114 115 , m_lastDecodedAccessTime(0) 115 116 , m_loadFinishTime(0) … … 286 287 return; 287 288 288 CachedResourceClientWalker<CachedResourceClient> w alker(m_clients);289 while (CachedResourceClient* c lient = walker.next())290 c lient->notifyFinished(this);291 } 292 293 void CachedResource::addDataBuffer( SharedBuffer&)294 { 295 ASSERT( dataBufferingPolicy() == BufferData);289 CachedResourceClientWalker<CachedResourceClient> w(m_clients); 290 while (CachedResourceClient* c = w.next()) 291 c->notifyFinished(this); 292 } 293 294 void CachedResource::addDataBuffer(ResourceBuffer*) 295 { 296 ASSERT(m_options.dataBufferingPolicy() == BufferData); 296 297 } 297 298 298 299 void CachedResource::addData(const char*, unsigned) 299 300 { 300 ASSERT( dataBufferingPolicy() == DoNotBufferData);301 } 302 303 void CachedResource::finishLoading( SharedBuffer*)301 ASSERT(m_options.dataBufferingPolicy() == DoNotBufferData); 302 } 303 304 void CachedResource::finishLoading(ResourceBuffer*) 304 305 { 305 306 setLoading(false); … … 391 392 } 392 393 393 void CachedResource::didAddClient(CachedResourceClient* c lient)394 void CachedResource::didAddClient(CachedResourceClient* c) 394 395 { 395 396 if (m_decodedDataDeletionTimer.isActive()) 396 397 m_decodedDataDeletionTimer.stop(); 397 398 398 if (m_clientsAwaitingCallback.remove(client)) 399 m_clients.add(client); 399 if (m_clientsAwaitingCallback.contains(c)) { 400 m_clients.add(c); 401 m_clientsAwaitingCallback.remove(c); 402 } 400 403 if (!isLoading() && !stillNeedsLoad()) 401 c lient->notifyFinished(this);404 c->notifyFinished(this); 402 405 } 403 406 … … 421 424 // we schedule the callbacks and ensure we never finish synchronously. 422 425 ASSERT(!m_clientsAwaitingCallback.contains(client)); 423 m_clientsAwaitingCallback.add(client, std::make_unique<Callback>(*this, *client));426 m_clientsAwaitingCallback.add(client, CachedResourceCallback::schedule(this, client)); 424 427 return false; 425 428 } … … 729 732 } 730 733 731 inline CachedResource::Callback::Callback(CachedResource& resource, CachedResourceClient&client)734 CachedResource::CachedResourceCallback::CachedResourceCallback(CachedResource* resource, CachedResourceClient* client) 732 735 : m_resource(resource) 733 736 , m_client(client) 734 , m_ timer(this, &Callback::timerFired)735 { 736 m_ timer.startOneShot(0);737 } 738 739 inline void CachedResource::Callback::cancel()740 { 741 if (m_ timer.isActive())742 m_ timer.stop();743 } 744 745 void CachedResource::Ca llback::timerFired(Timer<Callback>&)746 { 747 m_resource .didAddClient(&m_client);737 , m_callbackTimer(this, &CachedResourceCallback::timerFired) 738 { 739 m_callbackTimer.startOneShot(0); 740 } 741 742 void CachedResource::CachedResourceCallback::cancel() 743 { 744 if (m_callbackTimer.isActive()) 745 m_callbackTimer.stop(); 746 } 747 748 void CachedResource::CachedResourceCallback::timerFired(Timer<CachedResourceCallback>&) 749 { 750 m_resource->didAddClient(m_client); 748 751 } 749 752 750 753 #if USE(FOUNDATION) 751 752 void CachedResource::tryReplaceEncodedData(SharedBuffer& newBuffer) 754 void CachedResource::tryReplaceEncodedData(PassRefPtr<SharedBuffer> newBuffer) 753 755 { 754 756 if (!m_data) … … 761 763 // same resource or if we made a second request with the same URL which gave us a different 762 764 // resource. We have seen this happen for cached POST resources. 763 if (m_data->size() != newBuffer.size() || memcmp(m_data->data(), newBuffer.data(), m_data->size())) 764 return; 765 766 m_data->tryReplaceContentsWithPlatformBuffer(newBuffer); 767 } 768 769 #endif 770 771 } 765 if (m_data->size() != newBuffer->size() || memcmp(m_data->data(), newBuffer->data(), m_data->size())) 766 return; 767 768 m_data->tryReplaceSharedBufferContents(newBuffer.get()); 769 } 770 #endif 771 772 } -
trunk/Source/WebCore/loader/cache/CachedResource.h
r175406 r175491 48 48 class CachedResourceLoader; 49 49 class InspectorResource; 50 class ResourceBuffer; 50 51 class SecurityOrigin; 51 52 class SharedBuffer; … … 96 97 virtual void setEncoding(const String&) { } 97 98 virtual String encoding() const { return String(); } 98 virtual void addDataBuffer( SharedBuffer&);99 virtual void addDataBuffer(ResourceBuffer*); 99 100 virtual void addData(const char* data, unsigned length); 100 virtual void finishLoading( SharedBuffer*);101 virtual void finishLoading(ResourceBuffer*); 101 102 virtual void error(CachedResource::Status); 102 103 … … 187 188 void clearLoader(); 188 189 189 SharedBuffer* resourceBuffer() const { return m_data.get(); }190 ResourceBuffer* resourceBuffer() const { return m_data.get(); } 190 191 191 192 virtual void willSendRequest(ResourceRequest&, const ResourceResponse&); … … 245 246 246 247 #if USE(FOUNDATION) 247 WEBCORE_EXPORT void tryReplaceEncodedData( SharedBuffer&);248 WEBCORE_EXPORT void tryReplaceEncodedData(PassRefPtr<SharedBuffer>); 248 249 #endif 249 250 250 251 #if USE(SOUP) 251 virtual char* getOrCreateReadBuffer(size_t /* requestedSize */, size_t& /* actualSize */) { return nullptr; }252 virtual char* getOrCreateReadBuffer(size_t /* requestedSize */, size_t& /* actualSize */) { return 0; } 252 253 #endif 253 254 254 255 protected: 256 virtual void checkNotify(); 257 255 258 void setEncodedSize(unsigned); 256 259 void setDecodedSize(unsigned); 257 260 void didAccessDecodedData(double timeStamp); 258 261 259 // FIXME: Make the rest of these data members private and use functions in derived classes instead.260 262 HashCountedSet<CachedResourceClient*> m_clients; 263 264 class CachedResourceCallback { 265 public: 266 CachedResourceCallback(CachedResource*, CachedResourceClient*); 267 268 static std::unique_ptr<CachedResourceCallback> schedule(CachedResource* resource, CachedResourceClient* client) { return std::make_unique<CachedResourceCallback>(resource, client); } 269 void cancel(); 270 private: 271 void timerFired(Timer<CachedResourceCallback>&); 272 273 CachedResource* m_resource; 274 CachedResourceClient* m_client; 275 Timer<CachedResourceCallback> m_callbackTimer; 276 }; 277 HashMap<CachedResourceClient*, std::unique_ptr<CachedResourceCallback>> m_clientsAwaitingCallback; 278 261 279 ResourceRequest m_resourceRequest; 280 SessionID m_sessionID; 281 String m_accept; 262 282 RefPtr<SubresourceLoader> m_loader; 263 283 ResourceLoaderOptions m_options; 284 ResourceLoadPriority m_loadPriority; 285 264 286 ResourceResponse m_response; 265 RefPtr<SharedBuffer> m_data; 287 double m_responseTimestamp; 288 289 RefPtr<ResourceBuffer> m_data; 266 290 DeferrableOneShotTimer m_decodedDataDeletionTimer; 267 291 268 292 private: 269 class Callback;270 271 293 bool addClientToSet(CachedResourceClient*); 272 294 273 295 void decodedDataDeletionTimerFired(); 274 296 275 virtual void checkNotify();276 297 virtual bool mayTryReplaceEncodedData() const { return false; } 277 298 … … 280 301 void addAdditionalRequestHeaders(CachedResourceLoader*); 281 302 void failBeforeStarting(); 282 283 HashMap<CachedResourceClient*, std::unique_ptr<Callback>> m_clientsAwaitingCallback;284 SessionID m_sessionID;285 String m_accept;286 ResourceLoadPriority m_loadPriority;287 double m_responseTimestamp;288 303 289 304 String m_fragmentIdentifierForRequest; … … 324 339 CachedResource* m_prevInLiveResourcesList; 325 340 326 CachedResourceLoader* m_owningCachedResourceLoader; // only non- nullfor resources that are not in the cache341 CachedResourceLoader* m_owningCachedResourceLoader; // only non-0 for resources that are not in the cache 327 342 328 343 // If this field is non-null we are using the resource as a proxy for checking whether an existing resource is still up to date … … 341 356 }; 342 357 343 class CachedResource::Callback {344 public:345 Callback(CachedResource&, CachedResourceClient&);346 347 void cancel();348 349 private:350 void timerFired(Timer<Callback>&);351 352 CachedResource& m_resource;353 CachedResourceClient& m_client;354 Timer<Callback> m_timer;355 };356 357 358 } // namespace WebCore 358 359 -
trunk/Source/WebCore/loader/cache/CachedResourceClient.h
r175406 r175491 26 26 #define CachedResourceClient_h 27 27 28 #include <wtf/FastMalloc.h> 29 28 30 namespace WebCore { 29 30 31 class CachedResource; 31 32 … … 44 45 virtual void notifyFinished(CachedResource*) { } 45 46 virtual void deprecatedDidReceiveCachedResource(CachedResource*) { } 46 47 47 48 static CachedResourceClientType expectedType() { return BaseResourceType; } 48 49 virtual CachedResourceClientType resourceClientType() const { return expectedType(); } … … 51 52 CachedResourceClient() { } 52 53 }; 53 54 54 } 55 55 -
trunk/Source/WebCore/loader/cache/CachedSVGDocument.cpp
r175406 r175491 24 24 #include "CachedSVGDocument.h" 25 25 26 #include "SharedBuffer.h" 26 #include "CachedResourceClient.h" 27 #include "CachedResourceHandle.h" 28 #include "ResourceBuffer.h" 29 #include <wtf/text/StringBuilder.h> 27 30 28 31 namespace WebCore { … … 49 52 } 50 53 51 void CachedSVGDocument::finishLoading( SharedBuffer* data)54 void CachedSVGDocument::finishLoading(ResourceBuffer* data) 52 55 { 53 56 if (data) { -
trunk/Source/WebCore/loader/cache/CachedSVGDocument.h
r175406 r175491 38 38 SVGDocument* document() const { return m_document.get(); } 39 39 40 protected: 41 RefPtr<SVGDocument> m_document; 42 RefPtr<TextResourceDecoder> m_decoder; 43 40 44 private: 41 45 virtual bool mayTryReplaceEncodedData() const override { return true; } 42 46 virtual void setEncoding(const String&) override; 43 47 virtual String encoding() const override; 44 virtual void finishLoading(SharedBuffer*) override; 45 46 RefPtr<SVGDocument> m_document; 47 RefPtr<TextResourceDecoder> m_decoder; 48 virtual void finishLoading(ResourceBuffer*) override; 48 49 }; 49 50 -
trunk/Source/WebCore/loader/cache/CachedScript.cpp
r175406 r175491 34 34 #include "MIMETypeRegistry.h" 35 35 #include "MemoryCache.h" 36 #include "ResourceBuffer.h" 36 37 #include "RuntimeApplicationChecks.h" 37 #include "SharedBuffer.h"38 38 #include "TextResourceDecoder.h" 39 39 #include <wtf/Vector.h> … … 77 77 } 78 78 m_decodedDataDeletionTimer.restart(); 79 79 80 return m_script; 80 81 } 81 82 82 void CachedScript::finishLoading( SharedBuffer* data)83 void CachedScript::finishLoading(ResourceBuffer* data) 83 84 { 84 85 m_data = data; 85 setEncodedSize( data ?data->size() : 0);86 setEncodedSize(m_data.get() ? m_data->size() : 0); 86 87 CachedResource::finishLoading(data); 87 88 } -
trunk/Source/WebCore/loader/cache/CachedScript.h
r175406 r175491 31 31 namespace WebCore { 32 32 33 class TextResourceDecoder; 33 class CachedResourceLoader; 34 class TextResourceDecoder; 34 35 35 class CachedScript final : public CachedResource {36 public:37 CachedScript(const ResourceRequest&, const String& charset, SessionID);38 virtual ~CachedScript();36 class CachedScript final : public CachedResource { 37 public: 38 CachedScript(const ResourceRequest&, const String& charset, SessionID); 39 virtual ~CachedScript(); 39 40 40 const String& script();41 const String& script(); 41 42 42 String mimeType() const;43 String mimeType() const; 43 44 44 45 #if ENABLE(NOSNIFF) 45 bool mimeTypeAllowedByNosniff() const;46 bool mimeTypeAllowedByNosniff() const; 46 47 #endif 47 48 48 private:49 virtual bool mayTryReplaceEncodedData() const override { return true; }49 private: 50 virtual bool mayTryReplaceEncodedData() const override { return true; } 50 51 51 virtual bool shouldIgnoreHTTPStatusCodeErrors() const override;52 virtual bool shouldIgnoreHTTPStatusCodeErrors() const override; 52 53 53 virtual void setEncoding(const String&) override;54 virtual String encoding() const override;55 virtual void finishLoading(SharedBuffer*) override;54 virtual void setEncoding(const String&) override; 55 virtual String encoding() const override; 56 virtual void finishLoading(ResourceBuffer*) override; 56 57 57 virtual void destroyDecodedData() override;58 virtual void destroyDecodedData() override; 58 59 59 String m_script;60 RefPtr<TextResourceDecoder> m_decoder;61 };60 String m_script; 61 RefPtr<TextResourceDecoder> m_decoder; 62 }; 62 63 63 64 } // namespace WebCore -
trunk/Source/WebCore/loader/cache/CachedTextTrack.cpp
r175406 r175491 33 33 #include "CachedResourceClientWalker.h" 34 34 #include "CachedResourceLoader.h" 35 #include "ResourceBuffer.h" 35 36 #include "SharedBuffer.h" 36 37 #include "TextResourceDecoder.h" … … 44 45 } 45 46 46 void CachedTextTrack::updateData(SharedBuffer* data)47 CachedTextTrack::~CachedTextTrack() 47 48 { 48 ASSERT(dataBufferingPolicy() == BufferData); 49 } 50 51 void CachedTextTrack::addDataBuffer(ResourceBuffer* data) 52 { 53 ASSERT(m_options.dataBufferingPolicy() == BufferData); 49 54 m_data = data; 50 setEncodedSize( data ?data->size() : 0);55 setEncodedSize(m_data.get() ? m_data->size() : 0); 51 56 52 57 CachedResourceClientWalker<CachedResourceClient> walker(m_clients); 53 while (CachedResourceClient *client = walker.next())58 while (CachedResourceClient *client = walker.next()) 54 59 client->deprecatedDidReceiveCachedResource(this); 55 60 } 56 61 57 void CachedTextTrack:: addDataBuffer(SharedBuffer&data)62 void CachedTextTrack::finishLoading(ResourceBuffer* data) 58 63 { 59 updateData(&data); 60 CachedResource::addDataBuffer(data); 61 } 62 63 void CachedTextTrack::finishLoading(SharedBuffer* data) 64 { 65 updateData(data); 64 addDataBuffer(data); 66 65 CachedResource::finishLoading(data); 67 66 } -
trunk/Source/WebCore/loader/cache/CachedTextTrack.h
r175406 r175491 37 37 public: 38 38 CachedTextTrack(const ResourceRequest&, SessionID); 39 virtual ~CachedTextTrack(); 39 40 40 41 private: 41 42 virtual bool mayTryReplaceEncodedData() const override { return true; } 42 virtual void addDataBuffer(SharedBuffer&) override; 43 virtual void finishLoading(SharedBuffer*) override; 44 45 void updateData(SharedBuffer*); 43 virtual void addDataBuffer(ResourceBuffer*) override; 44 virtual void finishLoading(ResourceBuffer*) override; 46 45 }; 47 46 -
trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.cpp
r175406 r175491 30 30 #include "CachedResourceClientWalker.h" 31 31 #include "CachedStyleSheetClient.h" 32 #include " SharedBuffer.h"32 #include "ResourceBuffer.h" 33 33 #include "TextResourceDecoder.h" 34 34 #include <wtf/Vector.h> … … 45 45 // FIXME: This should accept more general xml formats */*+xml, image/svg+xml for example. 46 46 setAccept("text/xml, application/xml, application/xhtml+xml, text/xsl, application/rss+xml, application/atom+xml"); 47 }48 49 CachedXSLStyleSheet::~CachedXSLStyleSheet()50 {51 47 } 52 48 … … 68 64 } 69 65 70 void CachedXSLStyleSheet::finishLoading( SharedBuffer* data)66 void CachedXSLStyleSheet::finishLoading(ResourceBuffer* data) 71 67 { 72 68 m_data = data; 73 setEncodedSize( data ?data->size() : 0);74 if ( data)75 m_sheet = m_decoder->decodeAndFlush( data->data(), encodedSize());69 setEncodedSize(m_data.get() ? m_data->size() : 0); 70 if (m_data.get()) 71 m_sheet = m_decoder->decodeAndFlush(m_data->data(), encodedSize()); 76 72 setLoading(false); 77 73 checkNotify(); -
trunk/Source/WebCore/loader/cache/CachedXSLStyleSheet.h
r175406 r175491 30 30 31 31 #include "CachedResource.h" 32 #include <wtf/Vector.h> 32 33 33 34 namespace WebCore { 34 35 35 class TextResourceDecoder; 36 class CachedResourceLoader; 37 class TextResourceDecoder; 36 38 37 class CachedXSLStyleSheet final : public CachedResource { 38 public: 39 CachedXSLStyleSheet(const ResourceRequest&, SessionID); 40 virtual ~CachedXSLStyleSheet(); 39 class CachedXSLStyleSheet final : public CachedResource { 40 public: 41 CachedXSLStyleSheet(const ResourceRequest&, SessionID); 41 42 42 const String& sheet() const { return m_sheet; }43 const String& sheet() const { return m_sheet; } 43 44 44 private: 45 virtual void checkNotify() override; 46 virtual bool mayTryReplaceEncodedData() const override { return true; } 47 virtual void didAddClient(CachedResourceClient*) override; 48 virtual void setEncoding(const String&) override; 49 virtual String encoding() const override; 50 virtual void finishLoading(SharedBuffer*) override; 45 protected: 46 virtual void checkNotify() override; 51 47 52 String m_sheet; 53 RefPtr<TextResourceDecoder> m_decoder; 54 }; 48 String m_sheet; 49 RefPtr<TextResourceDecoder> m_decoder; 50 51 private: 52 virtual bool mayTryReplaceEncodedData() const override { return true; } 53 54 virtual void didAddClient(CachedResourceClient*) override; 55 56 virtual void setEncoding(const String&) override; 57 virtual String encoding() const override; 58 virtual void finishLoading(ResourceBuffer*) override; 59 }; 55 60 56 61 } // namespace WebCore -
trunk/Source/WebCore/loader/cf/SubresourceLoaderCF.cpp
r175406 r175491 52 52 if (!m_resource) 53 53 return; 54 if ( auto* resourceData = this->resourceData())55 m_resource->addDataBuffer( *resourceData);54 if (ResourceBuffer* resourceData = this->resourceData()) 55 m_resource->addDataBuffer(resourceData); 56 56 else { 57 57 CFDataRef cfData = reinterpret_cast<CFDataRef>(CFArrayGetValueAtIndex(dataArray, i)); -
trunk/Source/WebCore/loader/cocoa/DiskCacheMonitorCocoa.h
r175406 r175491 46 46 WEBCORE_EXPORT DiskCacheMonitor(const ResourceRequest&, SessionID, CFCachedURLResponseRef); 47 47 48 virtual void resourceBecameFileBacked( SharedBuffer&);48 virtual void resourceBecameFileBacked(PassRefPtr<SharedBuffer>); 49 49 50 50 const ResourceRequest& resourceRequest() const { return m_resourceRequest; } -
trunk/Source/WebCore/loader/cocoa/DiskCacheMonitorCocoa.mm
r175406 r175491 104 104 return; 105 105 106 monitor->resourceBecameFileBacked( *fileBackedBuffer);106 monitor->resourceBecameFileBacked(fileBackedBuffer); 107 107 }; 108 108 … … 122 122 } 123 123 124 void DiskCacheMonitor::resourceBecameFileBacked( SharedBuffer&fileBackedBuffer)124 void DiskCacheMonitor::resourceBecameFileBacked(PassRefPtr<SharedBuffer> fileBackedBuffer) 125 125 { 126 126 CachedResource* resource = memoryCache()->resourceForRequest(m_resourceRequest, m_sessionID); -
trunk/Source/WebCore/loader/icon/IconLoader.cpp
r175406 r175491 38 38 #include "IconDatabase.h" 39 39 #include "Logging.h" 40 #include "ResourceBuffer.h" 40 41 #include "ResourceRequest.h" 41 42 #include "SharedBuffer.h" … … 85 86 // If we got a status code indicating an invalid response, then lets 86 87 // ignore the data and not try to decode the error page as an icon. 87 auto*data = resource->resourceBuffer();88 RefPtr<ResourceBuffer> data = resource->resourceBuffer(); 88 89 int status = resource->response().httpStatusCode(); 89 90 if (status && (status < 200 || status > 299)) 90 data = nullptr;91 data = 0; 91 92 92 93 static const char pdfMagicNumber[] = "%PDF"; … … 94 95 if (data && data->size() >= pdfMagicNumberLength && !memcmp(data->data(), pdfMagicNumber, pdfMagicNumberLength)) { 95 96 LOG(IconDatabase, "IconLoader::finishLoading() - Ignoring icon at %s because it appears to be a PDF", resource->url().string().ascii().data()); 96 data = nullptr;97 data = 0; 97 98 } 98 99 … … 102 103 // kept in memory (so it does not have to be read from the database asynchronously), since 103 104 // there is a page URL referencing it. 104 iconDatabase().setIconDataForIconURL(data , resource->url().string());105 iconDatabase().setIconDataForIconURL(data ? data->sharedBuffer() : 0, resource->url().string()); 105 106 m_frame.loader().client().dispatchDidReceiveIcon(); 106 107 stopLoading(); -
trunk/Source/WebCore/loader/mac/ResourceLoaderMac.mm
r175406 r175491 32 32 #include "FrameLoader.h" 33 33 #include "FrameLoaderClient.h" 34 #include "SharedBuffer.h"35 34 36 35 #if USE(NETWORK_CFDATA_ARRAY_CALLBACK) 37 36 #include "InspectorInstrumentation.h" 37 #include "ResourceBuffer.h" 38 38 #endif 39 39 … … 84 84 if (m_options.dataBufferingPolicy() == BufferData) { 85 85 if (!m_resourceData) 86 m_resourceData = SharedBuffer::create();86 m_resourceData = ResourceBuffer::create(); 87 87 m_resourceData->append(data); 88 88 } -
trunk/Source/WebCore/platform/SharedBuffer.cpp
r175406 r175491 34 34 35 35 #if !USE(NETWORK_CFDATA_ARRAY_CALLBACK) 36 37 36 static const unsigned segmentSize = 0x1000; 38 37 static const unsigned segmentPositionMask = 0x0FFF; … … 58 57 fastFree(p); 59 58 } 60 61 59 #endif 62 60 … … 217 215 218 216 #if !USE(NETWORK_CFDATA_ARRAY_CALLBACK) 219 for (char* segment : m_segments) 220 freeSegment(segment); 217 for (unsigned i = 0; i < m_segments.size(); ++i) 218 freeSegment(m_segments[i]); 219 221 220 m_segments.clear(); 222 221 #else … … 228 227 } 229 228 230 PassRef <SharedBuffer> SharedBuffer::copy() const231 { 232 PassRef<SharedBuffer> clone { adoptRef(*new SharedBuffer) };229 PassRefPtr<SharedBuffer> SharedBuffer::copy() const 230 { 231 RefPtr<SharedBuffer> clone(adoptRef(new SharedBuffer)); 233 232 if (hasPlatformData()) { 234 clone .get().append(data(), size());233 clone->append(data(), size()); 235 234 return clone; 236 235 } 237 236 238 clone.get().m_size = m_size; 239 clone.get().m_buffer->data.reserveCapacity(m_size); 240 clone.get().m_buffer->data.append(m_buffer->data.data(), m_buffer->data.size()); 241 242 #if !USE(NETWORK_CFDATA_ARRAY_CALLBACK) 243 for (char* segment : m_segments) 244 clone.get().m_buffer->data.append(segment, segmentSize); 237 clone->m_size = m_size; 238 clone->m_buffer->data.reserveCapacity(m_size); 239 clone->m_buffer->data.append(m_buffer->data.data(), m_buffer->data.size()); 240 #if !USE(NETWORK_CFDATA_ARRAY_CALLBACK) 241 for (unsigned i = 0; i < m_segments.size(); ++i) 242 clone->m_buffer->data.append(m_segments[i], segmentSize); 245 243 #else 246 for (auto& data : m_dataArray) 247 clone.get().append(data.get()); 248 #endif 249 244 for (unsigned i = 0; i < m_dataArray.size(); ++i) 245 clone->append(m_dataArray[i].get()); 246 #endif 250 247 return clone; 251 248 } … … 279 276 280 277 #if !USE(NETWORK_CFDATA_ARRAY_CALLBACK) 281 282 278 void SharedBuffer::copyBufferAndClear(char* destination, unsigned bytesToCopy) const 283 279 { 284 for ( char* segment : m_segments) {280 for (unsigned i = 0; i < m_segments.size(); ++i) { 285 281 unsigned effectiveBytesToCopy = std::min(bytesToCopy, segmentSize); 286 memcpy(destination, segment, effectiveBytesToCopy);282 memcpy(destination, m_segments[i], effectiveBytesToCopy); 287 283 destination += effectiveBytesToCopy; 288 284 bytesToCopy -= effectiveBytesToCopy; 289 freeSegment( segment);285 freeSegment(m_segments[i]); 290 286 } 291 287 m_segments.clear(); 292 288 } 293 294 289 #endif 295 290 -
trunk/Source/WebCore/platform/SharedBuffer.h
r175406 r175491 103 103 #endif 104 104 105 PassRef <SharedBuffer> copy() const;105 PassRefPtr<SharedBuffer> copy() const; 106 106 107 107 // Return the number of consecutive bytes after "position". "data" … … 119 119 WEBCORE_EXPORT unsigned getSomeData(const char*& data, unsigned position = 0) const; 120 120 121 void tryReplaceContentsWithPlatformBuffer(SharedBuffer &);121 void tryReplaceContentsWithPlatformBuffer(SharedBuffer*); 122 122 WEBCORE_EXPORT bool hasPlatformData() const; 123 123 … … 159 159 mutable Vector<char*> m_segments; 160 160 #endif 161 162 161 #if USE(CF) 163 162 explicit SharedBuffer(CFDataRef); -
trunk/Source/WebCore/platform/cf/SharedBufferCF.cpp
r175406 r175491 93 93 } 94 94 95 void SharedBuffer::tryReplaceContentsWithPlatformBuffer(SharedBuffer &newContents)95 void SharedBuffer::tryReplaceContentsWithPlatformBuffer(SharedBuffer* newContents) 96 96 { 97 if (!newContents .m_cfData)97 if (!newContents->m_cfData) 98 98 return; 99 99 100 100 clear(); 101 m_cfData = newContents .m_cfData;101 m_cfData = newContents->m_cfData; 102 102 } 103 103 -
trunk/Source/WebCore/platform/graphics/PlatformMediaResourceLoader.h
r175406 r175491 28 28 29 29 #if ENABLE(VIDEO) 30 31 30 #include <wtf/Noncopyable.h> 32 31 #include <wtf/RefCounted.h> … … 37 36 class ResourceRequest; 38 37 class ResourceResponse; 38 class SharedBuffer; 39 39 40 40 class PlatformMediaResourceLoaderClient { … … 44 44 virtual void responseReceived(const ResourceResponse&) { } 45 45 virtual void dataReceived(const char*, int) { } 46 virtual void bufferReceived(SharedBuffer*) { } 46 47 virtual void accessControlCheckFailed(const ResourceError&) { } 47 48 virtual void loadFailed(const ResourceError&) { } 48 virtual void loadFinished( ) { }49 virtual void loadFinished(SharedBuffer*) { } 49 50 #if USE(SOUP) 50 51 virtual char* getOrCreateReadBuffer(size_t /*requestedSize*/, size_t& /*actualSize*/) { return nullptr; }; … … 68 69 69 70 protected: 70 explicitPlatformMediaResourceLoader(std::unique_ptr<PlatformMediaResourceLoaderClient> client)71 PlatformMediaResourceLoader(std::unique_ptr<PlatformMediaResourceLoaderClient> client) 71 72 : m_client(WTF::move(client)) 72 73 { -
trunk/Source/WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp
r175406 r175491 34 34 #include "MediaPlayerPrivateAVFoundationCF.h" 35 35 #include "NotImplemented.h" 36 #include "ResourceBuffer.h" 36 37 #include "ResourceLoaderOptions.h" 37 38 #include "SharedBuffer.h" -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm
r175406 r175491 33 33 #import "CachedResourceRequest.h" 34 34 #import "MediaPlayerPrivateAVFoundationObjC.h" 35 #import "ResourceBuffer.h" 35 36 #import "ResourceLoaderOptions.h" 36 37 #import "SharedBuffer.h" … … 152 153 return; 153 154 154 SharedBuffer* data = resource->resourceBuffer() ;155 SharedBuffer* data = resource->resourceBuffer() ? resource->resourceBuffer()->sharedBuffer() : 0; 155 156 if (!data) 156 157 return; -
trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp
r175406 r175491 75 75 virtual void accessControlCheckFailed(const ResourceError&) override; 76 76 virtual void loadFailed(const ResourceError&) override; 77 virtual void loadFinished( ) override;77 virtual void loadFinished(SharedBuffer*) override; 78 78 }; 79 79 … … 1032 1032 } 1033 1033 1034 void CachedResourceStreamingClient::loadFinished( )1034 void CachedResourceStreamingClient::loadFinished(SharedBuffer*) 1035 1035 { 1036 1036 handleNotifyFinished(); -
trunk/Source/WebCore/platform/mac/PasteboardMac.mm
r175406 r175491 52 52 #import "PlatformStrategies.h" 53 53 #import "RenderImage.h" 54 #import "ResourceBuffer.h" 54 55 #import "Text.h" 55 56 #import "WebCoreNSStringExtras.h" -
trunk/Source/WebCore/platform/soup/SharedBufferSoup.cpp
r175406 r175491 45 45 } 46 46 47 void SharedBuffer::tryReplaceContentsWithPlatformBuffer(SharedBuffer*) 48 { 49 ASSERT_NOT_REACHED(); 50 } 51 47 52 void SharedBuffer::maybeTransferPlatformData() 48 53 { -
trunk/Source/WebKit/mac/ChangeLog
r175443 r175491 1 2014-11-03 Commit Queue <commit-queue@webkit.org> 2 3 Unreviewed, rolling out r175406, r175413, and r175423. 4 https://bugs.webkit.org/show_bug.cgi?id=138327 5 6 Multipart tests are still broken (Requested by ap on #webkit). 7 8 Reverted changesets: 9 10 "Eliminate ResourceBuffer and use SharedBuffer directly 11 instead" 12 https://bugs.webkit.org/show_bug.cgi?id=138174 13 http://trac.webkit.org/changeset/175406 14 15 "Unreviewed, iOS build fix since 175406." 16 http://trac.webkit.org/changeset/175413 17 18 "Fix assertion in CachedResource::addDataBuffer" 19 http://trac.webkit.org/changeset/175423 20 1 21 2014-10-31 Gyuyoung Kim <gyuyoung.kim@samsung.com> 2 22 -
trunk/Source/WebKit/mac/WebView/WebDataSource.mm
r175406 r175491 54 54 #import <WebCore/LegacyWebArchive.h> 55 55 #import <WebCore/MIMETypeRegistry.h> 56 #import <WebCore/ResourceBuffer.h> 56 57 #import <WebCore/ResourceRequest.h> 57 58 #import <WebCore/SharedBuffer.h> … … 459 460 - (NSData *)data 460 461 { 461 RefPtr< SharedBuffer> mainResourceData = toPrivate(_private)->loader->mainResourceData();462 RefPtr<ResourceBuffer> mainResourceData = toPrivate(_private)->loader->mainResourceData(); 462 463 if (!mainResourceData) 463 464 return nil; -
trunk/Source/WebKit/mac/WebView/WebHTMLView.mm
r175406 r175491 109 109 #import <WebCore/RenderView.h> 110 110 #import <WebCore/RenderWidget.h> 111 #import <WebCore/ResourceBuffer.h> 111 112 #import <WebCore/RuntimeApplicationChecks.h> 112 113 #import <WebCore/SharedBuffer.h> … … 3955 3956 3956 3957 if (WebCore::CachedImage* tiffResource = [self promisedDragTIFFDataSource]) { 3957 if ( auto* buffer = tiffResource->resourceBuffer()) {3958 if (ResourceBuffer *buffer = static_cast<CachedResource*>(tiffResource)->resourceBuffer()) { 3958 3959 NSURLResponse *response = tiffResource->response().nsURLResponse(); 3959 3960 draggingImageURL = [response URL]; -
trunk/Source/WebKit/win/ChangeLog
r175466 r175491 1 2014-11-03 Commit Queue <commit-queue@webkit.org> 2 3 Unreviewed, rolling out r175406, r175413, and r175423. 4 https://bugs.webkit.org/show_bug.cgi?id=138327 5 6 Multipart tests are still broken (Requested by ap on #webkit). 7 8 Reverted changesets: 9 10 "Eliminate ResourceBuffer and use SharedBuffer directly 11 instead" 12 https://bugs.webkit.org/show_bug.cgi?id=138174 13 http://trac.webkit.org/changeset/175406 14 15 "Unreviewed, iOS build fix since 175406." 16 http://trac.webkit.org/changeset/175413 17 18 "Fix assertion in CachedResource::addDataBuffer" 19 http://trac.webkit.org/changeset/175423 20 1 21 2014-11-03 Sungmann Cho <sungmann.cho@navercorp.com> 2 22 -
trunk/Source/WebKit/win/WebDataSource.cpp
r175406 r175491 46 46 #include <WebCore/FrameLoader.h> 47 47 #include <WebCore/URL.h> 48 #include <WebCore/ResourceBuffer.h> 48 49 49 50 using namespace WebCore; … … 181 182 return E_FAIL; 182 183 183 return MemoryStream::createInstance(m_loader->mainResourceData()).copyRefTo(stream); 184 RefPtr<ResourceBuffer> buffer = m_loader->mainResourceData(); 185 return MemoryStream::createInstance(buffer ? buffer->sharedBuffer() : 0).copyRefTo(stream); 184 186 } 185 187 … … 302 304 return E_FAIL; 303 305 304 *resource = WebResource::createInstance(cachedResource->resourceBuffer(), cachedResource->response()); 306 ResourceBuffer* buffer = cachedResource->resourceBuffer(); 307 *resource = WebResource::createInstance(buffer ? buffer->sharedBuffer() : 0, cachedResource->response()); 305 308 return S_OK; 306 309 } -
trunk/Source/WebKit2/CMakeLists.txt
r175476 r175491 236 236 Shared/WebRenderLayer.cpp 237 237 Shared/WebRenderObject.cpp 238 Shared/WebResourceBuffer.cpp 238 239 Shared/WebTouchEvent.cpp 239 240 Shared/WebWheelEvent.cpp -
trunk/Source/WebKit2/ChangeLog
r175486 r175491 1 2014-11-03 Commit Queue <commit-queue@webkit.org> 2 3 Unreviewed, rolling out r175406, r175413, and r175423. 4 https://bugs.webkit.org/show_bug.cgi?id=138327 5 6 Multipart tests are still broken (Requested by ap on #webkit). 7 8 Reverted changesets: 9 10 "Eliminate ResourceBuffer and use SharedBuffer directly 11 instead" 12 https://bugs.webkit.org/show_bug.cgi?id=138174 13 http://trac.webkit.org/changeset/175406 14 15 "Unreviewed, iOS build fix since 175406." 16 http://trac.webkit.org/changeset/175413 17 18 "Fix assertion in CachedResource::addDataBuffer" 19 http://trac.webkit.org/changeset/175423 20 1 21 2014-11-03 Tim Horton <timothy_horton@apple.com> 2 22 -
trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp
r175406 r175491 46 46 #include <WebCore/CertificateInfo.h> 47 47 #include <WebCore/NotImplemented.h> 48 #include <WebCore/ResourceBuffer.h> 48 49 #include <WebCore/ResourceHandle.h> 49 50 #include <WebCore/SharedBuffer.h> … … 409 410 void NetworkResourceLoader::sendBuffer(WebCore::SharedBuffer* buffer, int encodedDataLength) 410 411 { 411 ASSERT(buffer);412 412 ASSERT(!isSynchronous()); 413 413 414 414 #if PLATFORM(IOS) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090) 415 415 ShareableResource::Handle shareableResourceHandle; 416 NetworkResourceLoader::tryGetShareableHandleFromSharedBuffer(shareableResourceHandle, *buffer);416 NetworkResourceLoader::tryGetShareableHandleFromSharedBuffer(shareableResourceHandle, buffer); 417 417 if (!shareableResourceHandle.isNull()) { 418 // Since we're delivering this resource by ourselves all at once and don't need any more data or callbacks from the network layer, abort the loader.418 // Since we're delivering this resource by ourselves all at once and don't need anymore data or callbacks from the network layer, abort the loader. 419 419 abort(); 420 420 send(Messages::WebResourceLoader::DidReceiveResource(shareableResourceHandle, currentTime())); … … 422 422 } 423 423 #endif 424 425 424 IPC::SharedBufferDataReference dataReference(buffer); 426 425 sendAbortingOnFailure(Messages::WebResourceLoader::DidReceiveData(dataReference, encodedDataLength)); -
trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h
r175406 r175491 47 47 namespace WebCore { 48 48 class BlobDataFileReference; 49 class ResourceBuffer; 49 50 class ResourceHandle; 50 51 class ResourceRequest; … … 92 93 #if PLATFORM(IOS) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090) 93 94 static void tryGetShareableHandleFromCFURLCachedResponse(ShareableResource::Handle&, CFCachedURLResponseRef); 94 static void tryGetShareableHandleFromSharedBuffer(ShareableResource::Handle&, WebCore::SharedBuffer &);95 static void tryGetShareableHandleFromSharedBuffer(ShareableResource::Handle&, WebCore::SharedBuffer*); 95 96 #endif 96 97 -
trunk/Source/WebKit2/NetworkProcess/mac/NetworkDiskCacheMonitor.h
r175406 r175491 49 49 50 50 // WebCore::DiskCacheMonitor 51 virtual void resourceBecameFileBacked( WebCore::SharedBuffer&) override;51 virtual void resourceBecameFileBacked(PassRefPtr<WebCore::SharedBuffer>) override; 52 52 53 53 // IPC::MessageSender -
trunk/Source/WebKit2/NetworkProcess/mac/NetworkDiskCacheMonitor.mm
r175406 r175491 60 60 } 61 61 62 void NetworkDiskCacheMonitor::resourceBecameFileBacked( SharedBuffer&fileBackedBuffer)62 void NetworkDiskCacheMonitor::resourceBecameFileBacked(PassRefPtr<SharedBuffer> fileBackedBuffer) 63 63 { 64 64 ShareableResource::Handle handle; 65 NetworkResourceLoader::tryGetShareableHandleFromSharedBuffer(handle, fileBackedBuffer );65 NetworkResourceLoader::tryGetShareableHandleFromSharedBuffer(handle, fileBackedBuffer.get()); 66 66 if (handle.isNull()) 67 67 return; -
trunk/Source/WebKit2/NetworkProcess/mac/NetworkResourceLoaderMac.mm
r175406 r175491 85 85 } 86 86 87 void NetworkResourceLoader::tryGetShareableHandleFromSharedBuffer(ShareableResource::Handle& handle, SharedBuffer &buffer)87 void NetworkResourceLoader::tryGetShareableHandleFromSharedBuffer(ShareableResource::Handle& handle, SharedBuffer* buffer) 88 88 { 89 89 static CFURLCacheRef cache = CFURLCacheCopySharedURLCache(); … … 94 94 return; 95 95 96 CFDataRef data = buffer .existingCFData();96 CFDataRef data = buffer->existingCFData(); 97 97 if (!data) 98 98 return; … … 103 103 tryGetShareableHandleFromCFData(handle, data); 104 104 } 105 106 #endif // IOS || __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 105 #endif // __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 107 106 108 107 size_t NetworkResourceLoader::fileBackedResourceMinimumSize() … … 112 111 113 112 #if USE(CFNETWORK) 114 115 113 void NetworkResourceLoader::willCacheResponseAsync(ResourceHandle* handle, CFCachedURLResponseRef cfResponse) 116 114 { … … 136 134 m_handle->continueWillCacheResponse(nsResponse); 137 135 } 138 139 136 #endif // !USE(CFNETWORK) 140 137 -
trunk/Source/WebKit2/Platform/IPC/DataReference.h
r175406 r175491 84 84 }; 85 85 86 class SharedBufferDataReference : public DataReference {86 class SharedBufferDataReference: public DataReference { 87 87 public: 88 // FIXME: This class doesn't handle null, so the argument should be a reference or PassRef.89 88 SharedBufferDataReference(WebCore::SharedBuffer* buffer) 90 : m_buffer(buffer)91 89 { 90 m_buffer = buffer; 92 91 } 93 92 94 private: 95 // FIXME: It is a bad idea to violate the Liskov Substitution Principle as we do here. 96 // Since we are using DataReference as a polymoprhic base class in this fashion, 97 // then we need it to be a base class that does not have functions such as isEmpty, 98 // size, data, and vector, all of which will do the wrong thing if they are called. 99 // Deleting these functions here does not prevent them from being called. 100 bool isEmpty() const = delete; 101 size_t size() const = delete; 93 size_t size() const { return m_buffer->size(); } 102 94 const uint8_t* data() const = delete; 103 95 Vector<uint8_t> vector() const = delete; 104 96 105 virtual void encode(ArgumentEncoder&) const override; 97 void encode(ArgumentEncoder&) const override; 98 virtual ~SharedBufferDataReference() { m_buffer = 0; } 106 99 100 private: 107 101 RefPtr<WebCore::SharedBuffer> m_buffer; 108 102 }; -
trunk/Source/WebKit2/Shared/WebResourceBuffer.cpp
r175490 r175491 1 1 /* 2 * Copyright (C) 201 1Apple Inc. All rights reserved.2 * Copyright (C) 2012 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 #i fndef CachedTextTrack_h27 # define CachedTextTrack_h26 #include "config.h" 27 #include "WebResourceBuffer.h" 28 28 29 #if ENABLE( VIDEO_TRACK)29 #if ENABLE(SHAREABLE_RESOURCE) 30 30 31 #include " CachedResource.h"32 #include " FontOrientation.h"31 #include "Logging.h" 32 #include "ShareableResource.h" 33 33 34 namespace Web Core{34 namespace WebKit { 35 35 36 class CachedTextTrack final : public CachedResource { 37 public: 38 CachedTextTrack(const ResourceRequest&, SessionID); 36 WebResourceBuffer::WebResourceBuffer(PassRefPtr<ShareableResource> resource) 37 : m_resource(resource) 38 { 39 ASSERT(m_resource); 40 } 39 41 40 private: 41 virtual bool mayTryReplaceEncodedData() const override { return true; } 42 virtual void addDataBuffer(SharedBuffer&) override; 43 virtual void finishLoading(SharedBuffer*) override; 42 WebResourceBuffer::~WebResourceBuffer() 43 { 44 } 44 45 45 void updateData(SharedBuffer*); 46 }; 46 const char* WebResourceBuffer::data() const 47 { 48 return reinterpret_cast<const char*>(m_resource->data()); 49 } 47 50 48 } // namespace WebCore 51 unsigned WebResourceBuffer::size() const 52 { 53 return m_resource->size(); 54 } 49 55 50 SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(CachedTextTrack, CachedResource::TextTrackResource) 56 bool WebResourceBuffer::isEmpty() const 57 { 58 return !m_resource || !m_resource->size(); 59 } 51 60 52 #endif // ENABLE(VIDEO_TRACK) 61 } // namespace WebKit 53 62 54 #endif // CachedTextTrack_h63 #endif // ENABLE(SHAREABLE_RESOURCE) -
trunk/Source/WebKit2/Shared/WebResourceBuffer.h
r175490 r175491 1 1 /* 2 * Copyright (C) 201 1Apple Inc. All rights reserved.2 * Copyright (C) 2012 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 #ifndef CachedTextTrack_h27 #define CachedTextTrack_h26 #ifndef WebResourceBuffer_h 27 #define WebResourceBuffer_h 28 28 29 #if ENABLE( VIDEO_TRACK)29 #if ENABLE(SHAREABLE_RESOURCE) 30 30 31 #include "CachedResource.h" 32 #include "FontOrientation.h" 31 #include <WebCore/ResourceBuffer.h> 33 32 34 namespace Web Core{33 namespace WebKit { 35 34 36 class CachedTextTrack final : public CachedResource { 35 class ShareableResource; 36 37 class WebResourceBuffer : public WebCore::ResourceBuffer { 37 38 public: 38 CachedTextTrack(const ResourceRequest&, SessionID); 39 static PassRefPtr<WebResourceBuffer> create(PassRefPtr<ShareableResource> resource) { return adoptRef(new WebResourceBuffer(resource)); } 40 41 virtual ~WebResourceBuffer() override; 42 43 virtual const char* data() const override; 44 virtual unsigned size() const override; 45 virtual bool isEmpty() const override; 39 46 40 47 private: 41 virtual bool mayTryReplaceEncodedData() const override { return true; } 42 virtual void addDataBuffer(SharedBuffer&) override; 43 virtual void finishLoading(SharedBuffer*) override; 48 WebResourceBuffer(PassRefPtr<ShareableResource>); 44 49 45 void updateData(SharedBuffer*);50 RefPtr<ShareableResource> m_resource; 46 51 }; 47 52 48 } // namespace Web Core53 } // namespace WebKit 49 54 50 SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(CachedTextTrack, CachedResource::TextTrackResource)55 #endif // ENABLE(SHAREABLE_RESOURCE) 51 56 52 #endif // ENABLE(VIDEO_TRACK) 53 54 #endif // CachedTextTrack_h 57 #endif // WebResourceBuffer_h -
trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj
r175476 r175491 822 822 51217460164C20E30037A5C1 /* ShareableResource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5121745E164C20E30037A5C1 /* ShareableResource.cpp */; }; 823 823 51217461164C20E30037A5C1 /* ShareableResource.h in Headers */ = {isa = PBXBuildFile; fileRef = 5121745F164C20E30037A5C1 /* ShareableResource.h */; }; 824 51217464164C21370037A5C1 /* WebResourceBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51217462164C21370037A5C1 /* WebResourceBuffer.cpp */; }; 825 51217465164C21370037A5C1 /* WebResourceBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 51217463164C21370037A5C1 /* WebResourceBuffer.h */; }; 824 826 5123CF1B133D260A0056F800 /* WKIconDatabaseCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5123CF19133D260A0056F800 /* WKIconDatabaseCG.cpp */; }; 825 827 5123CF1C133D260A0056F800 /* WKIconDatabaseCG.h in Headers */ = {isa = PBXBuildFile; fileRef = 5123CF1A133D260A0056F800 /* WKIconDatabaseCG.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 2851 2853 5121745E164C20E30037A5C1 /* ShareableResource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShareableResource.cpp; sourceTree = "<group>"; }; 2852 2854 5121745F164C20E30037A5C1 /* ShareableResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShareableResource.h; sourceTree = "<group>"; }; 2855 51217462164C21370037A5C1 /* WebResourceBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebResourceBuffer.cpp; sourceTree = "<group>"; }; 2856 51217463164C21370037A5C1 /* WebResourceBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebResourceBuffer.h; sourceTree = "<group>"; }; 2853 2857 5123CF19133D260A0056F800 /* WKIconDatabaseCG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WKIconDatabaseCG.cpp; path = cg/WKIconDatabaseCG.cpp; sourceTree = "<group>"; }; 2854 2858 5123CF1A133D260A0056F800 /* WKIconDatabaseCG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKIconDatabaseCG.h; path = cg/WKIconDatabaseCG.h; sourceTree = "<group>"; }; … … 4522 4526 3760881C150413E900FC82C7 /* WebRenderObject.cpp */, 4523 4527 3760881D150413E900FC82C7 /* WebRenderObject.h */, 4528 51217462164C21370037A5C1 /* WebResourceBuffer.cpp */, 4529 51217463164C21370037A5C1 /* WebResourceBuffer.h */, 4524 4530 F634445512A885C8000612D8 /* WebSecurityOrigin.h */, 4525 4531 A72D5D7F1236CBA800A88B15 /* WebSerializedScriptValue.h */, … … 7597 7603 2D29ECD0192F2C2E00984B78 /* RemoteLayerTreeDisplayRefreshMonitor.h in Headers */, 7598 7604 3760881F150413E900FC82C7 /* WebRenderObject.h in Headers */, 7605 51217465164C21370037A5C1 /* WebResourceBuffer.h in Headers */, 7599 7606 33367630130C9998006C9DE2 /* WebResourceCacheManager.h in Headers */, 7600 7607 1AAF089B19267EE500B6390C /* WKUserScript.h in Headers */, … … 9278 9285 2D28F3E61885CCC1004B9EAE /* WebEditorClientIOS.mm in Sources */, 9279 9286 3760881E150413E900FC82C7 /* WebRenderObject.cpp in Sources */, 9287 51217464164C21370037A5C1 /* WebResourceBuffer.cpp in Sources */, 9280 9288 3336762F130C9998006C9DE2 /* WebResourceCacheManager.cpp in Sources */, 9281 9289 E115C714190F89E400ECC516 /* DatabaseProcessIOS.mm in Sources */, -
trunk/Source/WebKit2/WebProcess/Network/NetworkProcessConnection.cpp
r175406 r175491 31 31 #include "WebCoreArgumentCoders.h" 32 32 #include "WebProcess.h" 33 #include "WebResourceBuffer.h" 33 34 #include "WebResourceLoadScheduler.h" 34 35 #include "WebResourceLoaderMessages.h" 35 36 #include <WebCore/CachedResource.h> 36 37 #include <WebCore/MemoryCache.h> 38 #include <WebCore/ResourceBuffer.h> 37 39 #include <WebCore/SessionID.h> 38 40 #include <WebCore/SharedBuffer.h> … … 94 96 } 95 97 96 resource->tryReplaceEncodedData( *buffer);98 resource->tryReplaceEncodedData(buffer.release()); 97 99 } 98 100 #endif -
trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp
r175406 r175491 47 47 #include <WebCore/NetscapePlugInStreamLoader.h> 48 48 #include <WebCore/ReferrerPolicy.h> 49 #include <WebCore/ResourceBuffer.h> 49 50 #include <WebCore/ResourceLoader.h> 50 51 #include <WebCore/SessionID.h> -
trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp
r175406 r175491 39 39 #include <WebCore/CertificateInfo.h> 40 40 #include <WebCore/DocumentLoader.h> 41 #include <WebCore/ResourceBuffer.h> 41 42 #include <WebCore/ResourceError.h> 42 43 #include <WebCore/ResourceLoader.h> -
trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.h
r175406 r175491 47 47 class CertificateInfo; 48 48 class ProtectionSpace; 49 class ResourceBuffer; 49 50 class ResourceError; 50 51 class ResourceLoader; -
trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
r175406 r175491 75 75 #include <WebCore/PluginDocument.h> 76 76 #include <WebCore/ProgressTracker.h> 77 #include <WebCore/ResourceBuffer.h> 77 78 #include <WebCore/ResourceError.h> 78 79 #include <WebCore/ScriptController.h> … … 919 920 return; 920 921 921 RefPtr< SharedBuffer> mainResourceData = loader->mainResourceData();922 RefPtr<ResourceBuffer> mainResourceData = loader->mainResourceData(); 922 923 IPC::DataReference dataReference(reinterpret_cast<const uint8_t*>(mainResourceData ? mainResourceData->data() : 0), mainResourceData ? mainResourceData->size() : 0); 923 924 webPage->send(Messages::WebPageProxy::DidFinishLoadingDataForCustomContentProvider(loader->response().suggestedFilename(), dataReference)); -
trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp
r175406 r175491 66 66 #include <WebCore/PluginDocument.h> 67 67 #include <WebCore/RenderTreeAsText.h> 68 #include <WebCore/ResourceBuffer.h> 68 69 #include <WebCore/ResourceLoader.h> 69 70 #include <WebCore/ScriptController.h> … … 305 306 if (!documentLoader) 306 307 return String(); 307 RefPtr< SharedBuffer> mainResourceData = documentLoader->mainResourceData();308 RefPtr<ResourceBuffer> mainResourceData = documentLoader->mainResourceData(); 308 309 if (!mainResourceData) 309 310 return String(); -
trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp
r175473 r175491 138 138 #include <WebCore/RenderTreeAsText.h> 139 139 #include <WebCore/RenderView.h> 140 #include <WebCore/ResourceBuffer.h> 140 141 #include <WebCore/ResourceRequest.h> 141 142 #include <WebCore/ResourceResponse.h> … … 2435 2436 // disappear during script execution. 2436 2437 2438 // Retain the SerializedScriptValue at this level so it (and the internal data) lives 2439 // long enough for the DataReference to be encoded by the sent message. 2437 2440 RefPtr<SerializedScriptValue> serializedResultValue; 2441 IPC::DataReference dataReference; 2442 2438 2443 JSLockHolder lock(JSDOMWindow::commonVM()); 2439 2444 if (JSValue resultValue = m_mainFrame->coreFrame()->script().executeScript(script, true).jsValue()) { 2440 serializedResultValue = SerializedScriptValue::create(m_mainFrame->jsContext(), 2441 toRef(m_mainFrame->coreFrame()->script().globalObject(mainThreadNormalWorld())->globalExec(), resultValue), nullptr); 2442 } 2443 2444 IPC::DataReference dataReference; 2445 if (serializedResultValue) 2446 dataReference = serializedResultValue->data(); 2445 if ((serializedResultValue = SerializedScriptValue::create(m_mainFrame->jsContext(), toRef(m_mainFrame->coreFrame()->script().globalObject(mainThreadNormalWorld())->globalExec(), resultValue), 0))) 2446 dataReference = serializedResultValue->data(); 2447 } 2448 2447 2449 send(Messages::WebPageProxy::ScriptValueCallback(dataReference, callbackID)); 2448 2450 } … … 2457 2459 void WebPage::getContentsAsMHTMLData(uint64_t callbackID, bool useBinaryEncoding) 2458 2460 { 2461 IPC::DataReference dataReference; 2462 2459 2463 RefPtr<SharedBuffer> buffer = useBinaryEncoding 2460 2464 ? MHTMLArchive::generateMHTMLDataUsingBinaryEncoding(m_page.get()) 2461 2465 : MHTMLArchive::generateMHTMLData(m_page.get()); 2462 2466 2463 // FIXME: Use SharedBufferDataReference.2464 IPC::DataReference dataReference;2465 2467 if (buffer) 2466 2468 dataReference = IPC::DataReference(reinterpret_cast<const uint8_t*>(buffer->data()), buffer->size()); 2469 2467 2470 send(Messages::WebPageProxy::DataCallback(dataReference, callbackID)); 2468 2471 } … … 2487 2490 void WebPage::getSelectionAsWebArchiveData(uint64_t callbackID) 2488 2491 { 2492 IPC::DataReference dataReference; 2493 2489 2494 #if PLATFORM(COCOA) 2495 RefPtr<LegacyWebArchive> archive; 2490 2496 RetainPtr<CFDataRef> data; 2491 if (Frame* frame = frameWithSelection(m_page.get())) 2492 data = LegacyWebArchive::createFromSelection(frame)->rawDataRepresentation(); 2493 #endif 2494 2495 IPC::DataReference dataReference; 2496 #if PLATFORM(COCOA) 2497 if (data) 2497 2498 Frame* frame = frameWithSelection(m_page.get()); 2499 if (frame) { 2500 archive = LegacyWebArchive::createFromSelection(frame); 2501 data = archive->rawDataRepresentation(); 2498 2502 dataReference = IPC::DataReference(CFDataGetBytePtr(data.get()), CFDataGetLength(data.get())); 2499 #endif 2503 } 2504 #endif 2505 2500 2506 send(Messages::WebPageProxy::DataCallback(dataReference, callbackID)); 2501 2507 } … … 2520 2526 void WebPage::getMainResourceDataOfFrame(uint64_t frameID, uint64_t callbackID) 2521 2527 { 2522 RefPtr<SharedBuffer> buffer; 2528 IPC::DataReference dataReference; 2529 2530 RefPtr<ResourceBuffer> buffer; 2531 RefPtr<SharedBuffer> pdfResource; 2523 2532 if (WebFrame* frame = WebProcess::shared().webFrame(frameID)) { 2524 if (PluginView* pluginView = pluginViewForFrame(frame->coreFrame())) 2525 buffer = pluginView->liveResourceData(); 2526 if (!buffer) { 2527 if (DocumentLoader* loader = frame->coreFrame()->loader().documentLoader()) 2528 buffer = loader->mainResourceData(); 2533 if (PluginView* pluginView = pluginViewForFrame(frame->coreFrame())) { 2534 if ((pdfResource = pluginView->liveResourceData())) 2535 dataReference = IPC::DataReference(reinterpret_cast<const uint8_t*>(pdfResource->data()), pdfResource->size()); 2529 2536 } 2530 } 2531 2532 // FIXME: Use SharedBufferDataReference. 2533 IPC::DataReference dataReference; 2534 if (buffer) 2535 dataReference = IPC::DataReference(reinterpret_cast<const uint8_t*>(buffer->data()), buffer->size()); 2537 2538 if (dataReference.isEmpty()) { 2539 if (DocumentLoader* loader = frame->coreFrame()->loader().documentLoader()) { 2540 if ((buffer = loader->mainResourceData())) 2541 dataReference = IPC::DataReference(reinterpret_cast<const uint8_t*>(buffer->data()), buffer->size()); 2542 } 2543 } 2544 } 2545 2536 2546 send(Messages::WebPageProxy::DataCallback(dataReference, callbackID)); 2537 2547 } … … 2552 2562 void WebPage::getResourceDataFromFrame(uint64_t frameID, const String& resourceURLString, uint64_t callbackID) 2553 2563 { 2564 IPC::DataReference dataReference; 2565 URL resourceURL(URL(), resourceURLString); 2566 2554 2567 RefPtr<SharedBuffer> buffer; 2555 2568 if (WebFrame* frame = WebProcess::shared().webFrame(frameID)) { 2556 URL resourceURL(URL(), resourceURLString);2557 2569 buffer = resourceDataForFrame(frame->coreFrame(), resourceURL); 2558 2570 if (!buffer) { … … 2560 2572 buffer = cachedResponseDataForURL(resourceURL); 2561 2573 } 2562 } 2563 2564 // FIXME: Use SharedBufferDataReference. 2574 2575 if (buffer) 2576 dataReference = IPC::DataReference(reinterpret_cast<const uint8_t*>(buffer->data()), buffer->size()); 2577 } 2578 2579 send(Messages::WebPageProxy::DataCallback(dataReference, callbackID)); 2580 } 2581 2582 void WebPage::getWebArchiveOfFrame(uint64_t frameID, uint64_t callbackID) 2583 { 2565 2584 IPC::DataReference dataReference; 2566 if (buffer) 2567 dataReference = IPC::DataReference(reinterpret_cast<const uint8_t*>(buffer->data()), buffer->size()); 2568 send(Messages::WebPageProxy::DataCallback(dataReference, callbackID)); 2569 } 2570 2571 void WebPage::getWebArchiveOfFrame(uint64_t frameID, uint64_t callbackID) 2572 { 2585 2573 2586 #if PLATFORM(COCOA) 2574 2587 RetainPtr<CFDataRef> data; 2575 if (WebFrame* frame = WebProcess::shared().webFrame(frameID)) 2576 data = frame->webArchiveData(nullptr, nullptr); 2588 if (WebFrame* frame = WebProcess::shared().webFrame(frameID)) { 2589 if ((data = frame->webArchiveData(0, 0))) 2590 dataReference = IPC::DataReference(CFDataGetBytePtr(data.get()), CFDataGetLength(data.get())); 2591 } 2577 2592 #else 2578 2593 UNUSED_PARAM(frameID); 2579 2594 #endif 2580 2595 2581 IPC::DataReference dataReference;2582 #if PLATFORM(COCOA)2583 if (data)2584 dataReference = IPC::DataReference(CFDataGetBytePtr(data.get()), CFDataGetLength(data.get()));2585 #endif2586 2596 send(Messages::WebPageProxy::DataCallback(dataReference, callbackID)); 2587 2597 } -
trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm
r175413 r175491 52 52 #import <WebCore/DNS.h> 53 53 #import <WebCore/Element.h> 54 #import <WebCore/ElementAncestorIterator.h>55 54 #import <WebCore/EventHandler.h> 56 55 #import <WebCore/FloatQuad.h> … … 83 82 #import <WebCore/RenderThemeIOS.h> 84 83 #import <WebCore/RenderView.h> 84 #import <WebCore/ResourceBuffer.h> 85 85 #import <WebCore/SharedBuffer.h> 86 86 #import <WebCore/TextIterator.h> … … 1843 1843 static Element* containingLinkElement(Element* element) 1844 1844 { 1845 for (auto& currentElement : elementLineage(element)) { 1846 if (currentElement.isLink()) 1847 return ¤tElement; 1848 } 1849 return nullptr; 1845 for (Element* currentElement = element; currentElement; currentElement = currentElement->parentElement()) 1846 if (currentElement->isLink()) 1847 return currentElement; 1848 return 0; 1850 1849 } 1851 1850 … … 1951 1950 return; 1952 1951 1953 HTMLElement & element = downcast<HTMLElement>(*m_interactionNode);1954 if (!element .renderer())1952 HTMLElement* element = downcast<HTMLElement>(m_interactionNode.get()); 1953 if (!element->renderer()) 1955 1954 return; 1956 1955 1957 1956 if (static_cast<SheetAction>(action) == SheetAction::Copy) { 1958 if (is<RenderImage>(*element.renderer())) { 1959 Element* linkElement = containingLinkElement(&element); 1957 if (is<RenderImage>(*element->renderer())) { 1958 Element* linkElement = containingLinkElement(element); 1959 1960 1960 if (!linkElement) 1961 m_interactionNode->document().frame()->editor().writeImageToPasteboard(*Pasteboard::createForCopyAndPaste(), element, downcast<RenderImage>(*element.renderer()).cachedImage()->url(), String());1961 m_interactionNode->document().frame()->editor().writeImageToPasteboard(*Pasteboard::createForCopyAndPaste(), *element, downcast<RenderImage>(*element->renderer()).cachedImage()->url(), String()); 1962 1962 else 1963 m_interactionNode->document().frame()->editor().copyURL(linkElement->document().completeURL(stripLeadingAndTrailingHTMLSpaces(linkElement-> fastGetAttribute(HTMLNames::hrefAttr))), linkElement->textContent());1964 } else if (element .isLink()) {1965 m_interactionNode->document().frame()->editor().copyURL(element .document().completeURL(stripLeadingAndTrailingHTMLSpaces(element.fastGetAttribute(HTMLNames::hrefAttr))), element.textContent());1963 m_interactionNode->document().frame()->editor().copyURL(linkElement->document().completeURL(stripLeadingAndTrailingHTMLSpaces(linkElement->getAttribute(HTMLNames::hrefAttr))), linkElement->textContent()); 1964 } else if (element->isLink()) { 1965 m_interactionNode->document().frame()->editor().copyURL(element->document().completeURL(stripLeadingAndTrailingHTMLSpaces(element->getAttribute(HTMLNames::hrefAttr))), element->textContent()); 1966 1966 } 1967 1967 } else if (static_cast<SheetAction>(action) == SheetAction::SaveImage) { 1968 if (!is<RenderImage>(*element .renderer()))1968 if (!is<RenderImage>(*element->renderer())) 1969 1969 return; 1970 CachedImage* cachedImage = downcast<RenderImage>(*element.renderer()).cachedImage(); 1971 if (!cachedImage) 1972 return; 1973 SharedBuffer* buffer = cachedImage->resourceBuffer(); 1974 if (!buffer) 1975 return; 1976 uint64_t bufferSize = buffer->size(); 1977 RefPtr<SharedMemory> sharedMemoryBuffer = SharedMemory::create(bufferSize); 1978 memcpy(sharedMemoryBuffer->data(), buffer->data(), bufferSize); 1979 SharedMemory::Handle handle; 1980 sharedMemoryBuffer->createHandle(handle, SharedMemory::ReadOnly); 1981 send(Messages::WebPageProxy::SaveImageToLibrary(handle, bufferSize)); 1982 } 1983 } 1984 1985 static inline bool isAssistableElement(Element& node) 1986 { 1987 if (is<HTMLSelectElement>(node)) 1970 if (CachedImage* cachedImage = downcast<RenderImage>(*element->renderer()).cachedImage()) { 1971 SharedMemory::Handle handle; 1972 RefPtr<SharedBuffer> buffer = cachedImage->resourceBuffer()->sharedBuffer(); 1973 if (buffer) { 1974 uint64_t bufferSize = buffer->size(); 1975 RefPtr<SharedMemory> sharedMemoryBuffer = SharedMemory::create(bufferSize); 1976 memcpy(sharedMemoryBuffer->data(), buffer->data(), bufferSize); 1977 sharedMemoryBuffer->createHandle(handle, SharedMemory::ReadOnly); 1978 send(Messages::WebPageProxy::SaveImageToLibrary(handle, bufferSize)); 1979 } 1980 } 1981 } 1982 } 1983 1984 static inline bool isAssistableNode(Node* node) 1985 { 1986 if (is<HTMLSelectElement>(*node)) 1988 1987 return true; 1989 if (is<HTMLTextAreaElement>(node)) 1990 return !downcast<HTMLTextAreaElement>(node).isReadOnlyNode(); 1991 if (is<HTMLInputElement>(node)) { 1992 HTMLInputElement& inputElement = downcast<HTMLInputElement>(node); 1993 // FIXME: This laundry list of types is not a good way to factor this. Need a suitable function on HTMLInputElement itself. 1994 return !inputElement.isReadOnlyNode() && (inputElement.isTextField() || inputElement.isDateField() || inputElement.isDateTimeLocalField() || inputElement.isMonthField() || inputElement.isTimeField()); 1995 } 1996 return node.isContentEditable(); 1997 } 1998 1999 static inline Element* nextAssistableElement(Node* startNode, Page& page, bool isForward) 2000 { 2001 if (!is<Element>(startNode)) 2002 return nullptr; 2003 1988 if (is<HTMLTextAreaElement>(*node)) 1989 return !downcast<HTMLTextAreaElement>(*node).isReadOnlyNode(); 1990 if (is<HTMLInputElement>(*node)) { 1991 HTMLInputElement& element = downcast<HTMLInputElement>(*node); 1992 return !element.isReadOnlyNode() && (element.isTextField() || element.isDateField() || element.isDateTimeLocalField() || element.isMonthField() || element.isTimeField()); 1993 } 1994 1995 return node->isContentEditable(); 1996 } 1997 1998 static inline Element* nextFocusableElement(Node* startNode, Page* page, bool isForward) 1999 { 2004 2000 RefPtr<KeyboardEvent> key = KeyboardEvent::create(); 2005 2001 2006 2002 Element* nextElement = downcast<Element>(startNode); 2007 2003 do { 2008 nextElement = isForward 2009 ? page.focusController().nextFocusableElement(FocusNavigationScope::focusNavigationScopeOf(&nextElement->document()), nextElement, key.get()) 2010 : page.focusController().previousFocusableElement(FocusNavigationScope::focusNavigationScopeOf(&nextElement->document()), nextElement, key.get()); 2011 } while (nextElement && !isAssistableElement(*nextElement)); 2004 nextElement = isForward ? page->focusController().nextFocusableElement(FocusNavigationScope::focusNavigationScopeOf(&nextElement->document()), nextElement, key.get()) 2005 : page->focusController().previousFocusableElement(FocusNavigationScope::focusNavigationScopeOf(&nextElement->document()), nextElement, key.get()); 2006 } while (nextElement && !isAssistableNode(nextElement)); 2012 2007 2013 2008 return nextElement; 2014 2009 } 2015 2010 2016 static inline bool has AssistableElement(Node* startNode, Page&page, bool isForward)2017 { 2018 return next AssistableElement(startNode, page, isForward);2011 static inline bool hasFocusableElement(Node* startNode, Page* page, bool isForward) 2012 { 2013 return nextFocusableElement(startNode, page, isForward) != nil; 2019 2014 } 2020 2015 2021 2016 void WebPage::focusNextAssistedNode(bool isForward) 2022 2017 { 2023 Element* nextElement = next AssistableElement(m_assistedNode.get(), *m_page, isForward);2018 Element* nextElement = nextFocusableElement(m_assistedNode.get(), m_page.get(), isForward); 2024 2019 m_userIsInteracting = true; 2025 2020 if (nextElement) … … 2062 2057 information.maximumScaleFactor = maximumPageScaleFactor(); 2063 2058 information.allowsUserScaling = m_viewportConfiguration.allowsUserScaling(); 2064 information.hasNextNode = has AssistableElement(m_assistedNode.get(), *m_page, true);2065 information.hasPreviousNode = has AssistableElement(m_assistedNode.get(), *m_page, false);2059 information.hasNextNode = hasFocusableElement(m_assistedNode.get(), m_page.get(), true); 2060 information.hasPreviousNode = hasFocusableElement(m_assistedNode.get(), m_page.get(), false); 2066 2061 2067 2062 if (is<HTMLSelectElement>(*m_assistedNode)) {
Note:
See TracChangeset
for help on using the changeset viewer.