Changeset 139745 in webkit


Ignore:
Timestamp:
Jan 15, 2013 8:57:55 AM (11 years ago)
Author:
fmalita@chromium.org
Message:

[Chromium] Incorrect opaque region tracking for PlatformContextSkia::drawRRect
https://bugs.webkit.org/show_bug.cgi?id=106898

Reviewed by Stephen White.

Source/WebCore:

Since drawRRect() doesn't cover the whole bounding rect, it needs to pass a didDrawBounded
notification down to the opaque region tracker (instead of didDrawRect as it currently
does).

Test: platform/chromium/compositing/rounded-corners.html

  • platform/graphics/skia/PlatformContextSkia.h:

(WebCore::PlatformContextSkia::drawRRect):

Source/WebKit/chromium:

  • tests/PlatformContextSkiaTest.cpp:

(WebCore::TEST):
(WebCore):

LayoutTests:

  • platform/chromium-linux/platform/chromium/compositing/rounded-corners-expected.png: Added.
  • platform/chromium-linux/platform/chromium/compositing/rounded-corners-expected.txt: Added.
  • platform/chromium/TestExpectations:
  • platform/chromium/compositing/rounded-corners.html: Added.
Location:
trunk
Files:
3 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r139741 r139745  
     12013-01-15  Florin Malita  <fmalita@chromium.org>
     2
     3        [Chromium] Incorrect opaque region tracking for PlatformContextSkia::drawRRect
     4        https://bugs.webkit.org/show_bug.cgi?id=106898
     5
     6        Reviewed by Stephen White.
     7
     8        * platform/chromium-linux/platform/chromium/compositing/rounded-corners-expected.png: Added.
     9        * platform/chromium-linux/platform/chromium/compositing/rounded-corners-expected.txt: Added.
     10        * platform/chromium/TestExpectations:
     11        * platform/chromium/compositing/rounded-corners.html: Added.
     12
    1132013-01-15  Vsevolod Vlasov  <vsevik@chromium.org>
    214
  • trunk/LayoutTests/platform/chromium/TestExpectations

    r139732 r139745  
    42114211webkit.org/b/104489 [ Win ] http/tests/w3c/webperf/submission/Intel/user-timing/test_user_timing_measure_associate_with_navigation_timing.html [ Failure Pass ]
    42124212
     4213# Needs platform-specific results
     4214webkit.org/b/106898 platform/chromium/compositing/rounded-corners.html [ Pass Missing ]
     4215
    42134216# Flaky since r136945
    42144217webkit.org/b/94002 [ Win Mac Debug ] inspector/debugger/live-edit-breakpoints.html [ Failure Timeout ]
  • trunk/Source/WebCore/ChangeLog

    r139742 r139745  
     12013-01-15  Florin Malita  <fmalita@chromium.org>
     2
     3        [Chromium] Incorrect opaque region tracking for PlatformContextSkia::drawRRect
     4        https://bugs.webkit.org/show_bug.cgi?id=106898
     5
     6        Reviewed by Stephen White.
     7
     8        Since drawRRect() doesn't cover the whole bounding rect, it needs to pass a didDrawBounded
     9        notification down to the opaque region tracker (instead of didDrawRect as it currently
     10        does).
     11
     12        Test: platform/chromium/compositing/rounded-corners.html
     13
     14        * platform/graphics/skia/PlatformContextSkia.h:
     15        (WebCore::PlatformContextSkia::drawRRect):
     16
    1172013-01-15  Allan Sandfeld Jensen  <allan.jensen@digia.com>
    218
  • trunk/Source/WebCore/platform/graphics/skia/PlatformContextSkia.h

    r139591 r139745  
    490490
    491491    if (m_trackOpaqueRegion)
    492         m_opaqueRegion.didDrawRect(this, rect.getBounds(), paint, 0);
     492        m_opaqueRegion.didDrawBounded(this, rect.getBounds(), paint);
    493493}
    494494
  • trunk/Source/WebKit/chromium/ChangeLog

    r139726 r139745  
     12013-01-15  Florin Malita  <fmalita@chromium.org>
     2
     3        [Chromium] Incorrect opaque region tracking for PlatformContextSkia::drawRRect
     4        https://bugs.webkit.org/show_bug.cgi?id=106898
     5
     6        Reviewed by Stephen White.
     7
     8        * tests/PlatformContextSkiaTest.cpp:
     9        (WebCore::TEST):
     10        (WebCore):
     11
    1122012-12-28  Vsevolod Vlasov  <vsevik@chromium.org>
    213
  • trunk/Source/WebKit/chromium/tests/PlatformContextSkiaTest.cpp

    r136125 r139745  
    665665}
    666666
     667TEST(PlatformContextSkiaTest, trackOpaqueRoundedRectTest)
     668{
     669    SkBitmap bitmap;
     670    bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200);
     671    bitmap.allocPixels();
     672    bitmap.eraseColor(0);
     673    SkCanvas canvas(bitmap);
     674
     675    PlatformContextSkia platformContext(&canvas);
     676    platformContext.setTrackOpaqueRegion(true);
     677    GraphicsContext context(&platformContext);
     678
     679    Color opaque(1.0f, 0.0f, 0.0f, 1.0f);
     680    Color alpha(0.0f, 0.0f, 0.0f, 0.0f);
     681    IntSize radii(10, 10);
     682
     683    EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), platformContext.opaqueRegion().asRect());
     684    EXPECT_PIXELS_MATCH(bitmap, platformContext.opaqueRegion().asRect());
     685
     686    context.fillRoundedRect(IntRect(10, 10, 90, 90), radii, radii, radii, radii, opaque, ColorSpaceDeviceRGB);
     687    EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), platformContext.opaqueRegion().asRect());
     688    EXPECT_PIXELS_MATCH(bitmap, platformContext.opaqueRegion().asRect());
     689
     690    context.fillRect(FloatRect(10, 10, 90, 90), opaque, ColorSpaceDeviceRGB, CompositeSourceOver);
     691    EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), platformContext.opaqueRegion().asRect());
     692    EXPECT_PIXELS_MATCH(bitmap, platformContext.opaqueRegion().asRect());
     693
     694    context.setCompositeOperation(CompositeSourceIn);
     695    context.setShouldAntialias(false);
     696
     697    context.fillRoundedRect(IntRect(10, 10, 50, 30), radii, radii, radii, radii, opaque, ColorSpaceDeviceRGB);
     698    EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), platformContext.opaqueRegion().asRect());
     699    EXPECT_PIXELS_MATCH(bitmap, platformContext.opaqueRegion().asRect());
     700
     701    context.fillRoundedRect(IntRect(10, 10, 30, 50), radii, radii, radii, radii, alpha, ColorSpaceDeviceRGB);
     702    EXPECT_EQ_RECT(IntRect(40, 10, 60, 90), platformContext.opaqueRegion().asRect());
     703    EXPECT_PIXELS_MATCH(bitmap, platformContext.opaqueRegion().asRect());
     704
     705    context.fillRoundedRect(IntRect(10, 0, 50, 30), radii, radii, radii, radii, alpha, ColorSpaceDeviceRGB);
     706    EXPECT_EQ_RECT(IntRect(40, 30, 60, 70), platformContext.opaqueRegion().asRect());
     707    EXPECT_PIXELS_MATCH(bitmap, platformContext.opaqueRegion().asRect());
     708
     709    context.fillRoundedRect(IntRect(30, 0, 70, 50), radii, radii, radii, radii, opaque, ColorSpaceDeviceRGB);
     710    EXPECT_EQ_RECT(IntRect(40, 30, 60, 70), platformContext.opaqueRegion().asRect());
     711    EXPECT_PIXELS_MATCH(bitmap, platformContext.opaqueRegion().asRect());
     712}
     713
    667714TEST(PlatformContextSkiaTest, trackOpaqueIRectTest)
    668715{
Note: See TracChangeset for help on using the changeset viewer.