Changeset 104530 in webkit


Ignore:
Timestamp:
Jan 9, 2012 6:14:33 PM (12 years ago)
Author:
mitz@apple.com
Message:

-[DOMRange renderedImageForcingBlackText:] fails with non-user-selectable text
https://bugs.webkit.org/show_bug.cgi?id=75920

Reviewed by Darin Adler.

Source/WebCore:

Test: added to TestWebKitAPI/Tests/mac/RenderedImageFromDOMRange.mm

  • page/mac/FrameMac.mm:

(WebCore::Frame::rangeImage): Removed the requirement that the start and end positions used
for setting the selection in the render tree be candidates.

Tools:

  • TestWebKitAPI/Tests/mac/RenderedImageFromDOMRange.mm:

(TestWebKitAPI::TEST): Added a test for a range in a
-webkit-user-select: none; block.

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r104528 r104530  
     12012-01-09  Dan Bernstein  <mitz@apple.com>
     2
     3        -[DOMRange renderedImageForcingBlackText:] fails with non-user-selectable text
     4        https://bugs.webkit.org/show_bug.cgi?id=75920
     5
     6        Reviewed by Darin Adler.
     7
     8        Test: added to TestWebKitAPI/Tests/mac/RenderedImageFromDOMRange.mm
     9
     10        * page/mac/FrameMac.mm:
     11        (WebCore::Frame::rangeImage): Removed the requirement that the start and end positions used
     12        for setting the selection in the render tree be candidates.
     13
    1142012-01-06  Hajime Morrita  <morrita@chromium.org>
    215
  • trunk/Source/WebCore/page/mac/FrameMac.mm

    r99099 r104530  
    114114        return nil;
    115115
    116     VisibleSelection visibleSelection(range);
    117 
    118     if (!visibleSelection.isRange())
    119         return nil;
    120 
    121     Position start = visibleSelection.start();
     116    Position start = range->startPosition();
    122117    Position candidate = start.downstream();
    123     if (candidate.isCandidate())
     118    if (candidate.deprecatedNode() && candidate.deprecatedNode()->renderer())
    124119        start = candidate;
    125     Position end = visibleSelection.end();
     120
     121    Position end = range->endPosition();
    126122    candidate = end.upstream();
    127     if (candidate.isCandidate())
     123    if (candidate.deprecatedNode() && candidate.deprecatedNode()->renderer())
    128124        end = candidate;
    129125
    130     if (start.isNull() || end.isNull() || visibleSelection.visibleStart() == visibleSelection.visibleEnd())
     126    if (start.isNull() || end.isNull() || start == end)
    131127        return nil;
    132128
     
    138134
    139135    RenderObject* startRenderer = start.deprecatedNode()->renderer();
     136    if (!startRenderer)
     137        return nil;
     138
    140139    RenderObject* endRenderer = end.deprecatedNode()->renderer();
     140    if (!endRenderer)
     141        return nil;
    141142
    142143    view->setSelection(startRenderer, start.deprecatedEditingOffset(), endRenderer, end.deprecatedEditingOffset(), RenderView::RepaintNothing);
  • trunk/Tools/ChangeLog

    r104524 r104530  
     12012-01-09  Dan Bernstein  <mitz@apple.com>
     2
     3        -[DOMRange renderedImageForcingBlackText:] fails with non-user-selectable text
     4        https://bugs.webkit.org/show_bug.cgi?id=75920
     5
     6        Reviewed by Darin Adler.
     7
     8        * TestWebKitAPI/Tests/mac/RenderedImageFromDOMRange.mm:
     9        (TestWebKitAPI::TEST): Added a test for a range in a
     10        -webkit-user-select: none; block.
     11
    1122012-01-09  Dirk Pranke  <dpranke@chromium.org>
    213
  • trunk/Tools/TestWebKitAPI/Tests/mac/RenderedImageFromDOMRange.mm

    r99099 r104530  
    5959    DOMDocument *document = webView.get().mainFrameDocument;
    6060    DOMRange *range = [document createRange];
    61     [range selectNode:[document getElementById:@"target"]];
     61    DOMNode *target = [document getElementById:@"target"];
     62    [range selectNode:target];
    6263    NSImage *actualImage = [range renderedImageForcingBlackText:YES];
    6364
     
    6667    NSImage *expectedImage = [(id <WebDocumentSelection>)documentView selectionImageForcingBlackText:YES];
    6768    EXPECT_TRUE([actualImage.TIFFRepresentation isEqual:expectedImage.TIFFRepresentation]);
     69
     70    [target.parentElement.style setProperty:@"-webkit-user-select" value:@"none" priority:nil];
     71    NSImage *actualImageWithUserSelectNone = [range renderedImageForcingBlackText:YES];
     72    EXPECT_TRUE([actualImageWithUserSelectNone.TIFFRepresentation isEqual:expectedImage.TIFFRepresentation]);
    6873}
    6974
Note: See TracChangeset for help on using the changeset viewer.