Title: [104530] trunk
- Revision
- 104530
- Author
- [email protected]
- Date
- 2012-01-09 18:14:33 -0800 (Mon, 09 Jan 2012)
Log 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.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (104529 => 104530)
--- trunk/Source/WebCore/ChangeLog 2012-01-10 02:12:05 UTC (rev 104529)
+++ trunk/Source/WebCore/ChangeLog 2012-01-10 02:14:33 UTC (rev 104530)
@@ -1,3 +1,16 @@
+2012-01-09 Dan Bernstein <[email protected]>
+
+ -[DOMRange renderedImageForcingBlackText:] fails with non-user-selectable text
+ https://bugs.webkit.org/show_bug.cgi?id=75920
+
+ Reviewed by Darin Adler.
+
+ 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.
+
2012-01-06 Hajime Morrita <[email protected]>
[Refactoring] Moving between TreeScopes should be done by its own class.
Modified: trunk/Source/WebCore/page/mac/FrameMac.mm (104529 => 104530)
--- trunk/Source/WebCore/page/mac/FrameMac.mm 2012-01-10 02:12:05 UTC (rev 104529)
+++ trunk/Source/WebCore/page/mac/FrameMac.mm 2012-01-10 02:14:33 UTC (rev 104530)
@@ -113,21 +113,17 @@
if (!view)
return nil;
- VisibleSelection visibleSelection(range);
-
- if (!visibleSelection.isRange())
- return nil;
-
- Position start = visibleSelection.start();
+ Position start = range->startPosition();
Position candidate = start.downstream();
- if (candidate.isCandidate())
+ if (candidate.deprecatedNode() && candidate.deprecatedNode()->renderer())
start = candidate;
- Position end = visibleSelection.end();
+
+ Position end = range->endPosition();
candidate = end.upstream();
- if (candidate.isCandidate())
+ if (candidate.deprecatedNode() && candidate.deprecatedNode()->renderer())
end = candidate;
- if (start.isNull() || end.isNull() || visibleSelection.visibleStart() == visibleSelection.visibleEnd())
+ if (start.isNull() || end.isNull() || start == end)
return nil;
RenderObject* savedStartRenderer;
@@ -137,7 +133,12 @@
view->getSelection(savedStartRenderer, savedStartOffset, savedEndRenderer, savedEndOffset);
RenderObject* startRenderer = start.deprecatedNode()->renderer();
+ if (!startRenderer)
+ return nil;
+
RenderObject* endRenderer = end.deprecatedNode()->renderer();
+ if (!endRenderer)
+ return nil;
view->setSelection(startRenderer, start.deprecatedEditingOffset(), endRenderer, end.deprecatedEditingOffset(), RenderView::RepaintNothing);
NSImage* result = imageFromRect(view->selectionBounds());
Modified: trunk/Tools/ChangeLog (104529 => 104530)
--- trunk/Tools/ChangeLog 2012-01-10 02:12:05 UTC (rev 104529)
+++ trunk/Tools/ChangeLog 2012-01-10 02:14:33 UTC (rev 104530)
@@ -1,3 +1,14 @@
+2012-01-09 Dan Bernstein <[email protected]>
+
+ -[DOMRange renderedImageForcingBlackText:] fails with non-user-selectable text
+ https://bugs.webkit.org/show_bug.cgi?id=75920
+
+ Reviewed by Darin Adler.
+
+ * TestWebKitAPI/Tests/mac/RenderedImageFromDOMRange.mm:
+ (TestWebKitAPI::TEST): Added a test for a range in a
+ -webkit-user-select: none; block.
+
2012-01-09 Dirk Pranke <[email protected]>
webkitpy.layout_tests.port.mock_drt_unittest.MockChromiumDRTTest has been failing on cr-win
Modified: trunk/Tools/TestWebKitAPI/Tests/mac/RenderedImageFromDOMRange.mm (104529 => 104530)
--- trunk/Tools/TestWebKitAPI/Tests/mac/RenderedImageFromDOMRange.mm 2012-01-10 02:12:05 UTC (rev 104529)
+++ trunk/Tools/TestWebKitAPI/Tests/mac/RenderedImageFromDOMRange.mm 2012-01-10 02:14:33 UTC (rev 104530)
@@ -58,13 +58,18 @@
DOMDocument *document = webView.get().mainFrameDocument;
DOMRange *range = [document createRange];
- [range selectNode:[document getElementById:@"target"]];
+ DOMNode *target = [document getElementById:@"target"];
+ [range selectNode:target];
NSImage *actualImage = [range renderedImageForcingBlackText:YES];
[webView.get() setSelectedDOMRange:range affinity:NSSelectionAffinityDownstream];
id <WebDocumentView> documentView = webView.get().mainFrame.frameView.documentView;
NSImage *expectedImage = [(id <WebDocumentSelection>)documentView selectionImageForcingBlackText:YES];
EXPECT_TRUE([actualImage.TIFFRepresentation isEqual:expectedImage.TIFFRepresentation]);
+
+ [target.parentElement.style setProperty:@"-webkit-user-select" value:@"none" priority:nil];
+ NSImage *actualImageWithUserSelectNone = [range renderedImageForcingBlackText:YES];
+ EXPECT_TRUE([actualImageWithUserSelectNone.TIFFRepresentation isEqual:expectedImage.TIFFRepresentation]);
}
} // namespace TestWebKitAPI
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes