Timeline



Feb 25, 2020: Today

8:53 PM Changeset in webkit [257406] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

Various test-cases from Gecko assert with ASSERTION FAILED: layoutState->renderer() == this.
https://bugs.webkit.org/show_bug.cgi?id=202805

Skip the test that's always crashing as suggested by Alexey.

6:13 PM Changeset in webkit [257405] by Russell Epstein
  • 1 copy in tags/Safari-609.1.20.4.1

Tag Safari-609.1.20.4.1.

6:03 PM Changeset in webkit [257404] by Russell Epstein
  • 1 edit in branches/safari-609.1.20.4-branch/Source/JavaScriptCore/runtime/StructureTransitionTable.h

Unreviewed build fix, rdar://problem/59654262

5:54 PM Changeset in webkit [257403] by Alan Coon
  • 1 edit in branches/safari-609.1.20.111-branch/Source/JavaScriptCore/runtime/StructureTransitionTable.h

Unreviewed build fix, rdar://problem/59654262

5:49 PM Changeset in webkit [257402] by Justin Fan
  • 316 edits
    12 adds in trunk/LayoutTests

[ WebGL ] Update WebGL bot expectations
https://bugs.webkit.org/show_bug.cgi?id=208227

Unreviewed test gardening.

Update DEQP expectations after ANGLE switch, and revise list of skipped tests for WebGL bot.

  • webgl/2.0.0/deqp/functional/gles3/booleanstatequery-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/bufferobjectquery-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/abs-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/acos-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/acosh-expected.txt: Added.
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/add-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/asin-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/asinh-expected.txt: Added.
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/atan-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/atan2-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/atanh-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/ceil-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/clamp-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/cos-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/cosh-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/cross-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/degrees-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/determinant-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/distance-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/div-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/dot-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/exp-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/exp2-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/faceforward-expected.txt: Added.
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/floor-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/fract-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/inverse-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/inversesqrt-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/length-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/log-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/log2-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/max-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/min-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/mix-expected.txt: Added.
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/mod-expected.txt: Added.
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/modf-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/mul-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/normalize-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/pow-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/radians-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/reflect-expected.txt: Added.
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/refract-expected.txt: Added.
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/round-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/roundeven-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/sign-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/sin-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/sinh-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/smoothstep-expected.txt: Added.
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/sqrt-expected.txt: Added.
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/step-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/sub-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/tan-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/tanh-expected.txt: Added.
  • webgl/2.0.0/deqp/functional/gles3/builtinprecision/trunc-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/draw/instancing-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fbocolorbuffer/clear-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fbocolorbuffer/tex2d_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fbocolorbuffer/tex2d_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fbocolorbuffer/tex2d_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fbocolorbuffer/tex2d_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fbocolorbuffer/tex2d_04-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fbocolorbuffer/tex2d_05-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fbocolorbuffer/texcube_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fbocolorbuffer/texcube_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fbocolorbuffer/texcube_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fbocolorbuffer/texcube_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fbocolorbuffer/texcube_04-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fbocolorbuffer/texcube_05-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fbodepthbuffer-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fboinvalidate/format_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fboinvalidate/format_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fboinvalidate/format_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fboinvalidate/sub-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fboinvalidate/target-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fboinvalidate/whole-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fborender/recreate_color_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fborender/recreate_color_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fborender/recreate_color_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fborender/recreate_color_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fborender/recreate_color_04-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fborender/recreate_color_05-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fborender/recreate_color_06-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fborender/recreate_depth_stencil-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fborender/resize_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fborender/resize_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fborender/resize_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fborender/resize_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fborender/shared_colorbuffer_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fborender/shared_colorbuffer_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fborender/shared_depth_stencil-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fborender/stencil_clear-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fbostencilbuffer-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/floatstatequery-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fragdepth-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fragmentoutput/array.int-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_05-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_06-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_07-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_09-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_14-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_15-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_16-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_17-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_19-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_20-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_21-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_22-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_23-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_24-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_26-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/framebufferblit/conversion_27-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/integerstatequery-expected.txt: Added.
  • webgl/2.0.0/deqp/functional/gles3/lifetime-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/negativestateapi-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/negativevertexarrayapi-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/pixelbufferobject-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/rasterizerdiscard-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/rbostatequery-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/readpixel-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/samplerstatequery-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shaderbuiltinvar-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shaderderivate_dfdy-expected.txt: Added.
  • webgl/2.0.0/deqp/functional/gles3/shaderoperator/angle_and_trigonometry_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shaderoperator/angle_and_trigonometry_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shaderpackingfunction-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shaderprecision_float-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shaderstatequery-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shadertexturefunction/texelfetch-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shadertexturefunction/texelfetchoffset-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shadertexturefunction/texture-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shadertexturefunction/texturegrad-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shadertexturefunction/texturegradoffset-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shadertexturefunction/texturelod-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shadertexturefunction/texturelodoffset-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shadertexturefunction/textureoffset-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shadertexturefunction/textureproj-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shadertexturefunction/textureprojgrad-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shadertexturefunction/textureprojgradoffset-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shadertexturefunction/textureprojlod-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shadertexturefunction/textureprojlodoffset-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shadertexturefunction/textureprojoffset-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/shadertexturefunction/texturesize-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/stringquery-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_combinations_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_combinations_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_combinations_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_combinations_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_combinations_04-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_combinations_05-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_04-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_05-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_06-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_07-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_08-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_formats_09-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_sizes_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_sizes_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_sizes_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_sizes_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_sizes_04-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/2d_sizes_05-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_combinations_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_combinations_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_combinations_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_combinations_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_combinations_04-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_combinations_05-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_04-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_05-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_06-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_07-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_08-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_formats_09-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_no_edges_visible-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_sizes_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_sizes_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_sizes_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_sizes_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturefiltering/cube_sizes_04-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_npot_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_npot_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_npot_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_npot_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_pot_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_pot_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_pot_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/textureformat/sized_color_2d_pot_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/textureformat/sized_color_cube_npot_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/textureformat/sized_color_cube_npot_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/textureformat/sized_color_cube_npot_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/textureformat/sized_color_cube_npot_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/textureformat/sized_color_cube_pot_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/textureformat/sized_color_cube_pot_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/textureformat/sized_color_cube_pot_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/textureformat/sized_color_cube_pot_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/textureformat/unsized_2d-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_copyteximage2d-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_copytexsubimage2d-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_teximage2d_2d_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_teximage2d_2d_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_teximage2d_cube_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_teximage2d_cube_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_teximage2d_cube_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_teximage2d_cube_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_teximage2d_cube_04-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_teximage3d_2d_array_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_teximage3d_2d_array_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_teximage3d_3d_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_teximage3d_3d_04-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage2d_2d_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage2d_2d_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage2d_2d_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage2d_cube_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage2d_cube_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage2d_cube_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage2d_cube_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage2d_cube_04-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage3d_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage3d_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/basic_texsubimage3d_04-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/random_teximage2d_2d-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/random_teximage2d_cube-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_2d_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_2d_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_2d_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_cube_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_cube_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_cube_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_cube_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_cube_04-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texstorage2d_format_size-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texstorage3d_format_2d_array_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texstorage3d_format_2d_array_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texstorage3d_format_3d_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texstorage3d_format_3d_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texstorage3d_format_3d_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texstorage3d_format_3d_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texsubimage2d_empty_tex-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texsubimage2d_pbo_2d_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texsubimage2d_pbo_2d_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texsubimage2d_pbo_cube_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texsubimage2d_pbo_cube_02-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texsubimage2d_pbo_cube_03-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texsubimage3d_pbo_2d_array_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texsubimage3d_pbo_2d_array_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texsubimage3d_pbo_3d_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturespecification/texsubimage3d_pbo_3d_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturewrap/rgba8_npot-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/texturewrap/rgba8_pot-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/array_element_interleaved_lines-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/array_element_interleaved_points-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/array_element_interleaved_triangles-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/array_element_separate_lines-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/array_element_separate_points-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/array_element_separate_triangles-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/array_interleaved_lines-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/array_interleaved_points-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/array_interleaved_triangles-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/array_separate_lines-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/array_separate_points-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/array_separate_triangles-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/basic_types_interleaved_lines-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/basic_types_interleaved_points-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/basic_types_interleaved_triangles-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/basic_types_separate_lines-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/basic_types_separate_points-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/basic_types_separate_triangles-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/interpolation_centroid-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/interpolation_flat-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/interpolation_smooth-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/point_size-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/position-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/random_interleaved_lines-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/random_interleaved_points-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/random_interleaved_triangles-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/random_separate_lines-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/random_separate_points-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/transformfeedback/random_separate_triangles-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/uniformapi/info_query-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/uniformapi/random-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/uniformapi/value_assigned-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/uniformapi/value_initial-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/uniformbuffers/instance_array_basic_type-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/uniformbuffers/random-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/uniformbuffers/single_basic_array-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/uniformbuffers/single_basic_type-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrayobject-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/multiple_attributes.count-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/multiple_attributes.output-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/multiple_attributes.storage-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/multiple_attributes.stride-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.first-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.normalize-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.offset-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.byte-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.float-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.half-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.int-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.int_2_10_10_10-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.short-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.unsigned_byte-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.unsigned_int-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.unsigned_int_2_10_10_10-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.output_type.unsigned_short-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.stride-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.usage.dynamic_copy-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.usage.dynamic_draw-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.usage.dynamic_read-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.usage.static_copy-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.usage.static_draw-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.usage.static_read-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.usage.stream_copy-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.usage.stream_draw-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/vertexarrays/single_attribute.usage.stream_read-expected.txt:
  • webgl/TestExpectations:
5:40 PM Changeset in webkit [257401] by Devin Rousso
  • 5 edits
    1 add in trunk/Source/WebInspectorUI

Web Inspector: move code for debug outlined focus element to the Debug folder so it isn't shipped
https://bugs.webkit.org/show_bug.cgi?id=208217

Reviewed by Joseph Pecoraro.

  • UserInterface/Base/Main.js:

(WI.contentLoaded):
(WI.contentLoaded.setFocusDebugOutline): Deleted.

  • UserInterface/Views/Main.css:

(body.focus-debug *:focus): Deleted.

  • UserInterface/Debug/Bootstrap.js:

(WI.runBootstrapOperations):
(WI.runBootstrapOperations.setFocusDebugOutline): Added.

  • UserInterface/Debug/Bootstrap.css: Added.

(body.focus-debug *:focus):

  • UserInterface/Main.html:
5:39 PM Changeset in webkit [257400] by Megan Gardner
  • 3 edits in trunk/Source/WebKitLegacy/mac

Build Fix
https://bugs.webkit.org/show_bug.cgi?id=208224
<rdar://problem/58879500>

Fix Build.

Reviewed by Tim Horton.

  • WebView/WebFrameView.mm:

(+[WebFrameView _viewTypesAllowImageTypeOmission:]):

  • WebView/WebView.mm:

(+[WebView _viewClass:andRepresentationClass:forMIMEType:allowingPlugins:]):

5:38 PM Changeset in webkit [257399] by justin_michaud@apple.com
  • 118 edits
    4 adds in trunk

Inline Cache delete by id/val
https://bugs.webkit.org/show_bug.cgi?id=207522

JSTests:

Reviewed by Keith Miller and Filip Pizlo.

  • microbenchmarks/delete-property-from-prototype-chain.js:

(delete.C.prototype.z):

  • microbenchmarks/delete-property-inline-cache-polymorphic.js: Added.

(C):
(noInline.C.foo):
(noInline.foo.F):
(noInline.F):

  • microbenchmarks/delete-property-inline-cache.js: Added.

(C):
(noInline.C.D):
(noInline.D.foo):
(noInline.foo.E):
(noInline.E.F):
(noInline.F):

  • microbenchmarks/delete-property-keeps-cacheable-structure.js:
  • stress/delete-property-check-structure-transition.js:

(sd): Deleted.
(testDeleteIsNotUncacheable): Deleted.
(): Deleted.
(testCanFlatten): Deleted.
(testDeleteWithInlineCache.Object.prototype.globalProperty.42.makeFoo): Deleted.
(testDeleteWithInlineCache.noInline.doTest): Deleted.
(testDeleteWithInlineCache): Deleted.

  • stress/delete-property-inline-cache.js: Added.

(assert):
(assert_eq):
(assert_neq):
(assert_throws):
(noInline.assert.noInline.assert_eq.noInline.assert_neq.noInline.assert_throws.testCacheableDeleteById.makeFoo):
(noInline.assert.noInline.assert_eq.noInline.assert_neq.noInline.assert_throws.testCacheableDeleteById):
(noInline.testCacheableDeleteById.testCacheableDeleteByVal.makeFoo2):
(noInline.testCacheableDeleteById.testCacheableDeleteByVal):
(noInline.testCacheableDeleteByVal.testCacheableEmptyDeleteById.makeFoo3):
(noInline.testCacheableDeleteByVal.testCacheableEmptyDeleteById):
(noInline.testCacheableEmptyDeleteById.testCacheableDeleteByIdMiss.makeFoo4):
(noInline.testCacheableEmptyDeleteById.testCacheableDeleteByIdMiss):
(noInline.testCacheableDeleteByIdMiss.testDeleteIndex.makeFoo5):
(noInline.testCacheableDeleteByIdMiss.testDeleteIndex):
(noInline.testDeleteIndex.testPolymorphicDelByVal.makeFoo6):
(noInline.testDeleteIndex.testPolymorphicDelByVal):
(noInline.testPolymorphicDelByVal.testBigintDeleteByVal.makeFoo7):
(noInline.testPolymorphicDelByVal.testBigintDeleteByVal):
(noInline.testBigintDeleteByVal.testSymbolDeleteByVal.makeFoo8):
(noInline.testBigintDeleteByVal.testSymbolDeleteByVal):
(noInline.testSymbolDeleteByVal.testObjDeleteByVal.makeFoo9):
(noInline.testSymbolDeleteByVal.testObjDeleteByVal):
(noInline.testObjDeleteByVal.testStrict.makeFoo10):
(noInline.testObjDeleteByVal.testStrict):
(noInline.testStrict.testOverride.arr.j):
(noInline.testStrict.testOverride):
(noInline.testOverride.testNonObject.deleteIt):
(noInline.testOverride.testNonObject):
(noInline.testNonObject.testNonObjectStrict.deleteIt):
(noInline.testNonObject.testNonObjectStrict):
(noInline.testNonObjectStrict.testExceptionUnwind.mutateThem):
(noInline.testNonObjectStrict.testExceptionUnwind.noInline.deleteIt):
(noInline.testNonObjectStrict.testExceptionUnwind):
(noInline.testExceptionUnwind.testTDZ):
(noInline.testTDZ):

Source/JavaScriptCore:

Reviewed by Keith Miller and Filip Pizlo.

We add inline caching for deleteById/val for baseline only. We also fix a concurrency bug in ICStats used for testing.
We add three new access cases (no inline code is emitted at this time):

  • Delete is a cached delete of an existing property
  • DeleteMiss is a delete of a property that does not exist
  • DeleteNonConfigurable is a delete of a property that exists, but should not be deleted.

There are no conditions required for these caches, since the structure id must change and the prototype does not matter.
This gives the following microbenchmark results:

delete-property-keeps-cacheable-structure (neutral)
delete-property-inline-cache definitely 3.9096x faster
delete-property-inline-cache-polymorphic definitely 1.5239x faster
delete-property-from-prototype-chain (neutral)

  • API/JSCallbackObject.h:
  • API/JSCallbackObjectFunctions.h:

(JSC::JSCallbackObject<Parent>::deleteProperty):
(JSC::JSCallbackObject<Parent>::deletePropertyByIndex):

  • API/JSObjectRef.cpp:

(JSObjectDeletePropertyForKey):
(JSObjectDeleteProperty):

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/AccessCase.cpp:

(JSC::AccessCase::create):
(JSC::AccessCase::createTransition):
(JSC::AccessCase::createDelete):
(JSC::AccessCase::requiresIdentifierNameMatch const):
(JSC::AccessCase::requiresInt32PropertyCheck const):
(JSC::AccessCase::needsScratchFPR const):
(JSC::AccessCase::forEachDependentCell const):
(JSC::AccessCase::doesCalls const):
(JSC::AccessCase::canReplace const):
(JSC::AccessCase::dump const):
(JSC::AccessCase::propagateTransitions const):
(JSC::AccessCase::generateImpl):

  • bytecode/AccessCase.h:

(JSC::AccessCase::structure const):
(JSC::AccessCase::newStructure const):

  • bytecode/PolymorphicAccess.cpp:

(WTF::printInternal):

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::reset):

  • bytecode/StructureStubInfo.h:
  • debugger/DebuggerScope.cpp:

(JSC::DebuggerScope::deleteProperty):

  • debugger/DebuggerScope.h:
  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::link):

  • dfg/DFGJITCompiler.h:

(JSC::DFG::JITCompiler::addDelById):
(JSC::DFG::JITCompiler::addDelByVal):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileDeleteById): Deleted.
(JSC::DFG::SpeculativeJIT::compileDeleteByVal): Deleted.

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compileDeleteById):
(JSC::DFG::SpeculativeJIT::compileDeleteByVal):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compileDeleteById):
(JSC::DFG::SpeculativeJIT::compileDeleteByVal):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileDelBy):
(JSC::FTL::DFG::LowerDFGToB3::compileDeleteById):
(JSC::FTL::DFG::LowerDFGToB3::compileDeleteByVal):

  • jit/ICStats.h:
  • jit/JIT.cpp:

(JSC::JIT::privateCompileSlowCases):
(JSC::JIT::link):

  • jit/JIT.h:
  • jit/JITInlineCacheGenerator.cpp:

(JSC::JITDelByValGenerator::JITDelByValGenerator):
(JSC::JITDelByValGenerator::generateFastPath):
(JSC::JITDelByValGenerator::finalize):
(JSC::JITDelByIdGenerator::JITDelByIdGenerator):
(JSC::JITDelByIdGenerator::generateFastPath):
(JSC::JITDelByIdGenerator::finalize):

  • jit/JITInlineCacheGenerator.h:

(JSC::JITDelByValGenerator::JITDelByValGenerator):
(JSC::JITDelByValGenerator::slowPathJump const):
(JSC::JITDelByIdGenerator::JITDelByIdGenerator):
(JSC::JITDelByIdGenerator::slowPathJump const):

  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_del_by_id):
(JSC::JIT::emitSlow_op_del_by_id):
(JSC::JIT::emit_op_del_by_val):
(JSC::JIT::emitSlow_op_del_by_val):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_del_by_id):
(JSC::JIT::emit_op_del_by_val):
(JSC::JIT::emitSlow_op_del_by_val):
(JSC::JIT::emitSlow_op_del_by_id):

  • jit/Repatch.cpp:

(JSC::tryCachePutByID):
(JSC::tryCacheDelBy):
(JSC::repatchDelBy):
(JSC::resetPutByID):
(JSC::resetDelBy):

  • jit/Repatch.h:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/CacheableIdentifierInlines.h:

(JSC::CacheableIdentifier::CacheableIdentifier):

  • runtime/ClassInfo.h:
  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::deleteProperty):

  • runtime/ClonedArguments.h:
  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/DeletePropertySlot.h: Added.

(JSC::DeletePropertySlot::DeletePropertySlot):
(JSC::DeletePropertySlot::setConfigurableMiss):
(JSC::DeletePropertySlot::setNonconfigurable):
(JSC::DeletePropertySlot::setHit):
(JSC::DeletePropertySlot::isCacheableDelete const):
(JSC::DeletePropertySlot::isDeleteHit const):
(JSC::DeletePropertySlot::isConfigurableDeleteMiss const):
(JSC::DeletePropertySlot::isNonconfigurable const):
(JSC::DeletePropertySlot::cachedOffset const):
(JSC::DeletePropertySlot::disableCaching):
(JSC::DeletePropertySlot::isCacheable const):

  • runtime/ErrorConstructor.cpp:

(JSC::ErrorConstructor::deleteProperty):

  • runtime/ErrorConstructor.h:
  • runtime/ErrorInstance.cpp:

(JSC::ErrorInstance::deleteProperty):

  • runtime/ErrorInstance.h:
  • runtime/GenericArguments.h:
  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::put):
(JSC::GenericArguments<Type>::deleteProperty):

  • runtime/GetterSetter.h:
  • runtime/JSArray.cpp:

(JSC::JSArray::deleteProperty):

  • runtime/JSArray.h:
  • runtime/JSCJSValue.h:
  • runtime/JSCell.cpp:

(JSC::JSCell::deleteProperty):

  • runtime/JSCell.h:
  • runtime/JSDataView.cpp:

(JSC::JSDataView::deleteProperty):

  • runtime/JSDataView.h:
  • runtime/JSFunction.cpp:

(JSC::JSFunction::deleteProperty):

  • runtime/JSFunction.h:
  • runtime/JSGenericTypedArrayView.h:
  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::deleteProperty):
(JSC::JSGenericTypedArrayView<Adaptor>::deletePropertyByIndex):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::addFunction):

  • runtime/JSLexicalEnvironment.cpp:

(JSC::JSLexicalEnvironment::deleteProperty):

  • runtime/JSLexicalEnvironment.h:
  • runtime/JSModuleEnvironment.cpp:

(JSC::JSModuleEnvironment::deleteProperty):

  • runtime/JSModuleEnvironment.h:
  • runtime/JSModuleNamespaceObject.cpp:

(JSC::JSModuleNamespaceObject::deleteProperty):

  • runtime/JSModuleNamespaceObject.h:
  • runtime/JSONObject.cpp:

(JSC::Walker::walk):

  • runtime/JSObject.cpp:

(JSC::JSObject::deleteProperty):
(JSC::JSObject::deletePropertyByIndex):
(JSC::validateAndApplyPropertyDescriptor):

  • runtime/JSObject.h:
  • runtime/JSProxy.cpp:

(JSC::JSProxy::deleteProperty):

  • runtime/JSProxy.h:
  • runtime/JSSymbolTableObject.cpp:

(JSC::JSSymbolTableObject::deleteProperty):

  • runtime/JSSymbolTableObject.h:
  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::deleteProperty):

  • runtime/ProxyObject.h:
  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::deleteProperty):

  • runtime/RegExpObject.h:
  • runtime/StrictEvalActivation.cpp:

(JSC::StrictEvalActivation::deleteProperty):

  • runtime/StrictEvalActivation.h:
  • runtime/StringObject.cpp:

(JSC::StringObject::deleteProperty):

  • runtime/StringObject.h:
  • runtime/Structure.cpp:

(JSC::Structure::removePropertyTransition):
(JSC::Structure::removePropertyTransitionFromExistingStructureImpl):
(JSC::Structure::removePropertyTransitionFromExistingStructure):
(JSC::Structure::removePropertyTransitionFromExistingStructureConcurrently):
(JSC::Structure::removeNewPropertyTransition):
(JSC::Structure::dump const):

  • runtime/Structure.h:
  • runtime/StructureInlines.h:

(JSC::Structure::hasIndexingHeader const):
(JSC::Structure::mayHaveIndexingHeader const):

  • tools/JSDollarVM.cpp:

(JSC::functionHasOwnLengthProperty):
(JSC::JSDollarVM::finishCreation):

Source/WebCore:

Reviewed by Keith Miller and Filip Pizlo.

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::deleteProperty):

  • bindings/js/JSLocationCustom.cpp:

(WebCore::JSLocation::deleteProperty):

  • bindings/js/JSRemoteDOMWindowCustom.cpp:

(WebCore::JSRemoteDOMWindow::deleteProperty):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateDeleteProperty):
(GenerateHeader):
(GenerateImplementation):
(GenerateConstructorHelperMethods):

  • bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:

(WebCore::JSTestEnabledBySettingPrototype::finishCreation):

  • bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:

(WebCore::JSTestGenerateIsReachablePrototype::finishCreation):

  • bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:

(WebCore::JSTestNamedDeleterNoIdentifier::deleteProperty):

  • bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:

(WebCore::JSTestNamedDeleterThrowingException::deleteProperty):

  • bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h:
  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:

(WebCore::JSTestNamedDeleterWithIdentifier::deleteProperty):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:

(WebCore::JSTestNamedDeleterWithIndexedGetter::deleteProperty):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h:
  • bindings/scripts/test/JS/JSTestNode.cpp:

(WebCore::JSTestNodePrototype::finishCreation):

  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::JSTestObjConstructor::initializeProperties):
(WebCore::JSTestObjPrototype::finishCreation):

  • bridge/NP_jsobject.cpp:
  • bridge/objc/WebScriptObject.mm:

(-[WebScriptObject removeWebScriptKey:]):

  • bridge/objc/objc_runtime.h:
  • bridge/objc/objc_runtime.mm:

(JSC::Bindings::ObjcFallbackObjectImp::deleteProperty):

  • bridge/runtime_array.cpp:

(JSC::RuntimeArray::deleteProperty):

  • bridge/runtime_array.h:
  • bridge/runtime_object.cpp:

(JSC::Bindings::RuntimeObject::deleteProperty):

  • bridge/runtime_object.h:

Source/WebKit:

Reviewed by Keith Miller and Filip Pizlo.

  • WebProcess/Plugins/Netscape/JSNPObject.cpp:

(WebKit::JSNPObject::deleteProperty):

  • WebProcess/Plugins/Netscape/JSNPObject.h:
  • WebProcess/Plugins/Netscape/NPJSObject.cpp:

(WebKit::NPJSObject::removeProperty):

Source/WebKitLegacy/mac:

Reviewed by Keith Miller and Filip Pizlo.

  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:

(WebKit::NetscapePluginInstanceProxy::removeProperty):

Source/WTF:

Reviewed by Keith Miller and Filip Pizlo.

  • wtf/Spectrum.h:

(WTF::Spectrum::add):
(WTF::Spectrum::get const):
(WTF::Spectrum::buildList const):
(WTF::Spectrum::clear):
(WTF::Spectrum::removeIf):
(WTF::Spectrum::begin): Deleted.
(WTF::Spectrum::end): Deleted.

5:23 PM Changeset in webkit [257398] by Alan Coon
  • 2 edits in branches/safari-610.1.5-branch/Source/WebKit

Cherry-pick r257264. rdar://problem/59778922

[iOS] Use one telemetry decoration for each sandbox rule
https://bugs.webkit.org/show_bug.cgi?id=207897

Reviewed by Brent Fulgham.

Currently, we are using the decorations '(with telemetry)' and '(with telemetry-backtrace)' for some sandbox rules
in the WebContent process' sandbox. Only one of the two decorations should be used.

No new tests, no behavior change.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257264 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5:23 PM Changeset in webkit [257397] by Alan Coon
  • 2 edits in branches/safari-610.1.5-branch/Source/WebKit

Cherry-pick r257254. rdar://problem/59787318

Temporarily disable in-process cookie cache as it seems to be causing hangs on iOS
https://bugs.webkit.org/show_bug.cgi?id=208152
<rdar://problem/59706587>

Reviewed by Alex Christensen.

  • Shared/WebPreferences.yaml:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257254 268f45cc-cd09-0410-ab3c-d52691b4dbfc

5:18 PM Changeset in webkit [257396] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: VoiceOver should read "Console prompt" when focusing on it
https://bugs.webkit.org/show_bug.cgi?id=208028
<rdar://problem/59641238>

Reviewed by Brian Burg.

Before this change, VoiceOver read "edit text blank" when focusing on the console prompt.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/ConsolePrompt.js:

(WI.ConsolePrompt):

5:13 PM Changeset in webkit [257395] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.0.5

Tag Safari-609.1.20.0.5.

4:57 PM Changeset in webkit [257394] by commit-queue@webkit.org
  • 18 edits in trunk/Source

Remove render update throttling
https://bugs.webkit.org/show_bug.cgi?id=208168

Patch by Ben Nham <Ben Nham> on 2020-02-25
Reviewed by Zalan Bujtas.

Currently, we disable render updates after the first paint for 500 ms while the page is
actively loading. However, oftentimes our first paint heuristic selects a first paint that
isn't particularly interesting (mostly background colors) and this paint throttler just
makes the user look at a nearly empty page for 500 ms. Antti and Simon both think we should
remove the throttler to fix this so this patch does that.

Source/WebCore:

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::scheduleStyleRecalc):
(WebCore::Document::shouldScheduleLayout):

  • editing/AlternativeTextController.cpp:

(WebCore::AlternativeTextController::insertDictatedText):

  • page/ChromeClient.h:

(WebCore::ChromeClient::layerTreeStateIsFrozen const):
(WebCore::ChromeClient::renderingUpdateThrottlingIsActive const): Deleted.
(WebCore::ChromeClient::adjustRenderingUpdateThrottling): Deleted.

  • page/EventHandler.cpp:

(WebCore::EventHandler::dispatchDragEvent):
(WebCore::EventHandler::dispatchMouseEvent):
(WebCore::EventHandler::internalKeyEvent):
(WebCore::EventHandler::handleTextInputEvent):

  • page/FrameView.cpp:

(WebCore::FrameView::loadProgressingStatusChanged):
(WebCore::FrameView::setWasScrolledByUser):
(WebCore::determineLayerFlushThrottleState): Deleted.
(WebCore::FrameView::disableLayerFlushThrottlingTemporarilyForInteraction): Deleted.
(WebCore::FrameView::updateLayerFlushThrottling): Deleted.

  • page/FrameView.h:

Source/WebKit:

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::adjustRenderingUpdateThrottling): Deleted.
(WebKit::WebChromeClient::renderingUpdateThrottlingIsActive const): Deleted.

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h:

(WebKit::DrawingAreaCoordinatedGraphics::scheduleInitialDeferredPaint): Deleted.

  • WebProcess/WebPage/DrawingArea.h:

(WebKit::DrawingArea::layerTreeStateIsFrozen const):
(WebKit::DrawingArea::renderingUpdateThrottlingIsActive const): Deleted.
(WebKit::DrawingArea::adjustRenderingUpdateThrottling): Deleted.

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::setLayerTreeStateIsFrozen):
(WebKit::RemoteLayerTreeDrawingArea::scheduleRenderingUpdate):
(WebKit::RemoteLayerTreeDrawingArea::updateRendering):
(WebKit::RemoteLayerTreeDrawingArea::scheduleInitialDeferredPaint): Deleted.
(WebKit::RemoteLayerTreeDrawingArea::adjustRenderingUpdateThrottling): Deleted.

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
(WebKit::TiledCoreAnimationDrawingArea::setLayerTreeStateIsFrozen):
(WebKit::TiledCoreAnimationDrawingArea::scheduleRenderingUpdate):
(WebKit::TiledCoreAnimationDrawingArea::updateRendering):
(WebKit::TiledCoreAnimationDrawingArea::scheduleInitialDeferredPaint): Deleted.
(WebKit::TiledCoreAnimationDrawingArea::adjustRenderingUpdateThrottling): Deleted.
(WebKit::TiledCoreAnimationDrawingArea::renderingUpdateThrottlingIsActive const): Deleted.
(WebKit::TiledCoreAnimationDrawingArea::startRenderThrottlingTimer): Deleted.
(WebKit::TiledCoreAnimationDrawingArea::renderThrottlingTimerFired): Deleted.

4:44 PM Changeset in webkit [257393] by Alan Coon
  • 2 edits in branches/safari-609.1.20.4-branch

Cherry-pick r257288. rdar://problem/59417124

[Win] Fix AppleWin build.
https://bugs.webkit.org/show_bug.cgi?id=208164

Unreviewed build fix.

Allow a warning which happens when building with older SDKs.

  • Source/cmake/OptionsMSVC.cmake:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257288 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4:41 PM Changeset in webkit [257392] by Alan Coon
  • 8 edits in branches/safari-609.1.20.4-branch/Source

Versioning.

4:32 PM Changeset in webkit [257391] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening for macOS.

  • platform/mac/TestExpectations: Change the expectation for the

fast/text-autosizing/ios/idempotentmode directory to 'Skip' since the
tests rely on a feature that isn't implemented on macOS.

4:20 PM Changeset in webkit [257390] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebKit

PDFPlugin: 'Open in Preview' and 'Save' don't work for blobs
https://bugs.webkit.org/show_bug.cgi?id=208221
<rdar://problem/22676176>

Reviewed by Alex Christensen.

  • WebProcess/Plugins/PDF/PDFPlugin.h:
  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::convertPostScriptDataIfNeeded):
(WebKit::PDFPlugin::setSuggestedFilename):
(WebKit::PDFPlugin::streamDidReceiveResponse):
(WebKit::PDFPlugin::manualStreamDidReceiveResponse):
Ensure that PDFPlugin's suggestedFilename always has a .pdf extension.
The UI process already requires this, and enforces it, causing operations
that use the suggestedFilename to fail if it does not have a .pdf extension.
However, in the case of a blob-loaded PDF, we get just the name "Unknown".
Slap the extension on there, and all is well!

4:20 PM Changeset in webkit [257389] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Make sure a client cannot cause a whole DOM tree to get leaked by simply holding on to a WKBundleNodeHandle
https://bugs.webkit.org/show_bug.cgi?id=208218

Reviewed by Ryosuke Niwa.

Make sure a client cannot cause a whole DOM tree to get leaked by simply holding on to a WKBundleNodeHandle.
Previously, WKBundleNodeHandle would ref its node, which would keep the whole HTML document alive. To protect
against this, InjectedBundleNodeHandle is now an ActiveDOMObject which nulls out its node RefPtr when the
document is getting ready for destruction (i.e. ActiveDOMObject::stop() is called).

  • WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:

(WebKit::InjectedBundleNodeHandle::InjectedBundleNodeHandle):
(WebKit::InjectedBundleNodeHandle::~InjectedBundleNodeHandle):
(WebKit::InjectedBundleNodeHandle::coreNode):
(WebKit::InjectedBundleNodeHandle::document):
(WebKit::InjectedBundleNodeHandle::elementBounds):
(WebKit::InjectedBundleNodeHandle::renderRect):
(WebKit::InjectedBundleNodeHandle::renderedImage):
(WebKit::InjectedBundleNodeHandle::visibleRange):
(WebKit::InjectedBundleNodeHandle::setHTMLInputElementValueForUser):
(WebKit::InjectedBundleNodeHandle::setHTMLInputElementSpellcheckEnabled):
(WebKit::InjectedBundleNodeHandle::isHTMLInputElementAutoFilled const):
(WebKit::InjectedBundleNodeHandle::isHTMLInputElementAutoFilledAndViewable const):
(WebKit::InjectedBundleNodeHandle::setHTMLInputElementAutoFilled):
(WebKit::InjectedBundleNodeHandle::setHTMLInputElementAutoFilledAndViewable):
(WebKit::InjectedBundleNodeHandle::isHTMLInputElementAutoFillButtonEnabled const):
(WebKit::InjectedBundleNodeHandle::setHTMLInputElementAutoFillButtonEnabled):
(WebKit::InjectedBundleNodeHandle::htmlInputElementAutoFillButtonType const):
(WebKit::InjectedBundleNodeHandle::htmlInputElementLastAutoFillButtonType const):
(WebKit::InjectedBundleNodeHandle::isAutoFillAvailable const):
(WebKit::InjectedBundleNodeHandle::setAutoFillAvailable):
(WebKit::InjectedBundleNodeHandle::htmlInputElementAutoFillButtonBounds):
(WebKit::InjectedBundleNodeHandle::htmlInputElementLastChangeWasUserEdit):
(WebKit::InjectedBundleNodeHandle::htmlTextAreaElementLastChangeWasUserEdit):
(WebKit::InjectedBundleNodeHandle::isTextField const):
(WebKit::InjectedBundleNodeHandle::htmlTableCellElementCellAbove):
(WebKit::InjectedBundleNodeHandle::documentFrame):
(WebKit::InjectedBundleNodeHandle::htmlFrameElementContentFrame):
(WebKit::InjectedBundleNodeHandle::htmlIFrameElementContentFrame):
(WebKit::InjectedBundleNodeHandle::stop):
(WebKit::InjectedBundleNodeHandle::activeDOMObjectName const):

  • WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:
4:18 PM Changeset in webkit [257388] by Alan Coon
  • 1 copy in branches/safari-609.1.20.4-branch

New branch.

4:10 PM Changeset in webkit [257387] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 Release ] imported/w3c/web-platform-tests/webrtc/RTCPeerConnection-iceConnectionState.https.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208222

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:57 PM Changeset in webkit [257386] by youenn@apple.com
  • 3 edits in trunk/Source/WebKit

Allow GPU Process to capture microphone in the background
https://bugs.webkit.org/show_bug.cgi?id=208193

Reviewed by Eric Carlson.

Manually tested.

  • GPUProcess/EntryPoint/Cocoa/XPCService/GPUService/Info-iOS.plist:

Add audio background mode and can inherit key, as done for WebProcess.

  • Scripts/process-entitlements.sh:

Add entitlement to start audio capture in a background process.

3:39 PM Changeset in webkit [257385] by youenn@apple.com
  • 5 edits in trunk/Source/WebKit

Pass UIProcess PID to GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=208197

Reviewed by Eric Carlson.

Parent PID is needed for PID forwarding done in MediaSessionManageriOS::providePresentingApplicationPIDIfNecessary.
Send it from UIProcess to GPUProcess and initialize it at creation time of GPUProcess singleton.

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::initializeGPUProcess):

  • GPUProcess/GPUProcessCreationParameters.cpp:

(WebKit::GPUProcessCreationParameters::encode const):
(WebKit::GPUProcessCreationParameters::decode):

  • GPUProcess/GPUProcessCreationParameters.h:
  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::singleton):

3:32 PM Changeset in webkit [257384] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac Debug ] imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-pointer-control.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208220

Unreviewed test gardening.

  • platform/mac/TestExpectations:
3:26 PM Changeset in webkit [257383] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Change DTMF and mDNS candidates feature flags from experimental to internal
https://bugs.webkit.org/show_bug.cgi?id=208131

Reviewed by Eric Carlson.

  • Shared/WebPreferences.yaml:
3:21 PM Changeset in webkit [257382] by Justin Fan
  • 7 edits in trunk/LayoutTests

[WebGL] More 2.0.0 conformance suite gardening after ANGLE rollout
https://bugs.webkit.org/show_bug.cgi?id=208211

Unreviewed test gardening.

Mark one more unsupported test as flaky, and add in Intel graphics-specific results for
5 tests that were failing consistently across all bots.

  • TestExpectations:
  • webgl/2.0.0/conformance/buffers/buffer-uninitialized-expected.txt:
  • webgl/2.0.0/conformance/extensions/angle-instanced-arrays-expected.txt:
  • webgl/2.0.0/conformance/rendering/clipping-wide-points-expected.txt:
  • webgl/2.0.0/conformance2/rendering/clipping-wide-points-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/tex-3d-size-limit-expected.txt:
3:17 PM Changeset in webkit [257381] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.111.5

Tag Safari-609.1.20.111.5.

3:12 PM Changeset in webkit [257380] by Nikita Vasilyev
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: VoiceOver: TreeOutline does not correctly indicate selected item
https://bugs.webkit.org/show_bug.cgi?id=207968

Reviewed by Brian Burg.

Previously, the entire TreeOutline's DOM element had focus. With this patch,
selected item DOM element has focus instead. When clicking on the treeElement,
set tabIndex to 0 and focus on it.

  • UserInterface/Views/DOMTreeOutline.css:

(.tree-outline.dom): Fix indentation.

(.tree-outline.dom:not(.non-selectable):focus-within li.selected .selection-area):
(.tree-outline.dom:not(.non-selectable) li.hovered:not(.selected) .selection-area):
(.tree-outline.dom:focus-within li.inspected-node.selected > span::after):
(.tree-outline.dom li):
Remove outline - selection is already indicated by the background.

(.tree-outline.dom:focus-within li.selected .pseudo-class-indicator):
(.tree-outline.dom:focus-within li.selected):
(.tree-outline.dom:focus-within li.selected *):
(.tree-outline.dom:focus-within li.parent.selected::before):
(.tree-outline.dom:focus-within li.parent.expanded.selected::before):

  • UserInterface/Views/DOMTreeOutline.js:
  • UserInterface/Views/TreeElement.js:

(WI.TreeElement.prototype._attach):
(WI.TreeElement.prototype.collapse):
(WI.TreeElement.prototype.expand):
(WI.TreeElement.prototype.select):
(WI.TreeElement.prototype.deselect):
(WI.TreeElement.prototype.focus):
(WI.TreeElement.prototype.unfocus):

  • UserInterface/Views/TreeOutline.css:

(.tree-outline .item.selected:focus .disclosure-button):
(.tree-outline .item.selected.expanded:focus .disclosure-button):
(.tree-outline .item.selected:focus):
(.tree-outline .item.selected:focus .subtitle):
(.tree-outline:not(.large) .item.selected:focus .status .indeterminate-progress-spinner):

  • UserInterface/Views/TreeOutline.js:

(WI.TreeOutline.prototype._treeKeyDown):
(WI.TreeOutline.prototype._handleMouseDown):

3:12 PM Changeset in webkit [257379] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac ] compositing/video/video-clip-change-src.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208219

Unreviewed test gardening.

  • platform/mac/TestExpectations:
3:06 PM Changeset in webkit [257378] by Matt Lewis
  • 2 edits in trunk/Tools

Add checkout_root to stubrepository.py
https://bugs.webkit.org/show_bug.cgi?id=208213

Reviewed by Jonathan Bedard.

  • Scripts/webkitpy/common/checkout/scm/stub_repository.py:

(StubRepository.init):

We are creating our own class variable for checkout_root rather than calling the parent SCM variable
because when initially we left out the parent constructor due to trying to override the fact that we don't actually have a SCM.

2:29 PM Changeset in webkit [257377] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

Removing expectations from a resolved bug
https://bugs.webkit.org/show_bug.cgi?id=207154

Unreviewed test gardening

  • platform/mac-wk1/TestExpectations:
2:27 PM Changeset in webkit [257376] by Jason_Lawrence
  • 3 edits in trunk/LayoutTests

REGRESSION: (r257268) [ iPadOS wk2 ] fast/scrolling/ios/change-scrollability-on-content-resize-nested.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=208216

Unreviewed test gardening.

Rebaselined the test for iPad, removed the failure expectation.

  • platform/ipad/TestExpectations:
  • platform/ipad/fast/scrolling/ios/change-scrollability-on-content-resize-nested-expected.txt:
2:11 PM Changeset in webkit [257375] by dbates@webkit.org
  • 2 edits in trunk/Tools

TestWebKitAPI.PasteMixedContent.CopyAndPasteWithCustomPasteboardDataOnly should wait until copy operation completes
https://bugs.webkit.org/show_bug.cgi?id=208214

Reviewed by Wenson Hsieh.

Wait until the copy operation completes before loading the second web view and testing paste
to ensure that something was actually copied to the clipboard.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/xcshareddata/xcschemes/TestWebKitAPI.xcscheme:
  • TestWebKitAPI/Tests/WebKitCocoa/PasteMixedContent.mm:

(TestWebKitAPI::TEST): Substitute -_synchronouslyExecuteEditCommand for -_executeEditCommand
so that we wait until the command completes.

1:59 PM Changeset in webkit [257374] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ iPadOS wk2 ] fast/scrolling/ios/change-scrollability-on-content-resize-nested.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=208216

Unreviewed test gardening.

  • platform/ipad/TestExpectations:
1:51 PM Changeset in webkit [257373] by mmaxfield@apple.com
  • 5 edits
    2 adds in trunk

[iPadOS] REGRESSION(r247667): Autosizing style changes don't invalidate RenderText's preferred logical widths
https://bugs.webkit.org/show_bug.cgi?id=208084
<rdar://problem/59463898>

Reviewed by Darin Adler.

Source/WebCore:

Just use RenderElement::setStyle(), which handles all the invalidations, instead of RenderElement::setNeedsLayout().

Do a little refactoring so we don't clone RenderStyles unless we need to.

Test: fast/text-autosizing/ios/idempotentmode/viewport-change-relayout.html

  • page/Page.cpp:

(WebCore::Page::recomputeTextAutoSizingInAllFrames):

  • style/StyleAdjuster.cpp:

(WebCore::Style::Adjuster::adjustmentForTextAutosizing):
(WebCore::Style::Adjuster::adjustForTextAutosizing):

  • style/StyleAdjuster.h:

(WebCore::Style::Adjuster::AdjustmentForTextAutosizing::operator bool const):

LayoutTests:

  • fast/text-autosizing/ios/idempotentmode/viewport-change-relayout-expected.html: Added.
  • fast/text-autosizing/ios/idempotentmode/viewport-change-relayout.html: Added.
1:45 PM Changeset in webkit [257372] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][TFC] Do not create a formatting context for empty subtree in TableFormattingContext::computePreferredWidthForColumns
https://bugs.webkit.org/show_bug.cgi?id=208205
<rdar://problem/59766702>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/layoutformattingcontext/simple-table-with-empty-td.html

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns):

LayoutTests:

  • fast/layoutformattingcontext/simple-table-with-empty-td-expected.html: Added.
  • fast/layoutformattingcontext/simple-table-with-empty-td.html: Added.
1:40 PM Changeset in webkit [257371] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed, a build fix after r257269

  • Platform/spi/Cocoa/LocalAuthenticationSPI.h:
1:24 PM Changeset in webkit [257370] by Jacob Uphoff
  • 2 edits in trunk/LayoutTests

Removing expectations for a resolved bug
https://bugs.webkit.org/show_bug.cgi?id=206673

Unreviewed test gardening

  • platform/mac-wk1/TestExpectations:
12:14 PM Changeset in webkit [257369] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

REGRESSION: (r257289) [ macOS ] fast/dom/navigator-detached-no-crash.html is failing
https://bugs.webkit.org/show_bug.cgi?id=208202

Patch by Nikos Mouchtaris <nmouchtaris@apple.com> on 2020-02-25
Reviewed by Megan Gardner.

Fixed expected for new function introduced to navigator. Test makes sure accessing each
member of navigator doesn't crash, added check for new function in expected.

  • platform/mac-wk2/fast/dom/navigator-detached-no-crash-expected.txt:
11:35 AM Changeset in webkit [257368] by don.olmstead@sony.com
  • 3 edits in trunk/Source/WebCore

[WinCairo] Fix build after revisions 257357 and 257354
https://bugs.webkit.org/show_bug.cgi?id=208210

Unreviewed build fix.

  • platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:

(WebCore::GraphicsLayerTextureMapper::notifyChange):

  • platform/network/curl/CookieJarDB.cpp:

(WebCore::CookieJarDB::setCookie):

11:33 AM Changeset in webkit [257367] by youenn@apple.com
  • 4 edits in trunk/Source/WebKit

[iOS] Allow GPUProcess to set the AudioSession Category
https://bugs.webkit.org/show_bug.cgi?id=208194

Reviewed by Eric Carlson.

Disable setting the audio session category in WebProcess when media is playing in GPUProcess.
Always enable GPUProcess to set the audio session category.
With https://bugs.webkit.org/show_bug.cgi?id=208193 and activating playing audio in GPUProcess,
this allows running simple playing audio captured locally web pages.
Manually tested.

  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::initializeGPUProcess):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_overriddenMediaType):

  • WebProcess/cocoa/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::AudioFactory::createAudioCaptureSource):

11:26 AM Changeset in webkit [257366] by Jacob Uphoff
  • 4 edits in trunk/LayoutTests/fast/events/touch/ios

Rebaselining tests that started failing
https://bugs.webkit.org/show_bug.cgi?id=208085

Unreviewed test gardening

  • fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-block-scrolling-state-expected.txt:
  • fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-document-scrolling-state-expected.txt:
  • fast/events/touch/ios/block-without-overflow-scroll-scrolling-state-expected.txt:
  • fast/events/touch/ios/tap-with-active-touch-end-listener-expected.txt:
11:16 AM Changeset in webkit [257365] by youenn@apple.com
  • 7 edits in trunk/Source/WebKit

WebProcessPool does not need a map of service worker processes keyed by domain+session
https://bugs.webkit.org/show_bug.cgi?id=208141

Reviewed by Alex Christensen.

It is not needed for the WebProcessPool to query the service worker process map in case of creation of a service worker process
since Network Process has all the information needed to decide whether to create a new process or not.

Network process is now telling UIProcess to terminate a service worker process based on its identifier instead of its domain+session.
This allows replacing the WebProcessPool service worker process map with an HashSet, which is both safer and more efficient to use.

No observable change.

  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:

(WebKit::WebSWServerToContextConnection::syncTerminateWorker):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::terminateUnresponsiveServiceWorkerProcesses):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::networkProcessCrashed):
(WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):
(WebKit::WebProcessPool::removeFromServiceWorkerProcesses):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::updateServiceWorkerUserAgent):
(WebKit::WebProcessPool::terminateServiceWorkers):
(WebKit::WebProcessPool::updateProcessAssertions):
(WebKit::WebProcessPool::isServiceWorkerPageID const):
(WebKit::WebProcessPool::setUseSeparateServiceWorkerProcess):
(WebKit::WebProcessPool::hasServiceWorkerForegroundActivityForTesting const):
(WebKit::WebProcessPool::hasServiceWorkerBackgroundActivityForTesting const):
(WebKit::WebProcessPool::terminateServiceWorkerProcess): Deleted.

  • UIProcess/WebProcessPool.h:
11:08 AM Changeset in webkit [257364] by Chris Dumez
  • 4 edits in trunk

REGRESSION (r256882): Can't drag an HTML file into a new (empty) Safari tab
https://bugs.webkit.org/show_bug.cgi?id=208199
<rdar://problem/59746887>

Reviewed by Alex Christensen.

Source/WebKit:

Make sure we launch the initial WKWebView's WebProcess when a drag enters the view, so that the drag & drop
logic still works on empty views.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::dragEntered):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/DragAndDropTests.mm:

(TEST):

10:49 AM Changeset in webkit [257363] by commit-queue@webkit.org
  • 10 edits in trunk/Source

Make HostWindow be the creator of the remote ImageBuffer
https://bugs.webkit.org/show_bug.cgi?id=207134

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-02-25
Reviewed by Darin Adler.

Source/WebCore:

ImageBuffer is responsible of creating all the in-process ImageBuffers.
HostWindow will be responsible of creating the remote ImageBuffers.

HostWindow adds the virtual function createImageBuffer(). Chrome forward
this to the virtual function createImageBuffer() on the ChromeClient.

  • page/Chrome.cpp:

(WebCore::Chrome::createImageBuffer const):

  • page/Chrome.h:
  • page/ChromeClient.h:

(WebCore::ChromeClient::createImageBuffer const):

  • platform/HostWindow.h:
  • platform/graphics/ImageBuffer.cpp:

(WebCore::ImageBuffer::create):

  • platform/graphics/RenderingMode.h:

Source/WebKit:

WebChromeClient adds stubs for creating the remote ImageBuffers.

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createImageBuffer const):

  • WebProcess/WebCoreSupport/WebChromeClient.h:
10:37 AM Changeset in webkit [257362] by sihui_liu@apple.com
  • 2 edits in trunk/Tools

spinRunLoop should take a non-zero integer as parameter
https://bugs.webkit.org/show_bug.cgi?id=208148
<rdar://problem/59766682>

Unreviewed iOS build fix.

  • TestWebKitAPI/cocoa/UtilitiesCocoa.mm:

(TestWebKitAPI::Util::spinRunLoop):

9:37 AM Changeset in webkit [257361] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebCore
Assertion failed: currentSchema == createV1ObjectStoreInfoSchema(objectStoreInfoTableName)
currentSchema == createV1ObjectStoreInfoSchema(objectStoreInfoTableNameAlternate)

https://bugs.webkit.org/show_bug.cgi?id=208144

Reviewed by Ryosuke Niwa.

Change a release assertion to release error log to gather information about bug. This is also the pattern of
handling error during schema update in SQLiteIDBBackingStore.

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidObjectStoreInfoTable):

9:30 AM Changeset in webkit [257360] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][OutOfFlow] Out-of-flow positioned line breaks can generate display boxes
https://bugs.webkit.org/show_bug.cgi?id=208198
<rdar://problem/59764787>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/layoutformattingcontext/out-of-flow-positioned-line-breaks.html

This assert should take the positioning into account when checking againts line breaks.
(In practice those display boxes are empty and they don't really contribute to rendering but
they are still valid content.)

  • layout/FormattingState.cpp:

(WebCore::Layout::FormattingState::displayBox):

LayoutTests:

  • fast/layoutformattingcontext/out-of-flow-positioned-line-breaks-expected.html: Added.
  • fast/layoutformattingcontext/out-of-flow-positioned-line-breaks.html: Added.
9:19 AM Changeset in webkit [257359] by sihui_liu@apple.com
  • 4 edits in trunk/Tools

spinRunLoop should take a non-zero integer as parameter
https://bugs.webkit.org/show_bug.cgi?id=208148

Reviewed by Darin Adler.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
  • TestWebKitAPI/cocoa/UtilitiesCocoa.mm:

(TestWebKitAPI::Util::spinRunLoop):

8:53 AM Changeset in webkit [257358] by Kate Cheney
  • 2 edits in trunk/Source/WebKit

Add additions to NetworkDataTaskCocoa
https://bugs.webkit.org/show_bug.cgi?id=208155
<rdar://problem/59445723>

Reviewed by Darin Adler.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):

8:36 AM Changeset in webkit [257357] by Antti Koivisto
  • 25 edits in trunk/Source

Remove throttling code from RenderLayerCompositor
https://bugs.webkit.org/show_bug.cgi?id=208135

Reviewed by Zalan Bujtas.

Source/WebCore:

It is only used on WK1, adds lots of complexity and is not very effective or correct.

Also do some "layer flush" -> "rendering update" renaming.

  • page/FrameView.cpp:

(WebCore::FrameView::disableLayerFlushThrottlingTemporarilyForInteraction):
(WebCore::FrameView::updateLayerFlushThrottling):
(WebCore::FrameView::setViewExposedRect):
(WebCore::FrameView::scheduleLayerFlushAllowingThrottling): Deleted.

  • page/FrameView.h:
  • page/PageOverlayController.cpp:

(WebCore::PageOverlayController::notifyRenderingUpdateRequired):
(WebCore::PageOverlayController::notifyFlushRequired): Deleted.

  • page/PageOverlayController.h:
  • page/mac/ServicesOverlayController.h:
  • page/mac/ServicesOverlayController.mm:

(WebCore::ServicesOverlayController::Highlight::notifyRenderingUpdateRequired):
(WebCore::ServicesOverlayController::Highlight::notifyFlushRequired): Deleted.

  • platform/graphics/GraphicsLayer.h:

(WebCore::GraphicsLayer::canThrottleLayerFlush const): Deleted.

  • platform/graphics/GraphicsLayerClient.h:

(WebCore::GraphicsLayerClient::notifyRenderingUpdateRequired):
(WebCore::GraphicsLayerClient::notifyFlushRequired): Deleted.

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):

  • platform/graphics/ca/GraphicsLayerCA.h:
  • platform/ios/LegacyTileCache.h:
  • platform/ios/LegacyTileCache.mm:

(WebCore::LegacyTileCache::scheduleRenderingUpdateForPendingRepaint):
(WebCore::LegacyTileCache::setNeedsDisplayInRect):
(WebCore::LegacyTileCache::updateTilingMode):
(WebCore::LegacyTileCache::scheduleLayerFlushForPendingRepaint): Deleted.

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::notifyRenderingUpdateRequired):
(WebCore::RenderLayerBacking::notifyFlushRequired): Deleted.

  • rendering/RenderLayerBacking.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::RenderLayerCompositor):
(WebCore::RenderLayerCompositor::notifyRenderingUpdateRequired):
(WebCore::RenderLayerCompositor::scheduleRenderingUpdate):
(WebCore::RenderLayerCompositor::flushPendingLayerChanges):
(WebCore::RenderLayerCompositor::didChangeVisibleRect):
(WebCore::RenderLayerCompositor::flushLayersSoon):
(WebCore::RenderLayerCompositor::frameViewDidScroll):
(WebCore::RenderLayerCompositor::ensureRootLayer):
(WebCore::RenderLayerCompositor::attachRootLayer):
(WebCore::RenderLayerCompositor::notifyFlushRequired): Deleted.
(WebCore::RenderLayerCompositor::scheduleLayerFlush): Deleted.
(WebCore::RenderLayerCompositor::setLayerFlushThrottlingEnabled): Deleted.
(WebCore::RenderLayerCompositor::disableLayerFlushThrottlingTemporarilyForInteraction): Deleted.
(WebCore::RenderLayerCompositor::isThrottlingLayerFlushes const): Deleted.
(WebCore::RenderLayerCompositor::startLayerFlushTimerIfNeeded): Deleted.
(WebCore::RenderLayerCompositor::startInitialLayerFlushTimerIfNeeded): Deleted.
(WebCore::RenderLayerCompositor::layerFlushTimerFired): Deleted.

  • rendering/RenderLayerCompositor.h:

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(-[WebView _scheduleRenderingUpdateForPendingTileCacheRepaint]):
(-[WebView _scheduleLayerFlushForPendingTileCacheRepaint]): Deleted.

8:28 AM Changeset in webkit [257356] by Andres Gonzalez
  • 8 edits in trunk/Source/WebCore

IsolatedObject support for ProgressIndicator and Meter.
https://bugs.webkit.org/show_bug.cgi?id=208175

Reviewed by Chris Fleizach.

  • Eliminated the need to downcast to an AccessibilityProgressIndicator

by including gaugeRegionValueDescription in the valueDescription
method.

  • Separated isAccessibilityProgressIndicatorInstance from

isProgressIndicator, so that the latter now works for both
AccessibilityObjects and AXIsolatedObjects.

  • Completed implementation of isMeter in AXIsolatedObject.
  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/AccessibilityProgressIndicator.cpp:

(WebCore::AccessibilityProgressIndicator::valueDescription const):

  • accessibility/AccessibilityProgressIndicator.h:
  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData): Sets the isMeter property.
(WebCore::AXIsolatedObject::isAccessibilityProgressIndicatorInstance const):

  • accessibility/isolatedtree/AXIsolatedObject.h:
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper valueDescriptionForMeter]): Deleted, no needed any longer.

8:26 AM Changeset in webkit [257355] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC] Invalidate layout states on style mutation
https://bugs.webkit.org/show_bug.cgi?id=208195
<rdar://problem/59764089>

Reviewed by Antti Koivisto.

Let's just do a blanket invalidation for now (since we don't have the invalidation figured out yet).

  • page/FrameViewLayoutContext.cpp:

(WebCore::FrameViewLayoutContext::invalidateLayoutState):

  • page/FrameViewLayoutContext.h:
  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateRendererStyle):

8:16 AM Changeset in webkit [257354] by Chris Dumez
  • 12 edits
    2 adds in trunk

Regression(CookieCache) Hang and very high CPU usage on nytimes.com
https://bugs.webkit.org/show_bug.cgi?id=208166
<rdar://problem/59739735>

Reviewed by Alex Christensen.

Source/WebCore:

The Cookie class which the cookie cache implementation relies on for IPC of cookie had a bug
in its implementation to convert the Cookie into a NSHTTPCookie. In particular, if the expiry
was in the past, it would drop it and the cookie would end up with no expiration date. We would
end up with a cookie that lives for duration of the session, instead of a cookie with an
expiration in the past (which is how sites delete cookies).

Test: http/tests/cookies/document-cookie-set-expired-cookie.html

  • platform/network/cocoa/CookieCocoa.mm:

(WebCore::Cookie::operator NSHTTPCookie * _Nullable const):

Source/WebKit:

Re-enable the in-process cookie cache now that the bug on nytimes.com has been fixed.

  • Shared/WebPreferences.yaml:

LayoutTests:

Add layout test coverage.

  • http/tests/cookies/document-cookie-set-expired-cookie-expected.txt: Added.
  • http/tests/cookies/document-cookie-set-expired-cookie.html: Added.
8:04 AM Changeset in webkit [257353] by Carlos Garcia Campos
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.28

Merge r256623 - Ensure animations that lose their effect don't schedule an animation update
https://bugs.webkit.org/show_bug.cgi?id=207713
rdar://59174840

Patch by Sunny He <sunny_he@apple.com> on 2020-02-14
Reviewed by Antoine Quint.

Source/WebCore:
An active animation for which the effect is removed may be considered for
an upcoming animation resolution. However, WebAnimation::timeToNextTick()
expects a valid effect to be available to be able to determine timing.
We now check an animation is relevant before calling timeToNextTick() and
add an ASSERT() in that function to catch cases where an animation effect
might not be available.

Source/WebCore:

Test: webanimations/animation-null-effect.html

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::scheduleNextTick):

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::timeToNextTick const):

LayoutTests:

  • webanimations/animation-null-effect-expected.txt: Added.
  • webanimations/animation-null-effect.html: Added.
8:04 AM Changeset in webkit [257352] by Carlos Garcia Campos
  • 27 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256621 - IndexedDB: prefetch cursor records on client side
https://bugs.webkit.org/show_bug.cgi?id=207602
<rdar://problem/58483927>

Reviewed by Brady Eidson.

Cache cursor records on client side and use those records for iterate operations.

This makes cursor continue/advance tests in PerformanceTests/IndexedDB/basics ~3x faster.

  • Headers.cmake:
  • Modules/indexeddb/IDBCursor.cpp:

(WebCore::IDBCursor::setGetResult): Record the ID of TransactionOperation that updates cached record.
(WebCore::IDBCursor::iterateWithPrefetchedRecords): IDBCursor uses cached records for iterate opertaions if
there is no write operation between last cached records update and current iteration operation.
(WebCore::IDBCursor::clearPrefetchedRecords):

  • Modules/indexeddb/IDBCursor.h:
  • Modules/indexeddb/IDBGetResult.cpp:

(WebCore::IDBGetResult::isolatedCopy):

  • Modules/indexeddb/IDBGetResult.h:

(WebCore::IDBGetResult::IDBGetResult):
(WebCore::IDBGetResult::prefetchedRecords const):
(WebCore::IDBGetResult::encode const):
(WebCore::IDBGetResult::decode):

  • Modules/indexeddb/IDBRequest.cpp: Record corresponding TransactionOperation ID in request.

(WebCore::IDBRequest::didOpenOrIterateCursor):

  • Modules/indexeddb/IDBRequest.h:

(WebCore::IDBRequest::pendingCursor const):
(WebCore::IDBRequest::setTransactionOperationID):

  • Modules/indexeddb/IDBTransaction.cpp: If a cursor iterate request can be handled with cached records,

IDBClient does not need to send request to IDBServer and wait for response. But requests before that iterate
request may need to wait server to answer, and spec requires to handle requests in order. Therefore, we now keep
all the results in m_transactionOperationResultMap and handle them according to the ordering in
m_transactionOperationsInProgressQueue.
(WebCore::IDBTransaction::abortInProgressOperations):
(WebCore::IDBTransaction::removeRequest): Because result of a cursor request can be answered sooner, it is
possible that in finishedDispatchEventForRequest, m_currentlyCompletingRequest (which is a cursor request) is
set to nullptr, and then it is set back to the same cursor request in handleOperationsCompletedOnServer right
after. This happens in dispatchEvent of the cursor request, where request would remove itself from request list
of transaction at the end.
In this case, when request list becomes empty, transaction may commit automatically. But transaction should not
because that request is still valid as m_currentlyCompletingRequest and should not be removed from list.
(WebCore::IDBTransaction::scheduleOperation):
(WebCore::IDBTransaction::operationCompletedOnServer):
(WebCore::IDBTransaction::handleOperationsCompletedOnServer): All requests were sent to IDBServer and the
response/result ordering would naturally be the same as request order. Now that results can be created in both
IDBClient and IDBServer, we no longer handle requests using m_completedOnServerQueue.
(WebCore::IDBTransaction::createObjectStore): Mark as write operation to track last write operation.
(WebCore::IDBTransaction::renameObjectStore): Ditto.
(WebCore::IDBTransaction::createIndex): Ditto.
(WebCore::IDBTransaction::renameIndex): Ditto.
(WebCore::IDBTransaction::requestDeleteRecord): Ditto.
(WebCore::IDBTransaction::requestClearObjectStore): Ditto.
(WebCore::IDBTransaction::requestPutOrAdd): Ditto.
(WebCore::IDBTransaction::deleteObjectStore): Ditto.
(WebCore::IDBTransaction::deleteIndex): Ditto.
(WebCore::IDBTransaction::iterateCursorOnServer): Only use cached records if the request does not specify target
key. If cursor is iterated successfully with cache, send a message to IDBServer to notify about the progress.
Otherwise, fall back to depend on IDBServer to answer the request.
(WebCore::IDBTransaction::generateOperationID): TransactionOperation ID is unique in a transaction.

  • Modules/indexeddb/IDBTransaction.h:
  • Modules/indexeddb/IndexedDB.h:
  • Modules/indexeddb/client/IDBConnectionProxy.cpp:

(WebCore::IDBClient::IDBConnectionProxy::iterateCursor): Don't track result of TransactionOperation in
IDBConnectionProxy if TransactionOperation does not need a reply from IDBServer.

  • Modules/indexeddb/client/TransactionOperation.cpp:

(WebCore::IDBClient::TransactionOperation::TransactionOperation):

  • Modules/indexeddb/client/TransactionOperation.h: Add ID to TransactionOperation.

(WebCore::IDBClient::TransactionOperation::operationID const):
(WebCore::IDBClient::TransactionOperation::TransactionOperation):

  • Modules/indexeddb/server/IDBBackingStore.h: remove prefetchCursor as it is not used now.
  • Modules/indexeddb/server/MemoryIDBBackingStore.h: Ditto. Also this patch only deals with prefetching in

persistent store.

  • Modules/indexeddb/server/MemoryIDBBackingStore.h:
  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::createIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::getAllIndexRecords):
(WebCore::IDBServer::SQLiteIDBBackingStore::getIndexRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::iterateCursor): Only prefetch at when request needs to be answered.
(WebCore::IDBServer::SQLiteIDBBackingStore::prefetchCursor): Deleted.

  • Modules/indexeddb/server/SQLiteIDBBackingStore.h:
  • Modules/indexeddb/server/SQLiteIDBCursor.cpp:

(WebCore::IDBServer::SQLiteIDBCursor::currentData): Provide an option to include prefetched records in result.
(WebCore::IDBServer::SQLiteIDBCursor::objectStoreRecordsChanged): Reset count to prefetch when there is a
change. This is used with increaseCountToPrefetch to make prefetch adaptive.
(WebCore::IDBServer::SQLiteIDBCursor::objectStoreRecordsChanged):
(WebCore::IDBServer::SQLiteIDBCursor::prefetchOneRecord):
(WebCore::IDBServer::SQLiteIDBCursor::increaseCountToPrefetch):
(WebCore::IDBServer::SQLiteIDBCursor::prefetch): Count to prefetch is decided by SQLiteCursor now.
(WebCore::IDBServer::SQLiteIDBCursor::internalFetchNextRecord):
(WebCore::IDBServer::SQLiteIDBCursor::currentValue const):

  • Modules/indexeddb/server/SQLiteIDBCursor.h:
  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::iterateCursor): Move call to prefetch cursor to SQLiteIDBBackingStore.
(WebCore::IDBServer::UniqueIDBDatabase::prefetchCursor): Deleted.

  • Modules/indexeddb/server/UniqueIDBDatabase.h:
  • Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:

(WebCore::IDBServer::UniqueIDBDatabaseTransaction::iterateCursor):

  • Modules/indexeddb/shared/IDBCursorRecord.h: Stop using pointer for IDBValue for easier encoding and decoding.

(WebCore::IDBCursorRecord::size const):
(WebCore::IDBCursorRecord::isolatedCopy const):

  • Modules/indexeddb/shared/IDBIterateCursorData.cpp:

(WebCore::IDBIterateCursorData::isolatedCopy const):

  • Modules/indexeddb/shared/IDBIterateCursorData.h: Add an option to let IDBServer know whether it should answer

the cursor request.
(WebCore::IDBIterateCursorData::encode const):
(WebCore::IDBIterateCursorData::decode):

  • WebCore.xcodeproj/project.pbxproj:
8:03 AM Changeset in webkit [257351] by Carlos Garcia Campos
  • 18 edits in releases/WebKitGTK/webkit-2.28

Merge r256619 - [Web Animations] Ensure CSS Transition and CSS Animation events are queued, sorted and dispatched by their timeline
https://bugs.webkit.org/show_bug.cgi?id=207364
<rdar://problem/59370413>

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

There are some progressions but also some "regressions". The progressions are real, showing the delivery of all animation events at the correct
time. However, the regressions are misleading. The fact that the "style change" tests would work was due to a design issue in the test which would
only wait one frame to detect whether a CSS Transition was started after a change made through the Web Animations API. These would work because
events were queued in the next frame, but delivered later due to the dedicated per-animation queue used, which meant the test was fooled into
thinking the CSS Transition did not start, as expected. Changing those test to use more than one frame to test for the lack of a CSS Transition
would have shown the FAIL results.

However, in order to not regress our WPT score, the issue of "style change" events will be addressed in a follow-up patch.

  • web-platform-tests/css/css-transitions/CSSTransition-startTime.tentative-expected.txt:
  • web-platform-tests/web-animations/interfaces/Animatable/animate-expected.txt:
  • web-platform-tests/web-animations/interfaces/Animation/style-change-events-expected.txt:
  • web-platform-tests/web-animations/interfaces/KeyframeEffect/style-change-events-expected.txt:
  • web-platform-tests/web-animations/timing-model/timelines/update-and-send-events-expected.txt:

Source/WebCore:

Until now, AnimationPlaybackEvent events, which are new events introduced by the Web Animations spec, were enqueued in a shared queue on the DocumentTimeline
and dispatched during the "update animations and send events" procedure. However, AnimationEvent and TransitionEvent events, dispatched by CSS Animations
and CSS Transitions, were dispatched via a dedicated per-animation queue, which meant typically that those events were dispathed one runloop after the
AnimationPlaybackEvent events.

We now remove the dedicated per-animation queue and enqueue all events in the shared DocumentTimeline queue for dispatch during the "update animations and send
events" procedure. To do this correctly, we need to do a couple of other things that ensure we don't regress tests.

First, we update the DocumentTimeline::shouldRunUpdateAnimationsAndSendEventsIgnoringSuspensionState() to account for whether there are pending animation events,
guaranteeing that an animation update is scheduled should there be any.

Second, when animation events are enqueued in DocumentTimeline::enqueueAnimationEvent() we schedule an animation update if needed, since we know we now
have pending events that will need to be delivered in an upcoming update. We also maintain a flag between the start of the "update animations and send events"
procedure and the moment when the pending animation events queue is cleared prior to dispatching events so that events enqueued in the meantime do not
prematurely schedule animation resolution. The need for a new animation resolution will be checked at the end of the procedure.

Finally, declarative animations used to have a special suclass of WebAnimation::needsTick() that would check whether they had any pending events, ensuring
they would not be removed prematurely. We now reset a flag to false as WebAnimation::tick() is called (as part of the "update animations and send events"
procedure) and set it to true in case an animation is enqueued. This flag is then used in needsTick() to guarantee the animation is not removed before
the DocumentTimeline has had a chance to dispatch the enqueued event.

Note also that, for clarity, the DocumentTimeline::unscheduleAnimationResolution() was renamed to DocumentTimeline::clearTickScheduleTimer() since it wouldn't
actually cancel a previous animation resolution schedule.

  • animation/CSSTransition.h: Fix a newly found build error due to the missing wtf/MonotonicTime.h header.
  • animation/DeclarativeAnimation.cpp: Remove all code related to the dedicated per-animation queue and instead call the new WebAnimation::enqueueAnimationEvent()

method to enqueue events on the DocumentTimeline.
(WebCore::DeclarativeAnimation::DeclarativeAnimation):
(WebCore::DeclarativeAnimation::tick):
(WebCore::DeclarativeAnimation::enqueueDOMEvent):

  • animation/DeclarativeAnimation.h:
  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::detachFromDocument): Ensure the pending events queue is cleared when the timeline is detached from a document, ensuring that there no
longer events that would cause a ref-cycle (DocumentTimeline -> AnimationPlaybackEvent -> WebAnimation -> DocumentTimeline).
(WebCore::DocumentTimeline::suspendAnimations):
(WebCore::DocumentTimeline::removeAnimation):
(WebCore::DocumentTimeline::scheduleAnimationResolution):
(WebCore::DocumentTimeline::clearTickScheduleTimer):
(WebCore::DocumentTimeline::shouldRunUpdateAnimationsAndSendEventsIgnoringSuspensionState const):
(WebCore::DocumentTimeline::updateCurrentTime):
(WebCore::DocumentTimeline::updateAnimationsAndSendEvents):
(WebCore::DocumentTimeline::internalUpdateAnimationsAndSendEvents):
(WebCore::DocumentTimeline::scheduleNextTick):
(WebCore::DocumentTimeline::animationAcceleratedRunningStateDidChange):
(WebCore::DocumentTimeline::enqueueAnimationEvent):

  • animation/DocumentTimeline.h:
  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::enqueueAnimationPlaybackEvent):
(WebCore::WebAnimation::enqueueAnimationEvent):
(WebCore::WebAnimation::needsTick const):
(WebCore::WebAnimation::tick):

  • animation/WebAnimation.h:

LayoutTests:

Fix a couple of tests that made some incorrect assumptions.

  • TestExpectations: imported/w3c/web-platform-tests/web-animations/timing-model/timelines/update-and-send-events.html is no longer flaky.
  • compositing/backing/animate-into-view.html: Because the "animationstart" event is now dispatched during the "update animations and send events" procedure, which happens

during page rendering _before_ rAF callbacks are serviced, we must remove the rAF callback used prior to adding the "animationstart" event listener or else we would never
get it and the test would time out.

  • webanimations/css-transition-in-flight-reversal-accelerated.html: We must wait for the initial transition to start and then two frames before reversing the transition,

to be certain that the animation did start. Indeed, the "transitionstart" event will be fired right before the next rAF callback is called, as the animation starts in that
very same frame, and so progress will be 0 and the transition wouldn't be reversable until the next frame when the animation has progress > 0.

8:03 AM Changeset in webkit [257350] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r256612 - [WPE] WPEQtView.h includes the uninstalled WPEQtViewBackend.h
https://bugs.webkit.org/show_bug.cgi?id=207765

Reviewed by Philippe Normand.

Do a forward declaration instead of including the header.

  • UIProcess/API/wpe/qt/WPEQtView.cpp:
  • UIProcess/API/wpe/qt/WPEQtView.h:
8:03 AM Changeset in webkit [257349] by Carlos Garcia Campos
  • 17 edits
    2 copies in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256610 - [Web Animations] Make all animation event types inherit from the same base class
https://bugs.webkit.org/show_bug.cgi?id=207629

Reviewed by Simon Fraser.

Currently we dispatch events CSS Transitions and CSS Animations events using a dedicated event queue on DeclarativeAnimation, while the events
added by the Web Animations specification (of type AnimationPlaybackEvent) are dispatched using a shared queue on the DocumentTimeline that is
processed during the "update animations and send events procedure". The Web Animations specification dictates that all events should be dispatched
during that procedure, which includes sorting of such events based on their timeline time and associated animation relative composite order.

In this patch, we prepare the work towards spec compliance for animation events dispatch by making all event types (AnimationPlaybackEvent,
TransitionEvent and AnimationEvent) inherit from a single AnimationEventBase interface. This will allow DocumentTimeline to enqueue, sort and
dispatch all such events with a single queue in a future patch.

Due to CSSAnimationController, we must make the "timeline time" and "animation" parameters optional. When we drop support for CSSAnimationController
we'll be able to enforce stronger requirements for these.

No new test since this should not introduce any behavior change.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/AnimationEventBase.cpp: Added.

(WebCore::AnimationEventBase::AnimationEventBase):

  • animation/AnimationEventBase.h: Added.

(WebCore::AnimationEventBase::create):
(WebCore::AnimationEventBase::isAnimationPlaybackEvent const):
(WebCore::AnimationEventBase::isAnimationEvent const):
(WebCore::AnimationEventBase::isTransitionEvent const):
(WebCore::AnimationEventBase::timelineTime const):
(WebCore::AnimationEventBase::animation const):

  • animation/AnimationPlaybackEvent.cpp:

(WebCore::AnimationPlaybackEvent::AnimationPlaybackEvent):
(WebCore::AnimationPlaybackEvent::bindingsTimelineTime const):

  • animation/AnimationPlaybackEvent.h:
  • animation/CSSAnimation.cpp:

(WebCore::CSSAnimation::createEvent):

  • animation/CSSAnimation.h:
  • animation/CSSTransition.cpp:

(WebCore::CSSTransition::createEvent):

  • animation/CSSTransition.h:
  • animation/DeclarativeAnimation.cpp:

(WebCore::DeclarativeAnimation::enqueueDOMEvent):

  • animation/DeclarativeAnimation.h:
  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::enqueueAnimationPlaybackEvent):

  • dom/AnimationEvent.cpp:

(WebCore::AnimationEvent::AnimationEvent):

  • dom/AnimationEvent.h:
  • dom/TransitionEvent.cpp:

(WebCore::TransitionEvent::TransitionEvent):

  • dom/TransitionEvent.h:
  • page/animation/CSSAnimationController.cpp:

(WebCore::CSSAnimationControllerPrivate::fireEventsAndUpdateStyle):

8:03 AM Changeset in webkit [257348] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r256578 - Protect WebSWServerConnection::scheduleJobInServer from bad scopeURL
https://bugs.webkit.org/show_bug.cgi?id=207722

Reviewed by Chris Dumez.

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::scheduleJobInServer):
In case of bad scope, fail the job early on.

  • WebProcess/Storage/WebSWClientConnection.cpp:

(WebKit::WebSWClientConnection::scheduleJobInServer):
Remove the RELEASE_ASSERT from now since we defend in Network process.
We will add it back in ServiceWorkerRegistration::getOrCreate as a follow-up.

8:03 AM Changeset in webkit [257347] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28/Source

Merge r256571 - REGRESSION (r255961): Default state for data URL handling is incorrect
https://bugs.webkit.org/show_bug.cgi?id=207719
<rdar://problem/59334011>

Reviewed by Chris Dumez.

The default selected in r255961 breaks too many WebKit framework users. Switch from opt-out to opt-in
while we work through compatibility issues.

Source/WebCore:

Tested by existing test cases.

  • page/Settings.yaml:

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):

8:03 AM Changeset in webkit [257346] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256569 - Add missing call to completionHandler
https://bugs.webkit.org/show_bug.cgi?id=207720
<rdar://problem/59436915>

Reviewed by Chris Dumez.

Bug 179641 (r225702) updated
SubresourceLoader::willSendRequestInternal with a return call without
first calling the completionHandler. Address this by adding the call
to the completionHandler.

No new tests -- it's not possible to control execution into the
affected code path.

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::willSendRequestInternal):

8:03 AM Changeset in webkit [257345] by Carlos Garcia Campos
  • 18 edits in releases/WebKitGTK/webkit-2.28/Source

Merge r256563 - Unreviewed, rolling out r254557.
https://bugs.webkit.org/show_bug.cgi?id=207725

The assert is correct, but unfortunately it will alwasy fail
since there is an existing bug in
HTMLTextFormControlElement::indexForPosition(). See bug

Reverted changeset:

"Enable the offset assertion in
HTMLTextFormControlElement::indexForPosition"
https://bugs.webkit.org/show_bug.cgi?id=205706
https://trac.webkit.org/changeset/254557

8:03 AM Changeset in webkit [257344] by Carlos Garcia Campos
  • 5 edits
    1 add in releases/WebKitGTK/webkit-2.28

Merge r256541 - [ESNext][BigInt] We don't support BigInt literal as PropertyName
https://bugs.webkit.org/show_bug.cgi?id=206888

Reviewed by Ross Kirsling.

JSTests:

  • stress/big-int-as-property-name.js: Added.

Source/JavaScriptCore:

According to spec (https://tc39.es/ecma262/#prod-PropertyName),
BigInt literals are valid property names. Given that, we should not
throw a SyntaxError when using BigInt literals on destructuring
pattern, method declaration, object literals, etc.
This patch is adding BigInt literal as a valid syntax to PropertyName.

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseDestructuringPattern):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseInstanceFieldInitializerSourceElements):
(JSC::Parser<LexerType>::parseProperty):
(JSC::Parser<LexerType>::parseGetterSetter):

  • parser/ParserArena.cpp:

(JSC::IdentifierArena::makeBigIntDecimalIdentifier):

  • parser/ParserArena.h:
8:02 AM Changeset in webkit [257343] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256514 - Non-unified build fixes mid February 2020 edition
https://bugs.webkit.org/show_bug.cgi?id=207693

Unreviewed build fix.

No new tests needed.

  • html/parser/HTMLPreloadScanner.cpp: Add missing include.
  • platform/wpe/ScrollbarThemeWPE.cpp: Ditto.
  • rendering/InlineTextBox.cpp: Ditto.
8:02 AM Changeset in webkit [257342] by Carlos Garcia Campos
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.28

Merge r256513 - REGRESSION (r255037): Zooming in and out on Quip in macOS Safari can cause the content to be offset to the side
https://bugs.webkit.org/show_bug.cgi?id=207674
rdar://problem/59404866

Reviewed by Antti Koivisto.

Source/WebCore:

Remove the early return in ScrollingStateScrollingNode::setRequestedScrollData(); comparing
with the last m_requestedScrollData is wrong, because requested scroll positions are not "state"
in the scrolling tree, they are requests to scroll. Ideally, they would be represented in some
different way in the scrolling tree.

Test: fast/scrolling/programmatic-scroll-to-zero-zero.html

  • page/scrolling/ScrollingStateScrollingNode.cpp:

(WebCore::ScrollingStateScrollingNode::setRequestedScrollData):

LayoutTests:

Test that does a programmatic scroll to 0,0, does a user scroll, then a second programmatic scroll to 0,0,
which is expected to work.

  • fast/scrolling/programmatic-scroll-to-zero-zero-expected.html: Added.
  • fast/scrolling/programmatic-scroll-to-zero-zero.html: Added.
  • platform/ios/TestExpectations: Skip the new test on iOS (it relies on eventSender) and sort the grouping.
8:02 AM Changeset in webkit [257341] by Carlos Garcia Campos
  • 54 edits
    4 deletes in releases/WebKitGTK/webkit-2.28

Merge r256512 - Unreviewed, rolling out r255158, 255405 and r255486

Caused test flakiness and PLT regression.

Patch by Said Abou-Hallawa <Said Abou-Hallawa> on 2020-02-13

Source/WebCore:

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::updateThrottlingState):
(WebCore::DocumentTimeline::animationInterval const):

  • animation/DocumentTimeline.h:
  • dom/Document.cpp:

(WebCore::Document::requestAnimationFrame):
(WebCore::Document::updateLastHandledUserGestureTimestamp):

  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::ScriptedAnimationController):
(WebCore::throttlingReasonToString):
(WebCore::throttlingReasonsToString):
(WebCore::ScriptedAnimationController::addThrottlingReason):
(WebCore::ScriptedAnimationController::removeThrottlingReason):
(WebCore::ScriptedAnimationController::isThrottled const):
(WebCore::ScriptedAnimationController::registerCallback):
(WebCore::ScriptedAnimationController::cancelCallback):
(WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks):
(WebCore::ScriptedAnimationController::interval const):
(WebCore::ScriptedAnimationController::page const):
(WebCore::ScriptedAnimationController::scheduleAnimation):
(WebCore::ScriptedAnimationController::animationTimerFired):
(WebCore::ScriptedAnimationController::preferredScriptedAnimationInterval const): Deleted.
(WebCore::ScriptedAnimationController::isThrottledRelativeToPage const): Deleted.
(WebCore::ScriptedAnimationController::shouldRescheduleRequestAnimationFrame const): Deleted.

  • dom/ScriptedAnimationController.h:

(WebCore::ScriptedAnimationController::addThrottlingReason): Deleted.
(WebCore::ScriptedAnimationController::removeThrottlingReason): Deleted.

  • page/FrameView.cpp:

(WebCore::FrameView::updateScriptedAnimationsAndTimersThrottlingState):

  • page/Page.cpp:

(WebCore::m_deviceOrientationUpdateProvider):
(WebCore::Page::isLowPowerModeEnabled const):
(WebCore::Page::setLowPowerModeEnabledOverrideForTesting):
(WebCore::updateScriptedAnimationsThrottlingReason):
(WebCore::Page::setIsVisuallyIdleInternal):
(WebCore::Page::handleLowModePowerChange):
(WebCore::Page::renderingUpdateThrottlingEnabled const): Deleted.
(WebCore::Page::renderingUpdateThrottlingEnabledChanged): Deleted.
(WebCore::Page::isRenderingUpdateThrottled const): Deleted.
(WebCore::Page::preferredRenderingUpdateInterval const): Deleted.

  • page/Page.h:

(WebCore::Page::isLowPowerModeEnabled const): Deleted.
(WebCore::Page::canUpdateThrottlingReason const): Deleted.

  • page/RenderingUpdateScheduler.cpp:

(WebCore::RenderingUpdateScheduler::scheduleTimedRenderingUpdate):
(WebCore::RenderingUpdateScheduler::startTimer):
(WebCore::RenderingUpdateScheduler::adjustFramesPerSecond): Deleted.
(WebCore::RenderingUpdateScheduler::adjustRenderingUpdateFrequency): Deleted.

  • page/RenderingUpdateScheduler.h:
  • page/Settings.yaml:
  • page/SettingsBase.cpp:

(WebCore::SettingsBase::renderingUpdateThrottlingEnabledChanged): Deleted.

  • page/SettingsBase.h:
  • platform/graphics/AnimationFrameRate.h: Removed.
  • platform/graphics/DisplayRefreshMonitor.h:

(WebCore::DisplayRefreshMonitor::setPreferredFramesPerSecond): Deleted.

  • platform/graphics/DisplayRefreshMonitorManager.cpp:

(WebCore::DisplayRefreshMonitorManager::createMonitorForClient):
(WebCore::DisplayRefreshMonitorManager::registerClient):
(WebCore::DisplayRefreshMonitorManager::scheduleAnimation):
(WebCore::DisplayRefreshMonitorManager::windowScreenDidChange):
(WebCore::DisplayRefreshMonitorManager::monitorForClient): Deleted.
(WebCore::DisplayRefreshMonitorManager::setPreferredFramesPerSecond): Deleted.

  • platform/graphics/DisplayRefreshMonitorManager.h:

(WebCore::DisplayRefreshMonitorManager::DisplayRefreshMonitorManager):

  • platform/graphics/GraphicsLayerUpdater.cpp:

(WebCore::GraphicsLayerUpdater::GraphicsLayerUpdater):

  • platform/graphics/ios/DisplayRefreshMonitorIOS.mm:

(-[WebDisplayLinkHandler setPreferredFramesPerSecond:]): Deleted.

Source/WebKit:

  • Shared/WebPreferences.yaml:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetRenderingUpdateThrottlingEnabled): Deleted.
(WKPreferencesGetRenderingUpdateThrottlingEnabled): Deleted.

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.messages.in:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:

(-[WKOneShotDisplayLinkHandler setPreferredFramesPerSecond:]): Deleted.
(WebKit::RemoteLayerTreeDrawingAreaProxy::setPreferredFramesPerSecond): Deleted.

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm:

(WebKit::RemoteLayerTreeDisplayRefreshMonitor::setPreferredFramesPerSecond): Deleted.

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::setPreferredFramesPerSecond): Deleted.

Source/WebKitLegacy/mac:

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences renderingUpdateThrottlingEnabled]): Deleted.
(-[WebPreferences setRenderingUpdateThrottlingEnabled:]): Deleted.

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKitLegacy/win:

  • Interfaces/IWebPreferencesPrivate.idl:
  • WebPreferenceKeysPrivate.h:
  • WebPreferences.cpp:

(WebPreferences::initializeDefaultSettings):
(WebPreferences::renderingUpdateThrottlingEnabled): Deleted.
(WebPreferences::setRenderingUpdateThrottlingEnabled): Deleted.

  • WebPreferences.h:
  • WebView.cpp:

(WebView::notifyPreferencesChanged):

Tools:

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(enableExperimentalFeatures):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

LayoutTests:

  • fast/animation/css-animation-throttling-lowPowerMode.html:
  • fast/animation/request-animation-frame-throttle-subframe.html:
  • fast/animation/request-animation-frame-throttling-detached-iframe.html:
  • fast/animation/request-animation-frame-throttling-lowPowerMode-expected.txt:
  • fast/animation/request-animation-frame-throttling-lowPowerMode.html:
  • fast/animation/request-animation-frame-throttling-outside-viewport-expected.txt: Removed.
  • fast/animation/request-animation-frame-throttling-outside-viewport.html: Removed.
  • fast/animation/resources/frame-with-animation-2.html: Removed.
  • http/tests/frame-throttling/raf-throttle-in-cross-origin-subframe.html:
  • platform/mac-wk2/TestExpectations:
8:02 AM Changeset in webkit [257340] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.28/Source

Merge r256498 - [JSC] Compact JITCodeMap by storing BytecodeIndex and CodeLocation separately
https://bugs.webkit.org/show_bug.cgi?id=207673

Reviewed by Mark Lam.

Source/JavaScriptCore:

While BytecodeIndex is 4 bytes, CodeLocation is 8 bytes. So the tuple of them "JITCodeMap::Entry"
becomes 16 bytes because it adds 4 bytes padding. We should store BytecodeIndex and CodeLocation separately
to avoid this padding.

This patch introduces JITCodeMapBuilder. We use this to build JITCodeMap data structure as a immutable final result.

  • jit/JIT.cpp:

(JSC::JIT::link):

  • jit/JITCodeMap.h:

(JSC::JITCodeMap::JITCodeMap):
(JSC::JITCodeMap::find const):
(JSC::JITCodeMap::operator bool const):
(JSC::JITCodeMap::codeLocations const):
(JSC::JITCodeMap::indexes const):
(JSC::JITCodeMapBuilder::append):
(JSC::JITCodeMapBuilder::finalize):
(JSC::JITCodeMap::Entry::Entry): Deleted.
(JSC::JITCodeMap::Entry::bytecodeIndex const): Deleted.
(JSC::JITCodeMap::Entry::codeLocation): Deleted.
(JSC::JITCodeMap::append): Deleted.
(JSC::JITCodeMap::finish): Deleted.

Source/WTF:

  • wtf/MallocPtr.h:
8:02 AM Changeset in webkit [257339] by Carlos Garcia Campos
  • 11 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256494 - CSSValuePool's constant CSS values should not be allocated dynamically (and same for Vectors)
https://bugs.webkit.org/show_bug.cgi?id=207666

Reviewed by Mark Lam.

r252785 changes contents (CSSValues and Vectors) of CSSValuePool from static ones to
dynamically allocated ones. This was done since we would like to use static CSSValues
even in the other threads (workers etc.) for OffscreenCanvas feature.

But this causes memory regression in Membuster since we allocates many CSSValues and
large Vectors, and they are kept persistently.

This patch removes dynamic allocation part of r252785 to recover memory regression.
The key of this patch is introducing Static CSSValue feature. When incrementing / decrementing
m_refCount of CSSValue, we add / subtract by 0x2. And we put 0x1 as a static-flag. So, even if
this CSSValue is used by multiple threads, we never see that CSSValue gets 0 m_refCount if
it is marked as static (having 0x1). This is the same design to our static StringImpl.

No behavior change.

  • css/CSSInheritedValue.h:
  • css/CSSInitialValue.h:
  • css/CSSPrimitiveValue.cpp:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):

  • css/CSSPrimitiveValue.h:
  • css/CSSRevertValue.h:
  • css/CSSUnsetValue.h:
  • css/CSSValue.cpp:
  • css/CSSValue.h:

(WebCore::CSSValue::ref const):
(WebCore::CSSValue::hasOneRef const):
(WebCore::CSSValue::refCount const):
(WebCore::CSSValue::hasAtLeastOneRef const):
(WebCore::CSSValue::deref):
(WebCore::CSSValue::makeStatic):

  • css/CSSValuePool.cpp:

(WebCore::StaticCSSValuePool::StaticCSSValuePool):
(WebCore::StaticCSSValuePool::init):
(WebCore::CSSValuePool::CSSValuePool):
(WebCore::CSSValuePool::singleton):
(WebCore::CSSValuePool::createIdentifierValue):
(WebCore::CSSValuePool::createColorValue):
(WebCore::CSSValuePool::createValue):

  • css/CSSValuePool.h:

(WebCore::CSSValuePool::createInheritedValue):
(WebCore::CSSValuePool::createImplicitInitialValue):
(WebCore::CSSValuePool::createExplicitInitialValue):
(WebCore::CSSValuePool::createUnsetValue):
(WebCore::CSSValuePool::createRevertValue):

8:02 AM Changeset in webkit [257338] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28/Source/ThirdParty/ANGLE

Merge r256491 - Multiple GCC 10 build failures in ANGLE
https://bugs.webkit.org/show_bug.cgi?id=207365

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-02-12
Reviewed by Carlos Alberto Lopez Perez.

  • changes.diff: Updated.
  • include/platform/Platform.h: Add missing #include to get size_t.
  • src/common/PackedEnums.h: Remove problematic const_casts.
8:02 AM Changeset in webkit [257337] by Carlos Garcia Campos
  • 16 edits in releases/WebKitGTK/webkit-2.28/Source

Merge r256482 - Shrink CachedResource
https://bugs.webkit.org/show_bug.cgi?id=207618

Reviewed by Mark Lam.

Source/WebCore:

This patch shrinks sizeof(CachedResource) by 80 bytes by aggressively using bit-fields and Markable<>.
For each enum class, we define bitsOfXXX value, which indicates # of bits to represent it. And using
this value for bit-field's width.

No behavior change.

  • loader/FetchOptions.h:

(WebCore::FetchOptions::encode const):

  • loader/ResourceLoaderOptions.h:

(WebCore::ResourceLoaderOptions::ResourceLoaderOptions):
(WebCore::ResourceLoaderOptions::loadedFromOpaqueSource):

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::CachedImage):
(WebCore::CachedImage::shouldDeferUpdateImageData const):
(WebCore::CachedImage::didUpdateImageData):

  • loader/cache/CachedImage.h:
  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::CachedResource):
(WebCore::CachedResource::load):
(WebCore::CachedResource::finish):

  • loader/cache/CachedResource.h:

(WebCore::CachedResource::setStatus):

  • page/csp/ContentSecurityPolicyResponseHeaders.h:

(WebCore::ContentSecurityPolicyResponseHeaders::MarkableTraits::isEmptyValue):
(WebCore::ContentSecurityPolicyResponseHeaders::MarkableTraits::emptyValue):
(WebCore::ContentSecurityPolicyResponseHeaders::ContentSecurityPolicyResponseHeaders):

  • platform/network/NetworkLoadMetrics.h:

(WebCore::NetworkLoadMetrics::isolatedCopy const):
(WebCore::NetworkLoadMetrics::clearNonTimingData):
(WebCore::NetworkLoadMetrics::operator== const):
(WebCore::NetworkLoadMetrics::encode const):
(WebCore::NetworkLoadMetrics::decode):

  • platform/network/ResourceLoadPriority.h:
  • platform/network/ResourceRequestBase.h:

(WebCore::ResourceRequestBase::ResourceRequestBase):

  • platform/network/ResourceResponseBase.h:
  • platform/network/StoredCredentialsPolicy.h:

Source/WTF:

  • wtf/Markable.h:

(WTF::Markable::asOptional const): Add helper method to get Optional easily from Markable.

  • wtf/ObjectIdentifier.h:

(WTF::ObjectIdentifier::MarkableTraits::isEmptyValue):
(WTF::ObjectIdentifier::MarkableTraits::emptyValue):
(WTF::ObjectIdentifier::ObjectIdentifier): Add MarkableTraits for ObjectIdentifier.

8:01 AM Changeset in webkit [257336] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256470 - ServiceWorkerContainer::jobResolvedWithRegistration scopeExit should capture all lambda parameters by value
https://bugs.webkit.org/show_bug.cgi?id=207657

Reviewed by Chris Dumez.

shouldNotifyWhenResolved is captured by reference in the notifyIfExitEarly ScopeExit lambda.
The ScopeExit is not always called synchronously so it is unsafe to capture values by reference here.

  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):

8:01 AM Changeset in webkit [257335] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28/Source/JavaScriptCore

Merge r256468 - [JSC] Compact StructureTransitionTable
https://bugs.webkit.org/show_bug.cgi?id=207616

Reviewed by Mark Lam.

Some of StructureTransitionTable are shown as very large HashMap and we can compact it by encoding key.
We leverage 48bit pointers and 8byte alignment of UniquedStringImpl* to encode other parameters into it.

  • runtime/Structure.cpp:

(JSC::StructureTransitionTable::contains const):
(JSC::StructureTransitionTable::get const):
(JSC::StructureTransitionTable::add):

  • runtime/Structure.h:
  • runtime/StructureTransitionTable.h:

(JSC::StructureTransitionTable::Hash::Key::Key):
(JSC::StructureTransitionTable::Hash::Key::isHashTableDeletedValue const):
(JSC::StructureTransitionTable::Hash::Key::impl const):
(JSC::StructureTransitionTable::Hash::Key::isAddition const):
(JSC::StructureTransitionTable::Hash::Key::attributes const):
(JSC::StructureTransitionTable::Hash::Key::operator==):
(JSC::StructureTransitionTable::Hash::Key::operator!=):
(JSC::StructureTransitionTable::Hash::hash):
(JSC::StructureTransitionTable::Hash::equal):

8:01 AM Changeset in webkit [257334] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/JavaScriptCore

Merge r256467 - [JSC] Make RegExpCache small
https://bugs.webkit.org/show_bug.cgi?id=207619

Reviewed by Mark Lam.

We can compact RegExpKey by using PackedRefPtr, so that we can shrink memory consumption of RegExpCache.

  • runtime/RegExpKey.h:
8:01 AM Changeset in webkit [257333] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256447 - RELEASE_ASSERT() under WebSWClientConnection::didResolveRegistrationPromise()
https://bugs.webkit.org/show_bug.cgi?id=207637
<rdar://problem/59093490>

Reviewed by Youenn Fablet.

We were capturing data by reference in the notifyIfExitEarly ScopeExit lambda and then capturing it
in the task posted to the event loop, which was unsafe.

  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):

8:01 AM Changeset in webkit [257332] by Carlos Garcia Campos
  • 2 edits
    24 deletes in releases/WebKitGTK/webkit-2.28/Source/ThirdParty/ANGLE

Merge r256443 - ANGLE has unused bison and glmark2 code
https://bugs.webkit.org/show_bug.cgi?id=207597
rdar://59361460

Reviewed by Maciej Stachowiak.

Remove some unused files.

  • changes.diff:
  • src/tests/perf_tests/glmark2Benchmark.cpp: Removed.
  • third_party/glmark2/BUILD.gn: Removed.
  • third_party/glmark2/README.angle: Removed.
  • tools/flex-bison/README.md: Removed.
  • tools/flex-bison/linux/bison.sha1: Removed.
  • tools/flex-bison/linux/flex.sha1: Removed.
  • tools/flex-bison/third_party/.gitattributes: Removed.
  • tools/flex-bison/third_party/m4sugar/LICENSE: Removed.
  • tools/flex-bison/third_party/m4sugar/README.chromium: Removed.
  • tools/flex-bison/third_party/m4sugar/foreach.m4: Removed.
  • tools/flex-bison/third_party/m4sugar/m4sugar.m4: Removed.
  • tools/flex-bison/third_party/skeletons/LICENSE: Removed.
  • tools/flex-bison/third_party/skeletons/README.chromium: Removed.
  • tools/flex-bison/third_party/skeletons/bison.m4: Removed.
  • tools/flex-bison/third_party/skeletons/c-like.m4: Removed.
  • tools/flex-bison/third_party/skeletons/c.m4: Removed.
  • tools/flex-bison/third_party/skeletons/yacc.c: Removed.
  • tools/flex-bison/update_flex_bison_binaries.py: Removed.
  • tools/flex-bison/windows/bison.exe.sha1: Removed.
  • tools/flex-bison/windows/flex.exe.sha1: Removed.
  • tools/flex-bison/windows/m4.exe.sha1: Removed.
  • tools/flex-bison/windows/msys-2.0.dll.sha1: Removed.
  • tools/flex-bison/windows/msys-iconv-2.dll.sha1: Removed.
  • tools/flex-bison/windows/msys-intl-8.dll.sha1: Removed.
8:01 AM Changeset in webkit [257331] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28

Merge r256432 - WebSWServerConnection::registerServiceWorkerClient is not sending IPC message to UIProcess when it should
https://bugs.webkit.org/show_bug.cgi?id=207537

Reviewed by Chris Dumez.

Source/WebKit:

Covered by added API test.

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::registerServiceWorkerClient):
Fix use after move so that we can get the context connection and send the IPC message to UIProcess as expected.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
8:01 AM Changeset in webkit [257330] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebDriver

Merge r256430 - WebDriver: return invalidSessionID exception if the WebProcess doesn't respond (crashes)
https://bugs.webkit.org/show_bug.cgi?id=207565

Reviewed by Adrian Perez de Castro.

Report InvalidSessionID if the session connection its not connected.

  • WebDriverService.cpp:

(WebDriver::WebDriverService::findSessionOrCompleteWithError):

8:01 AM Changeset in webkit [257329] by Carlos Garcia Campos
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.28

Merge r256427 - Fix crash due to uninitialized currentStyle in CSSTransition
https://bugs.webkit.org/show_bug.cgi?id=205959
<rdar://57073673>

Patch by Sunny He <sunny_he@apple.com> on 2020-02-12
Reviewed by Antoine Quint.

Source/WebCore:

Test: legacy-animation-engine/transitions/svg-bad-scale-crash.html

  • animation/CSSTransition.cpp:

(WebCore::CSSTransition::create):
(WebCore::CSSTransition::CSSTransition):

  • animation/CSSTransition.h:

LayoutTests:

Fix crash due to uninitialized currentStyle in CSSTransition

  • legacy-animation-engine/transitions/svg-bad-scale-crash-expected.txt: Added.
  • legacy-animation-engine/transitions/svg-bad-scale-crash.html: Added.
8:01 AM Changeset in webkit [257328] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256423 - Compress ImmutableStyleProperties by using PackedPtr
https://bugs.webkit.org/show_bug.cgi?id=207604

Reviewed by Mark Lam.

ImmutableStyleProperties is kept so long and consumes enough memory.
We already attempted to compact it by storing CSSProperty's members separately.
But we can compact further by using PackedPtr. This patch makes,

  1. Use PackedPtr for CSSValue* in ImmutableStyleProperties so that we can cut some bytes
  2. Reorder CSSValue* and StylePropertyMetadata arrays since StylePropertyMetadata requires alignment while PackedPtr<CSSValue> is not.

No behavior change.

  • css/StyleProperties.cpp:

(WebCore::sizeForImmutableStylePropertiesWithPropertyCount):
(WebCore::ImmutableStyleProperties::ImmutableStyleProperties):
(WebCore::ImmutableStyleProperties::~ImmutableStyleProperties):
(WebCore::ImmutableStyleProperties::findCustomPropertyIndex const):

  • css/StyleProperties.h:

(WebCore::ImmutableStyleProperties::valueArray const):
(WebCore::ImmutableStyleProperties::metadataArray const):
(WebCore::ImmutableStyleProperties::propertyAt const):

8:01 AM Changeset in webkit [257327] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.28

Merge r256414 - IndexedDB: iteration of cursors skip records if deleted
https://bugs.webkit.org/show_bug.cgi?id=207437

Reviewed by Brady Eidson.

Source/WebCore:

When changes are made to records, cursors will dump cached records and set new key range for iteration.
The new range did not include key of current cursor record, which is wrong because two index records can have
the same key but different values.
r237590 tried fixing this issue by caching all the following records which have the same key as current record.
That is not quite right as there could be changes on the cached records, and the cached records were not
updated.

To correctly fix the issue, set the new key range to include key of current cursor record and exclude values
visited before. To not regress preformance, we complete this by making an extra statment and changing
IndexRecordsIndex index of table IndexRecords to cover value column.

Added test case in: storage/indexeddb/cursor-update-while-iterating.html
Index upgrade covered by existing API test: IndexedDB.IDBObjectStoreInfoUpgradeToV2

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidIndexRecordsIndex):

  • Modules/indexeddb/server/SQLiteIDBCursor.cpp:

(WebCore::IDBServer::buildPreIndexStatement):
(WebCore::IDBServer::SQLiteIDBCursor::objectStoreRecordsChanged):
(WebCore::IDBServer::SQLiteIDBCursor::resetAndRebindPreIndexStatementIfNecessary):
(WebCore::IDBServer::SQLiteIDBCursor::fetch):
(WebCore::IDBServer::SQLiteIDBCursor::fetchNextRecord):
(WebCore::IDBServer::SQLiteIDBCursor::internalFetchNextRecord):

  • Modules/indexeddb/server/SQLiteIDBCursor.h:

(WebCore::IDBServer::SQLiteIDBCursor::isDirectionNext const):

LayoutTests:

  • storage/indexeddb/cursor-update-while-iterating-expected.txt:
  • storage/indexeddb/resources/cursor-update-while-iterating.js:

(populateObjectStore):
(onOpenSuccess.request.onsuccess):
(onOpenSuccess):
(prepareDatabase): Deleted.

8:01 AM Changeset in webkit [257326] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r256396 - Unreviewed, revert r255662 as it seems to cause blank views in SVC.
https://bugs.webkit.org/show_bug.cgi?id=207144
<rdar://problem/59334011>

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
8:00 AM Changeset in webkit [257325] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28

Merge r256395 - Bug 207424: Crash in WebCore::ParsedContentType::parseContentType when parsing invalid MIME type
<https://webkit.org/b/207424>
<rdar://problem/59250384>

Patch by Rob Buis <rbuis@igalia.com> and David Kilzer <ddkilzer@apple.com> on 2020-02-11
Reviewed by Rob Buis.

Source/WebCore:

Return StringView directly rather than wrapping
it in Optional, since StringView's can be null tested.

Tests: TestWebKitAPI.ParsedContentType

  • platform/network/ParsedContentType.cpp:

(WebCore::parseToken):
(WebCore::parseQuotedString):
(WebCore::ParsedContentType::parseContentType): Don't set type
parameter if parameterName is null string. Remove unneeded
parameterName variable; use keyRange.toString() instead.

Tools:

  • TestWebKitAPI/Tests/WebCore/ParsedContentType.cpp:

(TestWebKitAPI::TEST): Add more tests.

8:00 AM Changeset in webkit [257324] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.28/LayoutTests

Merge r256537 - REGRESSION: (256381) [ macOS ] http/tests/workers/service/serviceworkerclients-claim.https.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207653
<rdar://problem/59396225>

Reviewed by Chris Dumez.

console log message output was flaky.
Make sure to end the fetch and post a message so that the console log message will appear in the expected.txt reliably.

  • http/tests/workers/service/serviceworkerclients-claim.https-expected.txt:
  • http/tests/workers/service/serviceworkerclients-claim.https.html:
8:00 AM Changeset in webkit [257323] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.28

Merge r256381 - Parent service worker controller should be used for child iframe as per https://w3c.github.io/ServiceWorker/#control-and-use-window-client
https://bugs.webkit.org/show_bug.cgi?id=207506

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/service-worker/local-url-inherit-controller.https-expected.txt:

Source/WebCore:

Instead of checking document URL protocol, implement the rules as per spec, in particular:

  • If http/https, do not reuse controller
  • If iframe has a unique origin, do not reuse controller
  • If iframe does not have same origin as parent, do not reuse controller.

Covered by rebased test.

  • loader/DocumentLoader.cpp:

(WebCore::isInheritingControllerFromParent):
(WebCore::DocumentLoader::commitData):
(WebCore::isLocalURL): Deleted.

LayoutTests:

  • http/tests/workers/service/serviceworkerclients-claim.https-expected.txt:

Rebased test since now the frame is doing a fetch that is no longer intercepted by the service worker,
and is thus failing due to CORS.

  • http/tests/workers/service/serviceworkerclients-claim.https.html:
8:00 AM Changeset in webkit [257322] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebInspectorUI

Merge r256374 - Web Inspector RTL: Elements closing tag is reversed
https://bugs.webkit.org/show_bug.cgi?id=207214

Reviewed by Timothy Hatcher.

Wrap text nodes in unicode-bidi: isolate-override. From MDN:

isolate-override:

This keyword applies the isolation behavior of the isolate
keyword to the surrounding content and the override behavior
of the bidi-override keyword to the inner content.

  • UserInterface/Views/DOMTreeOutline.css:

(.tree-outline.dom li > span > .html-text-node):

8:00 AM Changeset in webkit [257321] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256301 - Unreviewed. Fix WPE build after r256298

It started to fail in r256298 because of unified builds, but the issue was introduced in r256013.

  • platform/network/soup/ResourceRequestSoup.cpp: Add missing header include.
8:00 AM Changeset in webkit [257320] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256228 - [iOS] REGRESSION (r255592): The simulated mouse event dispatch quirk should not be on by default
https://bugs.webkit.org/show_bug.cgi?id=207513
<rdar://problem/59326119>

Reviewed by Tim Horton.

Turn shouldDispatchSimulatedMouseEvents back off by default (r255592 enabled it by default on all web pages).

  • page/Quirks.cpp:

(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):

8:00 AM Changeset in webkit [257319] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256223 - [WebCore] Shrink Vectors passed to SharedBuffer
https://bugs.webkit.org/show_bug.cgi?id=207503

Reviewed by Yusuke Suzuki.

Once SharedBuffer::DataSegment is created, the content won't change in its life cycle. Shrink the passed vector
before assigning to member variable to save space.

With the quick research, when displaying Apple's website, 1~3% RSS usage reduction on PlayStation port.

No new tests because there's no behavior change.

  • platform/SharedBuffer.h:
8:00 AM Changeset in webkit [257318] by Carlos Garcia Campos
  • 8 edits in releases/WebKitGTK/webkit-2.28

Merge r256207 - Don't update selection when calling setSelectionRange on a disconnected input element
https://bugs.webkit.org/show_bug.cgi?id=207357

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Rebaselined the test that progressed a little. The test now passes offset checks but still fails direction check.

  • web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea-expected.txt:

Source/WebCore:

Don't update FrameSelection when the text form control element is disconnected from document.

  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::setSelectionRange):

LayoutTests:

Rebaselined the test that has progressed with this change.

  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt:
  • platform/mac/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt:
8:00 AM Changeset in webkit [257317] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WTF

Merge r256203 - Unreviewed, speculative build fix on watchOS simulator
https://bugs.webkit.org/show_bug.cgi?id=207183

  • wtf/HashTable.h:

(WTF::HashTableCapacityForSize::capacityForSize):

8:00 AM Changeset in webkit [257316] by Carlos Garcia Campos
  • 3 edits
    1 add in releases/WebKitGTK/webkit-2.28

Merge r256202 - Placate exception check validator in GenericArguments<Type>::put().
https://bugs.webkit.org/show_bug.cgi?id=207485
<rdar://problem/59302535>

Reviewed by Robin Morisset.

JSTests:

  • stress/placate-exception-check-validator-in-GenericArguments-put.js: Added.

Source/JavaScriptCore:

  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::put):

8:00 AM Changeset in webkit [257315] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28

Merge r256200 - [CMake] Prepend -Wno-noexcept-type only to global CXX flags
https://bugs.webkit.org/show_bug.cgi?id=207468

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-02-10
Reviewed by Adrian Perez de Castro.

-Wno-noexcept-type is a C++-specific flag that should not be passed to the C compiler. This
causes a warning spam in GCC 10.

  • Source/cmake/WebKitCompilerFlags.cmake:
8:00 AM Changeset in webkit [257314] by Carlos Garcia Campos
  • 3 edits
    1 add in releases/WebKitGTK/webkit-2.28

Merge r256198 - Missing exception check in GenericArguments<Type>::deletePropertyByIndex().
https://bugs.webkit.org/show_bug.cgi?id=207483
<rdar://problem/59302616>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/missing-exception-check-in-GenericArguments-deletePropertyByIndex.js: Added.

Source/JavaScriptCore:

  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::deletePropertyByIndex):

7:59 AM Changeset in webkit [257313] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WTF

Merge r256194 - Unreviewed, fix build failure on watchOS simulator
https://bugs.webkit.org/show_bug.cgi?id=207183

  • wtf/HashTable.h:

(WTF::HashTableCapacityForSize::capacityForSize):

7:59 AM Changeset in webkit [257312] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.28

Merge r256192 - Unreachable code hit in WebCore::Shape::createShape
https://bugs.webkit.org/show_bug.cgi?id=207399

Reviewed by Darin Adler.

Source/WebCore:

CSS parser should not consume the 'shape-outside' property with type 'path'
since it has not been implemented yet. This will prevent an assertion in
the debug build and null dref in the release build.

Test: css3/shapes/shape-outside-path-no-crash.html

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeBasicShape):
(WebCore::consumeShapeOutside):

LayoutTests:

  • css3/shapes/shape-outside-path-no-crash-expected.txt: Added.
  • css3/shapes/shape-outside-path-no-crash.html: Added.
7:59 AM Changeset in webkit [257311] by Carlos Garcia Campos
  • 29 edits
    4 copies
    6 adds in releases/WebKitGTK/webkit-2.28

Merge r256191 - Disallow setting base URL to a data or JavaScript URL
https://bugs.webkit.org/show_bug.cgi?id=207136

Source/WebCore:

Reviewed by Brent Fulgham.

Inspired by <https://bugs.chromium.org/p/chromium/issues/detail?id=679318>.

Block setting the base URL to a data URL or JavaScript URL as such usage is questionable.
This makes WebKit match the behavior of Chrome and Firefox and is in the spirit of the
discussion in <https://github.com/whatwg/html/issues/2249>.

On Mac and iOS, this restriction is applied only to apps linked against a future SDK to
avoid breaking shipped apps.

For all other ports, this restriction is enabled by default.

Tests: fast/url/relative2.html

fast/url/segments-from-data-url2.html
http/tests/security/allowed-base-url-data-url-via-setting.html
http/tests/security/denied-base-url-data-url.html
http/tests/security/denied-base-url-javascript-url.html

  • dom/Document.cpp:

(WebCore::Document::processBaseElement): Condition updating the parsed
base URL on whether is has an allowed scheme, if restrictions are enabled. Otherwise,
do what we do now. If the scheme is disallowed then log a message to the console to
explain this to web developers.

  • html/parser/HTMLPreloadScanner.cpp:

(WebCore::TokenPreloadScanner::scan): Pass whether to apply restrictons to the base URL
to updatePredictedBaseURL(). This depends on whether the setting is enabled or not.
(WebCore::TokenPreloadScanner::updatePredictedBaseURL): Modifed to take a boolean as to
whether to apply restrictions. If restrictions are not to be applied do what we do now.
Otherwise, only do what we do now if the scheme for the predicated base URL is allowed.

  • html/parser/HTMLPreloadScanner.h:
  • page/SecurityPolicy.cpp:

(WebCore::SecurityPolicy::isBaseURLSchemeAllowed): Added.

  • page/SecurityPolicy.h:
  • page/Settings.yaml: Add a setting to toggle restrictions on the base URL scheme.

Source/WebKit:

Reviewed by Brent Fulgham.

Apply base URL restrictions to apps linked to a future WebKit to avoid breaking existing apps.

  • Shared/WebPreferences.yaml:
  • UIProcess/API/Cocoa/WKWebView.mm:

(shouldRestrictBaseURLSchemes): Added.
(-[WKWebView _setupPageConfiguration:]): Update settings.

  • UIProcess/Cocoa/VersionChecks.h:

Source/WebKitLegacy/mac:

Reviewed by Brent Fulgham.

Apply base URL restrictions to apps linked to a future WebKit to avoid breaking existing apps.

  • Misc/WebKitVersionChecks.h:
  • WebView/WebView.mm:

(shouldRestrictBaseURLSchemes): Added.
(-[WebView _commonInitializationWithFrameName:groupName:]): Update settings.

Source/WTF:

Reviewed by Brent Fulgham.

Add some more macro definitions.

  • wtf/spi/darwin/dyldSPI.h:

LayoutTests:

RReviewed by Brent Fulgham.

Add some tests. Update others to toggle the setting to apply or unapply the new behavior.

The test denied-base-url-javascript-url.html is derived from the test base-url-javascript.html,
included in <https://chromium.googlesource.com/chromium/src.git/+/c133efa0b915430701930b76a7cfe35608b9a403>.

  • fast/url/relative-expected.txt:
  • fast/url/relative.html:
  • fast/url/relative2-expected.txt: Copied from LayoutTests/fast/url/relative-expected.txt.
  • fast/url/relative2.html: Copied from LayoutTests/fast/url/relative.html.
  • fast/url/resources/utilities.js:

(setShouldEllipsizeFileURLPaths): Added. Toggles ellipsizing the path portion of a file URL to simplify matching.
Otherwise, file URLs could be machine-specific.
(canonicalizedPathname): Added.
(segments): Modified to optionally call canonicalizedPathname.
(canonicalize): Ditto.

  • fast/url/segments-from-data-url-expected.txt:
  • fast/url/segments-from-data-url.html:
  • fast/url/segments-from-data-url2-expected.txt: Copied from LayoutTests/fast/url/segments-from-data-url-expected.txt.
  • fast/url/segments-from-data-url2.html: Copied from LayoutTests/fast/url/segments-from-data-url.html.
  • fetch/fetch-url-serialization-expected.txt:
  • http/tests/plugins/navigation-during-load-embed.html:
  • http/tests/plugins/navigation-during-load.html:
  • http/tests/security/allowed-base-url-data-url-via-setting-expected.txt: Added.
  • http/tests/security/allowed-base-url-data-url-via-setting.html: Added.
  • http/tests/security/denied-base-url-data-url-expected.txt: Added.
  • http/tests/security/denied-base-url-data-url.html: Added.
  • http/tests/security/denied-base-url-javascript-url-expected.txt: Added.
  • http/tests/security/denied-base-url-javascript-url.html: Added.
7:59 AM Changeset in webkit [257310] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r256187 - Crash under WebProcessProxy::shouldSendPendingMessage()
https://bugs.webkit.org/show_bug.cgi?id=207464
<rdar://problem/59293825>

Reviewed by Alex Christensen.

I suspect the WebProcessProxy object is getting destroyed as we are iterating over the
pending messages in AuxiliaryProcessProxy::didFinishLaunching(), thus crashing when
calling WebProcessProxy::shouldSendPendingMessage() inside the loop. As a speculative
fix, protect |this| at the beginning of WebProcessProxy::didFinishLaunching().

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didFinishLaunching):

7:59 AM Changeset in webkit [257309] by Carlos Garcia Campos
  • 3 edits
    3 adds in releases/WebKitGTK/webkit-2.28

Merge r256214 - WebContent jetsams on Sony lens webpage due to spike of IOSurfaces
https://bugs.webkit.org/show_bug.cgi?id=207493
rdar://problem/59020443

Reviewed by Zalan Bujtas.
Source/WebCore:

There were three issues that contributed to massive backing store allocation on
<https://www.sony.com/electronics/lenses/t/camera-lenses>.

The first, fixed in r256095, was that the Web Animations code unioned the untransitioning
bounds with the transitioning bounds, causing the computation of large extent rects.

The second, fixed in r256181, was that GraphicsLayerCA would keep hold of a transform
animation for an extra frame, causing a rendering update where
RenderLayerBacking::updateGeometry() would have cleared the extent, but GraphicsLayerCA
still thought transform was animating, causing GraphicsLayerCA::updateCoverage() to keep
backing store attached.

This patch is the final fix; when animations start and end, we need to ensure that
RenderLayerBacking::updateGeometry() is called so that we compute the animation extent in
the same frame that adds the animation.

Test: compositing/backing/transition-extent.html

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::startAnimation):
(WebCore::RenderLayerBacking::animationFinished):

LayoutTests:

Test with an out-of-view transitioning element which should not get backing store.

  • compositing/backing/transition-extent-expected.txt: Added.
  • compositing/backing/transition-extent.html: Added.
  • platform/ios-wk2/compositing/backing/transition-extent-expected.txt: Added.
7:59 AM Changeset in webkit [257308] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.28

Merge r256181 - There's an event loop cycle between an animation finishing, and it being removed from GraphicsLayerCA
https://bugs.webkit.org/show_bug.cgi?id=207361
<rdar://problem/59280370>

Reviewed by Simon Fraser.

Source/WebCore:

Animations should be removed from GraphicsLayersCAs in the same rendering update that changes the playState of the
animation to "finished", to avoid layer flush where a GraphicsLayersCAs has no extent set, but thinks there is
an active transform animation.

To do this, instead of enqueuing accelerated actions when resolving animations during style resolution, in
KeyframeAnimation::apply(), we enqueue them as soon as an animation's current time may have changed: in
WebAnimation::tick() and WebAnimation::play() with supporting functions newly exposed on AnimationEffect.

Now, accelerated animations are enqueued and applied during the "update animations and send events" procedure.

  • animation/AnimationEffect.h:
  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::apply):
(WebCore::KeyframeEffect::updateAcceleratedActions):
(WebCore::KeyframeEffect::animationDidTick):
(WebCore::KeyframeEffect::animationDidPlay):

  • animation/KeyframeEffect.h:
  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::play):
(WebCore::WebAnimation::tick):

LayoutTests:

Lower the number of frames to wait after an animation completes by one to check that the accelerated animation has been removed
to show that we enqueue accelerated actions as part of the "update animations and send events" procedure.

  • webanimations/accelerated-animation-removal-upon-transition-completion.html: Added.
7:59 AM Changeset in webkit [257307] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.28/LayoutTests

Merge r256177 - [Web Animations] Fix animations/stop-animation-on-suspend.html
https://bugs.webkit.org/show_bug.cgi?id=184580
<rdar://problem/39406014>

Reviewed by Simon Fraser.

The expectations of this test were incorrect. The test animates a transform from 0 to 400px across 400ms with a linear timing function. The test suspends
animations from 100ms to 300ms with timers, and polls animations at 200ms and 400ms. At 200ms, it expects a value of 100px, which is correct since the animation
is suspended and so the value at 100ms (when it was suspended) is expected.

However, the test expected the value at 400ms to be 200px, which leads me to think this test assumes that animations, when resumed, account for the time suspended
and subtracts it from the page time. This is incorrect: when animations resume, they resume at the current time, no matter how long they were suspended. So the expected
value should be 400px.

  • animations/stop-animation-on-suspend-expected.txt:
  • animations/stop-animation-on-suspend.html:
7:59 AM Changeset in webkit [257306] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r256173 - Make FormDataElement::lengthInBytes() safe to call on a non-main thread
https://bugs.webkit.org/show_bug.cgi?id=207419
<rdar://problem/54386521>

Reviewed by Youenn Fablet.

Make FormDataElement::lengthInBytes() safe to call on a non-main thread by using the
ThreadableBlobRegistry. DOMCache code in workers may call this on worker threads for
example.

  • platform/network/FormData.cpp:

(WebCore::FormDataElement::lengthInBytes const):

6:33 AM Changeset in webkit [257305] by Carlos Garcia Campos
  • 449 edits
    3 adds in trunk/LayoutTests

Unreviewed GTK gardening. Rebaseline tests after r257299 and r257300.

  • platform/gtk/accessibility/media-emits-object-replacement-expected.txt:
  • platform/gtk/compositing/overflow/theme-affects-visual-overflow-expected.png:
  • platform/gtk/compositing/overflow/theme-affects-visual-overflow-expected.txt:
  • platform/gtk/compositing/video/video-background-color-expected.png: Added.
  • platform/gtk/compositing/video/video-background-color-expected.txt: Added.
  • platform/gtk/css1/box_properties/acid_test-expected.png:
  • platform/gtk/css1/box_properties/acid_test-expected.txt:
  • platform/gtk/css2.1/20110323/replaced-elements-001-expected.txt:
  • platform/gtk/css2.1/t09-c5526c-display-00-e-expected.png:
  • platform/gtk/css2.1/t09-c5526c-display-00-e-expected.txt:
  • platform/gtk/css3/flexbox/button-expected.png:
  • platform/gtk/css3/flexbox/button-expected.txt:
  • platform/gtk/css3/selectors3/html/css3-modsel-161-expected.png:
  • platform/gtk/css3/selectors3/html/css3-modsel-161-expected.txt:
  • platform/gtk/css3/selectors3/html/css3-modsel-19b-expected.png:
  • platform/gtk/css3/selectors3/html/css3-modsel-19b-expected.txt:
  • platform/gtk/css3/selectors3/html/css3-modsel-23-expected.png:
  • platform/gtk/css3/selectors3/html/css3-modsel-23-expected.txt:
  • platform/gtk/css3/selectors3/html/css3-modsel-24-expected.png:
  • platform/gtk/css3/selectors3/html/css3-modsel-24-expected.txt:
  • platform/gtk/css3/selectors3/html/css3-modsel-25-expected.png:
  • platform/gtk/css3/selectors3/html/css3-modsel-25-expected.txt:
  • platform/gtk/css3/selectors3/html/css3-modsel-68-expected.png:
  • platform/gtk/css3/selectors3/html/css3-modsel-68-expected.txt:
  • platform/gtk/css3/selectors3/html/css3-modsel-69-expected.png:
  • platform/gtk/css3/selectors3/html/css3-modsel-69-expected.txt:
  • platform/gtk/css3/selectors3/html/css3-modsel-70-expected.png:
  • platform/gtk/css3/selectors3/html/css3-modsel-70-expected.txt:
  • platform/gtk/css3/selectors3/xhtml/css3-modsel-161-expected.png:
  • platform/gtk/css3/selectors3/xhtml/css3-modsel-161-expected.txt:
  • platform/gtk/css3/selectors3/xhtml/css3-modsel-19b-expected.png:
  • platform/gtk/css3/selectors3/xhtml/css3-modsel-19b-expected.txt:
  • platform/gtk/css3/selectors3/xhtml/css3-modsel-23-expected.png:
  • platform/gtk/css3/selectors3/xhtml/css3-modsel-23-expected.txt:
  • platform/gtk/css3/selectors3/xhtml/css3-modsel-24-expected.png:
  • platform/gtk/css3/selectors3/xhtml/css3-modsel-24-expected.txt:
  • platform/gtk/css3/selectors3/xhtml/css3-modsel-25-expected.png:
  • platform/gtk/css3/selectors3/xhtml/css3-modsel-25-expected.txt:
  • platform/gtk/css3/selectors3/xhtml/css3-modsel-68-expected.png:
  • platform/gtk/css3/selectors3/xhtml/css3-modsel-68-expected.txt:
  • platform/gtk/css3/selectors3/xhtml/css3-modsel-69-expected.png:
  • platform/gtk/css3/selectors3/xhtml/css3-modsel-69-expected.txt:
  • platform/gtk/css3/selectors3/xhtml/css3-modsel-70-expected.png:
  • platform/gtk/css3/selectors3/xhtml/css3-modsel-70-expected.txt:
  • platform/gtk/css3/selectors3/xml/css3-modsel-161-expected.png:
  • platform/gtk/css3/selectors3/xml/css3-modsel-161-expected.txt:
  • platform/gtk/css3/selectors3/xml/css3-modsel-19b-expected.png:
  • platform/gtk/css3/selectors3/xml/css3-modsel-19b-expected.txt:
  • platform/gtk/css3/selectors3/xml/css3-modsel-23-expected.png:
  • platform/gtk/css3/selectors3/xml/css3-modsel-23-expected.txt:
  • platform/gtk/css3/selectors3/xml/css3-modsel-24-expected.png:
  • platform/gtk/css3/selectors3/xml/css3-modsel-24-expected.txt:
  • platform/gtk/css3/selectors3/xml/css3-modsel-25-expected.png:
  • platform/gtk/css3/selectors3/xml/css3-modsel-25-expected.txt:
  • platform/gtk/css3/selectors3/xml/css3-modsel-68-expected.png:
  • platform/gtk/css3/selectors3/xml/css3-modsel-68-expected.txt:
  • platform/gtk/css3/selectors3/xml/css3-modsel-69-expected.png:
  • platform/gtk/css3/selectors3/xml/css3-modsel-69-expected.txt:
  • platform/gtk/css3/selectors3/xml/css3-modsel-70-expected.png:
  • platform/gtk/css3/selectors3/xml/css3-modsel-70-expected.txt:
  • platform/gtk/editing/pasteboard/4641033-expected.png:
  • platform/gtk/editing/pasteboard/4641033-expected.txt:
  • platform/gtk/editing/pasteboard/4944770-1-expected.png:
  • platform/gtk/editing/pasteboard/4944770-1-expected.txt:
  • platform/gtk/editing/pasteboard/4944770-2-expected.png:
  • platform/gtk/editing/pasteboard/4944770-2-expected.txt:
  • platform/gtk/editing/selection/3690703-2-expected.png:
  • platform/gtk/editing/selection/3690703-2-expected.txt:
  • platform/gtk/editing/selection/3690703-expected.png:
  • platform/gtk/editing/selection/3690703-expected.txt:
  • platform/gtk/editing/selection/3690719-expected.png:
  • platform/gtk/editing/selection/3690719-expected.txt:
  • platform/gtk/editing/selection/4397952-expected.png:
  • platform/gtk/editing/selection/4397952-expected.txt:
  • platform/gtk/editing/selection/5240265-expected.png:
  • platform/gtk/editing/selection/5240265-expected.txt:
  • platform/gtk/editing/selection/caret-before-select-expected.png:
  • platform/gtk/editing/selection/caret-before-select-expected.txt:
  • platform/gtk/editing/selection/replaced-boundaries-3-expected.png:
  • platform/gtk/editing/selection/replaced-boundaries-3-expected.txt:
  • platform/gtk/editing/selection/select-box-expected.png:
  • platform/gtk/editing/selection/select-box-expected.txt:
  • platform/gtk/editing/selection/select-element-paragraph-boundary-expected.png:
  • platform/gtk/editing/selection/select-element-paragraph-boundary-expected.txt:
  • platform/gtk/editing/selection/selection-button-text-expected.png:
  • platform/gtk/editing/selection/selection-button-text-expected.txt:
  • platform/gtk/fast/block/basic/011-expected.png:
  • platform/gtk/fast/block/basic/011-expected.txt:
  • platform/gtk/fast/block/float/float-avoidance-expected.png:
  • platform/gtk/fast/block/float/float-avoidance-expected.txt:
  • platform/gtk/fast/block/margin-collapse/103-expected.png:
  • platform/gtk/fast/block/margin-collapse/103-expected.txt:
  • platform/gtk/fast/block/positioning/inline-block-relposition-expected.png:
  • platform/gtk/fast/block/positioning/inline-block-relposition-expected.txt:
  • platform/gtk/fast/box-sizing/percentage-height-expected.png:
  • platform/gtk/fast/box-sizing/percentage-height-expected.txt:
  • platform/gtk/fast/css/continuationCrash-expected.png:
  • platform/gtk/fast/css/continuationCrash-expected.txt:
  • platform/gtk/fast/css/focus-ring-exists-for-search-field-expected.png:
  • platform/gtk/fast/css/focus-ring-exists-for-search-field-expected.txt:
  • platform/gtk/fast/css/margin-top-bottom-dynamic-expected.png:
  • platform/gtk/fast/css/margin-top-bottom-dynamic-expected.txt:
  • platform/gtk/fast/css/non-standard-checkbox-size-expected.png:
  • platform/gtk/fast/css/non-standard-checkbox-size-expected.txt:
  • platform/gtk/fast/css/rtl-ordering-expected.png:
  • platform/gtk/fast/css/rtl-ordering-expected.txt:
  • platform/gtk/fast/css/text-input-with-webkit-border-radius-expected.png:
  • platform/gtk/fast/css/text-input-with-webkit-border-radius-expected.txt:
  • platform/gtk/fast/css/text-overflow-input-expected.png:
  • platform/gtk/fast/css/text-overflow-input-expected.txt:
  • platform/gtk/fast/css/text-transform-select-expected.png:
  • platform/gtk/fast/css/text-transform-select-expected.txt:
  • platform/gtk/fast/dom/HTMLInputElement/input-slider-update-expected.png:
  • platform/gtk/fast/dom/HTMLInputElement/input-slider-update-expected.txt:
  • platform/gtk/fast/dom/HTMLProgressElement/indeterminate-progress-001-expected.txt:
  • platform/gtk/fast/dom/HTMLProgressElement/native-progress-bar-expected.png:
  • platform/gtk/fast/dom/HTMLProgressElement/native-progress-bar-expected.txt:
  • platform/gtk/fast/dom/HTMLProgressElement/progress-bar-value-pseudo-element-expected.txt:
  • platform/gtk/fast/dom/HTMLProgressElement/progress-element-expected.png:
  • platform/gtk/fast/dom/HTMLProgressElement/progress-element-expected.txt:
  • platform/gtk/fast/dom/HTMLTableColElement/resize-table-using-col-width-expected.png:
  • platform/gtk/fast/dom/HTMLTableColElement/resize-table-using-col-width-expected.txt:
  • platform/gtk/fast/dom/HTMLTextAreaElement/reset-textarea-expected.png:
  • platform/gtk/fast/dom/HTMLTextAreaElement/reset-textarea-expected.txt:
  • platform/gtk/fast/dynamic/positioned-movement-with-positioned-children-expected.txt:
  • platform/gtk/fast/forms/001-expected.png:
  • platform/gtk/fast/forms/001-expected.txt:
  • platform/gtk/fast/forms/003-expected.png:
  • platform/gtk/fast/forms/003-expected.txt:
  • platform/gtk/fast/forms/004-expected.png:
  • platform/gtk/fast/forms/004-expected.txt:
  • platform/gtk/fast/forms/basic-buttons-expected.png:
  • platform/gtk/fast/forms/basic-buttons-expected.txt:
  • platform/gtk/fast/forms/basic-inputs-expected.png:
  • platform/gtk/fast/forms/basic-inputs-expected.txt:
  • platform/gtk/fast/forms/basic-selects-expected.png:
  • platform/gtk/fast/forms/basic-selects-expected.txt:
  • platform/gtk/fast/forms/basic-textareas-expected.png:
  • platform/gtk/fast/forms/basic-textareas-expected.txt:
  • platform/gtk/fast/forms/basic-textareas-quirks-expected.png:
  • platform/gtk/fast/forms/basic-textareas-quirks-expected.txt:
  • platform/gtk/fast/forms/blankbuttons-expected.png:
  • platform/gtk/fast/forms/blankbuttons-expected.txt:
  • platform/gtk/fast/forms/button-align-expected.png:
  • platform/gtk/fast/forms/button-align-expected.txt:
  • platform/gtk/fast/forms/button-cannot-be-nested-expected.png:
  • platform/gtk/fast/forms/button-cannot-be-nested-expected.txt:
  • platform/gtk/fast/forms/button-default-title-expected.png:
  • platform/gtk/fast/forms/button-default-title-expected.txt:
  • platform/gtk/fast/forms/button-generated-content-expected.png:
  • platform/gtk/fast/forms/button-generated-content-expected.txt:
  • platform/gtk/fast/forms/button-inner-block-reuse-expected.png:
  • platform/gtk/fast/forms/button-inner-block-reuse-expected.txt:
  • platform/gtk/fast/forms/button-positioned-expected.png:
  • platform/gtk/fast/forms/button-positioned-expected.txt:
  • platform/gtk/fast/forms/button-sizes-expected.png:
  • platform/gtk/fast/forms/button-sizes-expected.txt:
  • platform/gtk/fast/forms/button-style-color-expected.png:
  • platform/gtk/fast/forms/button-style-color-expected.txt:
  • platform/gtk/fast/forms/button-table-styles-expected.png:
  • platform/gtk/fast/forms/button-table-styles-expected.txt:
  • platform/gtk/fast/forms/button-text-transform-expected.png:
  • platform/gtk/fast/forms/button-text-transform-expected.txt:
  • platform/gtk/fast/forms/button-white-space-expected.png:
  • platform/gtk/fast/forms/button-white-space-expected.txt:
  • platform/gtk/fast/forms/control-clip-expected.png:
  • platform/gtk/fast/forms/control-clip-expected.txt:
  • platform/gtk/fast/forms/control-clip-overflow-expected.png:
  • platform/gtk/fast/forms/control-clip-overflow-expected.txt:
  • platform/gtk/fast/forms/control-restrict-line-height-expected.png:
  • platform/gtk/fast/forms/control-restrict-line-height-expected.txt:
  • platform/gtk/fast/forms/datalist/datalist-searchinput-appearance-expected.png:
  • platform/gtk/fast/forms/datalist/datalist-searchinput-appearance-expected.txt:
  • platform/gtk/fast/forms/datalist/datalist-textinput-appearance-expected.png:
  • platform/gtk/fast/forms/datalist/datalist-textinput-appearance-expected.txt:
  • platform/gtk/fast/forms/disabled-select-change-index-expected.png:
  • platform/gtk/fast/forms/disabled-select-change-index-expected.txt:
  • platform/gtk/fast/forms/file/file-input-direction-expected.png:
  • platform/gtk/fast/forms/file/file-input-direction-expected.txt:
  • platform/gtk/fast/forms/file/file-input-disabled-expected.png:
  • platform/gtk/fast/forms/file/file-input-disabled-expected.txt:
  • platform/gtk/fast/forms/form-element-geometry-expected.png:
  • platform/gtk/fast/forms/form-element-geometry-expected.txt:
  • platform/gtk/fast/forms/formmove-expected.png:
  • platform/gtk/fast/forms/formmove-expected.txt:
  • platform/gtk/fast/forms/formmove2-expected.png:
  • platform/gtk/fast/forms/formmove2-expected.txt:
  • platform/gtk/fast/forms/formmove3-expected.png:
  • platform/gtk/fast/forms/formmove3-expected.txt:
  • platform/gtk/fast/forms/indeterminate-expected.png:
  • platform/gtk/fast/forms/indeterminate-expected.txt:
  • platform/gtk/fast/forms/input-appearance-disabled-expected.png:
  • platform/gtk/fast/forms/input-appearance-disabled-expected.txt:
  • platform/gtk/fast/forms/input-appearance-height-expected.png:
  • platform/gtk/fast/forms/input-appearance-height-expected.txt:
  • platform/gtk/fast/forms/input-button-sizes-expected.png:
  • platform/gtk/fast/forms/input-button-sizes-expected.txt:
  • platform/gtk/fast/forms/input-disabled-color-expected.png:
  • platform/gtk/fast/forms/input-disabled-color-expected.txt:
  • platform/gtk/fast/forms/input-first-letter-expected.png:
  • platform/gtk/fast/forms/input-first-letter-expected.txt:
  • platform/gtk/fast/forms/input-value-expected.png:
  • platform/gtk/fast/forms/input-value-expected.txt:
  • platform/gtk/fast/forms/large-toggle-elements-expected.png:
  • platform/gtk/fast/forms/large-toggle-elements-expected.txt:
  • platform/gtk/fast/forms/menulist-deselect-update-expected.png:
  • platform/gtk/fast/forms/menulist-deselect-update-expected.txt:
  • platform/gtk/fast/forms/menulist-narrow-width-expected.png:
  • platform/gtk/fast/forms/menulist-narrow-width-expected.txt:
  • platform/gtk/fast/forms/menulist-no-overflow-expected.png:
  • platform/gtk/fast/forms/menulist-no-overflow-expected.txt:
  • platform/gtk/fast/forms/menulist-separator-painting-expected.png:
  • platform/gtk/fast/forms/menulist-separator-painting-expected.txt:
  • platform/gtk/fast/forms/menulist-style-color-expected.png:
  • platform/gtk/fast/forms/menulist-style-color-expected.txt:
  • platform/gtk/fast/forms/menulist-width-change-expected.png:
  • platform/gtk/fast/forms/menulist-width-change-expected.txt:
  • platform/gtk/fast/forms/number/number-spinbutton-change-and-input-events-expected.txt:
  • platform/gtk/fast/forms/number/number-spinbutton-click-in-iframe-expected.txt:
  • platform/gtk/fast/forms/number/number-spinbutton-gets-disabled-or-readonly-expected.txt:
  • platform/gtk/fast/forms/option-script-expected.png:
  • platform/gtk/fast/forms/option-script-expected.txt:
  • platform/gtk/fast/forms/option-strip-whitespace-expected.png:
  • platform/gtk/fast/forms/option-strip-whitespace-expected.txt:
  • platform/gtk/fast/forms/option-text-clip-expected.png:
  • platform/gtk/fast/forms/option-text-clip-expected.txt:
  • platform/gtk/fast/forms/placeholder-position-expected.png:
  • platform/gtk/fast/forms/placeholder-position-expected.txt:
  • platform/gtk/fast/forms/placeholder-pseudo-style-expected.png:
  • platform/gtk/fast/forms/placeholder-pseudo-style-expected.txt:
  • platform/gtk/fast/forms/range/input-appearance-range-expected.png:
  • platform/gtk/fast/forms/range/input-appearance-range-expected.txt:
  • platform/gtk/fast/forms/range/slider-padding-expected.png:
  • platform/gtk/fast/forms/range/slider-padding-expected.txt:
  • platform/gtk/fast/forms/range/slider-thumb-shared-style-expected.png:
  • platform/gtk/fast/forms/range/slider-thumb-shared-style-expected.txt:
  • platform/gtk/fast/forms/range/slider-transformed-expected.txt:
  • platform/gtk/fast/forms/range/thumbslider-no-parent-slider-expected.png:
  • platform/gtk/fast/forms/range/thumbslider-no-parent-slider-expected.txt:
  • platform/gtk/fast/forms/search-cancel-button-style-sharing-expected.png:
  • platform/gtk/fast/forms/search-cancel-button-style-sharing-expected.txt:
  • platform/gtk/fast/forms/search-display-none-cancel-button-expected.png:
  • platform/gtk/fast/forms/search-display-none-cancel-button-expected.txt:
  • platform/gtk/fast/forms/search-input-rtl-expected.png:
  • platform/gtk/fast/forms/search-input-rtl-expected.txt:
  • platform/gtk/fast/forms/search-rtl-expected.png:
  • platform/gtk/fast/forms/search-rtl-expected.txt:
  • platform/gtk/fast/forms/search-styled-expected.png:
  • platform/gtk/fast/forms/search-styled-expected.txt:
  • platform/gtk/fast/forms/search/search-size-with-decorations-expected.png:
  • platform/gtk/fast/forms/search/search-size-with-decorations-expected.txt:
  • platform/gtk/fast/forms/searchfield-heights-expected.png:
  • platform/gtk/fast/forms/searchfield-heights-expected.txt:
  • platform/gtk/fast/forms/select-align-expected.png:
  • platform/gtk/fast/forms/select-align-expected.txt:
  • platform/gtk/fast/forms/select-background-none-expected.png:
  • platform/gtk/fast/forms/select-background-none-expected.txt:
  • platform/gtk/fast/forms/select-baseline-expected.png:
  • platform/gtk/fast/forms/select-baseline-expected.txt:
  • platform/gtk/fast/forms/select-change-listbox-to-popup-expected.png:
  • platform/gtk/fast/forms/select-change-listbox-to-popup-expected.txt:
  • platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.png:
  • platform/gtk/fast/forms/select-dirty-parent-pref-widths-expected.txt:
  • platform/gtk/fast/forms/select-disabled-appearance-expected.png:
  • platform/gtk/fast/forms/select-disabled-appearance-expected.txt:
  • platform/gtk/fast/forms/select-element-focus-ring-expected.png:
  • platform/gtk/fast/forms/select-element-focus-ring-expected.txt:
  • platform/gtk/fast/forms/select-initial-position-expected.png:
  • platform/gtk/fast/forms/select-initial-position-expected.txt:
  • platform/gtk/fast/forms/select-non-native-rendering-direction-expected.png:
  • platform/gtk/fast/forms/select-non-native-rendering-direction-expected.txt:
  • platform/gtk/fast/forms/select-selected-expected.png:
  • platform/gtk/fast/forms/select-selected-expected.txt:
  • platform/gtk/fast/forms/select-style-expected.png:
  • platform/gtk/fast/forms/select-style-expected.txt:
  • platform/gtk/fast/forms/select-visual-hebrew-expected.png:
  • platform/gtk/fast/forms/select-visual-hebrew-expected.txt:
  • platform/gtk/fast/forms/select-writing-direction-natural-expected.png:
  • platform/gtk/fast/forms/select-writing-direction-natural-expected.txt:
  • platform/gtk/fast/forms/select/optgroup-rendering-expected.png:
  • platform/gtk/fast/forms/select/optgroup-rendering-expected.txt:
  • platform/gtk/fast/forms/selectlist-minsize-expected.png:
  • platform/gtk/fast/forms/selectlist-minsize-expected.txt:
  • platform/gtk/fast/forms/stuff-on-my-optgroup-expected.png:
  • platform/gtk/fast/forms/stuff-on-my-optgroup-expected.txt:
  • platform/gtk/fast/forms/targeted-frame-submission-expected.png:
  • platform/gtk/fast/forms/targeted-frame-submission-expected.txt:
  • platform/gtk/fast/forms/textarea-placeholder-pseudo-style-expected.png:
  • platform/gtk/fast/forms/textarea-placeholder-pseudo-style-expected.txt:
  • platform/gtk/fast/html/details-replace-summary-child-expected.png:
  • platform/gtk/fast/html/details-replace-summary-child-expected.txt:
  • platform/gtk/fast/html/details-replace-text-expected.png:
  • platform/gtk/fast/html/details-replace-text-expected.txt:
  • platform/gtk/fast/html/keygen-expected.png:
  • platform/gtk/fast/html/keygen-expected.txt:
  • platform/gtk/fast/inline/positionedLifetime-expected.png:
  • platform/gtk/fast/inline/positionedLifetime-expected.txt:
  • platform/gtk/fast/invalid/014-expected.png:
  • platform/gtk/fast/invalid/014-expected.txt:
  • platform/gtk/fast/layers/video-layer-expected.png:
  • platform/gtk/fast/layers/video-layer-expected.txt:
  • platform/gtk/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.png:
  • platform/gtk/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.txt:
  • platform/gtk/fast/overflow/scrollRevealButton-expected.png:
  • platform/gtk/fast/overflow/scrollRevealButton-expected.txt:
  • platform/gtk/fast/parser/bad-xml-slash-expected.png:
  • platform/gtk/fast/parser/bad-xml-slash-expected.txt:
  • platform/gtk/fast/parser/document-write-option-expected.png:
  • platform/gtk/fast/parser/document-write-option-expected.txt:
  • platform/gtk/fast/repaint/search-field-cancel-expected.png:
  • platform/gtk/fast/repaint/search-field-cancel-expected.txt:
  • platform/gtk/fast/repaint/slider-thumb-drag-release-expected.png:
  • platform/gtk/fast/repaint/slider-thumb-drag-release-expected.txt:
  • platform/gtk/fast/replaced/replaced-breaking-expected.png:
  • platform/gtk/fast/replaced/replaced-breaking-expected.txt:
  • platform/gtk/fast/replaced/replaced-breaking-mixture-expected.png:
  • platform/gtk/fast/replaced/replaced-breaking-mixture-expected.txt:
  • platform/gtk/fast/replaced/three-selects-break-expected.png:
  • platform/gtk/fast/replaced/three-selects-break-expected.txt:
  • platform/gtk/fast/replaced/width100percent-button-expected.png:
  • platform/gtk/fast/replaced/width100percent-button-expected.txt:
  • platform/gtk/fast/replaced/width100percent-checkbox-expected.png:
  • platform/gtk/fast/replaced/width100percent-checkbox-expected.txt:
  • platform/gtk/fast/replaced/width100percent-menulist-expected.png:
  • platform/gtk/fast/replaced/width100percent-menulist-expected.txt:
  • platform/gtk/fast/replaced/width100percent-radio-expected.png:
  • platform/gtk/fast/replaced/width100percent-radio-expected.txt:
  • platform/gtk/fast/replaced/width100percent-searchfield-expected.png:
  • platform/gtk/fast/replaced/width100percent-searchfield-expected.txt:
  • platform/gtk/fast/table/append-cells2-expected.png:
  • platform/gtk/fast/table/append-cells2-expected.txt:
  • platform/gtk/fast/table/remove-td-display-none-expected.png:
  • platform/gtk/fast/table/remove-td-display-none-expected.txt:
  • platform/gtk/fast/text/international/bidi-menulist-expected.png:
  • platform/gtk/fast/text/international/bidi-menulist-expected.txt:
  • platform/gtk/fast/text/international/hindi-spacing-expected.png:
  • platform/gtk/fast/text/international/hindi-spacing-expected.txt:
  • platform/gtk/fast/text/international/pop-up-button-text-alignment-and-direction-expected.png:
  • platform/gtk/fast/text/international/pop-up-button-text-alignment-and-direction-expected.txt:
  • platform/gtk/fast/text/monospace-width-cache-expected.png:
  • platform/gtk/fast/text/monospace-width-cache-expected.txt:
  • platform/gtk/fast/text/textIteratorNilRenderer-expected.png:
  • platform/gtk/fast/text/textIteratorNilRenderer-expected.txt:
  • platform/gtk/fast/text/whitespace/normal-after-nowrap-breaking-expected.png:
  • platform/gtk/fast/text/whitespace/normal-after-nowrap-breaking-expected.txt:
  • platform/gtk/http/tests/media/hls/video-controls-live-stream-expected.txt:
  • platform/gtk/http/tests/navigation/javascriptlink-frames-expected.png:
  • platform/gtk/http/tests/navigation/javascriptlink-frames-expected.txt:
  • platform/gtk/media/audio-controls-rendering-expected.png:
  • platform/gtk/media/audio-controls-rendering-expected.txt:
  • platform/gtk/media/controls-after-reload-expected.png:
  • platform/gtk/media/controls-after-reload-expected.txt:
  • platform/gtk/media/controls-strict-expected.png:
  • platform/gtk/media/controls-strict-expected.txt:
  • platform/gtk/media/media-controls-clone-expected.png:
  • platform/gtk/media/media-controls-clone-expected.txt:
  • platform/gtk/media/video-controls-rendering-expected.png:
  • platform/gtk/media/video-controls-rendering-expected.txt:
  • platform/gtk/media/video-display-toggle-expected.png:
  • platform/gtk/media/video-display-toggle-expected.txt:
  • platform/gtk/media/video-empty-source-expected.png:
  • platform/gtk/media/video-empty-source-expected.txt:
  • platform/gtk/media/video-no-audio-expected.png:
  • platform/gtk/media/video-no-audio-expected.txt:
  • platform/gtk/media/video-playing-and-pause-expected.png:
  • platform/gtk/media/video-playing-and-pause-expected.txt:
  • platform/gtk/media/video-zoom-controls-expected.png:
  • platform/gtk/media/video-zoom-controls-expected.txt:
  • platform/gtk/svg/custom/foreign-object-skew-expected.png:
  • platform/gtk/svg/custom/foreign-object-skew-expected.txt:
  • platform/gtk/svg/custom/inline-svg-in-xhtml-expected.png:
  • platform/gtk/svg/custom/inline-svg-in-xhtml-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug1188-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug1188-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug1318-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug1318-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug138725-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug138725-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug18359-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug18359-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug2479-2-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug2479-2-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug2479-3-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug2479-3-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug2479-4-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug2479-4-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug26178-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug26178-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug28928-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug28928-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug29326-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug29326-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug33855-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug33855-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug39209-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug39209-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug4382-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug4382-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug4429-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug4429-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug44505-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug44505-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug4527-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug4527-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug46368-1-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug46368-1-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug46368-2-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug46368-2-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug51037-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug51037-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug51727-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug51727-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug52505-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug52505-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug52506-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug52506-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug60749-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug60749-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug68912-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug68912-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug7342-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug7342-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug92647-2-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug92647-2-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug96334-expected.png:
  • platform/gtk/tables/mozilla/bugs/bug96334-expected.txt:
  • platform/gtk/tables/mozilla/collapsing_borders/bug41262-4-expected.png:
  • platform/gtk/tables/mozilla/collapsing_borders/bug41262-4-expected.txt:
  • platform/gtk/tables/mozilla/core/margins-expected.png:
  • platform/gtk/tables/mozilla/core/margins-expected.txt:
  • platform/gtk/tables/mozilla/dom/tableDom-expected.png:
  • platform/gtk/tables/mozilla/dom/tableDom-expected.txt:
  • platform/gtk/tables/mozilla/other/move_row-expected.png:
  • platform/gtk/tables/mozilla/other/move_row-expected.txt:
  • platform/gtk/tables/mozilla_expected_failures/bugs/bug1725-expected.png:
  • platform/gtk/tables/mozilla_expected_failures/bugs/bug1725-expected.txt:
  • platform/gtk/tables/mozilla_expected_failures/bugs/bug2479-5-expected.png:
  • platform/gtk/tables/mozilla_expected_failures/bugs/bug2479-5-expected.txt:
  • platform/gtk/tables/mozilla_expected_failures/bugs/bug58402-2-expected.png:
  • platform/gtk/tables/mozilla_expected_failures/bugs/bug58402-2-expected.txt:
  • platform/gtk/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.png:
  • platform/gtk/tables/mozilla_expected_failures/collapsing_borders/bug41262-5-expected.txt:
  • platform/gtk/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.png:
  • platform/gtk/tables/mozilla_expected_failures/collapsing_borders/bug41262-6-expected.txt:
  • platform/gtk/tables/mozilla_expected_failures/core/captions1-expected.png:
  • platform/gtk/tables/mozilla_expected_failures/core/captions1-expected.txt:
  • platform/gtk/tables/mozilla_expected_failures/core/captions2-expected.png:
  • platform/gtk/tables/mozilla_expected_failures/core/captions2-expected.txt:
  • platform/gtk/transforms/2d/zoom-menulist-expected.png:
  • platform/gtk/transforms/2d/zoom-menulist-expected.txt:
6:14 AM Changeset in webkit [257304] by Philippe Normand
  • 2 edits in trunk/Source/WTF

[WPE] Enable BACKTRACE_SYMBOLS
https://bugs.webkit.org/show_bug.cgi?id=208187

Reviewed by Žan Doberšek.

  • wtf/PlatformHave.h: Enable backtrace_symbols, to be combined

with dladdr() the stacktrace dumps will be improved.

3:57 AM Changeset in webkit [257303] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Update TestExpectations
https://bugs.webkit.org/show_bug.cgi?id=208183

Unreviewed gardening.

  • platform/gtk/TestExpectations:
3:53 AM Changeset in webkit [257302] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[WPE] Gardening, update TestExpectations
https://bugs.webkit.org/show_bug.cgi?id=208184

Unreviewed gardening.

  • platform/wpe/TestExpectations:
2:37 AM Changeset in webkit [257301] by sbarati@apple.com
  • 4 edits in trunk/Source

Update stale comment about PackedAlignedPtr
https://bugs.webkit.org/show_bug.cgi?id=208176

Reviewed by Yusuke Suzuki.

The comment was stale since cells aren't guaranteed anymore to be
aligned on 16 byte boundaries because of the GCs precise allocations.

Source/bmalloc:

  • bmalloc/Packed.h:

Source/WTF:

  • wtf/Packed.h:
2:03 AM Changeset in webkit [257300] by Carlos Garcia Campos
  • 4 edits in trunk

[GTK] Add support for rendering slider ticks
https://bugs.webkit.org/show_bug.cgi?id=208132

Reviewed by Adrian Perez de Castro.

.:

Add a test case for sliders with ticks.

  • ManualTests/gtk/theme.html:

Source/WebCore:

  • rendering/RenderThemeAdwaita.cpp:

(WebCore::RenderThemeAdwaita::paintSliderTrack):
(WebCore::RenderThemeAdwaita::sliderTickSize const):
(WebCore::RenderThemeAdwaita::sliderTickOffsetFromTrackCenter const):

1:55 AM Changeset in webkit [257299] by Carlos Garcia Campos
  • 15 edits
    1 copy
    6 moves
    2 adds
    8 deletes in trunk

[GTK] Stop using gtk foreign drawing API to style form controls
https://bugs.webkit.org/show_bug.cgi?id=208129

Reviewed by Adrian Perez de Castro.

.:

Add a test case for datalist element.

  • ManualTests/gtk/theme.html:

Source/WebCore:

It causes layout issues in some websites, it doesn't really work with all GTK themes and it won't be possible
with GTK4 because foreign drawing APIs have been removed. Instead, we can use the new custom style used by WPE
port, which is based on adwaita, but simplified to avoid the huge minimum control sizes, the usage of gradients
and transparencies, etc. We can still use the GTK API to get the selection colors, to keep some consistency with
the actual GTK theme, but that won't be possible with GTK4 either. This also means we won't be rendering
directly to the cairo context anymore (which was required by GTK foreign drawing), so we can use things like
threaded rendering in the GTK port now. This patch renames ScrollbarThemeWPE, RenderThemeWPE and ThemeWPE as
ScrollbarThemeAdwaita, RenderThemeAdwaita and ThemeAdwaita and adds ThemeGtk. GTK media controls CSS and
JavaScript files have been removed in favor of using the adwaita ones.

  • Modules/mediacontrols/mediaControlsGtk.js: Removed.
  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • css/mediaControlsGtk.css: Removed.
  • platform/adwaita/ScrollbarThemeAdwaita.cpp: Renamed from Source/WebCore/platform/wpe/ScrollbarThemeWPE.cpp.

(WebCore::ScrollbarThemeAdwaita::usesOverlayScrollbars const):
(WebCore::ScrollbarThemeAdwaita::scrollbarThickness):
(WebCore::ScrollbarThemeAdwaita::minimumThumbLength):
(WebCore::ScrollbarThemeAdwaita::hasButtons):
(WebCore::ScrollbarThemeAdwaita::hasThumb):
(WebCore::ScrollbarThemeAdwaita::backButtonRect):
(WebCore::ScrollbarThemeAdwaita::forwardButtonRect):
(WebCore::ScrollbarThemeAdwaita::trackRect):
(WebCore::ScrollbarThemeAdwaita::paint):
(WebCore::ScrollbarThemeAdwaita::handleMousePressEvent):
(WebCore::ScrollbarTheme::nativeTheme):

  • platform/adwaita/ScrollbarThemeAdwaita.h: Copied from Source/WebCore/platform/wpe/ScrollbarThemeWPE.h.
  • platform/adwaita/ThemeAdwaita.cpp: Renamed from Source/WebCore/platform/wpe/ThemeWPE.cpp.

(WebCore::Theme::singleton):
(WebCore::ThemeAdwaita::activeSelectionForegroundColor const):
(WebCore::ThemeAdwaita::activeSelectionBackgroundColor const):
(WebCore::ThemeAdwaita::inactiveSelectionForegroundColor const):
(WebCore::ThemeAdwaita::inactiveSelectionBackgroundColor const):
(WebCore::ThemeAdwaita::focusColor):
(WebCore::ThemeAdwaita::paintFocus):
(WebCore::ThemeAdwaita::paintArrow):
(WebCore::ThemeAdwaita::controlSize const):
(WebCore::ThemeAdwaita::paint):
(WebCore::ThemeAdwaita::paintCheckbox):
(WebCore::ThemeAdwaita::paintRadio):
(WebCore::ThemeAdwaita::paintButton):
(WebCore::ThemeAdwaita::paintSpinButton):

  • platform/adwaita/ThemeAdwaita.h: Renamed from Source/WebCore/platform/wpe/ThemeWPE.h.

(WebCore::ThemeAdwaita::platformColorsDidChange):

  • platform/graphics/cairo/CairoOperations.cpp:

(WebCore::Cairo::drawFocusRing):

  • platform/graphics/cairo/GraphicsContextCairo.cpp:

(WebCore::GraphicsContext::drawFocusRing):

  • platform/gtk/RenderThemeGadget.cpp: Removed.
  • platform/gtk/RenderThemeGadget.h: Removed.
  • platform/gtk/RenderThemeWidget.cpp: Removed.
  • platform/gtk/RenderThemeWidget.h: Removed.
  • platform/gtk/ScrollbarThemeGtk.cpp: Removed.
  • platform/gtk/ScrollbarThemeGtk.h: Removed.
  • platform/gtk/ThemeGtk.cpp: Added.

(WebCore::Theme::singleton):
(WebCore::ThemeGtk::ensurePlatformColors const):
(WebCore::ThemeGtk::platformColorsDidChange):
(WebCore::ThemeGtk::activeSelectionForegroundColor const):
(WebCore::ThemeGtk::activeSelectionBackgroundColor const):
(WebCore::ThemeGtk::inactiveSelectionForegroundColor const):
(WebCore::ThemeGtk::inactiveSelectionBackgroundColor const):

  • platform/gtk/ThemeGtk.h: Renamed from Source/WebCore/platform/wpe/ScrollbarThemeWPE.h.
  • rendering/RenderThemeAdwaita.cpp: Renamed from Source/WebCore/platform/wpe/RenderThemeWPE.cpp.

(WebCore::RenderTheme::singleton):
(WebCore::RenderThemeAdwaita::supportsFocusRing const):
(WebCore::RenderThemeAdwaita::shouldHaveCapsLockIndicator const):
(WebCore::RenderThemeAdwaita::platformActiveSelectionBackgroundColor const):
(WebCore::RenderThemeAdwaita::platformInactiveSelectionBackgroundColor const):
(WebCore::RenderThemeAdwaita::platformActiveSelectionForegroundColor const):
(WebCore::RenderThemeAdwaita::platformInactiveSelectionForegroundColor const):
(WebCore::RenderThemeAdwaita::platformActiveListBoxSelectionBackgroundColor const):
(WebCore::RenderThemeAdwaita::platformInactiveListBoxSelectionBackgroundColor const):
(WebCore::RenderThemeAdwaita::platformActiveListBoxSelectionForegroundColor const):
(WebCore::RenderThemeAdwaita::platformInactiveListBoxSelectionForegroundColor const):
(WebCore::RenderThemeAdwaita::platformFocusRingColor const):
(WebCore::RenderThemeAdwaita::platformColorsDidChange):
(WebCore::RenderThemeAdwaita::extraDefaultStyleSheet):
(WebCore::RenderThemeAdwaita::extraMediaControlsStyleSheet):
(WebCore::RenderThemeAdwaita::mediaControlsScript):
(WebCore::RenderThemeAdwaita::paintTextField):
(WebCore::RenderThemeAdwaita::paintTextArea):
(WebCore::RenderThemeAdwaita::paintSearchField):
(WebCore::RenderThemeAdwaita::popupInternalPaddingBox const):
(WebCore::RenderThemeAdwaita::paintMenuList):
(WebCore::RenderThemeAdwaita::paintMenuListButtonDecorations):
(WebCore::RenderThemeAdwaita::animationRepeatIntervalForProgressBar const):
(WebCore::RenderThemeAdwaita::animationDurationForProgressBar const):
(WebCore::RenderThemeAdwaita::progressBarRectForBounds const):
(WebCore::RenderThemeAdwaita::paintProgressBar):
(WebCore::RenderThemeAdwaita::paintSliderTrack):
(WebCore::RenderThemeAdwaita::adjustSliderThumbSize const):
(WebCore::RenderThemeAdwaita::paintSliderThumb):
(WebCore::RenderThemeAdwaita::paintMediaSliderTrack):
(WebCore::RenderThemeAdwaita::paintMediaVolumeSliderTrack):
(WebCore::RenderThemeAdwaita::sliderTickSize const):
(WebCore::RenderThemeAdwaita::sliderTickOffsetFromTrackCenter const):
(WebCore::RenderThemeAdwaita::adjustListButtonStyle const):

  • rendering/RenderThemeAdwaita.h: Renamed from Source/WebCore/platform/wpe/RenderThemeWPE.h.
  • rendering/RenderThemeGtk.cpp:

(WebCore::RenderThemeGtk::updateCachedSystemFontDescription const):
(WebCore::RenderThemeGtk::caretBlinkInterval const):

  • rendering/RenderThemeGtk.h:

Source/WebKit:

  • WebProcess/WebPage/gtk/WebPageGtk.cpp:

(WebKit::WebPage::themeDidChange): Notify RenderTheme about the theme change to clear the colors cache.

Source/WTF:

Enable USE_NEW_THEME for the GTK port.

  • wtf/PlatformUse.h:
1:19 AM Changeset in webkit [257298] by Philippe Normand
  • 2 edits in trunk/Source/WTF

[Linux] StackTrace symbols are not demangled
https://bugs.webkit.org/show_bug.cgi?id=207933

Reviewed by Yusuke Suzuki.

Demangle symbols provided by backtrace_symbols.

  • wtf/StackTrace.cpp:

(WTF::StackTrace::dump const):

Feb 24, 2020: Yesterday

11:37 PM Changeset in webkit [257297] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix for WinCairo port
https://bugs.webkit.org/show_bug.cgi?id=208112
<rdar://problem/59709701>

WebCore\layout/inlineformatting/LineLayoutContext.cpp(337): error C2397: conversion from 'size_t' to 'WTF::Optional<unsigned int>' requires a narrowing conversion
WebCore\layout/inlineformatting/LineLayoutContext.cpp(361): error C2397: conversion from 'size_t' to 'WTF::Optional<unsigned int>' requires a narrowing conversion

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::close): Changed the type of 'trailingInlineItemIndex' from 'auto' to 'unsigned'.

11:25 PM Changeset in webkit [257296] by Darin Adler
  • 25 edits in trunk/Source/WebCore

Refactor TextTrackCue to use more traditional design patterns
https://bugs.webkit.org/show_bug.cgi?id=208114

Reviewed by Alex Christensen.

  • Fixed is<VTTCue> to accurately match the class hierarchy. Before, TextTrackCueGeneric derived from VTTCue, but is<VTTCue> would return false. Normalizing this lets us use is<VTTCue> and downcast<VTTCue> in the conventional way.
  • Made the TextTrackCue::isEqual function a non-virtual function that calls a virtual function TextTrackCue::cueContentsMatch. Before there was a mix of overridding both functions in derived classes, achieving the same thing in multiple ways with unneccessary additional virtual function call overhead.
  • Made the TextTrackCue::toJSONString function a non-virtual function that calls a virtual funtion TextTrackCue::toJSON. Before there were two virtual functions and inconsistent patterns for which one was overridden.
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::textTrackRemoveCue): Use downcast instead of toVTTCue.

  • html/HTMLMediaElement.h: Removed some unneeded includes.
  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlTextTrackContainerElement::updateDisplay): Use downcast
instead of toVTTCue.
(WebCore::MediaControlTextTrackContainerElement::processActiveVTTCue): Removed
an assertion that no longer makes sense; guaranteed at runtime.

  • html/shadow/MediaControls.h: Removed an unneeded include.
  • html/track/DataCue.cpp:

(WebCore::toDataCue): Deleted. No need for this function since we can use
downcast<DataCue> instead.
(WebCore::DataCue::cueContentsMatch const): Removed unnecessary check of cueType.
The isEqual function checks cueType and only calls this function if it matches.
Use downcast instead of toDataCue.
(WebCore::DataCue::isEqual const): Deleted. Base class now handles this.
(WebCore::DataCue::doesExtendCue const): Deleted. Was never being called.
(WebCore::DataCue::toJSONString const): Deleted. Override toJSON instead.
(WebCore::DataCue::toJSON const): Moved the code here that used to be in toJSONString.

  • html/track/DataCue.h: Reduced includes. Made overridden functions private

and final. Removed functions as mmentioned above. Changed WTF::LogArgument implementation
to just forward to TextTrackCue instead of reimplementing here.

  • html/track/InbandDataTextTrack.cpp:

(WebCore::InbandDataTextTrack::removeCue): Use downcast instead of toDataCue.

  • html/track/InbandGenericTextTrack.cpp: Removed an unneeded include.
  • html/track/LoadableTextTrack.cpp:

(WebCore::LoadableTextTrack::LoadableTextTrack): Removed unneeded initialization of
m_isDefault, which is initialized in the class definition.
(WebCore::LoadableTextTrack::newCuesAvailable): Removed unneeded call to toVTTCue,
taking advantage of the better interface of getNewCues, which now returns
Vector<Ref<VTTCue>>, making the type explicit.

  • html/track/TextTrack.cpp:

(WebCore::TextTrack::addCue): Use is<DataCue> instead of checking cueType.

  • html/track/TextTrackCue.cpp:

(WebCore::TextTrackCue::create): Fixed confusing naming that called the fragment the
cue is contained in "cueDocument"; call it cueFragment instead. This constructor
already required that the ScriptExecutionContext be a Document. Did the type cast
for that up front. In the future would be good to change the argument type to Document.
Also fixed how the newly-created fragment is passed to the constructor. The old code
tried to use DocumentFragment&& to pass ownership, but since this is a reference-counted
object it needs to be Ref<DocumentFragment>&&.
(WebCore::TextTrackCue::TextTrackCue):
(WebCore::TextTrackCue::scriptExecutionContext const): Moved this here from the header
file so we can compile without TextTrackCue.h including Document.h.
(WebCore::TextTrackCue::cueContentsMatch const): Removed the code that checks cueType.
It's now isEqual that is responsible for checking that the cueType matches, and
cueContentsMatch is only called when the types are the same.
(WebCore::TextTrackCue::isEqual const): Reordered the boolean checks a bit so it's
easier to see the logic; no need for a cascade of if statements.
(WebCore::TextTrackCue::doesExtendCue const): Deleted. Was never being called.
(WebCore::operator<<): Use downcast instead of toVTTCue.

  • html/track/TextTrackCue.h: Made isEqual no longer virtual. The per-class behavior

is now all in the virtual cueContentsMatch function, only called by isEqual.
Removed uncalled doesExtendCue function. Added some argument names in cases where
the type alone did not make their purpose clear. Made some things more private.
Replaced m_scriptExecutionContext with m_document.

  • html/track/TextTrackCueGeneric.cpp:

(WebCore::TextTrackCueGeneric::create): Moved this function here from the header.
(WebCore::TextTrackCueGeneric::TextTrackCueGeneric): Initialized data members in the
class definition so they don't also need to be initialized here.
(WebCore::TextTrackCueGeneric::cueContentsMatch const): Rewrote using && rather than
castcading if statements, making the function shorter andd easier to read.
(WebCore::TextTrackCueGeneric::isEqual const): Deleted. Base class now handes this.
The old version had confusing logic to deal with checking cue type; can now do this
in a more straightforward way.
(WebCore::TextTrackCueGeneric::doesExtendCue const): Deleted. Was never called.
(WebCore::TextTrackCueGeneric::isOrderedBefore const): Use is<TextTrackCueGeneric>
and downcast<TextTrackCueGeneric>.
(WebCore::TextTrackCueGeneric::isPositionedAbove const): Ditto. Also merged two
if statements so there is less repeated logic.
(WebCore::TextTrackCueGeneric::toJSONString const): Deleted.
(WebCore::TextTrackCueGeneric::toJSON const): Moved code here that was in toJSONString.

  • html/track/TextTrackCueGeneric.h: Made things more private. Changed WTF::LogArgument

implementation to just forward to TextTrackCue instead of reimplementing here.

  • html/track/TextTrackCueList.cpp:

(WebCore::TextTrackCueList::create): Moved here from header.

  • html/track/TextTrackCueList.h: Ditto.
  • html/track/VTTCue.cpp: Moved undefinedPosition to be a private static constexpr

data member so it can be used in initialization.
(WebCore::VTTCueBox::applyCSSProperties): Use is<VTTCue> and downcast<VTTCue>.
(WebCore::VTTCue::create): Moved more overloads of this function here from the
header file.
(WebCore::VTTCue::VTTCue): Take Document instead of ScriptExecutionContext.
Also took the ScriptExecutionContext argument away from the initialize function.
(WebCore::VTTCue::initialize): Do less initialization here. This function is
only called in constructors, so it doesn't need to initialize anything that
is initialized in all constructors or initialized in the class definition.
What remains are things that require a little code to initialize and the
bitfields, which can't be initialized in the class definition.
(WebCore::VTTCue::setPosition): Rearranged the code a tiny bit.
(WebCore::copyWebVTTNodeToDOMTree): Made this a non-member function. Also changed
the argument types to use references.
(WebCore::VTTCue::getCueAsHTML): Updated for changes to copyWebVTTNodeToDOMTree.
(WebCore::VTTCue::removeDisplayTree): Check m_displayTree directly instead
of calling a hasDisplayTree function, since that's more a more straightforward
way to guard a subsequent line of code that then uses m_displayTree.
(WebCore::VTTCue::setCueSettings): Merged two if statements into one.
(WebCore::VTTCue::cueContentsMatch const): Rewrote using && rather than
castcading if statements, making the function shorter andd easier to read.
(WebCore::VTTCue::isEqual const): Deleted. Base class now handles this.
(WebCore::VTTCue::doesExtendCue const): Deleted. Was never called.
(WebCore::toVTTCue): Deleted.
(WebCore::VTTCue::toJSONString const): Deleted. Base class now handles this.
(WebCore::VTTCue::toJSON const): Added a comment.

  • html/track/VTTCue.h: Moved create functions out of header, made some things

more private and final, initialized more data members in the class definition.
Removed toVTTCue. Changed WTF::LogArgument implementation to just forward to
TextTrackCue instead of reimplementing here. Corrected the isType function so
it knows about both cue types that result in a VTTCue object. This allows us
to use is<VTTCue> and downcast<VTTCue> in the normal way. Removed the FIXME
saying we should do that.

  • loader/TextTrackLoader.cpp:

(WebCore::TextTrackLoader::getNewCues): Changed to return a Vector<Ref<VTTCue>>.
In modern C++ return value is better than an out argument for a function like
this, and the more-specific type helps us at the call sites.

  • loader/TextTrackLoader.h: Updated for the above.
  • page/CaptionUserPreferencesMediaAF.cpp: Removed unneeded include.
  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:

Use #pragma once and removed some unneded includes and forward declarations.

  • rendering/RenderVTTCue.cpp:

(WebCore::RenderVTTCue::RenderVTTCue): Use downcast<VTTCue>.
(WebCore::RenderVTTCue::layout): Removed unneeded call to toVTTCue.
(WebCore::RenderVTTCue::repositionGenericCue): Use downcast instead of
static_cast for TextTrackCueGeneric.

  • style/RuleSet.cpp: Removed unneeded include.
11:03 PM Changeset in webkit [257295] by ysuzuki@apple.com
  • 5 edits
    1 add in trunk

[WTF] Add tests for CompactRefPtrTuple
https://bugs.webkit.org/show_bug.cgi?id=208172

Reviewed by Darin Adler.

Source/WTF:

Include Noncopyable.h.

  • wtf/CompactRefPtrTuple.h:

Tools:

We copy tests from RefPtr for CompactRefPtrTuple to ensure that it is working correctly.
Many of tests are not necessary since currently CompactRefPtrTuple is non-copyable / non-movable.

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/CompactRefPtrTuple.cpp: Added.

(TestWebKitAPI::TEST):

10:22 PM Changeset in webkit [257294] by Chris Fleizach
  • 4 edits in trunk/Source/WebCore

AX: Support relative frames for isolated trees correctly
https://bugs.webkit.org/show_bug.cgi?id=208169
<rdar://problem/59746529>

Reviewed by Zalan Bujtas.

To support relative frames correctly for accessibility, we should:

1) Only expose for isolated tree clients.
2) Support FloatRects in the attribute variants.

This patch also fixes an issue where we weren't reserving capacity before using.

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::setObjectVectorProperty):

  • accessibility/isolatedtree/AXIsolatedObject.h:
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames]):
(-[WebAccessibilityObjectWrapper ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):

7:19 PM Changeset in webkit [257293] by ysuzuki@apple.com
  • 4 edits in trunk

Do not use target/icu.cmake
https://bugs.webkit.org/show_bug.cgi?id=208173

Reviewed by Don Olmstead.

icu.cmake is removed in r256731. Use find_package + ICU since WebKit offers find_package implementation
which can find appropriate system-installed ICU.

  • Source/cmake/OptionsFTW.cmake:
  • Source/cmake/OptionsJSCOnly.cmake:
  • Source/cmake/OptionsMac.cmake:
7:02 PM Changeset in webkit [257292] by ChangSeok Oh
  • 2 edits in trunk/Source/WebCore

PS-2019-006: [GTK] WebKit - AXObjectCache - m_deferredFocusedNodeChange - UaF
https://bugs.webkit.org/show_bug.cgi?id=204342

Reviewed by Carlos Garcia Campos.

m_deferredFocusedNodeChange keeps pairs of a old node and a new one
to update a focused node later. When a node is removed in the document,
it is also removed from the pair vector. The problem is only comparing
the new node in each pair with a removed node decides the removal.
In the case where the removed node lives in m_deferredFocusedNodeChange
as an old node, a crash happens while we get a renderer of the removed node
to handle focused elements. To fix this, we find all entries of which old node
is matched to the removed node, and set their first value null.

No new tests since no functionality changed.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::remove):

5:42 PM Changeset in webkit [257291] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC][Floats] Fix float boxes embedded to unbreakable inline runs.
https://bugs.webkit.org/show_bug.cgi?id=208112
<rdar://problem/59709701>

Reviewed by Antti Koivisto.

This patch fixes the cases when the float is embedded to otherwise unbreakable inline content.
e.g. "text_<div style="float: left"></div>_content"

The logic goes like this:

  1. collect the floats inside the unbreakable candidate content
  2. mark them intrusive if they potentially influence the current line
  3. at handleFloatsAndInlineContent(), adjust available width with the intrusive floats first
  4. feed the inline content to the LineBreaker
  5. commit the float content based on the line breaking result (commit none, partially, all).

(Note that this algorithm produces a different layout compared to WebKit trunk. It mostly matches FireFox though.)

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthForConstraint const):
(WebCore::Layout::InlineFormattingContext::setDisplayBoxesForLine):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::moveLogicalLeft):
(WebCore::Layout::LineBuilder::moveLogicalRight):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::isAtSoftWrapOpportunity):
(WebCore::Layout::nextWrapOpportunity):
(WebCore::Layout::LineCandidate::FloatContent::append):
(WebCore::Layout::LineLayoutContext::layoutLine):
(WebCore::Layout::LineLayoutContext::close):
(WebCore::Layout::LineLayoutContext::nextContentForLine):
(WebCore::Layout::LineLayoutContext::addIntrusiveFloats):
(WebCore::Layout::LineLayoutContext::revertIntrusiveFloats):
(WebCore::Layout::LineLayoutContext::handleFloatsAndInlineContent):
(WebCore::Layout::isLineConsideredEmpty): Deleted.
(WebCore::Layout::LineLayoutContext::tryAddingFloatContent): Deleted.
(WebCore::Layout::LineLayoutContext::tryAddingInlineItems): Deleted.

  • layout/inlineformatting/LineLayoutContext.h:
5:38 PM Changeset in webkit [257290] by Simon Fraser
  • 4 edits in trunk/Source

Rename the clashing WebOverlayLayer classes
https://bugs.webkit.org/show_bug.cgi?id=208156
rdar://problem/59739250

Reviewed by Tim Horton.

The name WebOverlayLayer was used in two places. Rename them both to more specific names.

Source/WebCore:

  • page/cocoa/ResourceUsageOverlayCocoa.mm:

(-[WebResourceUsageOverlayLayer initWithResourceUsageOverlay:]):
(WebCore::ResourceUsageOverlay::platformInitialize):
(-[WebOverlayLayer initWithResourceUsageOverlay:]): Deleted.
(-[WebOverlayLayer drawInContext:]): Deleted.

Source/WebKitLegacy/mac:

  • WebView/WebVideoFullscreenController.mm:

(-[WebVideoFullscreenController init]):
(-[WebOverlayLayer layoutSublayers]): Deleted.

5:22 PM Changeset in webkit [257289] by commit-queue@webkit.org
  • 18 edits
    30 adds in trunk

Add canShare function for Web Share API v2
https://bugs.webkit.org/show_bug.cgi?id=207491

Patch by Nikos Mouchtaris <nmouchtaris@apple.com> on 2020-02-24
Reviewed by Tim Horton.

LayoutTests/imported/w3c:

Imported new web platform tests for canShare function.

  • resources/import-expectations.json:
  • web-platform-tests/web-share/OWNERS: Removed.
  • web-platform-tests/web-share/idlharness.https.html: Removed.
  • web-platform-tests/web-share/resources/manual-helper.js:

(setupManualShareTest):
(callWhenButtonClicked):

  • web-platform-tests/web-share/resources/w3c-import.log:
  • web-platform-tests/web-share/share-empty.https.html:
  • web-platform-tests/web-share/share-url-invalid.https.html:
  • web-platform-tests/web-share/share-without-user-gesture.https.html:
  • web-platform-tests/web-share/w3c-import.log:

Source/WebCore:

Added files member to share data and canShare function to
navigator.cpp. Can share function should always be used
before call to share, and can be used to check if file
sharing is implemented by passing a share data object with
only files.

Imported new Web Platform Tests to test new function.

  • page/Navigator.cpp:

(WebCore::Navigator::canShare): Will currently return false for
only file share data objects, since file sharing is currently
not implemented.
(WebCore::Navigator::share): Changed to use canShare to
determine if data is shareable.

  • page/Navigator.h:
  • page/NavigatorShare.idl:
  • page/ShareData.h:
  • page/ShareData.idl:
5:08 PM Changeset in webkit [257288] by pvollan@apple.com
  • 2 edits in trunk

[Win] Fix AppleWin build.
https://bugs.webkit.org/show_bug.cgi?id=208164

Unreviewed build fix.

Allow a warning which happens when building with older SDKs.

  • Source/cmake/OptionsMSVC.cmake:
5:03 PM Changeset in webkit [257287] by Alan Coon
  • 8 edits in branches/safari-609.1.20.0-branch/Source

Versioning.

5:02 PM Changeset in webkit [257286] by Alan Coon
  • 8 edits in branches/safari-609.1.20.111-branch/Source

Versioning.

4:57 PM Changeset in webkit [257285] by ysuzuki@apple.com
  • 6 edits in trunk/Source

[WTF] Attach WARN_UNUSED_RETURN to makeScopeExit and fix existing wrong usage
https://bugs.webkit.org/show_bug.cgi?id=208162

Reviewed by Robin Morisset.

Source/JavaScriptCore:

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseUnaryExpression):

Source/WebCore:

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::process):

Source/WTF:

We should hold ScopeExit to call destructor when we exit from the scope actually.
Putting WARN_UNUSED_RETURN to fix existing misuse.

  • wtf/Scope.h:
4:55 PM Changeset in webkit [257284] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] commit-queue should check that patch have appropriate review flag
https://bugs.webkit.org/show_bug.cgi?id=208138

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(BugzillaMixin._is_patch_obsolete): Drive-by fix to set build properties for patch author, commiter and reviewer.
(BugzillaMixin._is_patch_cq_plus):
(BugzillaMixin._does_patch_have_acceptable_review_flag): Method to check if patch have r? or r- flag.
(ValidatePatch.start):

4:48 PM Changeset in webkit [257283] by Justin Fan
  • 9 edits in trunk/LayoutTests

[WebGL] Unskip runnable WebGL 2.0.0 conformance suite for mac
https://bugs.webkit.org/show_bug.cgi?id=208078

Unreviewed test gardening.

Actually run WebGL 2 tests. Update expectations for ANGLE backend.

  • TestExpectations: Unskip non-DEQP WebGL 2.0.0 tests that do not crash nor timeout.
  • platform/ios-wk2/TestExpectations: Continue to skip 2.0.0 on iOS WK2 until discrepancies can be addressed.
  • webgl/2.0.0/conformance2/renderbuffers/framebuffer-object-attachment-expected.txt:
  • webgl/2.0.0/conformance2/renderbuffers/invalidate-framebuffer-expected.txt:
  • webgl/2.0.0/conformance2/renderbuffers/multisampled-renderbuffer-initialization-expected.txt:
  • webgl/2.0.0/conformance2/rendering/blitframebuffer-test-expected.txt:
  • webgl/2.0.0/conformance2/rendering/rgb-format-support-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/tex-3d-size-limit-expected.txt:
4:46 PM Changeset in webkit [257282] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 Debug ] is inspector/dom-debugger/attribute-modified-style.html is flaky crashing.
https://bugs.webkit.org/show_bug.cgi?id=208167

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:41 PM Changeset in webkit [257281] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.3.3

Tag Safari-609.1.20.3.3.

4:40 PM Changeset in webkit [257280] by Alan Bujtas
  • 2 edits in trunk/LayoutTests

REGRESSION (r257126): fast/frames/flattening/iframe-tiny.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=208055
<rdar://problem/59668089>

Reviewed by Simon Fraser.

In the frame flattening context when optional layout is delayed, getComputedStyle() might return
the un-flattened geometry unless the iframe element is forced to get laid out.

  1. main frame content is loaded and laid out -> if the iframe content is not ready yet, we don't initiate iframe flattening.
  2. iframe content is ready -> layout is scheduled.
  3. getComputedStyle() is called which initiates a style update/layout on the main frame, but only dirty boxes trigger layout (the iframe renderer itself is not dirty <- this is where frame flattening fails: webkit.org/b/208161)
  4. getComputedStyle() returns with the "stale" geometry.
  • fast/frames/flattening/iframe-tiny.html:
4:36 PM Changeset in webkit [257279] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.2.3

Tag Safari-609.1.20.2.3.

4:35 PM Changeset in webkit [257278] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.111.4

Tag Safari-609.1.20.111.4.

4:34 PM Changeset in webkit [257277] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, mark http/tests/cookies/document-cookie-after-showModalDialog.html as flaky on WK1.

  • platform/mac-wk1/TestExpectations:
4:30 PM Changeset in webkit [257276] by Alan Coon
  • 1 edit in branches/safari-609-branch/Source/WebKitLegacy/mac/WebView/WebPreferences.mm

Apply patch. rdar://problem/59736045

4:27 PM Changeset in webkit [257275] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.0.4

Tag Safari-609.1.20.0.4.

4:11 PM Changeset in webkit [257274] by Alan Coon
  • 3 edits in branches/safari-609.1.20.3-branch/Source/JavaScriptCore

Cherry-pick r257134. rdar://problem/59676909

Make support for bytecode caching more robust against file corruption.
https://bugs.webkit.org/show_bug.cgi?id=207972
<rdar://problem/59260595>

Reviewed by Yusuke Suzuki.

If a bytecode cache file is corrupted, we currently will always crash every time
we try to read it (in perpetuity as long as the corrupted cache file continues to
exist on disk). To guard against this, we'll harden the bytecode caching mechanism
as follows:

  1. Modify the writeCache operation to always write the cache file in a transactional manner i.e. we'll first write to a .tmp file, and then rename the .tmp file to the cache file only if the entire file has been written in completeness.

This ensures that we won't get corrupted cache files due to interrupted writes.

  1. Modify the writeCache operation to also compute a SHA1 hash of the cache file and append the hash at end of the file. Modify the readCache operation to first authenticate the SHA1 hash before allowing the cache file to be used. If the hash does not match, the file is bad, and we'll just delete it.

This ensures that we won't be crashing while decoding a corrupted cache file.

Manually tested with the following scenarios and ensuring that the client recovers
with no crashes:

  1. no cache file on disk.
  2. a 0-sized cache file on a disk.
  3. a truncated cache file on disk.
  4. a corrupted cache file on disk.
  5. an uncorrupted cache file on disk.

Also added some static_asserts in CachedTypes.cpp to document some invariants that
the pre-existing code is dependent on.

  • API/JSScript.mm: (-[JSScript readCache]): (-[JSScript writeCache:]):
  • runtime/CachedTypes.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257134 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4:11 PM Changeset in webkit [257273] by Alan Coon
  • 10 edits in branches/safari-609.1.20.3-branch/Source/WebKit

Cherry-pick r256967. rdar://problem/59654613

Regression(r247567) HTTP Disk cache capacity is no longer set
https://bugs.webkit.org/show_bug.cgi?id=207959
<rdar://problem/59603972>

Reviewed by Alex Christensen.

NetworkProcess::initializeNetworkProcess() was setting the cache model, which
would iterate over all network sessions to update their network cache capacity.
The issue was that network sessions were not constructed yet at this point.
When the network session(s) would get created later on, they would construct
their NetworkCache and it would use the default capacity (i.e.
std::numeric_limits<size_t>::max()).

To make this safer, I have moved the capacity computation to the Cache::open()
method and now pass the capacity when constructing the network cache storage.

  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::initializeNetworkProcess): (WebKit::NetworkProcess::setCacheModelSynchronouslyForTesting): (WebKit::NetworkProcess::setCacheModel):
  • NetworkProcess/NetworkProcess.h: (WebKit::NetworkProcess::cacheModel const):
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/cache/CacheStorageEngineCaches.cpp: (WebKit::CacheStorage::Caches::initialize):
  • NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::computeCapacity): (WebKit::NetworkCache::Cache::open): (WebKit::NetworkCache::Cache::capacity const): (WebKit::NetworkCache::Cache::updateCapacity): (WebKit::NetworkCache::Cache::setCapacity): Deleted.
  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::open): (WebKit::NetworkCache::Storage::Storage): (WebKit::NetworkCache::Storage::setCapacity):
  • NetworkProcess/cache/NetworkCacheStorage.h:
  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::setCacheModel):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256967 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4:11 PM Changeset in webkit [257272] by Alan Coon
  • 6 edits in branches/safari-609.1.20.3-branch/Source/WebKit

Cherry-pick r256881. rdar://problem/59654579

Drop getSandboxExtensionsForBlobFiles() as it is dead code
https://bugs.webkit.org/show_bug.cgi?id=207909
<rdar://problem/59562180>

Reviewed by Per Arne Vollan.

  • NetworkProcess/NetworkProcess.cpp:
  • NetworkProcess/NetworkProcess.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:
  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256881 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4:11 PM Changeset in webkit [257271] by Alan Coon
  • 3 edits in branches/safari-609.1.20.3-branch/Source/WebKit

Cherry-pick r256857. rdar://problem/59654281

NetworkDataTask should not expect its session wrapper to be always live
https://bugs.webkit.org/show_bug.cgi?id=207903
rdar://problem/59291486

Reviewed by Alex Christensen.

NetworkDataTaskCocoa should take a weak pointer to its session wrapper.
If the session wrapper is still valid, then we can remove the task from the session wrapper map.
We cannot guarantee session wrapper is valid since NetworkDataTask is ref counted.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): (WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256857 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:51 PM Changeset in webkit [257270] by keith_miller@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

LLInt should fast path for jtrue/false on Symbols and Objects
https://bugs.webkit.org/show_bug.cgi?id=208151

Reviewed by Yusuke Suzuki.

64-bit interpreter can fast path the case where an object or symbol
is passed to a jtrue or jfalse opcode. This is because these values
are always truthy.

Also, fix some weird indentation in LowLevelInterpreter.asm.

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/JSType.h:
3:51 PM Changeset in webkit [257269] by jiewen_tan@apple.com
  • 27 edits
    1 copy
    4 adds in trunk

[WebAuthn] Implement SPI for the platform authenticator
https://bugs.webkit.org/show_bug.cgi?id=208087
<rdar://problem/59369305>

Reviewed by Brent Fulgham.

Source/WebCore:

Enhances AuthenticatorAssertionResponse to accommondate responses
returned from the platform authenticator.

Covered by API tests.

  • Modules/webauthn/AuthenticatorAssertionResponse.cpp:

(WebCore::AuthenticatorAssertionResponse::create):
(WebCore::AuthenticatorAssertionResponse::setAuthenticatorData):
(WebCore::AuthenticatorAssertionResponse::AuthenticatorAssertionResponse):

  • Modules/webauthn/AuthenticatorAssertionResponse.h:

(WebCore::AuthenticatorAssertionResponse::authenticatorData const):
(WebCore::AuthenticatorAssertionResponse::signature const):
(WebCore::AuthenticatorAssertionResponse::name const):
(WebCore::AuthenticatorAssertionResponse::displayName const):
(WebCore::AuthenticatorAssertionResponse::numberOfCredentials const):
(WebCore::AuthenticatorAssertionResponse::accessControl const):
(WebCore::AuthenticatorAssertionResponse::setSignature):
(WebCore::AuthenticatorAssertionResponse::setName):
(WebCore::AuthenticatorAssertionResponse::setDisplayName):
(WebCore::AuthenticatorAssertionResponse::setNumberOfCredentials):

Source/WebKit:

Here is the newly added SPI:
typedef NS_ENUM(NSInteger, _WKWebAuthenticationPanelUpdate) {

...
_WKWebAuthenticationPanelUpdateLAError,
_WKWebAuthenticationPanelUpdateLADuplicateCredential,
_WKWebAuthenticationPanelUpdateLANoCredential,

};

typedef NS_ENUM(NSInteger, _WKWebAuthenticationTransport) {

...
_WKWebAuthenticationTransportInternal,

};

@protocol _WKWebAuthenticationPanelDelegate <NSObject>
@optional
...

  • (void)panel:(_WKWebAuthenticationPanel *)panel verifyUserWithAccessControl:(SecAccessControlRef)accessControl completionHandler:(void ()(LAContext *))completionHandler;

@end

Illustrations:
1) _WKWebAuthenticationPanelUpdate: Three errors are added to help clients present meaningful error messages to users.
a) WKWebAuthenticationPanelUpdateLAError: An internal error, clients should inform users and terminate the platform
authentication process. This error can be returned at any time.
b) _WKWebAuthenticationPanelUpdateLADuplicateCredential: It means a credential is found to match an entry in the
excludeList. Clients should inform users and terminate the platform authentication process. This error will only be
returned during makeCredential and before verifyUserWithAccessControl delegate.
c) _WKWebAuthenticationPanelUpdateLANoCredential: It means no credentials are found. Clients should inform users and
terminate the platform authentication process. This error will only be returned during getAssertion and before
verifyUserWithAccessControl delegate.

2) _WKWebAuthenticationTransport: _WKWebAuthenticationTransportInternal is added such that clients can learn platform
authenticator will be used from _WKWebAuthenticationPanel.transports.

3) verifyUserWithAccessControl: A delegate that will be called during makeCredential or getAssertion when the platform
authenticator is involved. This delegate is used to obtain user verification from a LAContext. In addition, the LAContext
should evaluate the passed accessControl, such that the SEP protected credential private key can be used. A typical
example will be [LAContext evaluateAccessControl:accessControl operation:LAAccessControlOperationUseKeySign localizedReason:reply:].
Noted, for getAssertion, selectAssertionResponse will be called before verifyUserWithAccessControl. So users need to be
prompted to select a credential before the user verification.

In the scenario when both the platform authenticator and external authenticators are requested. Clients are advised to
wait until verifyUserWithAccessControl to show the combined UI. If any of the LAError states are received before
verifyUserWithAccessControl, clients should then only show the external authenticator UI. Also, platform authenticator and
external authenticators are being discovered at the same time, which means a user can plug in a security key at anytime.
If a valid response is received from the security key, the whole ceremony will be terminated.

Besides introducing the SPI, and all the necessary plumbing to make it happen. This patch also:
1) adds LocalAuthenticationSPI, which is used to check whether a given LAContext is unlocked or not;
2) improves MockLocalConnection such that mock testing can still be ran.

  • Platform/spi/Cocoa/LocalAuthenticationSPI.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticationSoftLink.h.
  • UIProcess/API/APIWebAuthenticationPanel.cpp:

(API::WebAuthenticationPanel::WebAuthenticationPanel):

  • UIProcess/API/APIWebAuthenticationPanelClient.h:

(API::WebAuthenticationPanelClient::verifyUser const):

  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h:
  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:

(wkWebAuthenticationTransport):

  • UIProcess/WebAuthentication/Authenticator.h:
  • UIProcess/WebAuthentication/AuthenticatorManager.cpp:

(WebKit::AuthenticatorManager::verifyUser):

  • UIProcess/WebAuthentication/AuthenticatorManager.h:
  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticationSoftLink.h:
  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.h:
  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticatorInternal::toNSData):
(WebKit::LocalAuthenticatorInternal::toArrayBuffer):
(WebKit::LocalAuthenticator::makeCredential):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterUserConsented):
(WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):
(WebKit::LocalAuthenticator::getAssertion):
(WebKit::LocalAuthenticator::continueGetAssertionAfterResponseSelected):
(WebKit::LocalAuthenticator::continueGetAssertionAfterUserConsented):
(WebKit::LocalAuthenticator::receiveException const):

  • UIProcess/WebAuthentication/Cocoa/LocalConnection.h:

(WebKit::LocalConnection::filterResponses const):

  • UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:

(WebKit::LocalConnection::isUnlocked const):
(WebKit::LocalConnection::getUserConsent const): Deleted.
(WebKit::LocalConnection::selectCredential const): Deleted.

  • UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.h:
  • UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm:

(WebKit::WebAuthenticationPanelClient::WebAuthenticationPanelClient):
(WebKit::wkWebAuthenticationPanelUpdate):
(WebKit::WebAuthenticationPanelClient::selectAssertionResponse const):
(WebKit::WebAuthenticationPanelClient::verifyUser const):

  • UIProcess/WebAuthentication/Mock/MockLocalConnection.h:
  • UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:

(WebKit::MockLocalConnection::isUnlocked const):
(WebKit::MockLocalConnection::filterResponses const):
(WebKit::MockLocalConnection::getUserConsent const): Deleted.
(WebKit::MockLocalConnection::selectCredential const): Deleted.

  • UIProcess/WebAuthentication/WebAuthenticationFlags.h:
  • WebKit.xcodeproj/project.pbxproj:

Tools:

Besides adding API tests, this patch also teaches TestWebKitAPI to use restricted entitlements.

  • TestWebKitAPI/Configurations/TestWebKitAPI-macOS.entitlements:
  • TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm:

(-[TestWebAuthenticationPanelDelegate panel:updateWebAuthenticationPanel:]):
(-[TestWebAuthenticationPanelDelegate panel:selectAssertionResponse:completionHandler:]):
(-[TestWebAuthenticationPanelDelegate panel:verifyUserWithAccessControl:completionHandler:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion-la.html: Copied from Tools/TestWebKitAPI/Tests/WebKitCocoa/web-authentication-get-assertion.html.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-la-duplicate-credential.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-la-error.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/web-authentication-make-credential-la.html: Added.
3:45 PM Changeset in webkit [257268] by Simon Fraser
  • 104 edits in trunk

Remove geometry information from the scrolling tree
https://bugs.webkit.org/show_bug.cgi?id=208085

Reviewed by Sam Weinig.

The scrolling tree doesn't have enough information to do hit-testing because it has
no representation of layers that overlap scrollers. We'll have to do hit-testing another
way, so remove hit-testing-geometry data from the scrolling tree.

Source/WebCore:

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::setRectRelativeToParentNode): Deleted.

  • page/scrolling/AsyncScrollingCoordinator.h:
  • page/scrolling/ScrollingCoordinator.h:

(WebCore::ScrollingCoordinator::setRectRelativeToParentNode): Deleted.

  • page/scrolling/ScrollingStateFrameHostingNode.cpp:

(WebCore::ScrollingStateFrameHostingNode::ScrollingStateFrameHostingNode):
(WebCore::ScrollingStateFrameHostingNode::dumpProperties const):
(WebCore::ScrollingStateFrameHostingNode::setPropertyChangedBitsAfterReattach): Deleted.
(WebCore::ScrollingStateFrameHostingNode::setParentRelativeScrollableRect): Deleted.

  • page/scrolling/ScrollingStateFrameHostingNode.h:
  • page/scrolling/ScrollingStateScrollingNode.cpp:

(WebCore::ScrollingStateScrollingNode::ScrollingStateScrollingNode):
(WebCore::ScrollingStateScrollingNode::setPropertyChangedBitsAfterReattach):
(WebCore::ScrollingStateScrollingNode::dumpProperties const):
(WebCore::ScrollingStateScrollingNode::setParentRelativeScrollableRect): Deleted.

  • page/scrolling/ScrollingStateScrollingNode.h:

(WebCore::ScrollingStateScrollingNode::parentRelativeScrollableRect const): Deleted.

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::handleWheelEvent):
(WebCore::ScrollingTree::scrollingNodeForPoint):

  • page/scrolling/ScrollingTree.h:
  • page/scrolling/ScrollingTreeFrameHostingNode.cpp:

(WebCore::ScrollingTreeFrameHostingNode::commitStateBeforeChildren):
(WebCore::ScrollingTreeFrameHostingNode::dumpProperties const):
(WebCore::ScrollingTreeFrameHostingNode::parentToLocalPoint const): Deleted.

  • page/scrolling/ScrollingTreeFrameHostingNode.h:

(WebCore::ScrollingTreeFrameHostingNode::parentRelativeScrollableRect const): Deleted.

  • page/scrolling/ScrollingTreeFrameScrollingNode.cpp:

(WebCore::ScrollingTreeFrameScrollingNode::parentToLocalPoint const): Deleted.
(WebCore::ScrollingTreeFrameScrollingNode::localToContentsPoint const): Deleted.

  • page/scrolling/ScrollingTreeFrameScrollingNode.h:
  • page/scrolling/ScrollingTreeNode.cpp:

(WebCore::ScrollingTreeNode::ScrollingTreeNode):
(WebCore::ScrollingTreeNode::scrollingNodeForPoint const): Deleted.

  • page/scrolling/ScrollingTreeNode.h:

(WebCore::ScrollingTreeNode::parentToLocalPoint const): Deleted.
(WebCore::ScrollingTreeNode::localToContentsPoint const): Deleted.

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::commitStateBeforeChildren):
(WebCore::ScrollingTreeScrollingNode::dumpProperties const):
(WebCore::ScrollingTreeScrollingNode::parentToLocalPoint const): Deleted.
(WebCore::ScrollingTreeScrollingNode::localToContentsPoint const): Deleted.
(WebCore::ScrollingTreeScrollingNode::scrollingNodeForPoint const): Deleted.

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingRole):
(WebCore::RenderLayerCompositor::updateScrollingNodeForFrameHostingRole):
(WebCore::RenderLayerCompositor::rootParentRelativeScrollableRect const): Deleted.

  • rendering/RenderLayerCompositor.h:

Source/WebKit:

  • Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:

(ArgumentCoder<ScrollingStateFrameHostingNode>::encode):

LayoutTests:

  • fast/scrolling/ios/change-scrollability-on-content-resize-expected.txt:
  • fast/scrolling/ios/change-scrollability-on-content-resize-nested-expected.txt:
  • fast/visual-viewport/tiled-drawing/zoomed-fixed-scrolled-down-expected.txt:
  • fast/visual-viewport/tiled-drawing/zoomed-fixed-scrolled-down-then-up-expected.txt:
  • fast/visual-viewport/tiled-drawing/zoomed-fixed-scrolling-layers-state-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/absolute-inside-stacking-in-scroller-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/clipped-layer-in-overflow-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/clipped-layer-in-overflow-nested-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/composited-in-absolute-in-stacking-context-overflow-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/gain-scrolling-node-parent-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/lose-scrolling-node-parent-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-absolute-in-absolute-overflow-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-absolute-in-overflow-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-absolute-in-relative-in-overflow-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-overflow-scroll-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/overflow-in-fixed-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/positioned-nodes-complex-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/positioned-nodes-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/remove-coordinated-frame-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/remove-scrolling-role-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/reparent-across-compositing-layers-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/reparent-with-layer-removal-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/scrolling-tree-is-z-order-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/sticky-in-overflow-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt:
  • scrollingcoordinator/scrolling-tree/absolute-in-nested-sc-scrollers-expected.txt:
  • scrollingcoordinator/scrolling-tree/absolute-inside-stacking-in-scroller-expected.txt:
  • scrollingcoordinator/scrolling-tree/clipped-layer-in-overflow-expected.txt:
  • scrollingcoordinator/scrolling-tree/clipped-layer-in-overflow-nested-expected.txt:
  • scrollingcoordinator/scrolling-tree/composited-in-absolute-in-overflow-expected.txt:
  • scrollingcoordinator/scrolling-tree/composited-in-absolute-in-stacking-context-overflow-expected.txt:
  • scrollingcoordinator/scrolling-tree/coordinated-frame-expected.txt:
  • scrollingcoordinator/scrolling-tree/coordinated-frame-gain-scrolling-ancestor-expected.txt:
  • scrollingcoordinator/scrolling-tree/coordinated-frame-in-fixed-expected.txt:
  • scrollingcoordinator/scrolling-tree/coordinated-frame-lose-scrolling-ancestor-expected.txt:
  • scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt:
  • scrollingcoordinator/scrolling-tree/gain-scrolling-node-parent-expected.txt:
  • scrollingcoordinator/scrolling-tree/lose-scrolling-node-parent-expected.txt:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-absolute-overflow-expected.txt:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-overflow-expected.txt:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-relative-in-overflow-expected.txt:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow-expected.txt:
  • scrollingcoordinator/scrolling-tree/nested-overflow-scroll-expected.txt:
  • scrollingcoordinator/scrolling-tree/overflow-in-fixed-expected.txt:
  • scrollingcoordinator/scrolling-tree/positioned-nodes-complex-expected.txt:
  • scrollingcoordinator/scrolling-tree/positioned-nodes-expected.txt:
  • scrollingcoordinator/scrolling-tree/remove-coordinated-frame-expected.txt:
  • scrollingcoordinator/scrolling-tree/remove-scrolling-role-expected.txt:
  • scrollingcoordinator/scrolling-tree/reparent-across-compositing-layers-expected.txt:
  • scrollingcoordinator/scrolling-tree/reparent-with-layer-removal-expected.txt:
  • scrollingcoordinator/scrolling-tree/scrolling-tree-includes-frame-expected.txt:
  • scrollingcoordinator/scrolling-tree/scrolling-tree-is-z-order-expected.txt:
  • scrollingcoordinator/scrolling-tree/sticky-in-overflow-expected.txt:
  • scrollingcoordinator/scrolling-tree/toggle-coordinated-frame-scrolling-expected.txt:
  • tiled-drawing/scrolling/clamp-out-of-bounds-scrolls-expected.txt:
  • tiled-drawing/scrolling/fixed/absolute-inside-fixed-expected.txt:
  • tiled-drawing/scrolling/fixed/absolute-inside-out-of-view-fixed-expected.txt:
  • tiled-drawing/scrolling/fixed/fixed-in-overflow-expected.txt:
  • tiled-drawing/scrolling/fixed/fixed-position-out-of-view-expected.txt:
  • tiled-drawing/scrolling/fixed/fixed-position-out-of-view-negative-zindex-expected.txt:
  • tiled-drawing/scrolling/fixed/four-bars-expected.txt:
  • tiled-drawing/scrolling/fixed/four-bars-with-header-and-footer-expected.txt:
  • tiled-drawing/scrolling/fixed/negative-scroll-offset-expected.txt:
  • tiled-drawing/scrolling/fixed/negative-scroll-offset-in-view-expected.txt:
  • tiled-drawing/scrolling/fixed/nested-fixed-expected.txt:
  • tiled-drawing/scrolling/fixed/percentage-inside-fixed-expected.txt:
  • tiled-drawing/scrolling/frames/scroll-region-after-frame-layout-expected.txt:
  • tiled-drawing/scrolling/scrolling-tree-after-scroll-expected.txt:
  • tiled-drawing/scrolling/scrolling-tree-slow-scrolling-expected.txt:
  • tiled-drawing/scrolling/sticky/negative-scroll-offset-expected.txt:
  • tiled-drawing/scrolling/sticky/sticky-horizontal-expected.txt:
  • tiled-drawing/scrolling/sticky/sticky-vertical-expected.txt:
3:45 PM Changeset in webkit [257267] by Alan Coon
  • 1 copy in tags/Safari-610.1.4.1

Tag Safari-610.1.4.1.

3:27 PM Changeset in webkit [257266] by Alan Coon
  • 8 edits in branches/safari-609.1.20.3-branch/Source

Versioning.

3:27 PM Changeset in webkit [257265] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] fast/scrolling/overflow-scroll-past-max.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=208160

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:18 PM Changeset in webkit [257264] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Use one telemetry decoration for each sandbox rule
https://bugs.webkit.org/show_bug.cgi?id=207897

Reviewed by Brent Fulgham.

Currently, we are using the decorations '(with telemetry)' and '(with telemetry-backtrace)' for some sandbox rules
in the WebContent process' sandbox. Only one of the two decorations should be used.

No new tests, no behavior change.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
3:15 PM Changeset in webkit [257263] by Alan Coon
  • 3 edits in branches/safari-609.1.20.2-branch/Source/JavaScriptCore

Cherry-pick r257134. rdar://problem/59676898

Make support for bytecode caching more robust against file corruption.
https://bugs.webkit.org/show_bug.cgi?id=207972
<rdar://problem/59260595>

Reviewed by Yusuke Suzuki.

If a bytecode cache file is corrupted, we currently will always crash every time
we try to read it (in perpetuity as long as the corrupted cache file continues to
exist on disk). To guard against this, we'll harden the bytecode caching mechanism
as follows:

  1. Modify the writeCache operation to always write the cache file in a transactional manner i.e. we'll first write to a .tmp file, and then rename the .tmp file to the cache file only if the entire file has been written in completeness.

This ensures that we won't get corrupted cache files due to interrupted writes.

  1. Modify the writeCache operation to also compute a SHA1 hash of the cache file and append the hash at end of the file. Modify the readCache operation to first authenticate the SHA1 hash before allowing the cache file to be used. If the hash does not match, the file is bad, and we'll just delete it.

This ensures that we won't be crashing while decoding a corrupted cache file.

Manually tested with the following scenarios and ensuring that the client recovers
with no crashes:

  1. no cache file on disk.
  2. a 0-sized cache file on a disk.
  3. a truncated cache file on disk.
  4. a corrupted cache file on disk.
  5. an uncorrupted cache file on disk.

Also added some static_asserts in CachedTypes.cpp to document some invariants that
the pre-existing code is dependent on.

  • API/JSScript.mm: (-[JSScript readCache]): (-[JSScript writeCache:]):
  • runtime/CachedTypes.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257134 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:15 PM Changeset in webkit [257262] by Alan Coon
  • 10 edits in branches/safari-609.1.20.2-branch/Source/WebKit

Cherry-pick r256967. rdar://problem/59654603

Regression(r247567) HTTP Disk cache capacity is no longer set
https://bugs.webkit.org/show_bug.cgi?id=207959
<rdar://problem/59603972>

Reviewed by Alex Christensen.

NetworkProcess::initializeNetworkProcess() was setting the cache model, which
would iterate over all network sessions to update their network cache capacity.
The issue was that network sessions were not constructed yet at this point.
When the network session(s) would get created later on, they would construct
their NetworkCache and it would use the default capacity (i.e.
std::numeric_limits<size_t>::max()).

To make this safer, I have moved the capacity computation to the Cache::open()
method and now pass the capacity when constructing the network cache storage.

  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::initializeNetworkProcess): (WebKit::NetworkProcess::setCacheModelSynchronouslyForTesting): (WebKit::NetworkProcess::setCacheModel):
  • NetworkProcess/NetworkProcess.h: (WebKit::NetworkProcess::cacheModel const):
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/cache/CacheStorageEngineCaches.cpp: (WebKit::CacheStorage::Caches::initialize):
  • NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::computeCapacity): (WebKit::NetworkCache::Cache::open): (WebKit::NetworkCache::Cache::capacity const): (WebKit::NetworkCache::Cache::updateCapacity): (WebKit::NetworkCache::Cache::setCapacity): Deleted.
  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::open): (WebKit::NetworkCache::Storage::Storage): (WebKit::NetworkCache::Storage::setCapacity):
  • NetworkProcess/cache/NetworkCacheStorage.h:
  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::setCacheModel):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256967 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:15 PM Changeset in webkit [257261] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Gardening, mark several tests as flaky
https://bugs.webkit.org/show_bug.cgi?id=208140

Unreviewed gardening.

  • platform/gtk/TestExpectations:
3:15 PM Changeset in webkit [257260] by Alan Coon
  • 6 edits in branches/safari-609.1.20.2-branch/Source/WebKit

Cherry-pick r256881. rdar://problem/59654287

Drop getSandboxExtensionsForBlobFiles() as it is dead code
https://bugs.webkit.org/show_bug.cgi?id=207909
<rdar://problem/59562180>

Reviewed by Per Arne Vollan.

  • NetworkProcess/NetworkProcess.cpp:
  • NetworkProcess/NetworkProcess.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:
  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256881 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:14 PM Changeset in webkit [257259] by Alan Coon
  • 3 edits in branches/safari-609.1.20.2-branch/Source/WebKit

Cherry-pick r256857. rdar://problem/59654273

NetworkDataTask should not expect its session wrapper to be always live
https://bugs.webkit.org/show_bug.cgi?id=207903
rdar://problem/59291486

Reviewed by Alex Christensen.

NetworkDataTaskCocoa should take a weak pointer to its session wrapper.
If the session wrapper is still valid, then we can remove the task from the session wrapper map.
We cannot guarantee session wrapper is valid since NetworkDataTask is ref counted.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): (WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256857 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:08 PM Changeset in webkit [257258] by Alan Coon
  • 8 edits in branches/safari-609.1.20.2-branch/Source

Versioning.

2:46 PM Changeset in webkit [257257] by ysuzuki@apple.com
  • 2 edits in trunk/Tools

Unreviewed, updating LLDB test for CompactPointerTuple.
https://bugs.webkit.org/show_bug.cgi?id=207827

  • lldb/lldb_webkit.py:

(WTFCompactPointerTupleProvider):
(WTFCompactPointerTupleProvider.update):

2:32 PM Changeset in webkit [257256] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

Changed results due to ANGLE use
https://bugs.webkit.org/show_bug.cgi?id=207858

Unreviewed test gardening.

  • platform/mac/TestExpectations:
2:18 PM Changeset in webkit [257255] by Andres Gonzalez
  • 4 edits in trunk/Source/WebCore

[WebAccessibilityObjectWrapper updateObjectBackingStore] should return the backing object.
https://bugs.webkit.org/show_bug.cgi?id=208153

Reviewed by Chris Fleizach.

Covered by existing tests.

Currently in many WebAccessibilityObjectWrapper's methods we call
updateObjectBackingStore followed by one or more calls to
axBackingObject. This patch eliminates this unnecessary call by making
updateObjectBackingStore return the backing object. It also cleans up
other unnecessary calls to axBackingObject and does some minor code
cleanup.

  • accessibility/mac/WebAccessibilityObjectWrapperBase.h:
  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(-[WebAccessibilityObjectWrapperBase updateObjectBackingStore]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper accessibilityFocusedUIElement]):
(-[WebAccessibilityObjectWrapper accessibilityHitTest:]):
(-[WebAccessibilityObjectWrapper accessibilityIsAttributeSettable:]):
(-[WebAccessibilityObjectWrapper _accessibilityPerformPressAction]):
(-[WebAccessibilityObjectWrapper _accessibilityPerformIncrementAction]):
(-[WebAccessibilityObjectWrapper _accessibilityPerformDecrementAction]):
(-[WebAccessibilityObjectWrapper accessibilityPerformAction:]):
(-[WebAccessibilityObjectWrapper accessibilityReplaceRange:withText:]):
(-[WebAccessibilityObjectWrapper accessibilityInsertText:]):
(-[WebAccessibilityObjectWrapper _accessibilitySetValue:forAttribute:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
(-[WebAccessibilityObjectWrapper accessibilityIndexOfChild:]):
(-[WebAccessibilityObjectWrapper accessibilityArrayAttributeCount:]):
(-[WebAccessibilityObjectWrapper accessibilityArrayAttributeValues:index:maxCount:]):

2:08 PM Changeset in webkit [257254] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Temporarily disable in-process cookie cache as it seems to be causing hangs on iOS
https://bugs.webkit.org/show_bug.cgi?id=208152
<rdar://problem/59706587>

Reviewed by Alex Christensen.

  • Shared/WebPreferences.yaml:
1:57 PM Changeset in webkit [257253] by Alan Coon
  • 8 edits in branches/safari-610.1.4-branch/Source

Versioning.

1:53 PM Changeset in webkit [257252] by Alan Coon
  • 1 edit in branches/safari-609.1.20.0-branch/Source/WebKitLegacy/mac/WebView/WebPreferences.mm

Apply patch. rdar://problem/59735101

1:52 PM Changeset in webkit [257251] by Alan Coon
  • 3 edits in branches/safari-609.1.20.0-branch/Source/JavaScriptCore

Cherry-pick r257134. rdar://problem/59676913

Make support for bytecode caching more robust against file corruption.
https://bugs.webkit.org/show_bug.cgi?id=207972
<rdar://problem/59260595>

Reviewed by Yusuke Suzuki.

If a bytecode cache file is corrupted, we currently will always crash every time
we try to read it (in perpetuity as long as the corrupted cache file continues to
exist on disk). To guard against this, we'll harden the bytecode caching mechanism
as follows:

  1. Modify the writeCache operation to always write the cache file in a transactional manner i.e. we'll first write to a .tmp file, and then rename the .tmp file to the cache file only if the entire file has been written in completeness.

This ensures that we won't get corrupted cache files due to interrupted writes.

  1. Modify the writeCache operation to also compute a SHA1 hash of the cache file and append the hash at end of the file. Modify the readCache operation to first authenticate the SHA1 hash before allowing the cache file to be used. If the hash does not match, the file is bad, and we'll just delete it.

This ensures that we won't be crashing while decoding a corrupted cache file.

Manually tested with the following scenarios and ensuring that the client recovers
with no crashes:

  1. no cache file on disk.
  2. a 0-sized cache file on a disk.
  3. a truncated cache file on disk.
  4. a corrupted cache file on disk.
  5. an uncorrupted cache file on disk.

Also added some static_asserts in CachedTypes.cpp to document some invariants that
the pre-existing code is dependent on.

  • API/JSScript.mm: (-[JSScript readCache]): (-[JSScript writeCache:]):
  • runtime/CachedTypes.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257134 268f45cc-cd09-0410-ab3c-d52691b4dbfc

1:52 PM Changeset in webkit [257250] by Alan Coon
  • 2 edits in branches/safari-609.1.20.0-branch/Source/WebKit

Cherry-pick r257106. rdar://problem/59676872

Add fidelity.com to the desktop class quirks list
https://bugs.webkit.org/show_bug.cgi?id=208037
<rdar://problem/59480381>

Reviewed by Brent Fulgham.

No new tests. This patch just adds a domain name to a quirks function.

  • UIProcess/ios/WebPageProxyIOS.mm: (WebKit::desktopClassBrowsingRecommendedForRequest):

fidelity.com and its subdomains now return false.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257106 268f45cc-cd09-0410-ab3c-d52691b4dbfc

1:52 PM Changeset in webkit [257249] by Alan Coon
  • 2 edits in branches/safari-609.1.20.0-branch/Source/WebKit

Cherry-pick r257103. rdar://problem/59676894

WebIDBServer resume should return early if suspend does not happen
https://bugs.webkit.org/show_bug.cgi?id=208027
<rdar://problem/59617654>

Reviewed by Geoffrey Garen.

We should not try releasing a lock that is not held.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp: (WebKit::WebIDBServer::resume):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257103 268f45cc-cd09-0410-ab3c-d52691b4dbfc

1:52 PM Changeset in webkit [257248] by Alan Coon
  • 4 edits in branches/safari-609.1.20.0-branch

Cherry-pick r257077. rdar://problem/59676884

REGRESSION (r255677): Reloading tab with beforeunload prompt closes tab when asking to stay on page
https://bugs.webkit.org/show_bug.cgi?id=208015
<rdar://problem/59591630>

Reviewed by Geoffrey Garen.

Source/WebKit:

Make sure we only restart the tryClose timer after the beforeunload prompt if the timer was actually
active before the prompt (i.e. tryClose was actually called). On Reload, tryClose is not called
but beforeunload prompt may still happen.

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ModalAlerts.mm: (TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257077 268f45cc-cd09-0410-ab3c-d52691b4dbfc

1:52 PM Changeset in webkit [257247] by Alan Coon
  • 10 edits in branches/safari-609.1.20.0-branch/Source/WebKit

Cherry-pick r256967. rdar://problem/59654620

Regression(r247567) HTTP Disk cache capacity is no longer set
https://bugs.webkit.org/show_bug.cgi?id=207959
<rdar://problem/59603972>

Reviewed by Alex Christensen.

NetworkProcess::initializeNetworkProcess() was setting the cache model, which
would iterate over all network sessions to update their network cache capacity.
The issue was that network sessions were not constructed yet at this point.
When the network session(s) would get created later on, they would construct
their NetworkCache and it would use the default capacity (i.e.
std::numeric_limits<size_t>::max()).

To make this safer, I have moved the capacity computation to the Cache::open()
method and now pass the capacity when constructing the network cache storage.

  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::initializeNetworkProcess): (WebKit::NetworkProcess::setCacheModelSynchronouslyForTesting): (WebKit::NetworkProcess::setCacheModel):
  • NetworkProcess/NetworkProcess.h: (WebKit::NetworkProcess::cacheModel const):
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/cache/CacheStorageEngineCaches.cpp: (WebKit::CacheStorage::Caches::initialize):
  • NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::computeCapacity): (WebKit::NetworkCache::Cache::open): (WebKit::NetworkCache::Cache::capacity const): (WebKit::NetworkCache::Cache::updateCapacity): (WebKit::NetworkCache::Cache::setCapacity): Deleted.
  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::open): (WebKit::NetworkCache::Storage::Storage): (WebKit::NetworkCache::Storage::setCapacity):
  • NetworkProcess/cache/NetworkCacheStorage.h:
  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::setCacheModel):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256967 268f45cc-cd09-0410-ab3c-d52691b4dbfc

1:52 PM Changeset in webkit [257246] by Alan Coon
  • 6 edits in branches/safari-609.1.20.0-branch/Source/WebKit

Cherry-pick r256881. rdar://problem/59654584

Drop getSandboxExtensionsForBlobFiles() as it is dead code
https://bugs.webkit.org/show_bug.cgi?id=207909
<rdar://problem/59562180>

Reviewed by Per Arne Vollan.

  • NetworkProcess/NetworkProcess.cpp:
  • NetworkProcess/NetworkProcess.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:
  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256881 268f45cc-cd09-0410-ab3c-d52691b4dbfc

1:52 PM Changeset in webkit [257245] by Alan Coon
  • 3 edits in branches/safari-609.1.20.0-branch/Source/WebKit

Cherry-pick r256857. rdar://problem/59654285

NetworkDataTask should not expect its session wrapper to be always live
https://bugs.webkit.org/show_bug.cgi?id=207903
rdar://problem/59291486

Reviewed by Alex Christensen.

NetworkDataTaskCocoa should take a weak pointer to its session wrapper.
If the session wrapper is still valid, then we can remove the task from the session wrapper map.
We cannot guarantee session wrapper is valid since NetworkDataTask is ref counted.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): (WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256857 268f45cc-cd09-0410-ab3c-d52691b4dbfc

1:52 PM Changeset in webkit [257244] by Alan Coon
  • 1 edit in branches/safari-609.1.20.0-branch/Source/JavaScriptCore/runtime/JSCJSValue.h

Apply patch. rdar://problem/59654707

1:52 PM Changeset in webkit [257243] by Alan Coon
  • 23 edits
    3 adds in branches/safari-609.1.20.0-branch

Apply patch. rdar://problem/59654271

1:51 PM Changeset in webkit [257242] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Context menu platter animation is wrong occasionally when invoking it repeatedly and rapidly
https://bugs.webkit.org/show_bug.cgi?id=208147
<rdar://problem/54436720>

Reviewed by Wenson Hsieh.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView contextMenuInteraction:willEndForConfiguration:animator:]):
If a new context menu interaction has started, don't remove the hint
container view out from under it when the previous animation finishes,
or the presentation animation will go crazy (in a variety of humorous
and unpredictable ways), because UIKit can't do coordinate conversion
through an unparented view.

Eventually the final animation will complete and unparent the view.

1:50 PM Changeset in webkit [257241] by Russell Epstein
  • 1 edit in branches/safari-609.1.20.111-branch/Source/WebKitLegacy/mac/WebView/WebPreferences.mm

Apply patch. rdar://problem/59736039

1:50 PM Changeset in webkit [257240] by Russell Epstein
  • 23 edits
    3 adds in branches/safari-609.1.20.111-branch

Apply patch. rdar://problem/59654262

1:50 PM Changeset in webkit [257239] by Russell Epstein
  • 4 edits in branches/safari-609.1.20.111-branch/Source/JavaScriptCore

Apply patch. rdar://problem/59654262

1:42 PM Changeset in webkit [257238] by Caio Lima
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] 32-bits debug build broken after r257212
https://bugs.webkit.org/show_bug.cgi?id=208149

Reviewed by Yusuke Suzuki.

Changing Structure::setCachedPrototypeChain to use
m_cachedPrototypeChainOrRareData.setMayBeNull, since chain may be
null.

  • runtime/StructureInlines.h:

(JSC::Structure::setCachedPrototypeChain):

1:18 PM Changeset in webkit [257237] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix watchOS build
https://bugs.webkit.org/show_bug.cgi?id=207827

While watchOS does not use FTL at all, it still compiles.

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileObjectKeys):
(JSC::FTL::DFG::LowerDFGToB3::compileCreatePromise):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateInternalFieldObject):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckSubClass):
(JSC::FTL::DFG::LowerDFGToB3::loadStructureClassInfo):
(JSC::FTL::DFG::LowerDFGToB3::loadStructureCachedPrototypeChainOrRareData):

1:15 PM Changeset in webkit [257236] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC][Floats] Fix float box handling inside unbreakable content
https://bugs.webkit.org/show_bug.cgi?id=208109
<rdar://problem/59708646>

Reviewed by Antti Koivisto.

We've been handling float boxes and other inline items as mutually exclusive content (in the context of unbreakable candidate runs).
While this works in most cases, when the unbreakable content includes float boxes, the layout
ends up being incorrect.
This patch is in preparation for making sure we process the inline content and the associated float boxes as one entity.
(e.g "text_<div style="float: left"></div>_content" produces an unbreakable inline content of [text_][_content] and an associated float box)

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::isAtSoftWrapOpportunity):
(WebCore::Layout::LineCandidate::FloatContent::append):
(WebCore::Layout::LineCandidate::FloatContent::list const):
(WebCore::Layout::LineCandidate::FloatContent::reset):
(WebCore::Layout::LineCandidate::reset):
(WebCore::Layout::LineLayoutContext::layoutLine):
(WebCore::Layout::LineLayoutContext::nextContentForLine):
(WebCore::Layout::LineLayoutContext::tryAddingFloatContent):
(WebCore::Layout::LineLayoutContext::tryAddingFloatItem): Deleted.

  • layout/inlineformatting/LineLayoutContext.h:
12:28 PM Changeset in webkit [257235] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Document / DOMWindow objects get leaked on CNN.com due to CSSTransitions
https://bugs.webkit.org/show_bug.cgi?id=208145

Reviewed by Antoine Quint.

Break reference cycles using WeakPtr so that CSSTransitions can no longer cause whole document / DOM trees to
get leaked.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::DocumentTimeline):

  • animation/DocumentTimeline.h:
  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::KeyframeEffect):
(WebCore::KeyframeEffect::setTarget):

  • animation/KeyframeEffect.h:
12:06 PM Changeset in webkit [257234] by youenn@apple.com
  • 9 edits in trunk/Source

Add a runtime flag dedicated to WebRTC codecs in GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=208136

Reviewed by Alex Christensen.

Source/WebCore:

Add a runtime flag for WebRTC codecs in GPUProcess.
Enable the flag by default for MacOS.

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::webRTCPlatformCodecsInGPUProcessEnabled const):
(WebCore::RuntimeEnabledFeatures::setWebRTCPlatformCodecsInGPUProcessEnabled):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
  • platform/mediastream/libwebrtc/LibWebRTCProvider.h:
  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::setUseGPUProcessForWebRTC):

Source/WebKit:

Add a runtime flag dedicated to enabling WebRTC codecs in GPUProcess.
Use this flag instead of the media flag.

  • Shared/WebPreferences.yaml:
  • Shared/WebPreferencesDefaultValues.h:
  • WebProcess/Network/webrtc/LibWebRTCProvider.cpp:

(WebKit::LibWebRTCProvider::createDecoderFactory):

11:26 AM Changeset in webkit [257233] by Russell Epstein
  • 2 edits in branches/safari-609.1.20.111-branch/Source/WebKit

Revert "Cherry-pick r257106. rdar://problem/59676862"

This reverts commit r257231.

11:17 AM Changeset in webkit [257232] by Russell Epstein
  • 3 edits in branches/safari-609.1.20.111-branch/Source/JavaScriptCore

Cherry-pick r257134. rdar://problem/59676904

Make support for bytecode caching more robust against file corruption.
https://bugs.webkit.org/show_bug.cgi?id=207972
<rdar://problem/59260595>

Reviewed by Yusuke Suzuki.

If a bytecode cache file is corrupted, we currently will always crash every time
we try to read it (in perpetuity as long as the corrupted cache file continues to
exist on disk). To guard against this, we'll harden the bytecode caching mechanism
as follows:

  1. Modify the writeCache operation to always write the cache file in a transactional manner i.e. we'll first write to a .tmp file, and then rename the .tmp file to the cache file only if the entire file has been written in completeness.

This ensures that we won't get corrupted cache files due to interrupted writes.

  1. Modify the writeCache operation to also compute a SHA1 hash of the cache file and append the hash at end of the file. Modify the readCache operation to first authenticate the SHA1 hash before allowing the cache file to be used. If the hash does not match, the file is bad, and we'll just delete it.

This ensures that we won't be crashing while decoding a corrupted cache file.

Manually tested with the following scenarios and ensuring that the client recovers
with no crashes:

  1. no cache file on disk.
  2. a 0-sized cache file on a disk.
  3. a truncated cache file on disk.
  4. a corrupted cache file on disk.
  5. an uncorrupted cache file on disk.

Also added some static_asserts in CachedTypes.cpp to document some invariants that
the pre-existing code is dependent on.

  • API/JSScript.mm: (-[JSScript readCache]): (-[JSScript writeCache:]):
  • runtime/CachedTypes.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257134 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:17 AM Changeset in webkit [257231] by Russell Epstein
  • 2 edits in branches/safari-609.1.20.111-branch/Source/WebKit

Cherry-pick r257106. rdar://problem/59676862

Add fidelity.com to the desktop class quirks list
https://bugs.webkit.org/show_bug.cgi?id=208037
<rdar://problem/59480381>

Reviewed by Brent Fulgham.

No new tests. This patch just adds a domain name to a quirks function.

  • UIProcess/ios/WebPageProxyIOS.mm: (WebKit::desktopClassBrowsingRecommendedForRequest):

fidelity.com and its subdomains now return false.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257106 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:17 AM Changeset in webkit [257230] by Russell Epstein
  • 5 edits in branches/safari-609.1.20.111-branch

Cherry-pick r257089. rdar://problem/59676917

NetworkCache should use 4KB threshold for mmap-ed files instead of 16KB
https://bugs.webkit.org/show_bug.cgi?id=207882

Reviewed by Alex Christensen.

Source/WebKit:

We found that a lot of Vectors in Membuster is holding resource content. This is because we have 16KB threshold for mmap-ed files.
If a file is smaller than 16KB, it is copied to Vector instead. But this is costly in terms of memory. If we use mmap-ed files,
it becomes named-pages instead of anonymous-pages. File-backed non-dirty named-pages have a lot of benefit.

  1. The application is offering a hint that pages are file-backed. This means that OS can purge them at any time since the content can be recovered from the disk. This is cheaper than swapping / compressing anonymous pages since just discarding works.
  2. The application is offering a hint that pages have spatial locality. Purging pages in one named-pages region is better compared to purging the same # of anonymous pages randomly. Anonymous pages are split by malloc implementation and access pattern of pages in one VA is random. On the other hand, named-pages are accessed together because it is file, and file typically has sequential locality. And recovery of named pages are also cheap compared to anonymous pages since OS can prefetch pages once access happens because of sequential locality of files. This tendency makes OS like purging named pages instead of anonymous pages. In WebKit use case, this works perfectly. CachedResource typically has decoded content. So typically WebProcess does not access SharedBuffer after the content is decoded.

This patch reduces the threshold from 16KB to page size (4KB in macOS, 16KB in iOS). This is pre-2015 behavior.
This offers 2.56% progression with 98% probability in Membuster.

  • NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::maximumInlineBodySize): (WebKit::NetworkCache::estimateRecordsSize): (WebKit::NetworkCache::Storage::shouldStoreBodyAsBlob):

LayoutTests:

The test is assuming that 12KB file is served via non-mmap-file.
This assumption is flaky and broken by this change. For now, we pick smaller
file to meet this assumption.

  • http/tests/inspector/network/resource-sizes-disk-cache-expected.txt:
  • http/tests/inspector/network/resource-sizes-disk-cache.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257089 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:17 AM Changeset in webkit [257229] by Russell Epstein
  • 4 edits in branches/safari-609.1.20.111-branch

Cherry-pick r257077. rdar://problem/59676877

REGRESSION (r255677): Reloading tab with beforeunload prompt closes tab when asking to stay on page
https://bugs.webkit.org/show_bug.cgi?id=208015
<rdar://problem/59591630>

Reviewed by Geoffrey Garen.

Source/WebKit:

Make sure we only restart the tryClose timer after the beforeunload prompt if the timer was actually
active before the prompt (i.e. tryClose was actually called). On Reload, tryClose is not called
but beforeunload prompt may still happen.

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ModalAlerts.mm: (TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257077 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:17 AM Changeset in webkit [257228] by Russell Epstein
  • 10 edits in branches/safari-609.1.20.111-branch/Source/WebKit

Cherry-pick r256967. rdar://problem/59654605

Regression(r247567) HTTP Disk cache capacity is no longer set
https://bugs.webkit.org/show_bug.cgi?id=207959
<rdar://problem/59603972>

Reviewed by Alex Christensen.

NetworkProcess::initializeNetworkProcess() was setting the cache model, which
would iterate over all network sessions to update their network cache capacity.
The issue was that network sessions were not constructed yet at this point.
When the network session(s) would get created later on, they would construct
their NetworkCache and it would use the default capacity (i.e.
std::numeric_limits<size_t>::max()).

To make this safer, I have moved the capacity computation to the Cache::open()
method and now pass the capacity when constructing the network cache storage.

  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::initializeNetworkProcess): (WebKit::NetworkProcess::setCacheModelSynchronouslyForTesting): (WebKit::NetworkProcess::setCacheModel):
  • NetworkProcess/NetworkProcess.h: (WebKit::NetworkProcess::cacheModel const):
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/cache/CacheStorageEngineCaches.cpp: (WebKit::CacheStorage::Caches::initialize):
  • NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::computeCapacity): (WebKit::NetworkCache::Cache::open): (WebKit::NetworkCache::Cache::capacity const): (WebKit::NetworkCache::Cache::updateCapacity): (WebKit::NetworkCache::Cache::setCapacity): Deleted.
  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::open): (WebKit::NetworkCache::Storage::Storage): (WebKit::NetworkCache::Storage::setCapacity):
  • NetworkProcess/cache/NetworkCacheStorage.h:
  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::setCacheModel):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256967 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:17 AM Changeset in webkit [257227] by Russell Epstein
  • 6 edits in branches/safari-609.1.20.111-branch/Source/WebKit

Cherry-pick r256881. rdar://problem/59654289

Drop getSandboxExtensionsForBlobFiles() as it is dead code
https://bugs.webkit.org/show_bug.cgi?id=207909
<rdar://problem/59562180>

Reviewed by Per Arne Vollan.

  • NetworkProcess/NetworkProcess.cpp:
  • NetworkProcess/NetworkProcess.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:
  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256881 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:17 AM Changeset in webkit [257226] by Russell Epstein
  • 3 edits in branches/safari-609.1.20.111-branch/Source/WebKit

Cherry-pick r256857. rdar://problem/59654274

NetworkDataTask should not expect its session wrapper to be always live
https://bugs.webkit.org/show_bug.cgi?id=207903
rdar://problem/59291486

Reviewed by Alex Christensen.

NetworkDataTaskCocoa should take a weak pointer to its session wrapper.
If the session wrapper is still valid, then we can remove the task from the session wrapper map.
We cannot guarantee session wrapper is valid since NetworkDataTask is ref counted.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): (WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256857 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:17 AM Changeset in webkit [257225] by commit-queue@webkit.org
  • 21 edits
    1 add in trunk

Provide alternate way to name Web Content process
https://bugs.webkit.org/show_bug.cgi?id=205224
rdar://57038084

Patch by Ellie Epskamp-Hunt <eepskamphunt@apple.com> on 2020-02-24
Reviewed by Alex Christensen.

Source/WebKit:

Test: TestWebKitAPI/Tests/WebKitCocoa/DisplayName.mm

Add the ability to set _processDisplayName on WKWebViewConfiguration to allow the name of the web
content process that appears in Activity Monitor to be set to a custom string.

  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:
  • UIProcess/API/APIPageConfiguration.cpp:

(API::PageConfiguration::copy const):

  • UIProcess/API/APIPageConfiguration.h:

(API::PageConfiguration::lsDisplayName const):
(API::PageConfiguration::setlsDisplayName):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _getDisplayNameWithCompletionHandler:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration _lsDisplayName]):
(-[WKWebViewConfiguration _setlsDisplayName:]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::getDisplayName):

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::getDisplayName):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_lsDisplayName):
(WebKit::WebPage::close):
(WebKit::WebPage::didCommitLoad):
(WebKit::m_overriddenMediaType): Deleted.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::updateActivePages):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::updateActivePages):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/DisplayName.mm: Added.

(TestWebKitAPI::TEST):

11:17 AM Changeset in webkit [257224] by Russell Epstein
  • 3 edits in branches/safari-609.1.20.111-branch/Source/WebCore

Cherry-pick r256856. rdar://problem/59654781

MediaSource.isTypeSupported() says "video/mp4;codecs=\"avc3.42C015\"" is not supported, but it is
https://bugs.webkit.org/show_bug.cgi?id=207622

Reviewed by Eric Carlson.

Revert the behavior change of MediaPlayerPrivateMediaSourceAVFObjC::supportsType() in r253952.

  • platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.mm: (WebCore::AVAssetMIMETypeCache::canDecodeExtendedType):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256856 268f45cc-cd09-0410-ab3c-d52691b4dbfc

11:15 AM Changeset in webkit [257223] by wenson_hsieh@apple.com
  • 3 edits in trunk/LayoutTests

fast/forms/ios/click-should-not-suppress-misspelling.html fails on iOS 13.4 beta
https://bugs.webkit.org/show_bug.cgi?id=208086
<rdar://problem/59631501>

Reviewed by Tim Horton.

In the iOS 13.4 beta, tapping near the caret rect in an editable text field causes the callout bar to toggle
visibility instead of triggering word-granularity spellchecking and changing the selection. This test in
particular dispatches two taps: the first at (100, 100), and the second at (300, 100) in content view
coordinates. However, since the page does not have a viewport, the entire page is scaled down on iPhone, such
that the second tap at (300, 100) ends up being very close to the caret rect.

To fix this, we simply make the text field take up 100% of the viewport width, and make the viewport use
device-width with an initial scale of 1. This ensures that the second tap will be somewhere near the end of the
misspelled word, which triggers spellchecking as intended by the test instead of just showing the callout bar.

  • fast/forms/ios/click-should-not-suppress-misspelling-expected.txt:
  • fast/forms/ios/click-should-not-suppress-misspelling.html:
11:01 AM Changeset in webkit [257222] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Protect WebProcessPool from null weak pointers in m_serviceWorkerProcesses map
https://bugs.webkit.org/show_bug.cgi?id=208143
rdar://problem/58285589

Reviewed by Alex Christensen.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::updateServiceWorkerUserAgent):
(WebKit::WebProcessPool::updateProcessAssertions):
When iterating through the map, make sure it does not have a null entry.

10:59 AM Changeset in webkit [257221] by Alan Coon
  • 8 edits in trunk/Source

Versioning.

10:58 AM Changeset in webkit [257220] by Alan Coon
  • 1 copy in branches/safari-610.1.5-branch

New branch.

10:57 AM Changeset in webkit [257219] by Jonathan Bedard
  • 6 edits
    1 add in trunk/Tools

results.webkit.org: Link to result archives
https://bugs.webkit.org/show_bug.cgi?id=207646
<rdar://problem/59395807>

Rubber-stamped by Aakash Jain.

  • resultsdbpy/resultsdbpy/view/static/js/archiveRouter.js: Added.

(_ArchiveRouter): Retrieve json from archive-router endpoint.
(_ArchiveRouter.prototype._determineArgumentFromAncestry): Given an argument, default and ancestry values,
return the most specific value.
(_ArchiveRouter.prototype.hasArchive): Check if a suite and mode have an archive link.
(_ArchiveRouter.prototype.pathFor): Construct the path for archive access.
(_ArchiveRouter.prototype.labelFor): Return a label for an archive link.

  • resultsdbpy/resultsdbpy/view/static/js/investigate.js:

(parametersForInstance): Extract from lambda function.
(testRunLink): Use parametersForInstance instead of a lambda function.
(archiveLink): Return an archive link for data.
(contentForData): Add archive link to view.

  • resultsdbpy/resultsdbpy/view/static/js/timeline.js:

(TimelineFromEndpoint): Accept both suite and test.
(TimelineFromEndpoint.prototype.render.onDotEnterFactory): Add archive link to pop-over.

  • resultsdbpy/resultsdbpy/view/templates/search.html: Pass suite and test to TimelineEndpoint.
  • resultsdbpy/resultsdbpy/view/templates/suite_results.html: Pass suite to TimelineEndpoint.
  • resultsdbpy/resultsdbpy/view/view_routes.py:

(ViewRoutes.init): Add archive_route dictionary.

10:57 AM Changeset in webkit [257218] by wenson_hsieh@apple.com
  • 4 edits in trunk/Source/WebKit

[watchOS] Adopt UICollectionView-based SPI on PUICQuickboardListViewController
https://bugs.webkit.org/show_bug.cgi?id=208137
<rdar://problem/57756279>

Reviewed by Tim Horton.

Fixes deprecation warnings due to the main content area of PUICQuickboardListViewController becoming backed by a
UICollectionView rather than a UITableView. See below for more details.

  • UIProcess/ios/forms/WKQuickboardListViewController.h:
  • UIProcess/ios/forms/WKQuickboardListViewController.mm:

(-[WKQuickboardListCollectionViewItemCell topToLabelBaselineSpecValue]):
(-[WKQuickboardListCollectionViewItemCell baselineToBottomSpecValue]):

Add WKQuickboardListCollectionViewItemCell, a PUICQuickboardListCollectionViewItemCell subclass which will
replace WKQuickboardListItemCell.

  • UIProcess/ios/forms/WKSelectMenuListViewController.mm:

(-[WKSelectMenuCollectionViewItemCell initWithFrame:]):
(-[WKSelectMenuCollectionViewItemCell imageView]):

Similarly, add WKSelectMenuCollectionViewItemCell, a collection view cell which replaces WKSelectMenuItemCell.

(-[WKSelectMenuListViewController didSelectListItem:]):
(-[WKSelectMenuListViewController didSelectListItemAtIndexPath:]):

Reimplement -didSelectListItem: using -didSelectListItemAtIndexPath:. The latter handles model updates when
the user interacts with select options in the Quickboard view controller that is collection-view-backed.

(-[WKSelectMenuListViewController listItemCellClass]):
(-[WKSelectMenuListViewController listItemCellReuseIdentifier]):
(-[WKSelectMenuListViewController itemCellForListItem:forIndexPath:]):
(-[WKSelectMenuListViewController collectionViewSectionIsRadioSection:]):

10:53 AM Changeset in webkit [257217] by Russell Epstein
  • 8 edits in branches/safari-609.1.20.111-branch/Source

Versioning.

10:41 AM Changeset in webkit [257216] by Alan Coon
  • 8 edits in branches/safari-609.1.20.0-branch/Source

Versioning.

10:11 AM Changeset in webkit [257215] by achristensen@apple.com
  • 4 edits in trunk

WKWebViewConfiguration._corsDisablingPatterns should also disable CORS for non-DocumentThreadableLoader loading
https://bugs.webkit.org/show_bug.cgi?id=208035
<rdar://problem/58011337>

Reviewed by Tim Hatcher.

Source/WebCore:

Covered by an API test.

  • loader/CrossOriginAccessControl.cpp:

(WebCore::createPotentialAccessControlRequest):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:
10:05 AM Changeset in webkit [257214] by wenson_hsieh@apple.com
  • 3 edits in trunk/Source/WebKit

REGRESSION (r248481): drag animation of a link starts from the incorrect location
https://bugs.webkit.org/show_bug.cgi?id=208113
<rdar://problem/59448696>

Reviewed by Tim Horton.

For both dragging and context menu interactions, UIKit asks us for targeted previews, which are hosted under
container views provided by WebKit. These container views must be in the hierarchy (i.e. they must have a
UIWindow); otherwise, UIKit incorrectly computes some geometry when animating the previews. Prior to the fix for
<rdar://problem/57172514>, this caused targeted drag previews to animate in from a seemingly random location;
however, UIKit worked around this by falling back to the same codepath used for remotely hosted views, which
uses the last known touch location as an approximation of where to start the drag preview animation. This mostly
makes the bug go away, but the delta between the touch location and the actual location of the dragged element
in the page still causes some very minor visual differences.

Due to r248481, a separate UIView (_contextMenuHintContainerView) under the content view is used when generating
targeted previews for both drag and drop and context menu hints. This view is removed when the context menu
interaction ends; however, when starting a drag, the context menu interaction ends right before the drag session
actually begins, which means that when UIKit actually starts to animate the drag preview, the container view has
already been unparented.

To address this, introduce a separate _dragPreviewContainerView alongside _contextMenuHintContainerView, and use
this new view when generating targeted previews for dragging. This view is generated lazily and cleaned up
(unparented and cleared out) when the drag interaction has ended, in -cleanUpDragSourceSessionState.

  • UIProcess/ios/WKContentViewInteraction.h:

Add _dragPreviewContainerView.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _didCommitLoadForMainFrame]):
(-[WKContentView dataDetectionContextForPositionInformation:]):
(-[WKContentView containerForDragPreviews]):
(-[WKContentView containerForContextMenuHintPreviews]):

Split -containerViewForTargetedPreviews into -containerForDragPreviews and -containerForContextMenuHintPreviews,
and use them as appropriate.

(-[WKContentView _hideTargetedPreviewContainerViews]):

Renamed from _hideContextMenuHintContainer, since it hides both types of targeted preview containers now.

(-[WKContentView cleanUpDragSourceSessionState]):

Clear out and remove _dragPreviewContainerView here.

(-[WKContentView _deliverDelayedDropPreviewIfPossible:]):
(-[WKContentView dragInteraction:previewForLiftingItem:session:]):

Use -containerForDragPreviews when creating previews for dragging.

(-[WKContentView _createTargetedContextMenuHintPreviewIfPossible]):
(-[WKContentView contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]):

Use -containerForContextMenuHintPreviews when creating previews for the context menu hint.

(-[WKContentView containerViewForTargetedPreviews]): Deleted.
(-[WKContentView _hideContextMenuHintContainer]): Deleted.
(-[WKContentView _createTargetedPreviewIfPossible]): Deleted.

9:44 AM Changeset in webkit [257213] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Remove redundant trailing line break handling.
https://bugs.webkit.org/show_bug.cgi?id=208108
<rdar://problem/59708620>

Reviewed by Antti Koivisto.

LineLayoutContext::layoutLine should be able to handle both cases of trailing line breaks.
(This patch also makes tryAddingInlineItems return explicit IsEndOfLine values.)

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::layoutLine):
(WebCore::Layout::LineLayoutContext::tryAddingInlineItems):

9:42 AM Changeset in webkit [257212] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, build fix for 32bit pointer architectures
https://bugs.webkit.org/show_bug.cgi?id=207827

  • runtime/Structure.h:
9:24 AM Changeset in webkit [257211] by commit-queue@webkit.org
  • 6 edits
    5 adds in trunk

Verify Prefetch and credential behavior
https://bugs.webkit.org/show_bug.cgi?id=200000

Patch by Rob Buis <rbuis@igalia.com> on 2020-02-24
Reviewed by Youenn Fablet.

Source/WebKit:

Cancel cross-origin prefetches for Vary: Cookie.

Test: http/wpt/prefetch/link-prefetch-cross-origin-vary-cookie.html

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::retrieveCacheEntry):
(WebKit::NetworkResourceLoader::didReceiveResponse):

  • NetworkProcess/cache/PrefetchCache.cpp:

(WebKit::PrefetchCache::take):

LayoutTests:

Add a test to verify that navigating to a prefetched main resource
that sets Vary: Cookie does send cookies.

  • http/wpt/prefetch/link-prefetch-cross-origin-vary-cookie-expected.txt: Added.
  • http/wpt/prefetch/link-prefetch-cross-origin-vary-cookie.html: Added.
  • http/wpt/prefetch/resources/main-resource-cross-origin-set-cookie.py: Added.

(main):

  • http/wpt/prefetch/resources/main-resource-cross-origin-vary-cookie.py: Added.

(main):

  • http/wpt/prefetch/resources/navigate-cross-origin-vary-cookie.html: Added.
  • platform/mac-wk1/TestExpectations:
  • platform/win/TestExpectations:
9:07 AM Changeset in webkit [257210] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Gardening, update TestExpectations
https://bugs.webkit.org/show_bug.cgi?id=208128

Unreviewed gardening.

  • platform/gtk/TestExpectations:
8:42 AM Changeset in webkit [257209] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Protect from null session in NetworkDataTaskCocoa::restrictRequestReferrerToOriginIfNeeded
https://bugs.webkit.org/show_bug.cgi?id=208127
rdar://problem/57937917

Reviewed by Chris Dumez.

In case of a data task whose session is destroyed, do not follow redirection early on.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):

8:12 AM Changeset in webkit [257208] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC][Floats] Move float handling out of LineBreaker
https://bugs.webkit.org/show_bug.cgi?id=208107
<rdar://problem/59708575>

Reviewed by Antti Koivisto.

LineBreaker should only deal with inline content.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::shouldWrapFloatBox): Deleted.

  • layout/inlineformatting/InlineLineBreaker.h:
  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::tryAddingFloatItem):

8:04 AM Changeset in webkit [257207] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

RenderLayerBacking::notifyAnimationStarted calls directly into the old animation controller
https://bugs.webkit.org/show_bug.cgi?id=207979

Reviewed by Simon Fraser.

Only call into CSSAnimationController if the "Web Animations for CSS Animations" flag is disabled.

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::notifyAnimationStarted):

7:50 AM Changeset in webkit [257206] by commit-queue@webkit.org
  • 21 edits
    3 adds in trunk

Handle page closure for stale-while-revalidate revalidations
https://bugs.webkit.org/show_bug.cgi?id=204147

Patch by Rob Buis <rbuis@igalia.com> on 2020-02-24
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Add test to verify that frame removal triggers revalidation cancellation.

  • web-platform-tests/fetch/stale-while-revalidate/frame-removal-expected.txt: Added.
  • web-platform-tests/fetch/stale-while-revalidate/frame-removal.html: Added.
  • web-platform-tests/fetch/stale-while-revalidate/resources/stale-frame.py: Added.

(id_token):
(main):

Source/WebCore:

Add a new hook to LoaderStrategy to signal browsing context removal
and call it when the main frame stops all loaders.

Test: imported/w3c/web-platform-tests/fetch/stale-while-revalidate/frame-removal.html

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::stopAllLoaders):

  • loader/LoaderStrategy.h:
  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::canUseCacheValidator const):

Source/WebKit:

Add a message for browsing context removal. When the message happens,
pass it down to the network cache to remove any pending
async revalidations for that page.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::browsingContextRemoved):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkProcess.cpp:
  • NetworkProcess/cache/AsyncRevalidation.cpp:

(WebKit::NetworkCache::AsyncRevalidation::cancel):

  • NetworkProcess/cache/AsyncRevalidation.h:
  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::startAsyncRevalidationIfNeeded):
(WebKit::NetworkCache::Cache::browsingContextRemoved):

  • NetworkProcess/cache/NetworkCache.h:

(WebKit::NetworkCache::GlobalFrameID::hash const):
(WebKit::NetworkCache::operator==):
(WTF::GlobalFrameIDHash::hash):
(WTF::GlobalFrameIDHash::equal):
(WTF::HashTraits<WebKit::NetworkCache::GlobalFrameID>::emptyValue):
(WTF::HashTraits<WebKit::NetworkCache::GlobalFrameID>::constructDeletedValue):
(WTF::HashTraits<WebKit::NetworkCache::GlobalFrameID>::isDeletedValue):

  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:

(WebKit::NetworkCache::SpeculativeLoad::cancel):

  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::browsingContextRemoved):

  • WebProcess/Network/WebLoaderStrategy.h:

Source/WebKitLegacy:

Provide empty stub for new method on LoaderStrategy.

  • WebCoreSupport/WebResourceLoadScheduler.cpp:

(WebResourceLoadScheduler::browsingContextRemoved):

  • WebCoreSupport/WebResourceLoadScheduler.h:
7:48 AM Changeset in webkit [257205] by Andres Gonzalez
  • 2 edits in trunk/Source/WebCore

Fix for build: follow up to bug 208074.
https://bugs.webkit.org/show_bug.cgi?id=208133

Unreviewed build fix.

No new tests needed.

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::cellForColumnAndRow):

7:32 AM Changeset in webkit [257204] by graouts@webkit.org
  • 3 edits in trunk/LayoutTests

REGRESSION: (r256619) [ Mac wk1 Release ] legacy-animation-engine/fast/animation/animation-mixed-transform-crash.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208019
rdar://59676811

Reviewed by Antti Koivisto.

Since this test should be using the legacy animation engine, ensure that it does.

  • legacy-animation-engine/fast/animation/animation-mixed-transform-crash.html:
  • platform/mac-wk1/TestExpectations
3:43 AM Changeset in webkit [257203] by Diego Pino Garcia
  • 4 edits
    2 adds in trunk/LayoutTests

[GTK] Gardening, update TestExpectations and baselines
https://bugs.webkit.org/show_bug.cgi?id=208124

Unreviewed gardening.

  • platform/gtk/TestExpectations:
  • platform/gtk/fetch/fetch-url-serialization-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-serializable-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer-expected.txt:
2:03 AM WebKitGTK/2.28.x edited by Philippe Normand
(diff)
1:13 AM Changeset in webkit [257202] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

[GStreamer][WPE] Add GstGLMemoryEGL support for the video-plane-display
https://bugs.webkit.org/show_bug.cgi?id=208046

Reviewed by Žan Doberšek.

The glupload element might fill EGL memories in some cases, so for
the video sink we can then directly access the corresponding
EGLImage and export it to DMABuf, instead of using the more
general GLMemory code path.

With this patch we also ensure that both DMABuf FD and stride are valid.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::GstVideoFrameHolder::GstVideoFrameHolder):
(WebCore::GstVideoFrameHolder::handoffVideoDmaBuf):

12:38 AM Changeset in webkit [257201] by ysuzuki@apple.com
  • 36 edits
    1 add in trunk

[JSC] Shrink Structure
https://bugs.webkit.org/show_bug.cgi?id=207827

Reviewed by Saam Barati.

Source/JavaScriptCore:

This patch shrinks sizeof(Structure) from 112 to 96 (16 bytes) in architectures using 64 bit pointers.
Structure is one of the most frequently allocated JSCell in JSC. So it is worth doing
all the sort of bit hacks to make it compact as much as possible.

  1. Put outOfLineTypeFlags, maxOffset and transitionOffset into highest bits of m_propertyTableUnsafe, m_cachedPrototypeChain, m_classInfo, and m_transitionPropertyName. Do not use PackedPtr here since some of them are concurrently accessed by GC.
  2. Put m_inlineCapacity into lower 8 bits of m_propertyHash.
  3. Remove m_lock, and use Structure::cellLock() instead.
  4. Remove m_cachedPrototypeChain clearing from the concurrent collector since it is dead code, it was old code. We were setting m_cachedPrototypeChain only if Structure is for JSObject. Clearing happened only if it was not a Structure for JSObject.
  5. Previous Structure is held as StructureID m_previous. And m_previousOrRareData becomes m_cachedPrototypeChainOrRareData.

Many pairs are using CompactPointerTuple to make code clean.
Combining all of the above techniques saves us 16 bytes.

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::create):
(JSC::AccessCase::propagateTransitions const):

  • bytecode/AccessCase.h:

(JSC::AccessCase::structure const):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCheckSubClass):
(JSC::DFG::SpeculativeJIT::compileObjectKeys):
(JSC::DFG::SpeculativeJIT::compileCreateThis):
(JSC::DFG::SpeculativeJIT::compileCreatePromise):
(JSC::DFG::SpeculativeJIT::compileCreateInternalFieldObject):

  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileObjectKeys):
(JSC::FTL::DFG::LowerDFGToB3::compileCreatePromise):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateInternalFieldObject):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckSubClass):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::emitLoadClassInfoFromStructure):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_create_this):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_create_this):

  • jit/Repatch.cpp:

(JSC::tryCachePutByID):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::createStructure):

  • runtime/ConcurrentJSLock.h:

(JSC::ConcurrentJSLockerBase::ConcurrentJSLockerBase):
(JSC::GCSafeConcurrentJSLockerImpl::GCSafeConcurrentJSLockerImpl):
(JSC::GCSafeConcurrentJSLockerImpl::~GCSafeConcurrentJSLockerImpl):
(JSC::ConcurrentJSLockerImpl::ConcurrentJSLockerImpl):
(JSC::GCSafeConcurrentJSLocker::GCSafeConcurrentJSLocker): Deleted.
(JSC::GCSafeConcurrentJSLocker::~GCSafeConcurrentJSLocker): Deleted.
(JSC::ConcurrentJSLocker::ConcurrentJSLocker): Deleted.

  • runtime/JSCell.h:
  • runtime/JSObject.cpp:

(JSC::JSObject::deleteProperty):
(JSC::JSObject::shiftButterflyAfterFlattening):

  • runtime/JSObject.h:

(JSC::JSObject::getDirectConcurrently const):

  • runtime/JSObjectInlines.h:

(JSC::JSObject::prepareToPutDirectWithoutTransition):

  • runtime/JSType.cpp:

(WTF::printInternal):

  • runtime/JSType.h:
  • runtime/Structure.cpp:

(JSC::StructureTransitionTable::contains const):
(JSC::StructureTransitionTable::get const):
(JSC::StructureTransitionTable::add):
(JSC::Structure::dumpStatistics):
(JSC::Structure::Structure):
(JSC::Structure::create):
(JSC::Structure::findStructuresAndMapForMaterialization):
(JSC::Structure::materializePropertyTable):
(JSC::Structure::addPropertyTransitionToExistingStructureImpl):
(JSC::Structure::addPropertyTransitionToExistingStructureConcurrently):
(JSC::Structure::addNewPropertyTransition):
(JSC::Structure::removeNewPropertyTransition):
(JSC::Structure::changePrototypeTransition):
(JSC::Structure::attributeChangeTransition):
(JSC::Structure::toDictionaryTransition):
(JSC::Structure::takePropertyTableOrCloneIfPinned):
(JSC::Structure::nonPropertyTransitionSlow):
(JSC::Structure::flattenDictionaryStructure):
(JSC::Structure::pin):
(JSC::Structure::pinForCaching):
(JSC::Structure::allocateRareData):
(JSC::Structure::ensurePropertyReplacementWatchpointSet):
(JSC::Structure::copyPropertyTableForPinning):
(JSC::Structure::add):
(JSC::Structure::remove):
(JSC::Structure::visitChildren):
(JSC::Structure::canCachePropertyNameEnumerator const):

  • runtime/Structure.h:
  • runtime/StructureInlines.h:

(JSC::Structure::get):
(JSC::Structure::ruleOutUnseenProperty const):
(JSC::Structure::seenProperties const):
(JSC::Structure::addPropertyHashAndSeenProperty):
(JSC::Structure::forEachPropertyConcurrently):
(JSC::Structure::transitivelyTransitionedFrom):
(JSC::Structure::cachedPrototypeChain const):
(JSC::Structure::setCachedPrototypeChain):
(JSC::Structure::prototypeChain const):
(JSC::Structure::propertyReplacementWatchpointSet):
(JSC::Structure::checkOffsetConsistency const):
(JSC::Structure::add):
(JSC::Structure::remove):
(JSC::Structure::removePropertyWithoutTransition):
(JSC::Structure::setPropertyTable):
(JSC::Structure::clearPropertyTable):
(JSC::Structure::setOutOfLineTypeFlags):
(JSC::Structure::setInlineCapacity):
(JSC::Structure::setClassInfo):
(JSC::Structure::setPreviousID):
(JSC::Structure::clearPreviousID):

  • runtime/StructureRareData.cpp:

(JSC::StructureRareData::createStructure):
(JSC::StructureRareData::create):
(JSC::StructureRareData::StructureRareData):
(JSC::StructureRareData::visitChildren):

  • runtime/StructureRareData.h:
  • runtime/StructureRareDataInlines.h:

(JSC::StructureRareData::setCachedPrototypeChain):
(JSC::StructureRareData::setPreviousID): Deleted.
(JSC::StructureRareData::clearPreviousID): Deleted.

  • tools/JSDollarVM.cpp:

(JSC::JSDollarVMHelper::functionGetStructureTransitionList):

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::WebAssemblyFunction::jsCallEntrypointSlow):

Source/WTF:

Make CompactPointerTuple usable for storing 16 bits data.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/CompactPointerTuple.h:
  • wtf/CompactRefPtrTuple.h: Added.
  • wtf/text/StringImpl.h:
  • wtf/text/SymbolImpl.h:

(WTF::SymbolImpl::hashForSymbol const):
(WTF::SymbolImpl::SymbolImpl):

LayoutTests:

This test is half-broken since it relies on HashMap's order implicitly.
We changed SymbolImpl's hash code, so it makes the result different.

  • inspector/debugger/tail-deleted-frames/tail-deleted-frames-this-value-expected.txt:

Feb 23, 2020:

4:54 PM Changeset in webkit [257200] by Andres Gonzalez
  • 27 edits in trunk/Source/WebCore

AXIsolatedObject support for tables.
https://bugs.webkit.org/show_bug.cgi?id=208074

Reviewed by Chris Fleizach.

Covered by existing tests.

AccessibilityObjectWrapper code and some utility functions in
AccessibilityObject.cpp assume that AX objects can be downcast to a
specialized subclass like AccessibilityTable. That is not true for
AXIsolatedObjects, and the reason why tables don’t work in IsolatedTree
mode.

To solve this problem, this patch exposes the AccessibilityTable
interface as part of the AXCoreObject. Thus it eliminates the need to
downcast an AX object to an AccessibilityTable. It also implements the
AccessibilityTable interface in the AXIsolatedObject class. The same
approach will be used in subsequent patches for other specialized
interfaces used by client code.

  • accessibility/AccessibilityARIAGrid.cpp:

(WebCore::AccessibilityARIAGrid::addChildren):

  • accessibility/AccessibilityARIAGrid.h:
  • accessibility/AccessibilityARIAGridCell.cpp:

(WebCore::AccessibilityARIAGridCell::parentTable const):
(WebCore::AccessibilityARIAGridCell::rowIndexRange const):
(WebCore::AccessibilityARIAGridCell::columnIndexRange const):

  • accessibility/AccessibilityARIAGridRow.cpp:

(WebCore::AccessibilityARIAGridRow::disclosedRows):
(WebCore::AccessibilityARIAGridRow::disclosedByRow const):
(WebCore::AccessibilityARIAGridRow::parentTable const):

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::shouldUseAccessibilityObjectInnerText):

  • accessibility/AccessibilityObject.cpp:

(WebCore::appendChildrenToArray): Use AXCoreObject interface instead of downcasting.
(WebCore::Accessibility::isAccessibilityObjectSearchMatchAtIndex): Use AXCoreObject interface instead of downcasting.

  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityObjectInterface.h: AXCoreObject now exposes the table interface.
  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::ariaSelectedRows):

  • accessibility/AccessibilityTable.cpp:

(WebCore::AccessibilityTable::AccessibilityTable):
(WebCore::AccessibilityTable::init):
(WebCore::AccessibilityTable::isExposable const):
(WebCore::AccessibilityTable::addChildren):
(WebCore::AccessibilityTable::headerContainer): Returns an AXCoreObject.

The following methods now return a vector of objects instead of taking
and out parameter. RVO guaranties that this does not cause extra copy.
(WebCore::AccessibilityTable::columns):
(WebCore::AccessibilityTable::rows):
(WebCore::AccessibilityTable::columnHeaders):
(WebCore::AccessibilityTable::rowHeaders):
(WebCore::AccessibilityTable::visibleRows):
(WebCore::AccessibilityTable::cells):

(WebCore::AccessibilityTable::tableLevel const):
(WebCore::AccessibilityTable::roleValue const):
(WebCore::AccessibilityTable::computeAccessibilityIsIgnored const):
(WebCore::AccessibilityTable::title const):
(WebCore::AccessibilityTable::isExposableThroughAccessibility const): Renamed to just isExposable.

  • accessibility/AccessibilityTable.h:

(WebCore::AccessibilityTable::supportsSelectedRows): Deleted.

  • accessibility/AccessibilityTableCell.cpp:

(WebCore::AccessibilityTableCell::parentTable const):
(WebCore::AccessibilityTableCell::isTableCell const):
(WebCore::AccessibilityTableCell::columnHeaders):
(WebCore::AccessibilityTableCell::rowHeaders):

  • accessibility/AccessibilityTableCell.h:
  • accessibility/AccessibilityTableColumn.cpp:

(WebCore::AccessibilityTableColumn::headerObject):
(WebCore::AccessibilityTableColumn::addChildren):

  • accessibility/AccessibilityTableHeaderContainer.cpp:

(WebCore::AccessibilityTableHeaderContainer::addChildren):

  • accessibility/AccessibilityTableRow.cpp:

(WebCore::AccessibilityTableRow::isTableRow const):
(WebCore::AccessibilityTableRow::parentTable const):

  • accessibility/atk/WebKitAccessible.cpp:

(webkitAccessibleGetAttributes):

  • accessibility/atk/WebKitAccessibleInterfaceTable.cpp:

(webkitAccessibleTableGetColumnHeader):
(webkitAccessibleTableGetRowHeader):

  • accessibility/atk/WebKitAccessibleInterfaceTableCell.cpp:

(webkitAccessibleTableCellGetColumnHeaderCells):
(webkitAccessibleTableCellGetRowHeaderCells):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper tableParent]):
(-[WebAccessibilityObjectWrapper accessibilityHeaderElements]):

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData):
(WebCore::AXIsolatedObject::setObjectVectorProperty):
(WebCore::AXIsolatedObject::cellForColumnAndRow):
(WebCore::AXIsolatedObject::fillChildrenVectorForProperty const):
(WebCore::AXIsolatedObject::isAccessibilityTableInstance const):
(WebCore::AXIsolatedObject::isDataTable const): Deleted.

  • accessibility/isolatedtree/AXIsolatedObject.h:
  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::nodeForID const):
(WebCore::AXIsolatedTree::objectsForIDs const):

  • accessibility/isolatedtree/AXIsolatedTree.h:
  • accessibility/mac/AXObjectCacheMac.mm:

(WebCore::AXObjectCache::postPlatformNotification):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

In addition to replacing the downcast to AccessibilityTable, cleaned up
the unnecessary calls to self.axBackingObject. This used to be a macro,
but it is now a method that check for the execution thread and returns
the appropriate AX object.
(-[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames]):
(-[WebAccessibilityObjectWrapper ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper _accessibilitySetValue:forAttribute:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):

4:31 PM Changeset in webkit [257199] by Adrian Perez de Castro
  • 17 edits in trunk/Source

Non-unified build fixes late February 2020 edition
https://bugs.webkit.org/show_bug.cgi?id=208111

Unreviewed build fix.

Source/WebCore:

No new tests needed.

  • dom/WindowEventLoop.cpp: Add missing include.
  • html/HTMLEmbedElement.cpp: Ditto.
  • html/HTMLFrameSetElement.cpp: Ditto.
  • html/HTMLOptionElement.cpp: Ditto.
  • html/HTMLTablePartElement.cpp: Ditto.
  • html/HTMLTextFormControlElement.cpp: Ditto.
  • html/RangeInputType.cpp: Ditto.
  • inspector/agents/InspectorCSSAgent.cpp: Ditto.
  • loader/ImageLoader.h: Add missing forward declration for WebCore::Document.
  • platform/graphics/ImageBuffer.cpp: Add missing include.
  • platform/graphics/filters/FilterEffect.cpp: Ditto.
  • platform/wpe/ThemeWPE.h: Add missing include and forward declaration for WebCore::Path.
  • svg/graphics/filters/SVGFilterBuilder.cpp: Add missing include.

Source/WebKit:

  • NetworkProcess/NetworkSocketChannel.cpp: Add missing include.
  • WebProcess/FullScreen/WebFullScreenManager.cpp:

(WebKit::screenRectOfContents): Add missing namespace to usage of WebCore::IntRect.
(WebKit::WebFullScreenManager::didExitFullScreen): Add missing namespace to usage of
WebCore::FloatBoxExtent.

2:12 PM Changeset in webkit [257198] by bshafiei@apple.com
  • 1 copy in tags/Safari-609.1.20.111.3

Tag Safari-609.1.20.111.3.

2:00 PM Changeset in webkit [257197] by bshafiei@apple.com
  • 8 edits in branches/safari-609.1.20.111-branch/Source

Versioning.

1:41 PM Changeset in webkit [257196] by Darin Adler
  • 17 edits in trunk/Source/WebCore

Follow up element iterator work by reducing includes and using is<> in a few more places
https://bugs.webkit.org/show_bug.cgi?id=207816

Reviewed by Antti Koivisto.

  • accessibility/AccessibilityTableColumn.cpp: Removed unneeded includes.
  • bindings/js/JSDOMWindowCustom.cpp: Ditto.
  • dom/CustomElementRegistry.cpp: Ditto.
  • dom/Node.cpp: Ditto.
  • editing/markup.cpp: Ditto.
  • html/GenericCachedHTMLCollection.cpp: Ditto.
  • html/HTMLCollection.cpp: Ditto.
  • html/HTMLFrameSetElement.cpp: Ditto.
  • html/track/TextTrackCue.cpp: Ditto.
  • page/scrolling/AxisScrollSnapOffsets.cpp: Ditto.
  • platform/DataListSuggestionsClient.h: Reduced includes, use forward declarations.
  • style/StyleResolver.cpp:

(WebCore::Style::isAtShadowBoundary): Use the is<ShadowRoot> function.

  • rendering/svg/RenderSVGResourceClipper.cpp:

(WebCore::RenderSVGResourceClipper::pathOnlyClipping): Use is<RenderSVGText> and
is<SVGGraphicsElement>, tweak coding style a tiny bit, and fix wording of comments.

  • svg/SVGAElement.cpp:

(WebCore::SVGAElement::createElementRenderer): Use is<SVGElement>.

  • svg/SVGElement.cpp: Removed unneeded includes.

(WebCore::SVGElement::isOutermostSVGSVGElement): Use is<SVGElement> and
is<SVGForeignObjectElement>.
(WebCore::SVGElement::reportAttributeParsingError): Use is<SVGElement>.
(WebCore::SVGElement::updateRelativeLengthsInformation): Use
is<SVGGraphicsElement> and is<SVGElement>, and use an if statement instead of
a while loop since this doesn't loop.

9:44 AM Changeset in webkit [257195] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Mark several async loading tests as failure
https://bugs.webkit.org/show_bug.cgi?id=208105

Unreviewed gardening.

  • platform/gtk/TestExpectations:
7:16 AM Changeset in webkit [257194] by Darin Adler
  • 13 edits in trunk

Fix HTMLDataListElement.options to include even options that are not suggestions
https://bugs.webkit.org/show_bug.cgi?id=208102

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/forms/the-datalist-element/datalistoptions-expected.txt:

Expect this test to pass instead of failing.

Source/WebCore:

  • html/ColorInputType.cpp:

(WebCore::ColorInputType::suggestedColors const): Use
HTMLDataListElement::suggestions instead of HTMLCollection, both for efficiency
and for correctness.

  • html/GenericCachedHTMLCollection.cpp:

(WebCore::GenericCachedHTMLCollection<traversalType>::elementMatches const):
Removed code to filter out options that are not valid suggestions. This is not
called for in the HTML specification.

  • html/HTMLDataListElement.cpp:

(WebCore::HTMLDataListElement::isSuggestion): Added.

  • html/HTMLDataListElement.h: Added isSuggestion and suggestions functions so

logic about which datalist options are suggestions can be easily shared. The
suggestions uses the new filteredDescendants function template.

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::setupDateTimeChooserParameters): Use
HTMLDataListElement::suggestions instead of HTMLCollection.

  • html/TextFieldInputType.cpp:

(WebCore::TextFieldInputType::suggestions): Use
HTMLDataListElement::suggestions instead of HTMLCollection. Also added a FIXME
since this implementation uses case-insensitive ASCII but it's for user interface
and the current implementation might be insufficient for some lanagues.

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::paintSliderTicks): Use
HTMLDataListElement::suggestions instead of HTMLCollection.

LayoutTests:

  • fast/forms/datalist/datalist-expected.txt: Updated expectations.
  • fast/forms/datalist/datalist.html: Updated test since the options collection

includes all options that are descendants, even ones that are not sugggestions.
The web platform tests already had this right; we had a failing test there.

4:20 AM Changeset in webkit [257193] by Diego Pino Garcia
  • 1 edit
    23 adds in trunk/LayoutTests

[GTK] Gardening, emit new baselines for WebGL tests
https://bugs.webkit.org/show_bug.cgi?id=208103

Unreviewed gardening.

  • platform/gtk/fast/canvas/webgl/copy-tex-image-and-sub-image-2d-bad-input-expected.txt: Added.
  • platform/gtk/fast/canvas/webgl/draw-elements-out-of-bounds-uint-index-expected.txt: Added.
  • platform/gtk/fast/canvas/webgl/drawElements-empty-vertex-data-expected.txt: Added.
  • platform/gtk/fast/canvas/webgl/readPixels-float-expected.txt: Added.
  • platform/gtk/fast/canvas/webgl/vertexAttribPointer-with-bad-offset-expected.txt: Added.
  • platform/gtk/fast/canvas/webgl/webgl-drawarrays-crash-2-expected.txt: Added.
  • platform/gtk/fast/canvas/webgl/webgl-drawarrays-crash-expected.txt: Added.
  • platform/gtk/webgl/1.0.3/conformance/context/context-lost-restored-expected.txt: Added.
  • platform/gtk/webgl/1.0.3/conformance/extensions/oes-texture-half-float-expected.txt: Added.
  • platform/gtk/webgl/1.0.3/conformance/glsl/misc/shaders-with-name-conflicts-expected.txt: Added.
  • platform/gtk/webgl/1.0.3/conformance/misc/webgl-specific-expected.txt: Added.
  • platform/gtk/webgl/1.0.3/conformance/rendering/point-no-attributes-expected.txt: Added.
  • platform/gtk/webgl/1.0.3/conformance/textures/texture-copying-feedback-loops-expected.txt: Added.

Feb 22, 2020:

11:16 PM Changeset in webkit [257192] by Darin Adler
  • 28 edits
    1 delete in trunk/Source/WebCore

Refine the DOM element iterator implementation
https://bugs.webkit.org/show_bug.cgi?id=208100

Reviewed by Antti Koivisto.

  • Removed the duplicate descendant iterator, keeping the one that matches the style of the ancestor and child iterators.
  • Removed the non-template elementAncestors, elementChildren, elementDescendants, and elementLineage functions and changed callers to use xxxOfType<Element> instead.
  • Renamed "IteratorAdapter" templates to "Range", choosing that term to match the upcoming C++20 Ranges library and range-based for loops.
  • Changed the iterators to use an actual "nullptr" for end, following the "sentinel" design pattern from the Ranges library. Still kept a tiny bit of using an iterator for end around, only so we can use iterator library functions like std::distance while waiting for std::ranges::distance, which is compatible with sentinels.
  • Implemented const correctness by using const types instead of separate "Const" class templates. This cut down on source code size a lot. These element iterators don't need whole separate templates to implement the const correctness the way collection classes like HashMap do.
  • Improved some other details, like using more const and constexpr on members. All the functions on a range are const, because the range itself doesn't ever get modified, and all functions on an iterator are also const, because only operations like ++ and -- actually modify the iterator.
  • For now at least, removed extra code we don't need in practice. We never need to compare iterators to each other except when iterating a range, for example, so kept the != used for range iteration but not ==.
  • Simplified the HTMLCollection implementations by taking advantage of the null- based and sentinel designs. There are various places where we can write simpler code and pass around fewer arguments.
  • Added a new descendantsOfType template that takes a predicate and filters to only the elements that match that predicate. Similar concept to how we implement HTML collections, and possibly could be used even more eventually.
  • Use std::iterator in ElementIterator so we don't need to do that in derived classes. Also made more of ElementIterator protected to make it more explicit that it's an abstract class template and not something to be used directly.

The most unusual clients of the elmeent ranges and iterators are HTMLCollection and
the related caches, and this patch includes changes to those to adopt the new model.

  • Headers.cmake: Removed ElementDescendantIterator.h.
  • WebCore.xcodeproj/project.pbxproj: Ditto.
  • dom/ChildNodeList.cpp:

(WebCore::ChildNodeList::ChildNodeList): Removed initialization of m_indexCache
since the constructor no longer requires arguments.
(WebCore::ChildNodeList::invalidateCache): Removed argument to
CollectionIndexCache::invalidate.

  • dom/ChildNodeList.h: Removed collectionEnd, since it's no longer needed.
  • dom/CollectionIndexCache.h: Removed the collection argument to the

constructor, hasValidCache, and invalidate functions. Updated algorithms to use
null style termination instead of actually relying on comparing with an end
iterator, since that works for our element iterators.

  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::childElementCount const):: Use an empty initializer
list instead of the result of the end function since std::distance requires
both begin and end iterators have the same type.

  • dom/ElementAncestorIterator.h: Made the changes mentioned above, plus moved the

declarations of functions to the top of the file, since the classes are
implementation details, used downcast instead of static_cast.

  • dom/ElementAndTextDescendantIterator.h: Renamed IteratorAdapter to Range,

mostly didn't make other changes since this is not one of the element iterators.

  • dom/ElementChildIterator.h: Made the changes mentioned above, plus moved the

declarations of functions to the top of the file, since the classes are
implementation details.

  • dom/ElementDescendantIterator.h: Removed.
  • dom/ElementIterator.h: Made the changes mentioned above.
  • dom/LiveNodeList.cpp: Removed some unneeded includes, including HTMLCollection.h.

(WebCore::LiveNodeList::LiveNodeList): Simplified a little bit.
(WebCore::LiveNodeList::rootNode): Moved to the header.

  • dom/LiveNodeList.h: Updated since CollectionTraversal now uses the

more modern ElementDescendantIterator, not the older one that used a vector of
ancestors to do the iteration. Also use WTF_MAKE_ISO_NONALLOCATABLE since
LiveNodeList is an abstract class, and made some members protected. Removed
CachedLiveNodeList::rootNode since it was identical to LiveNodeList::rootNode,
and made LiveNodeList::rootNode protected so it can be called in
CachedLiveNodeList, and moved it to the header so it will still be inlined.
Simplified CachedListNodeList to use more final, to name long types less by
using "auto" and "using", and to not pass arguments to functions that don't
need them any more.

  • dom/NameNodeList.cpp:

(WebCore::NameNodeList::create): Moved here from the header.

  • dom/NameNodeList.h: Removed unneeded includes and comment, moved create

function out of the header.

  • dom/TypedElementDescendantIterator.h: Made all the change mentioned above.

Also added a new filteredDescendants function, range, and iterator that uses
a filter function. Not used yet in this patch; use comes in a future one.

  • html/CachedHTMLCollection.h: Updated includes, shortened type names,

and used auto to simplify the code a bit. Removed unneeded collection arguments
from various CollectionIndexCache functions.

  • html/CollectionTraversal.h: Updated to use the new/typed version of

ElementDescendantIterator. Removed end functions. Use shorter type names.
Tweaked algorithms to use null termination for loops instead of end iterators.

  • html/HTMLFormControlsCollection.h:

(WebCore::HTMLFormControlsCollection::item const): Removed unneeded class
template arguments.

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::formElementIndex): Changed to use the null check
instead of comparing iterator with end.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::selectNextSourceChild): Ditto.

  • html/HTMLTableSectionElement.cpp:

(WebCore::HTMLTableSectionElement::numRows const): Pass a default-constructed
iterator for end to std::distance. When we get C++20 we can clean this up by
using std::ranges::distances instead.

  • html/LabelsNodeList.cpp:

(WebCore::LabelsNodeList::create): Moved here from the header.

  • html/LabelsNodeList.h: Removed unneeded include, tweaked coding style a bit,

moved create function into the .cpp file.

  • html/RadioNodeList.cpp: Removed unneeded include.

(WebCore::RadioNodeList::create): Moved this here from the header.
(WebCore::nonEmptyRadioButton): Renamed from toRadioButtonInputElement to make
a little clearer what the function does.
(WebCore::RadioNodeList::value const): Updated to use nonEmptyRadioButton and
straighten out the loop a tiny bit.
(WebCore::RadioNodeList::setValue): Ditto.
(WebCore::RadioNodeList::checkElementMatchesRadioNodeListFilter const): Deleted.
(WebCore::RadioNodeList::elementMatches const): Merged in the logic from
checkElementMatchesRadioNodeListFilter, since the separate function wasn't helpful.

  • html/RadioNodeList.h: Removed unneeded includes. Moved the create function out

of the header. Removed unneeded override of the item function to tighten the
return type; not used in WebCore and not helpful for bindings. Made more private.

  • style/StyleInvalidator.cpp:

(WebCore::Style::Invalidator::invalidateStyleForDescendants): Use null checking
style for the loop rather than comparing with end.
(WebCore::Style::Invalidator::invalidateStyleWithMatchElement): Remove an unneeded
local variable and braces.

  • svg/SVGUseElement.cpp:

(WebCore::removeDisallowedElementsFromSubtree): Use null checking style rather than
comparing with end.
(WebCore::SVGUseElement::expandUseElementsInShadowTree const): Ditto. Also use
dropAssertions rather than assigning to end with a comment saying it drops assertions.
(WebCore::SVGUseElement::expandSymbolElementsInShadowTree const): Ditto.

11:16 PM Changeset in webkit [257191] by Darin Adler
  • 13 edits in trunk

Fix some include mistakes and make some coding style tweaks to WebKit and WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=208099

Reviewed by Antti Koivisto.

Source/WebKit:

  • WebProcess/FullScreen/WebFullScreenManager.cpp: Removed some unneeded includes.
  • WebProcess/WebCoreSupport/WebChromeClient.cpp: Removed some unneeded includes.

(WebKit::WebChromeClient::createDataListSuggestionPicker): Pass references.

  • WebProcess/WebCoreSupport/WebDataListSuggestionPicker.cpp:

(WebKit::WebDataListSuggestionPicker::WebDataListSuggestionPicker): Take references
instead of pointers, since they must both be non-null.
(WebKit::WebDataListSuggestionPicker::handleKeydownWithIdentifier): Updated
to use reference.
(WebKit::WebDataListSuggestionPicker::didSelectOption): Ditto.
(WebKit::WebDataListSuggestionPicker::didCloseSuggestions): Ditto.
(WebKit::WebDataListSuggestionPicker::close): Ditto.
(WebKit::WebDataListSuggestionPicker::displayWithActivationType): Ditto.

  • WebProcess/WebCoreSupport/WebDataListSuggestionPicker.h: Marked the class

final, made more functions private, use references instead of pointers,
renamed m_dataListSuggestionsClient to m_client since there is only one
client we are dealing with in this class.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setActiveDataListSuggestionPicker): Take reference.

  • WebProcess/WebPage/WebPage.h: Updated for the above.

Source/WebKitLegacy/mac:

  • DOM/DOMDocument.mm: Removed unneeded includes and re-sorted.
  • DOM/DOMDocumentFragment.mm: Ditto.
  • DOM/DOMHTMLFieldSetElement.mm: Ditto.

Tools:

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityNotificationHandler.mm:

Sorted includes the traditional way. Added an include of AccessibilityCommonMac.h
so we can use the -[NSString createJSStringRef] method.
(-[NSString createJSStringRef]): Deleted. This is a duplicate of the method
defined in AccessibilityCommonMac.mm, and was causing a linker warning.

11:15 PM Changeset in webkit [257190] by Darin Adler
  • 4 edits
    4 adds in trunk

Put more of the datalist element implementation inside ENABLE(DATALIST_ELEMENT)
https://bugs.webkit.org/show_bug.cgi?id=208098

Reviewed by Antti Koivisto.

Source/WebCore:

  • html/HTMLFormControlElement.cpp:

(WebCore::HTMLFormControlElement::computeWillValidate const): Use
ancestorsOfType instead of a loop. Since this involves using the class
HTMLDataListElement, it's only implemented when ENABLE(DATALIST_ELEMENT)
is true. The old code would always do this validation for elements with
the datalist tag even if the element is not implemented, so this changes
behavior and affects some test results.

LayoutTests:

  • platform/mac-wk1/TestExpectations: Removed some lines for tests that no longer

exist at the paths mentioned.

  • platform/mac-wk1/fast/forms/form-pseudo-valid-style-expected.txt: Added.
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt: Added.
  • platform/win/fast/forms/form-pseudo-valid-style-expected.txt: Added.

Expect failure on the parts of these tests that are specific to datalist, since
datalist is not enabled in these configurations (mac-wk1) and (win). Before now,
the code wasn't properly conditionalized and some of the datalist behavior would
be active even when the feature was not enabled. Best longer term solution is to
turn this feature on for more platforms, perhaps all of them. For now, landed new
expected results for cases that EWS indicated; more may be necessary if there are
more platforms where this feature is not enabled.

9:45 PM Changeset in webkit [257189] by jer.noble@apple.com
  • 20 edits
    3 deletes in trunk/Source

Stop using QTKit for rendering WK1 video fullscreen controls
https://bugs.webkit.org/show_bug.cgi?id=207795
<rdar://problem/48894915>

Reviewed by Jon Lee.

Source/WebCore:

Drive-by fixes:

  • Don't set the video layer to not-visible when in video fullscreen mode.
  • Export previously un-exported methods.
  • Make some ios-only classes available on mac.
  • Add a couple previously unimplemented properties to WebAVPlayerController needed by AVKit.
  • WebCoreFullscreenWindow doesn't depend on FULLSCREEN_API.
  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::visibilityStateChanged):

  • html/HTMLMediaElement.h:

(WebCore::HTMLMediaElement::setVideoFullscreenLayer):

  • platform/ios/PlaybackSessionInterfaceAVKit.h:
  • platform/ios/PlaybackSessionInterfaceAVKit.mm:

(WebCore::PlaybackSessionInterfaceAVKit::externalPlaybackChanged):

  • platform/ios/WebAVPlayerController.h:
  • platform/ios/WebAVPlayerController.mm:

(-[WebAVPlayerController canSeekFrameBackward]):
(-[WebAVPlayerController canSeekFrameForward]):

  • platform/mac/WebCoreFullScreenWindow.h:
  • platform/mac/WebCoreFullScreenWindow.mm:

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cocoa/AVKitSPI.h:
  • pal/spi/mac/NSWindowSPI.h:
  • pal/spi/mac/QTKitSPI.h: Removed.

Source/WebKit:

Use NSWindowSPI.h rather than declaring SPI in the source file.

  • UIProcess/mac/WKFullScreenWindowController.mm:

Source/WebKitLegacy/mac:

Switch to using AVPlayerView instead of QTHUD to render our fullscreen controls.

In addition, switch to a modern NSWindow fullscreen API, with custom, smooth animations which
move the fullscreen window to a separate space. This requires subclassing AVPlayerView so that
fullscreen toggling will signal to the controller, so that our fullscreen button and the inline
version of same don't get out of sync. Because AVPlayerView requires an AVPlayer in order to
display the video layer, and we won't necessarily have an AVPlayer for MSE-backed videos, instead
install a custom overlay view inside the AVPlayerView in which to host the fullscreen video layer.

  • WebView/WebVideoFullscreenController.h:
  • WebView/WebVideoFullscreenController.mm:

(-[WebOverlayLayer layoutSublayers]):
(WebAVPlayerView_delegate):
(WebAVPlayerView_setDelegate):
(WebAVPlayerView_isFullScreen):
(WebAVPlayerView_enterFullScreen):
(WebAVPlayerView_exitFullScreen):
(allocWebAVPlayerViewInstance):
(-[WebVideoFullscreenController init]):
(-[WebVideoFullscreenController dealloc]):
(-[WebVideoFullscreenController fullscreenWindow]):
(-[WebVideoFullscreenController windowDidLoad]):
(-[WebVideoFullscreenController setVideoElement:]):
(-[WebVideoFullscreenController enterFullscreen:]):
(-[WebVideoFullscreenController exitFullscreen]):
(-[WebVideoFullscreenController applicationDidResignActive:]):
(-[WebVideoFullscreenController _requestExit]):
(-[WebVideoFullscreenController _requestEnter]):
(-[WebVideoFullscreenController cancelOperation:]):
(-[WebVideoFullscreenController playerViewIsFullScreen:]):
(-[WebVideoFullscreenController playerViewRequestEnterFullscreen:]):
(-[WebVideoFullscreenController playerViewRequestExitFullscreen:]):
(-[WebVideoFullscreenController customWindowsToEnterFullScreenForWindow:]):
(-[WebVideoFullscreenController window:startCustomAnimationToEnterFullScreenWithDuration:]):
(-[WebVideoFullscreenController customWindowsToExitFullScreenForWindow:]):
(-[WebVideoFullscreenController window:startCustomAnimationToExitFullScreenWithDuration:]):
(-[WebVideoFullscreenController windowDidEnterFullScreen:]):
(-[WebVideoFullscreenController windowWillExitFullScreen:]):
(-[WebVideoFullscreenController windowDidExitFullScreen:]):
(-[WebVideoFullscreenController clearFadeAnimation]): Deleted.
(-[WebVideoFullscreenController windowDidExitFullscreen]): Deleted.
(-[WebVideoFullscreenController windowDidEnterFullscreen]): Deleted.
(frameExpandedToRatioOfFrame): Deleted.
(createBackgroundFullscreenWindow): Deleted.
(-[WebVideoFullscreenController setupFadeAnimationIfNeededAndFadeIn:]): Deleted.
(-[WebVideoFullscreenController applicationDidChangeScreenParameters:]): Deleted.
(-[WebVideoFullscreenController updateMenuAndDockForFullscreen]): Deleted.
(-[WebVideoFullscreenController requestExitFullscreenWithAnimation:]): Deleted.
(-[WebVideoFullscreenController requestExitFullscreen]): Deleted.
(-[WebVideoFullscreenController fadeHUDIn]): Deleted.
(-[WebVideoFullscreenController observeValueForKeyPath:ofObject:change:context:]): Deleted.
(-[WebVideoFullscreenController rateChanged:]): Deleted.
(-[WebVideoFullscreenWindow initWithContentRect:styleMask:backing:defer:]): Deleted.
(-[WebVideoFullscreenWindow dealloc]): Deleted.
(-[WebVideoFullscreenWindow resignFirstResponder]): Deleted.
(-[WebVideoFullscreenWindow canBecomeKeyWindow]): Deleted.
(-[WebVideoFullscreenWindow mouseDown:]): Deleted.
(-[WebVideoFullscreenWindow cancelOperation:]): Deleted.
(-[WebVideoFullscreenWindow animatedResizeDidEnd]): Deleted.
(-[WebVideoFullscreenWindow animateFromRect:toRect:withSubAnimation:controllerAction:]): Deleted.
(-[WebVideoFullscreenWindow animationDidEnd:]): Deleted.
(-[WebVideoFullscreenWindow mouseMoved:]): Deleted.

  • WebView/WebVideoFullscreenHUDWindowController.h: Removed.
  • WebView/WebVideoFullscreenHUDWindowController.mm: Removed.
8:56 PM Changeset in webkit [257188] by Darin Adler
  • 43 edits in trunk/Source

Use DOM element iterators more, and more consistently
https://bugs.webkit.org/show_bug.cgi?id=208097

Reviewed by Antti Koivisto.

Source/WebCore:

  • Added uses of element iterators in many places that had hand-written loops.
  • Eliminated most uses of elementAncestors, elementChildren, elementDescendants, and elementLineage functions and use ancestorsOfType<Element>, childrenOfType<Element>, descendantsOfType<Element> and lineageOfType<Element> instead. In particular, descendantsOfType<Element> uses a better traversal algorithm than elementDescendants does.
  • Unrelated: Omit template arguments in various cases where the C++ language lets us just give the name of the class template without repeating the arguments.
  • Unrelated: Remove some uses of the inefficient Node::nodeType function.
  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::mouseButtonListener const): Use
lineageOfType instead of elementLineage.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::accessibilityImageMapHitTest const):
Use ancestorsOfType instead of a handwritten loop.

  • dom/AllDescendantsCollection.h:

(WebCore::AllDescendantsCollection::AllDescendantsCollection): Removed
class template arguments.

  • dom/ClassCollection.h:

(WebCore::ClassCollection::ClassCollection): Ditto.

  • dom/DocumentFragment.cpp:

(WebCore::DocumentFragment::getElementById const): Use
descendantsOfType insteadof elementDescendants.

  • dom/Element.cpp:

(WebCore::Element::computeInheritedLanguage const): Use lineageOfType
instead of a handrwitten loop.

  • dom/SelectorQuery.cpp:

(WebCore::SelectorDataList::closest const): Use lineageOfType instead of an
explicit loop.
(WebCore::elementsForLocalName): Use descendantsOfType instead of elementDescendants.
(WebCore::anyElement): Ditto.
(WebCore::SelectorDataList::executeSingleTagNameSelectorData const): Ditto.
(WebCore::SelectorDataList::executeSingleClassNameSelectorData const): Ditto.
(WebCore::SelectorDataList::executeSingleSelectorData const): Ditto.
(WebCore::SelectorDataList::executeSingleMultiSelectorData const): Ditto.
(WebCore::SelectorDataList::executeCompiledSimpleSelectorChecker const): Ditto.
(WebCore::SelectorDataList::executeCompiledSelectorCheckerWithCheckingContext const): Ditto.
(WebCore::SelectorDataList::executeCompiledSingleMultiSelectorData const): Ditto.

  • dom/TagCollection.cpp:

(WebCore::TagCollectionNS::TagCollectionNS): Removed class template arguments.
(WebCore::TagCollection::TagCollection): Ditto.
(WebCore::HTMLTagCollection::HTMLTagCollection): Ditto.

  • editing/Editor.cpp:

(WebCore::Editor::applyEditingStyleToBodyElement const): Use the function
descendantsOfType<HTMLBodyElement> instead of getElementByTagName(bodyTag).
Also merged applyEditingStyleToElement in here.
(WebCore::Editor::applyEditingStyleToElement const): Deleted.

  • editing/Editor.h: Deleted applyEditingStyleToElement.
  • editing/FrameSelection.cpp:

(WebCore::scanForForm): Cleaned up descendantsOfType loop so there's no
explicit use of end. Also changed if nesting a little bit.

  • editing/TextManipulationController.cpp:

(WebCore::ExclusionRuleMatcher::isExcluded): Use lineageOfType instead of
elementLineage.

  • html/HTMLAllCollection.h: Removed class template arguments.
  • html/HTMLElement.cpp:

(WebCore::elementAffectsDirectionality): Refactored so we get a more efficient
implementation when the type of the element is known.
(WebCore::HTMLElement::adjustDirectionalityIfNeededAfterChildAttributeChanged):
Use lineageOfType instead of elementLineage.

  • html/HTMLElement.h: Removed some uneeeded forward declarations.
  • html/HTMLEmbedElement.cpp:

(WebCore::findWidgetRenderer): Use ancestorsOfType instead of a loop.

  • html/HTMLFormControlElement.cpp:

(WebCore::HTMLFormControlElement::enclosingFormControlElement): Deleted.

  • html/HTMLFormControlElement.h: Deleted unused enclosingFormControlElement.
  • html/HTMLFormControlsCollection.cpp:

(WebCore::HTMLFormControlsCollection::HTMLFormControlsCollection): Removed
class template arguments.
(WebCore::HTMLFormControlsCollection::ownerNode const): Ditto.
(WebCore::HTMLFormControlsCollection::invalidateCacheForDocument): Ditto.

  • html/HTMLOptGroupElement.cpp:

(WebCore::HTMLOptGroupElement::ownerSelectElement const): Use ancestorsOfType
instead of a hand-written loop.

  • html/HTMLOptionElement.cpp:

(WebCore::HTMLOptionElement::parseAttribute): Use ancestorsOfType instead of
calling ownerDataListElement.
(WebCore::HTMLOptionElement::childrenChanged): Ditto.
(WebCore::HTMLOptionElement::ownerDataListElement const): Deleted. Since the
same option element can be used by multiple nested data list elements, the
concept of a single "owner" data list element isn't correct.
(WebCore::HTMLOptionElement::ownerSelectElement const): Use ancestorsOfType
instead of a hand-written loop.

  • html/HTMLOptionElement.h: Deleted ownerDataListElement.
  • html/HTMLOptionsCollection.cpp:

(WebCore::HTMLOptionsCollection::HTMLOptionsCollection): Removed class
template arguments.

  • html/HTMLTableCellElement.cpp:

(WebCore::HTMLTableCellElement::additionalPresentationAttributeStyle const):
Use auto since findParentTable now returns a const table pointer.

  • html/HTMLTableColElement.cpp:

(WebCore::HTMLTableColElement::additionalPresentationAttributeStyle const):
Ditto.

  • html/HTMLTableElement.cpp:

(WebCore::HTMLTableElement::createSharedCellStyle): Made const.
(WebCore::HTMLTableElement::additionalCellStyle): Ditto.
(WebCore::HTMLTableElement::additionalGroupStyle): Ditto.

  • html/HTMLTableElement.h: Made the functions const, and m_sharedCellStyle

mutable.

  • html/HTMLTablePartElement.cpp:

(WebCore::HTMLTablePartElement::findParentTable const): Use ancestorsOfType
instead of a hand-written loop. Also revised return type to be const-consistent.

  • html/HTMLTablePartElement.h: Updated return type.
  • html/HTMLTableRowsCollection.cpp:

(WebCore::HTMLTableRowsCollection::HTMLTableRowsCollection): Removed class
template arguments.

  • html/HTMLTextFormControlElement.cpp:

(WebCore::parentHTMLElement): Deleted.
(WebCore::HTMLTextFormControlElement::directionForFormData const): Use
lineageOfType rather than a hand-written loop. Also got rid of the multiple
strings in return paths since the function always returns one of two strings.

  • inspector/InspectorAuditAccessibilityObject.cpp:

(WebCore::InspectorAuditAccessibilityObject::getElementsByComputedRole):
Use descendantsOfType instead of elementDescendants.

  • inspector/agents/InspectorCSSAgent.cpp:

(WebCore::InspectorCSSAgent::getMatchedStylesForNode): Use ancestorsOfType
instead of a hand-written loop.

  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::inspect): Use isElementNode and isDocumentNode
instead of the much slower nodeType.
(WebCore::InspectorDOMAgent::highlightMousedOverNode): Use isTextNode instead of
the much slower nodeType.

  • page/DragController.cpp:

(WebCore::containingLinkElement): Added. Uses lineageOfType instead of elementLineage.
(WebCore::DragController::doSystemDrag): Updated for the above.

  • rendering/svg/SVGRenderSupport.cpp:

(WebCore::SVGRenderSupport::updateMaskedAncestorShouldIsolateBlending):
Use ancestorsOfType instead of a hand-written loop.

  • svg/SVGElement.h: Make computedStyle public so we can use it even after downcasting

to SVGElement or a class derived from it. This arises in the revised version of
SVGRenderSupport::updateMaskedAncestorShouldIsolateBlending, which will now be able
to compile a non-virtual call to the function as a bonus.

  • xml/parser/XMLDocumentParser.cpp:

(WebCore::findXMLParsingNamespaces): Factored this function out from
parseDocumentFragment. Use lineageOfType instead of elementLineage. Also add a null
check that seems to have been needed before.
(WebCore::XMLDocumentParser::parseDocumentFragment): Use findXMLParsingNamespaces.

Source/WebKit:

  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::containerElementForElement): Use ancestorsOfType to find the
HTMLDataListElement rather than an ownerDataListElement function.
While this behavior is correct as specified, the idea of an "owner"
data list element doesn't make sense since technically the same option
can be used for multiple nested data lists.

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::containsAnyFormElements const): Use childrenOfType
instead of NodeTraversal.
(WebKit::WebFrame::containsAnyFormControls const): Ditto.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::containingLinkAnchorElement): Renamed to add the word "anchor"
since this won't return link elements that aren't HTMLAnchorElement
instances. Use lineageOfType<HTMLAnchorElement> instead of elementLineage
with a separate type check.
(WebKit::elementPositionInformation): Updated for new name.
(WebKit::WebPage::performActionOnElement): Ditto.

6:30 PM Changeset in webkit [257187] by wenson_hsieh@apple.com
  • 10 edits in trunk

fast/forms/ios/force-gregorian-calendar-for-credit-card-expiry.html is failing in iOS 13.4 beta
https://bugs.webkit.org/show_bug.cgi?id=208096
<rdar://problem/59632008>

Reviewed by Alexey Proskuryakov.

Tools:

In the iOS 13.4 beta, the fix for <rdar://problem/56422337> changed -[UIDatePicker setCalendar:], such that
if the new calendar locale matches that of the current calendar's locale (and several other properties of the
new NSCalendar are also unchanged), then the UIDatePicker's calendar will also avoid changing.

In our layout tests, the mechanism we use to simulate the user changing their preferred calendar is no longer
compatible with the above change since the swizzled NSCalendar instance does not have a locale set, so it will
default to the same locale as the one used in the original NSCalendar. This means the call to -setCalendar: ends
up being a no-op, so the test fails to override the simulated Japanese calendar type with a Gregorian calendar
in the credit card expiry field.

To fix this, additionally specify a calendar locale identifier when generating the mock NSCalendar.

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.h:

(WTR::UIScriptController::setDefaultCalendarType):

  • WebKitTestRunner/TestController.h:

Change m_overriddenCalendarIdentifier to m_overriddenCalendarAndLocaleIdentifiers, a pair of calendar
identifier and calendar locale identifier.

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::swizzledCalendar):
(WTR::TestController::overriddenCalendarIdentifier const):
(WTR::TestController::overriddenCalendarLocaleIdentifier const):

Clean these up by returning the NSString * instead of making another RetainPtr.

(WTR::TestController::setDefaultCalendarType):

Plumb the new calendar's locale identifier through this method.

(WTR::TestController::cocoaResetStateToConsistentValues):
(WTR::TestController::getOverriddenCalendarIdentifier const): Deleted.

  • WebKitTestRunner/cocoa/UIScriptControllerCocoa.h:
  • WebKitTestRunner/cocoa/UIScriptControllerCocoa.mm:

(WTR::UIScriptControllerCocoa::setDefaultCalendarType):

LayoutTests:

Adjust the layout test to also set the mock calendar's locale.

  • fast/forms/ios/force-gregorian-calendar-for-credit-card-expiry.html:
  • resources/ui-helper.js:

(window.UIHelper.setDefaultCalendarType):

4:08 PM Changeset in webkit [257186] by Darin Adler
  • 8 edits in trunk/Source/WebCore

Some small improvements to DOM bindings for HTML collections
https://bugs.webkit.org/show_bug.cgi?id=208092

Reviewed by Antti Koivisto.

  • WebCore.xcodeproj/project.pbxproj: Added RadioNodeList.idl.
  • html/HTMLAllCollection.idl: Specify [RequiresExistingAtomString] on the

argument to namedItem, and [AtomString] for the argument to item.

  • html/HTMLCollection.idl: Ditto.
  • html/HTMLFormControlsCollection.idl: Ditto.
  • html/HTMLOptionsCollection.idl: Ditto.
  • html/HTMLSelectElement.idl: Ditto.
  • html/RadioNodeList.idl: Removed unneeded getter; the inherited one from NodeList

works correctly, and this isn't more efficient because of a more specific type.

4:27 AM WebKitGTK/2.26.x edited by clopez@igalia.com
(diff)

Feb 21, 2020:

7:43 PM Changeset in webkit [257185] by Kate Cheney
  • 49 edits
    5 adds in trunk

App-bound domains should have separate Network Sessions
https://bugs.webkit.org/show_bug.cgi?id=208026
<rdar://problem/59434006>

Reviewed by Brent Fulgham.

Source/WebKit:

Tests: http/tests/in-app-browser-privacy/app-bound-domain.html

http/tests/in-app-browser-privacy/switch-session-on-navigation-to-app-bound-domain.html

Supports network session switching for navigations to app-bound
domains. This requires updating the WebPage when a navigation occurs
to check whether it is to an app-bound destination. In case of a
process swap, this has to be done both in PolicyDecisionSender and
in the ProvisionalPageProxy::loadData and ProvisionalPageProxy::loadRequest
functions.

This patch also must send the In-App Browser privacy flag to the
Network process.

  • NetworkProcess/NetworkDataTask.cpp:

(WebKit::NetworkDataTask::create):

  • NetworkProcess/NetworkLoadParameters.h:
  • NetworkProcess/NetworkResourceLoadParameters.cpp:

(WebKit::NetworkResourceLoadParameters::encode const):
(WebKit::NetworkResourceLoadParameters::decode):

  • NetworkProcess/NetworkResourceLoadParameters.h:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::startNetworkLoad):

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
Passes the isNavigatingToAppBoundDomain flag to the NetworkSession.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::hasAppBoundSession const):
(WebKit::NetworkProcess::setInAppBrowserPrivacyEnabled):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::hasAppBoundSession const):
(WebKit::NetworkSession::setInAppBrowserPrivacyEnabled):

  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreHasAppBoundSession):
(WKWebsiteDataStoreSetInAppBrowserPrivacyEnabled):

  • UIProcess/API/C/WKWebsiteDataStoreRef.h:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _getWebViewCategoryFor:completionHandler:]):

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::hasAppBoundSession):
(WebKit::NetworkProcessProxy::setInAppBrowserPrivacyEnabled):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::hasAppBoundSession const):
(WebKit::WebsiteDataStore::setInAppBrowserPrivacyEnabled):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

A large portion of this patch is three functions for testing, one sets
the in-app browser privacy flag for the test case, one checks for an app-bound session, and one
checks to make sure the category was correctly set to app-bound domain.

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.h:

Passes the In-app browser privacy flag value from NSUserDefaults to the network session.

  • NetworkProcess/cocoa/NetworkSessionCocoa.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
(WebKit::NetworkSessionCocoa::sessionWrapperForTask):
(WebKit::NetworkSessionCocoa::appBoundSession):
(WebKit::NetworkSessionCocoa::hasAppBoundSession const):
(WebKit::NetworkSessionCocoa::invalidateAndCancel):
(WebKit::NetworkSessionCocoa::clearCredentials):
Creates a new session (or returns the existing app-bound session) if
the navigation is app-bound. This is the main change in this patch.

  • Shared/LoadParameters.cpp:

(WebKit::LoadParameters::encode const):
(WebKit::LoadParameters::decode):

  • Shared/LoadParameters.h:
  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::loadData):
(WebKit::ProvisionalPageProxy::loadRequest):
(WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionSync):

  • UIProcess/ProvisionalPageProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::loadRequest):
(WebKit::WebPageProxy::loadRequestWithNavigationShared):
(WebKit::WebPageProxy::loadData):
(WebKit::WebPageProxy::loadDataWithNavigationShared):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadRequest):
(WebKit::WebPage::loadDataImpl):
(WebKit::WebPage::loadData):
(WebKit::WebPage::loadAlternateHTML):
In the case of a process swap, we must add the
isNavigatingToAppBoundDomain boolean in LoadParameters to ensure it gets sent to
the new WebPage via the ProvisionalPageProxy.

(WebKit::WebPageProxy::PolicyDecisionSender::send):
Fixes a capitalization error.

(WebKit::WebPageProxy::isAppBoundDomain):
(WebKit::WebPageProxy::setIsNavigatingToAppBoundDomain):

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::isNavigatingToAppBoundDomain):
These functions determine if the category is app-bound and update the
isNavigatingToAppBoundDomain boolean accordingly.

  • Shared/PolicyDecision.h:

(WebKit::PolicyDecision::encode const):
(WebKit::PolicyDecision::decode):
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::continueNavigationInNewProcess):
(WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNavigationActionSyncShared):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponseShared):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
For a non-process swap case, we can send the
isNavigatingToAppBoundDomain value in the
PolicyDecision struct.

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
Sends the isNavigatingToAppBoundDomain boolean to the NetworkProcess
with the NetworkResourceLoadParameters.

(WebKit::WebPage::didReceivePolicyDecision):
(WebKit::WebPage::setIsNavigatingToAppBoundDomain):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::isNavigatingToAppBoundDomain):
The boolean value for isNavigatingToAppBoundDomain is stored
in the webPage so WebLoaderStrategy can access it to send to the
NetworkProcess.

Tools:

This patch is mostly test infrastructure involving 3 functions.
One sets in-app browser privacy as enabled in the network process
manually for the test. One ensures that setting the WebView category
works properly, and the last one checks for an app-bound session for
an app-bound navigation.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::didReceiveMessageToPage):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::getWebViewCategory):
(WTR::TestRunner::callDidReceiveWebViewCategoryCallback):
(WTR::TestRunner::hasAppBoundSession):
(WTR::TestRunner::setInAppBrowserPrivacyEnabled):
(WTR::TestRunner::callDidSetInAppBrowserPrivacyEnabledCallback):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::ensureViewSupportsOptionsForTest):
Clearing the bundleID should happen right before setting a new one,
otherwise it clears the ID after it is set and returns a null ID.

(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::getWebViewCategory):
(WTR::InAppBrowserPrivacyCallbackContext::InAppBrowserPrivacyCallbackContext):
(WTR::inAppBrowserPrivacyBooleanResultCallback):
(WTR::inAppBrowserPrivacyVoidResultCallback):
(WTR::TestController::hasAppBoundSession):
(WTR::TestController::setInAppBrowserPrivacyEnabled):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
(WTR::TestInvocation::didSetInAppBrowserPrivacyEnabled):
(WTR::TestInvocation::didReceivePrevalentDomains):
(WTR::TestInvocation::didReceiveWebViewCategory):

  • WebKitTestRunner/TestInvocation.h:
  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::getWebViewCategory):

LayoutTests:

Added two tests. One to test the proper categorization of app-bound
navigation, and one to check that switching sessions occurs when
navigating to an app-bound domain.

Since these tests use ITP to set user interaction, they should only
be run on iOS and mac-wk2.

  • TestExpectations:
  • http/tests/in-app-browser-privacy/app-bound-domain-expected.txt: Added.
  • http/tests/in-app-browser-privacy/app-bound-domain.html: Added.
  • http/tests/in-app-browser-privacy/switch-session-on-navigation-to-app-bound-domain-expected.txt: Added.
  • http/tests/in-app-browser-privacy/switch-session-on-navigation-to-app-bound-domain.html: Added.
  • platform/ios/TestExpectations:
  • platform/mac-wk2/TestExpectations:
5:05 PM Changeset in webkit [257184] by Russell Epstein
  • 1 copy in tags/Safari-610.1.4

Tag Safari-610.1.4.

5:00 PM Changeset in webkit [257183] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.111.2

Tag Safari-609.1.20.111.2.

4:40 PM Changeset in webkit [257182] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ iOS wk2 ] http/tests/workers/service/Client-properties-auxiliary.html is flaky timing out.
https://bugs.webkit.org/show_bug.cgi?id=208081

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
4:16 PM Changeset in webkit [257181] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac Debug ] legacy-animation-engine/animations/animation-welcome-safari.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208077

Unreviewed test gardening.

  • platform/mac/TestExpectations:
3:49 PM Changeset in webkit [257180] by Kocsen Chung
  • 1 copy in tags/Safari-609.1.20.100.2

Tag Safari-609.1.20.100.2.

3:25 PM Changeset in webkit [257179] by Kocsen Chung
  • 2 edits in branches/safari-609.1.20.100-branch/Source/WebKit

Cherry-pick r257013. rdar://problem/59614284

Crash in WebPageProxy::didStartProvisionalLoadForFrameShared
https://bugs.webkit.org/show_bug.cgi?id=207973

Reviewed by Chris Dumez.

Use RefPtr to store Frame*.

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257013 268f45cc-cd09-0410-ab3c-d52691b4dbfc

3:13 PM Changeset in webkit [257178] by Kocsen Chung
  • 1 edit in branches/safari-609.1.20.100-branch/Source/WebKitLegacy/mac/WebView/WebPreferences.mm

Apply patch. rdar://problem/59652987

3:05 PM Changeset in webkit [257177] by Alan Coon
  • 1 copy in tags/Safari-609.1.20.0.3

Tag Safari-609.1.20.0.3.

3:00 PM Changeset in webkit [257176] by Alan Coon
  • 8 edits in branches/safari-609.1.20.100-branch/Source

Versioning.

2:59 PM Changeset in webkit [257175] by Russell Epstein
  • 2 edits in branches/safari-609-branch/Source/WebKit

Apply patch. rdar://problem/59680475

2:59 PM Changeset in webkit [257174] by Russell Epstein
  • 23 edits
    3 adds in branches/safari-609-branch

Apply patch. rdar://problem/59654268

2:58 PM Changeset in webkit [257173] by Russell Epstein
  • 3 edits in branches/safari-609-branch/Source/JavaScriptCore

Cherry-pick r257134. rdar://problem/59676907

Make support for bytecode caching more robust against file corruption.
https://bugs.webkit.org/show_bug.cgi?id=207972
<rdar://problem/59260595>

Reviewed by Yusuke Suzuki.

If a bytecode cache file is corrupted, we currently will always crash every time
we try to read it (in perpetuity as long as the corrupted cache file continues to
exist on disk). To guard against this, we'll harden the bytecode caching mechanism
as follows:

  1. Modify the writeCache operation to always write the cache file in a transactional manner i.e. we'll first write to a .tmp file, and then rename the .tmp file to the cache file only if the entire file has been written in completeness.

This ensures that we won't get corrupted cache files due to interrupted writes.

  1. Modify the writeCache operation to also compute a SHA1 hash of the cache file and append the hash at end of the file. Modify the readCache operation to first authenticate the SHA1 hash before allowing the cache file to be used. If the hash does not match, the file is bad, and we'll just delete it.

This ensures that we won't be crashing while decoding a corrupted cache file.

Manually tested with the following scenarios and ensuring that the client recovers
with no crashes:

  1. no cache file on disk.
  2. a 0-sized cache file on a disk.
  3. a truncated cache file on disk.
  4. a corrupted cache file on disk.
  5. an uncorrupted cache file on disk.

Also added some static_asserts in CachedTypes.cpp to document some invariants that
the pre-existing code is dependent on.

  • API/JSScript.mm: (-[JSScript readCache]): (-[JSScript writeCache:]):
  • runtime/CachedTypes.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257134 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:58 PM Changeset in webkit [257172] by Russell Epstein
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r257106. rdar://problem/59676866

Add fidelity.com to the desktop class quirks list
https://bugs.webkit.org/show_bug.cgi?id=208037
<rdar://problem/59480381>

Reviewed by Brent Fulgham.

No new tests. This patch just adds a domain name to a quirks function.

  • UIProcess/ios/WebPageProxyIOS.mm: (WebKit::desktopClassBrowsingRecommendedForRequest):

fidelity.com and its subdomains now return false.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257106 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:58 PM Changeset in webkit [257171] by Russell Epstein
  • 2 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r257103. rdar://problem/59676889

WebIDBServer resume should return early if suspend does not happen
https://bugs.webkit.org/show_bug.cgi?id=208027
<rdar://problem/59617654>

Reviewed by Geoffrey Garen.

We should not try releasing a lock that is not held.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp: (WebKit::WebIDBServer::resume):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257103 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:58 PM Changeset in webkit [257170] by Russell Epstein
  • 5 edits in branches/safari-609-branch

Cherry-pick r257089. rdar://problem/59676923

NetworkCache should use 4KB threshold for mmap-ed files instead of 16KB
https://bugs.webkit.org/show_bug.cgi?id=207882

Reviewed by Alex Christensen.

Source/WebKit:

We found that a lot of Vectors in Membuster is holding resource content. This is because we have 16KB threshold for mmap-ed files.
If a file is smaller than 16KB, it is copied to Vector instead. But this is costly in terms of memory. If we use mmap-ed files,
it becomes named-pages instead of anonymous-pages. File-backed non-dirty named-pages have a lot of benefit.

  1. The application is offering a hint that pages are file-backed. This means that OS can purge them at any time since the content can be recovered from the disk. This is cheaper than swapping / compressing anonymous pages since just discarding works.
  2. The application is offering a hint that pages have spatial locality. Purging pages in one named-pages region is better compared to purging the same # of anonymous pages randomly. Anonymous pages are split by malloc implementation and access pattern of pages in one VA is random. On the other hand, named-pages are accessed together because it is file, and file typically has sequential locality. And recovery of named pages are also cheap compared to anonymous pages since OS can prefetch pages once access happens because of sequential locality of files. This tendency makes OS like purging named pages instead of anonymous pages. In WebKit use case, this works perfectly. CachedResource typically has decoded content. So typically WebProcess does not access SharedBuffer after the content is decoded.

This patch reduces the threshold from 16KB to page size (4KB in macOS, 16KB in iOS). This is pre-2015 behavior.
This offers 2.56% progression with 98% probability in Membuster.

  • NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::maximumInlineBodySize): (WebKit::NetworkCache::estimateRecordsSize): (WebKit::NetworkCache::Storage::shouldStoreBodyAsBlob):

LayoutTests:

The test is assuming that 12KB file is served via non-mmap-file.
This assumption is flaky and broken by this change. For now, we pick smaller
file to meet this assumption.

  • http/tests/inspector/network/resource-sizes-disk-cache-expected.txt:
  • http/tests/inspector/network/resource-sizes-disk-cache.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257089 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:58 PM Changeset in webkit [257169] by Russell Epstein
  • 4 edits in branches/safari-609-branch

Cherry-pick r257077. rdar://problem/59676879

REGRESSION (r255677): Reloading tab with beforeunload prompt closes tab when asking to stay on page
https://bugs.webkit.org/show_bug.cgi?id=208015
<rdar://problem/59591630>

Reviewed by Geoffrey Garen.

Source/WebKit:

Make sure we only restart the tryClose timer after the beforeunload prompt if the timer was actually
active before the prompt (i.e. tryClose was actually called). On Reload, tryClose is not called
but beforeunload prompt may still happen.

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ModalAlerts.mm: (TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257077 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:58 PM Changeset in webkit [257168] by Russell Epstein
  • 10 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r256967. rdar://problem/59654609

Regression(r247567) HTTP Disk cache capacity is no longer set
https://bugs.webkit.org/show_bug.cgi?id=207959
<rdar://problem/59603972>

Reviewed by Alex Christensen.

NetworkProcess::initializeNetworkProcess() was setting the cache model, which
would iterate over all network sessions to update their network cache capacity.
The issue was that network sessions were not constructed yet at this point.
When the network session(s) would get created later on, they would construct
their NetworkCache and it would use the default capacity (i.e.
std::numeric_limits<size_t>::max()).

To make this safer, I have moved the capacity computation to the Cache::open()
method and now pass the capacity when constructing the network cache storage.

  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::initializeNetworkProcess): (WebKit::NetworkProcess::setCacheModelSynchronouslyForTesting): (WebKit::NetworkProcess::setCacheModel):
  • NetworkProcess/NetworkProcess.h: (WebKit::NetworkProcess::cacheModel const):
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/cache/CacheStorageEngineCaches.cpp: (WebKit::CacheStorage::Caches::initialize):
  • NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::computeCapacity): (WebKit::NetworkCache::Cache::open): (WebKit::NetworkCache::Cache::capacity const): (WebKit::NetworkCache::Cache::updateCapacity): (WebKit::NetworkCache::Cache::setCapacity): Deleted.
  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::open): (WebKit::NetworkCache::Storage::Storage): (WebKit::NetworkCache::Storage::setCapacity):
  • NetworkProcess/cache/NetworkCacheStorage.h:
  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::setCacheModel):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256967 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:58 PM Changeset in webkit [257167] by Russell Epstein
  • 6 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r256881. rdar://problem/59654577

Drop getSandboxExtensionsForBlobFiles() as it is dead code
https://bugs.webkit.org/show_bug.cgi?id=207909
<rdar://problem/59562180>

Reviewed by Per Arne Vollan.

  • NetworkProcess/NetworkProcess.cpp:
  • NetworkProcess/NetworkProcess.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:
  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256881 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:58 PM Changeset in webkit [257166] by Russell Epstein
  • 3 edits in branches/safari-609-branch/Source/WebKit

Cherry-pick r256857. rdar://problem/59654279

NetworkDataTask should not expect its session wrapper to be always live
https://bugs.webkit.org/show_bug.cgi?id=207903
rdar://problem/59291486

Reviewed by Alex Christensen.

NetworkDataTaskCocoa should take a weak pointer to its session wrapper.
If the session wrapper is still valid, then we can remove the task from the session wrapper map.
We cannot guarantee session wrapper is valid since NetworkDataTask is ref counted.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): (WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256857 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:58 PM Changeset in webkit [257165] by Russell Epstein
  • 3 edits in branches/safari-609-branch/Source/WebCore

Cherry-pick r256856. rdar://problem/59654783

MediaSource.isTypeSupported() says "video/mp4;codecs=\"avc3.42C015\"" is not supported, but it is
https://bugs.webkit.org/show_bug.cgi?id=207622

Reviewed by Eric Carlson.

Revert the behavior change of MediaPlayerPrivateMediaSourceAVFObjC::supportsType() in r253952.

  • platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.mm: (WebCore::AVAssetMIMETypeCache::canDecodeExtendedType):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256856 268f45cc-cd09-0410-ab3c-d52691b4dbfc

2:58 PM Changeset in webkit [257164] by Russell Epstein
  • 1 edit in branches/safari-609-branch/Source/JavaScriptCore/runtime/JSCJSValue.h

Apply patch. rdar://problem/59654701

2:34 PM Changeset in webkit [257163] by Alan Coon
  • 2 edits in branches/safari-609.1.20.111-branch/Source/WebKit

Apply patch. rdar://problem/59680470

2:25 PM Changeset in webkit [257162] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

Remove telemetry from sandbox rules needed for basic WebKit logging
https://bugs.webkit.org/show_bug.cgi?id=208073
<rdar://problem/59658551>

Reviewed by Per Arne Vollan.

Now that we see the specific uses for the 'kern.osversion' sysctl and the need
for network-outbound connections for syslog, we can remove the telemetry.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
1:42 PM Changeset in webkit [257161] by Jonathan Bedard
  • 15 edits in trunk/Tools

Build DumpRenderTree and WebKitTestRunner for macCatalyst
https://bugs.webkit.org/show_bug.cgi?id=208068
<rdar://problem/59676596>

Reviewed by Tim Horton.

  • DumpRenderTree/ios/TextInputControllerIOS.m: Import WebKitLegacy explicitly.
  • DumpRenderTree/mac/Configurations/Base.xcconfig: Use cocoatouch instead of SDK.
  • DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig: Ditto.
  • DumpRenderTree/mac/Configurations/DumpRenderTreeApp.xcconfig: Ditto.
  • DumpRenderTree/mac/Configurations/DumpRenderTreeLibrary.xcconfig: Ditto.
  • DumpRenderTree/mac/Configurations/TestNetscapePlugIn.xcconfig: Ditto.
  • DumpRenderTree/mac/EditingDelegate.mm: Import WebKitLegacy explicitly.
  • DumpRenderTree/mac/EventSendingController.h: Ditto.
  • DumpRenderTree/mac/ObjCPlugin.m: Ditto.
  • DumpRenderTree/mac/ResourceLoadDelegate.mm: Ditto.
  • Makefile: Add DumpRenderTree and WebKitTestRunner.
  • WebKitTestRunner/Configurations/Base.xcconfig: Use cocoatouch instead of SDK.
  • WebKitTestRunner/Configurations/InjectedBundle.xcconfig: Ditto.
  • WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig: Ditto.
1:39 PM Changeset in webkit [257160] by wenson_hsieh@apple.com
  • 2 edits in trunk/Source/WebCore

Remove an unused local variable after r256808
https://bugs.webkit.org/show_bug.cgi?id=208072

Reviewed by Chris Dumez.

Remove scriptsToExecuteSoon.

  • dom/ScriptRunner.cpp:

(WebCore::ScriptRunner::timerFired):

1:36 PM Changeset in webkit [257159] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ iOS ] imported/w3c/web-platform-tests/IndexedDB/key-generators/reading-autoincrement-indexes-cursors.any.serviceworker.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=206934

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
1:19 PM Changeset in webkit [257158] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

REGRESSION (r255533) Null Deref of _sessionWrapper under [WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]
https://bugs.webkit.org/show_bug.cgi?id=208029
<rdar://problem/59404381>

Reviewed by Tim Horton.

r255533 started dereferencing _sessionWrapper without null check in didReceiveChallenge. All other delegates in this file null check
_sessionWrapper before using it because it is a weak pointer. Add a null check to avoid crashing.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate sessionFromTask:]):

1:12 PM Changeset in webkit [257157] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Add build step to Validate ChangeLog for commit-queue
https://bugs.webkit.org/show_bug.cgi?id=208064

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(ValidateChangeLogAndReviewer): Build step to validate ChangeLog.
(ValidateChangeLogAndReviewer.start):
(ValidateChangeLogAndReviewer.evaluateCommand): If the validation fails, comment on bug and mark patch as cq-.
(SetCommitQueueMinusFlagOnPatch.start): End the build (after marking the patch cq-) if build_finish_summary property is set.

12:26 PM Changeset in webkit [257156] by commit-queue@webkit.org
  • 12 edits
    3 copies in trunk

Create a new ImageBuffer type for drawing on a DisplayList
https://bugs.webkit.org/show_bug.cgi?id=207109

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-02-21
Reviewed by Simon Fraser.

Source/WebCore:

DisplayList::ImageBuffer inherits ConcreteImageBuffer and DrawingContext.
The drawing context will be the context of DrawingContext. The operations
of ConcreteImageBuffer will have to ensure the recorded display-list is
replayed back before getting the pixels of the ImageBufferBackend.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::createContext2d):
(WebCore::HTMLCanvasElement::setUsesDisplayListDrawing):
(WebCore::HTMLCanvasElement::setTracksDisplayListReplay):
(WebCore::HTMLCanvasElement::displayListAsText const):
(WebCore::HTMLCanvasElement::replayDisplayListAsText const):
All the DisplayList operations will be routed to the DrawingContext of
the ImageBuffer.

(WebCore::HTMLCanvasElement::createImageBuffer const):
createImageBuffer() can decide the ImageBuffer type based on the settings
and the size of the canvas.

  • html/HTMLCanvasElement.h:
  • platform/graphics/ConcreteImageBuffer.h:

(WebCore::ConcreteImageBuffer::create):
The type of the ImageBuffer will be passed to this function such that
it can create instances of derived classes.

  • platform/graphics/ImageBuffer.cpp:

(WebCore::ImageBuffer::create):
Create ImageBuffers which record the drawing commands to DisplayLists before
committing them to the back-ends.

  • platform/graphics/ImageBuffer.h:

(WebCore::ImageBuffer::drawingContext):
(WebCore::ImageBuffer::flushDrawingContext):
Add virtual methods to support DisplayList in ImageBuffer.

  • platform/graphics/PlatformImageBuffer.h:
  • platform/graphics/RenderingMode.h:

Add DisplayList types to RenderingMode and define platform types for
DisplayList ImageBuffers.

  • platform/graphics/displaylists/DisplayListDrawingContext.cpp: Added.

(WebCore::DisplayList::DrawingContext::DrawingContext):
(WebCore::DisplayList::DrawingContext::setTracksDisplayListReplay):
(WebCore::DisplayList::DrawingContext::replayDisplayList):

  • platform/graphics/displaylists/DisplayListDrawingContext.h: Added.

(WebCore::DisplayList::DrawingContext::context const):
(WebCore::DisplayList::DrawingContext::displayList):
(WebCore::DisplayList::DrawingContext::displayList const):
(WebCore::DisplayList::DrawingContext::replayedDisplayList const):
DisplayList::DrawingContext holds a recording and an optional replaying
back DisplayLists. It also provides a recording GraphicsContext.

  • platform/graphics/displaylists/DisplayListImageBuffer.h: Added.

(WebCore::DisplayList::ImageBuffer::create):
(WebCore::DisplayList::ImageBuffer::ImageBuffer):
(WebCore::DisplayList::ImageBuffer::~ImageBuffer):
Drawing commands will be recorded first because context() is overridden
to return the GraphicsContext of DrawingContext. These drawing commands
will be flushed before getting the pixels of the back-end because
flushDrawingContext() is overridden to replay back the recorded DisplayList
to the GraphicsContext of the back-end.

LayoutTests:

The extra commands are recorded by CanvasBase::setImageBuffer() which
used to issue these GraphicsContext commands directly to the backend.
With this patch, DisplayList::ImageBuffer does not allow access to the
backend context. So all the GraphicsContext commands has to be recorded.

  • displaylists/canvas-display-list-expected.txt:
12:23 PM Changeset in webkit [257155] by wenson_hsieh@apple.com
  • 2 edits in trunk/Source/WebKit

Address post-review feedback in webkit.org/b/207352
https://bugs.webkit.org/show_bug.cgi?id=207352

Reviewed by Brian Weinstein.

Use m_mainFrame instead of going through Page, and also append the string "\n\n" instead of appending the
newline character twice.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::getContentsAsString):

11:58 AM Changeset in webkit [257154] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

REGRESSION: (r256764?) [ Mac wk1 Release ] legacy-animation-engine/fast/animation/animation-mixed-transform-crash.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208019

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
11:42 AM Changeset in webkit [257153] by Ryan Haddad
  • 2 edits in trunk/Source/WebKit

[Media in GPU process] Synchronize the properties of video layers in the GPU process with the hosting layer in the web process
https://bugs.webkit.org/show_bug.cgi?id=206132

Patch by Peng Liu <Peng Liu> on 2020-02-21
Reviewed by Eric Carlson.

A follow-up patch to fix Catalyst/watchOS/tvOS build failures related to unified build.

  • WebProcess/GPU/media/cocoa/VideoLayerRemoteCocoa.h:
11:33 AM Changeset in webkit [257152] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] webgpu/whlsl/nested-loop.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=207117

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:21 AM Changeset in webkit [257151] by pvollan@apple.com
  • 4 edits in trunk/Source/WebKit

[iOS] Issue extension of CoreMedia service to the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=208066
<rdar://problem/35864528>

Reviewed by Geoffrey Garen.

This service should also be added to the sandbox of the GPU process.

No new tests, covered by existing tests.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::mediaRelatedMachServices):

11:03 AM Changeset in webkit [257150] by wenson_hsieh@apple.com
  • 11 edits in trunk/Source

[macOS] Large form controls are rendered at the wrong NSControlSize
https://bugs.webkit.org/show_bug.cgi?id=208043
<rdar://problem/59659134>

Reviewed by Tim Horton.

Source/WebCore:

When painting form controls that are larger than a certain threshold (for the most part, 21px), use
NSControlSizeLarge instead of NSControlSizeRegular. This makes us choose a more appropriate appearance when
painting native large form controls, as long as the system supports it. Note that not all the metrics for
NSControlSizeLarge form controls are finalized, as noted in the per-method comments below.

With this patch alone, there is no change in behavior yet; in the near future, these changes will be covered by
new platform-specific baselines.

  • platform/PopupMenuStyle.h: Add a new PopupMenuSizeLarge that corresponds to a popup that has NSControlSizeLarge.
  • platform/mac/ThemeMac.h: Add a helper to check (at runtime) whether the new large form control size is enabled.
  • platform/mac/ThemeMac.mm:

(WebCore::controlSizeForFont): Add a new font size breakpoint, for which we use NSControlSizeLarge instead of
NSControlSizeRegular.

(WebCore::sizeFromNSControlSize):
(WebCore::sizeFromFont):
(WebCore::controlSizeFromPixelSize):
(WebCore::setControlSize):
(WebCore::checkboxSizes): Reflect the fact that checkboxes with NSControlSizeLarge are 16 by 16.
(WebCore::checkboxMargins): Just match NSControlSizeRegular margins for now. These seem incorrect already, even
for NSControlSizeRegular in macOS 10.15.

(WebCore::radioSizes): Reflect the fact that radio buttons with NSControlSizeLarge are 16 by 16, and
NSControlSizeRegular radio buttons are 14 by 14.

(WebCore::radioMargins): Just match NSControlSizeRegular margins for now. These seem incorrect already, even for
NSControlSizeRegular in macOS 10.15.

(WebCore::buttonSizes): Reflect the fact that buttons with NSControlSizeLarge are 28px tall.
(WebCore::buttonMargins): Just match NSControlSizeRegular margins for now, and add a FIXME about updating them.
(WebCore::setUpButtonCell):
(WebCore::stepperSizes): NSControlSizeLarge matches NSControlSizeRegular at the moment.
(WebCore::stepperControlSizeForFont): Add a new font size breakpoint for using NSControlSizeLarge.

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::controlSizeForFont const):
(WebCore::RenderThemeMac::controlSizeForCell const):
(WebCore::RenderThemeMac::controlSizeForSystemFont const):
(WebCore::RenderThemeMac::popupButtonMargins const):
(WebCore::RenderThemeMac::popupButtonSizes const):
(WebCore::RenderThemeMac::popupButtonPadding const):

NSControlSizeLarge metrics for popup buttons cannot be determined yet.

(WebCore::RenderThemeMac::progressBarSizes const):
(WebCore::RenderThemeMac::progressBarMargins const):
(WebCore::RenderThemeMac::paintProgressBar):

NSControlSizeLarge matches NSControlSizeRegular at the moment.

(WebCore::menuListButtonSizes):
(WebCore::RenderThemeMac::popupMenuSize const):
(WebCore::RenderThemeMac::menuListSizes const):
(WebCore::RenderThemeMac::searchFieldSizes const):
(WebCore::RenderThemeMac::cancelButtonSizes const):
(WebCore::RenderThemeMac::resultsButtonSizes const):

Search field results and cancel buttons have the same size in NSControlSizeLarge as in NSControlSizeRegular.

Source/WebCore/PAL:

Import NSAppearance_Private.h in this SPI header. See WebCore ChangeLog for more details.

  • pal/spi/mac/NSAppearanceSPI.h:

Source/WebKit:

See WebCore ChangeLog for more details.

  • UIProcess/mac/WebPopupMenuProxyMac.mm:

(WebKit::WebPopupMenuProxyMac::showPopupMenu):

Source/WebKitLegacy/mac:

See WebCore ChangeLog for more details.

  • WebCoreSupport/PopupMenuMac.mm:

(PopupMenuMac::show):

10:52 AM Changeset in webkit [257149] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk1 Debug ] legacy-animation-engine/animations/animation-direction-normal.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208065

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
10:39 AM Changeset in webkit [257148] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

Remove WebPageProxy::machSendRightCallback as it is dead code
https://bugs.webkit.org/show_bug.cgi?id=208057
<rdar://problem/59658805>

Reviewed by Geoffrey Garen.

  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
10:24 AM Changeset in webkit [257147] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Add build step to set cq- flag on bugzilla patch
https://bugs.webkit.org/show_bug.cgi?id=208021

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(BugzillaMixin.set_cq_minus_flag_on_patch):
(SetCommitQueueMinusFlagOnPatch):
(SetCommitQueueMinusFlagOnPatch.start):
(SetCommitQueueMinusFlagOnPatch.getResultSummary):

10:23 AM Changeset in webkit [257146] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk2 ] http/wpt/fetch/disable-speculative-for-reload.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208062

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
10:18 AM Changeset in webkit [257145] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

Remove WebPasteBoardProxy::PasteboardCopy as it is dead code
https://bugs.webkit.org/show_bug.cgi?id=208058
<rdar://problem/59658727>

Reviewed by Geoffrey Garen.

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
  • UIProcess/WebPasteboardProxy.h:
  • UIProcess/WebPasteboardProxy.messages.in:
10:08 AM Changeset in webkit [257144] by Matt Lewis
  • 6 edits in trunk/Tools

Stub repositories fail to upload some results due to missing head svn revision
https://bugs.webkit.org/show_bug.cgi?id=207684

Reviewed by Jonathan Bedard.

  • Scripts/webkitpy/common/host_mock.py: Added in call for creating stub repo checkout information for upload tests.

(MockHost.init):

  • Scripts/webkitpy/layout_tests/models/test_run_results.py:

(summarize_results): Changed call to head_svn_revision to port.commits_for_upload() to bring

  • Scripts/webkitpy/layout_tests/models/test_run_results_unittest.py:

(SummarizedResultsTest.setUp): Added in new required parameter for testing.

  • Scripts/webkitpy/port/base.py:

(Port.commits_for_upload): Removed the forced movement up the systems tree that prevented us
from using mock SCMs and more

  • Scripts/webkitpy/port/test.py: Added function to make the checkout_information.json for upload testing.
10:03 AM Changeset in webkit [257143] by dbates@webkit.org
  • 3 edits in trunk/Source/WebKitLegacy/mac

[iOS][Legacy WebKit] Expose SPI for Page::revealCurrentSelection()
https://bugs.webkit.org/show_bug.cgi?id=207960
<rdar://problem/59604163>

Reviewed by Wenson Hsieh.

Together with <https://bugs.webkit.org/show_bug.cgi?id=207955> this allows a client to reveal
the current selection when it's ready to do so.

  • WebView/WebView.mm:

(-[WebView revealCurrentSelection]): Added.

  • WebView/WebViewPrivate.h:
9:51 AM Changeset in webkit [257142] by Antti Koivisto
  • 3 edits in trunk/Source/WTF

REGRESSION(r257072): MotionMark | Mac | -10%
https://bugs.webkit.org/show_bug.cgi?id=208054
<rdar://problem/59664582>

Reviewed by Geoffrey Garen.

With rAF and slow scripts, suspended functions may pile up in RunLoop because every cycle does a rendering update.

  • wtf/RunLoop.cpp:

(WTF::RunLoop::performWork):
(WTF::RunLoop::suspendFunctionDispatchForCurrentCycle):

Don't suspend if there are already pending suspended functions.

  • wtf/RunLoop.h:
9:47 AM Changeset in webkit [257141] by Diego Pino Garcia
  • 2 edits in trunk/Tools

[JSCOnly] Add --verbose flag when running JavaScriptCore tests
https://bugs.webkit.org/show_bug.cgi?id=208051

Reviewed by Carlos Alberto Lopez Perez.

Verbose flag prints out each test name executed. Without this flag
stdout prints out one or two periods.

  • BuildSlaveSupport/build.webkit.org-config/steps.py:

(RunJavaScriptCoreTests.start):

9:26 AM Changeset in webkit [257140] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mojave ] webaudio/audioparam-exponentialRampToValueAtTime.html is flaky crashing.
https://bugs.webkit.org/show_bug.cgi?id=208061

Unreviewed test gardening.

  • platform/mac/TestExpectations:
9:22 AM Changeset in webkit [257139] by commit-queue@webkit.org
  • 4 edits in trunk

[WPE][GTK] googleapis.com is a public suffix, defeating isGoogle() check in UserAgentQuirks.cpp
https://bugs.webkit.org/show_bug.cgi?id=207984

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-02-21
Reviewed by Daniel Bates.

Source/WebCore:

Fix the check for googleapis.com. Since it's now a public suffix, we can no longer check the
URL's base domain here. Instead, we can check endsWith().

I considered switching to endsWith() for all the checks in this file, to make our user agent
quirks robust to future changes in the public suffix list, but checking the base domain is
nicer and it seems unnecessary. We can continue to adjust our quirks in the future as
necessary.

The public suffix list:
https://github.com/publicsuffix/list/blob/7922d7c20e246552be418e8f72e577899fd30d99/public_suffix_list.dat#L11922

  • platform/UserAgentQuirks.cpp:

(WebCore::isGoogle):

Tools:

  • TestWebKitAPI/Tests/WebCore/UserAgentQuirks.cpp:

(TestWebKitAPI::TEST):

9:21 AM Changeset in webkit [257138] by Simon Fraser
  • 9 edits
    2 adds in trunk

[Web Animations] Repeated animations on pseudo elements will fail to run after a while
https://bugs.webkit.org/show_bug.cgi?id=207993
Source/WebCore:

<rdar://problem/59428472>

Reviewed by Zalan Bujtas.

We failed to clear PseudoElement* from AnimationTimeline's various HashMaps on destruction,
causing animations to fail to run when those pointer addresses were reused.

Make DeclarativeAnimation::owningElement() be a WeakPtr<>.

Test: animations/many-pseudo-animations.html

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::willDestoryRendererForElement):
(WebCore::AnimationTimeline::elementWasRemoved):

  • animation/AnimationTimeline.h:
  • animation/DeclarativeAnimation.cpp:

(WebCore::DeclarativeAnimation::DeclarativeAnimation):
(WebCore::DeclarativeAnimation::enqueueDOMEvent):

  • animation/DeclarativeAnimation.h:

(WebCore::DeclarativeAnimation::owningElement const):

  • dom/Element.cpp:

(WebCore::Element::removedFromAncestor):

  • dom/PseudoElement.cpp:

(WebCore::PseudoElement::clearHostElement):

  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::tearDownRenderers):

LayoutTests:

Reviewed by Zalan Bujtas.

  • animations/many-pseudo-animations-expected.txt: Added.
  • animations/many-pseudo-animations.html: Added.
9:06 AM Changeset in webkit [257137] by commit-queue@webkit.org
  • 36 edits
    1 copy
    2 moves
    54 adds in trunk/LayoutTests

Update WPT tests for Intersection Observer
https://bugs.webkit.org/show_bug.cgi?id=208053

Patch by Frederic Wang <fwang@igalia.com> on 2020-02-21
Reviewed by Daniel Bates.

LayoutTests/imported/w3c:

  • web-platform-tests/intersection-observer/bounding-box.html:
  • web-platform-tests/intersection-observer/client-rect.html:
  • web-platform-tests/intersection-observer/containing-block.html:
  • web-platform-tests/intersection-observer/cross-origin-iframe.sub-expected.txt: Added.
  • web-platform-tests/intersection-observer/cross-origin-iframe.sub.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/intersection-observer/cross-origin-iframe.html.
  • web-platform-tests/intersection-observer/disconnect.html:
  • web-platform-tests/intersection-observer/display-none.html:
  • web-platform-tests/intersection-observer/document-scrolling-element-root-expected.txt: Added.
  • web-platform-tests/intersection-observer/document-scrolling-element-root.html: Added.
  • web-platform-tests/intersection-observer/edge-inclusive-intersection.html:
  • web-platform-tests/intersection-observer/empty-root-margin.html:
  • web-platform-tests/intersection-observer/iframe-no-root-with-wrapping-scroller-expected.txt: Added.
  • web-platform-tests/intersection-observer/iframe-no-root-with-wrapping-scroller.html: Copied from LayoutTests/imported/w3c/web-platform-tests/intersection-observer/iframe-no-root.html.
  • web-platform-tests/intersection-observer/iframe-no-root.html:
  • web-platform-tests/intersection-observer/initial-observation-with-threshold.html:
  • web-platform-tests/intersection-observer/inline-client-rect.html:
  • web-platform-tests/intersection-observer/isIntersecting-change-events.html:
  • web-platform-tests/intersection-observer/isIntersecting-threshold-expected.txt: Added.
  • web-platform-tests/intersection-observer/isIntersecting-threshold.html: Added.
  • web-platform-tests/intersection-observer/multiple-targets.html:
  • web-platform-tests/intersection-observer/multiple-thresholds.html:
  • web-platform-tests/intersection-observer/nested-cross-origin-iframe.sub-expected.txt: Added.
  • web-platform-tests/intersection-observer/nested-cross-origin-iframe.sub.html: Added.
  • web-platform-tests/intersection-observer/observer-attributes.html:
  • web-platform-tests/intersection-observer/observer-exceptions.html:
  • web-platform-tests/intersection-observer/observer-in-iframe.html:
  • web-platform-tests/intersection-observer/observer-without-js-reference.html:
  • web-platform-tests/intersection-observer/remove-element.html:
  • web-platform-tests/intersection-observer/resources/cross-origin-child-iframe.sub.html: Added.
  • web-platform-tests/intersection-observer/resources/cross-origin-subframe.html:
  • web-platform-tests/intersection-observer/resources/intersection-observer-test-utils.js:

(waitForNotification):
(waitForFrame):
(runTestCycle):
(checkJsonEntry):

  • web-platform-tests/intersection-observer/resources/nested-cross-origin-child-iframe.sub.html: Added.
  • web-platform-tests/intersection-observer/resources/nested-cross-origin-grand-child-iframe.html: Added.
  • web-platform-tests/intersection-observer/resources/same-origin-grand-child-iframe.html: Added.
  • web-platform-tests/intersection-observer/resources/scaled-target-subframe.html: Added.
  • web-platform-tests/intersection-observer/resources/v2-subframe.html: Added.
  • web-platform-tests/intersection-observer/resources/w3c-import.log:
  • web-platform-tests/intersection-observer/root-margin-rounding-expected.txt: Added.
  • web-platform-tests/intersection-observer/root-margin-rounding.html: Added.
  • web-platform-tests/intersection-observer/root-margin.html:
  • web-platform-tests/intersection-observer/rtl-clipped-root-expected.txt: Added.
  • web-platform-tests/intersection-observer/rtl-clipped-root.html: Added.
  • web-platform-tests/intersection-observer/same-document-no-root.html:
  • web-platform-tests/intersection-observer/same-document-root.html:
  • web-platform-tests/intersection-observer/same-document-zero-size-target.html:
  • web-platform-tests/intersection-observer/same-origin-grand-child-iframe.sub-expected.txt: Added.
  • web-platform-tests/intersection-observer/same-origin-grand-child-iframe.sub.html: Added.
  • web-platform-tests/intersection-observer/shadow-content.html:
  • web-platform-tests/intersection-observer/target-in-different-window.html:
  • web-platform-tests/intersection-observer/text-target.html:
  • web-platform-tests/intersection-observer/timestamp.html:
  • web-platform-tests/intersection-observer/unclipped-root.html:
  • web-platform-tests/intersection-observer/v2/animated-occlusion-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/animated-occlusion.html: Added.
  • web-platform-tests/intersection-observer/v2/blur-filter-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/blur-filter.html: Added.
  • web-platform-tests/intersection-observer/v2/box-shadow-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/box-shadow.html: Added.
  • web-platform-tests/intersection-observer/v2/cross-origin-effects.sub-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/cross-origin-occlusion.sub-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/delay-test-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/delay-test.html: Added.
  • web-platform-tests/intersection-observer/v2/drop-shadow-filter-vertical-rl-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/drop-shadow-filter-vertical-rl.html: Added.
  • web-platform-tests/intersection-observer/v2/iframe-target-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/iframe-target.html: Added.
  • web-platform-tests/intersection-observer/v2/inline-occlusion-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/inline-occlusion.html: Added.
  • web-platform-tests/intersection-observer/v2/position-relative-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/position-relative.html: Added.
  • web-platform-tests/intersection-observer/v2/scaled-target-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/scaled-target.html: Added.
  • web-platform-tests/intersection-observer/v2/simple-effects-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/simple-effects.html: Added.
  • web-platform-tests/intersection-observer/v2/simple-occlusion-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/simple-occlusion-svg-foreign-object-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/simple-occlusion-svg-foreign-object.html: Added.
  • web-platform-tests/intersection-observer/v2/simple-occlusion.html: Added.
  • web-platform-tests/intersection-observer/v2/text-editor-occlusion-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/text-editor-occlusion.html: Added.
  • web-platform-tests/intersection-observer/v2/text-shadow-expected.txt: Added.
  • web-platform-tests/intersection-observer/v2/text-shadow.html: Added.
  • web-platform-tests/intersection-observer/v2/w3c-import.log: Added.
  • web-platform-tests/intersection-observer/w3c-import.log:
  • web-platform-tests/intersection-observer/zero-area-element-hidden.html:
  • web-platform-tests/intersection-observer/zero-area-element-visible.html:
  • web-platform-tests/intersection-observer/v2/cross-origin-effects.sub.html: Added.
  • web-platform-tests/intersection-observer/v2/cross-origin-occlusion.sub.html: Added.

LayoutTests:

Add iOS expectations and skip new tests timing out.

  • TestExpectations:
  • platform/ios/imported/w3c/web-platform-tests/intersection-observer/cross-origin-iframe.sub-expected.txt: Added.
  • platform/ios/imported/w3c/web-platform-tests/intersection-observer/iframe-no-root-with-wrapping-scroller-expected.txt: Added.
  • platform/ios/imported/w3c/web-platform-tests/intersection-observer/nested-cross-origin-iframe.sub-expected.txt: Remamed from platform/ios/imported/w3c/web-platform-tests/intersection-observer/nested-cross-origin-iframe.sub.txt.
8:43 AM Changeset in webkit [257136] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

[ Mac wk1 Debug ] legacy-animation-engine/compositing/transitions/add-remove-transition.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208059

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
8:27 AM Changeset in webkit [257135] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Fix media related sandbox issues in the GPU process
https://bugs.webkit.org/show_bug.cgi?id=208033

Reviewed by Eric Carlson.

The mach lookup sandbox extension to 'com.apple.tccd' needs to be created with the method SandboxExtension::createHandleForMachLookup.
The file read-write sandbox extension to the media cache directory needs to be created with the parent folder of the actual cache folder,
since the media frameworks also seem to access files there.

No new tests, covered by existing tests.

  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::singleton):
(WebKit::gpuProcessSessionParameters):

8:20 AM Changeset in webkit [257134] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Make support for bytecode caching more robust against file corruption.
https://bugs.webkit.org/show_bug.cgi?id=207972
<rdar://problem/59260595>

Reviewed by Yusuke Suzuki.

If a bytecode cache file is corrupted, we currently will always crash every time
we try to read it (in perpetuity as long as the corrupted cache file continues to
exist on disk). To guard against this, we'll harden the bytecode caching mechanism
as follows:

  1. Modify the writeCache operation to always write the cache file in a transactional manner i.e. we'll first write to a .tmp file, and then rename the .tmp file to the cache file only if the entire file has been written in completeness.

This ensures that we won't get corrupted cache files due to interrupted writes.

  1. Modify the writeCache operation to also compute a SHA1 hash of the cache file and append the hash at end of the file. Modify the readCache operation to first authenticate the SHA1 hash before allowing the cache file to be used. If the hash does not match, the file is bad, and we'll just delete it.

This ensures that we won't be crashing while decoding a corrupted cache file.

Manually tested with the following scenarios and ensuring that the client recovers
with no crashes:

  1. no cache file on disk.
  2. a 0-sized cache file on a disk.
  3. a truncated cache file on disk.
  4. a corrupted cache file on disk.
  5. an uncorrupted cache file on disk.

Also added some static_asserts in CachedTypes.cpp to document some invariants that
the pre-existing code is dependent on.

  • API/JSScript.mm:

(-[JSScript readCache]):
(-[JSScript writeCache:]):

  • runtime/CachedTypes.cpp:
4:38 AM Changeset in webkit [257133] by Lauro Moura
  • 2 edits in trunk/Source/WebCore

[GStreamer] TextCombinerGStreamer is failing to compile with Gst1.14
https://bugs.webkit.org/show_bug.cgi?id=208041

Reviewed by Xabier Rodriguez-Calvar.

Replace usage of gst_clear_object and gst_clear_tag_list with previous
*_unref functions. The clear versions were added in 1.16 while Ubuntu
18.04 (current LTS) and Debian stable uses 1.14.

  • platform/graphics/gstreamer/TextCombinerGStreamer.cpp:

(webkitTextCombinerPadDispose):

3:22 AM Changeset in webkit [257132] by clopez@igalia.com
  • 16 edits in trunk

Value sanitization for input[type=text] should not truncate a value at a control character
https://bugs.webkit.org/show_bug.cgi?id=207900

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline the tests. Below its a summary of the number of FAIL and PASS lines changed for each test:

  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-csiso2022jp-expected.txt: FAIL from 7312 to 374 PASS from 17 to 6955
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-han-expected.txt: FAIL from 21216 to 477 PASS from 53 to 20792
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-hangul-expected.txt: FAIL from 11155 to 0 PASS from 28 to 11183
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-misc-expected.txt: FAIL from 3422 to 46 PASS from 9 to 3385
  • web-platform-tests/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-expected.txt: FAIL from 7375 to 374 PASS from 17 to 7018
  • web-platform-tests/html/semantics/forms/the-input-element/valueMode-expected.txt: FAIL from 20 to 10 PASS from 22 to 32

Source/WebCore:

Stop truncating value at a control character. The new behavior is compatible with Chrome and Firefox.
Inspired on Chromium patch https://codereview.chromium.org/189843008

Covered by existing tests: affected layout tests are modified to reflect the new behaviour.
This improves WPT pass-rate in around 49K new subtest passes for Japanesse encoding tests.

  • html/TextFieldInputType.cpp:

(WebCore::limitLength):

LayoutTests:

Update layout tests to reflect the new behaviour.

  • fast/forms/input-value-sanitization-expected.txt:
  • fast/forms/input-value-sanitization.html:
  • fast/forms/paste-multiline-text-input.html:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/valueMode-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/valueMode-expected.txt:
  • platform/mac/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/valueMode-expected.txt:
2:26 AM Changeset in webkit [257131] by Carlos Garcia Campos
  • 5 edits
    2 adds in trunk/Source/WebCore

[WPE] Use custom theme style for media controls
https://bugs.webkit.org/show_bug.cgi?id=208002

Reviewed by Adrian Perez de Castro.

Add mediaControlsAdwaita.css and mediaControlsAdwaita.js. The style is based on GTK port with a few differences:

  • Adwaita icons are included in the css.
  • All buttons have effects for hover, pressed and disabled states.
  • Mute and fullscreen (only for videos) buttons are always visible, but disabled when not available to avoid the dancing when they are shown.
  • Media duration is always shown too (for non-live streams), being 00:00 and disabled when unknown, for the same reason.
  • Timeline and volume sliders are smaller and their thumbs are circled instead of rounded rectangles.
  • Slider thumbs also have effects for hover, pressed and disabled states.
  • Modules/mediacontrols/mediaControlsAdwaita.css: Added.

(audio::-webkit-media-controls-panel.hidden,):
(body:-webkit-full-page-media):
(audio):
(audio:-webkit-full-page-media,):
(audio:-webkit-full-page-media::-webkit-media-controls-panel,):
(::-webkit-media-controls):
(audio::-webkit-media-controls-enclosure,):
(video::-webkit-media-controls-enclosure):
(audio::-webkit-media-controls-panel,):
(video::-webkit-media-controls-panel):
(video::-webkit-media-controls-panel div.mute-box,):
(audio::-webkit-media-controls-panel div.mute-box.hidden,):
(audio::-webkit-media-controls-mute-button,):
(audio::-webkit-media-controls-mute-button.muted,):
(audio::-webkit-media-controls-play-button,):
(audio::-webkit-media-controls-play-button.paused,):
(audio::-webkit-media-controls-current-time-display,):
(audio::-webkit-media-controls-current-time-display.no-duration,):
(audio::-webkit-media-controls-current-time-display.hidden,):
(audio::-webkit-media-controls-timeline,):
(input[type="range"][disabled]::-webkit-media-slider-thumb,):
(audio::-webkit-media-controls-timeline.hidden,):
(audio::-webkit-media-controls-volume-slider-container,):
(audio::-webkit-media-controls-volume-slider-container.hiding,):
(audio::-webkit-media-controls-volume-slider-container.down,):
(audio::-webkit-media-controls-panel .hiding.down,):
(audio::-webkit-media-controls-volume-slider,):
(audio::-webkit-media-controls-volume-slider-container input[type="range"]::-webkit-media-slider-container > div,):
(input[type="range"]::-webkit-media-slider-container):
(input[type="range"]::-webkit-media-slider-container > div):
(input[type="range"]::-webkit-media-slider-thumb):
(audio::-webkit-media-controls-toggle-closed-captions-button,):
(audio::-webkit-media-controls-toggle-closed-captions-button.hidden,):
(video::-webkit-media-controls-closed-captions-container):
(video::-webkit-media-controls-closed-captions-container.out):
(video::-webkit-media-controls-closed-captions-container.hidden):
(video::-webkit-media-controls-closed-captions-container h3):
(video::-webkit-media-controls-closed-captions-container ul):
(video::-webkit-media-controls-closed-captions-container li):
(video::-webkit-media-controls-closed-captions-container li.selected):
(audio::-webkit-media-controls-fullscreen-button,):
(audio::-webkit-media-controls-fullscreen-button.hidden,):
(audio::-webkit-media-controls-panel button:hover,):
(audio::-webkit-media-controls-panel button:active,):
(audio::-webkit-media-controls-panel button[disabled],):

  • Modules/mediacontrols/mediaControlsAdwaita.js: Added.

(createControls):
(ControllerAdwaita):
(contains):
(ControllerAdwaita.prototype.createControls):
(ControllerAdwaita.prototype.configureInlineControls):
(ControllerAdwaita.prototype.shouldHaveControls):
(ControllerAdwaita.prototype.reconnectControls):
(ControllerAdwaita.prototype.setStatusHidden):
(ControllerAdwaita.prototype.updateTime):
(ControllerAdwaita.prototype.handleTimeUpdate):
(ControllerAdwaita.prototype.updateHasAudio):
(ControllerAdwaita.prototype.handleMuteButtonMouseOver):
(ControllerAdwaita.prototype.handleVolumeBoxMouseOut):
(ControllerAdwaita.prototype.removeControls):
(ControllerAdwaita.prototype.addControls):
(ControllerAdwaita.prototype.updateFullscreenButton):
(ControllerAdwaita.prototype.updateReadyState):
(ControllerAdwaita.prototype.updateDuration):
(ControllerAdwaita.prototype.setIsLive):
(ControllerAdwaita.prototype.updatePlaying):
(ControllerAdwaita.prototype.updateProgress):
(ControllerAdwaita.prototype.handleCaptionButtonClicked):
(ControllerAdwaita.prototype.buildCaptionMenu):
(ControllerAdwaita.prototype.destroyCaptionMenu):
(ControllerAdwaita.prototype.showCaptionMenu):
(ControllerAdwaita.prototype.hideCaptionMenu):
(ControllerAdwaita.prototype.captionMenuTransitionEnd):
(ControllerAdwaita.prototype.handleCaptionButtonMouseOver):
(ControllerAdwaita.prototype.handleCaptionButtonShowMenu):
(ControllerAdwaita.prototype.handleCaptionButtonMouseOut):
(ControllerAdwaita.prototype.handleCaptionMouseOut):

  • Modules/mediacontrols/mediaControlsBase.js:
  • PlatformWPE.cmake:
  • platform/wpe/RenderThemeWPE.cpp:

(WebCore::RenderThemeWPE::extraMediaControlsStyleSheet):
(WebCore::RenderThemeWPE::mediaControlsScript):
(WebCore::RenderThemeWPE::paintMediaSliderTrack):
(WebCore::RenderThemeWPE::paintMediaVolumeSliderTrack):

  • platform/wpe/RenderThemeWPE.h:
2:16 AM Changeset in webkit [257130] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix for Windows ports

WebKitBuild\Release\WTF\Headers\wtf/RefPtr.h(44): error C2027: use of undefined type 'WebCore::ImageData'

RefPtr<ImageData> is used without defining ImageData.

  • platform/graphics/ConcreteImageBuffer.h: Added #include "ImageData.h".
12:26 AM Changeset in webkit [257129] by rniwa@webkit.org
  • 4 edits
    2 adds in trunk

Nullptr crash in RenderStyle::isFlippedBlocksWritingMode when fragment flow gains a new in-flow descendant
https://bugs.webkit.org/show_bug.cgi?id=207296
<rdar://problem/49687828>

Patch by Jack Lee <shihchieh_lee@apple.com> on 2020-02-21
Reviewed by Antti Koivisto.

When a multi-column fragment flow gains a new in-flow descendant, we need to call
multiColumnDescendantInserted so RenderMultiColumnSet would be created for the new
descendant.

Source/WebCore:

Test: fast/multicol/fragflow-gains-new-in-flow-descendant-crash.html

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::childFlowStateChangesAndAffectsParentBlock):

LayoutTests:

  • TestExpectations:
  • fast/multicol/fragflow-gains-new-in-flow-descendant-crash-expected.txt: Added.
  • fast/multicol/fragflow-gains-new-in-flow-descendant-crash.html: Added.
Note: See TracTimeline for information about the timeline view.