New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 817381 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Mar 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Feature



Sign in to add a comment

Give unique flag for each experimental feature in canvas and group them in web-platform-features

Project Member Reported by xlai@chromium.org, Feb 28 2018

Issue description



Changed task description:

Based on team discussion, we think it is better that we abandon 'Experimental Canvas Features' flag altogether because it is a confusing umbrella flag for a bundle of different small features, when we already have 'Experimental Web Platform Features' as a universal flag. 

Instead of what's described above, we should identify groups of different features in canvas code, give each of them a unique name, and then put it under "Experimental Web Platform Features" flag.

After that, we then should explore whether we can run the canvas api tests when different small experimental features are turned on, and run shipped API tests without any experimental flags.


-------------------------------------------------------------------------------------------------------

Background:


In Nov 2016, canvas team announced that ImageBitmapRenderingContext is shipped and removed the experimental flag in its IDL interface. 14 months later, I accidentally discovered that this rendering context is actually hidden from the users behind --enable-experimental-canvas-features flag, because the code is written inside the
getContext() factory function and it was not very obvious to detect it at the time of release. All the layout tests/pixel tests did not catch this problem because the experimental flags are all automatically turned on for testing.

See https://bugs.chromium.org/p/chromium/issues/detail?id=658734 to understand the full context of the problem.

Note that the RuntimeEnableFeatures::ExperimentalCanvasFeaturesEnabled() function is
frequently inserted into the canvas code, so this problem has a possibility of happening again.

Therefore, after a brief discussion with the rest of the canvas team, I think we might want to improve the layout test infra setup. That is, separating those stable features and experimental features in certain ways, and run the tests with the experimental flags turned on and off respectively.

In addition, certain group of features (e.g.OffscreenCanvas) are now put under the big umbrella of "Experimental Web Platform Features" instead of "Experimental Canvas Features". We want to ensure coherence from the users' point of view when they are interacting with different APIs for OffscreenCanvas (i.e. not finding that one API is only accessible under 1 flag and the other API is only accessible under another flag and these two APIs are frequently used together).

This might requires dig-in and exploration onto what's the possible options. I would assign this task to myself and come back when I'm free; but anyone who's interested and have time to work on it can just take the task from me.




 

Comment 1 by xlai@chromium.org, Feb 28 2018

Description: Show this description

Comment 2 by xlai@chromium.org, Feb 28 2018

Summary: Give unique flag for each experimental feature in canvas and group them in web-platform-features (was: Run tests on shipped API without experimental flags)

Comment 3 by xlai@chromium.org, Mar 7 2018

Description: Show this description
Project Member

Comment 4 by bugdroid1@chromium.org, Mar 15 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac

commit 2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac
Author: xlai <xlai@chromium.org>
Date: Thu Mar 15 14:32:46 2018

Group experimental canvas features with the rest of web platform features

The experimental canvas features have been divided into the following groups of features:
- Canvas2dContextLostRestored
- Canvas2dScrollPathIntoView
- CanvasColorManagement
- CanvasHitRegion
- CanvasImageSmoothing
- CanvasTransformations
- ExtendedTextMetrics
- ExtendedImageBitmapOptions
- ExtraWebGLVideoTextureMetadata
- OffscreenCanvas
- OffscreenCanvasText

TBR=pfeldman@chromium.org

Bug:  817381 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: Icff1d8aed866ed1f2e09e054755867c437e9de42
Reviewed-on: https://chromium-review.googlesource.com/957646
Commit-Queue: Olivia Lai <xlai@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Justin Novosad <junov@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Ned Nguyen <nednguyen@google.com>
Cr-Commit-Position: refs/heads/master@{#543366}
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/chrome/browser/about_flags.cc
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/content/child/runtime_features.cc
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/content/public/common/content_switches.cc
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/content/public/common/content_switches.h
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/content/test/gpu/gpu_tests/trace_integration_test.py
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/bindings/core/v8/serialization/V8ScriptValueSerializerTest.cpp
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/core/events/MouseEvent.idl
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/core/html/canvas/ImageData.cpp
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/core/html/canvas/ImageData.idl
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/core/html/canvas/ImageDataTest.cpp
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/core/html/canvas/TextMetrics.idl
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/core/imagebitmap/ImageBitmapOptions.idl
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/core/imagebitmap/ImageBitmapTest.cpp
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/core/input/Touch.idl
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/modules/canvas/canvas2d/CanvasPattern.idl
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/modules/canvas/canvas2d/CanvasRenderingContext2D.cpp
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/modules/canvas/canvas2d/CanvasRenderingContext2D.idl
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/modules/canvas/canvas2d/CanvasRenderingContext2DSettings.idl
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/modules/canvas/canvas2d/CanvasRenderingContext2DTest.cpp
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/modules/canvas/canvas2d/Path2D.idl
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/modules/canvas/htmlcanvas/CanvasContextCreationAttributesModule.idl
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/modules/canvas/offscreencanvas2d/OffscreenCanvasRenderingContext2D.idl
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/modules/csspaint/PaintRenderingContext2D.idl
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/modules/webgl/WebGLTexture.idl
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/platform/exported/WebRuntimeFeatures.cpp
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/platform/graphics/CanvasColorParamsTest.cpp
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.cpp
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/Source/platform/runtime_enabled_features.json5
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/third_party/WebKit/public/platform/WebRuntimeFeatures.h
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/tools/perf/benchmarks/blink_perf.py
[modify] https://crrev.com/2a7c3b2cd5c6ad903ae422d5e6ce45a123ab92ac/tools/perf/benchmarks/smoothness.py

Comment 5 by xlai@chromium.org, Mar 15 2018

Status: Fixed (was: Assigned)

Sign in to add a comment