blob: dd0c598bf800d21c7a6578484ec51985cd9bf572 [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.android_webview.common;
import org.chromium.base.BaseFeatures;
import org.chromium.base.BaseSwitches;
import org.chromium.blink_public.common.BlinkFeatures;
import org.chromium.blink_scheduler.BlinkSchedulerFeatures;
import org.chromium.cc.base.CcFeatures;
import org.chromium.cc.base.CcSwitches;
import org.chromium.components.autofill.AndroidAutofillFeatures;
import org.chromium.components.autofill.AutofillFeatures;
import org.chromium.components.feature_engagement.FeatureConstants;
import org.chromium.components.metrics.AndroidMetricsFeatures;
import org.chromium.components.metrics.MetricsFeatures;
import org.chromium.components.metrics.MetricsSwitches;
import org.chromium.components.network_session_configurator.NetworkSessionSwitches;
import org.chromium.components.variations.VariationsSwitches;
import org.chromium.components.viz.common.VizFeatures;
import org.chromium.content_public.common.ContentFeatures;
import org.chromium.content_public.common.ContentSwitches;
import org.chromium.gpu.config.GpuFeatures;
import org.chromium.gpu.config.GpuSwitches;
import org.chromium.net.NetFeatures;
import org.chromium.services.network.NetworkServiceFeatures;
import org.chromium.services.tracing.TracingServiceFeatures;
import org.chromium.ui.accessibility.AccessibilityFeatures;
import org.chromium.ui.base.UiAndroidFeatures;
/**
* List of experimental features/flags supported for user devices. Add features/flags to this list
* with scrutiny: any feature/flag in this list can be enabled for production Android devices, and
* so it must not compromise the Android security model (i.e., WebView must still protect the app's
* private data from being user visible).
*
* <p>This lives in the common package so it can be shared by dev UI (to know which features/flags
* to display) as well as the WebView implementation (so it knows which features/flags are safe to
* honor).
*/
public final class ProductionSupportedFlagList {
// Do not instantiate this class.
private ProductionSupportedFlagList() {}
/**
* A list of commandline flags supported on user devices. If updating this list, please also
* update enums.xml. See android_webview/docs/developer-ui.md
* (https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/developer-ui.md#Adding-your-flags-and-features-to-the-UI).
*/
public static final Flag[] sFlagList = {
Flag.commandLine(AwSwitches.HIGHLIGHT_ALL_WEBVIEWS,
"Highlight the contents (including web contents) of all WebViews with a yellow "
+ "tint. This is useful for identifying WebViews in an Android "
+ "application."),
Flag.commandLine(AwSwitches.WEBVIEW_VERBOSE_LOGGING,
"WebView will log additional debugging information to logcat, such as "
+ "variations and commandline state."),
Flag.commandLine(CcSwitches.SHOW_COMPOSITED_LAYER_BORDERS,
"Renders a border around compositor layers to help debug and study layer "
+ "compositing."),
Flag.commandLine(CcSwitches.ANIMATED_IMAGE_RESUME,
"Resumes animated images from where they were."),
Flag.commandLine(AwSwitches.FINCH_SEED_EXPIRATION_AGE,
"Forces all variations seeds to be considered stale.", "0"),
Flag.commandLine(AwSwitches.FINCH_SEED_IGNORE_PENDING_DOWNLOAD,
"Forces the WebView service to reschedule a variations seed download job even "
+ "if one is already pending."),
Flag.commandLine(AwSwitches.FINCH_SEED_NO_CHARGING_REQUIREMENT,
"Forces WebView's service to always schedule a new variations seed download "
+ "job, even if the device is not charging. Note this switch may be "
+ "necessary for testing on Android emulators as these are not always "
+ "considered to be charging."),
Flag.commandLine(AwSwitches.FINCH_SEED_MIN_DOWNLOAD_PERIOD,
"Disables throttling of variations seed download jobs.", "0"),
Flag.commandLine(AwSwitches.FINCH_SEED_MIN_UPDATE_PERIOD,
"Disables throttling of new variations seed requests to the WebView service.",
"0"),
Flag.commandLine(MetricsSwitches.FORCE_ENABLE_METRICS_REPORTING,
"Forces WebView's metrics reporting to be enabled. This overrides user "
+ "settings and capacity sampling, but does not override the app's "
+ "choice to opt-out."),
Flag.commandLine(AwSwitches.WEBVIEW_LOG_JS_CONSOLE_MESSAGES,
"Mirrors JavaScript console messages to system logs."),
Flag.commandLine(BaseSwitches.ENABLE_CRASH_REPORTER_FOR_TESTING,
"Used for turning on Breakpad crash reporting in a debug environment where "
+ "crash reporting is typically compiled but disabled."),
Flag.commandLine(GpuSwitches.DISABLE_GPU_RASTERIZATION,
"Disables GPU rasterization, i.e. rasterizes on the CPU only."),
Flag.commandLine(GpuSwitches.IGNORE_GPU_BLOCKLIST,
"Overrides the built-in software rendering list and enables "
+ "GPU acceleration on unsupported device configurations."),
Flag.commandLine(AwSwitches.WEBVIEW_ENABLE_MODERN_COOKIE_SAME_SITE,
"Enables modern SameSite cookie behavior: 1) SameSite=Lax by default "
+ "(cookies without a SameSite attribute are treated as SameSite=Lax); "
+ "2) Schemeful Same-Site (site boundaries include the URL scheme)."),
Flag.commandLine(ContentSwitches.SITE_PER_PROCESS,
"Security mode that enables site isolation for all sites inside WebView. In "
+ "this mode, each renderer process will contain pages from at most "
+ "one site, using out-of-process iframes when needed. Highly "
+ "experimental."),
Flag.commandLine(NetworkSessionSwitches.ENABLE_HTTP2_GREASE_SETTINGS,
"Enable sending HTTP/2 SETTINGS parameters with reserved identifiers."),
Flag.commandLine(NetworkSessionSwitches.DISABLE_HTTP2_GREASE_SETTINGS,
"Disable sending HTTP/2 SETTINGS parameters with reserved identifiers."),
Flag.commandLine(VariationsSwitches.ENABLE_FINCH_SEED_DELTA_COMPRESSION,
"Enables delta-compression when requesting a new seed from the server."),
Flag.commandLine(AwSwitches.WEBVIEW_FENCED_FRAMES,
"Enables fenced frames. Also implies SharedStorageAPI, "
+ "and PrivacySandboxAdsAPIsOverride"),
Flag.commandLine(AwSwitches.WEBVIEW_DISABLE_APP_RECOVERY,
"Disables WebView from checking for app recovery mitigations."),
Flag.commandLine(AwSwitches.WEBVIEW_ENABLE_APP_RECOVERY,
"Enables WebView to check for app recovery mitigations."),
Flag.commandLine(AwSwitches.WEBVIEW_ENABLE_USER_AGENT_CLIENT_HINTS,
"Enables user-agent client hints in WebView."),
Flag.baseFeature("DefaultPassthroughCommandDecoder",
"Use the passthrough GLES2 command decoder."),
Flag.baseFeature(GpuFeatures.WEBVIEW_VULKAN,
"Use Vulkan for composite. Requires Android device and OS support. May crash "
+ "if enabled on unsupported device."),
Flag.baseFeature(GpuFeatures.WEBVIEW_SURFACE_CONTROL,
"Use SurfaceControl. Requires WebViewThreadSafeMedia and Android device and OS "
+ "support."),
Flag.baseFeature(GpuFeatures.WEBVIEW_THREAD_SAFE_MEDIA,
"Use thread-safe media path, requires Android P."),
Flag.baseFeature(VizFeatures.ALLOW_BYPASS_RENDER_PASS_QUADS,
"Enable bypass render pass for RenderPassDrawQuads"),
Flag.baseFeature(VizFeatures.WEBVIEW_NEW_INVALIDATE_HEURISTIC,
"More robust heuristic for calling Invalidate"),
Flag.baseFeature(
VizFeatures.WEBVIEW_VULKAN_INTERMEDIATE_BUFFER, "For debugging vulkan"),
Flag.baseFeature(VizFeatures.ALLOW_UNDAMAGED_NONROOT_RENDER_PASS_TO_SKIP,
"Enable optimization for skipping undamaged nonroot render passes."),
Flag.baseFeature(
GpuFeatures.USE_GLES2_FOR_OOP_R, "Force Skia context to use es2 only."),
Flag.baseFeature(AwFeatures.WEBVIEW_CONNECTIONLESS_SAFE_BROWSING,
"Uses GooglePlayService's 'connectionless' APIs for Safe Browsing "
+ "security checks."),
Flag.baseFeature(AwFeatures.WEBVIEW_APPS_PACKAGE_NAMES_SERVER_SIDE_ALLOWLIST,
"Enables usage of server-side allowlist filtering of"
+ " app package names."),
Flag.baseFeature(AwFeatures.WEBVIEW_BROTLI_SUPPORT,
"Enables brotli compression support in WebView."),
Flag.baseFeature(AwFeatures.WEBVIEW_EXTRA_HEADERS_SAME_ORIGIN_ONLY,
"Only allow extra headers added via loadUrl() to be sent to the same origin "
+ "as the original request."),
Flag.baseFeature(AwFeatures.WEBVIEW_DISPLAY_CUTOUT,
"Enables display cutout (notch) support in WebView for Android P and above."),
Flag.baseFeature(BlinkFeatures.WEBVIEW_ACCELERATE_SMALL_CANVASES,
"Accelerate all canvases in webview."),
Flag.baseFeature(AwFeatures.WEBVIEW_MIXED_CONTENT_AUTOUPGRADES,
"Enables autoupgrades for audio/video/image mixed content when mixed content "
+ "mode is set to MIXED_CONTENT_COMPATIBILITY_MODE"),
Flag.baseFeature(AwFeatures.WEBVIEW_JAVA_JS_BRIDGE_MOJO,
"Enables the new Java/JS Bridge code path with mojo implementation."),
Flag.baseFeature(
AwFeatures.WEBVIEW_ORIGIN_TRIALS, "Enables Origin Trials support on WebView."),
Flag.baseFeature(BlinkFeatures.GMS_CORE_EMOJI,
"Enables retrieval of the emoji font through GMS Core "
+ "improving emoji glyph coverage."),
Flag.baseFeature(
AndroidAutofillFeatures
.ANDROID_AUTOFILL_VIEW_STRUCTURE_WITH_FORM_HIERARCHY_LAYER_NAME,
"When enabled, Android Autofill ViewStructures contain an additional "
+ "hierarchy level."),
Flag.baseFeature(AutofillFeatures.AUTOFILL_SPLIT_CREDIT_CARD_NUMBERS_CAUTIOUSLY,
"Split credit card numbers over multiple fields more cautiously."),
Flag.baseFeature(AutofillFeatures.AUTOFILL_ENABLE_DEPENDENT_LOCALITY_PARSING,
"Enables parsing dependent locality fields (e.g. Bairros in Brazil)."),
Flag.baseFeature(AutofillFeatures.AUTOFILL_ENABLE_EXPIRATION_DATE_IMPROVEMENTS,
"Enables various improvements to handling expiration dates."),
Flag.baseFeature(AutofillFeatures.AUTOFILL_ENABLE_SUPPORT_FOR_PHONE_NUMBER_TRUNK_TYPES,
"Rationalizes city-and-number and city-code fields to the "
+ "correct trunk-prefix types."),
Flag.baseFeature(AutofillFeatures.AUTOFILL_ENFORCE_DELAYS_IN_STRIKE_DATABASE,
"Enforce delay between offering Autofill opportunities in the "
+ "strike database."),
Flag.baseFeature(AutofillFeatures.AUTOFILL_PARSE_ASYNC,
"Parse forms asynchronously outside of the UI thread."),
Flag.baseFeature(AutofillFeatures.AUTOFILL_PARSING_PATTERN_PROVIDER,
"Enables Autofill to use its new method to retrieve parsing patterns."),
Flag.baseFeature(AutofillFeatures.AUTOFILL_PAGE_LANGUAGE_DETECTION,
"Enables Autofill to retrieve the page language for form parsing."),
Flag.baseFeature(AutofillFeatures.AUTOFILL_ALWAYS_PARSE_PLACEHOLDERS,
"When enabled, Autofill local heuristics consider the placeholder attribute "
+ "for determining field types."),
Flag.baseFeature(AutofillFeatures.AUTOFILL_SERVER_BEHAVIORS,
"When enabled, Autofill will request experimental "
+ "predictions from the Autofill API."),
Flag.baseFeature(FeatureConstants.KEYBOARD_ACCESSORY_PAYMENT_VIRTUAL_CARD_FEATURE,
"When enabled, merchant bound virtual cards will be offered in the keyboard "
+ "accessory."),
Flag.baseFeature(NetworkServiceFeatures.PRIVATE_STATE_TOKENS,
"Enables the prototype Private State Tokens API."),
Flag.commandLine(AwSwitches.WEBVIEW_DISABLE_PACKAGE_ALLOWLIST_THROTTLING,
"Disables throttling querying apps package names allowlist components in"
+ "WebView clients."),
Flag.baseFeature(AwFeatures.WEBVIEW_EMPTY_COMPONENT_LOADER_POLICY,
"Enables loading a fake empty (no-op) component during WebView startup."),
Flag.commandLine(AwSwitches.WEBVIEW_SELECTIVE_IMAGE_INVERSION_DARKENING,
"Enables use selective image inversion to automatically darken page, it will be"
+ " used when WebView is in dark mode, but website doesn't provide dark"
+ " style."),
Flag.baseFeature(AwFeatures.WEBVIEW_FORCE_DARK_MODE_MATCH_THEME,
"Automatically darken page if"
+ " WebView is set to FORCE_DARK_AUTO and the app has dark theme"),
Flag.baseFeature(ContentFeatures.VERIFY_DID_COMMIT_PARAMS,
"Enables reporting of browser and renderer navigation inconsistencies on"
+ "navigations"),
Flag.baseFeature(ContentFeatures.USER_MEDIA_CAPTURE_ON_FOCUS,
"Enables GetUserMedia API will only resolve when the document calling it has"
+ "focus"),
Flag.baseFeature(ContentFeatures.COMPOSITE_BG_COLOR_ANIMATION,
"When enabled, the background-color animation runs on the compositor thread."),
Flag.baseFeature(AwFeatures.WEBVIEW_USE_METRICS_UPLOAD_SERVICE,
"Upload UMA metrics logs through MetricsUploadService not via GMS-core"
+ " directly."),
Flag.baseFeature(AndroidMetricsFeatures.ANDROID_METRICS_ASYNC_METRIC_LOGGING,
"Initiate metric uploading on a background thread."),
Flag.baseFeature(BlinkFeatures.SET_TIMEOUT_WITHOUT_CLAMP,
"Enables faster setTimeout(,0) by removing the 1 ms clamping."),
Flag.baseFeature(BlinkFeatures.PAINT_HOLDING_CROSS_ORIGIN,
"Defers the first commit until FCP or timeout for cross-origin navigations."),
Flag.baseFeature(ContentFeatures.NAVIGATION_NETWORK_RESPONSE_QUEUE,
"Schedules tasks related to the navigation network responses on a higher "
+ "priority task queue."),
Flag.baseFeature(ContentFeatures.EARLY_ESTABLISH_GPU_CHANNEL,
"Enable establishing the GPU channel early in renderer startup."),
Flag.baseFeature(AwFeatures.WEBVIEW_X_REQUESTED_WITH_HEADER_CONTROL,
"Restricts insertion of XRequestedWith header on outgoing requests "
+ "to those that have been allow-listed through the appropriate "
+ "developer API."),
Flag.baseFeature(BlinkFeatures.VIEWPORT_HEIGHT_CLIENT_HINT_HEADER,
"Enables the use of sec-ch-viewport-height client hint."),
Flag.baseFeature(GpuFeatures.CANVAS_CONTEXT_LOST_IN_BACKGROUND,
"Free Canvas2D resources when the webview is in the background."),
Flag.baseFeature(GpuFeatures.USE_CLIENT_GMB_INTERFACE,
"Uses the ClientGmbInetrface to create GpuMemoryBuffers for Renderers."),
Flag.baseFeature(GpuFeatures.USE_GPU_SCHEDULER_DFS,
"Uses the new SchedulerDFS GPU job scheduler."),
Flag.baseFeature(BlinkFeatures.AUTOFILL_SHADOW_DOM,
"Enables Autofill associate form elements with form "
+ "control elements across shadow boundaries."),
Flag.baseFeature(BlinkFeatures.UACH_OVERRIDE_BLANK,
"Changes behavior of User-Agent Client Hints to send blank headers "
+ "when the User-Agent string is overriden"),
Flag.baseFeature(BlinkFeatures.MAX_UNTHROTTLED_TIMEOUT_NESTING_LEVEL,
"Increases the nesting threshold before which "
+ "setTimeout(..., <4ms) starts being clamped to 4 ms."),
Flag.baseFeature(BlinkFeatures.ESTABLISH_GPU_CHANNEL_ASYNC,
"Enables establishing the GPU channel asnchronously when requesting a new "
+ "layer tree frame sink."),
Flag.baseFeature(BlinkFeatures.DECODE_SCRIPT_SOURCE_OFF_THREAD,
"If enabled, script source text will be decoded and hashed off the main"
+ "thread."),
Flag.baseFeature(BaseFeatures.OPTIMIZE_DATA_URLS,
"Optimizes parsing and loading of data: URLs."),
Flag.baseFeature(BlinkFeatures.PREFETCH_FONT_LOOKUP_TABLES,
"If enabled, font lookup tables will be prefetched on renderer startup."),
Flag.baseFeature(BlinkFeatures.PRECOMPILE_INLINE_SCRIPTS,
"If enabled, inline scripts will be stream compiled using a background HTML"
+ " scanner."),
Flag.baseFeature(BaseFeatures.RUN_TASKS_BY_BATCHES,
"Run tasks in queue for 8ms before before sending a system message."),
Flag.baseFeature(BlinkFeatures.OFFSET_PARENT_NEW_SPEC_BEHAVIOR,
"Enables new HTMLElement.offsetParent behavior to match other browsers."),
Flag.baseFeature(AwFeatures.WEBVIEW_RECORD_APP_DATA_DIRECTORY_SIZE,
"Record the size of the embedding app's data directory"),
Flag.baseFeature(BlinkFeatures.EARLY_EXIT_ON_NOOP_CLASS_OR_STYLE_CHANGE,
"Early exit when the style or class attribute of a DOM element is set to the"
+ " same value as before."),
Flag.baseFeature(BlinkFeatures.MAIN_THREAD_HIGH_PRIORITY_IMAGE_LOADING,
"If enabled, image load tasks on visible pages have high priority."),
Flag.baseFeature(BlinkFeatures.THREADED_PRELOAD_SCANNER,
"If enabled, the HTMLPreloadScanner will run on a worker thread."),
Flag.baseFeature(BlinkFeatures.TIMED_HTML_PARSER_BUDGET,
"If enabled, the HTMLDocumentParser will use a budget based on elapsed time"
+ " rather than token count."),
Flag.baseFeature(AwFeatures.WEBVIEW_HIT_TEST_IN_BLINK_ON_TOUCH_START,
"Hit test on touch start in blink"),
Flag.baseFeature(BaseFeatures.ALIGN_WAKE_UPS, "Align delayed wake ups at 125 Hz"),
Flag.baseFeature(BlinkSchedulerFeatures.THREADED_SCROLL_PREVENT_RENDERING_STARVATION,
"Enable rendering starvation-prevention during threaded scrolling."
+ " See https://crbug.com/1315279."),
Flag.baseFeature(BlinkSchedulerFeatures.PRIORITIZE_COMPOSITING_AFTER_DELAY_TRIALS,
"Controls the delay after which main thread compositing tasks "
+ "are prioritized over other non-input tasks."),
Flag.baseFeature(BaseFeatures.NO_WAKE_UPS_FOR_CANCELED_TASKS,
"Controls whether wake ups are possible for canceled tasks."),
Flag.baseFeature(BaseFeatures.REMOVE_CANCELED_TASKS_IN_TASK_QUEUE,
"Controls whether or not canceled delayed tasks are removed from task queues."),
Flag.baseFeature(BlinkFeatures.VIEW_TRANSITION,
"Enables the experimental View Transitions API."
+ " See https://github.com/WICG/view-transitions/blob/main/explainer.md."),
Flag.baseFeature(BlinkFeatures.VIEW_TRANSITION_ON_NAVIGATION,
"Enables the experimental View Transitions API for navigations."
+ " See https://github.com/WICG/view-transitions/blob/main/explainer.md."),
Flag.baseFeature(BlinkFeatures.CSS_OVERFLOW_FOR_REPLACED_ELEMENTS,
"Enables respecting the CSS overflow property on replaced elements."
+ " See https://chromestatus.com/feature/5137515594383360."),
Flag.baseFeature(GpuFeatures.INCREASED_CMD_BUFFER_PARSE_SLICE,
"Enable the use of an increased parse slice size per command buffer before"
+ " each forced context switch."),
Flag.baseFeature(AccessibilityFeatures.ABLATE_SEND_PENDING_ACCESSIBILITY_EVENTS,
"Enable to increase the cost of SendPendingAccessibilityEvents"),
Flag.baseFeature(BlinkFeatures.RUN_TEXT_INPUT_UPDATE_POST_LIFECYCLE,
"Runs code to update IME state at the end of a lifecycle update "
+ "rather than the beginning."),
Flag.baseFeature(CcFeatures.NON_BLOCKING_COMMIT,
"Don't block the renderer main thread unconditionally while waiting "
+ "for commit to finish on the compositor thread."),
Flag.baseFeature(CcFeatures.USE_DMSAA_FOR_TILES,
"Switches skia to use DMSAA instead of MSAA for tile raster"),
Flag.baseFeature(BlinkFeatures.CSS_PAINTING_FOR_SPELLING_GRAMMAR_ERRORS,
"Use the new CSS-based painting for spelling and grammar errors"),
Flag.baseFeature(BlinkFeatures.WEB_RTC_ENCODER_ASYNC_ENCODE,
"Make RTCVideoEncoder encode call asynchronous."),
Flag.baseFeature(BlinkFeatures.WEB_RTC_INITIALIZE_ENCODER_ON_FIRST_FRAME,
"Initialize VideoEncodeAccelerator on the first encode."),
Flag.baseFeature(BlinkFeatures.WEB_RTC_METRONOME,
"Inject a metronome into webrtc to allow task coalescing, "
+ " including synchronized decoding."),
Flag.baseFeature(BlinkFeatures.FAST_PATH_PAINT_PROPERTY_UPDATES,
"If enabled, some paint property updates (e.g., transform "
+ "changes) will be applied directly instead of "
+ "using the property tree builder."),
Flag.baseFeature(BlinkFeatures.THREADED_BODY_LOADER,
"If enabled, reads and decodes navigation body data off the main thread."),
Flag.baseFeature(BlinkFeatures.SVG_RASTER_OPTIMIZATIONS),
Flag.baseFeature(BlinkFeatures.COMPOSITE_BACKGROUND_ATTACHMENT_FIXED),
Flag.baseFeature(BlinkFeatures.COMPOSITE_SCROLL_AFTER_PAINT),
Flag.baseFeature(BlinkFeatures.DELAY_OUT_OF_VIEWPORT_LAZY_IMAGES,
"Delays out-of-viewport lazy loaded images."),
Flag.baseFeature(BlinkFeatures.SEND_MOUSE_EVENTS_DISABLED_FORM_CONTROLS,
"This changes event propagation for disabled form controls."),
Flag.baseFeature(ContentFeatures.SURFACE_SYNC_FULLSCREEN_KILLSWITCH,
"Disable to turn off the new SurfaceSync Fullscreen path."),
Flag.baseFeature(ContentFeatures.PERSISTENT_ORIGIN_TRIALS,
"If enabled, servers will be able to use persistent origin trials "
+ "on this device."),
Flag.baseFeature(AwFeatures.WEBVIEW_IMAGE_DRAG,
"If enabled, images can be dragged out from Webview"),
Flag.baseFeature(BlinkFeatures.WEB_RTC_COMBINED_NETWORK_AND_WORKER_THREAD,
"Combines WebRTC's worker thread and network thread onto a single thread."),
Flag.baseFeature(BlinkFeatures.V_SYNC_DECODING,
"Runs the WebRTC metronome off the VSync signal."),
Flag.baseFeature(BlinkFeatures.WEB_RTC_SEND_PACKET_BATCH,
"Sends outgoing WebRTC Video RTP packets in batches."),
Flag.baseFeature(ContentSwitches.DISABLE_DOMAIN_BLOCKING_FOR3DAP_IS,
"Disable the per-domain blocking for 3D APIs after GPU reset. "
+ "This switch is intended only for tests."),
Flag.baseFeature(MetricsFeatures.METRICS_SERVICE_ALLOW_EARLY_LOG_CLOSE,
"Controls whether a log is allowed to be closed when Chrome"
+ " is backgrounded/foregrounded early."),
Flag.baseFeature(MetricsFeatures.METRICS_CLEAR_LOGS_ON_CLONED_INSTALL,
"Controls whether UMA logs are cleared when a cloned "
+ "install is detected."),
Flag.baseFeature(MetricsFeatures.REPORTING_SERVICE_FLUSH_PREFS_ON_UPLOAD_IN_BACKGROUND,
"Controls whether we immediately flush Local State after "
+ "uploading a UMA log while in background."),
Flag.baseFeature(MetricsFeatures.SUBPROCESS_METRICS_PROVIDER_LEAKY,
"Whether SubprocessMetricsProvider should be leaky, so that it can listen "
+ "to subprocesses exiting even after the MetricsService has been "
+ "destroyed."),
Flag.baseFeature(ContentFeatures.MAIN_THREAD_COMPOSITING_PRIORITY,
"When enabled runs the main thread at compositing priority."),
Flag.baseFeature(AwFeatures.WEBVIEW_UMA_UPLOAD_QUALITY_OF_SERVICE_SET_TO_DEFAULT,
"If enabled, the frequency to upload UMA is increased."),
Flag.baseFeature("CanvasColorCache"),
Flag.baseFeature(AwFeatures.WEBVIEW_RESTRICT_SENSITIVE_CONTENT,
"Controls whether access to sensitive web content should be restricted."),
Flag.baseFeature(BlinkFeatures.KEYBOARD_FOCUSABLE_SCROLLERS,
"When enabled, can focus on a scroller element using the keyboard."),
Flag.commandLine(AwSwitches.WEBVIEW_ENABLE_TRUST_TOKENS_COMPONENT,
"Enables downloading TrustTokenKeyCommitmentsComponent by the component"
+ " updater downloading service in nonembedded WebView."
+ " See https://crbug.com/1170468."),
Flag.baseFeature(BlinkFeatures.STYLUS_POINTER_ADJUSTMENT,
"When enabled, a hover icon is shown over editable HTML elements when"
+ " using a stylus and the rectangle to trigger stylus writing on"
+ " editable elements is expanded."),
Flag.baseFeature(BlinkFeatures.STYLUS_RICH_GESTURES,
"When enabled, stylus input can be used to draw rich gestures which "
+ "affect text in editable web content."),
Flag.baseFeature(AwFeatures.WEBVIEW_ZOOM_KEYBOARD_SHORTCUTS,
"Enables WebView to use zoom keyboard shortcuts on hardware keyboards."),
Flag.baseFeature(ContentFeatures.PRIVACY_SANDBOX_ADS_AP_IS_OVERRIDE,
"When enabled, the following ads APIs will be available: Attribution Reporting,"
+ "FLEDGE, Topics."),
Flag.baseFeature(BlinkFeatures.RENDER_BLOCKING_FONTS,
"When enabled, blocks rendering on font preloads to reduce CLS. "
+ "See go/critical-font-analysis"),
Flag.baseFeature(AwFeatures.WEBVIEW_SERVER_SIDE_SAMPLING,
"If enabled, the client side sampling for user metrics will be turned off."
+ " This has no effect if metrics reporting is disabled"),
Flag.baseFeature("SafeBrowsingOnUIThread"),
Flag.baseFeature(BlinkFeatures.ANDROID_EXTENDED_KEYBOARD_SHORTCUTS,
"Enables WebView to use the extended keyboard shortcuts added for Android U"),
Flag.baseFeature("LessChattyNetworkService"),
Flag.baseFeature(BlinkFeatures.AUTOFILL_DETECT_REMOVED_FORM_CONTROLS,
"Enables Autofill to detect if form controls are removed from the DOM"),
Flag.baseFeature(
NetFeatures.PARTITIONED_COOKIES, "Enables the Partitioned cookie attribute"),
Flag.baseFeature(NetFeatures.SUPPORT_PARTITIONED_BLOB_URL,
"Enables the new Blob URL implementation needed for third-party storage"
+ " partitioning"),
Flag.baseFeature(NetFeatures.THIRD_PARTY_STORAGE_PARTITIONING,
"Enables partitioning of third-party storage by top-level site. "
+ "Note: this is under active development and may result in unexpected "
+ "behavior. Please file bugs at https://bugs.chromium.org/p/chromium/issues/"
+ "entry?labels=StoragePartitioning-trial-bugs&components=Blink%3EStorage."),
Flag.baseFeature(
NetFeatures.ASYNC_QUIC_SESSION, "Enables asynchronous QUIC session creation"),
Flag.baseFeature(BaseFeatures.CRASH_BROWSER_ON_CHILD_MISMATCH_IF_BROWSER_CHANGED,
"Causes the browser process to crash if child processes are failing to launch"
+ " due to a browser version change."),
Flag.baseFeature(BlinkFeatures.NEW_BASE_URL_INHERITANCE_BEHAVIOR,
"Enables the new base-url inheritance behavior for about:blank and "
+ "about:srcdoc pages loaded in a webview."),
Flag.baseFeature("MojoIpcz"),
Flag.baseFeature(TracingServiceFeatures.ENABLE_PERFETTO_SYSTEM_TRACING,
"When enabled, WebView exports trace events to the Android Perfetto service."
+ " This works only for Android Q+."),
Flag.baseFeature(AwFeatures.WEBVIEW_SAFE_BROWSING_SAFE_MODE,
"Enable doing a JNI call to check safe browsing safe mode status "
+ "before doing a safe browsing check."),
Flag.baseFeature(UiAndroidFeatures.CONVERT_TRACKPAD_EVENTS_TO_MOUSE,
"Enables converting trackpad click gestures to mouse events"
+ " in order for them to be interpreted similar to a desktop"
+ " experience (i.e. double-click to select word.)"),
Flag.baseFeature(NetworkServiceFeatures.ATTRIBUTION_REPORTING_CROSS_APP_WEB,
"Enable attribution reporting to cross the app/web barrier by letting "
+ "the WebView use OS-level attribution."),
Flag.baseFeature(BaseFeatures.THREAD_POOL_CAP,
"Reduces the thread pool cap to use less threads"),
Flag.baseFeature(BlinkFeatures.BEFOREUNLOAD_EVENT_CANCEL_BY_PREVENT_DEFAULT,
"Enables showing the cancel dialog by calling preventDefault() "
+ "on beforeunload event."),
Flag.baseFeature(ContentFeatures.QUEUE_NAVIGATIONS_WHILE_WAITING_FOR_COMMIT,
"If enabled, allows navigations to be queued when there is "
+ "an existing pending commit navigation in progress."),
Flag.baseFeature("NetworkServiceCookiesHighPriorityTaskRunner"),
// Add new commandline switches and features above. The final entry should have a
// trailing comma for cleaner diffs.
};
}