Changeset 222119 in webkit
- Timestamp:
- Sep 15, 2017 4:59:35 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r222117 r222119 1 2017-09-15 Ryosuke Niwa <rniwa@webkit.org> 2 3 iOS: Use blob URL instead of a WebKit fake URL when pasting an image 4 https://bugs.webkit.org/show_bug.cgi?id=176986 5 <rdar://problem/34455052> 6 7 Reviewed by Wenson Hsieh. 8 9 Removed the failing expectation on the test added by r208451 now that it passes on iOS. 10 11 * platform/ios/TestExpectations: 12 1 13 2017-09-15 Ryan Haddad <ryanhaddad@apple.com> 2 14 -
trunk/LayoutTests/platform/ios/TestExpectations
r222100 r222119 2259 2259 editing/pasteboard/paste-blockquote-3.html [ Failure ] 2260 2260 editing/pasteboard/paste-global-selection.html [ Failure ] 2261 editing/pasteboard/paste-image-as-blob-url.html [ Failure ]2262 2261 editing/pasteboard/paste-list-004.html [ Failure ] 2263 2262 editing/pasteboard/paste-placeholder-input.html [ Failure ] -
trunk/Source/WebCore/ChangeLog
r222114 r222119 1 2017-09-15 Ryosuke Niwa <rniwa@webkit.org> 2 3 iOS: Use blob URL instead of a WebKit fake URL when pasting an image 4 https://bugs.webkit.org/show_bug.cgi?id=176986 5 <rdar://problem/34455052> 6 7 Reviewed by Wenson Hsieh. 8 9 Fixed the bug that pasting an image on iOS resulted in an img element with src attribute 10 set to a WebKit fake URL so that the Web content could never save it. 11 12 Like r208451 on Mac, use a Blob URL instead. 13 14 This patch also removes createFragmentForImageResourceAndAddResource since it's no longer used. 15 16 Tests: LayoutTests/editing/pasteboard/paste-image-as-blob-url.html 17 18 * editing/cocoa/WebContentReaderCocoa.mm: 19 (WebCore::WebContentReader::readImage): Moved the code here from WebContentReaderMac.mm. 20 * editing/ios/WebContentReaderIOS.mm: 21 (WebCore::WebContentReader::readImage): Deleted. This is the code 22 * editing/mac/WebContentReaderMac.mm: 23 (WebCore::WebContentReader::readImage): Moved to WebContentReaderCocoa.mm. Note that 24 typeAsFilenameWithExtension was dead code after r208451 25 * editing/markup.cpp: 26 (WebCore::createFragmentForImageResourceAndAddResource): Deleted. 27 * editing/markup.h: 28 1 29 2017-09-15 Wenson Hsieh <wenson_hsieh@apple.com> 2 30 -
trunk/Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm
r222062 r222119 28 28 29 29 #include "ArchiveResource.h" 30 #include "Blob.h" 30 31 #include "CachedResourceLoader.h" 32 #include "DOMURL.h" 31 33 #include "Document.h" 32 34 #include "DocumentFragment.h" … … 167 169 } 168 170 171 bool WebContentReader::readImage(Ref<SharedBuffer>&& buffer, const String& type) 172 { 173 Vector<uint8_t> data; 174 data.append(buffer->data(), buffer->size()); 175 auto blob = Blob::create(WTFMove(data), type); 176 ASSERT(frame.document()); 177 auto& document = *frame.document(); 178 String blobURL = DOMURL::createObjectURL(document, blob); 179 addFragment(createFragmentForImageAndURL(document, blobURL)); 180 return true; 169 181 } 182 183 } -
trunk/Source/WebCore/editing/ios/WebContentReaderIOS.mm
r222062 r222119 28 28 29 29 #import "ArchiveResource.h" 30 #import "DOMURL.h"31 30 #import "Document.h" 32 31 #import "DocumentFragment.h" … … 63 62 } 64 63 65 bool WebContentReader::readImage(Ref<SharedBuffer>&& buffer, const String& type)66 {67 RetainPtr<CFStringRef> stringType = type.createCFString();68 RetainPtr<NSString> filenameExtension = adoptNS((NSString *)UTTypeCopyPreferredTagWithClass(stringType.get(), kUTTagClassFilenameExtension));69 NSString *relativeURLPart = [@"image" stringByAppendingString:filenameExtension.get()];70 String mimeType = MIMETypeFromUTI(type);71 72 // FIXME: Use a blob URL instead.73 auto archive = ArchiveResource::create(WTFMove(buffer), URL::fakeURLWithRelativePart(relativeURLPart), mimeType, emptyString(), emptyString());74 ASSERT(archive);75 auto fragment = createFragmentForImageResourceAndAddResource(frame, *archive);76 if (!fragment)77 return false;78 addFragment(fragment.releaseNonNull());79 return true;80 }81 82 64 bool WebContentReader::readURL(const URL& url, const String& title) 83 65 { -
trunk/Source/WebCore/editing/mac/WebContentReaderMac.mm
r222062 r222119 28 28 29 29 #import "ArchiveResource.h" 30 #import "DOMURL.h"31 30 #import "Document.h" 32 31 #import "DocumentFragment.h" … … 101 100 } 102 101 103 bool WebContentReader::readImage(Ref<SharedBuffer>&& buffer, const String& type)104 {105 ASSERT(type.contains('/'));106 String typeAsFilenameWithExtension = type;107 typeAsFilenameWithExtension.replace('/', '.');108 109 Vector<uint8_t> data;110 data.append(buffer->data(), buffer->size());111 auto blob = Blob::create(WTFMove(data), type);112 ASSERT(frame.document());113 Document& document = *frame.document();114 String blobURL = DOMURL::createObjectURL(document, blob);115 116 fragment = createFragmentForImageAndURL(document, blobURL);117 return fragment;118 }119 120 102 bool WebContentReader::readURL(const URL& url, const String& title) 121 103 { -
trunk/Source/WebCore/editing/markup.cpp
r221960 r222119 934 934 } 935 935 936 RefPtr<DocumentFragment> createFragmentForImageResourceAndAddResource(Frame& frame, Ref<ArchiveResource>&& resource)937 {938 if (!frame.document())939 return nullptr;940 941 Ref<Document> document = *frame.document();942 String resourceURL = resource->url().string();943 944 if (DocumentLoader* loader = frame.loader().documentLoader())945 loader->addArchiveResource(WTFMove(resource));946 947 auto imageElement = HTMLImageElement::create(document.get());948 imageElement->setAttributeWithoutSynchronization(HTMLNames::srcAttr, resourceURL);949 950 auto fragment = document->createDocumentFragment();951 fragment->appendChild(imageElement);952 953 return WTFMove(fragment);954 }955 956 936 static Vector<Ref<HTMLElement>> collectElementsToRemoveFromFragment(ContainerNode& container) 957 937 { -
trunk/Source/WebCore/editing/markup.h
r222113 r222119 54 54 RefPtr<DocumentFragment> createFragmentForTransformToFragment(Document&, const String& sourceString, const String& sourceMIMEType); 55 55 Ref<DocumentFragment> createFragmentForImageAndURL(Document&, const String&); 56 RefPtr<DocumentFragment> createFragmentForImageResourceAndAddResource(Frame&, Ref<ArchiveResource>&&);57 56 ExceptionOr<Ref<DocumentFragment>> createContextualFragment(Element&, const String& markup, ParserContentPolicy); 58 57
Note: See TracChangeset
for help on using the changeset viewer.