summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordimich@chromium.org <dimich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-03 02:29:44 +0000
committerdimich@chromium.org <dimich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-03 02:29:44 +0000
commit42ff2c813339961af8e09a372979a7bf7be77a5d (patch)
tree381f151ecfb89b32eedb6b935cb8367b4c2db450
parent6dd32575d4dfdf75d86ba8726850c98bcbcec9e3 (diff)
downloadchromium_src-42ff2c813339961af8e09a372979a7bf7be77a5d.zip
chromium_src-42ff2c813339961af8e09a372979a7bf7be77a5d.tar.gz
chromium_src-42ff2c813339961af8e09a372979a7bf7be77a5d.tar.bz2
Landing for dbelenko.
Fix for bug 28646: Implement LayoutTestController.dumpSelectionRect() This fix will prepare the test cases affected by bug 28646 for rebaseline. It does three things: 1. Implements dumpSelectionRect() and the related drawing code. 2. Marks the affected test cases as FAIL and removes platform restrictions for them from test_expectations.txt 3. Marks three new test cases as FAIL. These test cases have incorrect baseline images. I have contacted the authors and got an OK from them to rebaseline the expected image. After this is committed, I will retrieve the images from the buildbot and rebaseline the expectations for the affected test cases. Trybot runs for this patch: http://build.chromium.org/buildbot/try-server/builders/layout_linux/builds/1477 http://build.chromium.org/buildbot/try-server/builders/layout_win/builds/1478 http://build.chromium.org/buildbot/try-server/builders/layout_mac/builds/1341 BUG=28646 TEST=This change will enable over 30 tests on all three platforms. I have inspected the images visually, the rect gets drawn correctly, in the same locations as in WebKit tests, but with a slightly different color, due to differences in Skia rasterization and alpha blending. These differences are not critical to the purpose of the test cases. Review URL: http://codereview.chromium.org/661437 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@40484 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--webkit/tools/layout_tests/test_expectations.txt92
-rw-r--r--webkit/tools/test_shell/layout_test_controller.cc5
-rw-r--r--webkit/tools/test_shell/layout_test_controller.h10
-rw-r--r--webkit/tools/test_shell/test_shell.cc20
4 files changed, 72 insertions, 55 deletions
diff --git a/webkit/tools/layout_tests/test_expectations.txt b/webkit/tools/layout_tests/test_expectations.txt
index 495bd05..686f22f 100644
--- a/webkit/tools/layout_tests/test_expectations.txt
+++ b/webkit/tools/layout_tests/test_expectations.txt
@@ -941,7 +941,6 @@ BUG32444 LINUX WIN : svg/hixie/text/003.html = FAIL
// SVG combined with font metrics.
BUG24198 LINUX : svg/hixie/text/001-broken.xml = FAIL
-BUG10300 LINUX : svg/text/text-text-08-b.svg = FAIL
// SVG masks aren't quite working yet.
// Might also be related to https://bugs.webkit.org/show_bug.cgi?id=21910
@@ -989,8 +988,6 @@ BUG10304 LINUX : svg/hixie/perf/005.xml = FAIL
BUG10304 LINUX RELEASE : svg/hixie/perf/006.xml = FAIL
BUG10304 LINUX DEBUG : svg/hixie/perf/006.xml = FAIL
BUG10304 LINUX : svg/hixie/text/003b.xml = FAIL
-BUG10304 LINUX : svg/text/text-spacing-01-b.svg = FAIL
-BUG10304 LINUX : svg/text/text-text-01-b.svg = FAIL
BUG10304 LINUX : svg/W3C-SVG-1.1/fonts-elem-01-t.svg = FAIL
BUG10304 LINUX : svg/W3C-SVG-1.1/fonts-elem-02-t.svg = FAIL
BUG10304 LINUX : svg/W3C-SVG-1.1/fonts-elem-03-b.svg = FAIL
@@ -1780,41 +1777,6 @@ BUG23485 MAC : editing/style/apply-through-end-of-document.html = IMAGE
// Extra space at the end of the table cell
BUG23484 MAC : editing/pasteboard/5387578.html = IMAGE
-// When finding, the reference image has a "found rectangle" and we do not
-BUG23481 MAC : editing/selection/4402375.html = IMAGE
-BUG23481 MAC : editing/selection/image-before-linebreak.html = IMAGE
-BUG23481 MAC : editing/selection/replaced-boundaries-1.html = IMAGE
-BUG23481 MAC : editing/selection/replaced-boundaries-2.html = IMAGE
-BUG23481 MAC : editing/selection/replaced-boundaries-3.html = IMAGE
-
-// SVG expected images have what looks like a "found rectangle" around them; variation of above?
-BUG23482 MAC : svg/text/text-align-01-b.svg = IMAGE
-BUG23482 MAC : svg/text/text-align-02-b.svg = IMAGE
-BUG23482 MAC : svg/text/text-align-03-b.svg = IMAGE
-BUG23482 MAC : svg/text/text-align-04-b.svg = IMAGE
-BUG23482 MAC : svg/text/text-align-05-b.svg = IMAGE
-BUG23482 MAC : svg/text/text-align-06-b.svg = IMAGE
-BUG23482 MAC : svg/text/text-altglyph-01-b.svg = IMAGE
-BUG23482 MAC : svg/text/text-deco-01-b.svg = IMAGE
-BUG23482 MAC : svg/text/text-fonts-01-t.svg = IMAGE
-BUG23482 MAC : svg/text/text-fonts-02-t.svg = IMAGE
-BUG23482 MAC : svg/text/text-intro-05-t.svg = IMAGE
-BUG23482 MAC : svg/text/text-path-01-b.svg = IMAGE
-BUG23482 MAC : svg/text/text-spacing-01-b.svg = IMAGE
-BUG23482 MAC : svg/text/text-text-01-b.svg = IMAGE
-BUG23482 MAC : svg/text/text-text-03-b.svg = IMAGE
-BUG23482 MAC : svg/text/text-text-04-t.svg = IMAGE
-BUG23482 MAC : svg/text/text-text-05-t.svg = IMAGE
-BUG23482 MAC : svg/text/text-text-06-t.svg = IMAGE
-BUG23482 MAC : svg/text/text-text-08-b.svg = IMAGE
-BUG23482 MAC : svg/text/text-tref-01-b.svg = IMAGE
-BUG23482 MAC : svg/text/text-tselect-01-b.svg = IMAGE
-BUG23482 MAC : svg/text/text-tselect-02-f.svg = IMAGE
-BUG23482 MAC : svg/text/text-tspan-01-b.svg = IMAGE
-BUG23482 MAC : svg/text/text-ws-01-t.svg = IMAGE
-BUG23482 MAC : svg/text/text-ws-02-t.svg = IMAGE
-BUG23482 MAC : svg/text/textPathBoundsBug.svg = IMAGE
-
// Various drawing tests that are broken
BUG23477 MAC : fast/backgrounds/bgCompositeCopy.html = IMAGE
BUG23477 MAC : fast/canvas/canvas-as-image-incremental-repaint.html = IMAGE
@@ -1937,7 +1899,6 @@ BUG10405 WIN : svg/custom/struct-use-09-b.svg = FAIL
// Renders the width of "600" off by 3. Looks OK but could still be a bug
// that we shouldn't rebaseline.
BUG10417 LINUX : svg/W3C-SVG-1.1/text-fonts-02-t.svg = FAIL
-BUG10417 LINUX : svg/text/text-fonts-02-t.svg = FAIL
// New test. We should fix it, but it doesn't need to block the current release
BUG10418 SLOW MAC RELEASE : fast/events/click-count.html = PASS
@@ -1946,7 +1907,6 @@ BUG10418 WIN DEBUG : animations/change-keyframes-name.html = FAIL PASS
// TODO(dsh): These started to fail after r9202.
BUG10419 LINUX : svg/W3C-SVG-1.1/text-path-01-b.svg = FAIL
-BUG10419 LINUX : svg/text/text-path-01-b.svg = FAIL
// We could fix this test for us and upstream it if the test shell user agent
// would let us differentiate test_shell and WebKit DumpTreeNode.
@@ -2302,10 +2262,6 @@ BUG24126 : fast/dom/HTMLInputElement/size-attribute.html = FAIL
// Started happening somewhere around http://trac.webkit.org/changeset/48989.
BUG23955 LINUX MAC : fast/css/last-of-type-pseudo-class.html = FAIL
-
-// Fails since WebKit merge 49321:49372
-BUG24331 LINUX : svg/text/text-tselect-02-f.svg = FAIL
-
// WebKit update: 49190:49206
BUG_JPARENT LINUX DEBUG SLOW : fast/frames/calculate-fixed.html = PASS
@@ -2525,9 +2481,6 @@ BUG29167 MAC : fast/dom/replaceChild.html = IMAGE PASS
// Failure from WebKit merge 51607:51613 (51608 is the cause)
BUG29239 : fast/css/variables/misplaced-import-test.html = FAIL
-// Failures from WebKit merge 51618:51642
-BUG29344 MAC LINUX : svg/text/text-text-07-t.svg = FAIL
-
// Failures from WebKit merge 51642:51681
// Skip these tests since they all timeout and add ~1 minute to cycle time!
BUG29393 SKIP DEFER : fast/loader/stateobjects = TIMEOUT
@@ -2825,7 +2778,6 @@ BUG33358 : fast/dom/Window/window-postmessage-clone-frames.html = TEXT
BUG33486 WIN LINUX : fast/text/international/hebrew-vowels.html = IMAGE+TEXT
BUG33486 LINUX : fast/text/international/thai-baht-space.html = IMAGE
BUG33486 LINUX : fast/text/international/thai-line-breaks.html = IMAGE
-BUG33486 LINUX : svg/text/text-intro-05-t.svg = IMAGE
// WebKit roll 54059 -> 54075
BUG33538 : fast/dom/Window/anonymous-slot-with-changes.html = TEXT
@@ -2837,7 +2789,6 @@ BUG35064 WIN DEBUG : fast/forms/restore-selection-after-layout.html = TEXT PASS
BUG35242 WIN : svg/W3C-SVG-1.1/filters-conv-01-f.svg = TEXT
BUG35242 WIN : svg/W3C-SVG-1.1/text-intro-05-t.svg = TEXT
BUG35242 WIN : svg/batik/text/textFeatures.svg = TEXT
-BUG35242 WIN : svg/text/text-intro-05-t.svg = TEXT
BUG35240 MAC : svg/custom/use-clipped-hit.svg = IMAGE
// WebKit roll 54493 to 54530: new tests.
@@ -2902,10 +2853,6 @@ BUG36019 : fast/borders/svg-as-border-image-2.html = IMAGE
BUG36019 : fast/borders/svg-as-border-image.html = IMAGE
BUG36019 : fast/images/svg-as-tiled-background.html = IMAGE
-// Flaky tests
-BUG36603 WIN RELEASE : svg/text/text-text-05-t.svg = CRASH PASS
-BUG36603 WIN RELEASE : svg/text/text-text-06-t.svg = CRASH PASS
-
// WebKit roll 55161 to 55193
BUG36681 : java/argument-to-object-type.html = TEXT
BUG36681 : java/array-return.html = TEXT
@@ -2923,4 +2870,43 @@ BUG37049 WIN SKIP : websocket/tests/cookies/httponly-cookie.pl = PASS
// WebKit roll 55373:55380
BUG37136 : fast/loader/api-test-go-to-current-back-forward-item.html = TIMEOUT
+// These will be rebaselined after commit for bug 28646
+BUG28646 : svg/text/foreignObject-text-clipping-bug.xml = FAIL
+BUG28646 : svg/text/selection-doubleclick.svg = FAIL
+BUG28646 : svg/text/selection-tripleclick.svg = FAIL
+BUG23481 : editing/selection/4402375.html = FAIL
+BUG23481 : editing/selection/image-before-linebreak.html = FAIL
+BUG23481 : editing/selection/replaced-boundaries-1.html = FAIL
+BUG23481 : editing/selection/replaced-boundaries-2.html = FAIL
+BUG23481 : editing/selection/replaced-boundaries-3.html = FAIL
+BUG23482 : svg/text/text-align-01-b.svg = FAIL
+BUG23482 : svg/text/text-align-02-b.svg = FAIL
+BUG23482 : svg/text/text-align-03-b.svg = FAIL
+BUG23482 : svg/text/text-align-04-b.svg = FAIL
+BUG23482 : svg/text/text-align-05-b.svg = FAIL
+BUG23482 : svg/text/text-align-06-b.svg = FAIL
+BUG23482 : svg/text/text-altglyph-01-b.svg = FAIL
+BUG23482 : svg/text/text-deco-01-b.svg = FAIL
+BUG23482 : svg/text/text-fonts-01-t.svg = FAIL
+BUG23482 : svg/text/text-fonts-02-t.svg = FAIL
+BUG23482 : svg/text/text-intro-05-t.svg = FAIL
+BUG23482 : svg/text/text-path-01-b.svg = FAIL
+BUG23482 : svg/text/text-spacing-01-b.svg = FAIL
+BUG23482 : svg/text/text-text-01-b.svg = FAIL
+BUG23482 : svg/text/text-text-03-b.svg = FAIL
+BUG23482 : svg/text/text-text-04-t.svg = FAIL
+// Also flaky (crashes) on WIN RELESE. See BUG36603
+BUG23482 : svg/text/text-text-05-t.svg = FAIL CRASH
+// Also flaky (crashes) on WIN RELESE. See BUG36603
+BUG23482 : svg/text/text-text-06-t.svg = FAIL CRASH
+BUG23482 : svg/text/text-text-08-b.svg = FAIL
+BUG23482 : svg/text/text-tref-01-b.svg = FAIL
+BUG23482 : svg/text/text-tselect-01-b.svg = FAIL
+BUG23482 : svg/text/text-tselect-02-f.svg = FAIL
+BUG23482 : svg/text/text-tspan-01-b.svg = FAIL
+BUG23482 : svg/text/text-ws-01-t.svg = FAIL
+BUG23482 : svg/text/text-ws-02-t.svg = FAIL
+BUG23482 : svg/text/textPathBoundsBug.svg = FAIL
+BUG29344 : svg/text/text-text-07-t.svg = FAIL
+
BUG37248 LINUX : svg/W3C-SVG-1.1/filters-displace-01-f.svg = IMAGE+TEXT PASS TEXT \ No newline at end of file
diff --git a/webkit/tools/test_shell/layout_test_controller.cc b/webkit/tools/test_shell/layout_test_controller.cc
index f06de24..337da70 100644
--- a/webkit/tools/test_shell/layout_test_controller.cc
+++ b/webkit/tools/test_shell/layout_test_controller.cc
@@ -52,6 +52,7 @@ bool LayoutTestController::dump_child_frame_scroll_positions_ = false;
bool LayoutTestController::dump_child_frames_as_text_ = false;
bool LayoutTestController::dump_window_status_changes_ = false;
bool LayoutTestController::dump_title_changes_ = false;
+bool LayoutTestController::dump_selection_rect_ = false;
bool LayoutTestController::accepts_editing_ = true;
bool LayoutTestController::wait_until_done_ = false;
bool LayoutTestController::can_open_windows_ = false;
@@ -130,11 +131,11 @@ LayoutTestController::LayoutTestController(TestShell* shell) :
BindMethod("addUserScript", &LayoutTestController::addUserScript);
BindMethod("pageNumberForElementById", &LayoutTestController::pageNumberForElementById);
BindMethod("numberOfPages", &LayoutTestController::numberOfPages);
+ BindMethod("dumpSelectionRect", &LayoutTestController::dumpSelectionRect);
// The following are stubs.
BindMethod("dumpAsWebArchive", &LayoutTestController::dumpAsWebArchive);
BindMethod("setMainFrameIsFirstResponder", &LayoutTestController::setMainFrameIsFirstResponder);
- BindMethod("dumpSelectionRect", &LayoutTestController::dumpSelectionRect);
BindMethod("display", &LayoutTestController::display);
BindMethod("testRepaint", &LayoutTestController::testRepaint);
BindMethod("repaintSweepHorizontally", &LayoutTestController::repaintSweepHorizontally);
@@ -462,6 +463,7 @@ void LayoutTestController::Reset() {
dump_child_frame_scroll_positions_ = false;
dump_child_frames_as_text_ = false;
dump_window_status_changes_ = false;
+ dump_selection_rect_ = false;
dump_title_changes_ = false;
accepts_editing_ = true;
wait_until_done_ = false;
@@ -805,6 +807,7 @@ void LayoutTestController::setMainFrameIsFirstResponder(
void LayoutTestController::dumpSelectionRect(
const CppArgumentList& args, CppVariant* result) {
+ dump_selection_rect_ = true;
result->SetNull();
}
diff --git a/webkit/tools/test_shell/layout_test_controller.h b/webkit/tools/test_shell/layout_test_controller.h
index 50d7c91..6bf09bd 100644
--- a/webkit/tools/test_shell/layout_test_controller.h
+++ b/webkit/tools/test_shell/layout_test_controller.h
@@ -176,13 +176,14 @@ class LayoutTestController : public CppBoundClass {
void setIconDatabaseEnabled(const CppArgumentList& args,
CppVariant* result);
+ void dumpSelectionRect(const CppArgumentList& args, CppVariant* result);
+
// The following are only stubs. TODO(pamg): Implement any of these that
// are needed to pass the layout tests.
void dumpAsWebArchive(const CppArgumentList& args, CppVariant* result);
void dumpTitleChanges(const CppArgumentList& args, CppVariant* result);
void dumpResourceLoadCallbacks(const CppArgumentList& args, CppVariant* result);
void setMainFrameIsFirstResponder(const CppArgumentList& args, CppVariant* result);
- void dumpSelectionRect(const CppArgumentList& args, CppVariant* result);
void display(const CppArgumentList& args, CppVariant* result);
void testRepaint(const CppArgumentList& args, CppVariant* result);
void repaintSweepHorizontally(const CppArgumentList& args, CppVariant* result);
@@ -261,6 +262,9 @@ class LayoutTestController : public CppBoundClass {
bool ShouldDumpStatusCallbacks() {
return dump_window_status_changes_;
}
+ bool ShouldDumpSelectionRect() {
+ return dump_selection_rect_;
+ }
bool ShouldDumpBackForwardList() { return dump_back_forward_list_; }
bool ShouldDumpTitleChanges() { return dump_title_changes_; }
bool ShouldDumpChildFrameScrollPositions() {
@@ -351,6 +355,10 @@ class LayoutTestController : public CppBoundClass {
// command.
static bool dump_editing_callbacks_;
+ // If true, the test_shell will draw the bounds of the current selection rect
+ // taking possible transforms of the selection rect into account.
+ static bool dump_selection_rect_;
+
// If true, the test_shell will output a descriptive line for each frame
// load callback.
static bool dump_frame_load_callbacks_;
diff --git a/webkit/tools/test_shell/test_shell.cc b/webkit/tools/test_shell/test_shell.cc
index 043fe94..b4fcac8 100644
--- a/webkit/tools/test_shell/test_shell.cc
+++ b/webkit/tools/test_shell/test_shell.cc
@@ -284,6 +284,26 @@ void TestShell::Dump(TestShell* shell) {
} else {
view_host->Paint();
}
+
+ // See if we need to draw the selection bounds rect. Selection bounds
+ // rect is the rect enclosing the (possibly transformed) selection.
+ // The rect should be drawn after everything is laid out and painted.
+ if (shell->layout_test_controller_->ShouldDumpSelectionRect()) {
+ // If there is a selection rect - draw a red 1px border enclosing rect
+ WebRect wr = frame->selectionBoundsRect();
+ if (!wr.isEmpty()) {
+ // Render a red rectangle bounding selection rect
+ SkPaint paint;
+ paint.setColor(0xFFFF0000); // Fully opaque red
+ paint.setStyle(SkPaint::kStroke_Style);
+ paint.setFlags(SkPaint::kAntiAlias_Flag);
+ paint.setStrokeWidth(1.0f);
+ SkIRect rect; // Bounding rect
+ rect.set(wr.x, wr.y, wr.x + wr.width, wr.y + wr.height);
+ view_host->canvas()->drawIRect(rect, paint);
+ }
+ }
+
std::string md5sum = DumpImage(view_host->canvas(),
params->pixel_file_name, params->pixel_hash);
printf("#MD5:%s\n", md5sum.c_str());