⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 181874 in webkit


Ignore:
Timestamp:
Mar 23, 2015, 3:05:59 PM (11 years ago)
Author:
timothy_horton@apple.com
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.

Location:
trunk/Source/WebKit2
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r181869 r181874  
     12015-03-23  Tim Horton  <timothy_horton@apple.com>
     2
     3        Images shared to photos via action menu are padded with zeroes at the end
     4        https://bugs.webkit.org/show_bug.cgi?id=142985
     5
     6        Reviewed by Anders Carlsson.
     7
     8        * Shared/mac/ActionMenuHitTestResult.h:
     9        * Shared/mac/ActionMenuHitTestResult.mm:
     10        (WebKit::ActionMenuHitTestResult::encode):
     11        (WebKit::ActionMenuHitTestResult::decode):
     12        * WebProcess/WebPage/mac/WebPageMac.mm:
     13        (WebKit::WebPage::performActionMenuHitTestAtLocation):
     14        Send the size of the image separately from the SharedMemory.
     15        The SharedMemory's size can be rounded up, so we need to keep the original
     16        size around in order to write the data to disk.
     17
     18        * UIProcess/mac/WKActionMenuController.mm:
     19        (-[WKActionMenuController _hitTestResultImage]):
     20        (-[WKActionMenuController _addImageToPhotos:]):
     21        Use the image size instead of the SharedMemory size.
     22
    1232015-03-23  Enrica Casucci  <enrica@apple.com>
    224
  • trunk/Source/WebKit2/Shared/mac/ActionMenuHitTestResult.h

    r177522 r181874  
    5555    String lookupText;
    5656    RefPtr<SharedMemory> imageSharedMemory;
     57    uint64_t imageSize;
    5758    String imageExtension;
    5859
  • trunk/Source/WebKit2/Shared/mac/ActionMenuHitTestResult.mm

    r177522 r181874  
    4646
    4747    SharedMemory::Handle imageHandle;
    48     if (imageSharedMemory && imageSharedMemory->size())
     48    if (imageSharedMemory && imageSharedMemory->data())
    4949        imageSharedMemory->createHandle(imageHandle, SharedMemory::ReadOnly);
    5050    encoder << imageHandle;
     51    encoder << imageSize;
    5152
    5253    bool hasActionContext = actionContext;
     
    9899    if (!imageHandle.isNull())
    99100        actionMenuHitTestResult.imageSharedMemory = SharedMemory::create(imageHandle, SharedMemory::ReadOnly);
     101
     102    if (!decoder.decode(actionMenuHitTestResult.imageSize))
     103        return false;
    100104
    101105    bool hasActionContext;
  • trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm

    r181858 r181874  
    246246        return nil;
    247247
    248     RetainPtr<NSImage> nsImage = adoptNS([[NSImage alloc] initWithData:[NSData dataWithBytes:imageSharedMemory->data() length:imageSharedMemory->size()]]);
     248    RetainPtr<NSImage> nsImage = adoptNS([[NSImage alloc] initWithData:[NSData dataWithBytes:imageSharedMemory->data() length:_hitTestResult.imageSize]]);
    249249    return nsImage.autorelease();
    250250}
     
    336336
    337337    RefPtr<SharedMemory> imageSharedMemory = _hitTestResult.imageSharedMemory;
    338     if (!imageSharedMemory->size() || _hitTestResult.imageExtension.isEmpty())
    339         return;
    340 
    341     RetainPtr<NSData> imageData = adoptNS([[NSData alloc] initWithBytes:imageSharedMemory->data() length:imageSharedMemory->size()]);
     338    if (!imageSharedMemory->data() || _hitTestResult.imageExtension.isEmpty() || !_hitTestResult.imageSize)
     339        return;
     340
     341    RetainPtr<NSData> imageData = adoptNS([[NSData alloc] initWithBytes:imageSharedMemory->data() length:_hitTestResult.imageSize]);
    342342    RetainPtr<NSString> suggestedFilename = [[[NSProcessInfo processInfo] globallyUniqueString] stringByAppendingPathExtension:_hitTestResult.imageExtension];
    343343
  • trunk/Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm

    r181838 r181874  
    10631063                memcpy(actionMenuResult.imageSharedMemory->data(), buffer->data(), buffer->size());
    10641064                actionMenuResult.imageExtension = imageExtension;
     1065                actionMenuResult.imageSize = buffer->size();
    10651066            }
    10661067        }
Note: See TracChangeset for help on using the changeset viewer.