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

Reply via email to