Title: [181874] trunk/Source/WebKit2
- Revision
- 181874
- Author
- [email protected]
- Date
- 2015-03-23 15:05:59 -0700 (Mon, 23 Mar 2015)
Log Message
Images shared to photos via action menu are padded with zeroes at the end
https://bugs.webkit.org/show_bug.cgi?id=142985
Reviewed by Anders Carlsson.
* Shared/mac/ActionMenuHitTestResult.h:
* Shared/mac/ActionMenuHitTestResult.mm:
(WebKit::ActionMenuHitTestResult::encode):
(WebKit::ActionMenuHitTestResult::decode):
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::performActionMenuHitTestAtLocation):
Send the size of the image separately from the SharedMemory.
The SharedMemory's size can be rounded up, so we need to keep the original
size around in order to write the data to disk.
* UIProcess/mac/WKActionMenuController.mm:
(-[WKActionMenuController _hitTestResultImage]):
(-[WKActionMenuController _addImageToPhotos:]):
Use the image size instead of the SharedMemory size.
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (181873 => 181874)
--- trunk/Source/WebKit2/ChangeLog 2015-03-23 22:04:34 UTC (rev 181873)
+++ trunk/Source/WebKit2/ChangeLog 2015-03-23 22:05:59 UTC (rev 181874)
@@ -1,3 +1,25 @@
+2015-03-23 Tim Horton <[email protected]>
+
+ Images shared to photos via action menu are padded with zeroes at the end
+ https://bugs.webkit.org/show_bug.cgi?id=142985
+
+ Reviewed by Anders Carlsson.
+
+ * Shared/mac/ActionMenuHitTestResult.h:
+ * Shared/mac/ActionMenuHitTestResult.mm:
+ (WebKit::ActionMenuHitTestResult::encode):
+ (WebKit::ActionMenuHitTestResult::decode):
+ * WebProcess/WebPage/mac/WebPageMac.mm:
+ (WebKit::WebPage::performActionMenuHitTestAtLocation):
+ Send the size of the image separately from the SharedMemory.
+ The SharedMemory's size can be rounded up, so we need to keep the original
+ size around in order to write the data to disk.
+
+ * UIProcess/mac/WKActionMenuController.mm:
+ (-[WKActionMenuController _hitTestResultImage]):
+ (-[WKActionMenuController _addImageToPhotos:]):
+ Use the image size instead of the SharedMemory size.
+
2015-03-23 Enrica Casucci <[email protected]>
[iOS] WebContent crash attempting to select text with a gesture at RenderObject::absoluteBoundingBoxRect.
Modified: trunk/Source/WebKit2/Shared/mac/ActionMenuHitTestResult.h (181873 => 181874)
--- trunk/Source/WebKit2/Shared/mac/ActionMenuHitTestResult.h 2015-03-23 22:04:34 UTC (rev 181873)
+++ trunk/Source/WebKit2/Shared/mac/ActionMenuHitTestResult.h 2015-03-23 22:05:59 UTC (rev 181874)
@@ -54,6 +54,7 @@
String lookupText;
RefPtr<SharedMemory> imageSharedMemory;
+ uint64_t imageSize;
String imageExtension;
RetainPtr<DDActionContext> actionContext;
Modified: trunk/Source/WebKit2/Shared/mac/ActionMenuHitTestResult.mm (181873 => 181874)
--- trunk/Source/WebKit2/Shared/mac/ActionMenuHitTestResult.mm 2015-03-23 22:04:34 UTC (rev 181873)
+++ trunk/Source/WebKit2/Shared/mac/ActionMenuHitTestResult.mm 2015-03-23 22:05:59 UTC (rev 181874)
@@ -45,9 +45,10 @@
encoder << imageExtension;
SharedMemory::Handle imageHandle;
- if (imageSharedMemory && imageSharedMemory->size())
+ if (imageSharedMemory && imageSharedMemory->data())
imageSharedMemory->createHandle(imageHandle, SharedMemory::ReadOnly);
encoder << imageHandle;
+ encoder << imageSize;
bool hasActionContext = actionContext;
encoder << hasActionContext;
@@ -98,6 +99,9 @@
if (!imageHandle.isNull())
actionMenuHitTestResult.imageSharedMemory = SharedMemory::create(imageHandle, SharedMemory::ReadOnly);
+ if (!decoder.decode(actionMenuHitTestResult.imageSize))
+ return false;
+
bool hasActionContext;
if (!decoder.decode(hasActionContext))
return false;
Modified: trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm (181873 => 181874)
--- trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm 2015-03-23 22:04:34 UTC (rev 181873)
+++ trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm 2015-03-23 22:05:59 UTC (rev 181874)
@@ -245,7 +245,7 @@
if (!imageSharedMemory)
return nil;
- RetainPtr<NSImage> nsImage = adoptNS([[NSImage alloc] initWithData:[NSData dataWithBytes:imageSharedMemory->data() length:imageSharedMemory->size()]]);
+ RetainPtr<NSImage> nsImage = adoptNS([[NSImage alloc] initWithData:[NSData dataWithBytes:imageSharedMemory->data() length:_hitTestResult.imageSize]]);
return nsImage.autorelease();
}
@@ -335,10 +335,10 @@
return;
RefPtr<SharedMemory> imageSharedMemory = _hitTestResult.imageSharedMemory;
- if (!imageSharedMemory->size() || _hitTestResult.imageExtension.isEmpty())
+ if (!imageSharedMemory->data() || _hitTestResult.imageExtension.isEmpty() || !_hitTestResult.imageSize)
return;
- RetainPtr<NSData> imageData = adoptNS([[NSData alloc] initWithBytes:imageSharedMemory->data() length:imageSharedMemory->size()]);
+ RetainPtr<NSData> imageData = adoptNS([[NSData alloc] initWithBytes:imageSharedMemory->data() length:_hitTestResult.imageSize]);
RetainPtr<NSString> suggestedFilename = [[[NSProcessInfo processInfo] globallyUniqueString] stringByAppendingPathExtension:_hitTestResult.imageExtension];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm (181873 => 181874)
--- trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm 2015-03-23 22:04:34 UTC (rev 181873)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm 2015-03-23 22:05:59 UTC (rev 181874)
@@ -1062,6 +1062,7 @@
actionMenuResult.imageSharedMemory = SharedMemory::create(buffer->size());
memcpy(actionMenuResult.imageSharedMemory->data(), buffer->data(), buffer->size());
actionMenuResult.imageExtension = imageExtension;
+ actionMenuResult.imageSize = buffer->size();
}
}
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes