diff --git a/DEPS b/DEPS index e9ca3d12..9d8c45f 100644 --- a/DEPS +++ b/DEPS
@@ -312,7 +312,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': '6af0f1febeca72da6472c388d897e87cb897dbc4', + 'skia_revision': 'dec629b762ec426f9062f25157e9640de60d4d50', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. @@ -363,7 +363,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling freetype # and whatever else without interference from each other. - 'freetype_revision': 'dbdcd758895647028bbc56baf862a1cff07409ff', + 'freetype_revision': '9a2d6d97b2d8a5d22d02948b783df12b764afa2d', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling freetype # and whatever else without interference from each other. @@ -387,7 +387,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling chromium_variations # and whatever else without interference from each other. - 'chromium_variations_revision': '5d2512d77e06e5c6938a49192bbea2bed1618afe', + 'chromium_variations_revision': '7b0c418c18885973e5df7ff3523b911050bf6ae8', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling CrossBench # and whatever else without interference from each other. @@ -403,7 +403,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling devtools-frontend # and whatever else without interference from each other. - 'devtools_frontend_revision': '83ecf63b0b905fb835f38389a8130b4b19265387', + 'devtools_frontend_revision': '170f1b62ff2ddac12ee66724127335585acc8ece', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libprotobuf-mutator # and whatever else without interference from each other. @@ -427,7 +427,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'dawn_revision': 'e228605ee7bea07756b742941cfd3aec088311ec', + 'dawn_revision': 'cd07b9f4050952300ee34b15d84c30a70523e80c', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -831,7 +831,7 @@ 'src/clank': { 'url': Var('chrome_git') + '/clank/internal/apps.git' + '@' + - '22b403ffb0f1621c38960ae1cedd464b8efc700c', + '6d9a82dba7830e586b0c1e8c01847add8dd68240', 'condition': 'checkout_android and checkout_src_internal', }, @@ -986,7 +986,7 @@ 'packages': [ { 'package': 'chromium/third_party/androidx', - 'version': '2a4hYytl5lMs-Lc3njuI_cUsdvCGjVvNqCnZgo2hapYC', + 'version': 'w_WvxAtkTYqygcFc1DtLkvJlGU0WRsUg71SxSvIp-cEC', }, ], 'condition': 'checkout_android', @@ -1196,13 +1196,13 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '4eb81e6f13fbf6f9c550d895c7c3e6cfd19d34f7', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '6ba67afd6fb7718743af91b847ddf1907f3ee9a6', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), 'src/third_party/devtools-frontend-internal': { - 'url': Var('chrome_git') + '/devtools/devtools-internal.git' + '@' + 'a13168edbd77143405d485f3347663c320223f66', + 'url': Var('chrome_git') + '/devtools/devtools-internal.git' + '@' + 'cadbad6bc7fe48b083e0d25eb6feb06fa7a02d89', 'condition': 'checkout_src_internal', }, @@ -1713,7 +1713,7 @@ 'packages': [ { 'package': 'chromium/third_party/r8', - 'version': 'cRpPhFe0Ln8wX3pcqOs4cHobiYj7mMi6eVqchALlFUcC', + 'version': 'jiR3Cmr6zLjEDaMOALv35_EoVDJbl5Mdza1IRQLevjAC', }, ], 'condition': 'checkout_android', @@ -1818,7 +1818,7 @@ 'dep_type': 'cipd', }, - 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@931022b21e50cacab1d65546c96f9aa8242969f9', + 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@71b11532ed72adaec5d5e006d92ce741b71379a3', 'src/third_party/vulkan_memory_allocator': Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git' + '@' + '56300b29fbfcc693ee6609ddad3fdd5b7a449a21', @@ -1855,10 +1855,10 @@ Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + 'bc3c8bad295ae0ba7f0ddb18848df70f92a820c0', 'src/third_party/webgpu-cts/src': - Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + 'cb9d5903ea1dc93ad4fe3e67652e2f65026fc909', + Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '680c654441704480e9756124770dd683a32d13d1', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + 'dc43cb24bd8ee85d6a8224c5928ceaf90de729b6', + Var('webrtc_git') + '/src.git' + '@' + '0afde7614d1ce398f516f19a032ef94f4c9f1011', # Wuffs' canonical repository is at github.com/google/wuffs, but we use # Skia's mirror of Wuffs, the same as in upstream Skia's DEPS file. @@ -1981,7 +1981,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/help_app/app', - 'version': 'wbGp_p_wwG-C7jojM805vwDlBPYOE2nvQweXIDQ35RIC', + 'version': 'x7BPfckWI79FucQhmJSGRsfDXwWB9RV9_PupgXCwDx0C', }, ], 'condition': 'checkout_chromeos and checkout_src_internal', @@ -1992,7 +1992,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/media_app/app', - 'version': '1v0PtvRoteG6e8KEbq8laPb9klZ-eCfh-dbEgEPgXf0C', + 'version': 'D4B8fHXomFuQMqFsRWJNY0Gq2JxJIIaG5bGTfAfljIoC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal', @@ -2025,7 +2025,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/projector_app/app', - 'version': 'Xfsbd88OenRBWE4llWiL7oyZeQkJKb_b6IMlsn4jTfoC', + 'version': 'IXXWf2yr65AeFrCgymus2EDznDRtClBl8jVrOCB-lZUC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal', @@ -3942,7 +3942,7 @@ 'src/chrome/browser/platform_experience/win': { 'url': Var('chrome_git') + '/chrome/browser/platform_experience/win.git' + '@' + - '8d47eadc639188d06f1ece609096a8e06cb1aae0', + 'bb7b46198c60bc9af0b1b5b063396befa4dbe0a1', 'condition': 'checkout_src_internal', },
diff --git a/android_webview/browser/aw_browser_context.cc b/android_webview/browser/aw_browser_context.cc index c6a52ac..97f2e3c4 100644 --- a/android_webview/browser/aw_browser_context.cc +++ b/android_webview/browser/aw_browser_context.cc
@@ -261,7 +261,7 @@ // We only use the autocomplete feature of Autofill, which is controlled via // the manager_delegate. We don't use the rest of Autofill, which is why it is // hardcoded as disabled here. - // TODO(crbug.com/873740): The following also disables autocomplete. + // TODO(crbug.com/40589187): The following also disables autocomplete. // Investigate what the intended behavior is. registry->RegisterBooleanPref(autofill::prefs::kAutofillProfileEnabled, false);
diff --git a/android_webview/browser/aw_field_trials.cc b/android_webview/browser/aw_field_trials.cc index ed2af211..a5b8030 100644 --- a/android_webview/browser/aw_field_trials.cc +++ b/android_webview/browser/aw_field_trials.cc
@@ -145,10 +145,10 @@ // WebView. aw_feature_overrides.DisableFeature(::features::kWebOTP); - // TODO(https://crbug.com/1012899): WebXR is not yet supported on WebView. + // TODO(crbug.com/40652382): WebXR is not yet supported on WebView. aw_feature_overrides.DisableFeature(::features::kWebXr); - // TODO(https://crbug.com/1312827): Digital Goods API is not yet supported + // TODO(crbug.com/40831925): Digital Goods API is not yet supported // on WebView. aw_feature_overrides.DisableFeature(::features::kDigitalGoodsApi); @@ -170,7 +170,7 @@ // Disable dr-dc on webview. aw_feature_overrides.DisableFeature(::features::kEnableDrDc); - // TODO(crbug.com/1100993): Web Bluetooth is not yet supported on WebView. + // TODO(crbug.com/40703318): Web Bluetooth is not yet supported on WebView. aw_feature_overrides.DisableFeature(::features::kWebBluetooth); // TODO(crbug.com/933055): WebUSB is not yet supported on WebView.
diff --git a/android_webview/browser/aw_form_database_service_unittest.cc b/android_webview/browser/aw_form_database_service_unittest.cc index 318f027b..bc0266c 100644 --- a/android_webview/browser/aw_form_database_service_unittest.cc +++ b/android_webview/browser/aw_form_database_service_unittest.cc
@@ -48,7 +48,7 @@ std::unique_ptr<AwFormDatabaseService> service_; }; -// TODO(https://crbug.com/1472844): Fix flakes. +// TODO(crbug.com/40278752): Fix flakes. TEST_F(AwFormDatabaseServiceTest, DISABLED_HasAndClearFormData) { EXPECT_FALSE(service_->HasFormData()); std::vector<FormFieldData> fields;
diff --git a/android_webview/browser/aw_javascript_dialog_manager.cc b/android_webview/browser/aw_javascript_dialog_manager.cc index 89676a1..4a29a6f 100644 --- a/android_webview/browser/aw_javascript_dialog_manager.cc +++ b/android_webview/browser/aw_javascript_dialog_manager.cc
@@ -41,7 +41,7 @@ // origin of the "last committed URL" can be different due to a legacy app- // exposed setting, so such a change might be even more breaking. // - // TODO(crbug.com/1241925): Figure out if some kind of migration can be done + // TODO(crbug.com/40194877): Figure out if some kind of migration can be done // here, as this is one of several instances in which moving from URL to // origin would be desirable. //
diff --git a/android_webview/browser/aw_quota_manager_bridge.h b/android_webview/browser/aw_quota_manager_bridge.h index e29e8d45..19719ed 100644 --- a/android_webview/browser/aw_quota_manager_bridge.h +++ b/android_webview/browser/aw_quota_manager_bridge.h
@@ -28,7 +28,7 @@ class AwBrowserContext; -// TODO(crbug.com/1215208): Change the functions in this class to reference +// TODO(crbug.com/40184305): Change the functions in this class to reference // StorageKey instead of Origin. // // This object is owned by the native AwBrowserContext, and the Java peer is
diff --git a/android_webview/browser/cookie_manager.cc b/android_webview/browser/cookie_manager.cc index e9b34f5f..e2d1e40b 100644 --- a/android_webview/browser/cookie_manager.cc +++ b/android_webview/browser/cookie_manager.cc
@@ -560,7 +560,7 @@ base::OnceClosure complete) { net::CookieOptions options = net::CookieOptions::MakeAllInclusive(); - // TODO(crbug.com/1225444): Complete partitioned cookies implementation for + // TODO(crbug.com/40188414): Complete partitioned cookies implementation for // WebView. The current implementation is a temporary fix for // crbug.com/1442333 to let the app access its 1p partitioned cookie. if (GetMojoCookieManager()) {
diff --git a/android_webview/browser/gfx/display_webview.cc b/android_webview/browser/gfx/display_webview.cc index 9ff76b37..f3ad0e09 100644 --- a/android_webview/browser/gfx/display_webview.cc +++ b/android_webview/browser/gfx/display_webview.cc
@@ -26,7 +26,7 @@ std::unique_ptr<viz::OverlayProcessorInterface> overlay_processor; OverlayProcessorWebView* overlay_processor_webview_raw = nullptr; if (features::IsAndroidSurfaceControlEnabled()) { - // TODO(crbug.com/1039876): This is to help triage bugs on pre-release + // TODO(crbug.com/40113791): This is to help triage bugs on pre-release // android. Remove this log once feature is controlled only by feature flag // or launched. LOG(WARNING) << "WebView overlays are enabled!";
diff --git a/android_webview/browser/gfx/output_surface_provider_webview.cc b/android_webview/browser/gfx/output_surface_provider_webview.cc index 69c20dae..ae318ef 100644 --- a/android_webview/browser/gfx/output_surface_provider_webview.cc +++ b/android_webview/browser/gfx/output_surface_provider_webview.cc
@@ -43,7 +43,7 @@ std::pair<scoped_refptr<gl::GLSurface>, scoped_refptr<gl::GLContext>>; GLSurfaceContextPair GetRealContextForVulkan() { - // TODO(crbug.com/1143279): Remove all of this after code no longer expects + // TODO(crbug.com/40155015): Remove all of this after code no longer expects // GL to be present (eg for getting capabilities or calling glGetError). static base::NoDestructor<base::WeakPtr<gl::GLSurface>> cached_surface; static base::NoDestructor<base::WeakPtr<gl::GLContext>> cached_context; @@ -89,7 +89,7 @@ crash_keys::kContextLossReason); reason_key.Set(base::NumberToString(static_cast<int>(context_lost_reason))); - // TODO(https://crbug.com/1112841): Debugging contexts losts. WebView will + // TODO(crbug.com/40143203): Debugging contexts losts. WebView will // intentionally crash in HardwareRenderer::OnViz::DisplayOutputSurface // that will happen after this callback. That crash happens on viz thread and // doesn't have any useful information. Crash here on RenderThread to
diff --git a/android_webview/browser/gfx/viz_compositor_thread_runner_webview.cc b/android_webview/browser/gfx/viz_compositor_thread_runner_webview.cc index 947539e..69be0449 100644 --- a/android_webview/browser/gfx/viz_compositor_thread_runner_webview.cc +++ b/android_webview/browser/gfx/viz_compositor_thread_runner_webview.cc
@@ -65,8 +65,8 @@ // Android doesn't support software compositing, but in some cases // unaccelerated canvas can use SharedBitmaps as resource so we create // SharedBitmapManager anyway. - // TODO(1056184): Stop using SharedBitmapManager after fixing fallback to - // SharedBitmap. + // TODO(crbug.com/40120216): Stop using SharedBitmapManager after fixing + // fallback to SharedBitmap. server_shared_bitmap_manager_ = std::make_unique<viz::ServerSharedBitmapManager>();
diff --git a/android_webview/browser/metrics/aw_component_metrics_provider_delegate.cc b/android_webview/browser/metrics/aw_component_metrics_provider_delegate.cc index f3f7743..b3798e9 100644 --- a/android_webview/browser/metrics/aw_component_metrics_provider_delegate.cc +++ b/android_webview/browser/metrics/aw_component_metrics_provider_delegate.cc
@@ -25,7 +25,7 @@ // The returned ComponentInfo have component's id and version as this is the // only info WebView keeps about components. -// TODO(https://crbug.com/1228535): record the component's Omaha fingerprint. +// TODO(crbug.com/40777796): record the component's Omaha fingerprint. std::vector<ComponentInfo> AwComponentMetricsProviderDelegate::GetComponents() { return component_updater::ComponentsInfoHolder::GetInstance() ->GetComponents();
diff --git a/android_webview/browser/safe_browsing/aw_ping_manager_factory.cc b/android_webview/browser/safe_browsing/aw_ping_manager_factory.cc index bd40ecb8..cbf4df9 100644 --- a/android_webview/browser/safe_browsing/aw_ping_manager_factory.cc +++ b/android_webview/browser/safe_browsing/aw_ping_manager_factory.cc
@@ -70,7 +70,7 @@ if (testing_url_loader_factory_) { return testing_url_loader_factory_; } - // TODO(crbug.com/1293957): Support separate SafeBrowsingNetworkContexts per + // TODO(crbug.com/40820267): Support separate SafeBrowsingNetworkContexts per // browser context instead of having the same one all contexts. If done // similar to the chrome/ implementation, GetURLLoaderFactory will take in a // browser context as a parameter.
diff --git a/android_webview/common/aw_features.cc b/android_webview/common/aw_features.cc index 8ac02a8..16b22fe 100644 --- a/android_webview/common/aw_features.cc +++ b/android_webview/common/aw_features.cc
@@ -187,7 +187,7 @@ base::FEATURE_ENABLED_BY_DEFAULT); // Control the default behaviour for the XRequestedWith header. -// TODO(crbug.com/1493963): enable by default after M120 branch point. +// TODO(crbug.com/40286009): enable by default after M120 branch point. BASE_FEATURE(kWebViewXRequestedWithHeaderControl, "WebViewXRequestedWithHeaderControl", base::FEATURE_DISABLED_BY_DEFAULT);
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java index b62c950b..95d396c 100644 --- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromium.java
@@ -3385,7 +3385,7 @@ } } - // TODO(crbug.com/1479496): Add override annotation when SDK includes this method. + // TODO(crbug.com/40280893): Add override annotation when SDK includes this method. public PointerIcon onResolvePointerIcon(MotionEvent event, int pointerIndex) { return mAwContents.onResolvePointerIcon(event, pointerIndex); }
diff --git a/android_webview/java/src/org/chromium/android_webview/variations/FastVariationsSeedSafeModeAction.java b/android_webview/java/src/org/chromium/android_webview/variations/FastVariationsSeedSafeModeAction.java index 7685584..dfd12db3 100644 --- a/android_webview/java/src/org/chromium/android_webview/variations/FastVariationsSeedSafeModeAction.java +++ b/android_webview/java/src/org/chromium/android_webview/variations/FastVariationsSeedSafeModeAction.java
@@ -126,7 +126,7 @@ .querySafeModeVariationsSeedContentProvider(); } - // TODO(crbug.com/1422878): Update this to include timeout capability. + // TODO(crbug.com/40259816): Update this to include timeout capability. private static class ContentProviderQuery { private static final String URI_SUFFIX = ".SafeModeVariationsSeedContentProvider"; private static final String URI_PATH = VariationsFastFetchModeUtils.URI_PATH;
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/JsJavaInteractionTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/JsJavaInteractionTest.java index 73481c5..4228f78 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/JsJavaInteractionTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/JsJavaInteractionTest.java
@@ -278,7 +278,8 @@ @SmallTest @Feature({"AndroidWebView", "JsJavaInteraction"}) public void testAddWebMessageListenerAffectsRendererInitiatedNavigation() throws Throwable { - // TODO(crbug.com/969842): We'd either replace the following html file with a file contains + // TODO(crbug.com/40630430): We'd either replace the following html file with a file + // contains // no JavaScript code or add a test to ensure that evaluateJavascript() won't // over-trigger DidClearWindowObject. loadUrlFromPath(POST_MESSAGE_WITH_PORTS_HTML);
diff --git a/android_webview/js_sandbox/service/js_sandbox_isolate.cc b/android_webview/js_sandbox/service/js_sandbox_isolate.cc index 1e95999..bfc86c8 100644 --- a/android_webview/js_sandbox/service/js_sandbox_isolate.cc +++ b/android_webview/js_sandbox/service/js_sandbox_isolate.cc
@@ -64,8 +64,8 @@ namespace { -// TODO(crbug.com/1297672): This is what shows up as filename in errors. Revisit -// this once error handling is in place. +// TODO(crbug.com/40215244): This is what shows up as filename in errors. +// Revisit this once error handling is in place. constexpr std::string_view resource_name = "<expression>"; constexpr jlong kUnknownAssetFileDescriptorLength = -1; constexpr int64_t kDefaultChunkSize = 1 << 16;
diff --git a/android_webview/nonembedded/component_updater/aw_component_installer_policy.cc b/android_webview/nonembedded/component_updater/aw_component_installer_policy.cc index 230dd7e..fb03e4e 100644 --- a/android_webview/nonembedded/component_updater/aw_component_installer_policy.cc +++ b/android_webview/nonembedded/component_updater/aw_component_installer_policy.cc
@@ -108,7 +108,7 @@ GetVersionDirName(highest_sequence_number + 1, version.GetString()); const base::FilePath temp_copy_path = temp_dir.GetPath().AppendASCII(new_sequence_version_string); - // TODO(crbug.com/1176335) use file links to optimize copies number. + // TODO(crbug.com/40747851) use file links to optimize copies number. if (!base::CopyDirectory(install_dir, temp_copy_path, /* recursive= */ true)) { LOG(ERROR) << "Error copying from " << install_dir << " to "
diff --git a/android_webview/nonembedded/component_updater/aw_component_update_service_test.cc b/android_webview/nonembedded/component_updater/aw_component_update_service_test.cc index d6f0e6c..612a774 100644 --- a/android_webview/nonembedded/component_updater/aw_component_update_service_test.cc +++ b/android_webview/nonembedded/component_updater/aw_component_update_service_test.cc
@@ -160,7 +160,7 @@ }; // A NetworkFetcher that fakes downloading a CRX file. -// TODO(crbug.com/1190310) use EmbeddedTestServer instead of Mocking the +// TODO(crbug.com/40755924) use EmbeddedTestServer instead of Mocking the // NetworkFetcher. class FakeCrxNetworkFetcher : public update_client::NetworkFetcher { public:
diff --git a/android_webview/nonembedded/component_updater/registration.cc b/android_webview/nonembedded/component_updater/registration.cc index 0bb8f98..25bd290 100644 --- a/android_webview/nonembedded/component_updater/registration.cc +++ b/android_webview/nonembedded/component_updater/registration.cc
@@ -89,7 +89,7 @@ if (base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kWebViewEnableTrustTokensComponent)) { - // TODO(https://crbug.com/1170468): decide if this component is still + // TODO(crbug.com/40165770): decide if this component is still // needed. Note: We're using a command-line switch because finch features // isn't supported in nonembedded WebView. // After setting this flag, it may be necessary to force restart the
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/ComponentsInfoLoader.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/ComponentsInfoLoader.java index 12804c9..5af1f36 100644 --- a/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/ComponentsInfoLoader.java +++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/ComponentsInfoLoader.java
@@ -40,7 +40,7 @@ for (File componentDirectory : componentDirectories) { String[] componentVersions = componentDirectory.list(); - // TODO(https://crbug.com/1231543): Handle multiple versions by sorting semantically and + // TODO(crbug.com/40779741): Handle multiple versions by sorting semantically and // picking out the highest version String version = (componentVersions == null || componentVersions.length == 0)
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/CrashBugUrlFactory.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/CrashBugUrlFactory.java index 570bd3b..b1bbd06 100644 --- a/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/CrashBugUrlFactory.java +++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/devui/util/CrashBugUrlFactory.java
@@ -21,7 +21,7 @@ /** Factory class to build bug URI for a crash report. */ public class CrashBugUrlFactory { // There is a limit on the length of this query string, see https://crbug.com/1015923 - // TODO(https://crbug.com/1052295): add assert statement to check the length of this String. + // TODO(crbug.com/40674230): add assert statement to check the length of this String. @VisibleForTesting public static final String CRASH_REPORT_TEMPLATE = """
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/AwComponentUpdateService.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/AwComponentUpdateService.java index 56dda7b7..491521b 100644 --- a/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/AwComponentUpdateService.java +++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/AwComponentUpdateService.java
@@ -94,7 +94,7 @@ ComponentUpdaterSafeModeUtils.executeSafeModeIfEnabled( new File(ComponentsProviderPathUtil.getComponentUpdateServiceDirectoryPath())); - // TODO(https://crbug.com/1221092): Stop native updates when onStopJob, onDestroy are + // TODO(crbug.com/40773291): Stop native updates when onStopJob, onDestroy are // called. setUnexpectedExit(false); @@ -157,7 +157,7 @@ setUnexpectedExit(true); mIsUpdating = true; final long startTime = SystemClock.uptimeMillis(); - // TODO(crbug.com/1171817) Once we can log UMA from native, remove the count parameter. + // TODO(crbug.com/40745317) Once we can log UMA from native, remove the count parameter. AwComponentUpdateServiceJni.get() .startComponentUpdateService( (count) -> {
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/WebViewApkApplication.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/WebViewApkApplication.java index 5aab656..4bcb585 100644 --- a/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/WebViewApkApplication.java +++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/WebViewApkApplication.java
@@ -103,7 +103,7 @@ PureJavaExceptionHandler.installHandler(AwPureJavaExceptionReporter::new); CustomAssertionHandler.installPreNativeHandler(AwPureJavaExceptionReporter::new); - // TODO(crbug.com/1182693): Do set up a native UMA recorder once we support recording + // TODO(crbug.com/40751605): Do set up a native UMA recorder once we support recording // metrics from native nonembedded code. UmaRecorderHolder.setUpNativeUmaRecorder(false);
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/ComponentsProviderService.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/ComponentsProviderService.java index c31c1a2..495fc2e5 100644 --- a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/ComponentsProviderService.java +++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/ComponentsProviderService.java
@@ -283,7 +283,7 @@ return; } - // TODO(crbug.com/1256948): schedule it as a periodic job. + // TODO(crbug.com/40796101): schedule it as a periodic job. final SharedPreferences sharedPreferences = ContextUtils.getApplicationContext() .getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE); @@ -312,7 +312,7 @@ } } - // TODO(crbug.com/1189126): move this to utils class + // TODO(crbug.com/40755263): move this to utils class @VisibleForTesting public static boolean isJobScheduled(JobScheduler scheduler, int jobId) { return scheduler.getPendingJob(jobId) != null;
diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/MetricsBridgeService.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/MetricsBridgeService.java index 4baac17..84445aa 100644 --- a/android_webview/nonembedded/java/src/org/chromium/android_webview/services/MetricsBridgeService.java +++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/services/MetricsBridgeService.java
@@ -169,7 +169,8 @@ public void recordMetrics(byte[] data) { if (Binder.getCallingUid() != Process.myUid()) { throw new SecurityException( - "recordMetrics() may only be called by non-embedded WebView processes"); + "recordMetrics() may only be called by non-embedded WebView" + + " processes"); } // If this is called within the same process, it will run on the caller thread, // so we will always punt this to thread pool. @@ -179,11 +180,12 @@ // embedded WebView connects to the service to retrieve and clear // the records. if (mRecordsList.size() >= MAX_HISTOGRAM_COUNT) { - // TODO(https://crbug.com/1088467) add a histogram to log the + // TODO(crbug.com/40695441) add a histogram to log the // number of dropped histograms. Log.w( TAG, - "retained records has reached the max capacity, dropping record"); + "retained records has reached the max capacity," + + " dropping record"); return; } try {
diff --git a/android_webview/nonembedded/webview_apk_process.cc b/android_webview/nonembedded/webview_apk_process.cc index 256ee9cd..44f82f3f 100644 --- a/android_webview/nonembedded/webview_apk_process.cc +++ b/android_webview/nonembedded/webview_apk_process.cc
@@ -35,7 +35,7 @@ // static // Must be called exactly once during the process startup. void WebViewApkProcess::Init() { - // TODO(crbug.com/1179303): Add check to assert this is only loaded by + // TODO(crbug.com/40749658): Add check to assert this is only loaded by // LibraryProcessType PROCESS_WEBVIEW_NONEMBEDDED. // This doesn't have to be thread safe, because it should only happen once on
diff --git a/android_webview/renderer/aw_content_renderer_client.cc b/android_webview/renderer/aw_content_renderer_client.cc index 0b85837..ecc29d9 100644 --- a/android_webview/renderer/aw_content_renderer_client.cc +++ b/android_webview/renderer/aw_content_renderer_client.cc
@@ -261,7 +261,7 @@ const std::string& interface_name, mojo::ScopedMessagePipeHandle interface_pipe) { // A dirty hack to make SpellCheckHost requests work on WebView. - // TODO(crbug.com/806394): Use a WebView-specific service for SpellCheckHost + // TODO(crbug.com/40560165): Use a WebView-specific service for SpellCheckHost // and SafeBrowsing, instead of |content_browser|. RenderThread::Get()->BindHostReceiver( mojo::GenericPendingReceiver(interface_name, std::move(interface_pipe)));
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index d580a6e9..6525a32 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -79,6 +79,8 @@ "accelerators/shortcut_input_handler.h", "accelerators/spoken_feedback_toggler.cc", "accelerators/spoken_feedback_toggler.h", + "accelerators/suspend_state_machine.cc", + "accelerators/suspend_state_machine.h", "accelerators/tablet_volume_controller.cc", "accelerators/tablet_volume_controller.h", "accelerometer/accel_gyro_samples_observer.cc", @@ -3409,6 +3411,7 @@ "accelerators/rapid_key_sequence_recorder_unittest.cc", "accelerators/shortcut_input_handler_unittest.cc", "accelerators/spoken_feedback_toggler_unittest.cc", + "accelerators/suspend_state_machine_unittest.cc", "accelerometer/accel_gyro_samples_observer_unittest.cc", "accelerometer/accelerometer_provider_mojo_unittest.cc", "accessibility/accessibility_controller_unittest.cc",
diff --git a/ash/accelerators/accelerator_controller_impl.cc b/ash/accelerators/accelerator_controller_impl.cc index ddb20fb0..bdee1bac 100644 --- a/ash/accelerators/accelerator_controller_impl.cc +++ b/ash/accelerators/accelerator_controller_impl.cc
@@ -14,6 +14,7 @@ #include "ash/accelerators/accelerator_notifications.h" #include "ash/accelerators/accelerator_shift_disable_capslock_state_machine.h" #include "ash/accelerators/debug_commands.h" +#include "ash/accelerators/suspend_state_machine.h" #include "ash/accessibility/accessibility_controller.h" #include "ash/constants/ash_features.h" #include "ash/constants/devicetype.h" @@ -403,6 +404,8 @@ shift_disable_state_machine_( std::make_unique<AcceleratorShiftDisableCapslockStateMachine>( ui::OzonePlatform::GetInstance()->GetInputController())), + suspend_state_machine_(std::make_unique<SuspendStateMachine>( + ui::OzonePlatform::GetInstance()->GetInputController())), accelerator_configuration_(config), output_volume_metric_delay_timer_( FROM_HERE, @@ -444,6 +447,11 @@ shift_disable_state_machine_.get(), ui::EventTarget::Priority::kAccessibility); } + if (features::IsSuspendStateMachineEnabled()) { + aura::Env::GetInstance()->AddPreTargetHandler( + suspend_state_machine_.get(), + ui::EventTarget::Priority::kAccessibility); + } } AcceleratorControllerImpl::~AcceleratorControllerImpl() { @@ -470,6 +478,10 @@ aura::Env::GetInstance()->RemovePreTargetHandler( shift_disable_state_machine_.get()); } + if (features::IsSuspendStateMachineEnabled()) { + aura::Env::GetInstance()->RemovePreTargetHandler( + suspend_state_machine_.get()); + } } void AcceleratorControllerImpl::InputMethodChanged(InputMethodManager* manager, @@ -581,6 +593,7 @@ launcher_state_machine_->OnEvent(&key_event); capslock_state_machine_->OnEvent(&key_event); shift_disable_state_machine_->OnEvent(&key_event); + suspend_state_machine_->OnEvent(&key_event); } bool AcceleratorControllerImpl::IsPreferred( @@ -1327,7 +1340,11 @@ break; case AcceleratorAction::kSuspend: base::RecordAction(UserMetricsAction("Accel_Suspend")); - accelerators::Suspend(); + if (!features::IsSuspendStateMachineEnabled()) { + accelerators::Suspend(); + } else { + suspend_state_machine_->StartObservingToTriggerSuspend(accelerator); + } break; case AcceleratorAction::kSwapPrimaryDisplay: base::RecordAction(UserMetricsAction("Accel_Swap_Primary_Display"));
diff --git a/ash/accelerators/accelerator_controller_impl.h b/ash/accelerators/accelerator_controller_impl.h index 7f92f48..1c67343 100644 --- a/ash/accelerators/accelerator_controller_impl.h +++ b/ash/accelerators/accelerator_controller_impl.h
@@ -20,6 +20,7 @@ #include "ash/accelerators/accelerator_table.h" #include "ash/accelerators/ash_accelerator_configuration.h" #include "ash/accelerators/exit_warning_handler.h" +#include "ash/accelerators/suspend_state_machine.h" #include "ash/accelerators/tablet_volume_controller.h" #include "ash/accessibility/accessibility_controller.h" #include "ash/accessibility/ui/accessibility_confirmation_dialog.h" @@ -247,6 +248,7 @@ std::unique_ptr<AcceleratorCapslockStateMachine> capslock_state_machine_; std::unique_ptr<AcceleratorShiftDisableCapslockStateMachine> shift_disable_state_machine_; + std::unique_ptr<SuspendStateMachine> suspend_state_machine_; // Manages all accelerator mappings. raw_ptr<AshAcceleratorConfiguration> accelerator_configuration_;
diff --git a/ash/accelerators/suspend_state_machine.cc b/ash/accelerators/suspend_state_machine.cc new file mode 100644 index 0000000..b0da3aee --- /dev/null +++ b/ash/accelerators/suspend_state_machine.cc
@@ -0,0 +1,84 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/accelerators/suspend_state_machine.h" + +#include "ash/accelerators/accelerator_commands.h" +#include "base/containers/fixed_flat_set.h" +#include "base/metrics/histogram_functions.h" +#include "ui/base/accelerators/accelerator.h" +#include "ui/events/event.h" +#include "ui/events/keycodes/keyboard_code_conversion.h" +#include "ui/events/keycodes/keyboard_codes_posix.h" +#include "ui/events/types/event_type.h" +#include "ui/ozone/public/input_controller.h" + +namespace ash { + +namespace { + +using SuspendStateMachineEvent = SuspendStateMachine::SuspendStateMachineEvent; + +void RecordSuspendStateMachineEvent(SuspendStateMachineEvent event) { + base::UmaHistogramEnumeration("ChromeOS.Inputs.SuspendStateMachine", event); +} + +} // namespace + +SuspendStateMachine::SuspendStateMachine(ui::InputController* input_controller) + : input_controller_(input_controller) {} + +SuspendStateMachine::~SuspendStateMachine() = default; + +void SuspendStateMachine::StartObservingToTriggerSuspend( + const ui::Accelerator& accelerator) { + RecordSuspendStateMachineEvent(SuspendStateMachineEvent::kTriggered); + trigger_accelerator_ = accelerator; +} + +void SuspendStateMachine::CancelSuspend() { + RecordSuspendStateMachineEvent(SuspendStateMachineEvent::kCancelled); + trigger_accelerator_.reset(); +} + +void SuspendStateMachine::OnKeyEvent(ui::KeyEvent* event) { + if (!trigger_accelerator_) { + return; + } + + // Ignore all repeats. + if (event->is_repeat()) { + return; + } + + // If any key is pressed, the suspend trigger should be cancelled. + if (event->type() == ui::ET_KEY_PRESSED) { + CancelSuspend(); + return; + } + DCHECK_EQ(ui::ET_KEY_RELEASED, event->type()); + + // Either the key code of the accelerator must match OR the release key must + // have modifiers that match in the accelerator. + const bool key_codes_match = + trigger_accelerator_->key_code() == event->key_code(); + const bool modifier_flags_match = + (ui::ModifierDomKeyToEventFlag(event->GetDomKey()) & + trigger_accelerator_->modifiers()) != 0; + if (!key_codes_match && !modifier_flags_match) { + CancelSuspend(); + return; + } + + // Only trigger suspend if no keys are currently being held down. + if (input_controller_->AreAnyKeysPressed()) { + return; + } + + RecordSuspendStateMachineEvent(SuspendStateMachineEvent::kSuspended); + trigger_accelerator_.reset(); + accelerators::Suspend(); +} + +} // namespace ash
diff --git a/ash/accelerators/suspend_state_machine.h b/ash/accelerators/suspend_state_machine.h new file mode 100644 index 0000000..687a5e3 --- /dev/null +++ b/ash/accelerators/suspend_state_machine.h
@@ -0,0 +1,52 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef ASH_ACCELERATORS_SUSPEND_STATE_MACHINE_H_ +#define ASH_ACCELERATORS_SUSPEND_STATE_MACHINE_H_ + +#include "ash/ash_export.h" +#include "ui/base/accelerators/accelerator.h" +#include "ui/events/event_handler.h" + +namespace ui { +class InputController; +} + +namespace ash { + +// Tracks when all keys are released for a suspend accelerator and then triggers +// a suspend DBUS call to power_manager. This prevents the key releases from the +// accelerator from waking up the system instantly. +class ASH_EXPORT SuspendStateMachine : public ui::EventHandler { + public: + // This enum is used for metrics, do not reorder entries. + enum class SuspendStateMachineEvent { + kTriggered, + kCancelled, + kSuspended, + kMaxValue = kSuspended + }; + + explicit SuspendStateMachine(ui::InputController* input_controller); + SuspendStateMachine(const SuspendStateMachine&) = delete; + SuspendStateMachine& operator=(const SuspendStateMachine&) = delete; + ~SuspendStateMachine() override; + + // Initializes the state machine to start observing for when all keys are + // released to trigger DBUS call to start suspend. + void StartObservingToTriggerSuspend(const ui::Accelerator& accelerator); + + // ui::EventHandler: + void OnKeyEvent(ui::KeyEvent* event) override; + + private: + void CancelSuspend(); + + std::optional<ui::Accelerator> trigger_accelerator_; + raw_ptr<ui::InputController> input_controller_; +}; + +} // namespace ash + +#endif // ASH_ACCELERATORS_SUSPEND_STATE_MACHINE_H_
diff --git a/ash/accelerators/suspend_state_machine_unittest.cc b/ash/accelerators/suspend_state_machine_unittest.cc new file mode 100644 index 0000000..b7b746e --- /dev/null +++ b/ash/accelerators/suspend_state_machine_unittest.cc
@@ -0,0 +1,400 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/accelerators/suspend_state_machine.h" + +#include "ash/test/ash_test_base.h" +#include "base/test/metrics/histogram_tester.h" +#include "base/time/time.h" +#include "chromeos/dbus/power/fake_power_manager_client.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "ui/base/accelerators/accelerator.h" +#include "ui/events/base_event_utils.h" +#include "ui/events/devices/stylus_state.h" +#include "ui/events/event_constants.h" +#include "ui/events/keycodes/dom/dom_code.h" +#include "ui/events/keycodes/dom/dom_key.h" +#include "ui/events/keycodes/keyboard_codes_posix.h" +#include "ui/events/types/event_type.h" +#include "ui/ozone/public/input_controller.h" + +namespace ash::accelerators { + +namespace { + +class MockInputController : public ui::InputController { + public: + MOCK_METHOD(bool, AreAnyKeysPressed, (), (override)); + + private: + bool HasMouse() override { return false; } + bool HasPointingStick() override { return false; } + bool HasTouchpad() override { return false; } + bool HasHapticTouchpad() override { return false; } + bool IsCapsLockEnabled() override { return false; } + void SetCapsLockEnabled(bool enabled) override {} + void SetNumLockEnabled(bool enabled) override {} + bool IsAutoRepeatEnabled() override { return true; } + void SetAutoRepeatEnabled(bool enabled) override {} + void SetAutoRepeatRate(const base::TimeDelta& delay, + const base::TimeDelta& interval) override {} + void GetAutoRepeatRate(base::TimeDelta* delay, + base::TimeDelta* interval) override {} + void SetCurrentLayoutByName( + const std::string& layout_name, + base::OnceCallback<void(bool)> callback) override {} + void SetKeyboardKeyBitsMapping( + base::flat_map<int, std::vector<uint64_t>> key_bits_mapping) override {} + std::vector<uint64_t> GetKeyboardKeyBits(int id) override { + return std::vector<uint64_t>(); + } + void SetTouchEventLoggingEnabled(bool enabled) override { + NOTIMPLEMENTED_LOG_ONCE(); + } + void SuspendMouseAcceleration() override {} + void EndMouseAccelerationSuspension() override {} + void SetThreeFingerClick(bool enabled) override {} + void SetGamepadKeyBitsMapping( + base::flat_map<int, std::vector<uint64_t>> key_bits_mapping) override {} + std::vector<uint64_t> GetGamepadKeyBits(int id) override { + return std::vector<uint64_t>(); + } + void SetTapToClickPaused(bool state) override {} + void GetTouchDeviceStatus(GetTouchDeviceStatusReply reply) override { + std::move(reply).Run(std::string()); + } + void GetTouchEventLog(const base::FilePath& out_dir, + GetTouchEventLogReply reply) override { + std::move(reply).Run(std::vector<base::FilePath>()); + } + void DescribeForLog(DescribeForLogReply reply) const override { + std::move(reply).Run(std::string()); + } + void SetInternalTouchpadEnabled(bool enabled) override {} + bool IsInternalTouchpadEnabled() const override { return false; } + void SetTouchscreensEnabled(bool enabled) override {} + void GetStylusSwitchState(GetStylusSwitchStateReply reply) override { + std::move(reply).Run(ui::StylusState::REMOVED); + } + void SetInternalKeyboardFilter( + bool enable_filter, + std::vector<ui::DomCode> allowed_keys) override {} + void GetGesturePropertiesService( + mojo::PendingReceiver<ui::ozone::mojom::GesturePropertiesService> + receiver) override {} + void PlayVibrationEffect(int id, + uint8_t amplitude, + uint16_t duration_millis) override {} + void StopVibration(int id) override {} + void PlayHapticTouchpadEffect( + ui::HapticTouchpadEffect effect_type, + ui::HapticTouchpadEffectStrength strength) override {} + void SetHapticTouchpadEffectForNextButtonRelease( + ui::HapticTouchpadEffect effect_type, + ui::HapticTouchpadEffectStrength strength) override {} + void SetTouchpadSensitivity(std::optional<int> device_id, + int value) override {} + void SetTouchpadScrollSensitivity(std::optional<int> device_id, + int value) override {} + void SetTouchpadHapticFeedback(std::optional<int> device_id, + bool enabled) override {} + void SetTouchpadHapticClickSensitivity(std::optional<int> device_id, + int value) override {} + void SetTapToClick(std::optional<int> device_id, bool enabled) override {} + void SetTapDragging(std::optional<int> device_id, bool enabled) override {} + void SetNaturalScroll(std::optional<int> device_id, bool enabled) override {} + void SetMouseSensitivity(std::optional<int> device_id, int value) override {} + void SetMouseScrollSensitivity(std::optional<int> device_id, + int value) override {} + void SetMouseReverseScroll(std::optional<int> device_id, + bool enabled) override {} + void SetMouseAcceleration(std::optional<int> device_id, + bool enabled) override {} + void SetMouseScrollAcceleration(std::optional<int> device_id, + bool enabled) override {} + void SetPointingStickSensitivity(std::optional<int> device_id, + int value) override {} + void SetPointingStickAcceleration(std::optional<int> device_id, + bool enabled) override {} + void SetTouchpadAcceleration(std::optional<int> device_id, + bool enabled) override {} + void SetTouchpadScrollAcceleration(std::optional<int> device_id, + bool enabled) override {} + void SetPrimaryButtonRight(std::optional<int> device_id, + bool right) override {} + void SetPointingStickPrimaryButtonRight(std::optional<int> device_id, + bool right) override {} + void BlockModifiersOnDevices(std::vector<int> device_ids) override {} + bool AreInputDevicesEnabled() const override { return true; } + std::unique_ptr<ui::ScopedDisableInputDevices> DisableInputDevices() + override { + return nullptr; + } +}; + +// Key representation in test cases. +struct TestKeyEvent { + ui::EventType type; + ui::DomCode code; + ui::DomKey key; + ui::KeyboardCode keycode; + ui::EventFlags flags = ui::EF_NONE; + + std::string ToString() const; +}; + +// Factory template of TestKeyEvents just to reduce a lot of code/data +// duplication. +template <ui::DomCode code, + ui::DomKey::Base key, + ui::KeyboardCode keycode, + ui::EventFlags modifier_flag = ui::EF_NONE, + ui::DomKey::Base shifted_key = key> +struct TestKey { + // Returns press key event. + static constexpr TestKeyEvent Pressed(ui::EventFlags flags = ui::EF_NONE) { + return {ui::ET_KEY_PRESSED, code, + (flags & ui::EF_SHIFT_DOWN) ? shifted_key : key, keycode, + flags | modifier_flag}; + } + + // Returns release key event. + static constexpr TestKeyEvent Released(ui::EventFlags flags = ui::EF_NONE) { + // Note: modifier flag should not be present on release events. + return {ui::ET_KEY_RELEASED, code, + (flags & ui::EF_SHIFT_DOWN) ? shifted_key : key, keycode, flags}; + } +}; + +// Short cut of TestKey construction for Character keys. +template <ui::DomCode code, + char key, + ui::KeyboardCode keycode, + char shifted_key = key> +using TestCharKey = TestKey<code, + ui::DomKey::Constant<key>::Character, + keycode, + ui::EF_NONE, + ui::DomKey::Constant<shifted_key>::Character>; + +// Modifier keys. +using KeyLShift = TestKey<ui::DomCode::SHIFT_LEFT, + ui::DomKey::SHIFT, + ui::VKEY_SHIFT, + ui::EF_SHIFT_DOWN>; +using KeyRShift = TestKey<ui::DomCode::SHIFT_RIGHT, + ui::DomKey::SHIFT, + ui::VKEY_SHIFT, + ui::EF_SHIFT_DOWN>; +using KeyLMeta = TestKey<ui::DomCode::META_LEFT, + ui::DomKey::META, + ui::VKEY_LWIN, + ui::EF_COMMAND_DOWN>; +using KeyRMeta = TestKey<ui::DomCode::META_RIGHT, + ui::DomKey::META, + ui::VKEY_RWIN, + ui::EF_COMMAND_DOWN>; +using KeyLControl = TestKey<ui::DomCode::CONTROL_LEFT, + ui::DomKey::CONTROL, + ui::VKEY_CONTROL, + ui::EF_CONTROL_DOWN>; +using KeyRControl = TestKey<ui::DomCode::CONTROL_RIGHT, + ui::DomKey::CONTROL, + ui::VKEY_CONTROL, + ui::EF_CONTROL_DOWN>; +using KeyLAlt = TestKey<ui::DomCode::ALT_LEFT, + ui::DomKey::ALT, + ui::VKEY_MENU, + ui::EF_ALT_DOWN>; +using KeyRAlt = TestKey<ui::DomCode::ALT_RIGHT, + ui::DomKey::ALT, + ui::VKEY_MENU, + ui::EF_ALT_DOWN>; + +// Character keys. Shift chars are based on US layout. +using KeyA = TestCharKey<ui::DomCode::US_A, 'a', ui::VKEY_A, 'A'>; +using KeyB = TestCharKey<ui::DomCode::US_B, 'b', ui::VKEY_B, 'B'>; +using KeyC = TestCharKey<ui::DomCode::US_C, 'c', ui::VKEY_C, 'C'>; + +const bool kKeysPressed = true; +const bool kNoKeysPressed = false; + +using EventTypeVariant = std::variant<TestKeyEvent, bool>; +using SuspendStateMachineEvent = SuspendStateMachine::SuspendStateMachineEvent; + +} // namespace + +class SuspendStateMachineTest + : public AshTestBase, + public testing::WithParamInterface< + std::tuple<ui::Accelerator, std::vector<EventTypeVariant>>> { + public: + void SetUp() override { + AshTestBase::SetUp(); + + std::tie(trigger_accelerator_, events_) = GetParam(); + input_controller_ = std::make_unique<MockInputController>(); + suspend_state_machine_ = + std::make_unique<SuspendStateMachine>(input_controller_.get()); + } + + void TearDown() override { + suspend_state_machine_.reset(); + AshTestBase::TearDown(); + } + + protected: + std::unique_ptr<SuspendStateMachine> suspend_state_machine_; + std::unique_ptr<MockInputController> input_controller_; + std::vector<EventTypeVariant> events_; + ui::Accelerator trigger_accelerator_; +}; + +class SuccessfulSuspendStateMachineTest : public SuspendStateMachineTest {}; + +INSTANTIATE_TEST_SUITE_P( + All, + SuccessfulSuspendStateMachineTest, + testing::ValuesIn( + std::vector<std::tuple<ui::Accelerator, std::vector<EventTypeVariant>>>{ + // Standard activations of the suspend. + {{ui::VKEY_A, ui::EF_COMMAND_DOWN}, + {kKeysPressed, KeyLMeta::Released(), kNoKeysPressed, + KeyA::Released()}}, + {{ui::VKEY_B, ui::EF_COMMAND_DOWN}, + {kKeysPressed, KeyLMeta::Released(), kNoKeysPressed, + KeyB::Released()}}, + {{ui::VKEY_C, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN}, + {kKeysPressed, KeyLControl::Released(), KeyLAlt::Released(), + kNoKeysPressed, KeyC::Released()}}, + + // Reversed ordering of releases, checks that ordering does not + // matter. + {{ui::VKEY_A, ui::EF_COMMAND_DOWN}, + {kKeysPressed, KeyA::Released(), kNoKeysPressed, + KeyLMeta::Released()}}, + {{ui::VKEY_B, ui::EF_COMMAND_DOWN}, + {kKeysPressed, KeyB::Released(), kNoKeysPressed, + KeyLMeta::Released()}}, + {{ui::VKEY_C, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN}, + {kKeysPressed, KeyC::Released(), KeyLAlt::Released(), + kNoKeysPressed, KeyLControl::Released()}}, + + // Left vs right modifiers does not matter. + {{ui::VKEY_A, ui::EF_COMMAND_DOWN}, + {kKeysPressed, KeyRMeta::Released(), KeyLMeta::Released(), + kNoKeysPressed, KeyA::Released()}}, + {{ui::VKEY_A, ui::EF_ALT_DOWN}, + {kKeysPressed, KeyRAlt::Released(), KeyLAlt::Released(), + kNoKeysPressed, KeyA::Released()}}, + {{ui::VKEY_A, ui::EF_CONTROL_DOWN}, + {kKeysPressed, KeyLControl::Released(), KeyRControl::Released(), + kNoKeysPressed, KeyA::Released()}}, + {{ui::VKEY_A, ui::EF_SHIFT_DOWN}, + {kKeysPressed, KeyLShift::Released(), KeyRShift::Released(), + kNoKeysPressed, KeyA::Released()}}, + + // All modifiers in one accelerator. + {{ui::VKEY_A, ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN | + ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN}, + {kKeysPressed, KeyLControl::Released(), KeyLShift::Released(), + KeyLMeta::Released(), KeyRAlt::Released(), kNoKeysPressed, + KeyA::Released()}}, + + // No modifiers in accelerator. + {{ui::VKEY_A, ui::EF_NONE}, {kNoKeysPressed, KeyA::Released()}}, + + // Other keys currently held down, not triggered until all keys + // released. + {{ui::VKEY_A, ui::EF_ALT_DOWN}, + {kKeysPressed, KeyLAlt::Released(), KeyA::Released(), + kNoKeysPressed, KeyRAlt::Released()}}, + + })); + +TEST_P(SuccessfulSuspendStateMachineTest, SuspendTriggered) { + base::HistogramTester histogram_tester; + + suspend_state_machine_->StartObservingToTriggerSuspend(trigger_accelerator_); + histogram_tester.ExpectBucketCount("ChromeOS.Inputs.SuspendStateMachine", + SuspendStateMachineEvent::kTriggered, 1); + for (const auto& event : events_) { + ASSERT_EQ(0, power_manager_client()->num_request_suspend_calls()); + if (std::holds_alternative<bool>(event)) { + ON_CALL(*input_controller_, AreAnyKeysPressed()) + .WillByDefault(testing::Return(std::get<bool>(event))); + continue; + } else { + const TestKeyEvent& test_event = std::get<TestKeyEvent>(event); + ui::KeyEvent key_event(test_event.type, test_event.keycode, + test_event.code, test_event.flags, test_event.key, + ui::EventTimeForNow()); + suspend_state_machine_->OnEvent(&key_event); + } + } + + EXPECT_EQ(1, power_manager_client()->num_request_suspend_calls()); + histogram_tester.ExpectBucketCount("ChromeOS.Inputs.SuspendStateMachine", + SuspendStateMachineEvent::kSuspended, 1); +} + +class CancelledSuspendStateMachineTest : public SuspendStateMachineTest {}; + +INSTANTIATE_TEST_SUITE_P( + All, + CancelledSuspendStateMachineTest, + testing::ValuesIn( + std::vector<std::tuple<ui::Accelerator, std::vector<EventTypeVariant>>>{ + // Release a key not in the original accelerator. + {{ui::VKEY_A, ui::EF_COMMAND_DOWN}, + {kKeysPressed, KeyLMeta::Released(), KeyB::Released(), + kNoKeysPressed, KeyA::Released()}}, + + // Release a modifier not in the original accelerator. + {{ui::VKEY_A, ui::EF_COMMAND_DOWN}, + {kKeysPressed, KeyLControl::Released(), kNoKeysPressed, + KeyA::Released()}}, + + // Press a modifier again in the original accelerator. + {{ui::VKEY_A, ui::EF_COMMAND_DOWN}, + {kKeysPressed, KeyLMeta::Released(), KeyLMeta::Pressed(), + KeyLMeta::Released(), kNoKeysPressed, KeyA::Released()}}, + + // Press a key not in the original accelerator. + {{ui::VKEY_A, ui::EF_COMMAND_DOWN}, + {kKeysPressed, KeyLMeta::Released(), KeyB::Pressed(), + KeyB::Released(), kNoKeysPressed, KeyA::Released()}}, + {{ui::VKEY_A, ui::EF_COMMAND_DOWN}, + {kKeysPressed, KeyLMeta::Released(), KeyB::Pressed(), + kNoKeysPressed, KeyA::Released()}}, + })); + +TEST_P(CancelledSuspendStateMachineTest, SuspendNotTriggered) { + base::HistogramTester histogram_tester; + + suspend_state_machine_->StartObservingToTriggerSuspend(trigger_accelerator_); + histogram_tester.ExpectBucketCount("ChromeOS.Inputs.SuspendStateMachine", + SuspendStateMachineEvent::kTriggered, 1); + for (const auto& event : events_) { + ASSERT_EQ(0, power_manager_client()->num_request_suspend_calls()); + if (std::holds_alternative<bool>(event)) { + ON_CALL(*input_controller_, AreAnyKeysPressed()) + .WillByDefault(testing::Return(std::get<bool>(event))); + continue; + } else { + const TestKeyEvent& test_event = std::get<TestKeyEvent>(event); + ui::KeyEvent key_event(test_event.type, test_event.keycode, + test_event.code, test_event.flags, test_event.key, + ui::EventTimeForNow()); + suspend_state_machine_->OnEvent(&key_event); + } + } + + EXPECT_EQ(0, power_manager_client()->num_request_suspend_calls()); + histogram_tester.ExpectBucketCount("ChromeOS.Inputs.SuspendStateMachine", + SuspendStateMachineEvent::kCancelled, 1); +} + +} // namespace ash::accelerators
diff --git a/ash/constants/ash_features.cc b/ash/constants/ash_features.cc index ea1866b..f1ae379 100644 --- a/ash/constants/ash_features.cc +++ b/ash/constants/ash_features.cc
@@ -2706,6 +2706,11 @@ "CrOSSuspendToDisk", base::FEATURE_DISABLED_BY_DEFAULT); +// Enable the suspend state machine to better handle suspend accelerators. +BASE_FEATURE(kSuspendStateMachine, + "SuspendStateMachine", + base::FEATURE_ENABLED_BY_DEFAULT); + const base::FeatureParam<int> kHibernateAfterTimeHours{ &kSuspendToDisk, "HibernateAfterTimeHours", 8}; @@ -4415,6 +4420,10 @@ return base::FeatureList::IsEnabled(kSnapGroup); } +bool IsSuspendStateMachineEnabled() { + return base::FeatureList::IsEnabled(kSuspendStateMachine); +} + bool IsSystemLiveCaptionEnabled() { // TODO(b/295244553): Once `kSystemLiveCaption` is enabled by default, switch // to `&&`.
diff --git a/ash/constants/ash_features.h b/ash/constants/ash_features.h index 94b544e..73a4860c 100644 --- a/ash/constants/ash_features.h +++ b/ash/constants/ash_features.h
@@ -839,6 +839,7 @@ BASE_DECLARE_FEATURE(kStartAssistantAudioDecoderOnDemand); COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kSuppressFirstEolWarning); COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kSuspendToDisk); +COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kSuspendStateMachine); COMPONENT_EXPORT(ASH_CONSTANTS) extern const base::FeatureParam<int> kHibernateAfterTimeHours; COMPONENT_EXPORT(ASH_CONSTANTS) @@ -1297,6 +1298,7 @@ COMPONENT_EXPORT(ASH_CONSTANTS) bool IsStartAssistantAudioDecoderOnDemandEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsStoreOwnerKeyInPrivateSlotEnabled(); +COMPONENT_EXPORT(ASH_CONSTANTS) bool IsSuspendStateMachineEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsSystemLiveCaptionEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsSystemNudgeMigrationEnabled(); COMPONENT_EXPORT(ASH_CONSTANTS) bool IsSystemTrayShadowEnabled();
diff --git a/base/android/android_hardware_buffer_compat.cc b/base/android/android_hardware_buffer_compat.cc index eeb87c10b..59d848d0 100644 --- a/base/android/android_hardware_buffer_compat.cc +++ b/base/android/android_hardware_buffer_compat.cc
@@ -14,7 +14,7 @@ AndroidHardwareBufferCompat::AndroidHardwareBufferCompat() { DCHECK(IsSupportAvailable()); - // TODO(https://crbug.com/1382595): If the Chromium build requires + // TODO(crbug.com/40877384): If the Chromium build requires // __ANDROID_API__ >= 26 at some point in the future, we could directly use // the global functions instead of dynamic loading. However, since this would // be incompatible with pre-Oreo devices, this is unlikely to happen in the
diff --git a/base/android/java/src/org/chromium/base/ApplicationStatus.java b/base/android/java/src/org/chromium/base/ApplicationStatus.java index bb9daebe..f88ca30 100644 --- a/base/android/java/src/org/chromium/base/ApplicationStatus.java +++ b/base/android/java/src/org/chromium/base/ApplicationStatus.java
@@ -39,10 +39,10 @@ import javax.annotation.concurrent.GuardedBy; /** - * Provides information about the current activity's status, and a way - * to register / unregister listeners for state changes. - * TODO(https://crbug.com/470582): ApplicationStatus will not work on WebView/WebLayer, and - * should be moved out of base and into //chrome. It should not be relied upon for //components. + * Provides information about the current activity's status, and a way to register / unregister + * listeners for state changes. TODO(crbug.com/40411113): ApplicationStatus will not work on + * WebView/WebLayer, and should be moved out of base and into //chrome. It should not be relied upon + * for //components. */ @JNINamespace("base::android") public class ApplicationStatus {
diff --git a/base/check.h b/base/check.h index e3ba8f0..d0081be4 100644 --- a/base/check.h +++ b/base/check.h
@@ -156,7 +156,7 @@ // discarding log-stream arguments. See base/notreached.h. NOMERGE NOINLINE NOT_TAIL_CALLED static void TriggerNotReached(); - // TODO(crbug.com/851128): Mark [[noreturn]] once this is CHECK-fatal on all + // TODO(crbug.com/40580068): Mark [[noreturn]] once this is CHECK-fatal on all // builds. NOMERGE NOINLINE NOT_TAIL_CALLED ~NotReachedError(); @@ -164,8 +164,8 @@ using CheckError::CheckError; }; -// TODO(crbug.com/851128): This should take the name of the above class once all -// callers of NOTREACHED() have migrated to the CHECK-fatal version. +// TODO(crbug.com/40580068): This should take the name of the above class once +// all callers of NOTREACHED() have migrated to the CHECK-fatal version. class BASE_EXPORT NotReachedNoreturnError : public CheckError { public: explicit NotReachedNoreturnError(
diff --git a/base/containers/small_map.h b/base/containers/small_map.h index 159634f..b7429ce0d6 100644 --- a/base/containers/small_map.h +++ b/base/containers/small_map.h
@@ -492,8 +492,8 @@ } size_t i = static_cast<size_t>(position.array_iter_ - array_); - // TODO(crbug.com/817982): When we have a checked iterator, this CHECK might - // not be necessary. + // TODO(crbug.com/40565371): When we have a checked iterator, this CHECK + // might not be necessary. CHECK_LE(i, size_); array_[i].~value_type(); --size_;
diff --git a/base/containers/util.h b/base/containers/util.h index cddfa49..529b341 100644 --- a/base/containers/util.h +++ b/base/containers/util.h
@@ -9,7 +9,7 @@ namespace base { -// TODO(crbug.com/817982): What we really need is for checked_math.h to be +// TODO(crbug.com/40565371): What we really need is for checked_math.h to be // able to do checked arithmetic on pointers. template <typename T> inline uintptr_t get_uintptr(const T* t) {
diff --git a/base/containers/vector_buffer.h b/base/containers/vector_buffer.h index 7127796..2fa93cd6 100644 --- a/base/containers/vector_buffer.h +++ b/base/containers/vector_buffer.h
@@ -76,7 +76,7 @@ size_t capacity() const { return capacity_; } T& operator[](size_t i) { - // TODO(crbug.com/817982): Some call sites (at least circular_deque.h) are + // TODO(crbug.com/40565371): Some call sites (at least circular_deque.h) are // calling this with `i == capacity_` as a way of getting `end()`. Therefore // we have to allow this for now (`i <= capacity_`), until we fix those call // sites to use real iterators. This comment applies here and to `const T&
diff --git a/base/features.cc b/base/features.cc index 30a8da9..845bf51 100644 --- a/base/features.cc +++ b/base/features.cc
@@ -39,7 +39,7 @@ "EnforceNoExecutableFileHandles", FEATURE_ENABLED_BY_DEFAULT); -// TODO(crbug.com/851128): Roll out this to 100% before replacing existing +// TODO(crbug.com/40580068): Roll out this to 100% before replacing existing // NOTREACHED()s with NOTREACHED_NORETURN() as part of NOTREACHED() migration. // Note that a prerequisite for rolling out this experiment is that existing // NOTREACHED reports are at a very low rate. Once this rolls out we should
diff --git a/base/fuchsia/system_product_info_unittest.cc b/base/fuchsia/system_product_info_unittest.cc index 3c3c925..d3238e4 100644 --- a/base/fuchsia/system_product_info_unittest.cc +++ b/base/fuchsia/system_product_info_unittest.cc
@@ -122,7 +122,7 @@ EXPECT_FALSE(product_info.manufacturer()->empty()); } -// TODO(crbug.com/101396): Re-enable once all clients +// TODO(crbug.com/40103081): Re-enable once all clients // provide this service. TEST_F(ProductInfoDeathTest, DISABLED_DcheckOnServiceNotPresent) { EXPECT_DCHECK_DEATH_WITH(GetProductInfoViaTask(), "ZX_ERR_PEER_CLOSED");
diff --git a/base/memory/shared_memory_switch.cc b/base/memory/shared_memory_switch.cc index afa3c1c..dad1ca9 100644 --- a/base/memory/shared_memory_switch.cc +++ b/base/memory/shared_memory_switch.cc
@@ -156,12 +156,12 @@ // caller, who is responsible for updating |launch_options| or the zygote // launch parameters, as appropriate. // - // TODO(crbug.com/1028263): Create a wrapper to release and return the primary - // descriptor for android (ScopedFD) vs non-android (ScopedFDPair). + // TODO(crbug.com/40109064): Create a wrapper to release and return the + // primary descriptor for android (ScopedFD) vs non-android (ScopedFDPair). // - // TODO(crbug.com/1028263): Get rid of |descriptor_to_share| and just populate - // |launch_options|. The caller should be responsible for translating between - // |launch_options| and zygote parameters as necessary. + // TODO(crbug.com/40109064): Get rid of |descriptor_to_share| and just + // populate |launch_options|. The caller should be responsible for translating + // between |launch_options| and zygote parameters as necessary. #if BUILDFLAG(IS_ANDROID) descriptor_to_share = std::move(shmem_handle); #else
diff --git a/base/metrics/histogram.cc b/base/metrics/histogram.cc index 2465add..59e3d57 100644 --- a/base/metrics/histogram.cc +++ b/base/metrics/histogram.cc
@@ -418,7 +418,7 @@ // Defensive code for backward compatibility. if (*minimum < 1) { - // TODO(crbug.com/1288842): Temporarily disabled during cleanup. + // TODO(crbug.com/40211696): Temporarily disabled during cleanup. // DLOG(ERROR) << "Histogram: " << name << " has bad minimum: " << *minimum; *minimum = 1; if (*maximum < 1)
diff --git a/base/metrics/histogram_shared_memory.cc b/base/metrics/histogram_shared_memory.cc index 6d02d01..a01bafd 100644 --- a/base/metrics/histogram_shared_memory.cc +++ b/base/metrics/histogram_shared_memory.cc
@@ -63,7 +63,7 @@ // 4. The low 64 bits of the shared memory block GUID. // 5. The size of the shared memory segment as a string. // -// TODO(crbug.com/1028263): Refactor the common logic here and in +// TODO(crbug.com/40109064): Refactor the common logic here and in // base/metrics/field_trial.cc namespace base { @@ -127,7 +127,7 @@ // Example: The call to OpenSymbolFiles() in base/debug/stack_trace_posix.cc // grabs a read-only handle to the shmem region for some process types. // - // TODO(crbug.com/1028263): Fix ChromeOS and utility processes. + // TODO(crbug.com/40109064): Fix ChromeOS and utility processes. return (FeatureList::IsEnabled(kPassHistogramSharedMemoryOnLaunch) #if BUILDFLAG(IS_CHROMEOS) && process_type != "gpu-process" @@ -172,7 +172,7 @@ // static void HistogramSharedMemory::InitFromLaunchParameters( const CommandLine& command_line) { - // TODO(crbug.com/1028263): Clean up once fully launched. + // TODO(crbug.com/40109064): Clean up once fully launched. if (!command_line.HasSwitch(switches::kMetricsSharedMemoryHandle)) { return; }
diff --git a/base/notreached.h b/base/notreached.h index be7aaaa..c35804d 100644 --- a/base/notreached.h +++ b/base/notreached.h
@@ -26,7 +26,7 @@ // Canary and Dev with intent to roll out to stable in M124 absent any blocking // issues that come up. // -// TODO(crbug.com/851128): After kNotReachedIsFatal is universally rolled out +// TODO(crbug.com/40580068): After kNotReachedIsFatal is universally rolled out // then move callers without a non-fatal milestone argument to // NOTREACHED_NORETURN(). Then rename the [[noreturn]] version back to // NOTREACHED(). @@ -46,8 +46,8 @@ // NOTREACHED_NORETURN() annotates paths that are supposed to be unreachable. // They crash if they are ever hit. -// TODO(crbug.com/851128): Rename back to NOTREACHED() once there are no callers -// of the old non-CHECK-fatal macro. +// TODO(crbug.com/40580068): Rename back to NOTREACHED() once there are no +// callers of the old non-CHECK-fatal macro. #if CHECK_WILL_STREAM() #define NOTREACHED_NORETURN() ::logging::NotReachedNoreturnError() #else
diff --git a/base/power_monitor/battery_level_provider_win.cc b/base/power_monitor/battery_level_provider_win.cc index 4e0d9f6..97efdc0e 100644 --- a/base/power_monitor/battery_level_provider_win.cc +++ b/base/power_monitor/battery_level_provider_win.cc
@@ -79,7 +79,7 @@ if (::GetLastError() == ERROR_FILE_NOT_FOUND) { // No battery present in this interface. // - // TODO(crbug.com/1191045): Change CHECK to DCHECK in October 2022 after + // TODO(crbug.com/40756364): Change CHECK to DCHECK in October 2022 after // verifying that there are no crash reports. CHECK_EQ(battery_tag, static_cast<ULONG>(BATTERY_TAG_INVALID)); return battery_tag;
diff --git a/base/profiler/module_cache.cc b/base/profiler/module_cache.cc index 41c086f..e61bb7f 100644 --- a/base/profiler/module_cache.cc +++ b/base/profiler/module_cache.cc
@@ -75,7 +75,7 @@ return nullptr; const auto result = native_modules_.insert(std::move(new_module)); - // TODO(https://crbug.com/1131769): Reintroduce DCHECK(result.second) after + // TODO(crbug.com/40150346): Reintroduce DCHECK(result.second) after // fixing the issue that is causing it to fail. return result.first->get(); }
diff --git a/base/run_loop.cc b/base/run_loop.cc index 2af8260..72a884ff 100644 --- a/base/run_loop.cc +++ b/base/run_loop.cc
@@ -116,7 +116,7 @@ return; // If there is a RunLoopTimeout active then set the timeout. - // TODO(crbug.com/905412): Use real-time for Run() timeouts so that they + // TODO(crbug.com/40602467): Use real-time for Run() timeouts so that they // can be applied even in tests which mock TimeTicks::Now(). CancelableOnceClosure cancelable_timeout; const RunLoopTimeout* run_timeout = GetTimeoutForCurrentThread();
diff --git a/base/strings/escape.cc b/base/strings/escape.cc index 1e61d69..c241ec6 100644 --- a/base/strings/escape.cc +++ b/base/strings/escape.cc
@@ -408,7 +408,7 @@ // character. In that case, just unescaped and write the non-sense // character. // - // TODO(https://crbug.com/829868): Do not unescape illegal UTF-8 + // TODO(crbug.com/40570496): Do not unescape illegal UTF-8 // sequences. unsigned char non_utf8_byte; if (UnescapeUnsignedByteAtIndex(escaped_text, i, &non_utf8_byte)) {
diff --git a/base/strings/string_piece.h b/base/strings/string_piece.h index 8ef94e51..dca7b39 100644 --- a/base/strings/string_piece.h +++ b/base/strings/string_piece.h
@@ -5,7 +5,7 @@ // This header is deprecated. `base::StringPiece` is now `std::string_view`. // Use it and <string_view> instead. // -// TODO(crbug.com/691162): Remove uses of this header. +// TODO(crbug.com/40506050): Remove uses of this header. #ifndef BASE_STRINGS_STRING_PIECE_H_ #define BASE_STRINGS_STRING_PIECE_H_
diff --git a/base/task/cancelable_task_tracker.h b/base/task/cancelable_task_tracker.h index e6325d9a..7abc57a 100644 --- a/base/task/cancelable_task_tracker.h +++ b/base/task/cancelable_task_tracker.h
@@ -154,7 +154,7 @@ TaskId next_id_ = 1; SEQUENCE_CHECKER(sequence_checker_); - // TODO(https://crbug.com/1009795): Remove once crasher is resolved. + // TODO(crbug.com/40050290): Remove once crasher is resolved. base::WeakPtr<CancelableTaskTracker> weak_this_; base::WeakPtrFactory<CancelableTaskTracker> weak_factory_{this}; };
diff --git a/base/test/launcher/test_launcher_unittest.cc b/base/test/launcher/test_launcher_unittest.cc index 7700049..05356298 100644 --- a/base/test/launcher/test_launcher_unittest.cc +++ b/base/test/launcher/test_launcher_unittest.cc
@@ -1353,7 +1353,7 @@ } #endif // !BUILDFLAG(IS_FUCHSIA) -// TODO(crbug.com/1094369): Enable leaked-child checks on other platforms. +// TODO(crbug.com/40135391): Enable leaked-child checks on other platforms. #if BUILDFLAG(IS_FUCHSIA) // Test that leaves a child process running. The test is DISABLED_, so it can
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn index d7b90fe..5a03a71b 100644 --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn
@@ -145,7 +145,7 @@ # # Flag discussion: https://crbug.com/977230 # - # TODO(crbug.com/1131993): This regresses binary size by ~1MB on Android and + # TODO(crbug.com/40721698): This regresses binary size by ~1MB on Android and # needs to be evaluated before enabling it there as well. init_stack_vars = !(is_android && is_official_build)
diff --git a/build/config/compiler/compiler.gni b/build/config/compiler/compiler.gni index e6a1872..77041ef 100644 --- a/build/config/compiler/compiler.gni +++ b/build/config/compiler/compiler.gni
@@ -230,7 +230,7 @@ !enable_frame_pointers && current_cpu == "arm" # Whether or not cfi table should be enabled on arm. -# TODO(crbug.com/1090409): Replace can_unwind_with_cfi_table with this once +# TODO(crbug.com/40133751): Replace can_unwind_with_cfi_table with this once # sampling profiler is enabled on android. enable_arm_cfi_table = is_android && !is_component_build && current_cpu == "arm"
diff --git a/build/config/coverage/BUILD.gn b/build/config/coverage/BUILD.gn index 1a7cabf..1f02cb4 100644 --- a/build/config/coverage/BUILD.gn +++ b/build/config/coverage/BUILD.gn
@@ -52,7 +52,7 @@ } if (is_linux || is_chromeos) { - # TODO(crbug.com/1194301): Remove this flag. + # TODO(crbug.com/40175589): Remove this flag. cflags += [ "-fno-use-cxa-atexit" ] } }
diff --git a/build/config/fuchsia/test/asan_options.shard.test-cml b/build/config/fuchsia/test/asan_options.shard.test-cml index 5866d79..7be83d2 100644 --- a/build/config/fuchsia/test/asan_options.shard.test-cml +++ b/build/config/fuchsia/test/asan_options.shard.test-cml
@@ -3,7 +3,7 @@ // found in the LICENSE file. { program: { - // TODO(crbug.com/1465997): Remove the use of ASAN_OPTIONS once media does + // TODO(crbug.com/40276216): Remove the use of ASAN_OPTIONS once media does // not load the shared rust library separately. environ: [ "ASAN_OPTIONS=detect_odr_violation=0",
diff --git a/cc/BUILD.gn b/cc/BUILD.gn index 560aa8c..5ffc302 100644 --- a/cc/BUILD.gn +++ b/cc/BUILD.gn
@@ -953,7 +953,7 @@ additional_manifest_fragments = [ "//build/config/fuchsia/test/fonts.shard.test-cml", - # TODO(https://crbug.com/1185811): Investigate removing the requirement + # TODO(crbug.com/40055105): Investigate removing the requirement # for VmexResource. "//build/config/fuchsia/test/mark_vmo_executable.shard.test-cml", "//third_party/fuchsia-sdk/sdk/pkg/vulkan/client.shard.cml",
diff --git a/cc/animation/element_animations.cc b/cc/animation/element_animations.cc index 49ba144..5889a29 100644 --- a/cc/animation/element_animations.cc +++ b/cc/animation/element_animations.cc
@@ -586,7 +586,8 @@ // We deliberately use two branches here so that the DCHECK can // differentiate between models with different element ids, and the case // where some models don't have an element id. - // TODO(crbug.com/900241): All KeyframeModels should have an ElementId. + // TODO(crbug.com/40600273): All KeyframeModels should have an + // ElementId. if (model->element_id()) { DCHECK(!element_id_for_property || element_id_for_property == model->element_id())
diff --git a/cc/animation/element_animations.h b/cc/animation/element_animations.h index 38d43982..39251aa 100644 --- a/cc/animation/element_animations.h +++ b/cc/animation/element_animations.h
@@ -113,7 +113,7 @@ // that have changed since the last update. void UpdateClientAnimationState(); - // TODO(crbug.com/1176334): Animation targets should be attached to curves + // TODO(crbug.com/40747850): Animation targets should be attached to curves // when they're created and the concrete subclass is known. This function // exists as a stopgap: the animation machinery previously expected to // announce a target and then pass curves that would implicitly animate the
diff --git a/cc/animation/keyframe_effect.cc b/cc/animation/keyframe_effect.cc index 67755910..bea73e29 100644 --- a/cc/animation/keyframe_effect.cc +++ b/cc/animation/keyframe_effect.cc
@@ -217,7 +217,7 @@ PauseCondition pause_condition) { bool did_pause = false; for (auto& keyframe_model : keyframe_models()) { - // TODO(crbug.com/1076012): KeyframeEffect is paused with local time for + // TODO(crbug.com/40688021): KeyframeEffect is paused with local time for // scroll-linked animations. To make sure the start event of a keyframe // model is sent to blink, we should not set its run state to PAUSED until // such event is sent. This should be revisited once KeyframeEffect is able
diff --git a/cc/input/input_handler.h b/cc/input/input_handler.h index 1bd128c..65b845c 100644 --- a/cc/input/input_handler.h +++ b/cc/input/input_handler.h
@@ -538,7 +538,7 @@ // compositor side. The information gets shared by the main thread as part of // the begin_main_frame_state. Finally Use counters are updated in the main // thread side to keep track of the frequency of scrolling with different - // sources per page load. TODO(crbug.com/691886): Use GRC API to plumb the + // sources per page load. TODO(crbug.com/40506330): Use GRC API to plumb the // scroll source info for Use Counters. void UpdateScrollSourceInfo(const ScrollState& scroll_state, ui::ScrollInputType type);
diff --git a/cc/input/scroll_snap_data.cc b/cc/input/scroll_snap_data.cc index fc3db40..94116dd 100644 --- a/cc/input/scroll_snap_data.cc +++ b/cc/input/scroll_snap_data.cc
@@ -835,7 +835,7 @@ } } -// TODO(crbug.com/1501103): Use tolerance value less than 1. +// TODO(crbug.com/40941354): Use tolerance value less than 1. // It is currently set to 1 because of differences in the way Blink and cc // currently handle fractional offsets when snapping. constexpr float kSnappedToTolerance = 1.0;
diff --git a/cc/layers/painted_scrollbar_layer.cc b/cc/layers/painted_scrollbar_layer.cc index c8f0d16..63ae381 100644 --- a/cc/layers/painted_scrollbar_layer.cc +++ b/cc/layers/painted_scrollbar_layer.cc
@@ -159,7 +159,7 @@ transform, layer_tree_host()->device_scale_factor()); float scale = std::max(transform_scales.x(), transform_scales.y()); // Clamp minimum scale to 1 to avoid too low scale during scale animation. - // TODO(crbug.com/1009291): Move rasterization of scrollbars to the impl side + // TODO(crbug.com/40100995): Move rasterization of scrollbars to the impl side // to better handle scale changes. scale = std::max(1.0f, scale);
diff --git a/cc/layers/scrollbar_layer_impl_base.cc b/cc/layers/scrollbar_layer_impl_base.cc index 28ffbca..8dca06a 100644 --- a/cc/layers/scrollbar_layer_impl_base.cc +++ b/cc/layers/scrollbar_layer_impl_base.cc
@@ -212,7 +212,7 @@ float track_length = TrackLength(); int thumb_length = ThumbLength(); int thumb_thickness = ThumbThickness(); - // TODO(crbug.com/1239770): This is a speculative fix. + // TODO(crbug.com/40194000): This is a speculative fix. float maximum = std::max(scroll_layer_length() - clip_layer_length(), 0.0f); // TODO(crbug.com/1239510): Re-enable the following DCHECK once the // underlying issue is resolved.
diff --git a/cc/layers/solid_color_scrollbar_layer.cc b/cc/layers/solid_color_scrollbar_layer.cc index 9fe0ed4..ef59ec0 100644 --- a/cc/layers/solid_color_scrollbar_layer.cc +++ b/cc/layers/solid_color_scrollbar_layer.cc
@@ -110,7 +110,7 @@ if (layer_tree_host() && layer_tree_host()->GetSettings().using_synchronous_renderer_compositor) { // Root frame in Android WebView uses system scrollbars, so make ours - // invisible. TODO(crbug.com/1327047): We should apply this to the root + // invisible. TODO(crbug.com/40226034): We should apply this to the root // scrollbars only, or consider other choices listed in the bug. color = SkColors::kTransparent; }
diff --git a/cc/layers/video_layer.cc b/cc/layers/video_layer.cc index 21b6d7de..b9cb5a02 100644 --- a/cc/layers/video_layer.cc +++ b/cc/layers/video_layer.cc
@@ -30,7 +30,7 @@ } bool VideoLayer::RequiresSetNeedsDisplayOnHdrHeadroomChange() const { - // TODO(https://crbug.com/1450807): Only return true if the contents of the + // TODO(crbug.com/40065199): Only return true if the contents of the // video are HDR. return true; }
diff --git a/cc/metrics/compositor_frame_reporter.cc b/cc/metrics/compositor_frame_reporter.cc index f76c00a..eefed73 100644 --- a/cc/metrics/compositor_frame_reporter.cc +++ b/cc/metrics/compositor_frame_reporter.cc
@@ -1458,7 +1458,7 @@ reporter->add_high_latency_contribution_stage(stage); } - // TODO(crbug.com/1086974): Set 'drop reason' if applicable. + // TODO(crbug.com/40132773): Set 'drop reason' if applicable. }); for (const auto& stage : stage_history_) { @@ -1769,7 +1769,7 @@ current_stage_durations.total_blink_latency); } - // TODO(crbug.com/1349930): implement check that ensure the prediction is + // TODO(crbug.com/40233949): implement check that ensure the prediction is // correct by checking if platform supports breakdown of the stage // SubmitCompositorFrameToPresentationCompositorFrame.SwapStartToSwapEnd, // then SwapStartToSwapEnd should always be 0s and data for breakdown of it
diff --git a/cc/metrics/compositor_frame_reporting_controller.cc b/cc/metrics/compositor_frame_reporting_controller.cc index c776b9b3..d59179b 100644 --- a/cc/metrics/compositor_frame_reporting_controller.cc +++ b/cc/metrics/compositor_frame_reporting_controller.cc
@@ -142,9 +142,9 @@ if (reporters_[PipelineStage::kBeginImplFrame]) { auto& reporter = reporters_[PipelineStage::kBeginImplFrame]; DCHECK(reporter->did_finish_impl_frame()); - // TODO(1144353): This is a speculative fix. This code should only be - // reached after the previous frame have been explicitly marked as 'did not - // produce frame', i.e. this code should have a DCHECK instead of a + // TODO(crbug.com/40728802): This is a speculative fix. This code should + // only be reached after the previous frame have been explicitly marked as + // 'did not produce frame', i.e. this code should have a DCHECK instead of a // conditional: // DCHECK(reporter->did_not_produce_frame()). if (reporter->did_not_produce_frame()) { @@ -186,9 +186,9 @@ auto active_trackers = active_trackers_; auto smooth_thread = GetSmoothThread(); if (args.frame_id == last_started_compositor_frame_.args.frame_id) { - // TODO(1277547): Instead of replacing all current information with the - // older information from when the impl-frame started, merge the two sets - // of information that makes sense. + // TODO(crbug.com/40207819): Instead of replacing all current information + // with the older information from when the impl-frame started, merge the + // two sets of information that makes sense. scrolling_thread = last_started_compositor_frame_.scrolling_thread; active_trackers = last_started_compositor_frame_.active_trackers; smooth_thread = last_started_compositor_frame_.smooth_thread;
diff --git a/cc/metrics/event_metrics.h b/cc/metrics/event_metrics.h index 2c3e918..8c4d0d1a 100644 --- a/cc/metrics/event_metrics.h +++ b/cc/metrics/event_metrics.h
@@ -37,9 +37,9 @@ kMousePressed, kMouseReleased, kMouseWheel, - // TODO(crbug/1071645): Currently, all ET_KEY_PRESSED events are reported - // under EventLatency.KeyPressed histogram. This includes both key-down and - // key-char events. Consider reporting them separately. + // TODO(crbug.com/40126863): Currently, all ET_KEY_PRESSED events are + // reported under EventLatency.KeyPressed histogram. This includes both + // key-down and key-char events. Consider reporting them separately. kKeyPressed, kKeyReleased, kTouchPressed,
diff --git a/cc/metrics/frame_info.cc b/cc/metrics/frame_info.cc index ce14b20..a560bfa 100644 --- a/cc/metrics/frame_info.cc +++ b/cc/metrics/frame_info.cc
@@ -55,8 +55,9 @@ void FrameInfo::MergeWith(const FrameInfo& other) { #if BUILDFLAG(IS_ANDROID) - // TODO(1278168): on android-webview, multiple frames can be submitted against - // the same BeginFrameArgs. This can trip the DCHECK()s in this function. + // TODO(crbug.com/40208073): on android-webview, multiple frames can be + // submitted against the same BeginFrameArgs. This can trip the DCHECK()s in + // this function. if (was_merged) return; if (main_thread_response == MainThreadResponse::kIncluded &&
diff --git a/cc/metrics/frame_sequence_metrics.cc b/cc/metrics/frame_sequence_metrics.cc index a7d6c1f..d35658a 100644 --- a/cc/metrics/frame_sequence_metrics.cc +++ b/cc/metrics/frame_sequence_metrics.cc
@@ -512,7 +512,7 @@ will_ignore_current_frame = true; } - // TODO(crbug.com/1450940): A new FrameSequenceTracker, that has yet to + // TODO(crbug.com/40270377): A new FrameSequenceTracker, that has yet to // process its first frame uses its creation time as starting point of // nested traces. FrameSorter processes a FrameInfo when both threads are // complete. It's possible for the smoothness thread component to have
diff --git a/cc/metrics/frame_sequence_tracker.cc b/cc/metrics/frame_sequence_tracker.cc index f54f1aae..eaa16ddd5 100644 --- a/cc/metrics/frame_sequence_tracker.cc +++ b/cc/metrics/frame_sequence_tracker.cc
@@ -137,7 +137,7 @@ } void FrameSequenceTracker::ResetAllStateIfPaused() { - // TODO(crbug.com/1256879): With FrameSequenceMetrics handling + // TODO(crbug.com/40200408): With FrameSequenceMetrics handling // FrameInfo::FrameFinalState::kNoUpdateDesired we likely do not need this // anymore. if (!reset_all_state_) {
diff --git a/cc/metrics/scroll_jank_dropped_frame_tracker.cc b/cc/metrics/scroll_jank_dropped_frame_tracker.cc index c86a5f40..d0ae522 100644 --- a/cc/metrics/scroll_jank_dropped_frame_tracker.cc +++ b/cc/metrics/scroll_jank_dropped_frame_tracker.cc
@@ -103,7 +103,8 @@ // There should be at least one presented frame given the method is only // called after we have a successful presentation. if (per_scroll_->num_presented_frames == 0) { - // TODO(1464878): Debug cases where we can have 0 presented frames. + // TODO(crbug.com/40067426): Debug cases where we can have 0 presented + // frames. TRACE_EVENT_INSTANT("input", "NoPresentedFramesInScroll"); return; } @@ -221,10 +222,10 @@ EventMetrics::DispatchStage::kGenerated); if ((last_input_generation_ts < first_input_generation_ts) || (presentation_ts <= last_input_generation_ts)) { - // TODO(crbug/1447358): Investigate when these edge cases can be triggered - // in field and web tests. We have already seen this triggered in field, and - // some web tests where an event with null(0) timestamp gets coalesced with - // a "normal" input. + // TODO(crbug.com/40913586): Investigate when these edge cases can be + // triggered in field and web tests. We have already seen this triggered in + // field, and some web tests where an event with null(0) timestamp gets + // coalesced with a "normal" input. return; } // TODO(b/276722271) : Analyze and reduce these cases of out of order
diff --git a/cc/paint/image_transfer_cache_entry.cc b/cc/paint/image_transfer_cache_entry.cc index 7f60594..e1e5957f 100644 --- a/cc/paint/image_transfer_cache_entry.cc +++ b/cc/paint/image_transfer_cache_entry.cc
@@ -639,7 +639,7 @@ sk_sp<SkImage> image; // Apply tone mapping. - // TODO(https://crbug.com/1286088): Pass a shared cache as a parameter. + // TODO(crbug.com/40210699): Pass a shared cache as a parameter. gfx::ColorConversionSkFilterCache cache; if (has_gainmap_) { image = cache.ApplyGainmap( @@ -751,7 +751,7 @@ image_ = image_->makeColorSpace(graphite_recorder_, target_color_space, props); } else { - // TODO(crbug.com/1443068): It's possible for both `gr_context` and + // TODO(crbug.com/40267231): It's possible for both `gr_context` and // `graphite_recorder` to be nullptr if `image_` is not texture backed. // Need to handle this case (currently just goes through gr_context path // with nullptr context).
diff --git a/cc/paint/oop_pixeltest.cc b/cc/paint/oop_pixeltest.cc index f70039a..5b728f23 100644 --- a/cc/paint/oop_pixeltest.cc +++ b/cc/paint/oop_pixeltest.cc
@@ -758,7 +758,7 @@ #if BUILDFLAG(IS_ANDROID) // Allow large quantization error on Android. - // TODO(https://crbug.com/1363056): Ensure higher precision for HDR images. + // TODO(crbug.com/40238547): Ensure higher precision for HDR images. constexpr float kEpsilon = 1 / 16.f; #elif BUILDFLAG(IS_IOS) && BUILDFLAG(SKIA_USE_METAL) // TODO(crbug.com/1476507): Allow larger errors on iOS as well.
diff --git a/cc/paint/paint_op.cc b/cc/paint/paint_op.cc index 708221e3..23864ee 100644 --- a/cc/paint/paint_op.cc +++ b/cc/paint/paint_op.cc
@@ -1254,7 +1254,7 @@ const PaintFlags* flags, SkCanvas* canvas, const PlaybackParams& params) { - // TODO(crbug.com/931704): make sure to support the case where paint worklet + // TODO(crbug.com/40613771): make sure to support the case where paint worklet // generated images are used in other raster work such as canvas2d. if (op->image.IsPaintWorklet()) { // When rasterizing on the main thread (e.g. paint invalidation checking,
diff --git a/cc/paint/paint_op_buffer.h b/cc/paint/paint_op_buffer.h index 93ddf762..f0e673b 100644 --- a/cc/paint/paint_op_buffer.h +++ b/cc/paint/paint_op_buffer.h
@@ -134,7 +134,7 @@ bool context_supports_distance_field_text = true; int max_texture_size = 0; - // TODO(crbug.com/1096123): Cleanup after study completion. + // TODO(crbug.com/40136055): Cleanup after study completion. // // If true, perform serializaion in a way that avoids serializing transient // members, such as IDs, so that a stable digest can be calculated. This
diff --git a/cc/tiles/raster_tile_priority_queue_all.cc b/cc/tiles/raster_tile_priority_queue_all.cc index 38e9060..9683014b 100644 --- a/cc/tiles/raster_tile_priority_queue_all.cc +++ b/cc/tiles/raster_tile_priority_queue_all.cc
@@ -177,7 +177,7 @@ // Then, use the IsHigherPriorityThan condition for // SAME_PRIORITY_FOR_BOTH_TREES and the rest of the priority bins. - // TODO(crbug.com/1380831): For SAME_PRIORITY_FOR_BOTH_TREES mode and both + // TODO(crbug.com/40244895): For SAME_PRIORITY_FOR_BOTH_TREES mode and both // being NOW, should we give the priority to Active NOW instead? if (active_priority.IsHigherPriorityThan(pending_priority)) { return active_queues_;
diff --git a/cc/tiles/tile_manager.cc b/cc/tiles/tile_manager.cc index 5dc67693..bd3c88a6 100644 --- a/cc/tiles/tile_manager.cc +++ b/cc/tiles/tile_manager.cc
@@ -1320,9 +1320,9 @@ // The old locked images tasks have to stay around until past the // ScheduleTasks call below, so we do a swap instead of a move. - // TODO(crbug.com/647402): Have the tile_task_manager keep a ref on the tasks, - // since it makes it awkward for the callers to keep refs on tasks that only - // exist within the task graph runner. + // TODO(crbug.com/40485121): Have the tile_task_manager keep a ref on the + // tasks, since it makes it awkward for the callers to keep refs on tasks that + // only exist within the task graph runner. locked_image_tasks_.swap(new_locked_image_tasks); // We must reduce the amount of unused resources before calling
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc index 80f8728..7393b26 100644 --- a/cc/trees/layer_tree_host_impl.cc +++ b/cc/trees/layer_tree_host_impl.cc
@@ -4350,7 +4350,7 @@ // animation_host, so on the last frame of an animation we will // still request an extra SetNeedsAnimate here. if (animated) { - // TODO(crbug.com/1039750): If only scroll animations present, schedule a + // TODO(crbug.com/40667010): If only scroll animations present, schedule a // frame only if scroll changes. SetNeedsOneBeginImplFrame(); frame_trackers_.StartSequence(
diff --git a/cc/trees/layer_tree_host_pixeltest_filters.cc b/cc/trees/layer_tree_host_pixeltest_filters.cc index 50b3975..1f0ffad4 100644 --- a/cc/trees/layer_tree_host_pixeltest_filters.cc +++ b/cc/trees/layer_tree_host_pixeltest_filters.cc
@@ -164,7 +164,7 @@ } #endif if (use_software_renderer()) { - // TODO(989238): Software renderer does not support/implement + // TODO(crbug.com/40036319): Software renderer does not support/implement // kClamp_TileMode. return; }
diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc index eb76e25..fba61beb 100644 --- a/cc/trees/layer_tree_host_unittest.cc +++ b/cc/trees/layer_tree_host_unittest.cc
@@ -9404,7 +9404,7 @@ FakeContentLayerClient client_; }; -// TODO(crbug.com/1435551): flaky on win-asan. +// TODO(crbug.com/40265182): flaky on win-asan. #if !(BUILDFLAG(IS_WIN) && defined(ADDRESS_SANITIZER)) SINGLE_AND_MULTI_THREAD_TEST_F( LayerTreeHostTestDelegatedInkMetadataCompositorOnlyFrame);
diff --git a/cc/trees/layer_tree_host_unittest_scroll.cc b/cc/trees/layer_tree_host_unittest_scroll.cc index 21c3e04..fd4bd5e 100644 --- a/cc/trees/layer_tree_host_unittest_scroll.cc +++ b/cc/trees/layer_tree_host_unittest_scroll.cc
@@ -1111,8 +1111,8 @@ // This tests scrolling on the impl side which is only possible with a thread. MULTI_THREAD_TEST_F(LayerTreeHostScrollTestImplOnlyScroll); -// TODO(crbug.com/574283): Mac currently doesn't support smooth scrolling wheel -// events. +// TODO(crbug.com/40451005): Mac currently doesn't support smooth scrolling +// wheel events. #if !BUILDFLAG(IS_MAC) // This test simulates scrolling on the impl thread such that it starts a scroll // animation. It ensures that RequestScrollAnimationEndNotification() correctly @@ -1524,7 +1524,7 @@ ElementId snap_area_b_id_; }; -// TODO(crbug.com/1243814): Test is flaky on Chrome OS (both Ash and Lacros). +// TODO(crbug.com/40787490): Test is flaky on Chrome OS (both Ash and Lacros). #if !BUILDFLAG(IS_CHROMEOS) MULTI_THREAD_TEST_F(LayerTreeHostScrollTestImplOnlyMultipleScrollSnap); #endif
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc index e02fa7c..2c1d666 100644 --- a/cc/trees/layer_tree_impl.cc +++ b/cc/trees/layer_tree_impl.cc
@@ -2548,7 +2548,7 @@ // The intention here is to skip over any layers that belong to a // different 3d sorting context than the first_hit layer. // - // TODO(crbug.com/1407697): This code is kind of broken for the case of a + // TODO(crbug.com/40887983): This code is kind of broken for the case of a // scroller inside a preserve-3d: we assign a sorting_context_id to the // scroller's main layer, which is marked as scrollable, but not its // scrolling-contents layer, which is first_hit. Currently we rely on
diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc index 2bb81a4..e86f915 100644 --- a/cc/trees/property_tree.cc +++ b/cc/trees/property_tree.cc
@@ -1684,7 +1684,7 @@ const TransformNode* transform_node = property_trees()->transform_tree().Node(scroll_node.transform_id); - // TODO(crbug.com/1418689): current_scroll_offset can disagree with + // TODO(crbug.com/40894892): current_scroll_offset can disagree with // transform_node->scroll_offset if the delta on a main frame update is // simply rounding of the scroll position and not using fractional scroll // deltas (see needs_scroll_update in PushScrollUpdatesFromMainThread). @@ -1702,8 +1702,8 @@ // snapping needed, due to floating point precision errors. In general this // is fine, but we never want to report a negative scroll offset so avoid // that case here. - // TODO(crbug.com/1076878): Remove the clamping when scroll timeline effects - // always match the snapping. + // TODO(crbug.com/40688441): Remove the clamping when scroll timeline + // effects always match the snapping. offset = ClampScrollOffsetToLimits(offset - transform_node->snap_amount, scroll_node); }
diff --git a/chrome/VERSION b/chrome/VERSION index 2ed9e7d2..150d0b6 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=126 MINOR=0 -BUILD=6429 +BUILD=6431 PATCH=0
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn index 55cc1c7..3d38a06 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn
@@ -1985,6 +1985,7 @@ "//third_party/blink/public/mojom:mojom_core_java", "//third_party/blink/public/mojom:mojom_mhtml_load_result_java", "//third_party/blink/public/mojom:mojom_platform_java", + "//third_party/blink/public/mojom:web_feature_mojo_bindings_java", "//third_party/flatbuffers:flatbuffers_java", "//third_party/hamcrest:hamcrest_java", "//third_party/jni_zero:jni_zero_java",
diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni index 5dd33e3..562d10c 100644 --- a/chrome/android/chrome_test_java_sources.gni +++ b/chrome/android/chrome_test_java_sources.gni
@@ -15,6 +15,7 @@ "javatests/src/org/chromium/chrome/browser/ChromeActionModeHandlerTest.java", "javatests/src/org/chromium/chrome/browser/ChromeTabbedActivityTest.java", "javatests/src/org/chromium/chrome/browser/ContentViewFocusTest.java", + "javatests/src/org/chromium/chrome/browser/ContentWebFeatureUsageUtilsIntegrationTest.java", "javatests/src/org/chromium/chrome/browser/CopylessPasteTest.java", "javatests/src/org/chromium/chrome/browser/ExampleUiCaptureTest.java", "javatests/src/org/chromium/chrome/browser/FeaturesAnnotationsTest.java",
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_groups/TabGroupUtils.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_groups/TabGroupUtils.java index e1b7155..839b034 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_groups/TabGroupUtils.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_groups/TabGroupUtils.java
@@ -13,7 +13,7 @@ import org.chromium.base.ApplicationStatus; import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.feature_engagement.TrackerFactory; -import org.chromium.chrome.browser.profiles.ProfileManager; +import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tabmodel.TabModel; import org.chromium.chrome.browser.tabmodel.TabModelSelector; @@ -37,6 +37,7 @@ private static TabModelSelectorTabObserver sTabModelSelectorTabObserver; public static void maybeShowIPH( + Profile profile, @FeatureConstants String featureName, View view, @Nullable BottomSheetController bottomSheetController) { @@ -63,8 +64,7 @@ return; } - final Tracker tracker = - TrackerFactory.getTrackerForProfile(ProfileManager.getLastUsedRegularProfile()); + final Tracker tracker = TrackerFactory.getTrackerForProfile(profile); if (!tracker.isInitialized()) return; if (!tracker.shouldTriggerHelpUI(featureName)) return; @@ -133,6 +133,7 @@ || (navigationHandle.pageTransition() & PageTransition.CORE_MASK) == PageTransition.GENERATED) { maybeShowIPH( + tab.getProfile(), FeatureConstants.TAB_GROUPS_QUICKLY_COMPARE_PAGES_FEATURE, tab.getView(), null);
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java index 355c29d..7b47f6d 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java
@@ -257,6 +257,7 @@ && mBottomSheetController.getSheetState() == BottomSheetController.SheetState.HIDDEN) { TabGroupUtils.maybeShowIPH( + mTabModelSelector.getModel(false).getProfile(), FeatureConstants.TAB_GROUPS_TAP_TO_SEE_ANOTHER_TAB_FEATURE, mTabStripCoordinator.getContainerView(), mBottomSheetController);
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java index d283a33..03feb08 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java
@@ -285,6 +285,7 @@ TaskTraits.UI_DEFAULT, () -> { TabGroupUtils.maybeShowIPH( + mProfile, FeatureConstants.TAB_GROUPS_YOUR_TABS_ARE_TOGETHER_FEATURE, anchor, null);
diff --git a/chrome/android/java/res/layout/search_activity.xml b/chrome/android/java/res/layout/search_activity.xml index a392c8b..3c70728 100644 --- a/chrome/android/java/res/layout/search_activity.xml +++ b/chrome/android/java/res/layout/search_activity.xml
@@ -12,13 +12,13 @@ android:layout_width="match_parent" android:layout_height="match_parent" > - <ViewStub + <org.chromium.ui.AsyncViewStub android:id="@+id/omnibox_results_container_stub" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_anchor="@id/toolbar" android:background="@android:color/white" - android:layout="@layout/omnibox_results_container" /> + app:layout="@layout/omnibox_results_container" /> <FrameLayout android:id="@+id/toolbar"
diff --git a/chrome/android/java/res_app/layout/main.xml b/chrome/android/java/res_app/layout/main.xml index c406333..8c70d54 100644 --- a/chrome/android/java/res_app/layout/main.xml +++ b/chrome/android/java/res_app/layout/main.xml
@@ -91,13 +91,13 @@ android:layout_width="0dp" android:layout_height="0dp" /> - <ViewStub + <org.chromium.ui.AsyncViewStub android:id="@+id/omnibox_results_container_stub" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_anchor="@id/control_container" android:inflatedId="@+id/omnibox_results_container" - android:layout="@layout/omnibox_results_container" /> + app:layout="@layout/omnibox_results_container" /> <!-- Toolbar size area painted black to avoid the action bar showing the window background --> <View
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java index d7bea33..fa4be20 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
@@ -212,7 +212,7 @@ // occur, and we'll need to manually update the bottom indicator here. if (!mInReorderMode) { finishAnimations(); - buildBottomIndicator(); + rebuildStripViews(); mRenderHost.requestRender(); } } @@ -234,7 +234,7 @@ || mTabGroupModelFilter.getTabGroupCount() != mStripGroupTitles.length) { finishAnimations(); - buildBottomIndicator(); + rebuildStripViews(); mRenderHost.requestRender(); } }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ContentWebFeatureUsageUtilsIntegrationTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ContentWebFeatureUsageUtilsIntegrationTest.java new file mode 100644 index 0000000..7ea59a1 --- /dev/null +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ContentWebFeatureUsageUtilsIntegrationTest.java
@@ -0,0 +1,54 @@ +// Copyright 2024 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.chrome.browser; + +import androidx.test.filters.SmallTest; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +import org.chromium.base.test.util.Batch; +import org.chromium.base.test.util.CommandLineFlags; +import org.chromium.base.test.util.HistogramWatcher; +import org.chromium.blink.mojom.WebFeature; +import org.chromium.chrome.browser.flags.ChromeSwitches; +import org.chromium.chrome.test.ChromeJUnit4ClassRunner; +import org.chromium.chrome.test.ChromeTabbedActivityTestRule; +import org.chromium.content_public.browser.ContentWebFeatureUsageUtils; +import org.chromium.content_public.browser.test.util.TestThreadUtils; +import org.chromium.net.test.EmbeddedTestServer; + +/** Integration tests for {@link ContentWebFeatureUsageUtils}. */ +@RunWith(ChromeJUnit4ClassRunner.class) +@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) +@Batch(Batch.PER_CLASS) +public class ContentWebFeatureUsageUtilsIntegrationTest { + @Rule + public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); + + @Before + public void setUp() { + EmbeddedTestServer testServer = mActivityTestRule.getTestServer(); + mActivityTestRule.startMainActivityWithURL( + testServer.getURL("/chrome/test/data/android/simple.html")); + } + + @Test + @SmallTest + public void testLogWebFeatureForCurrentPage() { + HistogramWatcher histogramWatcher = + HistogramWatcher.newSingleRecordWatcher( + "Blink.UseCounter.Features", WebFeature.IDENTITY_DIGITAL_CREDENTIALS); + TestThreadUtils.runOnUiThreadBlocking( + () -> { + ContentWebFeatureUsageUtils.logWebFeatureForCurrentPage( + mActivityTestRule.getWebContents(), + WebFeature.IDENTITY_DIGITAL_CREDENTIALS); + }); + histogramWatcher.assertExpected(); + } +}
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 2bdf9db..d7cc318 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -7705,6 +7705,11 @@ kOsCrOS, FEATURE_VALUE_TYPE(ash::features::kSearchCustomizableShortcutsInLauncher)}, + {"enable-suspend-state-machine", + flag_descriptions::kEnableSuspendStateMachineName, + flag_descriptions::kEnableSuspendStateMachineDescription, kOsCrOS, + FEATURE_VALUE_TYPE(ash::features::kSuspendStateMachine)}, + {"enable-input-device-settings-split", flag_descriptions::kEnableInputDeviceSettingsSplitName, flag_descriptions::kEnableInputDeviceSettingsSplitDescription, kOsCrOS,
diff --git a/chrome/browser/compose/compose_session.cc b/chrome/browser/compose/compose_session.cc index 558ce8f6..5d889a8 100644 --- a/chrome/browser/compose/compose_session.cc +++ b/chrome/browser/compose/compose_session.cc
@@ -968,6 +968,7 @@ AddNewResponseToHistory(std::move(new_state)); } std::move(callback).Run(true); + session_events_.result_edit_count += 1; } void ComposeSession::InitializeWithText(const std::optional<std::string>& text, @@ -1129,6 +1130,9 @@ case compose::ComposeSessionCloseReason::kAcceptedSuggestion: final_status_ = optimization_guide::proto::FinalStatus::STATUS_INSERTED; session_events_.inserted_results = true; + if (CurrentState().has_value() && CurrentState()->is_user_edited()) { + session_events_.edited_result_inserted = true; + } break; } }
diff --git a/chrome/browser/compose/compose_session.h b/chrome/browser/compose/compose_session.h index 3b1ac802..7a37041 100644 --- a/chrome/browser/compose/compose_session.h +++ b/chrome/browser/compose/compose_session.h
@@ -155,8 +155,6 @@ void EditResult(const std::string& new_result, EditResultCallback callback) override; - void PrintCurrentHistoryState(); - // Non-ComposeSessionUntrustedPageHandler Methods // Notifies the session that a new dialog is opening and starts refreshing
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index 17629d5..ae6ed70 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -3794,6 +3794,14 @@ "expiry_milestone": 130 }, { + "name": "enable-suspend-state-machine", + "owners": [ + "dpad@chromium.org", + "cros-peripherals@google.com" + ], + "expiry_milestone": 130 + }, + { "name": "enable-suspend-to-disk", "owners": [ "bgeffon@chromium.org", "mka@chromium.org", "chromeos-power@google.com" ], "expiry_milestone": 130
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 577ac21..28ba03a5 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -1277,6 +1277,11 @@ const char kEnableSearchCustomizableShortcutsInLauncherDescription[] = "Enable searching for customizable shortcuts in launcher."; +const char kEnableSuspendStateMachineName[] = "Enable suspend state machine"; +const char kEnableSuspendStateMachineDescription[] = + "Enables a fix for the suspend keyboard shortcut to more consistently " + "execute."; + const char kEnableInputDeviceSettingsSplitName[] = "Enable input device settings split"; const char kEnableInputDeviceSettingsSplitDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index ad996ed..9676b6e 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -871,6 +871,9 @@ extern const char kEnableSearchCustomizableShortcutsInLauncherName[]; extern const char kEnableSearchCustomizableShortcutsInLauncherDescription[]; +extern const char kEnableSuspendStateMachineName[]; +extern const char kEnableSuspendStateMachineDescription[]; + extern const char kEnableInputDeviceSettingsSplitName[]; extern const char kEnableInputDeviceSettingsSplitDescription[];
diff --git a/chrome/browser/lens/core/mojom/BUILD.gn b/chrome/browser/lens/core/mojom/BUILD.gn index 1c472179..54adf80 100644 --- a/chrome/browser/lens/core/mojom/BUILD.gn +++ b/chrome/browser/lens/core/mojom/BUILD.gn
@@ -9,6 +9,7 @@ "geometry.mojom", "lens.mojom", "overlay_object.mojom", + "polygon.mojom", "search_bubble.mojom", "text.mojom", ]
diff --git a/chrome/browser/lens/core/mojom/geometry.mojom b/chrome/browser/lens/core/mojom/geometry.mojom index 11907f0..f8664c5e 100644 --- a/chrome/browser/lens/core/mojom/geometry.mojom +++ b/chrome/browser/lens/core/mojom/geometry.mojom
@@ -4,6 +4,7 @@ module lens.mojom; +import "chrome/browser/lens/core/mojom/polygon.mojom"; import "ui/gfx/geometry/mojom/geometry.mojom"; struct CenterRotatedBox { @@ -31,4 +32,6 @@ struct Geometry { // Specifies the bounding box for this geometry. CenterRotatedBox bounding_box; + + array<Polygon> segmentation_polygon; };
diff --git a/chrome/browser/lens/core/mojom/polygon.mojom b/chrome/browser/lens/core/mojom/polygon.mojom new file mode 100644 index 0000000..ab35ebf --- /dev/null +++ b/chrome/browser/lens/core/mojom/polygon.mojom
@@ -0,0 +1,33 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// These Mojo structs are converted from +// third_party/lens_server_proto/lens_overlay_polygon.proto. +module lens.mojom; + + +struct Polygon { + array<Vertex> vertex; + + enum VertexOrdering { + kUnspecified = 0, + kClockwise = 1, + kCounterClockwise = 2, + }; + VertexOrdering vertex_ordering; + + enum CoordinateType { + kUnspecified = 0, + // Normalized coordinates. + kNormalized = 1, + // Image pixel coordinates. + kImage = 2, + }; + CoordinateType coordinate_type; +}; + +struct Vertex { + float x; + float y; +};
diff --git a/chrome/browser/lens/lens_overlay/lens_overlay_proto_converter.cc b/chrome/browser/lens/lens_overlay/lens_overlay_proto_converter.cc index 417308dd..ad462c2 100644 --- a/chrome/browser/lens/lens_overlay/lens_overlay_proto_converter.cc +++ b/chrome/browser/lens/lens_overlay/lens_overlay_proto_converter.cc
@@ -6,8 +6,10 @@ #include "chrome/browser/lens/core/mojom/geometry.mojom.h" #include "chrome/browser/lens/core/mojom/overlay_object.mojom.h" +#include "chrome/browser/lens/core/mojom/polygon.mojom.h" #include "chrome/browser/lens/core/mojom/text.mojom.h" #include "third_party/lens_server_proto/lens_overlay_geometry.pb.h" +#include "third_party/lens_server_proto/lens_overlay_polygon.pb.h" #include "third_party/lens_server_proto/lens_overlay_server.pb.h" #include "third_party/lens_server_proto/lens_overlay_service_deps.pb.h" #include "third_party/lens_server_proto/lens_overlay_text.pb.h" @@ -16,6 +18,47 @@ namespace { +lens::mojom::Polygon_VertexOrdering ProtoToMojo( + lens::Polygon::VertexOrdering vertex_ordering) { + switch (vertex_ordering) { + case lens::Polygon::VERTEX_ORDERING_UNSPECIFIED: + return lens::mojom::Polygon_VertexOrdering::kUnspecified; + case lens::Polygon::CLOCKWISE: + return lens::mojom::Polygon_VertexOrdering::kClockwise; + case lens::Polygon::COUNTER_CLOCKWISE: + return lens::mojom::Polygon_VertexOrdering::kCounterClockwise; + } + return lens::mojom::Polygon_VertexOrdering::kUnspecified; +} + +lens::mojom::Polygon_CoordinateType ProtoToMojo( + lens::CoordinateType coordinate_type) { + switch (coordinate_type) { + case lens::COORDINATE_TYPE_UNSPECIFIED: + return lens::mojom::Polygon_CoordinateType::kUnspecified; + case lens::NORMALIZED: + return lens::mojom::Polygon_CoordinateType::kNormalized; + case lens::IMAGE: + return lens::mojom::Polygon_CoordinateType::kImage; + } + return lens::mojom::Polygon_CoordinateType::kUnspecified; +} + +lens::mojom::PolygonPtr CreatePolygonMojomFromProto( + lens::Polygon proto_polygon) { + lens::mojom::PolygonPtr polygon = lens::mojom::Polygon::New(); + + std::vector<lens::mojom::VertexPtr> vertices; + for (auto vertex : proto_polygon.vertex()) { + vertices.push_back(lens::mojom::Vertex::New(vertex.x(), vertex.y())); + } + polygon->vertex = std::move(vertices); + polygon->vertex_ordering = ProtoToMojo(proto_polygon.vertex_ordering()); + polygon->coordinate_type = ProtoToMojo(proto_polygon.coordinate_type()); + + return polygon; +} + lens::mojom::GeometryPtr CreateGeometryMojomFromProto( lens::Geometry response_geometry) { lens::mojom::GeometryPtr geometry = lens::mojom::Geometry::New(); @@ -38,6 +81,13 @@ center_rotated_box->rotation = bounding_box_response.rotation_z(); geometry->bounding_box = std::move(center_rotated_box); + + std::vector<lens::mojom::PolygonPtr> polygons; + for (auto polygon : response_geometry.segmentation_polygon()) { + polygons.push_back(CreatePolygonMojomFromProto(polygon)); + } + geometry->segmentation_polygon = std::move(polygons); + return geometry; }
diff --git a/chrome/browser/lens/lens_overlay/lens_overlay_proto_converter_unittest.cc b/chrome/browser/lens/lens_overlay/lens_overlay_proto_converter_unittest.cc index 3231db58..3d8e2ca 100644 --- a/chrome/browser/lens/lens_overlay/lens_overlay_proto_converter_unittest.cc +++ b/chrome/browser/lens/lens_overlay/lens_overlay_proto_converter_unittest.cc
@@ -6,6 +6,7 @@ #include "base/strings/stringprintf.h" #include "chrome/browser/lens/core/mojom/geometry.mojom.h" +#include "chrome/browser/lens/core/mojom/polygon.mojom.h" #include "chrome/browser/lens/core/mojom/overlay_object.mojom-forward.h" #include "chrome/browser/lens/core/mojom/overlay_object.mojom.h" #include "chrome/browser/lens/core/mojom/text.mojom-forward.h" @@ -95,6 +96,14 @@ return object; } + lens::OverlayObject CreateServerOverlayObjectWithPolygon( + BoundingBoxStruct box) { + lens::OverlayObject object; + object.set_id(box.id); + CreateServerGeometryWithPolygon(box, object.mutable_geometry()); + return object; + } + void CreateServerText(TextStruct text_struct, lens::Text* text) { text->set_content_language(text_struct.content_language); auto* paragraph = text->mutable_text_layout()->add_paragraphs(); @@ -122,7 +131,18 @@ geometry->mutable_bounding_box()->set_coordinate_type(box.coordinate_type); } - void VerifiyGeometryDimensionsAreEqual( + void CreateServerGeometryWithPolygon( + BoundingBoxStruct box, lens::Geometry* geometry) { + CreateServerGeometry(box, geometry); + auto* polygon = geometry->add_segmentation_polygon(); + auto* vertex = polygon->add_vertex(); + vertex->set_x(0.19); + vertex->set_y(0.21); + polygon->set_vertex_ordering(lens::Polygon::CLOCKWISE); + polygon->set_coordinate_type(lens::NORMALIZED); + } + + void VerifyGeometriesAreEqual( lens::Geometry server_geometry, lens::mojom::GeometryPtr mojo_geometry) { EXPECT_EQ(gfx::PointF(server_geometry.bounding_box().center_x(), @@ -136,6 +156,29 @@ EXPECT_EQ( static_cast<int>(server_geometry.bounding_box().coordinate_type()), static_cast<int>(mojo_geometry->bounding_box->coordinate_type)); + + EXPECT_EQ(static_cast<size_t>( + server_geometry.segmentation_polygon().size()), + mojo_geometry->segmentation_polygon.size()); + for (int i = 0; i < server_geometry.segmentation_polygon().size(); i++) { + lens::Polygon server_polygon = + server_geometry.segmentation_polygon().at(i); + lens::mojom::PolygonPtr mojo_polygon = + mojo_geometry->segmentation_polygon.at(i)->Clone(); + EXPECT_EQ(static_cast<size_t>(server_polygon.vertex().size()), + mojo_polygon->vertex.size()); + for (int j = 0; j < server_polygon.vertex().size(); j++) { + lens::Polygon::Vertex server_vertex = server_polygon.vertex().at(j); + lens::mojom::VertexPtr mojo_vertex = + mojo_polygon->vertex.at(j)->Clone(); + EXPECT_EQ(server_vertex.x(), mojo_vertex->x); + EXPECT_EQ(server_vertex.y(), mojo_vertex->y); + } + EXPECT_EQ(static_cast<int>(server_polygon.vertex_ordering()), + static_cast<int>(mojo_polygon->vertex_ordering)); + EXPECT_EQ(static_cast<int>(server_polygon.coordinate_type()), + static_cast<int>(mojo_polygon->coordinate_type)); + } } void VerifyOverlayObjectsAreEqual( @@ -147,7 +190,7 @@ lens::OverlayObject server_object = server_objects.at(i); lens::mojom::OverlayObjectPtr mojo_object = mojo_objects.at(i)->Clone(); EXPECT_EQ(server_object.id(), mojo_object->id); - VerifiyGeometryDimensionsAreEqual(server_object.geometry(), + VerifyGeometriesAreEqual(server_object.geometry(), std::move(mojo_object->geometry)); } } @@ -157,7 +200,7 @@ CreateObjectsMojomArrayFromServerResponse) { std::vector<lens::OverlayObject> server_objects = { CreateServerOverlayObject(kTestBoundingBox1), - CreateServerOverlayObject(kTestBoundingBox2)}; + CreateServerOverlayObjectWithPolygon(kTestBoundingBox2)}; lens::LensOverlayServerResponse server_response = CreateLensServerOverlayResponse(server_objects); @@ -212,14 +255,14 @@ EXPECT_TRUE(mojo_paragraph->writing_direction.has_value()); EXPECT_EQ(static_cast<int>(mojo_paragraph->writing_direction.value()), static_cast<int>(kTestText.writing_direction)); - VerifiyGeometryDimensionsAreEqual(server_paragraph.geometry(), + VerifyGeometriesAreEqual(server_paragraph.geometry(), mojo_paragraph->geometry->Clone()); // Compare line for a paragraph. EXPECT_EQ(mojo_paragraph->lines.size(), static_cast<unsigned long>(1)); lens::TextLayout_Line server_line = server_paragraph.lines()[0]; lens::mojom::LinePtr mojo_line = mojo_paragraph->lines[0]->Clone(); - VerifiyGeometryDimensionsAreEqual(server_line.geometry(), + VerifyGeometriesAreEqual(server_line.geometry(), mojo_line->geometry->Clone()); // Compare words in line. @@ -228,7 +271,7 @@ EXPECT_EQ(mojo_word->plain_text, kTestText.word_plain_text); EXPECT_EQ(mojo_word->text_separator, kTestText.word_text_seperator); lens::TextLayout_Word server_word = server_line.words()[0]; - VerifiyGeometryDimensionsAreEqual(server_word.geometry(), + VerifyGeometriesAreEqual(server_word.geometry(), mojo_word->geometry->Clone()); EXPECT_TRUE(mojo_word->writing_direction.has_value()); EXPECT_EQ(static_cast<int>(mojo_word->writing_direction.value()),
diff --git a/chrome/browser/platform_experience/win b/chrome/browser/platform_experience/win index 8d47ead..bb7b461 160000 --- a/chrome/browser/platform_experience/win +++ b/chrome/browser/platform_experience/win
@@ -1 +1 @@ -Subproject commit 8d47eadc639188d06f1ece609096a8e06cb1aae0 +Subproject commit bb7b46198c60bc9af0b1b5b063396befa4dbe0a1
diff --git a/chrome/browser/resources/lens/overlay/BUILD.gn b/chrome/browser/resources/lens/overlay/BUILD.gn index 42640bd..7f5bd683 100644 --- a/chrome/browser/resources/lens/overlay/BUILD.gn +++ b/chrome/browser/resources/lens/overlay/BUILD.gn
@@ -50,6 +50,7 @@ "$root_gen_dir/chrome/browser/lens/core/mojom/lens.mojom-webui.ts", "$root_gen_dir/chrome/browser/lens/core/mojom/text.mojom-webui.ts", "$root_gen_dir/chrome/browser/lens/core/mojom/overlay_object.mojom-webui.ts", + "$root_gen_dir/chrome/browser/lens/core/mojom/polygon.mojom-webui.ts", "$root_gen_dir/chrome/browser/lens/core/mojom/geometry.mojom-webui.ts", ]
diff --git a/chrome/browser/resources/lens/overlay/object_layer.html b/chrome/browser/resources/lens/overlay/object_layer.html index 7ae3bef..1763b6e8 100644 --- a/chrome/browser/resources/lens/overlay/object_layer.html +++ b/chrome/browser/resources/lens/overlay/object_layer.html
@@ -9,7 +9,18 @@ border: 2px solid green; opacity: 50%; } + + #objectSelectionCanvas { + top: 0; + left: 0; + position: absolute; + pointer-events: none; + } </style> +<canvas id="objectSelectionCanvas" height="[[canvasHeight]]" + width="[[canvasWidth]]"></canvas> <template id="objectsContainer" is="dom-repeat" items="[[renderedObjects]]"> - <div style$="[[getObjectStyle(item)]]" class="object"></div> + <div style$="[[getObjectStyle(item)]]" class="object" + on-pointerenter="handlePointerEnter" on-pointerleave="handlePointerLeave"> + </div> </template>
diff --git a/chrome/browser/resources/lens/overlay/object_layer.ts b/chrome/browser/resources/lens/overlay/object_layer.ts index a93e82a..285d9f38 100644 --- a/chrome/browser/resources/lens/overlay/object_layer.ts +++ b/chrome/browser/resources/lens/overlay/object_layer.ts
@@ -4,7 +4,7 @@ import './strings.m.js'; -import {assert} from '//resources/js/assert.js'; +import {assert, assertInstanceof} from '//resources/js/assert.js'; import {loadTimeData} from '//resources/js/load_time_data.js'; import {PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import type {DomRepeat} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js'; @@ -15,6 +15,7 @@ import type {LensPageCallbackRouter} from './lens.mojom-webui.js'; import {getTemplate} from './object_layer.html.js'; import type {OverlayObject} from './overlay_object.mojom-webui.js'; +import {Polygon_CoordinateType} from './polygon.mojom-webui.js'; import type {PostSelectionBoundingBox} from './post_selection_renderer.js'; import type {GestureEvent} from './selection_utils.js'; @@ -65,6 +66,7 @@ export interface ObjectLayerElement { $: { objectsContainer: DomRepeat, + objectSelectionCanvas: HTMLCanvasElement, }; } @@ -82,6 +84,8 @@ static get properties() { return { + canvasHeight: Number, + canvasWidth: Number, renderedObjects: { type: Array, value: () => [], @@ -94,6 +98,9 @@ }; } + private canvasHeight: number; + private canvasWidth: number; + private context: CanvasRenderingContext2D; // The objects rendered in this layer. private renderedObjects: OverlayObject[]; @@ -101,6 +108,12 @@ BrowserProxyImpl.getInstance().callbackRouter; private objectsReceivedListenerId: number|null = null; + override ready() { + super.ready(); + + this.context = this.$.objectSelectionCanvas.getContext('2d')!; + } + override connectedCallback() { super.connectedCallback(); @@ -141,6 +154,76 @@ return true; } + private handlePointerEnter(event: PointerEvent) { + assertInstanceof(event.target, HTMLElement); + const object = + this.$.objectsContainer.itemForElement(event.target); + this.drawObject(object); + } + + private handlePointerLeave() { + this.clearCanvas(); + } + + setCanvasSizeTo(width: number, height: number) { + // Resetting the canvas width and height also clears the canvas. + this.canvasWidth = width; + this.canvasHeight = height; + } + + private drawObject(object: OverlayObject) { + const polygons = object.geometry.segmentationPolygon; + if (!polygons) { + return; + } + const objectBoundingBox = object.geometry.boundingBox; + // Fit a square around the bounding box to use for gradient coordinates. + const longestEdge = + Math.max(objectBoundingBox.box.width, objectBoundingBox.box.height); + const left = (objectBoundingBox.box.x - longestEdge / 2) * this.canvasWidth; + const top = (objectBoundingBox.box.y - longestEdge / 2) * this.canvasHeight; + const right = + (objectBoundingBox.box.x + longestEdge / 2) * this.canvasWidth; + const bottom = + (objectBoundingBox.box.y + longestEdge / 2) * this.canvasHeight; + + this.context.beginPath(); + for (const polygon of polygons) { + // TODO(b/330183480): Currently, we are assuming that polygon + // coordinates are normalized. We should still implement + // rendering in case this assumption is ever violated. + if (polygon.coordinateType !== Polygon_CoordinateType.kNormalized) { + continue; + } + + const firstVertex = polygon.vertex[0]; + this.context.moveTo( + firstVertex.x * this.canvasWidth, firstVertex.y * this.canvasHeight); + for (const vertex of polygon.vertex.slice(1)) { + this.context.lineTo( + vertex.x * this.canvasWidth, vertex.y * this.canvasHeight); + } + } + + this.context.lineCap = 'round'; + this.context.lineJoin = 'round'; + this.context.lineWidth = 4; + const gradient = this.context.createLinearGradient( + left, + top, + right, + bottom, + ); + gradient.addColorStop(0, '#0177DC'); + gradient.addColorStop(1, '#D5E3FF'); + this.context.strokeStyle = gradient; + this.context.stroke(); + } + + private clearCanvas() { + this.context.clearRect(0, 0, this.canvasWidth, this.canvasHeight); + } + private onObjectsReceived(objects: OverlayObject[]) { // Sort objects by descending bounding box areas so that smaller objects // are rendered over, and take priority over, larger objects.
diff --git a/chrome/browser/resources/lens/overlay/selection_overlay.ts b/chrome/browser/resources/lens/overlay/selection_overlay.ts index e0fc7489..0deba9c 100644 --- a/chrome/browser/resources/lens/overlay/selection_overlay.ts +++ b/chrome/browser/resources/lens/overlay/selection_overlay.ts
@@ -226,6 +226,8 @@ this.$.selectionOverlay.getBoundingClientRect(); this.$.regionSelectionLayer.setCanvasSizeTo( selectionOverlayBounds.width, selectionOverlayBounds.height); + this.$.objectSelectionLayer.setCanvasSizeTo( + selectionOverlayBounds.width, selectionOverlayBounds.height); } // Updates the currentGesture to correspond with the given PointerEvent.
diff --git a/chrome/browser/resources/side_panel/read_anything/language_menu.html b/chrome/browser/resources/side_panel/read_anything/language_menu.html index f303edf2..e4461b1 100644 --- a/chrome/browser/resources/side_panel/read_anything/language_menu.html +++ b/chrome/browser/resources/side_panel/read_anything/language_menu.html
@@ -4,7 +4,7 @@ width: auto; margin-left: var(--sp-body-padding); margin-right: var(--sp-body-padding); - height: 60%; + height: fit-content; } cr-icon { @@ -60,6 +60,7 @@ } .language-menu-body { + height: 50vh; padding-bottom: 16px; }
diff --git a/chrome/browser/resources/side_panel/read_anything/read_anything.d.ts b/chrome/browser/resources/side_panel/read_anything/read_anything.d.ts index b82a416f9..513fa1db 100644 --- a/chrome/browser/resources/side_panel/read_anything/read_anything.d.ts +++ b/chrome/browser/resources/side_panel/read_anything/read_anything.d.ts
@@ -166,8 +166,8 @@ // Called when the voice used for speech is changed via the webui toolbar. function onVoiceChange(voice: string, lang: string): void; - // Called when a language is enabled/disabled for via the webui language - // menu. + // Called when a language is enabled/disabled for Read Aloud + // via the webui language menu. function onLanguagePrefChange(lang: string, enabled: boolean): void; // Called when the highlight granularity is changed via the webui toolbar.
diff --git a/chrome/browser/resources/side_panel/reading_list/BUILD.gn b/chrome/browser/resources/side_panel/reading_list/BUILD.gn index 504b7ee..5340e1a 100644 --- a/chrome/browser/resources/side_panel/reading_list/BUILD.gn +++ b/chrome/browser/resources/side_panel/reading_list/BUILD.gn
@@ -21,7 +21,10 @@ ] non_web_component_files = [ "reading_list_api_proxy.ts" ] - css_files = [ "reading_list_item.css" ] + css_files = [ + "reading_list_app.css", + "reading_list_item.css", + ] icons_html_files = [ "icons.html" ] @@ -31,6 +34,7 @@ html_to_wrapper_template = "detect" ts_composite = true ts_deps = [ + "../shared:build_ts", "//third_party/lit/v3_0:build_ts", "//third_party/polymer/v3_0:library", "//ui/webui/resources/cr_components/color_change_listener:build_ts", @@ -39,6 +43,11 @@ "//ui/webui/resources/js:build_ts", "//ui/webui/resources/mojo:build_ts", ] + ts_path_mappings = + [ "chrome://read-later.top-chrome/shared/*|" + + rebase_path( + "$root_gen_dir/chrome/browser/resources/side_panel/shared/tsc/*", + target_gen_dir) ] ts_definitions = [ "//tools/typescript/definitions/metrics_private.d.ts" ] webui_context_type = "trusted"
diff --git a/chrome/browser/resources/side_panel/reading_list/icons.html b/chrome/browser/resources/side_panel/reading_list/icons.html index e70cc8d9..accc5ab 100644 --- a/chrome/browser/resources/side_panel/reading_list/icons.html +++ b/chrome/browser/resources/side_panel/reading_list/icons.html
@@ -1,4 +1,4 @@ -<iron-iconset-svg name="read-later" size="24"> +<cr-iconset name="read-later" size="24"> <svg> <defs> <!-- Material icons --> @@ -7,4 +7,4 @@ </path> </g> </defs> -</iron-iconset-svg> \ No newline at end of file +</cr-iconset>
diff --git a/chrome/browser/resources/side_panel/reading_list/reading_list.html b/chrome/browser/resources/side_panel/reading_list/reading_list.html index 64287dce..0343662 100644 --- a/chrome/browser/resources/side_panel/reading_list/reading_list.html +++ b/chrome/browser/resources/side_panel/reading_list/reading_list.html
@@ -17,7 +17,6 @@ <body> <reading-list-app></reading-list-app> <script type="module" src="reading_list_app.js"></script> - <script type="module" src="chrome://resources/cr_elements/mwb_shared_vars.css.js"> </script> </body> </html>
diff --git a/chrome/browser/resources/side_panel/reading_list/reading_list_app.css b/chrome/browser/resources/side_panel/reading_list/reading_list_app.css new file mode 100644 index 0000000..35e57c0 --- /dev/null +++ b/chrome/browser/resources/side_panel/reading_list/reading_list_app.css
@@ -0,0 +1,35 @@ +/* Copyright 2024 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. */ + +/* #css_wrapper_metadata_start + * #type=style-lit + * #import=chrome://read-later.top-chrome/shared/sp_shared_style_lit.css.js + * #import=chrome://resources/cr_elements/cr_hidden_style_lit.css.js + * #import=chrome://resources/cr_elements/mwb_element_shared_style_lit.css.js + * #scheme=relative + * #include=mwb-element-shared-style-lit cr-hidden-style-lit sp-shared-style-lit + * #css_wrapper_metadata_end */ + +#content { + display: flex; + flex-direction: column; + height: 100vh; +} + +/* Transition required to ensure focus highlight after button press. + * See crbug/1358900. + */ +reading-list-item:first-of-type:last-of-type { + transition: background 100ms; +} + +#readingListList { + max-height: none; + overflow: auto; + padding-block-start: var(--sp-body-padding); +} + +sp-heading { + margin: 8px 16px; +}
diff --git a/chrome/browser/resources/side_panel/reading_list/reading_list_app.html b/chrome/browser/resources/side_panel/reading_list/reading_list_app.html index 9f91bda6..f818500 100644 --- a/chrome/browser/resources/side_panel/reading_list/reading_list_app.html +++ b/chrome/browser/resources/side_panel/reading_list/reading_list_app.html
@@ -1,79 +1,51 @@ -<style include="mwb-element-shared-style cr-hidden-style sp-shared-style"> - #content { - display: flex; - flex-direction: column; - height: 100vh; - } - - /* Transition required to ensure focus highlight after button press. - * See crbug/1358900. - */ - reading-list-item:first-of-type:last-of-type { - transition: background 100ms; - } - - #readingListList { - max-height: none; - overflow: auto; - padding-block-start: var(--sp-body-padding); - } - - sp-heading { - margin: 8px 16px; - } -</style> - -<div id="content" hidden="[[loadingContent_]]"> +<div id="content" ?hidden="${this.loadingContent_}"> <sp-empty-state - hidden="[[!isReadingListEmpty_(unreadItems_, readItems_)]]" + ?hidden="${!this.isReadingListEmpty_()}" image-path="./images/read_later_empty.svg" dark-image-path="./images/read_later_empty_dark.svg" heading="$i18n{emptyStateHeader}" - body="[[getEmptyStateSubheaderText_()]]"> + body="${this.getEmptyStateSubheaderText_()}"> </sp-empty-state> <div id="readingListList" class="sp-scroller sp-scroller-top-of-page" - on-keydown="onItemKeyDown_" - hidden$="[[!shouldShowList_(unreadItems_, readItems_)]]"> - <div class="sp-card" hidden="[[!unreadItems_.length]]"> + @keydown="${this.onItemKeyDown_}" + ?hidden="${!this.shouldShowList_()}"> + <div class="sp-card" ?hidden="${!this.unreadItems_.length}"> <sp-heading compact hide-back-button> <h2 slot="heading">$i18n{unreadHeader}</h2> </sp-heading> - <template id="unreadItemsList" is="dom-repeat" items="[[unreadItems_]]"> - <reading-list-item data-url$="[[item.url.url]]" on-focus="onItemFocus_" - aria-label="[[ariaLabel_(item)]]" class="unread-item" - data="[[item]]" button-ripples="[[buttonRipples]]"> + ${this.unreadItems_.map((item, index) => html` + <reading-list-item data-url="${item.url.url}" data-index="${index}" + @focus="${this.onItemFocus_}" + aria-label="${this.ariaLabel_(item)}" class="unread-item" + .data="${item}" ?button-ripples="${this.buttonRipples}"> </reading-list-item> - </template> + `)} </div> - <div class="sp-cards-separator" - hidden$="[[!shouldShowHr_(unreadItems_, readItems_)]]"> - </div> - <div class="sp-card" hidden="[[!readItems_.length]]"> + <div class="sp-cards-separator" ?hidden="${!this.shouldShowHr_()}"></div> + <div class="sp-card" ?hidden="${!this.readItems_.length}"> <sp-heading compact hide-back-button> <h2 slot="heading">$i18n{readHeader}</h2> </sp-heading> - <template id="readItemsList" is="dom-repeat" items="[[readItems_]]"> - <reading-list-item data-url$="[[item.url.url]]" on-focus="onItemFocus_" - aria-label="[[ariaLabel_(item)]]" - data="[[item]]" button-ripples="[[buttonRipples]]"> + ${this.readItems_.map((item, index) => html` + <reading-list-item data-url="${item.url.url}" data-index="${index}" + @focus="${this.onItemFocus_}" + aria-label="${this.ariaLabel_(item)}" + .data="${item}" ?button-ripples="${this.buttonRipples}"> </reading-list-item> - </template> + `)} </div> </div> - <sp-footer pinned="[[!isReadingListEmpty_(unreadItems_, readItems_)]]"> + <sp-footer ?pinned="${!this.isReadingListEmpty_()}"> <cr-button id="currentPageActionButton" class="floating-button" - aria-label="[[getCurrentPageActionButtonText_( - currentPageActionButtonState_)]]" - on-click="onCurrentPageActionButtonClick_" - disabled="[[getCurrentPageActionButtonDisabled_( - currentPageActionButtonState_)]]"> - <iron-icon id="currentPageActionButtonIcon" aria-hidden="true" + aria-label="${this.getCurrentPageActionButtonText_()}" + @click="${this.onCurrentPageActionButtonClick_}" + ?disabled="${this.getCurrentPageActionButtonDisabled_()}"> + <cr-icon id="currentPageActionButtonIcon" aria-hidden="true" slot="prefix-icon" - icon="[[getCurrentPageActionButtonIcon_( - currentPageActionButtonState_)]]"> - </iron-icon> + icon="${this.getCurrentPageActionButtonIcon_()}"> + </cr-icon> <div id="currentPageActionButtonText" aria-hidden="true"> - [[getCurrentPageActionButtonText_(currentPageActionButtonState_)]] + ${this.getCurrentPageActionButtonText_()} </div> </cr-button> </sp-footer>
diff --git a/chrome/browser/resources/side_panel/reading_list/reading_list_app.ts b/chrome/browser/resources/side_panel/reading_list/reading_list_app.ts index 4f12b20..995d81a 100644 --- a/chrome/browser/resources/side_panel/reading_list/reading_list_app.ts +++ b/chrome/browser/resources/side_panel/reading_list/reading_list_app.ts
@@ -7,47 +7,36 @@ import 'chrome://read-later.top-chrome/shared/sp_heading.js'; import 'chrome://read-later.top-chrome/shared/sp_shared_style.css.js'; import 'chrome://resources/cr_elements/cr_button/cr_button.js'; -import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.js'; -import 'chrome://resources/cr_elements/cr_hidden_style.css.js'; -import 'chrome://resources/cr_elements/cr_shared_vars.css.js'; -import 'chrome://resources/cr_elements/mwb_element_shared_style.css.js'; -import 'chrome://resources/cr_elements/mwb_shared_style.css.js'; -import 'chrome://resources/cr_elements/mwb_shared_vars.css.js'; -import 'chrome://resources/polymer/v3_0/iron-selector/iron-selector.js'; +import 'chrome://resources/cr_elements/cr_icon/cr_icon.js'; +import 'chrome://resources/cr_elements/icons_lit.html.js'; import './reading_list_item.js'; import '../strings.m.js'; import {ColorChangeUpdater} from '//resources/cr_components/color_change_listener/colors_css_updater.js'; -import type {HelpBubbleMixinInterface} from 'chrome://resources/cr_components/help_bubble/help_bubble_mixin.js'; -import {HelpBubbleMixin} from 'chrome://resources/cr_components/help_bubble/help_bubble_mixin.js'; +import {HelpBubbleMixinLit} from 'chrome://resources/cr_components/help_bubble/help_bubble_mixin_lit.js'; +import {CrSelectableMixin} from 'chrome://resources/cr_elements/cr_menu_selector/cr_selectable_mixin.js'; import {assertNotReached} from 'chrome://resources/js/assert.js'; import {EventTracker} from 'chrome://resources/js/event_tracker.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; -import {listenOnce} from 'chrome://resources/js/util.js'; -import {IronSelectableBehavior} from 'chrome://resources/polymer/v3_0/iron-selector/iron-selectable.js'; -import type {DomRepeat} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; -import {mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {CrLitElement} from 'chrome://resources/lit/v3_0/lit.rollup.js'; -import {getTemplate} from './reading_list_app.html.js'; import type {ReadLaterEntriesByStatus, ReadLaterEntry} from './reading_list.mojom-webui.js'; import {CurrentPageActionButtonState} from './reading_list.mojom-webui.js'; import type {ReadingListApiProxy} from './reading_list_api_proxy.js'; import {ReadingListApiProxyImpl} from './reading_list_api_proxy.js'; +import {getCss} from './reading_list_app.css.js'; +import {getHtml} from './reading_list_app.html.js'; import type {ReadingListItemElement} from './reading_list_item.js'; import {MARKED_AS_READ_UI_EVENT} from './reading_list_item.js'; const navigationKeys: Set<string> = new Set(['ArrowDown', 'ArrowUp']); -const ReadingListAppElementBase = mixinBehaviors( - [IronSelectableBehavior], - HelpBubbleMixin(PolymerElement)) as { - new (): PolymerElement & HelpBubbleMixinInterface & IronSelectableBehavior, -}; +const ReadingListAppElementBase = + HelpBubbleMixinLit(CrSelectableMixin(CrLitElement)); export interface ReadingListAppElement { $: { readingListList: HTMLElement, - unreadItemsList: DomRepeat, }; } @@ -61,50 +50,30 @@ return 'reading-list-app'; } - static get template() { - return getTemplate(); + static override get styles() { + return getCss(); } - static get properties() { + override render() { + return getHtml.bind(this)(); + } + + static override get properties() { return { - /** Property for IronSelectableBehavior */ - attrForSelected: { - type: String, - value: 'data-url', - }, - - unreadItems_: { - type: Array, - value: [], - }, - - readItems_: { - type: Array, - value: [], - }, - - currentPageActionButtonState_: { - type: Number, - value: CurrentPageActionButtonState.kDisabled, - }, - - buttonRipples: { - type: Boolean, - value: () => loadTimeData.getBoolean('useRipples'), - }, - - loadingContent_: { - type: Boolean, - value: true, - }, + unreadItems_: {type: Array}, + readItems_: {type: Array}, + currentPageActionButtonState_: {type: Number}, + buttonRipples: {type: Boolean}, + loadingContent_: {type: Boolean}, }; } - private unreadItems_: ReadLaterEntry[]; - private readItems_: ReadLaterEntry[]; - private currentPageActionButtonState_: CurrentPageActionButtonState; - buttonRipples: boolean; - private loadingContent_: boolean; + protected unreadItems_: ReadLaterEntry[] = []; + protected readItems_: ReadLaterEntry[] = []; + private currentPageActionButtonState_: CurrentPageActionButtonState = + CurrentPageActionButtonState.kDisabled; + buttonRipples: boolean = loadTimeData.getBoolean('useRipples'); + protected loadingContent_: boolean = true; private apiProxy_: ReadingListApiProxy = ReadingListApiProxyImpl.getInstance(); private listenerIds_: number[] = []; @@ -115,6 +84,9 @@ super(); ColorChangeUpdater.forDocument().start(); + /** Property for CrSelectableMixin */ + this.attrForSelected = 'data-url'; + this.visibilityChangedListener_ = () => { // Refresh Reading List's list data when transitioning into a visible // state. @@ -133,7 +105,8 @@ const callbackRouter = this.apiProxy_.getCallbackRouter(); this.listenerIds_.push( callbackRouter.itemsChanged.addListener( - (entries: ReadLaterEntriesByStatus) => this.updateItems_(entries)), + (entries: ReadLaterEntriesByStatus) => + this.updateReadingListItems_(entries)), callbackRouter.currentPageActionButtonStateChanged.addListener( (state: CurrentPageActionButtonState) => this.updateCurrentPageActionButton_(state))); @@ -142,7 +115,8 @@ this.apiProxy_.updateCurrentPageActionButtonState(); this.readingListEventTracker_.add( - this.root!, MARKED_AS_READ_UI_EVENT, this.onMarkedAsRead.bind(this)); + this.shadowRoot!, MARKED_AS_READ_UI_EVENT, + this.onMarkedAsRead_.bind(this)); } override disconnectedCallback() { @@ -156,28 +130,28 @@ this.unregisterHelpBubble(READING_LIST_UNREAD_ELEMENT_ID); - this.readingListEventTracker_.remove(this.root!, MARKED_AS_READ_UI_EVENT); + this.readingListEventTracker_.remove( + this.shadowRoot!, MARKED_AS_READ_UI_EVENT); } - override ready() { - super.ready(); - + override firstUpdated() { this.registerHelpBubble( ADD_CURRENT_TAB_ELEMENT_ID, '#currentPageActionButton'); - this.$.unreadItemsList.addEventListener( - 'rendered-item-count-changed', () => { - const firstUnreadItem = - this.root!.querySelector<HTMLElement>('.unread-item'); - if (firstUnreadItem) { - this.registerHelpBubble( - READING_LIST_UNREAD_ELEMENT_ID, firstUnreadItem); - } - }); + const firstUnreadItem = + this.shadowRoot!.querySelector<HTMLElement>('.unread-item'); + if (firstUnreadItem) { + this.registerHelpBubble(READING_LIST_UNREAD_ELEMENT_ID, firstUnreadItem); + } } - /** Overridden from IronSelectableBehavior to allow nested items. */ - override get items() { + // Override `observeItems` from CrSelectableMixin. + override observeItems() { + // Turn off default observation logic in CrSelectableMixin. + } + + // Override `queryItems` from CrSelectableMixin. + override queryItems() { return Array.from(this.shadowRoot!.querySelectorAll('reading-list-item')); } @@ -193,31 +167,26 @@ 'ReadingList.WebUI.ReadingListDataReceived', Math.round(Date.now() - getEntriesStartTimestamp)); - if (entries.unreadEntries.length !== 0 || - entries.readEntries.length !== 0) { - listenOnce(this.$.readingListList, 'dom-change', () => { - // Push ShowUI() callback to the event queue to allow deferred rendering - // to take place. - setTimeout(() => this.apiProxy_.showUi(), 0); - }); - } else { - setTimeout(() => this.apiProxy_.showUi(), 0); - } - - this.updateItems_(entries); + // Push ShowUI() callback to the event queue to allow deferred rendering + // to take place. + setTimeout(() => this.apiProxy_.showUi(), 0); + this.updateReadingListItems_(entries); } - private updateItems_(entries: ReadLaterEntriesByStatus) { + private async updateReadingListItems_(entries: ReadLaterEntriesByStatus) { this.unreadItems_ = entries.unreadEntries; this.readItems_ = entries.readEntries; this.loadingContent_ = false; + + await this.updateComplete; + this.itemsChanged(); } private updateCurrentPageActionButton_(state: CurrentPageActionButtonState) { this.currentPageActionButtonState_ = state; } - private ariaLabel_(item: ReadLaterEntry): string { + protected ariaLabel_(item: ReadLaterEntry): string { return `${item.title} - ${item.displayUrl} - ${ item.displayTimeSinceUpdate}`; } @@ -225,36 +194,30 @@ /** * @return The appropriate text for the empty state subheader */ - private getEmptyStateSubheaderText_(): string { + protected getEmptyStateSubheaderText_(): string { return loadTimeData.getString('emptyStateAddFromDialogSubheader'); } /** * @return The appropriate text for the current page action button */ - private getCurrentPageActionButtonText_(): string { - if (this.getCurrentPageActionButtonMarkAsRead_()) { - return loadTimeData.getString('markCurrentTabAsRead'); - } else { - return loadTimeData.getString('addCurrentTab'); - } + protected getCurrentPageActionButtonText_(): string { + return loadTimeData.getString( + this.getCurrentPageActionButtonMarkAsRead_() ? 'markCurrentTabAsRead' : + 'addCurrentTab'); } /** * @return The appropriate cr icon for the current page action button */ - private getCurrentPageActionButtonIcon_(): string { - if (this.getCurrentPageActionButtonMarkAsRead_()) { - return 'cr:check'; - } else { - return 'cr:add'; - } + protected getCurrentPageActionButtonIcon_(): string { + return this.getCurrentPageActionButtonMarkAsRead_() ? 'cr:check' : 'cr:add'; } /** * @return Whether the current page action button should be disabled */ - private getCurrentPageActionButtonDisabled_(): boolean { + protected getCurrentPageActionButtonDisabled_(): boolean { return this.currentPageActionButtonState_ === CurrentPageActionButtonState.kDisabled; } @@ -268,11 +231,11 @@ CurrentPageActionButtonState.kMarkAsRead; } - private isReadingListEmpty_(): boolean { + protected isReadingListEmpty_(): boolean { return this.unreadItems_.length === 0 && this.readItems_.length === 0; } - private onCurrentPageActionButtonClick_() { + protected onCurrentPageActionButtonClick_() { if (this.getCurrentPageActionButtonMarkAsRead_()) { this.apiProxy_.markCurrentTabAsRead(); this.sendTutorialCustomEvent(); @@ -281,7 +244,7 @@ } } - private onMarkedAsRead() { + private onMarkedAsRead_() { this.sendTutorialCustomEvent(); } @@ -293,17 +256,19 @@ } - private onItemKeyDown_(e: KeyboardEvent) { + protected async onItemKeyDown_(e: KeyboardEvent) { if (e.shiftKey || !navigationKeys.has(e.key)) { return; } switch (e.key) { case 'ArrowDown': this.selectNext(); + await this.updateComplete; (this.selectedItem as ReadingListItemElement).focus(); break; case 'ArrowUp': this.selectPrevious(); + await this.updateComplete; (this.selectedItem as ReadingListItemElement).focus(); break; default: @@ -313,15 +278,15 @@ e.stopPropagation(); } - private onItemFocus_(e: Event) { + protected onItemFocus_(e: Event) { this.selected = (e.currentTarget as ReadingListItemElement).dataset['url']!; } - private shouldShowHr_(): boolean { + protected shouldShowHr_(): boolean { return this.unreadItems_.length > 0 && this.readItems_.length > 0; } - private shouldShowList_(): boolean { + protected shouldShowList_(): boolean { return this.unreadItems_.length > 0 || this.readItems_.length > 0; } }
diff --git a/chrome/browser/resources/side_panel/reading_list/reading_list_item.ts b/chrome/browser/resources/side_panel/reading_list/reading_list_item.ts index fb412c2..fc31af0 100644 --- a/chrome/browser/resources/side_panel/reading_list/reading_list_item.ts +++ b/chrome/browser/resources/side_panel/reading_list/reading_list_item.ts
@@ -4,7 +4,7 @@ import 'chrome://resources/cr_elements/cr_url_list_item/cr_url_list_item.js'; import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.js'; -import 'chrome://resources/cr_elements/icons.html.js'; +import 'chrome://resources/cr_elements/icons_lit.html.js'; import './icons.html.js'; import type {CrUrlListItemElement} from 'chrome://resources/cr_elements/cr_url_list_item/cr_url_list_item.js';
diff --git a/chrome/browser/resources/side_panel/shared/BUILD.gn b/chrome/browser/resources/side_panel/shared/BUILD.gn index 96befffd..67cdec1 100644 --- a/chrome/browser/resources/side_panel/shared/BUILD.gn +++ b/chrome/browser/resources/side_panel/shared/BUILD.gn
@@ -18,14 +18,20 @@ ] css_files = [ - "sp_shared_vars.css", + "sp_empty_state.css", + "sp_footer.css", "sp_shared_style.css", + "sp_shared_style_lit.css", + "sp_shared_vars.css", ] icons_html_files = [ "sp_icons.html" ] + html_to_wrapper_template = "detect" + ts_composite = true ts_deps = [ + "//third_party/lit/v3_0:build_ts", "//third_party/polymer/v3_0:library", "//ui/webui/resources/cr_elements:build_ts", "//ui/webui/resources/js:build_ts",
diff --git a/chrome/browser/resources/side_panel/shared/sp_empty_state.css b/chrome/browser/resources/side_panel/shared/sp_empty_state.css new file mode 100644 index 0000000..a7668d5 --- /dev/null +++ b/chrome/browser/resources/side_panel/shared/sp_empty_state.css
@@ -0,0 +1,43 @@ +/* Copyright 2024 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. */ + +/* #css_wrapper_metadata_start + * #type=style-lit + * #import=//resources/cr_elements/cr_shared_vars.css.js + * #scheme=relative + * #css_wrapper_metadata_end */ + +:host { + align-items: center; + display: flex; + flex-direction: column; + text-align: center; +} + +picture { + align-items: center; + display: flex; + height: 144px; + justify-content: center; + width: 288px; + margin-block-end: 12px; +} + +#heading { + color: var(--sp-empty-state-heading-color, var(--cr-primary-text-color)); + font-size: 16px; + font-weight: 500; + line-height: 24px; + margin-block-end: 8px; + width: 259px; +} + +#body { + color: var(--sp-empty-state-body-color, var(--cr-secondary-text-color)); + font-size: 13px; + font-weight: 400; + line-height: 20px; + margin-block-end: 12px; + width: 229px; +}
diff --git a/chrome/browser/resources/side_panel/shared/sp_empty_state.html b/chrome/browser/resources/side_panel/shared/sp_empty_state.html index 11b9b2cc..1034bb8 100644 --- a/chrome/browser/resources/side_panel/shared/sp_empty_state.html +++ b/chrome/browser/resources/side_panel/shared/sp_empty_state.html
@@ -1,42 +1,6 @@ -<style> - :host { - align-items: center; - display: flex; - flex-direction: column; - text-align: center; - } - - picture { - align-items: center; - display: flex; - height: 144px; - justify-content: center; - width: 288px; - margin-block-end: 12px; - } - - #heading { - color: var(--sp-empty-state-heading-color, var(--cr-primary-text-color)); - font-size: 16px; - font-weight: 500; - line-height: 24px; - margin-block-end: 8px; - width: 259px; - } - - #body { - color: var(--sp-empty-state-body-color, var(--cr-secondary-text-color)); - font-size: 13px; - font-weight: 400; - line-height: 20px; - margin-block-end: 12px; - width: 229px; - } -</style> - <picture> - <source media="(prefers-color-scheme: dark)" srcset="[[darkImagePath]]"> - <img id="product-logo" srcset="[[imagePath]]" alt=""> + <source media="(prefers-color-scheme: dark)" srcset="${this.darkImagePath}"> + <img id="product-logo" srcset="${this.imagePath}" alt=""> </picture> -<div id="heading">[[heading]]</div> -<div id="body">[[body]]</div> +<div id="heading">${this.heading}</div> +<div id="body">${this.body}</div>
diff --git a/chrome/browser/resources/side_panel/shared/sp_empty_state.ts b/chrome/browser/resources/side_panel/shared/sp_empty_state.ts index cd89294..6854078e 100644 --- a/chrome/browser/resources/side_panel/shared/sp_empty_state.ts +++ b/chrome/browser/resources/side_panel/shared/sp_empty_state.ts
@@ -6,27 +6,30 @@ * @fileoverview Shared styles for showing an empty state for a side panel UI. */ -import '//resources/cr_elements/cr_shared_vars.css.js'; +import {CrLitElement} from '//resources/lit/v3_0/lit.rollup.js'; -import {PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {getCss} from './sp_empty_state.css.js'; +import {getHtml} from './sp_empty_state.html.js'; -import {getTemplate} from './sp_empty_state.html.js'; - -export class SpEmptyStateElement extends PolymerElement { +export class SpEmptyStateElement extends CrLitElement { static get is() { return 'sp-empty-state'; } - static get template() { - return getTemplate(); + static override get styles() { + return getCss(); } - static get properties() { + override render() { + return getHtml.bind(this)(); + } + + static override get properties() { return { - body: String, - darkImagePath: String, - heading: String, - imagePath: String, + body: {type: String}, + darkImagePath: {type: String}, + heading: {type: String}, + imagePath: {type: String}, }; }
diff --git a/chrome/browser/resources/side_panel/shared/sp_footer.css b/chrome/browser/resources/side_panel/shared/sp_footer.css new file mode 100644 index 0000000..4b7c9ab5 --- /dev/null +++ b/chrome/browser/resources/side_panel/shared/sp_footer.css
@@ -0,0 +1,24 @@ +/* Copyright 2024 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. */ + +/* #css_wrapper_metadata_start + * #type=style-lit + * #scheme=relative + * #css_wrapper_metadata_end */ + +:host { + display: flex; + justify-content: center; +} + +:host([pinned]) { + border-top: 0; + box-sizing: border-box; + display: block; + flex-shrink: 0; + height: 56px; + margin-block-start: auto; + padding: 8px; + position: relative; +}
diff --git a/chrome/browser/resources/side_panel/shared/sp_footer.html b/chrome/browser/resources/side_panel/shared/sp_footer.html index de08037..40faa62 100644 --- a/chrome/browser/resources/side_panel/shared/sp_footer.html +++ b/chrome/browser/resources/side_panel/shared/sp_footer.html
@@ -1,18 +1,2 @@ -<style> - :host { - display: flex; - justify-content: center; - } - :host([pinned]) { - border-top: 0; - box-sizing: border-box; - display: block; - flex-shrink: 0; - height: 56px; - margin-block-start: auto; - padding: 8px; - position: relative; - } -</style> <slot></slot>
diff --git a/chrome/browser/resources/side_panel/shared/sp_footer.ts b/chrome/browser/resources/side_panel/shared/sp_footer.ts index 4d3ced1..2ffb562 100644 --- a/chrome/browser/resources/side_panel/shared/sp_footer.ts +++ b/chrome/browser/resources/side_panel/shared/sp_footer.ts
@@ -9,33 +9,36 @@ import '//resources/cr_elements/cr_shared_vars.css.js'; -import {PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {CrLitElement} from '//resources/lit/v3_0/lit.rollup.js'; -import {getTemplate} from './sp_footer.html.js'; +import {getCss} from './sp_footer.css.js'; +import {getHtml} from './sp_footer.html.js'; -export class SpFooterElement extends PolymerElement { +export class SpFooterElement extends CrLitElement { static get is() { return 'sp-footer'; } - static get template() { - return getTemplate(); + static override get styles() { + return getCss(); } - static get properties() { + override render() { + return getHtml.bind(this)(); + } + + static override get properties() { return { pinned: { type: Boolean, - reflectToAttribute: true, - value: false, + reflect: true, }, }; } - pinned: boolean; + pinned: boolean = false; - override ready() { - super.ready(); + override firstUpdated() { this.setAttribute('role', 'toolbar'); } }
diff --git a/chrome/browser/resources/side_panel/shared/sp_shared_style_lit.css b/chrome/browser/resources/side_panel/shared/sp_shared_style_lit.css new file mode 100644 index 0000000..2690eca --- /dev/null +++ b/chrome/browser/resources/side_panel/shared/sp_shared_style_lit.css
@@ -0,0 +1,12 @@ +/* Copyright 2024 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. */ + +/* #css_wrapper_metadata_start + * #type=style-lit + * #import=./sp_shared_vars.css.js + * #scheme=relative + * #css_wrapper_metadata_end */ + +/* Purposefully empty since this style is generated at build time from the + * equivalent Polymer version. */
diff --git a/chrome/browser/resources/tab_search/tab_organization_group.ts b/chrome/browser/resources/tab_search/tab_organization_group.ts index ce878fa..51093f0 100644 --- a/chrome/browser/resources/tab_search/tab_organization_group.ts +++ b/chrome/browser/resources/tab_search/tab_organization_group.ts
@@ -152,7 +152,8 @@ } private showNewTabSectionHeader_(index: number) { - return this.firstNewTabIndex > 0 && this.firstNewTabIndex === index; + return loadTimeData.getBoolean('tabReorganizationDividerEnabled') && + this.firstNewTabIndex > 0 && this.firstNewTabIndex === index; } private onInputFocus_() {
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java index 931b7d8..bb57e26 100644 --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java
@@ -9,7 +9,6 @@ import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; -import android.view.ViewStub; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -53,6 +52,8 @@ import org.chromium.components.omnibox.AutocompleteMatch; import org.chromium.components.omnibox.action.OmniboxActionDelegate; import org.chromium.components.omnibox.suggestions.OmniboxSuggestionUiType; +import org.chromium.ui.AsyncViewProvider; +import org.chromium.ui.AsyncViewStub; import org.chromium.ui.ViewProvider; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.modaldialog.ModalDialogManager; @@ -177,26 +178,27 @@ private ViewProvider<SuggestionListViewHolder> createViewProvider( Context context, MVCListAdapter.ModelList modelList, boolean forcePhoneStyleOmnibox) { return new ViewProvider<SuggestionListViewHolder>() { + private AsyncViewProvider<ViewGroup> mAsyncProvider; private List<Callback<SuggestionListViewHolder>> mCallbacks = new ArrayList<>(); private SuggestionListViewHolder mHolder; @Override public void inflate() { + AsyncViewStub stub = + mParent.getRootView().findViewById(R.id.omnibox_results_container_stub); + stub.setShouldInflateOnBackgroundThread(true); + mAsyncProvider = AsyncViewProvider.of(stub, R.id.omnibox_results_container); + mAsyncProvider.whenLoaded(this::onAsyncInflationComplete); + mAsyncProvider.inflate(); + } + + private void onAsyncInflationComplete(ViewGroup container) { OmniboxSuggestionsDropdown dropdown = new OmniboxSuggestionsDropdown( context, mRecycledViewPool, forcePhoneStyleOmnibox); dropdown.setAdapter(mAdapter); - ViewGroup container = - (ViewGroup) - ((ViewStub) - mParent.getRootView() - .findViewById( - R.id - .omnibox_results_container_stub)) - .inflate(); - mHolder = new SuggestionListViewHolder(container, dropdown); for (int i = 0; i < mCallbacks.size(); i++) { mCallbacks.get(i).onResult(mHolder);
diff --git a/chrome/browser/ui/lens/lens_overlay_controller_browsertest.cc b/chrome/browser/ui/lens/lens_overlay_controller_browsertest.cc index 1c9074b..5b873f9 100644 --- a/chrome/browser/ui/lens/lens_overlay_controller_browsertest.cc +++ b/chrome/browser/ui/lens/lens_overlay_controller_browsertest.cc
@@ -12,6 +12,7 @@ #include "chrome/browser/lens/core/mojom/geometry.mojom.h" #include "chrome/browser/lens/core/mojom/lens.mojom.h" #include "chrome/browser/lens/core/mojom/overlay_object.mojom.h" +#include "chrome/browser/lens/core/mojom/polygon.mojom.h" #include "chrome/browser/lens/core/mojom/text.mojom.h" #include "chrome/browser/lens/lens_overlay/lens_overlay_url_builder.h" #include "chrome/browser/profiles/profile.h" @@ -75,7 +76,8 @@ lens::mojom::Geometry::New(lens::mojom::CenterRotatedBox::New( gfx::RectF(0.1, 0.1, 0.8, 0.8), 0.1, - lens::mojom::CenterRotatedBox_CoordinateType::kNormalized)); + lens::mojom::CenterRotatedBox_CoordinateType::kNormalized), + std::vector<lens::mojom::PolygonPtr>()); const lens::mojom::OverlayObjectPtr kTestOverlayObject = lens::mojom::OverlayObject::New("unique_id", kTestGeometry->Clone()); const lens::mojom::TextPtr kTestText =
diff --git a/chrome/browser/ui/toolbar/app_menu_model.cc b/chrome/browser/ui/toolbar/app_menu_model.cc index 16c2971..403f1a9 100644 --- a/chrome/browser/ui/toolbar/app_menu_model.cc +++ b/chrome/browser/ui/toolbar/app_menu_model.cc
@@ -1803,7 +1803,8 @@ kShowSearchCompanion); } #endif - if (TabOrganizationUtils::GetInstance()->IsEnabled(browser_->profile())) { + if (base::FeatureList::IsEnabled(features::kTabOrganizationAppMenuItem) && + TabOrganizationUtils::GetInstance()->IsEnabled(browser_->profile())) { auto* const tab_organization_service = TabOrganizationServiceFactory::GetForProfile(browser_->profile()); if (tab_organization_service) {
diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc index 99ef46f..0cf10abf 100644 --- a/chrome/browser/ui/ui_features.cc +++ b/chrome/browser/ui/ui_features.cc
@@ -330,10 +330,18 @@ "MultiTabOrganization", base::FEATURE_DISABLED_BY_DEFAULT); +BASE_FEATURE(kTabOrganizationAppMenuItem, + "TabOrganizationAppMenuItem", + base::FEATURE_ENABLED_BY_DEFAULT); + BASE_FEATURE(kTabReorganization, "TabReorganization", base::FEATURE_DISABLED_BY_DEFAULT); +BASE_FEATURE(kTabReorganizationDivider, + "TabReorganizationDivider", + base::FEATURE_DISABLED_BY_DEFAULT); + const base::FeatureParam<base::TimeDelta> kTabOrganizationTriggerPeriod{ &kTabOrganization, "trigger_period", base::Hours(6)};
diff --git a/chrome/browser/ui/ui_features.h b/chrome/browser/ui/ui_features.h index c9bf462..1ebd3286 100644 --- a/chrome/browser/ui/ui_features.h +++ b/chrome/browser/ui/ui_features.h
@@ -195,8 +195,12 @@ BASE_DECLARE_FEATURE(kMultiTabOrganization); +BASE_DECLARE_FEATURE(kTabOrganizationAppMenuItem); + BASE_DECLARE_FEATURE(kTabReorganization); +BASE_DECLARE_FEATURE(kTabReorganizationDivider); + // The target (and minimum) interval between proactive nudge triggers. Measured // against a clock that only runs while Chrome is in the foreground. extern const base::FeatureParam<base::TimeDelta> kTabOrganizationTriggerPeriod;
diff --git a/chrome/browser/ui/views/permissions/chip/permission_chip_view.cc b/chrome/browser/ui/views/permissions/chip/permission_chip_view.cc index c59e80d..54ebc62 100644 --- a/chrome/browser/ui/views/permissions/chip/permission_chip_view.cc +++ b/chrome/browser/ui/views/permissions/chip/permission_chip_view.cc
@@ -14,7 +14,6 @@ #include "chrome/browser/ui/views/location_bar/location_bar_util.h" #include "chrome/browser/ui/views/permissions/chip/multi_image_container.h" #include "chrome/browser/ui/views/permissions/permission_prompt_style.h" -#include "components/content_settings/core/common/features.h" #include "components/permissions/permission_uma_util.h" #include "components/vector_icons/vector_icons.h" #include "third_party/skia/include/core/SkColor.h" @@ -78,15 +77,9 @@ void PermissionChipView::AnimateToFit(base::TimeDelta duration) { animation_->SetSlideDuration(duration); - if (base::FeatureList::IsEnabled( - content_settings::features::kLeftHandSideActivityIndicators)) { - base_width_ = - label() - ->GetPreferredSize(views::SizeBounds(label()->width(), {})) - .width(); - } else { - base_width_ = label()->width(); - } + base_width_ = label() + ->GetPreferredSize(views::SizeBounds(label()->width(), {})) + .width(); if (label() ->GetPreferredSize(views::SizeBounds(label()->width(), {}))
diff --git a/chrome/browser/ui/webui/tab_search/tab_search_ui.cc b/chrome/browser/ui/webui/tab_search/tab_search_ui.cc index 482103a..0604637 100644 --- a/chrome/browser/ui/webui/tab_search/tab_search_ui.cc +++ b/chrome/browser/ui/webui/tab_search/tab_search_ui.cc
@@ -188,6 +188,9 @@ source->AddBoolean( "multiTabOrganizationEnabled", base::FeatureList::IsEnabled(features::kMultiTabOrganization)); + source->AddBoolean( + "tabReorganizationDividerEnabled", + base::FeatureList::IsEnabled(features::kTabReorganizationDivider)); source->AddInteger("tabIndex", TabIndex()); source->AddBoolean("showTabOrganizationFRE", ShowTabOrganizationFRE());
diff --git a/chrome/build/android-arm32.pgo.txt b/chrome/build/android-arm32.pgo.txt index ee60ffc..68b057a 100644 --- a/chrome/build/android-arm32.pgo.txt +++ b/chrome/build/android-arm32.pgo.txt
@@ -1 +1 @@ -chrome-android32-main-1713549526-513cc19958801e69ab0dcb054cddaecf9dbac41f-04b7846c01008431ef7bc68790d96b840cfd0d5a.profdata +chrome-android32-main-1713613758-3e0be7d68c07ec19972d447e2139338d89a1a083-be0b3aaa7aa7e8271feecde55d39e86891d91e6f.profdata
diff --git a/chrome/build/android-arm64.pgo.txt b/chrome/build/android-arm64.pgo.txt index 08b692a2..b6d44b5 100644 --- a/chrome/build/android-arm64.pgo.txt +++ b/chrome/build/android-arm64.pgo.txt
@@ -1 +1 @@ -chrome-android64-main-1713535023-224763ea8093ce273bd6bd8bea42cbd1243d501c-05c14d459b50bff3409929b9407a333ba9f06c54.profdata +chrome-android64-main-1713620838-aa9072fd20b35eb85097c2abbab0d08ebff2e04b-90b9cb64cb6cd054796a4ac3398af86532c7518f.profdata
diff --git a/chrome/build/lacros-arm64.pgo.txt b/chrome/build/lacros-arm64.pgo.txt index 241df633..56409b9 100644 --- a/chrome/build/lacros-arm64.pgo.txt +++ b/chrome/build/lacros-arm64.pgo.txt
@@ -1 +1 @@ -chrome-chromeos-arm64-generic-main-1713484561-f09c60c5c26ed684f3fbcf7b7da048fe5bd3552d-9f1721f07da35be11e0164b09553d85361b8bb28.profdata +chrome-chromeos-arm64-generic-main-1713571112-15f2a29c1df7c1e547632bee7439b2ad3f639d1c-f5dc0130097d4f7180bd89f9e98ea0c2d191d52d.profdata
diff --git a/chrome/build/lacros64.pgo.txt b/chrome/build/lacros64.pgo.txt index cd9c90c..d0c2a2ed 100644 --- a/chrome/build/lacros64.pgo.txt +++ b/chrome/build/lacros64.pgo.txt
@@ -1 +1 @@ -chrome-chromeos-amd64-generic-main-1713528079-948cb9053036c6543cc6cd0e9fb39de64a1397f8-c14dac4d1a278da63957a21906a1a8afc207d7c8.profdata +chrome-chromeos-amd64-generic-main-1713613758-960eef9911e3dd557da7987619cc19b461117ea7-be0b3aaa7aa7e8271feecde55d39e86891d91e6f.profdata
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index eddb5d3a..f8ba8e9 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-main-1713549526-11d9875dc587c213a4f3765476c7565725cb294a-04b7846c01008431ef7bc68790d96b840cfd0d5a.profdata +chrome-linux-main-1713613758-7d3713f52b3a09bc5d861b3394f436263d855b6a-be0b3aaa7aa7e8271feecde55d39e86891d91e6f.profdata
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt index d07fc52f6..0822d39 100644 --- a/chrome/build/mac-arm.pgo.txt +++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@ -chrome-mac-arm-main-1713311815-8c91a8341ca73c4c2f761dce3c6e17b1dcff0900-38a628064b77ab180a922d8340eac1b0353950af.profdata +chrome-mac-arm-main-1713626731-aed4f17d6ddb501b95104e570fe52a2d0fac861f-fd182aa9be5bb3d637ccddff2bd55642a20c85ec.profdata
diff --git a/chrome/build/win-arm64.pgo.txt b/chrome/build/win-arm64.pgo.txt index 92f7f7f3..b7afac8 100644 --- a/chrome/build/win-arm64.pgo.txt +++ b/chrome/build/win-arm64.pgo.txt
@@ -1 +1 @@ -chrome-win-arm64-main-1713549526-c3c783cd1f21477bee5d09a8a93d471ebe37c4a6-04b7846c01008431ef7bc68790d96b840cfd0d5a.profdata +chrome-win-arm64-main-1713613758-523f8a947251af54f7dd34f742a3c7619ab0f524-be0b3aaa7aa7e8271feecde55d39e86891d91e6f.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index 91f3d3a..7aecee6 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-main-1713549526-0b3e60d982e5693da8cdb4ac2752f230591e8eb5-04b7846c01008431ef7bc68790d96b840cfd0d5a.profdata +chrome-win32-main-1713613758-b64b76e80278e48e0844766800c151fb9fc4b9ab-be0b3aaa7aa7e8271feecde55d39e86891d91e6f.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index 8571669..a6aaa7c 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-main-1713549526-1b144e1c12e7066c6843d2fc2cd049315504d327-04b7846c01008431ef7bc68790d96b840cfd0d5a.profdata +chrome-win64-main-1713613758-5744bbfd546a92eb91f6e1265da96c3decca7bb7-be0b3aaa7aa7e8271feecde55d39e86891d91e6f.profdata
diff --git a/chrome/test/data/focus_rings/focus_ring_browsertest_anchor_win.png b/chrome/test/data/focus_rings/focus_ring_browsertest_anchor_win.png index 6b146c1..b50c35e 100644 --- a/chrome/test/data/focus_rings/focus_ring_browsertest_anchor_win.png +++ b/chrome/test/data/focus_rings/focus_ring_browsertest_anchor_win.png Binary files differ
diff --git a/chrome/test/data/focus_rings/focus_ring_browsertest_button_win.png b/chrome/test/data/focus_rings/focus_ring_browsertest_button_win.png index 3fced26..0680afc6 100644 --- a/chrome/test/data/focus_rings/focus_ring_browsertest_button_win.png +++ b/chrome/test/data/focus_rings/focus_ring_browsertest_button_win.png Binary files differ
diff --git a/chrome/test/data/focus_rings/focus_ring_browsertest_checkbox_win.png b/chrome/test/data/focus_rings/focus_ring_browsertest_checkbox_win.png index e13284c..5eb51cb 100644 --- a/chrome/test/data/focus_rings/focus_ring_browsertest_checkbox_win.png +++ b/chrome/test/data/focus_rings/focus_ring_browsertest_checkbox_win.png Binary files differ
diff --git a/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button_win.png b/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button_win.png index 89d7308..a621f12e 100644 --- a/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button_win.png +++ b/chrome/test/data/focus_rings/focus_ring_browsertest_dark_mode_button_win.png Binary files differ
diff --git a/chrome/test/data/focus_rings/focus_ring_browsertest_radio_win.png b/chrome/test/data/focus_rings/focus_ring_browsertest_radio_win.png index 62241ce..0bce232 100644 --- a/chrome/test/data/focus_rings/focus_ring_browsertest_radio_win.png +++ b/chrome/test/data/focus_rings/focus_ring_browsertest_radio_win.png Binary files differ
diff --git a/chrome/test/data/webui/chromeos/settings/os_settings_browsertest.cc b/chrome/test/data/webui/chromeos/settings/os_settings_browsertest.cc index 66b8db3..daf01eb 100644 --- a/chrome/test/data/webui/chromeos/settings/os_settings_browsertest.cc +++ b/chrome/test/data/webui/chromeos/settings/os_settings_browsertest.cc
@@ -523,6 +523,29 @@ testing::Bool(), OSSettingsRevampOsA11yTestPdfOcrEnabled::DescribeParams); +class OSSettingsRevampFilesTestCrosComponentsAndJellyEnabled + : public OSSettingsRevampMochaTest { + protected: + OSSettingsRevampFilesTestCrosComponentsAndJellyEnabled() { + scoped_feature_list_.InitWithFeatures( + /*enabled=*/ + { + chromeos::features::kCrosComponents, + chromeos::features::kJelly, + }, + /*disabled=*/{}); + } + + private: + base::test::ScopedFeatureList scoped_feature_list_; +}; + +INSTANTIATE_TEST_SUITE_P( + RevampParameterized, + OSSettingsRevampFilesTestCrosComponentsAndJellyEnabled, + testing::Bool(), + OSSettingsRevampFilesTestCrosComponentsAndJellyEnabled::DescribeParams); + /* End Test Classes */ IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, AppLanguageSelectionDialog) { @@ -1408,7 +1431,7 @@ RunSettingsTest("os_bluetooth_page/os_paired_bluetooth_list_item_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, OsFilesPage) { +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, OsFilesPage) { RunSettingsTest("os_files_page/os_files_page_test.js"); } @@ -1417,54 +1440,38 @@ RunSettingsTest("os_files_page/files_settings_card_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, OsFilesPageGoogleDrivePage) { +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, OsFilesPageGoogleDrivePage) { RunSettingsTest("os_files_page/google_drive_page_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, OsFilesPageOneDrivePage) { +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, OsFilesPageOneDrivePage) { RunSettingsTest("os_files_page/one_drive_page_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, OsFilesPageOfficePage) { +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, OsFilesPageOfficePage) { RunSettingsTest("os_files_page/office_page_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, OsFilesPageSmbSharesPage) { +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, OsFilesPageSmbSharesPage) { RunSettingsTest("os_files_page/smb_shares_page_test.js"); } -class OSSettingsFilesTestCrosComponentsAndJellyEnabled - : public OSSettingsMochaTest { - protected: - OSSettingsFilesTestCrosComponentsAndJellyEnabled() { - scoped_feature_list_.InitWithFeatures( - /*enabled=*/ - { - chromeos::features::kCrosComponents, - chromeos::features::kJelly, - }, - /*disabled=*/{}); - } - - private: - base::test::ScopedFeatureList scoped_feature_list_; -}; - -IN_PROC_BROWSER_TEST_F(OSSettingsFilesTestCrosComponentsAndJellyEnabled, +IN_PROC_BROWSER_TEST_P(OSSettingsRevampFilesTestCrosComponentsAndJellyEnabled, OsFilesPageSmbSharesPageJelly) { RunSettingsTest("os_files_page/smb_shares_page_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, OsLanguagesPageAppLanguagesPage) { +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, + OsLanguagesPageAppLanguagesPage) { RunSettingsTest("os_languages_page/app_languages_page_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, OsLanguagesPageInputMethodOptionsPage) { RunSettingsTest("os_languages_page/input_method_options_page_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, OsLanguagesPageInputPage) { +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, OsLanguagesPageInputPage) { RunSettingsTest("os_languages_page/input_page_test.js"); } @@ -1473,57 +1480,49 @@ RunSettingsTest("os_languages_page/language_settings_card_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, OsLanguagesPageOsClearPersonalizationDataPage) { RunSettingsTest( "os_languages_page/os_clear_personalization_data_page_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, OsLanguagesPageV2) { +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, OsLanguagesPageV2) { RunSettingsTest("os_languages_page/os_languages_page_v2_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, OsLanguagesPageOsEditDictionaryPage) { RunSettingsTest("os_languages_page/os_edit_dictionary_page_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTestRevampDisabled, OsPageAvailability) { +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, OsPageAvailability) { RunSettingsTest("os_page_availability_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTestRevampEnabled, - OsPageAvailabilityRevamp) { - RunSettingsTest("os_page_availability_test.js"); -} - -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTestRevampDisabled, OsPeoplePage) { +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, OsPeoplePage) { RunSettingsTest("os_people_page/os_people_page_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTestRevampEnabled, OsPeoplePageRevamp) { - RunSettingsTest("os_people_page/os_people_page_test.js"); -} - -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, OsPeoplePageAddUserDialog) { +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, OsPeoplePageAddUserDialog) { RunSettingsTest("os_people_page/add_user_dialog_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, OsPeoplePageFingerprintListSubpage) { RunSettingsTest("os_people_page/fingerprint_list_subpage_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, OsPeoplePageOsSyncControlsSubpage) { +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, + OsPeoplePageOsSyncControlsSubpage) { RunSettingsTest("os_people_page/os_sync_controls_subpage_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, OsPeoplePagePersonalizationOptions) { RunSettingsTest("os_people_page/personalization_options_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, OsPrintingPage) { +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, OsPrintingPage) { RunSettingsTest("os_printing_page/os_printing_page_test.js"); } @@ -1532,28 +1531,32 @@ RunSettingsTest("os_printing_page/printing_settings_card_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, OsPrintingPageCupsPrintServer) { +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, + OsPrintingPageCupsPrintServer) { RunSettingsTest("os_printing_page/cups_print_server_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, OsPrintingPageCupsPrinterDialog) { +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, + OsPrintingPageCupsPrinterDialog) { RunSettingsTest("os_printing_page/cups_printer_dialog_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, OsPrintingPageCupsPrinterLandingPage) { RunSettingsTest("os_printing_page/cups_printer_landing_page_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, OsPrintingPageCupsPrintersEntry) { +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, + OsPrintingPageCupsPrintersEntry) { RunSettingsTest("os_printing_page/cups_printers_entry_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, OsPrintingPageCupsPrinterPage) { +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, + OsPrintingPageCupsPrinterPage) { RunSettingsTest("os_printing_page/cups_printer_page_test.js"); } -IN_PROC_BROWSER_TEST_F(OSSettingsMochaTest, OsPrintingPagePrinterStatus) { +IN_PROC_BROWSER_TEST_P(OSSettingsRevampMochaTest, OsPrintingPagePrinterStatus) { RunSettingsTest("os_printing_page/printer_status_test.js"); }
diff --git a/chrome/test/data/webui/cr_elements/cr_selectable_mixin_test.ts b/chrome/test/data/webui/cr_elements/cr_selectable_mixin_test.ts index 35a52d6e..04bde90 100644 --- a/chrome/test/data/webui/cr_elements/cr_selectable_mixin_test.ts +++ b/chrome/test/data/webui/cr_elements/cr_selectable_mixin_test.ts
@@ -6,7 +6,7 @@ import {CrSelectableMixin} from 'chrome://resources/cr_elements/cr_menu_selector/cr_selectable_mixin.js'; import {html, CrLitElement} from 'chrome://resources/lit/v3_0/lit.rollup.js'; import {getTrustedHtml} from 'chrome://webui-test/trusted_html.js'; -import {assertEquals} from 'chrome://webui-test/chai_assert.js'; +import {assertEquals, assertTrue, assertNull} from 'chrome://webui-test/chai_assert.js'; import {eventToPromise} from 'chrome://webui-test/test_util.js'; // clang-format on @@ -118,3 +118,93 @@ assertSelected(0); }); }); + +suite('cr-scrollable-mixin overrides', function() { + const TestOverridesElementBase = CrSelectableMixin(CrLitElement); + + class TestOverridesElement extends TestOverridesElementBase { + static get is() { + return 'test-overrides-element'; + } + + override render() { + return html` + <a href="/a">a</a> + <a href="/b">b</a> + <a href="/c">c</a> + <a href="/d">d</a> + <div>e</div> + `; + } + + constructor() { + super(); + + /** Property for CrSelectableMixin */ + this.attrForSelected = 'href'; + } + + // Override `observeItems` from CrSelectableMixin. + override observeItems() { + // Turn off default observation logic in CrSelectableMixin. + } + + // Override `queryItems` from CrSelectableMixin. + override queryItems() { + return Array.from(this.shadowRoot!.querySelectorAll('a')); + } + + override connectedCallback() { + super.connectedCallback(); + this.itemsChanged(); + } + } + + customElements.define(TestOverridesElement.is, TestOverridesElement); + + let element: TestOverridesElement; + + setup(function() { + document.body.innerHTML = window.trustedTypes!.emptyHTML; + element = document.createElement('test-overrides-element') as + TestOverridesElement; + document.body.appendChild(element); + }); + + test('All', async () => { + // Assert that selectable items have been detected. + assertEquals(4, element.getItemsForTest().length); + assertNull(element.selectedItem); + + // Select the 2nd item. + element.selected = 'chrome://webui-test/b'; + await element.updateComplete; + let selectedItem = element.shadowRoot!.querySelector('.iron-selected'); + assertTrue(!!selectedItem); + assertEquals(selectedItem, element.selectedItem); + assertEquals('b', selectedItem.textContent); + + // Remove the selected item, and manually call itemsChanged(). + selectedItem.remove(); + element.itemsChanged(); + assertEquals(3, element.getItemsForTest().length); + assertNull(element.selectedItem); + + // Select the 1st item. + element.selected = 'chrome://webui-test/a'; + await element.updateComplete; + selectedItem = element.shadowRoot!.querySelector('.iron-selected'); + assertTrue(!!selectedItem); + assertEquals(selectedItem, element.selectedItem); + assertEquals('a', selectedItem.textContent); + + // Select the next item. + element.selectNext(); + await element.updateComplete; + assertEquals('chrome://webui-test/c', element.selected); + selectedItem = element.shadowRoot!.querySelector('.iron-selected'); + assertTrue(!!selectedItem); + assertEquals(selectedItem, element.selectedItem); + assertEquals('c', selectedItem.textContent); + }); +});
diff --git a/chrome/test/data/webui/lens/overlay/selection_overlay_test.ts b/chrome/test/data/webui/lens/overlay/selection_overlay_test.ts index c6ddc56..a524de1 100644 --- a/chrome/test/data/webui/lens/overlay/selection_overlay_test.ts +++ b/chrome/test/data/webui/lens/overlay/selection_overlay_test.ts
@@ -169,7 +169,38 @@ .regionSelectionCanvas.height); }); - test( + test( + 'verify object selection canvas resizes when selection overlay resizes', + async () => { + selectionOverlayElement.style.display = 'block'; + selectionOverlayElement.style.width = '50px'; + selectionOverlayElement.style.height = '50px'; + // Resize observer does not trigger with flushTasks(), so we need to use + // waitAfterNextRender() instead. + await waitAfterNextRender(selectionOverlayElement); + assertEquals( + 50, + selectionOverlayElement.$.objectSelectionLayer.$ + .objectSelectionCanvas.width); + assertEquals( + 50, + selectionOverlayElement.$.objectSelectionLayer.$ + .objectSelectionCanvas.height); + + selectionOverlayElement.style.width = '200px'; + selectionOverlayElement.style.height = '200px'; + await waitAfterNextRender(selectionOverlayElement); + assertEquals( + 200, + selectionOverlayElement.$.objectSelectionLayer.$ + .objectSelectionCanvas.width); + assertEquals( + 200, + selectionOverlayElement.$.objectSelectionLayer.$ + .objectSelectionCanvas.height); + }); + + test( `verify that only objects respond to taps, even when text overlaps`, async () => { await Promise.all([addWords(), addObjects()]);
diff --git a/chrome/test/data/webui/lens/utils/object_utils.ts b/chrome/test/data/webui/lens/utils/object_utils.ts index b9444ef..95e363e 100644 --- a/chrome/test/data/webui/lens/utils/object_utils.ts +++ b/chrome/test/data/webui/lens/utils/object_utils.ts
@@ -34,6 +34,7 @@ rotation: 0, coordinateType: CenterRotatedBox_CoordinateType.kNormalized, }, + segmentationPolygon: [], }, }; }
diff --git a/chrome/test/data/webui/lens/utils/text_utils.ts b/chrome/test/data/webui/lens/utils/text_utils.ts index eb16048..6394ad2 100644 --- a/chrome/test/data/webui/lens/utils/text_utils.ts +++ b/chrome/test/data/webui/lens/utils/text_utils.ts
@@ -34,6 +34,7 @@ rotation: 0, coordinateType: CenterRotatedBox_CoordinateType.kNormalized, }, + segmentationPolygon: [], }, formulaMetadata: null, };
diff --git a/chromeos/profiles/arm-exp.afdo.newest.txt b/chromeos/profiles/arm-exp.afdo.newest.txt index 93e356d9..d25adcdc 100644 --- a/chromeos/profiles/arm-exp.afdo.newest.txt +++ b/chromeos/profiles/arm-exp.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-arm-exp-125-6367.24-1712572414-benchmark-125.0.6407.0-r2-redacted.afdo.xz +chromeos-chrome-arm-exp-125-6411.0-1713176715-benchmark-126.0.6427.0-r1-redacted.afdo.xz
diff --git a/chromeos/profiles/arm.afdo.newest.txt b/chromeos/profiles/arm.afdo.newest.txt index 66930e0..650d0fc 100644 --- a/chromeos/profiles/arm.afdo.newest.txt +++ b/chromeos/profiles/arm.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-arm-none-125-6367.24-1713181437-benchmark-126.0.6423.0-r1-redacted.afdo.xz +chromeos-chrome-arm-none-125-6367.24-1713181437-benchmark-126.0.6427.0-r1-redacted.afdo.xz
diff --git a/chromeos/profiles/atom.afdo.newest.txt b/chromeos/profiles/atom.afdo.newest.txt index 484d384..6de915e1 100644 --- a/chromeos/profiles/atom.afdo.newest.txt +++ b/chromeos/profiles/atom.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-atom-125-6411.0-1713176715-benchmark-126.0.6423.0-r2-redacted.afdo.xz +chromeos-chrome-amd64-atom-125-6411.0-1713176715-benchmark-126.0.6427.0-r1-redacted.afdo.xz
diff --git a/chromeos/profiles/bigcore.afdo.newest.txt b/chromeos/profiles/bigcore.afdo.newest.txt index 76d7dbf2..a5109bd94 100644 --- a/chromeos/profiles/bigcore.afdo.newest.txt +++ b/chromeos/profiles/bigcore.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-bigcore-125-6398.0-1713174332-benchmark-126.0.6423.0-r2-redacted.afdo.xz +chromeos-chrome-amd64-bigcore-125-6398.0-1713174332-benchmark-126.0.6427.0-r1-redacted.afdo.xz
diff --git a/clank b/clank index 22b403f..6d9a82db 160000 --- a/clank +++ b/clank
@@ -1 +1 @@ -Subproject commit 22b403ffb0f1621c38960ae1cedd464b8efc700c +Subproject commit 6d9a82dba7830e586b0c1e8c01847add8dd68240
diff --git a/components/certificate_transparency/data/log_list.json b/components/certificate_transparency/data/log_list.json index 1b7a3f9..2c0503c 100644 --- a/components/certificate_transparency/data/log_list.json +++ b/components/certificate_transparency/data/log_list.json
@@ -1,6 +1,6 @@ { - "version": "33.49", - "log_list_timestamp": "2024-04-19T12:55:44Z", + "version": "33.50", + "log_list_timestamp": "2024-04-20T12:55:11Z", "operators": [ { "name": "Google",
diff --git a/components/commerce/core/compare/cluster_manager.cc b/components/commerce/core/compare/cluster_manager.cc index fc2e65b..96fcb67 100644 --- a/components/commerce/core/compare/cluster_manager.cc +++ b/components/commerce/core/compare/cluster_manager.cc
@@ -7,7 +7,9 @@ #include <optional> #include <set> #include <string> +#include <vector> +#include "base/barrier_callback.h" #include "components/commerce/core/compare/candidate_product.h" #include "components/commerce/core/compare/product_group.h" #include "components/commerce/core/product_specifications/product_specifications_service.h" @@ -79,6 +81,23 @@ } return false; } + +void OnGetCategoryDataDone( + base::OnceCallback<void(const CategoryData&)> callback, + const GURL& url, + const std::optional<const ProductInfo>& product_info) { + std::move(callback).Run(product_info ? product_info->category_data + : CategoryData()); +} + +void GetCategoryData( + const GURL& url, + const ClusterManager::GetProductInfoCallback& get_product_info_cb, + base::OnceCallback<void(const CategoryData&)> callback) { + get_product_info_cb.Run( + url, base::BindOnce(&OnGetCategoryDataDone, std::move(callback))); +} + } // namespace ClusterManager::ClusterManager( @@ -94,11 +113,22 @@ void ClusterManager::OnProductSpecificationsSetAdded( const ProductSpecificationsSet& product_specifications_set) { - // TODO(qinmin): need to get the category data for the products in - // `product_specifications_set`. - auto product_group = std::make_unique<ProductGroup>( - product_specifications_set.uuid(), product_specifications_set.urls()); - UpdateProductGroup(std::move(product_group)); + base::Uuid uuid = product_specifications_set.uuid(); + product_group_map_[uuid] = + std::make_unique<ProductGroup>(uuid, product_specifications_set.urls()); + const std::set<GURL>& urls = product_group_map_[uuid]->member_products; + if (urls.size() == 0) { + CHECK(false) << "Production specification set shouldn't be empty."; + return; + } + + auto barrier_callback = base::BarrierCallback<const CategoryData&>( + urls.size(), base::BindOnce(&ClusterManager::OnAllCategoryDataRetrieved, + weak_ptr_factory_.GetWeakPtr(), + product_specifications_set.uuid(), urls)); + for (const auto& url : urls) { + GetCategoryData(url, get_product_info_cb_, barrier_callback); + } } void ClusterManager::OnProductSpecificationsSetUpdate( @@ -107,7 +137,7 @@ } void ClusterManager::OnProductSpecificationsSetRemoved(const base::Uuid& uuid) { - RemoveProductGroup(uuid); + product_group_map_.erase(uuid); } void ClusterManager::WebWrapperDestroyed(const GURL& url) { @@ -143,10 +173,21 @@ return; } - // TODO(qinmin): If a product is added to a product group, determine - // whether it should be removed from `candidate_product_map_`. AddCandidateProduct(url, product_info); - AddProductToProductGroupssIfNecessary(url, product_info); +} + +void ClusterManager::OnAllCategoryDataRetrieved( + const base::Uuid& uuid, + const std::set<GURL>& urls, + const std::vector<CategoryData>& category_data) { + if (!product_group_map_[uuid]) { + return; + } + + // Check whether product group has changed. + if (product_group_map_[uuid]->member_products == urls) { + product_group_map_[uuid]->categories = category_data; + } } void ClusterManager::AddCandidateProduct( @@ -166,25 +207,6 @@ similar_products; } -void ClusterManager::AddProductToProductGroupssIfNecessary( - const GURL& url, - const std::optional<const ProductInfo>& product_info) { - for (const auto& group : product_group_map_) { - if (group.second->member_products.find(url) != - group.second->member_products.end()) { - continue; - } - if (group.second->candidate_products.find(url) != - group.second->candidate_products.end()) { - DCHECK(false); - continue; - } - if (IsProductSimilarToGroup(product_info->category_data, - group.second->categories)) { - group.second->candidate_products.insert(url); - } - } -} void ClusterManager::RemoveCandidateProductURLIfNotOpen(const GURL& url) { if (candidate_product_map_.find(url) != candidate_product_map_.end() && @@ -193,34 +215,24 @@ for (const auto& product : candidate_product_map_) { product.second->similar_candidate_products_urls.erase(url); } - RemoveProductFromProductGroupsIfNecessary(url); } } -void ClusterManager::RemoveProductFromProductGroupsIfNecessary( - const GURL& url) { - for (const auto& group : product_group_map_) { - if (group.second->candidate_products.find(url) != - group.second->candidate_products.end()) { - group.second->candidate_products.erase(url); - } - } -} - -void ClusterManager::UpdateProductGroup( - std::unique_ptr<ProductGroup> product_group) { - ProductGroup* group = product_group.get(); - product_group_map_[product_group->uuid] = std::move(product_group); +std::vector<GURL> ClusterManager::FindSimilarCandidateProductsForProductGroup( + const base::Uuid& uuid) { + std::vector<GURL> candidate_products; + ProductGroup* group = product_group_map_[uuid].get(); for (const auto& candidate_product : candidate_product_map_) { + if (group->member_products.find(candidate_product.first) != + group->member_products.end()) { + continue; + } if (IsProductSimilarToGroup(candidate_product.second->category_data, group->categories)) { - group->candidate_products.insert(candidate_product.first); + candidate_products.emplace_back(candidate_product.first); } } -} - -void ClusterManager::RemoveProductGroup(const base::Uuid& uuid) { - product_group_map_.erase(uuid); + return candidate_products; } } // namespace commerce
diff --git a/components/commerce/core/compare/cluster_manager.h b/components/commerce/core/compare/cluster_manager.h index 48c08d03..a9b1d2dc7 100644 --- a/components/commerce/core/compare/cluster_manager.h +++ b/components/commerce/core/compare/cluster_manager.h
@@ -7,6 +7,7 @@ #include <map> #include <memory> +#include <vector> #include "base/memory/weak_ptr.h" #include "base/scoped_observation.h" @@ -54,33 +55,29 @@ private: friend class ClusterManagerTest; - // Adds or updates a product group to the `product_group_map_`. - void UpdateProductGroup(std::unique_ptr<ProductGroup> product_group); - - // Removes a product group from `product_group_map_`. - void RemoveProductGroup(const base::Uuid& uuid); + // Find similar candidate products for a product group. + std::vector<GURL> FindSimilarCandidateProductsForProductGroup( + const base::Uuid& uuid); // Called when information about a product is retrieved. void OnProductInfoRetrieved( const GURL& url, const std::optional<const ProductInfo>& product_info); + // Called when category data for a list of URLs are retrieved. + void OnAllCategoryDataRetrieved( + const base::Uuid& uuid, + const std::set<GURL>& urls, + const std::vector<CategoryData>& category_data); + // Adds a candidate product to `candidate_product_map_`. void AddCandidateProduct( const GURL& url, const std::optional<const ProductInfo>& product_info); - // Adds a new product to `product_group_map_` if necessary. - void AddProductToProductGroupssIfNecessary( - const GURL& url, - const std::optional<const ProductInfo>& product_info); - // Removes a candidate product URL if it is not open in any tabs. void RemoveCandidateProductURLIfNotOpen(const GURL& url); - // Removes a product to `product_group_map_` if necessary. - void RemoveProductFromProductGroupsIfNecessary(const GURL& url); - // Callback to get product info. GetProductInfoCallback get_product_info_cb_;
diff --git a/components/commerce/core/compare/cluster_manager_unittest.cc b/components/commerce/core/compare/cluster_manager_unittest.cc index 165cfd4..cf296d83 100644 --- a/components/commerce/core/compare/cluster_manager_unittest.cc +++ b/components/commerce/core/compare/cluster_manager_unittest.cc
@@ -4,15 +4,19 @@ #include "components/commerce/core/compare/cluster_manager.h" +#include <algorithm> +#include <map> #include <string> #include <vector> #include "base/functional/callback.h" +#include "base/run_loop.h" #include "base/test/task_environment.h" #include "components/commerce/core/commerce_types.h" #include "components/commerce/core/compare/candidate_product.h" #include "components/commerce/core/compare/product_group.h" #include "components/commerce/core/product_specifications/product_specifications_service.h" +#include "components/commerce/core/product_specifications/product_specifications_set.h" #include "components/commerce/core/proto/product_category.pb.h" #include "components/sync/test/mock_model_type_change_processor.h" #include "components/sync/test/model_type_store_test_util.h" @@ -25,9 +29,11 @@ const std::string kTestUrl1 = "http://www.foo1.com"; const std::string kTestUrl2 = "http://www.foo2.com"; const std::string kTestUrl3 = "http://www.foo3.com"; +const std::string kProductUrl = "http://www.chair.com"; const std::string kCategoryLamp = "Lamp"; const std::string kCategoryChair = "Chair"; const std::string kCategoryGamingChair = "GamingChair"; +const std::string kProductGroupName = "Furniture"; } // namespace class ClusterManagerTest : public testing::Test { @@ -49,10 +55,13 @@ base::Unretained(this)), base::BindRepeating(&ClusterManagerTest::url_infos, base::Unretained(this))); + InitializeProductInfos(); } void GetProductInfo(const GURL& url, ProductInfoCallback product_info_cb) { - std::move(product_info_cb).Run(url, product_info_); + task_environment_.GetMainThreadTaskRunner()->PostTask( + FROM_HERE, + base::BindOnce(std::move(product_info_cb), url, product_infos_[url])); } const std::vector<UrlInfo> url_infos() { return url_infos_; } @@ -74,41 +83,45 @@ } } - void UpdateProductInfo(const std::string& label) { - product_info_ = ProductInfo(); - AddProductCategoryToProductInfo(label); - } - - void AddProductCategoryToProductInfo(const std::string& label) { - product_info_.category_data.add_product_categories() - ->add_category_labels() - ->set_category_default_label(label); - } - - base::Uuid AddProductGroup(const std::string& label) { + base::Uuid AddProductSpecificationSet() { base::Uuid uuid = base::Uuid::GenerateRandomV4(); - std::unique_ptr<ProductGroup> group = - std::make_unique<ProductGroup>(uuid, std::vector<GURL>()); - CategoryData data; - data.add_product_categories() - ->add_category_labels() - ->set_category_default_label(label); - group->categories.emplace_back(data); - cluster_manager_->UpdateProductGroup(std::move(group)); + std::vector<GURL> url_group = {GURL(kProductUrl)}; + cluster_manager_->OnProductSpecificationsSetAdded(ProductSpecificationsSet( + uuid.AsLowercaseString(), 0, 0, url_group, kProductGroupName)); return uuid; } - void RemoveProductGroup(const base::Uuid& uuid) { - cluster_manager_->RemoveProductGroup(uuid); + void RemoveProductSpecificationSet(const base::Uuid& uuid) { + cluster_manager_->OnProductSpecificationsSetRemoved(uuid); + } + + std::vector<GURL> FindSimilarCandidateProductsForProductGroup( + const base::Uuid& uuid) { + return cluster_manager_->FindSimilarCandidateProductsForProductGroup(uuid); } protected: + ProductInfo CreateProductInfo(const std::string& label) { + ProductInfo product_info = ProductInfo(); + product_info.category_data.add_product_categories() + ->add_category_labels() + ->set_category_default_label(label); + return product_info; + } + + void InitializeProductInfos() { + product_infos_[GURL(kTestUrl1)] = CreateProductInfo(kCategoryLamp); + product_infos_[GURL(kTestUrl2)] = CreateProductInfo(kCategoryChair); + product_infos_[GURL(kTestUrl3)] = CreateProductInfo(kCategoryLamp); + product_infos_[GURL(kProductUrl)] = CreateProductInfo(kCategoryLamp); + } + base::test::TaskEnvironment task_environment_; std::unique_ptr<syncer::ModelTypeStore> store_; std::unique_ptr<ProductSpecificationsService> product_specification_service_; testing::NiceMock<syncer::MockModelTypeChangeProcessor> processor_; std::unique_ptr<ClusterManager> cluster_manager_; - ProductInfo product_info_; + std::map<GURL, ProductInfo> product_infos_; std::vector<UrlInfo> url_infos_; }; @@ -118,6 +131,7 @@ info.url = url; url_infos_.emplace_back(info); cluster_manager_->DidNavigatePrimaryMainFrame(url); + base::RunLoop().RunUntilIdle(); ASSERT_EQ(1u, GetCandidateProductMap()->size()); url_infos_.clear(); @@ -132,13 +146,10 @@ UpdateUrlInfos(std::vector<GURL>{foo1, foo2, foo3}); // Add 3 products, product 1 and 3 has the same category. - UpdateProductInfo(kCategoryLamp); - cluster_manager_->DidNavigatePrimaryMainFrame(foo1); - UpdateProductInfo(kCategoryChair); cluster_manager_->DidNavigatePrimaryMainFrame(foo2); - UpdateProductInfo(kCategoryLamp); cluster_manager_->DidNavigatePrimaryMainFrame(foo3); + base::RunLoop().RunUntilIdle(); ASSERT_EQ(3u, GetCandidateProductMap()->size()); CandidateProduct* product1 = (*GetCandidateProductMap())[foo1].get(); @@ -160,17 +171,17 @@ UpdateUrlInfos(std::vector<GURL>{foo1, foo2, foo3}); // Product 1 belongs to 2 categories. - UpdateProductInfo(kCategoryLamp); - AddProductCategoryToProductInfo(kCategoryChair); + product_infos_[foo1].category_data.add_product_categories() + ->add_category_labels() + ->set_category_default_label(kCategoryChair); cluster_manager_->DidNavigatePrimaryMainFrame(foo1); // Product 2's category label has 2 levels, Chair -> GamingChair. - UpdateProductInfo(kCategoryChair); - product_info_.category_data.mutable_product_categories(0) - ->add_category_labels() - ->set_category_default_label(kCategoryGamingChair); + product_infos_[foo2].category_data.mutable_product_categories(0) + ->add_category_labels() + ->set_category_default_label(kCategoryGamingChair); cluster_manager_->DidNavigatePrimaryMainFrame(foo2); - UpdateProductInfo(kCategoryLamp); cluster_manager_->DidNavigatePrimaryMainFrame(foo3); + base::RunLoop().RunUntilIdle(); ASSERT_EQ(3u, GetCandidateProductMap()->size()); CandidateProduct* product1 = (*GetCandidateProductMap())[foo1].get(); @@ -194,12 +205,10 @@ UpdateUrlInfos(std::vector<GURL>{foo1, foo2, foo3}); // Add 3 products, product 1 and 3 has the same category. - UpdateProductInfo(kCategoryLamp); cluster_manager_->DidNavigatePrimaryMainFrame(foo1); - UpdateProductInfo(kCategoryChair); cluster_manager_->DidNavigatePrimaryMainFrame(foo2); - UpdateProductInfo(kCategoryLamp); cluster_manager_->DidNavigatePrimaryMainFrame(foo3); + base::RunLoop().RunUntilIdle(); ASSERT_EQ(3u, GetCandidateProductMap()->size()); // Remove product 3. @@ -214,105 +223,141 @@ ASSERT_EQ(product2->similar_candidate_products_urls.size(), 0u); } -TEST_F(ClusterManagerTest, AddCandidateProductToExistingProductGroup) { - base::Uuid uuid = AddProductGroup(kCategoryLamp); - ProductGroup* product_group = (*GetProductGroupMap())[uuid].get(); - +TEST_F(ClusterManagerTest, + CandidateProductRemovedBeforeGetProductInfoCompletes) { GURL foo1(kTestUrl1); GURL foo2(kTestUrl2); GURL foo3(kTestUrl3); UpdateUrlInfos(std::vector<GURL>{foo1, foo2, foo3}); - // Add the first product. - UpdateProductInfo(kCategoryLamp); + // Add 2 products. cluster_manager_->DidNavigatePrimaryMainFrame(foo1); - ASSERT_EQ(0u, product_group->member_products.size()); - ASSERT_EQ(1u, product_group->candidate_products.size()); - ASSERT_EQ(product_group->candidate_products.count(foo1), 1u); - - // Add the second product. - UpdateProductInfo(kCategoryChair); cluster_manager_->DidNavigatePrimaryMainFrame(foo2); - ASSERT_EQ(0u, product_group->member_products.size()); - ASSERT_EQ(1u, product_group->candidate_products.size()); - ASSERT_EQ(product_group->candidate_products.count(foo1), 1u); + base::RunLoop().RunUntilIdle(); - // Add the third product. - UpdateProductInfo(kCategoryLamp); + // Add the 3rd product, and immediately removes it. cluster_manager_->DidNavigatePrimaryMainFrame(foo3); - ASSERT_EQ(0u, product_group->member_products.size()); - ASSERT_EQ(2u, product_group->candidate_products.size()); - ASSERT_EQ(product_group->candidate_products.count(foo1), 1u); - ASSERT_EQ(product_group->candidate_products.count(foo3), 1u); -} - -TEST_F(ClusterManagerTest, AddProductGroupAfterAddingCandidateProduct) { - GURL foo1(kTestUrl1); - GURL foo2(kTestUrl2); - GURL foo3(kTestUrl3); - UpdateUrlInfos(std::vector<GURL>{foo1, foo2, foo3}); - - UpdateProductInfo(kCategoryLamp); - cluster_manager_->DidNavigatePrimaryMainFrame(foo1); - UpdateProductInfo(kCategoryChair); - cluster_manager_->DidNavigatePrimaryMainFrame(foo2); - UpdateProductInfo(kCategoryLamp); - cluster_manager_->DidNavigatePrimaryMainFrame(foo3); - - base::Uuid uuid = AddProductGroup(kCategoryLamp); - ProductGroup* product_group = (*GetProductGroupMap())[uuid].get(); - ASSERT_EQ(0u, product_group->member_products.size()); - ASSERT_EQ(2u, product_group->candidate_products.size()); - ASSERT_EQ(product_group->candidate_products.count(foo1), 1u); - ASSERT_EQ(product_group->candidate_products.count(foo3), 1u); -} - -TEST_F(ClusterManagerTest, RemoveProductGroup) { - base::Uuid uuid = AddProductGroup(kCategoryLamp); - GURL foo1(kTestUrl1); - GURL foo2(kTestUrl2); - GURL foo3(kTestUrl3); - UpdateUrlInfos(std::vector<GURL>{foo1, foo2, foo3}); - - UpdateProductInfo(kCategoryLamp); - cluster_manager_->DidNavigatePrimaryMainFrame(foo1); - UpdateProductInfo(kCategoryChair); - cluster_manager_->DidNavigatePrimaryMainFrame(foo2); - UpdateProductInfo(kCategoryLamp); - cluster_manager_->DidNavigatePrimaryMainFrame(foo3); - ASSERT_EQ(3u, GetCandidateProductMap()->size()); - - RemoveProductGroup(uuid); - ASSERT_FALSE((*GetProductGroupMap())[uuid]); - ASSERT_EQ(3u, GetCandidateProductMap()->size()); -} - -TEST_F(ClusterManagerTest, RemoveCandidateProductFromProductGroup) { - base::Uuid uuid = AddProductGroup(kCategoryLamp); - ProductGroup* product_group = (*GetProductGroupMap())[uuid].get(); - GURL foo1(kTestUrl1); - GURL foo2(kTestUrl2); - GURL foo3(kTestUrl3); - UpdateUrlInfos(std::vector<GURL>{foo1, foo2, foo3}); - - // Add 3 products. - UpdateProductInfo(kCategoryLamp); - cluster_manager_->DidNavigatePrimaryMainFrame(foo1); - UpdateProductInfo(kCategoryChair); - cluster_manager_->DidNavigatePrimaryMainFrame(foo2); - UpdateProductInfo(kCategoryLamp); - cluster_manager_->DidNavigatePrimaryMainFrame(foo3); - ASSERT_EQ(3u, GetCandidateProductMap()->size()); - ASSERT_EQ(2u, product_group->candidate_products.size()); - - // Remove product 3. + ASSERT_EQ(2u, GetCandidateProductMap()->size()); UpdateUrlInfos(std::vector<GURL>{foo1, foo2}); cluster_manager_->DidNavigateAway(foo3); ASSERT_EQ(2u, GetCandidateProductMap()->size()); - ASSERT_EQ(0u, product_group->member_products.size()); - ASSERT_EQ(1u, product_group->candidate_products.size()); - ASSERT_EQ(product_group->candidate_products.count(foo1), 1u); + // Let GetProductInfo() for the 3rd product to complete. + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(2u, GetCandidateProductMap()->size()); + + CandidateProduct* product1 = (*GetCandidateProductMap())[foo1].get(); + ASSERT_EQ(product1->similar_candidate_products_urls.size(), 0u); +} + +TEST_F(ClusterManagerTest, FindSimilarCandidateProductsForProductGroup) { + base::Uuid uuid = AddProductSpecificationSet(); + ProductGroup* product_group = (*GetProductGroupMap())[uuid].get(); + ASSERT_EQ(1u, product_group->member_products.size()); + + GURL foo1(kTestUrl1); + GURL foo2(kTestUrl2); + GURL foo3(kTestUrl3); + UpdateUrlInfos(std::vector<GURL>{foo1, foo2, foo3}); + + cluster_manager_->DidNavigatePrimaryMainFrame(foo1); + cluster_manager_->DidNavigatePrimaryMainFrame(foo2); + cluster_manager_->DidNavigatePrimaryMainFrame(foo3); + base::RunLoop().RunUntilIdle(); + std::vector<GURL> candidates = + FindSimilarCandidateProductsForProductGroup(uuid); + + ASSERT_EQ(1u, product_group->member_products.size()); + ASSERT_EQ(2u, candidates.size()); + ASSERT_TRUE(std::find(candidates.begin(), candidates.end(), foo1) != + candidates.end()); + ASSERT_TRUE(std::find(candidates.begin(), candidates.end(), foo3) != + candidates.end()); +} + +TEST_F(ClusterManagerTest, + FindSimilarCandidateProductBeforeGetProductInfoCompletes) { + GURL foo1(kTestUrl1); + GURL foo2(kTestUrl2); + GURL foo3(kTestUrl3); + UpdateUrlInfos(std::vector<GURL>{foo1, foo2, foo3}); + cluster_manager_->DidNavigatePrimaryMainFrame(foo1); + cluster_manager_->DidNavigatePrimaryMainFrame(foo2); + cluster_manager_->DidNavigatePrimaryMainFrame(foo3); + base::RunLoop().RunUntilIdle(); + + base::Uuid uuid = AddProductSpecificationSet(); + ProductGroup* product_group = (*GetProductGroupMap())[uuid].get(); + ASSERT_EQ(1u, product_group->member_products.size()); + + // Before GetProductInfo() completes, + // FindSimilarCandidateProductsForProductGroup() should not find any matches. + FindSimilarCandidateProductsForProductGroup(uuid); + ASSERT_EQ(1u, product_group->member_products.size()); + + base::RunLoop().RunUntilIdle(); + std::vector<GURL> candidates = + FindSimilarCandidateProductsForProductGroup(uuid); + ASSERT_EQ(1u, product_group->member_products.size()); + ASSERT_EQ(2u, candidates.size()); + ASSERT_TRUE(std::find(candidates.begin(), candidates.end(), foo1) != + candidates.end()); + ASSERT_TRUE(std::find(candidates.begin(), candidates.end(), foo3) != + candidates.end()); +} + +TEST_F(ClusterManagerTest, + FindSimilarCandidateProductForMultiLabelProductGroup) { + ProductInfo product_info = ProductInfo(); + product_info.category_data.add_product_categories() + ->add_category_labels() + ->set_category_default_label(kCategoryLamp); + product_info.category_data.add_product_categories() + ->add_category_labels() + ->set_category_default_label(kCategoryChair); + product_infos_[GURL(kProductUrl)] = product_info; + + base::Uuid uuid = AddProductSpecificationSet(); + ProductGroup* product_group = (*GetProductGroupMap())[uuid].get(); + ASSERT_EQ(1u, product_group->member_products.size()); + GURL foo1(kTestUrl1); + GURL foo2(kTestUrl2); + GURL foo3(kTestUrl3); + UpdateUrlInfos(std::vector<GURL>{foo1, foo2, foo3}); + + cluster_manager_->DidNavigatePrimaryMainFrame(foo1); + cluster_manager_->DidNavigatePrimaryMainFrame(foo2); + cluster_manager_->DidNavigatePrimaryMainFrame(foo3); + base::RunLoop().RunUntilIdle(); + std::vector<GURL> candidates = + FindSimilarCandidateProductsForProductGroup(uuid); + + ASSERT_EQ(1u, product_group->member_products.size()); + ASSERT_EQ(3u, candidates.size()); + ASSERT_TRUE(std::find(candidates.begin(), candidates.end(), foo1) != + candidates.end()); + ASSERT_TRUE(std::find(candidates.begin(), candidates.end(), foo2) != + candidates.end()); + ASSERT_TRUE(std::find(candidates.begin(), candidates.end(), foo3) != + candidates.end()); +} + +TEST_F(ClusterManagerTest, RemoveProductGroup) { + base::Uuid uuid = AddProductSpecificationSet(); + GURL foo1(kTestUrl1); + GURL foo2(kTestUrl2); + GURL foo3(kTestUrl3); + UpdateUrlInfos(std::vector<GURL>{foo1, foo2, foo3}); + + cluster_manager_->DidNavigatePrimaryMainFrame(foo1); + cluster_manager_->DidNavigatePrimaryMainFrame(foo2); + cluster_manager_->DidNavigatePrimaryMainFrame(foo3); + base::RunLoop().RunUntilIdle(); + ASSERT_EQ(3u, GetCandidateProductMap()->size()); + + RemoveProductSpecificationSet(uuid); + ASSERT_FALSE((*GetProductGroupMap())[uuid]); + ASSERT_EQ(3u, GetCandidateProductMap()->size()); } } // namespace commerce
diff --git a/components/commerce/core/compare/product_group.h b/components/commerce/core/compare/product_group.h index a643644e..0ab7385 100644 --- a/components/commerce/core/compare/product_group.h +++ b/components/commerce/core/compare/product_group.h
@@ -29,10 +29,6 @@ // A set storing URLs of products that are currently in the group. std::set<GURL> member_products; - // A set storing URLs of products that are open and comparable to the - // product group, but is not currently in the group. - std::set<GURL> candidate_products; - // Category infos of this group. std::vector<CategoryData> categories; };
diff --git a/components/compose/core/browser/compose_metrics.cc b/components/compose/core/browser/compose_metrics.cc index 40056973..28201643 100644 --- a/components/compose/core/browser/compose_metrics.cc +++ b/components/compose/core/browser/compose_metrics.cc
@@ -122,6 +122,10 @@ base::UmaHistogramEnumeration(histogram, ComposeSessionEventTypes::kRedoClicked); } + if (session_events.result_edit_count > 0) { + base::UmaHistogramEnumeration(histogram, + ComposeSessionEventTypes::kResultEdited); + } bool has_used_modifier = false; if (session_events.shorten_count > 0) { has_used_modifier = true; @@ -159,6 +163,10 @@ base::UmaHistogramEnumeration(histogram, ComposeSessionEventTypes::kInsertClicked); } + if (session_events.edited_result_inserted) { + base::UmaHistogramEnumeration( + histogram, ComposeSessionEventTypes::kEditedResultInserted); + } if (session_events.close_clicked) { base::UmaHistogramEnumeration(histogram, ComposeSessionEventTypes::kCloseClicked);
diff --git a/components/compose/core/browser/compose_metrics.h b/components/compose/core/browser/compose_metrics.h index 4a5c8104..624dcb2d 100644 --- a/components/compose/core/browser/compose_metrics.h +++ b/components/compose/core/browser/compose_metrics.h
@@ -122,7 +122,9 @@ kCancelEditClicked = 20, kAnyModifierUsed = 21, kRedoClicked = 22, - kMaxValue = kRedoClicked, + kResultEdited = 23, + kEditedResultInserted = 24, + kMaxValue = kEditedResultInserted, }; // Enum for recording the show status of the Compose context menu item. @@ -204,9 +206,11 @@ unsigned int undo_count = 0; // Times the user has pressed "redo" this session. unsigned int redo_count = 0; + // Times the user has edited the result text this session. + unsigned int result_edit_count = 0; // Compose request after input edited. unsigned int update_input_count = 0; - // Tiems the user has pressed the "Retry" button. + // Times the user has pressed the "Retry" button. unsigned int regenerate_count = 0; // Times the user has picked the "Shorter" option. unsigned int shorten_count = 0; @@ -234,6 +238,8 @@ // True if the results were eventually inserted back to the web page. bool inserted_results = false; + // True if an edited result was eventually inserted back to the web page. + bool edited_result_inserted = false; // True if the the user closed the compose session via the "x" button. bool close_clicked = false; // True if the user has pressed the "Edit" button this session.
diff --git a/components/external_intents/android/BUILD.gn b/components/external_intents/android/BUILD.gn index 89c0a842..6a755a0 100644 --- a/components/external_intents/android/BUILD.gn +++ b/components/external_intents/android/BUILD.gn
@@ -32,6 +32,7 @@ "//services/network/public/mojom:url_loader_base_java", "//third_party/androidx:androidx_annotation_annotation_java", "//third_party/androidx:androidx_appcompat_appcompat_java", + "//third_party/blink/public/mojom:web_feature_mojo_bindings_java", "//third_party/jni_zero:jni_zero_java", "//ui/android:ui_java", "//url:gurl_java",
diff --git a/components/external_intents/android/java/src/org/chromium/components/external_intents/InterceptNavigationDelegateImpl.java b/components/external_intents/android/java/src/org/chromium/components/external_intents/InterceptNavigationDelegateImpl.java index 8510b0d7..8d54620 100644 --- a/components/external_intents/android/java/src/org/chromium/components/external_intents/InterceptNavigationDelegateImpl.java +++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/InterceptNavigationDelegateImpl.java
@@ -17,11 +17,13 @@ import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.task.PostTask; import org.chromium.base.task.TaskTraits; +import org.chromium.blink.mojom.WebFeature; import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.components.external_intents.ExternalNavigationHandler.OverrideUrlLoadingResult; import org.chromium.components.external_intents.ExternalNavigationHandler.OverrideUrlLoadingResultType; import org.chromium.components.external_intents.ExternalNavigationParams.AsyncActionTakenParams; import org.chromium.components.navigation_interception.InterceptNavigationDelegate; +import org.chromium.content_public.browser.ContentWebFeatureUsageUtils; import org.chromium.content_public.browser.LoadUrlParams; import org.chromium.content_public.browser.NavigationController; import org.chromium.content_public.browser.NavigationHandle; @@ -39,11 +41,10 @@ /** * Class that controls navigations and allows to intercept them. It is used on Android to 'convert' - * certain navigations to Intents to 3rd party applications. - * Note the Intent is often created together with a new empty tab which then should be closed - * immediately. Closing the tab will cancel the navigation that this delegate is running for, - * hence can cause UAF error. It should be done in an asynchronous fashion to avoid it. - * See https://crbug.com/732260. + * certain navigations to Intents to 3rd party applications. Note the Intent is often created + * together with a new empty tab which then should be closed immediately. Closing the tab will + * cancel the navigation that this delegate is running for, hence can cause UAF error. It should be + * done in an asynchronous fashion to avoid it. See https://crbug.com/732260. */ @JNINamespace("external_intents") public class InterceptNavigationDelegateImpl extends InterceptNavigationDelegate { @@ -327,8 +328,26 @@ scheme = InterceptScheme.INTENT_SCHEME; } else if (MDOC_SCHEME.equals(escapedUrl.getScheme())) { scheme = InterceptScheme.MDOC_SCHEME; + ContentWebFeatureUsageUtils.logWebFeatureForCurrentPage( + mClient.getWebContents(), WebFeature.IDENTITY_DIGITAL_CREDENTIALS_DEEP_LINK); + // Record spread of `result` in order to get an idea of by how much the + // IDENTITY_DIGITAL_CREDENTIALS_DEEP_LINK use counter is over counting as a user may + // cancel the OverrideUrlLoadingResultType.OVERRIDE_WITH_ASYNC_ACTION dialog. + RecordHistogram.recordEnumeratedHistogram( + "Android.TabNavigationInterceptResult.ForMdoc", + result.getResultType(), + OverrideUrlLoadingResultType.NUM_ENTRIES); } else if (escapedUrl.getScheme().endsWith(OPENID4VP_SCHEME_SUFFIX)) { scheme = InterceptScheme.OPENID4VP_SCHEME; + ContentWebFeatureUsageUtils.logWebFeatureForCurrentPage( + mClient.getWebContents(), WebFeature.IDENTITY_DIGITAL_CREDENTIALS_DEEP_LINK); + // Record spread of `result` in order to get an idea of by how much the + // IDENTITY_DIGITAL_CREDENTIALS_DEEP_LINK use counter is over counting as a user may + // cancel the OverrideUrlLoadingResultType.OVERRIDE_WITH_ASYNC_ACTION dialog. + RecordHistogram.recordEnumeratedHistogram( + "Android.TabNavigationInterceptResult.ForOpenId4Vp", + result.getResultType(), + OverrideUrlLoadingResultType.NUM_ENTRIES); } RecordHistogram.recordEnumeratedHistogram( "Android.TabNavigationIntercept.Scheme", scheme, InterceptScheme.NUM_ENTRIES);
diff --git a/components/history_embeddings/history_embeddings_service.cc b/components/history_embeddings/history_embeddings_service.cc index a4cdf12..4ecd98f 100644 --- a/components/history_embeddings/history_embeddings_service.cc +++ b/components/history_embeddings/history_embeddings_service.cc
@@ -14,6 +14,7 @@ #include "base/task/task_traits.h" #include "base/task/thread_pool.h" #include "base/time/time.h" +#include "base/timer/elapsed_timer.h" #include "components/history/core/browser/history_types.h" #include "components/history/core/browser/url_database.h" #include "components/history/core/browser/url_row.h" @@ -226,7 +227,8 @@ Embedding query_embedding, std::optional<base::Time> time_range_start, size_t count) { - std::vector<ScoredUrl> scored_urls = sql_database.FindNearest( + base::ElapsedTimer timer; + SearchInfo search_info = sql_database.FindNearest( time_range_start, count, std::move(query_embedding), base::BindRepeating( [](base::WeakPtr<std::atomic<size_t>> weak_latest_query_id, @@ -237,9 +239,17 @@ return !weak_latest_query_id || *weak_latest_query_id != query_id; }, std::move(weak_latest_query_id), query_id)); + base::UmaHistogramTimes("History.Embeddings.Search.Duration", + timer.Elapsed()); + base::UmaHistogramCounts1M("History.Embeddings.Search.UrlCount", + search_info.searched_url_count); + base::UmaHistogramCounts10M("History.Embeddings.Search.EmbeddingCount", + search_info.searched_embedding_count); + base::UmaHistogramBoolean("History.Embeddings.Search.Completed", + search_info.completed); // Populate source passages. - for (ScoredUrl& scored_url : scored_urls) { + for (ScoredUrl& scored_url : search_info.scored_urls) { std::optional<proto::PassagesValue> value = sql_database.GetPassages(scored_url.url_id); if (value && @@ -248,7 +258,7 @@ } } - return scored_urls; + return std::move(search_info.scored_urls); } void HistoryEmbeddingsService::Storage::HandleHistoryDeletions(
diff --git a/components/history_embeddings/history_embeddings_service_unittest.cc b/components/history_embeddings/history_embeddings_service_unittest.cc index b2e1772..93dc307 100644 --- a/components/history_embeddings/history_embeddings_service_unittest.cc +++ b/components/history_embeddings/history_embeddings_service_unittest.cc
@@ -12,6 +12,7 @@ #include "base/run_loop.h" #include "base/task/cancelable_task_tracker.h" #include "base/test/bind.h" +#include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" #include "base/test/task_environment.h" #include "base/test/test_future.h" @@ -21,9 +22,11 @@ #include "components/history/core/test/history_service_test_util.h" #include "components/history_embeddings/history_embeddings_features.h" #include "components/history_embeddings/vector_database.h" +#include "components/optimization_guide/core/test_model_info_builder.h" #include "components/optimization_guide/core/test_optimization_guide_model_provider.h" #include "components/os_crypt/sync/os_crypt_mocker.h" #include "components/page_content_annotations/core/test_page_content_annotations_service.h" +#include "components/page_content_annotations/core/test_page_content_annotator.h" #include "testing/gtest/include/gtest/gtest.h" namespace history_embeddings { @@ -52,6 +55,21 @@ void TearDown() override { OSCryptMocker::TearDown(); } + void OverrideVisibilityScoresForTesting( + const base::flat_map<std::string, double>& visibility_scores_for_input) { + std::unique_ptr<optimization_guide::ModelInfo> model_info = + optimization_guide::TestModelInfoBuilder() + .SetModelFilePath( + base::FilePath(FILE_PATH_LITERAL("visibility_model"))) + .SetVersion(123) + .Build(); + CHECK(model_info); + page_content_annotator_.UseVisibilityScores(*model_info, + visibility_scores_for_input); + page_content_annotations_service_->OverridePageContentAnnotatorForTesting( + &page_content_annotator_); + } + size_t CountEmbeddingsRows(HistoryEmbeddingsService* service) { size_t result = 0; base::RunLoop loop; @@ -84,6 +102,7 @@ optimization_guide_model_provider_; std::unique_ptr<page_content_annotations::TestPageContentAnnotationsService> page_content_annotations_service_; + page_content_annotations::TestPageContentAnnotator page_content_annotator_; }; TEST_F(HistoryEmbeddingsServiceTest, ConstructsAndInvalidatesWeakPtr) { @@ -143,4 +162,22 @@ EXPECT_EQ(CountEmbeddingsRows(service.get()), 0U); } +TEST_F(HistoryEmbeddingsServiceTest, SearchReportsHistograms) { + base::HistogramTester histogram_tester; + auto service = std::make_unique<HistoryEmbeddingsService>( + history_service_.get(), page_content_annotations_service_.get()); + + base::test::TestFuture<SearchResult> future; + OverrideVisibilityScoresForTesting({{"", 0.99}}); + service->Search("", {}, 1, future.GetCallback()); + EXPECT_TRUE(future.Take().empty()); + + histogram_tester.ExpectUniqueSample("History.Embeddings.Search.Completed", + true, 1); + histogram_tester.ExpectUniqueSample("History.Embeddings.Search.UrlCount", 0, + 1); + histogram_tester.ExpectUniqueSample( + "History.Embeddings.Search.EmbeddingCount", 0, 1); +} + } // namespace history_embeddings
diff --git a/components/history_embeddings/sql_database_unittest.cc b/components/history_embeddings/sql_database_unittest.cc index def6a0d2..7c827516 100644 --- a/components/history_embeddings/sql_database_unittest.cc +++ b/components/history_embeddings/sql_database_unittest.cc
@@ -166,39 +166,53 @@ // An ordinary search with full results: { - std::vector<ScoredUrl> scored_urls = sql_database->FindNearest( - {}, 3, query, base::BindRepeating([]() { return false; })); + std::vector<ScoredUrl> scored_urls = + sql_database + ->FindNearest({}, 3, query, + base::BindRepeating([]() { return false; })) + .scored_urls; CHECK_EQ(scored_urls.size(), 3u); } // Narrowed searches with time range. { - std::vector<ScoredUrl> scored_urls = sql_database->FindNearest( - now, 3, query, base::BindRepeating([]() { return false; })); + std::vector<ScoredUrl> scored_urls = + sql_database + ->FindNearest(now, 3, query, + base::BindRepeating([]() { return false; })) + .scored_urls; CHECK_EQ(scored_urls.size(), 3u); } { std::vector<ScoredUrl> scored_urls = - sql_database->FindNearest(now + base::Seconds(30), 3, query, - base::BindRepeating([]() { return false; })); + sql_database + ->FindNearest(now + base::Seconds(30), 3, query, + base::BindRepeating([]() { return false; })) + .scored_urls; CHECK_EQ(scored_urls.size(), 2u); } { std::vector<ScoredUrl> scored_urls = - sql_database->FindNearest(now + base::Seconds(90), 3, query, - base::BindRepeating([]() { return false; })); + sql_database + ->FindNearest(now + base::Seconds(90), 3, query, + base::BindRepeating([]() { return false; })) + .scored_urls; CHECK_EQ(scored_urls.size(), 1u); } { std::vector<ScoredUrl> scored_urls = - sql_database->FindNearest(now + base::Minutes(2), 3, query, - base::BindRepeating([]() { return false; })); + sql_database + ->FindNearest(now + base::Minutes(2), 3, query, + base::BindRepeating([]() { return false; })) + .scored_urls; CHECK_EQ(scored_urls.size(), 1u); } { std::vector<ScoredUrl> scored_urls = - sql_database->FindNearest(now + base::Seconds(121), 3, query, - base::BindRepeating([]() { return false; })); + sql_database + ->FindNearest(now + base::Seconds(121), 3, query, + base::BindRepeating([]() { return false; })) + .scored_urls; CHECK_EQ(scored_urls.size(), 0u); } }
diff --git a/components/history_embeddings/vector_database.cc b/components/history_embeddings/vector_database.cc index 7188acf..109b100 100644 --- a/components/history_embeddings/vector_database.cc +++ b/components/history_embeddings/vector_database.cc
@@ -98,7 +98,13 @@ //////////////////////////////////////////////////////////////////////////////// -std::vector<ScoredUrl> VectorDatabase::FindNearest( +SearchInfo::SearchInfo() = default; +SearchInfo::SearchInfo(SearchInfo&&) = default; +SearchInfo::~SearchInfo() = default; + +//////////////////////////////////////////////////////////////////////////////// + +SearchInfo VectorDatabase::FindNearest( std::optional<base::Time> time_range_start, size_t count, const Embedding& query, @@ -127,8 +133,11 @@ }; std::priority_queue<ScoredUrl, std::vector<ScoredUrl>, Compare> q; + SearchInfo search_info; + search_info.completed = true; while (const UrlEmbeddings* item = iterator->Next()) { if (is_search_halted.Run()) { + search_info.completed = false; break; } while (q.size() > count) { @@ -142,15 +151,16 @@ .score = score, .index = score_index, }); + search_info.searched_url_count++; + search_info.searched_embedding_count += item->embeddings.size(); } // Empty queue into vector and return result. - std::vector<ScoredUrl> nearest; while (!q.empty()) { - nearest.push_back(q.top()); + search_info.scored_urls.push_back(q.top()); q.pop(); } - return nearest; + return search_info; } ////////////////////////////////////////////////////////////////////////////////
diff --git a/components/history_embeddings/vector_database.h b/components/history_embeddings/vector_database.h index fbffd508..4756d46 100644 --- a/components/history_embeddings/vector_database.h +++ b/components/history_embeddings/vector_database.h
@@ -100,6 +100,25 @@ std::string passage; }; +struct SearchInfo { + SearchInfo(); + SearchInfo(SearchInfo&&); + ~SearchInfo(); + + // Result of the search, the best scored URLs. + std::vector<ScoredUrl> scored_urls; + + // The number of URLs searched to find this result. + size_t searched_url_count = 0u; + + // The number of embeddings searched to find this result. + size_t searched_embedding_count = 0u; + + // Whether the search completed without interruption. Starting a new search + // may cause a search to halt, and in that case this member will be false. + bool completed = false; +}; + // This base class decouples storage classes and inverts the dependency so that // a vector database can work with a SQLite database, simple in-memory storage, // flat files, or whatever kinds of storage will work efficiently. @@ -130,11 +149,10 @@ // Searches the database for embeddings near given `query` and returns // information about where they were found and how nearly the query matched. - std::vector<ScoredUrl> FindNearest( - std::optional<base::Time> time_range_start, - size_t count, - const Embedding& query, - base::RepeatingCallback<bool()> is_search_halted); + SearchInfo FindNearest(std::optional<base::Time> time_range_start, + size_t count, + const Embedding& query, + base::RepeatingCallback<bool()> is_search_halted); }; // This is an in-memory vector store that supports searching and saving to
diff --git a/components/history_embeddings/vector_database_unittest.cc b/components/history_embeddings/vector_database_unittest.cc index a3fe931b..fce61ee 100644 --- a/components/history_embeddings/vector_database_unittest.cc +++ b/components/history_embeddings/vector_database_unittest.cc
@@ -61,8 +61,11 @@ // An ordinary search with full results: { - std::vector<ScoredUrl> scored_urls = database.FindNearest( - {}, 3, query, base::BindRepeating([]() { return false; })); + std::vector<ScoredUrl> scored_urls = + database + .FindNearest({}, 3, query, + base::BindRepeating([]() { return false; })) + .scored_urls; CHECK_EQ(scored_urls.size(), 3u); } @@ -71,13 +74,15 @@ std::atomic<size_t> counter(0u); base::WeakPtrFactory<std::atomic<size_t>> weak_factory(&counter); std::vector<ScoredUrl> scored_urls = - database.FindNearest({}, 3, query, - base::BindRepeating( - [](auto weak_counter) { - (*weak_counter)++; - return *weak_counter > 2u; - }, - weak_factory.GetWeakPtr())); + database + .FindNearest({}, 3, query, + base::BindRepeating( + [](auto weak_counter) { + (*weak_counter)++; + return *weak_counter > 2u; + }, + weak_factory.GetWeakPtr())) + .scored_urls; CHECK_EQ(scored_urls.size(), 2u); } } @@ -96,39 +101,53 @@ // An ordinary search with full results: { - std::vector<ScoredUrl> scored_urls = database.FindNearest( - {}, 3, query, base::BindRepeating([]() { return false; })); + std::vector<ScoredUrl> scored_urls = + database + .FindNearest({}, 3, query, + base::BindRepeating([]() { return false; })) + .scored_urls; CHECK_EQ(scored_urls.size(), 3u); } // Narrowed searches with time range. { - std::vector<ScoredUrl> scored_urls = database.FindNearest( - now, 3, query, base::BindRepeating([]() { return false; })); + std::vector<ScoredUrl> scored_urls = + database + .FindNearest(now, 3, query, + base::BindRepeating([]() { return false; })) + .scored_urls; CHECK_EQ(scored_urls.size(), 3u); } { std::vector<ScoredUrl> scored_urls = - database.FindNearest(now + base::Seconds(30), 3, query, - base::BindRepeating([]() { return false; })); + database + .FindNearest(now + base::Seconds(30), 3, query, + base::BindRepeating([]() { return false; })) + .scored_urls; CHECK_EQ(scored_urls.size(), 2u); } { std::vector<ScoredUrl> scored_urls = - database.FindNearest(now + base::Seconds(90), 3, query, - base::BindRepeating([]() { return false; })); + database + .FindNearest(now + base::Seconds(90), 3, query, + base::BindRepeating([]() { return false; })) + .scored_urls; CHECK_EQ(scored_urls.size(), 1u); } { std::vector<ScoredUrl> scored_urls = - database.FindNearest(now + base::Minutes(2), 3, query, - base::BindRepeating([]() { return false; })); + database + .FindNearest(now + base::Minutes(2), 3, query, + base::BindRepeating([]() { return false; })) + .scored_urls; CHECK_EQ(scored_urls.size(), 1u); } { std::vector<ScoredUrl> scored_urls = - database.FindNearest(now + base::Seconds(121), 3, query, - base::BindRepeating([]() { return false; })); + database + .FindNearest(now + base::Seconds(121), 3, query, + base::BindRepeating([]() { return false; })) + .scored_urls; CHECK_EQ(scored_urls.size(), 0u); } }
diff --git a/components/live_caption/views/caption_bubble.cc b/components/live_caption/views/caption_bubble.cc index 6a3a92e..74562be 100644 --- a/components/live_caption/views/caption_bubble.cc +++ b/components/live_caption/views/caption_bubble.cc
@@ -536,7 +536,11 @@ CaptionBubble::CaptionBubble(PrefService* profile_prefs, const std::string& application_locale, base::OnceClosure destroyed_callback) - : profile_prefs_(profile_prefs), + : views::BubbleDialogDelegateView(nullptr, + views::BubbleBorder::TOP_LEFT, + views::BubbleBorder::DIALOG_SHADOW, + true), + profile_prefs_(profile_prefs), destroyed_callback_(std::move(destroyed_callback)), application_locale_(application_locale), is_expanded_( @@ -1517,7 +1521,6 @@ void CaptionBubble::Redraw() { UpdateBubbleAndTitleVisibility(); UpdateContentSize(); - SizeToContents(); } void CaptionBubble::ShowInactive() {
diff --git a/components/performance_manager/embedder/graph_features.h b/components/performance_manager/embedder/graph_features.h index 82da10a..9d36131 100644 --- a/components/performance_manager/embedder/graph_features.h +++ b/components/performance_manager/embedder/graph_features.h
@@ -51,7 +51,6 @@ bool site_data_recorder : 1; bool tab_connectedness_decorator : 1; bool tab_page_decorator : 1; - bool tab_properties_decorator : 1; bool v8_context_tracker : 1; }; }; @@ -120,11 +119,6 @@ return *this; } - constexpr GraphFeatures& EnableTabPropertiesDecorator() { - flags_.tab_properties_decorator = true; - return *this; - } - constexpr GraphFeatures& EnableV8ContextTracker() { EnableExecutionContextRegistry(); flags_.v8_context_tracker = true; @@ -153,7 +147,6 @@ EnableSiteDataRecorder(); EnableTabConnectednessDecorator(); EnableTabPageDecorator(); - EnableTabPropertiesDecorator(); EnableV8ContextTracker(); return *this; }
diff --git a/components/user_education/views/help_bubble_view.cc b/components/user_education/views/help_bubble_view.cc index 512982d3..1e4bf22 100644 --- a/components/user_education/views/help_bubble_view.cc +++ b/components/user_education/views/help_bubble_view.cc
@@ -520,7 +520,8 @@ features::IsChromeRefresh2023() ? views::BubbleBorder::DIALOG_SHADOW : views::BubbleBorder::STANDARD_SHADOW #endif - ), + , + true), delegate_(delegate) { if (anchor.rect.has_value()) { SetForceAnchorRect(anchor.rect.value()); @@ -883,7 +884,9 @@ // b/303069420). frame_view->bubble_border()->set_draw_border_stroke(false); - SizeToContents(); + // TODO(crbug.com/41493925) Remove this InvalidateLayout() once the border + // invalidate itself when it changes. + InvalidateLayout(); // Most help bubbles with buttons take focus when they show. bool show_active =
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn index dfcda910..e0aea41 100644 --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn
@@ -3045,6 +3045,7 @@ "android/content_url_loader_factory.cc", "android/content_url_loader_factory.h", "android/content_view_statics.cc", + "android/content_web_feature_usage_utils_android.cc", "android/devtools_auth.cc", "android/dialog_overlay_impl.cc", "android/dialog_overlay_impl.h",
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm index 61264ae..bef4e91 100644 --- a/content/browser/accessibility/browser_accessibility_cocoa.mm +++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
@@ -1595,8 +1595,8 @@ return nil; } if (!root_manager->GetParentView()) { - // TODO(crbug.com/1425682) Find out why this happens, there should always be - // a parent view. This used to be a CHECK() but caused too many crashes. + // TODO(crbug.com/40898856) Find out why this happens, there should always + // be a parent view. This used to be a CHECK() but caused too many crashes. // Repro steps are available in the bug. return nil; }
diff --git a/content/browser/accessibility/cross_platform_accessibility_browsertest.cc b/content/browser/accessibility/cross_platform_accessibility_browsertest.cc index c86c221..94a2395 100644 --- a/content/browser/accessibility/cross_platform_accessibility_browsertest.cc +++ b/content/browser/accessibility/cross_platform_accessibility_browsertest.cc
@@ -1503,7 +1503,7 @@ TestLocalizedLandmarkType(17, ax::mojom::Role::kSearch, "search"); } -// TODO(https://crbug.com/1020456) re-enable when crashing on linux is resolved. +// TODO(crbug.com/40656480) re-enable when crashing on linux is resolved. #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) #define MAYBE_LocalizedRoleDescription DISABLED_LocalizedRoleDescription #else
diff --git a/content/browser/accessibility/dump_accessibility_events_browsertest.cc b/content/browser/accessibility/dump_accessibility_events_browsertest.cc index cae01e62..96201e12 100644 --- a/content/browser/accessibility/dump_accessibility_events_browsertest.cc +++ b/content/browser/accessibility/dump_accessibility_events_browsertest.cc
@@ -711,7 +711,7 @@ RunEventTest(FILE_PATH_LITERAL("expanded-changed.html")); } -// TODO(crbug.com/1423530): disabled on UIA. +// TODO(crbug.com/40897549): disabled on UIA. // TODO(crbug.com/1423845): Failing on Mac. // TODO(crbug.com/1423845): Actually failing everywhere. Disabled. IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTestExceptUIA, @@ -883,7 +883,7 @@ RunEventTest(FILE_PATH_LITERAL("menulist-collapse-next.html")); } -// TODO(crbug/1232295): Flaky on Linux and Win. +// TODO(crbug.com/40780161): Flaky on Linux and Win. // TODO(crbug.com/1230894): locks up with popup open, only on Mac #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) #define MAYBE_AccessibilityEventsMenuListExpand \
diff --git a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc index 3187c1a0..3f8a07f9 100644 --- a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc +++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -159,7 +159,7 @@ base::test::ScopedFeatureList feature_list_; }; -// TODO(https://crbug.com/1470120): We need to create a way to incrementally +// TODO(crbug.com/40925629): We need to create a way to incrementally // enable and create UIA tests. INSTANTIATE_TEST_SUITE_P( All, @@ -1619,7 +1619,7 @@ RunHtmlTest(FILE_PATH_LITERAL("aside-inside-section-role-generic.html")); } -// TODO(crbug.com/1502854): Fix failure on android +// TODO(crbug.com/40943250): Fix failure on android #if BUILDFLAG(IS_ANDROID) #define MAYBE_AccessibilityAudio DISABLED_AccessibilityAudio #else @@ -2360,7 +2360,7 @@ // TODO: date and time controls drop their children, including the popup button, // on Android. -// TODO(https://crbug.com/1378498): Flaky on every platform. +// TODO(crbug.com/40875029): Flaky on every platform. IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, DISABLED_AccessibilityInputDateWithPopupOpen) { RunHtmlTest(FILE_PATH_LITERAL("input-date-with-popup-open.html")); @@ -2617,8 +2617,8 @@ } #if BUILDFLAG(IS_MAC) -// TODO(1038813): The /blink test pass is different on Windows and Mac, versus -// Linux. Also, see https://crbug.com/1314896. +// TODO(crbug.com/40666501): The /blink test pass is different on Windows and +// Mac, versus Linux. Also, see https://crbug.com/1314896. #define MAYBE_AccessibilityInputTime DISABLED_AccessibilityInputTime #else #define MAYBE_AccessibilityInputTime AccessibilityInputTime @@ -3503,7 +3503,7 @@ RunHtmlTest(FILE_PATH_LITERAL("node-changed-crash-in-editable-text.html")); } -// TODO(https://crbug.com/1366446): This test is failing on Android. +// TODO(crbug.com/40866942): This test is failing on Android. #if BUILDFLAG(IS_ANDROID) #define MAYBE_AccessibilityNoSourceVideo DISABLED_AccessibilityNoSourceVideo #else
diff --git a/content/browser/accessibility/hit_testing_browsertest.cc b/content/browser/accessibility/hit_testing_browsertest.cc index 1bc08c0f..0bb1b8e 100644 --- a/content/browser/accessibility/hit_testing_browsertest.cc +++ b/content/browser/accessibility/hit_testing_browsertest.cc
@@ -635,8 +635,8 @@ } #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_MAC) -// Fails flakily with compared ID differences. TODO(crbug.com/1121099): Re-enable -// this test. +// Fails flakily with compared ID differences. TODO(crbug.com/40715277): +// Re-enable this test. IN_PROC_BROWSER_TEST_P(AccessibilityHitTestingBrowserTest, DISABLED_CachingAsyncHitTest_WithPinchZoom) { ASSERT_TRUE(embedded_test_server()->Start()); @@ -682,7 +682,7 @@ // TODO(https://crbug.com/1224978): Times out flakily on TSAN builds. // TODO(https://crbug.com/1459570): Times out flakily on ASan builds. -// TODO(https://crbug.com/1461935): Times out flakily on win-asan. +// TODO(crbug.com/40921699): Times out flakily on win-asan. IN_PROC_BROWSER_TEST_P(AccessibilityHitTestingBrowserTest, DISABLED_HitTest_WithPinchZoom) { ASSERT_TRUE(embedded_test_server()->Start());
diff --git a/content/browser/android/content_web_feature_usage_utils_android.cc b/content/browser/android/content_web_feature_usage_utils_android.cc new file mode 100644 index 0000000..942986d --- /dev/null +++ b/content/browser/android/content_web_feature_usage_utils_android.cc
@@ -0,0 +1,24 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/android/jni_android.h" +#include "content/browser/web_contents/web_contents_android.h" +#include "content/public/android/content_jni_headers/ContentWebFeatureUsageUtils_jni.h" +#include "content/public/browser/content_browser_client.h" +#include "content/public/browser/web_contents.h" +#include "content/public/common/content_client.h" + +namespace content { + +static void JNI_ContentWebFeatureUsageUtils_LogWebFeatureForCurrentPage( + JNIEnv* env, + const jni_zero::JavaParamRef<jobject>& jweb_contents, + jint web_feature) { + WebContents* web_contents = WebContents::FromJavaWebContents(jweb_contents); + GetContentClient()->browser()->LogWebFeatureForCurrentPage( + web_contents->GetPrimaryMainFrame(), + static_cast<blink::mojom::WebFeature>(web_feature)); +} + +} // namespace content
diff --git a/content/browser/bluetooth/web_bluetooth_pairing_manager_impl.cc b/content/browser/bluetooth/web_bluetooth_pairing_manager_impl.cc index f453376..0d5f1bf 100644 --- a/content/browser/bluetooth/web_bluetooth_pairing_manager_impl.cc +++ b/content/browser/bluetooth/web_bluetooth_pairing_manager_impl.cc
@@ -102,10 +102,10 @@ constexpr int WebBluetoothPairingManagerImpl::kMaxPairAttempts; -// TODO(960258): Ensure this delegate outlives any in-progress pairing operation -// for which it is used. Additionally review use of WebBluetoothDeviceId vs. -// BluetoothDevice as well as how to deal with simultaneous pairing requests -// for the same device. +// TODO(crbug.com/40626253): Ensure this delegate outlives any in-progress +// pairing operation for which it is used. Additionally review use of +// WebBluetoothDeviceId vs. BluetoothDevice as well as how to deal with +// simultaneous pairing requests for the same device. WebBluetoothPairingManagerImpl::WebBluetoothPairingManagerImpl( WebBluetoothPairingManagerDelegate* pairing_manager_delegate) : pairing_manager_delegate_(pairing_manager_delegate) {
diff --git a/content/browser/browser_child_process_host_impl.cc b/content/browser/browser_child_process_host_impl.cc index 50a777e..fb0844c 100644 --- a/content/browser/browser_child_process_host_impl.cc +++ b/content/browser/browser_child_process_host_impl.cc
@@ -570,7 +570,7 @@ } // This class is not expected to be used for renderer child processes. - // TODO(crbug/1028263): CHECK, once proven that this scenario does not + // TODO(crbug.com/40109064): CHECK, once proven that this scenario does not // occur in the wild, else remove dump and just return early if disproven. if (data_.process_type == PROCESS_TYPE_RENDERER) { base::debug::DumpWithoutCrashing();
diff --git a/content/browser/browsing_data/browsing_data_remover_impl.cc b/content/browser/browsing_data/browsing_data_remover_impl.cc index d2d2ac5..4448e43 100644 --- a/content/browser/browsing_data/browsing_data_remover_impl.cc +++ b/content/browser/browsing_data/browsing_data_remover_impl.cc
@@ -539,7 +539,7 @@ RenderProcessHostImpl::ClearAllResourceCaches(); - // TODO(crbug.com/813882): implement retry on network service. + // TODO(crbug.com/40563720): implement retry on network service. // The clearing of the HTTP cache happens in the network service process // when enabled. Note that we've deprecated the concept of a media cache, @@ -613,7 +613,7 @@ ////////////////////////////////////////////////////////////////////////////// // Reporting cache. - // TODO(https://crbug.com/1291489): Add unit test to cover this. + // TODO(crbug.com/40818785): Add unit test to cover this. if (remove_mask & DATA_TYPE_COOKIES) { network::mojom::NetworkContext* network_context = storage_partition->GetNetworkContext();
diff --git a/content/browser/browsing_topics/browsing_topics_browsertest.cc b/content/browser/browsing_topics/browsing_topics_browsertest.cc index 5b67eb4..c23e7c1 100644 --- a/content/browser/browsing_topics/browsing_topics_browsertest.cc +++ b/content/browser/browsing_topics/browsing_topics_browsertest.cc
@@ -190,7 +190,7 @@ EXPECT_EQ("[]", InvokeTopicsAPI(web_contents())); } -// TODO(crbug.com/1381167): migrate to WPT. +// TODO(crbug.com/40245082): migrate to WPT. IN_PROC_BROWSER_TEST_F(BrowsingTopicsBrowserTest, Fetch_TopicsHeaderNotVisibleInServiceWorker) { GURL main_frame_url = https_server_.GetURL(
diff --git a/content/browser/cache_storage/cache_storage_manager_unittest.cc b/content/browser/cache_storage/cache_storage_manager_unittest.cc index c8c0cad..44d597d 100644 --- a/content/browser/cache_storage/cache_storage_manager_unittest.cc +++ b/content/browser/cache_storage/cache_storage_manager_unittest.cc
@@ -1873,7 +1873,7 @@ EXPECT_NE(Size(bucket_locator1_), 0); } -// TODO(crbug.com/1369300): Re-enable test for Windows. +// TODO(crbug.com/40868994): Re-enable test for Windows. #if BUILDFLAG(IS_WIN) #define MAYBE_GetBucketUsageWithPadding DISABLED_GetBucketUsageWithPadding #else
diff --git a/content/browser/child_process_launcher_helper.cc b/content/browser/child_process_launcher_helper.cc index 5c497a1f..5513503 100644 --- a/content/browser/child_process_launcher_helper.cc +++ b/content/browser/child_process_launcher_helper.cc
@@ -69,7 +69,7 @@ [[maybe_unused]] base::CommandLine* command_line, [[maybe_unused]] base::LaunchOptions* launch_options, [[maybe_unused]] FileMappedForLaunch* files_to_register) { - // TODO(crbug.com/1028263): Once all process types support histogram shared + // TODO(crbug.com/40109064): Once all process types support histogram shared // memory being passed at launch, remove this if. if (!histogram_memory_region.IsValid()) { return; @@ -78,7 +78,7 @@ CHECK(command_line); CHECK(histogram_memory_region.IsValid()); #if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) - // TODO(crbug.com/1028263): content::FileMappedForLaunch (POSIX) is redundant + // TODO(crbug.com/40109064): content::FileMappedForLaunch (POSIX) is redundant // wrt the base::LaunchOptions::<platform-specific-handles-to-transfer> // members. Refactor this so that the details of base::Launch vs Zygote on // (some) POSIX platforms is an implementation detail and not exposed here. @@ -122,7 +122,7 @@ [[maybe_unused]] FileMappedForLaunch* files_to_register) { CHECK(command_line); #if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) - // TODO(crbug.com/1028263): content::FileMappedForLaunch (POSIX) is redundant + // TODO(crbug.com/40109064): content::FileMappedForLaunch (POSIX) is redundant // wrt the base::LaunchOptions::<platform-specific-handles-to-transfer> // members. Refactor this so that the details of base::Launch vs Zygote on // (some) POSIX platforms is an implementation detail and not exposed here.
diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc index 4230fb5..fa80df8e 100644 --- a/content/browser/child_process_security_policy_impl.cc +++ b/content/browser/child_process_security_policy_impl.cc
@@ -1917,7 +1917,7 @@ // require COOP/COEP handling, to pass in their COOP/COEP information // so it can be used here instead of the values in // |actual_process_lock|. - // TODO(crbug.com/1271197): The code below is subtly incorrect in cases + // TODO(crbug.com/40205612): The code below is subtly incorrect in cases // where actual_process_lock.is_pdf() is true, since in the case of PDFs // the lock is intended to prevent access to the lock's site/origin, // while still allowing the navigation to commit.
diff --git a/content/browser/devtools/network_service_devtools_observer.cc b/content/browser/devtools/network_service_devtools_observer.cc index 79e58b5f..94be7c1 100644 --- a/content/browser/devtools/network_service_devtools_observer.cc +++ b/content/browser/devtools/network_service_devtools_observer.cc
@@ -218,7 +218,7 @@ if (!rfhi) return; - // TODO(https://crbug.com/1268378): Remove this once enforcement is always + // TODO(crbug.com/40204695): Remove this once enforcement is always // enabled and warnings are no more. if (is_warning && initiator_origin.has_value()) { if (!initiator_origin->IsSameOriginWith(url)) {
diff --git a/content/browser/devtools/protocol/browser_handler.cc b/content/browser/devtools/protocol/browser_handler.cc index 7f47041..5018945 100644 --- a/content/browser/devtools/protocol/browser_handler.cc +++ b/content/browser/devtools/protocol/browser_handler.cc
@@ -113,7 +113,7 @@ // //content/browser/permissions:permission_service_impl // ::PermissionDescriptorToPermissionType, producing an error in // |error_message| as necessary. -// TODO(crbug.com/989983): De-duplicate this logic. +// TODO(crbug.com/40638575): De-duplicate this logic. Response PermissionDescriptorToPermissionType( std::unique_ptr<protocol::Browser::PermissionDescriptor> descriptor, PermissionType* permission_type) {
diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/browser/devtools/protocol/network_handler.cc index c1633bb..e6532ef2 100644 --- a/content/browser/devtools/protocol/network_handler.cc +++ b/content/browser/devtools/protocol/network_handler.cc
@@ -446,7 +446,7 @@ } cookie_partition_key = deserialized_partition_key.value(); } - // TODO(crbug.com/1225444) Add Partitioned to DevTools cookie structures. + // TODO(crbug.com/40188414) Add Partitioned to DevTools cookie structures. std::unique_ptr<net::CanonicalCookie> cookie = net::CanonicalCookie::CreateSanitizedCookie( url, name, value, normalized_domain, path, base::Time(),
diff --git a/content/browser/devtools/protocol/page_handler.cc b/content/browser/devtools/protocol/page_handler.cc index b68824c5..60eb3e2 100644 --- a/content/browser/devtools/protocol/page_handler.cc +++ b/content/browser/devtools/protocol/page_handler.cc
@@ -1209,7 +1209,7 @@ modified_web_prefs); { - // TODO(crbug.com/1141835): Remove the bug is fixed. + // TODO(crbug.com/40727379): Remove the bug is fixed. // Walkaround for the bug. Emulated `view_size` has to be set twice, // otherwise the scrollbar will be on the screenshot present. blink::DeviceEmulationParams tmp_params = modified_params;
diff --git a/content/browser/fenced_frame/fenced_frame_url_mapping.cc b/content/browser/fenced_frame/fenced_frame_url_mapping.cc index 967e172..60496ac 100644 --- a/content/browser/fenced_frame/fenced_frame_url_mapping.cc +++ b/content/browser/fenced_frame/fenced_frame_url_mapping.cc
@@ -195,7 +195,7 @@ std::vector<blink::AdDescriptor> ad_component_descriptors, scoped_refptr<FencedFrameReporter> fenced_frame_reporter) { // Move pending mapped urn::uuid to `urn_uuid_to_url_map_`. - // TODO(crbug.com/1422301): Remove the check for whether `urn_uuid` has been + // TODO(crbug.com/40896818): Remove the check for whether `urn_uuid` has been // mapped already once the crash is resolved. CHECK(!IsMapped(urn_uuid)); auto pending_it = pending_urn_uuid_to_url_map_.find(urn_uuid);
diff --git a/content/browser/fenced_frame/fenced_frame_url_mapping.h b/content/browser/fenced_frame/fenced_frame_url_mapping.h index 8b9c9db3..3c74c06 100644 --- a/content/browser/fenced_frame/fenced_frame_url_mapping.h +++ b/content/browser/fenced_frame/fenced_frame_url_mapping.h
@@ -176,7 +176,7 @@ // replacements map. The true URLs for any component ads associated with this // URN will also have substrings substituted. This function will be removed // once all FLEDGE auctions switch to using fenced frames. - // TODO(crbug.com/1253118): Remove this function when we remove support for + // TODO(crbug.com/40199055): Remove this function when we remove support for // showing FLEDGE ads in iframes. void SubstituteMappedURL( const GURL& urn_uuid,
diff --git a/content/browser/file_system_access/features.cc b/content/browser/file_system_access/features.cc index 1604e375..aac6076 100644 --- a/content/browser/file_system_access/features.cc +++ b/content/browser/file_system_access/features.cc
@@ -25,7 +25,7 @@ "FileSystemAccessDragAndDropCheckBlocklist", base::FEATURE_DISABLED_BY_DEFAULT); -// TODO(crbug.com/1421735): Remove this flag eventually. +// TODO(crbug.com/40896420): Remove this flag eventually. // When enabled, GetFile() and GetEntries() on a directory handle performs // the blocklist check on child file handles. BASE_FEATURE(kFileSystemAccessDirectoryIterationBlocklistCheck,
diff --git a/content/browser/file_system_access/file_system_access_file_handle_impl.cc b/content/browser/file_system_access/file_system_access_file_handle_impl.cc index da24e2ea..bee8210 100644 --- a/content/browser/file_system_access/file_system_access_file_handle_impl.cc +++ b/content/browser/file_system_access/file_system_access_file_handle_impl.cc
@@ -515,7 +515,7 @@ DCHECK_EQ(GetWritePermissionStatus(), blink::mojom::PermissionStatus::GRANTED); - // TODO(crbug.com/1241401): Expand this check to all backends. + // TODO(crbug.com/40194651): Expand this check to all backends. if (url().type() == storage::kFileSystemTypeLocal) { base::ThreadPool::PostTaskAndReplyWithResult( FROM_HERE, {base::MayBlock()}, @@ -648,7 +648,7 @@ // existence check and when file contents are copied to the new file. // However, since we've acquired an exclusive lock to the swap file, this // is only possible if the file is created external to this API. - // TODO(https://crbug.com/1382215): Consider requiring a lock to create an + // TODO(crbug.com/40245515): Consider requiring a lock to create an // empty file, e.g. parent.getFileHandle(swapFileName, {create: true}). manager()->DoFileSystemOperation( FROM_HERE, &FileSystemOperationRunner::FileExists,
diff --git a/content/browser/file_system_access/file_system_access_manager_impl_unittest.cc b/content/browser/file_system_access/file_system_access_manager_impl_unittest.cc index 856421a..8f4f14c 100644 --- a/content/browser/file_system_access/file_system_access_manager_impl_unittest.cc +++ b/content/browser/file_system_access/file_system_access_manager_impl_unittest.cc
@@ -504,7 +504,7 @@ // Note: we can test that the open succeeded, but because the FileSystemURL // is not exposed to the callback we rely on WPTs to ensure the bucket // locator was actually used. - // TODO(crbug.com/1322897): Ensure the bucket override is actually used. + // TODO(crbug.com/40224463): Ensure the bucket override is actually used. ASSERT_TRUE(root); }
diff --git a/content/browser/file_system_access/file_system_access_observer_browsertest.cc b/content/browser/file_system_access/file_system_access_observer_browsertest.cc index e9d1e86..d28fcb7d3 100644 --- a/content/browser/file_system_access/file_system_access_observer_browsertest.cc +++ b/content/browser/file_system_access/file_system_access_observer_browsertest.cc
@@ -480,7 +480,7 @@ EXPECT_THAT(records.GetList(), testing::Not(testing::IsEmpty())); } -/// TODO(crbug/1499075): Re-enable after fixing flakiness. +/// TODO(crbug.com/40939929): Re-enable after fixing flakiness. IN_PROC_BROWSER_TEST_P(FileSystemAccessObserverBrowserTest, ObserveDirectoryRecursively) { base::FilePath dir_path = CreateDirectoryToBePicked();
diff --git a/content/browser/gpu/browser_child_process_backgrounded_bridge_browsertest.mm b/content/browser/gpu/browser_child_process_backgrounded_bridge_browsertest.mm index c38dd55..b1891df 100644 --- a/content/browser/gpu/browser_child_process_backgrounded_bridge_browsertest.mm +++ b/content/browser/gpu/browser_child_process_backgrounded_bridge_browsertest.mm
@@ -117,7 +117,7 @@ base::Process::Priority::kUserBlocking); } -// TODO(crbug.com/1426160): Disabled because this test is flaky. +// TODO(crbug.com/40899195): Disabled because this test is flaky. IN_PROC_BROWSER_TEST_F(BrowserChildProcessBackgroundedBridgeTest, DISABLED_InitiallyBackgrounded) { // Set the browser process as backgrounded.
diff --git a/content/browser/gpu/gpu_background_kill_android_browsertest.cc b/content/browser/gpu/gpu_background_kill_android_browsertest.cc index 5895bbc..2832cd6 100644 --- a/content/browser/gpu/gpu_background_kill_android_browsertest.cc +++ b/content/browser/gpu/gpu_background_kill_android_browsertest.cc
@@ -45,7 +45,7 @@ scoped_refptr<gpu::GpuChannelHost> gpu_channel_host_; }; -// TODO(crbug.com/1471932): Flaky. +// TODO(crbug.com/40926381): Flaky. IN_PROC_BROWSER_TEST_F(GpuKillBackgroundTest, DISABLED_Simple) { ASSERT_FALSE(IsChannelEstablished());
diff --git a/content/browser/handwriting/handwriting_recognizer_impl_cros.cc b/content/browser/handwriting/handwriting_recognizer_impl_cros.cc index 47cc6d0..6cbdcb3 100644 --- a/content/browser/handwriting/handwriting_recognizer_impl_cros.cc +++ b/content/browser/handwriting/handwriting_recognizer_impl_cros.cc
@@ -65,7 +65,7 @@ } // Returns whether the two language tags are semantically the same. -// TODO(https://crbug.com/1166910): We may need a better language tag matching +// TODO(crbug.com/40742391): We may need a better language tag matching // method (e.g. libicu's LocaleMatcher). bool LanguageTagsAreMatching(std::string_view a, std::string_view b) { // Per BCP 47, language tag comparisons are case-insensitive.
diff --git a/content/browser/indexed_db/indexed_db_context_impl.h b/content/browser/indexed_db/indexed_db_context_impl.h index 12cd124..72bfdce 100644 --- a/content/browser/indexed_db/indexed_db_context_impl.h +++ b/content/browser/indexed_db/indexed_db_context_impl.h
@@ -333,7 +333,7 @@ // directory entry's metadata. See crbug.com/1489517 and // https://devblogs.microsoft.com/oldnewthing/20111226-00/?p=8813 // - // TODO(crbug.com/1493696): use an abstract model for quota instead of real + // TODO(crbug.com/40285925): use an abstract model for quota instead of real // world bytes. std::map<storage::BucketLocator, int64_t> bucket_size_map_;
diff --git a/content/browser/interest_group/ad_auction_service_impl_unittest.cc b/content/browser/interest_group/ad_auction_service_impl_unittest.cc index 29c07d4..3af8bd79 100644 --- a/content/browser/interest_group/ad_auction_service_impl_unittest.cc +++ b/content/browser/interest_group/ad_auction_service_impl_unittest.cc
@@ -390,7 +390,7 @@ // Make the next request fail with `error` -- subsequent requests will succeed // again unless another FailNextUpdateRequestWithError() call is made. // - // TODO(crbug.com/1298593): Replace this with FailUpdateRequestWithError(). + // TODO(crbug.com/40215596): Replace this with FailUpdateRequestWithError(). void FailNextUpdateRequestWithError(net::Error error) { base::AutoLock auto_lock(lock_); update_next_error_ = error;
diff --git a/content/browser/interest_group/interest_group_browsertest.cc b/content/browser/interest_group/interest_group_browsertest.cc index c2c039e..22021db7 100644 --- a/content/browser/interest_group/interest_group_browsertest.cc +++ b/content/browser/interest_group/interest_group_browsertest.cc
@@ -20078,7 +20078,7 @@ EXPECT_EQ(nullptr, RunAuctionAndWait(auction_config)); } -// TODO(crbug.com/1474303): Re-enable this test +// TODO(crbug.com/40927353): Re-enable this test IN_PROC_BROWSER_TEST_F(InterestGroupBrowserTest, AuctionNonceIsValid) { GURL test_url = embedded_https_test_server().GetURL("a.test", "/page_with_iframe.html");
diff --git a/content/browser/interest_group/interest_group_permissions_checker.h b/content/browser/interest_group/interest_group_permissions_checker.h index 246b881..f69f4424 100644 --- a/content/browser/interest_group/interest_group_permissions_checker.h +++ b/content/browser/interest_group/interest_group_permissions_checker.h
@@ -33,7 +33,7 @@ // Groups permissions checks that can be handled by the same .well-known fetch, // to avoid redundant fetches. // -// TODO(https://crbug.com/1315805): +// TODO(crbug.com/40221941): // * Consider adding a per-NIK / per-page / per-frame LRU cache. Roundtrip to // the HTTP cache are slow, and we'll likely want to limit the number of // pending operations the renderer sends to the browser process at a time.
diff --git a/content/browser/interest_group/interest_group_priority_util.cc b/content/browser/interest_group/interest_group_priority_util.cc index fd6af50..e0d4489 100644 --- a/content/browser/interest_group/interest_group_priority_util.cc +++ b/content/browser/interest_group/interest_group_priority_util.cc
@@ -37,7 +37,7 @@ age = std::max(age, base::TimeDelta()); age = std::min(age, base::Days(30)); - // TODO(https://crbug.com/1343389): Add browserSignals.age. + // TODO(crbug.com/40231372): Add browserSignals.age. base::flat_map<std::string, double> browser_signals{ {"browserSignals.one", 1}, {"browserSignals.basePriority", interest_group.priority},
diff --git a/content/browser/interest_group/subresource_url_authorizations.cc b/content/browser/interest_group/subresource_url_authorizations.cc index dbb7fca..db00fc5 100644 --- a/content/browser/interest_group/subresource_url_authorizations.cc +++ b/content/browser/interest_group/subresource_url_authorizations.cc
@@ -47,7 +47,7 @@ // subresources, allow sites to alter their <script> tags after calling // runAdAuction(). // - // TODO(crbug.com/1320908): If the tokens match, but the bundle URLs don't, + // TODO(crbug.com/40223695): If the tokens match, but the bundle URLs don't, // report a bad mojo message from the renderer. ++it->second.count;
diff --git a/content/browser/loader/keep_alive_url_browsertest.cc b/content/browser/loader/keep_alive_url_browsertest.cc index 2a318659..c75ece0 100644 --- a/content/browser/loader/keep_alive_url_browsertest.cc +++ b/content/browser/loader/keep_alive_url_browsertest.cc
@@ -1348,7 +1348,7 @@ return info.param; }); -// TODO(crbug.com/1482176): Re-enable this test on Mac. +// TODO(crbug.com/40931297): Re-enable this test on Mac. #if BUILDFLAG(IS_MAC) #define MAYBE_MultipleRedirectsRequestWithIframeRemoval \ DISABLED_MultipleRedirectsRequestWithIframeRemoval
diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc index 69fcf452..b245f69 100644 --- a/content/browser/loader/navigation_url_loader_impl.cc +++ b/content/browser/loader/navigation_url_loader_impl.cc
@@ -498,7 +498,7 @@ // interception is required, but these loaders are not; see crbug.com/1253314 // and crbug.com/1253984.) // - // TODO(crbug.com/1255181): Consider getting rid of these exceptions. + // TODO(crbug.com/40794764): Consider getting rid of these exceptions. if (!request_info_->is_pdf) { // Requests to WebUI scheme won't get redirected to/from other schemes // or be intercepted, so we just let it go here.
diff --git a/content/browser/locks/lock_manager_browsertest.cc b/content/browser/locks/lock_manager_browsertest.cc index 1ad17b0..8b33e37b 100644 --- a/content/browser/locks/lock_manager_browsertest.cc +++ b/content/browser/locks/lock_manager_browsertest.cc
@@ -216,7 +216,7 @@ // Verify that content::FeatureObserver is notified that a frame stopped holding // locks when it is navigated away. -// TODO(crbug.com/1286329): Flakes on all platforms. +// TODO(crbug.com/40815542): Flakes on all platforms. IN_PROC_BROWSER_TEST_F(LockManagerBrowserTest, DISABLED_ObserverNavigate) { if (!CheckShouldRunTestAndNavigate()) return;
diff --git a/content/browser/media/cdm_registry_impl.cc b/content/browser/media/cdm_registry_impl.cc index 8768d7e..6e31d04 100644 --- a/content/browser/media/cdm_registry_impl.cc +++ b/content/browser/media/cdm_registry_impl.cc
@@ -590,8 +590,8 @@ #if BUILDFLAG(IS_ANDROID) // Querying for the CDM version requires creating a MediaDrm object, so // delaying it until the capability is determined. - // TODO(crbug.com/1478367): Once querying capabilities on Android is done in a - // separate process, include the version with the capabilities returned. + // TODO(crbug.com/40280540): Once querying capabilities on Android is done in + // a separate process, include the version with the capabilities returned. itr->version = media::MediaDrmBridge::GetVersion(key_system); #endif }
diff --git a/content/browser/media/encrypted_media_browsertest.cc b/content/browser/media/encrypted_media_browsertest.cc index 4bd80a3..f923be89 100644 --- a/content/browser/media/encrypted_media_browsertest.cc +++ b/content/browser/media/encrypted_media_browsertest.cc
@@ -275,7 +275,7 @@ TestSimplePlayback("bear-320x240-opus-av_enc-av.webm"); } -// TODO(crbug.com/1360765): Flaky on Android. +// TODO(crbug.com/40863269): Flaky on Android. #if BUILDFLAG(IS_ANDROID) #define MAYBE_Playback_VideoClearAudio_WebM_Opus \ DISABLED_Playback_VideoClearAudio_WebM_Opus @@ -315,11 +315,11 @@ TestSimplePlayback("bear-320x240-v_frag-vp9-cenc.mp4"); } -// TODO(crbug.com/707127): Decide when it's supported on Android. +// TODO(crbug.com/40513452): Decide when it's supported on Android. #if !BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_MAC) || (BUILDFLAG(IS_FUCHSIA) && defined(ARCH_CPU_ARM_FAMILY)) -// TODO(https://crbug.com/1222685): Failing on Mac. +// TODO(crbug.com/40187305): Failing on Mac. // TODO(https://crbug.com/1280308): Failing on Fuchsia arm. #define MAYBE_Playback_VideoOnly_WebM_VP9Profile2 \ DISABLED_Playback_VideoOnly_WebM_VP9Profile2 @@ -357,7 +357,7 @@ TestSimplePlayback("bear-av1-cenc.webm"); } -// TODO(crbug.com/1360665): Flaky on Android. +// TODO(crbug.com/40863206): Flaky on Android. #if BUILDFLAG(IS_ANDROID) #define MAYBE_Playback_VideoOnly_WebM_AV1_10bit \ DISABLED_Playback_VideoOnly_WebM_AV1_10bit @@ -446,7 +446,7 @@ media::kErrorTitle); } -// TODO(crbug.com/1360698): Flaky on Android. +// TODO(crbug.com/40863223): Flaky on Android. #if BUILDFLAG(IS_ANDROID) #define MAYBE_Playback_Encryption_CENS DISABLED_Playback_Encryption_CENS #else
diff --git a/content/browser/media/media_license_quota_client.cc b/content/browser/media/media_license_quota_client.cc index 0202426..251f263 100644 --- a/content/browser/media/media_license_quota_client.cc +++ b/content/browser/media/media_license_quota_client.cc
@@ -22,7 +22,7 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // Media license data does not count against quota. - // TODO(crbug.com/1305441): Consider counting this data against quota. + // TODO(crbug.com/40218094): Consider counting this data against quota. std::move(callback).Run(0); }
diff --git a/content/browser/media/media_license_storage_host.cc b/content/browser/media/media_license_storage_host.cc index bab2145..0c44b396 100644 --- a/content/browser/media/media_license_storage_host.cc +++ b/content/browser/media/media_license_storage_host.cc
@@ -253,7 +253,7 @@ } // Pass `delta`=0 since media license data does not count against quota. - // TODO(crbug.com/1305441): Consider counting this data against quota. + // TODO(crbug.com/40218094): Consider counting this data against quota. manager_->quota_manager_proxy()->NotifyBucketModified( storage::QuotaClientType::kMediaLicense, bucket_locator_, /*delta=*/0, /*modification_time=*/base::Time::Now(),
diff --git a/content/browser/navigation_transitions/back_forward_transition_animation_manager_android.cc b/content/browser/navigation_transitions/back_forward_transition_animation_manager_android.cc index 4817206e..31fb12d 100644 --- a/content/browser/navigation_transitions/back_forward_transition_animation_manager_android.cc +++ b/content/browser/navigation_transitions/back_forward_transition_animation_manager_android.cc
@@ -83,7 +83,7 @@ // animation (impl's dtor will reset the layer's position and reclaim all // the resources). // - // TODO(https://crbug.com/1425943): We need a proper UX to support this. + // TODO(crbug.com/40261105): We need a proper UX to support this. animator_.reset(); }
diff --git a/content/browser/navigation_transitions/back_forward_transition_animator.cc b/content/browser/navigation_transitions/back_forward_transition_animator.cc index e0d7385..1b42d20 100644 --- a/content/browser/navigation_transitions/back_forward_transition_animator.cc +++ b/content/browser/navigation_transitions/back_forward_transition_animator.cc
@@ -207,7 +207,7 @@ // and 1.0 to 0.0 from right to left. CHECK_GE(gesture.progress(), 0.f); CHECK_LE(gesture.progress(), 1.f); - // TODO(https://crbug.com/1499915): Should check the number of KeyFrameModels + // TODO(crbug.com/40287990): Should check the number of KeyFrameModels // is 1 (for scrim). float progress_delta =
diff --git a/content/browser/navigation_transitions/back_forward_transition_animator.h b/content/browser/navigation_transitions/back_forward_transition_animator.h index 6f46fef..6c691c3 100644 --- a/content/browser/navigation_transitions/back_forward_transition_animator.h +++ b/content/browser/navigation_transitions/back_forward_transition_animator.h
@@ -150,7 +150,7 @@ // responded, we will skip this state. kWaitingForBeforeUnloadResponse, - // TODO(https://crbug.com/1421082): If we were to bring the active page back + // TODO(crbug.com/40896070): If we were to bring the active page back // to let the user interact with the prompt (e.g., camera access), we need a // state for that.
diff --git a/content/browser/network/dns_https_protocol_upgrade_browsertest.cc b/content/browser/network/dns_https_protocol_upgrade_browsertest.cc index 473fb6c..43164308 100644 --- a/content/browser/network/dns_https_protocol_upgrade_browsertest.cc +++ b/content/browser/network/dns_https_protocol_upgrade_browsertest.cc
@@ -29,7 +29,7 @@ #include "testing/gtest/include/gtest/gtest.h" #include "url/gurl.h" -// TODO(https://crbug.com/1295770) Add tests that query a test Do53 server. +// TODO(crbug.com/40214469) Add tests that query a test Do53 server. class DohHttpsProtocolUpgradeBrowserTest : public content::ContentBrowserTest { public:
diff --git a/content/browser/network/shared_dictionary_browsertest.cc b/content/browser/network/shared_dictionary_browsertest.cc index f9931f19..7428f66 100644 --- a/content/browser/network/shared_dictionary_browsertest.cc +++ b/content/browser/network/shared_dictionary_browsertest.cc
@@ -774,7 +774,7 @@ // Tests end to end functionality of "compression dictionary transport" feature // with FeatureState of params. -// TODO(crbug.com/1413922): Remove this when we fully launch this feature. +// TODO(crbug.com/40255884): Remove this when we fully launch this feature. class SharedDictionaryFeatureStateBrowserTest : public SharedDictionaryBrowserTestBase, public ::testing::WithParamInterface<FeatureState> {
diff --git a/content/browser/network/split_cache_browsertest.cc b/content/browser/network/split_cache_browsertest.cc index de2c42f..c2a6cfbd 100644 --- a/content/browser/network/split_cache_browsertest.cc +++ b/content/browser/network/split_cache_browsertest.cc
@@ -477,7 +477,7 @@ base::test::ScopedFeatureList feature_list_; }; -// TODO(crbug.com/1486165): Times out on Mac. +// TODO(crbug.com/40933594): Times out on Mac. #if BUILDFLAG(IS_MAC) #define MAYBE_SplitCache DISABLED_SplitCache #else @@ -875,7 +875,7 @@ // is_subframe_document_resource by checking that the size of the http cache // resources accessed after the resource is loaded from the blink cache is the // same as before that. -// TODO(crbug.com/1166650): Test is flaky on Win. +// TODO(crbug.com/40164302): Test is flaky on Win. #if BUILDFLAG(IS_WIN) #define MAYBE_NotifyExternalCacheHitCheckSubframeBit \ DISABLED_NotifyExternalCacheHitCheckSubframeBit
diff --git a/content/browser/permissions/permission_controller_impl.cc b/content/browser/permissions/permission_controller_impl.cc index ad18f61..bb32e796 100644 --- a/content/browser/permissions/permission_controller_impl.cc +++ b/content/browser/permissions/permission_controller_impl.cc
@@ -695,7 +695,7 @@ PermissionStatus status) { Subscription* subscription = subscriptions_.Lookup(subscription_id); DCHECK(subscription); - // TODO(crbug.com/1223407) Adding this block to prevent crashes while we + // TODO(crbug.com/40056329) Adding this block to prevent crashes while we // investigate the root cause of the crash. This block will be removed as the // CHECK() above should be enough. if (!subscription) {
diff --git a/content/browser/picture_in_picture/video_picture_in_picture_window_controller_impl.cc b/content/browser/picture_in_picture/video_picture_in_picture_window_controller_impl.cc index c979e57..4f85cae 100644 --- a/content/browser/picture_in_picture/video_picture_in_picture_window_controller_impl.cc +++ b/content/browser/picture_in_picture/video_picture_in_picture_window_controller_impl.cc
@@ -275,8 +275,8 @@ std::move(on_window_created_notify_observers_callback_).Run(); } - // TODO(crbug.com/1331248): Rather than set this synchronously, we should call - // back with the bounds once the window provides them. + // TODO(crbug.com/40227464): Rather than set this synchronously, we should + // call back with the bounds once the window provides them. *window_size = GetSize(); return result; }
diff --git a/content/browser/preloading/prefetch/prefetch_canary_checker.cc b/content/browser/preloading/prefetch/prefetch_canary_checker.cc index c56be95..9d39008 100644 --- a/content/browser/preloading/prefetch/prefetch_canary_checker.cc +++ b/content/browser/preloading/prefetch/prefetch_canary_checker.cc
@@ -396,8 +396,8 @@ base::BindOnce(&PrefetchCanaryChecker::OnDNSResolved, GetWeakPtr())), client_remote.InitWithNewPipeAndPassReceiver()); - // TODO(crbug.com/1355169): Consider passing a SchemeHostPort to trigger HTTPS - // DNS resource record query. + // TODO(crbug.com/40235854): Consider passing a SchemeHostPort to trigger + // HTTPS DNS resource record query. browser_context_->GetDefaultStoragePartition() ->GetNetworkContext() ->ResolveHost(network::mojom::HostResolverHost::NewHostPortPair(
diff --git a/content/browser/preloading/prefetch/prefetch_origin_prober.cc b/content/browser/preloading/prefetch/prefetch_origin_prober.cc index b97f44a8..3ef7d7c 100644 --- a/content/browser/preloading/prefetch/prefetch_origin_prober.cc +++ b/content/browser/preloading/prefetch/prefetch_origin_prober.cc
@@ -239,8 +239,8 @@ std::move(callback), also_do_tls_connect)), client_remote.InitWithNewPipeAndPassReceiver()); - // TODO(crbug.com/1355169): Consider passing a SchemeHostPort to trigger HTTPS - // DNS resource record query. + // TODO(crbug.com/40235854): Consider passing a SchemeHostPort to trigger + // HTTPS DNS resource record query. browser_context_->GetDefaultStoragePartition() ->GetNetworkContext() ->ResolveHost(network::mojom::HostResolverHost::NewHostPortPair(
diff --git a/content/browser/quota/quota_change_browsertest.cc b/content/browser/quota/quota_change_browsertest.cc index 9ca4d29b..574f8ee 100644 --- a/content/browser/quota/quota_change_browsertest.cc +++ b/content/browser/quota/quota_change_browsertest.cc
@@ -62,7 +62,7 @@ } void SetUpCommandLine(base::CommandLine* command_line) override { - // TODO(crbug.com/1088004): Remove this when the QuotaChange + // TODO(crbug.com/40133191): Remove this when the QuotaChange // RuntimeEnabledFeature becomes "stable". command_line->AppendSwitch( switches::kEnableExperimentalWebPlatformFeatures); @@ -107,7 +107,7 @@ INSTANTIATE_TEST_SUITE_P(All, QuotaChangeBrowserTest, ::testing::Bool()); IN_PROC_BROWSER_TEST_P(QuotaChangeBrowserTest, DispatchEvent) { - // TODO(crbug.com/1131242): Implement this test for incognito contexts after + // TODO(crbug.com/40721281): Implement this test for incognito contexts after // device information collection is unified into a single code path within // quota. if (is_incognito()) {
diff --git a/content/browser/reduce_accept_language/reduce_accept_language_utils.h b/content/browser/reduce_accept_language/reduce_accept_language_utils.h index 45606a37..b9cea5f2 100644 --- a/content/browser/reduce_accept_language/reduce_accept_language_utils.h +++ b/content/browser/reduce_accept_language/reduce_accept_language_utils.h
@@ -60,7 +60,7 @@ // `request_origin` is the origin to be used for reduced accept language // storage. // - // TODO(crbug.com/1323776) confirm with CSP sandbox owner if language + // TODO(crbug.com/40224802) confirm with CSP sandbox owner if language // preferences need to be hidden from sandboxed origins. static bool OriginCanReduceAcceptLanguage(const url::Origin& request_origin);
diff --git a/content/browser/renderer_host/compositor_impl_android.cc b/content/browser/renderer_host/compositor_impl_android.cc index 10faf99..1ab2a3c 100644 --- a/content/browser/renderer_host/compositor_impl_android.cc +++ b/content/browser/renderer_host/compositor_impl_android.cc
@@ -411,7 +411,7 @@ void CompositorImpl::TearDownDisplayAndUnregisterRootFrameSink() { // Make a best effort to try to complete pending readbacks. - // TODO(crbug.com/637035): Consider doing this in a better way, + // TODO(crbug.com/40480324): Consider doing this in a better way, // ideally with the guarantee of readbacks completing. if (display_private_ && pending_readbacks_) { // Note that while this is not a Sync IPC, the call to
diff --git a/content/browser/renderer_host/early_swap_navigation_browsertest.cc b/content/browser/renderer_host/early_swap_navigation_browsertest.cc index 9e1b44d..e13aa17 100644 --- a/content/browser/renderer_host/early_swap_navigation_browsertest.cc +++ b/content/browser/renderer_host/early_swap_navigation_browsertest.cc
@@ -495,7 +495,7 @@ // response, the early swap still happens. Currently, this leaves an // about:blank page from the swapped-in RFH as the primary page. // -// TODO(https://crbug.com/1480129): This case should be converted to show a new +// TODO(crbug.com/40281212): This case should be converted to show a new // error page. IN_PROC_BROWSER_TEST_F(EarlySwapNavigationBrowserTest, EarlySwapWith204Response) {
diff --git a/content/browser/renderer_host/input/event_latency_aura_browsertest.cc b/content/browser/renderer_host/input/event_latency_aura_browsertest.cc index 0d36751..476f7deb 100644 --- a/content/browser/renderer_host/input/event_latency_aura_browsertest.cc +++ b/content/browser/renderer_host/input/event_latency_aura_browsertest.cc
@@ -68,7 +68,7 @@ // Tests that if a key-press on a page causes a visual update, appropriate event // latency metrics are reported. -// TODO(crbug.com/1085046): flaky test. +// TODO(crbug.com/40132021): flaky test. IN_PROC_BROWSER_TEST_F(EventLatencyBrowserTest, DISABLED_KeyPressOnButton) { base::HistogramTester histogram_tester; @@ -342,10 +342,11 @@ FetchHistogramsFromChildProcesses(); - // TODO(crbug/1071645): Since this is this first key-press after the textbox - // is focused, there would be two reports, one for the RawKeyDown that causes - // some style changes (due to :focus-visible behavior) and one for the Char - // that inserts the actual character. These should be reported separately. + // TODO(crbug.com/40126863): Since this is this first key-press after the + // textbox is focused, there would be two reports, one for the RawKeyDown that + // causes some style changes (due to :focus-visible behavior) and one for the + // Char that inserts the actual character. These should be reported + // separately. base::HistogramTester::CountsMap expected_counts = { {"EventLatency.KeyPressed.BrowserToRendererCompositor", 2}, {"EventLatency.KeyPressed.BeginImplFrameToSendBeginMainFrame", 2},
diff --git a/content/browser/renderer_host/input/touch_action_browsertest.cc b/content/browser/renderer_host/input/touch_action_browsertest.cc index 06f9179..b84776b 100644 --- a/content/browser/renderer_host/input/touch_action_browsertest.cc +++ b/content/browser/renderer_host/input/touch_action_browsertest.cc
@@ -463,7 +463,7 @@ // It seems that even if the compositor frame has scrolled half of the // expected scroll offset, the Blink side scroll offset may not yet be // updated, so here we expect it to at least have scrolled. - // TODO(crbug.com/902446): this can be resolved by fixing this bug. + // TODO(crbug.com/40601223): this can be resolved by fixing this bug. if (expected_scroll_position_after_scroll.y() > 0) EXPECT_GT(scroll_top, 0); if (expected_scroll_position_after_scroll.x() > 0)
diff --git a/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc b/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc index 8f60a7f..c0452c3 100644 --- a/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc +++ b/content/browser/renderer_host/media/media_stream_dispatcher_host_unittest.cc
@@ -1359,7 +1359,7 @@ EXPECT_EQ(media_stream_manager_->num_dispatcher_hosts(), 0u); } -// TODO(crbug.com/1300883): Add test cases for multi stream generation. +// TODO(crbug.com/40216442): Add test cases for multi stream generation. class MediaStreamDispatcherHostStreamTypeCombinationTest : public MediaStreamDispatcherHostTest,
diff --git a/content/browser/renderer_host/media/media_stream_manager.cc b/content/browser/renderer_host/media/media_stream_manager.cc index 2693d680..317c118 100644 --- a/content/browser/renderer_host/media/media_stream_manager.cc +++ b/content/browser/renderer_host/media/media_stream_manager.cc
@@ -3049,7 +3049,7 @@ } #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) - // TODO(crbug.com/1300883): Generalize to multiple streams. + // TODO(crbug.com/40216442): Generalize to multiple streams. DCHECK_EQ(1u, request->stream_devices_set.stream_devices.size()); // It is safe to bind base::Unretained(this) because MediaStreamManager is
diff --git a/content/browser/renderer_host/media/media_stream_manager_unittest.cc b/content/browser/renderer_host/media/media_stream_manager_unittest.cc index de493eb..0e11a72 100644 --- a/content/browser/renderer_host/media/media_stream_manager_unittest.cc +++ b/content/browser/renderer_host/media/media_stream_manager_unittest.cc
@@ -633,7 +633,7 @@ const std::string& label, blink::mojom::StreamDevicesSetPtr stream_devices_set, bool pan_tilt_zoom_allowed) { - // TODO(crbug.com/1300883): Generalize to multiple streams. + // TODO(crbug.com/40216442): Generalize to multiple streams. DCHECK_EQ(stream_devices_set->stream_devices.size(), 1u); if (request_audio && audio_share) { ASSERT_TRUE(
diff --git a/content/browser/renderer_host/navigation_controller_impl.h b/content/browser/renderer_host/navigation_controller_impl.h index c461389..ad3ade6 100644 --- a/content/browser/renderer_host/navigation_controller_impl.h +++ b/content/browser/renderer_host/navigation_controller_impl.h
@@ -472,7 +472,7 @@ // Explainer: // https://github.com/jeremyroman/alternate-loading-modes/blob/main/browsing-context.md#session-history) // - // TODO(crbug.com/914108): Consider portals here as well. + // TODO(crbug.com/40606075): Consider portals here as well. bool ShouldMaintainTrivialSessionHistory( const FrameTreeNode* frame_tree_node) const;
diff --git a/content/browser/renderer_host/navigation_transitions/navigation_entry_screenshot_cache.cc b/content/browser/renderer_host/navigation_transitions/navigation_entry_screenshot_cache.cc index 27b9ded1..22bd2cb1 100644 --- a/content/browser/renderer_host/navigation_transitions/navigation_entry_screenshot_cache.cc +++ b/content/browser/renderer_host/navigation_transitions/navigation_entry_screenshot_cache.cc
@@ -124,7 +124,7 @@ // is not true for Android where native OS gesture navigation only takes the // user back (even right-edge swipe). // - // TODO(crbug.com/1415332): Iterate on the eviction strategy based on metrics + // TODO(crbug.com/40256524): Iterate on the eviction strategy based on metrics // when this launches. // // Ex: [3, 4&, 5*, 6&, 7, 8&], where "*" means the last committed entry and
diff --git a/content/browser/renderer_host/navigation_transitions/navigation_entry_screenshot_manager.cc b/content/browser/renderer_host/navigation_transitions/navigation_entry_screenshot_manager.cc index 605ede4..3c49c9ee 100644 --- a/content/browser/renderer_host/navigation_transitions/navigation_entry_screenshot_manager.cc +++ b/content/browser/renderer_host/navigation_transitions/navigation_entry_screenshot_manager.cc
@@ -127,7 +127,7 @@ // regardless of which tab the entry is from. The pro of this alternative is to // have all the eviction logic inside the global manager. // -// TODO(https://crbug.com/1420998): We need some metrics to understand if the +// TODO(crbug.com/40259040): We need some metrics to understand if the // currently implementation affects the cache hit rate. (I.e., would the // alternative be a better approach?) void NavigationEntryScreenshotManager::EvictIfOutOfMemoryBudget() {
diff --git a/content/browser/renderer_host/navigation_transitions/navigation_transition_utils.cc b/content/browser/renderer_host/navigation_transitions/navigation_transition_utils.cc index d1649a5e..a9e49be 100644 --- a/content/browser/renderer_host/navigation_transitions/navigation_transition_utils.cc +++ b/content/browser/renderer_host/navigation_transitions/navigation_transition_utils.cc
@@ -79,7 +79,7 @@ } if (entry == controller->GetLastCommittedEntry()) { - // TODO(https://crbug.com/1472395): We shouldn't cache the screenshot into + // TODO(crbug.com/40278616): We shouldn't cache the screenshot into // the navigation entry if the entry is re-navigated after we send out the // copy request. See the two cases below. // @@ -158,7 +158,7 @@ // TODO(liuwilliam): remove it once all the TODOs are implemented. ShouldCapture ShouldCaptureForWorkInProgressConditions( const NavigationRequest& navigation_request) { - // TODO(https://crbug.com/1420995): Support same-doc navigations. Make sure + // TODO(crbug.com/40259037): Support same-doc navigations. Make sure // to test the `history.pushState` and `history.replaceState` APIs. if (navigation_request.IsSameDocument()) { return ShouldCapture::kNo; @@ -192,7 +192,7 @@ return ShouldCapture::kOnlyAskEmbedder; } - // TODO(https://crbug.com/1474904): Test capturing for WebUI. + // TODO(crbug.com/40279439): Test capturing for WebUI. return ShouldCapture::kYes; }
diff --git a/content/browser/renderer_host/origin_trial_state_host_impl.cc b/content/browser/renderer_host/origin_trial_state_host_impl.cc index 8330e17..8196125 100644 --- a/content/browser/renderer_host/origin_trial_state_host_impl.cc +++ b/content/browser/renderer_host/origin_trial_state_host_impl.cc
@@ -36,7 +36,7 @@ base::flat_map<::blink::mojom::RuntimeFeature, ::blink::mojom::OriginTrialFeatureStatePtr> origin_trial_features) { - // TODO(crbug.com/1377000): RuntimeFeatureState does not yet support + // TODO(crbug.com/40243430): RuntimeFeatureState does not yet support // HTTP header origin trial tokens, which currently cause this function to be // called between RenderFrameHostImpl::CommitNavigation() and // RenderFrameHostImpl::DidCommitNavigation(). As a result, we will reject all
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc index 4edf18d..109d53c 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -8473,7 +8473,7 @@ if (IsCredentialless() || IsNestedWithinFencedFrame() || CoopSuppressOpener(/*opener=*/this)) { params->opener_suppressed = true; - // TODO(https://crbug.com/1060691) This should be applied to all + // TODO(crbug.com/40679181) This should be applied to all // popups opened with noopener. params->frame_name.clear(); } @@ -9723,7 +9723,7 @@ } else { // If the page is in back/forward cache, do not return early and continue to // apply AX tree updates. - // TODO(https://crbug.com/1328126): Define and implement the behavior for + // TODO(crbug.com/40841648): Define and implement the behavior for // when the page is prerendering, too. if (!IsInBackForwardCache() && IsInactiveAndDisallowActivation(DisallowActivationReasonId::kAXEvent)) { @@ -11115,8 +11115,8 @@ std::move(subresource_loader_factories), document_token, std::move(policy_container)); - // TODO(crbug/1129537): support UKM source creation for failed navigations - // too. + // TODO(crbug.com/40149432): support UKM source creation for failed + // navigations too. has_committed_any_navigation_ = true; DCHECK(navigation_request && navigation_request->IsNavigationStarted() && @@ -11411,7 +11411,7 @@ void RenderFrameHostImpl::RequestAXTreeSnapshot( AXTreeSnapshotCallback callback, mojom::SnapshotAccessibilityTreeParamsPtr params) { - // TODO(https://crbug.com/859110): Remove once frame_ can no longer be null. + // TODO(crbug.com/40583141): Remove once frame_ can no longer be null. if (!IsRenderFrameLive()) return;
diff --git a/content/browser/renderer_host/render_frame_host_impl_browsertest.cc b/content/browser/renderer_host/render_frame_host_impl_browsertest.cc index fda9af4..39ad228 100644 --- a/content/browser/renderer_host/render_frame_host_impl_browsertest.cc +++ b/content/browser/renderer_host/render_frame_host_impl_browsertest.cc
@@ -5209,7 +5209,7 @@ EXPECT_THAT(EvalJs(web_contents(), kScript), EvalJsResult::IsError()); } -// TODO(crbug.com/1357783): This test is flaky. +// TODO(crbug.com/40236762): This test is flaky. IN_PROC_BROWSER_TEST_F(RenderFrameHostImplBrowserTest, DISABLED_RemoteObjectInvokeMethodReturningNumber) { GURL url(embedded_test_server()->GetURL("/empty.html")); @@ -5221,7 +5221,7 @@ EXPECT_EQ(kMainObject.id, EvalJs(web_contents(), kScript)); } -// TODO(crbug.com/1358215): This test is flaky. +// TODO(crbug.com/40236899): This test is flaky. IN_PROC_BROWSER_TEST_F(RenderFrameHostImplBrowserTest, DISABLED_RemoteObjectInvokeMethodTakingArray) { GURL url(embedded_test_server()->GetURL("/empty.html"));
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc index ac90de4..112e771 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -976,7 +976,7 @@ return std::numeric_limits<size_t>::max(); return base::saturated_cast<size_t>(limit.rlim_cur); #else - // TODO(https://crbug.com/104689): Implement on other platforms. + // TODO(crbug.com/40671068): Implement on other platforms. return kUnknownPlatformProcessLimit; #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) }
diff --git a/content/browser/renderer_host/render_process_host_impl.h b/content/browser/renderer_host/render_process_host_impl.h index df8b31a..a23ab26 100644 --- a/content/browser/renderer_host/render_process_host_impl.h +++ b/content/browser/renderer_host/render_process_host_impl.h
@@ -1024,7 +1024,7 @@ // still be early histograms recorded before the child reads its launch // parameters to learn of the shared memory region. // - // TODO(crbug/1028263): It may be possible to completely remove this once + // TODO(crbug.com/40109064): It may be possible to completely remove this once // passing the memory region on launch is rolled-out, if the shmem parameter // is consumed before the child records any histograms. void ShareMetricsMemoryRegion();
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc index 6902bb7..0df25f1 100644 --- a/content/browser/renderer_host/render_widget_host_impl.cc +++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -2702,7 +2702,7 @@ #if BUILDFLAG(IS_WIN) // Scale the offset by device scale factor, otherwise the drag // image location doesn't line up with the drop location (drag destination). - // TODO(crbug.com/1354831): this conversion should not be necessary. + // TODO(crbug.com/40859305): this conversion should not be necessary. gfx::Vector2dF scaled_offset = static_cast<gfx::Vector2dF>(offset); scaled_offset.Scale(scale); offset = gfx::ToRoundedVector2d(scaled_offset);
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc index 7b2edbca..f4c53df 100644 --- a/content/browser/renderer_host/render_widget_host_view_android.cc +++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -400,7 +400,7 @@ pending_screen_state_.any_non_rotation_size_changed = true; } - // TODO(crbug.com/1375258): We need a pre-Android S detection of + // TODO(crbug.com/40242839): We need a pre-Android S detection of // Picture-in-Picture mode. The `visible_viewport_size` and // `physical_backing_size` will be shrunk, though it is not guaranteed to be // simply a scale from the fullscreen size. As sometimes inset changes are
diff --git a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc index a0faa07a..d829f37 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
@@ -4230,7 +4230,7 @@ // Tests that the gesture debounce timer plays nice with the overscroll // controller. -// TODO(crbug.com/776424): Disabled due to flakiness on Linux tsan. +// TODO(crbug.com/40545668): Disabled due to flakiness on Linux tsan. #if BUILDFLAG(USING_SANITIZER) #define MAYBE_GestureScrollDebounceTimerOverscroll \ DISABLED_GestureScrollDebounceTimerOverscroll
diff --git a/content/browser/renderer_host/render_widget_host_view_base.cc b/content/browser/renderer_host/render_widget_host_view_base.cc index b1fd8fe..d3d2495 100644 --- a/content/browser/renderer_host/render_widget_host_view_base.cc +++ b/content/browser/renderer_host/render_widget_host_view_base.cc
@@ -736,7 +736,7 @@ void RenderWidgetHostViewBase::ProcessMouseEvent( const blink::WebMouseEvent& event, const ui::LatencyInfo& latency) { - // TODO(crbug.com/814674): Figure out the reason |host| is null here in all + // TODO(crbug.com/40564125): Figure out the reason |host| is null here in all // Process* functions. if (!host()) return;
diff --git a/content/browser/resource_loading_browsertest.cc b/content/browser/resource_loading_browsertest.cc index 9373062..d4e8a88 100644 --- a/content/browser/resource_loading_browsertest.cc +++ b/content/browser/resource_loading_browsertest.cc
@@ -19,7 +19,7 @@ const char kResourceLoadingNonMobilePage[] = "/resource_loading/resource_loading_non_mobile.html"; -// TODO(https://crbug.com/1340721): Flaky on Android. +// TODO(crbug.com/40850567): Flaky on Android. #if BUILDFLAG(IS_ANDROID) #define MAYBE_ResourceLoadingAvoidDoubleDownloads \ DISABLED_ResourceLoadingAvoidDoubleDownloads
diff --git a/content/browser/security/coop/cross_origin_opener_policy_browsertest.cc b/content/browser/security/coop/cross_origin_opener_policy_browsertest.cc index 6ddbc07..b9ea012 100644 --- a/content/browser/security/coop/cross_origin_opener_policy_browsertest.cc +++ b/content/browser/security/coop/cross_origin_opener_policy_browsertest.cc
@@ -1283,7 +1283,7 @@ // COOP and COEP inherited from Blob creator (initial window) and not the // initiator (first popup) - // TODO(https://crbug.com/1059300) COOP should be inherited from creator and + // TODO(crbug.com/40051710) COOP should be inherited from creator and // be same-origin-allow-popups, instead of inheriting from initiator. EXPECT_EQ( second_popup_rfh->cross_origin_opener_policy(), @@ -5016,7 +5016,7 @@ EXPECT_EQ(false, EvalJs(sub_document, "'SharedArrayBuffer' in globalThis")); - // TODO(https://crbug.com/1144838): Being able to share SharedArrayBuffer from + // TODO(crbug.com/40155614): Being able to share SharedArrayBuffer from // a document with self.crossOriginIsolated == false sounds wrong. EXPECT_TRUE(ExecJs(sub_document, R"( // Create a WebAssembly Memory to bypass the SAB constructor restriction.
diff --git a/content/browser/service_worker/service_worker_browsertest.cc b/content/browser/service_worker/service_worker_browsertest.cc index 1a52bc29..4cfba1c 100644 --- a/content/browser/service_worker/service_worker_browsertest.cc +++ b/content/browser/service_worker/service_worker_browsertest.cc
@@ -1283,7 +1283,7 @@ // Update the service worker by registering a worker with different script url. // This test makes sure the worker can handle the fetch event using CacheStorage // API. -// TODO(crbug.com/1087869): flaky on all platforms. +// TODO(crbug.com/40695132): flaky on all platforms. IN_PROC_BROWSER_TEST_F(ServiceWorkerEagerCacheStorageSetupTest, DISABLED_UpdateOnScriptUrlChange) { StartServerAndNavigateToSetup();
diff --git a/content/browser/service_worker/service_worker_registry.h b/content/browser/service_worker/service_worker_registry.h index 9bfc2e58..5ed0813 100644 --- a/content/browser/service_worker/service_worker_registry.h +++ b/content/browser/service_worker/service_worker_registry.h
@@ -525,7 +525,7 @@ bool is_storage_disabled_ = false; - // TODO(crbug.com/1016065): Consider moving QuotaManagerProxy to + // TODO(crbug.com/40103974): Consider moving QuotaManagerProxy to // ServiceWorkerStorage once QuotaManager gets mojofied. const scoped_refptr<storage::QuotaManagerProxy> quota_manager_proxy_; const scoped_refptr<storage::SpecialStoragePolicy> special_storage_policy_;
diff --git a/content/browser/service_worker/service_worker_version.h b/content/browser/service_worker/service_worker_version.h index 537bcda..9167000 100644 --- a/content/browser/service_worker/service_worker_version.h +++ b/content/browser/service_worker/service_worker_version.h
@@ -1158,7 +1158,7 @@ // |controllee_map_| and |bfcached_controllee_map_| should not share the same // controllee. ServiceWorkerContainerHost in the controllee maps should be // non-null. - // TODO(crbug.com/1253581): Fix cases where hosts can become nullptr while + // TODO(crbug.com/40199210): Fix cases where hosts can become nullptr while // stored in the maps. std::map<std::string, base::WeakPtr<ServiceWorkerContainerHost>> controllee_map_;
diff --git a/content/browser/site_per_process_browsertest.cc b/content/browser/site_per_process_browsertest.cc index 3bc42c4..69769f36 100644 --- a/content/browser/site_per_process_browsertest.cc +++ b/content/browser/site_per_process_browsertest.cc
@@ -5071,7 +5071,7 @@ // The blocked url reported in the console message should only contain the // origin, in order to avoid sensitive data being leaked to the parent frame. // - // TODO(https://crbug.com/1146651): We should not leak any information at all + // TODO(crbug.com/40053800): We should not leak any information at all // to the parent frame. Instead, we should send a message directly to Devtools // (without passing through a renderer): that can also contain more // information (like the full blocked url).
diff --git a/content/browser/site_per_process_hit_test_browsertest.cc b/content/browser/site_per_process_hit_test_browsertest.cc index fab602e..d20021b 100644 --- a/content/browser/site_per_process_hit_test_browsertest.cc +++ b/content/browser/site_per_process_hit_test_browsertest.cc
@@ -6260,7 +6260,7 @@ // Tests that a <select>'s visibility is correctly computed and thus shows the // popup when clicked. #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_CASTOS) -// TODO(crbug.com/1405317): Test is flaky on every platform. +// TODO(crbug.com/40252258): Test is flaky on every platform. IN_PROC_BROWSER_TEST_F(SitePerProcessHitTestBrowserTest, DISABLED_ScrolledMainFrameSelectInLongIframe) { GURL main_url(embedded_test_server()->GetURL(
diff --git a/content/browser/snapshot_browsertest.cc b/content/browser/snapshot_browsertest.cc index 00768c5..55a7ab7 100644 --- a/content/browser/snapshot_browsertest.cc +++ b/content/browser/snapshot_browsertest.cc
@@ -215,7 +215,7 @@ #if !BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_MAC) -// TODO(crbug.com/1347296): This test is flakey on macOS. +// TODO(crbug.com/40854618): This test is flakey on macOS. #define MAYBE_SingleWindowTest DISABLED_SingleWindowTest #else #define MAYBE_SingleWindowTest SingleWindowTest @@ -322,7 +322,7 @@ // Linux Chromium OS ASAN LSAN Tests (1) // Linux TSAN Tests // See crbug.com/771119 -// TODO(crbug.com/1164581): recently crashes flakily on +// TODO(crbug.com/40740836): recently crashes flakily on // linux_chromium_asan_rel_ng and linux-rel. // TODO(https://crbug.com/1317446): Fix and enable on Fuchsia. #if (BUILDFLAG(IS_WIN) && !defined(NDEBUG)) || BUILDFLAG(IS_CHROMEOS_ASH) || \
diff --git a/content/browser/speech/tts_mac.mm b/content/browser/speech/tts_mac.mm index dbd4846..77e2e8f 100644 --- a/content/browser/speech/tts_mac.mm +++ b/content/browser/speech/tts_mac.mm
@@ -185,7 +185,7 @@ const content::VoiceData& voice, const content::UtteranceContinuousParameters& params, base::OnceCallback<void(bool)> on_speak_finished) { - // Parse SSML and process speech. TODO(https://crbug.com/1457381): + // Parse SSML and process speech. TODO(crbug.com/40273591): // AVSpeechUtterance has an initializer -initWithSSMLRepresentation:. Should // that be used instead? content::TtsController::GetInstance()->StripSSML(
diff --git a/content/browser/storage_partition_impl.h b/content/browser/storage_partition_impl.h index 98fb5d4..e66a6b9d 100644 --- a/content/browser/storage_partition_impl.h +++ b/content/browser/storage_partition_impl.h
@@ -183,7 +183,7 @@ DOMStorageContextWrapper* GetDOMStorageContext() override; storage::mojom::LocalStorageControl* GetLocalStorageControl() override; LockManager* GetLockManager(); // override; TODO: Add to interface - // TODO(https://crbug.com/1218540): Add this method to the StoragePartition + // TODO(crbug.com/40185706): Add this method to the StoragePartition // interface, which would also require making SharedStorageWorkletHostManager // an interface accessible in //content/public/. SharedStorageWorkletHostManager*
diff --git a/content/browser/web_contents/web_contents_view.h b/content/browser/web_contents/web_contents_view.h index 285dc389..0cc1db9 100644 --- a/content/browser/web_contents/web_contents_view.h +++ b/content/browser/web_contents/web_contents_view.h
@@ -70,7 +70,7 @@ // Used to transfer WebContentsViewDragSecurityInfo across portal activation // (where we destroy and create a new WebContentsView for a tab). - // TODO(crbug.com/1254770): We don't need this after we migrate portals to + // TODO(crbug.com/40199730): We don't need this after we migrate portals to // MPArch. virtual void TransferDragSecurityInfo(WebContentsView* view) = 0;
diff --git a/content/browser/web_contents/web_contents_view_aura_browsertest.cc b/content/browser/web_contents/web_contents_view_aura_browsertest.cc index 222cf80..7713ec68 100644 --- a/content/browser/web_contents/web_contents_view_aura_browsertest.cc +++ b/content/browser/web_contents/web_contents_view_aura_browsertest.cc
@@ -508,7 +508,7 @@ // this test to fail. This observer will let us know if this is happening. SpuriousMouseMoveEventObserver mouse_observer(GetRenderWidgetHost()); - // TODO(crbug.com/1322921): Use a mock timer to generate timestamps for + // TODO(crbug.com/40838320): Use a mock timer to generate timestamps for // events. This would need injecting the mock timer into // `cc::CompositorFrameReportingController`. ui::TouchEvent press(
diff --git a/content/browser/webid/fake_identity_request_dialog_controller.cc b/content/browser/webid/fake_identity_request_dialog_controller.cc index 781d845..a8a0ae87 100644 --- a/content/browser/webid/fake_identity_request_dialog_controller.cc +++ b/content/browser/webid/fake_identity_request_dialog_controller.cc
@@ -30,7 +30,7 @@ LoginToIdPCallback on_add_account, DismissCallback dismiss_callback, AccountsDisplayedCallback accounts_displayed_callback) { - // TODO(crbug.com/1348262): Temporarily support only the first IDP, extend to + // TODO(crbug.com/40233285): Temporarily support only the first IDP, extend to // support multiple IDPs. std::vector<IdentityRequestAccount> accounts = identity_provider_data[0].accounts;
diff --git a/content/browser/webid/federated_auth_request_impl.cc b/content/browser/webid/federated_auth_request_impl.cc index 6ede614..d691060 100644 --- a/content/browser/webid/federated_auth_request_impl.cc +++ b/content/browser/webid/federated_auth_request_impl.cc
@@ -1050,7 +1050,7 @@ void FederatedAuthRequestImpl::CancelTokenRequest() { if (!auth_request_token_callback_) { - // TODO(crbug.com/1500499): this should only happen with a compromised + // TODO(crbug.com/40940748): this should only happen with a compromised // renderer process but for some reason that is not the case. We should // investigate what could go wrong about the abort controller. return; @@ -1519,7 +1519,7 @@ return state1 < state2; }); - // TODO(crbug.com/1383384): Handle auto_reauthn_ for multi IDP. + // TODO(crbug.com/40246099): Handle auto_reauthn_ for multi IDP. bool auto_reauthn_enabled = mediation_requirement_ != MediationRequirement::kRequired; @@ -1682,7 +1682,7 @@ base::BindOnce(&FederatedAuthRequestImpl::CompleteRequestWithError, weak_ptr_factory_.GetWeakPtr())); - // TODO(crbug.com/1382863): Handle UI where some IDPs are successful and some + // TODO(crbug.com/40245853): Handle UI where some IDPs are successful and some // IDPs are failing in the multi IDP case. // Note that ShowAccountsDialog() may result in the request being completed // immediately (for instance on Android when we cannot create a BottomSheet),
diff --git a/content/browser/webid/federated_auth_request_impl.h b/content/browser/webid/federated_auth_request_impl.h index 3bfdabb..eaa5917 100644 --- a/content/browser/webid/federated_auth_request_impl.h +++ b/content/browser/webid/federated_auth_request_impl.h
@@ -482,8 +482,8 @@ // Pending disconnect request. std::unique_ptr<FederatedAuthDisconnectRequest> disconnect_request_; - // TODO(crbug.com/1361649): Refactor these member variables introduced through - // the multi IDP prototype implementation to make them less confusing. + // TODO(crbug.com/40238075): Refactor these member variables introduced + // through the multi IDP prototype implementation to make them less confusing. // Parameters passed to RequestToken(). base::flat_map<GURL, IdentityProviderGetInfo> token_request_get_infos_;
diff --git a/content/browser/webid/webid_browsertest.cc b/content/browser/webid/webid_browsertest.cc index af846daf..272c9ae1 100644 --- a/content/browser/webid/webid_browsertest.cc +++ b/content/browser/webid/webid_browsertest.cc
@@ -78,7 +78,7 @@ constexpr char kTestContentType[] = "application/json"; constexpr char kIdpForbiddenHeader[] = "Sec-FedCM-CSRF"; -// TODO(crbug.com/1381501): Replace these with a standardized header once +// TODO(crbug.com/40245246): Replace these with a standardized header once // we collected enough metrics. static constexpr char kSetLoginHeader[] = "Set-Login"; static constexpr char kLoggedInHeaderValue[] = "logged-in";
diff --git a/content/browser/webrtc/webrtc_image_capture_browsertest.cc b/content/browser/webrtc/webrtc_image_capture_browsertest.cc index b059774..3423463b 100644 --- a/content/browser/webrtc/webrtc_image_capture_browsertest.cc +++ b/content/browser/webrtc/webrtc_image_capture_browsertest.cc
@@ -20,7 +20,7 @@ namespace content { // Disable FocusDistance test which fails with Logitech cameras. -// TODO(crbug.com/957020): renable these tests when we have a way to detect +// TODO(crbug.com/40624855): renable these tests when we have a way to detect // which device is connected and hence avoid running it if the camera is // Logitech. #define MAYBE_ManipulateFocusDistance DISABLED_ManipulateFocusDistance
diff --git a/content/browser/worker_host/dedicated_worker_host.cc b/content/browser/worker_host/dedicated_worker_host.cc index 8dd6fc6..12a9518 100644 --- a/content/browser/worker_host/dedicated_worker_host.cc +++ b/content/browser/worker_host/dedicated_worker_host.cc
@@ -443,7 +443,7 @@ storage_partition->GetWeakPtr(), final_response_url, coep.reporting_endpoint, coep.report_only_reporting_endpoint, reporting_source_, isolation_info_.network_anonymization_key()); - // TODO(crbug.com/1197041): Bind the receiver of ReportingObserver to the + // TODO(crbug.com/40176729): Bind the receiver of ReportingObserver to the // worker in the renderer process. // > 14.8 If the result of checking a global object's embedder policy with
diff --git a/content/browser/worker_host/worker_script_fetcher.cc b/content/browser/worker_host/worker_script_fetcher.cc index aa2df47..0dd3ec3 100644 --- a/content/browser/worker_host/worker_script_fetcher.cc +++ b/content/browser/worker_host/worker_script_fetcher.cc
@@ -417,7 +417,7 @@ } const url::Origin& request_initiator = *resource_request->request_initiator; - // TODO(https://crbug.com/1060837): Pass the Mojo remote which is connected + // TODO(crbug.com/40122194): Pass the Mojo remote which is connected // to the COEP reporter in DedicatedWorkerHost. network::mojom::URLLoaderFactoryParamsPtr factory_params = URLLoaderFactoryParamsHelper::CreateForWorker(
diff --git a/content/browser/xr/service/xr_runtime_manager_impl.cc b/content/browser/xr/service/xr_runtime_manager_impl.cc index 4b12a2e..34aa7602 100644 --- a/content/browser/xr/service/xr_runtime_manager_impl.cc +++ b/content/browser/xr/service/xr_runtime_manager_impl.cc
@@ -563,7 +563,7 @@ for (const auto& provider : providers_) { if (!provider) { - // TODO(crbug.com/1050470): Remove this logging after investigation. + // TODO(crbug.com/40673158): Remove this logging after investigation. LOG(ERROR) << __func__ << " got null XR provider"; continue; }
diff --git a/content/child/dwrite_font_proxy/dwrite_font_proxy_win.cc b/content/child/dwrite_font_proxy/dwrite_font_proxy_win.cc index 2f26eaf..fa9ad63 100644 --- a/content/child/dwrite_font_proxy/dwrite_font_proxy_win.cc +++ b/content/child/dwrite_font_proxy/dwrite_font_proxy_win.cc
@@ -78,7 +78,7 @@ DWriteFontCollectionProxy::~DWriteFontCollectionProxy() = default; -// TODO(crbug.com/1256946): Confirm this is useful and remove it otherwise. +// TODO(crbug.com/40200438): Confirm this is useful and remove it otherwise. void DWriteFontCollectionProxy::InitializePrewarmer() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
diff --git a/content/child/field_trial.cc b/content/child/field_trial.cc index ddf758a..54845e3 100644 --- a/content/child/field_trial.cc +++ b/content/child/field_trial.cc
@@ -37,12 +37,13 @@ base::FieldTrialList::CreateTrialsInChildProcess(command_line); std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList); base::FieldTrialList::ApplyFeatureOverridesInChildProcess(feature_list.get()); - // TODO(crbug.com/988603): This may be redundant. The way this is supposed to - // work is that the parent process's state should be passed via command-line - // to the child process, such that a feature explicitly enabled or disabled in - // the parent process via this mechanism (since the browser process also - // registers these switch-dependent overrides), it will get passed via the - // command line - so then no extra logic would be needed in the child. + // TODO(crbug.com/40638048): This may be redundant. The way this is supposed + // to work is that the parent process's state should be passed via + // command-line to the child process, such that a feature explicitly enabled + // or disabled in the parent process via this mechanism (since the browser + // process also registers these switch-dependent overrides), it will get + // passed via the command line - so then no extra logic would be needed in the + // child. // TODO(chlily): Test this more thoroughly and understand the behavior to see // whether this is actually needed. feature_list->RegisterExtraFeatureOverrides(
diff --git a/content/common/process_visibility_tracker.h b/content/common/process_visibility_tracker.h index e21b292..c9d3acc9 100644 --- a/content/common/process_visibility_tracker.h +++ b/content/common/process_visibility_tracker.h
@@ -20,7 +20,7 @@ // This class represents overall on-screen visibility for a given process of the // embedding application. Currently only works/is used in the browser process on // Android (Chrome and WebView). -// TODO(crbug.com/1177542): implement usage in other processes. +// TODO(crbug.com/40168826): implement usage in other processes. // Observers can be added from any sequence, but OnProcessVisibilityChanged() // should be called from the thread that created the tracker instance. class CONTENT_EXPORT ProcessVisibilityTracker {
diff --git a/content/common/webid/identity_url_loader_throttle.cc b/content/common/webid/identity_url_loader_throttle.cc index dc354842..05bb52b 100644 --- a/content/common/webid/identity_url_loader_throttle.cc +++ b/content/common/webid/identity_url_loader_throttle.cc
@@ -91,7 +91,7 @@ if (!network::IsOriginPotentiallyTrustworthy(origin)) return; - // TODO(crbug.com/1357790): + // TODO(crbug.com/40236764): // - Limit to toplevel frames // - Decide whether to limit to same-origin // - Decide the right behavior with respect to user gestures.
diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc index 322a2e3..ab52bde9 100644 --- a/content/gpu/gpu_main.cc +++ b/content/gpu/gpu_main.cc
@@ -304,7 +304,7 @@ base::MessagePumpType::NS_RUNLOOP); // As part of the migration to DoWork(), this policy is required to keep // previous behavior and avoid regressions. - // TODO(crbug.com/1041853): Consider updating the policy. + // TODO(crbug.com/40668161): Consider updating the policy. main_thread_task_executor->SetWorkBatchSize(2); #else main_thread_task_executor =
diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn index e8362c31..c8f3d23f 100644 --- a/content/public/android/BUILD.gn +++ b/content/public/android/BUILD.gn
@@ -193,6 +193,7 @@ "//third_party/blink/public/mojom:android_mojo_bindings_java", "//third_party/blink/public/mojom:mojom_core_java", "//third_party/blink/public/mojom:mojom_platform_java", + "//third_party/blink/public/mojom:web_feature_mojo_bindings_java", "//third_party/jni_zero:jni_zero_java", "//ui/accessibility:accessibility_features_java", "//ui/accessibility:accessibility_features_native_map_java", @@ -359,6 +360,7 @@ "java/src/org/chromium/content_public/browser/ContentFeatureList.java", "java/src/org/chromium/content_public/browser/ContentFeatureMap.java", "java/src/org/chromium/content_public/browser/ContentViewStatics.java", + "java/src/org/chromium/content_public/browser/ContentWebFeatureUsageUtils.java", "java/src/org/chromium/content_public/browser/GestureListenerManager.java", "java/src/org/chromium/content_public/browser/GestureStateListener.java", "java/src/org/chromium/content_public/browser/GlobalRenderFrameHostId.java", @@ -520,6 +522,7 @@ "java/src/org/chromium/content/browser/webcontents/WebContentsObserverProxy.java", "java/src/org/chromium/content/browser/webid/DigitalIdentityProvider.java", "java/src/org/chromium/content_public/browser/ContentFeatureMap.java", + "java/src/org/chromium/content_public/browser/ContentWebFeatureUsageUtils.java", "java/src/org/chromium/content_public/browser/LoadCommittedDetails.java", "java/src/org/chromium/content_public/browser/LoadUrlParams.java", "java/src/org/chromium/content_public/browser/NavigationHandle.java",
diff --git a/content/public/android/java/src/org/chromium/content/browser/BackgroundSyncNetworkObserver.java b/content/public/android/java/src/org/chromium/content/browser/BackgroundSyncNetworkObserver.java index 21daafa..10d30881 100644 --- a/content/public/android/java/src/org/chromium/content/browser/BackgroundSyncNetworkObserver.java +++ b/content/public/android/java/src/org/chromium/content/browser/BackgroundSyncNetworkObserver.java
@@ -108,7 +108,7 @@ "BackgroundSync.NetworkObserver.HasPermission", true); } mNativePtrs.add(nativePtr); - // TODO(crbug/1493005): remove this call if it is not necessary. + // TODO(crbug.com/40936429): remove this call if it is not necessary. mNotifier.updateCurrentNetworkState(); BackgroundSyncNetworkObserverJni.get() .notifyConnectionTypeChanged( @@ -178,7 +178,7 @@ // If we're in doze mode (N+ devices), onConnectionTypeChanged may not // be called, but this function should. So update the connection type // if necessary. - // TODO(crbug/1493005): remove this call if it is not necessary. + // TODO(crbug.com/40936429): remove this call if it is not necessary. mNotifier.updateCurrentNetworkState(); broadcastNetworkChangeIfNecessary(mNotifier.getCurrentNetworkState().getConnectionType()); }
diff --git a/content/public/android/java/src/org/chromium/content/browser/font/AndroidFontLookupImpl.java b/content/public/android/java/src/org/chromium/content/browser/font/AndroidFontLookupImpl.java index 48edb1d5..e91c717 100644 --- a/content/public/android/java/src/org/chromium/content/browser/font/AndroidFontLookupImpl.java +++ b/content/public/android/java/src/org/chromium/content/browser/font/AndroidFontLookupImpl.java
@@ -112,10 +112,11 @@ * "preloaded_fonts" AndroidManifest directive, and have not previously failed a programmatic * font fetch request. * - * TODO(crbug.com/1111148): Ensure the font preload by manifest XML is also done for WebView. + * <p>TODO(crbug.com/40142462): Ensure the font preload by manifest XML is also done for + * WebView. * * @param callback The callback to be called with the list of fonts expected (but not - * guaranteed) to be available. The list is sorted in ascending order. + * guaranteed) to be available. The list is sorted in ascending order. */ @Override public void getUniqueNameLookupTable(GetUniqueNameLookupTable_Response callback) {
diff --git a/content/public/android/java/src/org/chromium/content_public/browser/ContentWebFeatureUsageUtils.java b/content/public/android/java/src/org/chromium/content_public/browser/ContentWebFeatureUsageUtils.java new file mode 100644 index 0000000..360658e --- /dev/null +++ b/content/public/android/java/src/org/chromium/content_public/browser/ContentWebFeatureUsageUtils.java
@@ -0,0 +1,25 @@ +// Copyright 2024 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.content_public.browser; + +import org.jni_zero.JNINamespace; +import org.jni_zero.NativeMethods; + +import org.chromium.blink.mojom.WebFeature; + +/** A Java API for calling ContentBrowserClient::LogWebFeatureForCurrentPage(). */ +@JNINamespace("content") +public class ContentWebFeatureUsageUtils { + public static void logWebFeatureForCurrentPage( + WebContents webContents, @WebFeature.EnumType int webFeature) { + ContentWebFeatureUsageUtilsJni.get().logWebFeatureForCurrentPage(webContents, webFeature); + } + + @NativeMethods + public interface Natives { + void logWebFeatureForCurrentPage( + WebContents webContents, @WebFeature.EnumType int webFeature); + } +}
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h index 634b9de..50b1e6e 100644 --- a/content/public/browser/content_browser_client.h +++ b/content/public/browser/content_browser_client.h
@@ -874,7 +874,7 @@ const std::vector<GlobalRenderFrameHostId>& render_frames); // Allow the embedder to control whether we can use Web Bluetooth. - // TODO(crbug.com/589228): Replace this with a use of the permission system. + // TODO(crbug.com/40458188): Replace this with a use of the permission system. enum class AllowWebBluetoothResult { ALLOW, BLOCK_POLICY,
diff --git a/content/public/browser/media_stream_request.h b/content/public/browser/media_stream_request.h index c64a3b8..1998f7a 100644 --- a/content/public/browser/media_stream_request.h +++ b/content/public/browser/media_stream_request.h
@@ -57,7 +57,7 @@ // identifying this request. This is used for cancelling request. int page_request_id; - // TODO(crbug.com/1503955): Remove security_origin. + // TODO(crbug.com/40944449): Remove security_origin. // The WebKit security origin for the current request (e.g. "html5rocks.com"). GURL security_origin;
diff --git a/content/public/common/content_switches.cc b/content/public/common/content_switches.cc index a4faeb4..a207a84 100644 --- a/content/public/common/content_switches.cc +++ b/content/public/common/content_switches.cc
@@ -696,7 +696,7 @@ const char kSandboxIPCProcess[] = "sandbox-ipc"; // Enables shared array buffer on desktop, gated by an Enterprise Policy. -// TODO(crbug.com/1144104) Remove when migration to COOP+COEP is complete. +// TODO(crbug.com/40155376) Remove when migration to COOP+COEP is complete. #if !BUILDFLAG(IS_ANDROID) const char kSharedArrayBufferUnrestrictedAccessAllowed[] = "shared-array-buffer-unrestricted-access-allowed";
diff --git a/content/public/common/user_agent.h b/content/public/common/user_agent.h index 323f5db4..a7b1917a 100644 --- a/content/public/common/user_agent.h +++ b/content/public/common/user_agent.h
@@ -58,7 +58,7 @@ CONTENT_EXPORT std::string GetReducedUserAgent(bool mobile, std::string major_version); -// TODO(crbug.com/1257310): Remove this after user agent reduction phase 5 and +// TODO(crbug.com/40200617): Remove this after user agent reduction phase 5 and // --force-major-version-to-minor is removed. // Return the <unifiedPlatform> token of a reduced User-Agent header. CONTENT_EXPORT std::string GetUnifiedPlatformForTesting();
diff --git a/content/renderer/accessibility/render_accessibility_impl.cc b/content/renderer/accessibility/render_accessibility_impl.cc index 9b6b015..a2d27a3 100644 --- a/content/renderer/accessibility/render_accessibility_impl.cc +++ b/content/renderer/accessibility/render_accessibility_impl.cc
@@ -500,11 +500,12 @@ // Don't send accessibility events for frames that don't yet have an tree id // as doing so will cause the browser to discard that message and all // subsequent ones. - // TODO(1231184): There are some cases where no content is currently rendered, - // due to an iframe returning 204 or window.stop() being called. In these - // cases there will never be an AXTreeID as there is no commit, which will - // prevent accessibility updates from ever being sent even if the rendering is - // fixed. See also other TODOs related to 1231184 in this file. + // TODO(crbug.com/40190596): There are some cases where no content is + // currently rendered, due to an iframe returning 204 or window.stop() being + // called. In these cases there will never be an AXTreeID as there is no + // commit, which will prevent accessibility updates from ever being sent even + // if the rendering is fixed. See also other TODOs related to 1231184 in this + // file. DCHECK(render_frame_->GetWebFrame()->GetAXTreeID().token()); WebDocument document = GetMainDocument();
diff --git a/content/renderer/media/win/dcomp_texture_wrapper_impl.cc b/content/renderer/media/win/dcomp_texture_wrapper_impl.cc index c1a3427..afeca6c 100644 --- a/content/renderer/media/win/dcomp_texture_wrapper_impl.cc +++ b/content/renderer/media/win/dcomp_texture_wrapper_impl.cc
@@ -177,7 +177,7 @@ // The SI backing this VideoFrame will be read by the display compositor and // raster. The latter will be over GL if not using OOP-R. NOTE: GL usage can // be eliminated once OOP-R ships definitively. - // TODO(crbug.com/1494911): Check the potential inconsistency between the + // TODO(crbug.com/40286368): Check the potential inconsistency between the // |usage| passed to NotifyMailboxAdded() here and the |usage| that // DCOMPTextureBacking's constructor uses to initialize // ClearTrackingSharedImageBacking.
diff --git a/content/renderer/pepper/event_conversion.cc b/content/renderer/pepper/event_conversion.cc index a2cb3ef..ae00ba0 100644 --- a/content/renderer/pepper/event_conversion.cc +++ b/content/renderer/pepper/event_conversion.cc
@@ -331,7 +331,7 @@ pt.pointer_type = blink::WebPointerProperties::PointerType::kTouch; pt.id = pp_pt.id; pt.SetPositionInWidget(pp_pt.position.x, pp_pt.position.y); - // TODO(crbug.com/93902): Add screen coordinate calculation. + // TODO(crbug.com/40616919): Add screen coordinate calculation. pt.SetPositionInScreen(0, 0); pt.force = pp_pt.pressure; pt.radius_x = pp_pt.radius.x;
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc index 9ffccbe..1f7ee84 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc
@@ -464,7 +464,7 @@ // "document URL") and history URL (used as the "unreachable URL"/"URL for // history"). However, we want to return the data: URL (the URL originally // sent by the browser to commit the navigation) here. - // TODO(https://crbug.com/1223408): Since the DocumentState stays as long as + // TODO(crbug.com/40187600): Since the DocumentState stays as long as // the Document stays the same, this means the data: URL will be returned even // after same-document navigations. Investigate whether this is intended or // not. @@ -6212,7 +6212,7 @@ if (net::DataURL::Parse(data_url, mime_type, charset, data)) { // Since the base URL will also be used as the document URL, we should not // use an empty URL. If it's empty, use the data: URL as a fallback. - // TODO(https://crbug.com/1223403): Maybe this should consider + // TODO(crbug.com/40187599): Maybe this should consider // `data_url_as_string` too. Otherwise, the base URL might be set to the // data: URL header with empty data, instead of the data: URL that contains // the actual data. @@ -6672,7 +6672,7 @@ auto pip_mojom_opts = blink::mojom::PictureInPictureWindowOptions::New(); pip_mojom_opts->width = pip_options->width; pip_mojom_opts->height = pip_options->height; - // TODO(crbug.com/1444658): Remove this from mojom and the browser side. + // TODO(crbug.com/40911987): Remove this from mojom and the browser side. pip_mojom_opts->initial_aspect_ratio = 0.0; // TODO(crbug.com/1410379): Remove this from mojom and the browser side. pip_mojom_opts->lock_aspect_ratio = false;
diff --git a/content/services/auction_worklet/trusted_signals_request_manager.h b/content/services/auction_worklet/trusted_signals_request_manager.h index fee0eca..dd9b160d 100644 --- a/content/services/auction_worklet/trusted_signals_request_manager.h +++ b/content/services/auction_worklet/trusted_signals_request_manager.h
@@ -36,7 +36,7 @@ // Manages trusted signals requests and responses. Currently only batches // requests. // -// TODO(https://crbug.com/1276639): Cache responses as well. +// TODO(crbug.com/40207533): Cache responses as well. class CONTENT_EXPORT TrustedSignalsRequestManager { public: // Delay between construction of a Request and automatically starting a
diff --git a/content/shell/browser/shell_federated_permission_context.cc b/content/shell/browser/shell_federated_permission_context.cc index f2ac5f0f..0a652dc 100644 --- a/content/shell/browser/shell_federated_permission_context.cc +++ b/content/shell/browser/shell_federated_permission_context.cc
@@ -209,7 +209,7 @@ observer.OnIdpSigninStatusReceived(idp_origin, idp_signin_status); } - // TODO(crbug.com/1382989): Replace this with AddIdpSigninStatusObserver. + // TODO(crbug.com/40245925): Replace this with AddIdpSigninStatusObserver. if (idp_signin_status_closure_) idp_signin_status_closure_.Run(); }
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index 7b00405f..cd311b6 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn
@@ -1692,7 +1692,7 @@ "../browser/navigation_transitions/back_forward_transition_animation_manager_android_browsertest.cc", "../browser/network/quic_connection_migration_android_browsertest.cc", - # TODO(https://crbug.com/1442929): move out of Android once we can capture + # TODO(crbug.com/40267166): move out of Android once we can capture # for other platforms. "../browser/renderer_host/navigation_transitions/navigation_entry_screenshot_browsertest.cc", ] @@ -2895,7 +2895,7 @@ additional_manifest_fragments = [ "//build/config/fuchsia/test/fonts.shard.test-cml", - # TODO(https://crbug.com/1185811): Investigate removing the requirement + # TODO(crbug.com/40055105): Investigate removing the requirement # for VmexResource. "//build/config/fuchsia/test/mark_vmo_executable.shard.test-cml", "//build/config/fuchsia/test/network.shard.test-cml", @@ -3500,7 +3500,7 @@ # test_buildbucket_api_gpu_cases.py on bots. This also tells the build system # when the tests should be re-run - when one of the dependent files changes. # -# TODO(crbug.com/1080749): Remove once power testing is migrated to perf waterfall. +# TODO(crbug.com/40130215): Remove once power testing is migrated to perf waterfall. group("test_buildbucket_api_gpu_use_cases") { data = [ # The test runner and its dependencies.
diff --git a/content/test/data/forms/form_controls_browsertest_button_win.png b/content/test/data/forms/form_controls_browsertest_button_win.png index b425e0f..d86595b7 100644 --- a/content/test/data/forms/form_controls_browsertest_button_win.png +++ b/content/test/data/forms/form_controls_browsertest_button_win.png Binary files differ
diff --git a/content/test/data/forms/form_controls_browsertest_checkbox_win.png b/content/test/data/forms/form_controls_browsertest_checkbox_win.png index 27342a78..f4a364c 100644 --- a/content/test/data/forms/form_controls_browsertest_checkbox_win.png +++ b/content/test/data/forms/form_controls_browsertest_checkbox_win.png Binary files differ
diff --git a/content/test/data/forms/form_controls_browsertest_color_input_win.png b/content/test/data/forms/form_controls_browsertest_color_input_win.png index d02f2852..57cadb7 100644 --- a/content/test/data/forms/form_controls_browsertest_color_input_win.png +++ b/content/test/data/forms/form_controls_browsertest_color_input_win.png Binary files differ
diff --git a/content/test/data/forms/form_controls_browsertest_dark_mode_text_selection_win.png b/content/test/data/forms/form_controls_browsertest_dark_mode_text_selection_win.png index 0193e49..e8985d2d 100644 --- a/content/test/data/forms/form_controls_browsertest_dark_mode_text_selection_win.png +++ b/content/test/data/forms/form_controls_browsertest_dark_mode_text_selection_win.png Binary files differ
diff --git a/content/test/data/forms/form_controls_browsertest_input_win.png b/content/test/data/forms/form_controls_browsertest_input_win.png index a58c8f14..2790f738c 100644 --- a/content/test/data/forms/form_controls_browsertest_input_win.png +++ b/content/test/data/forms/form_controls_browsertest_input_win.png Binary files differ
diff --git a/content/test/data/forms/form_controls_browsertest_meter_win.png b/content/test/data/forms/form_controls_browsertest_meter_win.png index 1b00a8b..73b8845 100644 --- a/content/test/data/forms/form_controls_browsertest_meter_win.png +++ b/content/test/data/forms/form_controls_browsertest_meter_win.png Binary files differ
diff --git a/content/test/data/forms/form_controls_browsertest_multi_select_win.png b/content/test/data/forms/form_controls_browsertest_multi_select_win.png index 7e7984a..e867deb8 100644 --- a/content/test/data/forms/form_controls_browsertest_multi_select_win.png +++ b/content/test/data/forms/form_controls_browsertest_multi_select_win.png Binary files differ
diff --git a/content/test/data/forms/form_controls_browsertest_progress_win.png b/content/test/data/forms/form_controls_browsertest_progress_win.png index 3197f23..8fb3cd950 100644 --- a/content/test/data/forms/form_controls_browsertest_progress_win.png +++ b/content/test/data/forms/form_controls_browsertest_progress_win.png Binary files differ
diff --git a/content/test/data/forms/form_controls_browsertest_radio_win.png b/content/test/data/forms/form_controls_browsertest_radio_win.png index 00576c64..172fbf9 100644 --- a/content/test/data/forms/form_controls_browsertest_radio_win.png +++ b/content/test/data/forms/form_controls_browsertest_radio_win.png Binary files differ
diff --git a/content/test/data/forms/form_controls_browsertest_range_win.png b/content/test/data/forms/form_controls_browsertest_range_win.png index 9eb052c..d90da00 100644 --- a/content/test/data/forms/form_controls_browsertest_range_win.png +++ b/content/test/data/forms/form_controls_browsertest_range_win.png Binary files differ
diff --git a/content/test/data/forms/form_controls_browsertest_select_win.png b/content/test/data/forms/form_controls_browsertest_select_win.png index 51ca511..225667d4 100644 --- a/content/test/data/forms/form_controls_browsertest_select_win.png +++ b/content/test/data/forms/form_controls_browsertest_select_win.png Binary files differ
diff --git a/content/test/data/forms/form_controls_browsertest_textarea_win.png b/content/test/data/forms/form_controls_browsertest_textarea_win.png index 1940e9d..26083754 100644 --- a/content/test/data/forms/form_controls_browsertest_textarea_win.png +++ b/content/test/data/forms/form_controls_browsertest_textarea_win.png Binary files differ
diff --git a/content/test/gpu/gpu_tests/test_expectations/trace_test_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/trace_test_expectations.txt index 768fc79..a57ef98 100644 --- a/content/test/gpu/gpu_tests/test_expectations/trace_test_expectations.txt +++ b/content/test/gpu/gpu_tests/test_expectations/trace_test_expectations.txt
@@ -231,6 +231,7 @@ crbug.com/329138770 [ win graphite-enabled ] WebGPUCachingTraceTest_RenderPipelineCrossOriginsCacheMisses [ Failure ] crbug.com/329138770 [ win graphite-enabled ] WebGPUCachingTraceTest_RenderPipelineDifferentOrigins [ Failure ] crbug.com/329138770 [ win graphite-enabled ] WebGPUCachingTraceTest_RenderPipelineIncognito [ Failure ] +crbug.com/335564847 [ win graphite-enabled ] VideoPathTraceTest_DirectComposition_* [ Failure ] # Failures on fuchsia crbug.com/40935289 [ fuchsia web-engine-shell ] WebGLCanvasCaptureTraceTest_VideoStreamFromWebGLCanvas_OneCopy [ Failure ]
diff --git a/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt index f4026dc..998bdde 100644 --- a/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt +++ b/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt
@@ -850,7 +850,6 @@ crbug.com/1221362 [ chromeos chromeos-board-amd64-generic ] conformance2/rendering/blitframebuffer-filter-outofbounds.html [ Failure ] crbug.com/1223542 [ chromeos chromeos-board-amd64-generic ] deqp/functional/gles3/framebufferblit/rect_03.html [ Failure ] crbug.com/1223542 [ chromeos chromeos-board-amd64-generic ] deqp/functional/gles3/framebufferblit/rect_04.html [ Failure ] -crbug.com/332890145 [ chromeos chromeos-board-amd64-generic ] conformance2/extensions/ext-disjoint-timer-query-webgl2.html [ Failure ] crbug.com/326755442 [ chromeos intel mesa_ge_21.0 passthrough ] conformance2/extensions/ext-render-snorm.html [ Failure ] @@ -913,7 +912,6 @@ # Lacros failures # ##################### -crbug.com/angleproject/7904 [ chromeos lacros-chrome chromeos-board-octopus passthrough ] WebglExtension_WEBGL_clip_cull_distance [ Failure ] crbug.com/324952609 [ chromeos lacros-chrome chromeos-board-octopus passthrough ] conformance2/extensions/oes-draw-buffers-indexed.html [ Failure ] crbug.com/1446435 [ chromeos lacros-chrome chromeos-board-jacuzzi passthrough ] conformance/glsl/bugs/constant-precision-qualifier.html [ Failure ]
diff --git a/content/web_test/BUILD.gn b/content/web_test/BUILD.gn index cfbd8ee1..78bfd88 100644 --- a/content/web_test/BUILD.gn +++ b/content/web_test/BUILD.gn
@@ -349,7 +349,7 @@ "//media/capture", "//printing/buildflags", - # TODO(crbug.com/1200443) Remove //printing/mojom requirement coming from + # TODO(crbug.com/40178248) Remove //printing/mojom requirement coming from # //third_party/blink/public:blink_headers. "//printing/mojom", "//services/service_manager/public/cpp",
diff --git a/content/web_test/renderer/test_runner.cc b/content/web_test/renderer/test_runner.cc index 0714a0e0..2dd050c 100644 --- a/content/web_test/renderer/test_runner.cc +++ b/content/web_test/renderer/test_runner.cc
@@ -2152,7 +2152,7 @@ GetWebFrame()->CopyImageAtForTesting(gfx::Point(x, y)); auto sequence_number_after = sequence_number_before; while (sequence_number_before.value() == sequence_number_after.value()) { - // TODO(crbug.com/872076): Ideally we would CHECK here that the mojo call + // TODO(crbug.com/40588468): Ideally we would CHECK here that the mojo call // succeeded, but this crashes under some circumstances (crbug.com/1232810). remote_clipboard->GetSequenceNumber(ui::ClipboardBuffer::kCopyPaste, &sequence_number_after);
diff --git a/content/zygote/zygote_linux.cc b/content/zygote/zygote_linux.cc index 613f4bc..a585cd0 100644 --- a/content/zygote/zygote_linux.cc +++ b/content/zygote/zygote_linux.cc
@@ -430,7 +430,7 @@ fds.push_back(pid_oracle.get()); // kPIDOracleFDIndex fds.push_back(field_trial_fd); // kFieldTrialFDIndex if (histograms_fd != -1) { - // TODO(crbug/1028263): pass unconditionally once the metrics shared + // TODO(crbug.com/40109064): pass unconditionally once the metrics shared // memory region is always passed on startup. fds.push_back(histograms_fd); // kHistogramFDIndex }
diff --git a/device/bluetooth/bluetooth_adapter.h b/device/bluetooth/bluetooth_adapter.h index 136102c..e2fcb402 100644 --- a/device/bluetooth/bluetooth_adapter.h +++ b/device/bluetooth/bluetooth_adapter.h
@@ -519,7 +519,7 @@ // being connected by Chromium, into |devices_|. This method is useful since // a discovery session cannot find devices that are already connected to the // computer. - // TODO(crbug.com/653032): Needs to be implemented for Android and Windows. + // TODO(crbug.com/40487754): Needs to be implemented for Android and Windows. virtual std::unordered_map<BluetoothDevice*, BluetoothDevice::UUIDSet> RetrieveGattConnectedDevicesWithDiscoveryFilter( const BluetoothDiscoveryFilter& discovery_filter);
diff --git a/device/bluetooth/public/mojom/device.mojom b/device/bluetooth/public/mojom/device.mojom index ab506e93..4ca4233 100644 --- a/device/bluetooth/public/mojom/device.mojom +++ b/device/bluetooth/public/mojom/device.mojom
@@ -22,7 +22,7 @@ // contains additional properties pertaining to the characteristic. // The properties |RELIABLE_WRITE| and |WRITABLE_AUXILIARIES| are retrieved from // that characteristic. -// TODO(crbug.com/684168): Remove assignment of values when this is automated. +// TODO(crbug.com/40502994): Remove assignment of values when this is automated. enum Property { NONE = 0, BROADCAST = 1,
diff --git a/device/fido/cable/fido_cable_discovery.cc b/device/fido/cable/fido_cable_discovery.cc index e9e7263..1c1cf9a 100644 --- a/device/fido/cable/fido_cable_discovery.cc +++ b/device/fido/cable/fido_cable_discovery.cc
@@ -308,8 +308,8 @@ // the adapter, such that one of the WinRT API calls inside // BluetoothAdapter::StartDiscoverySessionWithFilter() can fail with "Device // not ready for use". So wait for things to actually be ready. - // TODO(crbug/1046140): Remove this delay once the Bluetooth layer handles - // the spurious failure. + // TODO(crbug.com/40670639): Remove this delay once the Bluetooth layer + // handles the spurious failure. base::SequencedTaskRunner::GetCurrentDefault()->PostDelayedTask( FROM_HERE, base::BindOnce(&FidoCableDiscovery::StartCableDiscovery,
diff --git a/device/vr/android/arcore/ar_compositor_frame_sink.cc b/device/vr/android/arcore/ar_compositor_frame_sink.cc index 74d35e0..6331575 100644 --- a/device/vr/android/arcore/ar_compositor_frame_sink.cc +++ b/device/vr/android/arcore/ar_compositor_frame_sink.cc
@@ -297,7 +297,7 @@ const viz::FrameTimingDetailsMap& timing_details, bool frame_ack, std::vector<viz::ReturnedResource> resources) { - // TODO(crbug.com/1401032): Determine why the timing of this Ack leads to + // TODO(crbug.com/40250552): Determine why the timing of this Ack leads to // frame production stopping in tests. if (features::IsOnBeginFrameAcksEnabled()) { if (frame_ack) {
diff --git a/device/vr/android/arcore/ar_image_transport.h b/device/vr/android/arcore/ar_image_transport.h index 80c5f15..1eda369 100644 --- a/device/vr/android/arcore/ar_image_transport.h +++ b/device/vr/android/arcore/ar_image_transport.h
@@ -41,7 +41,7 @@ // a scoped_refptr<gpu::ClientSharedImage> with that texture copied // to a shared buffer. The two values are currently returned // together via a wrapping WebXrSharedBuffer. - // TODO(crbug.com/1494911): Change the return type to + // TODO(crbug.com/40286368): Change the return type to // scoped_refptr<gpu::ClientSharedImage> once the sync token is // incorporated into ClientSharedImage. virtual WebXrSharedBuffer* TransferCameraImageFrame(
diff --git a/device/vr/android/xr_image_transport_base.h b/device/vr/android/xr_image_transport_base.h index 2a976e1f..9a792f3 100644 --- a/device/vr/android/xr_image_transport_base.h +++ b/device/vr/android/xr_image_transport_base.h
@@ -73,7 +73,7 @@ // suitable to transfer to another process to allow it to write to the // shared buffer. The two values are currently returned together via // a wrapping WebXrSharedBuffer. - // TODO(crbug.com/1494911): Change the return type to + // TODO(crbug.com/40286368): Change the return type to // scoped_refptr<gpu::ClientSharedImage> once the sync token is // incorporated into ClientSharedImage. virtual WebXrSharedBuffer* TransferFrame(WebXrPresentationState* webxr,
diff --git a/docs/experiments/compression-dictionary-transport.md b/docs/experiments/compression-dictionary-transport.md index 71ee498518..10f0fdb 100644 --- a/docs/experiments/compression-dictionary-transport.md +++ b/docs/experiments/compression-dictionary-transport.md
@@ -74,7 +74,7 @@ Therefore, we are conducting experiments to ensure that this does not cause regressions before rolling it out to all users. -TODO(crbug.com/1413922): When we enable the backend for all Chrome, remove this +TODO(crbug.com/40255884): When we enable the backend for all Chrome, remove this section. ## Feature detection
diff --git a/extensions/browser/api/feedback_private/feedback_service_unittest.cc b/extensions/browser/api/feedback_private/feedback_service_unittest.cc index a905201..c278420 100644 --- a/extensions/browser/api/feedback_private/feedback_service_unittest.cc +++ b/extensions/browser/api/feedback_private/feedback_service_unittest.cc
@@ -299,7 +299,7 @@ feedback::FeedbackReport::kMemUsageWithTabTitlesKey)); } -// TODO(crbug.com/1439227): Re-enable this test +// TODO(crbug.com/40908623): Re-enable this test TEST_F(FeedbackServiceTest, DISABLED_SendFeedbackDoNotSendTabTitles) { TestSendFeedbackConcerningTabTitles(false); EXPECT_EQ(0u, feedback_data_->sys_info()->count(
diff --git a/extensions/browser/event_router.cc b/extensions/browser/event_router.cc index d18bbea..4de5553 100644 --- a/extensions/browser/event_router.cc +++ b/extensions/browser/event_router.cc
@@ -1442,7 +1442,7 @@ // event. This can happen if the extension asynchronously registers event // listeners. In this case, notify the caller (if they subscribed via a // callback) and drop the event. - // TODO(https://crbug.com/161155): We should provide feedback to + // TODO(crbug.com/40954888): We should provide feedback to // developers (e.g. emit a warning) when an event has no listeners. event->cannot_dispatch_callback.Run(); }
diff --git a/extensions/browser/extension_function_dispatcher.cc b/extensions/browser/extension_function_dispatcher.cc index 0863727..3c8066f 100644 --- a/extensions/browser/extension_function_dispatcher.cc +++ b/extensions/browser/extension_function_dispatcher.cc
@@ -179,7 +179,7 @@ return bad_message::EFD_INVALID_EXTENSION_ID_FOR_PROCESS; } - // TODO(https://crbug.com/1186447): Validate `params.user_gesture`. + // TODO(crbug.com/40055124): Validate `params.user_gesture`. return std::nullopt; }
diff --git a/extensions/browser/guest_view/mime_handler_view/mime_handler_view_attach_helper.cc b/extensions/browser/guest_view/mime_handler_view/mime_handler_view_attach_helper.cc index 25f5616d..d3513ab 100644 --- a/extensions/browser/guest_view/mime_handler_view/mime_handler_view_attach_helper.cc +++ b/extensions/browser/guest_view/mime_handler_view/mime_handler_view_attach_helper.cc
@@ -50,7 +50,7 @@ namespace { -// TODO(crbug.com/659750): Make this a proper resource. +// TODO(crbug.com/40490789): Make this a proper resource. constexpr char kFullPageMimeHandlerViewHTML[] = "<!doctype html><html><body style='height: 100%%; width: 100%%; overflow: " "hidden; margin:0px; background-color: rgb(%d, %d, %d);'><embed "
diff --git a/fuchsia_web/webengine/browser/frame_impl.cc b/fuchsia_web/webengine/browser/frame_impl.cc index 0438085..190aec1 100644 --- a/fuchsia_web/webengine/browser/frame_impl.cc +++ b/fuchsia_web/webengine/browser/frame_impl.cc
@@ -217,7 +217,7 @@ const content::MediaStreamRequest& request, content::MediaResponseCallback callback, const std::vector<blink::mojom::PermissionStatus>& result) { - // TODO(crbug.com/1300883): Generalize to multiple streams. + // TODO(crbug.com/40216442): Generalize to multiple streams. blink::mojom::StreamDevicesPtr devices = blink::mojom::StreamDevices::New(); int result_pos = 0; @@ -1535,7 +1535,7 @@ return false; } - // TODO(crbug.com/1321100): Remove `security_origin`. + // TODO(crbug.com/40223767): Remove `security_origin`. if (security_origin != render_frame_host->GetLastCommittedOrigin()) { return false; }
diff --git a/gin/function_template.h b/gin/function_template.h index cc6b966..51b2c5d7 100644 --- a/gin/function_template.h +++ b/gin/function_template.h
@@ -54,7 +54,7 @@ // that even _if_ we become garbage, we might never get collected!) // - If the isolate gets disposed. // -// TODO(crbug.com/1285119): When gin::Wrappable gets migrated over to using +// TODO(crbug.com/40210365): When gin::Wrappable gets migrated over to using // cppgc, this class should also be considered for migration. // This simple base class is used so that we can share a single object template
diff --git a/google_apis/gaia/oauth_multilogin_result.cc b/google_apis/gaia/oauth_multilogin_result.cc index 08d12bbe9..ca340c8 100644 --- a/google_apis/gaia/oauth_multilogin_result.cc +++ b/google_apis/gaia/oauth_multilogin_result.cc
@@ -107,7 +107,7 @@ const std::string* same_site = cookie_dict.FindString("sameSite"); base::Time now = base::Time::Now(); - // TODO(crbug.com/1264458) If CreateSanitizedCookie were used below, this + // TODO(crbug.com/40800807) If CreateSanitizedCookie were used below, this // wouldn't be needed and ValidateAndAdjustExpiryDate could be moved back // into anon namespace instead of being exposed as a static function. // Alternatly, if we were sure GAIA cookies wouldn't try to expire more
diff --git a/gpu/command_buffer/client/client_shared_image.h b/gpu/command_buffer/client/client_shared_image.h index c0811d9..5e1956c 100644 --- a/gpu/command_buffer/client/client_shared_image.h +++ b/gpu/command_buffer/client/client_shared_image.h
@@ -180,7 +180,7 @@ // Returns an unowned copy of the current ClientSharedImage. This function // is a temporary workaround for the situation where a ClientSharedImage may // have more than one reference when being destroyed. - // TODO(crbug.com/1494911): Remove this function once ClientSharedImage + // TODO(crbug.com/40286368): Remove this function once ClientSharedImage // can properly handle shared image destruction internally. scoped_refptr<ClientSharedImage> MakeUnowned();
diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc index 98a6225..cb7ef2ad 100644 --- a/gpu/command_buffer/client/gles2_implementation.cc +++ b/gpu/command_buffer/client/gles2_implementation.cc
@@ -6612,7 +6612,7 @@ // Overall reliable driver support for timestamps is limited, so we // disable the timestamp portion of this extension to encourage use of // the better supported time elapsed queries. - // TODO(crbug.com/1411579): Check the underlying driver's capability + // TODO(crbug.com/40254878): Check the underlying driver's capability // instead of disabling it directly. *params = 0; break;
diff --git a/gpu/command_buffer/client/shared_image_interface.h b/gpu/command_buffer/client/shared_image_interface.h index 16984772..5ffd7593 100644 --- a/gpu/command_buffer/client/shared_image_interface.h +++ b/gpu/command_buffer/client/shared_image_interface.h
@@ -131,7 +131,7 @@ // same format which would be passed to glTexImage2D to populate a similarly // specified texture. // May return null if |pixel_data| is too big for IPC. - // TODO(crbug.com/1447106): Have the caller specify a row span for + // TODO(crbug.com/40268891): Have the caller specify a row span for // |pixel_data| explicitly. Some backings have different row alignment // requirements which the caller has to match exactly or it won't work. virtual scoped_refptr<ClientSharedImage> CreateSharedImage(
diff --git a/gpu/command_buffer/service/copy_shared_image_helper.cc b/gpu/command_buffer/service/copy_shared_image_helper.cc index d101863..d1ad2f3 100644 --- a/gpu/command_buffer/service/copy_shared_image_helper.cc +++ b/gpu/command_buffer/service/copy_shared_image_helper.cc
@@ -816,7 +816,7 @@ ToSkYUVAPlaneConfig(dest_format), ToSkYUVASubsampling(dest_format), yuv_color_space); // Perform skia::BlitRGBAToYUVA for the multiplanar YUV format image. - // TODO(crbug.com/1451025): This will scale the image if the source image + // TODO(crbug.com/40270413): This will scale the image if the source image // is smaller than the destination image. What we should actually do // instead is just blit the destination rect and clear out the rest. // However, doing that resulted in resulted in pixeltest failures due to
diff --git a/gpu/command_buffer/service/passthrough_program_cache.h b/gpu/command_buffer/service/passthrough_program_cache.h index 33a340f..091c0bd 100644 --- a/gpu/command_buffer/service/passthrough_program_cache.h +++ b/gpu/command_buffer/service/passthrough_program_cache.h
@@ -95,7 +95,7 @@ private: Value program_blob_; - // TODO(crbug.com/1132792): Change this into raw_ptr<...>, after + // TODO(crbug.com/40150759): Change this into raw_ptr<...>, after // investigating an earlier crash report most likely caused by a // use-after-move. RAW_PTR_EXCLUSION PassthroughProgramCache* program_cache_;
diff --git a/gpu/command_buffer/service/scheduler_dfs.cc b/gpu/command_buffer/service/scheduler_dfs.cc index f6b32158c..3f1784c 100644 --- a/gpu/command_buffer/service/scheduler_dfs.cc +++ b/gpu/command_buffer/service/scheduler_dfs.cc
@@ -641,7 +641,7 @@ // runnable sequences. Change logic to check for that too (that changes // old behavior - so leaving for now). - // TODO(crbug.com/1472145): this assert is firing frequently on + // TODO(crbug.com/40278526): this assert is firing frequently on // Release builds with dcheck_always_on on Intel Macs. It looks // like it happens when the browser drops frames. /*
diff --git a/gpu/command_buffer/service/shared_context_state.cc b/gpu/command_buffer/service/shared_context_state.cc index f3407a7..ad51ffd 100644 --- a/gpu/command_buffer/service/shared_context_state.cc +++ b/gpu/command_buffer/service/shared_context_state.cc
@@ -889,7 +889,7 @@ // Only abandon the GrContext if it is owned by SharedContextState, because // the passed in GrContext will be reused. - // TODO(https://crbug.com/1048692): always abandon GrContext to release all + // TODO(crbug.com/40672147): always abandon GrContext to release all // resources when chrome goes into background with low end device. if (owned_gr_context_) { owned_gr_context_->abandonContext();
diff --git a/gpu/command_buffer/service/shared_image/compound_image_backing.h b/gpu/command_buffer/service/shared_image/compound_image_backing.h index f9f473f..d951206 100644 --- a/gpu/command_buffer/service/shared_image/compound_image_backing.h +++ b/gpu/command_buffer/service/shared_image/compound_image_backing.h
@@ -41,7 +41,7 @@ // A compound backing that combines a shared memory backing and real GPU // backing. The real GPU backing must implement `UploadFromMemory()` and not // have it's own shared memory segment. -// TODO(crbug.com/1293509): Support multiple GPU backings. +// TODO(crbug.com/40213543): Support multiple GPU backings. class GPU_GLES2_EXPORT CompoundImageBacking : public SharedImageBacking { public: using CreateBackingCallback = @@ -88,7 +88,7 @@ // provided by `gpu_backing_factory`. We additionally pass a |buffer_usage| // parameter here in order to create a CPU mappable by creating a shared // memory handle. - // TODO(crbug.com/1467670): Remove this method once we figure out the mapping + // TODO(crbug.com/40276878): Remove this method once we figure out the mapping // between SharedImageUsage and BufferUsage and no longer need to use // BufferUsage. static std::unique_ptr<SharedImageBacking> CreateSharedMemory(
diff --git a/gpu/command_buffer/service/shared_image/d3d_image_backing_factory.cc b/gpu/command_buffer/service/shared_image/d3d_image_backing_factory.cc index 692b8e5c..7db1f07 100644 --- a/gpu/command_buffer/service/shared_image/d3d_image_backing_factory.cc +++ b/gpu/command_buffer/service/shared_image/d3d_image_backing_factory.cc
@@ -153,8 +153,8 @@ // static bool D3DImageBackingFactory::IsSwapChainSupported( const GpuPreferences& gpu_preferences) { - // TODO(crbug.com/1492685): enable swapchain support when d3d11 is shared with - // ANGLE. + // TODO(crbug.com/40074896): enable swapchain support when d3d11 is shared + // with ANGLE. return gl::DirectCompositionSupported() && gl::DXGISwapChainTearingSupported() && gpu_preferences.gr_context_type == GrContextType::kGL; @@ -384,7 +384,7 @@ has_webgpu_usage || (has_gl_usage && (d3d11_device_ != angle_d3d11_device_)); if (needs_shared_handle) { - // TODO(crbug.com/1468604): Many texture formats cannot be shared on old + // TODO(crbug.com/40068319): Many texture formats cannot be shared on old // GPUs/drivers to try to detect that and implement a fallback path or // disallow Graphite/WebGPU in those cases. desc.MiscFlags = D3D11_RESOURCE_MISC_SHARED_NTHANDLE |
diff --git a/gpu/command_buffer/service/shared_image/external_vk_image_skia_representation.cc b/gpu/command_buffer/service/shared_image/external_vk_image_skia_representation.cc index 992ff72..181d9ee 100644 --- a/gpu/command_buffer/service/shared_image/external_vk_image_skia_representation.cc +++ b/gpu/command_buffer/service/shared_image/external_vk_image_skia_representation.cc
@@ -233,7 +233,7 @@ DCHECK_NE(access_mode_, AccessMode::kNone); DCHECK(backing_impl()->need_synchronization() || !end_access_semaphore_); - // TODO(crbug.com/1307914): This check is specific to the interop case i.e. + // TODO(crbug.com/40218936): This check is specific to the interop case i.e. // when need_synchronization() is true, but we can generalize this by making // the client TakeEndState() and asserting that the |end_state_| is null here. #if DCHECK_IS_ON()
diff --git a/gpu/command_buffer/service/shared_image/iosurface_image_backing.mm b/gpu/command_buffer/service/shared_image/iosurface_image_backing.mm index dd081678..455fe9a 100644 --- a/gpu/command_buffer/service/shared_image/iosurface_image_backing.mm +++ b/gpu/command_buffer/service/shared_image/iosurface_image_backing.mm
@@ -1436,7 +1436,7 @@ if (io_surface_format_ == 'BGRA') { wgpu_format = wgpu::TextureFormat::BGRA8Unorm; } - // TODO(crbug.com/1293514): Remove these if conditions after using single + // TODO(crbug.com/40213546): Remove these if conditions after using single // multiplanar mailbox for which wgpu_format should already be correct. if (io_surface_format_ == '420v') { wgpu_format = wgpu::TextureFormat::R8BG8Biplanar420Unorm;
diff --git a/gpu/command_buffer/service/shared_image/ozone_image_backing.cc b/gpu/command_buffer/service/shared_image/ozone_image_backing.cc index 1b24a17..66f127f 100644 --- a/gpu/command_buffer/service/shared_image/ozone_image_backing.cc +++ b/gpu/command_buffer/service/shared_image/ozone_image_backing.cc
@@ -383,7 +383,7 @@ context_state->vk_context_provider()->GetVulkanImplementation(); std::vector<std::unique_ptr<VulkanImage>> vulkan_images; - // TODO(crbug.com/1366495): Eliminate these branches once we migrate + // TODO(crbug.com/40239769): Eliminate these branches once we migrate // completely to MultiplanarSharedImage. if (format().is_single_plane()) { DCHECK(!format().IsLegacyMultiplanar() ||
diff --git a/gpu/command_buffer/service/shared_image/shared_image_backing_factory.h b/gpu/command_buffer/service/shared_image/shared_image_backing_factory.h index 34a75fd9..f265eb3 100644 --- a/gpu/command_buffer/service/shared_image/shared_image_backing_factory.h +++ b/gpu/command_buffer/service/shared_image/shared_image_backing_factory.h
@@ -90,7 +90,7 @@ // This new api is introduced for MappableSI work where client code sends // |buffer_usage| info while creating shared image. This info is used in some // backings to create native handle. - // TODO(crbug.com/1466569) : Remove this api once the MappableSI is complete + // TODO(crbug.com/40276430) : Remove this api once the MappableSI is complete // and we have a mapping between shared image usage and BufferUsage. virtual std::unique_ptr<SharedImageBacking> CreateSharedImage( const Mailbox& mailbox,
diff --git a/gpu/command_buffer/service/shared_image/shared_image_format_service_utils.cc b/gpu/command_buffer/service/shared_image/shared_image_format_service_utils.cc index 2f8f377..7afabf7 100644 --- a/gpu/command_buffer/service/shared_image/shared_image_format_service_utils.cc +++ b/gpu/command_buffer/service/shared_image/shared_image_format_service_utils.cc
@@ -511,7 +511,7 @@ return wgpu::TextureFormat::R16Float; } } else if (format.IsLegacyMultiplanar()) { - // TODO(crbug.com/1366495): Remove legacy multiplanar checks once + // TODO(crbug.com/40239769): Remove legacy multiplanar checks once // multiplanar SI support lands. if (format == viz::LegacyMultiPlaneFormat::kNV12 || format == viz::LegacyMultiPlaneFormat::kNV12A) { @@ -549,7 +549,7 @@ if (is_dcomp_surface) { // Textures from DComp surfaces cannot be used as TextureBinding, however // DCompSurfaceImageBacking creates a textureable intermediate texture. - // TODO(crbug.com/1468844): Remove TextureBinding usage when the + // TODO(crbug.com/40277263): Remove TextureBinding usage when the // intermediate workaround is remove. return usage | wgpu::TextureUsage::RenderAttachment | wgpu::TextureUsage::CopySrc | wgpu::TextureUsage::CopyDst;
diff --git a/gpu/command_buffer/service/shared_image/wrapped_sk_image_backing.cc b/gpu/command_buffer/service/shared_image/wrapped_sk_image_backing.cc index 27af427..0118aff 100644 --- a/gpu/command_buffer/service/shared_image/wrapped_sk_image_backing.cc +++ b/gpu/command_buffer/service/shared_image/wrapped_sk_image_backing.cc
@@ -225,7 +225,7 @@ // Filling blue causes slight pixel difference, so linux-ref and // linux-blink-ref bots cannot share the same baseline for webtest. // So remove this color for this call for dcheck on build for now. - // TODO(crbug.com/1330278): add it back. + // TODO(crbug.com/40227119): add it back. texture.backend_texture = context_state_->gr_context()->createBackendTexture( plane_size.width(), plane_size.height(), GetSkColorType(plane),
diff --git a/gpu/command_buffer/service/webgpu_decoder_impl.cc b/gpu/command_buffer/service/webgpu_decoder_impl.cc index 374c7b6..feeda1e5 100644 --- a/gpu/command_buffer/service/webgpu_decoder_impl.cc +++ b/gpu/command_buffer/service/webgpu_decoder_impl.cc
@@ -1892,7 +1892,7 @@ return error::kLostContext; } - // TODO(crbug.com/1174145): This is O(N) where N is the number of devices. + // TODO(crbug.com/40167398): This is O(N) where N is the number of devices. // Multiple submits would be O(N*M). We should find a way to more // intelligently poll for work on only the devices that need it. PerformPollingWork();
diff --git a/gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc b/gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc index e6f350d..cf7628e 100644 --- a/gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc +++ b/gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc
@@ -204,7 +204,7 @@ } switch (dest_internal_format) { - // TODO(crbug.com/577144): Enable GL_ALPHA, GL_LUMINANCE and + // TODO(crbug.com/40452138): Enable GL_ALPHA, GL_LUMINANCE and // GL_LUMINANCE_ALPHA. case GL_R8: case GL_R16F: @@ -637,7 +637,7 @@ DCHECK(!ShouldSkipTest()); #if (BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \ (defined(ARCH_CPU_X86) || defined(ARCH_CPU_X86_64)) - // // TODO(crbug.com/1046873): Fails on mac and linux intel. + // // TODO(crbug.com/40671060): Fails on mac and linux intel. return true; #else return false; @@ -664,7 +664,7 @@ return; } if (IsMacArm64()) { - LOG(INFO) << "TODO(crbug.com/1135372): fails on Apple DTK. Skipping."; + LOG(INFO) << "TODO(crbug.com/40151839): fails on Apple DTK. Skipping."; return; } if (gl_.gpu_preferences().use_passthrough_cmd_decoder) {
diff --git a/gpu/command_buffer/tests/gl_helper_unittest.cc b/gpu/command_buffer/tests/gl_helper_unittest.cc index a233bb7..eb782ec 100644 --- a/gpu/command_buffer/tests/gl_helper_unittest.cc +++ b/gpu/command_buffer/tests/gl_helper_unittest.cc
@@ -1295,7 +1295,7 @@ // Per pixel tests, all sizes are small so that we can print // out the generated bitmaps. -// TODO(crbug.com/1367486): Very flaky on Linux ASAN. +// TODO(crbug.com/40867694): Very flaky on Linux ASAN. #if BUILDFLAG(IS_LINUX) && defined(ADDRESS_SANITIZER) #define MAYBE_ScaleTest DISABLED_ScaleTest #else
diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc index eb21266..cbfe2c1b 100644 --- a/gpu/config/gpu_finch_features.cc +++ b/gpu/config/gpu_finch_features.cc
@@ -626,7 +626,7 @@ bool IsSkiaGraphiteSupportedByDevice(const base::CommandLine* command_line) { #if BUILDFLAG(IS_APPLE) // Graphite only works well with ANGLE Metal on Mac or iOS. - // TODO(crbug.com/1423574): Remove this after ANGLE Metal launches fully. + // TODO(crbug.com/40063538): Remove this after ANGLE Metal launches fully. const bool is_angle_metal_enabled = UsePassthroughCommandDecoder() && (base::FeatureList::IsEnabled(features::kDefaultANGLEMetal) || @@ -811,7 +811,7 @@ } bool IncreaseBufferCountForHighFrameRate() { - // TODO(crbug.com/1211332): We don't have a way to dynamically adjust number + // TODO(crbug.com/40767562): We don't have a way to dynamically adjust number // of buffers. So these checks, espeically the RAM one, is to limit the impact // of more buffers to devices that can handle them. // 8GB of ram with large margin for error.
diff --git a/gpu/config/gpu_info_collector_win.cc b/gpu/config/gpu_info_collector_win.cc index 16ef7bb..a136ded 100644 --- a/gpu/config/gpu_info_collector_win.cc +++ b/gpu/config/gpu_info_collector_win.cc
@@ -658,7 +658,7 @@ return false; // The order of feature levels to attempt to create in D3D CreateDevice. - // TODO(crbug.com/1312519): Using 12_2 in kFeatureLevels[] will cause failure + // TODO(crbug.com/40831714): Using 12_2 in kFeatureLevels[] will cause failure // in D3D11CreateDevice(). Limit the highest feature to 12_1. const D3D_FEATURE_LEVEL kFeatureLevels[] = { D3D_FEATURE_LEVEL_12_1, D3D_FEATURE_LEVEL_12_0, D3D_FEATURE_LEVEL_11_1,
diff --git a/gpu/ipc/service/gles2_command_buffer_stub.cc b/gpu/ipc/service/gles2_command_buffer_stub.cc index dd81fbec..0f057b5f 100644 --- a/gpu/ipc/service/gles2_command_buffer_stub.cc +++ b/gpu/ipc/service/gles2_command_buffer_stub.cc
@@ -138,7 +138,7 @@ channel_->sync_point_manager()->CreateSyncPointClientState( CommandBufferNamespace::GPU_IO, command_buffer_id_, sequence_id_); - // TODO(crbug.com/1251724): Remove this after testing. + // TODO(crbug.com/40198488): Remove this after testing. // Only enable multiple displays on ANGLE/Metal and only behind a feature. bool force_default_display = true; if (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE &&
diff --git a/gpu/ipc/service/gpu_channel_manager.cc b/gpu/ipc/service/gpu_channel_manager.cc index 91af876..cf977c3 100644 --- a/gpu/ipc/service/gpu_channel_manager.cc +++ b/gpu/ipc/service/gpu_channel_manager.cc
@@ -943,7 +943,7 @@ gles2::GenerateGLContextAttribsForCompositor(use_passthrough_decoder); // Disable robust resource initialization for raster decoder and compositor. - // TODO(crbug.com/1192632): disable robust_resource_initialization for + // TODO(crbug.com/40174948): disable robust_resource_initialization for // SwANGLE. if (gl::GLSurfaceEGL::GetGLDisplayEGL()->GetDisplayType() != gl::ANGLE_SWIFTSHADER) {
diff --git a/gpu/ipc/service/gpu_channel_unittest.cc b/gpu/ipc/service/gpu_channel_unittest.cc index f0337eb6..4074a55b 100644 --- a/gpu/ipc/service/gpu_channel_unittest.cc +++ b/gpu/ipc/service/gpu_channel_unittest.cc
@@ -26,7 +26,7 @@ const SurfaceHandle kFakeSurfaceHandle = 1; TEST_F(GpuChannelTest, CreateViewCommandBufferAllowed) { - // TODO(https://crbug.com/1406585): Currently it's not possible to create + // TODO(crbug.com/40062603): Currently it's not possible to create // onscreen GLSurface with Null binding with angle. if (channel_manager()->use_passthrough_cmd_decoder()) { GTEST_SKIP();
diff --git a/gpu/ipc/service/gpu_memory_buffer_factory_dxgi.cc b/gpu/ipc/service/gpu_memory_buffer_factory_dxgi.cc index 3b78fca..58df3e9a 100644 --- a/gpu/ipc/service/gpu_memory_buffer_factory_dxgi.cc +++ b/gpu/ipc/service/gpu_memory_buffer_factory_dxgi.cc
@@ -27,7 +27,7 @@ } GpuMemoryBufferFactoryDXGI::~GpuMemoryBufferFactoryDXGI() = default; -// TODO(crbug.com/1223490): Avoid the need for a separate D3D device here by +// TODO(crbug.com/40774668): Avoid the need for a separate D3D device here by // sharing keyed mutex state between DXGI GMBs and D3D shared image backings. Microsoft::WRL::ComPtr<ID3D11Device> GpuMemoryBufferFactoryDXGI::GetOrCreateD3D11Device() {
diff --git a/gpu/ipc/service/gpu_watchdog_thread.cc b/gpu/ipc/service/gpu_watchdog_thread.cc index 00203ee..fb7f513 100644 --- a/gpu/ipc/service/gpu_watchdog_thread.cc +++ b/gpu/ipc/service/gpu_watchdog_thread.cc
@@ -732,7 +732,7 @@ // Short term investigation into report only mode, bug tracking report only // mode can be found at crbug.com/1356196. The Catan team has not seen the // expected rampup in crashes where report only mode is enabled. - // TODO(crbug.com/1356196): remove this when investigation is over. + // TODO(crbug.com/40236187): remove this when investigation is over. UMA_HISTOGRAM_BOOLEAN("GPU.ReportOnlyModeStatusAtHang", in_report_only_mode_); // Create a crash dump first
diff --git a/headless/BUILD.gn b/headless/BUILD.gn index 599f89bf..95e0075 100644 --- a/headless/BUILD.gn +++ b/headless/BUILD.gn
@@ -636,7 +636,7 @@ additional_manifest_fragments = [ "//build/config/fuchsia/test/fonts.shard.test-cml", - # TODO(https://crbug.com/1185811): Investigate removing the requirement + # TODO(crbug.com/40055105): Investigate removing the requirement # for VmexResource. "//build/config/fuchsia/test/mark_vmo_executable.shard.test-cml", "//build/config/fuchsia/test/network.shard.test-cml",
diff --git a/headless/test/headless_devtools_client_browsertest.cc b/headless/test/headless_devtools_client_browsertest.cc index f33a753..6055703 100644 --- a/headless/test/headless_devtools_client_browsertest.cc +++ b/headless/test/headless_devtools_client_browsertest.cc
@@ -892,7 +892,7 @@ std::unique_ptr<net::ProxyConfig> proxy_config(new net::ProxyConfig); proxy_config->proxy_rules().ParseFromString( proxy_server_.host_port_pair().ToString()); - // TODO(https://crbug.com/901896): Don't rely on proxying localhost. + // TODO(crbug.com/40600992): Don't rely on proxying localhost. proxy_config->proxy_rules().bypass_rules.AddRulesToSubtractImplicit(); builder.SetProxyConfig(std::move(proxy_config)); }
diff --git a/infra/config/generated/testing/variants.pyl b/infra/config/generated/testing/variants.pyl index 21e6467e..96a73d2 100644 --- a/infra/config/generated/testing/variants.pyl +++ b/infra/config/generated/testing/variants.pyl
@@ -267,16 +267,16 @@ }, 'LACROS_VERSION_SKEW_CANARY': { 'identifier': 'Lacros version skew testing ash canary', - 'description': 'Run with ash-chrome version 126.0.6428.0', + 'description': 'Run with ash-chrome version 126.0.6429.0', 'args': [ - '--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6428.0/test_ash_chrome', + '--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6429.0/test_ash_chrome', ], 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/linux-ash-chromium/x86_64/ash.zip', - 'location': 'lacros_version_skew_tests_v126.0.6428.0', - 'revision': 'version:126.0.6428.0', + 'location': 'lacros_version_skew_tests_v126.0.6429.0', + 'revision': 'version:126.0.6429.0', }, ], },
diff --git a/infra/config/gn_args/gn_args.star b/infra/config/gn_args/gn_args.star index 493cb65b..3581ed4 100644 --- a/infra/config/gn_args/gn_args.star +++ b/infra/config/gn_args/gn_args.star
@@ -500,7 +500,7 @@ }, ) -# TODO(https://crbug.com/1010584): Explicitly enable DirectX 12. +# TODO(crbug.com/40101527): Explicitly enable DirectX 12. gn_args.config( name = "dx12vk", configs = [
diff --git a/infra/config/lib/try.star b/infra/config/lib/try.star index a55c961..f699499f 100644 --- a/infra/config/lib/try.star +++ b/infra/config/lib/try.star
@@ -236,7 +236,7 @@ # TODO(crbug.com/1346781): Remove when the experiment is the default. experiments.setdefault("chromium_swarming.expose_merge_script_failures", 100) - # TODO(crbug.com/1466962): Remove when the experiment is the default. + # TODO(crbug.com/40276579): Remove when the experiment is the default. experiments.setdefault("swarming.prpc.cli", 100) merged_resultdb_bigquery_exports = [
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.cft.star b/infra/config/subprojects/chromium/try/tryserver.chromium.cft.star index ec3cd710..94862562 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.cft.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.cft.star
@@ -85,7 +85,7 @@ configs = [ "release_try_builder", "reclient", - # TODO(crbug.com/1004523) Delete this once coverage mode is enabled + # TODO(crbug.com/40099061) Delete this once coverage mode is enabled # on the standard Windows trybot and the dedicated coverage trybot # is no longer needed. "no_resource_allowlisting",
diff --git a/infra/config/targets/compound_suites.star b/infra/config/targets/compound_suites.star index a0fe602..dea0b86 100644 --- a/infra/config/targets/compound_suites.star +++ b/infra/config/targets/compound_suites.star
@@ -859,7 +859,7 @@ ], ) -# TODO(crbug.com/1080424): Merge with an existing set of tests such as +# TODO(crbug.com/40130073): Merge with an existing set of tests such as # gpu_fyi_linux_release_gtests once all CrOS tests have been enabled. targets.legacy_compound_suite( name = "gpu_fyi_chromeos_release_gtests",
diff --git a/infra/config/targets/lacros-version-skew-variants.json b/infra/config/targets/lacros-version-skew-variants.json index 26b1c86..52119ab 100644 --- a/infra/config/targets/lacros-version-skew-variants.json +++ b/infra/config/targets/lacros-version-skew-variants.json
@@ -1,16 +1,16 @@ { "LACROS_VERSION_SKEW_CANARY": { "args": [ - "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6428.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6429.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 126.0.6428.0", + "description": "Run with ash-chrome version 126.0.6429.0", "identifier": "Lacros version skew testing ash canary", "swarming": { "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v126.0.6428.0", - "revision": "version:126.0.6428.0" + "location": "lacros_version_skew_tests_v126.0.6429.0", + "revision": "version:126.0.6429.0" } ] }
diff --git a/ios/build/bots/scripts/variations_runner.py b/ios/build/bots/scripts/variations_runner.py index 8fb0c39..d4ac23d 100644 --- a/ios/build/bots/scripts/variations_runner.py +++ b/ios/build/bots/scripts/variations_runner.py
@@ -166,9 +166,9 @@ # Verify seed has been updated successfully and it's different from the # injected test seed. # - # TODO(crbug.com/1234171): This test expectation may not work correctly when - # a field trial config under test does not affect a platform, so it requires - # more investigations to figure out the correct behavior. + # TODO(crbug.com/40191854): This test expectation may not work correctly + # when a field trial config under test does not affect a platform, so it + # requires more investigations to figure out the correct behavior. current_seed, current_signature = seed_helper.get_current_seed( self._user_data_dir()) if current_seed == seed or current_signature == signature:
diff --git a/ios/chrome/app/startup/setup_debugging.mm b/ios/chrome/app/startup/setup_debugging.mm index 8599227b..b06f5896 100644 --- a/ios/chrome/app/startup/setup_debugging.mm +++ b/ios/chrome/app/startup/setup_debugging.mm
@@ -163,7 +163,7 @@ + (void)setUpDebuggingOptions { // Enable the zombie treadmill on simulator builds. -// TODO(crbug.com/663390): Consider enabling this on device builds too. +// TODO(crbug.com/40492640): Consider enabling this on device builds too. #if TARGET_IPHONE_SIMULATOR DCHECK(ObjcEvilDoers::ZombieEnable(true, 10000)); #endif
diff --git a/ios/chrome/browser/history/model/history_tab_helper.mm b/ios/chrome/browser/history/model/history_tab_helper.mm index 8fba075..74db5355 100644 --- a/ios/chrome/browser/history/model/history_tab_helper.mm +++ b/ios/chrome/browser/history/model/history_tab_helper.mm
@@ -155,7 +155,7 @@ /*did_replace_entry=*/false, consider_for_ntp_most_visited, navigation_context->IsSameDocument() ? GetPageTitle(*last_committed_item) : std::nullopt, - // TODO(crbug.com/1475717): due to WebKit constraints, iOS does not + // TODO(crbug.com/40279742): due to WebKit constraints, iOS does not // support triple-key partitioning. Once supported, we need to populate // `top_level_url` with the correct value. Until then, :visited history on // iOS is unpartitioned.
diff --git a/ios/chrome/browser/main/model/browser_util.mm b/ios/chrome/browser/main/model/browser_util.mm index fdd885b..8f8ce13 100644 --- a/ios/chrome/browser/main/model/browser_util.mm +++ b/ios/chrome/browser/main/model/browser_util.mm
@@ -55,7 +55,7 @@ MoveSnapshot(snapshot_tab_helper->GetSnapshotID(), source_browser, destination_browser); - // TODO(crbug.com/1264451): Remove this workaround when it will no longer be + // TODO(crbug.com/40203375): Remove this workaround when it will no longer be // required to have an active WebState in the WebStateList. if (destination_browser->GetWebStateList()->empty()) { params.Activate();
diff --git a/ios/chrome/browser/policy/model/policy_watcher_browser_agent.mm b/ios/chrome/browser/policy/model/policy_watcher_browser_agent.mm index 139b7063..e11a6652 100644 --- a/ios/chrome/browser/policy/model/policy_watcher_browser_agent.mm +++ b/ios/chrome/browser/policy/model/policy_watcher_browser_agent.mm
@@ -154,7 +154,7 @@ void PolicyWatcherBrowserAgent::UpdateAppContainerBackupExclusion() { bool backup_allowed = browser_->GetBrowserState()->GetPrefs()->GetBoolean( prefs::kAllowChromeDataInBackups); - // TODO(crbug.com/1303652): If multiple profiles are supported on iOS, update + // TODO(crbug.com/40826035): If multiple profiles are supported on iOS, update // this logic to work with multiple profiles having possibly-possibly // conflicting preference values. base::FilePath storage_dir = base::apple::GetUserLibraryPath();
diff --git a/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm b/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm index f9c569b..a4348be6 100644 --- a/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm +++ b/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm
@@ -387,7 +387,7 @@ // inconsistencies. Those two boolean indicate if one of those commands have // been processed in the last 200ms in order to only allow processing one at // a time. -// TODO(crbug.com/560296): Provide a general solution for handling mutually +// TODO(crbug.com/40445992): Provide a general solution for handling mutually // exclusive chrome commands sent at nearly the same time. @property(nonatomic, assign) BOOL isProcessingTabSwitcherCommand; @property(nonatomic, assign) BOOL isProcessingVoiceSearchCommand;
diff --git a/ios/chrome/browser/signin/model/authentication_service_observer.h b/ios/chrome/browser/signin/model/authentication_service_observer.h index e461e7f..2f33c6c 100644 --- a/ios/chrome/browser/signin/model/authentication_service_observer.h +++ b/ios/chrome/browser/signin/model/authentication_service_observer.h
@@ -22,7 +22,7 @@ // Called when the AuthenticationService::GetPrimaryIdentity() value changes. // This method might be called with no changes. - // TODO(crbug.com/1376908): DEPRECATED: This method should be removed once + // TODO(crbug.com/40243387): DEPRECATED: This method should be removed once // FakeAuthenticationService is remove. Use IdentityManager notifications. virtual void OnPrimaryIdentityChanged() {} };
diff --git a/ios/chrome/browser/signin/model/signin_browser_state_info_updater.mm b/ios/chrome/browser/signin/model/signin_browser_state_info_updater.mm index 3e451fe..e95f86b 100644 --- a/ios/chrome/browser/signin/model/signin_browser_state_info_updater.mm +++ b/ios/chrome/browser/signin/model/signin_browser_state_info_updater.mm
@@ -28,7 +28,7 @@ signin_error_controller_observation_.Observe(signin_error_controller); UpdateBrowserStateInfo(); - // TODO(crbug.com/908457): Call OnErrorChanged() here, to catch any change + // TODO(crbug.com/40603806): Call OnErrorChanged() here, to catch any change // that happened since the construction of SigninErrorController. BrowserState // metrics depend on this bug and must be fixed first. }
diff --git a/ios/chrome/browser/ui/authentication/cells/signin_promo_view_constants.h b/ios/chrome/browser/ui/authentication/cells/signin_promo_view_constants.h index fbe1d41b..d9d1a539 100644 --- a/ios/chrome/browser/ui/authentication/cells/signin_promo_view_constants.h +++ b/ios/chrome/browser/ui/authentication/cells/signin_promo_view_constants.h
@@ -26,7 +26,7 @@ SigninPromoViewStyleCompactHorizontal = 1, SigninPromoViewStyleCompactVertical = 2, // Style containing a single rounded corners colored button. - // TODO(crbug.com/1467810): This is a weird construct used only by recent + // TODO(crbug.com/40924554): This is a weird construct used only by recent // tabs, where SigninPromoView shows the button and other views show the // text/illustration. We should consider adopting SigninPromoViewStyleStandard // in that UI, or bringing the text/illustration here.
diff --git a/ios/chrome/browser/ui/authentication/signin/logging/upgrade_signin_logger.mm b/ios/chrome/browser/ui/authentication/signin/logging/upgrade_signin_logger.mm index d202952..2fc6d706 100644 --- a/ios/chrome/browser/ui/authentication/signin/logging/upgrade_signin_logger.mm +++ b/ios/chrome/browser/ui/authentication/signin/logging/upgrade_signin_logger.mm
@@ -63,7 +63,7 @@ } case SigninCoordinatorResultDisabled: case SigninCoordinatorResultInterrupted: { - // TODO(crbug.com/951145): Add metric for when the sign-in has been + // TODO(crbug.com/40622384): Add metric for when the sign-in has been // interrupted. break; }
diff --git a/ios/chrome/browser/ui/broadcaster/chrome_broadcaster.mm b/ios/chrome/browser/ui/broadcaster/chrome_broadcaster.mm index 00fa83ec..45b95e1 100644 --- a/ios/chrome/browser/ui/broadcaster/chrome_broadcaster.mm +++ b/ios/chrome/browser/ui/broadcaster/chrome_broadcaster.mm
@@ -189,7 +189,7 @@ // Sanity check: `selector` must not already be broadcast. DCHECK(!self.items[name]); - // TODO(crbug.com/719911) -- Another sanity check is needed here -- verify + // TODO(crbug.com/40519578) -- Another sanity check is needed here -- verify // that the value to be observed is of the type that `selector` expects. self.items[name] =
diff --git a/ios/chrome/browser/ui/default_promo/default_browser_instructions_view.mm b/ios/chrome/browser/ui/default_promo/default_browser_instructions_view.mm index 6844898..71d9d072 100644 --- a/ios/chrome/browser/ui/default_promo/default_browser_instructions_view.mm +++ b/ios/chrome/browser/ui/default_promo/default_browser_instructions_view.mm
@@ -85,7 +85,7 @@ NSString* animationAssetName; NSString* animationAssetNameDarkMode; - // TODO(crbug.com/1508131): Handle the case when the promo is displayed and + // TODO(crbug.com/40948842): Handle the case when the promo is displayed and // the user switches between LTR and RLT. if (base::i18n::IsRTL()) { animationAssetName = kDefaultBrowserAnimationRtl;
diff --git a/ios/chrome/browser/ui/orchestrator/omnibox_focus_orchestrator.mm b/ios/chrome/browser/ui/orchestrator/omnibox_focus_orchestrator.mm index 03a33ec..1b143b3d 100644 --- a/ios/chrome/browser/ui/orchestrator/omnibox_focus_orchestrator.mm +++ b/ios/chrome/browser/ui/orchestrator/omnibox_focus_orchestrator.mm
@@ -297,7 +297,7 @@ [UIView addKeyframeWithRelativeStartTime:0 relativeDuration:1 animations:^{ - [self expansion:animated]; + [self expansion]; }]; [UIView addKeyframeWithRelativeStartTime:0 @@ -312,7 +312,7 @@ }]; } else { - [self expansion:animated]; + [self expansion]; [self.toolbarAnimatee hideControlButtons]; } } @@ -333,7 +333,7 @@ [UIView addKeyframeWithRelativeStartTime:0 relativeDuration:relativeDurationAnimation1 animations:^{ - [self contraction:animated]; + [self contraction]; }]; [UIView addKeyframeWithRelativeStartTime:relativeDurationAnimation1 @@ -347,7 +347,7 @@ [self animationFinished]; }]; } else { - [self contraction:animated]; + [self contraction]; [self.toolbarAnimatee showControlButtons]; [self.toolbarAnimatee hideCancelButton]; } @@ -392,8 +392,8 @@ #pragma mark - Private animation helpers // Visually expands the location bar for focus. -- (void)expansion:(BOOL)animated { - [self.toolbarAnimatee expandLocationBar:animated]; +- (void)expansion { + [self.toolbarAnimatee expandLocationBar]; [self.toolbarAnimatee showCancelButton]; switch (_trigger) { case OmniboxFocusTrigger::kPinnedLargeFakebox: @@ -408,8 +408,8 @@ } // Visually contracts the location bar for defocus. -- (void)contraction:(BOOL)animated { - [self.toolbarAnimatee contractLocationBar:animated]; +- (void)contraction { + [self.toolbarAnimatee contractLocationBar]; if (_trigger == OmniboxFocusTrigger::kPinnedLargeFakebox) { [self.toolbarAnimatee setLocationBarHeightToMatchFakeOmnibox]; }
diff --git a/ios/chrome/browser/ui/orchestrator/toolbar_animatee.h b/ios/chrome/browser/ui/orchestrator/toolbar_animatee.h index 555e6da..97cddc6 100644 --- a/ios/chrome/browser/ui/orchestrator/toolbar_animatee.h +++ b/ios/chrome/browser/ui/orchestrator/toolbar_animatee.h
@@ -10,8 +10,8 @@ @protocol ToolbarAnimatee<NSObject> // Changes related to the Location Bar container. -- (void)expandLocationBar:(BOOL)animated; -- (void)contractLocationBar:(BOOL)animated; +- (void)expandLocationBar; +- (void)contractLocationBar; // Changes related to the cancel button. - (void)showCancelButton;
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm index 9e9f51330..f98a0ef 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_table_view_controller.mm
@@ -55,7 +55,7 @@ TableViewLinkHeaderFooterItemDelegate, UIGestureRecognizerDelegate> -// TODO(crbug.com/850699): remove direct dependency and replace with +// TODO(crbug.com/40579855): remove direct dependency and replace with // delegate. @property(nonatomic, readonly, strong) ClearBrowsingDataManager* dataManager; @@ -591,7 +591,7 @@ // Offer the user to sign-out near itemView // If they sync, they can keep or delete their data. -// TODO(crbug.com/1385791) Test that correct histogram is registered. +// TODO(crbug.com/40879413) Test that correct histogram is registered. - (void)showSignOutWithItemView:(UIView*)itemView { if (_signoutCoordinator) { // An action is already in progress, ignore user's request.
diff --git a/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm b/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm index dd40a25..27a92d4c 100644 --- a/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm +++ b/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm
@@ -128,7 +128,7 @@ @property(nonatomic, strong, readonly) PrefBackedBoolean* allowChromeSigninPreference; // Preference value for the "Help improve Chromium's features" for Wifi-Only. -// TODO(crbug.com/872101): Needs to create the UI to change from Wifi-Only to +// TODO(crbug.com/40588486): Needs to create the UI to change from Wifi-Only to // always @property(nonatomic, strong, readonly) PrefBackedBoolean* sendDataUsageWifiOnlyPreference;
diff --git a/ios/chrome/browser/ui/settings/password/password_manager_egtest.mm b/ios/chrome/browser/ui/settings/password/password_manager_egtest.mm index 0fe2bba..f7ab0aa 100644 --- a/ios/chrome/browser/ui/settings/password/password_manager_egtest.mm +++ b/ios/chrome/browser/ui/settings/password/password_manager_egtest.mm
@@ -1624,7 +1624,7 @@ // TODO(crbug.com/1442985): This test is flaky. - (void)FLAKY_testManyPasswords { if ([ChromeEarlGrey isIPadIdiom]) { - // TODO(crbug.com/906551): Enable the test on iPad once the bug is fixed. + // TODO(crbug.com/40602996): Enable the test on iPad once the bug is fixed. EARL_GREY_TEST_DISABLED(@"Disabled for iPad."); }
diff --git a/ios/chrome/browser/ui/settings/settings_table_view_controller.mm b/ios/chrome/browser/ui/settings/settings_table_view_controller.mm index 22d3128..63298d82 100644 --- a/ios/chrome/browser/ui/settings/settings_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/settings_table_view_controller.mm
@@ -255,7 +255,7 @@ StringPrefMember _voiceLocaleCode; // Pref observer to track changes to prefs. std::unique_ptr<PrefObserverBridge> _prefObserverBridge; - // TODO(crbug.com/662435): Refactor PrefObserverBridge so it owns the + // TODO(crbug.com/40492152): Refactor PrefObserverBridge so it owns the // PrefChangeRegistrar. // Registrar for pref changes notifications. PrefChangeRegistrar _prefChangeRegistrar;
diff --git a/ios/chrome/browser/ui/toolbar/adaptive_toolbar_egtest.mm b/ios/chrome/browser/ui/toolbar/adaptive_toolbar_egtest.mm index caeee23..da00fa7c 100644 --- a/ios/chrome/browser/ui/toolbar/adaptive_toolbar_egtest.mm +++ b/ios/chrome/browser/ui/toolbar/adaptive_toolbar_egtest.mm
@@ -483,7 +483,7 @@ // Verifies that the back/forward buttons are working and are correctly enabled // during navigations. -// TODO(crbug.com/1488801): Test is failing on downstream bots. +// TODO(crbug.com/40073965): Test is failing on downstream bots. - (void)DISABLED_testNavigationButtons { // Setup the server. self.testServer->RegisterRequestHandler(
diff --git a/ios/chrome/browser/ui/toolbar/primary_toolbar_view_controller.mm b/ios/chrome/browser/ui/toolbar/primary_toolbar_view_controller.mm index e2b4593..ce98225 100644 --- a/ios/chrome/browser/ui/toolbar/primary_toolbar_view_controller.mm +++ b/ios/chrome/browser/ui/toolbar/primary_toolbar_view_controller.mm
@@ -226,25 +226,13 @@ #pragma mark - ToolbarAnimatee -- (void)expandLocationBar:(BOOL)animated { +- (void)expandLocationBar { [self deactivateViewLocationBarConstraints]; [NSLayoutConstraint activateConstraints:self.view.expandedConstraints]; - if (base::FeatureList::IsEnabled(kEnableStartupImprovements)) { - // No need to force the view to layout immediately when no animation is - // required, the pending layout updates can be calculated and rendered in - // the next runloop. Otherwise, this unnecessary layout will affect startup - // performance. And it is necessary to force the view to update its layout - // when it's animated. This is because there are following animations that - // need the final frame of the location bar. - if (animated) { - [self.view layoutIfNeeded]; - } - } else { - [self.view layoutIfNeeded]; - } + [self.view layoutIfNeeded]; } -- (void)contractLocationBar:(BOOL)animated { +- (void)contractLocationBar { [self deactivateViewLocationBarConstraints]; if (IsSplitToolbarMode(self)) { [NSLayoutConstraint @@ -252,19 +240,7 @@ } else { [NSLayoutConstraint activateConstraints:self.view.contractedConstraints]; } - if (base::FeatureList::IsEnabled(kEnableStartupImprovements)) { - // No need to force the view to layout immediately when no animation is - // required, the pending layout updates can be calculated and rendered in - // the next runloop. Otherwise, this unnecessary layout will affect startup - // performance. And it is necessary to force the view to update its layout - // when it's animated. This is because there are following animations that - // need the final frame of the location bar. - if (animated) { - [self.view layoutIfNeeded]; - } - } else { - [self.view layoutIfNeeded]; - } + [self.view layoutIfNeeded]; } - (void)showCancelButton {
diff --git a/ios/chrome/browser/variations/model/DEPS b/ios/chrome/browser/variations/model/DEPS index bd0bde3..6beb3aa 100644 --- a/ios/chrome/browser/variations/model/DEPS +++ b/ios/chrome/browser/variations/model/DEPS
@@ -1,6 +1,6 @@ include_rules = [ # To access IOSChromeMetricsServiceAccessor. - # TODO(crbug.com/1508150): Remove this entry once the limited entropy + # TODO(crbug.com/40948861): Remove this entry once the limited entropy # synthetic trial has been wrapped up. "+ios/chrome/browser/metrics/model", ]
diff --git a/ios/chrome/browser/web/model/ios_thread_profiler.h b/ios/chrome/browser/web/model/ios_thread_profiler.h index 68f5586..f5194d6 100644 --- a/ios/chrome/browser/web/model/ios_thread_profiler.h +++ b/ios/chrome/browser/web/model/ios_thread_profiler.h
@@ -4,7 +4,7 @@ // Adapted from chrome/common/profiler/thread_profiler.h -// TODO(crbug.com/1229530): remove this once //chrome/common/profiler is moved +// TODO(crbug.com/40778431): remove this once //chrome/common/profiler is moved // to components/profiler. #ifndef IOS_CHROME_BROWSER_WEB_MODEL_IOS_THREAD_PROFILER_H_
diff --git a/ios/chrome/test/earl_grey/chrome_test_case.mm b/ios/chrome/test/earl_grey/chrome_test_case.mm index edc7f288..f50f805d 100644 --- a/ios/chrome/test/earl_grey/chrome_test_case.mm +++ b/ios/chrome/test/earl_grey/chrome_test_case.mm
@@ -54,7 +54,7 @@ @"testContextMenuOpenInNewTab", // ContextMenuTestCase @"testContextMenuOpenInNewWindow", // ContextMenuTestCase @"testSwitchToMain", // CookiesTestCase - // TODO(crbug.com/1422238) Re-enable this flaky test on multitasking. + // TODO(crbug.com/40896793) Re-enable this flaky test on multitasking. // @"testSwitchToIncognito", // CookiesTestCase @"testFindDefaultFormAssistControls", // FormInputTestCase @"testTabDeletion", // TabUsageRecorderTestCase
diff --git a/ios/components/io_thread/ios_io_thread.mm b/ios/components/io_thread/ios_io_thread.mm index e8e7f3c..279dbd8 100644 --- a/ios/components/io_thread/ios_io_thread.mm +++ b/ios/components/io_thread/ios_io_thread.mm
@@ -81,7 +81,7 @@ net::NetLog* net_log) { TRACE_EVENT0("startup", "IOSIOThread::CreateGlobalHostResolver"); - // TODO(crbug.com/934402): Use a shared HostResolverManager instead of a + // TODO(crbug.com/40614970): Use a shared HostResolverManager instead of a // single global HostResolver for iOS. std::unique_ptr<net::HostResolver> global_host_resolver = net::HostResolver::CreateStandaloneResolver(net_log);
diff --git a/ios/net/cookies/cookie_store_ios.mm b/ios/net/cookies/cookie_store_ios.mm index 785238a..05e18f3 100644 --- a/ios/net/cookies/cookie_store_ios.mm +++ b/ios/net/cookies/cookie_store_ios.mm
@@ -280,7 +280,7 @@ // instead. DCHECK(SystemCookiesAllowed()); - // TODO(crbug.com/1225444): Include cookie partition key when/if iOS supports + // TODO(crbug.com/40188414): Include cookie partition key when/if iOS supports // it. // TODO(mkwst): If/when iOS supports Same-Site cookies, we'll need to pass
diff --git a/ios/net/cookies/system_cookie_store.h b/ios/net/cookies/system_cookie_store.h index caad2c3..9df3e88 100644 --- a/ios/net/cookies/system_cookie_store.h +++ b/ios/net/cookies/system_cookie_store.h
@@ -83,7 +83,7 @@ // Internal cookie stores doesn't store creation time. This object is used // to keep track of the creation time of cookies, this is required for // conversion between SystemCookie and Chromium CookieMonster. - // TODO(crbug.com/825227): Move this to be private. + // TODO(crbug.com/40568476): Move this to be private. std::unique_ptr<CookieCreationTimeManager> creation_time_manager_; private:
diff --git a/ios/web/init/web_main_loop.mm b/ios/web/init/web_main_loop.mm index 64e9902e..b38aa2c6 100644 --- a/ios/web/init/web_main_loop.mm +++ b/ios/web/init/web_main_loop.mm
@@ -111,7 +111,7 @@ parts_->PreCreateThreads(); } - // TODO(crbug.com/807279): Do we need PowerMonitor on iOS, or can we get rid + // TODO(crbug.com/40560534): Do we need PowerMonitor on iOS, or can we get rid // of it? // TODO(crbug.com/1370276): Remove this once we have confidence PowerMonitor // is not needed for iOS
diff --git a/ios/web/net/cookies/crw_wk_http_cookie_store.h b/ios/web/net/cookies/crw_wk_http_cookie_store.h index 6d6ba18..700718e 100644 --- a/ios/web/net/cookies/crw_wk_http_cookie_store.h +++ b/ios/web/net/cookies/crw_wk_http_cookie_store.h
@@ -24,8 +24,8 @@ // Fetches all stored cookies. If the store didn't change between calls, this // method will return the cached result of the last call. -// TODO(crbug.com/946171): Remove caching when WKHTTPCookieStore performance bug -// is fixed. +// TODO(crbug.com/40620220): Remove caching when WKHTTPCookieStore performance +// bug is fixed. - (void)getAllCookies:(void (^)(NSArray<NSHTTPCookie*>*))completionHandler; // Sets `cookie` to the store, and invokes `completionHandler` after cookie is
diff --git a/ios/web/public/test/web_view_interaction_test_util.mm b/ios/web/public/test/web_view_interaction_test_util.mm index 3740c81..a2d3db8 100644 --- a/ios/web/public/test/web_view_interaction_test_util.mm +++ b/ios/web/public/test/web_view_interaction_test_util.mm
@@ -149,7 +149,7 @@ CGRect GetBoundingRectOfElement(web::WebState* web_state, ElementSelector* selector) { #if !TARGET_IPHONE_SIMULATOR - // TODO(crbug.com/1013714): Replace delay with improved JavaScript. + // TODO(crbug.com/40652803): Replace delay with improved JavaScript. // As of iOS 13.1, devices need additional time to stabalize the page before // getting the element location. Without this wait, the element's bounding // rect will be incorrect.
diff --git a/ios/web_view/public/cwv_trusted_vault_utils.h b/ios/web_view/public/cwv_trusted_vault_utils.h index 705d345..8407777 100644 --- a/ios/web_view/public/cwv_trusted_vault_utils.h +++ b/ios/web_view/public/cwv_trusted_vault_utils.h
@@ -14,7 +14,7 @@ // Possible states of the trusted vault. Keep in sync with // syncer::TrustedVaultDeviceRegistrationStateForUMA. typedef NS_ENUM(NSInteger, CWVTrustedVaultState) { - // TODO(crbug.com/1362716): DEPRECATED, use + // TODO(crbug.com/40238423): DEPRECATED, use // `CWVTrustedVaultStateAlreadyRegisteredV0`. CWVTrustedVaultStateAlreadyRegistered = 0, CWVTrustedVaultStateAlreadyRegisteredV0 = 0,
diff --git a/media/base/android/media_drm_bridge.cc b/media/base/android/media_drm_bridge.cc index bddc2f6..fde5dee 100644 --- a/media/base/android/media_drm_bridge.cc +++ b/media/base/android/media_drm_bridge.cc
@@ -844,7 +844,7 @@ DVLOG(2) << __func__; std::string session_id; JavaByteArrayToString(env, j_session_id, &session_id); - // TODO(crbug.com/1208618): Support other closed reasons. + // TODO(crbug.com/40181810): Support other closed reasons. task_runner_->PostTask( FROM_HERE, base::BindOnce(session_closed_cb_, std::move(session_id), CdmSessionClosedReason::kClose));
diff --git a/media/base/key_system_info.h b/media/base/key_system_info.h index 5575ca7d..e8601cf 100644 --- a/media/base/key_system_info.h +++ b/media/base/key_system_info.h
@@ -70,7 +70,7 @@ // requirement, which is enforced by `KeySystemConfigSelector`. Therefore, the // returned `EmeConfig` doesn't need to specify persistence requirement // explicitly. - // TODO(crbug.com/1324262): Refactor `EmeConfig` to make it easier to + // TODO(crbug.com/40839176): Refactor `EmeConfig` to make it easier to // express combinations of requirements. virtual EmeConfig::Rule GetPersistentLicenseSessionSupport() const = 0;
diff --git a/media/base/key_systems_impl.h b/media/base/key_systems_impl.h index ee43a73..dc0081c 100644 --- a/media/base/key_systems_impl.h +++ b/media/base/key_systems_impl.h
@@ -95,7 +95,7 @@ bool IsValidMimeTypeCodecsCombination(const std::string& mime_type, SupportedCodecs codecs) const; - // TODO(crbug.com/417440): Separate container enum from codec mask value. + // TODO(crbug.com/40386158): Separate container enum from codec mask value. // Potentially pass EmeMediaType and a container enum. SupportedCodecs GetCodecMaskForMimeType( const std::string& container_mime_type) const;
diff --git a/media/base/key_systems_unittest.cc b/media/base/key_systems_unittest.cc index 09de6be..a56472f9 100644 --- a/media/base/key_systems_unittest.cc +++ b/media/base/key_systems_unittest.cc
@@ -44,7 +44,7 @@ // Codecs only supported in FOO container. Pick some arbitrary bit fields as // long as they are not in conflict with the real ones (static_asserted below). -// TODO(crbug.com/724362): Remove container type (FOO) from codec enums. +// TODO(crbug.com/40521627): Remove container type (FOO) from codec enums. enum TestCodec : uint32_t { TEST_CODEC_FOO_AUDIO = 1 << 25, TEST_CODEC_FOO_AUDIO_ALL = TEST_CODEC_FOO_AUDIO,
diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc index 37a5010f..d42255f 100644 --- a/media/base/media_switches.cc +++ b/media/base/media_switches.cc
@@ -1688,7 +1688,7 @@ // Controls whether system loopback audio can be Cast to audio-only Cast // receivers, e.g. speakers. -// TODO(crbug.com/849335): Remove once launched. +// TODO(crbug.com/40579200): Remove once launched. BASE_FEATURE(kCastLoopbackAudioToAudioReceivers, "CastLoopbackAudioToAudioReceivers", base::FEATURE_ENABLED_BY_DEFAULT); @@ -1697,7 +1697,7 @@ // encoding. // // NOTE: currently only software AV1 encoding is supported. -// TODO(https://crbug.com/1383333): hardware AV1 encoding should be added. +// TODO(crbug.com/40246079): hardware AV1 encoding should be added. BASE_FEATURE(kCastStreamingAv1, "CastStreamingAv1", base::FEATURE_DISABLED_BY_DEFAULT);
diff --git a/media/base/renderer_client.h b/media/base/renderer_client.h index 38cf1ac..80986fb2 100644 --- a/media/base/renderer_client.h +++ b/media/base/renderer_client.h
@@ -58,7 +58,7 @@ virtual void OnVideoOpacityChange(bool opaque) = 0; // Returns true if video stream is available in the media resource. - // TODO(crbug.com/988535): Used by AudioRendererImpl. This can be removed + // TODO(crbug.com/40638012): Used by AudioRendererImpl. This can be removed // when the bug is resolved. virtual bool IsVideoStreamAvailable();
diff --git a/media/base/video_frame_metadata.h b/media/base/video_frame_metadata.h index 601075b..2633fcb 100644 --- a/media/base/video_frame_metadata.h +++ b/media/base/video_frame_metadata.h
@@ -179,7 +179,7 @@ // CompositorFrameMetadata variables associated with this frame. Used for // remote debugging. - // TODO(crbug.com/832220): Use a customized dictionary value instead of + // TODO(crbug.com/40571471): Use a customized dictionary value instead of // using these keys directly. std::optional<double> device_scale_factor; std::optional<double> page_scale_factor;
diff --git a/media/base/video_util.cc b/media/base/video_util.cc index c89ca3d..a765255 100644 --- a/media/base/video_util.cc +++ b/media/base/video_util.cc
@@ -855,7 +855,7 @@ case kBGRA_8888_SkColorType: return is_opaque ? PIXEL_FORMAT_XRGB : PIXEL_FORMAT_ARGB; default: - // TODO(crbug.com/1073995): Add F16 support. + // TODO(crbug.com/40686604): Add F16 support. return PIXEL_FORMAT_UNKNOWN; } } @@ -890,7 +890,7 @@ auto frame = VideoFrame::WrapExternalDataWithLayout( *layout, visible_rect, natural_size, - // TODO(crbug.com/1161304): We should be able to wrap readonly memory in + // TODO(crbug.com/40162403): We should be able to wrap readonly memory in // a VideoFrame instead of using writable_addr() here. reinterpret_cast<uint8_t*>(pm.writable_addr()), pm.computeByteSize(), timestamp);
diff --git a/media/cast/cast_config.h b/media/cast/cast_config.h index 742f9252..c3d5f63f 100644 --- a/media/cast/cast_config.h +++ b/media/cast/cast_config.h
@@ -23,7 +23,7 @@ namespace cast { -// TODO(https://crbug.com/1363514): should be removed in favor of +// TODO(crbug.com/40238715): should be removed in favor of // media::VideoCodec, media::AudioCodec. enum class Codec { kUnknown, @@ -187,7 +187,7 @@ // // All three delays are set to the same value due to adaptive latency // being disabled in Chrome. - // TODO(https://crbug.com/1363017): re-enable adaptive playout dleay. + // TODO(crbug.com/40238532): re-enable adaptive playout dleay. base::TimeDelta min_playout_delay = kDefaultTargetPlayoutDelay; base::TimeDelta max_playout_delay = kDefaultTargetPlayoutDelay;
diff --git a/media/cast/encoding/encoding_support.cc b/media/cast/encoding/encoding_support.cc index 598bc395..49cea726 100644 --- a/media/cast/encoding/encoding_support.cc +++ b/media/cast/encoding/encoding_support.cc
@@ -68,7 +68,7 @@ return false; } - // TODO(crbug.com/1015482): the hardware encoder is broken on Windows. + // TODO(crbug.com/40653760): the hardware encoder is broken on Windows. const bool is_enabled_on_platform = #if BUILDFLAG(IS_MAC) base::FeatureList::IsEnabled(kCastStreamingMacHardwareH264);
diff --git a/media/cdm/aes_decryptor.cc b/media/cdm/aes_decryptor.cc index 0ae439b..002e4086 100644 --- a/media/cdm/aes_decryptor.cc +++ b/media/cdm/aes_decryptor.cc
@@ -410,7 +410,7 @@ if (it->second == CdmSessionType::kPersistentLicense) { // The license release message is specified in the spec: // https://w3c.github.io/encrypted-media/#clear-key-release-format. - // TODO(crbug.com/1107614) Move session message for persistent-license + // TODO(crbug.com/40706999) Move session message for persistent-license // session from AesDecryptor to ClearKeyPersistentSessionCdm. KeyIdList key_ids; key_ids.reserve(keys_info.size());
diff --git a/media/cdm/cdm_type_conversion.cc b/media/cdm/cdm_type_conversion.cc index f9320fa..357e8aa 100644 --- a/media/cdm/cdm_type_conversion.cc +++ b/media/cdm/cdm_type_conversion.cc
@@ -119,8 +119,8 @@ return CdmSessionType::kTemporary; case cdm::kPersistentLicense: return CdmSessionType::kPersistentLicense; - // TODO(crbug.com/1181029): Remove after `kPersistentUsageRecord` is removed - // from the CDM interface. + // TODO(crbug.com/40170205): Remove after `kPersistentUsageRecord` is + // removed from the CDM interface. case cdm::kPersistentUsageRecord: break; }
diff --git a/media/cdm/cenc_decryptor.cc b/media/cdm/cenc_decryptor.cc index b4df464..8984890 100644 --- a/media/cdm/cenc_decryptor.cc +++ b/media/cdm/cenc_decryptor.cc
@@ -48,7 +48,7 @@ } } -// TODO(crbug.com/840983): This should be done in DecoderBuffer so that +// TODO(crbug.com/40575437): This should be done in DecoderBuffer so that // additional fields are more easily handled. void CopyExtraSettings(const DecoderBuffer& input, DecoderBuffer* output) { output->set_timestamp(input.timestamp());
diff --git a/media/cdm/library_cdm/clear_key_cdm/BUILD.gn b/media/cdm/library_cdm/clear_key_cdm/BUILD.gn index d8e186e4..68c163b 100644 --- a/media/cdm/library_cdm/clear_key_cdm/BUILD.gn +++ b/media/cdm/library_cdm/clear_key_cdm/BUILD.gn
@@ -38,7 +38,7 @@ "//url", ] - # TODO(crbug.com/169203): Convert this to use media::FFmpegAudioDecoder. + # TODO(crbug.com/40298390): Convert this to use media::FFmpegAudioDecoder. if (media_use_ffmpeg) { sources += [ "ffmpeg_cdm_audio_decoder.cc",
diff --git a/media/cdm/library_cdm/clear_key_cdm/cdm_video_decoder.cc b/media/cdm/library_cdm/clear_key_cdm/cdm_video_decoder.cc index 4d08882..550b6e61 100644 --- a/media/cdm/library_cdm/clear_key_cdm/cdm_video_decoder.cc +++ b/media/cdm/library_cdm/clear_key_cdm/cdm_video_decoder.cc
@@ -104,7 +104,7 @@ cdm_video_frame->SetSize( {video_frame.coded_size().width(), video_frame.coded_size().height()}); cdm_video_frame->SetTimestamp(video_frame.timestamp().InMicroseconds()); - // TODO(crbug.com/707127): Set ColorSpace here. It's not trivial to convert + // TODO(crbug.com/40513452): Set ColorSpace here. It's not trivial to convert // a gfx::ColorSpace (from VideoFrame) to another other ColorSpace like // cdm::ColorSpace.
diff --git a/media/cdm/win/media_foundation_cdm.cc b/media/cdm/win/media_foundation_cdm.cc index 7573006..ad4d2b4 100644 --- a/media/cdm/win/media_foundation_cdm.cc +++ b/media/cdm/win/media_foundation_cdm.cc
@@ -517,7 +517,7 @@ std::unique_ptr<SimpleCdmPromise> promise) { DVLOG_FUNC(1); - // TODO(crbug.com/1298192): Handle DRM_E_TEE_INVALID_HWDRM_STATE. Right now + // TODO(crbug.com/40215444): Handle DRM_E_TEE_INVALID_HWDRM_STATE. Right now // DRM_E_TEE_INVALID_HWDRM_STATE is very rare in CloseSession() and there's // an open discussion on how this should behave in EME spec discussion. CloseSessionInternal(session_id, CdmSessionClosedReason::kClose,
diff --git a/media/cdm/win/test/media_foundation_clear_key_decryptor.cc b/media/cdm/win/test/media_foundation_clear_key_decryptor.cc index f363ce1e..6fd5e9e 100644 --- a/media/cdm/win/test/media_foundation_clear_key_decryptor.cc +++ b/media/cdm/win/test/media_foundation_clear_key_decryptor.cc
@@ -575,7 +575,7 @@ // Decrypt the protected content. Decryptor::Status decryptor_status = Decryptor::kError; - // TODO(crbug.com/1442373): We may remove the tracking code of stream type + // TODO(crbug.com/40910495): We may remove the tracking code of stream type // if two decryptors get created for audio and video respectively. CHECK(stream_type_ != StreamType::kUnknown); Decryptor::StreamType stream_type = stream_type_ == StreamType::kVideo
diff --git a/media/filters/decoder_stream.cc b/media/filters/decoder_stream.cc index 2be0cf0..95301ce0 100644 --- a/media/filters/decoder_stream.cc +++ b/media/filters/decoder_stream.cc
@@ -81,7 +81,7 @@ } const char* GetStatusString(const DecoderStatus& status) { - // TODO(crbug.com/1129662): Replace this with generic Status-to-string. + // TODO(crbug.com/40149493): Replace this with generic Status-to-string. switch (status.code()) { case DecoderStatus::Codes::kOk: return "okay"; @@ -491,7 +491,7 @@ } } - // TODO(https://crbug.com/1324732): We should DCHECK(CanDecodeMore()) here, + // TODO(crbug.com/40839438): We should DCHECK(CanDecodeMore()) here, // but this breaks a number of tests. if (!fallback_buffers_.empty()) {
diff --git a/media/filters/decrypting_demuxer_stream.cc b/media/filters/decrypting_demuxer_stream.cc index 9b7c938..443846a 100644 --- a/media/filters/decrypting_demuxer_stream.cc +++ b/media/filters/decrypting_demuxer_stream.cc
@@ -348,7 +348,7 @@ // Copy the key frame flag and duration from the encrypted to decrypted // buffer. - // TODO(crbug.com/1116263): Ensure all fields are copied by Decryptor. + // TODO(crbug.com/40711813): Ensure all fields are copied by Decryptor. decrypted_buffer->set_is_key_frame( pending_buffer_to_decrypt_->is_key_frame()); decrypted_buffer->set_duration(pending_buffer_to_decrypt_->duration());
diff --git a/media/formats/hls/tags.cc b/media/formats/hls/tags.cc index 165d2d0..4ce3df8 100644 --- a/media/formats/hls/tags.cc +++ b/media/formats/hls/tags.cc
@@ -941,7 +941,7 @@ } // Extract duration - // TODO(crbug.com/1284763): Below version 3 this should be rounded to an + // TODO(crbug.com/40210233): Below version 3 this should be rounded to an // integer auto duration_result = types::ParseDecimalFloatingPoint(duration_str.SkipVariableSubstitution());
diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn index 32978473..6ab42e0d 100644 --- a/media/gpu/BUILD.gn +++ b/media/gpu/BUILD.gn
@@ -176,7 +176,7 @@ "mediandk", ] deps += [ - # TODO(crbug.com/789435): This can be removed once CdmManager is removed. + # TODO(crbug.com/40552063): This can be removed once CdmManager is removed. "//gpu/ipc/common", "//media/mojo:buildflags", "//services/service_manager/public/cpp:cpp", @@ -270,9 +270,7 @@ ] deps += [ "//third_party/libaom:libaomrc" ] } - configs += [ - "//third_party/khronos:khronos_headers", - ] + configs += [ "//third_party/khronos:khronos_headers" ] deps += [ "//gpu/ipc/common:common", "//media/base/win:color_space_util_win",
diff --git a/media/gpu/h264_decoder.cc b/media/gpu/h264_decoder.cc index 01e599e..56ccced0 100644 --- a/media/gpu/h264_decoder.cc +++ b/media/gpu/h264_decoder.cc
@@ -847,7 +847,7 @@ if (to_mark) { to_mark->ref = false; } else { - // TODO(crbug.com/1402627): consider doing the same for mmco 2 when + // TODO(crbug.com/40251206): consider doing the same for mmco 2 when // we can have testing for it, as how we handle missing |to_mark| for // mmco 1. DVLOG(1) << "Invalid long term ref pic num to unmark";
diff --git a/media/gpu/h265_decoder.cc b/media/gpu/h265_decoder.cc index 1126009..f6e25b13 100644 --- a/media/gpu/h265_decoder.cc +++ b/media/gpu/h265_decoder.cc
@@ -435,9 +435,9 @@ if (par_res != H265Parser::kOk) { SET_ERROR_AND_RETURN(); } - // TODO(crbug.com/1495665): Technically, we should cache a map of vps_id - // to aux_alpha_layer_id, and look up the aux_alpha_layer_id for each - // NALU. + // TODO(crbug.com/40937818): Technically, we should cache a map of + // vps_id to aux_alpha_layer_id, and look up the aux_alpha_layer_id for + // each NALU. aux_alpha_layer_id_ = parser_.GetVPS(vps_id)->aux_alpha_layer_id; accelerator_->ProcessVPS( parser_.GetVPS(vps_id),
diff --git a/media/gpu/mac/video_toolbox_video_decoder.cc b/media/gpu/mac/video_toolbox_video_decoder.cc index 8bdec5b..9225569 100644 --- a/media/gpu/mac/video_toolbox_video_decoder.cc +++ b/media/gpu/mac/video_toolbox_video_decoder.cc
@@ -47,7 +47,7 @@ bool InitializeVP9() { #if BUILDFLAG(IS_MAC) - // TODO(crbug.com/1449877): Enable VP9 on iOS. + // TODO(crbug.com/40269929): Enable VP9 on iOS. if (__builtin_available(macOS 11.0, *)) { VTRegisterSupplementalVideoDecoderIfAvailable(kCMVideoCodecType_VP9); return VTIsHardwareDecodeSupported(kCMVideoCodecType_VP9);
diff --git a/media/gpu/mac/vt_video_decode_accelerator_mac.mm b/media/gpu/mac/vt_video_decode_accelerator_mac.mm index 714841e..0d41a5c 100644 --- a/media/gpu/mac/vt_video_decode_accelerator_mac.mm +++ b/media/gpu/mac/vt_video_decode_accelerator_mac.mm
@@ -797,7 +797,7 @@ return false; } - // TODO(crbug.com/1103432): We should use + // TODO(crbug.com/40139254): We should use // VTDecompressionSessionCanAcceptFormatDescription() on |format| here to // avoid the configuration change if possible.
diff --git a/media/mojo/clients/mojo_decoder_factory.h b/media/mojo/clients/mojo_decoder_factory.h index cb890cfd..760db09 100644 --- a/media/mojo/clients/mojo_decoder_factory.h +++ b/media/mojo/clients/mojo_decoder_factory.h
@@ -31,7 +31,7 @@ MediaLog* media_log, std::vector<std::unique_ptr<AudioDecoder>>* audio_decoders) final; - // TODO(crbug.com/1173503): Implement GetSupportedVideoDecoderConfigs. + // TODO(crbug.com/40167137): Implement GetSupportedVideoDecoderConfigs. void CreateVideoDecoders( scoped_refptr<base::SequencedTaskRunner> task_runner,
diff --git a/media/mojo/mojom/decryptor.mojom b/media/mojo/mojom/decryptor.mojom index 5630ce8..d1cb72ab 100644 --- a/media/mojo/mojom/decryptor.mojom +++ b/media/mojo/mojom/decryptor.mojom
@@ -8,7 +8,7 @@ // Interface for decrypting (and decoding) encrypted streams. // See media/base/decryptor.h for details. -// TODO(crbug.com/794326): Deduplicate this interface with audio_decoder.mojom +// TODO(crbug.com/40554405): Deduplicate this interface with audio_decoder.mojom // and audio_decoder.mojom. interface Decryptor { // Status of a decrypt or decrypt-and-decode operation. See decryptor.h for
diff --git a/media/mojo/services/mojo_cdm_helper_unittest.cc b/media/mojo/services/mojo_cdm_helper_unittest.cc index ca93d82b2..ab3307a 100644 --- a/media/mojo/services/mojo_cdm_helper_unittest.cc +++ b/media/mojo/services/mojo_cdm_helper_unittest.cc
@@ -121,6 +121,6 @@ base::RunLoop().RunUntilIdle(); } -// TODO(crbug.com/773860): Add more test cases. +// TODO(crbug.com/40544338): Add more test cases. } // namespace media
diff --git a/media/renderers/paint_canvas_video_renderer.cc b/media/renderers/paint_canvas_video_renderer.cc index bd0c6f37..d7c7925c1 100644 --- a/media/renderers/paint_canvas_video_renderer.cc +++ b/media/renderers/paint_canvas_video_renderer.cc
@@ -1583,7 +1583,7 @@ return false; } - // TODO(crbug.com/1108154): Support more texture target, e.g. + // TODO(crbug.com/40141173): Support more texture target, e.g. // 2d array, 3d etc. if (target != GL_TEXTURE_2D) { return false;
diff --git a/media/renderers/video_frame_rgba_to_yuva_converter.cc b/media/renderers/video_frame_rgba_to_yuva_converter.cc index 7c0c7e1..2916b4d 100644 --- a/media/renderers/video_frame_rgba_to_yuva_converter.cc +++ b/media/renderers/video_frame_rgba_to_yuva_converter.cc
@@ -202,7 +202,7 @@ // case resulted in pixeltest failures due to pixel bleeding around image // borders that we weren't able to resolve (see crbug.com/1451025 for // details). - // TODO(crbug.com/1451025): Update this comment when we resolve that bug + // TODO(crbug.com/40270413): Update this comment when we resolve that bug // and change CopySharedImage() to crop rather than stretch. ri->CopySharedImage(src_mailbox_holder.mailbox, dst_mailbox_holder.mailbox, GL_TEXTURE_2D, 0, 0, 0, 0,
diff --git a/media/renderers/video_resource_updater.cc b/media/renderers/video_resource_updater.cc index 8737ec54b..b2f0452 100644 --- a/media/renderers/video_resource_updater.cc +++ b/media/renderers/video_resource_updater.cc
@@ -702,7 +702,7 @@ DCHECK(context_provider_); auto* sii = SharedImageInterface(); if (format.is_single_plane()) { - // TODO(crbug.com/1366495): Set `overlay_candidate_` for multiplanar + // TODO(crbug.com/40239769): Set `overlay_candidate_` for multiplanar // formats. overlay_candidate_ = use_gpu_memory_buffer_resources &&
diff --git a/media/renderers/win/media_foundation_renderer.cc b/media/renderers/win/media_foundation_renderer.cc index e545542..3a45a62 100644 --- a/media/renderers/win/media_foundation_renderer.cc +++ b/media/renderers/win/media_foundation_renderer.cc
@@ -1093,7 +1093,7 @@ // it here. PipelineStatus new_status = status; if (hresult == DRM_E_TEE_INVALID_HWDRM_STATE) { - // TODO(crbug.com/1370844): Remove these after the investigation is done. + // TODO(crbug.com/40870069): Remove these after the investigation is done. base::UmaHistogramBoolean( "Media.MediaFoundationRenderer.InvalidHwdrmState.HasReportedPlaying", has_reported_playing_);
diff --git a/media/renderers/win/media_foundation_source_wrapper.cc b/media/renderers/win/media_foundation_source_wrapper.cc index a310b57..d64bca3 100644 --- a/media/renderers/win/media_foundation_source_wrapper.cc +++ b/media/renderers/win/media_foundation_source_wrapper.cc
@@ -59,7 +59,7 @@ } int stream_id = 0; for (DemuxerStream* demuxer_stream : demuxer_streams) { - // TODO(crbug.com/1453682): MediaFoundationRenderer playback won't end + // TODO(crbug.com/40272014): MediaFoundationRenderer playback won't end // after hitting the end of the video stream if no audio device. If any // video stream is available but no audio device, do not create an instance // of the MediaFoundationStreamWrapper so that the video playback can end
diff --git a/media/test/pipeline_integration_test.cc b/media/test/pipeline_integration_test.cc index c9126df..2ea7f12 100644 --- a/media/test/pipeline_integration_test.cc +++ b/media/test/pipeline_integration_test.cc
@@ -2111,7 +2111,7 @@ // provided by the operating system and will apply DRC based on device // specific params. - // TODO(crbug.com/1289825): Seeking doesn't always work properly when using + // TODO(crbug.com/40817722): Seeking doesn't always work properly when using // ffmpeg since it doesn't handle non-keyframe xHE-AAC samples properly. }
diff --git a/media/video/video_encode_accelerator_adapter.cc b/media/video/video_encode_accelerator_adapter.cc index d469e1d4..74c4ef7d 100644 --- a/media/video/video_encode_accelerator_adapter.cc +++ b/media/video/video_encode_accelerator_adapter.cc
@@ -54,7 +54,7 @@ } uint32_t ComputeCheckedPeakBitrate(uint32_t target_bitrate) { - // TODO(crbug.com/1342850): Reconsider whether this is good peak bps. + // TODO(crbug.com/40851972): Reconsider whether this is good peak bps. base::CheckedNumeric<uint32_t> checked_bitrate_product = base::CheckMul<uint32_t>(target_bitrate, 10u); return checked_bitrate_product.ValueOrDefault(
diff --git a/mojo/core/channel_win.cc b/mojo/core/channel_win.cc index dc5bbc0..d404ab5 100644 --- a/mojo/core/channel_win.cc +++ b/mojo/core/channel_win.cc
@@ -203,7 +203,7 @@ reject_writes_ = true; } - // TODO(https://crbug.com/583525): This function is expected to be called + // TODO(crbug.com/40455076): This function is expected to be called // once, and |handle_| should be valid at this point. CHECK(handle_.is_valid()); CancelIo(handle_.get());
diff --git a/mojo/core/node_channel.cc b/mojo/core/node_channel.cc index da55656..914dd19 100644 --- a/mojo/core/node_channel.cc +++ b/mojo/core/node_channel.cc
@@ -509,7 +509,7 @@ // will leak, but that means something else has probably broken and the // sending process won't likely be around much longer. // - // TODO(https://crbug.com/813112): We would like to be able to violate the + // TODO(crbug.com/40563346): We would like to be able to violate the // above stated assumption. We should not leak handles in cases where we // outlive the broker, as we may continue existing and eventually accept a new // broker invitation.
diff --git a/mojo/core/node_controller.cc b/mojo/core/node_controller.cc index 4a6eb296..4413285a 100644 --- a/mojo/core/node_controller.cc +++ b/mojo/core/node_controller.cc
@@ -1176,7 +1176,7 @@ { base::AutoLock lock(reserved_ports_lock_); auto it = reserved_ports_.find(from_node); - // TODO(https://crbug.com/822034): We should send a notification back to the + // TODO(crbug.com/40567118): We should send a notification back to the // requestor so they can clean up their dangling port in this failure case. // This requires changes to the internal protocol, which can't be made yet. // Until this is done, pipes from |MojoExtractMessagePipeFromInvitation()|
diff --git a/mojo/core/ports/port_locker.cc b/mojo/core/ports/port_locker.cc index 1cfcf96..ab5d2f7f 100644 --- a/mojo/core/ports/port_locker.cc +++ b/mojo/core/ports/port_locker.cc
@@ -38,7 +38,7 @@ port_refs_, port_refs_ + num_ports_, [](const PortRef* a, const PortRef* b) { return a->port() < b->port(); }); for (size_t i = 0; i < num_ports_; ++i) { - // TODO(crbug.com/725605): Remove this CHECK. + // TODO(crbug.com/40522227): Remove this CHECK. CHECK(port_refs_[i]->port()); port_refs_[i]->port()->lock_.Acquire(); }
diff --git a/mojo/public/c/system/types.h b/mojo/public/c/system/types.h index ce541c6..ec8c1f092 100644 --- a/mojo/public/c/system/types.h +++ b/mojo/public/c/system/types.h
@@ -273,7 +273,7 @@ MOJO_STATIC_ASSERT(sizeof(struct MojoHandleSignalsState) == 8, "MojoHandleSignalsState has wrong size"); -// TODO(https://crbug.com/819046): Remove these aliases. +// TODO(crbug.com/40565809): Remove these aliases. #define MOJO_WATCH_CONDITION_SATISFIED MOJO_TRIGGER_CONDITION_SIGNALS_SATISFIED #define MOJO_WATCH_CONDITION_NOT_SATISFIED \ MOJO_TRIGGER_CONDITION_SIGNALS_UNSATISFIED
diff --git a/mojo/public/cpp/bindings/tests/remote_unittest.cc b/mojo/public/cpp/bindings/tests/remote_unittest.cc index babf926a9b..caa20f0 100644 --- a/mojo/public/cpp/bindings/tests/remote_unittest.cc +++ b/mojo/public/cpp/bindings/tests/remote_unittest.cc
@@ -1469,7 +1469,7 @@ Receiver<mojom::LargeMessageTest> receiver_; }; -// TODO(crbug.com/1329178): Flaky on Linux/ASAN, Mac, and Fuchsia bots. +// TODO(crbug.com/40226674): Flaky on Linux/ASAN, Mac, and Fuchsia bots. TEST_P(RemoteTest, DISABLED_SendVeryLargeMessages) { Remote<mojom::LargeMessageTest> remote; LargeMessageTestImpl impl(remote.BindNewPipeAndPassReceiver());
diff --git a/net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java b/net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java index 801c2a7..f4e9645 100644 --- a/net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java +++ b/net/android/java/src/org/chromium/net/NetworkChangeNotifierAutoDetect.java
@@ -497,7 +497,7 @@ } } if (defaultNetwork != null) { - // TODO(https://crbug.com/1361170): Investigate why there are multiple + // TODO(crbug.com/40060873): Investigate why there are multiple // connected networks. Log.e( TAG, @@ -1216,7 +1216,7 @@ /** * Updates internally stored network state by querying the current state from the system. - * TODO(crbug/1493005): migrate external callers to getCurrentNetworkState() and make this + * TODO(crbug.com/40936429): migrate external callers to getCurrentNetworkState() and make this * method private (to be called only when updates are received from the system.) */ public void updateCurrentNetworkState() {
diff --git a/net/base/features.h b/net/base/features.h index 3c97e24..1951fee 100644 --- a/net/base/features.h +++ b/net/base/features.h
@@ -271,7 +271,7 @@ // When enabled, UDPSocketPosix increments the global counter of bytes received // every time bytes are received, instead of using a timer to batch updates. // This should reduce the number of wake ups and improve battery consumption. -// TODO(https://crbug.com/1189805): Cleanup the feature after verifying that it +// TODO(crbug.com/40755656): Cleanup the feature after verifying that it // doesn't negatively affect performance. NET_EXPORT BASE_DECLARE_FEATURE(kUdpSocketPosixAlwaysUpdateBytesReceived); #endif // BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA)
diff --git a/net/base/filename_util_unittest.cc b/net/base/filename_util_unittest.cc index 664b8bea..f6f6f2f5 100644 --- a/net/base/filename_util_unittest.cc +++ b/net/base/filename_util_unittest.cc
@@ -36,7 +36,7 @@ }; // The expected filenames are coded as wchar_t for convenience. -// TODO(https://crbug.com/911896): Make these char16_t once std::u16string is +// TODO(crbug.com/40605133): Make these char16_t once std::u16string is // std::u16string. std::wstring FilePathAsWString(const base::FilePath& path) { #if BUILDFLAG(IS_WIN)
diff --git a/net/base/net_error_list.h b/net/base/net_error_list.h index 8d32558..7895c59a 100644 --- a/net/base/net_error_list.h +++ b/net/base/net_error_list.h
@@ -267,7 +267,7 @@ // received a 302 (temporary redirect) response. The response body might // include a description of why the request failed. // -// TODO(https://crbug.com/928551): This is deprecated and should not be used by +// TODO(crbug.com/40093955): This is deprecated and should not be used by // new code. NET_ERROR(HTTPS_PROXY_TUNNEL_RESPONSE_REDIRECT, -140)
diff --git a/net/base/net_errors.cc b/net/base/net_errors.cc index 8f883a7..4650ad7 100644 --- a/net/base/net_errors.cc +++ b/net/base/net_errors.cc
@@ -46,7 +46,7 @@ #include "net/base/net_error_list.h" #undef NET_ERROR default: - // TODO(crbug.com/1439949): Figure out why this is firing, fix and upgrade + // TODO(crbug.com/40909121): Figure out why this is firing, fix and upgrade // this to be fatal. DUMP_WILL_BE_NOTREACHED_NORETURN() << error; error_string = "<unknown>";
diff --git a/net/base/network_isolation_key.h b/net/base/network_isolation_key.h index 9c159400..1fc0809 100644 --- a/net/base/network_isolation_key.h +++ b/net/base/network_isolation_key.h
@@ -46,7 +46,7 @@ std::optional<base::UnguessableToken>&& nonce = std::nullopt); // Legacy constructor. - // TODO(https://crbug.com/1145294): Remove this in favor of above + // TODO(crbug.com/40729378): Remove this in favor of above // constructor. NetworkIsolationKey(const url::Origin& top_frame_origin, const url::Origin& frame_origin);
diff --git a/net/base/proxy_string_util.h b/net/base/proxy_string_util.h index 9751720..bde65af 100644 --- a/net/base/proxy_string_util.h +++ b/net/base/proxy_string_util.h
@@ -47,7 +47,7 @@ // "BLAH xxx:xx" INVALID NET_EXPORT ProxyChain PacResultElementToProxyChain(std::string_view pac_result_element); -// TODO(crbug.com/1491092): Remove method once all calls are updated to use +// TODO(crbug.com/40284947): Remove method once all calls are updated to use // PacResultElementToProxyChain. NET_EXPORT ProxyServer PacResultElementToProxyServer(std::string_view pac_result_element);
diff --git a/net/base/registry_controlled_domains/registry_controlled_domain.cc b/net/base/registry_controlled_domains/registry_controlled_domain.cc index 425b469..b28cadc 100644 --- a/net/base/registry_controlled_domains/registry_controlled_domain.cc +++ b/net/base/registry_controlled_domains/registry_controlled_domain.cc
@@ -132,7 +132,7 @@ // "!foo"). This would only be valid if we had a corresponding // wildcard rule, which would have to be "*". But we explicitly // disallow that case, so this kind of rule is invalid. - // TODO(https://crbug.com/459802): This assumes that all wildcard entries, + // TODO(crbug.com/40406311): This assumes that all wildcard entries, // such as *.foo.invalid, also have their parent, foo.invalid, as an entry // on the PSL, which is why it returns the length of foo.invalid. This // isn't entirely correct.
diff --git a/net/cookies/canonical_cookie.cc b/net/cookies/canonical_cookie.cc index 0d1275a6..c429c08 100644 --- a/net/cookies/canonical_cookie.cc +++ b/net/cookies/canonical_cookie.cc
@@ -277,7 +277,7 @@ return expiry_date; base::Time fixed_creation_date = creation_date; if (fixed_creation_date.is_null()) { - // TODO(crbug.com/1264458): Push this logic into + // TODO(crbug.com/40800807): Push this logic into // CanonicalCookie::CreateSanitizedCookie. The four sites that call it // with a null `creation_date` (CanonicalCookie::Create cannot be called // this way) are: @@ -917,7 +917,7 @@ // would fail this check. Note that we still don't want to enforce length // checks on domain or path for the reason stated above. - // TODO(crbug.com/1264458): Eventually we should push this logic into + // TODO(crbug.com/40800807): Eventually we should push this logic into // IsCanonicalForFromStorage, but for now we allow cookies already stored with // high expiration dates to be retrieved. if (ValidateAndAdjustExpiryDate(expiry_date_, CreationDate(),
diff --git a/net/cookies/cookie_base.cc b/net/cookies/cookie_base.cc index b5b67045..588b292 100644 --- a/net/cookies/cookie_base.cc +++ b/net/cookies/cookie_base.cc
@@ -347,7 +347,7 @@ : CookieInclusionStatus::EXCLUDE_SAMESITE_LAX); } break; - // TODO(crbug.com/990439): Add a browsertest for this behavior. + // TODO(crbug.com/40638805): Add a browsertest for this behavior. case CookieEffectiveSameSite::LAX_MODE_ALLOW_UNSAFE: DCHECK(SameSite() == CookieSameSite::UNSPECIFIED); if (cookie_inclusion_context <
diff --git a/net/cookies/cookie_change_dispatcher.h b/net/cookies/cookie_change_dispatcher.h index 68f9db1..72c62a3 100644 --- a/net/cookies/cookie_change_dispatcher.h +++ b/net/cookies/cookie_change_dispatcher.h
@@ -160,7 +160,7 @@ // // The callback will not observe a few bookkeeping changes. // See kChangeCauseMapping in cookie_monster.cc for details. - // TODO(crbug.com/1225444): Add support for Partitioned cookies. + // TODO(crbug.com/40188414): Add support for Partitioned cookies. [[nodiscard]] virtual std::unique_ptr<CookieChangeSubscription> AddCallbackForAllChanges(CookieChangeCallback callback) = 0; };
diff --git a/net/cookies/cookie_constants_unittest.cc b/net/cookies/cookie_constants_unittest.cc index b99b192..4e85e879 100644 --- a/net/cookies/cookie_constants_unittest.cc +++ b/net/cookies/cookie_constants_unittest.cc
@@ -37,7 +37,7 @@ } } -// TODO(crbug.com/996811): Add tests for multiple possibly-invalid attributes. +// TODO(crbug.com/40641705): Add tests for multiple possibly-invalid attributes. TEST(CookieConstantsTest, TestCookieSameSite) { // Test case insensitivity EXPECT_EQ(CookieSameSite::NO_RESTRICTION, StringToCookieSameSite("None"));
diff --git a/net/cookies/cookie_deletion_info.h b/net/cookies/cookie_deletion_info.h index c1d82f9..1d82498 100644 --- a/net/cookies/cookie_deletion_info.h +++ b/net/cookies/cookie_deletion_info.h
@@ -31,7 +31,7 @@ // single time) where |end| is inclusive. This special case is for iOS that // will be removed in the future. // - // TODO(crbug.com/830689): Delete the start=end special case. + // TODO(crbug.com/40570811): Delete the start=end special case. class NET_EXPORT TimeRange { public: // Default constructor matches any non-null time.
diff --git a/net/cookies/cookie_inclusion_status.h b/net/cookies/cookie_inclusion_status.h index 92a61d5..5d4e1eb5 100644 --- a/net/cookies/cookie_inclusion_status.h +++ b/net/cookies/cookie_inclusion_status.h
@@ -24,7 +24,7 @@ // exclusion, where cookie inclusion is represented by the absence of any // exclusion reasons. Also marks whether a cookie should be warned about, e.g. // for deprecation or intervention reasons. -// TODO(crbug.com/1310444): Improve serialization validation comments. +// TODO(crbug.com/40219875): Improve serialization validation comments. class NET_EXPORT CookieInclusionStatus { public: // Types of reasons why a cookie might be excluded. @@ -403,7 +403,7 @@ // Validates mojo data, since mojo does not support bitsets. ExemptionReason // is omitted intendedly. - // TODO(crbug.com/1310444): Improve serialization validation comments + // TODO(crbug.com/40219875): Improve serialization validation comments // and check for mutually exclusive values. static bool ValidateExclusionAndWarningFromWire(uint32_t exclusion_reasons, uint32_t warning_reasons);
diff --git a/net/cookies/cookie_monster.cc b/net/cookies/cookie_monster.cc index 02ace3e..d3fad063 100644 --- a/net/cookies/cookie_monster.cc +++ b/net/cookies/cookie_monster.cc
@@ -1200,7 +1200,7 @@ // duplicates. dupes.erase(dupes.begin()); - // TODO(crbug.com/1225444) Include cookie partition key in this log + // TODO(crbug.com/40188414) Include cookie partition key in this log // statement as well if needed. // TODO(crbug.com/1170548): Include source scheme and source port. LOG(ERROR) << base::StringPrintf( @@ -1251,7 +1251,7 @@ // duplicates. dupes.erase(dupes.begin()); - // TODO(crbug.com/1225444) Include cookie partition key in this log + // TODO(crbug.com/40188414) Include cookie partition key in this log // statement as well if needed. // TODO(crbug.com/1170548): Include source scheme and source port. LOG(ERROR) << base::StringPrintf( @@ -1782,8 +1782,9 @@ // http:// URLs, but not cookies that are cleared by http:// URLs, to // understand if the former behavior can be deprecated for Secure // cookies. - // TODO(crbug.com/993120): Consider removing this histogram. The decision - // it was added to evaluate has been implemented and standardized. + // TODO(crbug.com/40640080): Consider removing this histogram. The + // decision it was added to evaluate has been implemented and + // standardized. CookieSource cookie_source_sample = (source_url.SchemeIsCryptographic() ? (cc->SecureAttribute() @@ -2218,7 +2219,7 @@ if (NumBytesInCookieMapForKey(*cookie_partition_it->second.get(), key) > kPerPartitionDomainMaxCookieBytes || cookie_partition_it->second->count(key) > kPerPartitionDomainMaxCookies) { - // TODO(crbug.com/1225444): Log garbage collection for partitioned cookies. + // TODO(crbug.com/40188414): Log garbage collection for partitioned cookies. CookieItVector non_expired_cookie_its; num_deleted += GarbageCollectExpiredPartitionedCookies( @@ -2229,7 +2230,7 @@ if (bytes_used > kPerPartitionDomainMaxCookieBytes || non_expired_cookie_its.size() > kPerPartitionDomainMaxCookies) { - // TODO(crbug.com/1225444): Log deep garbage collection for partitioned + // TODO(crbug.com/40188414): Log deep garbage collection for partitioned // cookies. std::sort(non_expired_cookie_its.begin(), non_expired_cookie_its.end(), LRACookieSorter); @@ -2247,7 +2248,7 @@ } } - // TODO(crbug.com/1225444): Enforce global limit on partitioned cookies. + // TODO(crbug.com/40188414): Enforce global limit on partitioned cookies. return num_deleted; }
diff --git a/net/cookies/cookie_monster.h b/net/cookies/cookie_monster.h index e302feb..b4cb9c4c 100644 --- a/net/cookies/cookie_monster.h +++ b/net/cookies/cookie_monster.h
@@ -142,7 +142,8 @@ // Partitioned cookie garbage collection thresholds. static const size_t kPerPartitionDomainMaxCookieBytes; static const size_t kPerPartitionDomainMaxCookies; - // TODO(crbug.com/1225444): Add global limit to number of partitioned cookies. + // TODO(crbug.com/40188414): Add global limit to number of partitioned + // cookies. // Quota for cookies with {low, medium, high} priorities within a domain. static const size_t kDomainCookiesQuotaLow;
diff --git a/net/cookies/cookie_monster_unittest.cc b/net/cookies/cookie_monster_unittest.cc index 51821e52..b3dac3b4 100644 --- a/net/cookies/cookie_monster_unittest.cc +++ b/net/cookies/cookie_monster_unittest.cc
@@ -2860,7 +2860,7 @@ } // Test that cookies transfer from/to the backing store correctly. -// TODO(crbug.com/1225444): Include partitioned cookies in this test when we +// TODO(crbug.com/40188414): Include partitioned cookies in this test when we // start saving them in the persistent store. TEST_F(CookieMonsterTest, BackingStoreCommunication) { // Store details for cookies transforming through the backing store interface.
diff --git a/net/cookies/cookie_partition_key.h b/net/cookies/cookie_partition_key.h index 1e1b1798..919748f 100644 --- a/net/cookies/cookie_partition_key.h +++ b/net/cookies/cookie_partition_key.h
@@ -82,7 +82,7 @@ // we will not be able to attach the saved cookie to any future requests. This // is because opaque origins' nonces are only stored in volatile memory. // - // TODO(crbug.com/1225444) Investigate ways to persist partition keys with + // TODO(crbug.com/40188414) Investigate ways to persist partition keys with // opaque origins if a browser session is restored. [[nodiscard]] static base::expected<SerializedCookiePartitionKey, std::string> Serialize(const std::optional<CookiePartitionKey>& in); @@ -121,7 +121,7 @@ // either the `from_script_` flag should be set or the cookie partition key // should match the browser's. Otherwise the renderer may be compromised. // - // TODO(crbug.com/1225444) Consider removing this factory method and + // TODO(crbug.com/40188414) Consider removing this factory method and // `from_script_` flag when BlinkStorageKey is available in // ServiceWorkerGlobalScope. static std::optional<CookiePartitionKey> FromScript() {
diff --git a/net/cookies/cookie_partition_key_collection.h b/net/cookies/cookie_partition_key_collection.h index 53bb325..4032cef16 100644 --- a/net/cookies/cookie_partition_key_collection.h +++ b/net/cookies/cookie_partition_key_collection.h
@@ -54,7 +54,7 @@ // Returns an empty key collection, so no partitioned cookies will be returned // at callsites this is used. // - // TODO(crbug.com/1225444): Remove this method and update callsites to use + // TODO(crbug.com/40188414): Remove this method and update callsites to use // appropriate constructor. static CookiePartitionKeyCollection Todo() { return CookiePartitionKeyCollection();
diff --git a/net/disk_cache/blockfile/backend_impl.cc b/net/disk_cache/blockfile/backend_impl.cc index 1608393b..80fdaeb 100644 --- a/net/disk_cache/blockfile/backend_impl.cc +++ b/net/disk_cache/blockfile/backend_impl.cc
@@ -333,7 +333,7 @@ if (user_flags_ & kNoRandom) { // This is a net_unittest, verify that we are not 'leaking' entries. - // TODO(https://crbug.com/1184679): Refactor this and eliminate the + // TODO(crbug.com/40171748): Refactor this and eliminate the // WaitForPendingIOForTesting API. File::WaitForPendingIOForTesting(&num_pending_io_); DCHECK(!num_refs_);
diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc index 308f751..9d660db 100644 --- a/net/dns/dns_transaction.cc +++ b/net/dns/dns_transaction.cc
@@ -1502,7 +1502,7 @@ const DnsConfig& config = session_->config(); DCHECK_LT(server_index, config.nameservers.size()); - // TODO(https://crbug.com/1123197): Pass a non-null NetworkQualityEstimator. + // TODO(crbug.com/40146880): Pass a non-null NetworkQualityEstimator. NetworkQualityEstimator* network_quality_estimator = nullptr; std::unique_ptr<StreamSocket> socket =
diff --git a/net/dns/host_resolver.cc b/net/dns/host_resolver.cc index f06bc628..8ed64a9 100644 --- a/net/dns/host_resolver.cc +++ b/net/dns/host_resolver.cc
@@ -486,7 +486,7 @@ // static int HostResolver::SquashErrorCode(int error) { - // TODO(crbug.com/1043281): Consider squashing ERR_INTERNET_DISCONNECTED. + // TODO(crbug.com/40668952): Consider squashing ERR_INTERNET_DISCONNECTED. if (error == OK || error == ERR_IO_PENDING || error == ERR_INTERNET_DISCONNECTED || error == ERR_NAME_NOT_RESOLVED || error == ERR_DNS_NAME_HTTPS_ONLY) {
diff --git a/net/dns/host_resolver.h b/net/dns/host_resolver.h index f9ad2e7..afebfa0 100644 --- a/net/dns/host_resolver.h +++ b/net/dns/host_resolver.h
@@ -87,10 +87,10 @@ // Handler for an individual host resolution request. Created by // HostResolver::CreateRequest(). // - // TODO(crbug.com/1290920): Most result retrieval here follows a pattern where - // it may return null or empty for requests where that result type is not - // available. Clean this up to always return empty for such cases and remove - // nullability from the return types. + // TODO(crbug.com/40212535): Most result retrieval here follows a pattern + // where it may return null or empty for requests where that result type is + // not available. Clean this up to always return empty for such cases and + // remove nullability from the return types. class ResolveHostRequest { public: // Destruction cancels the request if running asynchronously, causing the @@ -392,11 +392,11 @@ // the system resolver, e.g. non-address requests or requests specifying a // non-`SYSTEM` `source`. // - // TODO(crbug.com/1282281): Consider allowing the built-in resolver to still - // be used with this parameter. Would then function as a request to just - // keep the single final name from the alias chain instead of all aliases, - // and also skip the canonicalization unless that canonicalization is found - // to be fine for usage. + // TODO(crbug.com/40209534): Consider allowing the built-in resolver to + // still be used with this parameter. Would then function as a request to + // just keep the single final name from the alias chain instead of all + // aliases, and also skip the canonicalization unless that canonicalization + // is found to be fine for usage. bool include_canonical_name = false; // Hint to the resolver that resolution is only being requested for loopback
diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc index 9b911a7..7f69276 100644 --- a/net/dns/host_resolver_manager.cc +++ b/net/dns/host_resolver_manager.cc
@@ -1558,7 +1558,7 @@ dispatcher_->SetLimits(limits); } -// TODO(crbug.com/995984): Consider removing this and its usage. +// TODO(crbug.com/40641277): Consider removing this and its usage. void HostResolverManager::TryServingAllJobsFromHosts() { if (!dns_client_ || !dns_client_->GetEffectiveConfig()) return;
diff --git a/net/extras/sqlite/sqlite_persistent_cookie_store.cc b/net/extras/sqlite/sqlite_persistent_cookie_store.cc index 88ea3e8..196d0ee9 100644 --- a/net/extras/sqlite/sqlite_persistent_cookie_store.cc +++ b/net/extras/sqlite/sqlite_persistent_cookie_store.cc
@@ -1596,8 +1596,8 @@ LOG(WARNING) << "Unable to delete session cookies."; } -// TODO(crbug.com/1225444) Investigate including top_frame_site_key in the WHERE -// clause. +// TODO(crbug.com/40188414) Investigate including top_frame_site_key in the +// WHERE clause. void SQLitePersistentCookieStore::Backend::BackgroundDeleteAllInList( const std::list<CookieOrigin>& cookies) { DCHECK(background_task_runner()->RunsTasksInCurrentSequence());
diff --git a/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc b/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc index a62086448..39e723c6e 100644 --- a/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc +++ b/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc
@@ -776,7 +776,7 @@ stmt.BindInt64(0, creation_time++); stmt.BindString(1, cookie_info.domain); - // TODO(crbug.com/1225444) Test some non-empty values when CanonicalCookie + // TODO(crbug.com/40188414) Test some non-empty values when CanonicalCookie // supports partition key. stmt.BindString(2, net::kEmptyCookiePartitionKey); stmt.BindString(3, cookie_info.name);
diff --git a/net/http/http_cache_writers.cc b/net/http/http_cache_writers.cc index 6f619089..fb2be5bd 100644 --- a/net/http/http_cache_writers.cc +++ b/net/http/http_cache_writers.cc
@@ -398,7 +398,7 @@ DCHECK(network_transaction_); next_state_ = State::NETWORK_READ_COMPLETE; - // TODO(https://crbug.com/778641): This is a partial mitigation. When + // TODO(crbug.com/40089413): This is a partial mitigation. When // reading from the network, a valid HttpNetworkTransaction must be always // available. if (!network_transaction_) {
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc index cc4b28d4..fe593c1 100644 --- a/net/http/http_network_transaction.cc +++ b/net/http/http_network_transaction.cc
@@ -1672,7 +1672,7 @@ bool is_server = !UsingHttpProxyWithoutTunnel(); HostPortPair host_port_pair; - // TODO(https://crbug.com/1491092): Remove check and return error when + // TODO(crbug.com/40284947): Remove check and return error when // multi-proxy chain. if (is_server) { host_port_pair = HostPortPair::FromURL(request_->url); @@ -1968,7 +1968,7 @@ } bool HttpNetworkTransaction::ShouldApplyProxyAuth() const { - // TODO(https://crbug.com/1491092): Update to handle multi-proxy chains. + // TODO(crbug.com/40284947): Update to handle multi-proxy chains. if (proxy_info_.proxy_chain().is_multi_proxy()) { return false; } @@ -2016,7 +2016,7 @@ GURL HttpNetworkTransaction::AuthURL(HttpAuth::Target target) const { switch (target) { case HttpAuth::AUTH_PROXY: { - // TODO(https://crbug.com/1491092): Update to handle multi-proxy chain. + // TODO(crbug.com/40284947): Update to handle multi-proxy chain. CHECK(proxy_info_.proxy_chain().is_single_proxy()); if (!proxy_info_.proxy_chain().IsValid() || proxy_info_.proxy_chain().is_direct()) {
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc index 7cb27e7..704ff5e 100644 --- a/net/http/http_network_transaction_unittest.cc +++ b/net/http/http_network_transaction_unittest.cc
@@ -7214,7 +7214,7 @@ } // Test that a proxy server requesting a client auth cert doesn't cause a crash. -// TODO(https://crbug.com/1491092): This test can be deleted once we no longer +// TODO(crbug.com/40284947): This test can be deleted once we no longer // need the multi-proxy chain version below, since this functionality should // be sufficiently tested elsewhere. For now this test just shows that // single-proxy and multi-proxy behavior is consistent (when a read returns @@ -7280,7 +7280,7 @@ // Test that the first proxy server in a multi-proxy chain requesting a client // auth cert doesn't cause a crash. -// TODO(https://crbug.com/1491092): Support client auth certificates for +// TODO(crbug.com/40284947): Support client auth certificates for // multi-proxy chains and then replace this test with a more robust one (for // instance, a version of the AuthEverywhere test that uses a multi-proxy // chain). @@ -7355,7 +7355,7 @@ // Same as above but using a different method to request the client auth // certificate. -// TODO(https://crbug.com/1491092): Support client auth certificates for +// TODO(crbug.com/40284947): Support client auth certificates for // multi-proxy chains and then replace this test with a more robust one (for // instance, a version of the AuthEverywhere test that uses a multi-proxy // chain). @@ -7416,7 +7416,7 @@ // Test that a read returning ERR_SSL_CLIENT_AUTH_CERT_NEEDED after the first // CONNECT doesn't result in a crash when a multi-proxy chain is in use. -// TODO(https://crbug.com/1491092): Support client auth certificates for +// TODO(crbug.com/40284947): Support client auth certificates for // multi-proxy chains and then replace this test with a more robust one (for // instance, a version of the AuthEverywhere test that uses a multi-proxy // chain). @@ -7516,7 +7516,7 @@ // Test that the second proxy server in a multi-proxy chain requesting a client // auth cert doesn't cause a crash. -// TODO(https://crbug.com/1491092): Support client auth certificates for +// TODO(crbug.com/40284947): Support client auth certificates for // multi-proxy chains and then replace this test with a more robust one (for // instance, a version of the AuthEverywhere test that uses a multi-proxy // chain). @@ -7602,7 +7602,7 @@ // Test that the endpoint requesting a client auth cert over a multi-proxy chain // tunnel doesn't cause a crash. -// TODO(https://crbug.com/1491092): Support client auth certificates for +// TODO(crbug.com/40284947): Support client auth certificates for // multi-proxy chains and then replace this test with a more robust one (for // instance, a version of the AuthEverywhere test that uses a multi-proxy // chain).
diff --git a/net/http/http_proxy_connect_job.cc b/net/http/http_proxy_connect_job.cc index 3f9d2a02..d82e78e 100644 --- a/net/http/http_proxy_connect_job.cc +++ b/net/http/http_proxy_connect_job.cc
@@ -540,7 +540,7 @@ // cert request info won't have been set up for the parent // HttpProxyConnectJob to use it in this method. Fail gracefully when // this case is encountered. - // TODO(https://crbug.com/1491092): Investigate whether changes are + // TODO(crbug.com/40284947): Investigate whether changes are // needed to support making the SSL cert request info available here in // the case described above. Just returning `result` here makes the // behavior for multi-proxy chains match that of single-proxy chains
diff --git a/net/http/http_request_info.h b/net/http/http_request_info.h index 8ec196e..973bda5 100644 --- a/net/http/http_request_info.h +++ b/net/http/http_request_info.h
@@ -93,7 +93,7 @@ // This may the top frame origin associated with a request, or it may be the // top frame site. Or it may be nullptr. Only used for histograms. // - // TODO(https://crbug.com/1136054): Investigate migrating the one consumer of + // TODO(crbug.com/40724003): Investigate migrating the one consumer of // this to NetworkIsolationKey::TopFrameSite(). That gives more consistent /// behavior, and may still provide useful metrics. std::optional<url::Origin> possibly_top_frame_origin;
diff --git a/net/http/http_response_headers.cc b/net/http/http_response_headers.cc index ae67d38..1cca976 100644 --- a/net/http/http_response_headers.cc +++ b/net/http/http_response_headers.cc
@@ -608,7 +608,7 @@ void HttpResponseHeaders::Parse(const std::string& raw_input) { raw_headers_.reserve(raw_input.size()); - // TODO(https://crbug.com/1470137): Call reserve() on `parsed_` with an + // TODO(crbug.com/40277776): Call reserve() on `parsed_` with an // appropriate value. // ParseStatusLine adds a normalized status line to raw_headers_
diff --git a/net/http/http_stream_factory_job_controller.cc b/net/http/http_stream_factory_job_controller.cc index 14508ee..e66bcc9 100644 --- a/net/http/http_stream_factory_job_controller.cc +++ b/net/http/http_stream_factory_job_controller.cc
@@ -83,7 +83,7 @@ ProxyServer::Scheme proxy_scheme = ProxyServer::Scheme::SCHEME_INVALID; if (!proxy_info.is_empty() && !proxy_info.is_direct()) { if (proxy_info.proxy_chain().is_multi_proxy()) { - // TODO(https://crbug.com/1491092): Update this histogram to have a new + // TODO(crbug.com/40284947): Update this histogram to have a new // bucket for multi-chain proxies. Until then, don't influence the // existing metric counts which have historically been only for single-hop // proxies. @@ -1390,7 +1390,8 @@ return ALTERNATE_PROTOCOL_USAGE_DNS_ALPN_H3_JOB_WON_RACE; } } - // TODO(crbug.com/1345536): Implement better logic to support uncovered cases. + // TODO(crbug.com/40232167): Implement better logic to support uncovered + // cases. return ALTERNATE_PROTOCOL_USAGE_UNSPECIFIED_REASON; } @@ -1410,7 +1411,7 @@ } // Clear client certificates for all proxies in the chain. - // TODO(https://crbug.com/1491092): client certificates for multi-proxy + // TODO(crbug.com/40284947): client certificates for multi-proxy // chains are not yet supported, and this is only tested with single-proxy // chains. for (auto& proxy_server : proxy_info_.proxy_chain().proxy_servers()) {
diff --git a/net/http/http_stream_factory_job_controller_unittest.cc b/net/http/http_stream_factory_job_controller_unittest.cc index 801900dc..2ec4bcf 100644 --- a/net/http/http_stream_factory_job_controller_unittest.cc +++ b/net/http/http_stream_factory_job_controller_unittest.cc
@@ -3478,7 +3478,7 @@ EXPECT_FALSE(job_controller_->alternative_job()); } -// TODO(https://crbug.com/1007502): Disabled because the pending task count does +// TODO(crbug.com/40649375): Disabled because the pending task count does // not match expectations. TEST_P(HttpStreamFactoryJobControllerTest, DISABLED_ResumeMainJobImmediatelyOnStreamFailed) {
diff --git a/net/http/http_transaction.h b/net/http/http_transaction.h index 830f7d4c..720cea1 100644 --- a/net/http/http_transaction.h +++ b/net/http/http_transaction.h
@@ -65,10 +65,10 @@ // Starts the HTTP transaction (i.e., sends the HTTP request). // - // TODO(crbug.com/723786) The consumer should ensure that request_info points - // to a valid value till final response headers are received; after that - // point, the HttpTransaction will not access |*request_info| and it may be - // deleted. + // TODO(crbug.com/40521353) The consumer should ensure that request_info + // points to a valid value till final response headers are received; after + // that point, the HttpTransaction will not access |*request_info| and it may + // be deleted. // // Returns OK if the transaction could be started synchronously, which means // that the request was served from the cache. ERR_IO_PENDING is returned to
diff --git a/net/http/http_util.h b/net/http/http_util.h index cd011e5c..9a584b4 100644 --- a/net/http/http_util.h +++ b/net/http/http_util.h
@@ -201,7 +201,7 @@ // within the headers themselves, it will be stripped. This is a workaround to // avoid later code from incorrectly interpreting it as a line terminator. // - // TODO(crbug.com/671799): Should remove or internalize this to + // TODO(crbug.com/40496844): Should remove or internalize this to // HttpResponseHeaders. static std::string AssembleRawHeaders(std::string_view buf);
diff --git a/net/http/transport_security_state_static.pins b/net/http/transport_security_state_static.pins index 52531f8..d9f7422 100644 --- a/net/http/transport_security_state_static.pins +++ b/net/http/transport_security_state_static.pins
@@ -43,9 +43,9 @@ # hash function for preloaded entries again (we have already done so once). # -# Last updated: 2024-04-19 12:55 UTC +# Last updated: 2024-04-20 12:55 UTC PinsListTimestamp -1713531344 +1713617711 TestSPKI sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
diff --git a/net/http/transport_security_state_static_pins.json b/net/http/transport_security_state_static_pins.json index a0f4f19..dfdde0e 100644 --- a/net/http/transport_security_state_static_pins.json +++ b/net/http/transport_security_state_static_pins.json
@@ -31,7 +31,7 @@ // the 'static_spki_hashes' and 'bad_static_spki_hashes' fields in 'pinsets' // refer to, and the timestamp at which the pins list was last updated. // -// Last updated: 2024-04-19 12:55 UTC +// Last updated: 2024-04-20 12:55 UTC // { "pinsets": [
diff --git a/net/network_error_logging/network_error_logging_service.cc b/net/network_error_logging/network_error_logging_service.cc index e546c1a..5686ce1 100644 --- a/net/network_error_logging/network_error_logging_service.cc +++ b/net/network_error_logging/network_error_logging_service.cc
@@ -686,7 +686,7 @@ store_->AddNelPolicy(policy); auto iter_and_result = policies_.emplace(policy.key, std::move(policy)); - // TODO(crbug.com/1326282): Change this to a DCHECK when we're sure the bug + // TODO(crbug.com/40225752): Change this to a DCHECK when we're sure the bug // is fixed. CHECK(iter_and_result.second);
diff --git a/net/proxy_resolution/proxy_list.h b/net/proxy_resolution/proxy_list.h index d7db976..db427c8 100644 --- a/net/proxy_resolution/proxy_list.h +++ b/net/proxy_resolution/proxy_list.h
@@ -100,7 +100,7 @@ // Returns a semicolon-separated list of proxy chain debug representations. // For single-proxy chains, this is just the PAC representation of the proxy; // otherwise the chain is displayed in "[..]". - // TODO(https://crbug.com/1491092): Once a PAC string format for multi-proxy + // TODO(crbug.com/40284947): Once a PAC string format for multi-proxy // chains is implemented, this can be removed in favor of `ToPacString()`. std::string ToDebugString() const;
diff --git a/net/quic/quic_proxy_client_socket_unittest.cc b/net/quic/quic_proxy_client_socket_unittest.cc index 423fd67..5d41159f 100644 --- a/net/quic/quic_proxy_client_socket_unittest.cc +++ b/net/quic/quic_proxy_client_socket_unittest.cc
@@ -192,7 +192,7 @@ } TEST_P(QuicProxyClientSocketTest, ProxyDelegateExtraHeaders) { - // TODO(https://crbug.com/1491092): Add a version of this test for multi-hop. + // TODO(crbug.com/40284947): Add a version of this test for multi-hop. proxy_delegate_ = std::make_unique<TestProxyDelegate>(); proxy_delegate_->set_extra_header_name(kTestHeaderName); // TODO(crbug.com/1206799) Construct `proxy_chain` with plain
diff --git a/net/reporting/reporting_cache_impl.cc b/net/reporting/reporting_cache_impl.cc index 064616a..7674b78 100644 --- a/net/reporting/reporting_cache_impl.cc +++ b/net/reporting/reporting_cache_impl.cc
@@ -410,7 +410,7 @@ // Compute the total endpoint count for this origin. We can't just count the // number of endpoints per group because there may be duplicate endpoint URLs, // which we ignore. See http://crbug.com/983000 for discussion. - // TODO(crbug.com/983000): Allow duplicate endpoint URLs. + // TODO(crbug.com/40635629): Allow duplicate endpoint URLs. for (const auto& group_key_and_endpoint_set : endpoints_per_group) { new_client.endpoint_count += group_key_and_endpoint_set.second.size();
diff --git a/net/socket/connect_job.h b/net/socket/connect_job.h index 32cf820..2c9c6e8f 100644 --- a/net/socket/connect_job.h +++ b/net/socket/connect_job.h
@@ -60,7 +60,7 @@ // ConnectJobs that wrap other ConnectJobs typically have different values for // those. struct NET_EXPORT_PRIVATE CommonConnectJobParams { - // TODO(https://crbug.com/1505765): Look into passing in HttpNetworkSession + // TODO(crbug.com/40946406): Look into passing in HttpNetworkSession // instead. CommonConnectJobParams( ClientSocketFactory* client_socket_factory,
diff --git a/net/socket/socket_bio_adapter_unittest.cc b/net/socket/socket_bio_adapter_unittest.cc index 7fabbe6c..8f28e5e 100644 --- a/net/socket/socket_bio_adapter_unittest.cc +++ b/net/socket/socket_bio_adapter_unittest.cc
@@ -286,7 +286,7 @@ #if BUILDFLAG(IS_ANDROID) // Test that asynchronous EOF is mapped to ERR_CONNECTION_CLOSED. -// TODO(crbug.com/1480024): Test is flaky on Android. +// TODO(crbug.com/40281159): Test is flaky on Android. #define MAYBE_ReadEOFAsync DISABLED_ReadEOFAsync #else #define MAYBE_ReadEOFAsync ReadEOFAsync
diff --git a/net/socket/udp_socket_posix.cc b/net/socket/udp_socket_posix.cc index 828c0fbf..e50bde49 100644 --- a/net/socket/udp_socket_posix.cc +++ b/net/socket/udp_socket_posix.cc
@@ -754,7 +754,7 @@ } } -// TODO(crbug.com/1491628): Because InternalRecvFromConnectedSocket() uses +// TODO(crbug.com/40285166): Because InternalRecvFromConnectedSocket() uses // recvfrom() instead of recvmsg(), it cannot report received ECN marks for // QUIC ACK-ECN frames. It might be time to deprecate // experimental_recv_optimization_enabled_ if that experiment has run its
diff --git a/net/socket/udp_socket_unittest.cc b/net/socket/udp_socket_unittest.cc index db2d7cd8..bcff822 100644 --- a/net/socket/udp_socket_unittest.cc +++ b/net/socket/udp_socket_unittest.cc
@@ -760,8 +760,8 @@ socket.Close(); } -// TODO(https://crbug.com/947115): failing on device on iOS 12.2. -// TODO(https://crbug.com/1227554): flaky on Mac 11. +// TODO(crbug.com/40620614): failing on device on iOS 12.2. +// TODO(crbug.com/40189274): flaky on Mac 11. #if BUILDFLAG(IS_IOS) || BUILDFLAG(IS_MAC) #define MAYBE_SharedMulticastAddress DISABLED_SharedMulticastAddress #else
diff --git a/net/test/test_doh_server.cc b/net/test/test_doh_server.cc index c9f215c..1fcc217 100644 --- a/net/test/test_doh_server.cc +++ b/net/test/test_doh_server.cc
@@ -216,7 +216,7 @@ // For now, this server does not support configuring additional records. When // testing more complex HTTPS record cases, this will need to be extended. // - // TODO(crbug.com/1251204): Add SOA records to test the default TTL. + // TODO(crbug.com/40198298): Add SOA records to test the default TTL. DnsResponse response(dns_query.id(), /*is_authoritative=*/true, /*answers=*/answers, /*authority_records=*/{}, /*additional_records=*/{}, dns_query);
diff --git a/net/tools/quic/quic_simple_client_bin.cc b/net/tools/quic/quic_simple_client_bin.cc index 519d2ec..6e6c6998 100644 --- a/net/tools/quic/quic_simple_client_bin.cc +++ b/net/tools/quic/quic_simple_client_bin.cc
@@ -71,7 +71,7 @@ quic::QuicIpAddress ip_addr; if (!ip_addr.FromString(host_for_lookup)) { net::AddressList addresses; - // TODO(https://crbug.com/1300660) Let the caller pass in the scheme + // TODO(crbug.com/40216365) Let the caller pass in the scheme // rather than guessing "https" int rv = net::SynchronousHostResolver::Resolve( url::SchemeHostPort(url::kHttpsScheme, host_for_lookup, port),
diff --git a/net/url_request/http_with_dns_over_https_unittest.cc b/net/url_request/http_with_dns_over_https_unittest.cc index 790aa0e..3a239b2 100644 --- a/net/url_request/http_with_dns_over_https_unittest.cc +++ b/net/url_request/http_with_dns_over_https_unittest.cc
@@ -140,7 +140,7 @@ URLRequestContext* context() { return request_context_.get(); } void ResetContext(SecureDnsMode mode = SecureDnsMode::kSecure) { - // TODO(crbug.com/1252155): Simplify this. + // TODO(crbug.com/40198637): Simplify this. HostResolver::ManagerOptions manager_options; // Without a DnsConfig, HostResolverManager will not use DoH, even in // kSecure mode. See https://crbug.com/1251715. However,
diff --git a/net/websockets/websocket_end_to_end_test.cc b/net/websockets/websocket_end_to_end_test.cc index 0f8ae9c..e190e6ab 100644 --- a/net/websockets/websocket_end_to_end_test.cc +++ b/net/websockets/websocket_end_to_end_test.cc
@@ -402,7 +402,7 @@ ProxyConfig proxy_config; proxy_config.proxy_rules().ParseFromString( "https=" + proxy_server.host_port_pair().ToString()); - // TODO(https://crbug.com/901896): Don't rely on proxying localhost. + // TODO(crbug.com/40600992): Don't rely on proxying localhost. proxy_config.proxy_rules().bypass_rules.AddRulesToSubtractImplicit(); std::unique_ptr<ProxyResolutionService> proxy_resolution_service( @@ -429,7 +429,7 @@ ProxyConfig proxy_config; proxy_config.proxy_rules().ParseFromString( "https=" + proxy_server.host_port_pair().ToString()); - // TODO(https://crbug.com/901896): Don't rely on proxying localhost. + // TODO(crbug.com/40600992): Don't rely on proxying localhost. proxy_config.proxy_rules().bypass_rules.AddRulesToSubtractImplicit(); std::unique_ptr<ProxyResolutionService> proxy_resolution_service( @@ -458,7 +458,7 @@ proxy_config.proxy_rules().ParseFromString( "https=" + proxy_server.host_port_pair().ToString() + ";" + "http=" + proxy_server.host_port_pair().ToString()); - // TODO(https://crbug.com/901896): Don't rely on proxying localhost. + // TODO(crbug.com/40600992): Don't rely on proxying localhost. proxy_config.proxy_rules().bypass_rules.AddRulesToSubtractImplicit(); std::unique_ptr<ProxyResolutionService> proxy_resolution_service(
diff --git a/pdf/README.md b/pdf/README.md index d42550ad..0f33f57 100644 --- a/pdf/README.md +++ b/pdf/README.md
@@ -6,4 +6,4 @@ live in `//components/pdf`, or in the embedder. All the code here should run in sandboxed child processes. -TODO(crbug.com/1220865): Remove existing `//content` dependencies. +TODO(crbug.com/40186598): Remove existing `//content` dependencies.
diff --git a/pdf/loader/url_loader.cc b/pdf/loader/url_loader.cc index e18f0806..becb7cb 100644 --- a/pdf/loader/url_loader.cc +++ b/pdf/loader/url_loader.cc
@@ -133,7 +133,7 @@ blink_request.SetRequestDestination( network::mojom::RequestDestination::kEmbed); - // TODO(crbug.com/822081): Revisit whether we need universal access. + // TODO(crbug.com/40567141): Revisit whether we need universal access. blink::WebAssociatedURLLoaderOptions options; options.grant_universal_access = true; ignore_redirects_ = request.ignore_redirects;
diff --git a/pdf/paint_manager.cc b/pdf/paint_manager.cc index 0327a8d..f5e3da45 100644 --- a/pdf/paint_manager.cc +++ b/pdf/paint_manager.cc
@@ -217,7 +217,7 @@ SkImageInfo::MakeN32Premul(new_size.width(), new_size.height())); DCHECK(surface_); - // TODO(crbug.com/1317832): Can we guarantee repainting some other way? + // TODO(crbug.com/40222665): Can we guarantee repainting some other way? client_->InvalidatePluginContainer(); device_scale_ = 1.0f; @@ -305,7 +305,7 @@ SkSamplingOptions(), /*paint=*/nullptr); client_->UpdateSnapshot(std::move(snapshot)); - // TODO(crbug.com/1403311): Complete flush synchronously. + // TODO(crbug.com/40251507): Complete flush synchronously. base::SequencedTaskRunner::GetCurrentDefault()->PostTask( FROM_HERE, base::BindOnce(&PaintManager::OnFlushComplete, weak_factory_.GetWeakPtr()));
diff --git a/pdf/pdf_view_web_plugin.h b/pdf/pdf_view_web_plugin.h index 785c410..d40422c 100644 --- a/pdf/pdf_view_web_plugin.h +++ b/pdf/pdf_view_web_plugin.h
@@ -562,7 +562,7 @@ // Callback to print without re-entrancy issues. The callback prevents the // invocation of printing in the middle of an event handler, which is risky; // see crbug.com/66334. - // TODO(crbug.com/1217012): Re-evaluate the need for a callback when parts of + // TODO(crbug.com/40185029): Re-evaluate the need for a callback when parts of // the plugin are moved off the main thread. void OnInvokePrintDialog();
diff --git a/services/accessibility/fake_service_client.cc b/services/accessibility/fake_service_client.cc index b57e572..2b1ba06 100644 --- a/services/accessibility/fake_service_client.cc +++ b/services/accessibility/fake_service_client.cc
@@ -115,7 +115,7 @@ void FakeServiceClient::Load(const base::FilePath& path, LoadCallback callback) { - // TODO(crbug.com/1493546): Implement file loading for + // TODO(crbug.com/40936729): Implement file loading for // FakeAccessibilityServiceClient. }
diff --git a/services/data_decoder/public/mojom/image_decoder.mojom b/services/data_decoder/public/mojom/image_decoder.mojom index 4e2cb53..5ac30e6 100644 --- a/services/data_decoder/public/mojom/image_decoder.mojom +++ b/services/data_decoder/public/mojom/image_decoder.mojom
@@ -16,7 +16,7 @@ }; struct AnimationFrame { - // TODO(https://crbug.com/838706): Cnonsider replacing individual Bitmap + // TODO(crbug.com/40574433): Cnonsider replacing individual Bitmap // structs with a new type that uses a single BigBuffer for all frame data. skia.mojom.InlineBitmap bitmap; mojo_base.mojom.TimeDelta duration;
diff --git a/services/device/serial/serial_device_enumerator_win.cc b/services/device/serial/serial_device_enumerator_win.cc index 5326f54..a5c7dc3f 100644 --- a/services/device/serial/serial_device_enumerator_win.cc +++ b/services/device/serial/serial_device_enumerator_win.cc
@@ -332,7 +332,7 @@ info->path = path; info->device_instance_id = *instance_id; - // TODO(https://crbug.com/1015074): While the "bus reported device + // TODO(crbug.com/40653536): While the "bus reported device // description" is usually the USB product string this is still up to the // individual serial driver and could be equal to the "friendly name". It // would be more reliable to read the real USB strings here.
diff --git a/services/device/test/usb_test_gadget_impl.cc b/services/device/test/usb_test_gadget_impl.cc index b3da77b6..bc17151 100644 --- a/services/device/test/usb_test_gadget_impl.cc +++ b/services/device/test/usb_test_gadget_impl.cc
@@ -196,7 +196,7 @@ class UsbGadgetFactory : public UsbService::Observer { public: - // TODO(crbug.com/1010491): Remove `io_task_runner` parameter. + // TODO(crbug.com/40101494): Remove `io_task_runner` parameter. UsbGadgetFactory(UsbService* usb_service, scoped_refptr<base::SingleThreadTaskRunner> io_task_runner) : usb_service_(usb_service),
diff --git a/services/metrics/public/cpp/ukm_entry_builder_base.h b/services/metrics/public/cpp/ukm_entry_builder_base.h index 8e2cd13..b18f129 100644 --- a/services/metrics/public/cpp/ukm_entry_builder_base.h +++ b/services/metrics/public/cpp/ukm_entry_builder_base.h
@@ -34,7 +34,7 @@ protected: UkmEntryBuilderBase(ukm::SourceIdObj source_id, uint64_t event_hash); - // TODO(crbug/873866): Remove this version once callers are migrated. + // TODO(crbug.com/40589246): Remove this version once callers are migrated. UkmEntryBuilderBase(SourceId source_id, uint64_t event_hash); // Add metric to the entry. A metric contains a metric hash and value.
diff --git a/services/metrics/public/cpp/ukm_source.h b/services/metrics/public/cpp/ukm_source.h index d464fab..a321df2 100644 --- a/services/metrics/public/cpp/ukm_source.h +++ b/services/metrics/public/cpp/ukm_source.h
@@ -49,7 +49,7 @@ // - For navigation sources, this will only contain at most two elements, // one for the first URL in the redirect chain and one for the final URL // that committed. - // TODO(crbug.com/869123): This may end up containing all the URLs in the + // TODO(crbug.com/40587196): This may end up containing all the URLs in the // redirect chain for navigation sources. std::vector<GURL> urls;
diff --git a/services/metrics/public/cpp/ukm_source_id.cc b/services/metrics/public/cpp/ukm_source_id.cc index b693d582..28920a5d 100644 --- a/services/metrics/public/cpp/ukm_source_id.cc +++ b/services/metrics/public/cpp/ukm_source_id.cc
@@ -72,7 +72,7 @@ // DCHECK is to restrict the usage of WEBAPK_ID, PAYMENT_APP_ID, and // WEB_IDENTITY_ID. These should use the specific // |UkmRecorder::GetSourceIdFor*() methods instead. - // TODO(crbug.com/1046964): Ideally we should restrict + // TODO(crbug.com/40671101): Ideally we should restrict // SourceIdObj::FromOtherId() as well. DCHECK(id_type != SourceIdType::WEBAPK_ID); DCHECK(id_type != SourceIdType::PAYMENT_APP_ID);
diff --git a/services/metrics/public/cpp/ukm_source_id.h b/services/metrics/public/cpp/ukm_source_id.h index 91f18ea..101f739 100644 --- a/services/metrics/public/cpp/ukm_source_id.h +++ b/services/metrics/public/cpp/ukm_source_id.h
@@ -24,8 +24,8 @@ // NOTES ON USAGE: if only the underlying int value is required to identify a // Source and is used in Mojo interface, and no type conversion needs to be // performed, use ukm::SourceId instead. -// TODO(crbug/1046951): migrate callers to use the public methods below then -// remove METRICS_EXPORT on this class. +// TODO(crbug.com/40671096): migrate callers to use the public methods below +// then remove METRICS_EXPORT on this class. class METRICS_EXPORT SourceIdObj { public: enum class Type : SourceId {
diff --git a/services/network/brokered_tcp_client_socket.cc b/services/network/brokered_tcp_client_socket.cc index 5f4b78f9..704a52c9 100644 --- a/services/network/brokered_tcp_client_socket.cc +++ b/services/network/brokered_tcp_client_socket.cc
@@ -93,7 +93,7 @@ net_log_source_.BeginEvent(net::NetLogEventType::BROKERED_CREATE_SOCKET); - // TODO(https://crbug.com/1321274): Pass in AddressFamily of single IPEndPoint + // TODO(crbug.com/40223835): Pass in AddressFamily of single IPEndPoint client_socket_factory_->BrokerCreateTcpSocket( addresses_.begin()->GetFamily(), base::BindOnce(&BrokeredTcpClientSocket::DidCompleteCreate,
diff --git a/services/network/cookie_manager.cc b/services/network/cookie_manager.cc index c251939..60cd3989 100644 --- a/services/network/cookie_manager.cc +++ b/services/network/cookie_manager.cc
@@ -219,13 +219,13 @@ base::Unretained(listener_registration.get())); if (name) { - // TODO(https://crbug.com/1225444): Include the correct cookie partition + // TODO(crbug.com/40188414): Include the correct cookie partition // key when attaching cookie change listeners to service workers. listener_registration->subscription = cookie_store_->GetChangeDispatcher().AddCallbackForCookie( url, *name, std::nullopt, std::move(cookie_change_callback)); } else { - // TODO(https://crbug.com/1225444): Include the correct cookie partition + // TODO(crbug.com/40188414): Include the correct cookie partition // key when attaching cookie change listeners to service workers. listener_registration->subscription = cookie_store_->GetChangeDispatcher().AddCallbackForUrl(
diff --git a/services/network/cookie_manager_unittest.cc b/services/network/cookie_manager_unittest.cc index cea37e0..c82f26d 100644 --- a/services/network/cookie_manager_unittest.cc +++ b/services/network/cookie_manager_unittest.cc
@@ -123,7 +123,7 @@ return net::cookie_util::StripAccessResults(std::get<0>(future.Take())); } - // TODO(crbug.com/1225444): CookieManager should be able to see which cookies + // TODO(crbug.com/40188414): CookieManager should be able to see which cookies // are excluded because their partition key is not contained in the // key collection. net::CookieAccessResultList GetExcludedCookieList(
diff --git a/services/network/cors/cors_url_loader.cc b/services/network/cors/cors_url_loader.cc index 097ed0d..00a406f 100644 --- a/services/network/cors/cors_url_loader.cc +++ b/services/network/cors/cors_url_loader.cc
@@ -910,7 +910,7 @@ if (needs_preflight.has_value() && *needs_preflight == PreflightRequiredReason::kPrivateNetworkAccess) { - // TODO(https://crbug.com/1338439): Create a base function and clean up all + // TODO(crbug.com/40229602): Create a base function and clean up all // need_pna_permission check in the code base. const mojom::ClientSecurityState* state = GetClientSecurityState(); const bool needs_pna_permission =
diff --git a/services/network/cors/cors_url_loader.h b/services/network/cors/cors_url_loader.h index e554687..5651ec5 100644 --- a/services/network/cors/cors_url_loader.h +++ b/services/network/cors/cors_url_loader.h
@@ -192,7 +192,7 @@ // This is used to soft-launch Private Network Access preflights: we send // preflights but do not require them to succeed. // - // TODO(https://crbug.com/1268378): Remove this once preflight enforcement + // TODO(crbug.com/40204695): Remove this once preflight enforcement // is enabled. bool ShouldIgnorePrivateNetworkAccessErrors( mojom::IPAddressSpace target_address_space) const; @@ -202,7 +202,7 @@ // This is used to soft-launch Private Network Access preflights: we send // preflights but do not require them to succeed. // - // TODO(https://crbug.com/1268378): Remove this once preflight enforcement + // TODO(crbug.com/40204695): Remove this once preflight enforcement // is enabled. PrivateNetworkAccessPreflightBehavior GetPrivateNetworkAccessPreflightBehavior( @@ -339,7 +339,7 @@ // INVARIANT: if this is true, then // `ShouldIgnorePrivateNetworkAccessErrors()` is also true. // - // TODO(https://crbug.com/1268378): Remove this along with + // TODO(crbug.com/40204695): Remove this along with // `ShouldIgnorePrivateNetworkAccessErrors()`. bool sending_pna_only_warning_preflight_ = false;
diff --git a/services/network/cors/cors_url_loader_factory.cc b/services/network/cors/cors_url_loader_factory.cc index aa8dbd82..fca7b0a 100644 --- a/services/network/cors/cors_url_loader_factory.cc +++ b/services/network/cors/cors_url_loader_factory.cc
@@ -747,7 +747,7 @@ // Check only when `disable_web_security_` is false because // PreflightControllerTest use CorsURLLoaderFactory with this flag true // instead of network::URLLoaderFactory. - // TODO(https://crbug.com/1264298): consider if we can remove this exemption. + // TODO(crbug.com/40203308): consider if we can remove this exemption. if (!disable_web_security_) { // `net_log_create_info` field is expected to be used within network // service.
diff --git a/services/network/cors/cors_url_loader_private_network_access_unittest.cc b/services/network/cors/cors_url_loader_private_network_access_unittest.cc index e789538..413b54f3 100644 --- a/services/network/cors/cors_url_loader_private_network_access_unittest.cc +++ b/services/network/cors/cors_url_loader_private_network_access_unittest.cc
@@ -850,7 +850,7 @@ // Network Access. The `*PolicyWarnPreflight*` variants test what happens when // a preflight was attempted before noticing the private network access. // -// TODO(https://crbug.com/1268378): Remove these tests once the policy is never +// TODO(crbug.com/40204695): Remove these tests once the policy is never // set to `kPreflightWarn` anymore. // This test verifies that when:
diff --git a/services/network/cors/preflight_controller.cc b/services/network/cors/preflight_controller.cc index 7ff19af..a460ec2 100644 --- a/services/network/cors/preflight_controller.cc +++ b/services/network/cors/preflight_controller.cc
@@ -529,7 +529,7 @@ // Avoid overwriting if `CheckPreflightResult()` succeeds, just in case // there was a PNA warning in `detected_error_status`. - // TODO(https://crbug.com/1268378): Simplify this by always overwriting + // TODO(crbug.com/40204695): Simplify this by always overwriting // `detected_error_status` once preflights are always enforced. if (check_error_status.has_value()) { net_error = net::ERR_FAILED;
diff --git a/services/network/cors/preflight_controller.h b/services/network/cors/preflight_controller.h index 95e2d52..5a9a2b2 100644 --- a/services/network/cors/preflight_controller.h +++ b/services/network/cors/preflight_controller.h
@@ -45,7 +45,7 @@ // Dictates how the PreflightController should treat PNA preflights. // -// TODO(https://crbug.com/1268378): Remove this once enforcement is always on. +// TODO(crbug.com/40204695): Remove this once enforcement is always on. enum class PrivateNetworkAccessPreflightBehavior { // Enforce the presence of PNA headers for PNA preflights. kEnforce, @@ -85,7 +85,7 @@ // `net::ERR_FAILED` nor `net::OK`. // If `net_error` is `net::OK`, then `cors_error_status` may be non-nullopt to // indicate a warning-only error arose due to Private Network Access. - // TODO(https://crbug.com/1268378): Once PNA preflights are always enforced, + // TODO(crbug.com/40204695): Once PNA preflights are always enforced, // stop populating `cors_error_status` when `net_error` is `net::OK`. // // `has_autorization_covered_by_wildcard` is true iff the request carries an @@ -101,7 +101,7 @@ using WithTrustedHeaderClient = base::StrongAlias<class WithTrustedHeaderClientTag, bool>; - // TODO(https://crbug.com/1268378): Remove this once enforcement is always on. + // TODO(crbug.com/40204695): Remove this once enforcement is always on. using EnforcePrivateNetworkAccessHeader = base::StrongAlias<class EnforcePrivateNetworkAccessHeaderTag, bool>;
diff --git a/services/network/cors/preflight_controller_unittest.cc b/services/network/cors/preflight_controller_unittest.cc index 37d382c..8bc0dff 100644 --- a/services/network/cors/preflight_controller_unittest.cc +++ b/services/network/cors/preflight_controller_unittest.cc
@@ -1092,7 +1092,7 @@ result0.error().cors_error); } -// TODO(https://crbug.com/1455123): Add test for private network access +// TODO(crbug.com/40272627): Add test for private network access // permission. } // namespace
diff --git a/services/network/network_context.cc b/services/network/network_context.cc index ffd9fe8..388f7b68 100644 --- a/services/network/network_context.cc +++ b/services/network/network_context.cc
@@ -607,7 +607,7 @@ app_status_listeners_.push_back( std::make_unique<NetworkContextApplicationStatusListener>()); #endif // BUILDFLAG(IS_ANDROID) - // TODO(crbug.com/1413922): Set `file_operations_factory` to support + // TODO(crbug.com/40255884): Set `file_operations_factory` to support // sandboxed network service on Android. shared_dictionary_manager_ = SharedDictionaryManager::CreateOnDisk( params_->file_paths->shared_dictionary_directory->path().Append(
diff --git a/services/network/network_context_unittest.cc b/services/network/network_context_unittest.cc index c5aa0f10..02c383a 100644 --- a/services/network/network_context_unittest.cc +++ b/services/network/network_context_unittest.cc
@@ -5801,7 +5801,7 @@ proxy_config_set[1].url = test_server.GetURL("/echo"); proxy_config_set[1].expected_proxy_chain = net::ProxyChain::Direct(); - // TODO(https://crbug.com/1491092): Add a test case for a proxy chain with + // TODO(crbug.com/40284947): Add a test case for a proxy chain with // more than one hop. for (const auto& proxy_data : proxy_config_set) {
diff --git a/services/network/network_service_proxy_delegate.cc b/services/network/network_service_proxy_delegate.cc index d7bc773..7decb36 100644 --- a/services/network/network_service_proxy_delegate.cc +++ b/services/network/network_service_proxy_delegate.cc
@@ -199,7 +199,7 @@ return false; } - // TODO(https://crbug.com/1491092): Support nested proxies. + // TODO(crbug.com/40284947): Support nested proxies. if (proxy_chain.is_single_proxy() && RulesContainsProxy(proxy_config_->rules, proxy_chain.First())) { return true;
diff --git a/services/network/p2p/socket_tcp.cc b/services/network/p2p/socket_tcp.cc index 966ed18..24f266ea 100644 --- a/services/network/p2p/socket_tcp.cc +++ b/services/network/p2p/socket_tcp.cc
@@ -252,7 +252,7 @@ std::vector<mojom::P2PReceivedPacketPtr> received_packets; received_packets.push_back(std::move(packet)); - // TODO(crbug.com/1376527): Batch multiple packets in the TCP case as well. + // TODO(crbug.com/40243224): Batch multiple packets in the TCP case as well. client_->DataReceived(std::move(received_packets)); delegate_->DumpPacket(data, true);
diff --git a/services/network/proxy_lookup_request.cc b/services/network/proxy_lookup_request.cc index 7edc46f0..100e092 100644 --- a/services/network/proxy_lookup_request.cc +++ b/services/network/proxy_lookup_request.cc
@@ -41,7 +41,7 @@ base::BindOnce(&ProxyLookupRequest::DestroySelf, base::Unretained(this))); // TODO(mmenke): The NetLogWithSource() means nothing is logged. Fix that. // - // TODO(https://crbug.com/1023435): Pass along a NetworkAnonymizationKey. + // TODO(crbug.com/40107017): Pass along a NetworkAnonymizationKey. int result = network_context_->url_request_context() ->proxy_resolution_service()
diff --git a/services/network/proxy_resolving_client_socket_unittest.cc b/services/network/proxy_resolving_client_socket_unittest.cc index ee55e22..ba1b47d 100644 --- a/services/network/proxy_resolving_client_socket_unittest.cc +++ b/services/network/proxy_resolving_client_socket_unittest.cc
@@ -1068,7 +1068,7 @@ // Configure the HTTP CONNECT to fail with `mock_error`. // - // TODO(crbug.com/1279685): Test this more accurately. Errors like + // TODO(crbug.com/40810987): Test this more accurately. Errors like // `ERR_PROXY_CONNECTION_FAILED` or `ERR_PROXY_CERTIFICATE_INVALID` are // surfaced in response to other errors in TCP or TLS connection setup. static const char kHttpConnect[] =
diff --git a/services/network/public/cpp/cors/cors_fuzzer.cc b/services/network/public/cpp/cors/cors_fuzzer.cc index 56b091de..6d2a665 100644 --- a/services/network/public/cpp/cors/cors_fuzzer.cc +++ b/services/network/public/cpp/cors/cors_fuzzer.cc
@@ -7,7 +7,7 @@ #include <string> extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { - // TODO(crbug.com/1375854) Add corpus so generated data is higher quality. + // TODO(crbug.com/40242947) Add corpus so generated data is higher quality. const std::string test_data(reinterpret_cast<const char*>(data), size); network::cors::IsCorsSafelistedHeader("accept", test_data); network::cors::IsCorsSafelistedHeader("accept-language", test_data);
diff --git a/services/network/public/cpp/timing_allow_origin_parser.h b/services/network/public/cpp/timing_allow_origin_parser.h index a10bb5ed..582d3cb8 100644 --- a/services/network/public/cpp/timing_allow_origin_parser.h +++ b/services/network/public/cpp/timing_allow_origin_parser.h
@@ -25,7 +25,7 @@ // In an ideal world though, Blink would be able to use `URLResponseHead` as // well... // -// TODO(https://crbug.com/1199547): Use base::StringPiece here, though this +// TODO(crbug.com/40177882): Use base::StringPiece here, though this // requires fixing a lot of other plumbing. COMPONENT_EXPORT(NETWORK_CPP) mojom::TimingAllowOriginPtr ParseTimingAllowOrigin(const std::string& value);
diff --git a/services/network/public/mojom/attribution.mojom b/services/network/public/mojom/attribution.mojom index cc56bc4..e49b5df 100644 --- a/services/network/public/mojom/attribution.mojom +++ b/services/network/public/mojom/attribution.mojom
@@ -10,7 +10,7 @@ // must therefore be used when creating the report. struct TriggerVerification { string token; - // TODO(https://crbug.com/1240405): replace with `guid` once a type-mapping exists. + // TODO(crbug.com/40194244): replace with `guid` once a type-mapping exists. string aggregatable_report_id; };
diff --git a/services/network/public/mojom/cookie_manager.mojom b/services/network/public/mojom/cookie_manager.mojom index e42bab8..1eeaa30 100644 --- a/services/network/public/mojom/cookie_manager.mojom +++ b/services/network/public/mojom/cookie_manager.mojom
@@ -213,7 +213,7 @@ // Indicates reasons why a cookie may be excluded in a get or set // operation and if it should be warned about. -// TODO(crbug.com/1310444): Improve serialization validation comments. +// TODO(crbug.com/40219875): Improve serialization validation comments. struct CookieInclusionStatus { // Bitfield. Is defined in // net::CookieInclusionStatus::ExclusionReason.
diff --git a/services/network/public/mojom/cors.mojom b/services/network/public/mojom/cors.mojom index 831c13b..ad2a207d 100644 --- a/services/network/public/mojom/cors.mojom +++ b/services/network/public/mojom/cors.mojom
@@ -192,7 +192,7 @@ }; // Describes what happened wrt PNA preflights during a request. -// TODO(https://crbug.com/1268378): Remove this once preflights are enforced. +// TODO(crbug.com/40204695): Remove this once preflights are enforced. enum PrivateNetworkAccessPreflightResult { // No preflight was sent. kNone,
diff --git a/services/network/public/mojom/host_resolver.mojom b/services/network/public/mojom/host_resolver.mojom index 8d4ac75..d662d48 100644 --- a/services/network/public/mojom/host_resolver.mojom +++ b/services/network/public/mojom/host_resolver.mojom
@@ -261,7 +261,7 @@ // Enumeration for specifying the purpose of a host resolve request. // These values are used for UMA. Entries should not be reordered. Keep this // in sync with tools/metrics/histograms/enums.xml. - // TODO(crbug.com/1232623): Consider adding more values if kPreconnect isn't + // TODO(crbug.com/40191203): Consider adding more values if kPreconnect isn't // a majority of the purpose of host resolve requests. enum Purpose { kUnspecified,
diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom index 9694380..e899c9c 100644 --- a/services/network/public/mojom/network_context.mojom +++ b/services/network/public/mojom/network_context.mojom
@@ -574,7 +574,7 @@ pending_receiver<FirstPartySetsAccessDelegate>? first_party_sets_access_delegate_receiver; - // TODO(crbug.com/1228178): This flag is intended to be temporary and to be + // TODO(crbug.com/40777535): This flag is intended to be temporary and to be // removed (always enabled) in the future. bool acam_preflight_spec_conformant = true;
diff --git a/services/network/public/mojom/tcp_socket.mojom b/services/network/public/mojom/tcp_socket.mojom index 6539555..11089ef 100644 --- a/services/network/public/mojom/tcp_socket.mojom +++ b/services/network/public/mojom/tcp_socket.mojom
@@ -54,7 +54,7 @@ // |true| restricts incoming connections to IPv6 only; |false| allows both // IPv4/IPv6 connections. Leaving this value unset results in platform default // being applied (|true| on Windows, |false| on Posix). - // TODO(crbug.com/1428342): Investigate the possibility of replacing optional + // TODO(crbug.com/40262165): Investigate the possibility of replacing optional // with a platform-agnostic default. OptionalBool ipv6_only;
diff --git a/services/network/public/mojom/url_loader_completion_status.mojom b/services/network/public/mojom/url_loader_completion_status.mojom index c2613bf6..7d0294bb 100644 --- a/services/network/public/mojom/url_loader_completion_status.mojom +++ b/services/network/public/mojom/url_loader_completion_status.mojom
@@ -61,7 +61,7 @@ // This is used to record metrics in the client for compatibility risk // analysis and rollout monitoring. See https://crbug.com/1427470. // - // TODO(https://crbug.com/1268378): Remove this once preflights are enforced. + // TODO(crbug.com/40204695): Remove this once preflights are enforced. PrivateNetworkAccessPreflightResult private_network_access_preflight_result = PrivateNetworkAccessPreflightResult.kNone;
diff --git a/services/network/public/mojom/url_request.mojom b/services/network/public/mojom/url_request.mojom index 760593a..deb406e 100644 --- a/services/network/public/mojom/url_request.mojom +++ b/services/network/public/mojom/url_request.mojom
@@ -540,7 +540,7 @@ // Indicate the state of CompressionDictionaryTransport feature. When it is // true, `use-as-dictionary` response HTTP header may be processed. - // TODO(crbug.com/1413922): Remove this flag when we launch + // TODO(crbug.com/40255884): Remove this flag when we launch // CompressionDictionaryTransport feature. bool shared_dictionary_writer_enabled = false;
diff --git a/services/network/public/mojom/url_response_head.mojom b/services/network/public/mojom/url_response_head.mojom index 3155375..532905f 100644 --- a/services/network/public/mojom/url_response_head.mojom +++ b/services/network/public/mojom/url_response_head.mojom
@@ -301,7 +301,7 @@ // when the request failed without ever returning a `URLResponseHead` to the // loader client. // - // TODO(https://crbug.com/1268378): Remove this once preflights are enforced. + // TODO(crbug.com/40204695): Remove this once preflights are enforced. PrivateNetworkAccessPreflightResult private_network_access_preflight_result = PrivateNetworkAccessPreflightResult.kNone;
diff --git a/services/network/shared_dictionary/shared_dictionary_constants.h b/services/network/shared_dictionary/shared_dictionary_constants.h index 241128c..721245f 100644 --- a/services/network/shared_dictionary/shared_dictionary_constants.h +++ b/services/network/shared_dictionary/shared_dictionary_constants.h
@@ -15,7 +15,7 @@ // The max expiration time (30 days) for Origin Trial. This is used when // CompressionDictionaryTransport feature is disabled in the network service. -// TODO(crbug.com/1413922): Remove this after the Origin Trial experiment. +// TODO(crbug.com/40255884): Remove this after the Origin Trial experiment. constexpr base::TimeDelta kMaxExpirationForOriginTrial = base::Days(30); // The total dictionary count limit per NetworkContext.
diff --git a/services/network/shared_dictionary/shared_dictionary_manager_unittest.cc b/services/network/shared_dictionary/shared_dictionary_manager_unittest.cc index b7888c8..e9e7aa411 100644 --- a/services/network/shared_dictionary/shared_dictionary_manager_unittest.cc +++ b/services/network/shared_dictionary/shared_dictionary_manager_unittest.cc
@@ -702,7 +702,7 @@ writer->Finish(); if (GetManagerType() == TestManagerType::kOnDisk) { FlushCacheTasks(); - // TODO(crbug.com/1413922): Currently `id` is not supported by the disk + // TODO(crbug.com/40255884): Currently `id` is not supported by the disk // cache backend. continue; } @@ -792,8 +792,8 @@ writer->Finish(); if (GetManagerType() == TestManagerType::kOnDisk) { FlushCacheTasks(); - // TODO(crbug.com/1413922): Currently `match-dest` is not supported by the - // disk cache backend. + // TODO(crbug.com/40255884): Currently `match-dest` is not supported by + // the disk cache backend. continue; } std::vector<network::mojom::SharedDictionaryInfoPtr> result =
diff --git a/services/network/tcp_connected_socket.cc b/services/network/tcp_connected_socket.cc index aef7acb..92f1330 100644 --- a/services/network/tcp_connected_socket.cc +++ b/services/network/tcp_connected_socket.cc
@@ -125,7 +125,7 @@ DCHECK(!socket_); DCHECK(callback); - // TODO(https://crbug.com/1123197): Pass a non-null NetworkQualityEstimator. + // TODO(crbug.com/40146880): Pass a non-null NetworkQualityEstimator. net::NetworkQualityEstimator* network_quality_estimator = nullptr; std::unique_ptr<net::TransportClientSocket> socket =
diff --git a/services/network/test/test_dns_util.cc b/services/network/test/test_dns_util.cc index 3c77b66..00be20d9 100644 --- a/services/network/test/test_dns_util.cc +++ b/services/network/test/test_dns_util.cc
@@ -45,8 +45,8 @@ const std::optional<net::HostResolverEndpointResults>&> future; auto resolver = SimpleHostResolver::Create(network_context); - // TODO(crbug.com/1355169): Consider passing a SchemeHostPort to trigger HTTPS - // DNS resource record query. + // TODO(crbug.com/40235854): Consider passing a SchemeHostPort to trigger + // HTTPS DNS resource record query. resolver->ResolveHost( mojom::HostResolverHost::NewHostPortPair(host_port_pair), network_anonymization_key, std::move(params), future.GetCallback());
diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc index 46fc0cc..adaae93e 100644 --- a/services/network/url_loader.cc +++ b/services/network/url_loader.cc
@@ -1460,7 +1460,7 @@ coep_reporter_)) { CompleteBlockedResponse(net::ERR_BLOCKED_BY_RESPONSE, false, blocked_reason); - // TODO(https://crbug.com/1154250): Close the socket here. + // TODO(crbug.com/40054032): Close the socket here. // For more details see https://crbug.com/1154250#c17. // Item 2 discusses redirect handling. // @@ -2545,7 +2545,6 @@ return false; } - // This is gated by enable_reporting_raw_headers_ to be backwards compatible // with the old report_raw_headers behavior, where we wouldn't even send // raw_response_headers_ to the trusted browser process based devtools @@ -2554,7 +2553,7 @@ // Non-Authoritative-Reason, but raw_response_headers_ has something else // which doesn't include HSTS information. This is tested by // DevToolsTest.TestRawHeadersWithRedirectAndHSTS. - // TODO(crbug.com/1234823): Remove enable_reporting_raw_headers_ + // TODO(crbug.com/40781698): Remove enable_reporting_raw_headers_ const net::HttpResponseHeaders* response_headers = raw_response_headers_ && enable_reporting_raw_headers_ ? raw_response_headers_.get()
diff --git a/services/network/url_loader_unittest.cc b/services/network/url_loader_unittest.cc index 7c645ce4..c1d92024 100644 --- a/services/network/url_loader_unittest.cc +++ b/services/network/url_loader_unittest.cc
@@ -1455,7 +1455,7 @@ EXPECT_THAT( client()->completion_status().cors_error_status, Optional(CorsErrorStatus(mojom::CorsError::kInvalidPrivateNetworkAccess, - // TODO(https://crbug.com/1279376): Expect + // TODO(crbug.com/40208529): Expect // `kPublic` here instead, for better debugging. mojom::IPAddressSpace::kUnknown, mojom::IPAddressSpace::kLocal)));
diff --git a/services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc b/services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc index d362511b..9a2d5f6 100644 --- a/services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc +++ b/services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc
@@ -68,7 +68,7 @@ return base::saturated_cast<int32_t>( os_dump.platform_private_footprint->private_bytes / 1024); #else - // TODO(crbug.com/1506552): Implement for iOS. + // TODO(crbug.com/40947218): Implement for iOS. return 0; #endif }
diff --git a/services/service_manager/public/cpp/manifest.h b/services/service_manager/public/cpp/manifest.h index 8f62ca2..e81b371b 100644 --- a/services/service_manager/public/cpp/manifest.h +++ b/services/service_manager/public/cpp/manifest.h
@@ -152,7 +152,7 @@ // if |execution_mode| is |kOutOfProcessBuiltin| or // |kStandaloneExecutable|. // - // TODO(https://crbug.com/915806): Make this field a + // TODO(crbug.com/40606841): Make this field a // sandbox::mojom::Sandbox enum. std::string sandbox_type{"utility"}; };
diff --git a/services/tracing/public/cpp/perfetto/perfetto_tracing_backend.cc b/services/tracing/public/cpp/perfetto/perfetto_tracing_backend.cc index bb399bb0..e8dec7d 100644 --- a/services/tracing/public/cpp/perfetto/perfetto_tracing_backend.cc +++ b/services/tracing/public/cpp/perfetto/perfetto_tracing_backend.cc
@@ -37,7 +37,7 @@ namespace tracing { namespace { -// TODO(crbug.com/83907): Find a good compromise between performance and +// TODO(crbug.com/40574593): Find a good compromise between performance and // data granularity (mainly relevant to running with small buffer sizes // when we use background tracing) on Android. #if BUILDFLAG(IS_ANDROID)
diff --git a/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.h b/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.h index ecf137cb..843788d 100644 --- a/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.h +++ b/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.h
@@ -244,7 +244,7 @@ aux_unwinder_factory_; // To differentiate b/w different unwinders used for browser main // thread sampling. - // TODO(crbug.com/1377364): Remove once we have single unwinder for browser + // TODO(crbug.com/40243562): Remove once we have single unwinder for browser // main. UnwinderType unwinder_type_;
diff --git a/services/viz/privileged/mojom/gl/info_collection_gpu_service.mojom b/services/viz/privileged/mojom/gl/info_collection_gpu_service.mojom index 9fecdeb..b19e3a4 100644 --- a/services/viz/privileged/mojom/gl/info_collection_gpu_service.mojom +++ b/services/viz/privileged/mojom/gl/info_collection_gpu_service.mojom
@@ -13,7 +13,7 @@ // Returning whether DX12 are supported, and if yes, the supported feature // level, together with a few metrics related to the device's performance for // about:gpu and histogram recording purpose. - // TODO(crbug.com/1028263): histograms need to be recorded at browser process + // TODO(crbug.com/40109064): histograms need to be recorded at browser process // for now. [EnableIf=is_win] GetGpuSupportedDirectXVersionAndDevicePerfInfo()
diff --git a/services/viz/public/mojom/BUILD.gn b/services/viz/public/mojom/BUILD.gn index 950e28c..b5a960b 100644 --- a/services/viz/public/mojom/BUILD.gn +++ b/services/viz/public/mojom/BUILD.gn
@@ -632,6 +632,6 @@ }, ] - # TODO(crbug.com/1378708): Does this need to be public_deps vs. deps? + # TODO(crbug.com/40244048): Does this need to be public_deps vs. deps? public_deps = [ ":singleplanar_format" ] }
diff --git a/services/viz/public/mojom/compositing/internal/singleplanar_format.mojom b/services/viz/public/mojom/compositing/internal/singleplanar_format.mojom index f795853..9e38642 100644 --- a/services/viz/public/mojom/compositing/internal/singleplanar_format.mojom +++ b/services/viz/public/mojom/compositing/internal/singleplanar_format.mojom
@@ -29,7 +29,7 @@ // Legacy multiplanar formats (used before Multiplanar SharedImage was // introduced). - // TODO(crbug.com/1366495): Remove these once all clients are converted to + // TODO(crbug.com/40239769): Remove these once all clients are converted to // use MultiplanarSharedImage for this use case. YV12_LEGACY, NV12_LEGACY,
diff --git a/storage/browser/file_system/file_system_operation.h b/storage/browser/file_system/file_system_operation.h index bf37afb..8e355e8 100644 --- a/storage/browser/file_system/file_system_operation.h +++ b/storage/browser/file_system/file_system_operation.h
@@ -285,7 +285,7 @@ // CopyInForeignFile and CreateDirectory on dest filesystem // for cross-filesystem case. // - // TODO(crbug.com/171284): Restore directory timestamps after the Move + // TODO(crbug.com/40960653): Restore directory timestamps after the Move // operation. virtual void Move( const FileSystemURL& src_path,
diff --git a/storage/browser/file_system/file_system_url.cc b/storage/browser/file_system/file_system_url.cc index 481a3cd..44d0947d 100644 --- a/storage/browser/file_system/file_system_url.cc +++ b/storage/browser/file_system/file_system_url.cc
@@ -22,7 +22,7 @@ namespace { bool AreSameStorageKey(const FileSystemURL& a, const FileSystemURL& b) { - // TODO(https://crbug.com/1396116): Make the `storage_key_` member optional. + // TODO(crbug.com/40249324): Make the `storage_key_` member optional. // This class improperly uses a StorageKey with an opaque origin to indicate a // lack of origin for FileSystemURLs corresponding to non-sandboxed file // systems. This leads to unexpected behavior when comparing two non-sandboxed
diff --git a/storage/browser/file_system/mount_points.h b/storage/browser/file_system/mount_points.h index bd0d39b5..3428cacd4 100644 --- a/storage/browser/file_system/mount_points.h +++ b/storage/browser/file_system/mount_points.h
@@ -57,7 +57,7 @@ // the given mount type. virtual bool HandlesFileSystemMountType(FileSystemType type) const = 0; - // TODO(https://crbug.com/1240603): Determine if MountPoints::CrackURL() + // TODO(crbug.com/40194313): Determine if MountPoints::CrackURL() // and its overrides in child classes should be removed and replaced with // FileSystemContext::CrackURL(). //
diff --git a/storage/browser/quota/client_usage_tracker.cc b/storage/browser/quota/client_usage_tracker.cc index aee894b3..726b94b8 100644 --- a/storage/browser/quota/client_usage_tracker.cc +++ b/storage/browser/quota/client_usage_tracker.cc
@@ -110,7 +110,7 @@ if (delta.has_value()) { // Constrain `delta` to avoid negative usage values. - // TODO(crbug.com/463729): At least one storage API sends deltas that + // TODO(crbug.com/40408082): At least one storage API sends deltas that // result in negative total usage. The line below works around this bug. // Fix the bug, and remove the workaround. bucket_it->second += std::max(*delta, -bucket_it->second); @@ -185,7 +185,7 @@ int64_t usage) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // Defend against confusing inputs from clients. - // TODO(crbug.com/1292210): Remove this check after fixing QuotaClients. + // TODO(crbug.com/40213066): Remove this check after fixing QuotaClients. if (usage < 0) usage = 0; @@ -251,7 +251,7 @@ void ClientUsageTracker::OnGranted(const url::Origin& origin_url, int change_flags) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - // TODO(crbug.com/1215208): Remove this conversion once the storage policy + // TODO(crbug.com/40184305): Remove this conversion once the storage policy // APIs are converted to use StorageKey instead of Origin. const blink::StorageKey storage_key = blink::StorageKey::CreateFirstParty(origin_url); @@ -264,7 +264,7 @@ void ClientUsageTracker::OnRevoked(const url::Origin& origin_url, int change_flags) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - // TODO(crbug.com/1215208): Remove this conversion once the storage policy + // TODO(crbug.com/40184305): Remove this conversion once the storage policy // APIs are converted to use StorageKey instead of Origin. const blink::StorageKey storage_key = blink::StorageKey::CreateFirstParty(origin_url);
diff --git a/storage/browser/quota/client_usage_tracker.h b/storage/browser/quota/client_usage_tracker.h index 20ce524e..86af3b06 100644 --- a/storage/browser/quota/client_usage_tracker.h +++ b/storage/browser/quota/client_usage_tracker.h
@@ -123,7 +123,7 @@ int64_t usage); // SpecialStoragePolicy::Observer overrides. - // TODO(crbug.com/1215208): Migrate to use StorageKey when the StoragePolicy + // TODO(crbug.com/40184305): Migrate to use StorageKey when the StoragePolicy // is migrated to use StorageKey instead of Origin. void OnGranted(const url::Origin& origin_url, int change_flags) override; void OnRevoked(const url::Origin& origin_url, int change_flags) override;
diff --git a/storage/browser/quota/quota_manager_impl.cc b/storage/browser/quota/quota_manager_impl.cc index c583109..d58a43d9 100644 --- a/storage/browser/quota/quota_manager_impl.cc +++ b/storage/browser/quota/quota_manager_impl.cc
@@ -2083,8 +2083,8 @@ for (auto& entry : entries) { StorageType type = static_cast<StorageType>(entry->type); - // TODO(crbug.com/1175113): Change to DCHECK once persistent type is removed - // from QuotaDatabase. + // TODO(crbug.com/40167820): Change to DCHECK once persistent type is + // removed from QuotaDatabase. if (!IsSupportedType(type)) { continue; } @@ -2337,7 +2337,7 @@ DCHECK_GE(total_space, 0); DCHECK_GE(available_space, 0); - // TODO(https://crbug.com/1059560): Figure out what 0 total_space means + // TODO(crbug.com/40121667): Figure out what 0 total_space means // and how to handle the storage pressure callback in these cases. if (total_space == 0) { return;
diff --git a/storage/browser/quota/quota_manager_impl.h b/storage/browser/quota/quota_manager_impl.h index 73b9dbe..23eb07d 100644 --- a/storage/browser/quota/quota_manager_impl.h +++ b/storage/browser/quota/quota_manager_impl.h
@@ -352,8 +352,9 @@ // deletion, `callback` may be called with a kErrorAbort status. // TODO(estade): Consider removing the status code from `callback` as it's // unused outside of tests. - // TODO(crbug/1456643): DEPRECATED please prefer using `DeleteStorageKeyData`. - // This should be removed as part of `CookiesTreeModel` deprecation. + // TODO(crbug.com/40273188): DEPRECATED please prefer using + // `DeleteStorageKeyData`. This should be removed as part of + // `CookiesTreeModel` deprecation. void DeleteHostData(const std::string& host, blink::mojom::StorageType type, StatusCallback callback); @@ -744,7 +745,7 @@ // Evaluates disk statistics to identify storage pressure // (low disk space availability) and starts the storage // pressure event dispatch if appropriate. - // TODO(crbug.com/1088004): Implement UsageAndQuotaInfoGatherer::Completed() + // TODO(crbug.com/40133191): Implement UsageAndQuotaInfoGatherer::Completed() // to use DetermineStoragePressure(). void DetermineStoragePressure(int64_t free_space, int64_t total_space); @@ -831,7 +832,8 @@ // Iterating over this list is almost always incorrect. Most algorithms should // iterate over an entry in |client_types_|. // - // TODO(crbug.com/1016065): Handle Storage Service crashes. Will likely entail + // TODO(crbug.com/40103974): Handle Storage Service crashes. Will likely + // entail // using a mojo::RemoteSet here. std::vector<mojo::Remote<mojom::QuotaClient>> clients_for_ownership_;
diff --git a/storage/browser/quota/usage_tracker.cc b/storage/browser/quota/usage_tracker.cc index 5f02aab7..8638c80 100644 --- a/storage/browser/quota/usage_tracker.cc +++ b/storage/browser/quota/usage_tracker.cc
@@ -308,7 +308,7 @@ case QuotaClientType::kMediaLicense: // Media license data does not count against quota and should always // report 0 usage. - // TODO(crbug.com/1305441): Consider counting media license data against + // TODO(crbug.com/40218094): Consider counting media license data against // quota. DCHECK_EQ(total_usage, 0); break;
diff --git a/testing/buildbot/buildbot_json_magic_substitutions.py b/testing/buildbot/buildbot_json_magic_substitutions.py index cdb05cc3..524df2b 100644 --- a/testing/buildbot/buildbot_json_magic_substitutions.py +++ b/testing/buildbot/buildbot_json_magic_substitutions.py
@@ -248,7 +248,7 @@ # These bots can't handle parallel tests. See crbug.com/1353938. # The load can also negatively impact WebGL tests, so reduce the number of # jobs there. - # TODO(crbug.com/1349828): Try removing the Windows/Intel special casing once + # TODO(crbug.com/40233910): Try removing the Windows/Intel special casing once # we swap which machines we're using. is_webgpu_cts = test_name.startswith('webgpu_cts') or test_config.get( 'telemetry_test_name') == 'webgpu_cts'
diff --git a/testing/buildbot/chromium.chromiumos.json b/testing/buildbot/chromium.chromiumos.json index 2be9450..229c48b 100644 --- a/testing/buildbot/chromium.chromiumos.json +++ b/testing/buildbot/chromium.chromiumos.json
@@ -5482,9 +5482,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6428.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6429.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 126.0.6428.0", + "description": "Run with ash-chrome version 126.0.6429.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -5494,8 +5494,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v126.0.6428.0", - "revision": "version:126.0.6428.0" + "location": "lacros_version_skew_tests_v126.0.6429.0", + "revision": "version:126.0.6429.0" } ], "dimensions": { @@ -5638,9 +5638,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6428.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6429.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 126.0.6428.0", + "description": "Run with ash-chrome version 126.0.6429.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -5650,8 +5650,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v126.0.6428.0", - "revision": "version:126.0.6428.0" + "location": "lacros_version_skew_tests_v126.0.6429.0", + "revision": "version:126.0.6429.0" } ], "dimensions": {
diff --git a/testing/buildbot/chromium.coverage.json b/testing/buildbot/chromium.coverage.json index 1d6e7fbd..de2dc6b3 100644 --- a/testing/buildbot/chromium.coverage.json +++ b/testing/buildbot/chromium.coverage.json
@@ -19663,9 +19663,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6428.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6429.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 126.0.6428.0", + "description": "Run with ash-chrome version 126.0.6429.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -19675,8 +19675,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v126.0.6428.0", - "revision": "version:126.0.6428.0" + "location": "lacros_version_skew_tests_v126.0.6429.0", + "revision": "version:126.0.6429.0" } ], "dimensions": { @@ -19819,9 +19819,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6428.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6429.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 126.0.6428.0", + "description": "Run with ash-chrome version 126.0.6429.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -19831,8 +19831,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v126.0.6428.0", - "revision": "version:126.0.6428.0" + "location": "lacros_version_skew_tests_v126.0.6429.0", + "revision": "version:126.0.6429.0" } ], "dimensions": {
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json index 43f1c65..ffbc2be 100644 --- a/testing/buildbot/chromium.fyi.json +++ b/testing/buildbot/chromium.fyi.json
@@ -41837,9 +41837,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6428.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6429.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 126.0.6428.0", + "description": "Run with ash-chrome version 126.0.6429.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -41848,8 +41848,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v126.0.6428.0", - "revision": "version:126.0.6428.0" + "location": "lacros_version_skew_tests_v126.0.6429.0", + "revision": "version:126.0.6429.0" } ], "dimensions": { @@ -41987,9 +41987,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6428.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6429.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 126.0.6428.0", + "description": "Run with ash-chrome version 126.0.6429.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -41998,8 +41998,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v126.0.6428.0", - "revision": "version:126.0.6428.0" + "location": "lacros_version_skew_tests_v126.0.6429.0", + "revision": "version:126.0.6429.0" } ], "dimensions": { @@ -43336,9 +43336,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6428.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6429.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 126.0.6428.0", + "description": "Run with ash-chrome version 126.0.6429.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -43348,8 +43348,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v126.0.6428.0", - "revision": "version:126.0.6428.0" + "location": "lacros_version_skew_tests_v126.0.6429.0", + "revision": "version:126.0.6429.0" } ], "dimensions": { @@ -43492,9 +43492,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6428.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6429.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 126.0.6428.0", + "description": "Run with ash-chrome version 126.0.6429.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -43504,8 +43504,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v126.0.6428.0", - "revision": "version:126.0.6428.0" + "location": "lacros_version_skew_tests_v126.0.6429.0", + "revision": "version:126.0.6429.0" } ], "dimensions": { @@ -44817,9 +44817,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6428.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6429.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 126.0.6428.0", + "description": "Run with ash-chrome version 126.0.6429.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -44828,8 +44828,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v126.0.6428.0", - "revision": "version:126.0.6428.0" + "location": "lacros_version_skew_tests_v126.0.6429.0", + "revision": "version:126.0.6429.0" } ], "dimensions": { @@ -44967,9 +44967,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6428.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6429.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 126.0.6428.0", + "description": "Run with ash-chrome version 126.0.6429.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -44978,8 +44978,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v126.0.6428.0", - "revision": "version:126.0.6428.0" + "location": "lacros_version_skew_tests_v126.0.6429.0", + "revision": "version:126.0.6429.0" } ], "dimensions": {
diff --git a/testing/buildbot/chromium.memory.json b/testing/buildbot/chromium.memory.json index 3c1e147..3cf912c 100644 --- a/testing/buildbot/chromium.memory.json +++ b/testing/buildbot/chromium.memory.json
@@ -15763,12 +15763,12 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.filter;../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6428.0/test_ash_chrome", + "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6429.0/test_ash_chrome", "--test-launcher-print-test-stdio=always", "--combine-ash-logs-on-bots", "--asan-symbolize-output" ], - "description": "Run with ash-chrome version 126.0.6428.0", + "description": "Run with ash-chrome version 126.0.6429.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -15778,8 +15778,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v126.0.6428.0", - "revision": "version:126.0.6428.0" + "location": "lacros_version_skew_tests_v126.0.6429.0", + "revision": "version:126.0.6429.0" } ], "dimensions": { @@ -15939,12 +15939,12 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.filter;../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6428.0/test_ash_chrome", + "--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6429.0/test_ash_chrome", "--test-launcher-print-test-stdio=always", "--combine-ash-logs-on-bots", "--asan-symbolize-output" ], - "description": "Run with ash-chrome version 126.0.6428.0", + "description": "Run with ash-chrome version 126.0.6429.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -15954,8 +15954,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v126.0.6428.0", - "revision": "version:126.0.6428.0" + "location": "lacros_version_skew_tests_v126.0.6429.0", + "revision": "version:126.0.6429.0" } ], "dimensions": {
diff --git a/testing/buildbot/filters/chromeos.services_unittests.filter b/testing/buildbot/filters/chromeos.services_unittests.filter index 1559dd6d..79ddb85 100644 --- a/testing/buildbot/filters/chromeos.services_unittests.filter +++ b/testing/buildbot/filters/chromeos.services_unittests.filter
@@ -1,4 +1,4 @@ -# TODO(crbug.com/868060): Enable this. +# TODO(crbug.com/40586826): Enable this. -GeolocationChromeOsWifiDataProviderTest.* -GeolocationServiceUnitTest.GeolocationConfig
diff --git a/testing/buildbot/filters/code_coverage.browser_tests.filter b/testing/buildbot/filters/code_coverage.browser_tests.filter index fc1b26c..c5e42aa 100644 --- a/testing/buildbot/filters/code_coverage.browser_tests.filter +++ b/testing/buildbot/filters/code_coverage.browser_tests.filter
@@ -1,4 +1,4 @@ -# TODO(crbug.com/988146): Enable this. +# TODO(crbug.com/40637833): Enable this. -PasswordManagerBrowserTest.* -ContentScriptApiTest.ContentScriptBlobFetch -CredentialManagerBrowserTest.*
diff --git a/testing/buildbot/filters/fuchsia.browser_tests.filter b/testing/buildbot/filters/fuchsia.browser_tests.filter index 8a1b5e1d..85a5031 100644 --- a/testing/buildbot/filters/fuchsia.browser_tests.filter +++ b/testing/buildbot/filters/fuchsia.browser_tests.filter
@@ -44,7 +44,7 @@ # Which is: "[FAILED] Expected: ''Abbf'', but was ''''" -DevToolsTest.TestDispatchKeyEventShowsAutoFill -# TODO(crbug.com/1265618): Unsupported keySystem +# TODO(crbug.com/40203805): Unsupported keySystem -EncryptedMediaSupportedTypesExternalClearKeyTest.EncryptionScheme -EncryptedMediaSupportedTypesExternalClearKeyTest.Robustness -EncryptedMediaSupportedTypesExternalClearKeyTest.SessionType
diff --git a/testing/buildbot/filters/ios.content_browsertests.filter b/testing/buildbot/filters/ios.content_browsertests.filter index ca0380b..163a5a2 100644 --- a/testing/buildbot/filters/ios.content_browsertests.filter +++ b/testing/buildbot/filters/ios.content_browsertests.filter
@@ -149,22 +149,22 @@ # implemented for IOS. -RenderFrameHostImplBrowserTestWithBFCacheAndViewTransition.NewContentTimeoutIsSetWhenLeavingBFCacheWithViewTransition -# TODO(crbug.com/1466927): unexpected level of support for codec. +# TODO(crbug.com/40276565): unexpected level of support for codec. -MediaCanPlayTypeTest.CodecSupportTest_mp4 # TODO(crbug.com/1467854): This test is flaky. -BackForwardCacheBrowserTest.NavigateToTwoPagesOnSameSiteWithSubframes -# TODO(crbug.com/1477792): This test is flaky. +# TODO(crbug.com/40280396): This test is flaky. -All/DumpAccessibilityTreeTest.AccessibilitySelectList/blink -# TODO(crbug.com/1482265): These consistently fail. +# TODO(crbug.com/40281785): These consistently fail. -All/DumpAccessibilityTreeTest.AccessibilityInputSubmit/blink # TODO(crbug.com/325678250): This test is failing due to the line wrapping. -All/DumpAccessibilityTreeTest.AccessibilityInputRadioCheckboxLabel/blink -# TODO(crbug.com/1459221): These WebSockets tests seem to depend on the spawned +# TODO(crbug.com/40274214): These WebSockets tests seem to depend on the spawned # test server, which is not supported on iOS. -BackForwardCacheBrowserTestNoTestingConfig.CCNSAndWebSocketBothRecorded -BackForwardCacheBrowserTestWithJavaScriptDetails.BlockAndUnblockFromHTMLFile @@ -273,7 +273,7 @@ # TODO(crbug.com/40285557): reports the wrong width/height. -RenderWidgetHostFoldableCSSTest.ViewportSegmentsWorksInUAFullscreenCSS -# TODO(crbug.com/1495761): Text area handle has shrunk. +# TODO(crbug.com/40286643): Text area handle has shrunk. -FormControlsBrowserTest.Textarea # TODO(crbug.com/1500334): Flakily fails on the platform. @@ -298,7 +298,7 @@ -All/BackForwardCacheMediaTest.DoesCacheIfMediaStreamTrackUsingGetDisplayMediaEndedButDoesNotWithoutFlags/0 -All/BackForwardCacheMediaTest.DoesCacheIfMediaStreamTrackUsingGetDisplayMediaEndedButDoesNotWithoutFlags/1 -# TODO(crbug.com/1504145): Fails due to incorrect line wrapping. +# TODO(crbug.com/40944655): Fails due to incorrect line wrapping. -All/YieldingParserDumpAccessibilityTreeTest.AccessibilityPopoverApi/blink -All/DumpAccessibilityTreeTestWithIgnoredNodes.AccessibilityInputRadioCheckboxLabel/blink @@ -641,3 +641,11 @@ -WebUIImplBrowserTest.NavigateFromCrashedAboutBlank -WebContentsObserverBrowserTest.CookieCallbacks_Subframe -WebContentsObserverBrowserTest.CookieCallbacks_Subresource + +# TODO(crbug.com/41471694): The below tests related to the touchpad and gesture_detection +# have been failing since https://crrev.com/c/5468600. +-SitePerProcessHitTestBrowserTest.TouchAndGestureEventPositionChange +-TouchpadPinchBrowserTest.TouchpadPinchChangesPageScale +-TouchpadPinchBrowserTest.WheelListenerAllowingPinch +-TouchpadPinchBrowserTest.WheelListenerPreventingDoubleTap +-TouchpadPinchBrowserTest.WheelListenerPreventingPinch
diff --git a/testing/buildbot/filters/ios.ui_base_unittests.filter b/testing/buildbot/filters/ios.ui_base_unittests.filter index cff880f2..4a67fe7 100644 --- a/testing/buildbot/filters/ios.ui_base_unittests.filter +++ b/testing/buildbot/filters/ios.ui_base_unittests.filter
@@ -1,4 +1,11 @@ -# TODO(crbug.com/1467567): these tests started failing after bots upgraded to +# TODO(crbug.com/40276835): these tests started failing after bots upgraded to # xcode 15b4 (crrev.com/c/4705014). -ClipboardTest/PlatformClipboardTest.BitmapWriteAndPngRead_N32_Premul -ClipboardTest/PlatformClipboardTest.BitmapWriteAndPngRead_N32_Premul_2x7 + +# TODO(crbug.com/40276835): A timeout happens on these tests since +# https://ci.chromium.org/ui/p/chromium/builders/ci/ios-blink-dbg-fyi/25367/overview +-ClipboardTest/PlatformClipboardTest.HTMLTest +-ClipboardTest/PlatformClipboardTest.MultiFormatTest +-ClipboardTest/PlatformClipboardTest.TrickyHTMLTest +-ClipboardTest/PlatformClipboardTest.WriteEverything
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl index 0e9c5a9..4e72162 100644 --- a/testing/buildbot/test_suite_exceptions.pyl +++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -3355,7 +3355,7 @@ }, 'media_foundation_browser_tests': { 'remove_from': [ - # TODO(crbug.com/1445173): Enable Media Foundation browser tests on NVIDIA + # TODO(crbug.com/40912267): Enable Media Foundation browser tests on NVIDIA # gpu bots once the Windows OS supports HW secure decryption. 'Win10 FYI x64 Debug (NVIDIA)', 'Win10 FYI x64 Release (AMD RX 5500 XT)', @@ -5310,14 +5310,14 @@ ], 'modifications': { 'Oreo Phone Tester': { - # TODO(crbug.com/997362): Enable this once it's passing. + # TODO(crbug.com/40641956): Enable this once it's passing. # TODO(https://crbug.com/884413): Re-enable this once the tests are # either passing or there is more capacity. 'experiment_percentage': 0, }, 'android-11-x86-rel': { 'args': [ - # TODO(crbug.com/1189746) Enable this test once the issue is fixed. + # TODO(crbug.com/40173842) Enable this test once the issue is fixed. '--gtest_filter=-org.chromium.net.NetworkChangeNotifierTest.testNetworkChangeNotifierJavaObservers', ], },
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index 21e6467e..96a73d2 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl
@@ -267,16 +267,16 @@ }, 'LACROS_VERSION_SKEW_CANARY': { 'identifier': 'Lacros version skew testing ash canary', - 'description': 'Run with ash-chrome version 126.0.6428.0', + 'description': 'Run with ash-chrome version 126.0.6429.0', 'args': [ - '--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6428.0/test_ash_chrome', + '--ash-chrome-path-override=../../lacros_version_skew_tests_v126.0.6429.0/test_ash_chrome', ], 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/linux-ash-chromium/x86_64/ash.zip', - 'location': 'lacros_version_skew_tests_v126.0.6428.0', - 'revision': 'version:126.0.6428.0', + 'location': 'lacros_version_skew_tests_v126.0.6429.0', + 'revision': 'version:126.0.6429.0', }, ], },
diff --git a/testing/merge_scripts/code_coverage/merge_js_lib.py b/testing/merge_scripts/code_coverage/merge_js_lib.py index 91d441c..3a9d8637 100644 --- a/testing/merge_scripts/code_coverage/merge_js_lib.py +++ b/testing/merge_scripts/code_coverage/merge_js_lib.py
@@ -101,7 +101,7 @@ file_path) continue - # TODO(crbug/1373753): For now we exclude any sourcemaps that are 0 + # TODO(crbug.com/40242180): For now we exclude any sourcemaps that are 0 # length and also that don't begin with a data URL designation. if len(script_data['sourceMapURL']) == 0 or not script_data[ 'sourceMapURL'].startswith(_SOURCEMAPPING_DATA_URL_PREFIX):
diff --git a/testing/scripts/run_performance_tests.py b/testing/scripts/run_performance_tests.py index 1f11089..d047f10 100755 --- a/testing/scripts/run_performance_tests.py +++ b/testing/scripts/run_performance_tests.py
@@ -302,10 +302,10 @@ env = os.environ.copy() env['CHROME_HEADLESS'] = '1' - #TODO(crbug/1138988): Some gtests do not implements the unit_test_launcher.cc. - # As a result, they will not respect the arguments added by - # _generate_shard_args() and will still use the values of GTEST_SHARD_INDEX - # and GTEST_TOTAL_SHARDS to run part of the tests. + # TODO(crbug.com/40153230): Some gtests do not implements the + # unit_test_launcher.cc. As a result, they will not respect the arguments + # added by _generate_shard_args() and will still use the values of + # GTEST_SHARD_INDEX and GTEST_TOTAL_SHARDS to run part of the tests. # Removing those environment variables as a workaround. if command_generator._ignore_shard_env_vars: if 'GTEST_TOTAL_SHARDS' in env:
diff --git a/testing/scripts/run_variations_smoke_tests.py b/testing/scripts/run_variations_smoke_tests.py index 8a4d7e2c..e10bc94 100755 --- a/testing/scripts/run_variations_smoke_tests.py +++ b/testing/scripts/run_variations_smoke_tests.py
@@ -233,7 +233,7 @@ chrome_options.add_argument('user-data-dir=' + user_data_dir) chrome_options.add_argument('log-file=' + log_file) chrome_options.add_argument('variations-test-seed-path=' + path_seed) - #TODO(crbug/1342057): Remove this line. + #TODO(crbug.com/40230862): Remove this line. chrome_options.add_argument("disable-field-trial-config") for arg in args:
diff --git a/testing/test.gni b/testing/test.gni index afe31625..f8f763b2 100644 --- a/testing/test.gni +++ b/testing/test.gni
@@ -699,7 +699,7 @@ } if (is_asan) { - # TODO(crbug.com/1465997): Remove the extra cml segment for asan. + # TODO(crbug.com/40276216): Remove the extra cml segment for asan. _manifest_fragments += [ "//build/config/fuchsia/test/asan_options.shard.test-cml" ] }
diff --git a/testing/unexpected_passes_common/data_types.py b/testing/unexpected_passes_common/data_types.py index 5c723a4..46ce868f 100644 --- a/testing/unexpected_passes_common/data_types.py +++ b/testing/unexpected_passes_common/data_types.py
@@ -589,7 +589,7 @@ [FULL_PASS, PARTIAL_PASS, NEVER_PASS]) # Handle the case of a semi-stale expectation. else: - # TODO(crbug.com/998329): Sort by pass percentage so it's easier to + # TODO(crbug.com/40642384): Sort by pass percentage so it's easier to # find problematic builders without highlighting. builder_map = semi_stale_dict.setdefault( expectation_file,
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 6c7685ab..8e4324a 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -18330,7 +18330,8 @@ "SkiaGraphite": [ { "platforms": [ - "mac" + "mac", + "windows" ], "experiments": [ {
diff --git a/third_party/blink/common/custom_handlers/protocol_handler_utils.cc b/third_party/blink/common/custom_handlers/protocol_handler_utils.cc index 2e60820..681a317 100644 --- a/third_party/blink/common/custom_handlers/protocol_handler_utils.cc +++ b/third_party/blink/common/custom_handlers/protocol_handler_utils.cc
@@ -4,9 +4,10 @@ #include "third_party/blink/public/common/custom_handlers/protocol_handler_utils.h" +#include <string_view> + #include "base/containers/contains.h" #include "base/feature_list.h" -#include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "services/network/public/cpp/is_potentially_trustworthy.h" #include "third_party/blink/public/common/features.h" @@ -20,7 +21,7 @@ URLSyntaxErrorCode IsValidCustomHandlerURLSyntax( const GURL& full_url, - const base::StringPiece& user_url) { + const std::string_view& user_url) { // The specification requires that it is a SyntaxError if the "%s" token is // not present. int index = user_url.find(kToken); @@ -35,7 +36,7 @@ return URLSyntaxErrorCode::kNoError; } -bool IsValidCustomHandlerScheme(const base::StringPiece scheme, +bool IsValidCustomHandlerScheme(const std::string_view scheme, ProtocolHandlerSecurityLevel security_level, bool* has_custom_scheme_prefix) { bool allow_scheme_prefix =
diff --git a/third_party/blink/common/fenced_frame/fenced_frame_utils.cc b/third_party/blink/common/fenced_frame/fenced_frame_utils.cc index 2a0bbec..18c6d28 100644 --- a/third_party/blink/common/fenced_frame/fenced_frame_utils.cc +++ b/third_party/blink/common/fenced_frame/fenced_frame_utils.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/public/common/fenced_frame/fenced_frame_utils.h" #include <cstring> +#include <string_view> #include "base/metrics/histogram_functions.h" #include "base/strings/string_util.h" @@ -32,7 +33,7 @@ return base::StartsWith(spec, kURNUUIDprefix, base::CompareCase::INSENSITIVE_ASCII) && base::Uuid::ParseCaseInsensitive( - base::StringPiece(spec).substr(std::strlen(kURNUUIDprefix))) + std::string_view(spec).substr(std::strlen(kURNUUIDprefix))) .is_valid(); }
diff --git a/third_party/blink/common/interest_group/ad_display_size_utils.cc b/third_party/blink/common/interest_group/ad_display_size_utils.cc index d3db6f25d..cb8cb27 100644 --- a/third_party/blink/common/interest_group/ad_display_size_utils.cc +++ b/third_party/blink/common/interest_group/ad_display_size_utils.cc
@@ -17,7 +17,7 @@ namespace { blink::AdSize::LengthUnit ConvertUnitStringToUnitEnum( - const base::StringPiece input) { + const std::string_view input) { if (input == "px") { return blink::AdSize::LengthUnit::kPixels; } @@ -60,7 +60,7 @@ } std::tuple<double, blink::AdSize::LengthUnit> ParseAdSizeString( - const base::StringPiece input) { + const std::string_view input) { std::string value; std::string unit; // This regular expression is used to parse the ad size specified in
diff --git a/third_party/blink/common/loader/mime_sniffing_throttle_unittest.cc b/third_party/blink/common/loader/mime_sniffing_throttle_unittest.cc index 88178a93..1d6d5ad7 100644 --- a/third_party/blink/common/loader/mime_sniffing_throttle_unittest.cc +++ b/third_party/blink/common/loader/mime_sniffing_throttle_unittest.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/public/common/loader/mime_sniffing_throttle.h" #include <memory> +#include <string_view> #include "base/functional/bind.h" #include "base/run_loop.h" @@ -81,7 +82,7 @@ public: // Implements blink::URLLoaderThrottle::Delegate. void CancelWithError(int error_code, - base::StringPiece custom_reason) override { + std::string_view custom_reason) override { NOTIMPLEMENTED(); } void Resume() override {
diff --git a/third_party/blink/common/loader/mime_sniffing_url_loader.cc b/third_party/blink/common/loader/mime_sniffing_url_loader.cc index afff3c7bb..0fbdc60 100644 --- a/third_party/blink/common/loader/mime_sniffing_url_loader.cc +++ b/third_party/blink/common/loader/mime_sniffing_url_loader.cc
@@ -4,9 +4,10 @@ #include "third_party/blink/public/common/loader/mime_sniffing_url_loader.h" +#include <string_view> + #include "base/functional/bind.h" #include "base/memory/ptr_util.h" -#include "base/strings/string_piece.h" #include "base/task/sequenced_task_runner.h" #include "mojo/public/cpp/bindings/self_owned_receiver.h" #include "net/base/mime_sniffer.h" @@ -225,7 +226,7 @@ buffered_body_.resize(start_size + read_bytes); std::string new_type; bool made_final_decision = net::SniffMimeType( - base::StringPiece(buffered_body_.data(), buffered_body_.size()), + std::string_view(buffered_body_.data(), buffered_body_.size()), response_url_, response_head_->mime_type, net::ForceSniffFileUrlsForHtml::kDisabled, &new_type); response_head_->mime_type = new_type;
diff --git a/third_party/blink/common/loader/record_load_histograms.cc b/third_party/blink/common/loader/record_load_histograms.cc index e516fed..fabcf03 100644 --- a/third_party/blink/common/loader/record_load_histograms.cc +++ b/third_party/blink/common/loader/record_load_histograms.cc
@@ -6,7 +6,6 @@ #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" -#include "base/strings/string_piece.h" #include "net/base/net_errors.h" #include "net/base/url_util.h" #include "url/gurl.h"
diff --git a/third_party/blink/common/loader/throttling_url_loader.cc b/third_party/blink/common/loader/throttling_url_loader.cc index d2de163..b4924e7 100644 --- a/third_party/blink/common/loader/throttling_url_loader.cc +++ b/third_party/blink/common/loader/throttling_url_loader.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/public/common/loader/throttling_url_loader.h" +#include <string_view> #include <vector> #include "base/containers/contains.h" @@ -11,7 +12,6 @@ #include "base/memory/raw_ptr.h" #include "base/metrics/histogram_functions.h" #include "base/strings/strcat.h" -#include "base/strings/string_piece.h" #include "base/strings/stringprintf.h" #include "base/task/sequenced_task_runner.h" #include "base/task/single_thread_task_runner.h" @@ -142,13 +142,13 @@ // URLLoaderThrottle::Delegate: void CancelWithError(int error_code, - base::StringPiece custom_reason) override { + std::string_view custom_reason) override { CancelWithExtendedError(error_code, 0, custom_reason); } void CancelWithExtendedError(int error_code, int extended_reason_code, - base::StringPiece custom_reason) override { + std::string_view custom_reason) override { if (!loader_) return; @@ -874,14 +874,14 @@ } void ThrottlingURLLoader::CancelWithError(int error_code, - base::StringPiece custom_reason) { + std::string_view custom_reason) { CancelWithExtendedError(error_code, 0, custom_reason); } void ThrottlingURLLoader::CancelWithExtendedError( int error_code, int extended_reason_code, - base::StringPiece custom_reason) { + std::string_view custom_reason) { if (loader_completed_) return; @@ -1000,7 +1000,7 @@ &ThrottlingURLLoader::OnClientConnectionError, base::Unretained(this))); } -void ThrottlingURLLoader::DisconnectClient(base::StringPiece custom_reason) { +void ThrottlingURLLoader::DisconnectClient(std::string_view custom_reason) { client_receiver_.reset(); if (!custom_reason.empty()) {
diff --git a/third_party/blink/common/origin_trials/persistent_origin_trials.cc b/third_party/blink/common/origin_trials/persistent_origin_trials.cc index d16d869..5df6109 100644 --- a/third_party/blink/common/origin_trials/persistent_origin_trials.cc +++ b/third_party/blink/common/origin_trials/persistent_origin_trials.cc
@@ -7,14 +7,15 @@ // since changes to it require review from security reviewers, listed in the // SECURITY_OWNERS file. -#include "third_party/blink/public/common/origin_trials/origin_trials.h" +#include <string_view> #include "base/containers/contains.h" +#include "third_party/blink/public/common/origin_trials/origin_trials.h" namespace blink::origin_trials { -bool IsTrialPersistentToNextResponse(base::StringPiece trial_name) { - static base::StringPiece const kPersistentTrials[] = { +bool IsTrialPersistentToNextResponse(std::string_view trial_name) { + static std::string_view const kPersistentTrials[] = { // Enable the FrobulatePersistent* trials as a persistent trials for // tests. "FrobulatePersistent",
diff --git a/third_party/blink/common/origin_trials/trial_token.cc b/third_party/blink/common/origin_trials/trial_token.cc index be1fa6c7..765a25c 100644 --- a/third_party/blink/common/origin_trials/trial_token.cc +++ b/third_party/blink/common/origin_trials/trial_token.cc
@@ -6,6 +6,7 @@ #include <memory> #include <optional> +#include <string_view> #include "base/base64.h" #include "base/json/json_reader.h" @@ -13,7 +14,6 @@ #include "base/memory/ptr_util.h" #include "base/numerics/byte_conversions.h" #include "base/strings/strcat.h" -#include "base/strings/string_piece.h" #include "base/time/time.h" #include "base/values.h" #include "third_party/blink/public/common/origin_trials/origin_trials.h" @@ -68,7 +68,7 @@ // static std::unique_ptr<TrialToken> TrialToken::From( - base::StringPiece token_text, + std::string_view token_text, const OriginTrialPublicKey& public_key, OriginTrialTokenStatus* out_status) { DCHECK(out_status); @@ -111,7 +111,7 @@ // static OriginTrialTokenStatus TrialToken::Extract( - base::StringPiece token_text, + std::string_view token_text, const OriginTrialPublicKey& public_key, std::string* out_token_payload, std::string* out_token_signature, @@ -160,10 +160,10 @@ // Extract the version-specific contents of the token. const char* token_bytes = token_contents.data(); - base::StringPiece version_piece(token_bytes + kVersionOffset, kVersionSize); - base::StringPiece signature(token_bytes + kSignatureOffset, kSignatureSize); - base::StringPiece payload_piece(token_bytes + kPayloadLengthOffset, - kPayloadLengthSize + payload_length); + std::string_view version_piece(token_bytes + kVersionOffset, kVersionSize); + std::string_view signature(token_bytes + kSignatureOffset, kSignatureSize); + std::string_view payload_piece(token_bytes + kPayloadLengthOffset, + kPayloadLengthSize + payload_length); // The data which is covered by the signature is (version + length + payload). std::string signed_data = base::StrCat({version_piece, payload_piece}); @@ -285,7 +285,7 @@ return origin == origin_; } -bool TrialToken::ValidateFeatureName(base::StringPiece feature_name) const { +bool TrialToken::ValidateFeatureName(std::string_view feature_name) const { return feature_name == feature_name_; } @@ -294,7 +294,7 @@ } // static -bool TrialToken::ValidateSignature(base::StringPiece signature, +bool TrialToken::ValidateSignature(std::string_view signature, const std::string& data, const OriginTrialPublicKey& public_key) { // Signature must be 64 bytes long.
diff --git a/third_party/blink/common/origin_trials/trial_token_unittest.cc b/third_party/blink/common/origin_trials/trial_token_unittest.cc index 42e394ef..04594eb 100644 --- a/third_party/blink/common/origin_trials/trial_token_unittest.cc +++ b/third_party/blink/common/origin_trials/trial_token_unittest.cc
@@ -6,7 +6,6 @@ #include <memory> -#include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/test/simple_test_clock.h" #include "base/time/time.h"
diff --git a/third_party/blink/common/origin_trials/trial_token_validator.cc b/third_party/blink/common/origin_trials/trial_token_validator.cc index f5430bf..c738b6e 100644 --- a/third_party/blink/common/origin_trials/trial_token_validator.cc +++ b/third_party/blink/common/origin_trials/trial_token_validator.cc
@@ -5,6 +5,8 @@ #include "third_party/blink/public/common/origin_trials/trial_token_validator.h" #include <memory> +#include <string_view> + #include "base/check.h" #include "base/feature_list.h" #include "base/functional/bind.h" @@ -62,7 +64,7 @@ // at |current_time| given the |trial_name|. // Manual completion trials add an expiry grace period, which has to be taken // into account to answer this question. -bool IsTokenExpired(const base::StringPiece trial_name, +bool IsTokenExpired(const std::string_view trial_name, const base::Time token_expiry_time, const base::Time current_time) { // Check token expiry. @@ -90,10 +92,10 @@ // token has not been disabled. OriginTrialTokenStatus ValidateTokenEnabled( const OriginTrialPolicy& policy, - const base::StringPiece trial_name, + const std::string_view trial_name, const base::Time token_expiry_time, const TrialToken::UsageRestriction usage_restriction, - const base::StringPiece token_signature, + const std::string_view token_signature, const base::Time current_time) { if (IsTokenExpired(trial_name, token_expiry_time, current_time)) return OriginTrialTokenStatus::kExpired; @@ -139,7 +141,7 @@ } TrialTokenResult TrialTokenValidator::ValidateTokenAndTrial( - base::StringPiece token, + std::string_view token, const url::Origin& origin, base::Time current_time) const { return ValidateTokenAndTrialWithOriginInfo( @@ -147,7 +149,7 @@ } TrialTokenResult TrialTokenValidator::ValidateTokenAndTrial( - base::StringPiece token, + std::string_view token, const url::Origin& origin, base::span<const url::Origin> third_party_origins, base::Time current_time) const { @@ -160,7 +162,7 @@ } TrialTokenResult TrialTokenValidator::ValidateTokenAndTrialWithOriginInfo( - base::StringPiece token, + std::string_view token, const OriginInfo& origin, base::span<const OriginInfo> third_party_origin_info, base::Time current_time) const { @@ -242,7 +244,7 @@ } TrialTokenResult TrialTokenValidator::ValidateToken( - base::StringPiece token, + std::string_view token, const url::Origin& origin, base::Time current_time) const { return ValidateToken(token, origin, base::span<const url::Origin>{}, @@ -250,7 +252,7 @@ } TrialTokenResult TrialTokenValidator::ValidateToken( - base::StringPiece token, + std::string_view token, const url::Origin& origin, base::span<const url::Origin> third_party_origins, base::Time current_time) const { @@ -291,10 +293,10 @@ } bool TrialTokenValidator::RevalidateTokenAndTrial( - const base::StringPiece trial_name, + const std::string_view trial_name, const base::Time token_expiry_time, const TrialToken::UsageRestriction usage_restriction, - const base::StringPiece token_signature, + const std::string_view token_signature, const base::Time current_time) const { OriginTrialPolicy* policy = PolicyGetter().Run(); @@ -311,7 +313,7 @@ } std::vector<mojom::OriginTrialFeature> -TrialTokenValidator::FeaturesEnabledByTrial(base::StringPiece trial_name) { +TrialTokenValidator::FeaturesEnabledByTrial(std::string_view trial_name) { std::vector<mojom::OriginTrialFeature> enabled_features; base::span<const mojom::OriginTrialFeature> features = origin_trials::FeaturesForTrial(trial_name); @@ -329,12 +331,12 @@ } bool TrialTokenValidator::TrialEnablesFeaturesForOS( - base::StringPiece trial_name) { + std::string_view trial_name) { return !FeaturesEnabledByTrial(trial_name).empty(); } bool TrialTokenValidator::RequestEnablesFeature(const net::URLRequest* request, - base::StringPiece feature_name, + std::string_view feature_name, base::Time current_time) const { // TODO(mek): Possibly cache the features that are availble for request in // UserData associated with the request. @@ -345,7 +347,7 @@ bool TrialTokenValidator::RequestEnablesFeature( const GURL& request_url, const net::HttpResponseHeaders* response_headers, - base::StringPiece feature_name, + std::string_view feature_name, base::Time current_time) const { return IsTrialPossibleOnOrigin(request_url) && ResponseBearsValidTokenForFeature(request_url, *response_headers, @@ -355,7 +357,7 @@ bool TrialTokenValidator::RequestEnablesDeprecatedFeature( const GURL& request_url, const net::HttpResponseHeaders* response_headers, - base::StringPiece feature_name, + std::string_view feature_name, base::Time current_time) const { return IsDeprecationTrialPossible() && ResponseBearsValidTokenForFeature(request_url, *response_headers, @@ -365,7 +367,7 @@ bool TrialTokenValidator::ResponseBearsValidTokenForFeature( const GURL& request_url, const net::HttpResponseHeaders& response_headers, - base::StringPiece feature_name, + std::string_view feature_name, base::Time current_time) const { url::Origin origin = url::Origin::Create(request_url); size_t iter = 0;
diff --git a/third_party/blink/common/origin_trials/trial_token_validator_unittest.cc b/third_party/blink/common/origin_trials/trial_token_validator_unittest.cc index 18c9d99..9c70822e 100644 --- a/third_party/blink/common/origin_trials/trial_token_validator_unittest.cc +++ b/third_party/blink/common/origin_trials/trial_token_validator_unittest.cc
@@ -6,13 +6,13 @@ #include <memory> #include <string> +#include <string_view> #include <vector> #include "base/containers/flat_set.h" #include "base/functional/bind.h" #include "base/memory/ptr_util.h" #include "base/memory/raw_ref.h" -#include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/test/simple_test_clock.h" #include "base/time/time.h" @@ -295,11 +295,11 @@ const override { return keys_; } - bool IsFeatureDisabled(base::StringPiece feature) const override { + bool IsFeatureDisabled(std::string_view feature) const override { return disabled_features_.count(feature) > 0; } - bool IsFeatureDisabledForUser(base::StringPiece feature) const override { + bool IsFeatureDisabledForUser(std::string_view feature) const override { return disabled_features_for_user_.count(std::string(feature)) > 0; } @@ -319,7 +319,7 @@ } protected: - bool IsTokenDisabled(base::StringPiece token_signature) const override { + bool IsTokenDisabled(std::string_view token_signature) const override { return disabled_tokens_.count(std::string(token_signature)) > 0; } @@ -410,14 +410,14 @@ : validator_(validator) {} virtual ~ValidateTokenWrapper() = default; - virtual TrialTokenResult Validate(base::StringPiece token, + virtual TrialTokenResult Validate(std::string_view token, const url::Origin& origin, base::Time timestamp) const { return validator_->ValidateToken(token, origin, timestamp); } virtual TrialTokenResult Validate( - base::StringPiece token, + std::string_view token, const url::Origin& origin, base::span<const url::Origin> script_origins, base::Time timestamp) const { @@ -435,13 +435,13 @@ : ValidateTokenWrapper(validator) {} ~ValidateTokenAndTrialWrapper() override = default; - TrialTokenResult Validate(base::StringPiece token, + TrialTokenResult Validate(std::string_view token, const url::Origin& origin, base::Time timestamp) const override { return validator_->ValidateTokenAndTrial(token, origin, timestamp); } - TrialTokenResult Validate(base::StringPiece token, + TrialTokenResult Validate(std::string_view token, const url::Origin& origin, base::span<const url::Origin> script_origins, base::Time timestamp) const override { @@ -457,14 +457,14 @@ : ValidateTokenWrapper(validator) {} ~ValidateTokenAndTrialWithOriginInfoWrapper() override = default; - TrialTokenResult Validate(base::StringPiece token, + TrialTokenResult Validate(std::string_view token, const url::Origin& origin, base::Time timestamp) const override { return validator_->ValidateTokenAndTrialWithOriginInfo( token, TrialTokenValidator::OriginInfo(origin), {}, timestamp); } - TrialTokenResult Validate(base::StringPiece token, + TrialTokenResult Validate(std::string_view token, const url::Origin& origin, base::span<const url::Origin> script_origins, base::Time timestamp) const override { @@ -520,13 +520,13 @@ ~TrialTokenValidatorEquivalenceTest() noexcept override = default; // Expose the |Validate| functions of the wrapper for shorter code in tests - TrialTokenResult Validate(base::StringPiece token, + TrialTokenResult Validate(std::string_view token, const url::Origin& origin, base::Time timestamp) const { return validator_wrapper_->Validate(token, origin, timestamp); } - TrialTokenResult Validate(base::StringPiece token, + TrialTokenResult Validate(std::string_view token, const url::Origin& origin, base::span<const url::Origin> script_origins, base::Time timestamp) const {
diff --git a/third_party/blink/common/privacy_budget/identifiability_metric_builder_unittest.cc b/third_party/blink/common/privacy_budget/identifiability_metric_builder_unittest.cc index 053da6e..5b74295 100644 --- a/third_party/blink/common/privacy_budget/identifiability_metric_builder_unittest.cc +++ b/third_party/blink/common/privacy_budget/identifiability_metric_builder_unittest.cc
@@ -6,8 +6,8 @@ #include <cinttypes> #include <limits> +#include <string_view> -#include "base/strings/string_piece.h" #include "base/strings/stringprintf.h" #include "services/metrics/public/cpp/ukm_builders.h" #include "services/metrics/public/cpp/ukm_source_id.h" @@ -171,7 +171,7 @@ test::TestUkmRecorder recorder; // StringPiece() needs an explicit constructor invocation. IdentifiabilityMetricBuilder(ukm::SourceIdObj{}) - .Add(kTestSurface, IdentifiableToken(base::StringPiece(kAbcd))) + .Add(kTestSurface, IdentifiableToken(std::string_view(kAbcd))) .Record(&recorder); EXPECT_THAT(collector, FirstMetricIs(kExpectedHashOfAbcd)); }
diff --git a/third_party/blink/common/privacy_budget/identifiability_metrics_unittest.cc b/third_party/blink/common/privacy_budget/identifiability_metrics_unittest.cc index 7a277d68..a5e66a01 100644 --- a/third_party/blink/common/privacy_budget/identifiability_metrics_unittest.cc +++ b/third_party/blink/common/privacy_budget/identifiability_metrics_unittest.cc
@@ -7,7 +7,6 @@ #include <cstdint> #include <vector> -#include "base/strings/string_piece.h" #include "testing/gtest/include/gtest/gtest.h" namespace blink {
diff --git a/third_party/blink/common/privacy_budget/identifiable_token_unittest.cc b/third_party/blink/common/privacy_budget/identifiable_token_unittest.cc index 6317f36..40c860c7 100644 --- a/third_party/blink/common/privacy_budget/identifiable_token_unittest.cc +++ b/third_party/blink/common/privacy_budget/identifiable_token_unittest.cc
@@ -4,7 +4,8 @@ #include "third_party/blink/public/common/privacy_budget/identifiable_token.h" -#include "base/strings/string_piece.h" +#include <string_view> + #include "testing/gtest/include/gtest/gtest.h" namespace blink { @@ -101,7 +102,7 @@ } TEST(IdentifiableTokenTest, SampleStringPiece) { - auto source_value = base::StringPiece("abcd"); + auto source_value = std::string_view("abcd"); auto expected_value = INT64_C(0xf75a3b8a1499428d); EXPECT_EQ(IdentifiableToken(expected_value), IdentifiableToken(source_value)); // No implicit converter for StringPiece.
diff --git a/third_party/blink/common/service_worker/service_worker_router_rule_mojom_traits_unittest.cc b/third_party/blink/common/service_worker/service_worker_router_rule_mojom_traits_unittest.cc index c5485c3..7f2c7124 100644 --- a/third_party/blink/common/service_worker/service_worker_router_rule_mojom_traits_unittest.cc +++ b/third_party/blink/common/service_worker/service_worker_router_rule_mojom_traits_unittest.cc
@@ -4,6 +4,8 @@ #include "third_party/blink/public/common/service_worker/service_worker_router_rule_mojom_traits.h" +#include <string_view> + #include "mojo/public/cpp/test_support/test_utils.h" #include "services/network/public/mojom/fetch_api.mojom-shared.h" #include "services/network/public/mojom/service_worker_router_info.mojom-shared.h" @@ -38,7 +40,7 @@ { auto parse_result = liburlpattern::Parse( "/test/*", - [](base::StringPiece input) { return std::string(input); }); + [](std::string_view input) { return std::string(input); }); ASSERT_TRUE(parse_result.ok()); url_pattern.pathname = parse_result.value().PartList(); }
diff --git a/third_party/blink/common/shared_storage/module_script_downloader.cc b/third_party/blink/common/shared_storage/module_script_downloader.cc index 152afa22..d698607 100644 --- a/third_party/blink/common/shared_storage/module_script_downloader.cc +++ b/third_party/blink/common/shared_storage/module_script_downloader.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/public/common/shared_storage/module_script_downloader.h" +#include <string_view> #include <utility> #include "base/functional/bind.h" @@ -62,7 +63,7 @@ // Checks if `charset` is a valid charset, in lowercase ASCII. Takes `body` as // well, to ensure it uses the specified charset. -bool IsAllowedCharset(base::StringPiece charset, const std::string& body) { +bool IsAllowedCharset(std::string_view charset, const std::string& body) { if (charset == "utf-8" || charset.empty()) { return base::IsStringUTF8(body); } else if (charset == "us-ascii") { @@ -91,7 +92,7 @@ network::mojom::CredentialsMode::kSameOrigin; resource_request->headers.SetHeader( net::HttpRequestHeaders::kAccept, - base::StringPiece("application/javascript")); + std::string_view("application/javascript")); simple_url_loader_ = network::SimpleURLLoader::Create( std::move(resource_request), kTrafficAnnotation);
diff --git a/third_party/blink/common/shared_storage/shared_storage_utils.cc b/third_party/blink/common/shared_storage/shared_storage_utils.cc index b43b68e0..e1bcecc 100644 --- a/third_party/blink/common/shared_storage/shared_storage_utils.cc +++ b/third_party/blink/common/shared_storage/shared_storage_utils.cc
@@ -4,8 +4,9 @@ #include "third_party/blink/public/common/shared_storage/shared_storage_utils.h" +#include <string_view> + #include "base/metrics/histogram_functions.h" -#include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "third_party/blink/public/common/features.h" @@ -54,7 +55,7 @@ blink::features::kPrivateAggregationApiEnabledInSharedStorage.Get(); } -bool IsValidPrivateAggregationContextId(base::StringPiece context_id) { +bool IsValidPrivateAggregationContextId(std::string_view context_id) { return context_id.size() <= blink::kPrivateAggregationApiContextIdMaxLength && base::IsStringUTF8AllowingNoncharacters(context_id); }
diff --git a/third_party/blink/common/storage_key/storage_key.cc b/third_party/blink/common/storage_key/storage_key.cc index d64a2ff..a77ff35 100644 --- a/third_party/blink/common/storage_key/storage_key.cc +++ b/third_party/blink/common/storage_key/storage_key.cc
@@ -7,6 +7,7 @@ #include <memory> #include <ostream> #include <string> +#include <string_view> #include <tuple> #include "base/feature_list.h" @@ -49,7 +50,7 @@ // E.x.: "^0" becomes kTopLevelSite. // Expects `in` to have a length of 2. std::optional<EncodedAttribute> DeserializeAttributeSeparator( - const base::StringPiece& in) { + const std::string_view& in) { DCHECK_EQ(in.size(), 2U); uint8_t number = in[1] - '0'; @@ -66,7 +67,7 @@ // This is to indicate that there is a valid separator with both a '^' and a // uint8_t and some amount of encoded data. I.e.: "^09" has both a "^0" as the // separator and '9' as the encoded data. -bool ValidSeparatorWithData(base::StringPiece in, size_t pos_of_caret) { +bool ValidSeparatorWithData(std::string_view in, size_t pos_of_caret) { if (in.length() > pos_of_caret + 2 && in[pos_of_caret + 2] != '^') return true; @@ -78,7 +79,7 @@ namespace blink { // static -std::optional<StorageKey> StorageKey::Deserialize(base::StringPiece in) { +std::optional<StorageKey> StorageKey::Deserialize(std::string_view in) { // As per the Serialize() call, we have to expect one of the following // structures: // <StorageKey `key`.origin> + "/" + "^1" + <StorageKey @@ -167,7 +168,7 @@ // The origin is the portion up to, but not including, the caret // separator. - const base::StringPiece origin_substr = in.substr(0, pos_first_caret); + const std::string_view origin_substr = in.substr(0, pos_first_caret); key_origin = url::Origin::Create(GURL(origin_substr)); // The origin should not be opaque and the serialization should be @@ -178,7 +179,7 @@ // The top_level_site is the portion beyond the first separator. int length_of_site = pos_second_caret - (pos_first_caret + 2); - const base::StringPiece top_level_site_substr = + const std::string_view top_level_site_substr = in.substr(pos_first_caret + 2, length_of_site); key_top_level_site = net::SchemefulSite(GURL(top_level_site_substr)); @@ -223,7 +224,7 @@ // The origin is the portion up to, but not including, the caret // separator. - const base::StringPiece origin_substr = in.substr(0, pos_first_caret); + const std::string_view origin_substr = in.substr(0, pos_first_caret); key_origin = url::Origin::Create(GURL(origin_substr)); // The origin should not be opaque and the serialization should be @@ -234,7 +235,7 @@ // The ancestor_chain_bit is the portion beyond the first separator. int raw_bit; - const base::StringPiece raw_bit_substr = + const std::string_view raw_bit_substr = in.substr(pos_first_caret + 2, std::string::npos); if (!base::StringToInt(raw_bit_substr, &raw_bit)) { return std::nullopt; @@ -281,7 +282,7 @@ // The origin is the portion up to, but not including, the first // separator. - const base::StringPiece origin_substr = in.substr(0, pos_first_caret); + const std::string_view origin_substr = in.substr(0, pos_first_caret); key_origin = url::Origin::Create(GURL(origin_substr)); // The origin should not be opaque and the serialization should be @@ -293,10 +294,10 @@ // The first high 64 bits of the nonce are next, between the two // separators. int length_of_high = pos_second_caret - (pos_first_caret + 2); - base::StringPiece high_digits = + std::string_view high_digits = in.substr(pos_first_caret + 2, length_of_high); // The low 64 bits are last, after the second separator. - base::StringPiece low_digits = in.substr(pos_second_caret + 2); + std::string_view low_digits = in.substr(pos_second_caret + 2); uint64_t nonce_high = 0; uint64_t nonce_low = 0; @@ -353,7 +354,7 @@ // The origin is the portion up to, but not including, the first // separator. - const base::StringPiece origin_substr = in.substr(0, pos_first_caret); + const std::string_view origin_substr = in.substr(0, pos_first_caret); key_origin = url::Origin::Create(GURL(origin_substr)); // The origin should not be opaque and the serialization should be @@ -365,11 +366,11 @@ // The first high 64 bits of the sites's nonce are next, between the first // separators. int length_of_high = pos_second_caret - (pos_first_caret + 2); - base::StringPiece high_digits = + std::string_view high_digits = in.substr(pos_first_caret + 2, length_of_high); // The low 64 bits are next, after the second separator. int length_of_low = pos_third_caret - (pos_second_caret + 2); - base::StringPiece low_digits = + std::string_view low_digits = in.substr(pos_second_caret + 2, length_of_low); uint64_t nonce_high = 0; @@ -413,7 +414,7 @@ } // The precursor is the rest of the input. - const base::StringPiece url_precursor_substr = + const std::string_view url_precursor_substr = in.substr(pos_third_caret + 2); const GURL url_precursor(url_precursor_substr); const url::SchemeHostPort tuple_precursor(url_precursor); @@ -444,7 +445,7 @@ // static std::optional<StorageKey> StorageKey::DeserializeForLocalStorage( - base::StringPiece in) { + std::string_view in) { // We have to support the local storage specific variant that lacks the // trailing slash. const url::Origin maybe_origin = url::Origin::Create(GURL(in));
diff --git a/third_party/blink/common/storage_key/storage_key_unittest.cc b/third_party/blink/common/storage_key/storage_key_unittest.cc index 34bd7e0..134d801 100644 --- a/third_party/blink/common/storage_key/storage_key_unittest.cc +++ b/third_party/blink/common/storage_key/storage_key_unittest.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/public/common/storage_key/storage_key.h" #include <optional> +#include <string_view> #include <utility> #include "base/feature_list.h" @@ -36,7 +37,7 @@ protected: const net::SchemefulSite GetOpaqueSite(uint64_t high, uint64_t low, - base::StringPiece url_string) { + std::string_view url_string) { return net::SchemefulSite(url::Origin( url::Origin::Nonce(base::UnguessableToken::CreateForTesting(high, low)), url::SchemeHostPort(GURL(url_string))));
diff --git a/third_party/blink/common/thread_safe_browser_interface_broker_proxy.cc b/third_party/blink/common/thread_safe_browser_interface_broker_proxy.cc index 507f668..81c1f95 100644 --- a/third_party/blink/common/thread_safe_browser_interface_broker_proxy.cc +++ b/third_party/blink/common/thread_safe_browser_interface_broker_proxy.cc
@@ -4,7 +4,7 @@ #include "third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h" -#include "base/strings/string_piece.h" +#include <string_view> namespace blink { @@ -31,7 +31,7 @@ } bool ThreadSafeBrowserInterfaceBrokerProxy::SetBinderForTesting( - base::StringPiece interface_name, + std::string_view interface_name, Binder binder) { std::string name(interface_name);
diff --git a/third_party/blink/common/unique_name/unique_name_helper.cc b/third_party/blink/common/unique_name/unique_name_helper.cc index 55bafc11..88e79f7 100644 --- a/third_party/blink/common/unique_name/unique_name_helper.cc +++ b/third_party/blink/common/unique_name/unique_name_helper.cc
@@ -5,13 +5,13 @@ #include "third_party/blink/public/common/unique_name/unique_name_helper.h" #include <algorithm> +#include <string_view> #include <utility> #include "base/check_op.h" #include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "base/strings/string_number_conversions.h" -#include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/unguessable_token.h" #include "crypto/sha2.h" @@ -30,7 +30,7 @@ // FrameAdapter overrides: bool IsMainFrame() const override { return false; } - bool IsCandidateUnique(base::StringPiece name) const override { + bool IsCandidateUnique(std::string_view name) const override { return parent_->IsCandidateUnique(name); } int GetSiblingCount() const override { @@ -45,7 +45,7 @@ } std::vector<std::string> CollectAncestorNames( BeginPoint begin_point, - bool (*should_stop)(base::StringPiece)) const override { + bool (*should_stop)(std::string_view)) const override { DCHECK_EQ(BeginPoint::kParentFrame, begin_point); return parent_->CollectAncestorNames(BeginPoint::kThisFrame, should_stop); } @@ -68,7 +68,7 @@ // exactly 80 characters. constexpr size_t kMaxRequestedNameSize = 80; -bool IsNameWithFramePath(base::StringPiece name) { +bool IsNameWithFramePath(std::string_view name) { return base::StartsWith(name, kFramePathPrefix) && base::EndsWith(name, "-->") && (kFramePathPrefixLength + kFramePathSuffixLength) < name.size(); @@ -146,7 +146,7 @@ } std::string CalculateNameInternal(const FrameAdapter* frame, - base::StringPiece name) { + std::string_view name) { if (!name.empty() && frame->IsCandidateUnique(name) && name != "_blank") return std::string(name); @@ -158,7 +158,7 @@ return AppendUniqueSuffix(frame, candidate, likely_unique_suffix); } -std::string CalculateFrameHash(base::StringPiece name) { +std::string CalculateFrameHash(std::string_view name) { DCHECK_GT(name.size(), kMaxRequestedNameSize); std::string hashed_name; @@ -170,8 +170,7 @@ return hashed_name; } -std::string CalculateNewName(const FrameAdapter* frame, - base::StringPiece name) { +std::string CalculateNewName(const FrameAdapter* frame, std::string_view name) { std::string hashed_name; // By default, |name| is the browsing context name, which can be arbitrarily // long. Since the generated name is part of history entries and FrameState, @@ -313,7 +312,7 @@ } std::string UniqueNameHelper::ExtractStableNameForTesting( - base::StringPiece unique_name) { + std::string_view unique_name) { size_t i = unique_name.rfind(kDynamicFrameMarker); if (i == std::string::npos) return std::string(unique_name);
diff --git a/third_party/blink/common/unique_name/unique_name_helper_unittest.cc b/third_party/blink/common/unique_name/unique_name_helper_unittest.cc index 082d1907..25aa56eb 100644 --- a/third_party/blink/common/unique_name/unique_name_helper_unittest.cc +++ b/third_party/blink/common/unique_name/unique_name_helper_unittest.cc
@@ -7,12 +7,12 @@ #include <map> #include <memory> #include <optional> +#include <string_view> #include <vector> #include "base/auto_reset.h" #include "base/memory/raw_ptr.h" #include "base/ranges/algorithm.h" -#include "base/strings/string_piece.h" #include "base/strings/utf_string_conversions.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/common/page_state/page_state_serialization.h" @@ -49,7 +49,7 @@ bool IsMainFrame() const override { return !parent_; } - bool IsCandidateUnique(base::StringPiece name) const override { + bool IsCandidateUnique(std::string_view name) const override { auto* top = this; while (top->parent_) top = top->parent_; @@ -66,7 +66,7 @@ std::vector<std::string> CollectAncestorNames( BeginPoint begin_point, - bool (*should_stop)(base::StringPiece)) const override { + bool (*should_stop)(std::string_view)) const override { EXPECT_EQ(BeginPoint::kParentFrame, begin_point); std::vector<std::string> result; for (auto* adapter = parent_.get(); adapter; adapter = adapter->parent_) { @@ -141,7 +141,7 @@ } } - bool CheckUniqueness(base::StringPiece name) const { + bool CheckUniqueness(std::string_view name) const { if (name == GetNameForCurrentMode()) return false; for (TestFrameAdapter* child : children_) {
diff --git a/third_party/blink/common/web_package/web_package_request_matcher.cc b/third_party/blink/common/web_package/web_package_request_matcher.cc index 71f0bac..ab10879 100644 --- a/third_party/blink/common/web_package/web_package_request_matcher.cc +++ b/third_party/blink/common/web_package/web_package_request_matcher.cc
@@ -7,6 +7,7 @@ #include <limits> #include <memory> #include <optional> +#include <string_view> #include <utility> #include "base/containers/contains.h" @@ -263,7 +264,7 @@ // https://tools.ietf.org/id/draft-ietf-httpbis-variants-04.html#variants std::optional<std::vector<std::pair<std::string, std::vector<std::string>>>> -ParseVariants(const base::StringPiece& str) { +ParseVariants(const std::string_view& str) { // Compatibility note: Draft 4 of Variants // (https://tools.ietf.org/id/draft-ietf-httpbis-variants-04.html#variants) // uses a custom format for the Variants-04 header, which this method attempts @@ -313,7 +314,7 @@ // https://tools.ietf.org/id/draft-ietf-httpbis-variants-04.html#variant-key std::optional<std::vector<std::vector<std::string>>> ParseVariantKey( - const base::StringPiece& str, + const std::string_view& str, size_t num_variant_axes) { // Compatibility note: Draft 4 of Variants // (https://tools.ietf.org/id/draft-ietf-httpbis-variants-04.html#variant-key)
diff --git a/third_party/blink/public/common/custom_handlers/protocol_handler_utils.h b/third_party/blink/public/common/custom_handlers/protocol_handler_utils.h index 86a4240..328b043 100644 --- a/third_party/blink/public/common/custom_handlers/protocol_handler_utils.h +++ b/third_party/blink/public/common/custom_handlers/protocol_handler_utils.h
@@ -5,7 +5,8 @@ #ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_CUSTOM_HANDLERS_PROTOCOL_HANDLER_UTILS_H_ #define THIRD_PARTY_BLINK_PUBLIC_COMMON_CUSTOM_HANDLERS_PROTOCOL_HANDLER_UTILS_H_ -#include "base/strings/string_piece.h" +#include <string_view> + #include "third_party/blink/public/common/common_export.h" #include "third_party/blink/public/common/security/protocol_handler_security_level.h" @@ -36,7 +37,7 @@ // starts with a prefix indicating a custom scheme i.e. an ASCII case // insensitive match to the string "web+" (or alternatively "ext+" if allowed). bool BLINK_COMMON_EXPORT -IsValidCustomHandlerScheme(const base::StringPiece scheme, +IsValidCustomHandlerScheme(const std::string_view scheme, ProtocolHandlerSecurityLevel security_level, bool* has_custom_scheme_prefix = nullptr); @@ -49,7 +50,7 @@ // the spec states that it should throw a SyntaxError DOMException. URLSyntaxErrorCode BLINK_COMMON_EXPORT IsValidCustomHandlerURLSyntax(const GURL& full_url, - const base::StringPiece& user_url); + const std::string_view& user_url); // This function returns whether the specified URL is allowed as a protocol // handler parameter, as described in steps 6 and 7 (except same origin) of the
diff --git a/third_party/blink/public/common/interest_group/ad_display_size_utils.h b/third_party/blink/public/common/interest_group/ad_display_size_utils.h index f9bf6a5..2a3daf0 100644 --- a/third_party/blink/public/common/interest_group/ad_display_size_utils.h +++ b/third_party/blink/public/common/interest_group/ad_display_size_utils.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_PUBLIC_COMMON_INTEREST_GROUP_AD_DISPLAY_SIZE_UTILS_H_ #include <string> +#include <string_view> #include <tuple> #include "third_party/blink/public/common/common_export.h" @@ -35,7 +36,7 @@ // - " 25sw " // - "100" BLINK_COMMON_EXPORT std::tuple<double, blink::AdSize::LengthUnit> -ParseAdSizeString(const base::StringPiece input); +ParseAdSizeString(const std::string_view input); BLINK_COMMON_EXPORT bool IsValidAdSize(const blink::AdSize& size);
diff --git a/third_party/blink/public/common/loader/mime_sniffing_url_loader.h b/third_party/blink/public/common/loader/mime_sniffing_url_loader.h index 0d07849..2e584ef1 100644 --- a/third_party/blink/public/common/loader/mime_sniffing_url_loader.h +++ b/third_party/blink/public/common/loader/mime_sniffing_url_loader.h
@@ -10,7 +10,6 @@ #include "base/functional/callback.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" -#include "base/strings/string_piece.h" #include "base/task/sequenced_task_runner.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_remote.h"
diff --git a/third_party/blink/public/common/loader/throttling_url_loader.h b/third_party/blink/public/common/loader/throttling_url_loader.h index d3db7655..dca20d2a 100644 --- a/third_party/blink/public/common/loader/throttling_url_loader.h +++ b/third_party/blink/public/common/loader/throttling_url_loader.h
@@ -7,12 +7,12 @@ #include <memory> #include <optional> +#include <string_view> #include "base/functional/callback.h" #include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" -#include "base/strings/string_piece.h" #include "base/time/time.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_remote.h" @@ -161,11 +161,11 @@ // datapipe endpoints. network::mojom::URLLoaderClientEndpointsPtr Unbind(); - void CancelWithError(int error_code, base::StringPiece custom_reason); + void CancelWithError(int error_code, std::string_view custom_reason); void CancelWithExtendedError(int error_code, int extended_reason_code, - base::StringPiece custom_reason); + std::string_view custom_reason); bool response_intercepted() const { return response_intercepted_; } @@ -239,7 +239,7 @@ mojo::ScopedDataPipeConsumerHandle* body); // Disconnects the client connection and releases the URLLoader. - void DisconnectClient(base::StringPiece custom_description); + void DisconnectClient(std::string_view custom_description); enum DeferredStage { DEFERRED_NONE,
diff --git a/third_party/blink/public/common/loader/url_loader_throttle.h b/third_party/blink/public/common/loader/url_loader_throttle.h index 6439f294..b92d5c1e 100644 --- a/third_party/blink/public/common/loader/url_loader_throttle.h +++ b/third_party/blink/public/common/loader/url_loader_throttle.h
@@ -6,10 +6,10 @@ #define THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_URL_LOADER_THROTTLE_H_ #include <string> +#include <string_view> #include <vector> #include "base/memory/raw_ptr.h" -#include "base/strings/string_piece.h" #include "base/types/strong_alias.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_remote.h" @@ -56,14 +56,13 @@ // Cancels the resource load with the specified error code and an optional, // application-defined reason description. virtual void CancelWithError(int error_code, - base::StringPiece custom_reason = "") = 0; + std::string_view custom_reason = "") = 0; // Cancels the resource load with the specified error code and an optional, // application-defined reason description with optional extended_reason(). virtual void CancelWithExtendedError(int error_code, int extended_reason_code, - base::StringPiece custom_reason = "") { - } + std::string_view custom_reason = "") {} // Resumes the deferred resource load. It is a no-op if the resource load is // not deferred or has already been canceled.
diff --git a/third_party/blink/public/common/manifest/manifest_mojom_traits.h b/third_party/blink/public/common/manifest/manifest_mojom_traits.h index 85165c4..b05ff81 100644 --- a/third_party/blink/public/common/manifest/manifest_mojom_traits.h +++ b/third_party/blink/public/common/manifest/manifest_mojom_traits.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_PUBLIC_COMMON_MANIFEST_MANIFEST_MOJOM_TRAITS_H_ #include <optional> +#include <string_view> #include <vector> #include "base/strings/utf_string_conversions.h" @@ -19,14 +20,14 @@ namespace mojo { namespace internal { -inline base::StringPiece16 TruncateString16(const std::u16string& string) { +inline std::u16string_view TruncateString16(const std::u16string& string) { // We restrict the maximum length for all the strings inside the Manifest // when it is sent over Mojo. The renderer process truncates the strings // before sending the Manifest and the browser process validates that. - return base::StringPiece16(string).substr(0, 4 * 1024); + return std::u16string_view(string).substr(0, 4 * 1024); } -inline std::optional<base::StringPiece16> TruncateOptionalString16( +inline std::optional<std::u16string_view> TruncateOptionalString16( const std::optional<std::u16string>& string) { if (!string) return std::nullopt; @@ -34,7 +35,7 @@ return TruncateString16(*string); } -inline std::optional<base::StringPiece16> ConvertAndTruncateOptionalString( +inline std::optional<std::u16string_view> ConvertAndTruncateOptionalString( const std::optional<std::string>& string) { if (!string) return std::nullopt; @@ -52,7 +53,7 @@ return icon.src; } - static base::StringPiece16 type( + static std::u16string_view type( const ::blink::Manifest::ImageResource& icon) { return internal::TruncateString16(icon.type); } @@ -74,17 +75,17 @@ struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::ManifestShortcutItemDataView, ::blink::Manifest::ShortcutItem> { - static base::StringPiece16 name( + static std::u16string_view name( const ::blink::Manifest::ShortcutItem& shortcut) { return internal::TruncateString16(shortcut.name); } - static std::optional<base::StringPiece16> short_name( + static std::optional<std::u16string_view> short_name( const ::blink::Manifest::ShortcutItem& shortcut) { return internal::TruncateOptionalString16(shortcut.short_name); } - static std::optional<base::StringPiece16> description( + static std::optional<std::u16string_view> description( const ::blink::Manifest::ShortcutItem& shortcut) { return internal::TruncateOptionalString16(shortcut.description); } @@ -106,7 +107,7 @@ struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::ManifestRelatedApplicationDataView, ::blink::Manifest::RelatedApplication> { - static std::optional<base::StringPiece16> platform( + static std::optional<std::u16string_view> platform( const ::blink::Manifest::RelatedApplication& related_application) { return internal::TruncateOptionalString16(related_application.platform); } @@ -116,7 +117,7 @@ return related_application.url; } - static std::optional<base::StringPiece16> id( + static std::optional<std::u16string_view> id( const ::blink::Manifest::RelatedApplication& related_application) { return internal::TruncateOptionalString16(related_application.id); } @@ -129,14 +130,14 @@ struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::ManifestFileFilterDataView, ::blink::Manifest::FileFilter> { - static base::StringPiece16 name( + static std::u16string_view name( const ::blink::Manifest::FileFilter& share_target_file) { return internal::TruncateString16(share_target_file.name); } - static const std::vector<base::StringPiece16> accept( + static const std::vector<std::u16string_view> accept( const ::blink::Manifest::FileFilter& share_target_file) { - std::vector<base::StringPiece16> accept_types; + std::vector<std::u16string_view> accept_types; for (const std::u16string& accept_type : share_target_file.accept) accept_types.push_back(internal::TruncateString16(accept_type)); @@ -152,15 +153,15 @@ struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::ManifestShareTargetParamsDataView, ::blink::Manifest::ShareTargetParams> { - static const std::optional<base::StringPiece16> text( + static const std::optional<std::u16string_view> text( const ::blink::Manifest::ShareTargetParams& share_target_params) { return internal::TruncateOptionalString16(share_target_params.text); } - static const std::optional<base::StringPiece16> title( + static const std::optional<std::u16string_view> title( const ::blink::Manifest::ShareTargetParams& share_target_params) { return internal::TruncateOptionalString16(share_target_params.title); } - static const std::optional<base::StringPiece16> url( + static const std::optional<std::u16string_view> url( const ::blink::Manifest::ShareTargetParams& share_target_params) { return internal::TruncateOptionalString16(share_target_params.url); } @@ -214,17 +215,17 @@ struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::ManifestTranslationItemDataView, ::blink::Manifest::TranslationItem> { - static std::optional<base::StringPiece16> name( + static std::optional<std::u16string_view> name( const ::blink::Manifest::TranslationItem& translation) { return internal::ConvertAndTruncateOptionalString(translation.name); } - static std::optional<base::StringPiece16> short_name( + static std::optional<std::u16string_view> short_name( const ::blink::Manifest::TranslationItem& translation) { return internal::ConvertAndTruncateOptionalString(translation.short_name); } - static std::optional<base::StringPiece16> description( + static std::optional<std::u16string_view> description( const ::blink::Manifest::TranslationItem& translation) { return internal::ConvertAndTruncateOptionalString(translation.description); }
diff --git a/third_party/blink/public/common/manifest/manifest_util.h b/third_party/blink/public/common/manifest/manifest_util.h index 96e2c567..e92789bc 100644 --- a/third_party/blink/public/common/manifest/manifest_util.h +++ b/third_party/blink/public/common/manifest/manifest_util.h
@@ -8,7 +8,6 @@ #include <optional> #include <string> -#include "base/strings/string_piece.h" #include "services/device/public/mojom/screen_orientation_lock_types.mojom-shared.h" #include "third_party/blink/public/common/common_export.h" #include "third_party/blink/public/common/manifest/manifest.h"
diff --git a/third_party/blink/public/common/origin_trials/origin_trial_policy.h b/third_party/blink/public/common/origin_trials/origin_trial_policy.h index 09d2ef4c..978b937d8 100644 --- a/third_party/blink/public/common/origin_trials/origin_trial_policy.h +++ b/third_party/blink/public/common/origin_trials/origin_trial_policy.h
@@ -6,9 +6,9 @@ #define THIRD_PARTY_BLINK_PUBLIC_COMMON_ORIGIN_TRIALS_ORIGIN_TRIAL_POLICY_H_ #include <set> +#include <string_view> #include <vector> -#include "base/strings/string_piece.h" #include "third_party/blink/public/common/origin_trials/origin_trial_public_key.h" #include "url/gurl.h" @@ -22,13 +22,13 @@ virtual bool IsOriginTrialsSupported() const { return false; } virtual const std::vector<OriginTrialPublicKey>& GetPublicKeys() const = 0; - virtual bool IsFeatureDisabled(base::StringPiece feature) const { + virtual bool IsFeatureDisabled(std::string_view feature) const { return false; } - virtual bool IsFeatureDisabledForUser(base::StringPiece feature) const { + virtual bool IsFeatureDisabledForUser(std::string_view feature) const { return false; } - virtual bool IsTokenDisabled(base::StringPiece token_signature) const { + virtual bool IsTokenDisabled(std::string_view token_signature) const { return false; } virtual bool IsOriginSecure(const GURL& url) const { return false; }
diff --git a/third_party/blink/public/common/origin_trials/origin_trials.h b/third_party/blink/public/common/origin_trials/origin_trials.h index 8cc1ff4..c694332 100644 --- a/third_party/blink/public/common/origin_trials/origin_trials.h +++ b/third_party/blink/public/common/origin_trials/origin_trials.h
@@ -7,8 +7,9 @@ #ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_ORIGIN_TRIALS_ORIGIN_TRIALS_H_ #define THIRD_PARTY_BLINK_PUBLIC_COMMON_ORIGIN_TRIALS_ORIGIN_TRIALS_H_ +#include <string_view> + #include "base/containers/span.h" -#include "base/strings/string_piece.h" #include "third_party/blink/public/common/common_export.h" #include "third_party/blink/public/mojom/origin_trial_feature/origin_trial_feature.mojom-forward.h" @@ -21,28 +22,28 @@ namespace origin_trials { // Return true if there is a feature with the passed |trial_name|. -BLINK_COMMON_EXPORT bool IsTrialValid(base::StringPiece trial_name); +BLINK_COMMON_EXPORT bool IsTrialValid(std::string_view trial_name); // Return true if |trial_name| can be enabled in an insecure context. BLINK_COMMON_EXPORT bool IsTrialEnabledForInsecureContext( - base::StringPiece trial_name); + std::string_view trial_name); // Return true if |trial_name| can be enabled from third party origins. BLINK_COMMON_EXPORT bool IsTrialEnabledForThirdPartyOrigins( - base::StringPiece trial_name); + std::string_view trial_name); // Return true if |trial_name| can be enabled for read access by the browser // process. BLINK_COMMON_EXPORT bool IsTrialEnabledForBrowserProcessReadAccess( - base::StringPiece trial_name); + std::string_view trial_name); // Returns true if |trial_name| should be enabled until the next response // from the same origin is received. BLINK_COMMON_EXPORT bool IsTrialPersistentToNextResponse( - base::StringPiece trial_name); + std::string_view trial_name); // Return true if |trial_name| is a deprecation trial. -BLINK_COMMON_EXPORT bool IsDeprecationTrial(base::StringPiece trial_name); +BLINK_COMMON_EXPORT bool IsDeprecationTrial(std::string_view trial_name); // Returns the trial type of the given |feature|. BLINK_COMMON_EXPORT OriginTrialType @@ -52,7 +53,7 @@ // The trial name MUST be valid (call IsTrialValid() before calling this // function). BLINK_COMMON_EXPORT base::span<const blink::mojom::OriginTrialFeature> -FeaturesForTrial(base::StringPiece trial_name); +FeaturesForTrial(std::string_view trial_name); // Return the list of features which will also be enabled if the given // |feature| is enabled.
diff --git a/third_party/blink/public/common/origin_trials/trial_token.h b/third_party/blink/public/common/origin_trials/trial_token.h index 12755f4..3ec5c3399 100644 --- a/third_party/blink/public/common/origin_trials/trial_token.h +++ b/third_party/blink/public/common/origin_trials/trial_token.h
@@ -7,8 +7,8 @@ #include <memory> #include <string> +#include <string_view> -#include "base/strings/string_piece.h" #include "base/time/time.h" #include "third_party/blink/public/common/common_export.h" #include "third_party/blink/public/common/origin_trials/origin_trial_public_key.h" @@ -62,7 +62,7 @@ // correctly formatted and signed by the supplied public key, and can be // parsed. static std::unique_ptr<TrialToken> From( - base::StringPiece token_text, + std::string_view token_text, const OriginTrialPublicKey& public_key, OriginTrialTokenStatus* out_status); @@ -103,7 +103,7 @@ // parameters, respectively. Otherwise,the return code indicates what was // wrong with the string, and |out_token_payload|, |out_token_signature| and // |out_token_version| are unchanged. - static OriginTrialTokenStatus Extract(base::StringPiece token_text, + static OriginTrialTokenStatus Extract(std::string_view token_text, const OriginTrialPublicKey& public_key, std::string* out_token_payload, std::string* out_token_signature, @@ -115,10 +115,10 @@ const uint8_t version); bool ValidateOrigin(const url::Origin& origin) const; - bool ValidateFeatureName(base::StringPiece feature_name) const; + bool ValidateFeatureName(std::string_view feature_name) const; bool ValidateDate(const base::Time& now) const; - static bool ValidateSignature(base::StringPiece signature_text, + static bool ValidateSignature(std::string_view signature_text, const std::string& data, const OriginTrialPublicKey& public_key);
diff --git a/third_party/blink/public/common/origin_trials/trial_token_validator.h b/third_party/blink/public/common/origin_trials/trial_token_validator.h index 1eb95de..1c4ea94 100644 --- a/third_party/blink/public/common/origin_trials/trial_token_validator.h +++ b/third_party/blink/public/common/origin_trials/trial_token_validator.h
@@ -7,11 +7,12 @@ #include <memory> #include <string> +#include <string_view> #include <vector> + #include "base/containers/flat_map.h" #include "base/containers/span.h" #include "base/functional/callback.h" -#include "base/strings/string_piece.h" #include "base/time/time.h" #include "third_party/blink/public/common/common_export.h" #include "third_party/blink/public/common/origin_trials/trial_token.h" @@ -64,7 +65,7 @@ std::vector<std::string /* token */>>; // Convenience function for non-third-party tokens. - virtual TrialTokenResult ValidateTokenAndTrial(base::StringPiece token, + virtual TrialTokenResult ValidateTokenAndTrial(std::string_view token, const url::Origin& origin, base::Time current_time) const; @@ -78,7 +79,7 @@ // `third_party_origins` are checked to ensure the token is validated // against a secure origin. virtual TrialTokenResult ValidateTokenAndTrial( - base::StringPiece token, + std::string_view token, const url::Origin& origin, base::span<const url::Origin> third_party_origins, base::Time current_time) const; @@ -89,7 +90,7 @@ // The browser process should call `ValidateTokenAndTrial` instead, which // takes care of the origin security evaluation internally. virtual TrialTokenResult ValidateTokenAndTrialWithOriginInfo( - base::StringPiece token, + std::string_view token, const OriginInfo& origin, base::span<const OriginInfo> third_party_origins, base::Time current_time) const; @@ -99,7 +100,7 @@ // the feature this token enables, the expiry time of the token and whether it // is a third-party token. Otherwise, only the status will be set. // This method is thread-safe. - virtual TrialTokenResult ValidateToken(base::StringPiece token, + virtual TrialTokenResult ValidateToken(std::string_view token, const url::Origin& origin, base::Time current_time) const; // Validates a token for the given `origin`. If identified as a third-party @@ -108,7 +109,7 @@ // empty. Returns the same result as ValidateToken() above. // This method is thread-safe. virtual TrialTokenResult ValidateToken( - base::StringPiece token, + std::string_view token, const url::Origin& origin, base::span<const url::Origin> third_party_origins, base::Time current_time) const; @@ -119,28 +120,28 @@ // ensure that it was a valid token for the origin to which we are applying // it. virtual bool RevalidateTokenAndTrial( - const base::StringPiece trial_name, + const std::string_view trial_name, const base::Time token_expiry_time, const TrialToken::UsageRestriction token_usage_restriction, - const base::StringPiece token_signature, + const std::string_view token_signature, const base::Time current_time) const; // Return the set of features enabled by the given `trial_name`. // TODO(crbug.com/1227440): Refactor this to be a part of more general // validation flows instead of a stand-alone. std::vector<mojom::OriginTrialFeature> FeaturesEnabledByTrial( - base::StringPiece trial_name); + std::string_view trial_name); // Return true if the trial in question enables at least one feature on the // current OS platform. // TODO(crbug.com/1227440): Refactor this to be a part of more general // validation flows instead of a stand-alone. - bool TrialEnablesFeaturesForOS(base::StringPiece trial_name); + bool TrialEnablesFeaturesForOS(std::string_view trial_name); // `request` must not be nullptr. // NOTE: This is not currently used, but remains here for future trials. bool RequestEnablesFeature(const net::URLRequest* request, - base::StringPiece feature_name, + std::string_view feature_name, base::Time current_time) const; // Returns whether the given response for the given URL enables the named @@ -149,7 +150,7 @@ // `response_headers` must not be nullptr. bool RequestEnablesFeature(const GURL& request_url, const net::HttpResponseHeaders* response_headers, - base::StringPiece feature_name, + std::string_view feature_name, base::Time current_time) const; // Similar to `RequestEnablesFeature()`, but for Deprecation Trials that may @@ -166,7 +167,7 @@ bool RequestEnablesDeprecatedFeature( const GURL& request_url, const net::HttpResponseHeaders* response_headers, - base::StringPiece feature_name, + std::string_view feature_name, base::Time current_time) const; // Returns all valid tokens in `headers`. @@ -194,7 +195,7 @@ bool ResponseBearsValidTokenForFeature( const GURL& request_url, const net::HttpResponseHeaders& response_headers, - base::StringPiece feature_name, + std::string_view feature_name, base::Time current_time) const; }; // class TrialTokenValidator
diff --git a/third_party/blink/public/common/permissions_policy/policy_helper_public.h b/third_party/blink/public/common/permissions_policy/policy_helper_public.h index c9d88765..a792a0d 100644 --- a/third_party/blink/public/common/permissions_policy/policy_helper_public.h +++ b/third_party/blink/public/common/permissions_policy/policy_helper_public.h
@@ -5,18 +5,19 @@ #ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_PERMISSIONS_POLICY_POLICY_HELPER_PUBLIC_H_ #define THIRD_PARTY_BLINK_PUBLIC_COMMON_PERMISSIONS_POLICY_POLICY_HELPER_PUBLIC_H_ +#include <string_view> + #include "base/containers/flat_map.h" -#include "base/strings/string_piece.h" #include "third_party/blink/public/common/permissions_policy/permissions_policy.h" #include "third_party/blink/public/mojom/permissions_policy/permissions_policy.mojom-shared.h" namespace blink { using PermissionsPolicyFeatureToNameMap = - base::flat_map<mojom::PermissionsPolicyFeature, base::StringPiece>; + base::flat_map<mojom::PermissionsPolicyFeature, std::string_view>; using PermissionsPolicyNameToFeatureMap = - base::flat_map<base::StringPiece, mojom::PermissionsPolicyFeature>; + base::flat_map<std::string_view, mojom::PermissionsPolicyFeature>; // This method defines the feature names which will be recognized by the parser // for the Permissions-Policy HTTP header and the <iframe> "allow" attribute, as
diff --git a/third_party/blink/public/common/privacy_budget/identifiable_token.h b/third_party/blink/public/common/privacy_budget/identifiable_token.h index 2ae5ffe..5c841c9 100644 --- a/third_party/blink/public/common/privacy_budget/identifiable_token.h +++ b/third_party/blink/public/common/privacy_budget/identifiable_token.h
@@ -6,11 +6,11 @@ #define THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_BUDGET_IDENTIFIABLE_TOKEN_H_ #include <cstdint> +#include <string_view> #include <type_traits> #include "base/containers/span.h" #include "base/numerics/safe_conversions.h" -#include "base/strings/string_piece.h" #include "base/template_util.h" #include "third_party/blink/public/common/privacy_budget/identifiability_internal_templates.h" #include "third_party/blink/public/common/privacy_budget/identifiability_metrics.h" @@ -40,9 +40,9 @@ // // 1. std::string -> const std::string& // : lvalue -> lvalue reference + cv-qualification -// 2. const std::string& -> base::StringPiece +// 2. const std::string& -> std::string_view // : user-defined conversion via constructor -// base::StringPiece(const std::string&) +// std::string_view(const std::string&) // // However, when used within a builder expression, the user-defined conversion // doesn't occur due to there not being a single user defined conversion from @@ -148,7 +148,7 @@ // Care must be taken when using string types with IdentifiableToken() since // there's not privacy expectation in the resulting token value. If the string // used as an input is privacy sensitive, it should not be passed in as-is. - explicit IdentifiableToken(base::StringPiece s) + explicit IdentifiableToken(std::string_view s) : IdentifiableToken(base::as_bytes(base::make_span(s))) { // The cart is before the horse, but it's a static_assert<>. static_assert(
diff --git a/third_party/blink/public/common/privacy_budget/identifiable_token_builder.h b/third_party/blink/public/common/privacy_budget/identifiable_token_builder.h index f328321..d7e133c 100644 --- a/third_party/blink/public/common/privacy_budget/identifiable_token_builder.h +++ b/third_party/blink/public/common/privacy_budget/identifiable_token_builder.h
@@ -6,9 +6,9 @@ #define THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_BUDGET_IDENTIFIABLE_TOKEN_BUILDER_H_ #include <array> +#include <string_view> #include "base/containers/span.h" -#include "base/strings/string_piece.h" #include "base/template_util.h" #include "third_party/blink/public/common/common_export.h" #include "third_party/blink/public/common/privacy_budget/identifiability_internal_templates.h" @@ -76,7 +76,7 @@ // adding the contents of the buffer. Doing so will achieve the same ends as // AddAtomic(). IdentifiableTokenBuilder& AddAtomic(ByteSpan buffer); - IdentifiableTokenBuilder& AddAtomic(base::StringPiece string) { + IdentifiableTokenBuilder& AddAtomic(std::string_view string) { return AddAtomic(base::as_bytes(base::make_span(string))); }
diff --git a/third_party/blink/public/common/safe_url_pattern_mojom_traits.h b/third_party/blink/public/common/safe_url_pattern_mojom_traits.h index cdad823..153fb71 100644 --- a/third_party/blink/public/common/safe_url_pattern_mojom_traits.h +++ b/third_party/blink/public/common/safe_url_pattern_mojom_traits.h
@@ -5,6 +5,8 @@ #ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_SAFE_URL_PATTERN_MOJOM_TRAITS_H_ #define THIRD_PARTY_BLINK_PUBLIC_COMMON_SAFE_URL_PATTERN_MOJOM_TRAITS_H_ +#include <string_view> + #include "mojo/public/cpp/bindings/struct_traits.h" #include "third_party/blink/public/common/common_export.h" #include "third_party/blink/public/common/safe_url_pattern.h" @@ -14,8 +16,8 @@ namespace mojo { namespace internal { -inline base::StringPiece TruncateString(const std::string& string) { - return base::StringPiece(string).substr(0, 4 * 1024); +inline std::string_view TruncateString(const std::string& string) { + return std::string_view(string).substr(0, 4 * 1024); } } // namespace internal @@ -44,7 +46,7 @@ template <> struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::FixedPatternDataView, ::liburlpattern::Part> { - static base::StringPiece value(const ::liburlpattern::Part& part) { + static std::string_view value(const ::liburlpattern::Part& part) { return internal::TruncateString(part.value); } @@ -55,16 +57,16 @@ template <> struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::WildcardPatternDataView, ::liburlpattern::Part> { - static base::StringPiece name(const ::liburlpattern::Part& part) { + static std::string_view name(const ::liburlpattern::Part& part) { return internal::TruncateString(part.name); } - static base::StringPiece prefix(const ::liburlpattern::Part& part) { + static std::string_view prefix(const ::liburlpattern::Part& part) { return internal::TruncateString(part.prefix); } - static base::StringPiece value(const ::liburlpattern::Part& part) { + static std::string_view value(const ::liburlpattern::Part& part) { return internal::TruncateString(part.value); } - static base::StringPiece suffix(const ::liburlpattern::Part& part) { + static std::string_view suffix(const ::liburlpattern::Part& part) { return internal::TruncateString(part.suffix); }
diff --git a/third_party/blink/public/common/shared_storage/shared_storage_utils.h b/third_party/blink/public/common/shared_storage/shared_storage_utils.h index 166eb059..e722ce63 100644 --- a/third_party/blink/public/common/shared_storage/shared_storage_utils.h +++ b/third_party/blink/public/common/shared_storage/shared_storage_utils.h
@@ -6,8 +6,8 @@ #define THIRD_PARTY_BLINK_PUBLIC_COMMON_SHARED_STORAGE_SHARED_STORAGE_UTILS_H_ #include <cstdlib> +#include <string_view> -#include "base/strings/string_piece.h" #include "third_party/blink/public/common/common_export.h" namespace blink { @@ -81,7 +81,7 @@ // Whether the `context_id` is valid UTF-8 and has a valid length. BLINK_COMMON_EXPORT bool IsValidPrivateAggregationContextId( - base::StringPiece context_id); + std::string_view context_id); // Maximum allowed length of the context_id string. constexpr int kPrivateAggregationApiContextIdMaxLength = 64;
diff --git a/third_party/blink/public/common/storage_key/storage_key.h b/third_party/blink/public/common/storage_key/storage_key.h index 57b22be2..6de0d5f 100644 --- a/third_party/blink/public/common/storage_key/storage_key.h +++ b/third_party/blink/public/common/storage_key/storage_key.h
@@ -8,8 +8,8 @@ #include <iosfwd> #include <optional> #include <string> +#include <string_view> -#include "base/strings/string_piece.h" #include "base/unguessable_token.h" #include "net/base/isolation_info.h" #include "net/base/schemeful_site.h" @@ -161,12 +161,12 @@ // (3D) Deserialization from string. // Note that if the deserialization wouldn't create a well-formed StorageKey // then nullopt is returned. This function must never DCHECK. - static std::optional<StorageKey> Deserialize(base::StringPiece in); + static std::optional<StorageKey> Deserialize(std::string_view in); // A variant of deserialization for localStorage code only. // You almost always want to use Deserialize() instead. static std::optional<StorageKey> DeserializeForLocalStorage( - base::StringPiece in); + std::string_view in); // (3E) Serialization to string; origin must not be opaque. // Note that this function will DCHECK if the origin is opaque.
diff --git a/third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h b/third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h index 5cac0d04..34fe542 100644 --- a/third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h +++ b/third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h
@@ -7,9 +7,9 @@ #include <map> #include <string> +#include <string_view> #include "base/memory/ref_counted.h" -#include "base/strings/string_piece.h" #include "base/synchronization/lock.h" #include "mojo/public/cpp/bindings/generic_pending_receiver.h" #include "third_party/blink/public/common/common_export.h" @@ -41,7 +41,7 @@ // Binder was non-null and an existing Binder was already registered for the // named interface. using Binder = base::RepeatingCallback<void(mojo::ScopedMessagePipeHandle)>; - bool SetBinderForTesting(base::StringPiece interface_name, Binder); + bool SetBinderForTesting(std::string_view interface_name, Binder); protected: friend class base::RefCountedThreadSafe<
diff --git a/third_party/blink/public/common/unique_name/unique_name_helper.h b/third_party/blink/public/common/unique_name/unique_name_helper.h index d30cb382..22cdf00 100644 --- a/third_party/blink/public/common/unique_name/unique_name_helper.h +++ b/third_party/blink/public/common/unique_name/unique_name_helper.h
@@ -6,10 +6,10 @@ #define THIRD_PARTY_BLINK_PUBLIC_COMMON_UNIQUE_NAME_UNIQUE_NAME_HELPER_H_ #include <string> +#include <string_view> #include <vector> #include "base/memory/raw_ptr.h" -#include "base/strings/string_piece.h" #include "third_party/blink/public/common/common_export.h" namespace blink { @@ -77,7 +77,7 @@ virtual ~FrameAdapter(); virtual bool IsMainFrame() const = 0; - virtual bool IsCandidateUnique(base::StringPiece name) const = 0; + virtual bool IsCandidateUnique(std::string_view name) const = 0; // Returns the number of sibling frames of this frame. Note this should not // include this frame in the count. virtual int GetSiblingCount() const = 0; @@ -100,7 +100,7 @@ // boolean predicate that indicates when to stop collection of names. virtual std::vector<std::string> CollectAncestorNames( BeginPoint begin_point, - bool (*should_stop)(base::StringPiece)) const = 0; + bool (*should_stop)(std::string_view)) const = 0; // Returns a vector of ints representing the child index of each frame in // the chain from this frame to the root. virtual std::vector<int> GetFramePosition(BeginPoint begin_point) const = 0; @@ -192,7 +192,7 @@ // // Note: This method only works if |unique_name| was calculated after calling // PreserveStableUniqueNameForTesting (see above). - static std::string ExtractStableNameForTesting(base::StringPiece unique_name); + static std::string ExtractStableNameForTesting(std::string_view unique_name); private: const raw_ptr<FrameAdapter> frame_;
diff --git a/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom b/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom index e0c5ef50..26f43e68 100644 --- a/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom +++ b/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom
@@ -4333,6 +4333,8 @@ kV8Translation_CanTranslate_Method = 4946, kV8Translation_CreateTranslator_Method = 4947, + kIdentityDigitalCredentialsDeepLink = 4948, + // Add new features immediately above this line. Don't change assigned // numbers of any item, and don't reuse removed slots. // Also, run update_use_counter_feature_enum.py in
diff --git a/third_party/blink/public/platform/web_dedicated_or_shared_worker_fetch_context.h b/third_party/blink/public/platform/web_dedicated_or_shared_worker_fetch_context.h index c3663bd..afba1584 100644 --- a/third_party/blink/public/platform/web_dedicated_or_shared_worker_fetch_context.h +++ b/third_party/blink/public/platform/web_dedicated_or_shared_worker_fetch_context.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_DEDICATED_OR_SHARED_WORKER_FETCH_CONTEXT_H_ #include <memory> +#include <string_view> #include "base/task/single_thread_task_runner.h" #include "mojo/public/cpp/bindings/pending_remote.h" @@ -99,7 +100,7 @@ virtual void set_top_frame_origin( const blink::WebSecurityOrigin& top_frame_origin) = 0; - using RewriteURLFunction = WebURL (*)(base::StringPiece, bool); + using RewriteURLFunction = WebURL (*)(std::string_view, bool); static void InstallRewriteURLFunction(RewriteURLFunction rewrite_url); };
diff --git a/third_party/blink/renderer/build/scripts/templates/origin_trials.cc.tmpl b/third_party/blink/renderer/build/scripts/templates/origin_trials.cc.tmpl index f565315..a06407a 100644 --- a/third_party/blink/renderer/build/scripts/templates/origin_trials.cc.tmpl +++ b/third_party/blink/renderer/build/scripts/templates/origin_trials.cc.tmpl
@@ -7,6 +7,7 @@ #include <array> #include <iterator> +#include <string_view> #include "base/containers/contains.h" #include "base/ranges/algorithm.h" @@ -37,12 +38,12 @@ } // namespace -bool origin_trials::IsTrialValid(base::StringPiece trial_name) { +bool origin_trials::IsTrialValid(std::string_view trial_name) { return base::Contains(kTrialToFeaturesMap, trial_name, &TrialToFeature::trial_name); } -bool origin_trials::IsTrialEnabledForInsecureContext(base::StringPiece trial_name) { +bool origin_trials::IsTrialEnabledForInsecureContext(std::string_view trial_name) { static const char* const kEnabledForInsecureContext[] = { {% for trial in origin_trial_features|selectattr('origin_trial_allows_insecure')|map(attribute='origin_trial_feature_name')|unique %} "{{trial}}", @@ -51,7 +52,7 @@ return base::Contains(kEnabledForInsecureContext, trial_name); } -bool origin_trials::IsTrialEnabledForThirdPartyOrigins(base::StringPiece trial_name) { +bool origin_trials::IsTrialEnabledForThirdPartyOrigins(std::string_view trial_name) { static const char* const kEnabledForThirdPartyOrigins[] = { {% for trial in origin_trial_features|selectattr('origin_trial_allows_third_party')|map(attribute='origin_trial_feature_name')|unique %} "{{trial}}", @@ -60,7 +61,7 @@ return base::Contains(kEnabledForThirdPartyOrigins, trial_name); } -bool origin_trials::IsTrialEnabledForBrowserProcessReadAccess(base::StringPiece trial_name) { +bool origin_trials::IsTrialEnabledForBrowserProcessReadAccess(std::string_view trial_name) { // Select all features that represent origin trials and have // browser_process_read_write_access enabled. Determine if that list of // features contains the `trial_name` provided. @@ -74,7 +75,7 @@ return base::Contains(kEnabledForBrowserProcessReadWriteAccess, trial_name); } -bool origin_trials::IsDeprecationTrial(base::StringPiece trial_name) { +bool origin_trials::IsDeprecationTrial(std::string_view trial_name) { for (auto feature : FeaturesForTrial(trial_name)) { if (GetTrialType(feature) == OriginTrialType::kDeprecation) { return true; @@ -96,7 +97,7 @@ base::span<const mojom::OriginTrialFeature> origin_trials::FeaturesForTrial( - base::StringPiece trial_name) { + std::string_view trial_name) { auto it = base::ranges::find(kTrialToFeaturesMap, trial_name, &TrialToFeature::trial_name); DCHECK(it != std::end(kTrialToFeaturesMap));
diff --git a/third_party/blink/renderer/controller/BUILD.gn b/third_party/blink/renderer/controller/BUILD.gn index 6af8af9e..47e37a2 100644 --- a/third_party/blink/renderer/controller/BUILD.gn +++ b/third_party/blink/renderer/controller/BUILD.gn
@@ -55,6 +55,8 @@ "controller_export.h", "dev_tools_frontend_impl.cc", "dev_tools_frontend_impl.h", + "javascript_call_stack_collector.cc", + "javascript_call_stack_collector.h", "javascript_call_stack_generator.cc", "javascript_call_stack_generator.h", "memory_usage_monitor.cc",
diff --git a/third_party/blink/renderer/controller/javascript_call_stack_collector.cc b/third_party/blink/renderer/controller/javascript_call_stack_collector.cc new file mode 100644 index 0000000..bab4ce68 --- /dev/null +++ b/third_party/blink/renderer/controller/javascript_call_stack_collector.cc
@@ -0,0 +1,133 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/renderer/controller/javascript_call_stack_collector.h" + +#include "third_party/blink/public/common/permissions_policy/document_policy_features.h" +#include "third_party/blink/public/common/tokens/tokens.h" +#include "third_party/blink/public/platform/platform.h" +#include "third_party/blink/renderer/core/execution_context/execution_context.h" +#include "third_party/blink/renderer/core/frame/local_dom_window.h" +#include "third_party/blink/renderer/core/frame/local_frame.h" +#include "third_party/blink/renderer/platform/bindings/dom_wrapper_world.h" +#include "third_party/blink/renderer/platform/bindings/script_state.h" +#include "third_party/blink/renderer/platform/scheduler/public/main_thread.h" +#include "third_party/blink/renderer/platform/scheduler/public/main_thread_scheduler.h" +#include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h" +#include "third_party/blink/renderer/platform/wtf/cross_thread_copier.h" +#include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h" +#include "third_party/blink/renderer/platform/wtf/functional.h" +#include "third_party/blink/renderer/platform/wtf/text/string_builder.h" +#include "third_party/blink/renderer/platform/wtf/wtf.h" + +namespace WTF { + +template <> +struct CrossThreadCopier<std::optional<blink::LocalFrameToken>> + : public CrossThreadCopierPassThrough< + std::optional<blink::LocalFrameToken>> {}; + +} // namespace WTF + +namespace blink { + +namespace { + +// Format the callstack in a format that's +// consistent with Error.stack +void FormatStackTrace(v8::Isolate* isolate, StringBuilder& builder) { + std::ostringstream oss; + v8::Message::PrintCurrentStackTrace(isolate, oss); + const std::string stack_trace = oss.str(); + std::istringstream iss(stack_trace); + std::string line; + while (std::getline(iss, line)) { + builder.Append("\n at "); + builder.Append(line.data(), base::checked_cast<unsigned>(line.size())); + } +} + +void PostHandleCollectedCallStackTask( + JavaScriptCallStackCollector* collector, + WTF::StringBuilder& builder, + std::optional<LocalFrameToken> frame_token = std::nullopt) { + DCHECK(Platform::Current()); + PostCrossThreadTask( + *Platform::Current()->GetIOTaskRunner(), FROM_HERE, + WTF::CrossThreadBindOnce( + &JavaScriptCallStackCollector::HandleCallStackCollected, + WTF::CrossThreadUnretained(collector), builder.ReleaseString(), + frame_token)); +} + +void GenerateJavaScriptCallStack(v8::Isolate* isolate, void* data) { + CHECK(IsMainThread()); + + auto* collector = static_cast<JavaScriptCallStackCollector*>(data); + v8::HandleScope handle_scope(isolate); + WTF::StringBuilder builder; + if (!isolate->InContext()) { + PostHandleCollectedCallStackTask(collector, builder); + return; + } + + v8::Local<v8::Context> context = isolate->GetCurrentContext(); + ScriptState* script_state = ScriptState::MaybeFrom(context); + if (!script_state) { + PostHandleCollectedCallStackTask(collector, builder); + return; + } + ExecutionContext* execution_context = ToExecutionContext(script_state); + DOMWrapperWorld& world = script_state->World(); + auto* execution_dom_window = DynamicTo<LocalDOMWindow>(execution_context); + LocalFrame* frame = + execution_dom_window ? execution_dom_window->GetFrame() : nullptr; + + std::optional<LocalFrameToken> frame_token; + if (frame && world.IsMainWorld()) { + frame_token = frame->GetLocalFrameToken(); + if (!execution_context->IsFeatureEnabled( + mojom::blink::DocumentPolicyFeature:: + kIncludeJSCallStacksInCrashReports)) { + builder.Append( + "Website owner has not opted in for JS call stacks in crash " + "reports."); + } else { + FormatStackTrace(isolate, builder); + } + } + PostHandleCollectedCallStackTask(collector, builder, frame_token); +} + +} // namespace + +void JavaScriptCallStackCollector::InterruptIsolateAndCollectCallStack( + v8::Isolate* isolate) { + if (has_interrupted_isolate_) { + return; + } + has_interrupted_isolate_ = true; + isolate->RequestInterrupt(&GenerateJavaScriptCallStack, + static_cast<void*>(this)); +} + +void JavaScriptCallStackCollector::HandleCallStackCollected( + const String& call_stack, + const std::optional<LocalFrameToken> frame_token) { + DCHECK(result_callback_); + std::move(result_callback_).Run(call_stack, frame_token); + DCHECK(finished_callback_); + std::move(finished_callback_).Run(this); +} + +void JavaScriptCallStackCollector::CollectJavaScriptCallStack() { + Thread::MainThread() + ->Scheduler() + ->ToMainThreadScheduler() + ->ForEachMainThreadIsolate(WTF::BindRepeating( + &JavaScriptCallStackCollector::InterruptIsolateAndCollectCallStack, + WTF::Unretained(this))); +} + +} // namespace blink
diff --git a/third_party/blink/renderer/controller/javascript_call_stack_collector.h b/third_party/blink/renderer/controller/javascript_call_stack_collector.h new file mode 100644 index 0000000..ab70b2a --- /dev/null +++ b/third_party/blink/renderer/controller/javascript_call_stack_collector.h
@@ -0,0 +1,43 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef THIRD_PARTY_BLINK_RENDERER_CONTROLLER_JAVASCRIPT_CALL_STACK_COLLECTOR_H_ +#define THIRD_PARTY_BLINK_RENDERER_CONTROLLER_JAVASCRIPT_CALL_STACK_COLLECTOR_H_ + +#include "third_party/blink/public/common/tokens/tokens.h" +#include "third_party/blink/public/mojom/call_stack_generator/call_stack_generator.mojom-blink.h" +#include "third_party/blink/renderer/controller/controller_export.h" +#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +#include "v8/include/v8.h" + +namespace blink { + +class CONTROLLER_EXPORT JavaScriptCallStackCollector { + public: + using FinishedCallback = + base::OnceCallback<void(JavaScriptCallStackCollector*)>; + using CollectJavaScriptCallStackCallback = + mojom::blink::CallStackGenerator::CollectJavaScriptCallStackCallback; + + explicit JavaScriptCallStackCollector( + CollectJavaScriptCallStackCallback&& result_callback, + FinishedCallback finished_callback) + : result_callback_(std::move(result_callback)), + finished_callback_(std::move(finished_callback)) {} + + void InterruptIsolateAndCollectCallStack(v8::Isolate* isolate); + void CollectJavaScriptCallStack(); + void HandleCallStackCollected( + const String& call_stack, + const std::optional<LocalFrameToken> frame_token); + + private: + CollectJavaScriptCallStackCallback result_callback_; + FinishedCallback finished_callback_; + bool has_interrupted_isolate_ = false; +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_CONTROLLER_JAVASCRIPT_CALL_STACK_COLLECTOR_H_
diff --git a/third_party/blink/renderer/controller/javascript_call_stack_generator.cc b/third_party/blink/renderer/controller/javascript_call_stack_generator.cc index 4e6944a..ca6dfca 100644 --- a/third_party/blink/renderer/controller/javascript_call_stack_generator.cc +++ b/third_party/blink/renderer/controller/javascript_call_stack_generator.cc
@@ -4,149 +4,42 @@ #include "third_party/blink/renderer/controller/javascript_call_stack_generator.h" -#include "base/numerics/safe_conversions.h" -#include "third_party/blink/public/common/permissions_policy/document_policy_features.h" -#include "third_party/blink/public/common/tokens/tokens.h" -#include "third_party/blink/public/platform/platform.h" -#include "third_party/blink/renderer/core/execution_context/execution_context.h" -#include "third_party/blink/renderer/core/frame/local_dom_window.h" -#include "third_party/blink/renderer/core/frame/local_frame.h" -#include "third_party/blink/renderer/platform/bindings/dom_wrapper_world.h" -#include "third_party/blink/renderer/platform/bindings/script_state.h" -#include "third_party/blink/renderer/platform/bindings/v8_binding.h" -#include "third_party/blink/renderer/platform/bindings/v8_dom_wrapper.h" +#include "third_party/blink/renderer/controller/javascript_call_stack_collector.h" #include "third_party/blink/renderer/platform/runtime_enabled_features.h" -#include "third_party/blink/renderer/platform/scheduler/public/main_thread.h" -#include "third_party/blink/renderer/platform/scheduler/public/main_thread_scheduler.h" -#include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h" -#include "third_party/blink/renderer/platform/wtf/cross_thread_copier.h" -#include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h" -#include "third_party/blink/renderer/platform/wtf/text/string_builder.h" -#include "third_party/blink/renderer/platform/wtf/wtf.h" - -namespace WTF { - -template <> -struct CrossThreadCopier<std::optional<blink::LocalFrameToken>> - : public CrossThreadCopierPassThrough< - std::optional<blink::LocalFrameToken>> {}; - -} // namespace WTF +#include "third_party/blink/renderer/platform/wtf/functional.h" namespace blink { namespace { -// Format the callstack in a format that's -// consistent with Error.stack -void FormatStackTrace(v8::Isolate* isolate, StringBuilder& builder) { - std::ostringstream oss; - v8::Message::PrintCurrentStackTrace(isolate, oss); - const std::string stack_trace = oss.str(); - std::istringstream iss(stack_trace); - std::string line; - while (std::getline(iss, line)) { - builder.Append("\n at "); - builder.Append(line.data(), base::checked_cast<unsigned>(line.size())); - } -} - -void PostHandleCollectedCallStackTask( - JavaScriptCallStackGenerator* generator, - WTF::StringBuilder& builder, - std::optional<LocalFrameToken> frame_token = std::nullopt) { - DCHECK(Platform::Current()); - PostCrossThreadTask( - *Platform::Current()->GetIOTaskRunner(), FROM_HERE, - WTF::CrossThreadBindOnce( - [](JavaScriptCallStackGenerator* generator, String call_stack, - std::optional<LocalFrameToken> frame_token) { - generator->HandleCallStackCollected(call_stack, frame_token); - }, - CrossThreadUnretained(generator), builder.ReleaseString(), - frame_token)); -} - -void GenerateJavaScriptCallStack(v8::Isolate* isolate, void* data) { - CHECK(IsMainThread()); - - auto* generator = static_cast<JavaScriptCallStackGenerator*>(data); - v8::HandleScope handle_scope(isolate); - WTF::StringBuilder builder; - if (!isolate->InContext()) { - PostHandleCollectedCallStackTask(generator, builder); - return; - } - - v8::Local<v8::Context> context = isolate->GetCurrentContext(); - ScriptState* script_state = ScriptState::MaybeFrom(context); - if (!script_state) { - PostHandleCollectedCallStackTask(generator, builder); - return; - } - ExecutionContext* execution_context = ToExecutionContext(script_state); - DOMWrapperWorld& world = script_state->World(); - auto* execution_dom_window = DynamicTo<LocalDOMWindow>(execution_context); - LocalFrame* frame = - execution_dom_window ? execution_dom_window->GetFrame() : nullptr; - - std::optional<LocalFrameToken> frame_token; - if (frame && world.IsMainWorld()) { - frame_token = frame->GetLocalFrameToken(); - if (!execution_context->IsFeatureEnabled( - mojom::blink::DocumentPolicyFeature:: - kIncludeJSCallStacksInCrashReports)) { - builder.Append( - "Website owner has not opted in for JS call stacks in crash " - "reports."); - } else { - FormatStackTrace(isolate, builder); - } - } - PostHandleCollectedCallStackTask(generator, builder, frame_token); -} - -} // namespace - -// At any point in time, there is at most one execution context per isolate -// that is actually executing code. -void JavaScriptCallStackGenerator::InterruptIsolateAndCollectCallStack( - v8::Isolate* isolate) { - isolate->RequestInterrupt(&GenerateJavaScriptCallStack, - static_cast<void*>(this)); -} - -void JavaScriptCallStackGenerator::HandleCallStackCollected( - const String& call_stack, - const std::optional<LocalFrameToken> frame_token) { - if (!call_stack_collected_) { - call_stack_collected_ = true; - DCHECK(callback_); - std::move(callback_).Run(call_stack, frame_token); - } -} - -void JavaScriptCallStackGenerator::CollectJavaScriptCallStack( - CollectJavaScriptCallStackCallback callback) { - call_stack_collected_ = false; - if (RuntimeEnabledFeatures:: - DocumentPolicyIncludeJSCallStacksInCrashReportsEnabled()) { - callback_ = std::move(callback); - Thread::MainThread() - ->Scheduler() - ->ToMainThreadScheduler() - ->ForEachMainThreadIsolate(WTF::BindRepeating( - &JavaScriptCallStackGenerator::InterruptIsolateAndCollectCallStack, - WTF::Unretained(this))); - } -} - JavaScriptCallStackGenerator& GetJavaScriptCallStackGenerator() { DEFINE_THREAD_SAFE_STATIC_LOCAL(JavaScriptCallStackGenerator, javascript_call_stack_generator, ()); return javascript_call_stack_generator; } +} // namespace + +void JavaScriptCallStackGenerator::OnCollectorFinished( + JavaScriptCallStackCollector* collector) { + collectors_.erase(collector); +} + +void JavaScriptCallStackGenerator::CollectJavaScriptCallStack( + CollectJavaScriptCallStackCallback callback) { + if (RuntimeEnabledFeatures:: + DocumentPolicyIncludeJSCallStacksInCrashReportsEnabled()) { + std::unique_ptr<JavaScriptCallStackCollector> call_stack_collector = + std::make_unique<JavaScriptCallStackCollector>( + std::move(callback), + WTF::BindOnce(&JavaScriptCallStackGenerator::OnCollectorFinished, + WTF::Unretained(this))); + JavaScriptCallStackCollector* raw_collector = call_stack_collector.get(); + collectors_.Set(raw_collector, std::move(call_stack_collector)); + raw_collector->CollectJavaScriptCallStack(); + } +} + void JavaScriptCallStackGenerator::Bind( mojo::PendingReceiver<mojom::blink::CallStackGenerator> receiver) { DCHECK(!GetJavaScriptCallStackGenerator().receiver_.is_bound());
diff --git a/third_party/blink/renderer/controller/javascript_call_stack_generator.h b/third_party/blink/renderer/controller/javascript_call_stack_generator.h index 91f85ed..89ac4d98 100644 --- a/third_party/blink/renderer/controller/javascript_call_stack_generator.h +++ b/third_party/blink/renderer/controller/javascript_call_stack_generator.h
@@ -7,10 +7,10 @@ #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/receiver.h" -#include "third_party/blink/public/common/tokens/tokens.h" #include "third_party/blink/public/mojom/call_stack_generator/call_stack_generator.mojom-blink.h" #include "third_party/blink/renderer/controller/controller_export.h" -#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" +#include "third_party/blink/renderer/controller/javascript_call_stack_collector.h" +#include "third_party/blink/renderer/platform/wtf/hash_map.h" #include "v8/include/v8.h" namespace blink { @@ -22,16 +22,15 @@ mojo::PendingReceiver<mojom::blink::CallStackGenerator> receiver); void CollectJavaScriptCallStack( CollectJavaScriptCallStackCallback callback) override; - void HandleCallStackCollected( - const String& call_stack, - const std::optional<LocalFrameToken> frame_token); + void OnCollectorFinished(JavaScriptCallStackCollector* collector); private: void InterruptIsolateAndCollectCallStack(v8::Isolate* isolate); mojo::Receiver<mojom::blink::CallStackGenerator> receiver_{this}; - CollectJavaScriptCallStackCallback callback_; - bool call_stack_collected_ = false; + WTF::HashMap<JavaScriptCallStackCollector*, + std::unique_ptr<JavaScriptCallStackCollector>> + collectors_; }; } // namespace blink
diff --git a/third_party/blink/renderer/core/css/style_perftest.cc b/third_party/blink/renderer/core/css/style_perftest.cc index 4370a0e..26b0757 100644 --- a/third_party/blink/renderer/core/css/style_perftest.cc +++ b/third_party/blink/renderer/core/css/style_perftest.cc
@@ -9,8 +9,7 @@ // not yet checked in. The tests will be skipped if you don't have the // files available. -#include "third_party/blink/renderer/core/css/resolver/style_resolver.h" -#include "third_party/blink/renderer/core/css/style_recalc_change.h" +#include <string_view> #include "base/command_line.h" #include "base/json/json_reader.h" @@ -18,8 +17,10 @@ #include "testing/perf/perf_test.h" #include "third_party/blink/renderer/core/css/container_query_data.h" #include "third_party/blink/renderer/core/css/parser/css_tokenizer.h" +#include "third_party/blink/renderer/core/css/resolver/style_resolver.h" #include "third_party/blink/renderer/core/css/style_change_reason.h" #include "third_party/blink/renderer/core/css/style_engine.h" +#include "third_party/blink/renderer/core/css/style_recalc_change.h" #include "third_party/blink/renderer/core/css/style_sheet_contents.h" #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/dom/dom_token_list.h" @@ -190,7 +191,7 @@ return result; } std::optional<base::Value> json = base::JSONReader::Read( - base::StringPiece(serialized->Data(), serialized->size())); + std::string_view(serialized->Data(), serialized->size())); CHECK(json.has_value()); page = LoadDumpedPage(json->GetDict(), result.parse_time, reporter); }
diff --git a/third_party/blink/renderer/core/frame/attribution_src_loader.cc b/third_party/blink/renderer/core/frame/attribution_src_loader.cc index 3ffa1d3f..2410839 100644 --- a/third_party/blink/renderer/core/frame/attribution_src_loader.cc +++ b/third_party/blink/renderer/core/frame/attribution_src_loader.cc
@@ -135,8 +135,7 @@ } auto parsed_registration_info = attribution_reporting::RegistrationInfo::ParseInfo( - StringUTF8Adaptor(info_header).AsStringPiece(), - cross_app_web_enabled); + StringUTF8Adaptor(info_header).AsStringView(), cross_app_web_enabled); if (!parsed_registration_info.has_value()) { LogAuditIssue(execution_context, AttributionReportingIssueType::kInvalidInfoHeader, @@ -988,7 +987,7 @@ base::UmaHistogramCounts1M("Conversions.HeadersSize.RegisterSource", headers.web_source.length()); auto source_data = attribution_reporting::SourceRegistration::Parse( - StringUTF8Adaptor(headers.web_source).AsStringPiece(), source_type_); + StringUTF8Adaptor(headers.web_source).AsStringView(), source_type_); if (!source_data.has_value()) { LogAuditIssueAndMaybeReportHeaderError( headers, registration_info.report_header_errors, @@ -1014,7 +1013,7 @@ auto registration_items = attribution_reporting::ParseOsSourceOrTriggerHeader( - StringUTF8Adaptor(headers.os_source).AsStringPiece()); + StringUTF8Adaptor(headers.os_source).AsStringView()); if (!registration_items.has_value()) { LogAuditIssueAndMaybeReportHeaderError( headers, registration_info.report_header_errors, @@ -1060,7 +1059,7 @@ headers.web_trigger.length()); auto trigger_data = attribution_reporting::TriggerRegistration::Parse( - StringUTF8Adaptor(headers.web_trigger).AsStringPiece()); + StringUTF8Adaptor(headers.web_trigger).AsStringView()); if (!trigger_data.has_value()) { LogAuditIssueAndMaybeReportHeaderError( headers, registration_info.report_header_errors, @@ -1086,7 +1085,7 @@ auto registration_items = attribution_reporting::ParseOsSourceOrTriggerHeader( - StringUTF8Adaptor(headers.os_trigger).AsStringPiece()); + StringUTF8Adaptor(headers.os_trigger).AsStringView()); if (!registration_items.has_value()) { LogAuditIssueAndMaybeReportHeaderError( headers, registration_info.report_header_errors, @@ -1146,7 +1145,7 @@ data_host_->ReportRegistrationHeaderError( std::move(reporting_origin), attribution_reporting::RegistrationHeaderError( - StringUTF8Adaptor(header).AsStringPiece(), error_details)); + StringUTF8Adaptor(header).AsStringView(), error_details)); } }
diff --git a/third_party/blink/renderer/core/html/html_perftest.cc b/third_party/blink/renderer/core/html/html_perftest.cc index 22b818c..a5865522 100644 --- a/third_party/blink/renderer/core/html/html_perftest.cc +++ b/third_party/blink/renderer/core/html/html_perftest.cc
@@ -5,6 +5,8 @@ // A benchmark to isolate the HTML parsing done in the Speedometer test, // for more stable benchmarking and profiling. +#include <string_view> + #include "base/command_line.h" #include "base/json/json_reader.h" #include "testing/perf/perf_result_reporter.h" @@ -36,7 +38,7 @@ scoped_refptr<SharedBuffer> serialized = test::ReadFromFile(test::CoreTestDataPath(filename)); std::optional<base::Value> json = base::JSONReader::Read( - base::StringPiece(serialized->Data(), serialized->size())); + std::string_view(serialized->Data(), serialized->size())); if (!json.has_value()) { char msg[256]; snprintf(msg, sizeof(msg), "Skipping %s test because %s could not be read",
diff --git a/third_party/blink/renderer/core/loader/anchor_element_interaction_test.cc b/third_party/blink/renderer/core/loader/anchor_element_interaction_test.cc index 9d70862..4cb53f1 100644 --- a/third_party/blink/renderer/core/loader/anchor_element_interaction_test.cc +++ b/third_party/blink/renderer/core/loader/anchor_element_interaction_test.cc
@@ -2,9 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "third_party/blink/renderer/core/loader/anchor_element_interaction_tracker.h" - #include <cstddef> +#include <string_view> #include <tuple> #include "base/run_loop.h" @@ -20,6 +19,7 @@ #include "third_party/blink/renderer/core/frame/local_frame.h" #include "third_party/blink/renderer/core/html/html_anchor_element.h" #include "third_party/blink/renderer/core/input/event_handler.h" +#include "third_party/blink/renderer/core/loader/anchor_element_interaction_tracker.h" #include "third_party/blink/renderer/core/testing/sim/sim_request.h" #include "third_party/blink/renderer/core/testing/sim/sim_test.h" #include "third_party/blink/renderer/platform/scheduler/test/fake_task_runner.h" @@ -520,7 +520,7 @@ class AnchorElementInteractionMouseMotionEstimatorFeatureFlagTest : public AnchorElementInteractionTest, - public ::testing::WithParamInterface<base::StringPiece> { + public ::testing::WithParamInterface<std::string_view> { public: bool IsMouseMotionEstimatorFeatureEnabled() { return GetParam() == "enabled";
diff --git a/third_party/blink/renderer/core/loader/url_matcher.cc b/third_party/blink/renderer/core/loader/url_matcher.cc index e29bf9a..6d6f4d7 100644 --- a/third_party/blink/renderer/core/loader/url_matcher.cc +++ b/third_party/blink/renderer/core/loader/url_matcher.cc
@@ -4,11 +4,13 @@ #include "third_party/blink/renderer/core/loader/url_matcher.h" +#include <string_view> + #include "third_party/blink/renderer/platform/weborigin/security_origin.h" namespace blink { -UrlMatcher::UrlMatcher(const base::StringPiece& encoded_url_list_string) { +UrlMatcher::UrlMatcher(const std::string_view& encoded_url_list_string) { ParseFieldTrialParam(encoded_url_list_string); } @@ -41,7 +43,7 @@ } void UrlMatcher::ParseFieldTrialParam( - const base::StringPiece& encoded_url_list_string) { + const std::string_view& encoded_url_list_string) { Vector<String> parsed_strings; String::FromUTF8(encoded_url_list_string) .Split(",", /*allow_empty_entries=*/false, parsed_strings);
diff --git a/third_party/blink/renderer/core/loader/url_matcher.h b/third_party/blink/renderer/core/loader/url_matcher.h index ed01a88..40c0ea8 100644 --- a/third_party/blink/renderer/core/loader/url_matcher.h +++ b/third_party/blink/renderer/core/loader/url_matcher.h
@@ -5,6 +5,8 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LOADER_URL_MATCHER_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_LOADER_URL_MATCHER_H_ +#include <string_view> + #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/platform/weborigin/kurl.h" #include "third_party/blink/renderer/platform/weborigin/security_origin.h" @@ -36,7 +38,7 @@ // contain it or not. class CORE_EXPORT UrlMatcher final { public: - explicit UrlMatcher(const base::StringPiece& encoded_url_list_string); + explicit UrlMatcher(const std::string_view& encoded_url_list_string); ~UrlMatcher(); bool Match(const KURL& url) const; @@ -46,7 +48,7 @@ std::pair<scoped_refptr<const SecurityOrigin>, std::optional<String>>>; UrlList url_list_; - void ParseFieldTrialParam(const base::StringPiece& encoded_url_list_string); + void ParseFieldTrialParam(const std::string_view& encoded_url_list_string); }; } // namespace blink
diff --git a/third_party/blink/renderer/core/origin_trials/origin_trial_context.cc b/third_party/blink/renderer/core/origin_trials/origin_trial_context.cc index ae85c02..6626296 100644 --- a/third_party/blink/renderer/core/origin_trials/origin_trial_context.cc +++ b/third_party/blink/renderer/core/origin_trials/origin_trial_context.cc
@@ -683,7 +683,7 @@ TrialTokenResult token_result = trial_token_validator_->ValidateTokenAndTrialWithOriginInfo( - token_string.AsStringPiece(), + token_string.AsStringView(), TrialTokenValidator::OriginInfo(origin_info.origin->ToUrlOrigin(), origin_info.is_secure), script_url_origins, base::Time::Now());
diff --git a/third_party/blink/renderer/core/origin_trials/origin_trial_context_test.cc b/third_party/blink/renderer/core/origin_trials/origin_trial_context_test.cc index 4a1918e6..033cddf 100644 --- a/third_party/blink/renderer/core/origin_trials/origin_trial_context_test.cc +++ b/third_party/blink/renderer/core/origin_trials/origin_trial_context_test.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/core/origin_trials/origin_trial_context.h" #include <memory> +#include <string_view> #include <vector> #include "base/containers/span.h" @@ -73,7 +74,7 @@ const OriginInfo origin; Vector<OriginInfo> third_party_origin_info; const base::Time current_time; - ValidationParams(base::StringPiece token_param, + ValidationParams(std::string_view token_param, const OriginInfo& origin_info, base::span<const OriginInfo> scripts, base::Time time) @@ -88,7 +89,7 @@ ~MockTokenValidator() override = default; TrialTokenResult ValidateTokenAndTrialWithOriginInfo( - base::StringPiece token, + std::string_view token, const OriginInfo& origin, base::span<const OriginInfo> third_party_origin_info, base::Time current_time) const override {
diff --git a/third_party/blink/renderer/core/paint/compositing/compositing_test.cc b/third_party/blink/renderer/core/paint/compositing/compositing_test.cc index 3e2bab0..fbfbb1f3 100644 --- a/third_party/blink/renderer/core/paint/compositing/compositing_test.cc +++ b/third_party/blink/renderer/core/paint/compositing/compositing_test.cc
@@ -601,9 +601,11 @@ } // https://crbug.com/1459318 -TEST_P(CompositingTest, FullPACUpdateOnScrollWithSyntheticClipAcrossScroller) { +TEST_P(CompositingTest, + FullPACUpdateOnScrollWithSyntheticClipAcrossScrollerSimpleRadius) { InitializeWithHTML(*WebView()->MainFrameImpl()->GetFrame(), R"HTML( - <div id="scroll" style="width: 200px; height: 200px; border-radius: 2px; + <div id="scroll" style="width: 200px; height: 200px; + border-radius: 2px; overflow: scroll; background: white"> <div id="masked" style="width: 100px; height: 100px; backdrop-filter: blur(1px)"></div> @@ -616,6 +618,28 @@ GetLocalFrameView()->UpdateAllLifecyclePhasesExceptPaint( DocumentUpdateReason::kTest); EXPECT_TRUE(paint_artifact_compositor()->NeedsUpdate()); + UpdateAllLifecyclePhases(); +} + +// https://crbug.com/1459318 +TEST_P(CompositingTest, + FullPACUpdateOnScrollWithSyntheticClipAcrossScrollerComplexRadius) { + InitializeWithHTML(*WebView()->MainFrameImpl()->GetFrame(), R"HTML( + <div id="scroll" style="width: 200px; height: 200px; + border-radius: 2px / 4px; + overflow: scroll; background: white"> + <div id="masked" style="width: 100px; height: 100px; + backdrop-filter: blur(1px)"></div> + <div style="height: 200px"></div> + </div> + )HTML"); + + EXPECT_FALSE(paint_artifact_compositor()->NeedsUpdate()); + GetElementById("scroll")->scrollTo(0, 2); + GetLocalFrameView()->UpdateAllLifecyclePhasesExceptPaint( + DocumentUpdateReason::kTest); + EXPECT_TRUE(paint_artifact_compositor()->NeedsUpdate()); + UpdateAllLifecyclePhases(); } TEST_P(CompositingTest, HitTestOpaqueness) {
diff --git a/third_party/blink/renderer/core/timing/background_tracing_helper.cc b/third_party/blink/renderer/core/timing/background_tracing_helper.cc index d843738..dc11a2d 100644 --- a/third_party/blink/renderer/core/timing/background_tracing_helper.cc +++ b/third_party/blink/renderer/core/timing/background_tracing_helper.cc
@@ -4,6 +4,8 @@ #include "third_party/blink/renderer/core/timing/background_tracing_helper.h" +#include <string_view> + #include "base/containers/span.h" #include "base/feature_list.h" #include "base/hash/md5.h" @@ -245,7 +247,7 @@ } // static -size_t BackgroundTracingHelper::GetSequenceNumberPos(base::StringPiece string) { +size_t BackgroundTracingHelper::GetSequenceNumberPos(std::string_view string) { // Extract any trailing integers. size_t cursor = string.size(); while (cursor > 0) { @@ -273,7 +275,7 @@ } // static -uint32_t BackgroundTracingHelper::MD5Hash32(base::StringPiece string) { +uint32_t BackgroundTracingHelper::MD5Hash32(std::string_view string) { base::MD5Digest digest; base::MD5Sum(base::as_byte_span(string), &digest); return base::numerics::U32FromBigEndian(base::span(digest.a).first<4u>()); @@ -281,7 +283,7 @@ // static void BackgroundTracingHelper::GetMarkHashAndSequenceNumber( - base::StringPiece mark_name, + std::string_view mark_name, uint32_t sequence_number_offset, uint32_t* mark_hash, uint32_t* sequence_number) { @@ -313,7 +315,7 @@ // static bool BackgroundTracingHelper::ParseBackgroundTracingPerformanceMarkHashes( - base::StringPiece allow_list, + std::string_view allow_list, SiteMarkHashMap& allow_listed_hashes) { // We parse into this temporary structure, and move into the output on // success.
diff --git a/third_party/blink/renderer/core/timing/background_tracing_helper.h b/third_party/blink/renderer/core/timing/background_tracing_helper.h index 047b071..ffcc00a 100644 --- a/third_party/blink/renderer/core/timing/background_tracing_helper.h +++ b/third_party/blink/renderer/core/timing/background_tracing_helper.h
@@ -7,8 +7,8 @@ #include <cstdint> #include <string> +#include <string_view> -#include "base/strings/string_piece.h" #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/platform/heap/garbage_collected.h" #include "third_party/blink/renderer/platform/wtf/hash_map.h" @@ -58,7 +58,7 @@ // This is used by the "sequence number" mechanism for mark names. Returns // the location of the underscore if a split is to occur, otherwise returns // 0. - static size_t GetSequenceNumberPos(base::StringPiece string); + static size_t GetSequenceNumberPos(std::string_view string); // Generates a 32-bit MD5 hash of the given string piece. This will return a // value that is equivalent to the first 8 bytes of a full MD5 hash. In bash @@ -71,13 +71,13 @@ // echo -n <string_value> | md5sum | cut -b 1-8 // // This will return the same result as MD5Hash32Constexpr as defined in - // base/hash/md5_constexpr.h. This uses base::StringPiece because it is + // base/hash/md5_constexpr.h. This uses std::string_view because it is // interacting with Finch code, which doesn't use WTF primitives. - static uint32_t MD5Hash32(base::StringPiece string); + static uint32_t MD5Hash32(std::string_view string); // Given a mark name with an optional sequence number suffix, parses out the // suffix and hashes the mark name. - static void GetMarkHashAndSequenceNumber(base::StringPiece mark_name, + static void GetMarkHashAndSequenceNumber(std::string_view mark_name, uint32_t sequence_number_offset, uint32_t* mark_hash, uint32_t* sequence_number); @@ -92,7 +92,7 @@ // std::string because it is interacting with Finch code, which doesn't use // WTF primitives. static bool ParseBackgroundTracingPerformanceMarkHashes( - base::StringPiece allow_list, + std::string_view allow_list, SiteMarkHashMap& allow_listed_hashes); private:
diff --git a/third_party/blink/renderer/core/timing/background_tracing_helper_test.cc b/third_party/blink/renderer/core/timing/background_tracing_helper_test.cc index 4ecac43..3f1d6806 100644 --- a/third_party/blink/renderer/core/timing/background_tracing_helper_test.cc +++ b/third_party/blink/renderer/core/timing/background_tracing_helper_test.cc
@@ -4,6 +4,8 @@ #include "third_party/blink/renderer/core/timing/background_tracing_helper.h" +#include <string_view> + #include "base/hash/md5_constexpr.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/renderer/platform/testing/task_environment.h" @@ -18,15 +20,15 @@ BackgroundTracingHelperTest() = default; ~BackgroundTracingHelperTest() override = default; - static size_t GetSequenceNumberPos(base::StringPiece string) { + static size_t GetSequenceNumberPos(std::string_view string) { return BackgroundTracingHelper::GetSequenceNumberPos(string); } - static uint32_t MD5Hash32(base::StringPiece string) { + static uint32_t MD5Hash32(std::string_view string) { return BackgroundTracingHelper::MD5Hash32(string); } - static void GetMarkHashAndSequenceNumber(base::StringPiece mark_name, + static void GetMarkHashAndSequenceNumber(std::string_view mark_name, uint32_t sequence_number_offset, uint32_t* mark_hash, uint32_t* sequence_number) {
diff --git a/third_party/blink/renderer/core/url_pattern/url_pattern_component.cc b/third_party/blink/renderer/core/url_pattern/url_pattern_component.cc index 084529b..7581669 100644 --- a/third_party/blink/renderer/core/url_pattern/url_pattern_component.cc +++ b/third_party/blink/renderer/core/url_pattern/url_pattern_component.cc
@@ -4,6 +4,8 @@ #include "third_party/blink/renderer/core/url_pattern/url_pattern_component.h" +#include <string_view> + #include "base/metrics/histogram_functions.h" #include "base/numerics/safe_conversions.h" #include "base/ranges/algorithm.h" @@ -45,7 +47,7 @@ } // Utility method to get the correct encoding callback for a given type. -liburlpattern::EncodeCallback GetEncodeCallback(base::StringPiece pattern_utf8, +liburlpattern::EncodeCallback GetEncodeCallback(std::string_view pattern_utf8, Component::Type type, Component* protocol_component) { switch (type) { @@ -196,7 +198,7 @@ StringUTF8Adaptor utf8(final_pattern); auto parse_result = liburlpattern::Parse( absl::string_view(utf8.data(), utf8.size()), - GetEncodeCallback(utf8.AsStringPiece(), type, protocol_component), + GetEncodeCallback(utf8.AsStringView(), type, protocol_component), options); if (!parse_result.ok()) { exception_state.ThrowTypeError(
diff --git a/third_party/blink/renderer/modules/ad_auction/validate_blink_interest_group_test.cc b/third_party/blink/renderer/modules/ad_auction/validate_blink_interest_group_test.cc index 297488e..26443df 100644 --- a/third_party/blink/renderer/modules/ad_auction/validate_blink_interest_group_test.cc +++ b/third_party/blink/renderer/modules/ad_auction/validate_blink_interest_group_test.cc
@@ -5,7 +5,6 @@ #include "third_party/blink/renderer/modules/ad_auction/validate_blink_interest_group.h" #include "base/memory/scoped_refptr.h" -#include "base/strings/string_piece.h" #include "base/strings/stringprintf.h" #include "mojo/public/cpp/bindings/map_traits_wtf_hash_map.h" #include "mojo/public/cpp/bindings/message.h"
diff --git a/third_party/blink/renderer/modules/cache_storage/inspector_cache_storage_agent.cc b/third_party/blink/renderer/modules/cache_storage/inspector_cache_storage_agent.cc index 580b9374..0babcc8 100644 --- a/third_party/blink/renderer/modules/cache_storage/inspector_cache_storage_agent.cc +++ b/third_party/blink/renderer/modules/cache_storage/inspector_cache_storage_agent.cc
@@ -105,7 +105,7 @@ } std::optional<StorageKey> key = - StorageKey::Deserialize(StringUTF8Adaptor(*storage_key).AsStringPiece()); + StorageKey::Deserialize(StringUTF8Adaptor(*storage_key).AsStringView()); if (!key.has_value()) { return ProtocolResponse::ServerError("Not able to deserialize storage key"); } @@ -653,7 +653,7 @@ ? maybe_storage_key.value() : maybe_storage_bucket.value().getStorageKey(); std::optional<StorageKey> key = - StorageKey::Deserialize(StringUTF8Adaptor(storage_key).AsStringPiece()); + StorageKey::Deserialize(StringUTF8Adaptor(storage_key).AsStringView()); if (!key.has_value()) { callback->sendFailure(ProtocolResponse::InvalidParams( "Not able to deserialize storage key"));
diff --git a/third_party/blink/renderer/modules/file_system_access/file_system_underlying_sink.cc b/third_party/blink/renderer/modules/file_system_access/file_system_underlying_sink.cc index 99daff6..dafe66dc 100644 --- a/third_party/blink/renderer/modules/file_system_access/file_system_underlying_sink.cc +++ b/third_party/blink/renderer/modules/file_system_access/file_system_underlying_sink.cc
@@ -393,7 +393,7 @@ case V8UnionArrayBufferOrArrayBufferViewOrBlobOrUSVString::ContentType:: kUSVString: data_source = std::make_unique<mojo::StringDataSource>( - StringUTF8Adaptor(data->GetAsUSVString()).AsStringPiece(), + StringUTF8Adaptor(data->GetAsUSVString()).AsStringView(), mojo::StringDataSource::AsyncWritingMode:: STRING_MAY_BE_INVALIDATED_BEFORE_COMPLETION); break;
diff --git a/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc b/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc index f2584559..d3b1d742 100644 --- a/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc +++ b/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.cc
@@ -6,6 +6,7 @@ #include <algorithm> #include <memory> +#include <string_view> #include <utility> #include "base/feature_list.h" @@ -933,7 +934,7 @@ ->CreateVideoEncoderMetricsProvider(); } -void MediaRecorderHandler::WriteData(base::StringPiece data) { +void MediaRecorderHandler::WriteData(std::string_view data) { DCHECK(IsMainThread()); DVLOG(3) << __func__ << " " << data.length() << "B"; if (invalidated_)
diff --git a/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.h b/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.h index 8f9045b8..c60ab9e 100644 --- a/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.h +++ b/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler.h
@@ -7,9 +7,9 @@ #include <memory> #include <optional> +#include <string_view> #include "base/feature_list.h" -#include "base/strings/string_piece.h" #include "base/task/single_thread_task_runner.h" #include "base/threading/thread_checker.h" #include "base/time/time.h" @@ -142,7 +142,7 @@ std::optional<media::VideoEncoder::CodecDescription> codec_description, base::TimeTicks timestamp, bool is_key_frame); - void WriteData(base::StringPiece data); + void WriteData(std::string_view data); // Updates recorded tracks live and enabled. void UpdateTracksLiveAndEnabled();
diff --git a/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler_unittest.cc b/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler_unittest.cc index 1aa3efaf..bdb9c01 100644 --- a/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler_unittest.cc +++ b/third_party/blink/renderer/modules/mediarecorder/media_recorder_handler_unittest.cc
@@ -7,6 +7,7 @@ #include <stddef.h> #include <string> +#include <string_view> #include "base/files/file_path.h" #include "base/files/memory_mapped_file.h" @@ -343,7 +344,7 @@ std::string h264_video_stream_; private: - void LoadEncodedFile(base::StringPiece filename, + void LoadEncodedFile(std::string_view filename, base::MemoryMappedFile& mapped_stream) { base::FilePath file_path = GetTestDataFilePath(filename); @@ -351,7 +352,7 @@ << "Couldn't open stream file: " << file_path.MaybeAsASCII(); } - base::FilePath GetTestDataFilePath(base::StringPiece name) { + base::FilePath GetTestDataFilePath(std::string_view name) { base::FilePath file_path; base::PathService::Get(base::DIR_SRC_TEST_DATA_ROOT, &file_path); file_path = file_path.Append(FILE_PATH_LITERAL("media"))
diff --git a/third_party/blink/renderer/modules/mediarecorder/video_track_recorder_unittest.cc b/third_party/blink/renderer/modules/mediarecorder/video_track_recorder_unittest.cc index eca9c0a..407bc349 100644 --- a/third_party/blink/renderer/modules/mediarecorder/video_track_recorder_unittest.cc +++ b/third_party/blink/renderer/modules/mediarecorder/video_track_recorder_unittest.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/modules/mediarecorder/video_track_recorder.h" #include <sstream> +#include <string_view> #include "base/location.h" #include "base/memory/ptr_util.h" @@ -514,8 +515,8 @@ InSequence s; const base::TimeTicks timeticks_now = base::TimeTicks::Now(); - base::StringPiece first_frame_encoded_data; - base::StringPiece first_frame_encoded_alpha; + std::string_view first_frame_encoded_data; + std::string_view first_frame_encoded_alpha; EXPECT_CALL(*mock_callback_interface_, OnEncodedVideo(_, _, _, _, timeticks_now, true)) .Times(1) @@ -523,8 +524,8 @@ SaveArg<2>(&first_frame_encoded_alpha))); const base::TimeTicks timeticks_later = base::TimeTicks::Now(); - base::StringPiece second_frame_encoded_data; - base::StringPiece second_frame_encoded_alpha; + std::string_view second_frame_encoded_data; + std::string_view second_frame_encoded_alpha; EXPECT_CALL(*mock_callback_interface_, OnEncodedVideo(_, _, _, _, timeticks_later, false)) .Times(1) @@ -538,8 +539,8 @@ base::RunLoop run_loop; - base::StringPiece third_frame_encoded_data; - base::StringPiece third_frame_encoded_alpha; + std::string_view third_frame_encoded_data; + std::string_view third_frame_encoded_alpha; EXPECT_CALL(*mock_callback_interface_, OnEncodedVideo(_, _, _, _, _, true)) .Times(1) .WillOnce(DoAll(SaveArg<1>(&third_frame_encoded_data), @@ -943,7 +944,7 @@ media::VideoFrame::CreateBlackFrame(frame_size); InSequence s; - base::StringPiece first_frame_encoded_alpha; + std::string_view first_frame_encoded_alpha; EXPECT_CALL(*mock_callback_interface_, OnEncodedVideo(_, _, _, _, _, true)) .Times(1) .WillOnce(SaveArg<2>(&first_frame_encoded_alpha)); @@ -951,14 +952,14 @@ const scoped_refptr<media::VideoFrame> alpha_frame = media::VideoFrame::CreateTransparentFrame(frame_size); - base::StringPiece second_frame_encoded_alpha; + std::string_view second_frame_encoded_alpha; EXPECT_CALL(*mock_callback_interface_, OnEncodedVideo(_, _, _, _, _, true)) .Times(1) .WillOnce(SaveArg<2>(&second_frame_encoded_alpha)); Encode(alpha_frame, base::TimeTicks::Now()); base::RunLoop run_loop; - base::StringPiece third_frame_encoded_alpha; + std::string_view third_frame_encoded_alpha; EXPECT_CALL(*mock_callback_interface_, OnEncodedVideo(_, _, _, _, _, false)) .Times(1) .WillOnce(DoAll(SaveArg<2>(&third_frame_encoded_alpha),
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_audio_processor.cc b/third_party/blink/renderer/modules/mediastream/media_stream_audio_processor.cc index 6c48901..a9270d0 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_audio_processor.cc +++ b/third_party/blink/renderer/modules/mediastream/media_stream_audio_processor.cc
@@ -6,6 +6,7 @@ #include <memory> #include <optional> +#include <string_view> #include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" @@ -18,7 +19,7 @@ namespace blink { namespace { -void WebRtcLogStringPiece(base::StringPiece message) { +void WebRtcLogStringPiece(std::string_view message) { WebRtcLogMessage(std::string{message}); } } // namespace
diff --git a/third_party/blink/renderer/modules/navigatorcontentutils/navigator_content_utils.cc b/third_party/blink/renderer/modules/navigatorcontentutils/navigator_content_utils.cc index 8113ef9..81dcfb9 100644 --- a/third_party/blink/renderer/modules/navigatorcontentutils/navigator_content_utils.cc +++ b/third_party/blink/renderer/modules/navigatorcontentutils/navigator_content_utils.cc
@@ -114,8 +114,8 @@ bool has_custom_scheme_prefix = false; StringUTF8Adaptor scheme_adaptor(scheme); - if (!IsValidCustomHandlerScheme(scheme_adaptor.AsStringPiece(), - security_level, &has_custom_scheme_prefix)) { + if (!IsValidCustomHandlerScheme(scheme_adaptor.AsStringView(), security_level, + &has_custom_scheme_prefix)) { if (has_custom_scheme_prefix) { error_string = "The scheme name '" + scheme + "' is not allowed. Schemes starting with '" + scheme + @@ -137,8 +137,8 @@ const String& user_url, String& error_message) { StringUTF8Adaptor url_adaptor(user_url); - URLSyntaxErrorCode code = IsValidCustomHandlerURLSyntax( - GURL(full_url), url_adaptor.AsStringPiece()); + URLSyntaxErrorCode code = + IsValidCustomHandlerURLSyntax(GURL(full_url), url_adaptor.AsStringView()); switch (code) { case URLSyntaxErrorCode::kNoError: return true;
diff --git a/third_party/blink/renderer/modules/nfc/ndef_record.cc b/third_party/blink/renderer/modules/nfc/ndef_record.cc index 1af9ffa..b2487d08 100644 --- a/third_party/blink/renderer/modules/nfc/ndef_record.cc +++ b/third_party/blink/renderer/modules/nfc/ndef_record.cc
@@ -4,9 +4,10 @@ #include "third_party/blink/renderer/modules/nfc/ndef_record.h" +#include <string_view> + #include "base/containers/contains.h" #include "base/notreached.h" -#include "base/strings/string_piece.h" #include "services/device/public/mojom/nfc.mojom-blink.h" #include "third_party/blink/renderer/bindings/core/v8/idl_types.h" #include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h" @@ -117,8 +118,7 @@ if (type.empty()) return false; - static constexpr base::StringPiece kOtherCharsForCustomType( - ":!()+,-=@;$_*'."); + static constexpr std::string_view kOtherCharsForCustomType(":!()+,-=@;$_*'."); for (wtf_size_t i = 0; i < type.length(); i++) { if (!IsASCIIAlphanumeric(type[i]) && !base::Contains(kOtherCharsForCustomType, type[i])) {
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_router_type_converter_test.cc b/third_party/blink/renderer/modules/service_worker/service_worker_router_type_converter_test.cc index 1c211e6..c6112162 100644 --- a/third_party/blink/renderer/modules/service_worker/service_worker_router_type_converter_test.cc +++ b/third_party/blink/renderer/modules/service_worker/service_worker_router_type_converter_test.cc
@@ -4,6 +4,8 @@ #include "third_party/blink/renderer/modules/service_worker/service_worker_router_type_converter.h" +#include <string_view> + #include "base/test/scoped_feature_list.h" #include "services/network/public/mojom/service_worker_router_info.mojom-shared.h" #include "testing/gtest/include/gtest/gtest.h" @@ -32,14 +34,14 @@ } blink::SafeUrlPattern DefaultStringUrlPattern() { - auto make_fixed_part = [](base::StringPiece value) { + auto make_fixed_part = [](std::string_view value) { liburlpattern::Part part; part.modifier = liburlpattern::Modifier::kNone; part.type = liburlpattern::PartType::kFixed; part.value = value; return part; }; - auto make_wildcard_part = [](base::StringPiece name) { + auto make_wildcard_part = [](std::string_view name) { liburlpattern::Part part; part.modifier = liburlpattern::Modifier::kNone; part.type = liburlpattern::PartType::kFullWildcard; @@ -95,7 +97,7 @@ { auto parse_result = liburlpattern::Parse( kFakeUrlPattern, - [](base::StringPiece input) { return std::string(input); }); + [](std::string_view input) { return std::string(input); }); ASSERT_TRUE(parse_result.ok()); expected_url_pattern.pathname = parse_result.value().PartList(); } @@ -143,21 +145,21 @@ { auto parse_result = liburlpattern::Parse( kFakeProtoPattern, - [](base::StringPiece input) { return std::string(input); }); + [](std::string_view input) { return std::string(input); }); ASSERT_TRUE(parse_result.ok()); expected_url_pattern.protocol = parse_result.value().PartList(); } { auto parse_result = liburlpattern::Parse( kFakeHostPattern, - [](base::StringPiece input) { return std::string(input); }); + [](std::string_view input) { return std::string(input); }); ASSERT_TRUE(parse_result.ok()); expected_url_pattern.hostname = parse_result.value().PartList(); } { auto parse_result = liburlpattern::Parse( kFakePathPattern, - [](base::StringPiece input) { return std::string(input); }); + [](std::string_view input) { return std::string(input); }); ASSERT_TRUE(parse_result.ok()); expected_url_pattern.pathname = parse_result.value().PartList(); } @@ -208,14 +210,14 @@ { auto parse_result = liburlpattern::Parse( kFakeHostPattern, - [](base::StringPiece input) { return std::string(input); }); + [](std::string_view input) { return std::string(input); }); ASSERT_TRUE(parse_result.ok()); expected_url_pattern.hostname = parse_result.value().PartList(); } { auto parse_result = liburlpattern::Parse( kFakePathPattern, - [](base::StringPiece input) { return std::string(input); }); + [](std::string_view input) { return std::string(input); }); ASSERT_TRUE(parse_result.ok()); expected_url_pattern.pathname = parse_result.value().PartList(); } @@ -264,14 +266,14 @@ { auto parse_result = liburlpattern::Parse( kFakeProtoPattern, - [](base::StringPiece input) { return std::string(input); }); + [](std::string_view input) { return std::string(input); }); ASSERT_TRUE(parse_result.ok()); expected_url_pattern.protocol = parse_result.value().PartList(); } { auto parse_result = liburlpattern::Parse( kFakeHostPattern, - [](base::StringPiece input) { return std::string(input); }); + [](std::string_view input) { return std::string(input); }); ASSERT_TRUE(parse_result.ok()); expected_url_pattern.hostname = parse_result.value().PartList(); } @@ -281,7 +283,7 @@ // Step 17 https://urlpattern.spec.whatwg.org/#canon-processing-for-init auto parse_result = liburlpattern::Parse( kFakeBaseURLPathname, - [](base::StringPiece input) { return std::string(input); }); + [](std::string_view input) { return std::string(input); }); ASSERT_TRUE(parse_result.ok()); expected_url_pattern.pathname = parse_result.value().PartList(); } @@ -408,7 +410,7 @@ { auto parse_result = liburlpattern::Parse( kFakeUrlPattern, - [](base::StringPiece input) { return std::string(input); }); + [](std::string_view input) { return std::string(input); }); ASSERT_TRUE(parse_result.ok()); expected_url_pattern.pathname = parse_result.value().PartList(); } @@ -448,7 +450,7 @@ { auto parse_result = liburlpattern::Parse( kFakeUrlPattern, - [](base::StringPiece input) { return std::string(input); }); + [](std::string_view input) { return std::string(input); }); ASSERT_TRUE(parse_result.ok()); expected_url_pattern.pathname = parse_result.value().PartList(); } @@ -490,7 +492,7 @@ { auto parse_result = liburlpattern::Parse( kFakeUrlPattern, - [](base::StringPiece input) { return std::string(input); }); + [](std::string_view input) { return std::string(input); }); ASSERT_TRUE(parse_result.ok()); expected_url_pattern.pathname = parse_result.value().PartList(); } @@ -910,7 +912,7 @@ { auto parse_result = liburlpattern::Parse( kFakeUrlPattern, - [](base::StringPiece input) { return std::string(input); }); + [](std::string_view input) { return std::string(input); }); ASSERT_TRUE(parse_result.ok()); expected_url_pattern.pathname = parse_result.value().PartList(); } @@ -951,7 +953,7 @@ { auto parse_result = liburlpattern::Parse( kFakeUrlPattern, - [](base::StringPiece input) { return std::string(input); }); + [](std::string_view input) { return std::string(input); }); ASSERT_TRUE(parse_result.ok()); expected_url_pattern.pathname = parse_result.value().PartList(); }
diff --git a/third_party/blink/renderer/platform/bindings/parkable_string.cc b/third_party/blink/renderer/platform/bindings/parkable_string.cc index f5d06d72..41dca18c 100644 --- a/third_party/blink/renderer/platform/bindings/parkable_string.cc +++ b/third_party/blink/renderer/platform/bindings/parkable_string.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/platform/bindings/parkable_string.h" #include <array> +#include <string_view> #include "base/allocator/partition_allocator/src/partition_alloc/oom.h" #include "base/allocator/partition_allocator/src/partition_alloc/partition_alloc.h" @@ -633,11 +634,11 @@ } TRACE_EVENT("blink", "ParkableStringImpl::Decompress"); - base::StringPiece compressed_string_piece( + std::string_view compressed_string_piece( reinterpret_cast<const char*>(metadata_->compressed_->data()), metadata_->compressed_->size() * sizeof(uint8_t)); String uncompressed; - base::StringPiece uncompressed_string_piece; + std::string_view uncompressed_string_piece; size_t size = CharactersSizeInBytes(); char* char_data; if (is_8bit()) { @@ -649,7 +650,7 @@ uncompressed = String::CreateUninitialized(length(), data); char_data = reinterpret_cast<char*>(data); } - uncompressed_string_piece = base::StringPiece(char_data, size); + uncompressed_string_piece = std::string_view(char_data, size); switch (GetCompressionAlgorithm()) { case CompressionAlgorithm::kZlib: { @@ -759,8 +760,8 @@ // Compression touches the string. AsanUnpoisonString(params->string->string_); bool ok; - base::StringPiece data(reinterpret_cast<const char*>(params->data.get()), - params->size); + std::string_view data(reinterpret_cast<const char*>(params->data.get()), + params->size); std::unique_ptr<Vector<uint8_t>> compressed; // This runs in background, making CPU starvation likely, and not an issue.
diff --git a/third_party/blink/renderer/platform/exported/file_path_conversion.cc b/third_party/blink/renderer/platform/exported/file_path_conversion.cc index 78928f45..bb9cfac 100644 --- a/third_party/blink/renderer/platform/exported/file_path_conversion.cc +++ b/third_party/blink/renderer/platform/exported/file_path_conversion.cc
@@ -4,6 +4,8 @@ #include "third_party/blink/public/platform/file_path_conversion.h" +#include <string_view> + #include "base/files/file_path.h" #include "build/build_config.h" #include "third_party/blink/public/platform/web_string.h" @@ -18,12 +20,12 @@ if (!str.Is8Bit()) { return base::FilePath::FromUTF16Unsafe( - base::StringPiece16(str.Characters16(), str.length())); + std::u16string_view(str.Characters16(), str.length())); } #if BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA) StringUTF8Adaptor utf8(str); - return base::FilePath::FromUTF8Unsafe(utf8.AsStringPiece()); + return base::FilePath::FromUTF8Unsafe(utf8.AsStringView()); #else const LChar* data8 = str.Characters8(); return base::FilePath::FromUTF16Unsafe(
diff --git a/third_party/blink/renderer/platform/exported/url_conversion.cc b/third_party/blink/renderer/platform/exported/url_conversion.cc index 70c3eec80..6df79e19 100644 --- a/third_party/blink/renderer/platform/exported/url_conversion.cc +++ b/third_party/blink/renderer/platform/exported/url_conversion.cc
@@ -4,6 +4,8 @@ #include "third_party/blink/public/platform/url_conversion.h" +#include <string_view> + #include "third_party/blink/public/platform/web_string.h" #include "third_party/blink/renderer/platform/wtf/text/string_utf8_adaptor.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" @@ -19,11 +21,11 @@ if (str.Is8Bit()) { // Ensure the (possibly Latin-1) 8-bit string is UTF-8 for GURL. StringUTF8Adaptor utf8(str); - return GURL(utf8.AsStringPiece()); + return GURL(utf8.AsStringView()); } // GURL can consume UTF-16 directly. - return GURL(base::StringPiece16(str.Characters16(), str.length())); + return GURL(std::u16string_view(str.Characters16(), str.length())); } } // namespace blink
diff --git a/third_party/blink/renderer/platform/geometry/float_rounded_rect.h b/third_party/blink/renderer/platform/geometry/float_rounded_rect.h index 9eb05f2..09a7c21 100644 --- a/third_party/blink/renderer/platform/geometry/float_rounded_rect.h +++ b/third_party/blink/renderer/platform/geometry/float_rounded_rect.h
@@ -50,7 +50,7 @@ namespace blink { // Represents a rect with rounded corners. -// We don't use gfx::RRect in blink because gfx::RRect is based on SkRRect +// We don't use gfx::RRectF in blink because gfx::RRectF is based on SkRRect // which always keeps the radii constrained within the size of the rect, but // in blink sometimes we need to keep the unconstrained status of a rounded // rect. See ConstrainRadii(). This class also provides functions that are
diff --git a/third_party/blink/renderer/platform/graphics/compositing/chunk_to_layer_mapper.cc b/third_party/blink/renderer/platform/graphics/compositing/chunk_to_layer_mapper.cc index d96f8c7..3d67a79 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/chunk_to_layer_mapper.cc +++ b/third_party/blink/renderer/platform/graphics/compositing/chunk_to_layer_mapper.cc
@@ -19,12 +19,19 @@ transform_(gfx::Transform::MakeTranslation(-layer_offset)) {} void ChunkToLayerMapper::SwitchToChunk(const PaintChunk& chunk) { + SwitchToChunkWithState(chunk, + chunk.properties.GetPropertyTreeState().Unalias()); +} + +void ChunkToLayerMapper::SwitchToChunkWithState( + const PaintChunk& chunk, + const PropertyTreeState& new_chunk_state) { raster_effect_outset_ = chunk.raster_effect_outset; - const auto& new_chunk_state = - chunk.properties.GetPropertyTreeState().Unalias(); - if (new_chunk_state == chunk_state_) + DCHECK_EQ(new_chunk_state, chunk.properties.GetPropertyTreeState().Unalias()); + if (new_chunk_state == chunk_state_) { return; + } if (new_chunk_state == layer_state_) { has_filter_that_moves_pixels_ = false;
diff --git a/third_party/blink/renderer/platform/graphics/compositing/chunk_to_layer_mapper.h b/third_party/blink/renderer/platform/graphics/compositing/chunk_to_layer_mapper.h index e7ef9f0..97866d7 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/chunk_to_layer_mapper.h +++ b/third_party/blink/renderer/platform/graphics/compositing/chunk_to_layer_mapper.h
@@ -24,9 +24,13 @@ ChunkToLayerMapper(const PropertyTreeState& layer_state, const gfx::Vector2dF& layer_offset); + const PropertyTreeState& LayerState() const { return layer_state_; } + gfx::Vector2dF LayerOffset() const { return layer_offset_; } + // This class can map from multiple chunks. Before mapping from a chunk, this // method must be called to prepare for the chunk. void SwitchToChunk(const PaintChunk&); + void SwitchToChunkWithState(const PaintChunk&, const PropertyTreeState&); const PropertyTreeState& ChunkState() const { return chunk_state_; }
diff --git a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc index 137cbd3..04e54dfa 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc +++ b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc
@@ -737,20 +737,21 @@ synthesized_clip.Layer()->SetLayerTreeHost(root_layer_->layer_tree_host()); if (layer_debug_info_enabled_ && !synthesized_clip.Layer()->debug_info()) synthesized_clip.Layer()->SetDebugName("Synthesized Clip"); + } - if (!should_always_update_on_scroll_) { - // If there is any scroll translation between `clip.LocalTransformSpace` - // and `transform`, the synthesized clip layer's geometry and paint - // operations depend on the scroll offset and we need to update them - // on each scroll of the scroller. - const auto& clip_transform = clip.LocalTransformSpace().Unalias(); - if (&clip_transform != &transform && - &clip_transform.NearestScrollTranslationNode() != - &transform.NearestScrollTranslationNode()) { - should_always_update_on_scroll_ = true; - } + if (!should_always_update_on_scroll_) { + // If there is any scroll translation between `clip.LocalTransformSpace` + // and `transform`, the synthesized clip's fast rounded border or layer + // geometry and paint operations depend on the scroll offset and we need to + // update them on each scroll of the scroller. + const auto& clip_transform = clip.LocalTransformSpace().Unalias(); + if (&clip_transform != &transform && + &clip_transform.NearestScrollTranslationNode() != + &transform.NearestScrollTranslationNode()) { + should_always_update_on_scroll_ = true; } } + mask_isolation_id = synthesized_clip.GetMaskIsolationId(); mask_effect_id = synthesized_clip.GetMaskEffectId(); return synthesized_clip;
diff --git a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor_test.cc b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor_test.cc index 82ddc3d0..c0c0909 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor_test.cc +++ b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor_test.cc
@@ -3677,23 +3677,21 @@ Update(artifact.Build()); // Expectation in effect stack diagram: - // content1 - // content0 [ e1 ] clip_mask1 content2 - // [ mask_isolation_0 ][ mask_isolation_1 ][ mask_isolation_2 ] - // [ e0 ] + // content1 + // content0 [ e1 ] content2 + // [ mask_isolation_0 ][ mask_isolation_1 ][ mask_isolation_2 ] + // [ e0 ] // Three content layers. - ASSERT_EQ(4u, LayerCount()); + ASSERT_EQ(3u, LayerCount()); const cc::Layer* content0 = LayerAt(0); const cc::Layer* content1 = LayerAt(1); - const cc::Layer* clip_mask1 = LayerAt(2); - const cc::Layer* content2 = LayerAt(3); + const cc::Layer* content2 = LayerAt(2); - // Three synthesized layers, two of which are null because they use fast - // rounded corners. One real synthesized layer is needed because the rounded - // clip and the backdrop filter are in different transform spaces. + // Three synthesized layers, all are null because they use fast rounded + // corners. ASSERT_EQ(3u, SynthesizedClipLayerCount()); EXPECT_FALSE(SynthesizedClipLayerAt(0)); - EXPECT_EQ(clip_mask1, SynthesizedClipLayerAt(1)); + EXPECT_FALSE(SynthesizedClipLayerAt(1)); EXPECT_FALSE(SynthesizedClipLayerAt(2)); int t1_id = content0->transform_tree_index(); @@ -3737,24 +3735,12 @@ EXPECT_EQ(t1_id, mask_isolation_1.transform_id); EXPECT_EQ(c2_id, mask_isolation_1.clip_id); EXPECT_FALSE(mask_isolation_1.backdrop_filters.IsEmpty()); - EXPECT_FALSE(mask_isolation_1.is_fast_rounded_corner); + EXPECT_TRUE(mask_isolation_1.is_fast_rounded_corner); // Opacity should also be moved to mask_isolation_1. EXPECT_EQ(0.5f, mask_isolation_1.opacity); - EXPECT_EQ(gfx::RRectF(), + EXPECT_EQ(gfx::RRectF(40, 30, 300, 200, 5), mask_isolation_1.mask_filter_info.rounded_corner_bounds()); - EXPECT_EQ(t1_id, clip_mask1->transform_tree_index()); - EXPECT_EQ(c2_id, clip_mask1->clip_tree_index()); - const cc::EffectNode& mask = - *GetPropertyTrees().effect_tree().Node(clip_mask1->effect_tree_index()); - ASSERT_EQ(mask_isolation_1_id, mask.parent_id); - EXPECT_EQ(SkBlendMode::kDstIn, mask.blend_mode); - EXPECT_TRUE(static_cast<const cc::PictureLayer*>(clip_mask1) - ->is_backdrop_filter_mask()); - EXPECT_TRUE(clip_mask1->element_id()); - EXPECT_EQ(clip_mask1->element_id(), - mask_isolation_1.backdrop_mask_element_id); - EXPECT_EQ(t1_id, content2->transform_tree_index()); EXPECT_EQ(c1_id, content2->clip_tree_index()); int mask_isolation_2_id = content2->effect_tree_index();
diff --git a/third_party/blink/renderer/platform/graphics/compositing/paint_chunks_to_cc_layer.cc b/third_party/blink/renderer/platform/graphics/compositing/paint_chunks_to_cc_layer.cc index ff93ff5..83627dd 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/paint_chunks_to_cc_layer.cc +++ b/third_party/blink/renderer/platform/graphics/compositing/paint_chunks_to_cc_layer.cc
@@ -55,12 +55,10 @@ ConversionContext(const PropertyTreeState& layer_state, const gfx::Vector2dF& layer_offset, Result& result) - : layer_state_(layer_state), - layer_offset_(layer_offset), + : chunk_to_layer_mapper_(layer_state, layer_offset), current_transform_(&layer_state.Transform()), current_clip_(&layer_state.Clip()), current_effect_(&layer_state.Effect()), - chunk_to_layer_mapper_(layer_state_, layer_offset_), result_(result) {} ~ConversionContext(); @@ -114,15 +112,12 @@ const gfx::Rect* additional_cull_rect = nullptr); private: + bool HasDrawing(PaintChunkIterator, const PropertyTreeState&) const; + // Adjust the translation of the whole display list relative to layer offset. // It's only called if we actually paint anything. void TranslateForLayerOffsetOnce(); - // Switch the current property tree state to the chunk's state. It's only - // called if we actually paint anything, and should execute for a chunk - // only once. - void SwitchToChunkState(const PaintChunk&); - // Switch the current clip to the target state, staying in the same effect. // It is no-op if the context is already in the target state. // Otherwise zero or more clips will be popped from or pushed onto the @@ -239,16 +234,18 @@ // RAW_PTR_EXCLUSION: Performance reasons: regressions in MotionMark // (crbug.com/1495275#c116). The struct is performance critical and stack // scoped. + // These fields are never nullptr. They save ConversionContext:: + // current_transform_, current_clip_ and current_effect_, respectively. RAW_PTR_EXCLUSION const TransformPaintPropertyNode* transform; // RAW_PTR_EXCLUSION: The struct is performance critical and stack scoped. RAW_PTR_EXCLUSION const ClipPaintPropertyNode* clip; // RAW_PTR_EXCLUSION: The struct is performance critical and stack scoped. RAW_PTR_EXCLUSION const EffectPaintPropertyNode* effect; - // See ConversionContext<Result>::previous_transform_. + // This saves ConversionContext::previous_transform_. // RAW_PTR_EXCLUSION: The struct is performance critical and stack scoped. RAW_PTR_EXCLUSION const TransformPaintPropertyNode* previous_transform; #if DCHECK_IS_ON() - bool has_pre_cap_effect_hierarchy_issue = false; + bool has_effect_hierarchy_issue = false; #endif private: @@ -258,8 +255,8 @@ void PopState(); Vector<StateEntry> state_stack_; - const PropertyTreeState& layer_state_; - const gfx::Vector2dF layer_offset_; + ChunkToLayerMapper chunk_to_layer_mapper_; + bool translated_for_layer_offset_ = false; // These fields are never nullptr. @@ -295,8 +292,6 @@ }; Vector<EffectBoundsInfo> effect_bounds_stack_; - ChunkToLayerMapper chunk_to_layer_mapper_; - Result& result_; }; @@ -316,27 +311,18 @@ template <typename Result> void ConversionContext<Result>::TranslateForLayerOffsetOnce() { - if (translated_for_layer_offset_ || layer_offset_ == gfx::Vector2dF()) + gfx::Vector2dF layer_offset = chunk_to_layer_mapper_.LayerOffset(); + if (translated_for_layer_offset_ || layer_offset == gfx::Vector2dF()) { return; + } result_.StartPaint(); push<cc::SaveOp>(); - push<cc::TranslateOp>(-layer_offset_.x(), -layer_offset_.y()); + push<cc::TranslateOp>(-layer_offset.x(), -layer_offset.y()); result_.EndPaintOfPairedBegin(); translated_for_layer_offset_ = true; } -template <typename Result> -void ConversionContext<Result>::SwitchToChunkState(const PaintChunk& chunk) { - TranslateForLayerOffsetOnce(); - chunk_to_layer_mapper_.SwitchToChunk(chunk); - - const auto& chunk_state = chunk.properties; - SwitchToEffect(chunk_state.Effect().Unalias()); - SwitchToClip(chunk_state.Clip().Unalias()); - SwitchToTransform(chunk_state.Transform().Unalias()); -} - // Tries to combine a clip node's clip rect into |combined_clip_rect|. // Returns whether the clip has been combined. static bool CombineClip(const ClipPaintPropertyNode& clip, @@ -345,18 +331,20 @@ return true; // Don't combine into a clip with clip path. - DCHECK(clip.Parent()); - if (clip.UnaliasedParent()->ClipPath()) + const auto* parent = clip.UnaliasedParent(); + CHECK(parent); + if (parent->ClipPath()) { return false; + } // Don't combine clips in different transform spaces. const auto& transform_space = clip.LocalTransformSpace().Unalias(); - const auto& parent_transform_space = - clip.UnaliasedParent()->LocalTransformSpace().Unalias(); + const auto& parent_transform_space = parent->LocalTransformSpace().Unalias(); if (&transform_space != &parent_transform_space && (transform_space.Parent() != &parent_transform_space || - !transform_space.IsIdentity())) + !transform_space.IsIdentity())) { return false; + } // Don't combine two rounded clip rects. bool clip_is_rounded = clip.PaintClipRect().IsRounded(); @@ -391,32 +379,35 @@ return; // Step 1: Exit all clips until the lowest common ancestor is found. - const auto* lca_clip = - &target_clip.LowestCommonAncestor(*current_clip_).Unalias(); - while (current_clip_ != lca_clip) { - if (!state_stack_.size() || !state_stack_.back().IsClip()) { - // TODO(crbug.com/803649): We still have clip hierarchy issues with - // fragment clips. See crbug.com/1240080 for the test case. Will change - // the above condition to DCHECK after LayoutNGBlockFragmentation is fully - // launched. + { + const auto* lca_clip = + &target_clip.LowestCommonAncestor(*current_clip_).Unalias(); + const auto* clip = current_clip_; + while (clip != lca_clip) { + if (!state_stack_.size() || !state_stack_.back().IsClip()) { + // TODO(crbug.com/40558824): We still have clip hierarchy issues. + // See crbug.com/40558824#comment57 for the test case. #if DCHECK_IS_ON() - DLOG(ERROR) << "Error: Chunk has a clip that escaped its layer's or " - << "effect's clip.\ntarget_clip:\n" - << target_clip.ToTreeString().Utf8() << "current_clip_:\n" - << current_clip_->ToTreeString().Utf8(); + DLOG(ERROR) << "Error: Chunk has a clip that escaped its layer's or " + << "effect's clip.\ntarget_clip:\n" + << target_clip.ToTreeString().Utf8() << "current_clip_:\n" + << clip->ToTreeString().Utf8(); #endif - break; + break; + } + DCHECK(clip->Parent()); + clip = &clip->Parent()->Unalias(); + StateEntry& previous_state = state_stack_.back(); + if (clip == lca_clip) { + // |lca_clip| may be an intermediate clip in a series of combined clips. + // Jump to the first of the combined clips. + clip = lca_clip = previous_state.clip; + } + if (clip == previous_state.clip) { + EndClip(); + DCHECK_EQ(current_clip_, clip); + } } - DCHECK(current_clip_->Parent()); - current_clip_ = ¤t_clip_->Parent()->Unalias(); - StateEntry& previous_state = state_stack_.back(); - if (current_clip_ == lca_clip) { - // |lca_clip| is an intermediate clip in a series of combined clips. - // Jump to the first of the combined clips. - current_clip_ = lca_clip = previous_state.clip; - } - if (current_clip_ == previous_state.clip) - EndClip(); } if (&target_clip == current_clip_) @@ -517,10 +508,8 @@ // This EndClips() and the later EndEffect() pop to the parent effect. EndClips(); if (!state_stack_.size()) { - // TODO(crbug.com/803649): We still have clip hierarchy issues with - // fragment clips. See crbug.com/1240080 for the test case. Will change - // the above condition to DCHECK after LayoutNGBlockFragmentation is fully - // launched. + // TODO(crbug.com/40558824): We still have clip hierarchy issues. + // See crbug.com/40558824#comment57 for the test case. #if DCHECK_IS_ON() DLOG(ERROR) << "Error: Chunk has an effect that escapes layer's effect.\n" << "target_effect:\n" @@ -528,12 +517,11 @@ << current_effect_->ToTreeString().Utf8(); has_effect_hierarchy_issue = true; #endif - // In pre-CompositeAfterPaint, we may squash one layer into another, but - // the squashing layer may create more effect nodes not for real effects, - // causing squashed layer's effect to escape the squashing layer's effect. - // We can continue because the extra effects are noop. - if (!HasRealEffects(*current_effect_, lca_effect)) + // We can continue if the extra effects causing the clip hierarchy issue + // are no-op. + if (!HasRealEffects(*current_effect_, lca_effect)) { break; + } return; } EndEffect(); @@ -559,8 +547,7 @@ #endif StartEffect(*sub_effect); #if DCHECK_IS_ON() - state_stack_.back().has_pre_cap_effect_hierarchy_issue = - has_effect_hierarchy_issue; + state_stack_.back().has_effect_hierarchy_issue = has_effect_hierarchy_issue; // This applies only to the first new effect. has_effect_hierarchy_issue = false; #endif @@ -667,8 +654,9 @@ #if DCHECK_IS_ON() const auto& previous_state = state_stack_.back(); DCHECK(previous_state.IsEffect()); - if (!previous_state.has_pre_cap_effect_hierarchy_issue) + if (!previous_state.has_effect_hierarchy_issue) { DCHECK_EQ(current_effect_->UnaliasedParent(), previous_state.effect); + } DCHECK_EQ(current_clip_, previous_state.clip); #endif @@ -772,20 +760,52 @@ } template <typename Result> +bool ConversionContext<Result>::HasDrawing( + PaintChunkIterator chunk_it, + const PropertyTreeState& chunk_state) const { + // If we have an empty paint chunk, then we would prefer ignoring it. + // However, a reference filter can generate visible effect from invisible + // source, and we need to emit paint operations for it. + if (&chunk_state.Effect() != current_effect_) { + return true; + } + DisplayItemRange items = chunk_it.DisplayItems(); + if (items.size() == 0) { + return false; + } + if (items.size() > 1) { + // Assume the chunk has drawing if it has more than one display items. + return true; + } + if (auto* drawing = DynamicTo<DrawingDisplayItem>(*items.begin())) { + if (drawing->GetPaintRecord().empty() && + // See can_ignore_record in Convert()'s inner loop. + &chunk_state.Effect() == &EffectPaintPropertyNode::Root()) { + return false; + } + } + return true; +} + +template <typename Result> void ConversionContext<Result>::Convert(const PaintChunkSubset& chunks, const gfx::Rect* additional_cull_rect) { for (auto it = chunks.begin(); it != chunks.end(); ++it) { const auto& chunk = *it; - if (chunk.effectively_invisible) + if (chunk.effectively_invisible) { continue; - const auto& chunk_state = chunk.properties; - bool switched_to_chunk_state = false; + } + + PropertyTreeState chunk_state = + chunk.properties.GetPropertyTreeState().Unalias(); + if (!HasDrawing(it, chunk_state)) { + continue; + } + + TranslateForLayerOffsetOnce(); + chunk_to_layer_mapper_.SwitchToChunkWithState(chunk, chunk_state); if (additional_cull_rect) { - // `SwitchToChunkState` will also update `chunk_to_layer_mapper_`'s chunk - // but we need to explicitly switch the state ahead of time to ensure the - // call to `chunk_to_layer_mapper_.MapVisualRect` uses the correct state. - chunk_to_layer_mapper_.SwitchToChunk(chunk); gfx::Rect chunk_visual_rect = chunk_to_layer_mapper_.MapVisualRect(chunk.drawable_bounds); if (additional_cull_rect && @@ -794,14 +814,19 @@ } } + SwitchToEffect(chunk_state.Effect()); + SwitchToClip(chunk_state.Clip()); + SwitchToTransform(chunk_state.Transform()); + for (const auto& item : it.DisplayItems()) { PaintRecord record; - if (auto* scrollbar = DynamicTo<ScrollbarDisplayItem>(item)) + if (auto* scrollbar = DynamicTo<ScrollbarDisplayItem>(item)) { record = scrollbar->Paint(); - else if (auto* drawing = DynamicTo<DrawingDisplayItem>(item)) + } else if (auto* drawing = DynamicTo<DrawingDisplayItem>(item)) { record = drawing->GetPaintRecord(); - else + } else { continue; + } // If we have an empty paint record, then we would prefer ignoring it. // However, if we also have a non-root effect, the empty paint record @@ -814,11 +839,6 @@ continue; } - if (!switched_to_chunk_state) { - SwitchToChunkState(chunk); - switched_to_chunk_state = true; - } - gfx::Rect visual_rect = chunk_to_layer_mapper_.MapVisualRect(item.VisualRect()); if (additional_cull_rect && can_ignore_record && @@ -833,17 +853,11 @@ result_.EndPaintOfUnpaired(visual_rect); } - // If we have an empty paint chunk, then we would prefer ignoring it. - // However, a reference filter can generate visible effect from invisible - // source, and we need to emit paint operations for it. - if (!switched_to_chunk_state && &chunk_state.Effect() != current_effect_) - SwitchToChunkState(chunk); - // Most effects apply to drawable contents only. Reference filters are // exceptions, for which we have already added the chunk bounds mapped // through the filter to the bounds of the effect in StartEffect(). UpdateEffectBounds(gfx::RectF(chunk.drawable_bounds), - chunk_state.Transform().Unalias()); + chunk_state.Transform()); } }
diff --git a/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc b/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc index 78e248dc..a7066a2c 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc +++ b/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc
@@ -889,22 +889,17 @@ } } -bool PropertyTreeManager::SupportsShaderBasedRoundedCorner( +std::optional<gfx::RRectF> PropertyTreeManager::ShaderBasedRRect( const ClipPaintPropertyNode& clip, PropertyTreeManager::CcEffectType type, + const TransformPaintPropertyNode& transform, const EffectPaintPropertyNode* next_effect) { - if (type & CcEffectType::kSyntheticFor2dAxisAlignment) - return false; - - if (clip.ClipPath()) - return false; - - // Don't use shader based rounded corner if the next effect has backdrop - // filter and the clip is in different transform space, because we will use - // the effect's transform space for the mask isolation effect node. - if (next_effect && next_effect->BackdropFilter() && - &next_effect->LocalTransformSpace() != &clip.LocalTransformSpace()) - return false; + if (type & CcEffectType::kSyntheticFor2dAxisAlignment) { + return std::nullopt; + } + if (clip.ClipPath()) { + return std::nullopt; + } auto WidthAndHeightAreTheSame = [](const gfx::SizeF& size) { return size.width() == size.height(); @@ -915,7 +910,7 @@ !WidthAndHeightAreTheSame(radii.TopRight()) || !WidthAndHeightAreTheSame(radii.BottomRight()) || !WidthAndHeightAreTheSame(radii.BottomLeft())) { - return false; + return std::nullopt; } // Rounded corners that differ are not supported by the CALayerOverlay system @@ -926,11 +921,26 @@ if (radii.TopLeft() != radii.TopRight() || radii.TopLeft() != radii.BottomRight() || radii.TopLeft() != radii.BottomLeft()) { - return false; + return std::nullopt; } #endif - return true; + gfx::Vector2dF translation; + if (&transform != &clip.LocalTransformSpace()) { + gfx::Transform projection = GeometryMapper::SourceToDestinationProjection( + clip.LocalTransformSpace(), transform); + if (!projection.IsIdentityOr2dTranslation()) { + return std::nullopt; + } + translation = projection.To2dTranslation(); + } + + SkRRect rrect(clip.PaintClipRect()); + rrect.offset(translation.x(), translation.y()); + if (!rrect.isValid()) { + return std::nullopt; + } + return gfx::RRectF(rrect); } int PropertyTreeManager::SynthesizeCcEffectsForClipsIfNeeded( @@ -1008,6 +1018,11 @@ cc::EffectNode& synthetic_effect = *effect_tree_.Node( effect_tree_.Insert(cc::EffectNode(), current_.effect_id)); + const auto& transform = + should_realize_backdrop_effect + ? next_effect->LocalTransformSpace().Unalias() + : pending_clip.clip->LocalTransformSpace().Unalias(); + if (pending_clip.type & CcEffectType::kSyntheticFor2dAxisAlignment) { if (should_realize_backdrop_effect) { // We need a synthetic mask clip layer for the non-2d-axis-aligned clip @@ -1048,10 +1063,9 @@ // For non-trivial clip, isolation_effect.element_id will be assigned // later when the effect is closed. For now the default value ElementId() // is used. See PropertyTreeManager::EmitClipMaskLayer(). - if (SupportsShaderBasedRoundedCorner(*pending_clip.clip, - pending_clip.type, next_effect)) { - synthetic_effect.mask_filter_info = gfx::MaskFilterInfo( - gfx::RRectF(SkRRect(pending_clip.clip->PaintClipRect()))); + if (std::optional<gfx::RRectF> rrect = ShaderBasedRRect( + *pending_clip.clip, pending_clip.type, transform, next_effect)) { + synthetic_effect.mask_filter_info = gfx::MaskFilterInfo(*rrect); synthetic_effect.is_fast_rounded_corner = true; // Nested rounded corner clips need to force render surfaces for @@ -1079,28 +1093,25 @@ pending_synthetic_mask_layers_.insert(synthetic_effect.id); } - const TransformPaintPropertyNode* transform = nullptr; if (should_realize_backdrop_effect) { // Move the effect node containing backdrop effects up to the outermost // synthetic effect to ensure the backdrop effects can access the correct // backdrop. DCHECK(next_effect); DCHECK_EQ(cc_effect_id_for_backdrop_effect, cc::kInvalidPropertyNodeId); - transform = &next_effect->LocalTransformSpace().Unalias(); PopulateCcEffectNode(synthetic_effect, *next_effect, clip_id); cc_effect_id_for_backdrop_effect = synthetic_effect.id; should_realize_backdrop_effect = false; } else { - transform = &pending_clip.clip->LocalTransformSpace().Unalias(); synthetic_effect.clip_id = clip_id; } - synthetic_effect.transform_id = EnsureCompositorTransformNode(*transform); - synthetic_effect.double_sided = !transform->IsBackfaceHidden(); + synthetic_effect.transform_id = EnsureCompositorTransformNode(transform); + synthetic_effect.double_sided = !transform.IsBackfaceHidden(); effect_stack_.emplace_back(current_); SetCurrentEffectState(synthetic_effect, pending_clip.type, *current_.effect, - *pending_clip.clip, *transform); + *pending_clip.clip, transform); } return cc_effect_id_for_backdrop_effect;
diff --git a/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.h b/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.h index 1a78b2bf..6464e1e 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.h +++ b/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.h
@@ -27,6 +27,7 @@ namespace gfx { class PointF; +class RRectF; } namespace blink { @@ -214,9 +215,10 @@ kSyntheticFor2dAxisAlignment = 1 << 1 }; - static bool SupportsShaderBasedRoundedCorner( + static std::optional<gfx::RRectF> ShaderBasedRRect( const ClipPaintPropertyNode&, CcEffectType type, + const TransformPaintPropertyNode& transform, const EffectPaintPropertyNode* next_effect); // Note: EffectState holds direct references to property nodes. Ordinarily it
diff --git a/third_party/blink/renderer/platform/instrumentation/tracing/traced_value.cc b/third_party/blink/renderer/platform/instrumentation/tracing/traced_value.cc index f889633..06a587e5 100644 --- a/third_party/blink/renderer/platform/instrumentation/tracing/traced_value.cc +++ b/third_party/blink/renderer/platform/instrumentation/tracing/traced_value.cc
@@ -43,7 +43,7 @@ void TracedValue::SetString(const char* name, const String& value) { StringUTF8Adaptor adaptor(value); - traced_value_->SetString(name, adaptor.AsStringPiece()); + traced_value_->SetString(name, adaptor.AsStringView()); } void TracedValue::SetValue(const char* name, TracedValue* value) { @@ -53,7 +53,7 @@ void TracedValue::SetStringWithCopiedName(const char* name, const String& value) { StringUTF8Adaptor adaptor(value); - traced_value_->SetStringWithCopiedName(name, adaptor.AsStringPiece()); + traced_value_->SetStringWithCopiedName(name, adaptor.AsStringView()); } void TracedValue::BeginDictionary(const char* name) { @@ -90,7 +90,7 @@ void TracedValue::PushString(const String& value) { StringUTF8Adaptor adaptor(value); - traced_value_->AppendString(adaptor.AsStringPiece()); + traced_value_->AppendString(adaptor.AsStringView()); } void TracedValue::BeginArray() {
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc index 0cb5c2bd..3cc2c38 100644 --- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc +++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
@@ -31,6 +31,7 @@ #include <limits> #include <optional> #include <string> +#include <string_view> #include <utility> #include "base/auto_reset.h" @@ -2912,7 +2913,7 @@ // The followings should match with `ResourceType` in // `third_party/blink/renderer/platform/loader/fetch/resource.h` void ResourceFetcher::RecordResourceHistogram( - base::StringPiece prefix, + std::string_view prefix, ResourceType type, RevalidationPolicyForMetrics policy) const { base::UmaHistogramEnumeration(
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h index ba6ea1e2..0f29dc10 100644 --- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h +++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
@@ -29,9 +29,9 @@ #include <memory> #include <optional> +#include <string_view> #include <utility> -#include "base/strings/string_piece.h" #include "base/task/single_thread_task_runner.h" #include "base/unguessable_token.h" #include "services/metrics/public/cpp/mojo_ukm_recorder.h" @@ -562,7 +562,7 @@ bool handled_by_serviceworker, const blink::ServiceWorkerRouterInfo* router_info); - void RecordResourceHistogram(base::StringPiece prefix, + void RecordResourceHistogram(std::string_view prefix, ResourceType type, RevalidationPolicyForMetrics policy) const;
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/dedicated_or_shared_worker_fetch_context_impl.h b/third_party/blink/renderer/platform/loader/fetch/url_loader/dedicated_or_shared_worker_fetch_context_impl.h index 4618d5f..113e65b 100644 --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/dedicated_or_shared_worker_fetch_context_impl.h +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/dedicated_or_shared_worker_fetch_context_impl.h
@@ -6,7 +6,6 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_FETCH_URL_LOADER_DEDICATED_OR_SHARED_WORKER_FETCH_CONTEXT_IMPL_H_ #include "base/memory/raw_ptr.h" -#include "base/strings/string_piece.h" #include "base/synchronization/waitable_event.h" #include "base/task/single_thread_task_runner.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/navigation_body_loader_unittest.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/navigation_body_loader_unittest.cc index ddd06dba..115e8cc 100644 --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/navigation_body_loader_unittest.cc +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/navigation_body_loader_unittest.cc
@@ -4,6 +4,8 @@ #include "third_party/blink/renderer/platform/loader/fetch/url_loader/navigation_body_loader.h" +#include <string_view> + #include "base/functional/bind.h" #include "base/run_loop.h" #include "base/task/single_thread_task_runner.h" @@ -429,9 +431,9 @@ {"subjectAltName_sanity_check.pem", "root_ca_cert.pem"}, &certs)); ASSERT_EQ(2U, certs.size()); - base::StringPiece cert0_der = + std::string_view cert0_der = net::x509_util::CryptoBufferAsStringPiece(certs[0]->cert_buffer()); - base::StringPiece cert1_der = + std::string_view cert1_der = net::x509_util::CryptoBufferAsStringPiece(certs[1]->cert_buffer()); response->ssl_info->cert =
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/request_conversion.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/request_conversion.cc index 14c8189..f4af174b 100644 --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/request_conversion.cc +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/request_conversion.cc
@@ -4,6 +4,8 @@ #include "third_party/blink/renderer/platform/loader/fetch/url_loader/request_conversion.h" +#include <string_view> + #include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/system/data_pipe.h" @@ -47,13 +49,13 @@ // TODO(yhirano) Dedupe this and the same-name function in // web_url_request_util.cc. -std::string TrimLWSAndCRLF(const base::StringPiece& input) { - base::StringPiece string = net::HttpUtil::TrimLWS(input); +std::string TrimLWSAndCRLF(const std::string_view& input) { + std::string_view string = net::HttpUtil::TrimLWS(input); const char* begin = string.data(); const char* end = string.data() + string.size(); while (begin < end && (end[-1] == '\r' || end[-1] == '\n')) --end; - return std::string(base::StringPiece(begin, end - begin)); + return std::string(std::string_view(begin, end - begin)); } mojom::ResourceType RequestContextToResourceType(
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader_unittest.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader_unittest.cc index 99e4199..0285940e 100644 --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader_unittest.cc +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader_unittest.cc
@@ -2,9 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader.h" + #include <stdint.h> #include <string.h> +#include <string_view> #include <utility> #include <vector> @@ -52,7 +55,6 @@ #include "third_party/blink/renderer/platform/loader/fetch/url_loader/resource_request_client.h" #include "third_party/blink/renderer/platform/loader/fetch/url_loader/resource_request_sender.h" #include "third_party/blink/renderer/platform/loader/fetch/url_loader/sync_load_response.h" -#include "third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader.h" #include "third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader_client.h" #include "third_party/blink/renderer/platform/weborigin/kurl.h" #include "third_party/blink/renderer/platform/wtf/functional.h" @@ -540,9 +542,9 @@ {"subjectAltName_sanity_check.pem", "root_ca_cert.pem"}, &certs)); ASSERT_EQ(2U, certs.size()); - base::StringPiece cert0_der = + std::string_view cert0_der = net::x509_util::CryptoBufferAsStringPiece(certs[0]->cert_buffer()); - base::StringPiece cert1_der = + std::string_view cert1_der = net::x509_util::CryptoBufferAsStringPiece(certs[1]->cert_buffer()); net::SSLInfo ssl_info;
diff --git a/third_party/blink/renderer/platform/loader/link_header.cc b/third_party/blink/renderer/platform/loader/link_header.cc index f016f79..87aecae 100644 --- a/third_party/blink/renderer/platform/loader/link_header.cc +++ b/third_party/blink/renderer/platform/loader/link_header.cc
@@ -4,6 +4,8 @@ #include "third_party/blink/renderer/platform/loader/link_header.h" +#include <string_view> + #include "base/strings/string_util.h" #include "components/link_header_util/link_header_util.h" #include "third_party/blink/public/common/web_package/signed_exchange_consts.h" @@ -19,7 +21,7 @@ } static LinkHeader::LinkParameterName ParameterNameFromString( - base::StringPiece name) { + std::string_view name) { if (base::EqualsCaseInsensitiveASCII(name, "rel")) return LinkHeader::kLinkParameterRel; if (base::EqualsCaseInsensitiveASCII(name, "anchor"))
diff --git a/third_party/blink/renderer/platform/mojo/security_origin_mojom_traits.h b/third_party/blink/renderer/platform/mojo/security_origin_mojom_traits.h index 0574483..be38d4f 100644 --- a/third_party/blink/renderer/platform/mojo/security_origin_mojom_traits.h +++ b/third_party/blink/renderer/platform/mojo/security_origin_mojom_traits.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_MOJO_SECURITY_ORIGIN_MOJOM_TRAITS_H_ #include <optional> +#include <string_view> #include "mojo/public/cpp/base/unguessable_token_mojom_traits.h" #include "mojo/public/cpp/bindings/optional_as_pointer.h" @@ -70,8 +71,8 @@ // This implementation is very close to // SecurityOrigin::CreateFromUrlOrigin, so keep in sync if modifications // are made in that method. - base::StringPiece scheme; - base::StringPiece host; + std::string_view scheme; + std::string_view host; std::optional<base::UnguessableToken> nonce_if_opaque; if (!data.ReadScheme(&scheme) || !data.ReadHost(&host) || !data.ReadNonceIfOpaque(&nonce_if_opaque))
diff --git a/third_party/blink/renderer/platform/network/http_parsers.cc b/third_party/blink/renderer/platform/network/http_parsers.cc index 9342d36c..8182059 100644 --- a/third_party/blink/renderer/platform/network/http_parsers.cc +++ b/third_party/blink/renderer/platform/network/http_parsers.cc
@@ -35,6 +35,7 @@ #include <memory> #include <optional> #include <string> +#include <string_view> #include <utility> #include "base/containers/flat_map.h" @@ -788,7 +789,7 @@ for (const AtomicString& header : ReplaceHeaders()) { std::string value; StringUTF8Adaptor adaptor(header); - base::StringPiece header_string_piece(adaptor.AsStringPiece()); + std::string_view header_string_piece(adaptor.AsStringView()); size_t iterator = 0; response->ClearHttpHeaderField(header); @@ -831,7 +832,7 @@ for (const AtomicString* headerNamePointer : headerNamePointers) { StringUTF8Adaptor adaptor(*headerNamePointer); size_t iterator = 0; - base::StringPiece headerNameStringPiece = adaptor.AsStringPiece(); + std::string_view headerNameStringPiece = adaptor.AsStringView(); std::string value; while (responseHeaders->EnumerateHeader(&iterator, headerNameStringPiece, &value)) { @@ -847,7 +848,7 @@ int64_t* last_byte_position, int64_t* instance_length) { return net::HttpUtil::ParseContentRangeHeaderFor206( - StringUTF8Adaptor(content_range).AsStringPiece(), first_byte_position, + StringUTF8Adaptor(content_range).AsStringView(), first_byte_position, last_byte_position, instance_length); }
diff --git a/third_party/blink/renderer/platform/network/http_parsers_test.cc b/third_party/blink/renderer/platform/network/http_parsers_test.cc index 623cef0..d9a97145 100644 --- a/third_party/blink/renderer/platform/network/http_parsers_test.cc +++ b/third_party/blink/renderer/platform/network/http_parsers_test.cc
@@ -4,7 +4,8 @@ #include "third_party/blink/renderer/platform/network/http_parsers.h" -#include "base/strings/string_piece.h" +#include <string_view> + #include "base/test/scoped_feature_list.h" #include "base/time/time.h" #include "net/base/features.h" @@ -873,7 +874,7 @@ class NoVarySearchPrefetchDisabledTest : public ::testing::Test, - public ::testing::WithParamInterface<base::StringPiece> { + public ::testing::WithParamInterface<std::string_view> { public: NoVarySearchPrefetchDisabledTest() { scoped_feature_list_.InitAndDisableFeature( @@ -892,7 +893,7 @@ EXPECT_FALSE(parsed_headers->no_vary_search_with_parse_error); } -constexpr base::StringPiece no_vary_search_prefetch_disabled_data[] = { +constexpr std::string_view no_vary_search_prefetch_disabled_data[] = { // No No-Vary-Search header. "HTTP/1.1 200 OK\r\n" "Set-Cookie: a\r\n" @@ -911,7 +912,7 @@ TEST(NoVarySearchPrefetchEnabledTest, ParsingNVSReturnsDefaultURLVariance) { base::test::ScopedFeatureList feature_list( network::features::kPrefetchNoVarySearch); - const base::StringPiece headers = + const std::string_view headers = "HTTP/1.1 200 OK\r\n" "Set-Cookie: a\r\n" "Set-Cookie: b\r\n\r\n";
diff --git a/third_party/blink/renderer/platform/network/network_utils.cc b/third_party/blink/renderer/platform/network/network_utils.cc index 65137257..b5188df 100644 --- a/third_party/blink/renderer/platform/network/network_utils.cc +++ b/third_party/blink/renderer/platform/network/network_utils.cc
@@ -47,15 +47,16 @@ bool IsReservedIPAddress(const String& host) { net::IPAddress address; StringUTF8Adaptor utf8(host); - if (!net::ParseURLHostnameToAddress(utf8.AsStringPiece(), &address)) + if (!net::ParseURLHostnameToAddress(utf8.AsStringView(), &address)) { return false; + } return !address.IsPubliclyRoutable(); } String GetDomainAndRegistry(const String& host, PrivateRegistryFilter filter) { StringUTF8Adaptor host_utf8(host); std::string domain = net::registry_controlled_domains::GetDomainAndRegistry( - host_utf8.AsStringPiece(), getNetPrivateRegistryFilter(filter)); + host_utf8.AsStringView(), getNetPrivateRegistryFilter(filter)); return String(domain.data(), domain.length()); }
diff --git a/third_party/blink/renderer/platform/peerconnection/fake_connection_test_base.h b/third_party/blink/renderer/platform/peerconnection/fake_connection_test_base.h index 153ada79..dde1b1a 100644 --- a/third_party/blink/renderer/platform/peerconnection/fake_connection_test_base.h +++ b/third_party/blink/renderer/platform/peerconnection/fake_connection_test_base.h
@@ -5,14 +5,13 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_PEERCONNECTION_FAKE_CONNECTION_TEST_BASE_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_PEERCONNECTION_FAKE_CONNECTION_TEST_BASE_H_ -#include "base/strings/string_piece.h" +#include <string_view> + #include "base/synchronization/waitable_event.h" #include "base/test/task_environment.h" #include "components/webrtc/thread_wrapper.h" #include "testing/gtest/include/gtest/gtest.h" - #include "third_party/webrtc/p2p/base/connection.h" - #include "third_party/webrtc_overrides/p2p/base/fake_connection_factory.h" namespace blink { @@ -33,7 +32,7 @@ ready.Wait(); } - const ::cricket::Connection* GetConnection(base::StringPiece remote_ip, + const ::cricket::Connection* GetConnection(std::string_view remote_ip, int remote_port) { return connection_factory_->CreateConnection( webrtc::IceCandidateType::kHost, remote_ip, remote_port);
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_stats.cc b/third_party/blink/renderer/platform/peerconnection/rtc_stats.cc index f0ae3a1..2967a73 100644 --- a/third_party/blink/renderer/platform/peerconnection/rtc_stats.cc +++ b/third_party/blink/renderer/platform/peerconnection/rtc_stats.cc
@@ -12,7 +12,6 @@ #include "base/check_op.h" #include "base/containers/contains.h" #include "base/numerics/safe_conversions.h" -#include "base/strings/string_piece.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" #include "third_party/blink/public/common/features.h"
diff --git a/third_party/blink/renderer/platform/region_capture_crop_id.cc b/third_party/blink/renderer/platform/region_capture_crop_id.cc index 305c840..8f00ef3 100644 --- a/third_party/blink/renderer/platform/region_capture_crop_id.cc +++ b/third_party/blink/renderer/platform/region_capture_crop_id.cc
@@ -7,10 +7,10 @@ #include <inttypes.h> #include <string> +#include <string_view> #include "base/strings/strcat.h" #include "base/strings/string_number_conversions.h" -#include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" @@ -30,7 +30,7 @@ base::RemoveChars(lowercase, "-", &lowercase); DCHECK_EQ(lowercase.length(), 32u); // 32 hex-chars; 0 hyphens. - base::StringPiece string_piece(lowercase); + std::string_view string_piece(lowercase); uint64_t high = 0; bool success = base::HexStringToUInt64(string_piece.substr(0, 16), &high); @@ -46,7 +46,7 @@ base::Uuid TokenToGUID(const base::Token& token) { const std::string hex_str = base::StringPrintf("%016" PRIx64 "%016" PRIx64, token.high(), token.low()); - const base::StringPiece hex_string_piece(hex_str); + const std::string_view hex_string_piece(hex_str); const std::string lowercase = base::StrCat( {hex_string_piece.substr(0, 8), "-", hex_string_piece.substr(8, 4), "-", hex_string_piece.substr(12, 4), "-", hex_string_piece.substr(16, 4), "-",
diff --git a/third_party/blink/renderer/platform/text/text_break_iterator.cc b/third_party/blink/renderer/platform/text/text_break_iterator.cc index 7937e7d..d54835cc 100644 --- a/third_party/blink/renderer/platform/text/text_break_iterator.cc +++ b/third_party/blink/renderer/platform/text/text_break_iterator.cc
@@ -299,7 +299,7 @@ enum class FastBreakResult : uint8_t { kNoBreak, kCanBreak, kUnknown }; -template <typename CharacterType> +template <typename CharacterType, bool use_fast_table> struct LazyLineBreakIterator::Context { STACK_ALLOCATED(); @@ -370,8 +370,7 @@ : FastBreakResult::kNoBreak; } - if (UNLIKELY( - !RuntimeEnabledFeatures::BreakIteratorDataGeneratorEnabled())) { + if constexpr (!use_fast_table) { // If both `last_ch` and `ch` are ASCII characters, use a lookup table for // enhanced speed and for compatibility with other browsers (see comments // for asciiLineBreakTable for details). @@ -428,7 +427,23 @@ unsigned pos, const CharacterType* str, unsigned len) const { - Context<CharacterType> context(str, len, start_offset_, pos); + if (RuntimeEnabledFeatures::BreakIteratorDataGeneratorEnabled()) { + return NextBreakablePosition<CharacterType, line_break_type, break_space, + /*use_fast_table*/ true>(pos, str, len); + } + return NextBreakablePosition<CharacterType, line_break_type, break_space, + /*use_fast_table*/ false>(pos, str, len); +} + +template <typename CharacterType, + LineBreakType line_break_type, + BreakSpaceType break_space, + bool use_fast_table> +inline unsigned LazyLineBreakIterator::NextBreakablePosition( + unsigned pos, + const CharacterType* str, + unsigned len) const { + Context<CharacterType, use_fast_table> context(str, len, start_offset_, pos); unsigned next_break = 0; ULineBreak last_line_break; if constexpr (line_break_type == LineBreakType::kBreakAll) {
diff --git a/third_party/blink/renderer/platform/text/text_break_iterator.h b/third_party/blink/renderer/platform/text/text_break_iterator.h index bff6abf..5d51d9d 100644 --- a/third_party/blink/renderer/platform/text/text_break_iterator.h +++ b/third_party/blink/renderer/platform/text/text_break_iterator.h
@@ -216,7 +216,7 @@ private: FRIEND_TEST_ALL_PREFIXES(TextBreakIteratorTest, Strictness); - template <typename CharacterType> + template <typename CharacterType, bool use_fast_table> struct Context; const AtomicString& LocaleWithKeyword() const; @@ -247,6 +247,13 @@ return iterator_.get(); } + template <typename CharacterType, + LineBreakType, + BreakSpaceType, + bool use_fast_table> + unsigned NextBreakablePosition(unsigned pos, + const CharacterType* str, + unsigned len) const; template <typename CharacterType, LineBreakType, BreakSpaceType> unsigned NextBreakablePosition(unsigned pos, const CharacterType* str,
diff --git a/third_party/blink/renderer/platform/weborigin/known_ports.cc b/third_party/blink/renderer/platform/weborigin/known_ports.cc index 0a13593a..f569772b 100644 --- a/third_party/blink/renderer/platform/weborigin/known_ports.cc +++ b/third_party/blink/renderer/platform/weborigin/known_ports.cc
@@ -86,7 +86,7 @@ effective_port = DefaultPortForProtocol(protocol); StringUTF8Adaptor utf8(protocol); base::AutoLock locker(ExplicitlyAllowedPortsLock()); - return net::IsPortAllowedForScheme(effective_port, utf8.AsStringPiece()); + return net::IsPortAllowedForScheme(effective_port, utf8.AsStringView()); } void SetExplicitlyAllowedPorts(base::span<const uint16_t> allowed_ports) {
diff --git a/third_party/blink/renderer/platform/weborigin/kurl.cc b/third_party/blink/renderer/platform/weborigin/kurl.cc index 09f4486..c0376f88 100644 --- a/third_party/blink/renderer/platform/weborigin/kurl.cc +++ b/third_party/blink/renderer/platform/weborigin/kurl.cc
@@ -200,7 +200,7 @@ StringView path = ComponentStringView(parsed_.path); StringUTF8Adaptor path_utf8(path); - return GURL::IsAboutPath(path_utf8.AsStringPiece(), allowed_path); + return GURL::IsAboutPath(path_utf8.AsStringView(), allowed_path); } bool KURL::IsAboutBlankURL() const { @@ -780,7 +780,7 @@ String DecodeURLEscapeSequences(const String& string, DecodeURLMode mode) { StringUTF8Adaptor string_utf8(string); url::RawCanonOutputT<char16_t> unescaped; - url::DecodeURLEscapeSequences(string_utf8.AsStringPiece(), mode, &unescaped); + url::DecodeURLEscapeSequences(string_utf8.AsStringView(), mode, &unescaped); return StringImpl::Create8BitIfPossible( reinterpret_cast<UChar*>(unescaped.data()), base::checked_cast<wtf_size_t>(unescaped.length())); @@ -804,7 +804,7 @@ bool HasInvalidURLEscapeSequences(const String& string) { StringUTF8Adaptor string_utf8(string); - return url::HasInvalidURLEscapeSequences(string_utf8.AsStringPiece()); + return url::HasInvalidURLEscapeSequences(string_utf8.AsStringView()); } bool KURL::CanSetHostOrPort() const {
diff --git a/third_party/blink/renderer/platform/weborigin/kurl_test.cc b/third_party/blink/renderer/platform/weborigin/kurl_test.cc index 875cfae3..403bd04c 100644 --- a/third_party/blink/renderer/platform/weborigin/kurl_test.cc +++ b/third_party/blink/renderer/platform/weborigin/kurl_test.cc
@@ -35,6 +35,8 @@ #include <stdint.h> +#include <string_view> + #include "base/test/scoped_feature_list.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/renderer/platform/scheduler/public/non_main_thread.h" @@ -1258,7 +1260,7 @@ public: using UrlType = blink::KURL; - static UrlType CreateUrlFromString(base::StringPiece s) { + static UrlType CreateUrlFromString(std::string_view s) { return blink::KURL(String::FromUTF8(s)); }
diff --git a/third_party/blink/renderer/platform/weborigin/security_origin_test.cc b/third_party/blink/renderer/platform/weborigin/security_origin_test.cc index 7985a38..a262e284 100644 --- a/third_party/blink/renderer/platform/weborigin/security_origin_test.cc +++ b/third_party/blink/renderer/platform/weborigin/security_origin_test.cc
@@ -32,6 +32,8 @@ #include <stdint.h> +#include <string_view> + #include "base/test/scoped_command_line.h" #include "base/unguessable_token.h" #include "net/base/url_util.h" @@ -1157,7 +1159,7 @@ public: using OriginType = scoped_refptr<blink::SecurityOrigin>; - static OriginType CreateOriginFromString(base::StringPiece s) { + static OriginType CreateOriginFromString(std::string_view s) { return blink::SecurityOrigin::CreateFromString(String::FromUTF8(s)); } @@ -1166,7 +1168,7 @@ } static OriginType CreateWithReferenceOrigin( - base::StringPiece url, + std::string_view url, const OriginType& reference_origin) { return blink::SecurityOrigin::CreateWithReferenceOrigin( blink::KURL(String::FromUTF8(url)), reference_origin.get()); @@ -1206,7 +1208,7 @@ return origin->ToString().Utf8(); } - static bool IsValidUrl(base::StringPiece str) { + static bool IsValidUrl(std::string_view str) { return blink::KURL(String::FromUTF8(str)).IsValid(); } @@ -1214,7 +1216,7 @@ return origin->IsPotentiallyTrustworthy(); } - static bool IsUrlPotentiallyTrustworthy(base::StringPiece str) { + static bool IsUrlPotentiallyTrustworthy(std::string_view str) { // Note: intentionally avoid constructing GURL() directly from `str`, since // this is a test harness intended to exercise the behavior of `KURL` and // `SecurityOrigin`.
diff --git a/third_party/blink/renderer/platform/wtf/text/string_utf8_adaptor.h b/third_party/blink/renderer/platform/wtf/text/string_utf8_adaptor.h index 63a9e797..38f53d6 100644 --- a/third_party/blink/renderer/platform/wtf/text/string_utf8_adaptor.h +++ b/third_party/blink/renderer/platform/wtf/text/string_utf8_adaptor.h
@@ -31,7 +31,8 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_TEXT_STRING_UTF8_ADAPTOR_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_TEXT_STRING_UTF8_ADAPTOR_H_ -#include "base/strings/string_piece.h" +#include <string_view> + #include "third_party/blink/renderer/platform/wtf/text/string_view.h" #include "third_party/blink/renderer/platform/wtf/text/text_encoding.h" #include "third_party/blink/renderer/platform/wtf/wtf_export.h" @@ -52,8 +53,8 @@ const char* data() const { return data_; } wtf_size_t size() const { return size_; } - base::StringPiece AsStringPiece() const { - return base::StringPiece(data_, size_); + std::string_view AsStringView() const { + return std::string_view(data_, size_); } private:
diff --git a/third_party/blink/renderer/platform/wtf/text/wtf_string.cc b/third_party/blink/renderer/platform/wtf/text/wtf_string.cc index 0e16f84d..5bbdc54b 100644 --- a/third_party/blink/renderer/platform/wtf/text/wtf_string.cc +++ b/third_party/blink/renderer/platform/wtf/text/wtf_string.cc
@@ -26,6 +26,7 @@ #include <stdarg.h> #include <algorithm> +#include <string_view> #include "base/functional/callback.h" #include "base/logging.h" @@ -500,7 +501,7 @@ return FromUTF8(string, strlen(reinterpret_cast<const char*>(string))); } -String String::FromUTF8(base::StringPiece s) { +String String::FromUTF8(std::string_view s) { return FromUTF8(reinterpret_cast<const LChar*>(s.data()), s.size()); }
diff --git a/third_party/blink/renderer/platform/wtf/text/wtf_string.h b/third_party/blink/renderer/platform/wtf/text/wtf_string.h index 355eecd2..8d186268 100644 --- a/third_party/blink/renderer/platform/wtf/text/wtf_string.h +++ b/third_party/blink/renderer/platform/wtf/text/wtf_string.h
@@ -27,6 +27,7 @@ // on systems without case-sensitive file systems. #include <iosfwd> +#include <string_view> #include <type_traits> #include "base/containers/span.h" @@ -522,7 +523,7 @@ [[nodiscard]] static String FromUTF8(const char* s) { return FromUTF8(reinterpret_cast<const LChar*>(s)); } - [[nodiscard]] static String FromUTF8(base::StringPiece); + [[nodiscard]] static String FromUTF8(std::string_view); // Tries to convert the passed in string to UTF-8, but will fall back to // Latin-1 if the string is not valid UTF-8.
diff --git a/third_party/blink/renderer/platform/wtf/uuid.cc b/third_party/blink/renderer/platform/wtf/uuid.cc index 13ca12c..91d4a8c 100644 --- a/third_party/blink/renderer/platform/wtf/uuid.cc +++ b/third_party/blink/renderer/platform/wtf/uuid.cc
@@ -19,7 +19,7 @@ // In most (if not all) cases the given uuid should be utf-8, so this // conversion should be almost no-op. StringUTF8Adaptor utf8(uuid); - return base::Uuid::ParseLowercase(utf8.AsStringPiece()).is_valid(); + return base::Uuid::ParseLowercase(utf8.AsStringView()).is_valid(); } } // namespace WTF
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index ba585c4..2a2b3b4 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -1678,13 +1678,6 @@ crbug.com/40268721 [ Mac ] external/wpt/html/semantics/popovers/light-dismiss-event-ordering.html [ Pass Timeout ] crbug.com/332331836 external/wpt/html/semantics/popovers/popover-attribute-basic.html [ Pass Timeout ] -# crbug.com/335223786 Popover with anchor attribute - need html.css rule put back -crbug.com/335223786 external/wpt/html/semantics/popovers/popover-anchor-display.tentative.html [ Failure ] -crbug.com/335223786 external/wpt/html/semantics/popovers/popover-anchor-scroll-display.tentative.html [ Failure ] -crbug.com/335223786 external/wpt/html/semantics/popovers/popover-anchor-change-display.tentative.html [ Failure ] -crbug.com/335223786 external/wpt/html/semantics/popovers/popover-anchor-transition.tentative.tentative.html [ Failure ] -crbug.com/335223786 external/wpt/html/semantics/popovers/popover-anchor-display-none.tentative.html [ Failure ] - # Only virtual/threaded version of these tests pass (or running them with --enable-threaded-compositing). crbug.com/936891 fast/scrolling/document-level-touchmove-event-listener-passive-by-default.html [ Failure ] @@ -2637,6 +2630,11 @@ crbug.com/626703 external/wpt/uievents/mouse/mouse_boundary_events_after_removing_last_over_element.html [ Failure ] # ====== New tests from wpt-importer added here ====== +crbug.com/335769262 [ Win11-arm64 ] external/wpt/html/canvas/element/manual/drawing-images-to-the-canvas/image-orientation/drawImage-from-blob.tentative.html [ Failure ] +crbug.com/335769262 [ Mac14-arm64 ] external/wpt/html/canvas/element/manual/drawing-images-to-the-canvas/image-orientation/drawImage-from-blob.tentative.html [ Failure ] +crbug.com/335769262 [ Mac13-arm64 ] external/wpt/html/canvas/element/manual/drawing-images-to-the-canvas/image-orientation/drawImage-from-blob.tentative.html [ Failure ] +crbug.com/335769262 [ Mac12-arm64 ] external/wpt/html/canvas/element/manual/drawing-images-to-the-canvas/image-orientation/drawImage-from-blob.tentative.html [ Failure ] +crbug.com/335769262 [ Mac11-arm64 ] external/wpt/html/canvas/element/manual/drawing-images-to-the-canvas/image-orientation/drawImage-from-blob.tentative.html [ Failure ] crbug.com/335330795 [ Mac14 ] virtual/webnn-service-with-gpu/external/wpt/webnn/conformance_tests/gpu/reduction.https.any.worker.html [ Skip Timeout ] crbug.com/335246098 external/wpt/css/css-viewport/zoom/iframe-zoom-nested.html [ Failure ] crbug.com/335246098 external/wpt/css/css-viewport/zoom/iframe-zoom.sub.html [ Failure ]
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json index 7bbd906..a0bb4aa 100644 --- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json +++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -69552,6 +69552,35 @@ } ] ], + "mix-blend-mode-parent-element-overflow-hidden-and-border-radius-2.html": [ + "0b12301c4d91e179a5c5431f8fffde90ee47b1a7", + [ + null, + [ + [ + "/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 128 + ], + [ + 0, + 400 + ] + ] + ] + ] + } + ] + ], "mix-blend-mode-parent-element-overflow-hidden-and-border-radius.html": [ "840d2626bc1d350a478369dff0626f2b78830099", [ @@ -133234,7 +133263,7 @@ }, "intrinsic-sizing": { "masonry-intrinsic-sizing-001.html": [ - "2dc9f6de2e52066d322e425967d8898c1ee407a8", + "cc0608eafe7f3f983468205a5bdbeda645f2f411", [ null, [ @@ -133247,7 +133276,7 @@ ] ], "masonry-intrinsic-sizing-002.html": [ - "b8228cea6e8250587285d0396d4eee6caace352e", + "3867bb13c8915dd992cd0081ab54a6dbdfd16d88", [ null, [ @@ -133260,7 +133289,7 @@ ] ], "masonry-intrinsic-sizing-003.html": [ - "80bf5d5d23837861cccc8ab9076a1b77550b6df5", + "48489d3c86985fedb0635f25c82b129190148edb", [ null, [ @@ -133273,7 +133302,7 @@ ] ], "masonry-intrinsic-sizing-004.html": [ - "70a52f37f46a9a438b2e70fa86d55123ebd5121f", + "c8bc671bb3b4f5981df78e8e21e0a50bf011fecc", [ null, [ @@ -133299,7 +133328,7 @@ ] ], "masonry-intrinsic-sizing-006.html": [ - "fccc116d7d16a38fbe0a5c0e08dadc0b26994d4f", + "ad5480092162584589bbea3608f70688d7e6eb3c", [ null, [ @@ -231772,7 +231801,7 @@ }, "css-view-transitions": { "3d-transform-incoming.html": [ - "983ba1d861a8f58aeac68396eeeec5c7a99a9c63", + "4b1411f25dc641ff94878d11a1f4fc30453a1925", [ null, [ @@ -231784,11 +231813,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/3d-transform-incoming.html", - "/css/css-view-transitions/3d-transform-incoming-ref.html", - "==" - ], + null, [ [ 0, @@ -231805,7 +231830,7 @@ ] ], "3d-transform-outgoing.html": [ - "398fa97ca99bc07e12f31179083c7321099041ee", + "2fe4887bb190248d494321bbdb00a3157462963f", [ null, [ @@ -231817,11 +231842,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/3d-transform-outgoing.html", - "/css/css-view-transitions/3d-transform-outgoing-ref.html", - "==" - ], + null, [ [ 0, @@ -231890,7 +231911,7 @@ ] ], "block-with-overflowing-text.html": [ - "b3f8f42cfdf7ea3eae4833b071eea9b56a6a6e29", + "15d1653bfc29ad2233873062454bc157a1d82530", [ null, [ @@ -231902,11 +231923,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/block-with-overflowing-text.html", - "/css/css-view-transitions/block-with-overflowing-text-ref.html", - "==" - ], + null, [ [ 0, @@ -231923,7 +231940,7 @@ ] ], "break-inside-avoid-child.html": [ - "7b2a83c77691acbae4af3651f637f7d1fa59eb86", + "87d56d33af0e187e302eeaf97e81447c5c8fe025", [ null, [ @@ -231935,11 +231952,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/break-inside-avoid-child.html", - "/css/css-view-transitions/break-inside-avoid-child-ref.html", - "==" - ], + null, [ [ 0, @@ -231969,7 +231982,7 @@ ] ], "capture-with-offscreen-child.html": [ - "8588968d8afba2be185d20422073d43a79a276a1", + "7f8085cae2d23b26125db0b49914cb2f9f41a148", [ null, [ @@ -231981,11 +231994,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/capture-with-offscreen-child.html", - "/css/css-view-transitions/capture-with-offscreen-child-ref.html", - "==" - ], + null, [ [ 0, @@ -232002,7 +232011,7 @@ ] ], "capture-with-opacity-zero-child.html": [ - "888d0d17208fb6252df62e5b67a78186541f35e5", + "2b0563ea31b6c7e875c7eee4e302836437a72ba8", [ null, [ @@ -232014,11 +232023,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/capture-with-opacity-zero-child.html", - "/css/css-view-transitions/capture-with-visibility-hidden-child-ref.html", - "==" - ], + null, [ [ 0, @@ -232048,7 +232053,7 @@ ] ], "capture-with-visibility-mixed-descendants.html": [ - "462d267b94546313eb1605dccac320ab349871dc", + "3a4811ada10ec3d9bf8f2b3df6adec97c9c9ea67", [ null, [ @@ -232060,11 +232065,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/capture-with-visibility-mixed-descendants.html", - "/css/css-view-transitions/capture-with-visibility-mixed-descendants-ref.html", - "==" - ], + null, [ [ 0, @@ -232094,7 +232095,7 @@ ] ], "clip-path-larger-than-border-box-on-child-of-named-element.html": [ - "4cde9cb586bb8b9a575a110758bb420e59842069", + "4a26c50ef82e0d2dad55f56ae602755cea65dfe5", [ null, [ @@ -232106,11 +232107,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element.html", - "/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element-ref.html", - "==" - ], + null, [ [ 0, @@ -232205,7 +232202,7 @@ ] ], "content-with-transform-new-image.html": [ - "f86f64843c8022d95f0973e73cc73943112f8034", + "a6c444917a46ddc39d864eb4be87e07f2160d007", [ null, [ @@ -232217,11 +232214,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/content-with-transform-new-image.html", - "/css/css-view-transitions/content-with-transform-ref.html", - "==" - ], + null, [ [ 0, @@ -232238,7 +232231,7 @@ ] ], "content-with-transform-old-image.html": [ - "3755910a1b6b18480250094267f9fa4500c4c9d5", + "c6fda7f98852a7395316a1d20c1c3e54b3aeda5d", [ null, [ @@ -232250,11 +232243,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/content-with-transform-old-image.html", - "/css/css-view-transitions/content-with-transform-ref.html", - "==" - ], + null, [ [ 0, @@ -232285,7 +232274,7 @@ ] ], "css-tags-paint-order-with-entry.html": [ - "2ba73758e2379102159403a8f6f25371e4d218e5", + "c8d92ed33f8f8e11e7eead7fd5ddd66add1131e8", [ null, [ @@ -232297,11 +232286,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/css-tags-paint-order-with-entry.html", - "/css/css-view-transitions/css-tags-paint-order-with-entry-ref.html", - "==" - ], + null, [ [ 0, @@ -232344,7 +232329,7 @@ ] ], "dialog-in-rtl-iframe.html": [ - "f5959bf434db9c84c21d7a72917ccb40c018003b", + "05bc98dca97dab1bb3e12f4cad3c032572c163ec", [ null, [ @@ -232356,11 +232341,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/dialog-in-rtl-iframe.html", - "/css/css-view-transitions/dialog-in-rtl-iframe-ref.html", - "==" - ], + null, [ [ 0, @@ -232455,7 +232436,7 @@ ] ], "far-away-capture.html": [ - "97ad9dfb44b0e37c96ff53bf36007f8c060c2396", + "9ac162163956093d90609ef3060b2d13dd4893f2", [ null, [ @@ -232467,11 +232448,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/far-away-capture.html", - "/css/css-view-transitions/far-away-capture-ref.html", - "==" - ], + null, [ [ 0, @@ -232514,7 +232491,7 @@ ] ], "fractional-box-with-overflow-children-new.html": [ - "e50e6654a75578559cfb55ee972cb619a954a579", + "14371aca3fc040d790e31efea1bb150178d59c2c", [ null, [ @@ -232526,11 +232503,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/fractional-box-with-overflow-children-new.html", - "/css/css-view-transitions/fractional-box-with-overflow-children-ref.html", - "==" - ], + null, [ [ 0, @@ -232547,7 +232520,7 @@ ] ], "fractional-box-with-overflow-children-old.html": [ - "acf72e20df5c6e0dcee12f06e4088b31934753b0", + "0d19bf9c296b32fa2b667b70337f24b6187ba6fa", [ null, [ @@ -232559,11 +232532,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/fractional-box-with-overflow-children-old.html", - "/css/css-view-transitions/fractional-box-with-overflow-children-ref.html", - "==" - ], + null, [ [ 0, @@ -232700,7 +232669,7 @@ ] ], "iframe-new-has-scrollbar.html": [ - "67a57bb8852a487e273e59772ab61c710a51efc2", + "81072ac38aa1d8fd98649b23ffe178c633daedb7", [ null, [ @@ -232712,11 +232681,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/iframe-new-has-scrollbar.html", - "/css/css-view-transitions/iframe-new-has-scrollbar-ref.html", - "==" - ], + null, [ [ 0, @@ -232733,7 +232698,7 @@ ] ], "iframe-old-has-scrollbar.html": [ - "96dd75a3dfa7de6c02815ab813d01a00bdb92bad", + "5d266333989b36260f0de9a6350d7a8d3d4d0dca", [ null, [ @@ -232745,11 +232710,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/iframe-old-has-scrollbar.html", - "/css/css-view-transitions/iframe-old-has-scrollbar-ref.html", - "==" - ], + null, [ [ 0, @@ -232766,7 +232727,7 @@ ] ], "iframe-transition.sub.html": [ - "8fa361b0fc38843409dd7f754edf1ec238e3ec42", + "5f26a494b24c7c16781f11d5239fa1d2cc0fa3e7", [ null, [ @@ -232778,11 +232739,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/iframe-transition.sub.html", - "/css/css-view-transitions/iframe-transition-ref.html", - "==" - ], + null, [ [ 0, @@ -232826,7 +232783,7 @@ ] ], "inline-with-offset-from-containing-block.html": [ - "8640899814a08ac38a1ea1e69fc63c7e39c9c231", + "026ecb240a35f1ca1c7044f95f4d09468af9e05f", [ null, [ @@ -232838,11 +232795,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/inline-with-offset-from-containing-block.html", - "/css/css-view-transitions/inline-with-offset-from-containing-block-ref.html", - "==" - ], + null, [ [ 0, @@ -232872,7 +232825,7 @@ ] ], "massive-element-below-and-on-top-of-viewport-partially-onscreen-new.html": [ - "23f5fc22cf405d230c184cbd4d47131dec84fd4b", + "65b14a6c4b85f90ba382dbb93e3fd591c8be85f7", [ null, [ @@ -232884,11 +232837,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-below-and-on-top-of-viewport-partially-onscreen-new.html", - "/css/css-view-transitions/massive-element-below-and-on-top-of-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -232934,7 +232883,7 @@ ] ], "massive-element-below-viewport-offscreen-new.html": [ - "611d4da21a64d0fcc356824e4e98599c102e5225", + "a122cd4b3bcc003105ae47124c5b8b5ed003b638", [ null, [ @@ -232946,11 +232895,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-below-viewport-offscreen-new.html", - "/css/css-view-transitions/massive-element-below-viewport-offscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -232967,7 +232912,7 @@ ] ], "massive-element-below-viewport-offscreen-old.html": [ - "bda3ebf1b1b86da98d14ddeb19365f52026f74c1", + "567819fadff7b6e846229a8fecb48ffc7e8b198d", [ null, [ @@ -232979,11 +232924,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-below-viewport-offscreen-old.html", - "/css/css-view-transitions/massive-element-below-viewport-offscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -233000,7 +232941,7 @@ ] ], "massive-element-below-viewport-partially-onscreen-new.html": [ - "e881e19622790ee313073a413b7d8f3cb2152b77", + "42f97555f5c7bbc5ec322b6fa733bac97d41b7e4", [ null, [ @@ -233012,11 +232953,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-new.html", - "/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -233062,7 +232999,7 @@ ] ], "massive-element-left-of-viewport-offscreen-new.html": [ - "c8471032a4865cd14d6930febfc353159558e787", + "97a3cb41ff1d2e4f503021e7edc3f03c30be969c", [ null, [ @@ -233074,11 +233011,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-left-of-viewport-offscreen-new.html", - "/css/css-view-transitions/massive-element-left-of-viewport-offscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -233095,7 +233028,7 @@ ] ], "massive-element-left-of-viewport-offscreen-old.html": [ - "04ab58f3aa162c2ff5f3173f0ea4cb5e99a2e060", + "a41a73882660a0aea3fd3402113ca1bb5251a2d5", [ null, [ @@ -233107,11 +233040,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-left-of-viewport-offscreen-old.html", - "/css/css-view-transitions/massive-element-left-of-viewport-offscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -233128,7 +233057,7 @@ ] ], "massive-element-left-of-viewport-partially-onscreen-new.html": [ - "15cc94ffe714e0fdf09b708c21c773e299e98b15", + "accd909158e0e5d199097efad16fe6fff07aa067", [ null, [ @@ -233140,11 +233069,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-new.html", - "/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -233161,7 +233086,7 @@ ] ], "massive-element-left-of-viewport-partially-onscreen-old.html": [ - "0d2aeec59dbf8111403b50c493abc7009222e572", + "e16806e8f37c7327a31e1193df7c86508f4464a9", [ null, [ @@ -233173,11 +233098,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-old.html", - "/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -233194,7 +233115,7 @@ ] ], "massive-element-on-top-of-viewport-offscreen-new.html": [ - "6ef8edd3b00de31e94636e54669ea68349317fcd", + "24edbc1ec7a0ba52b91d36a42e74ba2d0685f004", [ null, [ @@ -233206,11 +233127,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-new.html", - "/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -233227,7 +233144,7 @@ ] ], "massive-element-on-top-of-viewport-offscreen-old.html": [ - "5e303e8286aca8db216f621ada061853631554b4", + "8dfc8eefe1458e4c669302179f0da0e68dbf136e", [ null, [ @@ -233239,11 +233156,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-old.html", - "/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -233260,7 +233173,7 @@ ] ], "massive-element-on-top-of-viewport-partially-onscreen-new.html": [ - "a9e5f5842afe3e68f0dee7a0c8e051aa3324a31d", + "c301e470996b5804839a4b6c4ce633501df43e45", [ null, [ @@ -233272,11 +233185,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-new.html", - "/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -233293,7 +233202,7 @@ ] ], "massive-element-on-top-of-viewport-partially-onscreen-old.html": [ - "41dc622914b2ce23351517b434c6926c238c6ed6", + "1f810af745b1455001a6c433903f0a435f52d43e", [ null, [ @@ -233305,11 +233214,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-old.html", - "/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -233326,7 +233231,7 @@ ] ], "massive-element-right-and-left-of-viewport-partially-onscreen-new.html": [ - "719701fe888da0cb15cccc233003e645117adccb", + "426751d09397f101cbd981bdfbc4c32731c1ae64", [ null, [ @@ -233338,11 +233243,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-right-and-left-of-viewport-partially-onscreen-new.html", - "/css/css-view-transitions/massive-element-right-and-left-of-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -233388,7 +233289,7 @@ ] ], "massive-element-right-of-viewport-offscreen-new.html": [ - "89d00a53a86030782e7c23b7dc4ca7a4f1a42d21", + "53749f29b2f9147cd1fbeb4d82fcdc8ecdb55bb0", [ null, [ @@ -233400,11 +233301,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-right-of-viewport-offscreen-new.html", - "/css/css-view-transitions/massive-element-right-of-viewport-offscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -233421,7 +233318,7 @@ ] ], "massive-element-right-of-viewport-offscreen-old.html": [ - "04247af18e51a827ed131bf5cccfb99037c9652f", + "b5337c4491428a828f935782d669554ef011c89f", [ null, [ @@ -233433,11 +233330,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-right-of-viewport-offscreen-old.html", - "/css/css-view-transitions/massive-element-right-of-viewport-offscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -233454,7 +233347,7 @@ ] ], "massive-element-right-of-viewport-partially-onscreen-new.html": [ - "a7b599e5eba8cc3e17a031172fd32803d4412799", + "ac3fe48a0a7835a9085a8dfc3daf9d2dee674673", [ null, [ @@ -233466,11 +233359,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-new.html", - "/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -233487,7 +233376,7 @@ ] ], "massive-element-right-of-viewport-partially-onscreen-old.html": [ - "2498f2e1f17990843508541fea0febad946a8c4f", + "2626910d7836da42c21cd33b24a2b4f04f9e8a65", [ null, [ @@ -233499,11 +233388,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-old.html", - "/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -233533,7 +233418,7 @@ ] ], "multiline-span-with-overflowing-text-and-box-decorations.html": [ - "e166b3c9dfe66370a4800ff6cac37e236100d62d", + "8fff184b2a71112466590a356e516000beeacd40", [ null, [ @@ -233545,11 +233430,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations.html", - "/css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations-ref.html", - "==" - ], + null, [ [ 0, @@ -233592,7 +233473,7 @@ ] ], "new-and-old-sizes-match.html": [ - "094d6963bfbd509d34c1be635147dfb0baf37cdf", + "70b6515fb5b8189c925127636f7860ae424f0284", [ null, [ @@ -233604,11 +233485,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/new-and-old-sizes-match.html", - "/css/css-view-transitions/new-and-old-sizes-match-ref.html", - "==" - ], + null, [ [ 0, @@ -233625,7 +233502,7 @@ ] ], "new-content-captures-clip-path.html": [ - "702bb09bc336db351eba8082657c97f028afee8c", + "19af2493d05ed1e0d4fd82a01dcb8f5dc304a731", [ null, [ @@ -233637,11 +233514,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/new-content-captures-clip-path.html", - "/css/css-view-transitions/new-content-captures-clip-path-ref.html", - "==" - ], + null, [ [ 0, @@ -233658,7 +233531,7 @@ ] ], "new-content-captures-different-size.html": [ - "740199675dd67f1ae11a1e75c85022146632ce43", + "18f323c32075bc9f10d6f007ab18eb2caad3812f", [ null, [ @@ -233670,11 +233543,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/new-content-captures-different-size.html", - "/css/css-view-transitions/new-content-captures-different-size-ref.html", - "==" - ], + null, [ [ 0, @@ -233829,7 +233698,7 @@ ] ], "new-content-has-scrollbars.html": [ - "3246a7e76f34c8f3fbdd06fdceaace6920ad59b7", + "834d0e8f454ebd7f87f5cde66d19d475563d4a3e", [ null, [ @@ -233841,11 +233710,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/new-content-has-scrollbars.html", - "/css/css-view-transitions/new-content-has-scrollbars-ref.html", - "==" - ], + null, [ [ 0, @@ -233889,7 +233754,7 @@ ] ], "new-content-is-inline.html": [ - "46c96acb0471eace651554d4796673b2e06dd7e6", + "81b261a9bfffaf1ef4be4ac94f90673475450c15", [ null, [ @@ -233901,11 +233766,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/new-content-is-inline.html", - "/css/css-view-transitions/new-content-is-inline-ref.html", - "==" - ], + null, [ [ 0, @@ -233922,7 +233783,7 @@ ] ], "new-content-object-fit-fill.html": [ - "04a80409c5eb79bf269ed4aa94582186aca4a493", + "a610d688023439155382f48f2b9fb6b4b81d030a", [ null, [ @@ -233934,11 +233795,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/new-content-object-fit-fill.html", - "/css/css-view-transitions/content-object-fit-fill-ref.html", - "==" - ], + null, [ [ 0, @@ -234020,7 +233877,7 @@ ] ], "new-content-scaling.html": [ - "bccb760fb59560599572722220bf718dfffaf5d7", + "376b7fd11f7e2e86e549c300fcb09cc8767751c4", [ null, [ @@ -234032,11 +233889,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/new-content-scaling.html", - "/css/css-view-transitions/new-content-scaling-ref.html", - "==" - ], + null, [ [ 0, @@ -234172,7 +234025,7 @@ ] ], "object-view-box-old-image.html": [ - "335e48fa70ea79f992f249068cd157664b4d5b77", + "793dfd46c9f4e336829ed60a0a755a573849f443", [ null, [ @@ -234184,11 +234037,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/object-view-box-old-image.html", - "/css/css-view-transitions/object-view-box-ref.html", - "==" - ], + null, [ [ 0, @@ -234219,7 +234068,7 @@ ] ], "old-content-captures-clip-path.html": [ - "7ed5e1ca15defb597f73472dab08efcc90542f8a", + "67aa5bf32f6b83219dba4dc0152dcbc30c002c37", [ null, [ @@ -234231,11 +234080,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/old-content-captures-clip-path.html", - "/css/css-view-transitions/old-content-captures-clip-path-ref.html", - "==" - ], + null, [ [ 0, @@ -234252,7 +234097,7 @@ ] ], "old-content-captures-different-size.html": [ - "392247bc9518886890246f1c293f840db4501b53", + "7f3be742b0d400d17e3aba73360a9c9dd6de6c02", [ null, [ @@ -234264,11 +234109,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/old-content-captures-different-size.html", - "/css/css-view-transitions/old-content-captures-different-size-ref.html", - "==" - ], + null, [ [ 0, @@ -234286,7 +234127,7 @@ ] ], "old-content-captures-opacity.html": [ - "cd71c9dfaf10d313d9e3ec84b56ad998c3e3042c", + "97b89116445f6c3588e225910c2e859e69832498", [ null, [ @@ -234298,11 +234139,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/old-content-captures-opacity.html", - "/css/css-view-transitions/old-content-captures-opacity-ref.html", - "==" - ], + null, [ [ 0, @@ -234319,7 +234156,7 @@ ] ], "old-content-captures-root.html": [ - "51a22bc13608c16430a1acd846c896fd94d60828", + "a1cb3329426aa7ab00946b92833b4440fd38f84c", [ null, [ @@ -234331,11 +234168,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/old-content-captures-root.html", - "/css/css-view-transitions/old-content-captures-root-ref.html", - "==" - ], + null, [ [ 0, @@ -234378,7 +234211,7 @@ ] ], "old-content-has-scrollbars.html": [ - "13e26c702d54d0397ef8517b252502de5972a74c", + "b9638ebb10082ee73b47a5a98244f327731b0d6c", [ null, [ @@ -234390,11 +234223,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/old-content-has-scrollbars.html", - "/css/css-view-transitions/old-content-has-scrollbars-ref.html", - "==" - ], + null, [ [ 0, @@ -234438,7 +234267,7 @@ ] ], "old-content-is-inline.html": [ - "70ff67c0e0ab78f891acf370ab19bf0e336f8dc7", + "3333a07a02963e45f3e8991ea102533226e0dc41", [ null, [ @@ -234450,11 +234279,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/old-content-is-inline.html", - "/css/css-view-transitions/old-content-is-inline-ref.html", - "==" - ], + null, [ [ 0, @@ -234471,7 +234296,7 @@ ] ], "old-content-object-fit-fill.html": [ - "0652b30a070c4f5acaead54ad799f420e582f264", + "51023fa27b6b1a47c03524037e5e32ad8d742a3e", [ null, [ @@ -234483,11 +234308,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/old-content-object-fit-fill.html", - "/css/css-view-transitions/content-object-fit-fill-ref.html", - "==" - ], + null, [ [ 0, @@ -234517,7 +234338,7 @@ ] ], "old-content-object-view-box-clip-path-reference.html": [ - "5e6969d9cca716907cdfe89adcdc60a2b8126402", + "827ca027dd5157f236b084e00595575a18ed488c", [ null, [ @@ -234529,11 +234350,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/old-content-object-view-box-clip-path-reference.html", - "/css/css-view-transitions/old-content-object-view-box-clip-path-reference-ref.html", - "==" - ], + null, [ [ 0, @@ -234550,7 +234367,7 @@ ] ], "old-content-object-view-box-clip-path.html": [ - "f8945551542e100da2b4fe85bcae3086684fbf63", + "d0d26b9790117bfdaded30cf9f19bb531dd51b42", [ null, [ @@ -234562,11 +234379,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/old-content-object-view-box-clip-path.html", - "/css/css-view-transitions/old-content-object-view-box-clip-path-ref.html", - "==" - ], + null, [ [ 0, @@ -234663,7 +234476,7 @@ ] ], "pseudo-rendering-invalidation.html": [ - "e1f17186183dd64c8adc32086ee9a9a655c60cb5", + "4d492c40d8761ddda3551448ce725cfbb5a82f4a", [ null, [ @@ -234675,11 +234488,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/pseudo-rendering-invalidation.html", - "/css/css-view-transitions/pseudo-rendering-invalidation-ref.html", - "==" - ], + null, [ [ 0, @@ -234891,7 +234700,7 @@ ] ], "root-captured-as-different-tag.html": [ - "a4d6f11ad4977f7b6cf4e0c584e65d784d76be53", + "1d4d1610d16bd4e6e682acdc19fcad3d48aefa2f", [ null, [ @@ -234903,11 +234712,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/root-captured-as-different-tag.html", - "/css/css-view-transitions/old-content-captures-root-ref.html", - "==" - ], + null, [ [ 0, @@ -235047,7 +234852,7 @@ ] ], "scroller-child-abspos.html": [ - "3b94ffa7bb99b88ee1f8a052e19feab147e577f4", + "d04f87215edfd41131a1d02b84dc4f999f8c7138", [ null, [ @@ -235059,11 +234864,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/scroller-child-abspos.html", - "/css/css-view-transitions/scroller-child-abspos-ref.html", - "==" - ], + null, [ [ 0, @@ -235080,7 +234881,7 @@ ] ], "scroller-child.html": [ - "5cb2f03e704334dad70745a9221a035bd169502a", + "7d4368fe574d0509bf3a11e21815eb7de4bb55a8", [ null, [ @@ -235092,11 +234893,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/scroller-child.html", - "/css/css-view-transitions/scroller-child-ref.html", - "==" - ], + null, [ [ 0, @@ -235113,7 +234910,7 @@ ] ], "scroller.html": [ - "e61d13b3166e7ebab7fb18f6180f9b6efab027b8", + "9d820468918d5f4c2c2d91cb622392e39182a055", [ null, [ @@ -235125,11 +234922,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/scroller.html", - "/css/css-view-transitions/scroller-ref.html", - "==" - ], + null, [ [ 0, @@ -235159,7 +234952,7 @@ ] ], "set-current-time.html": [ - "f7e802d79b4f1a6ede216cc8cb8a9879b67f2a70", + "efe561c6ea549686dfc88ad40e9cac7aa9a9b420", [ null, [ @@ -235171,11 +234964,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/set-current-time.html", - "/css/css-view-transitions/set-current-time-ref.html", - "==" - ], + null, [ [ 0, @@ -235205,7 +234994,7 @@ ] ], "snapshot-containing-block-absolute.html": [ - "4a619f29cc29978828c80bf371da0f53f95b7746", + "91b71f7eec99096a7f9ce7615f418634728cee5f", [ null, [ @@ -235217,11 +235006,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/snapshot-containing-block-absolute.html", - "/css/css-view-transitions/snapshot-containing-block-absolute-ref.html", - "==" - ], + null, [ [ 0, @@ -235238,7 +235023,7 @@ ] ], "snapshot-containing-block-includes-scrollbar-gutter.html": [ - "8e47a056bdc039f6c47d2da041d3edde497a1aa1", + "40feea46ef78a5d431739b581e0fdc5f8761989d", [ null, [ @@ -235250,11 +235035,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/snapshot-containing-block-includes-scrollbar-gutter.html", - "/css/css-view-transitions/snapshot-containing-block-includes-scrollbar-gutter-ref.html", - "==" - ], + null, [ [ 0, @@ -235271,7 +235052,7 @@ ] ], "snapshot-containing-block-static.html": [ - "fc0c7033c9bc278f08433fb429b204421fb7f9d0", + "44fe4cfc5e66e8afff7ad1a21db40d8d1576be37", [ null, [ @@ -235283,11 +235064,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/snapshot-containing-block-static.html", - "/css/css-view-transitions/snapshot-containing-block-static-ref.html", - "==" - ], + null, [ [ 0, @@ -235304,7 +235081,7 @@ ] ], "span-with-overflowing-text-and-box-decorations.html": [ - "a2bf59ecb00771c3bcb68eefd6622ad86df18073", + "262970ad5fba81e630e31a39d1742d09fb98a9e8", [ null, [ @@ -235316,11 +235093,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/span-with-overflowing-text-and-box-decorations.html", - "/css/css-view-transitions/span-with-overflowing-text-and-box-decorations-ref.html", - "==" - ], + null, [ [ 0, @@ -235350,7 +235123,7 @@ ] ], "span-with-overflowing-text.html": [ - "f3f0f534e9e10c57d42ada86aa08d60df044f080", + "5a6268ddf03c43bcdf1dbbda161c35c19365ef3e", [ null, [ @@ -235362,11 +235135,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/span-with-overflowing-text.html", - "/css/css-view-transitions/span-with-overflowing-text-ref.html", - "==" - ], + null, [ [ 0, @@ -235396,7 +235165,7 @@ ] ], "transition-in-empty-iframe.html": [ - "7cd621fbfdc4f8951f38cb1b0bc6735b5303305e", + "101f7c2a632f6b02ed285a0a73c46a3934b54667", [ null, [ @@ -235408,11 +235177,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/transition-in-empty-iframe.html", - "/css/css-view-transitions/transition-in-empty-iframe-ref.html", - "==" - ], + null, [ [ 0, @@ -235481,7 +235246,7 @@ ] ], "web-animations-api-parse-pseudo-argument.html": [ - "40c9a0d0c2ec81624a06523c7b000d1a902507c0", + "dfaac62c17f99e7465a32c452eaed807f289cac6", [ "css/css-view-transitions/web-animations-api-parse-pseudo-argument.html?first-pseudo=::view-transition-group( first )", [ @@ -235493,11 +235258,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/web-animations-api-parse-pseudo-argument.html", - "/css/css-view-transitions/web-animations-api-ref.html", - "==" - ], + null, [ [ 0, @@ -235523,11 +235284,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/web-animations-api-parse-pseudo-argument.html", - "/css/css-view-transitions/web-animations-api-ref.html", - "==" - ], + null, [ [ 0, @@ -235553,11 +235310,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/web-animations-api-parse-pseudo-argument.html", - "/css/css-view-transitions/web-animations-api-ref.html", - "==" - ], + null, [ [ 0, @@ -235583,11 +235336,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/web-animations-api-parse-pseudo-argument.html", - "/css/css-view-transitions/web-animations-api-ref.html", - "==" - ], + null, [ [ 0, @@ -235613,11 +235362,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/web-animations-api-parse-pseudo-argument.html", - "/css/css-view-transitions/web-animations-api-ref.html", - "==" - ], + null, [ [ 0, @@ -235643,11 +235388,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/web-animations-api-parse-pseudo-argument.html", - "/css/css-view-transitions/web-animations-api-ref.html", - "==" - ], + null, [ [ 0, @@ -235664,7 +235405,7 @@ ] ], "web-animations-api.html": [ - "c739e416c8c900774cb14ff77b62d27f1ba8c6a6", + "23b1504b240a92e6f2f7a99b6684a621c2631866", [ null, [ @@ -235676,11 +235417,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/web-animations-api.html", - "/css/css-view-transitions/web-animations-api-ref.html", - "==" - ], + null, [ [ 0, @@ -320129,32 +319866,32 @@ }, "intrinsic-sizing": { "masonry-intrinsic-sizing-001-ref.html": [ - "bd1cddd9db0f22ea504a82ebec5e18c19b15c374", + "1a9f65aaf698b0b20b2c33b17420795972d6ff8d", [] ], "masonry-intrinsic-sizing-002-ref.html": [ - "37f65bace8c50dad1e82bd969d694299dfa20750", + "ddae8e7fe37f8873791cd56d8c6404eafa6fd703", [] ], "masonry-intrinsic-sizing-003-ref.html": [ - "886c147a90bef3c1cc64b6c1e5633de15b6f06ce", + "044750dc45183a50fb19153977081eb0e7b83eaa", [] ], "masonry-intrinsic-sizing-004-ref.html": [ - "166a467d4e83eecf31f8496b8f2c88ef96d7b606", + "302dcad11696895a9f3fb12ac5a38d0d721b2650", [] ], "masonry-intrinsic-sizing-005-ref.html": [ - "48225803963ec31c77ca85ea1b1dd5a06cba354c", + "725f646ebd9160f91dcba65fdbdbb77e0c20e370", [] ], "masonry-intrinsic-sizing-006-ref.html": [ - "a616fadb772eee5cf0fd051378e3aabf7e62e628", + "1a88c2b4cb665dd4586f662d280475dab3cd0ae6", [] ], "support": { "masonry-intrinsic-sizing-visual.css": [ - "dbb6303ab18654eb736830c323cdc7c41e5f81a6", + "150f0f2679a35a97fc0fb7de792c4473850b73d9", [] ] } @@ -344517,7 +344254,7 @@ [] ], "hueRotate.svg": [ - "ed294041e156d0087cd551aa593846bb3ec136fa", + "0ddcb37d70dd68257078d10950f4e4f8680be267", [] ], "import-green.css": [ @@ -379220,22 +378957,10 @@ "d59e5e30845eaef12bab6419e348a01779313c56", [] ], - "MediaRecorder-canvas-media-source.https_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt": [ - "384a1534a341fa7898d3196133eabd61b75d3f10", - [] - ], - "MediaRecorder-events-and-exceptions_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt": [ - "aff8100f2ba4b080e86f25a0fd692becf821a3ac", - [] - ], "MediaRecorder-peerconnection-no-sink.https-expected.txt": [ "b8820487fa2473679df487868372de00781624e4", [] ], - "MediaRecorder-stop_mimeType=video_mp4;codecs=avc1,mp4a.40.2-expected.txt": [ - "02f0a65b6e62e9233431c03b87f4ca105648d541", - [] - ], "OWNERS": [ "5c49de21a3b53dfe928d30a36400469d8238bb1d", [] @@ -388407,7 +388132,7 @@ "focus-navigation": { "resources": { "focus-utils.js": [ - "f593267cc31f8d9060b48f95fd91c5629d5b29ee", + "0392cfb88792ee66d93eb7f1430fa6afd846c858", [] ], "shadow-dom.js": [ @@ -438655,83 +438380,6 @@ ] ], "fedcm-multi-idp": { - "abort-multiple-gets-through-first-idp.https.html": [ - "ed7c1300bd1b95cd3f7d233e7a0ee638829f2990", - [ - null, - {} - ] - ], - "abort-multiple-gets-through-second-idp.https.html": [ - "dfe8969932b8a88ba9f52284c99a0fb1e4628a71", - [ - null, - {} - ] - ], - "get-before-and-after-onload.https.html": [ - "12e0eb4d813eed1cd358ad072ed1c48ed7e78f36", - [ - null, - { - "testdriver": true - } - ] - ], - "get-before-and-during-onload.https.html": [ - "3e2f134f201aa2d1f6a4461cd4b15f737b8d065b", - [ - null, - { - "testdriver": true - } - ] - ], - "get-before-onload-and-during-dom-content-loaded.https.html": [ - "95495948b77379e0650db2216d6f4b5c2b19915e", - [ - null, - { - "testdriver": true - } - ] - ], - "multiple-gets-after-abort.https.html": [ - "899302fb221e94a8df562616fd559a2325f8a15d", - [ - null, - { - "testdriver": true - } - ] - ], - "multiple-gets-after-onload.https.html": [ - "1b5d744e8f60fffdc44d720d7b0a6233f181b531", - [ - null, - { - "testdriver": true - } - ] - ], - "multiple-gets-before-onload.https.html": [ - "8c98bf53b0c579a860d05c6229dcd1bbc0429e16", - [ - null, - { - "testdriver": true - } - ] - ], - "multiple-gets-during-onload.https.html": [ - "bcf70a31c74deacb9a661d03db5a951777b31b08", - [ - null, - { - "testdriver": true - } - ] - ], "single-get-after-onload.https.html": [ "de6a7c5371cc839a41c89318e5f8b0ad00b107e0", [ @@ -600075,7 +599723,7 @@ ] ], "MediaRecorder-canvas-media-source.https.html": [ - "e640714d5cf38d1250c7b07a476a360aee0e81b8", + "0680c218795b1e217376177bea6f14b0e1a11a40", [ "mediacapture-record/MediaRecorder-canvas-media-source.https.html?mimeType=''", { @@ -600084,6 +599732,13 @@ } ], [ + "mediacapture-record/MediaRecorder-canvas-media-source.https.html?mimeType=video/mp4", + { + "testdriver": true, + "timeout": "long" + } + ], + [ "mediacapture-record/MediaRecorder-canvas-media-source.https.html?mimeType=video/mp4;codecs=avc1,mp4a.40.2", { "testdriver": true, @@ -600091,6 +599746,13 @@ } ], [ + "mediacapture-record/MediaRecorder-canvas-media-source.https.html?mimeType=video/mp4;codecs=vp9,opus", + { + "testdriver": true, + "timeout": "long" + } + ], + [ "mediacapture-record/MediaRecorder-canvas-media-source.https.html?mimeType=video/webm;codecs=av1,opus", { "testdriver": true, @@ -600152,7 +599814,7 @@ ] ], "MediaRecorder-events-and-exceptions.html": [ - "409e46c91da21805e238c4237be481385a25e79f", + "97ada2126634e550c8df7bd15807db0befa99a3f", [ "mediacapture-record/MediaRecorder-events-and-exceptions.html?mimeType=''", { @@ -600160,12 +599822,24 @@ } ], [ + "mediacapture-record/MediaRecorder-events-and-exceptions.html?mimeType=video/mp4", + { + "timeout": "long" + } + ], + [ "mediacapture-record/MediaRecorder-events-and-exceptions.html?mimeType=video/mp4;codecs=avc1,mp4a.40.2", { "timeout": "long" } ], [ + "mediacapture-record/MediaRecorder-events-and-exceptions.html?mimeType=video/mp4;codecs=vp9,opus", + { + "timeout": "long" + } + ], + [ "mediacapture-record/MediaRecorder-events-and-exceptions.html?mimeType=video/webm;codecs=av1,opus", { "timeout": "long" @@ -600185,14 +599859,14 @@ ] ], "MediaRecorder-mimetype.html": [ - "74248d65f4660a25742d7baa5d050e40ed4199bd", + "57baa1346f172ec766256969b17f8e44197d856f", [ null, {} ] ], "MediaRecorder-pause-resume.html": [ - "8dc231279a0233b19ef6b87b4318d1a98e23fb69", + "f584508a0d0d42d60ae332a42b3fe776bd3247a6", [ "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=''", { @@ -600200,12 +599874,36 @@ } ], [ + "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=video/mp4", + { + "timeout": "long" + } + ], + [ "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=video/mp4;codecs=avc1,mp4a.40.2", { "timeout": "long" } ], [ + "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=video/mp4;codecs=avc1,opus", + { + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=video/mp4;codecs=vp9,mp4a.40.2", + { + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=video/mp4;codecs=vp9,opus", + { + "timeout": "long" + } + ], + [ "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=video/webm;codecs=av1,opus", { "timeout": "long" @@ -600235,9 +599933,93 @@ ] ], "MediaRecorder-peerconnection.https.html": [ - "3fbc1f0f2d292e4fd5cd41d751c0994fb7d658ed", + "daae044fa8d9d7d1f0fe40026ac9a42e96e129b9", [ - null, + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=audio&mimeType=''", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=audio&mimeType=audio/mp4;codecs=opus", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=audio&mimeType=audio/webm;codecs=opus", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video&mimeType=''", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video&mimeType=video/mp4;codecs=vp9", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video&mimeType=video/webm;codecs=vp8", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video&mimeType=video/webm;codecs=vp9", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video,audio&mimeType=''", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video,audio&mimeType=video/mp4", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video,audio&mimeType=video/mp4;codecs=avc1,mp4a.40.2", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video,audio&mimeType=video/mp4;codecs=vp9,opus", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video,audio&mimeType=video/webm;codecs=vp8,opus", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video,audio&mimeType=video/webm;codecs=vp9,opus", { "testdriver": true, "timeout": "long" @@ -600252,16 +600034,24 @@ ] ], "MediaRecorder-stop.html": [ - "d6ce3707720a066b06fef71016e3e2b0366d3658", + "9ef5051638130f92f62753fb3aedf857bc8cbeba", [ "mediacapture-record/MediaRecorder-stop.html?mimeType=''", {} ], [ + "mediacapture-record/MediaRecorder-stop.html?mimeType=video/mp4", + {} + ], + [ "mediacapture-record/MediaRecorder-stop.html?mimeType=video/mp4;codecs=avc1,mp4a.40.2", {} ], [ + "mediacapture-record/MediaRecorder-stop.html?mimeType=video/mp4;codecs=vp9,opus", + {} + ], + [ "mediacapture-record/MediaRecorder-stop.html?mimeType=video/webm;codecs=av1,opus", {} ], @@ -634677,11 +634467,12 @@ ] ], "focus-navigation-slots-in-slot.html": [ - "39b080660344038a3e9a836ca819cb737a2f688c", + "3c929de7276fea5689b5738dc5d550f7a5ded235", [ null, { - "testdriver": true + "testdriver": true, + "timeout": "long" } ] ], @@ -634704,20 +634495,22 @@ ] ], "focus-navigation-with-delegatesFocus.html": [ - "64942a109e0281a5e0806214428ffbc8f05f8c6c", + "e37accbc8e2951fad326a430397dadd5165ebd63", [ null, { - "testdriver": true + "testdriver": true, + "timeout": "long" } ] ], "focus-navigation.html": [ - "9e593eb1003a26a9957d04ddca8cd522e7a0872e", + "faf3c34cdb2eb25cf334f0396fba1a727dac4663", [ null, { - "testdriver": true + "testdriver": true, + "timeout": "long" } ] ], @@ -717780,21 +717573,21 @@ ] ], "invalid.py": [ - "ecd3173e8784a8973453f1ad54e7ade61d235381", + "52aabca2670e45ae24a05ce49087dcfbf0de4a2d", [ null, {} ] ], "locator.py": [ - "e560fa9239dbcc86d74bd5084c3bc64b840dced1", + "66c512d792a46217b2f7ac125a7cf0ce7d7d05a3", [ null, {} ] ], "max_node_count.py": [ - "4652026e96fae72c40c1ce87cad9e5ef836b3725", + "9d9c05260bc0ba096c40cb7d9f3e598f8549c420", [ null, {} @@ -717808,7 +717601,7 @@ ] ], "start_nodes.py": [ - "707d83a337d8ff309e2727475f61e8940207b14b", + "f44a6d4857c0b62d58adb844042617cc622d0111", [ null, {}
diff --git a/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-2.html b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-2.html new file mode 100644 index 0000000..0b12301 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-2.html
@@ -0,0 +1,39 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <title>CSS Test: blending between an element having overflow:hidden and border-radius and its child, with will-change:opacity</title> + <link rel="author" title="Mirela Budăeș" href="mailto:mbudaes@adobe.com"> + <link rel="author" title="Ion Roșca" href="mailto:rosca@adobe.com"> + <link rel="author" title="Xianzhu Wang" href="mailto:wangxianzhu@chromium.org"> + <link rel="help" href="https://drafts.fxtf.org/compositing-1/#mix-blend-mode"> + <link rel="help" href="https://crbug.com/328339028"> + <meta name="assert" content="Test checks that an element having mix-blend-mode and will-change:opacity blends with the parent element having overflow:hidden and border-radius"> + <meta name="fuzzy" content="0-128;0-400"> + <link rel="match" href="reference/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-ref.html"> + <style type="text/css"> + .parent { + background: red; + width: 140px; + height: 140px; + position: relative; + z-index: 1; + overflow: hidden; + border-radius: 1em 5em; + } + .blended { + background: yellow; + width: 200px; + height: 200px; + mix-blend-mode: difference; + will-change: opacity; + } + </style> + </head> + <body> + <p> Test passes if you see a lime square with rounded corners.</p> + <div class="parent"> + <div class="blended"></div> + </div> + </body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001-ref.html b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001-ref.html index bd1cddd9..1a9f65a 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001-ref.html +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001-ref.html
@@ -15,24 +15,26 @@ grid { display: inline-grid; gap: 1px 2px; - grid-template-columns: repeat(4,auto); - grid-auto-rows: 1em; + grid-auto-rows: auto; border: 1px solid; padding: 0 1px 0 2px; vertical-align: top; } -.fr { +.auto grid { + grid-template-columns: repeat(4,auto); +} +.fr grid { grid-template-columns: 1fr 2fr 1fr 1fr; } -.mixed { +.mixed grid { grid-template-columns: 1fr 2fr min-content max-content; } </style> <body> -<section> -<grid> +<section class="auto"> +<grid style="grid-template-columns: repeat(4, 2ch)"> <item style="width:2ch">1</item> <item>2</item> <item>3</item> @@ -40,7 +42,7 @@ <item>5</item> </grid> -<grid style="grid-template-columns: 1ch repeat(3,auto)"> +<grid style="grid-template-columns: repeat(4, 2ch)"> <item>1</item> <item>2</item> <item>3</item> @@ -53,7 +55,7 @@ <item>2</item> <item>3</item> <item>4</item> - <item style="width:2ch; grid-column:2">5</item> + <item style="width:2ch; grid-area:1/2">5</item> </grid> <grid> @@ -61,26 +63,28 @@ <item>2</item> <item>3</item> <item>4</item> - <item style="width:4ch; grid-column:2/span 2">5</item> + <item style="visibility: hidden">4</item> + <item style="width:4ch; grid-area:1/2/2/4">5</item> </grid> <grid> - <item>1</item> + <item style="grid-column: 4">1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="grid-column:2/span 2">5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> + <item style="visibility: hidden">4</item> + <item style="grid-area: 1/2/2/span 2">5</item> + <item style="width:5ch; grid-area: 2/1/3/4">6</item> </grid> - <grid> - <item>1</item> + <item style="grid-column: 4">1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:3ch; grid-column:2/span 2">5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> + <item style="visibility: hidden">4</item> + <item style="width:3ch; grid-area:1/2/2/4">5</item> + <item style="width:5ch; grid-area:2/1/3/4">6</item> </grid> <grid> @@ -99,19 +103,20 @@ <item style="width:6ch; grid-column:span 4">5</item> </grid> -<grid style="grid-template-columns: repeat(4,1ch)"> +<grid> <item>1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:6ch; grid-column:span 3">5</item> + <item style="width:6ch; grid-area: 2/1/3/4">5</item> + <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item> </grid> </section> <!-- ditto with 'fr' sizing --> -<section> -<grid class="fr"> +<section class="fr"> +<grid> <item style="width:2ch">1</item> <item>2</item> <item>3</item> @@ -119,7 +124,7 @@ <item>5</item> </grid> -<grid class="fr" style="grid-template-columns: 1ch 2fr 1fr 1fr"> +<grid> <item>1</item> <item>2</item> <item>3</item> @@ -127,42 +132,43 @@ <item style="width:2ch">5</item> </grid> -<grid class="fr"> +<grid> <item>1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:2ch; grid-column:2">5</item> + <item style="width:2ch; grid-area: 1/2">5</item> </grid> -<grid class="fr"> +<grid> <item>1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:4ch; grid-column:2/span 2">5</item> + <item style="width:4ch; grid-area: 1/2/2/4">5</item> </grid> -<grid class="fr"> - <item>1</item> +<grid> + <item style="grid-column: 4">1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="grid-column:2/span 2">5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> + <item style="visibility: hidden">4</item> + <item style="grid-area: 1/2/2/span 2">5</item> + <item style="width:5ch; grid-area: 2/1/3/4">6</item> </grid> - -<grid class="fr"> - <item>1</item> +<grid> + <item style="grid-column: 4">1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:3ch; grid-column:2/span 2">5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> + <item style="visibility: hidden">4</item> + <item style="width:3ch; grid-area:1/2/2/4">5</item> + <item style="width:5ch; grid-area:2/1/3/4">6</item> </grid> -<grid class="fr"> +<grid> <item>1</item> <item>2</item> <item>3</item> @@ -170,7 +176,7 @@ <item style="grid-column:span 4">5</item> </grid> -<grid class="fr"> +<grid> <item>1</item> <item>2</item> <item>3</item> @@ -178,19 +184,20 @@ <item style="width:6ch; grid-column:span 4">5</item> </grid> -<grid class="fr" style="grid-template-columns: 1ch 2ch 1ch 1ch"> +<grid> <item>1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:6ch; grid-column:span 3">5</item> + <item style="width:6ch; grid-area: 2/1/3/4">5</item> + <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item> </grid> </section> <!-- ditto with mixed sizing --> -<section> -<grid class="mixed" style="grid-template-columns: 2ch 4ch 1ch 1ch"> +<section class="mixed"> +<grid style="grid-template-columns: 2ch 4ch 2ch 2ch"> <item style="width:2ch">1</item> <item>2</item> <item>3</item> @@ -198,7 +205,7 @@ <item>5</item> </grid> -<grid class="mixed" style="grid-template-columns: 1ch 2ch 1ch 1ch"> +<grid style="grid-template-columns: 2ch 4ch 2ch 2ch"> <item>1</item> <item>2</item> <item>3</item> @@ -206,42 +213,44 @@ <item style="width:2ch">5</item> </grid> -<grid class="mixed"> +<grid> <item>1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:2ch; grid-column:2">5</item> + <item style="width:2ch; grid-area: 1/2">5</item> </grid> -<grid class="mixed"> +<grid> <item>1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:4ch; grid-column:2/span 2">5</item> + <item style="visibility: hidden">4</item> + <item style="width:4ch; grid-area: 1/2/2/4">5</item> </grid> -<grid class="mixed"> - <item>1</item> +<grid> + <item style="grid-column: 4">1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="grid-column:2/span 2">5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> + <item style="visibility: hidden">4</item> + <item style="grid-area: 1/2/2/span 2">5</item> + <item style="width:5ch; grid-area: 2/1/3/4">6</item> </grid> - -<grid class="mixed"> - <item>1</item> +<grid> + <item style="grid-column: 4">1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:3ch; grid-column:2/span 2">5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> + <item style="visibility: hidden">4</item> + <item style="width:3ch; grid-area:1/2/2/4">5</item> + <item style="width:5ch; grid-area:2/1/3/4">6</item> </grid> -<grid class="mixed"> +<grid> <item>1</item> <item>2</item> <item>3</item> @@ -249,7 +258,7 @@ <item style="grid-column:span 4">5</item> </grid> -<grid class="mixed"> +<grid> <item>1</item> <item>2</item> <item>3</item> @@ -257,12 +266,13 @@ <item style="width:6ch; grid-column:span 4">5</item> </grid> -<grid class="mixed" style="grid-template-columns: 1ch 2ch 1ch 1ch"> +<grid> <item>1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:6ch; grid-column:span 3">5</item> + <item style="width:6ch; grid-area: 2/1/3/4">5</item> + <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item> </grid> </section>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001.html b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001.html index 2dc9f6d..cc0608e 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001.html +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001.html
@@ -36,7 +36,7 @@ <body> <section class="auto"> -<grid title="Wider first item"> +<grid title="Wider 1st item 2ch"> <item style="width:2ch">1</item> <item>2</item> <item>3</item> @@ -44,7 +44,7 @@ <item>5</item> </grid> -<grid title="Wider last item"> +<grid title="Wider 5th item 2ch"> <item>1</item> <item>2</item> <item>3</item> @@ -52,7 +52,7 @@ <item style="width:2ch">5</item> </grid> -<grid title="Wider last item in col 2"> +<grid title="Wider 5th item 2ch in col 2"> <item>1</item> <item>2</item> <item>3</item> @@ -60,7 +60,7 @@ <item style="width:2ch; grid-column:2">5</item> </grid> -<grid title="Wider last item spanning col 2-3"> +<grid title="Wider 5th item 4ch in col 2-3"> <item>1</item> <item>2</item> <item>3</item> @@ -68,7 +68,7 @@ <item style="width:4ch; grid-column:2/span 2">5</item> </grid> -<grid title="Item spanning col 2-3, wider item spanning col 1-3"> +<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3"> <item>1</item> <item>2</item> <item>3</item> @@ -77,8 +77,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> - -<grid title="3ch item spanning 2-3, 5ch item spanning 1-3"> +<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3"> <item>1</item> <item>2</item> <item>3</item> @@ -87,7 +86,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> -<grid title="Last item spanning 4"> +<grid title="5th item span 4"> <item>1</item> <item>2</item> <item>3</item> @@ -95,7 +94,7 @@ <item style="grid-column:span 4">5</item> </grid> -<grid title="6ch last item spanning 4"> +<grid title="5th item 6ch span 4"> <item>1</item> <item>2</item> <item>3</item> @@ -103,7 +102,7 @@ <item style="width:6ch; grid-column:span 4">5</item> </grid> -<grid title="6ch last item spanning 3"> +<grid title="5th item 6ch span 3"> <item>1</item> <item>2</item> <item>3</item> @@ -115,7 +114,7 @@ <!-- ditto with 'fr' sizing --> <section class="fr"> -<grid title="Wider first item"> +<grid title="Wider 1st item 2ch"> <item style="width:2ch">1</item> <item>2</item> <item>3</item> @@ -123,7 +122,7 @@ <item>5</item> </grid> -<grid title="Wider last item"> +<grid title="Wider 5th item 2ch"> <item>1</item> <item>2</item> <item>3</item> @@ -131,7 +130,7 @@ <item style="width:2ch">5</item> </grid> -<grid title="Wider last item in col 2"> +<grid title="Wider 5th item 2ch in col 2"> <item>1</item> <item>2</item> <item>3</item> @@ -139,7 +138,7 @@ <item style="width:2ch; grid-column:2">5</item> </grid> -<grid title="Wider last item spanning col 2-3"> +<grid title="Wider 5th item 4ch in col 2-3"> <item>1</item> <item>2</item> <item>3</item> @@ -147,7 +146,7 @@ <item style="width:4ch; grid-column:2/span 2">5</item> </grid> -<grid title="Item spanning col 2-3, wider item spanning col 1-3"> +<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3"> <item>1</item> <item>2</item> <item>3</item> @@ -156,8 +155,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> - -<grid title="3ch item spanning 2-3, 5ch item spanning 1-3"> +<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3"> <item>1</item> <item>2</item> <item>3</item> @@ -166,7 +164,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> -<grid title="Last item spanning 4"> +<grid title="5th item span 4"> <item>1</item> <item>2</item> <item>3</item> @@ -174,7 +172,7 @@ <item style="grid-column:span 4">5</item> </grid> -<grid title="6ch last item spanning 4"> +<grid title="5th item 6ch span 4"> <item>1</item> <item>2</item> <item>3</item> @@ -182,7 +180,7 @@ <item style="width:6ch; grid-column:span 4">5</item> </grid> -<grid title="6ch last item spanning 3"> +<grid title="5th item 6ch span 3"> <item>1</item> <item>2</item> <item>3</item> @@ -194,7 +192,7 @@ <!-- ditto with mixed sizing --> <section class="mixed"> -<grid title="Wider first item"> +<grid title="Wider 1st item 2ch"> <item style="width:2ch">1</item> <item>2</item> <item>3</item> @@ -202,7 +200,7 @@ <item>5</item> </grid> -<grid title="Wider last item"> +<grid title="Wider 5th item 2ch"> <item>1</item> <item>2</item> <item>3</item> @@ -210,7 +208,7 @@ <item style="width:2ch">5</item> </grid> -<grid title="Wider last item in col 2"> +<grid title="Wider 5th item 2ch in col 2"> <item>1</item> <item>2</item> <item>3</item> @@ -218,7 +216,7 @@ <item style="width:2ch; grid-column:2">5</item> </grid> -<grid title="Wider last item spanning col 2-3"> +<grid title="Wider 5th item 4ch in col 2-3"> <item>1</item> <item>2</item> <item>3</item> @@ -226,7 +224,7 @@ <item style="width:4ch; grid-column:2/span 2">5</item> </grid> -<grid title="Item spanning col 2-3, wider item spanning col 1-3"> +<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3"> <item>1</item> <item>2</item> <item>3</item> @@ -236,7 +234,7 @@ </grid> -<grid title="3ch item spanning 2-3, 5ch item spanning 1-3"> +<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3"> <item>1</item> <item>2</item> <item>3</item> @@ -245,7 +243,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> -<grid title="Last item spanning 4"> +<grid title="5th item span 4"> <item>1</item> <item>2</item> <item>3</item> @@ -253,7 +251,7 @@ <item style="grid-column:span 4">5</item> </grid> -<grid title="6ch last item spanning 4"> +<grid title="5th item 6ch span 4"> <item>1</item> <item>2</item> <item>3</item> @@ -261,7 +259,7 @@ <item style="width:6ch; grid-column:span 4">5</item> </grid> -<grid title="6ch last item spanning 3"> +<grid title="5th item 6ch span 3"> <item>1</item> <item>2</item> <item>3</item>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002-ref.html b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002-ref.html index 37f65bac..ddae8e7f 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002-ref.html +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002-ref.html
@@ -15,25 +15,27 @@ grid { display: inline-grid; gap: 1px 2px; - grid-template-columns: repeat(4,auto); grid-auto-rows: 1em; border: 1px solid; padding: 0 1px 0 2px; vertical-align: top; width: min-content; } -.fr { +.auto grid { + grid-template-columns: repeat(4,auto); +} +.fr grid { grid-template-columns: 1fr 2fr 1fr 1fr; } -.mixed { +.mixed grid { grid-template-columns: 1fr 2fr min-content max-content; } </style> <body> -<section> -<grid> +<section class="auto"> +<grid style="grid-template-columns: repeat(4, 2ch)"> <item style="width:2ch">1</item> <item>2</item> <item>3</item> @@ -41,7 +43,7 @@ <item>5</item> </grid> -<grid style="grid-template-columns: 1ch repeat(3,auto)"> +<grid style="grid-template-columns: repeat(4, 2ch)"> <item>1</item> <item>2</item> <item>3</item> @@ -54,7 +56,7 @@ <item>2</item> <item>3</item> <item>4</item> - <item style="width:2ch; grid-column:2">5</item> + <item style="width:2ch; grid-area:1/2">5</item> </grid> <grid> @@ -62,26 +64,28 @@ <item>2</item> <item>3</item> <item>4</item> - <item style="width:4ch; grid-column:2/span 2">5</item> + <item style="visibility: hidden">4</item> + <item style="width:4ch; grid-area:1/2/2/4">5</item> </grid> <grid> - <item>1</item> + <item style="grid-column: 4">1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="grid-column:2/span 2">5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> + <item style="visibility: hidden">4</item> + <item style="grid-area: 1/2/2/span 2">5</item> + <item style="width:5ch; grid-area: 2/1/3/4">6</item> </grid> - <grid> - <item>1</item> + <item style="grid-column: 4">1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:3ch; grid-column:2/span 2">5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> + <item style="visibility: hidden">4</item> + <item style="width:3ch; grid-area:1/2/2/4">5</item> + <item style="width:5ch; grid-area:2/1/3/4">6</item> </grid> <grid> @@ -100,19 +104,20 @@ <item style="width:6ch; grid-column:span 4">5</item> </grid> -<grid style="grid-template-columns: repeat(4,1ch)"> +<grid> <item>1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:6ch; grid-column:span 3">5</item> + <item style="width:6ch; grid-area: 2/1/3/4">5</item> + <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item> </grid> </section> <!-- ditto with 'fr' sizing --> -<section> -<grid class="fr"> +<section class="fr"> +<grid style="grid-template-columns: repeat(4, 2ch)"> <item style="width:2ch">1</item> <item>2</item> <item>3</item> @@ -120,7 +125,7 @@ <item>5</item> </grid> -<grid class="fr" style="grid-template-columns: 1ch 2fr 1fr 1fr"> +<grid style="grid-template-columns: repeat(4, 2ch)"> <item>1</item> <item>2</item> <item>3</item> @@ -128,42 +133,43 @@ <item style="width:2ch">5</item> </grid> -<grid class="fr"> +<grid> <item>1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:2ch; grid-column:2">5</item> + <item style="width:2ch; grid-area: 1/2">5</item> </grid> -<grid class="fr"> +<grid> <item>1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:4ch; grid-column:2/span 2">5</item> + <item style="width:4ch; grid-area: 1/2/2/4">5</item> </grid> -<grid class="fr"> - <item>1</item> +<grid> + <item style="grid-column: 4">1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="grid-column:2/span 2">5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> + <item style="visibility: hidden">4</item> + <item style="grid-area: 1/2/2/span 2">5</item> + <item style="width:5ch; grid-area: 2/1/3/4">6</item> </grid> - -<grid class="fr"> - <item>1</item> +<grid> + <item style="grid-column: 4">1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:3ch; grid-column:2/span 2">5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> + <item style="visibility: hidden">4</item> + <item style="width:3ch; grid-area:1/2/2/4">5</item> + <item style="width:5ch; grid-area:2/1/3/4">6</item> </grid> -<grid class="fr"> +<grid> <item>1</item> <item>2</item> <item>3</item> @@ -171,7 +177,7 @@ <item style="grid-column:span 4">5</item> </grid> -<grid class="fr"> +<grid> <item>1</item> <item>2</item> <item>3</item> @@ -179,19 +185,20 @@ <item style="width:6ch; grid-column:span 4">5</item> </grid> -<grid class="fr" style="grid-template-columns: 1ch 1ch 1ch 1ch"> +<grid> <item>1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:6ch; grid-column:span 3">5</item> + <item style="width:6ch; grid-area: 2/1/3/4">5</item> + <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item> </grid> </section> <!-- ditto with mixed sizing --> -<section> -<grid class="mixed" style="grid-template-columns: 2ch 1ch 1ch 1ch"> +<section class="mixed"> +<grid style="grid-template-columns: repeat(4, 2ch)"> <item style="width:2ch">1</item> <item>2</item> <item>3</item> @@ -199,7 +206,7 @@ <item>5</item> </grid> -<grid class="mixed" style="grid-template-columns: 1ch 1ch 1ch 1ch"> +<grid style="grid-template-columns: repeat(4, 2ch)"> <item>1</item> <item>2</item> <item>3</item> @@ -207,42 +214,44 @@ <item style="width:2ch">5</item> </grid> -<grid class="mixed"> +<grid> <item>1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:2ch; grid-column:2">5</item> + <item style="width:2ch; grid-area: 1/2">5</item> </grid> -<grid class="mixed"> +<grid> <item>1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:4ch; grid-column:2/span 2">5</item> + <item style="visibility: hidden">4</item> + <item style="width:4ch; grid-area: 1/2/2/4">5</item> </grid> -<grid class="mixed"> - <item>1</item> +<grid> + <item style="grid-column: 4">1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="grid-column:2/span 2">5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> + <item style="visibility: hidden">4</item> + <item style="grid-area: 1/2/2/span 2">5</item> + <item style="width:5ch; grid-area: 2/1/3/4">6</item> </grid> - -<grid class="mixed"> - <item>1</item> +<grid> + <item style="grid-column: 4">1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:3ch; grid-column:2/span 2">5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> + <item style="visibility: hidden">4</item> + <item style="width:3ch; grid-area:1/2/2/4">5</item> + <item style="width:5ch; grid-area:2/1/3/4">6</item> </grid> -<grid class="mixed"> +<grid> <item>1</item> <item>2</item> <item>3</item> @@ -250,7 +259,7 @@ <item style="grid-column:span 4">5</item> </grid> -<grid class="mixed"> +<grid> <item>1</item> <item>2</item> <item>3</item> @@ -258,12 +267,14 @@ <item style="width:6ch; grid-column:span 4">5</item> </grid> -<grid class="mixed" style="grid-template-columns: 1ch 1ch 1ch 1ch"> +<grid> <item>1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="width:6ch; grid-column:span 3">5</item> + <item style="width:6ch; grid-area: 2/1/3/4">5</item> + <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item> </grid> </section> +
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002.html b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002.html index b8228ce..3867bb13 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002.html +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002.html
@@ -38,7 +38,7 @@ <body> <section class="auto"> -<grid title="Wider first item"> +<grid title="Wider 1st item 2ch"> <item style="width:2ch">1</item> <item>2</item> <item>3</item> @@ -46,7 +46,7 @@ <item>5</item> </grid> -<grid title="Wider last item"> +<grid title="Wider 5th item 2ch"> <item>1</item> <item>2</item> <item>3</item> @@ -54,7 +54,7 @@ <item style="width:2ch">5</item> </grid> -<grid title="Wider last item in col 2"> +<grid title="Wider 5th item 2ch in col 2"> <item>1</item> <item>2</item> <item>3</item> @@ -62,7 +62,7 @@ <item style="width:2ch; grid-column:2">5</item> </grid> -<grid title="Wider last item spanning col 2-3"> +<grid title="Wider 5th item 4ch in col 2-3"> <item>1</item> <item>2</item> <item>3</item> @@ -70,7 +70,7 @@ <item style="width:4ch; grid-column:2/span 2">5</item> </grid> -<grid title="Item spanning col 2-3, wider item spanning col 1-3"> +<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3"> <item>1</item> <item>2</item> <item>3</item> @@ -79,8 +79,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> - -<grid title="3ch item spanning 2-3, 5ch item spanning 1-3"> +<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3"> <item>1</item> <item>2</item> <item>3</item> @@ -89,7 +88,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> -<grid title="Last item spanning 4"> +<grid title="5th item spanning 4"> <item>1</item> <item>2</item> <item>3</item> @@ -97,7 +96,7 @@ <item style="grid-column:span 4">5</item> </grid> -<grid title="6ch last item spanning 4"> +<grid title="5th item 6ch spanning 4"> <item>1</item> <item>2</item> <item>3</item> @@ -105,7 +104,7 @@ <item style="width:6ch; grid-column:span 4">5</item> </grid> -<grid title="6ch last item spanning 3"> +<grid title="5th item 6ch spanning 3"> <item>1</item> <item>2</item> <item>3</item> @@ -117,7 +116,7 @@ <!-- ditto with 'fr' sizing --> <section class="fr"> -<grid title="Wider first item"> +<grid title="Wider 1st item 2ch"> <item style="width:2ch">1</item> <item>2</item> <item>3</item> @@ -125,7 +124,7 @@ <item>5</item> </grid> -<grid title="Wider last item"> +<grid title="Wider 5th item 2ch"> <item>1</item> <item>2</item> <item>3</item> @@ -133,7 +132,7 @@ <item style="width:2ch">5</item> </grid> -<grid title="Wider last item in col 2"> +<grid title="Wider 5th item 2ch in col 2"> <item>1</item> <item>2</item> <item>3</item> @@ -141,7 +140,7 @@ <item style="width:2ch; grid-column:2">5</item> </grid> -<grid title="Wider last item spanning col 2-3"> +<grid title="Wider 5th item 4ch in col 2-3"> <item>1</item> <item>2</item> <item>3</item> @@ -149,7 +148,7 @@ <item style="width:4ch; grid-column:2/span 2">5</item> </grid> -<grid title="Item spanning col 2-3, wider item spanning col 1-3"> +<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3"> <item>1</item> <item>2</item> <item>3</item> @@ -158,8 +157,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> - -<grid title="3ch item spanning 2-3, 5ch item spanning 1-3"> +<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3"> <item>1</item> <item>2</item> <item>3</item> @@ -168,7 +166,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> -<grid title="Last item spanning 4"> +<grid title="5th item span 4"> <item>1</item> <item>2</item> <item>3</item> @@ -176,7 +174,7 @@ <item style="grid-column:span 4">5</item> </grid> -<grid title="6ch last item spanning 4"> +<grid title="5th item 6ch span 4"> <item>1</item> <item>2</item> <item>3</item> @@ -184,7 +182,7 @@ <item style="width:6ch; grid-column:span 4">5</item> </grid> -<grid title="6ch last item spanning 3"> +<grid title="5th item 6ch span 3"> <item>1</item> <item>2</item> <item>3</item> @@ -196,7 +194,7 @@ <!-- ditto with mixed sizing --> <section class="mixed"> -<grid title="Wider first item"> +<grid title="Wider 1st item 2ch"> <item style="width:2ch">1</item> <item>2</item> <item>3</item> @@ -204,7 +202,7 @@ <item>5</item> </grid> -<grid title="Wider last item"> +<grid title="Wider 5th item 2ch"> <item>1</item> <item>2</item> <item>3</item> @@ -212,7 +210,7 @@ <item style="width:2ch">5</item> </grid> -<grid title="Wider last item in col 2"> +<grid title="Wider 5th item 2ch in col 2"> <item>1</item> <item>2</item> <item>3</item> @@ -220,7 +218,7 @@ <item style="width:2ch; grid-column:2">5</item> </grid> -<grid title="Wider last item spanning col 2-3"> +<grid title="Wider 5th item 4ch in col 2-3"> <item>1</item> <item>2</item> <item>3</item> @@ -228,7 +226,7 @@ <item style="width:4ch; grid-column:2/span 2">5</item> </grid> -<grid title="Item spanning col 2-3, wider item spanning col 1-3"> +<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3"> <item>1</item> <item>2</item> <item>3</item> @@ -237,8 +235,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> - -<grid title="3ch item spanning 2-3, 5ch item spanning 1-3"> +<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3"> <item>1</item> <item>2</item> <item>3</item> @@ -247,7 +244,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> -<grid title="Last item spanning 4"> +<grid title="5th item spanning 4"> <item>1</item> <item>2</item> <item>3</item> @@ -255,7 +252,7 @@ <item style="grid-column:span 4">5</item> </grid> -<grid title="6ch last item spanning 4"> +<grid title="5th item 6ch spanning 4"> <item>1</item> <item>2</item> <item>3</item> @@ -263,7 +260,7 @@ <item style="width:6ch; grid-column:span 4">5</item> </grid> -<grid title="6ch last item spanning 3"> +<grid title="5th item 6ch spanning 3"> <item>1</item> <item>2</item> <item>3</item>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003-ref.html b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003-ref.html index 886c147..044750d 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003-ref.html +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003-ref.html
@@ -15,7 +15,6 @@ grid { display: inline-grid; gap: 1px 2px; - grid-auto-rows: 1em; border: 1px solid; padding: 0 1px 0 2px; vertical-align: top; @@ -31,240 +30,304 @@ grid-template-columns: 1fr 2fr min-content max-content; } -item.start { align-self: start; } +item { + align-self: start; +} +.hidden { + visibility: hidden; + height: 0; +} </style> <body> <section class="auto"> -<grid style="grid-template-rows: 1em 2em"> +<grid style="grid-template-columns: repeat(4, 2ch)"> <item style="width:2ch">1</item> - <item>2 2</item> - <item>3 3</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> <item>4</item> - <item>5 5</item> + <item style="grid-row: span 2">5 5</item> </grid> -<grid style="grid: 1em 2em / 1ch repeat(3,auto); "> +<grid style="grid-template-columns: repeat(4, 2ch)"> <item>1</item> - <item>2 2</item> - <item>3 3</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> <item>4</item> - <item style="width:2ch">5 5</item> + <item style="grid-row: span 2">5 5</item> </grid> -<grid style="grid-template-rows: 2em 2em"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:2ch; grid-column:2">5 5</item> +<grid> + <item>1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="width:2ch; grid-area: 1/2/3">5 5</item> </grid> -<grid style="grid-template-rows: 2em 1em"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:4ch; grid-column:2/span 2">5 5</item> +<grid> + <item>1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item> + + <item class="hidden">0</item> </grid> -<grid style="grid-template-rows: 2em 1em"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="grid-column:2/span 2">5 5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> +<grid> + <item style="grid-column: 4">1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="grid-area: 1/2/2/4">5 5</item> + <item style="width:5ch; grid-area: 2/1/3/4">6</item> + + <item class="hidden">0</item> + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> </grid> -<grid style="grid-template-rows: 2em 1em"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:3ch; grid-column:2/span 2">5 5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> +<grid> + <item style="grid-column: 4">1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="width:3ch; grid-area: 1/2/2/4">5 5</item> + <item style="width:5ch; grid-area: 2/1/3/4">6</item> + + <item class="hidden">0</item> + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> </grid> -<grid style="grid-template-rows: 2em 1em"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="grid-column:span 4">5 5</item> +<grid> + <item>1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="grid-area: 3/1/4/5">5 5</item> + + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> </grid> -<grid style="grid-template-rows: 2em 1em"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:6ch; grid-column:span 4">5 5</item> +<grid> + <item>1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="width:6ch; grid-area: 3/1/4/5">5 5</item> + + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> </grid> -<grid style="grid: 2em 1em / repeat(4,1ch)"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:6ch; grid-column:span 3">5 5</item> +<grid> + <item>1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="width:6ch; grid-area: 3/1/4/4">5 5</item> + + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> + <item class="hidden" style="width:6ch; grid-area: 3/2/4/5">0 0</item> </grid> </section> <!-- ditto with 'fr' sizing --> <section class="fr"> -<grid style="grid: 1em 2em / 2ch 2fr 1fr 1fr"> - <item style="width:2ch" class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item>5 5</item> +<grid style="grid-template-columns: repeat(4, 2ch)"> + <item style="width:2ch">1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="grid-row: span 2">5 5</item> </grid> -<grid style="grid: 1em 2em / repeat(4,1ch)"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:2ch">5 5</item> +<grid style="grid-template-columns: repeat(4, 2ch)"> + <item>1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="grid-row: span 2">5 5</item> </grid> -<grid style="grid: 2em 2em / 1ch 2ch repeat(2,1ch)"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:2ch; grid-column:2">5 5</item> +<grid> + <item>1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="width:2ch; grid-area: 1/2/3">5 5</item> </grid> -<grid style="grid: 2em 1em / repeat(4,1ch)"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:4ch; grid-column:2/span 2">5 5</item> +<grid> + <item>1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item> + <item class="hidden">0</item> </grid> -<grid style="grid: 2em 2em / repeat(4,1ch)"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="grid-column:2/span 2">5 5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> +<grid> + <item style="grid-column: 4">1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="grid-area: 1/2/2/4">5 5</item> + <item style="width:5ch; grid-area: 2/1/3/4">6</item> + <item class="hidden">0</item> + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> </grid> -<grid style="grid: 2em / repeat(4,1ch)"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:3ch; grid-column:2/span 2">5 5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> +<grid> + <item style="grid-column: 4">1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="width:3ch; grid-area: 1/2/2/4">5 5</item> + <item style="width:5ch; grid-area: 2/1/3/4">6</item> + + <item class="hidden">0</item> + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> </grid> -<grid style="grid: 2em / repeat(4,1ch)"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="grid-column:span 4">5 5</item> +<grid> + <item>1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="grid-area: 3/1/4/5">5 5</item> + + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> </grid> -<grid style="grid: 2em / repeat(4,1ch)"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:6ch; grid-column:span 4">5 5</item> +<grid> + <item>1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="width:6ch; grid-area: 3/1/4/5">5 5</item> + + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> </grid> -<grid style="grid: 2em / repeat(4,1ch)"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:6ch; grid-column:span 3">5 5</item> +<grid> + <item>1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="width:6ch; grid-area: 3/1/4/4">5 5</item> + + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> + <item class="hidden" style="width:6ch; grid-area: 3/2/4/5">0 0</item> </grid> </section> <!-- ditto with mixed sizing --> <section class="mixed"> -<grid style="grid: 1em 2em / 2ch repeat(3,1ch)"> - <item style="width:2ch" class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item>5 5</item> +<grid style="grid-template-columns: repeat(3, 2ch) max-content"> + <item style="width:2ch">1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="grid-row: span 2">5 5</item> + <item class="hidden" style="grid-area: 2/4/4">0 0</item> </grid> -<grid style="grid: 1em 2em / repeat(4,1ch)"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:2ch">5 5</item> +<grid style="grid-template-columns: repeat(3, 2ch) max-content"> + <item>1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="grid-row: span 2">5 5</item> + <item class="hidden" style="grid-area: 2/4/4">0 0</item> </grid> -<grid style="grid: 2em 2em / 1ch 2ch repeat(2,1ch)"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:2ch; grid-column:2">5 5</item> +<grid> + <item>1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="width:2ch; grid-area: 1/2/3">5 5</item> </grid> -<grid style="grid: 2em 1em / repeat(4,1ch)"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:4ch; grid-column:2/span 2">5 5</item> +<grid> + <item>1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item> + <item class="hidden">0</item> </grid> -<grid style="grid: 2em 2em / repeat(4,1ch)"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="grid-column:2/span 2">5 5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> +<grid> + <item style="grid-column: 4">1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="grid-area: 1/2/2/4">5 5</item> + <item style="width:5ch; grid-area: 2/1/3/4">6</item> + <item class="hidden">0</item> + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> </grid> -<grid style="grid: 2em / repeat(4,1ch)"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:3ch; grid-column:2/span 2">5 5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> +<grid> + <item style="grid-column: 4">1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="width:3ch; grid-area: 1/2/2/4">5 5</item> + <item style="width:5ch; grid-area: 2/1/3/4">6</item> + + <item class="hidden">0</item> + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> </grid> -<grid style="grid: 2em / repeat(4,1ch)"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="grid-column:span 4">5 5</item> +<grid> + <item>1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="grid-area: 3/1/4/5">5 5</item> + + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> </grid> -<grid style="grid: 2em / repeat(4,1ch)"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:6ch; grid-column:span 4">5 5</item> +<grid> + <item>1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="width:6ch; grid-area: 3/1/4/5">5 5</item> + + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> </grid> -<grid style="grid: 2em / repeat(4,1ch)"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:6ch; grid-column:span 3">5 5</item> +<grid> + <item>1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="width:6ch; grid-area: 3/1/4/4">5 5</item> + + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> + <item class="hidden" style="width:6ch; grid-area: 3/2/4/5">0 0</item> </grid> </section>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003.html b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003.html index 80bf5d5d..48489d3c 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003.html +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003.html
@@ -37,7 +37,7 @@ <body> <section class="auto"> -<grid title="Wider first item 2ch"> +<grid title="Wider 1st item 2ch"> <item style="width:2ch">1</item> <item>2 2</item> <item>3 3</item> @@ -45,7 +45,7 @@ <item>5 5</item> </grid> -<grid title="Wrapped last item 2ch"> +<grid title="Wrapped 5th item 2ch"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -53,7 +53,7 @@ <item style="width:2ch">5 5</item> </grid> -<grid title="Wrapped last item 2ch col 2"> +<grid title="Wrapped 5th item 2ch col 2"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -61,7 +61,7 @@ <item style="width:2ch; grid-column:2">5 5</item> </grid> -<grid title="Last item 4ch col 2-3"> +<grid title="5th item 4ch in col 2-3"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -69,7 +69,7 @@ <item style="width:4ch; grid-column:2/span 2">5 5</item> </grid> -<grid title="Item col 2-3 + Item 5ch col 1-3"> +<grid title="5th item in col 2-3, 6th item 5ch in col 1-3"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -78,7 +78,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> -<grid title="Item 3ch col 2-3 + Item 5ch col 1-3"> +<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -87,7 +87,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> -<grid title="Last item span 4"> +<grid title="5th item span 4"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -95,7 +95,7 @@ <item style="grid-column:span 4">5 5</item> </grid> -<grid title="Last item 6ch span 4"> +<grid title="5th item 6ch span 4"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -103,7 +103,7 @@ <item style="width:6ch; grid-column:span 4">5 5</item> </grid> -<grid title="Last item 6ch span 3"> +<grid title="5th item 6ch span 3"> <item>1</item> <item>2 2</item> <item>3 3</item>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004-ref.html b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004-ref.html index 166a467..302dcad 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004-ref.html +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004-ref.html
@@ -15,7 +15,6 @@ grid { display: inline-grid; gap: 1px 2px; - grid-auto-rows: 1em; border: 1px solid; padding: 0 1px 0 2px; vertical-align: top; @@ -23,7 +22,7 @@ width: max-content; } .auto grid { - grid-template-columns: 1ch 3ch 3ch 1ch; + grid-template-columns: repeat(4, auto); } .fr grid { grid-template-columns: 1fr 2fr 1fr 1fr; @@ -31,84 +30,122 @@ .mixed grid { grid-template-columns: 1fr 2fr min-content max-content; } -item.start { align-self: start; } + +item { + align-self: start; +} +.hidden { + visibility: hidden; + height: 0; +} </style> <body> <section class="auto"> -<grid style="grid: 1em 2em / 2ch 3ch 3ch 1ch"> +<grid> <item style="width:2ch">1</item> <item>2 2</item> <item>3 3</item> <item>4</item> <item>5 5</item> + + <item class="hidden" style="grid-column: 4">0 0</item> </grid> -<grid style="grid: 1em 2em / 1ch 3ch 3ch 1ch; "> +<grid> <item>1</item> <item>2 2</item> <item>3 3</item> <item>4</item> - <item style="width:2ch">5 5</item> -</grid> + <item style="width: 2ch; grid-area: 2/1">5 5</item> -<grid style="grid-template-rows: 1em 2em"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:2ch; grid-column:2">5 5</item> + <item class="hidden" style="grid-area: 2/1">0 0</item> + <item class="hidden" style="grid-area: 2/4">0 0</item> </grid> <grid> - <item class="start">1</item> + <item>1</item> <item>2 2</item> <item>3 3</item> - <item class="start">4</item> - <item style="width:4ch; grid-column:2/span 2">5 5</item> + <item style="grid-area: 2/1">4</item> + <item style="width:2ch; grid-area: 1/2/3">5 5</item> + + <item class="hidden" style="grid-area: 2/1">0 0</item> + <item class="hidden" style="grid-area: 2/2">0 0</item> </grid> <grid> - <item class="start">1</item> + <item>1</item> <item>2 2</item> <item>3 3</item> - <item class="start">4</item> - <item style="grid-column:2/span 2">5 5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> + <item style="grid-area: 2/2">4</item> + <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item> + + <item class="hidden" style="grid-area: 2/2">0 0</item> + <item class="hidden" style="grid-area: 2/3">0 0</item> </grid> <grid> - <item class="start">1</item> + <item style="grid-area: 1/4">1</item> <item>2 2</item> <item>3 3</item> - <item class="start">4</item> - <item style="width:3ch; grid-column:2/span 2">5 5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> + <item>4</item> + <item style="grid-area: 1/2/2/4">5 5</item> + <item style="width:5ch; grid-area: 2/1/3/4">6</item> + + <item class="hidden" style="grid-area: 1/1">0</item> + <item class="hidden" style="grid-area: 2/2">0 0</item> + <item class="hidden" style="grid-area: 2/3">0 0</item> + <item class="hidden" style="grid-area: 1/4">0 0</item> </grid> <grid> - <item class="start">1</item> + <item style="grid-area: 1/4">1</item> <item>2 2</item> <item>3 3</item> - <item class="start">4</item> - <item style="grid-column:span 4">5 5</item> + <item>4</item> + <item style="width:3ch; grid-area: 1/2/2/4">5 5</item> + <item style="width:5ch; grid-area: 2/1/3/4">6</item> + + <item class="hidden" style="grid-area: 1/1">0</item> + <item class="hidden" style="grid-area: 2/2">0 0</item> + <item class="hidden" style="grid-area: 2/3">0 0</item> + <item class="hidden" style="grid-area: 1/4">0 0</item> </grid> <grid> - <item class="start">1</item> + <item>1</item> <item>2 2</item> <item>3 3</item> - <item class="start">4</item> - <item style="width:6ch; grid-column:span 4">5 5</item> + <item>4</item> + <item style="grid-area: 2/1/3/5">5 5</item> + + <item class="hidden" style="grid-area: 2/1">0 0</item> + <item class="hidden" style="grid-area: 2/4">0 0</item> </grid> <grid> - <item class="start">1</item> + <item>1</item> <item>2 2</item> <item>3 3</item> - <item class="start">4</item> - <item style="width:6ch; grid-column:span 3">5 5</item> + <item>4</item> + <item style="width:6ch; grid-area: 2/1/3/5">5 5</item> + + <item class="hidden" style="grid-area: 2/1">0 0</item> + <item class="hidden" style="grid-area: 2/4">0 0</item> +</grid> + +<grid> + <item>1</item> + <item>2 2</item> + <item>3 3</item> + <item>4</item> + <item style="width:6ch; grid-area: 2/1/3/4">5 5</item> + + <item class="hidden" style="grid-area: 2/1">0 0</item> + <item class="hidden" style="grid-area: 2/4">0 0</item> + <item class="hidden" style="width:6ch; grid-area: 2/2/3/5">0 0</item> </grid> </section> @@ -116,155 +153,205 @@ <section class="fr"> <grid> - <item style="width:2ch" class="start">1</item> + <item style="width:2ch">1</item> <item>2 2</item> <item>3 3</item> - <item class="start">4</item> + <item>4</item> <item>5 5</item> -</grid> - -<grid style="grid: 1em 2em / 3ch 6ch 3ch 3ch"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:2ch">5 5</item> -</grid> - -<grid style="grid: 1em 2em / 3ch 6ch 3ch 3ch"> - <item class="start">1</item> - <item>2 2</item> - <item>3 3</item> - <item class="start">4</item> - <item style="width:2ch; grid-column:2">5 5</item> + <item class="hidden" style="grid-area: 2/4/4">0 0</item> </grid> <grid> - <item class="start">1</item> + <item>1</item> <item>2 2</item> <item>3 3</item> - <item class="start">4</item> - <item style="width:4ch; grid-column:2/span 2">5 5</item> + <item>4</item> + <item style="width: 2ch">5 5</item> + <item class="hidden" style="grid-area: 2/4">0 0</item> </grid> <grid> - <item class="start">1</item> + <item>1</item> <item>2 2</item> <item>3 3</item> - <item class="start">4</item> - <item style="grid-column:2/span 2">5 5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> + <item>4</item> + <item style="width:2ch; grid-area: 1/2/3">5 5</item> </grid> <grid> - <item class="start">1</item> + <item>1</item> <item>2 2</item> <item>3 3</item> - <item class="start">4</item> - <item style="width:3ch; grid-column:2/span 2">5 5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> + <item>4</item> + <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item> + <item class="hidden">0</item> </grid> <grid> - <item class="start">1</item> + <item style="grid-area: 1/4">1</item> <item>2 2</item> <item>3 3</item> - <item class="start">4</item> - <item style="grid-column:span 4">5 5</item> + <item>4</item> + <item style="grid-area: 1/2/2/4">5 5</item> + <item style="width:5ch; grid-area: 2/1/3/4">6</item> + + <item class="hidden" style="grid-area: 1/1">0</item> + <item class="hidden" style="grid-area: 2/2">0 0</item> + <item class="hidden" style="grid-area: 2/3">0 0</item> + <item class="hidden" style="grid-area: 1/4">0 0</item> </grid> <grid> - <item class="start">1</item> + <item style="grid-area: 1/4">1</item> <item>2 2</item> <item>3 3</item> - <item class="start">4</item> - <item style="width:6ch; grid-column:span 4">5 5</item> + <item>4</item> + <item style="width:3ch; grid-area: 1/2/2/4">5 5</item> + <item style="width:5ch; grid-area: 2/1/3/4">6</item> + + <item class="hidden" style="grid-area: 1/1">0</item> + <item class="hidden" style="grid-area: 2/2">0 0</item> + <item class="hidden" style="grid-area: 2/3">0 0</item> + <item class="hidden" style="grid-area: 1/4">0 0</item> </grid> <grid> - <item class="start">1</item> + <item>1</item> <item>2 2</item> <item>3 3</item> - <item class="start">4</item> - <item style="width:6ch; grid-column:span 3">5 5</item> + <item>4</item> + <item style="grid-area: 2/1/3/5">5 5</item> + + <item class="hidden" style="grid-area: 2/1">0 0</item> + <item class="hidden" style="grid-area: 2/4">0 0</item> +</grid> + +<grid> + <item>1</item> + <item>2 2</item> + <item>3 3</item> + <item>4</item> + <item style="width:6ch; grid-area: 2/1/3/5">5 5</item> + + <item class="hidden" style="grid-area: 2/1">0 0</item> + <item class="hidden" style="grid-area: 2/4">0 0</item> +</grid> + +<grid> + <item>1</item> + <item>2 2</item> + <item>3 3</item> + <item>4</item> + <item style="width:6ch; grid-area: 2/1/3/4">5 5</item> + + <item class="hidden" style="grid-area: 2/1">0 0</item> + <item class="hidden" style="grid-area: 2/4">0 0</item> + <item class="hidden" style="width:6ch; grid-area: 2/2/3/5">0 0</item> </grid> </section> <!-- ditto with mixed sizing --> <section class="mixed"> -<grid style="grid: 1em 2em / 2ch 4ch 1ch 1ch"> - <item style="width:2ch" class="start">1</item> +<grid> + <item style="width:2ch">1</item> + <item>2 2</item> + <item style="grid-area: 1/3/3">3 3</item> + <item>4</item> + <item style="grid-area: 2/1">5 5</item> + + <item class="hidden" style="grid-area: 2/3; width: 2ch">0</item> + <item class="hidden" style="grid-area: 2/4">0 0</item> +</grid> + +<grid> + <item>1</item> + <item>2 2</item> + <item style="grid-area: 1/3/3">3 3</item> + <item>4</item> + <item style="width: 2ch; grid-area: 2/1">5 5</item> + + <item class="hidden" style="grid-area: 2/3; width: 2ch">0</item> + <item class="hidden" style="grid-area: 2/4">0 0</item> +</grid> + +<grid> + <item>1</item> + <item style="grid-row: span 2">2 2</item> + <item style="grid-row: span 2">3 3</item> + <item style="grid-area: 2/1">4</item> + <item style="width:2ch; grid-area: 1/2/3">5 5</item> + + <item class="hidden" style="grid-area: 2/1">0 0</item> +</grid> + +<grid> + <item>1</item> <item>2 2</item> <item>3 3</item> - <item class="start">4</item> - <item>5 5</item> + <item>4</item> + <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item> + + <item class="hidden">0</item> </grid> -<grid style="grid: 1em 2em / calc(3ch/2) 3ch 1ch 1ch"> - <item class="start">1</item> +<grid> + <item style="grid-column: 4">1</item> <item>2 2</item> <item>3 3</item> - <item class="start">4</item> - <item style="width:2ch">5 5</item> + <item>4</item> + <item style="grid-area: 1/2/2/4">5 5</item> + <item style="width:5ch; grid-area: 2/1/3/4">6</item> + + <item class="hidden">0 0</item> + <item class="hidden" style="grid-area: 2/2">0 0</item> </grid> -<grid style="grid: 1em 2em / calc(3ch/2) 3ch 1ch 1ch"> - <item class="start">1</item> +<grid> + <item style="grid-column: 4">1</item> <item>2 2</item> <item>3 3</item> - <item class="start">4</item> - <item style="width:2ch; grid-column:2">5 5</item> + <item>4</item> + <item style="width:3ch; grid-area: 1/2/2/4">5 5</item> + <item style="width:5ch; grid-area: 2/1/3/4">6</item> + + <item class="hidden" style="grid-area: 2/3">0 0</item> </grid> -<grid style="grid: 2em 1em / calc(3ch/2) 3ch 1ch 1ch"> - <item class="start">1</item> - <item class="start">2 2</item> - <item class="start">3 3</item> - <item class="start">4</item> - <item style="width:4ch; grid-column:2/span 2">5 5</item> +<grid> + <item>1</item> + <item>2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="grid-area: 3/1/4/5">5 5</item> + + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> </grid> -<grid style="grid: 2em 1em 1em / calc(3ch/2) 3ch 1ch 1ch"> - <item class="start">1</item> - <item class="start">2 2</item> - <item class="start">3 3</item> - <item class="start">4</item> - <item style="grid-column:2/span 2">5 5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> +<grid> + <item>1</item> + <item>2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="width:6ch; grid-area: 3/1/4/5">5 5</item> + + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> </grid> -<grid style="grid: 2em 1em / calc(3ch/2) 3ch 1ch 1ch"> - <item class="start">1</item> - <item class="start">2 2</item> - <item class="start">3 3</item> - <item class="start">4</item> - <item style="width:3ch; grid-column:2/span 2">5 5</item> - <item style="width:5ch; grid-column:1/span 3">6</item> -</grid> +<grid> + <item>1</item> + <item>2 2</item> + <item style="grid-row: span 2">3 3</item> + <item>4</item> + <item style="width:6ch; grid-area: 3/1/4/4">5 5</item> -<grid style="grid: 2em 1em / calc(3ch/2) 3ch 1ch 1ch"> - <item class="start">1</item> - <item class="start">2 2</item> - <item class="start">3 3</item> - <item class="start">4</item> - <item style="grid-column:span 4">5 5</item> -</grid> - -<grid style="grid: 2em 1em / calc(3ch/2) 3ch 1ch 1ch"> - <item class="start">1</item> - <item class="start">2 2</item> - <item class="start">3 3</item> - <item class="start">4</item> - <item style="width:6ch; grid-column:span 4">5 5</item> -</grid> - -<grid style="grid: 2em 1em / calc(3ch/2) 3ch 1ch 1ch"> - <item class="start">1</item> - <item class="start">2 2</item> - <item class="start">3 3</item> - <item class="start">4</item> - <item style="width:6ch; grid-column:span 3">5 5</item> + <item class="hidden">0 0</item> + <item class="hidden">0 0</item> + <item class="hidden" style="width:6ch; grid-area: 3/2/4/5">0 0</item> </grid> </section>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004.html b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004.html index 70a52f37..c8bc671 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004.html +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004.html
@@ -37,7 +37,7 @@ <body> <section class="auto"> -<grid title="Wider first item 2ch"> +<grid title="Wider 1st item 2ch"> <item style="width:2ch">1</item> <item>2 2</item> <item>3 3</item> @@ -45,7 +45,7 @@ <item>5 5</item> </grid> -<grid title="Wrapped last item 2ch"> +<grid title="Wrapped 5th item 2ch"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -53,7 +53,7 @@ <item style="width:2ch">5 5</item> </grid> -<grid title="Wrapped last item 2ch col 2"> +<grid title="Wrapped 5th item 2ch in col 2"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -61,7 +61,7 @@ <item style="width:2ch; grid-column:2">5 5</item> </grid> -<grid title="Last item 4ch col 2-3"> +<grid title="5th item 4ch in col 2-3"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -69,7 +69,7 @@ <item style="width:4ch; grid-column:2/span 2">5 5</item> </grid> -<grid title="Item col 2-3 + Item 5ch col 1-3"> +<grid title="4th item in col 2-3, 5th item 5ch in col 1-3"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -78,7 +78,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> -<grid title="Item 3ch col 2-3 + Item 5ch col 1-3"> +<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -87,7 +87,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> -<grid title="Last item span 4"> +<grid title="5th item span 4"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -95,7 +95,7 @@ <item style="grid-column:span 4">5 5</item> </grid> -<grid title="Last item 6ch span 4"> +<grid title="5th item 6ch span 4"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -103,7 +103,7 @@ <item style="width:6ch; grid-column:span 4">5 5</item> </grid> -<grid title="Last item 6ch span 3"> +<grid title="5th item 6ch span 3"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -115,7 +115,7 @@ <!-- ditto with 'fr' sizing --> <section class="fr"> -<grid title="Wider first item 2ch"> +<grid title="Wider 1st item 2ch"> <item style="width:2ch">1</item> <item>2 2</item> <item>3 3</item> @@ -123,7 +123,7 @@ <item>5 5</item> </grid> -<grid title="Wrapped last item 2ch"> +<grid title="Wrapped 5th item 2ch"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -131,7 +131,7 @@ <item style="width:2ch">5 5</item> </grid> -<grid title="Wrapped last item 2ch col 2"> +<grid title="Wrapped 5th item 2ch in col 2"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -139,7 +139,7 @@ <item style="width:2ch; grid-column:2">5 5</item> </grid> -<grid title="Last item 4ch col 2-3"> +<grid title="5th item 4ch in col 2-3"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -147,7 +147,7 @@ <item style="width:4ch; grid-column:2/span 2">5 5</item> </grid> -<grid title="Item col 2-3 + Item 5ch col 1-3"> +<grid title="4th item in col 2-3, 5th item 5ch in col 1-3"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -156,7 +156,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> -<grid title="Item 3ch col 2-3 + Item 5ch col 1-3"> +<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -165,7 +165,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> -<grid title="Last item span 4"> +<grid title="5th item span 4"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -173,7 +173,7 @@ <item style="grid-column:span 4">5 5</item> </grid> -<grid title="Last item 6ch span 4"> +<grid title="5th item 6ch span 4"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -181,7 +181,7 @@ <item style="width:6ch; grid-column:span 4">5 5</item> </grid> -<grid title="Last item 6ch span 3"> +<grid title="5th item 6ch span 3"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -193,7 +193,7 @@ <!-- ditto with mixed sizing --> <section class="mixed"> -<grid title="Wider first item 2ch"> +<grid title="Wider 1st item 2ch"> <item style="width:2ch">1</item> <item>2 2</item> <item>3 3</item> @@ -201,7 +201,7 @@ <item>5 5</item> </grid> -<grid title="Wrapped last item 2ch"> +<grid title="Wrapped 5th item 2ch"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -209,7 +209,7 @@ <item style="width:2ch">5 5</item> </grid> -<grid title="Wrapped last item 2ch col 2"> +<grid title="Wrapped 5th item 2ch in col 2"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -217,7 +217,7 @@ <item style="width:2ch; grid-column:2">5 5</item> </grid> -<grid title="Last item 4ch col 2-3"> +<grid title="5th item 4ch in col 2-3"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -225,7 +225,7 @@ <item style="width:4ch; grid-column:2/span 2">5 5</item> </grid> -<grid title="Item col 2-3 + Item 5ch col 1-3"> +<grid title="4th item in col 2-3, 5th item 5ch in col 1-3"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -234,7 +234,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> -<grid title="Item 3ch col 2-3 + Item 5ch col 1-3"> +<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -243,7 +243,7 @@ <item style="width:5ch; grid-column:1/span 3">6</item> </grid> -<grid title="Last item span 4"> +<grid title="5th item span 4"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -251,7 +251,7 @@ <item style="grid-column:span 4">5 5</item> </grid> -<grid title="Last item 6ch span 4"> +<grid title="5th item 6ch span 4"> <item>1</item> <item>2 2</item> <item>3 3</item> @@ -259,7 +259,7 @@ <item style="width:6ch; grid-column:span 4">5 5</item> </grid> -<grid title="Last item 6ch span 3"> +<grid title="5th item 6ch span 3"> <item>1</item> <item>2 2</item> <item>3 3</item>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005-ref.html b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005-ref.html index 4822580..725f646e 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005-ref.html +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005-ref.html
@@ -5,7 +5,7 @@ --> <html> <meta charset="utf-8"> - <title>Reference: Masonry layout intrinsic sizing</title> + <title>Reference: Masonry layout row sizing (vertical writing mode)</title> <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"> <style> @@ -15,6 +15,7 @@ grid { display: inline-grid; gap: 1px 2px; + grid-template-rows: repeat(4,auto); grid-auto-flow: column; border: 1px solid; padding: 0 1px 0 2px; @@ -27,7 +28,7 @@ <body> -<grid style="grid-template-rows: 3ch repeat(3,1ch)"> +<grid style="grid-template-rows: repeat(4, 3ch)"> <item style="height:3ch">1</item> <item>2</item> <item>3</item> @@ -39,7 +40,7 @@ <item>9 9</item> </grid> -<grid style="grid-template-rows: repeat(4,1ch)"> +<grid style="grid-template-rows: repeat(4,3ch)"> <item>1</item> <item>2</item> <item>3</item>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006-ref.html b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006-ref.html index a616fad..1a88c2b 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006-ref.html +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006-ref.html
@@ -5,7 +5,7 @@ --> <html> <meta charset="utf-8"> - <title>Reference: Masonry layout intrinsic sizing</title> + <title>Reference: Masonry layout row auto-fill sizing</title> <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"> <style> @@ -16,7 +16,6 @@ display: inline-grid; gap: 1px 2px; grid-auto-flow: column; - grid-template-columns: 1ch; grid-template-rows: repeat(4,1em); border: 1px solid; padding: 0 1px 0 2px; @@ -27,26 +26,26 @@ <body> <grid> - <item style="width:3ch">1 1</item> + <item style="width:3ch; grid-column: span 2">1 1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="grid-row:2">5 5</item> + <item style="grid-column: span 2">5 5</item> </grid> <grid> - <item style="width:3ch">1 1</item> + <item style="width:3ch; grid-column: span 2">1 1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="grid-row:2">5 5</item> + <item style="grid-column: span 2">5 5</item> </grid> <grid style="height:5em"> - <item style="width:3ch">1 1</item> + <item style="width:3ch; grid-column: span 2">1 1</item> <item>2</item> <item>3</item> <item>4</item> - <item style="grid-row:2">5 5</item> + <item style="grid-column: span 2">5 5</item> </grid>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006.html b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006.html index fccc116..ad54800 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006.html +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006.html
@@ -5,7 +5,7 @@ --> <html> <meta charset="utf-8"> - <title>CSS Grid Test: Masonry layout row sizing - height constraint</title> + <title>CSS Grid Test: Masonry layout row auto-fill sizing</title> <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com"> <link rel="help" href="https://drafts.csswg.org/css-grid-3/#track-sizing"> <link rel="match" href="masonry-intrinsic-sizing-006-ref.html">
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/support/masonry-intrinsic-sizing-visual.css b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/support/masonry-intrinsic-sizing-visual.css index dbb6303..150f0f26 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/support/masonry-intrinsic-sizing-visual.css +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/masonry/tentative/intrinsic-sizing/support/masonry-intrinsic-sizing-visual.css
@@ -1,8 +1,9 @@ /* Basic Testing Setup */ html,body { - color: black; background: white; font: 15px/1 Ahem; + color: black; background: white; font: 15px/1 Ahem, monospace; padding: 1em 0; margin: 0; - height: calc(600px - 2em); border-bottom: 1px solid orange; /* Do Not Cross */ + max-width: 800px; height: calc(600px - 2em); + border-bottom: 1px solid orange; /* Do Not Cross */ } @@ -42,6 +43,6 @@ grid:hover::after { content: attr(title); position: absolute; - inset: 0.1em 0.5rem; + inset: 0.1em auto auto 0.5rem; font: bold smaller sans-serif; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/3d-transform-incoming.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/3d-transform-incoming.html index 983ba1d..4b1411f 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/3d-transform-incoming.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/3d-transform-incoming.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="3d-transform-incoming-ref.html"> -<meta name=fuzzy content="3d-transform-incoming-ref.html:0-255;0-515"> +<meta name=fuzzy content="maxDifference=0-255; totalPixels=0-515"> <script src="/common/reftest-wait.js"></script> <style> div { box-sizing: border-box; will-change: transform }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/3d-transform-outgoing.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/3d-transform-outgoing.html index 398fa97..2fe4887b 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/3d-transform-outgoing.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/3d-transform-outgoing.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="3d-transform-outgoing-ref.html"> -<meta name=fuzzy content="3d-transform-outgoing-ref.html:0-255;0-1200"> +<meta name=fuzzy content="maxDifference=0-255; totalPixels=0-1200"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/block-with-overflowing-text.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/block-with-overflowing-text.html index b3f8f42..15d1653 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/block-with-overflowing-text.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/block-with-overflowing-text.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="block-with-overflowing-text-ref.html"> -<meta name="fuzzy" content="block-with-overflowing-text-ref.html:maxDifference=0-2;totalPixels=0-1200"> +<meta name="fuzzy" content="maxDifference=0-2;totalPixels=0-1200"> <script src="/common/reftest-wait.js"></script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/break-inside-avoid-child.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/break-inside-avoid-child.html index 7b2a83c..87d56d3 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/break-inside-avoid-child.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/break-inside-avoid-child.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://www.w3.org/TR/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="break-inside-avoid-child-ref.html"> -<meta name="fuzzy" content="break-inside-avoid-child-ref.html:0-5;0-1600"> +<meta name="fuzzy" content="maxDifference=0-5; totalPixels=0-1600"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/capture-with-offscreen-child.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/capture-with-offscreen-child.html index 8588968..7f8085ca 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/capture-with-offscreen-child.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/capture-with-offscreen-child.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="capture-with-offscreen-child-ref.html"> -<meta name="fuzzy" content="capture-with-offscreen-child-ref.html:0-5;0-200"> +<meta name="fuzzy" content="maxDifference=0-5; totalPixels=0-200"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/capture-with-opacity-zero-child.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/capture-with-opacity-zero-child.html index 888d0d17..2b0563e 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/capture-with-opacity-zero-child.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/capture-with-opacity-zero-child.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="capture-with-visibility-hidden-child-ref.html"> -<meta name="fuzzy" content="capture-with-visibility-hidden-child-ref.html:0-5;0-300"> +<meta name="fuzzy" content="maxDifference=0-5; totalPixels=0-300"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/capture-with-visibility-mixed-descendants.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/capture-with-visibility-mixed-descendants.html index 462d267..3a4811ad 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/capture-with-visibility-mixed-descendants.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/capture-with-visibility-mixed-descendants.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="capture-with-visibility-mixed-descendants-ref.html"> -<meta name=fuzzy content="capture-with-visibility-mixed-descendants-ref.html:0-5;0-500"> +<meta name=fuzzy content="maxDifference=0-5; totalPixels=0-500"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element.html index 4cde9cb..4a26c50 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="clip-path-larger-than-border-box-on-child-of-named-element-ref.html"> -<meta name="fuzzy" content="clip-path-larger-than-border-box-on-child-of-named-element-ref.html:maxDifference=0-255;totalPixels=0-400"> +<meta name="fuzzy" content="maxDifference=0-255;totalPixels=0-400"> <script src="/common/reftest-wait.js"></script> <style> .target {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/content-with-transform-new-image.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/content-with-transform-new-image.html index f86f648..a6c4449 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/content-with-transform-new-image.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/content-with-transform-new-image.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="content-with-transform-ref.html"> -<meta name="fuzzy" content="content-with-transform-ref.html:0-1;0-500"> +<meta name="fuzzy" content="maxDifference=0-1; totalPixels=0-500"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/content-with-transform-old-image.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/content-with-transform-old-image.html index 3755910..c6fda7f 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/content-with-transform-old-image.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/content-with-transform-old-image.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="content-with-transform-ref.html"> -<meta name="fuzzy" content="content-with-transform-ref.html:0-1;0-400"> +<meta name="fuzzy" content="maxDifference=0-1; totalPixels=0-400"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/css-tags-paint-order-with-entry.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/css-tags-paint-order-with-entry.html index 2ba7375..c8d92ed 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/css-tags-paint-order-with-entry.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/css-tags-paint-order-with-entry.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="css-tags-paint-order-with-entry-ref.html"> -<meta name="fuzzy" content="css-tags-paint-order-with-entry-ref.html:0-120;0-300"> +<meta name="fuzzy" content="maxDifference=0-120; totalPixels=0-300"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/dialog-in-rtl-iframe.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/dialog-in-rtl-iframe.html index f5959bf..05bc98d 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/dialog-in-rtl-iframe.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/dialog-in-rtl-iframe.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:bokan@chromium.org"> <link rel="match" href="dialog-in-rtl-iframe-ref.html"> - <meta name=fuzzy content="dialog-in-rtl-iframe-ref.html:0-80;0-500"> + <meta name=fuzzy content="maxDifference=0-80; totalPixels=0-500"> <script src="/common/reftest-wait.js"></script> <style> iframe {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/far-away-capture.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/far-away-capture.html index 97ad9dfb..9ac16216 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/far-away-capture.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/far-away-capture.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="far-away-capture-ref.html"> -<meta name="fuzzy" content="far-away-capture-ref.html:0-1;0-5"> +<meta name="fuzzy" content="maxDifference=0-1; totalPixels=0-5"> <script src="/common/reftest-wait.js"></script> <style> .flex {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/fractional-box-with-overflow-children-new.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/fractional-box-with-overflow-children-new.html index e50e665..14371ac 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/fractional-box-with-overflow-children-new.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/fractional-box-with-overflow-children-new.html
@@ -6,7 +6,7 @@ <link rel="match" href="fractional-box-with-overflow-children-ref.html"> <!-- subpixel differences are ok in this test (in highdpi), but channel difference should not be perceptible --> -<meta name=fuzzy content="fractional-box-with-overflow-children-ref.html:0-3;0-100"> +<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-100"> <script src="/common/reftest-wait.js"></script> <style> .box {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/fractional-box-with-overflow-children-old.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/fractional-box-with-overflow-children-old.html index acf72e2..0d19bf9 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/fractional-box-with-overflow-children-old.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/fractional-box-with-overflow-children-old.html
@@ -6,7 +6,7 @@ <link rel="match" href="fractional-box-with-overflow-children-ref.html"> <!-- subpixel differences are ok in this test (in highdpi), but channel difference should not be perceptible --> -<meta name=fuzzy content="fractional-box-with-overflow-children-ref.html:0-3;0-100"> +<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-100"> <script src="/common/reftest-wait.js"></script> <style> .box {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/iframe-new-has-scrollbar.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/iframe-new-has-scrollbar.html index 67a57bb..81072ac 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/iframe-new-has-scrollbar.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/iframe-new-has-scrollbar.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:bokan@chromium.org"> <link rel="match" href="iframe-new-has-scrollbar-ref.html"> - <meta name=fuzzy content="iframe-new-has-scrollbar-ref.html:0-80;0-500"> + <meta name=fuzzy content="maxDifference=0-80; totalPixels=0-500"> <script src="/common/reftest-wait.js"></script> <style> iframe {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/iframe-old-has-scrollbar.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/iframe-old-has-scrollbar.html index 96dd75a..5d266333 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/iframe-old-has-scrollbar.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/iframe-old-has-scrollbar.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:bokan@chromium.org"> <link rel="match" href="iframe-old-has-scrollbar-ref.html"> - <meta name=fuzzy content="iframe-old-has-scrollbar-ref.html:0-80;0-500"> + <meta name=fuzzy content="maxDifference=0-80; totalPixels=0-500"> <script src="/common/reftest-wait.js"></script> <style> iframe {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/iframe-transition.sub.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/iframe-transition.sub.html index 8fa361b0..5f26a49 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/iframe-transition.sub.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/iframe-transition.sub.html
@@ -6,7 +6,7 @@ <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="iframe-transition-ref.html"> <meta name="assert" content="Ensure that iframe root capture is sized and displayed correctly"> -<meta name=fuzzy content="iframe-transition-ref.html:0-200;0-200"> +<meta name=fuzzy content="maxDifference=0-200; totalPixels=0-200"> <script src="/common/reftest-wait.js"></script> <style> iframe { width: 500px; height: 500px }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/inline-with-offset-from-containing-block.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/inline-with-offset-from-containing-block.html index 8640899..026ecb24 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/inline-with-offset-from-containing-block.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/inline-with-offset-from-containing-block.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="inline-with-offset-from-containing-block-ref.html"> -<meta name="fuzzy" content="inline-with-offset-from-containing-block-ref.html:0-255;0-1400"> +<meta name="fuzzy" content="maxDifference=0-255; totalPixels=0-1400"> <script src="/common/reftest-wait.js"></script> <script src="/common/rendering-utils.js"></script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-below-and-on-top-of-viewport-partially-onscreen-new.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-below-and-on-top-of-viewport-partially-onscreen-new.html index 23f5fc22..65b14a6 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-below-and-on-top-of-viewport-partially-onscreen-new.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-below-and-on-top-of-viewport-partially-onscreen-new.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="massive-element-below-and-on-top-of-viewport-partially-onscreen-ref.html"> -<meta name="fuzzy" content="massive-element-below-and-on-top-of-viewport-partially-onscreen-ref.html:maxDifference=0-2;totalPixels=0-330"> +<meta name="fuzzy" content="maxDifference=0-2;totalPixels=0-330"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-below-viewport-offscreen-new.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-below-viewport-offscreen-new.html index 611d4da..a122cd4 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-below-viewport-offscreen-new.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-below-viewport-offscreen-new.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="massive-element-below-viewport-offscreen-ref.html"> -<meta name="fuzzy" content="massive-element-below-viewport-offscreen-ref.html:maxDifference=0-3;totalPixels=0-950"> +<meta name="fuzzy" content="maxDifference=0-3;totalPixels=0-950"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-below-viewport-offscreen-old.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-below-viewport-offscreen-old.html index bda3ebf1..567819fa 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-below-viewport-offscreen-old.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-below-viewport-offscreen-old.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="massive-element-below-viewport-offscreen-ref.html"> -<meta name="fuzzy" content="massive-element-below-viewport-offscreen-ref.html:maxDifference=0-2;totalPixels=0-445"> +<meta name="fuzzy" content="maxDifference=0-2;totalPixels=0-445"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-new.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-new.html index e881e19..42f9755 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-new.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-new.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="massive-element-below-viewport-partially-onscreen-ref.html"> -<meta name="fuzzy" content="massive-element-below-viewport-partially-onscreen-ref.html:maxDifference=0-2;totalPixels=0-330"> +<meta name="fuzzy" content="maxDifference=0-2;totalPixels=0-330"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-left-of-viewport-offscreen-new.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-left-of-viewport-offscreen-new.html index c8471032a..97a3cb4 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-left-of-viewport-offscreen-new.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-left-of-viewport-offscreen-new.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="massive-element-left-of-viewport-offscreen-ref.html"> -<meta name="fuzzy" content="massive-element-left-of-viewport-offscreen-ref.html:maxDifference=0-2;totalPixels=0-330"> +<meta name="fuzzy" content="maxDifference=0-2;totalPixels=0-330"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-left-of-viewport-offscreen-old.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-left-of-viewport-offscreen-old.html index 04ab58f3a..a41a738 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-left-of-viewport-offscreen-old.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-left-of-viewport-offscreen-old.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="massive-element-left-of-viewport-offscreen-ref.html"> -<meta name="fuzzy" content="massive-element-left-of-viewport-offscreen-ref.html:maxDifference=0-3;totalPixels=0-330"> +<meta name="fuzzy" content="maxDifference=0-3;totalPixels=0-330"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-new.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-new.html index 15cc94f..accd909 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-new.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-new.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="massive-element-left-of-viewport-partially-onscreen-ref.html"> -<meta name="fuzzy" content="massive-element-left-of-viewport-partially-onscreen-ref.html:maxDifference=0-2;totalPixels=0-330"> +<meta name="fuzzy" content="maxDifference=0-2;totalPixels=0-330"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-old.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-old.html index 0d2aeec5..e16806e8 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-old.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-old.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="massive-element-left-of-viewport-partially-onscreen-ref.html"> -<meta name="fuzzy" content="massive-element-left-of-viewport-partially-onscreen-ref.html:maxDifference=0-3;totalPixels=0-330"> +<meta name="fuzzy" content="maxDifference=0-3;totalPixels=0-330"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-new.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-new.html index 6ef8edd..24edbc1ec 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-new.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-new.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="massive-element-on-top-of-viewport-offscreen-ref.html"> -<meta name="fuzzy" content="massive-element-on-top-of-viewport-offscreen-ref.html:maxDifference=0-6;totalPixels=0-920"> +<meta name="fuzzy" content="maxDifference=0-6;totalPixels=0-920"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-old.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-old.html index 5e303e8..8dfc8eef 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-old.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-old.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="massive-element-on-top-of-viewport-offscreen-ref.html"> -<meta name="fuzzy" content="massive-element-on-top-of-viewport-offscreen-ref.html:maxDifference=0-3;totalPixels=0-330"> +<meta name="fuzzy" content="maxDifference=0-3;totalPixels=0-330"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-new.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-new.html index a9e5f58..c301e47 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-new.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-new.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="massive-element-on-top-of-viewport-partially-onscreen-ref.html"> -<meta name="fuzzy" content="massive-element-on-top-of-viewport-partially-onscreen-ref.html:maxDifference=0-2;totalPixels=0-330"> +<meta name="fuzzy" content="maxDifference=0-2;totalPixels=0-330"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-old.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-old.html index 41dc622..1f810af 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-old.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-old.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="massive-element-on-top-of-viewport-partially-onscreen-ref.html"> -<meta name="fuzzy" content="massive-element-on-top-of-viewport-partially-onscreen-ref.html:maxDifference=0-3;totalPixels=0-330"> +<meta name="fuzzy" content="maxDifference=0-3;totalPixels=0-330"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-and-left-of-viewport-partially-onscreen-new.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-and-left-of-viewport-partially-onscreen-new.html index 719701f..426751d 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-and-left-of-viewport-partially-onscreen-new.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-and-left-of-viewport-partially-onscreen-new.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="massive-element-right-and-left-of-viewport-partially-onscreen-ref.html"> -<meta name="fuzzy" content="massive-element-right-and-left-of-viewport-partially-onscreen-ref.html:maxDifference=0-2;totalPixels=0-330"> +<meta name="fuzzy" content="maxDifference=0-2;totalPixels=0-330"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-of-viewport-offscreen-new.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-of-viewport-offscreen-new.html index 89d00a5..53749f29 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-of-viewport-offscreen-new.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-of-viewport-offscreen-new.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="massive-element-right-of-viewport-offscreen-ref.html"> -<meta name="fuzzy" content="massive-element-right-of-viewport-offscreen-ref.html:maxDifference=0-2;totalPixels=0-445"> +<meta name="fuzzy" content="maxDifference=0-2;totalPixels=0-445"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-of-viewport-offscreen-old.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-of-viewport-offscreen-old.html index 04247af1..b5337c4 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-of-viewport-offscreen-old.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-of-viewport-offscreen-old.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="massive-element-right-of-viewport-offscreen-ref.html"> -<meta name="fuzzy" content="massive-element-right-of-viewport-offscreen-ref.html:maxDifference=0-3;totalPixels=0-445"> +<meta name="fuzzy" content="maxDifference=0-3;totalPixels=0-445"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-new.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-new.html index a7b599e5..ac3fe48a 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-new.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-new.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="massive-element-right-of-viewport-partially-onscreen-ref.html"> -<meta name="fuzzy" content="massive-element-right-of-viewport-partially-onscreen-ref.html:maxDifference=0-2;totalPixels=0-330"> +<meta name="fuzzy" content="maxDifference=0-2;totalPixels=0-330"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-old.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-old.html index 2498f2e..2626910 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-old.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-old.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="massive-element-right-of-viewport-partially-onscreen-ref.html"> -<meta name="fuzzy" content="massive-element-right-of-viewport-partially-onscreen-ref.html:maxDifference=0-3;totalPixels=0-445"> +<meta name="fuzzy" content="maxDifference=0-3;totalPixels=0-445"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations.html index e166b3c..8fff184 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="multiline-span-with-overflowing-text-and-box-decorations-ref.html"> -<meta name="fuzzy" content="multiline-span-with-overflowing-text-and-box-decorations-ref.html:maxDifference=0-3;totalPixels=0-4900"> +<meta name="fuzzy" content="maxDifference=0-3; totalPixels=0-4900"> <script src="/common/reftest-wait.js"></script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-and-old-sizes-match.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-and-old-sizes-match.html index 094d696..70b6515 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-and-old-sizes-match.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-and-old-sizes-match.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="new-and-old-sizes-match-ref.html"> -<meta name="fuzzy" content="new-and-old-sizes-match-ref.html:0-1;0-300"> +<meta name="fuzzy" content="maxDifference=0-1; totalPixels=0-300"> <script src="/common/reftest-wait.js"></script> <style> .box {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-captures-clip-path.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-captures-clip-path.html index 702bb09..19af249 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-captures-clip-path.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-captures-clip-path.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="new-content-captures-clip-path-ref.html"> -<meta name="fuzzy" content="new-content-captures-clip-path-ref.html:0-1;0-500"> +<meta name="fuzzy" content="maxDifference=0-1; totalPixels=0-500"> <script src="/common/reftest-wait.js"></script> <style> .box {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-captures-different-size.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-captures-different-size.html index 7401996..18f323c 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-captures-different-size.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-captures-different-size.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="new-content-captures-different-size-ref.html"> -<meta name=fuzzy content="new-content-captures-different-size-ref.html:0-40;0-30000"> +<meta name=fuzzy content="maxDifference=0-40; totalPixels=0-30000"> <script src="/common/reftest-wait.js"></script> <style> .box {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-has-scrollbars.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-has-scrollbars.html index 3246a7e..834d0e8f 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-has-scrollbars.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-has-scrollbars.html
@@ -6,7 +6,7 @@ <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/7859"> <link rel="author" href="mailto:bokan@chromium.org"> <link rel="match" href="new-content-has-scrollbars-ref.html"> -<meta name=fuzzy content="new-content-has-scrollbars-ref.html:0-40;0-30000"> +<meta name=fuzzy content="maxDifference=0-40; totalPixels=0-30000"> <script src="/common/reftest-wait.js"></script> <style> html, body {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-is-inline.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-is-inline.html index 46c96acb..81b261a 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-is-inline.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-is-inline.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://www.w3.org/TR/css-view-transitions-1/"> <link rel="author" href="mailto:bokan@chromium.org"> <link rel="match" href="new-content-is-inline-ref.html"> -<meta name="fuzzy" content="new-content-is-inline-ref.html:0-255;0-1000"> +<meta name="fuzzy" content="maxDifference=0-255; totalPixels=0-1000"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-object-fit-fill.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-object-fit-fill.html index 04a8040..a610d688 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-object-fit-fill.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-object-fit-fill.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="content-object-fit-fill-ref.html"> -<meta name="fuzzy" content="content-object-fit-fill-ref.html:0-60;0-20"> +<meta name="fuzzy" content="maxDifference=0-60; totalPixels=0-20"> <script src="/common/reftest-wait.js"></script> <style> #target {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-scaling.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-scaling.html index bccb760..376b7fd 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-scaling.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/new-content-scaling.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="new-content-scaling-ref.html"> -<meta name="fuzzy" content="new-content-scaling-ref.html:maxDifference=0-16;totalPixels=0-400"> +<meta name="fuzzy" content="maxDifference=0-16; totalPixels=0-400"> <script src="/common/reftest-wait.js"></script> <style> .shared {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/object-view-box-old-image.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/object-view-box-old-image.html index 335e48fa..793dfd4 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/object-view-box-old-image.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/object-view-box-old-image.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="object-view-box-ref.html"> -<meta name="fuzzy" content="object-view-box-ref.html:0-1;0-300"> +<meta name="fuzzy" content="maxDifference=0-1; totalPixels=0-300"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-captures-clip-path.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-captures-clip-path.html index 7ed5e1c..67aa5bf3 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-captures-clip-path.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-captures-clip-path.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="old-content-captures-clip-path-ref.html"> -<meta name="fuzzy" content="old-content-captures-clip-path-ref.html:0-1;0-500"> +<meta name="fuzzy" content="maxDifference=0-1; totalPixels=0-500"> <script src="/common/reftest-wait.js"></script> <style> .box {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-captures-different-size.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-captures-different-size.html index 392247b..7f3be74 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-captures-different-size.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-captures-different-size.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="old-content-captures-different-size-ref.html"> -<meta name=fuzzy content="old-content-captures-different-size-ref.html:0-40;0-30000"> +<meta name=fuzzy content="maxDifference=0-40; totalPixels=0-30000"> <script src="/common/reftest-wait.js"></script> <style> .box {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-captures-opacity.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-captures-opacity.html index cd71c9d..97b8911 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-captures-opacity.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-captures-opacity.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="old-content-captures-opacity-ref.html"> -<meta name=fuzzy content="old-content-captures-opacity-ref.html:0-1;0-50000"> +<meta name=fuzzy content="maxDifference=0-1; totalPixels=0-50000"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-captures-root.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-captures-root.html index 51a22bc..a1cb3329 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-captures-root.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-captures-root.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="old-content-captures-root-ref.html"> -<meta name="fuzzy" content="old-content-captures-root-ref.html:0-1;0-500"> +<meta name="fuzzy" content="maxDifference=0-1; totalPixels=0-500"> <script src="/common/reftest-wait.js"></script> <style> .box {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-has-scrollbars.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-has-scrollbars.html index 13e26c7..b9638ebb 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-has-scrollbars.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-has-scrollbars.html
@@ -6,7 +6,7 @@ <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/7859"> <link rel="author" href="mailto:bokan@chromium.org"> <link rel="match" href="old-content-has-scrollbars-ref.html"> -<meta name=fuzzy content="old-content-has-scrollbars-ref.html:0-40;0-30000"> +<meta name=fuzzy content="maxDifference=0-40; totalPixels=0-30000"> <script src="/common/reftest-wait.js"></script> <style> html, body {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-is-inline.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-is-inline.html index 70ff67c..3333a07a 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-is-inline.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-is-inline.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://www.w3.org/TR/css-view-transitions-1/"> <link rel="author" href="mailto:bokan@chromium.org"> <link rel="match" href="old-content-is-inline-ref.html"> -<meta name="fuzzy" content="old-content-is-inline-ref.html:0-255;0-500"> +<meta name="fuzzy" content="maxDifference=0-255; totalPixels=0-500"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-object-fit-fill.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-object-fit-fill.html index 0652b30a0..51023fa 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-object-fit-fill.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-object-fit-fill.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="content-object-fit-fill-ref.html"> -<meta name="fuzzy" content="content-object-fit-fill-ref.html:0-60;0-20"> +<meta name="fuzzy" content="maxDifference=0-60; totalPixels=0-20"> <script src="/common/reftest-wait.js"></script> <style> #target {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-object-view-box-clip-path-reference.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-object-view-box-clip-path-reference.html index 5e6969d..827ca02 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-object-view-box-clip-path-reference.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-object-view-box-clip-path-reference.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="old-content-object-view-box-clip-path-reference-ref.html"> -<meta name="fuzzy" content="old-content-object-view-box-clip-path-reference-ref.html:0-1;0-100"> +<meta name="fuzzy" content="maxDifference=0-1; totalPixels=0-100"> <script src="/common/reftest-wait.js"></script> <style> .target {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-object-view-box-clip-path.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-object-view-box-clip-path.html index f8945551..d0d26b97 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-object-view-box-clip-path.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/old-content-object-view-box-clip-path.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="old-content-object-view-box-clip-path-ref.html"> -<meta name="fuzzy" content="old-content-object-view-box-clip-path-ref.html:0-1;0-30"> +<meta name="fuzzy" content="maxDifference=0-1; totalPixels=0-30"> <script src="/common/reftest-wait.js"></script> <style> .target {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/pseudo-rendering-invalidation.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/pseudo-rendering-invalidation.html index e1f17186..4d492c40 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/pseudo-rendering-invalidation.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/pseudo-rendering-invalidation.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:bokan@chromium.org"> <link rel="match" href="pseudo-rendering-invalidation-ref.html"> -<meta name="fuzzy" content="pseudo-rendering-invalidation-ref.html:0-20;0-300"> +<meta name="fuzzy" content="maxDifference=0-20; totalPixels=0-300"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/root-captured-as-different-tag.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/root-captured-as-different-tag.html index a4d6f11a..1d4d161 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/root-captured-as-different-tag.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/root-captured-as-different-tag.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="old-content-captures-root-ref.html"> -<meta name="fuzzy" content="old-content-captures-root-ref.html:0-1;0-500"> +<meta name="fuzzy" content="maxDifference=0-1; totalPixels=0-500"> <script src="/common/reftest-wait.js"></script> <style> :root { view-transition-name: another-root; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/scroller-child-abspos.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/scroller-child-abspos.html index 3b94ffa..d04f8721 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/scroller-child-abspos.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/scroller-child-abspos.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://www.w3.org/TR/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="scroller-child-abspos-ref.html"> -<meta name="fuzzy" content="scroller-child-abspos-ref.html:0-5;0-800"> +<meta name="fuzzy" content="maxDifference=0-5; totalPixels=0-800"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/scroller-child.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/scroller-child.html index 5cb2f03e..7d4368f 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/scroller-child.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/scroller-child.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://www.w3.org/TR/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="scroller-child-ref.html"> -<meta name="fuzzy" content="scroller-child-ref.html:0-5;0-800"> +<meta name="fuzzy" content="maxDifference=0-5; totalPixels=0-800"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/scroller.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/scroller.html index e61d13b3..9d82046 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/scroller.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/scroller.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://www.w3.org/TR/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="scroller-ref.html"> -<meta name="fuzzy" content="scroller-ref.html:0-5;0-10"> +<meta name="fuzzy" content="maxDifference=0-5; totalPixels=0-10"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/set-current-time.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/set-current-time.html index f7e802d7..efe561c6 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/set-current-time.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/set-current-time.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://www.w3.org/TR/css-view-transitions-1/"> <link rel="author" href="mailto:vmpstr@chromium.org"> <link rel="match" href="set-current-time-ref.html"> -<meta name="fuzzy" content="set-current-time-ref.html:0-2;0-40000"> +<meta name="fuzzy" content="maxDifference=0-2; totalPixels=0-40000"> <script src="/common/reftest-wait.js"></script> <style> :root { view-transition-name: unset; }
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/snapshot-containing-block-absolute.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/snapshot-containing-block-absolute.html index 4a619f29..91b71f7 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/snapshot-containing-block-absolute.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/snapshot-containing-block-absolute.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:bokan@chromium.org"> <link rel="match" href="snapshot-containing-block-absolute-ref.html"> -<meta name="fuzzy" content="snapshot-containing-block-absolute-ref.html:0-20;0-100"> +<meta name="fuzzy" content="maxDifference=0-20; totalPixels=0-100"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/snapshot-containing-block-includes-scrollbar-gutter.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/snapshot-containing-block-includes-scrollbar-gutter.html index 8e47a05..40feea4 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/snapshot-containing-block-includes-scrollbar-gutter.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/snapshot-containing-block-includes-scrollbar-gutter.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:bokan@chromium.org"> <link rel="match" href="snapshot-containing-block-includes-scrollbar-gutter-ref.html"> -<meta name="fuzzy" content="snapshot-containing-block-includes-scrollbar-gutter-ref.html:0-20;0-100"> +<meta name="fuzzy" content="maxDifference=0-20; totalPixels=0-100"> <script src="/common/reftest-wait.js"></script> <style> :root {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/snapshot-containing-block-static.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/snapshot-containing-block-static.html index fc0c703..44fe4cf 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/snapshot-containing-block-static.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/snapshot-containing-block-static.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:bokan@chromium.org"> <link rel="match" href="snapshot-containing-block-static-ref.html"> -<meta name="fuzzy" content="snapshot-containing-block-static-ref.html:0-20;0-100"> +<meta name="fuzzy" content="maxDifference=0-20; totalPixels=0-100"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/span-with-overflowing-text-and-box-decorations.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/span-with-overflowing-text-and-box-decorations.html index a2bf59ec..262970a 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/span-with-overflowing-text-and-box-decorations.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/span-with-overflowing-text-and-box-decorations.html
@@ -4,8 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="span-with-overflowing-text-and-box-decorations-ref.html"> -<meta name="fuzzy" content="span-with-overflowing-text-and-box-decorations-ref.html:maxDifference=0-3;totalPixels=0-4900"> - +<meta name="fuzzy" content="maxDifference=0-3;totalPixels=0-4900"> <script src="/common/reftest-wait.js"></script> <script src="/common/rendering-utils.js"></script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/span-with-overflowing-text.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/span-with-overflowing-text.html index f3f0f53..5a6268d 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/span-with-overflowing-text.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/span-with-overflowing-text.html
@@ -4,8 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="span-with-overflowing-text-ref.html"> -<meta name="fuzzy" content="span-with-overflowing-text-ref.html:maxDifference=0-3;totalPixels=0-1100"> - +<meta name="fuzzy" content="maxDifference=0-3;totalPixels=0-1100"> <script src="/common/reftest-wait.js"></script> <script src="/common/rendering-utils.js"></script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/transition-in-empty-iframe.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/transition-in-empty-iframe.html index 7cd621f..101f7c2 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/transition-in-empty-iframe.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/transition-in-empty-iframe.html
@@ -5,7 +5,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:bokan@chromium.org"> <link rel="match" href="transition-in-empty-iframe-ref.html"> - <meta name=fuzzy content="transition-in-empty-iframe-ref.html:0-80;0-1000"> + <meta name=fuzzy content="maxDifference=0-80; totalPixels=0-1000"> <script src="/common/reftest-wait.js"></script> <style> iframe {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/web-animations-api-parse-pseudo-argument.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/web-animations-api-parse-pseudo-argument.html index 40c9a0d..dfaac62c 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/web-animations-api-parse-pseudo-argument.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/web-animations-api-parse-pseudo-argument.html
@@ -3,7 +3,7 @@ <title>View transitions with web-animation API: full parsing of argument</title> <link rel="help" href="https://www.w3.org/TR/css-view-transitions-1/"> <link rel="match" href="web-animations-api-ref.html"> -<meta name="fuzzy" content="web-animations-api-ref.html:0-2;0-500"> +<meta name="fuzzy" content="maxDifference=0-2; totalPixels=0-500"> <meta name="variant" content="?first-pseudo=::view-transition-group( first)"> <meta name="variant" content="?first-pseudo=::view-transition-group(first)"> <meta name="variant" content="?first-pseudo=::view-transition-group( first">
diff --git a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/web-animations-api.html b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/web-animations-api.html index c739e41..23b1504b 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-view-transitions/web-animations-api.html +++ b/third_party/blink/web_tests/external/wpt/css/css-view-transitions/web-animations-api.html
@@ -4,7 +4,7 @@ <link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/"> <link rel="author" href="mailto:khushalsagar@chromium.org"> <link rel="match" href="web-animations-api-ref.html"> -<meta name="fuzzy" content="web-animations-api-ref.html:0-2;0-500"> +<meta name="fuzzy" content="maxDifference=0-2; totalPixels=0-500"> <script src="/common/reftest-wait.js"></script> <style>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-change-display.tentative.html b/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-change-display.tentative.html index 435929a..4312a15 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-change-display.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-change-display.tentative.html
@@ -42,6 +42,7 @@ background: orange; } [popover] { + inset: auto; background: lime; padding:0; border:0;
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-display-none.tentative.html b/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-display-none.tentative.html index 55a11faf..8db022b 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-display-none.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-display-none.tentative.html
@@ -15,6 +15,7 @@ display: none; } [popover] { + inset: auto; background: lime; padding: 0; border: 0;
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-display.tentative.html b/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-display.tentative.html index bddc440..a713540 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-display.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-display.tentative.html
@@ -61,6 +61,7 @@ background: orange; } [popover] { + inset: auto; background: lime; padding:0; border:0;
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-scroll-display.tentative.html b/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-scroll-display.tentative.html index 2c6b0ba..a301032 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-scroll-display.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-scroll-display.tentative.html
@@ -40,6 +40,7 @@ background: orange; } [popover] { + inset: auto; background: lime; padding:0; border:0;
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-transition.tentative.tentative.html b/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-transition.tentative.tentative.html index ae2a3a8..f6220f3 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-transition.tentative.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-anchor-transition.tentative.tentative.html
@@ -13,6 +13,7 @@ } #target { + inset: auto; transition: display 2s; } </style>
diff --git a/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/invalid.py b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/invalid.py index ecd3173e..52aabca 100644 --- a/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/invalid.py +++ b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/invalid.py
@@ -46,10 +46,36 @@ ) +@pytest.mark.parametrize("type", ["css", "xpath", "innerText"]) +@pytest.mark.parametrize("value", [None, False, 42, {}, []]) +async def test_params_locator_value_invalid_type( + bidi_session, inline, top_context, type, value +): + await navigate_to_page(bidi_session, inline, top_context) + + with pytest.raises(error.InvalidArgumentException): + await bidi_session.browsing_context.locate_nodes( + context=top_context["context"], locator={"type": type, "value": value} + ) + + +@pytest.mark.parametrize("value", [None, False, 42, {}, []]) +async def test_params_locator_accessability_value_invalid_type( + bidi_session, inline, top_context, value +): + await navigate_to_page(bidi_session, inline, top_context) + + with pytest.raises(error.InvalidArgumentException): + await bidi_session.browsing_context.locate_nodes( + context=top_context["context"], locator={"type": "accessability", "value": value} + ) + + @pytest.mark.parametrize("type,value", [ ("css", "a*b"), ("xpath", ""), - ("innerText", "") + ("innerText", ""), + ("accessibility", {}) ]) async def test_params_locator_value_invalid_value(bidi_session, inline, top_context, type, value): await navigate_to_page(bidi_session, inline, top_context)
diff --git a/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/locator.py b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/locator.py index e560fa92..66c512d 100644 --- a/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/locator.py +++ b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/locator.py
@@ -6,11 +6,17 @@ @pytest.mark.parametrize("type,value", [ ("css", "div"), ("xpath", "//div"), - ("innerText", "foobarBARbaz") + ("innerText", "foobarBARbaz"), + ("accessibility", {"role": "banner"}), + ("accessibility", {"name": "foo"}), + ("accessibility", {"role": "banner", "name": "foo"}), ]) @pytest.mark.asyncio async def test_find_by_locator(bidi_session, inline, top_context, type, value): - url = inline("""<div data-class="one">foobarBARbaz</div><div data-class="two">foobarBARbaz</div>""") + url = inline(""" + <div data-class="one" role="banner" aria-label="foo">foobarBARbaz</div> + <div data-class="two" role="banner" aria-label="foo">foobarBARbaz</div> + """) await bidi_session.browsing_context.navigate( context=top_context["context"], url=url, wait="complete" ) @@ -165,3 +171,69 @@ ) recursive_compare(expected, result["nodes"]) + + +@pytest.mark.parametrize( + "html,locator_value,expected_node_local_name", + [ + ( + "<article data-class='one'>foo</article><div data-class='two'>bar</div>", + {"role": "article"}, + "article", + ), + ( + "<input role='searchbox' data-class='one' /><input data-class='two' type='text'/>", + {"role": "searchbox"}, + "input", + ), + ( + "<button data-class='one'>Ok</button><button data-class='two'>Cancel</button>", + {"name": "Ok"}, + "button", + ), + ( + "<button data-class='one' aria-labelledby='one two'></button><div id='one'>ok</div><div id='two'>go</div><button data-class='two'>Cancel</button>", + {"name": "ok go"}, + "button", + ), + ( + "<button data-class='one' aria-label='foo'>bar</button><button data-class='two' aria-label='bar'>foo</button>", + {"name": "foo"}, + "button", + ), + ( + "<div role='banner' aria-label='foo' data-class='one'></div><div role='banner' data-class='two'></div><div aria-label='foo' data-class='three'></div>", + {"role": "banner", "name": "foo"}, + "div", + ), + ], +) +@pytest.mark.asyncio +async def test_locate_by_accessibility_attributes( + bidi_session, + inline, + top_context, + html, + locator_value, + expected_node_local_name, +): + await bidi_session.browsing_context.navigate( + context=top_context["context"], url=inline(html), wait="complete" + ) + + expected = [ + { + "type": "node", + "value": { + "attributes": {"data-class": "one"}, + "localName": expected_node_local_name, + }, + } + ] + + result = await bidi_session.browsing_context.locate_nodes( + context=top_context["context"], + locator={"type": "accessibility", "value": locator_value}, + ) + + recursive_compare(expected, result["nodes"])
diff --git a/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/max_node_count.py b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/max_node_count.py index 4652026..9d9c052 100644 --- a/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/max_node_count.py +++ b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/max_node_count.py
@@ -43,6 +43,45 @@ }, }] ), + ("accessibility", {"role": "banner"}, 1, [ + { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"one"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + }, + }] + ), + ("accessibility", {"name": "bar"}, 1, [ + { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"one"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + }, + }] + ), + ("accessibility", {"role": "banner", "name": "bar"}, 1, [ + { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"one"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + }, + }] + ), ("css", "div", 10, [ { "type": "node", @@ -114,18 +153,96 @@ "nodeType": 1, }, }] - ) + ), + ("accessibility", {"role": "banner"}, 10, [ + { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"one"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + }, + }, { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"two"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + }, + }] + ), + ("accessibility", {"name": "bar"}, 10, [ + { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"one"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + }, + }, { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"two"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + }, + }] + ), + ("accessibility", {"role": "banner", "name": "bar"}, 10, [ + { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"one"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + }, + }, { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"two"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + }, + }] + ), ], ids=[ "css_single", "xpath_single", "inner_text_single", + "accessibility_role_single", + "accessibility_name_single", + "accessibility_role_name_single", "css_multiple", "xpath_multiple", - "inner_text_multiple" + "inner_text_multiple", + "accessibility_role_multiple", + "accessibility_name_multiple", + "accessibility_role_name_multiple", ]) @pytest.mark.asyncio async def test_find_by_locator_limit_return_count(bidi_session, inline, top_context, type, value, max_count, expected): - url = inline("""<div data-class="one">foo</div><div data-class="two">foo</div>""") + url = inline(""" + <div data-class="one" role="banner" aria-label="bar">foo</div> + <div data-class="two" role="banner" aria-label="bar">foo</div> + """) await bidi_session.browsing_context.navigate( context=top_context["context"], url=url, wait="complete" )
diff --git a/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/start_nodes.py b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/start_nodes.py index 707d83a..f44a6d4 100644 --- a/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/start_nodes.py +++ b/third_party/blink/web_tests/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/start_nodes.py
@@ -92,13 +92,59 @@ "namespaceURI": "http://www.w3.org/1999/xhtml", "nodeType": 1, } - }]) + }]), + ("accessibility", {"role": "banner"}, [{ + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"one"}, + "childNodeCount": 1, + "localName": "p", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + } + }, + { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"two"}, + "childNodeCount": 1, + "localName": "p", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + } + }]), + ("accessibility", {"name": "bar"}, [{ + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"one"}, + "childNodeCount": 1, + "localName": "p", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + } + } + ]), + ("accessibility", {"role": "banner", "name": "bar"}, [{ + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"one"}, + "childNodeCount": 1, + "localName": "p", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + } + } + ]) ]) @pytest.mark.asyncio async def test_locate_with_context_nodes(bidi_session, inline, top_context, type, value, expected): url = inline("""<div id="parent"> - <p data-class="one">foo</p> - <p data-class="two">foo</p> + <p data-class="one" role="banner" aria-label="bar">foo</p> + <p data-class="two" role="banner">foo</p> <a data-class="three"> <span id="text">bar</span> </a> @@ -125,14 +171,23 @@ @pytest.mark.parametrize("type,value", [ ("css", "p[data-class='one']"), ("xpath", ".//p[@data-class='one']"), - ("innerText", "foo") + ("innerText", "foo"), + ("accessibility", {"role": "banner"}), + ("accessibility", {"name": "bar"}), + ("accessibility", {"role": "banner", "name": "bar"}), ]) @pytest.mark.asyncio async def test_locate_with_multiple_context_nodes(bidi_session, inline, top_context, type, value): url = inline(""" - <div id="parent-one"><p data-class="one">foo</p><p data-class="two">bar</p></div> - <div id="parent-two"><p data-class="one">foo</p><p data-class="two">bar</p></div> - """) + <div id="parent-one"> + <p data-class="one" role="banner" aria-label="bar">foo</p> + <p data-class="two">bar</p> + </div> + <div id="parent-two"> + <p data-class="one" role="banner" aria-label="bar">foo</p> + <p data-class="two">bar</p> + </div> + """) await bidi_session.browsing_context.navigate( context=top_context["context"], url=url, wait="complete" )
diff --git a/third_party/blink/web_tests/platform/linux-chrome/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/invalid-expected.txt b/third_party/blink/web_tests/platform/linux-chrome/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/invalid-expected.txt new file mode 100644 index 0000000..cac1aac --- /dev/null +++ b/third_party/blink/web_tests/platform/linux-chrome/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/invalid-expected.txt
@@ -0,0 +1,4 @@ +This is a wdspec test. +[FAIL] test_params_locator_value_invalid_value[accessibility-value3] + webdriver.bidi.error.InvalidArgumentException: invalid argument (Invalid input in "locator".) +Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/platform/linux-chrome/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/locator-expected.txt b/third_party/blink/web_tests/platform/linux-chrome/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/locator-expected.txt new file mode 100644 index 0000000..506b5a7f --- /dev/null +++ b/third_party/blink/web_tests/platform/linux-chrome/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/locator-expected.txt
@@ -0,0 +1,20 @@ +This is a wdspec test. +[FAIL] test_find_by_locator[accessibility-value3] + webdriver.bidi.error.InvalidArgumentException: invalid argument (Invalid input in "locator".) +[FAIL] test_find_by_locator[accessibility-value4] + webdriver.bidi.error.InvalidArgumentException: invalid argument (Invalid input in "locator".) +[FAIL] test_find_by_locator[accessibility-value5] + webdriver.bidi.error.InvalidArgumentException: invalid argument (Invalid input in "locator".) +[FAIL] test_locate_by_accessibility_attributes[<article data-class='one'>foo</article><div data-class='two'>bar</div>-locator_value0-article] + webdriver.bidi.error.InvalidArgumentException: invalid argument (Invalid input in "locator".) +[FAIL] test_locate_by_accessibility_attributes[<input role='searchbox' data-class='one' /><input data-class='two' type='text'/>-locator_value1-input] + webdriver.bidi.error.InvalidArgumentException: invalid argument (Invalid input in "locator".) +[FAIL] test_locate_by_accessibility_attributes[<button data-class='one'>Ok</button><button data-class='two'>Cancel</button>-locator_value2-button] + webdriver.bidi.error.InvalidArgumentException: invalid argument (Invalid input in "locator".) +[FAIL] test_locate_by_accessibility_attributes[<button data-class='one' aria-labelledby='one two'></button><div id='one'>ok</div><div id='two'>go</div><button data-class='two'>Cancel</button>-locator_value3-button] + webdriver.bidi.error.InvalidArgumentException: invalid argument (Invalid input in "locator".) +[FAIL] test_locate_by_accessibility_attributes[<button data-class='one' aria-label='foo'>bar</button><button data-class='two' aria-label='bar'>foo</button>-locator_value4-button] + webdriver.bidi.error.InvalidArgumentException: invalid argument (Invalid input in "locator".) +[FAIL] test_locate_by_accessibility_attributes[<div role='banner' aria-label='foo' data-class='one'></div><div role='banner' data-class='two'></div><div aria-label='foo' data-class='three'></div>-locator_value5-div] + webdriver.bidi.error.InvalidArgumentException: invalid argument (Invalid input in "locator".) +Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/platform/linux-chrome/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/max_node_count-expected.txt b/third_party/blink/web_tests/platform/linux-chrome/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/max_node_count-expected.txt new file mode 100644 index 0000000..a655224 --- /dev/null +++ b/third_party/blink/web_tests/platform/linux-chrome/external/wpt/webdriver/tests/bidi/browsing_context/locate_nodes/max_node_count-expected.txt
@@ -0,0 +1,14 @@ +This is a wdspec test. +[FAIL] test_find_by_locator_limit_return_count[accessibility_role_single] + webdriver.bidi.error.InvalidArgumentException: invalid argument (Invalid input in "locator".) +[FAIL] test_find_by_locator_limit_return_count[accessibility_name_single] + webdriver.bidi.error.InvalidArgumentException: invalid argument (Invalid input in "locator".) +[FAIL] test_find_by_locator_limit_return_count[accessibility_role_name_single] + webdriver.bidi.error.InvalidArgumentException: invalid argument (Invalid input in "locator".) +[FAIL] test_find_by_locator_limit_return_count[accessibility_role_multiple] + webdriver.bidi.error.InvalidArgumentException: invalid argument (Invalid input in "locator".) +[FAIL] test_find_by_locator_limit_return_count[accessibility_name_multiple] + webdriver.bidi.error.InvalidArgumentException: invalid argument (Invalid input in "locator".) +[FAIL] test_find_by_locator_limit_return_count[accessibility_role_name_multiple] + webdriver.bidi.error.InvalidArgumentException: invalid argument (Invalid input in "locator".) +Harness: the test ran to completion.
diff --git a/third_party/chromium-variations b/third_party/chromium-variations index 5d2512d..7b0c418 160000 --- a/third_party/chromium-variations +++ b/third_party/chromium-variations
@@ -1 +1 @@ -Subproject commit 5d2512d77e06e5c6938a49192bbea2bed1618afe +Subproject commit 7b0c418c18885973e5df7ff3523b911050bf6ae8
diff --git a/third_party/dawn b/third_party/dawn index e228605..cd07b9f 160000 --- a/third_party/dawn +++ b/third_party/dawn
@@ -1 +1 @@ -Subproject commit e228605ee7bea07756b742941cfd3aec088311ec +Subproject commit cd07b9f4050952300ee34b15d84c30a70523e80c
diff --git a/third_party/depot_tools b/third_party/depot_tools index 4eb81e6..6ba67af 160000 --- a/third_party/depot_tools +++ b/third_party/depot_tools
@@ -1 +1 @@ -Subproject commit 4eb81e6f13fbf6f9c550d895c7c3e6cfd19d34f7 +Subproject commit 6ba67afd6fb7718743af91b847ddf1907f3ee9a6
diff --git a/third_party/devtools-frontend-internal b/third_party/devtools-frontend-internal index a13168e..cadbad6 160000 --- a/third_party/devtools-frontend-internal +++ b/third_party/devtools-frontend-internal
@@ -1 +1 @@ -Subproject commit a13168edbd77143405d485f3347663c320223f66 +Subproject commit cadbad6bc7fe48b083e0d25eb6feb06fa7a02d89
diff --git a/third_party/devtools-frontend/src b/third_party/devtools-frontend/src index 83ecf63..170f1b6 160000 --- a/third_party/devtools-frontend/src +++ b/third_party/devtools-frontend/src
@@ -1 +1 @@ -Subproject commit 83ecf63b0b905fb835f38389a8130b4b19265387 +Subproject commit 170f1b62ff2ddac12ee66724127335585acc8ece
diff --git a/third_party/freetype/README.chromium b/third_party/freetype/README.chromium index 9162fb0..652d0e0 100644 --- a/third_party/freetype/README.chromium +++ b/third_party/freetype/README.chromium
@@ -1,7 +1,7 @@ Name: FreeType URL: http://www.freetype.org/ -Version: VER-2-13-2-116-gdbdcd7588 -Revision: dbdcd758895647028bbc56baf862a1cff07409ff +Version: VER-2-13-2-117-g9a2d6d97b +Revision: 9a2d6d97b2d8a5d22d02948b783df12b764afa2d CPEPrefix: cpe:/a:freetype:freetype:2.13.2 License: Custom license "inspired by the BSD, Artistic, and IJG (Independent JPEG Group) licenses"
diff --git a/third_party/freetype/src b/third_party/freetype/src index dbdcd75..9a2d6d97 160000 --- a/third_party/freetype/src +++ b/third_party/freetype/src
@@ -1 +1 @@ -Subproject commit dbdcd758895647028bbc56baf862a1cff07409ff +Subproject commit 9a2d6d97b2d8a5d22d02948b783df12b764afa2d
diff --git a/third_party/lit/v3_0/BUILD.gn b/third_party/lit/v3_0/BUILD.gn index 415cd7f..48507f2 100644 --- a/third_party/lit/v3_0/BUILD.gn +++ b/third_party/lit/v3_0/BUILD.gn
@@ -19,6 +19,7 @@ # - a few chrome/browser/resources/ folders that hold small UIs. # Update when the migration enters its next phase. "//chrome/browser/resources/side_panel/reading_list:build_ts", + "//chrome/browser/resources/side_panel/shared:build_ts", "//chrome/browser/resources/welcome:build_ts", "//chrome/browser/resources/whats_new:build_ts", "//chrome/test/data/webui/cr_components:build_ts",
diff --git a/third_party/skia b/third_party/skia index 6af0f1f..dec629b 160000 --- a/third_party/skia +++ b/third_party/skia
@@ -1 +1 @@ -Subproject commit 6af0f1febeca72da6472c388d897e87cb897dbc4 +Subproject commit dec629b762ec426f9062f25157e9640de60d4d50
diff --git a/third_party/vulkan-deps b/third_party/vulkan-deps index 931022b..71b1153 160000 --- a/third_party/vulkan-deps +++ b/third_party/vulkan-deps
@@ -1 +1 @@ -Subproject commit 931022b21e50cacab1d65546c96f9aa8242969f9 +Subproject commit 71b11532ed72adaec5d5e006d92ce741b71379a3
diff --git a/third_party/webgpu-cts/src b/third_party/webgpu-cts/src index cb9d590..680c654 160000 --- a/third_party/webgpu-cts/src +++ b/third_party/webgpu-cts/src
@@ -1 +1 @@ -Subproject commit cb9d5903ea1dc93ad4fe3e67652e2f65026fc909 +Subproject commit 680c654441704480e9756124770dd683a32d13d1
diff --git a/third_party/webrtc b/third_party/webrtc index dc43cb2..0afde76 160000 --- a/third_party/webrtc +++ b/third_party/webrtc
@@ -1 +1 @@ -Subproject commit dc43cb24bd8ee85d6a8224c5928ceaf90de729b6 +Subproject commit 0afde7614d1ce398f516f19a032ef94f4c9f1011
diff --git a/tools/binary_size/libsupersize/data_quality.py b/tools/binary_size/libsupersize/data_quality.py index 64a28aa..e880fe0f 100644 --- a/tools/binary_size/libsupersize/data_quality.py +++ b/tools/binary_size/libsupersize/data_quality.py
@@ -241,7 +241,7 @@ # E.g.: Set to 0 and see what warnings appear, then take max value. and ((sym.section in 'rd' and sym.padding >= 256) or (sym.section in 't' and sym.padding >= 64))): - # TODO(crbug.com/959906): We should synthesize symbols for these gaps + # TODO(crbug.com/40626114): We should synthesize symbols for these gaps # rather than attribute them as padding. spam_counter += 1 if spam_counter > 5:
diff --git a/tools/code_coverage/js_source_maps/merge_js_source_maps/test/merge_js_source_maps_test.py b/tools/code_coverage/js_source_maps/merge_js_source_maps/test/merge_js_source_maps_test.py index 2fdfc02c..2ccdb113 100755 --- a/tools/code_coverage/js_source_maps/merge_js_source_maps/test/merge_js_source_maps_test.py +++ b/tools/code_coverage/js_source_maps/merge_js_source_maps/test/merge_js_source_maps_test.py
@@ -16,8 +16,8 @@ _HERE_DIR = Path(__file__).parent.resolve() _SOURCE_MAP_MERGER = (_HERE_DIR.parent / 'merge_js_source_maps.js').resolve() -# TODO(crbug/1337530): Move common sourcemap build rules and tests into a more -# generic location. +# TODO(crbug.com/40229311): Move common sourcemap build rules and tests into a +# more generic location. _SOURCE_MAP_TRANSLATOR = (_HERE_DIR.parent.parent / 'create_js_source_maps' / 'test' / 'translate_source_map.js').resolve()
diff --git a/tools/disable_tests/tests/expectations-bug-with-message.json b/tools/disable_tests/tests/expectations-bug-with-message.json index 46033b3..f49b9f25 100644 --- a/tools/disable_tests/tests/expectations-bug-with-message.json +++ b/tools/disable_tests/tests/expectations-bug-with-message.json
@@ -14,6 +14,6 @@ "chrome/browser/extensions/calculator_app_browsertest.cc": "// Copyright 2012 The Chromium Authors\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n#include \"base/files/file_path.h\"\n#include \"base/path_service.h\"\n#include \"chrome/browser/ui/browser.h\"\n#include \"chrome/browser/ui/tabs/tab_strip_model.h\"\n#include \"chrome/common/chrome_paths.h\"\n#include \"chrome/test/base/in_process_browser_test.h\"\n#include \"chrome/test/base/ui_test_utils.h\"\n#include \"content/public/browser/web_contents.h\"\n#include \"content/public/test/browser_test.h\"\n#include \"content/public/test/browser_test_utils.h\"\n#include \"net/base/filename_util.h\"\n\nclass CalculatorBrowserTest : public InProcessBrowserTest {};\n\nIN_PROC_BROWSER_TEST_F(CalculatorBrowserTest, Model) {\n base::FilePath test_file;\n base::PathService::Get(chrome::DIR_TEST_DATA, &test_file);\n test_file =\n test_file.AppendASCII(\"extensions/calculator_app/tests/automatic.html\");\n\n ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(),\n net::FilePathToFileURL(test_file)));\n\n ASSERT_EQ(true, content::EvalJs(\n browser()->tab_strip_model()->GetActiveWebContents(),\n \"window.runTests().success\"));\n}\n" }, "written_data": { - "chrome/browser/extensions/calculator_app_browsertest.cc": "// Copyright 2012 The Chromium Authors\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n#include \"base/files/file_path.h\"\n#include \"base/path_service.h\"\n#include \"build/build_config.h\"\n#include \"chrome/browser/ui/browser.h\"\n#include \"chrome/browser/ui/tabs/tab_strip_model.h\"\n#include \"chrome/common/chrome_paths.h\"\n#include \"chrome/test/base/in_process_browser_test.h\"\n#include \"chrome/test/base/ui_test_utils.h\"\n#include \"content/public/browser/web_contents.h\"\n#include \"content/public/test/browser_test.h\"\n#include \"content/public/test/browser_test_utils.h\"\n#include \"net/base/filename_util.h\"\n\nclass CalculatorBrowserTest : public InProcessBrowserTest {};\n\n// TODO(crbug.com/1492): My Custom Bug Message\n#if BUILDFLAG(IS_LINUX)\n#define MAYBE_Model DISABLED_Model\n#else\n#define MAYBE_Model Model\n#endif\nIN_PROC_BROWSER_TEST_F(CalculatorBrowserTest, MAYBE_Model) {\n base::FilePath test_file;\n base::PathService::Get(chrome::DIR_TEST_DATA, &test_file);\n test_file =\n test_file.AppendASCII(\"extensions/calculator_app/tests/automatic.html\");\n\n ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(),\n net::FilePathToFileURL(test_file)));\n\n ASSERT_EQ(true, content::EvalJs(\n browser()->tab_strip_model()->GetActiveWebContents(),\n \"window.runTests().success\"));\n}\n" + "chrome/browser/extensions/calculator_app_browsertest.cc": "// Copyright 2012 The Chromium Authors\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n#include \"base/files/file_path.h\"\n#include \"base/path_service.h\"\n#include \"build/build_config.h\"\n#include \"chrome/browser/ui/browser.h\"\n#include \"chrome/browser/ui/tabs/tab_strip_model.h\"\n#include \"chrome/common/chrome_paths.h\"\n#include \"chrome/test/base/in_process_browser_test.h\"\n#include \"chrome/test/base/ui_test_utils.h\"\n#include \"content/public/browser/web_contents.h\"\n#include \"content/public/test/browser_test.h\"\n#include \"content/public/test/browser_test_utils.h\"\n#include \"net/base/filename_util.h\"\n\nclass CalculatorBrowserTest : public InProcessBrowserTest {};\n\n// TODO(crbug.com/40935977): My Custom Bug Message\n#if BUILDFLAG(IS_LINUX)\n#define MAYBE_Model DISABLED_Model\n#else\n#define MAYBE_Model Model\n#endif\nIN_PROC_BROWSER_TEST_F(CalculatorBrowserTest, MAYBE_Model) {\n base::FilePath test_file;\n base::PathService::Get(chrome::DIR_TEST_DATA, &test_file);\n test_file =\n test_file.AppendASCII(\"extensions/calculator_app/tests/automatic.html\");\n\n ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(),\n net::FilePathToFileURL(test_file)));\n\n ASSERT_EQ(true, content::EvalJs(\n browser()->tab_strip_model()->GetActiveWebContents(),\n \"window.runTests().success\"));\n}\n" } } \ No newline at end of file
diff --git a/tools/disable_tests/tests/gtest-bug-comment.json b/tools/disable_tests/tests/gtest-bug-comment.json index 77ed92e..ecea6ee 100644 --- a/tools/disable_tests/tests/gtest-bug-comment.json +++ b/tools/disable_tests/tests/gtest-bug-comment.json
@@ -11,6 +11,6 @@ "chrome/browser/ui/views/frame/browser_view_browsertest.cc": "// Copyright 2013 The Chromium Authors\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n#include \"chrome/browser/ui/views/frame/browser_view.h\"\n\n#include \"base/memory/raw_ptr.h\"\n#include \"base/strings/utf_string_conversions.h\"\n#include \"build/build_config.h\"\n#include \"build/chromeos_buildflags.h\"\n#include \"chrome/browser/devtools/devtools_window_testing.h\"\n#include \"chrome/browser/ui/browser.h\"\n#include \"chrome/browser/ui/browser_tabstrip.h\"\n#include \"chrome/browser/ui/tab_modal_confirm_dialog.h\"\n#include \"chrome/browser/ui/tab_ui_helper.h\"\n#include \"chrome/browser/ui/tabs/tab_strip_model.h\"\n#include \"chrome/browser/ui/views/bookmarks/bookmark_bar_view.h\"\n#include \"chrome/browser/ui/views/bookmarks/bookmark_bar_view_observer.h\"\n#include \"chrome/browser/ui/views/tabs/tab_strip.h\"\n#include \"chrome/common/pref_names.h\"\n#include \"chrome/common/url_constants.h\"\n#include \"chrome/grit/branded_strings.h\"\n#include \"chrome/test/base/in_process_browser_test.h\"\n#include \"chrome/test/base/ui_test_utils.h\"\n#include \"components/bookmarks/common/bookmark_pref_names.h\"\n#include \"components/prefs/pref_service.h\"\n#include \"content/public/browser/browser_accessibility_state.h\"\n#include \"content/public/browser/invalidate_type.h\"\n#include \"content/public/browser/web_contents.h\"\n#include \"content/public/browser/web_contents_observer.h\"\n#include \"content/public/test/browser_test.h\"\n#include \"content/public/test/browser_test_utils.h\"\n#include \"content/public/test/test_navigation_observer.h\"\n#include \"media/base/media_switches.h\"\n#include \"ui/accessibility/platform/ax_platform_node.h\"\n#include \"ui/accessibility/platform/ax_platform_node_test_helper.h\"\n#include \"ui/base/l10n/l10n_util.h\"\n\n#if defined(USE_AURA)\n#include \"ui/aura/client/focus_client.h\"\n#include \"ui/views/widget/native_widget_aura.h\"\n#endif // USE_AURA\n\nclass BrowserViewTest : public InProcessBrowserTest {\n public:\n BrowserViewTest() : devtools_(nullptr) {}\n\n BrowserViewTest(const BrowserViewTest&) = delete;\n BrowserViewTest& operator=(const BrowserViewTest&) = delete;\n\n protected:\n BrowserView* browser_view() {\n return BrowserView::GetBrowserViewForBrowser(browser());\n }\n\n views::WebView* devtools_web_view() {\n return browser_view()->GetDevToolsWebViewForTest();\n }\n\n views::WebView* contents_web_view() {\n return browser_view()->contents_web_view();\n }\n\n void OpenDevToolsWindow(bool docked) {\n devtools_ =\n DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), docked);\n }\n\n void CloseDevToolsWindow() {\n DevToolsWindowTesting::CloseDevToolsWindowSync(devtools_);\n }\n\n void SetDevToolsBounds(const gfx::Rect& bounds) {\n DevToolsWindowTesting::Get(devtools_)->SetInspectedPageBounds(bounds);\n }\n\n raw_ptr<DevToolsWindow> devtools_;\n\n private:\n base::test::ScopedFeatureList scoped_feature_list_;\n};\n\nnamespace {\n\n// Used to simulate scenario in a crash. When WebContentsDestroyed() is invoked\n// updates the navigation state of another tab.\nclass TestWebContentsObserver : public content::WebContentsObserver {\n public:\n TestWebContentsObserver(content::WebContents* source,\n content::WebContents* other)\n : content::WebContentsObserver(source),\n other_(other) {}\n\n TestWebContentsObserver(const TestWebContentsObserver&) = delete;\n TestWebContentsObserver& operator=(const TestWebContentsObserver&) = delete;\n\n ~TestWebContentsObserver() override {}\n\n void WebContentsDestroyed() override {\n other_->NotifyNavigationStateChanged(static_cast<content::InvalidateTypes>(\n content::INVALIDATE_TYPE_URL | content::INVALIDATE_TYPE_LOAD));\n }\n\n private:\n raw_ptr<content::WebContents> other_;\n};\n\nclass TestTabModalConfirmDialogDelegate : public TabModalConfirmDialogDelegate {\n public:\n explicit TestTabModalConfirmDialogDelegate(content::WebContents* contents)\n : TabModalConfirmDialogDelegate(contents) {}\n\n TestTabModalConfirmDialogDelegate(const TestTabModalConfirmDialogDelegate&) =\n delete;\n TestTabModalConfirmDialogDelegate& operator=(\n const TestTabModalConfirmDialogDelegate&) = delete;\n\n std::u16string GetTitle() override { return std::u16string(u\"Dialog Title\"); }\n std::u16string GetDialogMessage() override { return std::u16string(); }\n};\n} // namespace\n\n// Verifies don't crash when CloseNow() is invoked with two tabs in a browser.\n// Additionally when one of the tabs is destroyed NotifyNavigationStateChanged()\n// is invoked on the other.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, CloseWithTabs) {\n Browser* browser2 =\n Browser::Create(Browser::CreateParams(browser()->profile(), true));\n chrome::AddTabAt(browser2, GURL(), -1, true);\n chrome::AddTabAt(browser2, GURL(), -1, true);\n TestWebContentsObserver observer(\n browser2->tab_strip_model()->GetWebContentsAt(0),\n browser2->tab_strip_model()->GetWebContentsAt(1));\n BrowserView::GetBrowserViewForBrowser(browser2)->GetWidget()->CloseNow();\n}\n\n// Same as CloseWithTabs, but activates the first tab, which is the first tab\n// BrowserView will destroy.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, CloseWithTabsStartWithActive) {\n Browser* browser2 =\n Browser::Create(Browser::CreateParams(browser()->profile(), true));\n chrome::AddTabAt(browser2, GURL(), -1, true);\n chrome::AddTabAt(browser2, GURL(), -1, true);\n browser2->tab_strip_model()->ActivateTabAt(\n 0, TabStripUserGestureDetails(\n TabStripUserGestureDetails::GestureType::kOther));\n TestWebContentsObserver observer(\n browser2->tab_strip_model()->GetWebContentsAt(0),\n browser2->tab_strip_model()->GetWebContentsAt(1));\n BrowserView::GetBrowserViewForBrowser(browser2)->GetWidget()->CloseNow();\n}\n\n// Verifies that page and devtools WebViews are being correctly layed out\n// when DevTools is opened/closed/updated/undocked.\n// TODO(crbug.com/1316663): Re-enable; currently failing on multiple platforms.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, DISABLED_DevToolsUpdatesBrowserWindow) {\n gfx::Rect full_bounds =\n browser_view()->GetContentsContainerForTest()->GetLocalBounds();\n gfx::Rect small_bounds(10, 20, 30, 40);\n\n browser_view()->UpdateDevTools();\n EXPECT_FALSE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(full_bounds, contents_web_view()->bounds());\n\n // Docked.\n OpenDevToolsWindow(true);\n EXPECT_TRUE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n\n SetDevToolsBounds(small_bounds);\n EXPECT_TRUE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(small_bounds, contents_web_view()->bounds());\n\n browser_view()->UpdateDevTools();\n EXPECT_TRUE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(small_bounds, contents_web_view()->bounds());\n\n CloseDevToolsWindow();\n EXPECT_FALSE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(full_bounds, contents_web_view()->bounds());\n\n browser_view()->UpdateDevTools();\n EXPECT_FALSE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(full_bounds, contents_web_view()->bounds());\n\n // Undocked.\n OpenDevToolsWindow(false);\n EXPECT_TRUE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n\n SetDevToolsBounds(small_bounds);\n EXPECT_TRUE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(small_bounds, contents_web_view()->bounds());\n\n browser_view()->UpdateDevTools();\n EXPECT_TRUE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(small_bounds, contents_web_view()->bounds());\n\n CloseDevToolsWindow();\n EXPECT_FALSE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(full_bounds, contents_web_view()->bounds());\n\n browser_view()->UpdateDevTools();\n EXPECT_FALSE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(full_bounds, contents_web_view()->bounds());\n}\n\nclass BookmarkBarViewObserverImpl : public BookmarkBarViewObserver {\n public:\n BookmarkBarViewObserverImpl() : change_count_(0) {\n }\n\n BookmarkBarViewObserverImpl(const BookmarkBarViewObserverImpl&) = delete;\n BookmarkBarViewObserverImpl& operator=(const BookmarkBarViewObserverImpl&) =\n delete;\n\n int change_count() const { return change_count_; }\n void clear_change_count() { change_count_ = 0; }\n\n // BookmarkBarViewObserver:\n void OnBookmarkBarVisibilityChanged() override { change_count_++; }\n\n private:\n int change_count_ = 0;\n};\n\n// Verifies we don't unnecessarily change the visibility of the BookmarkBarView.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, AvoidUnnecessaryVisibilityChanges) {\n // Create two tabs, the first empty and the second the ntp. Make it so the\n // BookmarkBarView isn't shown.\n browser()->profile()->GetPrefs()->SetBoolean(\n bookmarks::prefs::kShowBookmarkBar, false);\n GURL new_tab_url(chrome::kChromeUINewTabURL);\n chrome::AddTabAt(browser(), GURL(), -1, true);\n ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), new_tab_url));\n\n ASSERT_TRUE(browser_view()->bookmark_bar());\n BookmarkBarViewObserverImpl observer;\n BookmarkBarView* bookmark_bar = browser_view()->bookmark_bar();\n bookmark_bar->AddObserver(&observer);\n EXPECT_FALSE(bookmark_bar->GetVisible());\n\n // Go to empty tab. Bookmark bar should hide.\n browser()->tab_strip_model()->ActivateTabAt(\n 0, TabStripUserGestureDetails(\n TabStripUserGestureDetails::GestureType::kOther));\n EXPECT_FALSE(bookmark_bar->GetVisible());\n EXPECT_EQ(0, observer.change_count());\n observer.clear_change_count();\n\n // Go to ntp tab. Bookmark bar should not show.\n browser()->tab_strip_model()->ActivateTabAt(\n 1, TabStripUserGestureDetails(\n TabStripUserGestureDetails::GestureType::kOther));\n EXPECT_FALSE(bookmark_bar->GetVisible());\n EXPECT_EQ(0, observer.change_count());\n observer.clear_change_count();\n\n // Repeat with the bookmark bar always visible.\n browser()->profile()->GetPrefs()->SetBoolean(\n bookmarks::prefs::kShowBookmarkBar, true);\n browser()->tab_strip_model()->ActivateTabAt(\n 0, TabStripUserGestureDetails(\n TabStripUserGestureDetails::GestureType::kOther));\n EXPECT_TRUE(bookmark_bar->GetVisible());\n EXPECT_EQ(1, observer.change_count());\n observer.clear_change_count();\n\n browser()->tab_strip_model()->ActivateTabAt(\n 1, TabStripUserGestureDetails(\n TabStripUserGestureDetails::GestureType::kOther));\n EXPECT_TRUE(bookmark_bar->GetVisible());\n EXPECT_EQ(0, observer.change_count());\n observer.clear_change_count();\n\n browser_view()->bookmark_bar()->RemoveObserver(&observer);\n}\n\n// Launch the app, navigate to a page with a title, check that the tab title\n// is set before load finishes and the throbber state updates when the title\n// changes. Regression test for crbug.com/752266\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, TitleAndLoadState) {\n const std::u16string test_title(u\"Title Of Awesomeness\");\n auto* contents = browser()->tab_strip_model()->GetActiveWebContents();\n content::TitleWatcher title_watcher(contents, test_title);\n content::TestNavigationObserver navigation_watcher(\n contents, 1, content::MessageLoopRunner::QuitMode::DEFERRED);\n\n TabStrip* tab_strip = browser_view()->tabstrip();\n // Navigate without blocking.\n const GURL test_url = ui_test_utils::GetTestUrl(\n base::FilePath(base::FilePath::kCurrentDirectory),\n base::FilePath(FILE_PATH_LITERAL(\"title2.html\")));\n contents->GetController().LoadURL(test_url, content::Referrer(),\n ui::PAGE_TRANSITION_LINK, std::string());\n EXPECT_TRUE(browser()->tab_strip_model()->TabsAreLoading());\n EXPECT_EQ(TabNetworkState::kWaiting,\n tab_strip->tab_at(0)->data().network_state);\n EXPECT_EQ(test_title, title_watcher.WaitAndGetTitle());\n EXPECT_TRUE(browser()->tab_strip_model()->TabsAreLoading());\n EXPECT_EQ(TabNetworkState::kLoading,\n tab_strip->tab_at(0)->data().network_state);\n\n // Now block for the navigation to complete.\n navigation_watcher.Wait();\n EXPECT_FALSE(browser()->tab_strip_model()->TabsAreLoading());\n EXPECT_EQ(TabNetworkState::kNone, tab_strip->tab_at(0)->data().network_state);\n}\n\n// Verifies a tab should show its favicon.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, ShowFaviconInTab) {\n // Opens \"chrome://version/\" page, which uses default favicon.\n GURL version_url(chrome::kChromeUIVersionURL);\n ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), version_url));\n auto* contents = browser()->tab_strip_model()->GetActiveWebContents();\n auto* helper = TabUIHelper::FromWebContents(contents);\n ASSERT_TRUE(helper);\n\n auto favicon = helper->GetFavicon();\n ASSERT_FALSE(favicon.IsEmpty());\n}\n\n// On Mac, voiceover treats tab modal dialogs as native windows, so setting an\n// accessible title for tab-modal dialogs is not necessary.\n#if !BUILDFLAG(IS_MAC)\n\n// Open a tab-modal dialog and check that the accessible window title is the\n// title of the dialog.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, GetAccessibleTabModalDialogTitle) {\n std::u16string window_title =\n u\"about:blank - \" + l10n_util::GetStringUTF16(IDS_PRODUCT_NAME);\n EXPECT_TRUE(base::StartsWith(browser_view()->GetAccessibleWindowTitle(),\n window_title, base::CompareCase::SENSITIVE));\n\n content::WebContents* contents = browser_view()->GetActiveWebContents();\n auto delegate = std::make_unique<TestTabModalConfirmDialogDelegate>(contents);\n TestTabModalConfirmDialogDelegate* delegate_observer = delegate.get();\n TabModalConfirmDialog::Create(std::move(delegate), contents);\n EXPECT_EQ(browser_view()->GetAccessibleWindowTitle(),\n delegate_observer->GetTitle());\n\n delegate_observer->Close();\n\n EXPECT_TRUE(base::StartsWith(browser_view()->GetAccessibleWindowTitle(),\n window_title, base::CompareCase::SENSITIVE));\n}\n\n// Open a tab-modal dialog and check that the accessibility tree only contains\n// the dialog.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, GetAccessibleTabModalDialogTree) {\n content::testing::ScopedContentAXModeSetter ax_mode_setter(\n ui::kAXModeComplete);\n ui::AXPlatformNode* ax_node = ui::AXPlatformNode::FromNativeViewAccessible(\n browser_view()->GetWidget()->GetRootView()->GetNativeViewAccessible());\n// We expect this conversion to be safe on Windows, but can't guarantee that it\n// is safe on other platforms.\n#if BUILDFLAG(IS_WIN)\n ASSERT_TRUE(ax_node);\n#else\n if (!ax_node)\n return;\n#endif\n\n // There is no dialog, but the browser UI should be visible. So we expect the\n // browser's reload button and no \"OK\" button from a dialog.\n EXPECT_NE(ui::AXPlatformNodeTestHelper::FindChildByName(ax_node, \"Reload\"),\n nullptr);\n EXPECT_EQ(ui::AXPlatformNodeTestHelper::FindChildByName(ax_node, \"OK\"),\n nullptr);\n\n content::WebContents* contents = browser_view()->GetActiveWebContents();\n auto delegate = std::make_unique<TestTabModalConfirmDialogDelegate>(contents);\n TabModalConfirmDialog::Create(std::move(delegate), contents);\n\n // The tab modal dialog should be in the accessibility tree; everything else\n // should be hidden. So we expect an \"OK\" button and no reload button.\n EXPECT_EQ(ui::AXPlatformNodeTestHelper::FindChildByName(ax_node, \"Reload\"),\n nullptr);\n EXPECT_NE(ui::AXPlatformNodeTestHelper::FindChildByName(ax_node, \"OK\"),\n nullptr);\n}\n\n#endif // !BUILDFLAG(IS_MAC)\n" }, "written_data": { - "chrome/browser/ui/views/frame/browser_view_browsertest.cc": "// Copyright 2013 The Chromium Authors\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n#include \"chrome/browser/ui/views/frame/browser_view.h\"\n\n#include \"base/memory/raw_ptr.h\"\n#include \"base/strings/utf_string_conversions.h\"\n#include \"build/build_config.h\"\n#include \"build/chromeos_buildflags.h\"\n#include \"chrome/browser/devtools/devtools_window_testing.h\"\n#include \"chrome/browser/ui/browser.h\"\n#include \"chrome/browser/ui/browser_tabstrip.h\"\n#include \"chrome/browser/ui/tab_modal_confirm_dialog.h\"\n#include \"chrome/browser/ui/tab_ui_helper.h\"\n#include \"chrome/browser/ui/tabs/tab_strip_model.h\"\n#include \"chrome/browser/ui/views/bookmarks/bookmark_bar_view.h\"\n#include \"chrome/browser/ui/views/bookmarks/bookmark_bar_view_observer.h\"\n#include \"chrome/browser/ui/views/tabs/tab_strip.h\"\n#include \"chrome/common/pref_names.h\"\n#include \"chrome/common/url_constants.h\"\n#include \"chrome/grit/branded_strings.h\"\n#include \"chrome/test/base/in_process_browser_test.h\"\n#include \"chrome/test/base/ui_test_utils.h\"\n#include \"components/bookmarks/common/bookmark_pref_names.h\"\n#include \"components/prefs/pref_service.h\"\n#include \"content/public/browser/browser_accessibility_state.h\"\n#include \"content/public/browser/invalidate_type.h\"\n#include \"content/public/browser/web_contents.h\"\n#include \"content/public/browser/web_contents_observer.h\"\n#include \"content/public/test/browser_test.h\"\n#include \"content/public/test/browser_test_utils.h\"\n#include \"content/public/test/test_navigation_observer.h\"\n#include \"media/base/media_switches.h\"\n#include \"ui/accessibility/platform/ax_platform_node.h\"\n#include \"ui/accessibility/platform/ax_platform_node_test_helper.h\"\n#include \"ui/base/l10n/l10n_util.h\"\n\n#if defined(USE_AURA)\n#include \"ui/aura/client/focus_client.h\"\n#include \"ui/views/widget/native_widget_aura.h\"\n#endif // USE_AURA\n\nclass BrowserViewTest : public InProcessBrowserTest {\n public:\n BrowserViewTest() : devtools_(nullptr) {}\n\n BrowserViewTest(const BrowserViewTest&) = delete;\n BrowserViewTest& operator=(const BrowserViewTest&) = delete;\n\n protected:\n BrowserView* browser_view() {\n return BrowserView::GetBrowserViewForBrowser(browser());\n }\n\n views::WebView* devtools_web_view() {\n return browser_view()->GetDevToolsWebViewForTest();\n }\n\n views::WebView* contents_web_view() {\n return browser_view()->contents_web_view();\n }\n\n void OpenDevToolsWindow(bool docked) {\n devtools_ =\n DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), docked);\n }\n\n void CloseDevToolsWindow() {\n DevToolsWindowTesting::CloseDevToolsWindowSync(devtools_);\n }\n\n void SetDevToolsBounds(const gfx::Rect& bounds) {\n DevToolsWindowTesting::Get(devtools_)->SetInspectedPageBounds(bounds);\n }\n\n raw_ptr<DevToolsWindow> devtools_;\n\n private:\n base::test::ScopedFeatureList scoped_feature_list_;\n};\n\nnamespace {\n\n// Used to simulate scenario in a crash. When WebContentsDestroyed() is invoked\n// updates the navigation state of another tab.\nclass TestWebContentsObserver : public content::WebContentsObserver {\n public:\n TestWebContentsObserver(content::WebContents* source,\n content::WebContents* other)\n : content::WebContentsObserver(source),\n other_(other) {}\n\n TestWebContentsObserver(const TestWebContentsObserver&) = delete;\n TestWebContentsObserver& operator=(const TestWebContentsObserver&) = delete;\n\n ~TestWebContentsObserver() override {}\n\n void WebContentsDestroyed() override {\n other_->NotifyNavigationStateChanged(static_cast<content::InvalidateTypes>(\n content::INVALIDATE_TYPE_URL | content::INVALIDATE_TYPE_LOAD));\n }\n\n private:\n raw_ptr<content::WebContents> other_;\n};\n\nclass TestTabModalConfirmDialogDelegate : public TabModalConfirmDialogDelegate {\n public:\n explicit TestTabModalConfirmDialogDelegate(content::WebContents* contents)\n : TabModalConfirmDialogDelegate(contents) {}\n\n TestTabModalConfirmDialogDelegate(const TestTabModalConfirmDialogDelegate&) =\n delete;\n TestTabModalConfirmDialogDelegate& operator=(\n const TestTabModalConfirmDialogDelegate&) = delete;\n\n std::u16string GetTitle() override { return std::u16string(u\"Dialog Title\"); }\n std::u16string GetDialogMessage() override { return std::u16string(); }\n};\n} // namespace\n\n// Verifies don't crash when CloseNow() is invoked with two tabs in a browser.\n// Additionally when one of the tabs is destroyed NotifyNavigationStateChanged()\n// is invoked on the other.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, CloseWithTabs) {\n Browser* browser2 =\n Browser::Create(Browser::CreateParams(browser()->profile(), true));\n chrome::AddTabAt(browser2, GURL(), -1, true);\n chrome::AddTabAt(browser2, GURL(), -1, true);\n TestWebContentsObserver observer(\n browser2->tab_strip_model()->GetWebContentsAt(0),\n browser2->tab_strip_model()->GetWebContentsAt(1));\n BrowserView::GetBrowserViewForBrowser(browser2)->GetWidget()->CloseNow();\n}\n\n// Same as CloseWithTabs, but activates the first tab, which is the first tab\n// BrowserView will destroy.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, CloseWithTabsStartWithActive) {\n Browser* browser2 =\n Browser::Create(Browser::CreateParams(browser()->profile(), true));\n chrome::AddTabAt(browser2, GURL(), -1, true);\n chrome::AddTabAt(browser2, GURL(), -1, true);\n browser2->tab_strip_model()->ActivateTabAt(\n 0, TabStripUserGestureDetails(\n TabStripUserGestureDetails::GestureType::kOther));\n TestWebContentsObserver observer(\n browser2->tab_strip_model()->GetWebContentsAt(0),\n browser2->tab_strip_model()->GetWebContentsAt(1));\n BrowserView::GetBrowserViewForBrowser(browser2)->GetWidget()->CloseNow();\n}\n\n// Verifies that page and devtools WebViews are being correctly layed out\n// when DevTools is opened/closed/updated/undocked.\n// TODO(crbug.com/1316663): Re-enable; currently failing on multiple platforms.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, DISABLED_DevToolsUpdatesBrowserWindow) {\n gfx::Rect full_bounds =\n browser_view()->GetContentsContainerForTest()->GetLocalBounds();\n gfx::Rect small_bounds(10, 20, 30, 40);\n\n browser_view()->UpdateDevTools();\n EXPECT_FALSE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(full_bounds, contents_web_view()->bounds());\n\n // Docked.\n OpenDevToolsWindow(true);\n EXPECT_TRUE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n\n SetDevToolsBounds(small_bounds);\n EXPECT_TRUE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(small_bounds, contents_web_view()->bounds());\n\n browser_view()->UpdateDevTools();\n EXPECT_TRUE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(small_bounds, contents_web_view()->bounds());\n\n CloseDevToolsWindow();\n EXPECT_FALSE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(full_bounds, contents_web_view()->bounds());\n\n browser_view()->UpdateDevTools();\n EXPECT_FALSE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(full_bounds, contents_web_view()->bounds());\n\n // Undocked.\n OpenDevToolsWindow(false);\n EXPECT_TRUE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n\n SetDevToolsBounds(small_bounds);\n EXPECT_TRUE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(small_bounds, contents_web_view()->bounds());\n\n browser_view()->UpdateDevTools();\n EXPECT_TRUE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(small_bounds, contents_web_view()->bounds());\n\n CloseDevToolsWindow();\n EXPECT_FALSE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(full_bounds, contents_web_view()->bounds());\n\n browser_view()->UpdateDevTools();\n EXPECT_FALSE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(full_bounds, contents_web_view()->bounds());\n}\n\nclass BookmarkBarViewObserverImpl : public BookmarkBarViewObserver {\n public:\n BookmarkBarViewObserverImpl() : change_count_(0) {\n }\n\n BookmarkBarViewObserverImpl(const BookmarkBarViewObserverImpl&) = delete;\n BookmarkBarViewObserverImpl& operator=(const BookmarkBarViewObserverImpl&) =\n delete;\n\n int change_count() const { return change_count_; }\n void clear_change_count() { change_count_ = 0; }\n\n // BookmarkBarViewObserver:\n void OnBookmarkBarVisibilityChanged() override { change_count_++; }\n\n private:\n int change_count_ = 0;\n};\n\n// Verifies we don't unnecessarily change the visibility of the BookmarkBarView.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, AvoidUnnecessaryVisibilityChanges) {\n // Create two tabs, the first empty and the second the ntp. Make it so the\n // BookmarkBarView isn't shown.\n browser()->profile()->GetPrefs()->SetBoolean(\n bookmarks::prefs::kShowBookmarkBar, false);\n GURL new_tab_url(chrome::kChromeUINewTabURL);\n chrome::AddTabAt(browser(), GURL(), -1, true);\n ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), new_tab_url));\n\n ASSERT_TRUE(browser_view()->bookmark_bar());\n BookmarkBarViewObserverImpl observer;\n BookmarkBarView* bookmark_bar = browser_view()->bookmark_bar();\n bookmark_bar->AddObserver(&observer);\n EXPECT_FALSE(bookmark_bar->GetVisible());\n\n // Go to empty tab. Bookmark bar should hide.\n browser()->tab_strip_model()->ActivateTabAt(\n 0, TabStripUserGestureDetails(\n TabStripUserGestureDetails::GestureType::kOther));\n EXPECT_FALSE(bookmark_bar->GetVisible());\n EXPECT_EQ(0, observer.change_count());\n observer.clear_change_count();\n\n // Go to ntp tab. Bookmark bar should not show.\n browser()->tab_strip_model()->ActivateTabAt(\n 1, TabStripUserGestureDetails(\n TabStripUserGestureDetails::GestureType::kOther));\n EXPECT_FALSE(bookmark_bar->GetVisible());\n EXPECT_EQ(0, observer.change_count());\n observer.clear_change_count();\n\n // Repeat with the bookmark bar always visible.\n browser()->profile()->GetPrefs()->SetBoolean(\n bookmarks::prefs::kShowBookmarkBar, true);\n browser()->tab_strip_model()->ActivateTabAt(\n 0, TabStripUserGestureDetails(\n TabStripUserGestureDetails::GestureType::kOther));\n EXPECT_TRUE(bookmark_bar->GetVisible());\n EXPECT_EQ(1, observer.change_count());\n observer.clear_change_count();\n\n browser()->tab_strip_model()->ActivateTabAt(\n 1, TabStripUserGestureDetails(\n TabStripUserGestureDetails::GestureType::kOther));\n EXPECT_TRUE(bookmark_bar->GetVisible());\n EXPECT_EQ(0, observer.change_count());\n observer.clear_change_count();\n\n browser_view()->bookmark_bar()->RemoveObserver(&observer);\n}\n\n// Launch the app, navigate to a page with a title, check that the tab title\n// is set before load finishes and the throbber state updates when the title\n// changes. Regression test for crbug.com/752266\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, TitleAndLoadState) {\n const std::u16string test_title(u\"Title Of Awesomeness\");\n auto* contents = browser()->tab_strip_model()->GetActiveWebContents();\n content::TitleWatcher title_watcher(contents, test_title);\n content::TestNavigationObserver navigation_watcher(\n contents, 1, content::MessageLoopRunner::QuitMode::DEFERRED);\n\n TabStrip* tab_strip = browser_view()->tabstrip();\n // Navigate without blocking.\n const GURL test_url = ui_test_utils::GetTestUrl(\n base::FilePath(base::FilePath::kCurrentDirectory),\n base::FilePath(FILE_PATH_LITERAL(\"title2.html\")));\n contents->GetController().LoadURL(test_url, content::Referrer(),\n ui::PAGE_TRANSITION_LINK, std::string());\n EXPECT_TRUE(browser()->tab_strip_model()->TabsAreLoading());\n EXPECT_EQ(TabNetworkState::kWaiting,\n tab_strip->tab_at(0)->data().network_state);\n EXPECT_EQ(test_title, title_watcher.WaitAndGetTitle());\n EXPECT_TRUE(browser()->tab_strip_model()->TabsAreLoading());\n EXPECT_EQ(TabNetworkState::kLoading,\n tab_strip->tab_at(0)->data().network_state);\n\n // Now block for the navigation to complete.\n navigation_watcher.Wait();\n EXPECT_FALSE(browser()->tab_strip_model()->TabsAreLoading());\n EXPECT_EQ(TabNetworkState::kNone, tab_strip->tab_at(0)->data().network_state);\n}\n\n// Verifies a tab should show its favicon.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, ShowFaviconInTab) {\n // Opens \"chrome://version/\" page, which uses default favicon.\n GURL version_url(chrome::kChromeUIVersionURL);\n ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), version_url));\n auto* contents = browser()->tab_strip_model()->GetActiveWebContents();\n auto* helper = TabUIHelper::FromWebContents(contents);\n ASSERT_TRUE(helper);\n\n auto favicon = helper->GetFavicon();\n ASSERT_FALSE(favicon.IsEmpty());\n}\n\n// On Mac, voiceover treats tab modal dialogs as native windows, so setting an\n// accessible title for tab-modal dialogs is not necessary.\n#if !BUILDFLAG(IS_MAC)\n\n// Open a tab-modal dialog and check that the accessible window title is the\n// title of the dialog.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, GetAccessibleTabModalDialogTitle) {\n std::u16string window_title =\n u\"about:blank - \" + l10n_util::GetStringUTF16(IDS_PRODUCT_NAME);\n EXPECT_TRUE(base::StartsWith(browser_view()->GetAccessibleWindowTitle(),\n window_title, base::CompareCase::SENSITIVE));\n\n content::WebContents* contents = browser_view()->GetActiveWebContents();\n auto delegate = std::make_unique<TestTabModalConfirmDialogDelegate>(contents);\n TestTabModalConfirmDialogDelegate* delegate_observer = delegate.get();\n TabModalConfirmDialog::Create(std::move(delegate), contents);\n EXPECT_EQ(browser_view()->GetAccessibleWindowTitle(),\n delegate_observer->GetTitle());\n\n delegate_observer->Close();\n\n EXPECT_TRUE(base::StartsWith(browser_view()->GetAccessibleWindowTitle(),\n window_title, base::CompareCase::SENSITIVE));\n}\n\n// Open a tab-modal dialog and check that the accessibility tree only contains\n// the dialog.\n// TODO(crbug.com/1234567): Re-enable this test\nIN_PROC_BROWSER_TEST_F(BrowserViewTest,\n DISABLED_GetAccessibleTabModalDialogTree) {\n content::testing::ScopedContentAXModeSetter ax_mode_setter(\n ui::kAXModeComplete);\n ui::AXPlatformNode* ax_node = ui::AXPlatformNode::FromNativeViewAccessible(\n browser_view()->GetWidget()->GetRootView()->GetNativeViewAccessible());\n// We expect this conversion to be safe on Windows, but can't guarantee that it\n// is safe on other platforms.\n#if BUILDFLAG(IS_WIN)\n ASSERT_TRUE(ax_node);\n#else\n if (!ax_node)\n return;\n#endif\n\n // There is no dialog, but the browser UI should be visible. So we expect the\n // browser's reload button and no \"OK\" button from a dialog.\n EXPECT_NE(ui::AXPlatformNodeTestHelper::FindChildByName(ax_node, \"Reload\"),\n nullptr);\n EXPECT_EQ(ui::AXPlatformNodeTestHelper::FindChildByName(ax_node, \"OK\"),\n nullptr);\n\n content::WebContents* contents = browser_view()->GetActiveWebContents();\n auto delegate = std::make_unique<TestTabModalConfirmDialogDelegate>(contents);\n TabModalConfirmDialog::Create(std::move(delegate), contents);\n\n // The tab modal dialog should be in the accessibility tree; everything else\n // should be hidden. So we expect an \"OK\" button and no reload button.\n EXPECT_EQ(ui::AXPlatformNodeTestHelper::FindChildByName(ax_node, \"Reload\"),\n nullptr);\n EXPECT_NE(ui::AXPlatformNodeTestHelper::FindChildByName(ax_node, \"OK\"),\n nullptr);\n}\n\n#endif // !BUILDFLAG(IS_MAC)\n" + "chrome/browser/ui/views/frame/browser_view_browsertest.cc": "// Copyright 2013 The Chromium Authors\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n#include \"chrome/browser/ui/views/frame/browser_view.h\"\n\n#include \"base/memory/raw_ptr.h\"\n#include \"base/strings/utf_string_conversions.h\"\n#include \"build/build_config.h\"\n#include \"build/chromeos_buildflags.h\"\n#include \"chrome/browser/devtools/devtools_window_testing.h\"\n#include \"chrome/browser/ui/browser.h\"\n#include \"chrome/browser/ui/browser_tabstrip.h\"\n#include \"chrome/browser/ui/tab_modal_confirm_dialog.h\"\n#include \"chrome/browser/ui/tab_ui_helper.h\"\n#include \"chrome/browser/ui/tabs/tab_strip_model.h\"\n#include \"chrome/browser/ui/views/bookmarks/bookmark_bar_view.h\"\n#include \"chrome/browser/ui/views/bookmarks/bookmark_bar_view_observer.h\"\n#include \"chrome/browser/ui/views/tabs/tab_strip.h\"\n#include \"chrome/common/pref_names.h\"\n#include \"chrome/common/url_constants.h\"\n#include \"chrome/grit/branded_strings.h\"\n#include \"chrome/test/base/in_process_browser_test.h\"\n#include \"chrome/test/base/ui_test_utils.h\"\n#include \"components/bookmarks/common/bookmark_pref_names.h\"\n#include \"components/prefs/pref_service.h\"\n#include \"content/public/browser/browser_accessibility_state.h\"\n#include \"content/public/browser/invalidate_type.h\"\n#include \"content/public/browser/web_contents.h\"\n#include \"content/public/browser/web_contents_observer.h\"\n#include \"content/public/test/browser_test.h\"\n#include \"content/public/test/browser_test_utils.h\"\n#include \"content/public/test/test_navigation_observer.h\"\n#include \"media/base/media_switches.h\"\n#include \"ui/accessibility/platform/ax_platform_node.h\"\n#include \"ui/accessibility/platform/ax_platform_node_test_helper.h\"\n#include \"ui/base/l10n/l10n_util.h\"\n\n#if defined(USE_AURA)\n#include \"ui/aura/client/focus_client.h\"\n#include \"ui/views/widget/native_widget_aura.h\"\n#endif // USE_AURA\n\nclass BrowserViewTest : public InProcessBrowserTest {\n public:\n BrowserViewTest() : devtools_(nullptr) {}\n\n BrowserViewTest(const BrowserViewTest&) = delete;\n BrowserViewTest& operator=(const BrowserViewTest&) = delete;\n\n protected:\n BrowserView* browser_view() {\n return BrowserView::GetBrowserViewForBrowser(browser());\n }\n\n views::WebView* devtools_web_view() {\n return browser_view()->GetDevToolsWebViewForTest();\n }\n\n views::WebView* contents_web_view() {\n return browser_view()->contents_web_view();\n }\n\n void OpenDevToolsWindow(bool docked) {\n devtools_ =\n DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), docked);\n }\n\n void CloseDevToolsWindow() {\n DevToolsWindowTesting::CloseDevToolsWindowSync(devtools_);\n }\n\n void SetDevToolsBounds(const gfx::Rect& bounds) {\n DevToolsWindowTesting::Get(devtools_)->SetInspectedPageBounds(bounds);\n }\n\n raw_ptr<DevToolsWindow> devtools_;\n\n private:\n base::test::ScopedFeatureList scoped_feature_list_;\n};\n\nnamespace {\n\n// Used to simulate scenario in a crash. When WebContentsDestroyed() is invoked\n// updates the navigation state of another tab.\nclass TestWebContentsObserver : public content::WebContentsObserver {\n public:\n TestWebContentsObserver(content::WebContents* source,\n content::WebContents* other)\n : content::WebContentsObserver(source),\n other_(other) {}\n\n TestWebContentsObserver(const TestWebContentsObserver&) = delete;\n TestWebContentsObserver& operator=(const TestWebContentsObserver&) = delete;\n\n ~TestWebContentsObserver() override {}\n\n void WebContentsDestroyed() override {\n other_->NotifyNavigationStateChanged(static_cast<content::InvalidateTypes>(\n content::INVALIDATE_TYPE_URL | content::INVALIDATE_TYPE_LOAD));\n }\n\n private:\n raw_ptr<content::WebContents> other_;\n};\n\nclass TestTabModalConfirmDialogDelegate : public TabModalConfirmDialogDelegate {\n public:\n explicit TestTabModalConfirmDialogDelegate(content::WebContents* contents)\n : TabModalConfirmDialogDelegate(contents) {}\n\n TestTabModalConfirmDialogDelegate(const TestTabModalConfirmDialogDelegate&) =\n delete;\n TestTabModalConfirmDialogDelegate& operator=(\n const TestTabModalConfirmDialogDelegate&) = delete;\n\n std::u16string GetTitle() override { return std::u16string(u\"Dialog Title\"); }\n std::u16string GetDialogMessage() override { return std::u16string(); }\n};\n} // namespace\n\n// Verifies don't crash when CloseNow() is invoked with two tabs in a browser.\n// Additionally when one of the tabs is destroyed NotifyNavigationStateChanged()\n// is invoked on the other.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, CloseWithTabs) {\n Browser* browser2 =\n Browser::Create(Browser::CreateParams(browser()->profile(), true));\n chrome::AddTabAt(browser2, GURL(), -1, true);\n chrome::AddTabAt(browser2, GURL(), -1, true);\n TestWebContentsObserver observer(\n browser2->tab_strip_model()->GetWebContentsAt(0),\n browser2->tab_strip_model()->GetWebContentsAt(1));\n BrowserView::GetBrowserViewForBrowser(browser2)->GetWidget()->CloseNow();\n}\n\n// Same as CloseWithTabs, but activates the first tab, which is the first tab\n// BrowserView will destroy.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, CloseWithTabsStartWithActive) {\n Browser* browser2 =\n Browser::Create(Browser::CreateParams(browser()->profile(), true));\n chrome::AddTabAt(browser2, GURL(), -1, true);\n chrome::AddTabAt(browser2, GURL(), -1, true);\n browser2->tab_strip_model()->ActivateTabAt(\n 0, TabStripUserGestureDetails(\n TabStripUserGestureDetails::GestureType::kOther));\n TestWebContentsObserver observer(\n browser2->tab_strip_model()->GetWebContentsAt(0),\n browser2->tab_strip_model()->GetWebContentsAt(1));\n BrowserView::GetBrowserViewForBrowser(browser2)->GetWidget()->CloseNow();\n}\n\n// Verifies that page and devtools WebViews are being correctly layed out\n// when DevTools is opened/closed/updated/undocked.\n// TODO(crbug.com/1316663): Re-enable; currently failing on multiple platforms.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, DISABLED_DevToolsUpdatesBrowserWindow) {\n gfx::Rect full_bounds =\n browser_view()->GetContentsContainerForTest()->GetLocalBounds();\n gfx::Rect small_bounds(10, 20, 30, 40);\n\n browser_view()->UpdateDevTools();\n EXPECT_FALSE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(full_bounds, contents_web_view()->bounds());\n\n // Docked.\n OpenDevToolsWindow(true);\n EXPECT_TRUE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n\n SetDevToolsBounds(small_bounds);\n EXPECT_TRUE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(small_bounds, contents_web_view()->bounds());\n\n browser_view()->UpdateDevTools();\n EXPECT_TRUE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(small_bounds, contents_web_view()->bounds());\n\n CloseDevToolsWindow();\n EXPECT_FALSE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(full_bounds, contents_web_view()->bounds());\n\n browser_view()->UpdateDevTools();\n EXPECT_FALSE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(full_bounds, contents_web_view()->bounds());\n\n // Undocked.\n OpenDevToolsWindow(false);\n EXPECT_TRUE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n\n SetDevToolsBounds(small_bounds);\n EXPECT_TRUE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(small_bounds, contents_web_view()->bounds());\n\n browser_view()->UpdateDevTools();\n EXPECT_TRUE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(small_bounds, contents_web_view()->bounds());\n\n CloseDevToolsWindow();\n EXPECT_FALSE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(full_bounds, contents_web_view()->bounds());\n\n browser_view()->UpdateDevTools();\n EXPECT_FALSE(devtools_web_view()->web_contents());\n EXPECT_EQ(full_bounds, devtools_web_view()->bounds());\n EXPECT_EQ(full_bounds, contents_web_view()->bounds());\n}\n\nclass BookmarkBarViewObserverImpl : public BookmarkBarViewObserver {\n public:\n BookmarkBarViewObserverImpl() : change_count_(0) {\n }\n\n BookmarkBarViewObserverImpl(const BookmarkBarViewObserverImpl&) = delete;\n BookmarkBarViewObserverImpl& operator=(const BookmarkBarViewObserverImpl&) =\n delete;\n\n int change_count() const { return change_count_; }\n void clear_change_count() { change_count_ = 0; }\n\n // BookmarkBarViewObserver:\n void OnBookmarkBarVisibilityChanged() override { change_count_++; }\n\n private:\n int change_count_ = 0;\n};\n\n// Verifies we don't unnecessarily change the visibility of the BookmarkBarView.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, AvoidUnnecessaryVisibilityChanges) {\n // Create two tabs, the first empty and the second the ntp. Make it so the\n // BookmarkBarView isn't shown.\n browser()->profile()->GetPrefs()->SetBoolean(\n bookmarks::prefs::kShowBookmarkBar, false);\n GURL new_tab_url(chrome::kChromeUINewTabURL);\n chrome::AddTabAt(browser(), GURL(), -1, true);\n ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), new_tab_url));\n\n ASSERT_TRUE(browser_view()->bookmark_bar());\n BookmarkBarViewObserverImpl observer;\n BookmarkBarView* bookmark_bar = browser_view()->bookmark_bar();\n bookmark_bar->AddObserver(&observer);\n EXPECT_FALSE(bookmark_bar->GetVisible());\n\n // Go to empty tab. Bookmark bar should hide.\n browser()->tab_strip_model()->ActivateTabAt(\n 0, TabStripUserGestureDetails(\n TabStripUserGestureDetails::GestureType::kOther));\n EXPECT_FALSE(bookmark_bar->GetVisible());\n EXPECT_EQ(0, observer.change_count());\n observer.clear_change_count();\n\n // Go to ntp tab. Bookmark bar should not show.\n browser()->tab_strip_model()->ActivateTabAt(\n 1, TabStripUserGestureDetails(\n TabStripUserGestureDetails::GestureType::kOther));\n EXPECT_FALSE(bookmark_bar->GetVisible());\n EXPECT_EQ(0, observer.change_count());\n observer.clear_change_count();\n\n // Repeat with the bookmark bar always visible.\n browser()->profile()->GetPrefs()->SetBoolean(\n bookmarks::prefs::kShowBookmarkBar, true);\n browser()->tab_strip_model()->ActivateTabAt(\n 0, TabStripUserGestureDetails(\n TabStripUserGestureDetails::GestureType::kOther));\n EXPECT_TRUE(bookmark_bar->GetVisible());\n EXPECT_EQ(1, observer.change_count());\n observer.clear_change_count();\n\n browser()->tab_strip_model()->ActivateTabAt(\n 1, TabStripUserGestureDetails(\n TabStripUserGestureDetails::GestureType::kOther));\n EXPECT_TRUE(bookmark_bar->GetVisible());\n EXPECT_EQ(0, observer.change_count());\n observer.clear_change_count();\n\n browser_view()->bookmark_bar()->RemoveObserver(&observer);\n}\n\n// Launch the app, navigate to a page with a title, check that the tab title\n// is set before load finishes and the throbber state updates when the title\n// changes. Regression test for crbug.com/752266\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, TitleAndLoadState) {\n const std::u16string test_title(u\"Title Of Awesomeness\");\n auto* contents = browser()->tab_strip_model()->GetActiveWebContents();\n content::TitleWatcher title_watcher(contents, test_title);\n content::TestNavigationObserver navigation_watcher(\n contents, 1, content::MessageLoopRunner::QuitMode::DEFERRED);\n\n TabStrip* tab_strip = browser_view()->tabstrip();\n // Navigate without blocking.\n const GURL test_url = ui_test_utils::GetTestUrl(\n base::FilePath(base::FilePath::kCurrentDirectory),\n base::FilePath(FILE_PATH_LITERAL(\"title2.html\")));\n contents->GetController().LoadURL(test_url, content::Referrer(),\n ui::PAGE_TRANSITION_LINK, std::string());\n EXPECT_TRUE(browser()->tab_strip_model()->TabsAreLoading());\n EXPECT_EQ(TabNetworkState::kWaiting,\n tab_strip->tab_at(0)->data().network_state);\n EXPECT_EQ(test_title, title_watcher.WaitAndGetTitle());\n EXPECT_TRUE(browser()->tab_strip_model()->TabsAreLoading());\n EXPECT_EQ(TabNetworkState::kLoading,\n tab_strip->tab_at(0)->data().network_state);\n\n // Now block for the navigation to complete.\n navigation_watcher.Wait();\n EXPECT_FALSE(browser()->tab_strip_model()->TabsAreLoading());\n EXPECT_EQ(TabNetworkState::kNone, tab_strip->tab_at(0)->data().network_state);\n}\n\n// Verifies a tab should show its favicon.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, ShowFaviconInTab) {\n // Opens \"chrome://version/\" page, which uses default favicon.\n GURL version_url(chrome::kChromeUIVersionURL);\n ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), version_url));\n auto* contents = browser()->tab_strip_model()->GetActiveWebContents();\n auto* helper = TabUIHelper::FromWebContents(contents);\n ASSERT_TRUE(helper);\n\n auto favicon = helper->GetFavicon();\n ASSERT_FALSE(favicon.IsEmpty());\n}\n\n// On Mac, voiceover treats tab modal dialogs as native windows, so setting an\n// accessible title for tab-modal dialogs is not necessary.\n#if !BUILDFLAG(IS_MAC)\n\n// Open a tab-modal dialog and check that the accessible window title is the\n// title of the dialog.\nIN_PROC_BROWSER_TEST_F(BrowserViewTest, GetAccessibleTabModalDialogTitle) {\n std::u16string window_title =\n u\"about:blank - \" + l10n_util::GetStringUTF16(IDS_PRODUCT_NAME);\n EXPECT_TRUE(base::StartsWith(browser_view()->GetAccessibleWindowTitle(),\n window_title, base::CompareCase::SENSITIVE));\n\n content::WebContents* contents = browser_view()->GetActiveWebContents();\n auto delegate = std::make_unique<TestTabModalConfirmDialogDelegate>(contents);\n TestTabModalConfirmDialogDelegate* delegate_observer = delegate.get();\n TabModalConfirmDialog::Create(std::move(delegate), contents);\n EXPECT_EQ(browser_view()->GetAccessibleWindowTitle(),\n delegate_observer->GetTitle());\n\n delegate_observer->Close();\n\n EXPECT_TRUE(base::StartsWith(browser_view()->GetAccessibleWindowTitle(),\n window_title, base::CompareCase::SENSITIVE));\n}\n\n// Open a tab-modal dialog and check that the accessibility tree only contains\n// the dialog.\n// TODO(crbug.com/40192031): Re-enable this test\nIN_PROC_BROWSER_TEST_F(BrowserViewTest,\n DISABLED_GetAccessibleTabModalDialogTree) {\n content::testing::ScopedContentAXModeSetter ax_mode_setter(\n ui::kAXModeComplete);\n ui::AXPlatformNode* ax_node = ui::AXPlatformNode::FromNativeViewAccessible(\n browser_view()->GetWidget()->GetRootView()->GetNativeViewAccessible());\n// We expect this conversion to be safe on Windows, but can't guarantee that it\n// is safe on other platforms.\n#if BUILDFLAG(IS_WIN)\n ASSERT_TRUE(ax_node);\n#else\n if (!ax_node)\n return;\n#endif\n\n // There is no dialog, but the browser UI should be visible. So we expect the\n // browser's reload button and no \"OK\" button from a dialog.\n EXPECT_NE(ui::AXPlatformNodeTestHelper::FindChildByName(ax_node, \"Reload\"),\n nullptr);\n EXPECT_EQ(ui::AXPlatformNodeTestHelper::FindChildByName(ax_node, \"OK\"),\n nullptr);\n\n content::WebContents* contents = browser_view()->GetActiveWebContents();\n auto delegate = std::make_unique<TestTabModalConfirmDialogDelegate>(contents);\n TabModalConfirmDialog::Create(std::move(delegate), contents);\n\n // The tab modal dialog should be in the accessibility tree; everything else\n // should be hidden. So we expect an \"OK\" button and no reload button.\n EXPECT_EQ(ui::AXPlatformNodeTestHelper::FindChildByName(ax_node, \"Reload\"),\n nullptr);\n EXPECT_NE(ui::AXPlatformNodeTestHelper::FindChildByName(ax_node, \"OK\"),\n nullptr);\n}\n\n#endif // !BUILDFLAG(IS_MAC)\n" } }
diff --git a/tools/mb/mb.py b/tools/mb/mb.py index bab8eda..a111c8ee 100755 --- a/tools/mb/mb.py +++ b/tools/mb/mb.py
@@ -165,7 +165,7 @@ subp.add_argument('--android-version-name', help='Sets GN arg android_default_version_name') - # TODO(crbug.com/1060857): Remove this once swarming task templates + # TODO(crbug.com/40122201): Remove this once swarming task templates # support command prefixes. luci_auth_group = subp.add_mutually_exclusive_group() luci_auth_group.add_argument(
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 196bb276..661f345 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -11514,6 +11514,7 @@ <int value="4945" label="V8LanguageTranslator_Translate_Method"/> <int value="4946" label="V8Translation_CanTranslate_Method"/> <int value="4947" label="V8Translation_CreateTranslator_Method"/> + <int value="4948" label="IdentityDigitalCredentialsDeepLink"/> </enum> <enum name="FeaturePolicyFeature"> @@ -18654,6 +18655,7 @@ <int value="-1133285806" label="MacLoopbackAudioForScreenShare:disabled"/> <int value="-1132704128" label="AndroidPaymentAppsFilter:disabled"/> <int value="-1131726331" label="BackGestureRefactorAndroid:disabled"/> + <int value="-1130835436" label="SuspendStateMachine:disabled"/> <int value="-1128981647" label="EnableOAuthIpp:enabled"/> <int value="-1128912963" label="MediaControlsExpandGesture:disabled"/> <int value="-1128221789" @@ -20451,6 +20453,7 @@ <int value="-322937746" label="disable-desktop-capture-picker-new-ui"/> <int value="-322827131" label="tab-management-experiment-type-basil"/> <int value="-322684763" label="WebBluetoothRequestLargerMtu:disabled"/> + <int value="-321727218" label="SuspendStateMachine:enabled"/> <int value="-320820051" label="enable-zero-copy"/> <int value="-319235277" label="ShareMenu:disabled"/> <int value="-319002650" label="ArcUsbStorageUI:enabled"/>
diff --git a/tools/metrics/histograms/generate_flag_enums.py b/tools/metrics/histograms/generate_flag_enums.py index b747d70..1eb97871 100755 --- a/tools/metrics/histograms/generate_flag_enums.py +++ b/tools/metrics/histograms/generate_flag_enums.py
@@ -13,8 +13,8 @@ # Import the UKM codegen library for its hashing function, which is the same # hashing function as used for flag names. -# TODO(crbug.com/1371214) Move `codegen.HashName()` somewhere common so we don't -# depend on 'ukm'. +# TODO(crbug.com/40870309) Move `codegen.HashName()` somewhere common so we +# don't depend on 'ukm'. sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir, 'ukm')) import codegen
diff --git a/tools/metrics/histograms/metadata/android/histograms.xml b/tools/metrics/histograms/metadata/android/histograms.xml index c3ca41d..8d85cb5 100644 --- a/tools/metrics/histograms/metadata/android/histograms.xml +++ b/tools/metrics/histograms/metadata/android/histograms.xml
@@ -4166,6 +4166,30 @@ </summary> </histogram> +<histogram name="Android.TabNavigationInterceptResult.ForMdoc" + enum="NavigationInterceptResult" expires_after="2024-09-29"> + <owner>pkotwicz@chromium.org</owner> + <owner>rbyers@chromium.org</owner> + <summary> + The distribution of results when running ExternalNavigationHandler for + mdoc:// navigations which are intercepted. This shows how frequently mdoc:// + navigations trigger a dialog (that the user may potentially cancel to cancel + the external app launch.) + </summary> +</histogram> + +<histogram name="Android.TabNavigationInterceptResult.ForOpenId4Vp" + enum="NavigationInterceptResult" expires_after="2024-09-29"> + <owner>pkotwicz@chromium.org</owner> + <owner>rbyers@chromium.org</owner> + <summary> + The distribution of results when running ExternalNavigationHandler for + openid4vp:// navigations which are intercepted. This shows how frequently + openid4vp:// navigations trigger a dialog (that the user may potentially + cancel to cancel the external app launch.) + </summary> +</histogram> + <histogram name="Android.TabNavigationInterceptResult.For{ProtocolType}" enum="NavigationInterceptResult" expires_after="2024-09-29"> <owner>blundell@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/chromeos/enums.xml b/tools/metrics/histograms/metadata/chromeos/enums.xml index 369a907..b04c06a 100644 --- a/tools/metrics/histograms/metadata/chromeos/enums.xml +++ b/tools/metrics/histograms/metadata/chromeos/enums.xml
@@ -1751,6 +1751,12 @@ <int value="2" label="Search"/> </enum> +<enum name="SuspendStateMachineEvent"> + <int value="0" label="Triggered"/> + <int value="1" label="Cancelled"/> + <int value="2" label="Suspended"/> +</enum> + <enum name="UmaInitParamsResult"> <int value="0" label="Client ID and entropy sources were found"/> <int value="1" label="Only the client ID was found"/>
diff --git a/tools/metrics/histograms/metadata/chromeos/histograms.xml b/tools/metrics/histograms/metadata/chromeos/histograms.xml index 603838b9..19ae97c 100644 --- a/tools/metrics/histograms/metadata/chromeos/histograms.xml +++ b/tools/metrics/histograms/metadata/chromeos/histograms.xml
@@ -1902,6 +1902,17 @@ </summary> </histogram> +<histogram name="ChromeOS.Inputs.SuspendStateMachine" + enum="SuspendStateMachineEvent" expires_after="2025-03-22"> + <owner>dpad@google.com</owner> + <owner>cros-peripherals@google.com</owner> + <summary> + Records actions of the suspend state machine once it is triggered to start + tracking key releases. Result can either be cancelled or successfully + triggered suspend. + </summary> +</histogram> + <histogram name="ChromeOS.Inputs.TouchscreenUsage.Temporary.{TimePeriod}.{Mode}" units="ms" expires_after="2024-10-06">
diff --git a/tools/metrics/histograms/metadata/compose/enums.xml b/tools/metrics/histograms/metadata/compose/enums.xml index a5e2345..46b7e76 100644 --- a/tools/metrics/histograms/metadata/compose/enums.xml +++ b/tools/metrics/histograms/metadata/compose/enums.xml
@@ -128,7 +128,7 @@ <int value="3" label="MSBB Shown"/> <int value="4" label="MSBB Settings Opened"/> <int value="5" label="MSBB Enabled In Session"/> - <int value="6" label="Sesstion started with selection"/> + <int value="6" label="Session started with selection"/> <int value="7" label="Create Clicked"/> <int value="8" label="Update Clicked"/> <int value="9" label="Retry Clicked"/> @@ -145,6 +145,8 @@ <int value="20" label="Cancel Edit Clicked"/> <int value="21" label="Used a modifier">Added in M124</int> <int value="22" label="Redo Clicked"/> + <int value="23" label="Result Edited"/> + <int value="24" label="Edited Result Inserted"/> </enum> <enum name="ComposeShowStatus">
diff --git a/tools/metrics/histograms/metadata/history/histograms.xml b/tools/metrics/histograms/metadata/history/histograms.xml index 523dc57..ac3c4ce 100644 --- a/tools/metrics/histograms/metadata/history/histograms.xml +++ b/tools/metrics/histograms/metadata/history/histograms.xml
@@ -1809,6 +1809,46 @@ </summary> </histogram> +<histogram name="History.Embeddings.Search.Completed" enum="Boolean" + expires_after="2024-12-31"> + <owner>orinj@chromium.org</owner> + <owner>tommycli@chromium.org</owner> + <summary> + Whether the search completed without interruption. Logged each time a vector + database search is performed. + </summary> +</histogram> + +<histogram name="History.Embeddings.Search.Duration" units="ms" + expires_after="2024-12-31"> + <owner>orinj@chromium.org</owner> + <owner>tommycli@chromium.org</owner> + <summary> + The number of milliseconds spent searching. Logged each time a vector + database search is performed. + </summary> +</histogram> + +<histogram name="History.Embeddings.Search.EmbeddingCount" units="embeddings" + expires_after="2024-12-31"> + <owner>orinj@chromium.org</owner> + <owner>tommycli@chromium.org</owner> + <summary> + The number of embeddings searched. Logged each time a vector database search + is performed. + </summary> +</histogram> + +<histogram name="History.Embeddings.Search.UrlCount" units="urls" + expires_after="2024-12-31"> + <owner>orinj@chromium.org</owner> + <owner>tommycli@chromium.org</owner> + <summary> + The number of URLs searched. Logged each time a vector database search is + performed. + </summary> +</histogram> + <histogram name="History.Embeddings.VisibilityModelAvailableAtQuery" enum="Boolean" expires_after="2024-12-31"> <owner>sophiechang@chromium.org</owner>
diff --git a/tools/perf/core/upload_results_to_perf_dashboard.py b/tools/perf/core/upload_results_to_perf_dashboard.py index 794c08c..3deae9f4 100755 --- a/tools/perf/core/upload_results_to_perf_dashboard.py +++ b/tools/perf/core/upload_results_to_perf_dashboard.py
@@ -175,7 +175,8 @@ # The HistogramSet might have been batched if it would be too large to # upload together. It's safe to concatenate the batches in order to write # output_json_file. - # TODO(crbug.com/918208): Use a script in catapult to merge dashboard_jsons. + # TODO(crbug.com/40607890): Use a script in catapult to merge + # dashboard_jsons. dashboard_json = sum(dashboard_jsons, []) if args.output_json_file:
diff --git a/tools/perf/measurements/rasterize_and_record_micro_unittest.py b/tools/perf/measurements/rasterize_and_record_micro_unittest.py index 846f524a..c2a9433 100644 --- a/tools/perf/measurements/rasterize_and_record_micro_unittest.py +++ b/tools/perf/measurements/rasterize_and_record_micro_unittest.py
@@ -17,7 +17,7 @@ """ # Fails or flaky on some bots. See http://crbug.com/956798 - # TODO(crbug.com/1197307): Re-enable on mojave. + # TODO(crbug.com/40760080): Re-enable on mojave. @decorators.Disabled('win', 'chromeos', 'linux', 'win7', 'mojave', 'android-nougat') # Flaky: https://crbug.com/1342706 def testRasterizeAndRecordMicro(self):
diff --git a/tools/perf/page_sets/rendering/rendering_stories.py b/tools/perf/page_sets/rendering/rendering_stories.py index 90c301fa..0ba338e 100644 --- a/tools/perf/page_sets/rendering/rendering_stories.py +++ b/tools/perf/page_sets/rendering/rendering_stories.py
@@ -67,11 +67,10 @@ # 'backdrop-filter' CSS property to work. required_args.append('--enable-experimental-web-platform-features') - # TODO(crbug.com/968125): We must run without out-of-process rasterization - # until that branch is implemented for YUV decoding. - if (story_class.TAGS and - story_tags.IMAGE_DECODING in story_class.TAGS and - story_tags.GPU_RASTERIZATION in story_class.TAGS): + # TODO(crbug.com/40629637): We must run without out-of-process + # rasterization until that branch is implemented for YUV decoding. + if (story_class.TAGS and story_tags.IMAGE_DECODING in story_class.TAGS + and story_tags.GPU_RASTERIZATION in story_class.TAGS): required_args += ['--enable-gpu-rasterization'] # Run RGB decoding with GPU rasterization (to be most comparable to YUV) self.AddStory(story_class(
diff --git a/tools/variations/fieldtrial_util.py b/tools/variations/fieldtrial_util.py index 355d72cc..9490938 100644 --- a/tools/variations/fieldtrial_util.py +++ b/tools/variations/fieldtrial_util.py
@@ -68,11 +68,11 @@ --force-fieldtrials and --force-fieldtrial-params. Any such merged flags are moved to the end of the returned list. The original argument ordering is otherwise maintained. - TODO(crbug.com/1033090): Add functionality to handle duplicate flags using the - Foo<Bar syntax. Currently, the implementation considers e.g. 'Foo', 'Foo<Bar' - and 'Foo<Baz' to be different. Also add functionality to handle cases where - the same trial is specified with different groups via --force-fieldtrials, - which isn't currently unhandled. + TODO(crbug.com/40663174): Add functionality to handle duplicate flags using + the Foo<Bar syntax. Currently, the implementation considers e.g. 'Foo', + 'Foo<Bar' and 'Foo<Baz' to be different. Also add functionality to handle + cases where the same trial is specified with different groups via + --force-fieldtrials, which isn't currently unhandled. Args: args: An iterable of strings representing command line arguments.
diff --git a/ui/accessibility/BUILD.gn b/ui/accessibility/BUILD.gn index 728c359..f7c700b 100644 --- a/ui/accessibility/BUILD.gn +++ b/ui/accessibility/BUILD.gn
@@ -361,7 +361,7 @@ if (is_fuchsia) { additional_manifest_fragments = [ - # TODO(https://crbug.com/1185811): Investigate removing the requirement + # TODO(crbug.com/40055105): Investigate removing the requirement # for VmexResource. "//build/config/fuchsia/test/mark_vmo_executable.shard.test-cml", "//build/config/fuchsia/test/network.shard.test-cml",
diff --git a/ui/compositor/BUILD.gn b/ui/compositor/BUILD.gn index c8dfc25..cba5389 100644 --- a/ui/compositor/BUILD.gn +++ b/ui/compositor/BUILD.gn
@@ -292,7 +292,7 @@ test_runner_shard = "//build/config/fuchsia/test/elf_test_ambient_exec_runner.shard.test-cml" additional_manifest_fragments = [ - # TODO(https://crbug.com/1185811): Investigate removing the requirement + # TODO(crbug.com/40055105): Investigate removing the requirement # for VmexResource. "//build/config/fuchsia/test/mark_vmo_executable.shard.test-cml", "//build/config/fuchsia/test/present_view.shard.test-cml",
diff --git a/ui/gfx/color_conversion_sk_filter_cache.cc b/ui/gfx/color_conversion_sk_filter_cache.cc index c579223..ab837860 100644 --- a/ui/gfx/color_conversion_sk_filter_cache.cc +++ b/ui/gfx/color_conversion_sk_filter_cache.cc
@@ -37,7 +37,7 @@ // backend, so perhaps this code should be moved to cc/ #if defined(SK_GANESH) if (gr_context) { - // TODO(https://crbug.com/1286088): Consider adding mipmap support here. + // TODO(crbug.com/40210699): Consider adding mipmap support here. sk_sp<SkSurface> surface = SkSurfaces::RenderTarget(gr_context, skgpu::Budgeted::kNo, image_info, /*sampleCount=*/0, kTopLeft_GrSurfaceOrigin, @@ -60,7 +60,7 @@ #endif #if defined(SK_GRAPHITE) if (graphite_recorder) { - // TODO(https://crbug.com/1286088): Consider adding mipmap support here. + // TODO(crbug.com/40210699): Consider adding mipmap support here. sk_sp<SkSurface> surface = SkSurfaces::RenderTarget( graphite_recorder, image_info, skgpu::Mipmapped::kNo, /*surfaceProps=*/nullptr);
diff --git a/ui/snapshot/BUILD.gn b/ui/snapshot/BUILD.gn index 1e35fc3..d1dd68b 100644 --- a/ui/snapshot/BUILD.gn +++ b/ui/snapshot/BUILD.gn
@@ -124,7 +124,7 @@ test_runner_shard = "//build/config/fuchsia/test/elf_test_ambient_exec_runner.shard.test-cml" additional_manifest_fragments = [ - # TODO(https://crbug.com/1185811): Investigate removing the requirement + # TODO(crbug.com/40055105): Investigate removing the requirement # for VmexResource. "//build/config/fuchsia/test/mark_vmo_executable.shard.test-cml", "//build/config/fuchsia/test/present_view.shard.test-cml",
diff --git a/ui/views/animation/bubble_slide_animator_unittest.cc b/ui/views/animation/bubble_slide_animator_unittest.cc index 450cf95..87a3f53 100644 --- a/ui/views/animation/bubble_slide_animator_unittest.cc +++ b/ui/views/animation/bubble_slide_animator_unittest.cc
@@ -35,17 +35,14 @@ class TestBubbleView : public BubbleDialogDelegateView { public: explicit TestBubbleView(View* anchor_view) - : BubbleDialogDelegateView(anchor_view, BubbleBorder::TOP_LEFT) { + : BubbleDialogDelegateView(anchor_view, + BubbleBorder::TOP_LEFT, + BubbleBorder::DIALOG_SHADOW, + true) { SetButtons(ui::DIALOG_BUTTON_NONE); SetLayoutManager(std::make_unique<FillLayout>()); AddChildView(std::make_unique<View>())->SetPreferredSize(kTestViewSize); } - - protected: - void AddedToWidget() override { - BubbleDialogDelegateView::AddedToWidget(); - SizeToContents(); - } }; class TestBubbleSlideAnimator : public BubbleSlideAnimator {
diff --git a/ui/views/bubble/bubble_dialog_model_host.cc b/ui/views/bubble/bubble_dialog_model_host.cc index 81c9a8a..c6e575c 100644 --- a/ui/views/bubble/bubble_dialog_model_host.cc +++ b/ui/views/bubble/bubble_dialog_model_host.cc
@@ -748,7 +748,10 @@ View* anchor_view, BubbleBorder::Arrow arrow, ui::ModalType modal_type) - : BubbleDialogDelegate(anchor_view, arrow), + : BubbleDialogDelegate(anchor_view, + arrow, + views::BubbleBorder::DIALOG_SHADOW, + true), model_(std::move(model)), // Make sure the modal type is set before calling InitContentsView which // uses IsModalDialog(). @@ -969,7 +972,6 @@ // The banner is supposed to be purely decorative. banner_view->GetViewAccessibility().SetIsIgnored(true); GetBubbleFrameView()->SetHeaderView(std::move(banner_view)); - SizeToContents(); } } @@ -1034,18 +1036,10 @@ void BubbleDialogModelHost::OnContentsViewChanged() { UpdateSpacingAndMargins(); - - if (GetBubbleFrameView()) { - SizeToContents(); - } } void BubbleDialogModelHost::OnDialogButtonChanged() { UpdateDialogButtons(); - - // If the contents of the dialog change (text, field visitiblity, etc.), the - // dialog may need to be resized. - SizeToContents(); } void BubbleDialogModelHost::UpdateWindowIcon() {
diff --git a/ui/views/bubble/bubble_frame_view_unittest.cc b/ui/views/bubble/bubble_frame_view_unittest.cc index 921158b5..957b1f6b 100644 --- a/ui/views/bubble/bubble_frame_view_unittest.cc +++ b/ui/views/bubble/bubble_frame_view_unittest.cc
@@ -1036,7 +1036,7 @@ public: TestWidthSnapDelegate(TestAnchor* anchor, bool should_snap) { DialogDelegate::SetButtons(should_snap ? ui::DIALOG_BUTTON_OK - : ui::DIALOG_BUTTON_NONE); + : ui::DIALOG_BUTTON_NONE); SetAnchorView(anchor->widget().GetContentsView()); set_margins(gfx::Insets()); BubbleDialogDelegateView::CreateBubble(this);
diff --git a/ui/views/bubble/info_bubble.cc b/ui/views/bubble/info_bubble.cc index bb140ae..d61fb70 100644 --- a/ui/views/bubble/info_bubble.cc +++ b/ui/views/bubble/info_bubble.cc
@@ -53,7 +53,10 @@ InfoBubble::InfoBubble(View* anchor, BubbleBorder::Arrow arrow, const std::u16string& message) - : BubbleDialogDelegateView(anchor, arrow) { + : BubbleDialogDelegateView(anchor, + arrow, + views::BubbleBorder::DIALOG_SHADOW, + true) { DialogDelegate::SetButtons(ui::DIALOG_BUTTON_NONE); set_margins(LayoutProvider::Get()->GetInsetsMetric( @@ -121,7 +124,6 @@ if (anchor_widget()->IsVisible() && !GetAnchorView()->GetVisibleBounds().IsEmpty()) { - SizeToContents(); widget->SetVisibilityChangedAnimationsEnabled(true); widget->ShowInactive(); } else {
diff --git a/ui/views/controls/webview/web_dialog_view.cc b/ui/views/controls/webview/web_dialog_view.cc index 933439e..1a2c66e 100644 --- a/ui/views/controls/webview/web_dialog_view.cc +++ b/ui/views/controls/webview/web_dialog_view.cc
@@ -111,7 +111,8 @@ SetWebViewCornersRadii(corner_radii); } -gfx::Size WebDialogView::CalculatePreferredSize() const { +gfx::Size WebDialogView::CalculatePreferredSize( + const SizeBounds& available_size) const { gfx::Size out; if (delegate_) delegate_->GetDialogSize(&out);
diff --git a/ui/views/controls/webview/web_dialog_view.h b/ui/views/controls/webview/web_dialog_view.h index 36f11d3e..d7915d5 100644 --- a/ui/views/controls/webview/web_dialog_view.h +++ b/ui/views/controls/webview/web_dialog_view.h
@@ -94,7 +94,8 @@ // ClientView: void AddedToWidget() override; - gfx::Size CalculatePreferredSize() const override; + gfx::Size CalculatePreferredSize( + const SizeBounds& available_size) const override; gfx::Size GetMinimumSize() const override; bool AcceleratorPressed(const ui::Accelerator& accelerator) override; void ViewHierarchyChanged(
diff --git a/ui/views/window/client_view.cc b/ui/views/window/client_view.cc index a145c6e..bb08b95e 100644 --- a/ui/views/window/client_view.cc +++ b/ui/views/window/client_view.cc
@@ -40,14 +40,15 @@ /////////////////////////////////////////////////////////////////////////////// // ClientView, View overrides: -gfx::Size ClientView::CalculatePreferredSize() const { +gfx::Size ClientView::CalculatePreferredSize( + const SizeBounds& available_size) const { // |contents_view_| is allowed to be NULL up until the point where this view // is attached to a Container. if (!contents_view_) { return gfx::Size(); } - return contents_view_->GetPreferredSize({}); + return contents_view_->GetPreferredSize(available_size); } int ClientView::GetHeightForWidth(int width) const {
diff --git a/ui/views/window/client_view.h b/ui/views/window/client_view.h index ffdc44d1..e770bc27 100644 --- a/ui/views/window/client_view.h +++ b/ui/views/window/client_view.h
@@ -61,7 +61,8 @@ virtual void UpdateWindowRoundedCorners(int corner_radius); // Overridden from View: - gfx::Size CalculatePreferredSize() const override; + gfx::Size CalculatePreferredSize( + const SizeBounds& available_size) const override; int GetHeightForWidth(int width) const override; gfx::Size GetMinimumSize() const override; gfx::Size GetMaximumSize() const override;
diff --git a/ui/views/window/dialog_client_view.cc b/ui/views/window/dialog_client_view.cc index cbf6157..2aaa3b8 100644 --- a/ui/views/window/dialog_client_view.cc +++ b/ui/views/window/dialog_client_view.cc
@@ -127,7 +127,8 @@ } } -gfx::Size DialogClientView::CalculatePreferredSize() const { +gfx::Size DialogClientView::CalculatePreferredSize( + const SizeBounds& available_size) const { const gfx::Insets& content_margins = GetDialogDelegate()->margins(); gfx::Size contents_size; @@ -137,7 +138,10 @@ contents_size = gfx::Size(content_width, ClientView::GetHeightForWidth(content_width)); } else { - contents_size = ClientView::CalculatePreferredSize(); + SizeBounds content_available_size(available_size); + content_available_size.Enlarge(-content_margins.width(), + -content_margins.height()); + contents_size = ClientView::CalculatePreferredSize(content_available_size); } contents_size.Enlarge(content_margins.width(), content_margins.height()); return GetBoundingSizeForVerticalStack( @@ -145,12 +149,9 @@ } gfx::Size DialogClientView::GetMinimumSize() const { - // TODO(pbos): Try to find a way for ClientView::GetMinimumSize() to be - // fixed-width aware. For now this uses min-size = preferred size for - // fixed-width dialogs (even though min height might not be preferred height). - // Fixing this might require View::GetMinHeightForWidth(). if (GetDialogDelegate()->fixed_width()) { - return CalculatePreferredSize(); + return CalculatePreferredSize( + SizeBounds(GetDialogDelegate()->fixed_width(), {})); } return GetBoundingSizeForVerticalStack(
diff --git a/ui/views/window/dialog_client_view.h b/ui/views/window/dialog_client_view.h index b243d10..2a681272 100644 --- a/ui/views/window/dialog_client_view.h +++ b/ui/views/window/dialog_client_view.h
@@ -64,7 +64,8 @@ void SetButtonRowInsets(const gfx::Insets& insets); // View implementation: - gfx::Size CalculatePreferredSize() const override; + gfx::Size CalculatePreferredSize( + const SizeBounds& available_size) const override; gfx::Size GetMinimumSize() const override; gfx::Size GetMaximumSize() const override; void VisibilityChanged(View* starting_from, bool is_visible) override;
diff --git a/ui/webui/resources/cr_elements/BUILD.gn b/ui/webui/resources/cr_elements/BUILD.gn index 07c58c7..dfc52ac8 100644 --- a/ui/webui/resources/cr_elements/BUILD.gn +++ b/ui/webui/resources/cr_elements/BUILD.gn
@@ -149,6 +149,7 @@ "cr_shared_vars.css", "md_select.css", "mwb_element_shared_style.css", + "mwb_element_shared_style_lit.css", "mwb_shared_style.css", "mwb_shared_vars.css", "search_highlight_style.css",
diff --git a/ui/webui/resources/cr_elements/cr_menu_selector/cr_selectable_mixin.ts b/ui/webui/resources/cr_elements/cr_menu_selector/cr_selectable_mixin.ts index 1926cc4..7321d410 100644 --- a/ui/webui/resources/cr_elements/cr_menu_selector/cr_selectable_mixin.ts +++ b/ui/webui/resources/cr_elements/cr_menu_selector/cr_selectable_mixin.ts
@@ -88,8 +88,15 @@ override firstUpdated(changedProperties: PropertyValues<this>) { super.firstUpdated(changedProperties); this.addEventListener('click', e => this.onClick_(e)); + this.observeItems(); + } + + // Override this method in client code to modify the observation logic, + // or to turn it off completely. By default it listens for any changes on + // the first <slot> node in this shadowRoot. + observeItems() { this.getSlot_().addEventListener( - 'slotchange', () => this.itemsChanged_()); + 'slotchange', () => this.itemsChanged()); } override connectedCallback() { @@ -155,10 +162,12 @@ return slot; } - private updateItems_() { + // Override this method in client code to modify this logic, for example to + // grab children that don't reside in a <slot>. + queryItems(): Element[] { const elements = this.getSlot_().assignedElements(); const excluded = ['template', 'dom-bind', 'dom-if', 'dom-repeat']; - this.items_ = elements.filter(el => { + return elements.filter(el => { if (excluded.includes(el.tagName)) { return false; } @@ -166,6 +175,14 @@ }); } + private updateItems_() { + this.items_ = this.queryItems(); + } + + get selectedItem(): Element|null { + return this.selectedItem_; + } + private updateSelectedItem_() { if (!this.items_) { return; @@ -232,7 +249,7 @@ item.getAttribute(this.attrForSelected); } - private itemsChanged_() { + itemsChanged() { this.updateItems_(); this.updateSelectedItem_(); @@ -263,9 +280,15 @@ attrForSelected: string|null; selected?: string|number; selectable?: string; + readonly selectedItem: Element|null; getItemsForTest(): Element[]; - select(value: string|number): void; + itemsChanged(): void; selectNext(): void; selectPrevious(): void; + select(value: string|number): void; + + // Methods to override to modify default behavior. + observeItems(): void; + queryItems(): Element[]; }
diff --git a/ui/webui/resources/cr_elements/mwb_element_shared_style_lit.css b/ui/webui/resources/cr_elements/mwb_element_shared_style_lit.css new file mode 100644 index 0000000..45554f1 --- /dev/null +++ b/ui/webui/resources/cr_elements/mwb_element_shared_style_lit.css
@@ -0,0 +1,12 @@ +/* Copyright 2024 The Chromium Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. */ + +/* #css_wrapper_metadata_start + * #type=style-lit + * #scheme=relative + * #import=./mwb_shared_vars.css.js + * #css_wrapper_metadata_end */ + +/* Purposefully empty since this style is generated at build time from the + * equivalent Polymer version. */
diff --git a/url/gurl.cc b/url/gurl.cc index 3e639dfb..4fcbe92 100644 --- a/url/gurl.cc +++ b/url/gurl.cc
@@ -159,7 +159,7 @@ if (is_valid_ || spec_.empty()) return spec_; - // TODO(crbug.com/851128): Make sure this no longer hits before making + // TODO(crbug.com/40580068): Make sure this no longer hits before making // NOTREACHED_NORETURN(); DUMP_WILL_BE_NOTREACHED_NORETURN() << "Trying to get the spec of an invalid URL!";