Index: third_party/WebKit/LayoutTests/fast/canvas/canvas-hit-regions-clip-test.html |
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-hit-regions-clip-test.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-hit-regions-clip-test.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1eae955a659893375dfe1251ba46a24fdb7b6044 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-hit-regions-clip-test.html |
@@ -0,0 +1,126 @@ |
+<!DOCTYPE html> |
+<title>HitRegion Clip Test</title> |
+<script src="../../resources/testharness.js"></script> |
+<script src="../../resources/testharnessreport.js"></script> |
+<script src="./resources/test-helpers.js"></script> |
+<canvas width="400" height="400"></canvas> |
+<style> |
+ |
+body { |
+ margin : 0px; |
+ padding : 0px; |
+} |
+ |
+</style> |
+<script> |
+ |
+var canvas = document.querySelector('canvas'); |
+var context = canvas.getContext('2d'); |
+ |
+function create_simple_rect_region_with_clip() { |
+ context.clearRect(0, 0, 400, 400); |
+ context.save(); |
+ context.beginPath(); |
+ context.rect(0, 0, 100, 100); |
+ context.clip(); |
+ context.beginPath(); |
+ context.rect(50, 50, 100, 100); |
+ context.fill(); |
+ context.addHitRegion({ id : 'clip' }); |
+ context.restore(); |
+} |
+ |
+function create_non_rect_region_with_clip() { |
+ context.clearRect(0, 0, 400, 400); |
+ context.save(); |
+ context.beginPath(); |
+ context.arc(50, 50, 50, 0, Math.PI * 2); |
+ context.clip(); |
+ context.beginPath(); |
+ context.rect(0, 0, 100, 100); |
+ context.fill(); |
+ context.addHitRegion({ id : 'clip' }); |
+ context.restore(); |
+} |
+ |
+function create_non_rect_region_with_multiple_clips() { |
+ context.clearRect(0, 0, 400, 400); |
+ context.save(); |
+ context.beginPath(); |
+ context.rect(0, 0, 100, 100); |
+ context.clip(); |
+ context.beginPath(); |
+ context.arc(100, 50, 50, 0, Math.PI * 2); |
+ context.clip(); |
+ context.beginPath(); |
+ context.rect(0, 0, 150, 50); |
+ context.fill(); |
+ context.addHitRegion({ id : "clip" }); |
+ context.restore(); |
+} |
+ |
+function no_pixel_test1() { |
+ context.clearRect(0, 0, 400, 400); |
+ context.save(); |
+ context.beginPath(); |
+ context.rect(0, 0, 100, 100); |
+ context.clip(); |
+ context.beginPath(); |
+ context.rect(100, 100, 100, 100); |
+ context.addHitRegion({ id : 'clip' }); |
+ context.restore(); |
+} |
+ |
+function no_pixel_test2() { |
+ context.save(); |
+ context.beginPath(); |
+ context.rect(0, 0, 50, 50); |
+ context.rect(100, 0, 50, 50); |
+ context.clip(); |
+ context.beginPath(); |
+ context.arc(75, 75, 30, 0, Math.PI * 2); |
+ context.addHitRegion({ id : 'clip' }); |
+ context.restore(); |
+} |
+ |
+coroutine(function*() { |
+ setup({ explicit_done : true, explicit_timeout : true }); |
+ |
+ create_simple_rect_region_with_clip(); |
+ generate_tests(assert_equals, [ |
+ [ 'null', yield clickOrTouch(10, 10), null ], |
+ [ 'clip', yield clickOrTouch(60, 60), 'clip' ] |
+ ]); |
+ |
+ create_non_rect_region_with_clip(); |
+ generate_tests(assert_equals, [ |
+ [ 'null', yield clickOrTouch(0, 0), null ], |
+ [ 'null', yield clickOrTouch(100, 0), null ], |
+ [ 'null', yield clickOrTouch(100, 100), null ], |
+ [ 'null', yield clickOrTouch(0, 100), null ], |
+ [ 'clip', yield clickOrTouch(50, 50), 'clip' ] |
+ ]); |
+ |
+ create_non_rect_region_with_multiple_clips(); |
+ generate_tests(assert_equals, [ |
+ [ 'null', yield clickOrTouch(00, 0), null ], |
+ [ 'clip', yield clickOrTouch(100, 0), 'clip' ], |
+ [ 'null', yield clickOrTouch(100, 100), null ], |
+ [ 'null', yield clickOrTouch(0, 100), null ], |
+ [ 'null', yield clickOrTouch(50, 0), null ], |
+ [ 'null', yield clickOrTouch(150, 0), null ], |
+ [ 'null', yield clickOrTouch(150, 100), null ], |
+ [ 'null', yield clickOrTouch(50, 100), null ], |
+ [ 'clip', yield clickOrTouch(50, 50), 'clip' ], |
+ [ 'clip', yield clickOrTouch(100, 50), 'clip' ], |
+ ]); |
+ |
+ generate_tests(assert_throws, [ |
+ [ 'no pixel test1', { name : 'NotSupportedError' }, no_pixel_test1 ], |
+ [ 'no pixel test2', { name : 'NotSupportedError' }, no_pixel_test2 ], |
+ ]); |
+ |
+ done(); |
+}); |
+ |
+</script> |