def testInvalidArgs(self): with self.assertRaises(AssertionError): algo.SobelMatchingAlgorithm(1, 2, -1) with self.assertRaises(AssertionError): algo.SobelMatchingAlgorithm(1, 2, 256) with self.assertRaises(RuntimeError): algo.SobelMatchingAlgorithm(1, 2, 255)
def testGetCmdline(self): a = algo.SobelMatchingAlgorithm(1, 2, 3) cmdline = a.GetCmdline() self.assertEqual(cmdline, [ '--add-test-optional-key', 'image_matching_algorithm:sobel', '--add-test-optional-key', 'fuzzy_max_different_pixels:1', '--add-test-optional-key', 'fuzzy_pixel_delta_threshold:2', '--add-test-optional-key', 'sobel_edge_threshold:3', ])
def GpuRasterizationPages(base_name): browser_args = [ cba.FORCE_GPU_RASTERIZATION, cba.DISABLE_SOFTWARE_COMPOSITING_FALLBACK, ] return [ PixelTestPage('pixel_background.html', base_name + '_GpuRasterization_BlueBox', test_rect=[0, 0, 220, 220], browser_args=browser_args), PixelTestPage('concave_paths.html', base_name + '_GpuRasterization_ConcavePaths', test_rect=[0, 0, 100, 100], browser_args=browser_args), PixelTestPage('pixel_precision_rounded_corner.html', base_name + '_PrecisionRoundedCorner', test_rect=[0, 0, 400, 400], browser_args=browser_args, matching_algorithm=algo.SobelMatchingAlgorithm( max_different_pixels=10, pixel_delta_threshold=30, edge_threshold=100)), ]
def GpuRasterizationPages(base_name): browser_args = [ '--force-gpu-rasterization', '--disable-software-compositing-fallback' ] return [ PixelTestPage('pixel_background.html', base_name + '_GpuRasterization_BlueBox', test_rect=[0, 0, 220, 220], browser_args=browser_args), PixelTestPage('concave_paths.html', base_name + '_GpuRasterization_ConcavePaths', test_rect=[0, 0, 100, 100], browser_args=browser_args), PixelTestPage('pixel_precision_rounded_corner.html', base_name + '_PrecisionRoundedCorner', test_rect=[0, 0, 400, 400], browser_args=browser_args, matching_algorithm=algo.SobelMatchingAlgorithm( max_different_pixels=10, pixel_delta_threshold=30, edge_threshold=100)), ]
def DirectCompositionPages(base_name): browser_args = [ '--enable-direct-composition-video-overlays', # All bots are connected with a power source, however, we want to to # test with the code path that's enabled with battery power. cba.DISABLE_VP_SCALING, ] browser_args_YUY2 = browser_args + [ '--disable-features=DirectCompositionPreferNV12Overlays' ] browser_args_DXVA = browser_args + [ cba.DISABLE_FEATURES_D3D11_VIDEO_DECODER ] # Most tests fall roughly into 3 tiers of noisiness. # Parameter values were determined using the automated optimization script, # and similar values combined into a single set using the most permissive # value for each parameter in that tier. strict_dc_sobel_algorithm = algo.SobelMatchingAlgorithm( max_different_pixels=1000, pixel_delta_threshold=5, edge_threshold=250, ignored_border_thickness=1) permissive_dc_sobel_algorithm = algo.SobelMatchingAlgorithm( max_different_pixels=16800, pixel_delta_threshold=20, edge_threshold=30, ignored_border_thickness=1) very_permissive_dc_sobel_algorithm = algo.SobelMatchingAlgorithm( max_different_pixels=30400, pixel_delta_threshold=45, edge_threshold=10, ignored_border_thickness=1, ) return [ PixelTestPage('pixel_video_mp4.html', base_name + '_DirectComposition_Video_MP4', test_rect=[0, 0, 240, 135], browser_args=browser_args, matching_algorithm=permissive_dc_sobel_algorithm), PixelTestPage('pixel_video_mp4.html', base_name + '_DirectComposition_Video_MP4_DXVA', browser_args=browser_args_DXVA, test_rect=[0, 0, 240, 135], matching_algorithm=permissive_dc_sobel_algorithm), PixelTestPage('pixel_video_mp4_fullsize.html', base_name + '_DirectComposition_Video_MP4_Fullsize', browser_args=browser_args, test_rect=[0, 0, 960, 540], other_args={'zero_copy': True}, matching_algorithm=strict_dc_sobel_algorithm), PixelTestPage('pixel_video_mp4.html', base_name + '_DirectComposition_Video_MP4_YUY2', test_rect=[0, 0, 240, 135], browser_args=browser_args_YUY2, other_args={'expect_yuy2': True}, matching_algorithm=permissive_dc_sobel_algorithm), PixelTestPage('pixel_video_mp4_four_colors_aspect_4x3.html', base_name + '_DirectComposition_Video_MP4_FourColors_Aspect_4x3', test_rect=[0, 0, 240, 135], browser_args=browser_args, matching_algorithm=permissive_dc_sobel_algorithm), PixelTestPage('pixel_video_mp4_four_colors_rot_90.html', base_name + '_DirectComposition_Video_MP4_FourColors_Rot_90', test_rect=[0, 0, 270, 240], browser_args=browser_args, other_args={'video_is_rotated': True}, matching_algorithm=strict_dc_sobel_algorithm), PixelTestPage('pixel_video_mp4_four_colors_rot_180.html', base_name + '_DirectComposition_Video_MP4_FourColors_Rot_180', test_rect=[0, 0, 240, 135], browser_args=browser_args, other_args={'video_is_rotated': True}, matching_algorithm=strict_dc_sobel_algorithm), PixelTestPage('pixel_video_mp4_four_colors_rot_270.html', base_name + '_DirectComposition_Video_MP4_FourColors_Rot_270', test_rect=[0, 0, 270, 240], browser_args=browser_args, other_args={'video_is_rotated': True}, matching_algorithm=strict_dc_sobel_algorithm), PixelTestPage( 'pixel_video_vp9.html', base_name + '_DirectComposition_Video_VP9', test_rect=[0, 0, 240, 135], browser_args=browser_args, matching_algorithm=very_permissive_dc_sobel_algorithm), PixelTestPage( 'pixel_video_vp9.html', base_name + '_DirectComposition_Video_VP9_DXVA', browser_args=browser_args_DXVA, test_rect=[0, 0, 240, 135], matching_algorithm=very_permissive_dc_sobel_algorithm), PixelTestPage( 'pixel_video_vp9_fullsize.html', base_name + '_DirectComposition_Video_VP9_Fullsize', test_rect=[0, 0, 960, 540], browser_args=browser_args, other_args={'zero_copy': True}, # Much larger image than other VP9 tests. matching_algorithm=algo.SobelMatchingAlgorithm( max_different_pixels=504000, pixel_delta_threshold=10, edge_threshold=10, ignored_border_thickness=1, )), PixelTestPage( 'pixel_video_vp9.html', base_name + '_DirectComposition_Video_VP9_YUY2', test_rect=[0, 0, 240, 135], browser_args=browser_args_YUY2, other_args={'expect_yuy2': True}, matching_algorithm=very_permissive_dc_sobel_algorithm), PixelTestPage('pixel_video_vp9_i420a.html', base_name + '_DirectComposition_Video_VP9_I420A', test_rect=[0, 0, 240, 135], browser_args=browser_args, other_args={'no_overlay': True}, matching_algorithm=strict_dc_sobel_algorithm), PixelTestPage('pixel_video_underlay.html', base_name + '_DirectComposition_Underlay', test_rect=[0, 0, 240, 136], browser_args=browser_args, matching_algorithm=permissive_dc_sobel_algorithm), PixelTestPage('pixel_video_underlay.html', base_name + '_DirectComposition_Underlay_DXVA', test_rect=[0, 0, 240, 136], browser_args=browser_args_DXVA, matching_algorithm=permissive_dc_sobel_algorithm), PixelTestPage('pixel_video_underlay_fullsize.html', base_name + '_DirectComposition_Underlay_Fullsize', test_rect=[0, 0, 960, 540], browser_args=browser_args, other_args={'zero_copy': True}, matching_algorithm=strict_dc_sobel_algorithm), PixelTestPage('pixel_video_mp4_rounded_corner.html', base_name + '_DirectComposition_Video_MP4_Rounded_Corner', test_rect=[0, 0, 240, 135], browser_args=browser_args, other_args={'no_overlay': True}), PixelTestPage('pixel_video_backdrop_filter.html', base_name + '_DirectComposition_Video_BackdropFilter', test_rect=[0, 0, 240, 135], browser_args=browser_args, other_args={'no_overlay': True}), PixelTestPage( 'pixel_video_mp4.html', base_name + '_DirectComposition_Video_Disable_Overlays', test_rect=[0, 0, 240, 135], browser_args=['--disable-direct-composition-video-overlays'], other_args={'no_overlay': True}, matching_algorithm=very_permissive_dc_sobel_algorithm), ]
def DefaultPages(base_name): sw_compositing_args = [cba.DISABLE_GPU_COMPOSITING] # The optimizer script spat out pretty similar values for most MP4 tests, so # combine into a single set of parameters. general_mp4_algo = algo.SobelMatchingAlgorithm( max_different_pixels=56300, pixel_delta_threshold=35, edge_threshold=80) return [ PixelTestPage('pixel_background_image.html', base_name + '_BackgroundImage', test_rect=[20, 20, 370, 370]), PixelTestPage('pixel_reflected_div.html', base_name + '_ReflectedDiv', test_rect=[0, 0, 100, 300]), PixelTestPage('pixel_canvas2d.html', base_name + '_Canvas2DRedBox', test_rect=[0, 0, 300, 300]), PixelTestPage('pixel_canvas2d_untagged.html', base_name + '_Canvas2DUntagged', test_rect=[0, 0, 257, 257]), PixelTestPage('pixel_css3d.html', base_name + '_CSS3DBlueBox', test_rect=[0, 0, 300, 300], matching_algorithm=algo.SobelMatchingAlgorithm( max_different_pixels=0, pixel_delta_threshold=0, edge_threshold=100)), PixelTestPage('pixel_webgl_aa_alpha.html', base_name + '_WebGLGreenTriangle_AA_Alpha', test_rect=[0, 0, 300, 300]), PixelTestPage('pixel_webgl_noaa_alpha.html', base_name + '_WebGLGreenTriangle_NoAA_Alpha', test_rect=[0, 0, 300, 300]), PixelTestPage('pixel_webgl_aa_noalpha.html', base_name + '_WebGLGreenTriangle_AA_NoAlpha', test_rect=[0, 0, 300, 300]), PixelTestPage('pixel_webgl_noaa_noalpha.html', base_name + '_WebGLGreenTriangle_NoAA_NoAlpha', test_rect=[0, 0, 300, 300]), PixelTestPage( 'pixel_webgl_noalpha_implicit_clear.html', base_name + '_WebGLTransparentGreenTriangle_NoAlpha_ImplicitClear', test_rect=[0, 0, 300, 300]), PixelTestPage('pixel_webgl_sad_canvas.html', base_name + '_WebGLSadCanvas', test_rect=[0, 0, 300, 300], optional_action='CrashGpuProcess'), PixelTestPage('pixel_scissor.html', base_name + '_ScissorTestWithPreserveDrawingBuffer', test_rect=[0, 0, 300, 300]), PixelTestPage('pixel_canvas2d_webgl.html', base_name + '_2DCanvasWebGL', test_rect=[0, 0, 300, 300]), PixelTestPage('pixel_background.html', base_name + '_SolidColorBackground', test_rect=[500, 500, 100, 100]), PixelTestPage( 'pixel_video_mp4.html', base_name + '_Video_MP4', test_rect=[0, 0, 240, 135], # Most images are actually very similar, but Pixel 2 # tends to produce images with all colors shifted by a # small amount. matching_algorithm=general_mp4_algo), # Surprisingly stable, does not appear to require inexact matching. PixelTestPage( 'pixel_video_mp4.html', base_name + '_Video_MP4_DXVA', browser_args=[cba.DISABLE_FEATURES_D3D11_VIDEO_DECODER], test_rect=[0, 0, 240, 135]), PixelTestPage('pixel_video_mp4_four_colors_aspect_4x3.html', base_name + '_Video_MP4_FourColors_Aspect_4x3', test_rect=[0, 0, 240, 135], matching_algorithm=algo.SobelMatchingAlgorithm( max_different_pixels=41700, pixel_delta_threshold=15, edge_threshold=40)), PixelTestPage('pixel_video_mp4_four_colors_rot_90.html', base_name + '_Video_MP4_FourColors_Rot_90', test_rect=[0, 0, 270, 240], matching_algorithm=general_mp4_algo), PixelTestPage('pixel_video_mp4_four_colors_rot_180.html', base_name + '_Video_MP4_FourColors_Rot_180', test_rect=[0, 0, 240, 135], matching_algorithm=general_mp4_algo), PixelTestPage('pixel_video_mp4_four_colors_rot_270.html', base_name + '_Video_MP4_FourColors_Rot_270', test_rect=[0, 0, 270, 240], matching_algorithm=general_mp4_algo), PixelTestPage('pixel_video_mp4_rounded_corner.html', base_name + '_Video_MP4_Rounded_Corner', test_rect=[0, 0, 240, 135], matching_algorithm=algo.SobelMatchingAlgorithm( max_different_pixels=30500, pixel_delta_threshold=15, edge_threshold=70)), PixelTestPage('pixel_video_vp9.html', base_name + '_Video_VP9', test_rect=[0, 0, 240, 135], matching_algorithm=algo.SobelMatchingAlgorithm( max_different_pixels=114000, pixel_delta_threshold=30, edge_threshold=20)), PixelTestPage( 'pixel_video_vp9.html', base_name + '_Video_VP9_DXVA', browser_args=[cba.DISABLE_FEATURES_D3D11_VIDEO_DECODER], test_rect=[0, 0, 240, 135], matching_algorithm=algo.SobelMatchingAlgorithm( max_different_pixels=31100, pixel_delta_threshold=30, edge_threshold=250)), PixelTestPage( 'pixel_video_media_stream_incompatible_stride.html', base_name + '_Video_Media_Stream_Incompatible_Stride', browser_args=GetMediaStreamTestBrowserArgs( 'media/test/data/four-colors-incompatible-stride.y4m'), test_rect=[0, 0, 240, 135], matching_algorithm=VERY_PERMISSIVE_SOBEL_ALGO), # The MP4 contains H.264 which is primarily hardware decoded on bots. PixelTestPage( 'pixel_video_context_loss.html?src=' '/media/test/data/four-colors.mp4', base_name + '_Video_Context_Loss_MP4', test_rect=[0, 0, 240, 135], # Optimizer script spat out a value of 255 for the Sobel edge # threshold, so use fuzzy for now since it's slightly more # efficient. matching_algorithm=algo.FuzzyMatchingAlgorithm( max_different_pixels=31700, pixel_delta_threshold=20), expected_per_process_crashes={ CRASH_TYPE_GPU: 1, }), # The VP9 test clip is primarily software decoded on bots. PixelTestPage(('pixel_video_context_loss.html' '?src=/media/test/data/four-colors-vp9.webm'), base_name + '_Video_Context_Loss_VP9', test_rect=[0, 0, 240, 135], matching_algorithm=algo.SobelMatchingAlgorithm( max_different_pixels=54400, pixel_delta_threshold=30, edge_threshold=250), expected_per_process_crashes={ CRASH_TYPE_GPU: 1, }), PixelTestPage('pixel_video_backdrop_filter.html', base_name + '_Video_BackdropFilter', test_rect=[0, 0, 240, 135], matching_algorithm=algo.SobelMatchingAlgorithm( max_different_pixels=1000, pixel_delta_threshold=20, edge_threshold=40, ignored_border_thickness=1)), PixelTestPage('pixel_webgl_premultiplied_alpha_false.html', base_name + '_WebGL_PremultipliedAlpha_False', test_rect=[0, 0, 150, 150]), PixelTestPage('pixel_webgl2_blitframebuffer_result_displayed.html', base_name + '_WebGL2_BlitFramebuffer_Result_Displayed', test_rect=[0, 0, 200, 200]), PixelTestPage('pixel_webgl2_clearbufferfv_result_displayed.html', base_name + '_WebGL2_ClearBufferfv_Result_Displayed', test_rect=[0, 0, 200, 200]), PixelTestPage('pixel_repeated_webgl_to_2d.html', base_name + '_RepeatedWebGLTo2D', test_rect=[0, 0, 256, 256]), PixelTestPage('pixel_repeated_webgl_to_2d.html', base_name + '_RepeatedWebGLTo2D_SoftwareCompositing', test_rect=[0, 0, 256, 256], browser_args=sw_compositing_args), PixelTestPage('pixel_canvas2d_tab_switch.html', base_name + '_Canvas2DTabSwitch', test_rect=[0, 0, 100, 100], optional_action='SwitchTabs'), PixelTestPage('pixel_canvas2d_tab_switch.html', base_name + '_Canvas2DTabSwitch_SoftwareCompositing', test_rect=[0, 0, 100, 100], browser_args=sw_compositing_args, optional_action='SwitchTabs'), PixelTestPage('pixel_webgl_copy_image.html', base_name + '_WebGLCopyImage', test_rect=[0, 0, 200, 100]), PixelTestPage('pixel_webgl_read_pixels_tab_switch.html', base_name + '_WebGLReadPixelsTabSwitch', test_rect=[0, 0, 100, 100], optional_action='SwitchTabs'), PixelTestPage('pixel_webgl_read_pixels_tab_switch.html', base_name + '_WebGLReadPixelsTabSwitch_SoftwareCompositing', test_rect=[0, 0, 100, 100], browser_args=sw_compositing_args, optional_action='SwitchTabs'), PixelTestPage('pixel_offscreen_canvas_ibrc_webgl_main.html', base_name + '_OffscreenCanvasIBRCWebGLMain', test_rect=[0, 0, 300, 300], optional_action='RunOffscreenCanvasIBRCWebGLTest'), PixelTestPage('pixel_offscreen_canvas_ibrc_webgl_worker.html', base_name + '_OffscreenCanvasIBRCWebGLWorker', test_rect=[0, 0, 300, 300], optional_action='RunOffscreenCanvasIBRCWebGLTest'), ]
# These tests attempt to use test rects that are larger than the small screen # on some Fuchsia devices, so we need to use a less-desirable screenshot capture # method to get the entire page contents instead of just the visible portion. PROBLEMATIC_FUCHSIA_TESTS = [ 'Maps_maps', 'Pixel_BackgroundImage', 'Pixel_PrecisionRoundedCorner', 'Pixel_SolidColorBackground', ] # Meant to be used when we know a test is going to be noisy, and we want any # images it generates to be auto-triaged until we have enough data to calculate # more suitable/less permissive parameters. VERY_PERMISSIVE_SOBEL_ALGO = algo.SobelMatchingAlgorithm( max_different_pixels=100000000, pixel_delta_threshold=255, edge_threshold=0, ignored_border_thickness=1) class PixelTestPage(object): """A wrapper class mimicking the functionality of the PixelTestsStorySet from the old-style GPU tests. """ def __init__( # pylint: disable=too-many-arguments self, url, name, test_rect, browser_args=None, gpu_process_disabled=False,
def DirectCompositionPages(base_name): browser_args = [ '--enable-direct-composition-video-overlays', # All bots are connected with a power source, however, we want to to # test with the code path that's enabled with battery power. '--disable_vp_scaling=1' ] browser_args_Nonroot = browser_args + [ '--enable-features=DirectCompositionNonrootOverlays,' + 'DirectCompositionUnderlays' ] browser_args_Complex = browser_args + [ '--enable-features=DirectCompositionComplexOverlays,' + 'DirectCompositionNonrootOverlays,' + 'DirectCompositionUnderlays' ] browser_args_YUY2 = browser_args + [ '--disable-features=DirectCompositionPreferNV12Overlays' ] browser_args_DXVA = browser_args + [ '--disable-features=D3D11VideoDecoder' ] # Most tests fall roughly into 3 tiers of noisiness. # Parameter values were determined using the automated optimization script, # and similar values combined into a single set using the most permissive # value for each parameter in that tier. strict_dc_sobel_algorithm = algo.SobelMatchingAlgorithm( max_different_pixels=1000, pixel_delta_threshold=5, edge_threshold=250, ignored_border_thickness=1) permissive_dc_sobel_algorithm = algo.SobelMatchingAlgorithm( max_different_pixels=16800, pixel_delta_threshold=20, edge_threshold=30, ignored_border_thickness=1) very_permissive_dc_sobel_algorithm = algo.SobelMatchingAlgorithm( max_different_pixels=30400, pixel_delta_threshold=45, edge_threshold=10, ignored_border_thickness=1, ) return [ PixelTestPage('pixel_video_mp4.html', base_name + '_DirectComposition_Video_MP4', test_rect=[0, 0, 240, 135], browser_args=browser_args, matching_algorithm=permissive_dc_sobel_algorithm), PixelTestPage('pixel_video_mp4.html', base_name + '_DirectComposition_Video_MP4_DXVA', browser_args=browser_args_DXVA, test_rect=[0, 0, 240, 135], matching_algorithm=permissive_dc_sobel_algorithm), PixelTestPage('pixel_video_mp4_fullsize.html', base_name + '_DirectComposition_Video_MP4_Fullsize', browser_args=browser_args, test_rect=[0, 0, 960, 540], other_args={'zero_copy': True}, matching_algorithm=strict_dc_sobel_algorithm), PixelTestPage('pixel_video_mp4.html', base_name + '_DirectComposition_Video_MP4_YUY2', test_rect=[0, 0, 240, 135], browser_args=browser_args_YUY2, other_args={'expect_yuy2': True}, matching_algorithm=permissive_dc_sobel_algorithm), PixelTestPage('pixel_video_mp4_four_colors_aspect_4x3.html', base_name + '_DirectComposition_Video_MP4_FourColors_Aspect_4x3', test_rect=[0, 0, 240, 135], browser_args=browser_args, matching_algorithm=permissive_dc_sobel_algorithm), PixelTestPage('pixel_video_mp4_four_colors_rot_90.html', base_name + '_DirectComposition_Video_MP4_FourColors_Rot_90', test_rect=[0, 0, 270, 240], browser_args=browser_args, other_args={'video_is_rotated': True}, matching_algorithm=strict_dc_sobel_algorithm), PixelTestPage('pixel_video_mp4_four_colors_rot_180.html', base_name + '_DirectComposition_Video_MP4_FourColors_Rot_180', test_rect=[0, 0, 240, 135], browser_args=browser_args, other_args={'video_is_rotated': True}, matching_algorithm=strict_dc_sobel_algorithm), PixelTestPage('pixel_video_mp4_four_colors_rot_270.html', base_name + '_DirectComposition_Video_MP4_FourColors_Rot_270', test_rect=[0, 0, 270, 240], browser_args=browser_args, other_args={'video_is_rotated': True}, matching_algorithm=strict_dc_sobel_algorithm), PixelTestPage( 'pixel_video_vp9.html', base_name + '_DirectComposition_Video_VP9', test_rect=[0, 0, 240, 135], browser_args=browser_args, matching_algorithm=very_permissive_dc_sobel_algorithm), PixelTestPage( 'pixel_video_vp9.html', base_name + '_DirectComposition_Video_VP9_DXVA', browser_args=browser_args_DXVA, test_rect=[0, 0, 240, 135], matching_algorithm=very_permissive_dc_sobel_algorithm), PixelTestPage( 'pixel_video_vp9_fullsize.html', base_name + '_DirectComposition_Video_VP9_Fullsize', test_rect=[0, 0, 960, 540], browser_args=browser_args, other_args={'zero_copy': True}, # Much larger image than other VP9 tests. matching_algorithm=algo.SobelMatchingAlgorithm( max_different_pixels=504000, pixel_delta_threshold=10, edge_threshold=10, ignored_border_thickness=1, )), PixelTestPage( 'pixel_video_vp9.html', base_name + '_DirectComposition_Video_VP9_YUY2', test_rect=[0, 0, 240, 135], browser_args=browser_args_YUY2, other_args={'expect_yuy2': True}, matching_algorithm=very_permissive_dc_sobel_algorithm), PixelTestPage('pixel_video_vp9_i420a.html', base_name + '_DirectComposition_Video_VP9_I420A', test_rect=[0, 0, 240, 135], browser_args=browser_args, other_args={'no_overlay': True}, matching_algorithm=strict_dc_sobel_algorithm), PixelTestPage('pixel_video_underlay.html', base_name + '_DirectComposition_Underlay', test_rect=[0, 0, 240, 136], browser_args=browser_args, matching_algorithm=permissive_dc_sobel_algorithm), PixelTestPage('pixel_video_underlay.html', base_name + '_DirectComposition_Underlay_DXVA', test_rect=[0, 0, 240, 136], browser_args=browser_args_DXVA, matching_algorithm=permissive_dc_sobel_algorithm), PixelTestPage('pixel_video_underlay_fullsize.html', base_name + '_DirectComposition_Underlay_Fullsize', test_rect=[0, 0, 960, 540], browser_args=browser_args, other_args={'zero_copy': True}, matching_algorithm=strict_dc_sobel_algorithm), PixelTestPage( 'pixel_video_nonroot.html', base_name + '_DirectComposition_Nonroot', test_rect=[0, 0, 240, 136], browser_args=browser_args_Nonroot, # Part of the expected color migration, crbug.com/1078914. # Migrating to a less permissive set of parameters is currently # blocked on crbug.com/1086758. grace_period_end=datetime.date(2020, 8, 26), matching_algorithm=VERY_PERMISSIVE_SOBEL_ALGO), PixelTestPage('pixel_video_complex_overlays.html', base_name + '_DirectComposition_ComplexOverlays', test_rect=[0, 0, 240, 136], browser_args=browser_args_Complex, other_args={'video_is_rotated': True}, matching_algorithm=strict_dc_sobel_algorithm), PixelTestPage('pixel_video_mp4_rounded_corner.html', base_name + '_DirectComposition_Video_MP4_Rounded_Corner', test_rect=[0, 0, 240, 135], browser_args=browser_args, other_args={'no_overlay': True}), PixelTestPage('pixel_video_backdrop_filter.html', base_name + '_DirectComposition_Video_BackdropFilter', test_rect=[0, 0, 240, 135], browser_args=browser_args, other_args={'no_overlay': True}), PixelTestPage( 'pixel_video_mp4.html', base_name + '_DirectComposition_Video_Disable_Overlays', test_rect=[0, 0, 240, 135], browser_args=['--disable-direct-composition-video-overlays'], other_args={'no_overlay': True}, matching_algorithm=very_permissive_dc_sobel_algorithm), ]