diff --git a/DEPS b/DEPS index 4a80940..4880335 100644 --- a/DEPS +++ b/DEPS
@@ -310,15 +310,15 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'src_internal_revision': 'be82b5757080fda4c40448483d9c5197a9540f5a', + 'src_internal_revision': '1e6025a7fe2856d4c9400937c1210736f71428d9', # 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': '20a431090e24b620c32b8389d3a183f34cfc8c8c', + 'skia_revision': '0fef7d25a55f52cfb7153b4990e288a8e36f2a2a', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': 'cbfc282edb990b16d1ec7f7f31b1603148be9d17', + 'v8_revision': '3eb7d73cbd4266dcc250a7b4d0099d0946ec1138', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. @@ -330,7 +330,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. - 'pdfium_revision': '5cdaf28d07a78d6b3d17aebf6efcc05cd8f2fec7', + 'pdfium_revision': '8cf636e15ce21f4c8a574882c7cfd00629b59aba', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling BoringSSL # and whatever else without interference from each other. @@ -389,7 +389,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': 'e8462fa1881743917c3a5cfab581211defad39da', + 'chromium_variations_revision': '923dfb9e61617b401ffc72b882a8eb48210d1bef', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling CrossBench # and whatever else without interference from each other. @@ -405,7 +405,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': '4e41c1c367239f5d2aec4fe63b2600a0ecd38604', + 'devtools_frontend_revision': 'd49819fe244438697b53be6ca829f35b0959f009', # 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. @@ -445,11 +445,11 @@ # 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': '5d3173ac9a2249dff582ed4f9ab6962e00737ea8', + 'dawn_revision': 'addd7493ccd6a001f0e5458007982f10df77cd0a', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'quiche_revision': '5cdf937c378cdf08ff55ea9e86cfbf05bec54df2', + 'quiche_revision': '0c75f987990bfb2fe27eeaa8f3cc78f98f3ef42d', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ios_webkit # and whatever else without interference from each other. @@ -489,7 +489,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. - 'cros_components_revision': '66ea0cc1c267d9a8a969e80b0d45fb6bf9cfb33b', + 'cros_components_revision': '10d2e376519e88221117e38cd901054b0153501c', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -845,7 +845,7 @@ 'src/clank': { 'url': Var('chrome_git') + '/clank/internal/apps.git' + '@' + - '7d2ace2d1f10eb333f695f18832d8083c2ff885f', + 'c3b5fedc549373d6593a9fccb650bc1fd6567ef8', 'condition': 'checkout_android and checkout_src_internal', }, @@ -1301,7 +1301,7 @@ Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), 'src/third_party/devtools-frontend-internal': { - 'url': Var('chrome_git') + '/devtools/devtools-internal.git' + '@' + '63bda74f4350a6a59e38983a14d35a6eece12805', + 'url': Var('chrome_git') + '/devtools/devtools-internal.git' + '@' + '46b0231738a9dbba7b3827649d231fe6a6290fb9', 'condition': 'checkout_src_internal', }, @@ -1790,7 +1790,7 @@ Var('pdfium_git') + '/pdfium.git' + '@' + Var('pdfium_revision'), 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + 'f95244890e05c2d6fae40a293035ce479db6fc3c', + Var('android_git') + '/platform/external/perfetto.git' + '@' + 'd3bf532f84cf34f899c5785043ceb4af8f76d4e3', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3', @@ -1935,7 +1935,7 @@ 'dep_type': 'cipd', }, - 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@285e370766723ea96f91115884ec01492b505907', + 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@1e40b8e966f5dbac2e886e5ba1eb30f660cd5cf9', 'src/third_party/vulkan_memory_allocator': Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git' + '@' + 'e87036508bb156f9986ea959323de1869e328f58', @@ -2098,7 +2098,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/help_app/app', - 'version': 'gEiAsr96TT9QM2IE0-34ZGeU6Nbu3cFAITDuWlcJErUC', + 'version': 'mWIrgHjjRR43j32ZeRpMJ65Ee-ZIVreCbVQBh16XrAcC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal', @@ -4251,7 +4251,7 @@ 'src/components/vector_icons/google_chrome': { 'url': Var('chrome_git') + '/chrome/vector_icons/google_chrome.git' + '@' + - 'dbf059ca9ed5a4da6ae628042a2797e822a53d79', + 'bd78daef00c8596e4d0ef5b0f88c12c08f5348df', 'condition': 'checkout_src_internal', }, @@ -4269,7 +4269,7 @@ 'src/ios_internal': { 'url': Var('chrome_git') + '/chrome/ios_internal.git' + '@' + - '09f751a1a2dfd719ca4c2a41af3cab4e45c08969', + '53a8c425fd177be6bf436f31930c2b99408e51eb', 'condition': 'checkout_ios and checkout_src_internal', },
diff --git a/android_webview/browser/aw_autofill_client.cc b/android_webview/browser/aw_autofill_client.cc index 54b11a9..449fe65d 100644 --- a/android_webview/browser/aw_autofill_client.cc +++ b/android_webview/browser/aw_autofill_client.cc
@@ -212,7 +212,9 @@ NOTREACHED(); } -void AwAutofillClient::ShowDeleteAddressProfileDialog() { +void AwAutofillClient::ShowDeleteAddressProfileDialog( + const autofill::AutofillProfile& profile, + AddressProfileDeleteDialogCallback delete_dialog_callback) { NOTREACHED(); }
diff --git a/android_webview/browser/aw_autofill_client.h b/android_webview/browser/aw_autofill_client.h index 4bffc67f..0419248c 100644 --- a/android_webview/browser/aw_autofill_client.h +++ b/android_webview/browser/aw_autofill_client.h
@@ -134,7 +134,9 @@ void ShowEditAddressProfileDialog( const autofill::AutofillProfile& profile, AddressProfileSavePromptCallback on_user_decision_callback) override; - void ShowDeleteAddressProfileDialog() override; + void ShowDeleteAddressProfileDialog( + const autofill::AutofillProfile& profile, + AddressProfileDeleteDialogCallback delete_dialog_callback) override; bool HasCreditCardScanFeature() override; void ScanCreditCard(CreditCardScanCallback callback) override; bool IsTouchToFillCreditCardSupported() override;
diff --git a/base/allocator/partition_allocator/partition_alloc.gni b/base/allocator/partition_allocator/partition_alloc.gni index cf8dbd2..9126dda 100644 --- a/base/allocator/partition_allocator/partition_alloc.gni +++ b/base/allocator/partition_allocator/partition_alloc.gni
@@ -319,11 +319,10 @@ # pkeys support is explicitly disabled in all Cronet builds, as some test # dependencies that use partition_allocator are compiled in AOSP against a # version of glibc that does not include pkeys syscall numbers. - enable_pkeys = - (is_linux || is_chromeos) && target_cpu == "x64" && !is_cronet_build + enable_pkeys = is_linux && target_cpu == "x64" && !is_cronet_build } -assert(!enable_pkeys || ((is_linux || is_chromeos) && target_cpu == "x64"), - "Pkeys are only supported on x64 linux and ChromeOS") +assert(!enable_pkeys || (is_linux && target_cpu == "x64"), + "Pkeys are only supported on x64 linux") # Some implementations of raw_ptr<>, like BackupRefPtr, require zeroing when # constructing, destructing or moving out of a pointer. Some don't, like
diff --git a/base/allocator/partition_allocator/thread_isolation/pkey.cc b/base/allocator/partition_allocator/thread_isolation/pkey.cc index 041cb83..9f2f792 100644 --- a/base/allocator/partition_allocator/thread_isolation/pkey.cc +++ b/base/allocator/partition_allocator/thread_isolation/pkey.cc
@@ -15,8 +15,8 @@ #include "base/allocator/partition_allocator/partition_alloc_check.h" #include "base/allocator/partition_allocator/thread_isolation/thread_isolation.h" -#if !BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS) -#error "This pkey code is currently only supported on Linux and ChromeOS" +#if !BUILDFLAG(IS_LINUX) +#error "This pkey code is currently only supported on Linux" #endif namespace partition_alloc::internal {
diff --git a/build/config/siso/PRESUBMIT.py b/build/config/siso/PRESUBMIT.py index ae6ed39c..c0bfc5a 100644 --- a/build/config/siso/PRESUBMIT.py +++ b/build/config/siso/PRESUBMIT.py
@@ -16,12 +16,13 @@ "Missing 'Cq-Include-Trybots:' field required for Siso config changes" "\nPlease add the following fields to run Siso tryjobs.\n\n" "Cq-Include-Trybots: luci.chromium.try:android-arm64-siso-rel\n" - "Cq-Include-Trybots: luci.chromium.try:ios-simulator-siso\n" - "Cq-Include-Trybots: luci.chromium.try:mac-siso-rel\n" + "Cq-Include-Trybots: luci.chromium.try:chromeos-amd64-generic-siso-rel\n" "Cq-Include-Trybots: luci.chromium.try:linux-chromeos-siso-rel\n" "Cq-Include-Trybots: luci.chromium.try:linux-lacros-siso-rel\n" "Cq-Include-Trybots: luci.chromium.try:linux-siso-rel\n" "Cq-Include-Trybots: luci.chromium.try:linux-wayland-siso-rel\n" "Cq-Include-Trybots: luci.chromium.try:linux_chromium_asan_siso_rel_ng\n" - "Cq-Include-Trybots: luci.chromium.try:win-siso-rel\n") + "Cq-Include-Trybots: luci.chromium.try:mac-siso-rel\n" + "Cq-Include-Trybots: luci.chromium.try:win-siso-rel\n" + ) return [output_api.PresubmitPromptWarning(message)]
diff --git a/build/config/siso/nacl_linux.star b/build/config/siso/nacl_linux.star index 5a61aa2..6bf71e5 100644 --- a/build/config/siso/nacl_linux.star +++ b/build/config/siso/nacl_linux.star
@@ -51,7 +51,7 @@ def __step_config(ctx, step_config): step_config["rules"].extend([ { - "name": "nacl_linux/pnacl-clang++", + "name": "nacl/pnacl-clang++", "action": "newlib_pnacl.*_cxx", "command_prefix": "../../native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang++", "inputs": [ @@ -62,7 +62,7 @@ "timeout": "2m", }, { - "name": "nacl_linux/pnacl-clang", + "name": "nacl/pnacl-clang", "action": "newlib_pnacl.*_cc", "command_prefix": "../../native_client/toolchain/linux_x86/pnacl_newlib/bin/pnacl-clang", "inputs": [ @@ -73,7 +73,7 @@ "timeout": "2m", }, { - "name": "nacl_linux/glibc/x86_64-nacl-gcc", + "name": "nacl/glibc/x86_64-nacl-gcc", "action": "glibc_x64_cc", "inputs": [ "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-gcc", @@ -85,7 +85,7 @@ "input_root_absolute_path": True, }, { - "name": "nacl_linux/glibc/x86_64-nacl-g++", + "name": "nacl/glibc/x86_64-nacl-g++", "action": "glibc_x64_cxx", "inputs": [ "native_client/toolchain/linux_x86/nacl_x86_glibc/bin/x86_64-nacl-g++", @@ -97,7 +97,7 @@ "input_root_absolute_path": True, }, { - "name": "nacl_linux/pnacl_newlib/x86_64-nacl-clang++", + "name": "nacl/pnacl_newlib/x86_64-nacl-clang++", "action": "clang_newlib_x64_cxx", "inputs": [ "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang++", @@ -108,7 +108,7 @@ "timeout": "2m", }, { - "name": "nacl_linux/pnacl_newlib/x86_64-nacl-clang", + "name": "nacl/pnacl_newlib/x86_64-nacl-clang", "action": "clang_newlib_x64_cc", "inputs": [ "native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-clang", @@ -119,7 +119,7 @@ "timeout": "2m", }, { - "name": "nacl_linux/saigo_newlib/x86_64-nacl-clang++", + "name": "nacl/saigo_newlib/x86_64-nacl-clang++", "action": "irt_x64_cxx", "command_prefix": "../../native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang++", "inputs": [ @@ -130,7 +130,7 @@ "timeout": "2m", }, { - "name": "nacl_linux/saigo_newlib/x86_64-nacl-clang", + "name": "nacl/saigo_newlib/x86_64-nacl-clang", "action": "irt_x64_cc", "command_prefix": "../../native_client/toolchain/linux_x86/saigo_newlib/bin/x86_64-nacl-clang", "inputs": [
diff --git a/build/config/siso/proto_linux.star b/build/config/siso/proto_linux.star index 67bc809e..63bc9f66 100644 --- a/build/config/siso/proto_linux.star +++ b/build/config/siso/proto_linux.star
@@ -33,7 +33,7 @@ }) step_config["rules"].extend([ { - "name": "proto_linux/protoc_wrapper", + "name": "proto/protoc_wrapper", "command_prefix": "python3 ../../tools/protoc_wrapper/protoc_wrapper.py", "indirect_inputs": { "includes": ["*.proto"],
diff --git a/build/config/siso/reproxy.star b/build/config/siso/reproxy.star index af78bc9b..f4a1c8f2 100644 --- a/build/config/siso/reproxy.star +++ b/build/config/siso/reproxy.star
@@ -100,7 +100,7 @@ }) ctx.actions.fix( args = args, - reproxy_config = json.encode(reproxy_config) + reproxy_config = json.encode(reproxy_config), ) def __strip_rewrapper(ctx, cmd): @@ -213,6 +213,15 @@ if rule["name"].startswith("clang/") or rule["name"].startswith("clang-cl/"): if not rule.get("action"): fail("clang rule %s found without action" % rule["name"]) + + # TODO(b/294160948): reclient doesn't work well with cros wrapper symlink tricks. + cros_rule = { + "name": rule["name"] + "/cros", + "action": rule["action"], + "command_prefix": "../../build/cros_cache/", + "use_remote_exec_wrapper": True, + } + new_rules.append(cros_rule) new_rule = { "name": rule["name"], "action": rule["action"], @@ -244,6 +253,7 @@ "platform": p, "labels": { "type": "tool", + "siso_rule": rule["name"], }, "canonicalize_working_dir": rule.get("canonicalize_dir", False), # TODO: b/297807325 - Siso wants to handle local execution. However,
diff --git a/chrome/VERSION b/chrome/VERSION index 3dfa97f..957efab 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=119 MINOR=0 -BUILD=6043 +BUILD=6044 PATCH=0
diff --git a/chrome/android/expectations/lint-suppressions.xml b/chrome/android/expectations/lint-suppressions.xml index c516a672..75e5870b 100644 --- a/chrome/android/expectations/lint-suppressions.xml +++ b/chrome/android/expectations/lint-suppressions.xml
@@ -199,7 +199,6 @@ <ignore regexp="The resource `R.string.download_manager_offline_home` appears to be unused"/> <ignore regexp="The resource `R.string.ntp_learn_more_about_suggested_content` appears to be unused"/> <ignore regexp="The resource `R.string.tab_switcher_button_label` appears to be unused"/> - <ignore regexp="The resource `R.string.storage_clear_dialog_text` appears to be unused"/> <ignore regexp="The resource `R.string.website_settings_category_notifications_block` appears to be unused"/> <ignore regexp="The resource `R.string.autofill_cc_google_issued` appears to be unused"/> <ignore regexp="The resource `R.string.notification_manage_button` appears to be unused"/>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ManageSpaceActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ManageSpaceActivity.java index c6d445a..b1a41e7 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ManageSpaceActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ManageSpaceActivity.java
@@ -217,7 +217,7 @@ } }); builder.setNegativeButton(R.string.cancel, null); - builder.setTitle(R.string.storage_clear_site_storage_title); + builder.setTitle(R.string.storage_delete_site_storage_title); builder.setMessage(R.string.storage_management_clear_unimportant_dialog_text); mUnimportantDialog = builder.create(); }
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index c436d35..76136be 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -6790,6 +6790,12 @@ <message name="IDS_ADD_USERNAME_TITLE" desc="The title of the add username bubble when username was not detected."> Add username? </message> + <message name="IDS_ADD_USERNAME" desc="Confirmation button in the add username bubble."> + Add Username + </message> + <message name="IDS_ADD_USERNAME_BODY" desc="Body text in the add username bubble."> + To help Google Password Manager save your sing-in info, add your username for this site + </message> <message name="IDS_UPDATE_PASSWORD" desc="The title of the save password bubble when a password can be updated."> Update password? </message>
diff --git a/chrome/app/generated_resources_grd/IDS_ADD_USERNAME.png.sha1 b/chrome/app/generated_resources_grd/IDS_ADD_USERNAME.png.sha1 new file mode 100644 index 0000000..d2cf17aa --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_ADD_USERNAME.png.sha1
@@ -0,0 +1 @@ +3bef4517821db1b2ff6ae338fa63228168a9d570 \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_ADD_USERNAME_BODY.png.sha1 b/chrome/app/generated_resources_grd/IDS_ADD_USERNAME_BODY.png.sha1 new file mode 100644 index 0000000..dbf0757 --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_ADD_USERNAME_BODY.png.sha1
@@ -0,0 +1 @@ +7b1adc8a487f884bd5a82e586f370429e0f81137 \ No newline at end of file
diff --git a/chrome/browser/ash/crosapi/policy_service_ash.cc b/chrome/browser/ash/crosapi/policy_service_ash.cc index 6b83c82..e52f926 100644 --- a/chrome/browser/ash/crosapi/policy_service_ash.cc +++ b/chrome/browser/ash/crosapi/policy_service_ash.cc
@@ -5,7 +5,8 @@ #include "chrome/browser/ash/crosapi/policy_service_ash.h" #include "chrome/browser/policy/profile_policy_connector.h" #include "chrome/browser/profiles/profile_manager.h" -#include "components/policy/core/common/policy_service_impl.h" +#include "components/policy/core/common/policy_service.h" +#include "components/policy/core/common/policy_types.h" namespace crosapi { @@ -21,7 +22,8 @@ void PolicyServiceAsh::ReloadPolicy() { auto* profile = ProfileManager::GetPrimaryUserProfile(); auto* policy_service = profile->GetProfilePolicyConnector()->policy_service(); - policy_service->RefreshPolicies(base::DoNothing()); + policy_service->RefreshPolicies(base::DoNothing(), + policy::PolicyFetchReason::kLacros); } } // namespace crosapi
diff --git a/chrome/browser/ash/extensions/autotest_private/autotest_private_api.cc b/chrome/browser/ash/extensions/autotest_private/autotest_private_api.cc index bf23167..e49f23a 100644 --- a/chrome/browser/ash/extensions/autotest_private/autotest_private_api.cc +++ b/chrome/browser/ash/extensions/autotest_private/autotest_private_api.cc
@@ -183,6 +183,7 @@ #include "components/policy/core/browser/policy_conversions.h" #include "components/policy/core/common/cloud/cloud_policy_manager.h" #include "components/policy/core/common/policy_service.h" +#include "components/policy/core/common/policy_types.h" #include "components/policy/core/common/remote_commands/remote_commands_service.h" #include "components/prefs/pref_service.h" #include "components/services/app_service/public/cpp/app_types.h" @@ -1502,8 +1503,10 @@ AutotestPrivateRefreshEnterprisePoliciesFunction::Run() { DVLOG(1) << "AutotestPrivateRefreshEnterprisePoliciesFunction"; - g_browser_process->policy_service()->RefreshPolicies(base::BindOnce( - &AutotestPrivateRefreshEnterprisePoliciesFunction::RefreshDone, this)); + g_browser_process->policy_service()->RefreshPolicies( + base::BindOnce( + &AutotestPrivateRefreshEnterprisePoliciesFunction::RefreshDone, this), + policy::PolicyFetchReason::kTest); return RespondLater(); }
diff --git a/chrome/browser/ash/file_manager/file_manager_browsertest.cc b/chrome/browser/ash/file_manager/file_manager_browsertest.cc index e74ab75..faf29ac 100644 --- a/chrome/browser/ash/file_manager/file_manager_browsertest.cc +++ b/chrome/browser/ash/file_manager/file_manager_browsertest.cc
@@ -1416,39 +1416,52 @@ FilesAppBrowserTest, ::testing::Values( TestCase("searchDownloadsWithResults"), + TestCase("searchDownloadsWithResults").EnableSearchV2(), TestCase("searchDownloadsWithNoResults"), + TestCase("searchDownloadsWithNoResults").EnableSearchV2(), TestCase("searchDownloadsClearSearchKeyDown"), + TestCase("searchDownloadsClearSearchKeyDown").EnableSearchV2(), TestCase("searchDownloadsClearSearch"), + TestCase("searchDownloadsClearSearch").EnableSearchV2(), TestCase("searchHidingViaTab"), + TestCase("searchHidingViaTab").EnableSearchV2(), TestCase("searchHidingTextEntryField"), + TestCase("searchHidingTextEntryField").EnableSearchV2(), TestCase("searchButtonToggles"), - TestCase("searchWithLocationOptions"), - TestCase("searchLocalWithTypeOptions"), - TestCase("searchDriveWithTypeOptions"), - TestCase("searchWithRecencyOptions"), - TestCase("searchDriveWithRecencyOptions"), - TestCase("searchRemovableDevice"), - TestCase("searchPartitionedRemovableDevice"), - TestCase("resetSearchOptionsOnFolderChange"), - TestCase("showSearchResultMessageWhenSearching"), - TestCase("searchFromMyFiles"), - TestCase("selectionPath"), - TestCase("searchHierarchy"), - TestCase("hideSearchInTrash"), + TestCase("searchButtonToggles").EnableSearchV2(), + TestCase("searchWithLocationOptions").EnableSearchV2(), + TestCase("searchLocalWithTypeOptions").EnableSearchV2(), + TestCase("searchDriveWithTypeOptions").EnableSearchV2(), + TestCase("searchWithRecencyOptions").EnableSearchV2(), + TestCase("searchDriveWithRecencyOptions").EnableSearchV2(), + TestCase("searchRemovableDevice").EnableSearchV2(), + TestCase("searchPartitionedRemovableDevice").EnableSearchV2(), + TestCase("resetSearchOptionsOnFolderChange").EnableSearchV2(), + TestCase("showSearchResultMessageWhenSearching").EnableSearchV2(), + TestCase("searchFromMyFiles").EnableSearchV2(), + TestCase("selectionPath").EnableSearchV2(), + TestCase("searchHierarchy").EnableSearchV2(), + TestCase("hideSearchInTrash").EnableSearchV2(), // TODO(b/287169303): test is flaky on ChromiumOS MSan #if !defined(MEMORY_SANITIZER) - TestCase("searchTrashedFiles"), + TestCase("searchTrashedFiles").EnableSearchV2(), #endif - TestCase("matchDriveFilesByName"), - TestCase("searchSharedWithMe"), - TestCase("searchDocumentsProvider").EnableGenericDocumentsProvider(), + TestCase("matchDriveFilesByName").EnableSearchV2(), + TestCase("searchSharedWithMe").EnableSearchV2(), + TestCase("searchDocumentsProvider") + .EnableGenericDocumentsProvider() + .EnableSearchV2(), TestCase("searchDocumentsProviderWithTypeOptions") - .EnableGenericDocumentsProvider(), + .EnableGenericDocumentsProvider() + .EnableSearchV2(), TestCase("searchDocumentsProviderWithRecencyOptions") - .EnableGenericDocumentsProvider(), - TestCase("searchFileSystemProvider"), - TestCase("searchImageByContent").EnableImageContentSearch(), - TestCase("changingDirectoryClosesSearch") + .EnableGenericDocumentsProvider() + .EnableSearchV2(), + TestCase("searchFileSystemProvider").EnableSearchV2(), + TestCase("searchImageByContent") + .EnableImageContentSearch() + .EnableSearchV2(), + TestCase("changingDirectoryClosesSearch").EnableSearchV2() // TODO(b/189173190): Enable // TestCase("searchQueryLaunchParam") ));
diff --git a/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc b/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc index c8901f85..d03629bc 100644 --- a/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc +++ b/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc
@@ -2329,6 +2329,12 @@ disabled_features.push_back(features::kFileTransferEnterpriseConnectorUI); } + if (options.enable_search_v2) { + enabled_features.push_back(ash::features::kFilesSearchV2); + } else { + disabled_features.push_back(ash::features::kFilesSearchV2); + } + if (options.enable_image_content_search) { enabled_features.push_back(search_features::kLauncherImageSearch); enabled_features.push_back(search_features::kLauncherImageSearchIca);
diff --git a/chrome/browser/ash/file_manager/file_manager_browsertest_base.h b/chrome/browser/ash/file_manager/file_manager_browsertest_base.h index 2711305..1314373 100644 --- a/chrome/browser/ash/file_manager/file_manager_browsertest_base.h +++ b/chrome/browser/ash/file_manager/file_manager_browsertest_base.h
@@ -179,6 +179,9 @@ // Whether test should use report-only mode for the file transfer connector. bool file_transfer_connector_report_only = false; + // Whether tests should enable V2 of search. + bool enable_search_v2 = false; + // Whether tests should enable image content search. bool enable_image_content_search = false;
diff --git a/chrome/browser/ash/file_manager/file_manager_browsertest_utils.cc b/chrome/browser/ash/file_manager/file_manager_browsertest_utils.cc index e2fe1c8..5bfb12f 100644 --- a/chrome/browser/ash/file_manager/file_manager_browsertest_utils.cc +++ b/chrome/browser/ash/file_manager/file_manager_browsertest_utils.cc
@@ -160,6 +160,11 @@ return *this; } +TestCase& TestCase::EnableSearchV2() { + options.enable_search_v2 = true; + return *this; +} + TestCase& TestCase::EnableFSPsInRecents() { options.enable_fsps_in_recents = true; return *this; @@ -265,6 +270,10 @@ full_name += "_ReportOnly"; } + if (options.enable_search_v2) { + full_name += "_SearchV2"; + } + if (options.enable_fsps_in_recents) { full_name += "_FSPsInRecents"; }
diff --git a/chrome/browser/ash/file_manager/file_manager_browsertest_utils.h b/chrome/browser/ash/file_manager/file_manager_browsertest_utils.h index e5fa470..03e83919 100644 --- a/chrome/browser/ash/file_manager/file_manager_browsertest_utils.h +++ b/chrome/browser/ash/file_manager/file_manager_browsertest_utils.h
@@ -88,6 +88,8 @@ TestCase& FileTransferConnectorReportOnlyMode(); + TestCase& EnableSearchV2(); + TestCase& EnableFSPsInRecents(); TestCase& EnableOsFeedback();
diff --git a/chrome/browser/ash/login/existing_user_controller.cc b/chrome/browser/ash/login/existing_user_controller.cc index a3ee7ebff..c009d262 100644 --- a/chrome/browser/ash/login/existing_user_controller.cc +++ b/chrome/browser/ash/login/existing_user_controller.cc
@@ -155,7 +155,8 @@ // authentication change. void RefreshPoliciesOnUIThread() { if (g_browser_process->policy_service()) - g_browser_process->policy_service()->RefreshPolicies(base::OnceClosure()); + g_browser_process->policy_service()->RefreshPolicies( + base::OnceClosure(), policy::PolicyFetchReason::kSignin); } void OnTranferredHttpAuthCaches() {
diff --git a/chrome/browser/ash/login/screens/consumer_update_screen.cc b/chrome/browser/ash/login/screens/consumer_update_screen.cc index 5dc73f7..f8126f93 100644 --- a/chrome/browser/ash/login/screens/consumer_update_screen.cc +++ b/chrome/browser/ash/login/screens/consumer_update_screen.cc
@@ -135,7 +135,7 @@ "applied during OOBE."; RecordOobeConsumerUpdateScreenSkippedReasonHistogram( OobeConsumerUpdateScreenSkippedReason::kCriticalUpdateCompleted); - exit_callback_.Run(Result::UPDATED); + exit_callback_.Run(Result::NOT_APPLICABLE); return true; } @@ -218,12 +218,17 @@ } } +void ConsumerUpdateScreen::DelayExitNoUpdate() { + exit_callback_.Run(Result::UPDATE_NOT_REQUIRED); +} + void ConsumerUpdateScreen::FinishExitUpdate(VersionUpdater::Result result) { switch (result) { case VersionUpdater::Result::UPDATE_NOT_REQUIRED: RecordOobeConsumerUpdateScreenSkippedReasonHistogram( OobeConsumerUpdateScreenSkippedReason::kUpdateNotRequired); - exit_callback_.Run(Result::UPDATE_NOT_REQUIRED); + wait_exit_timer_.Start(FROM_HERE, exit_delay_, this, + &ConsumerUpdateScreen::DelayExitNoUpdate); break; case VersionUpdater::Result::UPDATE_ERROR: RecordOobeConsumerUpdateScreenSkippedReasonHistogram(
diff --git a/chrome/browser/ash/login/screens/consumer_update_screen.h b/chrome/browser/ash/login/screens/consumer_update_screen.h index bdbbcca7a..3272b676 100644 --- a/chrome/browser/ash/login/screens/consumer_update_screen.h +++ b/chrome/browser/ash/login/screens/consumer_update_screen.h
@@ -91,6 +91,14 @@ delay_error_message_ = delay; } + void set_delay_for_exit_no_update_for_testing(base::TimeDelta delay) { + exit_delay_ = delay; + } + + const ScreenExitCallback& get_exit_callback_for_testing() { + return exit_callback_; + } + void set_exit_callback_for_testing(ScreenExitCallback exit_callback) { exit_callback_ = exit_callback; } @@ -138,6 +146,7 @@ // Set update status message. void SetUpdateStatusMessage(int percent, base::TimeDelta time_left); + void DelayExitNoUpdate(); void DelaySkipButton(); void SetSkipButton(); @@ -190,6 +199,13 @@ base::TimeTicks screen_shown_time_; + // Time to delay exiting the screen to avoid flashing the screen when no + // update is available. + base::TimeDelta exit_delay_ = base::Seconds(2); + + // Timer for the interval to wait to exit screen when no update. + base::OneShotTimer wait_exit_timer_; + // PowerManagerClient::Observer is used only when screen is shown. base::ScopedObservation<chromeos::PowerManagerClient, chromeos::PowerManagerClient::Observer>
diff --git a/chrome/browser/ash/login/screens/consumer_update_screen_browsertest.cc b/chrome/browser/ash/login/screens/consumer_update_screen_browsertest.cc index b76618fe..a3f8284 100644 --- a/chrome/browser/ash/login/screens/consumer_update_screen_browsertest.cc +++ b/chrome/browser/ash/login/screens/consumer_update_screen_browsertest.cc
@@ -16,6 +16,7 @@ #include "base/time/time.h" #include "chrome/browser/ash/login/login_wizard.h" #include "chrome/browser/ash/login/screens/error_screen.h" +#include "chrome/browser/ash/login/startup_utils.h" #include "chrome/browser/ash/login/test/device_state_mixin.h" #include "chrome/browser/ash/login/test/js_checker.h" #include "chrome/browser/ash/login/test/local_state_mixin.h" @@ -32,6 +33,7 @@ #include "chrome/browser/ash/policy/handlers/minimum_version_policy_test_helpers.h" #include "chrome/browser/ui/webui/ash/login/consumer_update_screen_handler.h" #include "chrome/browser/ui/webui/ash/login/error_screen_handler.h" +#include "chrome/browser/ui/webui/ash/login/gaia_info_screen_handler.h" #include "chrome/browser/ui/webui/ash/login/gaia_screen_handler.h" #include "chrome/browser/ui/webui/ash/login/oobe_ui.h" #include "chrome/grit/branded_strings.h" @@ -107,8 +109,11 @@ error_screen_ = GetOobeUI()->GetErrorScreen(); consumer_update_screen_ = WizardController::default_controller() ->GetScreen<ConsumerUpdateScreen>(); - consumer_update_screen_->set_exit_callback_for_testing(base::BindRepeating( - &ConsumerUpdateScreenTest::HandleScreenExit, base::Unretained(this))); + + original_callback_ = + consumer_update_screen_->get_exit_callback_for_testing(); + consumer_update_screen_->set_exit_callback_for_testing( + screen_result_waiter_.GetRepeatingCallback()); version_updater_ = consumer_update_screen_->get_version_updater_for_testing(); @@ -125,6 +130,14 @@ consumer_update_screen_->set_delay_for_delayed_timer_for_testing( base::TimeDelta::Max()); + consumer_update_screen_->set_delay_for_exit_no_update_for_testing( + base::Milliseconds(1)); + + // this local state is set in OnUserCreationScreenExit and in the test we + // advance directly to the consumerUpdate Screen. + StartupUtils::SaveScreenAfterConsumerUpdate( + GaiaInfoScreenView::kScreenId.name); + LoginDisplayHost::default_host() ->GetWizardContextForTesting() ->is_branded_build = true; @@ -166,16 +179,13 @@ ConsumerUpdateScreenView::kScreenId); } - protected: - void WaitForScreenResult() { - if (screen_result_.has_value()) { - return; - } - base::test::TestFuture<void> waiter; - screen_callback_ = waiter.GetCallback(); - EXPECT_TRUE(waiter.Wait()); + ConsumerUpdateScreen::Result WaitForScreenExitResult() { + ConsumerUpdateScreen::Result result = screen_result_waiter_.Take(); + original_callback_.Run(result); + return result; } + protected: chromeos::FakePowerManagerClient* power_manager_client() { return chromeos::FakePowerManagerClient::Get(); } @@ -188,21 +198,11 @@ // Handles network connections std::unique_ptr<NetworkStateTestHelper> network_state_test_helper_; - absl::optional<ConsumerUpdateScreen::Result> screen_result_; - NetworkPortalDetectorMixin network_portal_detector_{&mixin_host_}; private: - void HandleScreenExit(ConsumerUpdateScreen::Result result) { - EXPECT_FALSE(screen_result_.has_value()); - screen_result_ = result; - - if (screen_callback_) { - std::move(screen_callback_).Run(); - } - } - - base::OnceClosure screen_callback_; + base::test::TestFuture<ConsumerUpdateScreen::Result> screen_result_waiter_; + ConsumerUpdateScreen::ScreenExitCallback original_callback_; base::test::ScopedFeatureList feature_list_; }; @@ -223,9 +223,8 @@ SetUpdateEngineStatus(update_engine::Operation::IDLE); - ASSERT_TRUE(screen_result_.has_value()); - EXPECT_EQ(ConsumerUpdateScreen::Result::UPDATE_NOT_REQUIRED, - screen_result_.value()); + ConsumerUpdateScreen::Result result = WaitForScreenExitResult(); + EXPECT_EQ(result, ConsumerUpdateScreen::Result::UPDATE_NOT_REQUIRED); } // TODO(b/293419661) create function SimulateUpdateAvailable @@ -334,9 +333,9 @@ test::OobeJS().ExpectHiddenPath(kUpdateChekingDialog); test::OobeJS().TapOnPath(kUpdateCellularDeclineButton); - ASSERT_TRUE(screen_result_.has_value()); - EXPECT_EQ(ConsumerUpdateScreen::Result::DECLINE_CELLULAR, - screen_result_.value()); + + ConsumerUpdateScreen::Result result = WaitForScreenExitResult(); + EXPECT_EQ(result, ConsumerUpdateScreen::Result::DECLINE_CELLULAR); } IN_PROC_BROWSER_TEST_F(ConsumerUpdateScreenTest, LostNetworkDuringUpdate) {
diff --git a/chrome/browser/ash/policy/core/device_cloud_policy_browsertest.cc b/chrome/browser/ash/policy/core/device_cloud_policy_browsertest.cc index b397cab..dcfe267c 100644 --- a/chrome/browser/ash/policy/core/device_cloud_policy_browsertest.cc +++ b/chrome/browser/ash/policy/core/device_cloud_policy_browsertest.cc
@@ -116,7 +116,7 @@ g_browser_process->platform_part() ->browser_policy_connector_ash() ->GetDeviceCloudPolicyManager() - ->RefreshPolicies(); + ->RefreshPolicies(PolicyFetchReason::kTest); } std::string GetOwnerPublicKey() const {
diff --git a/chrome/browser/ash/policy/core/device_local_account_browsertest.cc b/chrome/browser/ash/policy/core/device_local_account_browsertest.cc index 8214f7f..812f42a 100644 --- a/chrome/browser/ash/policy/core/device_local_account_browsertest.cc +++ b/chrome/browser/ash/policy/core/device_local_account_browsertest.cc
@@ -122,6 +122,7 @@ #include "components/policy/core/common/policy_map.h" #include "components/policy/core/common/policy_namespace.h" #include "components/policy/core/common/policy_service.h" +#include "components/policy/core/common/policy_types.h" #include "components/policy/policy_constants.h" #include "components/policy/proto/chrome_device_policy.pb.h" #include "components/prefs/pref_service.h" @@ -370,7 +371,8 @@ PolicyChangeRegistrar policy_registrar(policy_service, ns); TestFuture<const base::Value*, const base::Value*> future; policy_registrar.Observe("string", future.GetRepeatingCallback()); - policy_service->RefreshPolicies(base::OnceClosure()); + policy_service->RefreshPolicies(base::OnceClosure(), + PolicyFetchReason::kTest); return std::get<1>(future.Take()); } @@ -1008,7 +1010,8 @@ em::DeviceLocalAccountInfoProto::ACCOUNT_TYPE_PUBLIC_SESSION); policy_test_server_mixin_.UpdateDevicePolicy(policy); - g_browser_process->policy_service()->RefreshPolicies(base::OnceClosure()); + g_browser_process->policy_service()->RefreshPolicies( + base::OnceClosure(), PolicyFetchReason::kTest); // Make sure the second device-local account disappears. base::RunLoop().RunUntilIdle();
diff --git a/chrome/browser/ash/policy/core/device_local_account_policy_provider.cc b/chrome/browser/ash/policy/core/device_local_account_policy_provider.cc index 9f72bd74..ade8f92b 100644 --- a/chrome/browser/ash/policy/core/device_local_account_policy_provider.cc +++ b/chrome/browser/ash/policy/core/device_local_account_policy_provider.cc
@@ -75,16 +75,15 @@ return IsInitializationComplete(domain); } -// TODO(b/298336121) Add PolicyFetchReason parameter to make the fetch -// more specific. -void DeviceLocalAccountPolicyProvider::RefreshPolicies() { +void DeviceLocalAccountPolicyProvider::RefreshPolicies( + PolicyFetchReason reason) { DeviceLocalAccountPolicyBroker* broker = GetBroker(); if (broker && broker->core()->service()) { waiting_for_policy_refresh_ = true; broker->core()->service()->RefreshPolicy( base::BindOnce(&DeviceLocalAccountPolicyProvider::ReportPolicyRefresh, weak_factory_.GetWeakPtr()), - PolicyFetchReason::kUnspecified); + reason); } else { UpdateFromBroker(); }
diff --git a/chrome/browser/ash/policy/core/device_local_account_policy_provider.h b/chrome/browser/ash/policy/core/device_local_account_policy_provider.h index 56a4ac60..819e974 100644 --- a/chrome/browser/ash/policy/core/device_local_account_policy_provider.h +++ b/chrome/browser/ash/policy/core/device_local_account_policy_provider.h
@@ -15,6 +15,7 @@ #include "chrome/browser/ash/policy/core/device_local_account_policy_service.h" #include "chrome/browser/ash/policy/external_data/device_local_account_external_data_manager.h" #include "components/policy/core/common/configuration_policy_provider.h" +#include "components/policy/core/common/policy_types.h" namespace policy { @@ -52,7 +53,7 @@ // ConfigurationPolicyProvider: bool IsInitializationComplete(PolicyDomain domain) const override; bool IsFirstPolicyLoadComplete(PolicyDomain domain) const override; - void RefreshPolicies() override; + void RefreshPolicies(PolicyFetchReason reason) override; // DeviceLocalAccountPolicyService::Observer: void OnPolicyUpdated(const std::string& user_id) override;
diff --git a/chrome/browser/ash/policy/core/device_local_account_policy_service_unittest.cc b/chrome/browser/ash/policy/core/device_local_account_policy_service_unittest.cc index 2a71fd5..d69675e 100644 --- a/chrome/browser/ash/policy/core/device_local_account_policy_service_unittest.cc +++ b/chrome/browser/ash/policy/core/device_local_account_policy_service_unittest.cc
@@ -1100,7 +1100,7 @@ EXPECT_FALSE(service_->GetBrokerForUser(account_1_user_id_)); EXPECT_CALL(provider_observer_, OnUpdatePolicy(provider_.get())) .Times(AtLeast(1)); - provider_->RefreshPolicies(); + provider_->RefreshPolicies(PolicyFetchReason::kTest); Mock::VerifyAndClearExpectations(&provider_observer_); // Make device settings appear. @@ -1117,7 +1117,7 @@ EXPECT_FALSE(broker->core()->client()); EXPECT_CALL(provider_observer_, OnUpdatePolicy(provider_.get())) .Times(AtLeast(1)); - provider_->RefreshPolicies(); + provider_->RefreshPolicies(PolicyFetchReason::kTest); Mock::VerifyAndClearExpectations(&provider_observer_); // Bring up the cloud connection. The refresh scheduler may fire refreshes @@ -1133,7 +1133,7 @@ EXPECT_CALL(provider_observer_, OnUpdatePolicy(_)).Times(0); DeviceManagementService::JobForTesting job; EXPECT_CALL(job_creation_handler_, OnJobCreation).WillOnce(SaveArg<0>(&job)); - provider_->RefreshPolicies(); + provider_->RefreshPolicies(PolicyFetchReason::kTest); ReloadDeviceSettings(); Mock::VerifyAndClearExpectations(&provider_observer_); Mock::VerifyAndClearExpectations(&fake_device_management_service_);
diff --git a/chrome/browser/ash/policy/core/user_policy_test_helper.cc b/chrome/browser/ash/policy/core/user_policy_test_helper.cc index 910b584f..1b517df 100644 --- a/chrome/browser/ash/policy/core/user_policy_test_helper.cc +++ b/chrome/browser/ash/policy/core/user_policy_test_helper.cc
@@ -66,7 +66,8 @@ PolicyService* const policy_service = profile_connector->policy_service(); base::RunLoop run_loop; - policy_service->RefreshPolicies(run_loop.QuitClosure()); + policy_service->RefreshPolicies(run_loop.QuitClosure(), + PolicyFetchReason::kTest); run_loop.Run(); } @@ -83,7 +84,8 @@ PolicyService* const policy_service = profile_connector->policy_service(); base::RunLoop run_loop; - policy_service->RefreshPolicies(run_loop.QuitClosure()); + policy_service->RefreshPolicies(run_loop.QuitClosure(), + PolicyFetchReason::kTest); run_loop.Run(); }
diff --git a/chrome/browser/ash/policy/external_data/user_cloud_external_data_manager_browsertest.cc b/chrome/browser/ash/policy/external_data/user_cloud_external_data_manager_browsertest.cc index 6b246f5..987e3fa 100644 --- a/chrome/browser/ash/policy/external_data/user_cloud_external_data_manager_browsertest.cc +++ b/chrome/browser/ash/policy/external_data/user_cloud_external_data_manager_browsertest.cc
@@ -96,7 +96,7 @@ { base::test::TestFuture<void> refresh_policy_future; policy_connector->policy_service()->RefreshPolicies( - refresh_policy_future.GetCallback()); + refresh_policy_future.GetCallback(), PolicyFetchReason::kTest); ASSERT_TRUE(refresh_policy_future.Wait()) << "RefreshPolicies did not invoke the finished callback."; }
diff --git a/chrome/browser/ash/policy/login/login_profile_policy_provider.cc b/chrome/browser/ash/policy/login/login_profile_policy_provider.cc index 92eb26b8..86bdca8 100644 --- a/chrome/browser/ash/policy/login/login_profile_policy_provider.cc +++ b/chrome/browser/ash/policy/login/login_profile_policy_provider.cc
@@ -201,12 +201,13 @@ ConfigurationPolicyProvider::Shutdown(); } -void LoginProfilePolicyProvider::RefreshPolicies() { +void LoginProfilePolicyProvider::RefreshPolicies(PolicyFetchReason reason) { waiting_for_device_policy_refresh_ = true; weak_factory_.InvalidateWeakPtrs(); device_policy_service_->RefreshPolicies( base::BindOnce(&LoginProfilePolicyProvider::OnDevicePolicyRefreshDone, - weak_factory_.GetWeakPtr())); + weak_factory_.GetWeakPtr()), + reason); } void LoginProfilePolicyProvider::OnPolicyUpdated(const PolicyNamespace& ns,
diff --git a/chrome/browser/ash/policy/login/login_profile_policy_provider.h b/chrome/browser/ash/policy/login/login_profile_policy_provider.h index 59eb4322..bf300fc 100644 --- a/chrome/browser/ash/policy/login/login_profile_policy_provider.h +++ b/chrome/browser/ash/policy/login/login_profile_policy_provider.h
@@ -31,7 +31,7 @@ // ConfigurationPolicyProvider: void Init(SchemaRegistry* registry) override; void Shutdown() override; - void RefreshPolicies() override; + void RefreshPolicies(PolicyFetchReason reason) override; // PolicyService::Observer: void OnPolicyUpdated(const PolicyNamespace& ns,
diff --git a/chrome/browser/ash/policy/scheduled_task_handler/os_and_policies_update_checker.cc b/chrome/browser/ash/policy/scheduled_task_handler/os_and_policies_update_checker.cc index 01d4331..73f9cc4 100644 --- a/chrome/browser/ash/policy/scheduled_task_handler/os_and_policies_update_checker.cc +++ b/chrome/browser/ash/policy/scheduled_task_handler/os_and_policies_update_checker.cc
@@ -12,6 +12,7 @@ #include "chromeos/ash/components/network/network_state_handler.h" #include "components/device_event_log/device_event_log.h" #include "components/policy/core/common/policy_service.h" +#include "components/policy/core/common/policy_types.h" namespace policy { @@ -216,7 +217,8 @@ void OsAndPoliciesUpdateChecker::RefreshPolicies(bool update_check_result) { g_browser_process->policy_service()->RefreshPolicies( base::BindOnce(&OsAndPoliciesUpdateChecker::OnRefreshPoliciesCompletion, - weak_factory_.GetWeakPtr(), update_check_result)); + weak_factory_.GetWeakPtr(), update_check_result), + PolicyFetchReason::kScheduled); } void OsAndPoliciesUpdateChecker::OnRefreshPoliciesCompletion(
diff --git a/chrome/browser/autofill/content_autofill_driver_browsertest.cc b/chrome/browser/autofill/content_autofill_driver_browsertest.cc index aff3b08..057bc55 100644 --- a/chrome/browser/autofill/content_autofill_driver_browsertest.cc +++ b/chrome/browser/autofill/content_autofill_driver_browsertest.cc
@@ -41,26 +41,6 @@ #include "ui/gfx/geometry/rect.h" namespace autofill { -namespace { - -class MockAutofillClient : public TestContentAutofillClient { - public: - using TestContentAutofillClient::TestContentAutofillClient; - - MockAutofillClient(const MockAutofillClient&) = delete; - MockAutofillClient& operator=(const MockAutofillClient&) = delete; - - ~MockAutofillClient() override = default; - - MOCK_METHOD(void, - ShowAutofillPopup, - (const PopupOpenArgs& open_args, - base::WeakPtr<AutofillPopupDelegate> delegate), - (override)); - MOCK_METHOD(void, HideAutofillPopup, (PopupHidingReason), (override)); -}; - -} // namespace class ContentAutofillDriverBrowserTest : public InProcessBrowserTest, public content::WebContentsObserver { @@ -83,12 +63,6 @@ ASSERT_TRUE(embedded_test_server()->Start()); } - void TearDownOnMainThread() override { - // Verify the expectations here, because closing the browser may incur - // other calls in `autofill_client()` e.g., HideAutofillPopup(). - testing::Mock::VerifyAndClearExpectations(&autofill_client()); - } - void OnVisibilityChanged(content::Visibility visibility) override { if (visibility == content::Visibility::HIDDEN && web_contents_hidden_callback_) { @@ -122,7 +96,7 @@ return browser()->tab_strip_model()->GetActiveWebContents(); } - testing::NiceMock<MockAutofillClient>& autofill_client() { + testing::NiceMock<TestContentAutofillClient>& autofill_client() { auto* client = autofill_client_injector_[web_contents()]; CHECK(client); return *client; @@ -139,104 +113,11 @@ base::OnceClosure subframe_navigation_callback_; test::AutofillBrowserTestEnvironment autofill_test_environment_; - TestAutofillClientInjector<testing::NiceMock<MockAutofillClient>> + TestAutofillClientInjector<testing::NiceMock<TestContentAutofillClient>> autofill_client_injector_; content::test::PrerenderTestHelper prerender_helper_; }; -IN_PROC_BROWSER_TEST_F(ContentAutofillDriverBrowserTest, - SameDocumentNavigationHideAutofillPopup) { - ASSERT_TRUE(ui_test_utils::NavigateToURL( - browser(), - embedded_test_server()->GetURL("/autofill/autofill_test_form.html"))); - - // The Autofill popup should be hidden for same document navigations. It may - // called twice because the zoom changed event may also fire for same-page - // navigations. - EXPECT_CALL(autofill_client(), - HideAutofillPopup(PopupHidingReason::kNavigation)) - .Times(testing::AtLeast(1)); - - scoped_refptr<content::MessageLoopRunner> runner = - new content::MessageLoopRunner; - same_document_navigation_callback_ = runner->QuitClosure(); - ASSERT_TRUE(ui_test_utils::NavigateToURL( - browser(), - embedded_test_server()->GetURL("/autofill/autofill_test_form.html#foo"))); - // This will block until a same document navigation is observed. - runner->Run(); -} - -IN_PROC_BROWSER_TEST_F(ContentAutofillDriverBrowserTest, - PrerenderNavigationDoesntHideAutofillPopup) { - GURL initial_url = - embedded_test_server()->GetURL("/autofill/autofill_test_form.html"); - GURL prerender_url = embedded_test_server()->GetURL("/empty.html"); - prerender_helper().NavigatePrimaryPage(initial_url); - - int host_id = content::RenderFrameHost::kNoFrameTreeNodeId; - - { - EXPECT_CALL(autofill_client(), - HideAutofillPopup(PopupHidingReason::kNavigation)) - .Times(0); - host_id = prerender_helper().AddPrerender(prerender_url); - } - - EXPECT_CALL(autofill_client(), - HideAutofillPopup(PopupHidingReason::kNavigation)) - .Times(testing::AtLeast(1)); - - content::test::PrerenderHostObserver host_observer(*web_contents(), host_id); - prerender_helper().NavigatePrimaryPage(prerender_url); - EXPECT_TRUE(host_observer.was_activated()); -} - -// TODO(https://crbug.com/1486460): Currently HideAutofillPopup() might be -// triggered on iframe navigations when resetting the driver. Re-enable this -// test when that is fixed. -IN_PROC_BROWSER_TEST_F(ContentAutofillDriverBrowserTest, - DISABLED_SubframeNavigationDoesntHideAutofillPopup) { - // Main frame is on a.com, iframe is on b.com. - GURL url = embedded_test_server()->GetURL( - "a.com", "/autofill/cross_origin_iframe.html"); - ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), url)); - - // The Autofill popup should NOT be hidden for subframe navigations. - EXPECT_CALL(autofill_client(), HideAutofillPopup).Times(0); - - scoped_refptr<content::MessageLoopRunner> runner = - new content::MessageLoopRunner; - subframe_navigation_callback_ = runner->QuitClosure(); - GURL iframe_url = embedded_test_server()->GetURL( - "b.com", "/autofill/autofill_test_form.html"); - EXPECT_TRUE(content::NavigateIframeToURL( - browser()->tab_strip_model()->GetActiveWebContents(), "crossFrame", - iframe_url)); - // This will block until a subframe navigation is observed. - runner->Run(); -} - -IN_PROC_BROWSER_TEST_F(ContentAutofillDriverBrowserTest, - TestPageNavigationHidingAutofillPopup) { - // HideAutofillPopup is called once when each navigation finishes, and - // potentially one more time if it involves a RenderFrameHost change. - EXPECT_CALL(autofill_client(), - HideAutofillPopup(PopupHidingReason::kNavigation)) - .Times(testing::Between(2, 3)); - - scoped_refptr<content::MessageLoopRunner> runner = - new content::MessageLoopRunner; - nav_entry_committed_callback_ = runner->QuitClosure(); - browser()->OpenURL(content::OpenURLParams( - GURL(chrome::kChromeUIBookmarksURL), content::Referrer(), - WindowOpenDisposition::CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, false)); - browser()->OpenURL(content::OpenURLParams( - GURL(chrome::kChromeUIAboutURL), content::Referrer(), - WindowOpenDisposition::CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, false)); - runner->Run(); -} - class ContentAutofillDriverPrerenderBrowserTest : public ContentAutofillDriverBrowserTest { public:
diff --git a/chrome/browser/chrome_origin_trials_browsertest.cc b/chrome/browser/chrome_origin_trials_browsertest.cc index fedab7a..4c2342a3 100644 --- a/chrome/browser/chrome_origin_trials_browsertest.cc +++ b/chrome/browser/chrome_origin_trials_browsertest.cc
@@ -18,6 +18,7 @@ #include "components/prefs/pref_service.h" #include "content/public/common/content_client.h" #include "content/public/test/browser_test.h" +#include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/common/origin_trials/origin_trial_policy.h" @@ -201,11 +202,10 @@ IN_PROC_BROWSER_TEST_P(ChromeOriginTrialsDisabledTokensTest, DisabledTokensInPolicy) { // Convert the uint8_t[] from generate_token.py into strings. - std::set<std::string> expected_signatures; + std::vector<std::string> expected_signatures; base::ranges::transform( - GetParam().expected_list, - std::inserter(expected_signatures, expected_signatures.begin()), - [](const uint8_t bytes[]) -> std::string { + GetParam().expected_list, std::back_inserter(expected_signatures), + [](const uint8_t bytes[]) { return std::string(reinterpret_cast<const char*>(bytes), kTokenSignatureSize); }); @@ -214,7 +214,8 @@ ASSERT_TRUE(local_state()->HasPrefPath( embedder_support::prefs::kOriginTrialDisabledTokens)); ASSERT_TRUE(policy); - ASSERT_EQ(*(policy->GetDisabledTokensForTesting()), expected_signatures); + EXPECT_THAT(*policy->GetDisabledTokensForTesting(), + testing::UnorderedElementsAreArray(expected_signatures)); } INSTANTIATE_TEST_SUITE_P(All,
diff --git a/chrome/browser/chromeos/extensions/login_screen/login/login_apitest.cc b/chrome/browser/chromeos/extensions/login_screen/login/login_apitest.cc index 6d726045..38103e2 100644 --- a/chrome/browser/chromeos/extensions/login_screen/login/login_apitest.cc +++ b/chrome/browser/chromeos/extensions/login_screen/login/login_apitest.cc
@@ -30,6 +30,7 @@ #include "components/policy/core/common/cloud/cloud_policy_constants.h" #include "components/policy/core/common/cloud/test/policy_builder.h" #include "components/policy/core/common/policy_service.h" +#include "components/policy/core/common/policy_types.h" #include "components/policy/policy_constants.h" #include "components/prefs/pref_service.h" #include "components/session_manager/session_manager_types.h" @@ -134,7 +135,7 @@ void RefreshPolicies() { base::RunLoop run_loop; g_browser_process->policy_service()->RefreshPolicies( - run_loop.QuitClosure()); + run_loop.QuitClosure(), policy::PolicyFetchReason::kTest); run_loop.Run(); }
diff --git a/chrome/browser/devtools/devtools_ui_bindings.cc b/chrome/browser/devtools/devtools_ui_bindings.cc index 3f915f86..1a177cd 100644 --- a/chrome/browser/devtools/devtools_ui_bindings.cc +++ b/chrome/browser/devtools/devtools_ui_bindings.cc
@@ -357,6 +357,11 @@ if (key == "veLogging" && value == "true") { return value; } + + if (key == "isChromeForTesting" && value == "true") { + return value; + } + #if defined(AIDA_SCOPE) if (key == "enableAida" && value == "true") { return value;
diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc index 663b34da9..4d99a76 100644 --- a/chrome/browser/devtools/devtools_window.cc +++ b/chrome/browser/devtools/devtools_window.cc
@@ -1253,6 +1253,11 @@ url += "&hasOtherClients=true"; if (browser_connection) url += "&browserConnection=true"; + +#if BUILDFLAG(GOOGLE_CHROME_FOR_TESTING_BRANDING) + url += "&isChromeForTesting=true"; +#endif + return DevToolsUIBindings::SanitizeFrontendURL(GURL(url)); }
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index 4a32eb39..7bdadb7 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -122,17 +122,17 @@ { "name": "allow-dsp-based-aec", "owners": [ "peah" ], - "expiry_milestone": 118 + "expiry_milestone": 128 }, { "name": "allow-dsp-based-agc", "owners": [ "peah" ], - "expiry_milestone": 118 + "expiry_milestone": 128 }, { "name": "allow-dsp-based-ns", "owners": [ "peah" ], - "expiry_milestone": 118 + "expiry_milestone": 128 }, { "name": "allow-eap-default-cas-without-subject-verification", @@ -4099,22 +4099,22 @@ { "name": "enforce-system-aec", "owners": [ "peah" ], - "expiry_milestone": 118 + "expiry_milestone": 128 }, { "name": "enforce-system-aec-agc", "owners": [ "peah" ], - "expiry_milestone": 118 + "expiry_milestone": 128 }, { "name": "enforce-system-aec-ns", "owners": [ "peah" ], - "expiry_milestone": 118 + "expiry_milestone": 128 }, { "name": "enforce-system-aec-ns-agc", "owners": [ "peah" ], - "expiry_milestone": 118 + "expiry_milestone": 128 }, { "name": "enterprise-reporting-ui",
diff --git a/chrome/browser/metrics/process_memory_metrics_emitter.cc b/chrome/browser/metrics/process_memory_metrics_emitter.cc index 0c4da5c..a0dd0d2 100644 --- a/chrome/browser/metrics/process_memory_metrics_emitter.cc +++ b/chrome/browser/metrics/process_memory_metrics_emitter.cc
@@ -286,12 +286,35 @@ MetricSize::kTiny, MemoryAllocatorDump::kNameObjectCount, EmitTo::kSizeInUmaOnly, nullptr}, #if BUILDFLAG(ENABLE_BACKUP_REF_PTR_SUPPORT) - // TODO(keishi): Add brp_quarantined metrics for the Blink partitions. {"malloc/partitions/allocator", "Malloc.BRPQuarantined", MetricSize::kSmall, "brp_quarantined_size", EmitTo::kSizeInUmaOnly, nullptr}, {"malloc/partitions/allocator", "Malloc.BRPQuarantinedCount", MetricSize::kTiny, "brp_quarantined_count", EmitTo::kSizeInUmaOnly, nullptr}, + {"partition_alloc/partitions", "PartitionAlloc.BRPQuarantined", + MetricSize::kSmall, "brp_quarantined_size", EmitTo::kSizeInUmaOnly, + nullptr}, + {"partition_alloc/partitions", "PartitionAlloc.BRPQuarantinedCount", + MetricSize::kTiny, "brp_quarantined_count", EmitTo::kSizeInUmaOnly, + nullptr}, + {"partition_alloc/partitions/fast_malloc", + "PartitionAlloc.BRPQuarantined.FastMalloc", MetricSize::kSmall, + "brp_quarantined_size", EmitTo::kSizeInUmaOnly, nullptr}, + {"partition_alloc/partitions/fast_malloc", + "PartitionAlloc.BRPQuarantinedCount.FastMalloc", MetricSize::kTiny, + "brp_quarantined_count", EmitTo::kSizeInUmaOnly, nullptr}, + {"partition_alloc/partitions/buffer", + "PartitionAlloc.BRPQuarantined.Buffer", MetricSize::kSmall, + "brp_quarantined_size", EmitTo::kSizeInUmaOnly, nullptr}, + {"partition_alloc/partitions/buffer", + "PartitionAlloc.BRPQuarantinedCount.Buffer", MetricSize::kTiny, + "brp_quarantined_count", EmitTo::kSizeInUmaOnly, nullptr}, + {"partition_alloc/partitions/array_buffer", + "PartitionAlloc.BRPQuarantined.ArrayBuffer", MetricSize::kSmall, + "brp_quarantined_size", EmitTo::kSizeInUmaOnly, nullptr}, + {"partition_alloc/partitions/array_buffer", + "PartitionAlloc.BRPQuarantinedCount.ArrayBuffer", MetricSize::kTiny, + "brp_quarantined_count", EmitTo::kSizeInUmaOnly, nullptr}, #endif // BUILDFLAG(ENABLE_BACKUP_REF_PTR_SUPPORT) {"malloc/partitions", "Malloc.BRPQuarantinedBytesPerMinute", MetricSize::kSmall, "brp_quarantined_bytes_per_minute",
diff --git a/chrome/browser/policy/cloud/cloud_policy_browsertest.cc b/chrome/browser/policy/cloud/cloud_policy_browsertest.cc index e96b0f9..abf24a8 100644 --- a/chrome/browser/policy/cloud/cloud_policy_browsertest.cc +++ b/chrome/browser/policy/cloud/cloud_policy_browsertest.cc
@@ -375,7 +375,8 @@ { base::RunLoop run_loop; // This does the initial fetch and stores the initial key. - policy_service->RefreshPolicies(run_loop.QuitClosure()); + policy_service->RefreshPolicies(run_loop.QuitClosure(), + PolicyFetchReason::kTest); run_loop.Run(); } @@ -391,7 +392,8 @@ { base::RunLoop run_loop; // This fetches the new policies, using the same key. - policy_service->RefreshPolicies(run_loop.QuitClosure()); + policy_service->RefreshPolicies(run_loop.QuitClosure(), + PolicyFetchReason::kTest); run_loop.Run(); } EXPECT_TRUE(expected.Equals(policy_service->GetPolicies( @@ -405,7 +407,8 @@ { base::RunLoop run_loop; // This does the initial fetch and stores the initial key. - policy_service->RefreshPolicies(run_loop.QuitClosure()); + policy_service->RefreshPolicies(run_loop.QuitClosure(), + PolicyFetchReason::kTest); run_loop.Run(); } @@ -437,7 +440,8 @@ kPolicyInvalidationTopic)); { base::RunLoop run_loop; - policy_service->RefreshPolicies(run_loop.QuitClosure()); + policy_service->RefreshPolicies(run_loop.QuitClosure(), + PolicyFetchReason::kTest); run_loop.Run(); } @@ -472,7 +476,8 @@ { base::RunLoop run_loop; // This does the initial fetch and stores the initial key. - policy_service->RefreshPolicies(run_loop.QuitClosure()); + policy_service->RefreshPolicies(run_loop.QuitClosure(), + PolicyFetchReason::kTest); run_loop.Run(); } @@ -496,7 +501,8 @@ { base::RunLoop run_loop; // This fetches the new policies and does a key rotation. - policy_service->RefreshPolicies(run_loop.QuitClosure()); + policy_service->RefreshPolicies(run_loop.QuitClosure(), + PolicyFetchReason::kTest); run_loop.Run(); } EXPECT_TRUE(expected.Equals(policy_service->GetPolicies( @@ -513,7 +519,8 @@ // Another refresh using the same key won't rotate it again. { base::RunLoop run_loop; - policy_service->RefreshPolicies(run_loop.QuitClosure()); + policy_service->RefreshPolicies(run_loop.QuitClosure(), + PolicyFetchReason::kTest); run_loop.Run(); } EXPECT_TRUE(expected.Equals(policy_service->GetPolicies(
diff --git a/chrome/browser/policy/cloud/component_cloud_policy_browsertest.cc b/chrome/browser/policy/cloud/component_cloud_policy_browsertest.cc index 72515db..f663b65 100644 --- a/chrome/browser/policy/cloud/component_cloud_policy_browsertest.cc +++ b/chrome/browser/policy/cloud/component_cloud_policy_browsertest.cc
@@ -247,7 +247,8 @@ browser()->profile()->GetProfilePolicyConnector(); PolicyService* policy_service = profile_connector->policy_service(); base::RunLoop run_loop; - policy_service->RefreshPolicies(run_loop.QuitClosure()); + policy_service->RefreshPolicies(run_loop.QuitClosure(), + PolicyFetchReason::kTest); run_loop.Run(); }
diff --git a/chrome/browser/policy/extension_force_install_mixin.cc b/chrome/browser/policy/extension_force_install_mixin.cc index 13ade1c..bf85cae1 100644 --- a/chrome/browser/policy/extension_force_install_mixin.cc +++ b/chrome/browser/policy/extension_force_install_mixin.cc
@@ -31,6 +31,7 @@ #include "chrome/browser/profiles/profile.h" #include "components/crx_file/crx_verifier.h" #include "components/crx_file/id_util.h" +#include "components/policy/core/common/cloud/cloud_policy_client.h" #include "components/policy/core/common/mock_configuration_policy_provider.h" #include "components/policy/core/common/policy_map.h" #include "components/policy/core/common/policy_namespace.h" @@ -415,7 +416,8 @@ user_policy_builder->payload().SerializeAsString()); base::RunLoop run_loop; - g_browser_process->policy_service()->RefreshPolicies(run_loop.QuitClosure()); + g_browser_process->policy_service()->RefreshPolicies( + run_loop.QuitClosure(), policy::PolicyFetchReason::kTest); ASSERT_NO_FATAL_FAILURE(run_loop.Run()); // Report the outcome via an output argument instead of the return value,
diff --git a/chrome/browser/policy/networking/network_configuration_updater_ash_unittest.cc b/chrome/browser/policy/networking/network_configuration_updater_ash_unittest.cc index ecf12a4..55ae169 100644 --- a/chrome/browser/policy/networking/network_configuration_updater_ash_unittest.cc +++ b/chrome/browser/policy/networking/network_configuration_updater_ash_unittest.cc
@@ -388,7 +388,7 @@ EXPECT_CALL(provider_, IsFirstPolicyLoadComplete(_)) .WillRepeatedly(Return(true)); provider_.SetAutoRefresh(); - provider_.RefreshPolicies(); + provider_.RefreshPolicies(PolicyFetchReason::kTest); base::RunLoop().RunUntilIdle(); }
diff --git a/chrome/browser/policy/networking/network_configuration_updater_unittest.cc b/chrome/browser/policy/networking/network_configuration_updater_unittest.cc index 58b15da..ef516f11 100644 --- a/chrome/browser/policy/networking/network_configuration_updater_unittest.cc +++ b/chrome/browser/policy/networking/network_configuration_updater_unittest.cc
@@ -200,7 +200,7 @@ EXPECT_CALL(provider_, IsFirstPolicyLoadComplete(_)) .WillRepeatedly(Return(true)); provider_.SetAutoRefresh(); - provider_.RefreshPolicies(); + provider_.RefreshPolicies(PolicyFetchReason::kTest); base::RunLoop().RunUntilIdle(); }
diff --git a/chrome/browser/policy/profile_policy_connector.cc b/chrome/browser/policy/profile_policy_connector.cc index 681804fe..8fc2f45 100644 --- a/chrome/browser/policy/profile_policy_connector.cc +++ b/chrome/browser/policy/profile_policy_connector.cc
@@ -38,6 +38,7 @@ #include "components/policy/core/common/policy_map.h" #include "components/policy/core/common/policy_namespace.h" #include "components/policy/core/common/policy_service_impl.h" +#include "components/policy/core/common/policy_types.h" #include "components/policy/core/common/proxy_policy_provider.h" #include "components/policy/core/common/schema_registry_tracking_policy_provider.h" #include "components/policy/policy_constants.h" @@ -698,7 +699,8 @@ if (local_test_policy_provider_) { local_test_policy_provider_->set_active(true); } - policy_service()->RefreshPolicies(base::DoNothing()); + policy_service()->RefreshPolicies(base::DoNothing(), + PolicyFetchReason::kTest); if (!local_test_infobar_visibility_manager_->infobar_active()) { local_test_infobar_visibility_manager_ ->AddInfobarsForActiveLocalTestPoliciesAllTabs(); @@ -713,7 +715,8 @@ local_test_policy_provider_->set_active(false); static_cast<LocalTestPolicyProvider*>(local_test_policy_provider_) ->ClearPolicies(); - policy_service()->RefreshPolicies(base::DoNothing()); + policy_service()->RefreshPolicies(base::DoNothing(), + PolicyFetchReason::kTest); if (local_test_infobar_visibility_manager_->infobar_active()) { local_test_infobar_visibility_manager_ ->DismissInfobarsForActiveLocalTestPoliciesAllTabs();
diff --git a/chrome/browser/policy/restricted_mgs_policy_provider.cc b/chrome/browser/policy/restricted_mgs_policy_provider.cc index 7dbfd398..aff49710 100644 --- a/chrome/browser/policy/restricted_mgs_policy_provider.cc +++ b/chrome/browser/policy/restricted_mgs_policy_provider.cc
@@ -9,6 +9,7 @@ #include "base/values.h" #include "chrome/browser/profiles/profiles_state.h" #include "chrome/browser/ui/webui/certificates_handler.h" +#include "components/policy/core/common/cloud/cloud_policy_client.h" #include "components/policy/core/common/policy_bundle.h" #include "components/policy/core/common/policy_map.h" #include "components/policy/core/common/policy_namespace.h" @@ -64,7 +65,7 @@ return provider; } -void RestrictedMGSPolicyProvider::RefreshPolicies() {} +void RestrictedMGSPolicyProvider::RefreshPolicies(PolicyFetchReason reason) {} void RestrictedMGSPolicyProvider::UpdatePolicyBundle() { weak_factory_.InvalidateWeakPtrs();
diff --git a/chrome/browser/policy/restricted_mgs_policy_provider.h b/chrome/browser/policy/restricted_mgs_policy_provider.h index efe2e2d..f3a4bc9 100644 --- a/chrome/browser/policy/restricted_mgs_policy_provider.h +++ b/chrome/browser/policy/restricted_mgs_policy_provider.h
@@ -6,7 +6,6 @@ #define CHROME_BROWSER_POLICY_RESTRICTED_MGS_POLICY_PROVIDER_H_ #include <memory> -#include <string> #include "base/memory/weak_ptr.h" #include "components/policy/core/common/configuration_policy_provider.h" @@ -32,7 +31,7 @@ ~RestrictedMGSPolicyProvider() override; // ConfigurationPolicyProvider: - void RefreshPolicies() override; + void RefreshPolicies(PolicyFetchReason reason) override; // Factory function to create and initialize a provider. Returns nullptr if we // are not in a Managed Guest Session.
diff --git a/chrome/browser/policy/value_provider/chrome_policies_value_provider.cc b/chrome/browser/policy/value_provider/chrome_policies_value_provider.cc index 66a5fe612..20341b0 100644 --- a/chrome/browser/policy/value_provider/chrome_policies_value_provider.cc +++ b/chrome/browser/policy/value_provider/chrome_policies_value_provider.cc
@@ -17,6 +17,7 @@ #include "chrome/browser/profiles/profile.h" #include "components/policy/core/browser/policy_conversions.h" #include "components/policy/core/common/policy_namespace.h" +#include "components/policy/core/common/policy_types.h" #include "components/policy/core/common/schema.h" #include "components/policy/core/common/schema_map.h" #include "components/policy/core/common/schema_registry.h" @@ -89,7 +90,8 @@ void ChromePoliciesValueProvider::Refresh() { GetPolicyService(profile_)->RefreshPolicies( base::BindOnce(&ChromePoliciesValueProvider::OnRefreshPoliciesDone, - weak_ptr_factory_.GetWeakPtr())); + weak_ptr_factory_.GetWeakPtr()), + policy::PolicyFetchReason::kUserRequest); } void ChromePoliciesValueProvider::OnRefreshPoliciesDone() {
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc index 0825338..769d4b2 100644 --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc
@@ -60,7 +60,6 @@ #include "chrome/browser/preloading/preloading_prefs.h" #include "chrome/browser/printing/print_preview_sticky_settings.h" #include "chrome/browser/profiles/chrome_version_service.h" -#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_attributes_entry.h" #include "chrome/browser/profiles/profile_attributes_storage.h" #include "chrome/browser/profiles/profile_impl.h" @@ -167,6 +166,7 @@ #include "components/site_engagement/content/site_engagement_service.h" #include "components/subresource_filter/content/browser/ruleset_service.h" #include "components/supervised_user/core/common/buildflags.h" +#include "components/sync/base/pref_names.h" #include "components/sync/service/glue/sync_transport_data_prefs.h" #include "components/sync/service/sync_prefs.h" #include "components/sync_device_info/device_info_prefs.h" @@ -956,6 +956,9 @@ const char kSettingsMigratedToUPM[] = "profile.settings_migrated_to_upm"; #endif +// Deprecated 10/2023. +inline constexpr char kSyncRequested[] = "sync.requested"; + // Register local state used only for migration (clearing or moving to a new // key). void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { @@ -1340,6 +1343,20 @@ #if BUILDFLAG(IS_ANDROID) registry->RegisterBooleanPref(kSettingsMigratedToUPM, false); #endif + registry->RegisterBooleanPref(kSyncRequested, false); +} + +void ClearSyncRequestedPrefAndMaybeMigrate(PrefService* profile_prefs) { +#if BUILDFLAG(IS_CHROMEOS_ASH) + // On Ash specifically, if `kSyncRequested` was set to false explicitly, the + // value needs to be migrated to syncer::internal::kSyncDisabledViaDashboard. + if (profile_prefs->GetUserPrefValue(kSyncRequested) != nullptr && + !profile_prefs->GetUserPrefValue(kSyncRequested)->GetBool()) { + profile_prefs->SetBoolean( + syncer::prefs::internal::kSyncDisabledViaDashboard, true); + } +#endif + profile_prefs->ClearPref(kSyncRequested); } } // namespace @@ -2202,7 +2219,7 @@ // This method should be periodically pruned of year+ old migrations. // See chrome/browser/prefs/README.md for details. -void MigrateObsoleteProfilePrefs(Profile* profile) { +void MigrateObsoleteProfilePrefs(PrefService* profile_prefs) { // IMPORTANT NOTE: This code is *not* run on iOS Chrome. If a pref is migrated // or cleared here, and that pref is also used in iOS Chrome, it may also need // to be migrated or cleared specifically for iOS as well. This could be by @@ -2213,8 +2230,6 @@ // BEGIN_MIGRATE_OBSOLETE_PROFILE_PREFS // Please don't delete the preceding line. It is used by PRESUBMIT.py. - PrefService* profile_prefs = profile->GetPrefs(); - // Check MigrateDeprecatedAutofillPrefs() to see if this is safe to remove. autofill::prefs::MigrateDeprecatedAutofillPrefs(profile_prefs); @@ -2514,6 +2529,9 @@ profile_prefs->ClearPref(kSettingsMigratedToUPM); #endif + // Added 10/2023. + ClearSyncRequestedPrefAndMaybeMigrate(profile_prefs); + // Please don't delete the following line. It is used by PRESUBMIT.py. // END_MIGRATE_OBSOLETE_PROFILE_PREFS
diff --git a/chrome/browser/prefs/browser_prefs.h b/chrome/browser/prefs/browser_prefs.h index 6e148d76..e2566884 100644 --- a/chrome/browser/prefs/browser_prefs.h +++ b/chrome/browser/prefs/browser_prefs.h
@@ -13,7 +13,6 @@ class PrefRegistrySimple; class PrefService; -class Profile; namespace user_prefs { class PrefRegistrySyncable; @@ -54,10 +53,10 @@ // *the* place to drop deprecated browser-level (Local State) prefs at. void MigrateObsoleteLocalStatePrefs(PrefService* local_state); -// Migrate/cleanup deprecated prefs in |profile|'s pref store. Over time, long +// Migrate/cleanup deprecated prefs in |profile_prefs|. Over time, long // deprecated prefs should be removed as new ones are added, but this call // should never go away (even if it becomes an empty call for some time) as it // should remain *the* place to drop deprecated profile prefs at. -void MigrateObsoleteProfilePrefs(Profile* profile); +void MigrateObsoleteProfilePrefs(PrefService* profile_prefs); #endif // CHROME_BROWSER_PREFS_BROWSER_PREFS_H_
diff --git a/chrome/browser/prefs/browser_prefs_unittest.cc b/chrome/browser/prefs/browser_prefs_unittest.cc new file mode 100644 index 0000000..83a767a --- /dev/null +++ b/chrome/browser/prefs/browser_prefs_unittest.cc
@@ -0,0 +1,57 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/prefs/browser_prefs.h" + +#include "build/build_config.h" +#include "components/sync/base/pref_names.h" +#include "components/sync_preferences/testing_pref_service_syncable.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace { + +constexpr char kSyncRequested[] = "sync.requested"; + +class BrowserPrefsTest : public testing::Test { + protected: + BrowserPrefsTest() { RegisterUserProfilePrefs(prefs_.registry()); } + + sync_preferences::TestingPrefServiceSyncable prefs_; +}; + +TEST_F(BrowserPrefsTest, MigrateObsoleteProfilePrefSyncRequestedDefaultValue) { + MigrateObsoleteProfilePrefs(&prefs_); + EXPECT_EQ(nullptr, prefs_.GetUserPrefValue(kSyncRequested)); + +#if BUILDFLAG(IS_CHROMEOS_ASH) + EXPECT_EQ(nullptr, prefs_.GetUserPrefValue( + syncer::prefs::internal::kSyncDisabledViaDashboard)); +#endif +} + +TEST_F(BrowserPrefsTest, MigrateObsoleteProfilePrefSyncRequestedSetToTrue) { + prefs_.SetBoolean(kSyncRequested, true); + MigrateObsoleteProfilePrefs(&prefs_); + EXPECT_EQ(nullptr, prefs_.GetUserPrefValue(kSyncRequested)); + +#if BUILDFLAG(IS_CHROMEOS_ASH) + EXPECT_EQ(nullptr, prefs_.GetUserPrefValue( + syncer::prefs::internal::kSyncDisabledViaDashboard)); +#endif +} + +TEST_F(BrowserPrefsTest, MigrateObsoleteProfilePrefSyncRequestedSetToFalse) { + prefs_.SetBoolean(kSyncRequested, false); + MigrateObsoleteProfilePrefs(&prefs_); + EXPECT_EQ(nullptr, prefs_.GetUserPrefValue(kSyncRequested)); + +#if BUILDFLAG(IS_CHROMEOS_ASH) + EXPECT_NE(nullptr, prefs_.GetUserPrefValue( + syncer::prefs::internal::kSyncDisabledViaDashboard)); + EXPECT_TRUE( + prefs_.GetBoolean(syncer::prefs::internal::kSyncDisabledViaDashboard)); +#endif +} + +} // namespace
diff --git a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_service.h b/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_service.h index d864c02..d72c623c 100644 --- a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_service.h +++ b/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_service.h
@@ -220,6 +220,8 @@ base::OnceClosure streaming_url_loader_destruction_callback); private: + friend class PrerenderOmniboxSearchSuggestionBrowserTest; + // Returns whether the prefetch started or not. bool MaybePrefetchURL(const GURL& url, bool navigation_prefetch,
diff --git a/chrome/browser/preloading/prerender/omnibox_prerender_browsertest.cc b/chrome/browser/preloading/prerender/omnibox_prerender_browsertest.cc index 9cb27ed..ff8df38 100644 --- a/chrome/browser/preloading/prerender/omnibox_prerender_browsertest.cc +++ b/chrome/browser/preloading/prerender/omnibox_prerender_browsertest.cc
@@ -15,6 +15,8 @@ #include "chrome/browser/predictors/autocomplete_action_predictor_factory.h" #include "chrome/browser/preloading/chrome_preloading.h" #include "chrome/browser/preloading/prefetch/search_prefetch/field_trial_settings.h" +#include "chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_service.h" +#include "chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_service_factory.h" #include "chrome/browser/preloading/preloading_prefs.h" #include "chrome/browser/preloading/prerender/prerender_manager.h" #include "chrome/browser/profiles/profile.h" @@ -55,6 +57,8 @@ using UkmEntry = ukm::TestUkmRecorder::HumanReadableUkmEntry; using ukm::builders::Preloading_Attempt; +} // namespace + class OmniboxPrerenderBrowserTest : public PlatformBrowserTest { public: OmniboxPrerenderBrowserTest() @@ -225,7 +229,7 @@ feature_list_.InitWithFeaturesAndParameters( {{features::kSupportSearchSuggestionForPrerender2, { - {"implementation_type", "ignore_prefetch"}, + {"implementation_type", "use_prefetch"}, }}}, {}); } @@ -261,23 +265,24 @@ return canonical_search_url; } - int PrerenderQuery(const std::string& search_terms, - const GURL& expected_prerender_url) { + void PrerenderQuery(const std::string& search_terms) { + auto* search_prefetch_service = + SearchPrefetchServiceFactory::GetForProfile(GetProfile()); AutocompleteMatch match = CreateSearchSuggestionMatch(search_terms); - prerender_manager_->StartPrerenderSearchSuggestion( - match, GetCanonicalSearchURL(match.destination_url)); - int host_id = prerender_helper().GetHostForUrl(expected_prerender_url); - EXPECT_NE(host_id, content::RenderFrameHost::kNoFrameTreeNodeId); - return host_id; + auto* template_url_service = + TemplateURLServiceFactory::GetForProfile(GetProfile()); + search_prefetch_service->CoordinatePrefetchWithPrerender( + match, GetActiveWebContents(), template_url_service, + GetCanonicalSearchURL(match.destination_url)); } GURL GetSearchSuggestionUrl(const std::string& search_terms, - bool is_prerender) { + bool with_parameter) { std::string url_template = prerender_page_target_ + "?q=$1$2&type=test"; return search_engine_server_.GetURL( kSearchDomain, base::ReplaceStringPlaceholders( - url_template, {search_terms, is_prerender ? "&pf=cs" : ""}, + url_template, {search_terms, with_parameter ? "&pf=cs" : ""}, nullptr)); } @@ -300,32 +305,14 @@ observer.Wait(); } - void PrerenderAndActivate(const std::string& search_terms, - bool update_history_before_activation) { - GURL expected_prerender_url = - GetSearchSuggestionUrl(search_terms, /*is_prerender=*/true); - int host_id = PrerenderQuery(search_terms, expected_prerender_url); + void PrerenderAndActivate(const std::string& search_terms) { + PrerenderQuery(search_terms); + GURL prerendered_url = + GetSearchSuggestionUrl(search_terms, /*with_parameter=*/false); prerender_helper().WaitForPrerenderLoadCompletion(*GetActiveWebContents(), - expected_prerender_url); - - std::string script = R"( - const url = new URL(document.URL); - url.searchParams.delete('pf'); - history.replaceState(null, "", url.toString()); - )"; - GURL expected_activated_url = - GetSearchSuggestionUrl(search_terms, /*is_prerender=*/false); - content::RenderFrameHost* prerender_frame_host = - prerender_helper().GetPrerenderedMainFrameHost(host_id); - if (update_history_before_activation) { - ASSERT_EQ(true, content::ExecJs(prerender_frame_host, script)); - } - NavigateToPrerenderedResult(expected_prerender_url); - if (!update_history_before_activation) { - ASSERT_EQ(true, content::ExecJs(prerender_frame_host, script)); - } - EXPECT_EQ(GetActiveWebContents()->GetLastCommittedURL(), - expected_activated_url); + prerendered_url); + NavigateToPrerenderedResult(prerendered_url); + EXPECT_EQ(GetActiveWebContents()->GetLastCommittedURL(), prerendered_url); } PrerenderManager* prerender_manager() { return prerender_manager_; } @@ -338,7 +325,7 @@ base::UTF8ToUTF16(search_terms)); match.search_terms_args->original_query = base::UTF8ToUTF16(search_terms); match.destination_url = - GetSearchSuggestionUrl(search_terms, /*is_prerender=*/false); + GetSearchSuggestionUrl(search_terms, /*with_parameter=*/true); match.keyword = base::UTF8ToUTF16(search_terms); match.RecordAdditionalInfo("should_prerender", "true"); return match; @@ -374,32 +361,24 @@ }; class PrerenderOmniboxSearchSuggestionReloadBrowserTest - : public testing::WithParamInterface<bool>, - public PrerenderOmniboxSearchSuggestionBrowserTest { + : public PrerenderOmniboxSearchSuggestionBrowserTest { public: PrerenderOmniboxSearchSuggestionReloadBrowserTest() { feature_list_.InitWithFeaturesAndParameters( {{features::kSupportSearchSuggestionForPrerender2, { - {"implementation_type", "ignore_prefetch"}, + {"implementation_type", "use_prefetch"}, }}}, // Disable BFCache, to test the HTTP Cache path. {features::kBackForwardCache}); } - protected: - bool UpdateHistoryBeforeActivation() const { return GetParam(); } - private: base::test::ScopedFeatureList feature_list_; }; -INSTANTIATE_TEST_SUITE_P(All, - PrerenderOmniboxSearchSuggestionReloadBrowserTest, - testing::Bool()); - // Test back or forward navigations can use the HTTP Cache. -IN_PROC_BROWSER_TEST_P(PrerenderOmniboxSearchSuggestionReloadBrowserTest, +IN_PROC_BROWSER_TEST_F(PrerenderOmniboxSearchSuggestionReloadBrowserTest, BackNavigationHitsHttpCache) { base::HistogramTester histogram_tester; const GURL kInitialUrl = embedded_test_server()->GetURL("/empty.html"); @@ -409,23 +388,23 @@ // 1. Prerender the first page. std::string search_terms_1 = "prerender2222"; - GURL expected_prerender_url_1 = - GetSearchSuggestionUrl(search_terms_1, /*is_prerender=*/true); + GURL expected_prefetched_url_1 = + GetSearchSuggestionUrl(search_terms_1, /*with_parameter=*/true); GURL expected_activated_url_1 = - GetSearchSuggestionUrl(search_terms_1, /*is_prerender=*/false); - PrerenderAndActivate(search_terms_1, UpdateHistoryBeforeActivation()); + GetSearchSuggestionUrl(search_terms_1, /*with_parameter=*/false); + PrerenderAndActivate(search_terms_1); EXPECT_EQ(0, prerender_helper().GetRequestCount(expected_activated_url_1)); - EXPECT_EQ(1, prerender_helper().GetRequestCount(expected_prerender_url_1)); + EXPECT_EQ(1, prerender_helper().GetRequestCount(expected_prefetched_url_1)); // 2. Prerender and activate another page. std::string search_terms_2 = "prefetch233"; - GURL expected_prerender_url_2 = - GetSearchSuggestionUrl(search_terms_2, /*is_prerender=*/true); + GURL expected_prefetched_url_2 = + GetSearchSuggestionUrl(search_terms_2, /*with_parameter=*/true); GURL expected_activated_url_2 = - GetSearchSuggestionUrl(search_terms_2, /*is_prerender=*/false); - PrerenderAndActivate(search_terms_2, UpdateHistoryBeforeActivation()); + GetSearchSuggestionUrl(search_terms_2, /*with_parameter=*/false); + PrerenderAndActivate(search_terms_2); EXPECT_EQ(0, prerender_helper().GetRequestCount(expected_activated_url_2)); - EXPECT_EQ(1, prerender_helper().GetRequestCount(expected_prerender_url_2)); + EXPECT_EQ(1, prerender_helper().GetRequestCount(expected_prefetched_url_2)); // 3. Navigate back. Chrome is supposed to read the response from the cache, // instead of sending another request. @@ -435,7 +414,7 @@ EXPECT_EQ(expected_activated_url_1, GetActiveWebContents()->GetLastCommittedURL()); EXPECT_EQ(0, prerender_helper().GetRequestCount(expected_activated_url_1)); - EXPECT_EQ(1, prerender_helper().GetRequestCount(expected_prerender_url_1)); + EXPECT_EQ(1, prerender_helper().GetRequestCount(expected_prefetched_url_1)); } class PrerenderOmniboxSearchSuggestionExpiryBrowserTest @@ -445,25 +424,30 @@ feature_list_.InitWithFeaturesAndParameters( {{features::kSupportSearchSuggestionForPrerender2, { - {"implementation_type", "ignore_prefetch"}, + {"implementation_type", "use_prefetch"}, }}, - {kSearchPrefetchServicePrefetching, - { - {"prefetch_caching_limit_ms", "10"}, - }}}, + {kSearchPrefetchServicePrefetching, {}}}, {}); } protected: - void PrerenderQueryAndWaitForExpiring(const std::string& search_terms, - const GURL& expected_prerender_url) { - int host_id = PrerenderQuery(search_terms, expected_prerender_url); + void PrerenderQueryAndWaitForExpiring(const std::string& search_terms) { + content::test::PrerenderHostRegistryObserver registry_observer( + *GetActiveWebContents()); + PrerenderQuery(search_terms); + GURL prerendered_url = + GetSearchSuggestionUrl(search_terms, /*with_parameter=*/false); + registry_observer.WaitForTrigger(prerendered_url); + int host_id = prerender_helper().GetHostForUrl(prerendered_url); + ASSERT_NE(host_id, content::RenderFrameHost::kNoFrameTreeNodeId); content::test::PrerenderHostObserver prerender_observer( *GetActiveWebContents(), host_id); - // The prerender will be destroyed automatically soon, since the duration is - // set to 10ms. + // The prerender will be destroyed automatically for expiry. + auto* search_prefetch_service = + SearchPrefetchServiceFactory::GetForProfile(GetProfile()); + search_prefetch_service->FireAllExpiryTimerForTesting(); prerender_observer.WaitForDestroyed(); } @@ -482,36 +466,35 @@ InitializePrerenderManager(); std::string search_query = "prerender2"; - GURL expected_prerender_url = - GetSearchSuggestionUrl("prerender222", /*is_prerender=*/true); - PrerenderQueryAndWaitForExpiring("prerender222", expected_prerender_url); + PrerenderQueryAndWaitForExpiring("prerender222"); histogram_tester.ExpectUniqueSample( "Prerender.Experimental.PrerenderHostFinalStatus.Embedder_" "DefaultSearchEngine", /*PrerenderFinalStatus::kTriggerDestroyed*/ 16, 1); + // The prediction should be treated as cancelled. + histogram_tester.ExpectUniqueSample( + internal::kHistogramPrerenderPredictionStatusDefaultSearchEngine, + PrerenderPredictionStatus::kCancelled, 1); + // Select the prerender hint. The prerendered result has been deleted, so // browser loads the search result over again. content::TestNavigationObserver observer(GetActiveWebContents()); GetActiveWebContents()->OpenURL(content::OpenURLParams( - expected_prerender_url, content::Referrer(), - WindowOpenDisposition::CURRENT_TAB, + GetSearchSuggestionUrl("prerender222", /*with_parameter=*/false), + content::Referrer(), WindowOpenDisposition::CURRENT_TAB, ui::PageTransitionFromInt(ui::PAGE_TRANSITION_GENERATED | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR), /*is_renderer_initiated=*/false)); observer.Wait(); - // The prediction is correct, so kHitFinished should be recorded. - histogram_tester.ExpectUniqueSample( - internal::kHistogramPrerenderPredictionStatusDefaultSearchEngine, - PrerenderPredictionStatus::kHitFinished, 1); - // Since the prerendered page ran out of time, the timing metric should - // record `prefetch_caching_limit_ms`. - histogram_tester.ExpectUniqueTimeSample( + // This metric is recorded only when prerendering is alive on primary page + // changed. + histogram_tester.ExpectTotalCount( "Prerender.Experimental.Search." "FirstCorrectPrerenderHintReceivedToRealSearchNavigationStartedDuration", - base::Milliseconds(10), 1); + 0); } // Tests that kCanceled is correctly recorded in the case that PrerenderManager @@ -526,39 +509,21 @@ ASSERT_TRUE(content::NavigateToURL(GetActiveWebContents(), kInitialUrl)); InitializePrerenderManager(); - GURL expected_prerender_url = - GetSearchSuggestionUrl("prerender222", /*is_prerender=*/true); // Prerender the first query, and wait for it to be deleted. - PrerenderQueryAndWaitForExpiring("prerender222", expected_prerender_url); + PrerenderQueryAndWaitForExpiring("prerender222"); histogram_tester.ExpectUniqueSample( "Prerender.Experimental.PrerenderHostFinalStatus.Embedder_" "DefaultSearchEngine", /*PrerenderFinalStatus::kTriggerDestroyed*/ 16, 1); - // Nothing should be recorded. Because there is no new navigation nor new - // search suggestion. - histogram_tester.ExpectTotalCount( - internal::kHistogramPrerenderPredictionStatusDefaultSearchEngine, 0); - - // Suggest to prerender another term. - GURL prerender_url_2 = - GetSearchSuggestionUrl("prerender233", /*is_prerender=*/true); - PrerenderQuery("prerender233", prerender_url_2); - - // PrerenderPredictionStatus::kCancelled should be recorded for the prediction - // of "prerender222". + // The prediction should be treated as cancelled. histogram_tester.ExpectUniqueSample( internal::kHistogramPrerenderPredictionStatusDefaultSearchEngine, PrerenderPredictionStatus::kCancelled, 1); - content::TestNavigationObserver observer(GetActiveWebContents()); - GetActiveWebContents()->OpenURL(content::OpenURLParams( - prerender_url_2, content::Referrer(), WindowOpenDisposition::CURRENT_TAB, - ui::PageTransitionFromInt(ui::PAGE_TRANSITION_GENERATED | - ui::PAGE_TRANSITION_FROM_ADDRESS_BAR), - /*is_renderer_initiated=*/false)); - observer.Wait(); + // Prerender another term and activate it. + PrerenderAndActivate("prerender233"); // The prediction is correct, so kHitFinished should be recorded. histogram_tester.ExpectBucketCount( @@ -569,5 +534,3 @@ histogram_tester.ExpectTotalCount( internal::kHistogramPrerenderPredictionStatusDefaultSearchEngine, 2); } - -} // namespace
diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc index a914f71..90859a9 100644 --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc
@@ -1106,7 +1106,7 @@ TRACE_EVENT0("browser", "ProfileImpl::OnLocaleReady"); // Migrate obsolete prefs. - MigrateObsoleteProfilePrefs(this); + MigrateObsoleteProfilePrefs(GetPrefs()); #if BUILDFLAG(ENABLE_EXTENSIONS) // Note: Extension preferences can be keyed off the extension ID, so need to // be handled specially (rather than directly as part of
diff --git a/chrome/browser/resources/chromeos/login/components/dialogs/oobe_loading_dialog.html b/chrome/browser/resources/chromeos/login/components/dialogs/oobe_loading_dialog.html index 5068ec58..e157d84f 100644 --- a/chrome/browser/resources/chromeos/login/components/dialogs/oobe_loading_dialog.html +++ b/chrome/browser/resources/chromeos/login/components/dialogs/oobe_loading_dialog.html
@@ -23,7 +23,8 @@ <div slot="subtitle">[[i18nDynamic(locale, subtitleKey)]]</div> </template> <div slot="content" class="flex layout vertical center center-justified"> - <oobe-cr-lottie id="spinner" animation-url="../../animations/spinner.json"> + <oobe-cr-lottie id="spinner" hide-play-pause-icon + animation-url="../../animations/spinner.json"> </oobe-cr-lottie> </div> <!-- Cancel button -->
diff --git a/chrome/browser/resources/chromeos/login/components/oobe_cr_lottie.html b/chrome/browser/resources/chromeos/login/components/oobe_cr_lottie.html index 086a6c2..00fc4f8 100644 --- a/chrome/browser/resources/chromeos/login/components/oobe_cr_lottie.html +++ b/chrome/browser/resources/chromeos/login/components/oobe_cr_lottie.html
@@ -40,6 +40,9 @@ </style> <div id="container"> <!-- <cros-lottie-renderer> created dynamically --> - <cr-icon-button id="playPauseIcon" iron-icon="[[getIcon_(playing)]]" - aria-label$="[[getAria_(locale, playing)]]"></cr-icon-button> + <div id="playPauseIconContainer" hidden="[[hidePlayPauseIcon]]" > + <cr-icon-button id="playPauseIcon" iron-icon="[[getIcon_(playing)]]" + aria-label$="[[getAria_(locale, playing)]]"></cr-icon-button> + </div> + </div>
diff --git a/chrome/browser/resources/chromeos/login/components/oobe_cr_lottie.js b/chrome/browser/resources/chromeos/login/components/oobe_cr_lottie.js index 6f79f01..c50d946 100644 --- a/chrome/browser/resources/chromeos/login/components/oobe_cr_lottie.js +++ b/chrome/browser/resources/chromeos/login/components/oobe_cr_lottie.js
@@ -57,6 +57,11 @@ value: '', }, + hidePlayPauseIcon: { + type: Boolean, + value: false, + }, + preload: { type: Boolean, value: false, @@ -88,6 +93,9 @@ } onClick_() { + if (this.hidePlayPauseIcon) { + return; + } this.playing = !this.playing; } @@ -102,7 +110,8 @@ this.animationPlayer.setAttribute('asset-url', this.animationUrl); this.animationPlayer.setAttribute('dynamic', this.dynamic); this.animationPlayer.autoplay = autoplay; - this.$.container.insertBefore(this.animationPlayer, this.$.playPauseIcon); + this.$.container.insertBefore( + this.animationPlayer, this.$.playPauseIconContainer); ColorChangeUpdater.forDocument().eventTarget.addEventListener( COLOR_PROVIDER_CHANGED, () => this.onColorChange()); }
diff --git a/chrome/browser/safe_browsing/incident_reporting/module_integrity_verifier_win_unittest.cc b/chrome/browser/safe_browsing/incident_reporting/module_integrity_verifier_win_unittest.cc index 08897779..dc3552dd 100644 --- a/chrome/browser/safe_browsing/incident_reporting/module_integrity_verifier_win_unittest.cc +++ b/chrome/browser/safe_browsing/incident_reporting/module_integrity_verifier_win_unittest.cc
@@ -14,10 +14,12 @@ #include <string> #include <vector> +#include "base/containers/span.h" #include "base/files/file_path.h" #include "base/files/memory_mapped_file.h" #include "base/memory/raw_ptr.h" #include "base/native_library.h" +#include "base/ranges/algorithm.h" #include "base/scoped_native_library.h" #include "base/strings/utf_string_conversions.h" #include "base/win/pe_image.h" @@ -35,16 +37,17 @@ template <size_t ModificationLength> class ScopedModuleModifier { public: - explicit ScopedModuleModifier(uint8_t* address) : address_(address) { + explicit ScopedModuleModifier(uint8_t* address) + : modification_region_(address, ModificationLength) { uint8_t modification[ModificationLength]; - std::transform(address, address + ModificationLength, &modification[0], - [](uint8_t byte) { return byte + 1U; }); + + base::ranges::transform(modification_region_, std::begin(modification), + [](uint8_t byte) { return byte + 1U; }); SIZE_T bytes_written = 0; - EXPECT_NE(0, WriteProcessMemory(GetCurrentProcess(), - address, - &modification[0], - ModificationLength, - &bytes_written)); + EXPECT_NE( + 0, WriteProcessMemory(GetCurrentProcess(), modification_region_.data(), + std::begin(modification), ModificationLength, + &bytes_written)); EXPECT_EQ(ModificationLength, bytes_written); } @@ -53,19 +56,19 @@ ~ScopedModuleModifier() { uint8_t modification[ModificationLength]; - std::transform(address_.get(), (address_ + ModificationLength).get(), - &modification[0], [](uint8_t byte) { return byte - 1U; }); + + base::ranges::transform(modification_region_, std::begin(modification), + [](uint8_t byte) { return byte - 1U; }); SIZE_T bytes_written = 0; - EXPECT_NE(0, WriteProcessMemory(GetCurrentProcess(), - address_, - &modification[0], - ModificationLength, - &bytes_written)); + EXPECT_NE( + 0, WriteProcessMemory(GetCurrentProcess(), modification_region_.data(), + std::begin(modification), ModificationLength, + &bytes_written)); EXPECT_EQ(ModificationLength, bytes_written); } private: - raw_ptr<uint8_t, AllowPtrArithmetic> address_; + base::span<uint8_t> modification_region_; }; } // namespace
diff --git a/chrome/browser/signin/dice_browsertest.cc b/chrome/browser/signin/dice_browsertest.cc index 33b6f5f..1f23ef5 100644 --- a/chrome/browser/signin/dice_browsertest.cc +++ b/chrome/browser/signin/dice_browsertest.cc
@@ -63,7 +63,6 @@ #include "components/signin/public/identity_manager/identity_manager.h" #include "components/signin/public/identity_manager/identity_test_utils.h" #include "components/signin/public/identity_manager/primary_account_mutator.h" -#include "components/sync/base/pref_names.h" #include "components/sync/service/sync_prefs.h" #include "components/sync_user_events/user_event_service.h" #include "content/public/browser/browser_task_traits.h" @@ -985,8 +984,6 @@ WaitForSigninSucceeded(); EXPECT_EQ(GetMainAccountID(), GetIdentityManager()->GetPrimaryAccountId( signin::ConsentLevel::kSignin)); - EXPECT_TRUE(browser()->profile()->GetPrefs()->GetBoolean( - syncer::prefs::internal::kSyncRequested)); histogram_tester.ExpectUniqueSample("Signin.SignIn.Completed", access_point, 1); @@ -1086,8 +1083,6 @@ WaitForSigninSucceeded(); EXPECT_EQ(GetMainAccountID(), GetIdentityManager()->GetPrimaryAccountId( signin::ConsentLevel::kSignin)); - EXPECT_TRUE(browser()->profile()->GetPrefs()->GetBoolean( - syncer::prefs::internal::kSyncRequested)); // Wait until the sync confirmation webUI is created but not fully loaded // yet. The native dialog is not displayed yet since it waits until the webUI
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index 1e16f25..76a31809 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn
@@ -4563,6 +4563,7 @@ "autofill/delete_address_profile_dialog_controller.h", "autofill/delete_address_profile_dialog_controller_impl.cc", "autofill/delete_address_profile_dialog_controller_impl.h", + "autofill/delete_address_profile_dialog_view.h", "autofill/edit_address_profile_dialog_controller.h", "autofill/edit_address_profile_dialog_controller_impl.cc", "autofill/edit_address_profile_dialog_controller_impl.h", @@ -4712,7 +4713,6 @@ "views/autofill/autofill_bubble_utils.cc", "views/autofill/autofill_bubble_utils.h", "views/autofill/delete_address_profile_dialog_view.cc", - "views/autofill/delete_address_profile_dialog_view.h", "views/autofill/edit_address_profile_view.cc", "views/autofill/edit_address_profile_view.h", "views/autofill/payments/autofill_error_dialog_view_native_views.cc", @@ -5332,6 +5332,8 @@ "views/passwords/manage_passwords_view_ids.h", "views/passwords/move_to_account_store_bubble_view.cc", "views/passwords/move_to_account_store_bubble_view.h", + "views/passwords/password_add_username_view.cc", + "views/passwords/password_add_username_view.h", "views/passwords/password_auto_sign_in_view.cc", "views/passwords/password_auto_sign_in_view.h", "views/passwords/password_bubble_view_base.cc",
diff --git a/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc b/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc index c2cddc92..7b4c872c 100644 --- a/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc +++ b/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc
@@ -30,6 +30,7 @@ #include "components/feature_engagement/public/feature_constants.h" #include "components/feature_engagement/public/tracker.h" #include "components/strings/grit/components_strings.h" +#include "content/public/browser/navigation_handle.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_widget_host_view.h" #include "content/public/browser/web_contents.h" @@ -151,6 +152,16 @@ } } +void AutofillPopupControllerImpl::DidFinishNavigation( + content::NavigationHandle* navigation_handle) { + if (key_press_observer_.handler && + key_press_observer_.rfh == + navigation_handle->GetPreviousRenderFrameHostId() && + !navigation_handle->IsSameDocument()) { + Hide(PopupHidingReason::kNavigation); + } +} + void AutofillPopupControllerImpl::OnVisibilityChanged( content::Visibility visibility) { if (visibility == content::Visibility::HIDDEN) {
diff --git a/chrome/browser/ui/autofill/autofill_popup_controller_impl.h b/chrome/browser/ui/autofill/autofill_popup_controller_impl.h index 1e9c7d0..da4b566 100644 --- a/chrome/browser/ui/autofill/autofill_popup_controller_impl.h +++ b/chrome/browser/ui/autofill/autofill_popup_controller_impl.h
@@ -250,6 +250,8 @@ // content::WebContentsObserver: void RenderFrameDeleted(content::RenderFrameHost* render_frame_host) override; + void DidFinishNavigation( + content::NavigationHandle* navigation_handle) override; void OnVisibilityChanged(content::Visibility visibility) override; // Clear the internal state of the controller. This is needed to ensure that
diff --git a/chrome/browser/ui/autofill/autofill_popup_controller_impl_unittest.cc b/chrome/browser/ui/autofill/autofill_popup_controller_impl_unittest.cc index 23f32e24..32cb66b 100644 --- a/chrome/browser/ui/autofill/autofill_popup_controller_impl_unittest.cc +++ b/chrome/browser/ui/autofill/autofill_popup_controller_impl_unittest.cc
@@ -39,6 +39,7 @@ #include "components/autofill/core/common/aliases.h" #include "components/password_manager/core/common/password_manager_features.h" #include "components/prefs/pref_service.h" +#include "content/public/browser/render_widget_host_view.h" #include "content/public/browser/web_contents.h" #include "content/public/common/input/native_web_keyboard_event.h" #include "content/public/test/navigation_simulator.h" @@ -407,6 +408,9 @@ std::vector<Suggestion> suggestions, AutofillSuggestionTriggerSource trigger_source = AutofillSuggestionTriggerSource::kFormControlElementClicked) { + FocusWebContentsOnFrame( + static_cast<ContentAutofillDriver&>(manager.driver()) + .render_frame_host()); client().popup_controller(manager).Show(std::move(suggestions), trigger_source, AutoselectFirstSuggestion(false)); @@ -1072,4 +1076,103 @@ } #endif +class AutofillPopupControllerImplTestHidingLogic + : public AutofillPopupControllerImplTest { + public: + void SetUp() override { + AutofillPopupControllerImplTest::SetUp(); + sub_frame_ = CreateAndNavigateChildFrame( + main_frame(), GURL("https://bar.com"), "sub_frame"); + } + + void TearDown() override { + sub_frame_ = nullptr; + AutofillPopupControllerImplTest::TearDown(); + } + + BrowserAutofillManagerWithMockDelegate& sub_manager() { + return manager(sub_frame_); + } + + protected: + raw_ptr<content::RenderFrameHost> sub_frame_ = nullptr; +}; + +// Tests that if the popup is shown in the *main frame*, destruction of the +// *sub frame* does not hide the popup. +TEST_F(AutofillPopupControllerImplTestHidingLogic, + KeepOpenInMainFrameOnSubFrameDestruction) { + ShowSuggestions(manager(), {PopupItemId::kAddressEntry}); + test::GenerateTestAutofillPopup(&manager().external_delegate()); + EXPECT_CALL(client().popup_controller(manager()), Hide).Times(0); + content::RenderFrameHostTester::For(sub_frame_.ExtractAsDangling())->Detach(); + // Verify and clear before TearDown() closes the popup. + Mock::VerifyAndClearExpectations(&client().popup_controller(manager())); +} + +// Tests that if the popup is shown in the *main frame*, a navigation in the +// *sub frame* does not hide the popup. +TEST_F(AutofillPopupControllerImplTestHidingLogic, + KeepOpenInMainFrameOnSubFrameNavigation) { + ShowSuggestions(manager(), {PopupItemId::kAddressEntry}); + test::GenerateTestAutofillPopup(&manager().external_delegate()); + EXPECT_CALL(client().popup_controller(manager()), Hide).Times(0); + NavigateAndCommitFrame(sub_frame_, GURL("https://bar.com/")); + // Verify and clear before TearDown() closes the popup. + Mock::VerifyAndClearExpectations(&client().popup_controller(manager())); +} + +// Tests that if the popup is shown in the *main frame*, destruction of the +// *main frame* hides the popup. +TEST_F(AutofillPopupControllerImplTestHidingLogic, + HideInMainFrameOnDestruction) { + ShowSuggestions(manager(), {PopupItemId::kAddressEntry}); + test::GenerateTestAutofillPopup(&manager().external_delegate()); + EXPECT_CALL(client().popup_controller(manager()), + Hide(PopupHidingReason::kRendererEvent)); +} + +// Tests that if the popup is shown in the *sub frame*, destruction of the +// *sub frame* hides the popup. +TEST_F(AutofillPopupControllerImplTestHidingLogic, + HideInSubFrameOnDestruction) { + ShowSuggestions(sub_manager(), {PopupItemId::kAddressEntry}); + test::GenerateTestAutofillPopup(&sub_manager().external_delegate()); + EXPECT_CALL(client().popup_controller(sub_manager()), + Hide(PopupHidingReason::kRendererEvent)); +} + +// Tests that if the popup is shown in the *main frame*, a navigation in the +// *main frame* hides the popup. +TEST_F(AutofillPopupControllerImplTestHidingLogic, + HideInMainFrameOnMainFrameNavigation) { + ShowSuggestions(manager(), {PopupItemId::kAddressEntry}); + test::GenerateTestAutofillPopup(&manager().external_delegate()); + EXPECT_CALL(client().popup_controller(manager()), + Hide(PopupHidingReason::kNavigation)); + NavigateAndCommitFrame(main_frame(), GURL("https://bar.com/")); +} + +// Tests that if the popup is shown in the *sub frame*, a navigation in the +// *sub frame* hides the popup. +TEST_F(AutofillPopupControllerImplTestHidingLogic, + HideInSubFrameOnSubFrameNavigation) { + ShowSuggestions(sub_manager(), {PopupItemId::kAddressEntry}); + test::GenerateTestAutofillPopup(&sub_manager().external_delegate()); + EXPECT_CALL(client().popup_controller(sub_manager()), + Hide(PopupHidingReason::kNavigation)); + NavigateAndCommitFrame(sub_frame_, GURL("https://bar.com/")); +} + +// Tests that if the popup is shown in the *sub frame*, a navigation in the +// *main frame* hides the popup. +TEST_F(AutofillPopupControllerImplTestHidingLogic, + HideInSubFrameOnMainFrameNavigation) { + ShowSuggestions(sub_manager(), {PopupItemId::kAddressEntry}); + test::GenerateTestAutofillPopup(&sub_manager().external_delegate()); + EXPECT_CALL(client().popup_controller(sub_manager()), + Hide(PopupHidingReason::kRendererEvent)); + NavigateAndCommitFrame(main_frame(), GURL("https://bar.com/")); +} + } // namespace autofill
diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/browser/ui/autofill/chrome_autofill_client.cc index b48ae9e..6ed2444 100644 --- a/chrome/browser/ui/autofill/chrome_autofill_client.cc +++ b/chrome/browser/ui/autofill/chrome_autofill_client.cc
@@ -901,14 +901,18 @@ #endif } -void ChromeAutofillClient::ShowDeleteAddressProfileDialog() { +void ChromeAutofillClient::ShowDeleteAddressProfileDialog( + const AutofillProfile& profile, + AddressProfileDeleteDialogCallback delete_dialog_callback) { #if !BUILDFLAG(IS_ANDROID) DeleteAddressProfileDialogControllerImpl::CreateForWebContents( web_contents()); DeleteAddressProfileDialogControllerImpl* controller = DeleteAddressProfileDialogControllerImpl::FromWebContents(web_contents()); - controller->OfferDelete(/*is_account_address_profile=*/false, - /*delete_dialog_callback=*/base::DoNothing()); + controller->OfferDelete( + /*is_account_address_profile=*/profile.source() == + AutofillProfile::Source::kAccount, + /*delete_dialog_callback=*/std::move(delete_dialog_callback)); #else // Delete address profile dialog is only available is desktop. NOTREACHED_NORETURN();
diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.h b/chrome/browser/ui/autofill/chrome_autofill_client.h index 5fe9e7fb..d77a502 100644 --- a/chrome/browser/ui/autofill/chrome_autofill_client.h +++ b/chrome/browser/ui/autofill/chrome_autofill_client.h
@@ -223,7 +223,9 @@ void ShowEditAddressProfileDialog( const AutofillProfile& profile, AddressProfileSavePromptCallback on_user_decision_callback) override; - void ShowDeleteAddressProfileDialog() override; + void ShowDeleteAddressProfileDialog( + const AutofillProfile& profile, + AddressProfileDeleteDialogCallback delete_dialog_callback) override; void ConfirmSaveAddressProfile( const AutofillProfile& profile, const AutofillProfile* original_profile,
diff --git a/chrome/browser/ui/autofill/delete_address_profile_dialog_controller_impl.cc b/chrome/browser/ui/autofill/delete_address_profile_dialog_controller_impl.cc index c074915..2901dd53 100644 --- a/chrome/browser/ui/autofill/delete_address_profile_dialog_controller_impl.cc +++ b/chrome/browser/ui/autofill/delete_address_profile_dialog_controller_impl.cc
@@ -2,19 +2,20 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "chrome/browser/ui/autofill/delete_address_profile_dialog_controller_impl.h" + #include <string> #include "base/memory/weak_ptr.h" #include "chrome/browser/autofill/personal_data_manager_factory.h" #include "chrome/browser/autofill/ui/ui_util.h" -#include "chrome/browser/ui/autofill/delete_address_profile_dialog_controller_impl.h" +#include "chrome/browser/ui/autofill/delete_address_profile_dialog_view.h" #include "chrome/grit/generated_resources.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/signin/public/identity_manager/account_info.h" #include "components/strings/grit/components_strings.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents_user_data.h" -#include "delete_address_profile_dialog_controller_impl.h" #include "ui/base/l10n/l10n_util.h" #include "ui/views/widget/widget.h" @@ -40,7 +41,12 @@ } is_account_address_profile_ = is_account_address_profile; delete_dialog_callback_ = std::move(delete_dialog_callback); - // TODO(crbug.com/1459990): Open the delete dialog view. + + if (view_factory_for_test_) { + view_factory_for_test_.Run(web_contents_, GetWeakPtr()); + } else { + ShowDeleteAddressProfileDialogView(web_contents_, GetWeakPtr()); + } is_dialog_opened_ = true; } @@ -104,6 +110,11 @@ return weak_ptr_factory_.GetWeakPtr(); } +void DeleteAddressProfileDialogControllerImpl::SetViewFactoryForTest( + DeleteAddressProfileDialogViewFactory view_factory) { + view_factory_for_test_ = view_factory; +} + WEB_CONTENTS_USER_DATA_KEY_IMPL(DeleteAddressProfileDialogControllerImpl); } // namespace autofill
diff --git a/chrome/browser/ui/autofill/delete_address_profile_dialog_controller_impl.h b/chrome/browser/ui/autofill/delete_address_profile_dialog_controller_impl.h index 6f4f4902..37a91e9 100644 --- a/chrome/browser/ui/autofill/delete_address_profile_dialog_controller_impl.h +++ b/chrome/browser/ui/autofill/delete_address_profile_dialog_controller_impl.h
@@ -22,6 +22,10 @@ public content::WebContentsUserData< DeleteAddressProfileDialogControllerImpl> { public: + using DeleteAddressProfileDialogViewFactory = base::RepeatingCallback<void( + content::WebContents*, + base::WeakPtr<DeleteAddressProfileDialogController>)>; + DeleteAddressProfileDialogControllerImpl( const DeleteAddressProfileDialogControllerImpl&) = delete; DeleteAddressProfileDialogControllerImpl& operator=( @@ -42,6 +46,9 @@ void OnClosed() override; void OnDialogDestroying() override; + void SetViewFactoryForTest( + DeleteAddressProfileDialogViewFactory view_factory); + private: explicit DeleteAddressProfileDialogControllerImpl( content::WebContents* web_contents); @@ -55,6 +62,7 @@ bool is_account_address_profile_; AutofillClient::AddressProfileDeleteDialogCallback delete_dialog_callback_; absl::optional<bool> user_accepted_; + DeleteAddressProfileDialogViewFactory view_factory_for_test_; base::WeakPtrFactory<DeleteAddressProfileDialogController> weak_ptr_factory_{ this};
diff --git a/chrome/browser/ui/autofill/delete_address_profile_dialog_controller_impl_unittest.cc b/chrome/browser/ui/autofill/delete_address_profile_dialog_controller_impl_unittest.cc index 96bc88b..5939dab3 100644 --- a/chrome/browser/ui/autofill/delete_address_profile_dialog_controller_impl_unittest.cc +++ b/chrome/browser/ui/autofill/delete_address_profile_dialog_controller_impl_unittest.cc
@@ -43,6 +43,7 @@ DeleteAddressProfileDialogControllerImpl::CreateForWebContents( web_contents()); ASSERT_THAT(controller(), ::testing::NotNull()); + controller()->SetViewFactoryForTest(/*view_factory=*/base::DoNothing()); } void TearDown() override { BrowserWithTestWindowTest::TearDown(); }
diff --git a/chrome/browser/ui/autofill/delete_address_profile_dialog_view.h b/chrome/browser/ui/autofill/delete_address_profile_dialog_view.h new file mode 100644 index 0000000..9a8a3ee3 --- /dev/null +++ b/chrome/browser/ui/autofill/delete_address_profile_dialog_view.h
@@ -0,0 +1,25 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_AUTOFILL_DELETE_ADDRESS_PROFILE_DIALOG_VIEW_H_ +#define CHROME_BROWSER_UI_AUTOFILL_DELETE_ADDRESS_PROFILE_DIALOG_VIEW_H_ + +#include "base/memory/weak_ptr.h" + +namespace content { +class WebContents; +} // namespace content + +namespace autofill { +class DeleteAddressProfileDialogController; + +// Shows a modal dialog prompting to user whether they want to delete their +// profile address. +void ShowDeleteAddressProfileDialogView( + content::WebContents* web_contents, + base::WeakPtr<DeleteAddressProfileDialogController> controller); + +} // namespace autofill + +#endif // CHROME_BROWSER_UI_AUTOFILL_DELETE_ADDRESS_PROFILE_DIALOG_VIEW_H_
diff --git a/chrome/browser/ui/passwords/bubble_controllers/common_saved_account_manager_bubble_controller.cc b/chrome/browser/ui/passwords/bubble_controllers/common_saved_account_manager_bubble_controller.cc index e8c77d4..442af1e 100644 --- a/chrome/browser/ui/passwords/bubble_controllers/common_saved_account_manager_bubble_controller.cc +++ b/chrome/browser/ui/passwords/bubble_controllers/common_saved_account_manager_bubble_controller.cc
@@ -97,10 +97,10 @@ } void CommonSavedAccountManagerBubbleController:: - OnGooglePasswordManagerLinkClicked() { + OnGooglePasswordManagerLinkClicked( + password_manager::ManagePasswordsReferrer refferer) { if (delegate_) { - delegate_->NavigateToPasswordManagerSettingsPage( - password_manager::ManagePasswordsReferrer::kSaveUpdateBubble); + delegate_->NavigateToPasswordManagerSettingsPage(refferer); } }
diff --git a/chrome/browser/ui/passwords/bubble_controllers/common_saved_account_manager_bubble_controller.h b/chrome/browser/ui/passwords/bubble_controllers/common_saved_account_manager_bubble_controller.h index 30bbe4c..9f5fc15f 100644 --- a/chrome/browser/ui/passwords/bubble_controllers/common_saved_account_manager_bubble_controller.h +++ b/chrome/browser/ui/passwords/bubble_controllers/common_saved_account_manager_bubble_controller.h
@@ -36,7 +36,8 @@ // Called by the view code when the "Google Password Manager" link in the // bubble footer in clicked by the user. - void OnGooglePasswordManagerLinkClicked(); + void OnGooglePasswordManagerLinkClicked( + password_manager::ManagePasswordsReferrer refferer); // Returns the email of current primary account. Returns empty string if no // account is signed in.
diff --git a/chrome/browser/ui/passwords/bubble_controllers/common_saved_account_manager_bubble_controller_unittest.cc b/chrome/browser/ui/passwords/bubble_controllers/common_saved_account_manager_bubble_controller_unittest.cc index 925d8968..336e079 100644 --- a/chrome/browser/ui/passwords/bubble_controllers/common_saved_account_manager_bubble_controller_unittest.cc +++ b/chrome/browser/ui/passwords/bubble_controllers/common_saved_account_manager_bubble_controller_unittest.cc
@@ -130,5 +130,6 @@ PretendPasswordWaiting(); EXPECT_CALL(*delegate(), NavigateToPasswordManagerSettingsPage); - controller()->OnGooglePasswordManagerLinkClicked(); + controller()->OnGooglePasswordManagerLinkClicked( + password_manager::ManagePasswordsReferrer::kAddUsernameBubble); }
diff --git a/chrome/browser/ui/passwords/ui_utils.cc b/chrome/browser/ui/passwords/ui_utils.cc index 39e89ac..76ec8f3 100644 --- a/chrome/browser/ui/passwords/ui_utils.cc +++ b/chrome/browser/ui/passwords/ui_utils.cc
@@ -217,6 +217,8 @@ return "password_generation_prompt_in_autofill_dropdown"; case ManagePasswordsReferrer::kPasswordsGoogleWebsite: return "passwords_google"; + case ManagePasswordsReferrer::kAddUsernameBubble: + return "add_username_bubble"; case ManagePasswordsReferrer::kPasswordsAccessorySheet: case ManagePasswordsReferrer::kTouchToFill: case ManagePasswordsReferrer::kPasswordBreachDialog:
diff --git a/chrome/browser/ui/views/autofill/delete_address_profile_dialog_view.cc b/chrome/browser/ui/views/autofill/delete_address_profile_dialog_view.cc index 9ff8cdc..286f0d9 100644 --- a/chrome/browser/ui/views/autofill/delete_address_profile_dialog_view.cc +++ b/chrome/browser/ui/views/autofill/delete_address_profile_dialog_view.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/views/autofill/delete_address_profile_dialog_view.h" +#include "chrome/browser/ui/autofill/delete_address_profile_dialog_view.h" #include "base/functional/callback.h" #include "base/memory/raw_ptr.h" @@ -13,7 +13,7 @@ #include "ui/base/models/dialog_model.h" #include "ui/views/widget/widget.h" -namespace autofill::dialogs { +namespace autofill { // static void ShowDeleteAddressProfileDialogView( @@ -43,7 +43,8 @@ &DeleteAddressProfileDialogController::OnDialogDestroying, controller)) .Build(); + constrained_window::ShowWebModal(std::move(dialog_model), web_contents); } -} // namespace autofill::dialogs +} // namespace autofill
diff --git a/chrome/browser/ui/views/autofill/delete_address_profile_dialog_view.h b/chrome/browser/ui/views/autofill/delete_address_profile_dialog_view.h deleted file mode 100644 index 2377a3d..0000000 --- a/chrome/browser/ui/views/autofill/delete_address_profile_dialog_view.h +++ /dev/null
@@ -1,25 +0,0 @@ -// Copyright 2023 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_UI_VIEWS_AUTOFILL_DELETE_ADDRESS_PROFILE_DIALOG_VIEW_H_ -#define CHROME_BROWSER_UI_VIEWS_AUTOFILL_DELETE_ADDRESS_PROFILE_DIALOG_VIEW_H_ - -#include "base/memory/weak_ptr.h" -#include "chrome/browser/ui/autofill/delete_address_profile_dialog_controller.h" - -namespace content { -class WebContents; -} // namespace content - -namespace autofill::dialogs { - -// Shows a modal dialog prompting to user whether they want to delete their -// profile address. -void ShowDeleteAddressProfileDialogView( - content::WebContents* web_contents, - base::WeakPtr<DeleteAddressProfileDialogController> controller); - -} // namespace autofill::dialogs - -#endif // CHROME_BROWSER_UI_VIEWS_AUTOFILL_DELETE_ADDRESS_PROFILE_DIALOG_VIEW_H_
diff --git a/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.cc b/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.cc index 0b3536b..b9b50af 100644 --- a/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.cc +++ b/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.cc
@@ -952,8 +952,7 @@ /////////////////////////////////////////////////////////////////////////////// // ContentSettingImageView::Delegate implementations: -bool PictureInPictureBrowserFrameView::ShouldHideContentSettingImage( - ImageType type) { +bool PictureInPictureBrowserFrameView::ShouldHideContentSettingImage() { return false; }
diff --git a/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.h b/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.h index 2015d5d..a9b1388 100644 --- a/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.h +++ b/chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.h
@@ -127,7 +127,7 @@ SkColor GetIconLabelBubbleBackgroundColor() const override; // ContentSettingImageView::Delegate: - bool ShouldHideContentSettingImage(ImageType type) override; + bool ShouldHideContentSettingImage() override; content::WebContents* GetContentSettingWebContents() override; ContentSettingBubbleModelDelegate* GetContentSettingBubbleModelDelegate() override;
diff --git a/chrome/browser/ui/views/location_bar/content_setting_image_view.cc b/chrome/browser/ui/views/location_bar/content_setting_image_view.cc index dee08125..40b41580 100644 --- a/chrome/browser/ui/views/location_bar/content_setting_image_view.cc +++ b/chrome/browser/ui/views/location_bar/content_setting_image_view.cc
@@ -130,12 +130,8 @@ content::WebContents* web_contents = delegate_->GetContentSettingWebContents(); - // Calling Update() with a nullptr WebContents will hide the image. - content_setting_image_model_->Update( - delegate_->ShouldHideContentSettingImage( - content_setting_image_model_->image_type()) - ? nullptr - : web_contents); + bool force_hide = delegate_->ShouldHideContentSettingImage(); + content_setting_image_model_->Update(force_hide ? nullptr : web_contents); SetTooltipText(content_setting_image_model_->get_tooltip()); if (!content_setting_image_model_->is_visible()) {
diff --git a/chrome/browser/ui/views/location_bar/content_setting_image_view.h b/chrome/browser/ui/views/location_bar/content_setting_image_view.h index c59e80e..67de897 100644 --- a/chrome/browser/ui/views/location_bar/content_setting_image_view.h +++ b/chrome/browser/ui/views/location_bar/content_setting_image_view.h
@@ -43,7 +43,7 @@ class Delegate { public: // Delegate should return true if the content setting icon should be hidden. - virtual bool ShouldHideContentSettingImage(ImageType type) = 0; + virtual bool ShouldHideContentSettingImage() = 0; // Gets the web contents the ContentSettingImageView is for. virtual content::WebContents* GetContentSettingWebContents() = 0;
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc index bf1e1bf..ed1305a 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_view.cc +++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc
@@ -991,55 +991,8 @@ return GetColorProvider()->GetColor(kColorLocationBarBackground); } -bool LocationBarView::ShouldHideContentSettingImage(ImageType type) { - // Content setting icons are hidden at the same time as page action icons. - if (ShouldHidePageActionIcons()) { - return true; - } - - auto* web_contents = GetWebContents(); - if (web_contents) { - auto* hcsm = HostContentSettingsMapFactory::GetForProfile(profile_); - switch (type) { - case ImageType::COOKIES: - case ImageType::IMAGES: - case ImageType::JAVASCRIPT: - case ImageType::POPUPS: - break; - case ImageType::GEOLOCATION: { - ContentSetting value = - hcsm->GetContentSetting(web_contents->GetLastCommittedURL(), GURL(), - ContentSettingsType::GEOLOCATION); - return value == CONTENT_SETTING_ASK; - } - case ImageType::MIXEDSCRIPT: - case ImageType::PROTOCOL_HANDLERS: - break; - case ImageType::MEDIASTREAM: { - ContentSetting mic_value = - hcsm->GetContentSetting(web_contents->GetLastCommittedURL(), GURL(), - ContentSettingsType::MEDIASTREAM_MIC); - - ContentSetting camera_value = - hcsm->GetContentSetting(web_contents->GetLastCommittedURL(), GURL(), - ContentSettingsType::MEDIASTREAM_CAMERA); - return mic_value == CONTENT_SETTING_ASK && - camera_value == CONTENT_SETTING_ASK; - } - case ImageType::ADS: - case ImageType::AUTOMATIC_DOWNLOADS: - case ImageType::MIDI_SYSEX: - case ImageType::SOUND: - case ImageType::FRAMEBUST: - case ImageType::SENSORS: - case ImageType::NOTIFICATIONS_QUIET_PROMPT: - case ImageType::CLIPBOARD_READ_WRITE: - case ImageType::STORAGE_ACCESS: - case ImageType::NUM_IMAGE_TYPES: - break; - } - } - return false; +bool LocationBarView::ShouldHideContentSettingImage() { + return ShouldHidePageActionIcons(); } content::WebContents* LocationBarView::GetContentSettingWebContents() {
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.h b/chrome/browser/ui/views/location_bar/location_bar_view.h index 0e3f3ede..6b968634 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_view.h +++ b/chrome/browser/ui/views/location_bar/location_bar_view.h
@@ -202,7 +202,7 @@ SkColor GetIconLabelBubbleBackgroundColor() const override; // ContentSettingImageView::Delegate: - bool ShouldHideContentSettingImage(ImageType type) override; + bool ShouldHideContentSettingImage() override; content::WebContents* GetContentSettingWebContents() override; ContentSettingBubbleModelDelegate* GetContentSettingBubbleModelDelegate() override;
diff --git a/chrome/browser/ui/views/passwords/password_add_username_view.cc b/chrome/browser/ui/views/passwords/password_add_username_view.cc new file mode 100644 index 0000000..3fe26b6 --- /dev/null +++ b/chrome/browser/ui/views/passwords/password_add_username_view.cc
@@ -0,0 +1,201 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ui/views/passwords/password_add_username_view.h" + +#include "base/functional/callback.h" +#include "chrome/browser/ui/passwords/ui_utils.h" +#include "chrome/browser/ui/views/chrome_layout_provider.h" +#include "chrome/browser/ui/views/passwords/views_utils.h" +#include "chrome/grit/generated_resources.h" +#include "chrome/grit/theme_resources.h" +#include "ui/views/controls/button/image_button.h" +#include "ui/views/controls/button/image_button_factory.h" +#include "ui/views/controls/editable_combobox/editable_combobox.h" +#include "ui/views/controls/styled_label.h" +#include "ui/views/layout/fill_layout.h" +#include "ui/views/layout/flex_layout.h" +#include "ui/views/layout/layout_provider.h" +#include "ui/views/vector_icons.h" +#include "ui/views/view.h" + +namespace { +std::unique_ptr<views::Label> CreateBodyText(int margin_size) { + auto body_text = std::make_unique<views::Label>(); + body_text->SetText(l10n_util::GetStringUTF16(IDS_ADD_USERNAME_BODY)); + body_text->SetMultiLine(true); + body_text->SetHorizontalAlignment(gfx::ALIGN_LEFT); + body_text->SizeToFit(views::LayoutProvider::Get()->GetDistanceMetric( + views::DISTANCE_BUBBLE_PREFERRED_WIDTH) - + margin_size); + return body_text; +} + +std::unique_ptr<views::View> CreatePasswordLabelWithEyeIconView( + std::unique_ptr<views::Label> password_label) { + auto password_label_with_eye_icon_view = + std::make_unique<views::BoxLayoutView>(); + auto* password_label_ptr = password_label_with_eye_icon_view->AddChildView( + std::move(password_label)); + password_label_ptr->SetTextStyle(views::style::STYLE_PRIMARY); + password_label_ptr->SetProperty( + views::kFlexBehaviorKey, + views::FlexSpecification(views::MinimumFlexSizeRule::kPreferred, + views::MaximumFlexSizeRule::kScaleToMaximum)); + + auto* eye_icon = password_label_with_eye_icon_view->AddChildView( + CreateVectorToggleImageButton(views::Button::PressedCallback())); + eye_icon->SetTooltipText( + l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_SHOW_PASSWORD)); + eye_icon->SetToggledTooltipText( + l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_HIDE_PASSWORD)); + eye_icon->SetImageVerticalAlignment(views::ImageButton::ALIGN_MIDDLE); + views::SetImageFromVectorIconWithColorId(eye_icon, views::kEyeIcon, + ui::kColorIcon, ui::kColorIcon); + views::SetToggledImageFromVectorIconWithColorId( + eye_icon, views::kEyeCrossedIcon, ui::kColorIcon, ui::kColorIcon); + eye_icon->SetCallback(base::BindRepeating( + [](views::ToggleImageButton* toggle_button, + views::Label* password_label) { + password_label->SetObscured(!password_label->GetObscured()); + toggle_button->SetToggled(!toggle_button->GetToggled()); + }, + eye_icon, password_label_ptr)); + + return password_label_with_eye_icon_view; +} + +// Adds empty border around the password field to make it have the same offsets +// as the username field above. +void AddEmptyBorder(views::View* password_field) { + const views::LayoutProvider* provider = views::LayoutProvider::Get(); + password_field->SetBorder(views::CreateEmptyBorder(gfx::Insets::TLBR( + provider->GetDistanceMetric( + views::DISTANCE_CONTROL_VERTICAL_TEXT_PADDING), + provider->GetDistanceMetric( + views::DISTANCE_TEXTFIELD_HORIZONTAL_TEXT_PADDING), + provider->GetDistanceMetric( + views::DISTANCE_CONTROL_VERTICAL_TEXT_PADDING), + provider->GetDistanceMetric( + views::DISTANCE_TEXTFIELD_HORIZONTAL_TEXT_PADDING)))); +} +} // namespace + +PasswordAddUsernameView::PasswordAddUsernameView( + content::WebContents* web_contents, + views::View* anchor_view, + DisplayReason reason) + : PasswordBubbleViewBase(web_contents, anchor_view, true), + controller_(PasswordsModelDelegateFromWebContents(web_contents), + PasswordBubbleControllerBase::DisplayReason::kAutomatic) { + CHECK_EQ(controller_.state(), + password_manager::ui::GENERATED_PASSWORD_CONFIRMATION_STATE); + const password_manager::PasswordForm& password_form = + controller_.pending_password(); + + // Set up layout: + SetLayoutManager(std::make_unique<views::FillLayout>()); + views::View* root_view = AddChildView(std::make_unique<views::View>()); + views::FlexLayout* flex_layout = + root_view->SetLayoutManager(std::make_unique<views::FlexLayout>()); + flex_layout->SetOrientation(views::LayoutOrientation::kVertical) + .SetCrossAxisAlignment(views::LayoutAlignment::kStretch) + .SetIgnoreDefaultMainAxisMargins(true) + .SetCollapseMargins(true) + .SetDefault( + views::kMarginsKey, + gfx::Insets::VH(ChromeLayoutProvider::Get()->GetDistanceMetric( + DISTANCE_CONTROL_LIST_VERTICAL), + 0)); + + std::unique_ptr<views::Label> body_text = CreateBodyText(margins().width()); + root_view->AddChildView(std::move(body_text)); + + std::unique_ptr<views::EditableCombobox> username_dropdown = + CreateUsernameEditableCombobox(password_form); + username_dropdown_ = username_dropdown.get(); + + std::unique_ptr<views::Label> password_label = + CreatePasswordLabel(password_form); + std::unique_ptr<views::View> password_field = + CreatePasswordLabelWithEyeIconView(std::move(password_label)); + AddEmptyBorder(password_field.get()); + + BuildCredentialRows(root_view, nullptr, std::move(username_dropdown), + std::move(password_field)); + + SetAcceptCallback( + base::BindOnce(&PasswordAddUsernameView::UpdateUsernameInModel, + base::Unretained(this)) + .Then(base::BindOnce(&AddUsernameBubbleController::OnSaveClicked, + base::Unretained(&controller_)))); + SetCancelCallback( + base::BindOnce(&PasswordAddUsernameView::UpdateUsernameInModel, + base::Unretained(this)) + .Then(base::BindOnce(&AddUsernameBubbleController::OnNoThanksClicked, + base::Unretained(&controller_)))); + + SetShowIcon(true); + SetFootnoteView(CreateFooterView()); + SetButtons((ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL)); + + SetButtonLabel(ui::DIALOG_BUTTON_OK, + l10n_util::GetStringUTF16(IDS_ADD_USERNAME)); + SetButtonLabel(ui::DIALOG_BUTTON_CANCEL, + l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_CANCEL_BUTTON)); + + SetTitle(controller_.GetTitle()); +} + +PasswordAddUsernameView::~PasswordAddUsernameView() = default; + +PasswordBubbleControllerBase* PasswordAddUsernameView::GetController() { + return &controller_; +} + +const PasswordBubbleControllerBase* PasswordAddUsernameView::GetController() + const { + return &controller_; +} + +views::View* PasswordAddUsernameView::GetInitiallyFocusedView() { + return username_dropdown_; +} + +ui::ImageModel PasswordAddUsernameView::GetWindowIcon() { + return ui::ImageModel::FromVectorIcon(GooglePasswordManagerVectorIcon(), + ui::kColorIcon); +} + +void PasswordAddUsernameView::AddedToWidget() { + SetBubbleHeader(IDR_SAVE_PASSWORD, IDR_SAVE_PASSWORD_DARK); +} + +void PasswordAddUsernameView::UpdateUsernameInModel() { + CHECK_EQ(controller_.state(), + password_manager::ui::GENERATED_PASSWORD_CONFIRMATION_STATE); + std::u16string new_username = username_dropdown_->GetText(); + base::TrimString(new_username, u" ", &new_username); + + controller_.OnCredentialEdited(std::move(new_username), + controller_.pending_password().password_value); +} + +std::unique_ptr<views::View> PasswordAddUsernameView::CreateFooterView() { + CHECK_EQ(controller_.state(), + password_manager::ui::GENERATED_PASSWORD_CONFIRMATION_STATE); + base::RepeatingClosure open_password_manager_closure = base::BindRepeating( + [](AddUsernameBubbleController* controller) { + controller->OnGooglePasswordManagerLinkClicked( + password_manager::ManagePasswordsReferrer::kAddUsernameBubble); + }, + &controller_); + + return CreateGooglePasswordManagerLabel( + /*text_message_id=*/ + IDS_PASSWORD_BUBBLES_FOOTER_SYNCED_TO_ACCOUNT, + /*link_message_id=*/ + IDS_PASSWORD_BUBBLES_PASSWORD_MANAGER_LINK_TEXT_SYNCED_TO_ACCOUNT, + controller_.GetPrimaryAccountEmail(), open_password_manager_closure); +}
diff --git a/chrome/browser/ui/views/passwords/password_add_username_view.h b/chrome/browser/ui/views/passwords/password_add_username_view.h new file mode 100644 index 0000000..df9e322a --- /dev/null +++ b/chrome/browser/ui/views/passwords/password_add_username_view.h
@@ -0,0 +1,45 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_VIEWS_PASSWORDS_PASSWORD_ADD_USERNAME_VIEW_H_ +#define CHROME_BROWSER_UI_VIEWS_PASSWORDS_PASSWORD_ADD_USERNAME_VIEW_H_ + +#include "chrome/browser/ui/passwords/bubble_controllers/add_username_bubble_controller.h" +#include "chrome/browser/ui/views/passwords/password_bubble_view_base.h" + +namespace views { +class EditableCombobox; +} // namespace views + +// A view offering the user ability to add username to credentials that have it +// missing. Contains a username and password field. In addition, it contains a +// "Save" button and a "Nope" button. +class PasswordAddUsernameView : public PasswordBubbleViewBase { + public: + PasswordAddUsernameView(content::WebContents* web_contents, + views::View* anchor_view, + DisplayReason reason); + + private: + ~PasswordAddUsernameView() override; + + // PasswordBubbleViewBase + PasswordBubbleControllerBase* GetController() override; + const PasswordBubbleControllerBase* GetController() const override; + + // PasswordBubbleViewBase: + views::View* GetInitiallyFocusedView() override; + ui::ImageModel GetWindowIcon() override; + + // View: + void AddedToWidget() override; + + void UpdateUsernameInModel(); + std::unique_ptr<views::View> CreateFooterView(); + + AddUsernameBubbleController controller_; + raw_ptr<views::EditableCombobox> username_dropdown_ = nullptr; +}; + +#endif // CHROME_BROWSER_UI_VIEWS_PASSWORDS_PASSWORD_ADD_USERNAME_VIEW_H_
diff --git a/chrome/browser/ui/views/passwords/password_save_update_view.cc b/chrome/browser/ui/views/passwords/password_save_update_view.cc index 44bbe5cd..42fdb70a 100644 --- a/chrome/browser/ui/views/passwords/password_save_update_view.cc +++ b/chrome/browser/ui/views/passwords/password_save_update_view.cc
@@ -352,7 +352,8 @@ std::unique_ptr<views::View> PasswordSaveUpdateView::CreateFooterView() { base::RepeatingClosure open_password_manager_closure = base::BindRepeating( [](PasswordSaveUpdateView* dialog) { - dialog->controller_.OnGooglePasswordManagerLinkClicked(); + dialog->controller_.OnGooglePasswordManagerLinkClicked( + password_manager::ManagePasswordsReferrer::kSaveUpdateBubble); }, base::Unretained(this)); if (controller_.IsCurrentStateAffectingPasswordsStoredInTheGoogleAccount()) {
diff --git a/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_toolbar_button_container.cc b/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_toolbar_button_container.cc index c2fcffe9..182fb59 100644 --- a/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_toolbar_button_container.cc +++ b/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_toolbar_button_container.cc
@@ -306,8 +306,7 @@ return background_color_; } -bool WebAppToolbarButtonContainer::ShouldHideContentSettingImage( - ImageType type) { +bool WebAppToolbarButtonContainer::ShouldHideContentSettingImage() { return false; }
diff --git a/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_toolbar_button_container.h b/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_toolbar_button_container.h index ad592a14..00deb04 100644 --- a/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_toolbar_button_container.h +++ b/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_toolbar_button_container.h
@@ -121,7 +121,7 @@ SkColor GetIconLabelBubbleBackgroundColor() const override; // ContentSettingImageView::Delegate: - bool ShouldHideContentSettingImage(ImageType type) override; + bool ShouldHideContentSettingImage() override; content::WebContents* GetContentSettingWebContents() override; ContentSettingBubbleModelDelegate* GetContentSettingBubbleModelDelegate() override;
diff --git a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_apply_waiter.cc b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_apply_waiter.cc index b042199..339e75f 100644 --- a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_apply_waiter.cc +++ b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_apply_waiter.cc
@@ -31,8 +31,12 @@ keep_alive_ = std::make_unique<ScopedKeepAlive>( KeepAliveOrigin::ISOLATED_WEB_APP_UPDATE, KeepAliveRestartOption::DISABLED); - profile_keep_alive_ = std::make_unique<ScopedProfileKeepAlive>( - profile, ProfileKeepAliveOrigin::kIsolatedWebAppUpdate); + // Off the record profiles cannot have `ScopedProfileKeepAlive`s. + profile_keep_alive_ = + profile->IsOffTheRecord() + ? nullptr + : std::make_unique<ScopedProfileKeepAlive>( + profile, ProfileKeepAliveOrigin::kIsolatedWebAppUpdate); ui_manager_->NotifyOnAllAppWindowsClosed( url_info_.app_id(),
diff --git a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_apply_waiter_unittest.cc b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_apply_waiter_unittest.cc index 5d9277d..2f7364d 100644 --- a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_apply_waiter_unittest.cc +++ b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_apply_waiter_unittest.cc
@@ -10,11 +10,14 @@ #include "chrome/browser/profiles/keep_alive/scoped_profile_keep_alive.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/ui/web_applications/test/isolated_web_app_builder.h" +#include "chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager.h" #include "chrome/browser/web_applications/isolated_web_apps/isolated_web_app_url_info.h" #include "chrome/browser/web_applications/test/fake_web_app_provider.h" #include "chrome/browser/web_applications/test/fake_web_app_ui_manager.h" #include "chrome/browser/web_applications/test/web_app_install_test_utils.h" #include "chrome/browser/web_applications/test/web_app_test.h" +#include "chrome/browser/web_applications/web_app_provider.h" +#include "chrome/browser/web_applications/web_app_utils.h" #include "components/keep_alive_registry/scoped_keep_alive.h" #include "components/web_package/signed_web_bundles/signed_web_bundle_id.h" #include "testing/gmock/include/gmock/gmock.h" @@ -23,6 +26,12 @@ namespace web_app { namespace { +using ::testing::IsFalse; +using ::testing::IsNull; +using ::testing::IsTrue; +using ::testing::NotNull; +using ::testing::SizeIs; + class IsolatedWebAppUpdateApplyWaiterTest : public WebAppTest { protected: size_t CountProfileKeepAlives(Profile* profile) { @@ -91,5 +100,37 @@ auto [keep_alive, profile_keep_alive] = future.Take(); } +// Other platforms do not have a `WebAppProvider` in guest sessions. +#if BUILDFLAG(IS_CHROMEOS_ASH) +TEST_F(IsolatedWebAppUpdateApplyWaiterTest, + NoProfileKeepAliveWhenOffTheRecord) { + // In ChromeOS guest sessions, the profile is both a guest profile and off the + // record. + Profile* profile = profile_manager().CreateGuestProfile(); + ASSERT_THAT(profile->GetAllOffTheRecordProfiles(), SizeIs(1)); + profile = profile->GetAllOffTheRecordProfiles()[0]; + + EXPECT_THAT(profile->IsGuestSession(), IsTrue()); + EXPECT_THAT(profile->IsOffTheRecord(), IsTrue()); + EXPECT_THAT(AreWebAppsEnabled(profile), IsTrue()); + + auto* provider = FakeWebAppProvider::Get(profile); + provider->SetEnableAutomaticIwaUpdates( + FakeWebAppProvider::AutomaticIwaUpdateStrategy::kDefault); + test::AwaitStartWebAppProviderAndSubsystems(profile); + EXPECT_THAT(provider->iwa_update_manager().AreAutomaticUpdatesEnabled(), + IsFalse()); + + IsolatedWebAppUpdateApplyWaiter waiter(url_info_, provider->ui_manager()); + base::test::TestFuture<std::unique_ptr<ScopedKeepAlive>, + std::unique_ptr<ScopedProfileKeepAlive>> + future; + waiter.Wait(profile, future.GetCallback()); + auto [keep_alive, profile_keep_alive] = future.Take(); + EXPECT_THAT(keep_alive, NotNull()); + EXPECT_THAT(profile_keep_alive, IsNull()); +} +#endif // BUILDFLAG(IS_CHROMEOS_ASH) + } // namespace } // namespace web_app
diff --git a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager.cc b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager.cc index ab131c1..69c65346 100644 --- a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager.cc +++ b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager.cc
@@ -60,7 +60,14 @@ automatic_updates_enabled_( content::IsolatedWebAppsPolicy::AreIsolatedWebAppsEnabled(&profile) && base::FeatureList::IsEnabled( - features::kIsolatedWebAppAutomaticUpdates)), + features::kIsolatedWebAppAutomaticUpdates) && + // Similar to extensions, we don't do any automatic updates in guest + // sessions. + !profile.IsGuestSession() && + // Web Apps are not a thing in off the record profiles, but have this + // here just in case - we also wouldn't want to update IWAs in + // incognito windows. + !profile.IsOffTheRecord()), update_discovery_frequency_(std::move(update_discovery_frequency)), task_queue_{*this} {} @@ -99,6 +106,14 @@ << web_app.start_url(); continue; } + + // Off the record profiles cannot have `ScopedProfileKeepAlive`s. + auto profile_keep_alive = + profile_->IsOffTheRecord() + ? nullptr + : std::make_unique<ScopedProfileKeepAlive>( + &*profile_, ProfileKeepAliveOrigin::kIsolatedWebAppUpdate); + // During startup of the `IsolatedWebAppUpdateManager`, we do not use // `IsolatedWebAppUpdateApplyWaiter`s to wait for all windows to close // before applying the update. Instead, we schedule the update apply tasks @@ -116,9 +131,7 @@ std::make_unique<ScopedKeepAlive>( KeepAliveOrigin::ISOLATED_WEB_APP_UPDATE, KeepAliveRestartOption::DISABLED), - std::make_unique<ScopedProfileKeepAlive>( - &*profile_, ProfileKeepAliveOrigin::kIsolatedWebAppUpdate), - provider_->scheduler())); + std::move(profile_keep_alive), provider_->scheduler())); } content::GetUIThreadTaskRunner({base::TaskPriority::BEST_EFFORT})
diff --git a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager.h b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager.h index 29383e5..295f8e6 100644 --- a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager.h +++ b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager.h
@@ -98,6 +98,8 @@ const webapps::AppId& app_id, base::OnceClosure callback); + bool AreAutomaticUpdatesEnabled() const { return automatic_updates_enabled_; } + void SetEnableAutomaticUpdatesForTesting(bool automatic_updates_enabled); // `WebAppInstallManagerObserver`:
diff --git a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager_unittest.cc b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager_unittest.cc index 8672ae2..49dcac7 100644 --- a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager_unittest.cc +++ b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager_unittest.cc
@@ -10,6 +10,7 @@ #include "base/feature_list.h" #include "base/files/file_path.h" #include "base/files/file_util.h" +#include "base/files/scoped_temp_dir.h" #include "base/json/values_util.h" #include "base/memory/scoped_refptr.h" #include "base/ranges/algorithm.h" @@ -30,14 +31,18 @@ #include "chrome/browser/ui/web_applications/test/isolated_web_app_test_utils.h" #include "chrome/browser/web_applications/isolated_web_apps/isolated_web_app_apply_update_command.h" #include "chrome/browser/web_applications/isolated_web_apps/isolated_web_app_location.h" +#include "chrome/browser/web_applications/isolated_web_apps/isolated_web_app_trust_checker.h" #include "chrome/browser/web_applications/isolated_web_apps/isolated_web_app_url_info.h" #include "chrome/browser/web_applications/isolated_web_apps/policy/isolated_web_app_policy_constants.h" +#include "chrome/browser/web_applications/test/fake_web_app_database_factory.h" #include "chrome/browser/web_applications/test/fake_web_app_provider.h" #include "chrome/browser/web_applications/test/fake_web_app_ui_manager.h" #include "chrome/browser/web_applications/test/fake_web_contents_manager.h" #include "chrome/browser/web_applications/test/web_app_install_test_utils.h" #include "chrome/browser/web_applications/test/web_app_test.h" +#include "chrome/browser/web_applications/test/web_app_test_observers.h" #include "chrome/browser/web_applications/web_app_command_scheduler.h" +#include "chrome/browser/web_applications/web_app_helpers.h" #include "chrome/browser/web_applications/web_app_provider.h" #include "chrome/browser/web_applications/web_contents/web_contents_manager.h" #include "chrome/common/chrome_features.h" @@ -73,6 +78,7 @@ using ::testing::IsFalse; using ::testing::IsTrue; using ::testing::NiceMock; +using ::testing::NotNull; using ::testing::Optional; using ::testing::Property; using ::testing::SizeIs; @@ -242,8 +248,6 @@ command_scheduler->DelegateToRealImpl(); fake_provider().SetScheduler(std::move(command_scheduler)); - test::AwaitStartWebAppProviderAndSubsystems(profile()); - iwa_info1_ = IwaInfo( web_package::WebBundleSigner::KeyPair::CreateRandom(), InstalledBundle{ @@ -263,14 +267,17 @@ GURL("https://example.com/bundle2.swbn"), base::Version("7.0.0"), "updated app 2"); SetUpIwaInfo(*iwa_info2_); + + SetTrustedWebBundleIdsForTesting({iwa_info1_->url_info.web_bundle_id(), + iwa_info2_->url_info.web_bundle_id()}); + + SeedWebAppDatabase(); + test::AwaitStartWebAppProviderAndSubsystems(profile()); } void SetUpIwaInfo(const IwaInfo& iwa_info) { TestSignedWebBundle update_bundle = - TestSignedWebBundleBuilder::BuildDefault( - TestSignedWebBundleBuilder::BuildOptions() - .SetVersion(iwa_info.update_version) - .SetKeyPair(iwa_info.key_pair)); + CreateBundle(iwa_info.update_version, iwa_info.key_pair); profile_url_loader_factory().AddResponse( iwa_info.update_manifest_url.spec(), @@ -299,6 +306,17 @@ base::UTF8ToUTF16(iwa_info.update_app_name), iwa_info.update_version); } + TestSignedWebBundle CreateBundle( + const base::Version& version, + const web_package::WebBundleSigner::KeyPair& key_pair) const { + return TestSignedWebBundleBuilder::BuildDefault( + TestSignedWebBundleBuilder::BuildOptions() + .SetVersion(version) + .SetKeyPair(key_pair)); + } + + virtual void SeedWebAppDatabase() {} + void SetIwaForceInstallPolicy( std::vector<std::pair<IsolatedWebAppUrlInfo, base::StringPiece>> entries) { @@ -706,6 +724,83 @@ ->Shutdown(); } +class IsolatedWebAppUpdateManagerUpdateApplyOnStartupTest + : public IsolatedWebAppUpdateManagerUpdateTest { + protected: + void SeedWebAppDatabase() override { + // Seed the `WebAppProvider` with an IWA before it is started. + EXPECT_THAT(fake_provider().is_registry_ready(), IsFalse()); + + EXPECT_THAT(temp_dir_.CreateUniqueTempDir(), IsTrue()); + update_path_ = temp_dir_.GetPath().AppendASCII("update.swbn"); + + auto update_bundle = + CreateBundle(iwa_info1_->update_version, iwa_info1_->key_pair); + base::WriteFile(update_path_, update_bundle.data); + + std::unique_ptr<WebApp> iwa = CreateIsolatedWebApp( + iwa_info1_->url_info.origin().GetURL(), + WebApp::IsolationData(iwa_info1_->installed_location, + iwa_info1_->installed_version, {}, + WebApp::IsolationData::PendingUpdateInfo( + InstalledBundle{.path = update_path_}, + iwa_info1_->update_version))); + CreateStoragePartition(iwa_info1_->url_info); + + Registry registry; + registry.emplace(iwa->app_id(), std::move(iwa)); + auto& database_factory = static_cast<FakeWebAppDatabaseFactory&>( + fake_provider().database_factory()); + database_factory.WriteRegistry(registry); + } + + base::FilePath update_path_; + + private: + void CreateStoragePartition(IsolatedWebAppUrlInfo& url_info) { + content::StoragePartition* new_storage_partition = + profile()->GetStoragePartition( + url_info.storage_partition_config(profile()), + /*can_create=*/true); + EXPECT_THAT(new_storage_partition, NotNull()); + } + + std::unique_ptr<WebApp> CreateIsolatedWebApp( + const GURL& start_url, + WebApp::IsolationData isolation_data) { + webapps::AppId app_id = GenerateAppId(/*manifest_id=*/"", start_url); + auto web_app = std::make_unique<WebApp>(app_id); + web_app->SetName("iwa name"); + web_app->SetStartUrl(start_url); + web_app->SetScope(start_url.DeprecatedGetOriginAsURL()); + web_app->SetManifestId(start_url.DeprecatedGetOriginAsURL()); + web_app->AddSource(WebAppManagement::Type::kCommandLine); + web_app->SetIsLocallyInstalled(true); + web_app->SetIsolationData(isolation_data); + return web_app; + } + + base::ScopedTempDir temp_dir_; +}; + +TEST_F(IsolatedWebAppUpdateManagerUpdateApplyOnStartupTest, + SchedulesPendingUpdateApplyTasks) { + WebAppTestManifestUpdatedObserver manifest_updated_observer( + &fake_provider().install_manager()); + manifest_updated_observer.BeginListening({iwa_info1_->url_info.app_id()}); + manifest_updated_observer.Wait(); + + EXPECT_THAT(fake_provider().registrar_unsafe().GetAppById( + iwa_info1_->url_info.app_id()), + test::IwaIs(iwa_info1_->update_app_name, + test::IsolationDataIs( + ::testing::VariantWith<InstalledBundle>( + Eq(InstalledBundle{.path = update_path_})), + Eq(iwa_info1_->update_version), + /*controlled_frame_partitions=*/_, + /*pending_update_info=*/Eq(absl::nullopt)))); +} + class IsolatedWebAppUpdateManagerDiscoveryTimerTest : public IsolatedWebAppUpdateManagerTest { protected:
diff --git a/chrome/build/android-arm32.pgo.txt b/chrome/build/android-arm32.pgo.txt index 3623f73..fc20303 100644 --- a/chrome/build/android-arm32.pgo.txt +++ b/chrome/build/android-arm32.pgo.txt
@@ -1 +1 @@ -chrome-android32-main-1696183092-8f595a577bf2283e95b0c44612329401ef11659b.profdata +chrome-android32-main-1696225912-66d2e3f07b71a7b1bf370fce2ece010c640903d3.profdata
diff --git a/chrome/build/android-arm64.pgo.txt b/chrome/build/android-arm64.pgo.txt index 9e90406..7837f0a8 100644 --- a/chrome/build/android-arm64.pgo.txt +++ b/chrome/build/android-arm64.pgo.txt
@@ -1 +1 @@ -chrome-android64-main-1696183092-920087c904b0e843faaae46943ef5c9e87c97979.profdata +chrome-android64-main-1696225912-87b112fe2f16d511ab8bc6f57bf7a6f9d9c48301.profdata
diff --git a/chrome/build/lacros64.pgo.txt b/chrome/build/lacros64.pgo.txt index f5cf1d5..d71bd0a 100644 --- a/chrome/build/lacros64.pgo.txt +++ b/chrome/build/lacros64.pgo.txt
@@ -1 +1 @@ -chrome-chromeos-amd64-generic-main-1696160940-5fd8e4ad849535469666a908df1777e1b59b369e.profdata +chrome-chromeos-amd64-generic-main-1696204126-da5c99ca4f62233da52885f529a70c2f4fcc27b1.profdata
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index f993fbc..ad67a62 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-main-1696183092-0edbb677680afe003dbda60b68eebfda5d841328.profdata +chrome-linux-main-1696225912-de51b29b0d322d6767e6d25dc56b7795505dbe5f.profdata
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt index 03843d9..9843612 100644 --- a/chrome/build/mac-arm.pgo.txt +++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@ -chrome-mac-arm-main-1696190210-77149f85ec0851675dfb35c8e79800a8751a6347.profdata +chrome-mac-arm-main-1696233585-0687b0b86a4655fb432d896fd6c827bc8b08fc70.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index ef79002..7b06df0cb1 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-main-1696183092-2bf9d1d533cf88e06a9cc1a3192983e886c71ef6.profdata +chrome-mac-main-1696225912-0830e8038fb11f6161c385933cfaf4e73457c40f.profdata
diff --git a/chrome/build/win-arm64.pgo.txt b/chrome/build/win-arm64.pgo.txt index f69d33d..4d89c20 100644 --- a/chrome/build/win-arm64.pgo.txt +++ b/chrome/build/win-arm64.pgo.txt
@@ -1 +1 @@ -chrome-win-arm64-main-1696183092-dee634e72594ae7846ee5e44c905185ffcee0014.profdata +chrome-win-arm64-main-1696225912-43a055ae515960c816082d233006085a8baa2d8b.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index 14912219..7526544 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-main-1696183092-5e378a727679363d937e948838ad6be84e598665.profdata +chrome-win32-main-1696225912-8564bb8f6c3a9b66e877f5d117cf9bdd70062fef.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index 1677db31..6b8d512 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-main-1696183092-56426cda6ad7354a3881b200e4c1e3f16686ba5a.profdata +chrome-win64-main-1696225912-4a698df6ea13061f18ac3dada4503a04e2cd8eea.profdata
diff --git a/chrome/renderer/accessibility/ax_tree_distiller.h b/chrome/renderer/accessibility/ax_tree_distiller.h index 0e7d326d..a4362f0 100644 --- a/chrome/renderer/accessibility/ax_tree_distiller.h +++ b/chrome/renderer/accessibility/ax_tree_distiller.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/scoped_observation.h" #include "base/time/time.h" #include "components/services/screen_ai/buildflags/buildflags.h" @@ -120,7 +121,8 @@ // render_frame_ is only used in the ENABLE_SCREEN_AI_SERVICE buildflag. // Fuchsia does not build with that buildflag so it is throwing // -Wunused-private-field errors. [[maybe_unused]] suppresses them. - [[maybe_unused]] content::RenderFrame* render_frame_; + [[maybe_unused]] raw_ptr<content::RenderFrame, ExperimentalRenderer> + render_frame_; // TODO(crbug.com/1266555): Ensure this is called even if ScreenAIService is // disconnected.
diff --git a/chrome/renderer/accessibility/read_anything_app_controller.h b/chrome/renderer/accessibility/read_anything_app_controller.h index 269fb823..9a3ddfaa 100644 --- a/chrome/renderer/accessibility/read_anything_app_controller.h +++ b/chrome/renderer/accessibility/read_anything_app_controller.h
@@ -11,6 +11,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "chrome/common/accessibility/read_anything.mojom.h" #include "chrome/renderer/accessibility/read_anything_app_model.h" #include "components/services/screen_ai/buildflags/buildflags.h" @@ -228,7 +229,7 @@ int letter_spacing); void SetLanguageForTesting(const std::string& language_code); - content::RenderFrame* render_frame_; + raw_ptr<content::RenderFrame, ExperimentalRenderer> render_frame_; std::unique_ptr<AXTreeDistiller> distiller_; mojo::Remote<read_anything::mojom::UntrustedPageHandlerFactory> page_handler_factory_;
diff --git a/chrome/renderer/accessibility/read_anything_app_controller_browsertest.cc b/chrome/renderer/accessibility/read_anything_app_controller_browsertest.cc index 0c640f6..e2cf8a3 100644 --- a/chrome/renderer/accessibility/read_anything_app_controller_browsertest.cc +++ b/chrome/renderer/accessibility/read_anything_app_controller_browsertest.cc
@@ -8,6 +8,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "chrome/renderer/accessibility/ax_tree_distiller.h" #include "chrome/test/base/chrome_render_view_test.h" #include "content/public/renderer/render_frame.h" @@ -292,13 +293,14 @@ } ui::AXTreeID tree_id_; - MockAXTreeDistiller* distiller_ = nullptr; + raw_ptr<MockAXTreeDistiller, ExperimentalRenderer> distiller_ = nullptr; testing::StrictMock<MockReadAnythingUntrustedPageHandler> page_handler_; private: // ReadAnythingAppController constructor and destructor are private so it's // not accessible by std::make_unique. - ReadAnythingAppController* controller_ = nullptr; + raw_ptr<ReadAnythingAppController, ExperimentalRenderer> controller_ = + nullptr; }; TEST_F(ReadAnythingAppControllerTest, Theme) {
diff --git a/chrome/renderer/accessibility/read_anything_app_model_browsertest.cc b/chrome/renderer/accessibility/read_anything_app_model_browsertest.cc index 6326dfcb..1ceadaf 100644 --- a/chrome/renderer/accessibility/read_anything_app_model_browsertest.cc +++ b/chrome/renderer/accessibility/read_anything_app_model_browsertest.cc
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/memory/raw_ptr.h" #include "base/threading/platform_thread.h" #include "chrome/renderer/accessibility/read_anything_app_model.h" @@ -202,7 +203,7 @@ private: // ReadAnythingAppModel constructor and destructor are private so it's // not accessible by std::make_unique. - ReadAnythingAppModel* model_ = nullptr; + raw_ptr<ReadAnythingAppModel, ExperimentalRenderer> model_ = nullptr; }; TEST_F(ReadAnythingAppModelTest, Theme) {
diff --git a/chrome/renderer/cart/commerce_hint_agent_browsertest.cc b/chrome/renderer/cart/commerce_hint_agent_browsertest.cc index ea30112..7d16cd8 100644 --- a/chrome/renderer/cart/commerce_hint_agent_browsertest.cc +++ b/chrome/renderer/cart/commerce_hint_agent_browsertest.cc
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/memory/raw_ptr.h" #include "base/test/scoped_feature_list.h" #include "base/test/test_timeouts.h" #include "build/build_config.h" @@ -441,9 +442,10 @@ base::test::ScopedFeatureList scoped_feature_list_; #if !BUILDFLAG(IS_ANDROID) - CartService* service_; + raw_ptr<CartService, ExperimentalRenderer> service_; #endif - cart::CommerceHintService* commerce_hint_service_; + raw_ptr<cart::CommerceHintService, ExperimentalRenderer> + commerce_hint_service_; net::EmbeddedTestServer https_server_{net::EmbeddedTestServer::TYPE_HTTPS}; std::unique_ptr<ukm::TestAutoSetUkmRecorder> ukm_recorder_; bool satisfied_;
diff --git a/chrome/renderer/chrome_content_settings_agent_delegate.h b/chrome/renderer/chrome_content_settings_agent_delegate.h index 1c7d7c6d..ae4dc68 100644 --- a/chrome/renderer/chrome_content_settings_agent_delegate.h +++ b/chrome/renderer/chrome_content_settings_agent_delegate.h
@@ -6,6 +6,7 @@ #define CHROME_RENDERER_CHROME_CONTENT_SETTINGS_AGENT_DELEGATE_H_ #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "components/content_settings/renderer/content_settings_agent_impl.h" #include "extensions/buildflags/buildflags.h" @@ -62,12 +63,13 @@ const blink::WebSecurityOrigin& origin) const; // Owned by ChromeContentRendererClient and outlive us. - extensions::Dispatcher* extension_dispatcher_ = nullptr; + raw_ptr<extensions::Dispatcher, ExperimentalRenderer> extension_dispatcher_ = + nullptr; #endif base::flat_set<std::string> temporarily_allowed_plugins_; - content::RenderFrame* render_frame_ = nullptr; + raw_ptr<content::RenderFrame, ExperimentalRenderer> render_frame_ = nullptr; }; #endif // CHROME_RENDERER_CHROME_CONTENT_SETTINGS_AGENT_DELEGATE_H_
diff --git a/chrome/renderer/chrome_render_frame_observer.h b/chrome/renderer/chrome_render_frame_observer.h index f9fcae4..ca79f0c3 100644 --- a/chrome/renderer/chrome_render_frame_observer.h +++ b/chrome/renderer/chrome_render_frame_observer.h
@@ -8,6 +8,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "build/build_config.h" #include "chrome/common/chrome_render_frame.mojom.h" #include "chrome/renderer/companion/visual_search/visual_search_classifier_agent.h" @@ -145,24 +146,27 @@ static bool IsAnimatedWebp(const std::vector<uint8_t>& image_data); // Have the same lifetime as us. - translate::TranslateAgent* translate_agent_; - optimization_guide::PageTextAgent* page_text_agent_; + raw_ptr<translate::TranslateAgent, ExperimentalRenderer> translate_agent_; + raw_ptr<optimization_guide::PageTextAgent, ExperimentalRenderer> + page_text_agent_; #if BUILDFLAG(SAFE_BROWSING_AVAILABLE) - safe_browsing::PhishingClassifierDelegate* phishing_classifier_ = nullptr; - safe_browsing::PhishingImageEmbedderDelegate* phishing_image_embedder_ = - nullptr; + raw_ptr<safe_browsing::PhishingClassifierDelegate, ExperimentalRenderer> + phishing_classifier_ = nullptr; + raw_ptr<safe_browsing::PhishingImageEmbedderDelegate, ExperimentalRenderer> + phishing_image_embedder_ = nullptr; #endif // Owned by ChromeContentRendererClient and outlive us. - web_cache::WebCacheImpl* web_cache_impl_; + raw_ptr<web_cache::WebCacheImpl, ExperimentalRenderer> web_cache_impl_; #if !BUILDFLAG(IS_ANDROID) // Save the JavaScript to preload if ExecuteWebUIJavaScript is invoked. std::vector<std::u16string> webui_javascript_; // Add visual search agent to suggest visually relevant items on the page. - companion::visual_search::VisualSearchClassifierAgent* visual_classifier_ = - nullptr; + raw_ptr<companion::visual_search::VisualSearchClassifierAgent, + ExperimentalRenderer> + visual_classifier_ = nullptr; #endif mojo::AssociatedReceiverSet<chrome::mojom::ChromeRenderFrame> receivers_;
diff --git a/chrome/renderer/companion/visual_search/visual_search_classifier_agent.h b/chrome/renderer/companion/visual_search/visual_search_classifier_agent.h index 9eab842..c5a92e8 100644 --- a/chrome/renderer/companion/visual_search/visual_search_classifier_agent.h +++ b/chrome/renderer/companion/visual_search/visual_search_classifier_agent.h
@@ -8,6 +8,7 @@ #include "base/files/file.h" #include "base/files/memory_mapped_file.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "chrome/common/companion/visual_search.mojom.h" #include "chrome/renderer/companion/visual_search/visual_search_eligibility.h" @@ -70,7 +71,7 @@ bool is_retrying_ = false; // Pointer to RenderFrame used for DOM traversal and extract image bytes. - content::RenderFrame* render_frame_ = nullptr; + raw_ptr<content::RenderFrame, ExperimentalRenderer> render_frame_ = nullptr; // Using a memory-mapped file to reduce memory consumption of model bytes. base::MemoryMappedFile visual_model_;
diff --git a/chrome/renderer/companion/visual_search/visual_search_classifier_agent_browsertest.cc b/chrome/renderer/companion/visual_search/visual_search_classifier_agent_browsertest.cc index 1fe0ba24..7425c805 100644 --- a/chrome/renderer/companion/visual_search/visual_search_classifier_agent_browsertest.cc +++ b/chrome/renderer/companion/visual_search/visual_search_classifier_agent_browsertest.cc
@@ -9,6 +9,7 @@ #include "base/files/file_util.h" #include "base/functional/callback.h" #include "base/memory/discardable_memory_allocator.h" +#include "base/memory/raw_ptr.h" #include "base/path_service.h" #include "base/test/metrics/histogram_tester.h" #include "base/test/test_discardable_memory_allocator.h" @@ -108,7 +109,8 @@ } protected: - VisualSearchClassifierAgent* agent_; // Owned by RenderFrame + raw_ptr<VisualSearchClassifierAgent, ExperimentalRenderer> + agent_; // Owned by RenderFrame base::HistogramTester histogram_tester_; TestVisualResultHandler test_handler_; base::File model_file_;
diff --git a/chrome/renderer/extensions/api/app_hooks_delegate.h b/chrome/renderer/extensions/api/app_hooks_delegate.h index d6a4a052..f8f7734 100644 --- a/chrome/renderer/extensions/api/app_hooks_delegate.h +++ b/chrome/renderer/extensions/api/app_hooks_delegate.h
@@ -7,6 +7,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "extensions/renderer/bindings/api_binding_hooks_delegate.h" #include "v8/include/v8.h" @@ -67,13 +68,13 @@ void OnAppInstallStateResponse(int request_id, const std::string& state); // Dispatcher handle. Not owned. - Dispatcher* dispatcher_ = nullptr; + raw_ptr<Dispatcher, ExperimentalRenderer> dispatcher_ = nullptr; - APIRequestHandler* request_handler_ = nullptr; + raw_ptr<APIRequestHandler, ExperimentalRenderer> request_handler_ = nullptr; // IPC sender used for activity log call. // Not owned. This is owned by NativeExtensionBindingsSystem. - IPCMessageSender* ipc_sender_ = nullptr; + raw_ptr<IPCMessageSender, ExperimentalRenderer> ipc_sender_ = nullptr; base::WeakPtrFactory<AppHooksDelegate> weak_factory_{this}; };
diff --git a/chrome/renderer/extensions/api/extension_hooks_delegate.h b/chrome/renderer/extensions/api/extension_hooks_delegate.h index f63b70e..9592407c 100644 --- a/chrome/renderer/extensions/api/extension_hooks_delegate.h +++ b/chrome/renderer/extensions/api/extension_hooks_delegate.h
@@ -7,6 +7,7 @@ #include <vector> +#include "base/memory/raw_ptr.h" #include "extensions/renderer/bindings/api_binding_hooks_delegate.h" #include "extensions/renderer/bindings/api_signature.h" #include "v8/include/v8.h" @@ -59,7 +60,8 @@ // The messaging service to handle messaging calls. // Guaranteed to outlive this object. - NativeRendererMessagingService* const messaging_service_; + const raw_ptr<NativeRendererMessagingService, ExperimentalRenderer> + messaging_service_; }; } // namespace extensions
diff --git a/chrome/renderer/extensions/api/extension_hooks_delegate_unittest.cc b/chrome/renderer/extensions/api/extension_hooks_delegate_unittest.cc index 72de66b..4a82cb9 100644 --- a/chrome/renderer/extensions/api/extension_hooks_delegate_unittest.cc +++ b/chrome/renderer/extensions/api/extension_hooks_delegate_unittest.cc
@@ -4,6 +4,7 @@ #include "chrome/renderer/extensions/api/extension_hooks_delegate.h" +#include "base/memory/raw_ptr.h" #include "base/strings/stringprintf.h" #include "content/public/common/content_constants.h" #include "extensions/common/api/messaging/messaging_endpoint.h" @@ -80,7 +81,7 @@ private: std::unique_ptr<NativeRendererMessagingService> messaging_service_; - ScriptContext* script_context_ = nullptr; + raw_ptr<ScriptContext, ExperimentalRenderer> script_context_ = nullptr; scoped_refptr<const Extension> extension_; };
diff --git a/chrome/renderer/extensions/api/notifications_native_handler.cc b/chrome/renderer/extensions/api/notifications_native_handler.cc index dc2063d9..92c2188 100644 --- a/chrome/renderer/extensions/api/notifications_native_handler.cc +++ b/chrome/renderer/extensions/api/notifications_native_handler.cc
@@ -8,6 +8,7 @@ #include <string> #include "base/functional/bind.h" +#include "base/memory/raw_ref.h" #include "base/values.h" #include "chrome/common/extensions/api/notifications/notification_style.h" #include "extensions/renderer/script_context.h" @@ -38,20 +39,20 @@ struct { const char* key; - const gfx::Size& size; + const raw_ref<const gfx::Size, ExperimentalRenderer> size; } entries[] = { - {"icon", bitmap_sizes.icon_size}, - {"image", bitmap_sizes.image_size}, - {"buttonIcon", bitmap_sizes.button_icon_size}, - {"appIconMask", bitmap_sizes.app_icon_mask_size}, + {"icon", raw_ref(bitmap_sizes.icon_size)}, + {"image", raw_ref(bitmap_sizes.image_size)}, + {"buttonIcon", raw_ref(bitmap_sizes.button_icon_size)}, + {"appIconMask", raw_ref(bitmap_sizes.app_icon_mask_size)}, }; gin::DataObjectBuilder builder(isolate); builder.Set("scaleFactor", scale_factor); for (const auto& entry : entries) { builder.Set(entry.key, gin::DataObjectBuilder(isolate) - .Set("width", entry.size.width()) - .Set("height", entry.size.height()) + .Set("width", entry.size->width()) + .Set("height", entry.size->height()) .Build()); }
diff --git a/chrome/renderer/extensions/api/page_capture_custom_bindings.h b/chrome/renderer/extensions/api/page_capture_custom_bindings.h index 5629588..e791956 100644 --- a/chrome/renderer/extensions/api/page_capture_custom_bindings.h +++ b/chrome/renderer/extensions/api/page_capture_custom_bindings.h
@@ -5,6 +5,7 @@ #ifndef CHROME_RENDERER_EXTENSIONS_API_PAGE_CAPTURE_CUSTOM_BINDINGS_H_ #define CHROME_RENDERER_EXTENSIONS_API_PAGE_CAPTURE_CUSTOM_BINDINGS_H_ +#include "base/memory/raw_ptr.h" #include "extensions/renderer/object_backed_native_handler.h" namespace extensions { @@ -25,7 +26,7 @@ void SendResponseAck(const v8::FunctionCallbackInfo<v8::Value>& args); // The IPCMessageSender for this context. Must outlive this class. - IPCMessageSender* const ipc_message_sender_; + const raw_ptr<IPCMessageSender, ExperimentalRenderer> ipc_message_sender_; }; } // namespace extensions
diff --git a/chrome/renderer/extensions/api/tabs_hooks_delegate.h b/chrome/renderer/extensions/api/tabs_hooks_delegate.h index 2060f93..6445ea1a 100644 --- a/chrome/renderer/extensions/api/tabs_hooks_delegate.h +++ b/chrome/renderer/extensions/api/tabs_hooks_delegate.h
@@ -7,6 +7,7 @@ #include <vector> +#include "base/memory/raw_ptr.h" #include "extensions/renderer/bindings/api_binding_hooks_delegate.h" #include "extensions/renderer/bindings/api_signature.h" #include "v8/include/v8.h" @@ -47,7 +48,8 @@ // The messaging service to handle connect() and sendMessage() calls. // Guaranteed to outlive this object. - NativeRendererMessagingService* const messaging_service_; + const raw_ptr<NativeRendererMessagingService, ExperimentalRenderer> + messaging_service_; }; } // namespace extensions
diff --git a/chrome/renderer/extensions/api/tabs_hooks_delegate_unittest.cc b/chrome/renderer/extensions/api/tabs_hooks_delegate_unittest.cc index b4b294f..42b23fb 100644 --- a/chrome/renderer/extensions/api/tabs_hooks_delegate_unittest.cc +++ b/chrome/renderer/extensions/api/tabs_hooks_delegate_unittest.cc
@@ -4,6 +4,7 @@ #include "chrome/renderer/extensions/api/tabs_hooks_delegate.h" +#include "base/memory/raw_ptr.h" #include "base/strings/stringprintf.h" #include "extensions/common/extension_builder.h" #include "extensions/renderer/api/messaging/message_target.h" @@ -92,7 +93,7 @@ private: std::unique_ptr<NativeRendererMessagingService> messaging_service_; - ScriptContext* script_context_ = nullptr; + raw_ptr<ScriptContext, ExperimentalRenderer> script_context_ = nullptr; scoped_refptr<const Extension> extension_; };
diff --git a/chrome/renderer/extensions/renderer_permissions_policy_delegate.h b/chrome/renderer/extensions/renderer_permissions_policy_delegate.h index 37847af2..0650829 100644 --- a/chrome/renderer/extensions/renderer_permissions_policy_delegate.h +++ b/chrome/renderer/extensions/renderer_permissions_policy_delegate.h
@@ -5,6 +5,7 @@ #ifndef CHROME_RENDERER_EXTENSIONS_RENDERER_PERMISSIONS_POLICY_DELEGATE_H_ #define CHROME_RENDERER_EXTENSIONS_RENDERER_PERMISSIONS_POLICY_DELEGATE_H_ +#include "base/memory/raw_ptr.h" #include "extensions/common/permissions/permissions_data.h" namespace extensions { @@ -28,7 +29,7 @@ bool IsRestrictedUrl(const GURL& document_url, std::string* error) override; private: - Dispatcher* dispatcher_; + raw_ptr<Dispatcher, ExperimentalRenderer> dispatcher_; }; } // namespace extensions
diff --git a/chrome/renderer/extensions/resource_request_policy.h b/chrome/renderer/extensions/resource_request_policy.h index 711cdfb..a2035cf 100644 --- a/chrome/renderer/extensions/resource_request_policy.h +++ b/chrome/renderer/extensions/resource_request_policy.h
@@ -7,6 +7,7 @@ #include <map> +#include "base/memory/raw_ptr.h" #include "extensions/common/extension_guid.h" #include "extensions/common/extension_id.h" #include "ui/base/page_transition_types.h" @@ -48,7 +49,7 @@ // Determine if the host is web accessible. bool IsWebAccessibleHost(const std::string& host); - Dispatcher* dispatcher_; + raw_ptr<Dispatcher, ExperimentalRenderer> dispatcher_; // 1:1 mapping of extension IDs with any potentially web- or webview- // accessible resources to their corresponding GUIDs.
diff --git a/chrome/renderer/media/webrtc_logging_agent_impl_unittest.cc b/chrome/renderer/media/webrtc_logging_agent_impl_unittest.cc index 8f8cff8..dca6fb3 100644 --- a/chrome/renderer/media/webrtc_logging_agent_impl_unittest.cc +++ b/chrome/renderer/media/webrtc_logging_agent_impl_unittest.cc
@@ -8,6 +8,7 @@ #include "base/functional/bind.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/task/single_thread_task_runner.h" #include "base/test/task_environment.h" @@ -40,7 +41,7 @@ void OnStopped() override { log_->on_stopped_count++; } private: - Log* const log_; + const raw_ptr<Log, ExperimentalRenderer> log_; }; } // namespace
diff --git a/chrome/renderer/net/net_error_helper_core.h b/chrome/renderer/net/net_error_helper_core.h index 6235a198..a5e3066 100644 --- a/chrome/renderer/net/net_error_helper_core.h +++ b/chrome/renderer/net/net_error_helper_core.h
@@ -9,6 +9,7 @@ #include <string> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "build/build_config.h" #include "components/error_page/common/error.h" #include "components/error_page/common/localized_error.h" @@ -205,7 +206,7 @@ void Reload(); - Delegate* const delegate_; + const raw_ptr<Delegate, ExperimentalRenderer> delegate_; // The last DnsProbeStatus received from the browser. error_page::DnsProbeStatus last_probe_status_;
diff --git a/chrome/renderer/net/page_auto_fetcher_helper_android.h b/chrome/renderer/net/page_auto_fetcher_helper_android.h index 7a460d4..e97688c4 100644 --- a/chrome/renderer/net/page_auto_fetcher_helper_android.h +++ b/chrome/renderer/net/page_auto_fetcher_helper_android.h
@@ -6,6 +6,7 @@ #define CHROME_RENDERER_NET_PAGE_AUTO_FETCHER_HELPER_ANDROID_H_ #include "base/functional/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "chrome/common/offline_page_auto_fetcher.mojom.h" #include "mojo/public/cpp/bindings/remote.h" @@ -42,7 +43,7 @@ // Virtual for testing only. virtual bool Bind(); - content::RenderFrame* render_frame_; + raw_ptr<content::RenderFrame, ExperimentalRenderer> render_frame_; mojo::Remote<chrome::mojom::OfflinePageAutoFetcher> fetcher_; base::WeakPtrFactory<PageAutoFetcherHelper> weak_ptr_factory_{this};
diff --git a/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.h b/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.h index f5888d8c..e6c495c 100644 --- a/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.h +++ b/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.h
@@ -5,6 +5,7 @@ #ifndef CHROME_RENDERER_PEPPER_CHROME_RENDERER_PEPPER_HOST_FACTORY_H_ #define CHROME_RENDERER_PEPPER_CHROME_RENDERER_PEPPER_HOST_FACTORY_H_ +#include "base/memory/raw_ptr.h" #include "ppapi/host/host_factory.h" namespace content { @@ -31,7 +32,7 @@ private: // Not owned by this object. - content::RendererPpapiHost* host_; + raw_ptr<content::RendererPpapiHost, ExperimentalRenderer> host_; }; #endif // CHROME_RENDERER_PEPPER_CHROME_RENDERER_PEPPER_HOST_FACTORY_H_
diff --git a/chrome/renderer/pepper/pepper_shared_memory_message_filter.h b/chrome/renderer/pepper/pepper_shared_memory_message_filter.h index 82539dc..043da92 100644 --- a/chrome/renderer/pepper/pepper_shared_memory_message_filter.h +++ b/chrome/renderer/pepper/pepper_shared_memory_message_filter.h
@@ -7,6 +7,7 @@ #include <stdint.h> +#include "base/memory/raw_ptr.h" #include "ppapi/c/pp_instance.h" #include "ppapi/host/instance_message_filter.h" @@ -46,7 +47,7 @@ int* host_shm_handle_id, ppapi::proxy::SerializedHandle* plugin_shm_handle); - content::RendererPpapiHost* host_; + raw_ptr<content::RendererPpapiHost, ExperimentalRenderer> host_; }; #endif // CHROME_RENDERER_PEPPER_PEPPER_SHARED_MEMORY_MESSAGE_FILTER_H_
diff --git a/chrome/renderer/safe_browsing/phishing_classifier_delegate_browsertest.cc b/chrome/renderer/safe_browsing/phishing_classifier_delegate_browsertest.cc index b1f25620..9e794c9a 100644 --- a/chrome/renderer/safe_browsing/phishing_classifier_delegate_browsertest.cc +++ b/chrome/renderer/safe_browsing/phishing_classifier_delegate_browsertest.cc
@@ -8,6 +8,7 @@ #include "base/files/scoped_temp_dir.h" #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/strings/utf_string_conversions.h" #include "chrome/test/base/chrome_render_view_test.h" #include "chrome/test/base/chrome_unit_test_suite.h" @@ -195,8 +196,10 @@ EXPECT_FALSE(verdict.is_phishing()); } - StrictMock<MockPhishingClassifier>* classifier_; // Owned by |delegate_|. - PhishingClassifierDelegate* delegate_; // Owned by the RenderFrame. + raw_ptr<StrictMock<MockPhishingClassifier>, ExperimentalRenderer> + classifier_; // Owned by |delegate_|. + raw_ptr<PhishingClassifierDelegate, ExperimentalRenderer> + delegate_; // Owned by the RenderFrame. }; TEST_F(PhishingClassifierDelegateTest, Navigation) {
diff --git a/chrome/renderer/searchbox/searchbox.cc b/chrome/renderer/searchbox/searchbox.cc index 5dca4e9..eb914db 100644 --- a/chrome/renderer/searchbox/searchbox.cc +++ b/chrome/renderer/searchbox/searchbox.cc
@@ -11,6 +11,7 @@ #include "base/functional/bind.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" @@ -62,7 +63,7 @@ override; private: - const SearchBox* search_box_; + raw_ptr<const SearchBox, ExperimentalRenderer> search_box_; }; SearchBoxIconURLHelper::SearchBoxIconURLHelper(const SearchBox* search_box)
diff --git a/chrome/renderer/supervised_user/supervised_user_error_page_controller.h b/chrome/renderer/supervised_user/supervised_user_error_page_controller.h index 7992eef..6caa24e 100644 --- a/chrome/renderer/supervised_user/supervised_user_error_page_controller.h +++ b/chrome/renderer/supervised_user/supervised_user_error_page_controller.h
@@ -6,6 +6,7 @@ #define CHROME_RENDERER_SUPERVISED_USER_SUPERVISED_USER_ERROR_PAGE_CONTROLLER_H_ #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "gin/wrappable.h" @@ -54,7 +55,7 @@ base::WeakPtr<SupervisedUserErrorPageControllerDelegate> const delegate_; - content::RenderFrame* render_frame_; + raw_ptr<content::RenderFrame, ExperimentalRenderer> render_frame_; // This weak factory is used to generate weak pointers to the controller that // are used for the request permission callback, so messages to no longer
diff --git a/chrome/renderer/translate/translate_agent_browsertest.cc b/chrome/renderer/translate/translate_agent_browsertest.cc index 09eca6c4..9198ae39 100644 --- a/chrome/renderer/translate/translate_agent_browsertest.cc +++ b/chrome/renderer/translate/translate_agent_browsertest.cc
@@ -9,6 +9,7 @@ #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/path_service.h" #include "base/run_loop.h" #include "base/test/scoped_feature_list.h" @@ -210,7 +211,7 @@ ChromeRenderViewTest::TearDown(); } - TestTranslateAgent* translate_agent_; + raw_ptr<TestTranslateAgent, ExperimentalRenderer> translate_agent_; FakeContentTranslateDriver fake_translate_driver_; base::test::ScopedFeatureList scoped_feature_list_; };
diff --git a/chrome/renderer/url_loader_throttle_provider_impl.h b/chrome/renderer/url_loader_throttle_provider_impl.h index 089676739..25b4a80 100644 --- a/chrome/renderer/url_loader_throttle_provider_impl.h +++ b/chrome/renderer/url_loader_throttle_provider_impl.h
@@ -8,6 +8,7 @@ #include <memory> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/sequence_checker.h" #include "components/safe_browsing/content/common/safe_browsing.mojom.h" #include "extensions/buildflags/buildflags.h" @@ -50,7 +51,8 @@ URLLoaderThrottleProviderImpl(const URLLoaderThrottleProviderImpl& other); blink::URLLoaderThrottleProviderType type_; - ChromeContentRendererClient* const chrome_content_renderer_client_; + const raw_ptr<ChromeContentRendererClient, ExperimentalRenderer> + chrome_content_renderer_client_; mojo::PendingRemote<safe_browsing::mojom::SafeBrowsing> pending_safe_browsing_;
diff --git a/chrome/renderer/v8_unwinder.h b/chrome/renderer/v8_unwinder.h index 7b2a704b..8132de786 100644 --- a/chrome/renderer/v8_unwinder.h +++ b/chrome/renderer/v8_unwinder.h
@@ -8,6 +8,7 @@ #include <memory> #include <set> +#include "base/memory/raw_ptr.h" #include "base/profiler/unwinder.h" #include "v8/include/v8-unwinder.h" @@ -87,7 +88,7 @@ const base::ModuleCache::Module* b) const; }; - v8::Isolate* const isolate_; + const raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_; const v8::JSEntryStubs js_entry_stubs_; const v8::MemoryRange embedded_code_range_;
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 3742394..7d48a83 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -6095,6 +6095,7 @@ "../browser/predictors/prefetch_manager_unittest.cc", "../browser/predictors/resource_prefetch_predictor_tables_unittest.cc", "../browser/predictors/resource_prefetch_predictor_unittest.cc", + "../browser/prefs/browser_prefs_unittest.cc", "../browser/prefs/chrome_command_line_pref_store_proxy_unittest.cc", "../browser/prefs/chrome_command_line_pref_store_ssl_manager_unittest.cc", "../browser/prefs/chrome_command_line_pref_store_unittest.cc",
diff --git a/chrome/updater/test/integration_tests.cc b/chrome/updater/test/integration_tests.cc index 77804de..828cf24e 100644 --- a/chrome/updater/test/integration_tests.cc +++ b/chrome/updater/test/integration_tests.cc
@@ -1411,7 +1411,13 @@ #endif #endif -TEST_F(IntegrationTest, UpdateServiceStress) { +// TODO(crbug.com/1488344): Re-enable this test. +#if BUILDFLAG(IS_WIN) && defined(ADDRESS_SANITIZER) +#define MAYBE_UpdateServiceStress DISABLED_UpdateServiceStress +#else +#define MAYBE_UpdateServiceStress UpdateServiceStress +#endif // BUILDFLAG(IS_WIN) && defined(ADDRESS_SANITIZER) +TEST_F(IntegrationTest, MAYBE_UpdateServiceStress) { ASSERT_NO_FATAL_FAILURE(Install()); ASSERT_NO_FATAL_FAILURE(ExpectInstalled()); ASSERT_NO_FATAL_FAILURE(StressUpdateService());
diff --git a/chromeos/tast_control.gni b/chromeos/tast_control.gni index f83744f0..4ee63af 100644 --- a/chromeos/tast_control.gni +++ b/chromeos/tast_control.gni
@@ -217,6 +217,7 @@ # http://b/301459041 "lacros.Activate.keep_alive", + "lacros.Activate.no_keep_alive", # https://crbug.com/1361163 "lacros.AudioPinnedStream.play",
diff --git a/clank b/clank index 7d2ace2..c3b5fed 160000 --- a/clank +++ b/clank
@@ -1 +1 @@ -Subproject commit 7d2ace2d1f10eb333f695f18832d8083c2ff885f +Subproject commit c3b5fedc549373d6593a9fccb650bc1fd6567ef8
diff --git a/components/android_autofill/browser/autofill_provider_android.cc b/components/android_autofill/browser/autofill_provider_android.cc index 2431fcdf..d42de9b 100644 --- a/components/android_autofill/browser/autofill_provider_android.cc +++ b/components/android_autofill/browser/autofill_provider_android.cc
@@ -20,6 +20,7 @@ #include "components/autofill/core/common/autofill_constants.h" #include "components/autofill/core/common/autofill_features.h" #include "content/public/browser/browser_thread.h" +#include "content/public/browser/navigation_handle.h" #include "content/public/browser/web_contents.h" #include "ui/android/window_android.h" #include "ui/gfx/geometry/rect_f.h" @@ -69,9 +70,20 @@ // actually be shown by the AutofillExternalDelegate of an ancestor frame, // which is not notified about `rfh`'s destruction and therefore won't close // the popup. - if (manager_ && - field_id_.frame_token == LocalFrameToken(rfh->GetFrameToken().value())) { + if (manager_ && last_queried_field_rfh_id_ == rfh->GetGlobalId()) { OnHidePopup(manager_.get()); + last_queried_field_rfh_id_ = {}; + } +} + +void AutofillProviderAndroid::DidFinishNavigation( + content::NavigationHandle* navigation_handle) { + if (manager_ && + last_queried_field_rfh_id_ == + navigation_handle->GetPreviousRenderFrameHostId() && + !navigation_handle->IsSameDocument()) { + OnHidePopup(manager_.get()); + last_queried_field_rfh_id_ = {}; } } @@ -93,6 +105,15 @@ // in response, see OnAutofillAvailable. DCHECK_CURRENTLY_ON(BrowserThread::UI); + static_cast<ContentAutofillDriver&>(manager->driver()) + .render_frame_host() + ->ForEachRenderFrameHost([this, &field](content::RenderFrameHost* rfh) { + LocalFrameToken frame_token(rfh->GetFrameToken().value()); + if (frame_token == field.host_frame) { + last_queried_field_rfh_id_ = rfh->GetGlobalId(); + } + }); + // Focus or field value change will also trigger the query, so it should be // ignored if the form is same. if (ShouldStartNewSession(manager, form))
diff --git a/components/android_autofill/browser/autofill_provider_android.h b/components/android_autofill/browser/autofill_provider_android.h index 3bd613f..f887c60 100644 --- a/components/android_autofill/browser/autofill_provider_android.h +++ b/components/android_autofill/browser/autofill_provider_android.h
@@ -98,6 +98,8 @@ // content::WebContentsObserver: void RenderFrameDeleted(content::RenderFrameHost* render_frame_host) override; + void DidFinishNavigation( + content::NavigationHandle* navigation_handle) override; void OnVisibilityChanged(content::Visibility visibility) override; void FireSuccessfulSubmission(mojom::SubmissionSource source); @@ -138,6 +140,17 @@ FieldGlobalId field_id_; FieldTypeGroup field_type_group_{FieldTypeGroup::kNoGroup}; + // The frame of the field for which the last OnAskForValuesToFill() happened. + // + // It is not necessarily the same frame as the current session's + // `field_id_.host_frame` because the session may survive + // OnAskForValuesToFill(). + // + // It's not necessarily the same frame as `manager_`'s for the same reason as + // `field_id_`, and also because `manager_` may refer to an ancestor frame of + // the queried field. + content::GlobalRenderFrameHostId last_queried_field_rfh_id_; + // The origin of the field of the current session (cf. `field_id_`). This is // determines which fields are safe to be filled in cross-frame forms. url::Origin triggered_origin_;
diff --git a/components/android_autofill/browser/autofill_provider_android_unittest.cc b/components/android_autofill/browser/autofill_provider_android_unittest.cc index b29ec3b7..a76eb28 100644 --- a/components/android_autofill/browser/autofill_provider_android_unittest.cc +++ b/components/android_autofill/browser/autofill_provider_android_unittest.cc
@@ -144,6 +144,14 @@ MOCK_METHOD(void, OnDidFillAutofillFormData, (), (override)); }; +content::RenderFrameHost* NavigateAndCommitFrame(content::RenderFrameHost* rfh, + const GURL& url) { + std::unique_ptr<content::NavigationSimulator> simulator = + content::NavigationSimulator::CreateRendererInitiated(url, rfh); + simulator->Commit(); + return simulator->GetFinalRenderFrameHost(); +} + } // namespace class AutofillProviderAndroidTest : public content::RenderViewHostTestHarness { @@ -174,6 +182,7 @@ // Navigation forces the creation of an AndroidAutofillManager for the main // frame. NavigateAndCommit(GURL("about:blank")); + FocusWebContentsOnMainFrame(); } void TearDown() override { @@ -181,10 +190,13 @@ content::RenderViewHostTestHarness::TearDown(); } + content::RenderFrameHost* main_frame() { + return web_contents()->GetPrimaryMainFrame(); + } + TestAndroidAutofillManager& android_autofill_manager( content::RenderFrameHost* rfh = nullptr) { - return *autofill_manager_injector_ - [rfh ? rfh : web_contents()->GetPrimaryMainFrame()]; + return *autofill_manager_injector_[rfh ? rfh : main_frame()]; } AutofillProviderAndroid& autofill_provider() { @@ -193,8 +205,7 @@ // Returns the local frame token of the primary main frame. LocalFrameToken main_frame_token() { - return LocalFrameToken( - web_contents()->GetPrimaryMainFrame()->GetFrameToken().value()); + return LocalFrameToken(main_frame()->GetFrameToken().value()); } MockAutofillProviderAndroidBridge& provider_bridge() { @@ -432,7 +443,7 @@ // it tests that the `AutofillManager` is reset on destruction. TEST_F(AutofillProviderAndroidTest, FormSubmissionHappensOnFrameDestruction) { content::RenderFrameHost* child_rfh = - content::RenderFrameHostTester::For(web_contents()->GetPrimaryMainFrame()) + content::RenderFrameHostTester::For(main_frame()) ->AppendChild(std::string("child")); child_rfh = content::NavigationSimulator::NavigateAndCommitFromDocument( GURL("https://foo.bar"), child_rfh); @@ -463,4 +474,129 @@ ->Detach(); } +class AutofillProviderAndroidTestHidingLogic + : public AutofillProviderAndroidTest { + public: + void SetUp() override { + AutofillProviderAndroidTest::SetUp(); + NavigateAndCommit(GURL("https://foo.com")); + sub_frame_ = content::RenderFrameHostTester::For(main_frame()) + ->AppendChild(std::string("child")); + sub_frame_ = NavigateAndCommitFrame(sub_frame_, GURL("https://bar.com")); + } + + void TearDown() override { + sub_frame_ = nullptr; + AutofillProviderAndroidTest::TearDown(); + } + + void AskForValuesToFill(content::RenderFrameHost* rfh) { + FocusWebContentsOnFrame(rfh); + FormData form = + CreateFormDataForFrame(CreateTestPersonalInformationFormData(), + LocalFrameToken(rfh->GetFrameToken().value())); + android_autofill_manager(rfh).OnFormsSeen({form}, + /*removed_forms=*/{}); + // Start an Autofill session. + android_autofill_manager(rfh).SimulateOnAskForValuesToFill(form, + form.fields[0]); + } + + protected: + raw_ptr<content::RenderFrameHost> sub_frame_ = nullptr; +}; + +// Tests that if the popup is shown in the *main frame*, destruction of the +// *sub frame* does not hide the popup. +TEST_F(AutofillProviderAndroidTestHidingLogic, + KeepOpenInMainFrameOnSubFrameDestruction) { + AskForValuesToFill(main_frame()); + EXPECT_CALL(provider_bridge(), HideDatalistPopup).Times(0); + content::RenderFrameHostTester::For(sub_frame_)->Detach(); + // Verify and clear before TearDown() closes the popup. + Mock::VerifyAndClearExpectations(&provider_bridge()); +} + +// Tests that if the popup is shown in the *main frame*, a navigation in the +// *sub frame* does not hide the popup. +TEST_F(AutofillProviderAndroidTestHidingLogic, + KeepOpenInMainFrameOnSubFrameNavigation) { + AskForValuesToFill(main_frame()); + EXPECT_CALL(provider_bridge(), HideDatalistPopup).Times(0); + NavigateAndCommitFrame(sub_frame_, GURL("https://bar.com/")); + // Verify and clear before TearDown() closes the popup. + Mock::VerifyAndClearExpectations(&provider_bridge()); +} + +// Tests that if the popup is shown in the *main frame*, destruction of the +// *main frame* hides the popup. +// +// TODO(crbug.com/1488233): Disabled because the `sub_frame_` is destroyed +// before `main_frame()`, which leads to a AutofillProviderAndroid::Reset() call +// by AutofillProviderAndroid::OnManagerResetOrDestroyed(), which in turn +// invalidates AutofillProviderAndroid::field_rfh_id_, which then makes the main +// frame's RenderFrameDeleted() event a no-op. +TEST_F(AutofillProviderAndroidTestHidingLogic, + DISABLED_HideInMainFrameOnDestruction) { + AskForValuesToFill(main_frame()); + EXPECT_CALL(provider_bridge(), HideDatalistPopup); + // TearDown() destructs the main frame. +} + +// Tests that if the popup is shown in the *sub frame*, destruction of the +// *sub frame* hides the popup. +// +// TODO(crbug.com/1488233): Disabled because AutofillProviderAndroid::Reset() +// resets AutofillProviderAndroid::field_rfh_ before RenderFrameDeleted(), which +// prevents OnPopupHidden(). +TEST_F(AutofillProviderAndroidTestHidingLogic, + DISABLED_HideInSubFrameOnDestruction) { + AskForValuesToFill(sub_frame_); + EXPECT_CALL(provider_bridge(), HideDatalistPopup); + NavigateAndCommitFrame(sub_frame_, GURL("https://bar.com/")); + // Verify and clear before TearDown() closes the popup. + Mock::VerifyAndClearExpectations(&provider_bridge()); +} + +// Tests that if the popup is shown in the *main frame*, a navigation in the +// *main frame* hides the popup. +TEST_F(AutofillProviderAndroidTestHidingLogic, + HideInMainFrameOnMainFrameNavigation) { + AskForValuesToFill(main_frame()); + EXPECT_CALL(provider_bridge(), HideDatalistPopup); + NavigateAndCommitFrame(main_frame(), GURL("https://bar.com/")); +} + +// Tests that if the popup is shown in the *sub frame*, a navigation in the +// *sub frame* hides the popup. +// +// TODO(crbug.com/1488233): Disabled because AutofillProviderAndroid::Reset() +// resets AutofillProviderAndroid::field_rfh_ before RenderFrameDeleted(), which +// prevents OnPopupHidden(). +TEST_F(AutofillProviderAndroidTestHidingLogic, + DISABLED_HideInSubFrameOnSubFrameNavigation) { + AskForValuesToFill(sub_frame_); + EXPECT_CALL(provider_bridge(), HideDatalistPopup); + NavigateAndCommitFrame(sub_frame_, GURL("https://bar.com/")); +} + +// Tests that if the popup is shown in the *sub frame*, a navigation in the +// *main frame* hides the popup. +TEST_F(AutofillProviderAndroidTestHidingLogic, + HideInSubFrameOnMainFrameNavigation) { + AskForValuesToFill(main_frame()); + EXPECT_CALL(provider_bridge(), HideDatalistPopup); + NavigateAndCommitFrame(main_frame(), GURL("https://bar.com/")); +} + +// Tests that AutofillProviderAndroid::last_queried_field_rfh_id_ is updated +// when different frames are queried. +TEST_F(AutofillProviderAndroidTestHidingLogic, + FollowAskForValuesInDifferentFrames) { + AskForValuesToFill(main_frame()); + AskForValuesToFill(sub_frame_); + EXPECT_CALL(provider_bridge(), HideDatalistPopup); + NavigateAndCommitFrame(sub_frame_, GURL("https://bar.com/")); +} + } // namespace autofill
diff --git a/components/autofill/OWNERS b/components/autofill/OWNERS index 49f6a53..738b63c 100644 --- a/components/autofill/OWNERS +++ b/components/autofill/OWNERS
@@ -1,7 +1,6 @@ battre@chromium.org koerber@google.com schwering@google.com -kolos@chromium.org fleimgruber@google.com pkotwicz@chromium.org smcgruer@chromium.org
diff --git a/components/autofill/content/browser/content_autofill_driver_factory.cc b/components/autofill/content/browser/content_autofill_driver_factory.cc index 54186f7..ab12625 100644 --- a/components/autofill/content/browser/content_autofill_driver_factory.cc +++ b/components/autofill/content/browser/content_autofill_driver_factory.cc
@@ -192,18 +192,13 @@ if (!navigation_handle->HasCommitted()) { return; } - // TODO(crbug.com/1064709): Should we really return early? - if (!navigation_handle->IsInMainFrame() && - !navigation_handle->HasSubframeNavigationEntryCommitted()) { - return; - } - auto* driver = DriverForFrame(navigation_handle->GetRenderFrameHost()); if (!driver) { return; } - if (!navigation_handle->IsInPrerenderedMainFrame()) { - client_->HideAutofillPopup(PopupHidingReason::kNavigation); + if (!navigation_handle->IsInPrerenderedMainFrame() && + (navigation_handle->IsInMainFrame() || + navigation_handle->HasSubframeNavigationEntryCommitted())) { if (client_->IsTouchToFillCreditCardSupported()) { client_->HideTouchToFillCreditCard(); }
diff --git a/components/autofill/content/browser/content_autofill_driver_factory_unittest.cc b/components/autofill/content/browser/content_autofill_driver_factory_unittest.cc index 564a0167..c525640 100644 --- a/components/autofill/content/browser/content_autofill_driver_factory_unittest.cc +++ b/components/autofill/content/browser/content_autofill_driver_factory_unittest.cc
@@ -39,11 +39,6 @@ namespace { -class MockAutofillClient : public TestAutofillClient { - public: - MOCK_METHOD(void, HideAutofillPopup, (PopupHidingReason), (override)); -}; - class MockContentAutofillDriverFactoryObserver : public ContentAutofillDriverFactory::Observer { public: @@ -148,7 +143,7 @@ void SetUp() override { content::RenderViewHostTestHarness::SetUp(); - client_ = std::make_unique<MockAutofillClient>(); + client_ = std::make_unique<TestAutofillClient>(); client_->set_channel_for_testing(channel_); agent_ = std::make_unique<MockAutofillAgent>(); @@ -172,11 +167,6 @@ } void NavigateMainFrame(base::StringPiece url) { - // One call of HideAutofillPopup() comes from ContentAutofillDriverFactory. - // A second and third one may come from BrowserAutofillManager::Reset() if - // the navigation is cross-document. - EXPECT_CALL(*client_, HideAutofillPopup(PopupHidingReason::kNavigation)) - .Times(Between(1, 3)); content::NavigationSimulator::CreateBrowserInitiated(GURL(url), web_contents()) ->Commit(); @@ -185,7 +175,7 @@ protected: version_info::Channel channel_; std::unique_ptr<MockAutofillAgent> agent_; - std::unique_ptr<MockAutofillClient> client_; + std::unique_ptr<TestAutofillClient> client_; std::unique_ptr<ContentAutofillDriverFactory> factory_; }; @@ -240,11 +230,6 @@ EXPECT_EQ(factory_->DriverForFrame(main_rfh()), main_driver); EXPECT_EQ(factory_->DriverForFrame(child_rfh()), child_driver); EXPECT_EQ(test_api(*factory_).num_drivers(), 2u); - // TODO(crbug.com/1200511): Set the router's last source and target, and if - // the |child_driver| is destroyed, expect a call to - // AutofillManager::OnHidePopup(). For this to work, we need mock - // AutofillManagers instead of real BrowserAutofillManager, which are blocked - // by ContentAutofillDriver's use of the factory callback. } // Test case with two frames, where the parameter selects one of them.
diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components/autofill/content/renderer/autofill_agent.cc index a3b76f4..193cdec 100644 --- a/components/autofill/content/renderer/autofill_agent.cc +++ b/components/autofill/content/renderer/autofill_agent.cc
@@ -17,6 +17,7 @@ #include "base/functional/bind.h" #include "base/i18n/case_conversion.h" #include "base/location.h" +#include "base/memory/raw_ref.h" #include "base/metrics/field_trial.h" #include "base/strings/string_piece.h" #include "base/strings/string_split.h" @@ -130,8 +131,8 @@ private: template <typename F, typename... Args> void SendMsg(F fn, Args&&... args) { - if (auto* autofill_driver = agent_.unsafe_autofill_driver()) { - DCHECK(!agent_.IsPrerendering()); + if (auto* autofill_driver = agent_->unsafe_autofill_driver()) { + DCHECK(!agent_->IsPrerendering()); DCHECK_NE(autofill_driver, this); (autofill_driver->*fn)(std::forward<Args>(args)...); } @@ -139,8 +140,8 @@ template <typename F, typename... Args> void DeferMsg(F fn, Args... args) { - if (auto* render_frame = agent_.unsafe_render_frame()) { - DCHECK(agent_.IsPrerendering()); + if (auto* render_frame = agent_->unsafe_render_frame()) { + DCHECK(agent_->IsPrerendering()); render_frame->GetWebFrame() ->GetDocument() .AddPostPrerenderingActivationStep(base::BindOnce( @@ -219,7 +220,7 @@ field, old_value); } - AutofillAgent& agent_; + const raw_ref<AutofillAgent, ExperimentalRenderer> agent_; base::WeakPtrFactory<DeferringAutofillDriver> weak_ptr_factory_{this}; }; @@ -266,7 +267,7 @@ if (input_element.IsPasswordFieldForAutofill()) { return FocusedFieldType::kFillablePasswordField; } - if (agent_.password_autofill_agent_->IsUsernameInputField(input_element)) { + if (agent_->password_autofill_agent_->IsUsernameInputField(input_element)) { return FocusedFieldType::kFillableUsernameField; } if (form_util::IsWebauthnTaggedElement(node)) { @@ -286,8 +287,8 @@ } // TODO(crbug.com/1425166): Move FocusedInputChanged to AutofillDriver. - agent_.GetPasswordManagerDriver().FocusedInputChanged(new_focused_field_id, - new_focused_field_type); + agent_->GetPasswordManagerDriver().FocusedInputChanged( + new_focused_field_id, new_focused_field_type); focused_field_type_ = new_focused_field_type; focused_field_id_ = new_focused_field_id;
diff --git a/components/autofill/content/renderer/autofill_agent.h b/components/autofill/content/renderer/autofill_agent.h index 8945e33..222de23 100644 --- a/components/autofill/content/renderer/autofill_agent.h +++ b/components/autofill/content/renderer/autofill_agent.h
@@ -11,6 +11,8 @@ #include "base/compiler_specific.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" +#include "base/memory/raw_ref.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" #include "base/timer/timer.h" @@ -208,7 +210,7 @@ FieldRendererId focused_field_id_; mojom::FocusedFieldType focused_field_type_ = mojom::FocusedFieldType::kUnknown; - AutofillAgent& agent_; + const raw_ref<AutofillAgent, ExperimentalRenderer> agent_; }; // content::RenderFrameObserver: @@ -357,8 +359,10 @@ // reset when the AutofillAgent is pending deletion. std::unique_ptr<FormCache> form_cache_; - PasswordAutofillAgent* password_autofill_agent_; // Weak reference. - PasswordGenerationAgent* password_generation_agent_; // Weak reference. + raw_ptr<PasswordAutofillAgent, ExperimentalRenderer> + password_autofill_agent_; // Weak reference. + raw_ptr<PasswordGenerationAgent, ExperimentalRenderer> + password_generation_agent_; // Weak reference. // The element corresponding to the last request sent for form field Autofill. blink::WebFormControlElement last_queried_element_;
diff --git a/components/autofill/content/renderer/form_cache.h b/components/autofill/content/renderer/form_cache.h index 1653677..4d5432f 100644 --- a/components/autofill/content/renderer/form_cache.h +++ b/components/autofill/content/renderer/form_cache.h
@@ -14,6 +14,7 @@ #include "base/containers/flat_set.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "components/autofill/core/common/field_data_manager.h" #include "components/autofill/core/common/form_data.h" #include "components/autofill/core/common/form_data_predictions.h" @@ -126,7 +127,7 @@ void PruneInitialValueCaches(const std::set<FieldRendererId>& ids_to_retain); // The frame this FormCache is associated with. Weak reference. - blink::WebLocalFrame* frame_; + raw_ptr<blink::WebLocalFrame, ExperimentalRenderer> frame_; // The cached forms. Used to prevent re-extraction of forms. std::map<FormRendererId, FormData> extracted_forms_;
diff --git a/components/autofill/content/renderer/form_tracker.h b/components/autofill/content/renderer/form_tracker.h index 86a2c64..2d1950a 100644 --- a/components/autofill/content/renderer/form_tracker.h +++ b/components/autofill/content/renderer/form_tracker.h
@@ -6,6 +6,7 @@ #define COMPONENTS_AUTOFILL_CONTENT_RENDERER_FORM_TRACKER_H_ #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" #include "base/sequence_checker.h" @@ -152,7 +153,8 @@ bool user_gesture_required_ = true; blink::WebFormElement last_interacted_form_; blink::WebFormControlElement last_interacted_formless_element_; - blink::WebFormElementObserver* form_element_observer_ = nullptr; + raw_ptr<blink::WebFormElementObserver, ExperimentalRenderer> + form_element_observer_ = nullptr; SEQUENCE_CHECKER(form_tracker_sequence_checker_);
diff --git a/components/autofill/content/renderer/page_form_analyser_logger.h b/components/autofill/content/renderer/page_form_analyser_logger.h index d885640..9d05dea 100644 --- a/components/autofill/content/renderer/page_form_analyser_logger.h +++ b/components/autofill/content/renderer/page_form_analyser_logger.h
@@ -8,6 +8,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "third_party/blink/public/web/web_console_message.h" #include "third_party/blink/public/web/web_local_frame.h" #include "third_party/blink/public/web/web_node.h" @@ -41,7 +42,7 @@ virtual void Flush(); private: - blink::WebLocalFrame* frame_; + raw_ptr<blink::WebLocalFrame, ExperimentalRenderer> frame_; // Though PageFormAnalyserLogger provides buffering, it is intended to be // simply over the course of a single analysis, for ordering purposes.
diff --git a/components/autofill/content/renderer/page_passwords_analyser.cc b/components/autofill/content/renderer/page_passwords_analyser.cc index f8f02db..c9b9042 100644 --- a/components/autofill/content/renderer/page_passwords_analyser.cc +++ b/components/autofill/content/renderer/page_passwords_analyser.cc
@@ -11,6 +11,7 @@ #include "base/containers/contains.h" #include "base/lazy_instance.h" +#include "base/memory/raw_ptr.h" #include "base/ranges/algorithm.h" #include "base/strings/strcat.h" #include "base/strings/stringprintf.h" @@ -126,7 +127,7 @@ // something of the purpose of an element (for example: that it is a username // field). struct InputHint { - const re2::RE2* regex; + raw_ptr<const re2::RE2, ExperimentalRenderer> regex; size_t match; explicit InputHint(const re2::RE2* regex)
diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/components/autofill/content/renderer/password_autofill_agent.cc index d141d12..9dde6e43 100644 --- a/components/autofill/content/renderer/password_autofill_agent.cc +++ b/components/autofill/content/renderer/password_autofill_agent.cc
@@ -15,6 +15,7 @@ #include "base/feature_list.h" #include "base/functional/bind.h" #include "base/i18n/case_conversion.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/field_trial_params.h" #include "base/metrics/histogram_macros.h" #include "base/no_destructor.h" @@ -659,7 +660,7 @@ form_renderer_id, result); } - PasswordAutofillAgent* agent_ = nullptr; + raw_ptr<PasswordAutofillAgent, ExperimentalRenderer> agent_ = nullptr; base::WeakPtrFactory<DeferringPasswordManagerDriver> weak_ptr_factory_{this}; };
diff --git a/components/autofill/content/renderer/password_autofill_agent.h b/components/autofill/content/renderer/password_autofill_agent.h index 6a3a94c9..0fa50678 100644 --- a/components/autofill/content/renderer/password_autofill_agent.h +++ b/components/autofill/content/renderer/password_autofill_agent.h
@@ -12,6 +12,7 @@ #include <utility> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/types/strong_alias.h" #include "build/build_config.h" @@ -522,7 +523,8 @@ base::WeakPtr<AutofillAgent> autofill_agent_; - PasswordGenerationAgent* password_generation_agent_; // Weak reference. + raw_ptr<PasswordGenerationAgent, ExperimentalRenderer> + password_generation_agent_; // Weak reference. #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) PagePasswordsAnalyser page_passwords_analyser_;
diff --git a/components/autofill/content/renderer/password_generation_agent.cc b/components/autofill/content/renderer/password_generation_agent.cc index 3433f06e..914988d 100644 --- a/components/autofill/content/renderer/password_generation_agent.cc +++ b/components/autofill/content/renderer/password_generation_agent.cc
@@ -12,6 +12,7 @@ #include "base/command_line.h" #include "base/containers/contains.h" #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/ranges/algorithm.h" #include "base/task/single_thread_task_runner.h" #include "components/autofill/content/renderer/form_autofill_util.h" @@ -159,7 +160,7 @@ DeferMsg(&mojom::PasswordGenerationDriver::GenerationElementLostFocus); } - PasswordGenerationAgent* agent_ = nullptr; + raw_ptr<PasswordGenerationAgent, ExperimentalRenderer> agent_ = nullptr; base::WeakPtrFactory<DeferringPasswordGenerationDriver> weak_ptr_factory_{ this}; };
diff --git a/components/autofill/content/renderer/password_generation_agent.h b/components/autofill/content/renderer/password_generation_agent.h index e56c7a9..b84ce7e 100644 --- a/components/autofill/content/renderer/password_generation_agent.h +++ b/components/autofill/content/renderer/password_generation_agent.h
@@ -11,6 +11,7 @@ #include <memory> #include <utility> +#include "base/memory/raw_ptr.h" #include "components/autofill/content/common/mojom/autofill_agent.mojom.h" #include "components/autofill/content/common/mojom/autofill_driver.mojom.h" #include "components/autofill/content/renderer/renderer_save_password_progress_logger.h" @@ -177,7 +178,7 @@ // Unowned pointer. Used to notify PassowrdAutofillAgent when values // in password fields are updated. - PasswordAutofillAgent* password_agent_; + raw_ptr<PasswordAutofillAgent, ExperimentalRenderer> password_agent_; mojo::AssociatedRemote<mojom::PasswordGenerationDriver> password_generation_client_;
diff --git a/components/autofill/content/renderer/renderer_save_password_progress_logger.h b/components/autofill/content/renderer/renderer_save_password_progress_logger.h index b5fd9fa0..c11851f 100644 --- a/components/autofill/content/renderer/renderer_save_password_progress_logger.h +++ b/components/autofill/content/renderer/renderer_save_password_progress_logger.h
@@ -7,6 +7,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "components/autofill/content/common/mojom/autofill_driver.mojom.h" #include "components/autofill/core/common/save_password_progress_logger.h" @@ -42,7 +43,8 @@ private: // Used by SendLog to send the logs to the browser. // |password_manager_driver_| needs to outlive the logger. - mojom::PasswordManagerDriver* password_manager_driver_; + raw_ptr<mojom::PasswordManagerDriver, ExperimentalRenderer> + password_manager_driver_; }; } // namespace autofill
diff --git a/components/autofill/core/browser/BUILD.gn b/components/autofill/core/browser/BUILD.gn index 95c5b48..2ae0fbc 100644 --- a/components/autofill/core/browser/BUILD.gn +++ b/components/autofill/core/browser/BUILD.gn
@@ -1090,7 +1090,6 @@ "ui/payments/bubble_show_options_unittest.cc", "ui/payments/card_unmask_prompt_controller_impl_unittest.cc", "ui/region_combobox_model_unittest.cc", - "ui/suggestion_selection_unittest.cc", "validation_unittest.cc", "webdata/autocomplete_sync_bridge_unittest.cc", "webdata/autofill_profile_sync_bridge_unittest.cc",
diff --git a/components/autofill/core/browser/autofill_client.h b/components/autofill/core/browser/autofill_client.h index f1715f3..9a22561a 100644 --- a/components/autofill/core/browser/autofill_client.h +++ b/components/autofill/core/browser/autofill_client.h
@@ -729,7 +729,9 @@ // Show a delete address profile dialog asking if users want to proceed with // deletion. - virtual void ShowDeleteAddressProfileDialog() = 0; + virtual void ShowDeleteAddressProfileDialog( + const AutofillProfile& profile, + AddressProfileDeleteDialogCallback delete_dialog_callback) = 0; // Shows the offer-to-save (or update) address profile bubble. If // `original_profile` is nullptr, this renders a save prompt. Otherwise, it
diff --git a/components/autofill/core/browser/autofill_external_delegate.cc b/components/autofill/core/browser/autofill_external_delegate.cc index fdc3b11f..7557325 100644 --- a/components/autofill/core/browser/autofill_external_delegate.cc +++ b/components/autofill/core/browser/autofill_external_delegate.cc
@@ -343,8 +343,8 @@ break; } case PopupItemId::kDeleteAddressProfile: - // TODO(crbug.com/1459990): call the manager to display the delete address - // profile dialog. + ShowDeleteAddressProfileDialog( + suggestion.GetPayload<Suggestion::BackendId>().value()); break; case PopupItemId::kClearForm: // This serves as a clear form or undo autofill suggestion, depending on @@ -556,13 +556,6 @@ deletion_callback_ = std::move(deletion_callback); } -void AutofillExternalDelegate::Reset() { - // We should not affect UI on the active page due to a prerendered page. - if (!manager_->driver().IsPrerendering()) { - manager_->client().HideAutofillPopup(PopupHidingReason::kNavigation); - } -} - base::WeakPtr<AutofillExternalDelegate> AutofillExternalDelegate::GetWeakPtr() { return weak_ptr_factory_.GetWeakPtr(); } @@ -579,6 +572,18 @@ } } +void AutofillExternalDelegate::ShowDeleteAddressProfileDialog( + const std::string& guid) { + AutofillProfile* profile = + manager_->client().GetPersonalDataManager()->GetProfileByGUID(guid); + if (profile) { + manager_->client().ShowDeleteAddressProfileDialog( + *profile, + base::BindOnce(&AutofillExternalDelegate::OnDeleteDialogClosed, + GetWeakPtr(), guid)); + } +} + void AutofillExternalDelegate::OnAddressEditorClosed( AutofillClient::SaveAddressProfileOfferUserDecision decision, AutofillProfile profile) { @@ -596,6 +601,21 @@ AutofillSuggestionTriggerSource::kShowPromptAfterDialogClosed); } +void AutofillExternalDelegate::OnDeleteDialogClosed(const std::string& guid, + bool user_accepted_delete) { + if (user_accepted_delete) { + PersonalDataManager* pdm = manager_->client().GetPersonalDataManager(); + if (!pdm_observation_.IsObserving()) { + pdm_observation_.Observe(pdm); + } + pdm->RemoveByGUID(guid); + return; + } + manager_->driver().RendererShouldTriggerSuggestions( + query_field_.global_id(), + AutofillSuggestionTriggerSource::kShowPromptAfterDialogClosed); +} + void AutofillExternalDelegate::OnPersonalDataFinishedProfileTasks() { pdm_observation_.Reset(); manager_->driver().RendererShouldTriggerSuggestions(
diff --git a/components/autofill/core/browser/autofill_external_delegate.h b/components/autofill/core/browser/autofill_external_delegate.h index 1d46103..c3c56980 100644 --- a/components/autofill/core/browser/autofill_external_delegate.h +++ b/components/autofill/core/browser/autofill_external_delegate.h
@@ -127,10 +127,6 @@ // used to help record the metrics of when a new popup is shown. void DidEndTextFieldEditing(); - // Returns the delegate to its starting state by removing any page specific - // values or settings. - void Reset(); - // PersonalDataManagerObserver: void OnPersonalDataFinishedProfileTasks() override; @@ -150,11 +146,17 @@ // determined by passed `guid`. void ShowEditAddressProfileDialog(const std::string& guid); + // Shows the delete address profile dialog to the user. The Autofill profile + // to delete is determined by the passed `guid`. + void ShowDeleteAddressProfileDialog(const std::string& guid); + // Triggered when user closes the address editor dialog. void OnAddressEditorClosed( AutofillClient::SaveAddressProfileOfferUserDecision decision, AutofillProfile profile); + void OnDeleteDialogClosed(const std::string& guid, bool user_accepted_delete); + // Called when a credit card is scanned using device camera. void OnCreditCardScanned(const AutofillTriggerSource trigger_source, const CreditCard& card); @@ -231,6 +233,9 @@ // If not null then it will be called in destructor. base::OnceClosure deletion_callback_; + // Autofill profile update and deletion are async operations. PDM observer is + // used to detect when these operations finish. These operations can happen at + // the same time. base::ScopedObservation<PersonalDataManager, PersonalDataManagerObserver> pdm_observation_{this};
diff --git a/components/autofill/core/browser/autofill_external_delegate_unittest.cc b/components/autofill/core/browser/autofill_external_delegate_unittest.cc index 44aea9815..3860b8f 100644 --- a/components/autofill/core/browser/autofill_external_delegate_unittest.cc +++ b/components/autofill/core/browser/autofill_external_delegate_unittest.cc
@@ -85,6 +85,7 @@ (const override)); MOCK_METHOD(bool, IsAutofillProfileEnabled, (), (const override)); MOCK_METHOD(void, UpdateProfile, (const AutofillProfile&), (override)); + MOCK_METHOD(void, RemoveByGUID, (const std::string&), (override)); }; class MockAutofillDriver : public TestAutofillDriver { @@ -150,6 +151,10 @@ ShowEditAddressProfileDialog, (const AutofillProfile&, AddressProfileSavePromptCallback), (override)); + MOCK_METHOD(void, + ShowDeleteAddressProfileDialog, + (const AutofillProfile&, AddressProfileDeleteDialogCallback), + (override)); #if BUILDFLAG(IS_IOS) // Mock the client query ID check. @@ -312,7 +317,7 @@ } }; -// Test that address editor is not shown if there's no autofill profile with +// Test that the address editor is not shown if there's no Autofill profile with // the provided GUID. TEST_F(AutofillExternalDelegateUnitTest, ShowEditorForNonexistingProfile) { IssueOnQuery(); @@ -329,8 +334,8 @@ AutofillSuggestionTriggerSource::kFormControlElementClicked); } -// Test that address editor is shown for the GUID identifying existing autofill -// profile. +// Test that the address editor is shown for the GUID identifying existing +// Autofill profile. TEST_F(AutofillExternalDelegateUnitTest, ShowEditorForExistingProfile) { IssueOnQuery(); @@ -346,7 +351,8 @@ AutofillSuggestionTriggerSource::kFormControlElementClicked); } -// Test that editor changes are not persisted if the user has canceled editing. +// Test that the editor changes are not persisted if the user has canceled +// editing. TEST_F(AutofillExternalDelegateUnitTest, UserCancelsEditing) { IssueOnQuery(); @@ -377,7 +383,7 @@ AutofillSuggestionTriggerSource::kFormControlElementClicked); } -// Test that editor changes are persisted if the user has canceled editing. +// Test that the editor changes are persisted if the user has canceled editing. TEST_F(AutofillExternalDelegateUnitTest, UserSavesEdits) { IssueOnQuery(); @@ -391,7 +397,7 @@ kEditAccepted, profile_); }); - // Updated autofill profile must be persisted when user saves changes through + // Updated Autofill profile must be persisted when user saves changes through // the address editor. EXPECT_CALL(personal_data_manager_, AddObserver(external_delegate_.get())); EXPECT_CALL(personal_data_manager_, UpdateProfile(profile_)); @@ -430,7 +436,7 @@ }); // PDM observer must be added only once. EXPECT_CALL(personal_data_manager_, AddObserver(external_delegate_.get())); - // Changes to the autofill profile must be persisted both times. + // Changes to the Autofill profile must be persisted both times. EXPECT_CALL(personal_data_manager_, UpdateProfile(profile_)).Times(2); auto suggestion = Suggestion(PopupItemId::kEditAddressProfile); @@ -474,6 +480,130 @@ external_delegate_.reset(); } +// Test that the delete dialog is not shown if there's no Autofill profile with +// the provided GUID. +TEST_F(AutofillExternalDelegateUnitTest, + ShowDeleteDialogForNonexistingProfile) { + IssueOnQuery(); + + const std::string guid = base::Uuid().AsLowercaseString(); + ON_CALL(personal_data_manager_, GetProfileByGUID(guid)) + .WillByDefault(Return(nullptr)); + EXPECT_CALL(autofill_client_, ShowDeleteAddressProfileDialog(_, _)).Times(0); + auto suggestion = Suggestion(PopupItemId::kDeleteAddressProfile); + suggestion.payload = Suggestion::BackendId(guid); + + external_delegate_->DidAcceptSuggestion( + suggestion, 0, + AutofillSuggestionTriggerSource::kFormControlElementClicked); +} + +// Test that the delete dialog is shown for the GUID identifying existing +// Autofill profile. +TEST_F(AutofillExternalDelegateUnitTest, ShowDeleteDialog) { + IssueOnQuery(); + + const std::string guid = base::Uuid().AsLowercaseString(); + ON_CALL(personal_data_manager_, GetProfileByGUID(guid)) + .WillByDefault(Return(&profile_)); + EXPECT_CALL(autofill_client_, ShowDeleteAddressProfileDialog(profile_, _)); + auto suggestion = Suggestion(PopupItemId::kDeleteAddressProfile); + suggestion.payload = Suggestion::BackendId(guid); + + external_delegate_->DidAcceptSuggestion( + suggestion, 0, + AutofillSuggestionTriggerSource::kFormControlElementClicked); +} + +// Test that the Autofill profile is not deleted when user cancels the deletion +// process. +TEST_F(AutofillExternalDelegateUnitTest, UserCancelsDeletion) { + IssueOnQuery(); + + const std::string guid = base::Uuid().AsLowercaseString(); + ON_CALL(personal_data_manager_, GetProfileByGUID(guid)) + .WillByDefault(Return(&profile_)); + EXPECT_CALL(autofill_client_, ShowDeleteAddressProfileDialog(profile_, _)) + .WillOnce([](auto profile, auto delete_dialog_callback) { + std::move(delete_dialog_callback).Run(/*user_accepted_delete=*/false); + }); + // Address profile must remain intact if user cancels deletion process. + EXPECT_CALL(personal_data_manager_, AddObserver(_)).Times(0); + EXPECT_CALL(personal_data_manager_, RemoveByGUID(_)).Times(0); + // The Autofill popup must be reopened when the delete dialog is closed. + EXPECT_CALL( + *autofill_driver_, + RendererShouldTriggerSuggestions( + queried_form_triggering_field_id_, + AutofillSuggestionTriggerSource::kShowPromptAfterDialogClosed)); + auto suggestion = Suggestion(PopupItemId::kDeleteAddressProfile); + suggestion.payload = Suggestion::BackendId(guid); + + external_delegate_->DidAcceptSuggestion( + suggestion, 0, + AutofillSuggestionTriggerSource::kFormControlElementClicked); +} + +// Test that the correct Autofill profile is deleted when the user accepts the +// deletion process. +TEST_F(AutofillExternalDelegateUnitTest, UserAcceptsDeletion) { + IssueOnQuery(); + + const std::string guid = base::Uuid().AsLowercaseString(); + ON_CALL(personal_data_manager_, GetProfileByGUID(guid)) + .WillByDefault(Return(&profile_)); + EXPECT_CALL(autofill_client_, ShowDeleteAddressProfileDialog(profile_, _)) + .WillOnce([](auto profile, auto delete_dialog_callback) { + std::move(delete_dialog_callback).Run(/*user_accepted_delete=*/true); + }); + // Autofill profile must be deleted when user confirms the dialog. + EXPECT_CALL(personal_data_manager_, AddObserver(external_delegate_.get())); + EXPECT_CALL(personal_data_manager_, RemoveByGUID(guid)); + // The Autofill popup must be reopened when the delete dialog is closed. + EXPECT_CALL( + *autofill_driver_, + RendererShouldTriggerSuggestions( + queried_form_triggering_field_id_, + AutofillSuggestionTriggerSource::kShowPromptAfterDialogClosed)); + auto suggestion = Suggestion(PopupItemId::kDeleteAddressProfile); + suggestion.payload = Suggestion::BackendId(guid); + + external_delegate_->DidAcceptSuggestion( + suggestion, 0, + AutofillSuggestionTriggerSource::kFormControlElementClicked); + + external_delegate_->OnPersonalDataFinishedProfileTasks(); +} + +// Test the situation when AutofillExternalDelegate is destroyed before the +// PersonalDataManager observer is notified that all tasks have been processed. +TEST_F(AutofillExternalDelegateUnitTest, + UserOpensDeleteDialogTwiceBeforeProfileIsDeleted) { + IssueOnQuery(); + + const std::string guid = base::Uuid().AsLowercaseString(); + ON_CALL(personal_data_manager_, GetProfileByGUID(guid)) + .WillByDefault(Return(&profile_)); + EXPECT_CALL(autofill_client_, ShowDeleteAddressProfileDialog(profile_, _)) + .Times(2) + .WillRepeatedly([](auto profile, auto delete_dialog_callback) { + std::move(delete_dialog_callback).Run(/*user_accepted_delete=*/true); + }); + // PDM observer must be added only once. + EXPECT_CALL(personal_data_manager_, AddObserver(_)); + // Autofill profile can be deleted both times. + EXPECT_CALL(personal_data_manager_, RemoveByGUID(guid)).Times(2); + auto suggestion = Suggestion(PopupItemId::kDeleteAddressProfile); + suggestion.payload = Suggestion::BackendId(guid); + + external_delegate_->DidAcceptSuggestion( + suggestion, 0, + AutofillSuggestionTriggerSource::kFormControlElementClicked); + external_delegate_->DidAcceptSuggestion( + suggestion, 0, + AutofillSuggestionTriggerSource::kFormControlElementClicked); +} + // Test that our external delegate called the virtual methods at the right time. TEST_F(AutofillExternalDelegateUnitTest, TestExternalDelegateVirtualCalls) { IssueOnQuery();
diff --git a/components/autofill/core/browser/autofill_suggestion_generator.cc b/components/autofill/core/browser/autofill_suggestion_generator.cc index 4f3a9e41..2f768a1 100644 --- a/components/autofill/core/browser/autofill_suggestion_generator.cc +++ b/components/autofill/core/browser/autofill_suggestion_generator.cc
@@ -259,8 +259,7 @@ if (field_contents_canon.empty()) { const base::Time min_last_used = AutofillClock::Now() - kDisusedDataModelTimeDelta; - suggestion_selection::RemoveProfilesNotUsedSinceTimestamp(min_last_used, - sorted_profiles); + RemoveProfilesNotUsedSinceTimestamp(min_last_used, sorted_profiles); } std::vector<const AutofillProfile*> matched_profiles = @@ -475,6 +474,18 @@ return matched_profiles; } +void AutofillSuggestionGenerator::RemoveProfilesNotUsedSinceTimestamp( + base::Time min_last_used, + std::vector<AutofillProfile*>& profiles) { + const size_t original_size = profiles.size(); + base::EraseIf(profiles, [min_last_used](const AutofillProfile* profile) { + return profile->use_date() <= min_last_used; + }); + const size_t num_profiles_suppressed = original_size - profiles.size(); + AutofillMetrics::LogNumberOfAddressesSuppressedForDisuse( + num_profiles_suppressed); +} + std::vector<Suggestion> AutofillSuggestionGenerator::GetSuggestionsForCreditCards( const FormFieldData& field,
diff --git a/components/autofill/core/browser/autofill_suggestion_generator.h b/components/autofill/core/browser/autofill_suggestion_generator.h index 54e1573..2f806d5 100644 --- a/components/autofill/core/browser/autofill_suggestion_generator.h +++ b/components/autofill/core/browser/autofill_suggestion_generator.h
@@ -201,6 +201,12 @@ const std::string& app_locale, bool field_is_autofilled); + // Removes profiles that haven't been used after `min_last_used` from + // |profiles|. The relative ordering of `profiles` is maintained. + void RemoveProfilesNotUsedSinceTimestamp( + base::Time min_last_used, + std::vector<AutofillProfile*>& profiles); + // Return the texts shown as the first line of the suggestion, based on the // `credit_card` and the focused field `type`. The first index in the pair // represents the main text, and the second index represents the minor text.
diff --git a/components/autofill/core/browser/autofill_suggestion_generator_unittest.cc b/components/autofill/core/browser/autofill_suggestion_generator_unittest.cc index e62f7b1..d0833c6 100644 --- a/components/autofill/core/browser/autofill_suggestion_generator_unittest.cc +++ b/components/autofill/core/browser/autofill_suggestion_generator_unittest.cc
@@ -655,6 +655,44 @@ ASSERT_TRUE(profiles_to_suggest.empty()); } +// Tests that disused profiles get removed. +TEST_F(AutofillSuggestionGeneratorTest, + GetProfilesToSuggest_RemoveProfilesNotUsedSinceTimestamp) { + const char kAddressesSuppressedHistogramName[] = + "Autofill.AddressesSuppressedForDisuse"; + base::Time kCurrentTime = AutofillClock::Now(); + constexpr size_t kNumProfiles = 10; + constexpr base::TimeDelta k30Days = base::Days(30); + constexpr size_t kNbSuggestions = + (kDisusedDataModelTimeDelta + base::Days(29)) / k30Days; + + // Set up the profile vectors with last use dates ranging from `kCurrentTime` + // to 270 days ago, in 30 day increments. + std::vector<AutofillProfile> profiles(kNumProfiles); + for (size_t i = 0; i < kNumProfiles; ++i) { + profiles[i].SetRawInfo( + NAME_FULL, base::UTF8ToUTF16(base::StringPrintf("Bob %zu Doe", i))); + profiles[i].set_use_date(kCurrentTime - (i * k30Days)); + personal_data()->AddProfile(profiles[i]); + } + + // Filter the profiles while capturing histograms. + base::HistogramTester histogram_tester; + std::vector<const AutofillProfile*> profiles_to_suggest = + suggestion_generator()->GetProfilesToSuggest( + AutofillType(NAME_FULL), u"", + /*field_is_autofilled=*/false, {NAME_FULL}); + + // Validate that we get the expected filtered profiles and histograms. + ASSERT_EQ(kNbSuggestions, profiles_to_suggest.size()); + for (size_t i = 0; i < kNbSuggestions; ++i) { + EXPECT_EQ(profiles[i].guid(), profiles_to_suggest[i]->guid()) << i; + } + histogram_tester.ExpectTotalCount(kAddressesSuppressedHistogramName, 1); + histogram_tester.ExpectBucketCount(kAddressesSuppressedHistogramName, + kNumProfiles - kNbSuggestions, 1); +} + TEST_F(AutofillSuggestionGeneratorTest, CreateSuggestionsFromProfiles) { AutofillProfile profile; test::SetProfileInfo(&profile, "Marion", "Mitchell", "Morrison",
diff --git a/components/autofill/core/browser/browser_autofill_manager.cc b/components/autofill/core/browser/browser_autofill_manager.cc index 94c9131..8d78e5cf 100644 --- a/components/autofill/core/browser/browser_autofill_manager.cc +++ b/components/autofill/core/browser/browser_autofill_manager.cc
@@ -2226,7 +2226,6 @@ last_unlocked_credit_card_cvc_.clear(); initial_interaction_timestamp_ = TimeTicks(); fetched_credit_card_trigger_source_ = absl::nullopt; - external_delegate_->Reset(); if (touch_to_fill_delegate_) { touch_to_fill_delegate_->Reset(); }
diff --git a/components/autofill/core/browser/test_autofill_client.h b/components/autofill/core/browser/test_autofill_client.h index af917a6..e82075c3 100644 --- a/components/autofill/core/browser/test_autofill_client.h +++ b/components/autofill/core/browser/test_autofill_client.h
@@ -392,7 +392,10 @@ AutofillClient::AddressProfileSavePromptCallback on_user_decision_callback) override {} - void ShowDeleteAddressProfileDialog() override {} + void ShowDeleteAddressProfileDialog( + const AutofillProfile& profile, + AutofillClient::AddressProfileDeleteDialogCallback delete_dialog_callback) + override {} bool HasCreditCardScanFeature() override { return false; }
diff --git a/components/autofill/core/browser/ui/suggestion_selection.cc b/components/autofill/core/browser/ui/suggestion_selection.cc index adda3cc..8bfbaa9 100644 --- a/components/autofill/core/browser/ui/suggestion_selection.cc +++ b/components/autofill/core/browser/ui/suggestion_selection.cc
@@ -427,16 +427,4 @@ base::CompareCase::SENSITIVE); } -void RemoveProfilesNotUsedSinceTimestamp( - base::Time min_last_used, - std::vector<AutofillProfile*>& profiles) { - const size_t original_size = profiles.size(); - base::EraseIf(profiles, [min_last_used](const AutofillProfile* profile) { - return profile->use_date() <= min_last_used; - }); - const size_t num_profiles_suppressed = original_size - profiles.size(); - AutofillMetrics::LogNumberOfAddressesSuppressedForDisuse( - num_profiles_suppressed); -} - } // namespace autofill::suggestion_selection
diff --git a/components/autofill/core/browser/ui/suggestion_selection.h b/components/autofill/core/browser/ui/suggestion_selection.h index d7462425f..fbcdb2a 100644 --- a/components/autofill/core/browser/ui/suggestion_selection.h +++ b/components/autofill/core/browser/ui/suggestion_selection.h
@@ -65,12 +65,6 @@ bool is_masked_server_card, bool field_is_autofilled); -// Removes profiles that haven't been used after |min_last_used| from -// |profiles|. The relative ordering of |profiles| is maintained. -void RemoveProfilesNotUsedSinceTimestamp( - base::Time min_last_used, - std::vector<AutofillProfile*>& profiles); - } // namespace suggestion_selection } // namespace autofill
diff --git a/components/autofill/core/browser/ui/suggestion_selection_unittest.cc b/components/autofill/core/browser/ui/suggestion_selection_unittest.cc deleted file mode 100644 index 239d0fa..0000000 --- a/components/autofill/core/browser/ui/suggestion_selection_unittest.cc +++ /dev/null
@@ -1,233 +0,0 @@ -// Copyright 2018 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -#include "components/autofill/core/browser/ui/suggestion_selection.h" - -#include <iterator> - -#include "base/rand_util.h" -#include "base/ranges/algorithm.h" -#include "base/strings/stringprintf.h" -#include "base/strings/utf_string_conversions.h" -#include "base/test/metrics/histogram_tester.h" -#include "base/test/scoped_feature_list.h" -#include "base/test/to_vector.h" -#include "base/time/time.h" -#include "base/uuid.h" -#include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/autofill_type.h" -#include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" -#include "components/autofill/core/browser/field_types.h" -#include "components/autofill/core/common/autofill_clock.h" -#include "components/autofill/core/common/autofill_features.h" -#include "testing/gmock/include/gmock/gmock.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace autofill::suggestion_selection { - -using base::ASCIIToUTF16; -using testing::Each; -using testing::ElementsAre; -using testing::Field; -using testing::Not; -using testing::ResultOf; - -namespace { -const std::string TEST_APP_LOCALE = "en-US"; -} // anonymous namespace - -class SuggestionSelectionTest : public testing::Test { - public: - SuggestionSelectionTest() - : app_locale_(TEST_APP_LOCALE), comparator_(TEST_APP_LOCALE) {} - - protected: - std::unique_ptr<AutofillProfile> CreateProfileUniquePtr( - const char* first_name, - const char* last_name = "Morrison") { - std::unique_ptr<AutofillProfile> profile_ptr = - std::make_unique<AutofillProfile>(); - test::SetProfileInfo(profile_ptr.get(), first_name, "Mitchell", last_name, - "johnwayne@me.xyz", "Fox", - "123 Zoo St.\nSecond Line\nThird line", "unit 5", - "Hollywood", "CA", "91601", "US", "12345678910"); - return profile_ptr; - } - - std::u16string GetCanonicalUtf16Content(const char* content) { - return AutofillProfileComparator::NormalizeForComparison( - ASCIIToUTF16(content)); - } - - std::vector<Suggestion> CreateSuggestions( - const std::vector<const AutofillProfile*>& profiles, - const ServerFieldType& field_type) { - return base::test::ToVector( - profiles, [field_type](const AutofillProfile* profile) { - return Suggestion(profile->GetRawInfo(field_type)); - }); - } - - const std::string app_locale_; - const AutofillProfileComparator comparator_; -}; - -TEST_F(SuggestionSelectionTest, RemoveProfilesNotUsedSinceTimestamp) { - const char kAddressesSuppressedHistogramName[] = - "Autofill.AddressesSuppressedForDisuse"; - base::Time kCurrentTime; - bool result = - base::Time::FromUTCString("2017-01-02T00:00:01Z", &kCurrentTime); - ASSERT_TRUE(result); - constexpr size_t kNumProfiles = 10; - constexpr base::TimeDelta k30Days = base::Days(30); - constexpr base::TimeDelta k5DaysBuffer = base::Days(5); - - // Set up the profile vectors with last use dates ranging from |kCurrentTime| - // to 270 days ago, in 30 day increments. Note that the profiles are sorted - // by decreasing last use date. - std::vector<std::unique_ptr<AutofillProfile>> all_profile_data; - for (size_t i = 0; i < kNumProfiles; ++i) { - all_profile_data.push_back(std::make_unique<AutofillProfile>()); - all_profile_data[i]->set_use_date(kCurrentTime - (i * k30Days)); - } - - // Map all the pointers into an array that has the right type. - std::vector<AutofillProfile*> all_profile_ptrs; - base::ranges::transform(all_profile_data, - std::back_inserter(all_profile_ptrs), - &std::unique_ptr<AutofillProfile>::get); - - // Verify that disused profiles get removed from the end. Note that the last - // four profiles have use dates more than 175 days ago. - { - const int kNbSuggestions = 6; - const base::Time k175DaysAgo = - kCurrentTime - (k30Days * kNbSuggestions) + k5DaysBuffer; - // Create a working copy of the profile pointers. - std::vector<AutofillProfile*> profiles(all_profile_ptrs); - - // The first 6 have use dates more recent than 175 days ago. - std::vector<AutofillProfile*> expected_profiles( - profiles.begin(), profiles.begin() + kNbSuggestions); - - // Filter the profiles while capturing histograms. - base::HistogramTester histogram_tester; - suggestion_selection::RemoveProfilesNotUsedSinceTimestamp(k175DaysAgo, - profiles); - - // Validate that we get the expected filtered profiles and histograms. - EXPECT_EQ(expected_profiles, profiles); - histogram_tester.ExpectTotalCount(kAddressesSuppressedHistogramName, 1); - histogram_tester.ExpectBucketCount(kAddressesSuppressedHistogramName, - kNumProfiles - kNbSuggestions, 1); - } - - // Reverse the profile order and verify that disused profiles get removed - // from the beginning. Note that the first five profiles, post reversal, have - // use dates more then 145 days ago. - { - const int kNbSuggestions = 5; - const base::Time k145DaysAgo = - kCurrentTime - (k30Days * kNbSuggestions) + k5DaysBuffer; - // Create a reversed working copy of the profile pointers. - std::vector<AutofillProfile*> profiles(all_profile_ptrs.rbegin(), - all_profile_ptrs.rend()); - - // The last 5 profiles have use dates more recent than 145 days ago. - std::vector<AutofillProfile*> expected_profiles( - profiles.begin() + kNbSuggestions, profiles.end()); - - // Filter the profiles while capturing histograms. - base::HistogramTester histogram_tester; - suggestion_selection::RemoveProfilesNotUsedSinceTimestamp(k145DaysAgo, - profiles); - - // Validate that we get the expected filtered profiles and histograms. - EXPECT_EQ(expected_profiles, profiles); - histogram_tester.ExpectTotalCount(kAddressesSuppressedHistogramName, 1); - histogram_tester.ExpectBucketCount(kAddressesSuppressedHistogramName, - kNumProfiles - kNbSuggestions, 1); - } - - // Randomize the profile order and validate that the filtered list retains - // that order. Note that the six profiles have use dates more then 115 days - // ago. - { - const int kNbSuggestions = 4; - const base::Time k115DaysAgo = - kCurrentTime - (k30Days * kNbSuggestions) + k5DaysBuffer; - - // Created a shuffled master copy of the profile pointers. - std::vector<AutofillProfile*> shuffled_profiles(all_profile_ptrs); - base::RandomShuffle(shuffled_profiles.begin(), shuffled_profiles.end()); - - // Copy the shuffled profile pointer collections to use as the working set. - std::vector<AutofillProfile*> profiles_recently_used(shuffled_profiles); - - // Filter the profiles while capturing histograms. - base::HistogramTester histogram_tester; - suggestion_selection::RemoveProfilesNotUsedSinceTimestamp( - k115DaysAgo, profiles_recently_used); - - // Validate that we have the right profiles. Iterate of the shuffled master - // copy and the filtered copy at the same time making sure that the elements - // in the filtered copy occur in the same order as the shuffled master. - // Along the way, validate that the elements in and out of the filtered copy - // have appropriate use dates. - // TODO(crbug.com/908456): Refactor the loops to use STL and Gmock. - EXPECT_EQ(4u, profiles_recently_used.size()); - auto it = shuffled_profiles.begin(); - for (const AutofillProfile* profile : profiles_recently_used) { - for (; it != shuffled_profiles.end() && (*it) != profile; ++it) { - EXPECT_LT((*it)->use_date(), k115DaysAgo); - } - ASSERT_TRUE(it != shuffled_profiles.end()); - EXPECT_GT(profile->use_date(), k115DaysAgo); - ++it; - } - for (; it != shuffled_profiles.end(); ++it) { - EXPECT_LT((*it)->use_date(), k115DaysAgo); - } - - // Validate the histograms. - histogram_tester.ExpectTotalCount(kAddressesSuppressedHistogramName, 1); - histogram_tester.ExpectBucketCount(kAddressesSuppressedHistogramName, 6, 1); - } - - // Verify all profiles are removed if they're all disused. - { - // Create a working copy of the profile pointers. - std::vector<AutofillProfile*> profiles(all_profile_ptrs); - - // Filter the profiles while capturing histograms. - base::HistogramTester histogram_tester; - suggestion_selection::RemoveProfilesNotUsedSinceTimestamp( - kCurrentTime + base::Days(1), profiles); - - // Validate that we get the expected filtered profiles and histograms. - EXPECT_TRUE(profiles.empty()); - histogram_tester.ExpectTotalCount(kAddressesSuppressedHistogramName, 1); - histogram_tester.ExpectBucketCount(kAddressesSuppressedHistogramName, - kNumProfiles, 1); - } - - // Verify all profiles are retained if they're sufficiently recently used. - { - // Create a working copy of the profile pointers. - std::vector<AutofillProfile*> profiles(all_profile_ptrs); - - // Filter the profiles while capturing histograms. - base::HistogramTester histogram_tester; - suggestion_selection::RemoveProfilesNotUsedSinceTimestamp( - kCurrentTime - base::Days(2 * kNumProfiles * k30Days.InDays()), - profiles); - - // Validate that we get the expected filtered profiles and histograms. - EXPECT_EQ(all_profile_ptrs, profiles); - histogram_tester.ExpectTotalCount(kAddressesSuppressedHistogramName, 1); - histogram_tester.ExpectBucketCount(kAddressesSuppressedHistogramName, 0, 1); - } -} - -} // namespace autofill::suggestion_selection
diff --git a/components/browser_ui/site_settings/android/java/res/layout/storage_preferences_view.xml b/components/browser_ui/site_settings/android/java/res/layout/storage_preferences_view.xml index 3b9c720..078f46a 100644 --- a/components/browser_ui/site_settings/android/java/res/layout/storage_preferences_view.xml +++ b/components/browser_ui/site_settings/android/java/res/layout/storage_preferences_view.xml
@@ -31,6 +31,6 @@ android:layout_height="wrap_content" android:paddingBottom="16dp" android:paddingTop="16dp" - android:text="@string/storage_clear_button_title" + android:text="@string/storage_delete_button_title" app:verticalInset="0dp" /> </merge> \ No newline at end of file
diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/AllSiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/AllSiteSettings.java index dc79f42..e0ef4db5 100644 --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/AllSiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/AllSiteSettings.java
@@ -299,7 +299,7 @@ Formatter.formatShortFileSize(getContext(), totalUsage)); message.setText(dialogFormattedText); builder.setView(dialogView); - builder.setPositiveButton(R.string.storage_clear_dialog_clear_storage_option, + builder.setPositiveButton(R.string.storage_delete_dialog_clear_storage_option, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { @@ -307,7 +307,7 @@ } }); builder.setNegativeButton(R.string.cancel, null); - builder.setTitle(R.string.storage_clear_site_storage_title); + builder.setTitle(R.string.storage_delete_site_storage_title); builder.create().show(); }
diff --git a/components/browser_ui/strings/android/site_settings.grdp b/components/browser_ui/strings/android/site_settings.grdp index 79667881..845cf68a 100644 --- a/components/browser_ui/strings/android/site_settings.grdp +++ b/components/browser_ui/strings/android/site_settings.grdp
@@ -323,18 +323,15 @@ <message name="IDS_WEBSTORAGE_CLEAR_DATA_DIALOG_SITE_SETTINGS_REMOVE_SITE_AD_PERSONALIZATION" desc="A bullet in a list of data that gets deleted from the user's device when they choose 'Clear data' for a specific site. 1) Go to chrome://settings/content. 2) From the 'Recent activity' list, choose a site. 3) Click the 'Clear data' button. The 'Clear site data?' dialog appears. This string will appear as a new bullet at the bottom of the dialog."> Data that affects ad personalization is deleted </message> - <message name="IDS_STORAGE_CLEAR_SITE_STORAGE_TITLE" desc="Title of clear storage dialogs used in a couple different places to confirm clearing site storage data. [CHAR_LIMIT=24]"> - Clear site data? + <message name="IDS_STORAGE_DELETE_SITE_STORAGE_TITLE" desc="Title of delete storage dialogs used in a couple different places to confirm deleting site storage data. [CHAR_LIMIT=24]"> + Delete site data? </message> <!-- TODO(crbug.com/1459631): Add proper strings and make them translateable. --> <message name="IDS_ZOOM_CLEAR_ALL_ZOOMS_DIALOG_TITLE" translateable="false" desc="Title of clear all zoom dialog used when a user decides to clear all zooms. [CHAR_LIMIT=24]"> Clear all zoom levels? </message> - <message name="IDS_STORAGE_CLEAR_DIALOG_CLEAR_STORAGE_OPTION" desc="Text of the button that will clear website storage."> - Clear - </message> - <message name="IDS_STORAGE_CLEAR_DIALOG_TEXT" desc="Text of the clear storage dialog which give the user a choice to reset the app or delete site storage data."> - This will clear all <ph name="SIZE_IN_KB">%1$s<ex>101kb</ex></ph> of website storage. + <message name="IDS_STORAGE_DELETE_DIALOG_CLEAR_STORAGE_OPTION" desc="Text of the button that will delete website storage."> + Delete </message> <message name="IDS_WEBSITE_RESET" desc="The label for the button allowing users to delete all data and reset the permissions for a website."> Delete & reset @@ -796,8 +793,8 @@ <message name="IDS_ORIGIN_SETTINGS_STORAGE_USAGE_BRIEF" desc="Explanation of how much local storage a website is using"> <ph name="STORAGE_AMOUNT">%1$s<ex>2 MB</ex></ph> stored data </message> - <message name="IDS_STORAGE_CLEAR_BUTTON_TITLE" desc="Title of a button in the storage UI used to clear all storage data. [CHAR_LIMIT=24]"> - Clear all data + <message name="IDS_STORAGE_DELETE_BUTTON_TITLE" desc="Title of a button in the storage UI used to delete all storage data. [CHAR_LIMIT=24]"> + Delete all data </message> <!-- ZOOM -->
diff --git a/components/browser_ui/strings/android/site_settings_grdp/IDS_STORAGE_CLEAR_BUTTON_TITLE.png.sha1 b/components/browser_ui/strings/android/site_settings_grdp/IDS_STORAGE_CLEAR_BUTTON_TITLE.png.sha1 deleted file mode 100644 index 189f1b1..0000000 --- a/components/browser_ui/strings/android/site_settings_grdp/IDS_STORAGE_CLEAR_BUTTON_TITLE.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -1e6a3d5428aafb429262fb3448b59d84c066b383 \ No newline at end of file
diff --git a/components/browser_ui/strings/android/site_settings_grdp/IDS_STORAGE_CLEAR_SITE_STORAGE_TITLE.png.sha1 b/components/browser_ui/strings/android/site_settings_grdp/IDS_STORAGE_CLEAR_SITE_STORAGE_TITLE.png.sha1 deleted file mode 100644 index 91d626e..0000000 --- a/components/browser_ui/strings/android/site_settings_grdp/IDS_STORAGE_CLEAR_SITE_STORAGE_TITLE.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -870987174981c44e16485836e453676f4129b6dc \ No newline at end of file
diff --git a/components/browser_ui/strings/android/site_settings_grdp/IDS_STORAGE_DELETE_BUTTON_TITLE.png.sha1 b/components/browser_ui/strings/android/site_settings_grdp/IDS_STORAGE_DELETE_BUTTON_TITLE.png.sha1 new file mode 100644 index 0000000..49bcff95 --- /dev/null +++ b/components/browser_ui/strings/android/site_settings_grdp/IDS_STORAGE_DELETE_BUTTON_TITLE.png.sha1
@@ -0,0 +1 @@ +e4faff456fd61cb55168b0800365a854ebf1ac7b \ No newline at end of file
diff --git a/components/browser_ui/strings/android/site_settings_grdp/IDS_STORAGE_DELETE_DIALOG_CLEAR_STORAGE_OPTION.png.sha1 b/components/browser_ui/strings/android/site_settings_grdp/IDS_STORAGE_DELETE_DIALOG_CLEAR_STORAGE_OPTION.png.sha1 new file mode 100644 index 0000000..76cc45d --- /dev/null +++ b/components/browser_ui/strings/android/site_settings_grdp/IDS_STORAGE_DELETE_DIALOG_CLEAR_STORAGE_OPTION.png.sha1
@@ -0,0 +1 @@ +1d00a05c0bf3f4bd9b313fa515b3e56ea65cdb36 \ No newline at end of file
diff --git a/components/browser_ui/strings/android/site_settings_grdp/IDS_STORAGE_DELETE_DIALOG_TEXT.png.sha1 b/components/browser_ui/strings/android/site_settings_grdp/IDS_STORAGE_DELETE_DIALOG_TEXT.png.sha1 new file mode 100644 index 0000000..76cc45d --- /dev/null +++ b/components/browser_ui/strings/android/site_settings_grdp/IDS_STORAGE_DELETE_DIALOG_TEXT.png.sha1
@@ -0,0 +1 @@ +1d00a05c0bf3f4bd9b313fa515b3e56ea65cdb36 \ No newline at end of file
diff --git a/components/browser_ui/strings/android/site_settings_grdp/IDS_STORAGE_DELETE_SITE_STORAGE_TITLE.png.sha1 b/components/browser_ui/strings/android/site_settings_grdp/IDS_STORAGE_DELETE_SITE_STORAGE_TITLE.png.sha1 new file mode 100644 index 0000000..76cc45d --- /dev/null +++ b/components/browser_ui/strings/android/site_settings_grdp/IDS_STORAGE_DELETE_SITE_STORAGE_TITLE.png.sha1
@@ -0,0 +1 @@ +1d00a05c0bf3f4bd9b313fa515b3e56ea65cdb36 \ No newline at end of file
diff --git a/components/cast_streaming/renderer/common/buffer_requester.h b/components/cast_streaming/renderer/common/buffer_requester.h index dacc3f7..9f515b66 100644 --- a/components/cast_streaming/renderer/common/buffer_requester.h +++ b/components/cast_streaming/renderer/common/buffer_requester.h
@@ -9,6 +9,7 @@ #include "base/functional/bind.h" #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/sequence_checker.h" @@ -135,7 +136,7 @@ std::unique_ptr<DecoderBufferProviderImpl<ConfigType>> buffer_provider_; BufferProviderRequestCB buffer_request_cb_; - Client* const client_; + const raw_ptr<Client, ExperimentalRenderer> client_; scoped_refptr<base::SequencedTaskRunner> task_runner_; mojo::Remote<TMojoRemoteType> remote_;
diff --git a/components/cast_streaming/renderer/common/decoder_buffer_provider_impl.h b/components/cast_streaming/renderer/common/decoder_buffer_provider_impl.h index 0e3921d..65697de 100644 --- a/components/cast_streaming/renderer/common/decoder_buffer_provider_impl.h +++ b/components/cast_streaming/renderer/common/decoder_buffer_provider_impl.h
@@ -9,6 +9,7 @@ #include "base/functional/bind.h" #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/task/sequenced_task_runner.h" @@ -134,7 +135,7 @@ NewBufferCb new_buffer_callback_; std::unique_ptr<media::cast::DecoderBufferReader> buffer_reader_; DeletionCb deletion_callback_; - Client* client_; + raw_ptr<Client, ExperimentalRenderer> client_; scoped_refptr<base::SequencedTaskRunner> task_runner_;
diff --git a/components/cast_streaming/renderer/control/playback_command_forwarding_renderer.cc b/components/cast_streaming/renderer/control/playback_command_forwarding_renderer.cc index 62dbcd09..b35995ab 100644 --- a/components/cast_streaming/renderer/control/playback_command_forwarding_renderer.cc +++ b/components/cast_streaming/renderer/control/playback_command_forwarding_renderer.cc
@@ -4,6 +4,7 @@ #include "components/cast_streaming/renderer/control/playback_command_forwarding_renderer.h" +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "base/task/bind_post_task.h" #include "base/task/sequenced_task_runner.h" @@ -76,7 +77,8 @@ } private: - PlaybackCommandForwardingRenderer* const owning_renderer_; + const raw_ptr<PlaybackCommandForwardingRenderer, ExperimentalRenderer> + owning_renderer_; mojo::Receiver<media::mojom::Renderer> playback_controller_; };
diff --git a/components/cast_streaming/renderer/control/playback_command_forwarding_renderer.h b/components/cast_streaming/renderer/control/playback_command_forwarding_renderer.h index 18d71bd5..f0ddbe9 100644 --- a/components/cast_streaming/renderer/control/playback_command_forwarding_renderer.h +++ b/components/cast_streaming/renderer/control/playback_command_forwarding_renderer.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/sequenced_task_runner.h" #include "media/base/renderer.h" @@ -136,7 +137,7 @@ // MojoRendererInitialize(). mojo::AssociatedRemote<media::mojom::RendererClient> remote_renderer_client_; - RendererClient* upstream_renderer_client_; + raw_ptr<RendererClient, ExperimentalRenderer> upstream_renderer_client_; base::RepeatingTimer send_timestamp_update_caller_;
diff --git a/components/cast_streaming/renderer/control/playback_command_forwarding_renderer_factory.h b/components/cast_streaming/renderer/control/playback_command_forwarding_renderer_factory.h index 9192445b..2219a615 100644 --- a/components/cast_streaming/renderer/control/playback_command_forwarding_renderer_factory.h +++ b/components/cast_streaming/renderer/control/playback_command_forwarding_renderer_factory.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/task/sequenced_task_runner.h" #include "media/base/renderer_factory.h" #include "media/mojo/mojom/renderer.mojom.h" @@ -80,7 +81,7 @@ private: mojo::PendingReceiver<media::mojom::Renderer> pending_renderer_controls_; - media::RendererFactory* real_renderer_factory_; + raw_ptr<media::RendererFactory, ExperimentalRenderer> real_renderer_factory_; bool has_create_been_called_ = false; };
diff --git a/components/cast_streaming/renderer/control/playback_command_forwarding_renderer_unittest.cc b/components/cast_streaming/renderer/control/playback_command_forwarding_renderer_unittest.cc index c17a2be..f7f0abe8 100644 --- a/components/cast_streaming/renderer/control/playback_command_forwarding_renderer_unittest.cc +++ b/components/cast_streaming/renderer/control/playback_command_forwarding_renderer_unittest.cc
@@ -4,6 +4,7 @@ #include "components/cast_streaming/renderer/control/playback_command_forwarding_renderer.h" +#include "base/memory/raw_ptr.h" #include "base/test/bind.h" #include "base/test/task_environment.h" #include "components/cast_streaming/common/public/mojom/renderer_controller.mojom.h" @@ -109,7 +110,7 @@ mojo::Remote<media::mojom::Renderer> remote_; mojo::PendingAssociatedRemote<media::mojom::RendererClient> remote_client_; - media::MockRenderer* mock_renderer_; + raw_ptr<media::MockRenderer, ExperimentalRenderer> mock_renderer_; testing::StrictMock<media::MockMediaResource> mock_media_resource_; testing::StrictMock<media::MockRendererClient> mock_renderer_client_; std::unique_ptr<PlaybackCommandForwardingRenderer> renderer_;
diff --git a/components/cast_streaming/renderer/frame/demuxer_connector.h b/components/cast_streaming/renderer/frame/demuxer_connector.h index 6d9876e..2cf4fbf7 100644 --- a/components/cast_streaming/renderer/frame/demuxer_connector.h +++ b/components/cast_streaming/renderer/frame/demuxer_connector.h
@@ -6,6 +6,7 @@ #define COMPONENTS_CAST_STREAMING_RENDERER_FRAME_DEMUXER_CONNECTOR_H_ #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/sequence_checker.h" #include "components/cast_streaming/common/public/mojom/demuxer_connector.mojom.h" #include "mojo/public/cpp/bindings/associated_receiver.h" @@ -53,7 +54,7 @@ this}; EnableReceiverCallback enable_receiver_callback_; - FrameInjectingDemuxer* demuxer_ = nullptr; + raw_ptr<FrameInjectingDemuxer, ExperimentalRenderer> demuxer_ = nullptr; bool is_demuxer_initialized_ = false; SEQUENCE_CHECKER(sequence_checker_);
diff --git a/components/cast_streaming/renderer/frame/frame_injecting_demuxer.cc b/components/cast_streaming/renderer/frame/frame_injecting_demuxer.cc index 36f20cfe..56f9626 100644 --- a/components/cast_streaming/renderer/frame/frame_injecting_demuxer.cc +++ b/components/cast_streaming/renderer/frame/frame_injecting_demuxer.cc
@@ -8,6 +8,7 @@ #include <vector> #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/sequence_checker.h" #include "base/task/sequenced_task_runner.h" @@ -58,7 +59,7 @@ base::TimeDelta audio_position_ = {}; base::TimeDelta offset_ = {}; - media::DemuxerHost* demuxer_host_ = nullptr; + raw_ptr<media::DemuxerHost, ExperimentalRenderer> demuxer_host_ = nullptr; }; namespace {
diff --git a/components/cast_streaming/renderer/frame/frame_injecting_demuxer.h b/components/cast_streaming/renderer/frame/frame_injecting_demuxer.h index 6100b71..cc2ce90 100644 --- a/components/cast_streaming/renderer/frame/frame_injecting_demuxer.h +++ b/components/cast_streaming/renderer/frame/frame_injecting_demuxer.h
@@ -5,6 +5,7 @@ #ifndef COMPONENTS_CAST_STREAMING_RENDERER_FRAME_FRAME_INJECTING_DEMUXER_H_ #define COMPONENTS_CAST_STREAMING_RENDERER_FRAME_FRAME_INJECTING_DEMUXER_H_ +#include "base/memory/raw_ptr.h" #include "base/task/sequenced_task_runner.h" #include "components/cast_streaming/common/public/mojom/demuxer_connector.mojom.h" #include "media/base/demuxer.h" @@ -78,7 +79,7 @@ scoped_refptr<base::SequencedTaskRunner> media_task_runner_; scoped_refptr<base::SequencedTaskRunner> original_task_runner_; - media::DemuxerHost* host_ = nullptr; + raw_ptr<media::DemuxerHost, ExperimentalRenderer> host_ = nullptr; scoped_refptr<StreamTimestampOffsetTracker> timestamp_tracker_; std::unique_ptr<FrameInjectingAudioDemuxerStream> audio_stream_; @@ -87,7 +88,7 @@ // Set to true if the Demuxer was successfully initialized. bool was_initialization_successful_ = false; media::PipelineStatusCallback initialized_cb_; - DemuxerConnector* const demuxer_connector_; + const raw_ptr<DemuxerConnector, ExperimentalRenderer> demuxer_connector_; base::WeakPtrFactory<FrameInjectingDemuxer> weak_factory_; };
diff --git a/components/cast_streaming/renderer/web_codecs/stream_control_channel.h b/components/cast_streaming/renderer/web_codecs/stream_control_channel.h index b5196f1..fd99b5a1 100644 --- a/components/cast_streaming/renderer/web_codecs/stream_control_channel.h +++ b/components/cast_streaming/renderer/web_codecs/stream_control_channel.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/sequence_checker.h" #include "base/task/sequenced_task_runner.h" @@ -67,7 +68,7 @@ bool has_javascript_been_configured_ = false; EnableReceiverCallback enable_receiver_callback_; - Client* const client_; + const raw_ptr<Client, ExperimentalRenderer> client_; scoped_refptr<base::SequencedTaskRunner> task_runner_;
diff --git a/components/content_settings/renderer/content_settings_agent_impl_browsertest.cc b/components/content_settings/renderer/content_settings_agent_impl_browsertest.cc index 8b8c8aa..2410acb 100644 --- a/components/content_settings/renderer/content_settings_agent_impl_browsertest.cc +++ b/components/content_settings/renderer/content_settings_agent_impl_browsertest.cc
@@ -6,6 +6,7 @@ #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/values.h" #include "components/content_settings/core/common/content_settings.h" @@ -82,7 +83,7 @@ } private: - Log* log_; + raw_ptr<Log, ExperimentalRenderer> log_; }; class MockContentSettingsAgentDelegate
diff --git a/components/dom_distiller/content/renderer/distiller_native_javascript.h b/components/dom_distiller/content/renderer/distiller_native_javascript.h index 7cf41bc06..96b1e5d 100644 --- a/components/dom_distiller/content/renderer/distiller_native_javascript.h +++ b/components/dom_distiller/content/renderer/distiller_native_javascript.h
@@ -5,6 +5,7 @@ #ifndef COMPONENTS_DOM_DISTILLER_CONTENT_RENDERER_DISTILLER_NATIVE_JAVASCRIPT_H_ #define COMPONENTS_DOM_DISTILLER_CONTENT_RENDERER_DISTILLER_NATIVE_JAVASCRIPT_H_ +#include "base/memory/raw_ptr.h" #include "components/dom_distiller/content/common/mojom/distiller_javascript_service.mojom.h" #include "content/public/renderer/render_frame.h" #include "content/public/renderer/render_frame_observer.h" @@ -42,7 +43,7 @@ void StoreIntFontFamily(int font_family); void StoreFloatFontScaling(float font_scale); - content::RenderFrame* render_frame_; + raw_ptr<content::RenderFrame, ExperimentalRenderer> render_frame_; mojo::Remote<mojom::DistillerJavaScriptService> distiller_js_service_; };
diff --git a/components/guest_view/renderer/guest_view_container.cc b/components/guest_view/renderer/guest_view_container.cc index bc54006..f454d5b 100644 --- a/components/guest_view/renderer/guest_view_container.cc +++ b/components/guest_view/renderer/guest_view_container.cc
@@ -8,6 +8,7 @@ #include "base/containers/contains.h" #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/no_destructor.h" #include "components/guest_view/common/guest_view_constants.h" #include "components/guest_view/renderer/guest_view_request.h" @@ -45,7 +46,7 @@ void OnDestruct() override; private: - GuestViewContainer* const container_; + const raw_ptr<GuestViewContainer, ExperimentalRenderer> container_; }; GuestViewContainer::RenderFrameLifetimeObserver::RenderFrameLifetimeObserver(
diff --git a/components/guest_view/renderer/guest_view_container.h b/components/guest_view/renderer/guest_view_container.h index cce7906..64b2d64 100644 --- a/components/guest_view/renderer/guest_view_container.h +++ b/components/guest_view/renderer/guest_view_container.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/containers/circular_deque.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "v8/include/v8-forward.h" #include "v8/include/v8-persistent-handle.h" @@ -70,7 +71,7 @@ std::unique_ptr<GuestViewAttachRequest> pending_response_; v8::Global<v8::Function> destruction_callback_; - v8::Isolate* destruction_isolate_ = nullptr; + raw_ptr<v8::Isolate, ExperimentalRenderer> destruction_isolate_ = nullptr; base::WeakPtrFactory<GuestViewContainer> weak_ptr_factory_{this}; };
diff --git a/components/guest_view/renderer/guest_view_request.h b/components/guest_view/renderer/guest_view_request.h index de2d1a4..5dbafa49 100644 --- a/components/guest_view/renderer/guest_view_request.h +++ b/components/guest_view/renderer/guest_view_request.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/values.h" #include "v8/include/v8-forward.h" @@ -50,9 +51,9 @@ private: void OnAcknowledged(); - GuestViewContainer* const container_; + const raw_ptr<GuestViewContainer, ExperimentalRenderer> container_; v8::Global<v8::Function> callback_; - v8::Isolate* const isolate_; + const raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_; const int render_frame_routing_id_; const int guest_instance_id_; const base::Value::Dict params_;
diff --git a/components/js_injection/renderer/js_binding.h b/components/js_injection/renderer/js_binding.h index ea147bd..f95beab 100644 --- a/components/js_injection/renderer/js_binding.h +++ b/components/js_injection/renderer/js_binding.h
@@ -8,6 +8,7 @@ #include <string> #include "base/auto_reset.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "components/js_injection/common/interfaces.mojom.h" #include "gin/arguments.h" @@ -73,7 +74,7 @@ // For set jsObject.onmessage. void SetOnMessage(v8::Isolate* isolate, v8::Local<v8::Value> value); - content::RenderFrame* render_frame_; + raw_ptr<content::RenderFrame, ExperimentalRenderer> render_frame_; std::u16string js_object_name_; v8::Global<v8::Function> on_message_; std::vector<v8::Global<v8::Function>> listeners_;
diff --git a/components/page_load_metrics/renderer/fake_page_timing_sender.h b/components/page_load_metrics/renderer/fake_page_timing_sender.h index 7509e60..eaef363 100644 --- a/components/page_load_metrics/renderer/fake_page_timing_sender.h +++ b/components/page_load_metrics/renderer/fake_page_timing_sender.h
@@ -8,6 +8,7 @@ #include <set> #include <vector> +#include "base/memory/raw_ptr.h" #include "components/page_load_metrics/common/page_load_metrics.mojom.h" #include "components/page_load_metrics/common/page_load_timing.h" #include "components/page_load_metrics/renderer/page_timing_sender.h" @@ -166,7 +167,7 @@ base::ReadOnlySharedMemoryRegion shared_memory) override; private: - PageTimingValidator* const validator_; + const raw_ptr<PageTimingValidator, ExperimentalRenderer> validator_; }; } // namespace page_load_metrics
diff --git a/components/paint_preview/renderer/paint_preview_recorder_utils.cc b/components/paint_preview/renderer/paint_preview_recorder_utils.cc index a7de00eb..357c2c42 100644 --- a/components/paint_preview/renderer/paint_preview_recorder_utils.cc +++ b/components/paint_preview/renderer/paint_preview_recorder_utils.cc
@@ -7,6 +7,7 @@ #include <utility> #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/trace_event/common/trace_event_common.h" #include "base/trace_event/trace_event.h" #include "cc/paint/paint_image.h" @@ -146,7 +147,7 @@ } private: - PaintPreviewTracker* tracker_; + raw_ptr<PaintPreviewTracker, ExperimentalRenderer> tracker_; absl::variant<absl::monostate, cc::DrawImageOp, cc::DrawImageRectOp> converted_op_; };
diff --git a/components/paint_preview/renderer/paint_preview_recorder_utils_unittest.cc b/components/paint_preview/renderer/paint_preview_recorder_utils_unittest.cc index 66ebd0f..8ab5fb5 100644 --- a/components/paint_preview/renderer/paint_preview_recorder_utils_unittest.cc +++ b/components/paint_preview/renderer/paint_preview_recorder_utils_unittest.cc
@@ -12,6 +12,7 @@ #include "base/files/file.h" #include "base/files/scoped_temp_dir.h" #include "base/memory/discardable_memory_allocator.h" +#include "base/memory/raw_ptr.h" #include "base/memory/read_only_shared_memory_region.h" #include "base/notreached.h" #include "base/test/task_environment.h" @@ -285,7 +286,7 @@ cc::PaintRecorder recorder; // Valid after SetUp() until SerializeAsSkPicture() is called. - cc::PaintCanvas* canvas{}; + raw_ptr<cc::PaintCanvas, ExperimentalRenderer> canvas = nullptr; protected: base::test::TaskEnvironment task_environment_;
diff --git a/components/password_manager/OWNERS b/components/password_manager/OWNERS index 978cf9a..0285b80 100644 --- a/components/password_manager/OWNERS +++ b/components/password_manager/OWNERS
@@ -1,3 +1,3 @@ -kolos@chromium.org +ioanap@chromium.org mamir@chromium.org vasilii@chromium.org
diff --git a/components/password_manager/core/browser/manage_passwords_referrer.h b/components/password_manager/core/browser/manage_passwords_referrer.h index b02b83b..55e7038 100644 --- a/components/password_manager/core/browser/manage_passwords_referrer.h +++ b/components/password_manager/core/browser/manage_passwords_referrer.h
@@ -79,10 +79,14 @@ // manager in search mode. kSearchPasswordsWidget = 18, + // On Desktop, the Google Password Manager link was clicked in the footer of + // AddUsername bubble. + kAddUsernameBubble = 19, + // NOTE: When adding a new value to this enum that applies or could apply to // Android, make sure it is correctly handled by the internal credential // manager launcher java implementation. - kMaxValue = kSearchPasswordsWidget, + kMaxValue = kAddUsernameBubble, }; } // namespace password_manager
diff --git a/components/password_manager/core/browser/password_manager_util_unittest.cc b/components/password_manager/core/browser/password_manager_util_unittest.cc index 2cb82e7..8ebf745 100644 --- a/components/password_manager/core/browser/password_manager_util_unittest.cc +++ b/components/password_manager/core/browser/password_manager_util_unittest.cc
@@ -238,7 +238,11 @@ (const autofill::AutofillProfile&, AutofillClient::AddressProfileSavePromptCallback), (override)); - MOCK_METHOD(void, ShowDeleteAddressProfileDialog, (), (override)); + MOCK_METHOD(void, + ShowDeleteAddressProfileDialog, + (const autofill::AutofillProfile&, + AutofillClient::AddressProfileDeleteDialogCallback), + (override)); MOCK_METHOD(bool, HasCreditCardScanFeature, (), (override)); MOCK_METHOD(void, ScanCreditCard, (CreditCardScanCallback), (override)); MOCK_METHOD(bool, IsTouchToFillCreditCardSupported, (), (override));
diff --git a/components/pdf/renderer/pdf_accessibility_tree.cc b/components/pdf/renderer/pdf_accessibility_tree.cc index 56d2f392..c64766b 100644 --- a/components/pdf/renderer/pdf_accessibility_tree.cc +++ b/components/pdf/renderer/pdf_accessibility_tree.cc
@@ -15,6 +15,7 @@ #include "base/location.h" #include "base/memory/ptr_util.h" #include "base/memory/raw_ptr.h" +#include "base/memory/raw_ref.h" #include "base/metrics/histogram_functions.h" #include "base/ranges/algorithm.h" #include "base/strings/utf_string_conversion_utils.h" @@ -227,7 +228,7 @@ LineHelper& operator=(const LineHelper&) = delete; void StartNewLine(size_t current_index) { - DCHECK(current_index == 0 || current_index < text_runs_.size()); + DCHECK(current_index == 0 || current_index < text_runs_->size()); start_index_ = current_index; accumulated_weight_top_ = 0.0f; accumulated_weight_bottom_ = 0.0f; @@ -235,13 +236,13 @@ } void ProcessNextRun(size_t run_index) { - DCHECK_LT(run_index, text_runs_.size()); + DCHECK_LT(run_index, text_runs_->size()); RemoveOldRunsUpTo(run_index); - AddRun(text_runs_[run_index].bounds); + AddRun((*text_runs_)[run_index].bounds); } bool IsRunOnSameLine(size_t run_index) const { - DCHECK_LT(run_index, text_runs_.size()); + DCHECK_LT(run_index, text_runs_->size()); // Calculate new top/bottom bounds for our line. if (accumulated_width_ == 0.0f) @@ -251,7 +252,7 @@ float line_bottom = accumulated_weight_bottom_ / accumulated_width_; // Look at the next run, and determine how much it overlaps the line. - const auto& run_bounds = text_runs_[run_index].bounds; + const auto& run_bounds = (*text_runs_)[run_index].bounds; if (run_bounds.height() == 0.0f) return false; @@ -291,15 +292,17 @@ // from unduly influencing future lines. constexpr float kBoxRemoveWidthThreshold = 3.0f; while (start_index_ < stop_index && - accumulated_width_ > text_runs_[start_index_].bounds.width() * + accumulated_width_ > (*text_runs_)[start_index_].bounds.width() * kBoxRemoveWidthThreshold) { - const auto& old_bounds = text_runs_[start_index_].bounds; + const auto& old_bounds = (*text_runs_)[start_index_].bounds; RemoveRun(old_bounds); start_index_++; } } - const std::vector<chrome_pdf::AccessibilityTextRunInfo>& text_runs_; + const raw_ref<const std::vector<chrome_pdf::AccessibilityTextRunInfo>, + ExperimentalRenderer> + text_runs_; size_t start_index_; float accumulated_weight_top_; float accumulated_weight_bottom_; @@ -678,7 +681,7 @@ ~PdfAccessibilityTreeBuilder() = default; void BuildPageTree() { - ComputeParagraphAndHeadingThresholds(text_runs_, + ComputeParagraphAndHeadingThresholds(*text_runs_, &heading_font_size_threshold_, ¶graph_spacing_threshold_); @@ -686,64 +689,65 @@ ui::AXNodeData* static_text_node = nullptr; ui::AXNodeData* previous_on_line_node = nullptr; std::string static_text; - LineHelper line_helper(text_runs_); + LineHelper line_helper(*text_runs_); bool pdf_forms_enabled = base::FeatureList::IsEnabled(chrome_pdf::features::kAccessiblePDFForm); - for (size_t text_run_index = 0; text_run_index < text_runs_.size(); + for (size_t text_run_index = 0; text_run_index < text_runs_->size(); ++text_run_index) { // If we don't have a paragraph, create one. if (!para_node) { para_node = - CreateParagraphNode(text_runs_[text_run_index].style.font_size); + CreateParagraphNode((*text_runs_)[text_run_index].style.font_size); page_node_->child_ids.push_back(para_node->id); } // If the `text_run_index` is less than or equal to the link's // `text_run_index`, then push the link node in the paragraph. - if (IsObjectWithRangeInTextRun(links_, current_link_index_, + if (IsObjectWithRangeInTextRun(*links_, current_link_index_, text_run_index)) { BuildStaticNode(&static_text_node, &static_text); const chrome_pdf::AccessibilityLinkInfo& link = - links_[current_link_index_++]; + (*links_)[current_link_index_++]; AddLinkToParaNode(link, para_node, &previous_on_line_node, &text_run_index); if (link.text_range.count == 0) continue; - } else if (IsObjectInTextRun(images_, current_image_index_, + } else if (IsObjectInTextRun(*images_, current_image_index_, text_run_index)) { BuildStaticNode(&static_text_node, &static_text); - AddImageToParaNode(images_[current_image_index_++], para_node, + AddImageToParaNode((*images_)[current_image_index_++], para_node, &text_run_index); continue; } else if (IsObjectWithRangeInTextRun( - highlights_, current_highlight_index_, text_run_index)) { + *highlights_, current_highlight_index_, text_run_index)) { BuildStaticNode(&static_text_node, &static_text); - AddHighlightToParaNode(highlights_[current_highlight_index_++], + AddHighlightToParaNode((*highlights_)[current_highlight_index_++], para_node, &previous_on_line_node, &text_run_index); - } else if (IsObjectInTextRun(text_fields_, current_text_field_index_, + } else if (IsObjectInTextRun(*text_fields_, current_text_field_index_, text_run_index) && pdf_forms_enabled) { BuildStaticNode(&static_text_node, &static_text); - AddTextFieldToParaNode(text_fields_[current_text_field_index_++], + AddTextFieldToParaNode((*text_fields_)[current_text_field_index_++], para_node, &text_run_index); continue; - } else if (IsObjectInTextRun(buttons_, current_button_index_, + } else if (IsObjectInTextRun(*buttons_, current_button_index_, text_run_index) && pdf_forms_enabled) { BuildStaticNode(&static_text_node, &static_text); - AddButtonToParaNode(buttons_[current_button_index_++], para_node, + AddButtonToParaNode((*buttons_)[current_button_index_++], para_node, &text_run_index); continue; - } else if (IsObjectInTextRun(choice_fields_, current_choice_field_index_, + } else if (IsObjectInTextRun(*choice_fields_, current_choice_field_index_, text_run_index) && pdf_forms_enabled) { BuildStaticNode(&static_text_node, &static_text); - AddChoiceFieldToParaNode(choice_fields_[current_choice_field_index_++], - para_node, &text_run_index); + AddChoiceFieldToParaNode( + (*choice_fields_)[current_choice_field_index_++], para_node, + &text_run_index); continue; } else { chrome_pdf::PageCharacterIndex page_char_index = { @@ -757,7 +761,7 @@ } const chrome_pdf::AccessibilityTextRunInfo& text_run = - text_runs_[text_run_index]; + (*text_runs_)[text_run_index]; // Add this text run to the current static text node. ui::AXNodeData* inline_text_box_node = CreateInlineTextBoxNode(text_run, page_char_index); @@ -779,7 +783,7 @@ } line_helper.ProcessNextRun(text_run_index); - if (text_run_index < text_runs_.size() - 1) { + if (text_run_index < text_runs_->size() - 1) { if (line_helper.IsRunOnSameLine(text_run_index + 1)) { // The next run is on the same line. previous_on_line_node = inline_text_box_node; @@ -790,13 +794,13 @@ } } - if (text_run_index == text_runs_.size() - 1) { + if (text_run_index == text_runs_->size() - 1) { BuildStaticNode(&static_text_node, &static_text); break; } if (!previous_on_line_node) { - if (BreakParagraph(text_runs_, text_run_index, + if (BreakParagraph(*text_runs_, text_run_index, paragraph_spacing_threshold_)) { BuildStaticNode(&static_text_node, &static_text); para_node = nullptr; @@ -881,7 +885,7 @@ inline_text_box_node->SetNameFrom(ax::mojom::NameFrom::kContents); std::string chars__utf8 = - GetTextRunCharsAsUTF8(text_run, chars_, page_char_index.char_index); + GetTextRunCharsAsUTF8(text_run, *chars_, page_char_index.char_index); inline_text_box_node->AddStringAttribute(ax::mojom::StringAttribute::kName, chars__utf8); inline_text_box_node->AddIntAttribute( @@ -908,7 +912,7 @@ inline_text_box_node->relative_bounds.bounds = text_run.bounds + page_node_->relative_bounds.bounds.OffsetFromOrigin(); std::vector<int32_t> char_offsets = - GetTextRunCharOffsets(text_run, chars_, page_char_index.char_index); + GetTextRunCharOffsets(text_run, *chars_, page_char_index.char_index); inline_text_box_node->AddIntListAttribute( ax::mojom::IntListAttribute::kCharacterOffsets, char_offsets); AddWordStartsAndEnds(inline_text_box_node); @@ -1174,12 +1178,12 @@ ax_node->child_ids.push_back(ax_static_text_node->id); // Accumulate the text of the node. std::string ax_name; - LineHelper line_helper(text_runs_); + LineHelper line_helper(*text_runs_); for (size_t text_run_index = start_text_run_index; text_run_index <= end_text_run_index; ++text_run_index) { const chrome_pdf::AccessibilityTextRunInfo& text_run = - text_runs_[text_run_index]; + (*text_runs_)[text_run_index]; page_char_index.char_index = text_run_start_indices_[text_run_index]; // Add this text run to the current static text node. ui::AXNodeData* inline_text_box_node = @@ -1199,7 +1203,7 @@ } line_helper.ProcessNextRun(text_run_index); - if (text_run_index < text_runs_.size() - 1) { + if (text_run_index < text_runs_->size() - 1) { if (line_helper.IsRunOnSameLine(text_run_index + 1)) { // The next run is on the same line. *previous_on_line_node = inline_text_box_node; @@ -1249,7 +1253,7 @@ // Make the text runs contained by the object children of the object node. size_t end_text_run_index = object_text_run_index + object_text_run_count; uint32_t object_end_text_run_index = - std::min(end_text_run_index, text_runs_.size()) - 1; + std::min(end_text_run_index, text_runs_->size()) - 1; AddTextToAXNode(object_text_run_index, object_end_text_run_index, object_node, previous_on_line_node); @@ -1345,11 +1349,11 @@ void AddRemainingAnnotations(ui::AXNodeData* para_node) { // If we don't have additional links, images or form fields to insert in the // tree, then return. - if (current_link_index_ >= links_.size() && - current_image_index_ >= images_.size() && - current_text_field_index_ >= text_fields_.size() && - current_button_index_ >= buttons_.size() && - current_choice_field_index_ >= choice_fields_.size()) { + if (current_link_index_ >= links_->size() && + current_image_index_ >= images_->size() && + current_text_field_index_ >= text_fields_->size() && + current_button_index_ >= buttons_->size() && + current_choice_field_index_ >= choice_fields_->size()) { return; } @@ -1360,8 +1364,8 @@ page_node_->child_ids.push_back(para_node->id); } // Push all the links not anchored to any text run to the last paragraph. - for (size_t i = current_link_index_; i < links_.size(); i++) { - ui::AXNodeData* link_node = CreateLinkNode(links_[i]); + for (size_t i = current_link_index_; i < links_->size(); i++) { + ui::AXNodeData* link_node = CreateLinkNode((*links_)[i]); para_node->child_ids.push_back(link_node->id); } @@ -1371,12 +1375,12 @@ #endif // Push all the images not anchored to any text run to the last paragraph. - for (size_t i = current_image_index_; i < images_.size(); i++) { - ui::AXNodeData* image_node = CreateImageNode(images_[i]); + for (size_t i = current_image_index_; i < images_->size(); i++) { + ui::AXNodeData* image_node = CreateImageNode((*images_)[i]); para_node->child_ids.push_back(image_node->id); #if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) if (!has_accessible_text_ && ocr_available) { - ocr_requests.emplace(image_node->id, images_[i], para_node->id, + ocr_requests.emplace(image_node->id, (*images_)[i], para_node->id, page_node_->id, page_index_); } #endif @@ -1392,24 +1396,26 @@ chrome_pdf::features::kAccessiblePDFForm)) { // Push all the text fields not anchored to any text run to the last // paragraph. - for (size_t i = current_text_field_index_; i < text_fields_.size(); i++) { - ui::AXNodeData* text_field_node = CreateTextFieldNode(text_fields_[i]); + for (size_t i = current_text_field_index_; i < text_fields_->size(); + i++) { + ui::AXNodeData* text_field_node = + CreateTextFieldNode((*text_fields_)[i]); para_node->child_ids.push_back(text_field_node->id); } // Push all the buttons not anchored to any text run to the last // paragraph. - for (size_t i = current_button_index_; i < buttons_.size(); i++) { - ui::AXNodeData* button_node = CreateButtonNode(buttons_[i]); + for (size_t i = current_button_index_; i < buttons_->size(); i++) { + ui::AXNodeData* button_node = CreateButtonNode((*buttons_)[i]); para_node->child_ids.push_back(button_node->id); } // Push all the choice fields not anchored to any text run to the last // paragraph. - for (size_t i = current_choice_field_index_; i < choice_fields_.size(); + for (size_t i = current_choice_field_index_; i < choice_fields_->size(); i++) { ui::AXNodeData* choice_field_node = - CreateChoiceFieldNode(choice_fields_[i]); + CreateChoiceFieldNode((*choice_fields_)[i]); para_node->child_ids.push_back(choice_field_node->id); } } @@ -1417,34 +1423,54 @@ base::WeakPtr<PdfAccessibilityTree> pdf_accessibility_tree_; std::vector<uint32_t> text_run_start_indices_; - const std::vector<chrome_pdf::AccessibilityTextRunInfo>& text_runs_; - const std::vector<chrome_pdf::AccessibilityCharInfo>& chars_; - const std::vector<chrome_pdf::AccessibilityLinkInfo>& links_; + const raw_ref<const std::vector<chrome_pdf::AccessibilityTextRunInfo>, + ExperimentalRenderer> + text_runs_; + const raw_ref<const std::vector<chrome_pdf::AccessibilityCharInfo>, + ExperimentalRenderer> + chars_; + const raw_ref<const std::vector<chrome_pdf::AccessibilityLinkInfo>, + ExperimentalRenderer> + links_; uint32_t current_link_index_ = 0; - const std::vector<chrome_pdf::AccessibilityImageInfo>& images_; + const raw_ref<const std::vector<chrome_pdf::AccessibilityImageInfo>, + ExperimentalRenderer> + images_; uint32_t current_image_index_ = 0; - const std::vector<chrome_pdf::AccessibilityHighlightInfo>& highlights_; + const raw_ref<const std::vector<chrome_pdf::AccessibilityHighlightInfo>, + ExperimentalRenderer> + highlights_; uint32_t current_highlight_index_ = 0; - const std::vector<chrome_pdf::AccessibilityTextFieldInfo>& text_fields_; + const raw_ref<const std::vector<chrome_pdf::AccessibilityTextFieldInfo>, + ExperimentalRenderer> + text_fields_; uint32_t current_text_field_index_ = 0; - const std::vector<chrome_pdf::AccessibilityButtonInfo>& buttons_; + const raw_ref<const std::vector<chrome_pdf::AccessibilityButtonInfo>, + ExperimentalRenderer> + buttons_; uint32_t current_button_index_ = 0; - const std::vector<chrome_pdf::AccessibilityChoiceFieldInfo>& choice_fields_; + const raw_ref<const std::vector<chrome_pdf::AccessibilityChoiceFieldInfo>, + ExperimentalRenderer> + choice_fields_; uint32_t current_choice_field_index_ = 0; uint32_t page_index_; - ui::AXNodeData* root_node_; - ui::AXNodeData* page_node_; - content::RenderAccessibility* render_accessibility_; - std::vector<std::unique_ptr<ui::AXNodeData>>* nodes_; - std::map<int32_t, chrome_pdf::PageCharacterIndex>* + raw_ptr<ui::AXNodeData, ExperimentalRenderer> root_node_; + raw_ptr<ui::AXNodeData, ExperimentalRenderer> page_node_; + raw_ptr<content::RenderAccessibility, ExperimentalRenderer> + render_accessibility_; + raw_ptr<std::vector<std::unique_ptr<ui::AXNodeData>>, ExperimentalRenderer> + nodes_; + raw_ptr<std::map<int32_t, chrome_pdf::PageCharacterIndex>, + ExperimentalRenderer> node_id_to_page_char_index_; - std::map<int32_t, PdfAccessibilityTree::AnnotationInfo>* + raw_ptr<std::map<int32_t, PdfAccessibilityTree::AnnotationInfo>, + ExperimentalRenderer> node_id_to_annotation_info_; float heading_font_size_threshold_ = 0; float paragraph_spacing_threshold_ = 0; #if BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) - PdfOcrService* ocr_service_ = nullptr; + raw_ptr<PdfOcrService, ExperimentalRenderer> ocr_service_ = nullptr; const bool has_accessible_text_; #endif // BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) };
diff --git a/components/pdf/renderer/pdf_accessibility_tree.h b/components/pdf/renderer/pdf_accessibility_tree.h index b0758370..c0cf37c 100644 --- a/components/pdf/renderer/pdf_accessibility_tree.h +++ b/components/pdf/renderer/pdf_accessibility_tree.h
@@ -9,6 +9,7 @@ #include <memory> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "components/services/screen_ai/buildflags/buildflags.h" #include "content/public/renderer/plugin_ax_tree_source.h" @@ -133,7 +134,9 @@ const ui::AXTreeUpdate& tree_update); // `image_fetcher_` owns `this`. - chrome_pdf::PdfAccessibilityImageFetcher* const image_fetcher_; + const raw_ptr<chrome_pdf::PdfAccessibilityImageFetcher, + ExperimentalRenderer> + image_fetcher_; uint32_t pages_per_batch_; uint32_t remaining_page_count_; @@ -325,11 +328,13 @@ // PdfAccessibilityTree belongs to the PDF plugin which is created by the // renderer. `render_frame_` is reset when renderer sends OnDestruct() to its // observers. - content::RenderFrame* render_frame_; + raw_ptr<content::RenderFrame, ExperimentalRenderer> render_frame_; // Unowned. Must outlive `this`. - chrome_pdf::PdfAccessibilityActionHandler* const action_handler_; - chrome_pdf::PdfAccessibilityImageFetcher* const image_fetcher_; + const raw_ptr<chrome_pdf::PdfAccessibilityActionHandler, ExperimentalRenderer> + action_handler_; + const raw_ptr<chrome_pdf::PdfAccessibilityImageFetcher, ExperimentalRenderer> + image_fetcher_; // `zoom_` signifies the zoom level set in for the browser content. // `scale_` signifies the scale level set by user. Scale is applied
diff --git a/components/pdf/renderer/pdf_ax_action_target.cc b/components/pdf/renderer/pdf_ax_action_target.cc index 8abcadbd..2bddfc0 100644 --- a/components/pdf/renderer/pdf_ax_action_target.cc +++ b/components/pdf/renderer/pdf_ax_action_target.cc
@@ -75,12 +75,13 @@ } bool PdfAXActionTarget::Click() const { - if (target_plugin_node_.GetRole() != ax::mojom::Role::kLink) + if (target_plugin_node_->GetRole() != ax::mojom::Role::kLink) { return false; + } absl::optional<PdfAccessibilityTree::AnnotationInfo> annotation_info_result = pdf_accessibility_tree_source_->GetPdfAnnotationInfoFromAXNode( - target_plugin_node_.data().id); + target_plugin_node_->data().id); if (!annotation_info_result.has_value()) return false; const auto& annotation_info = annotation_info_result.value(); @@ -136,7 +137,7 @@ } pdf_action_data.action = chrome_pdf::AccessibilityAction::kSetSelection; pdf_action_data.target_rect = - gfx::ToEnclosingRect(target_plugin_node_.data().relative_bounds.bounds); + gfx::ToEnclosingRect(target_plugin_node_->data().relative_bounds.bounds); pdf_accessibility_tree_source_->HandleAction(pdf_action_data); return true; @@ -163,7 +164,7 @@ pdf_action_data.vertical_scroll_alignment = ConvertAXScrollToPdfScrollAlignment(vertical_scroll_alignment); pdf_action_data.target_rect = - gfx::ToEnclosingRect(target_plugin_node_.data().relative_bounds.bounds); + gfx::ToEnclosingRect(target_plugin_node_->data().relative_bounds.bounds); pdf_accessibility_tree_source_->HandleAction(pdf_action_data); return true; @@ -175,7 +176,7 @@ chrome_pdf::AccessibilityAction::kScrollToGlobalPoint; pdf_action_data.target_point = point; pdf_action_data.target_rect = - gfx::ToEnclosingRect(target_plugin_node_.data().relative_bounds.bounds); + gfx::ToEnclosingRect(target_plugin_node_->data().relative_bounds.bounds); pdf_accessibility_tree_source_->HandleAction(pdf_action_data); return true;
diff --git a/components/pdf/renderer/pdf_ax_action_target.h b/components/pdf/renderer/pdf_ax_action_target.h index 5f53954..c2fb8b3 100644 --- a/components/pdf/renderer/pdf_ax_action_target.h +++ b/components/pdf/renderer/pdf_ax_action_target.h
@@ -5,6 +5,8 @@ #ifndef COMPONENTS_PDF_RENDERER_PDF_AX_ACTION_TARGET_H_ #define COMPONENTS_PDF_RENDERER_PDF_AX_ACTION_TARGET_H_ +#include "base/memory/raw_ptr.h" +#include "base/memory/raw_ref.h" #include "ui/accessibility/ax_action_target.h" namespace ui { @@ -25,7 +27,7 @@ PdfAXActionTarget(const ui::AXNode& plugin_node, PdfAccessibilityTree* tree); ~PdfAXActionTarget() override; - const ui::AXNode& AXNode() const { return target_plugin_node_; } + const ui::AXNode& AXNode() const { return *target_plugin_node_; } protected: // AXActionTarget overrides. @@ -52,8 +54,9 @@ bool ShowContextMenu() const; bool ScrollToGlobalPoint(const gfx::Point& point) const; - const ui::AXNode& target_plugin_node_; - PdfAccessibilityTree* pdf_accessibility_tree_source_; + const raw_ref<const ui::AXNode, ExperimentalRenderer> target_plugin_node_; + raw_ptr<PdfAccessibilityTree, ExperimentalRenderer> + pdf_accessibility_tree_source_; }; } // namespace pdf
diff --git a/components/pdf/renderer/pdf_view_web_plugin_client.h b/components/pdf/renderer/pdf_view_web_plugin_client.h index 356c7d1..792ae5a 100644 --- a/components/pdf/renderer/pdf_view_web_plugin_client.h +++ b/components/pdf/renderer/pdf_view_web_plugin_client.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "pdf/pdf_view_web_plugin.h" @@ -84,12 +85,12 @@ private: blink::WebLocalFrame* GetFrame() const; - content::RenderFrame* const render_frame_; + const raw_ptr<content::RenderFrame, ExperimentalRenderer> render_frame_; const std::unique_ptr<content::V8ValueConverter> v8_value_converter_; - v8::Isolate* const isolate_; + const raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_; - blink::WebPluginContainer* plugin_container_; + raw_ptr<blink::WebPluginContainer, ExperimentalRenderer> plugin_container_; base::WeakPtrFactory<PdfViewWebPluginClient> weak_factory_{this}; };
diff --git a/components/plugins/renderer/plugin_placeholder.h b/components/plugins/renderer/plugin_placeholder.h index 64361db..df11eb38 100644 --- a/components/plugins/renderer/plugin_placeholder.h +++ b/components/plugins/renderer/plugin_placeholder.h
@@ -5,6 +5,7 @@ #ifndef COMPONENTS_PLUGINS_RENDERER_PLUGIN_PLACEHOLDER_H_ #define COMPONENTS_PLUGINS_RENDERER_PLUGIN_PLACEHOLDER_H_ +#include "base/memory/raw_ptr.h" #include "components/plugins/renderer/webview_plugin.h" #include "content/public/renderer/render_frame_observer.h" #include "gin/handle.h" @@ -54,7 +55,7 @@ void OnDestruct() override; blink::WebPluginParams plugin_params_; - WebViewPlugin* plugin_; + raw_ptr<WebViewPlugin, ExperimentalRenderer> plugin_; bool hidden_; };
diff --git a/components/plugins/renderer/webview_plugin.h b/components/plugins/renderer/webview_plugin.h index cfd09e0..e9d41c3a 100644 --- a/components/plugins/renderer/webview_plugin.h +++ b/components/plugins/renderer/webview_plugin.h
@@ -8,6 +8,7 @@ #include <list> #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/sequenced_task_runner_helpers.h" #include "base/task/single_thread_task_runner.h" @@ -138,12 +139,12 @@ scoped_refptr<base::SingleThreadTaskRunner> GetTaskRunner(); // Manages its own lifetime. - Delegate* delegate_; + raw_ptr<Delegate, ExperimentalRenderer> delegate_; ui::Cursor current_cursor_; // Owns us. - blink::WebPluginContainer* container_; + raw_ptr<blink::WebPluginContainer, ExperimentalRenderer> container_; gfx::Rect rect_; @@ -214,14 +215,14 @@ void UpdateTooltip(const std::u16string& tooltip_text); private: - WebViewPlugin* plugin_; - blink::WebNavigationControl* frame_ = nullptr; + raw_ptr<WebViewPlugin, ExperimentalRenderer> plugin_; + raw_ptr<blink::WebNavigationControl, ExperimentalRenderer> frame_ = nullptr; std::unique_ptr<blink::scheduler::WebAgentGroupScheduler> agent_group_scheduler_; // Owned by us, deleted via |close()|. - blink::WebView* web_view_; + raw_ptr<blink::WebView, ExperimentalRenderer> web_view_; mojo::AssociatedReceiver<blink::mojom::WidgetHost> blink_widget_host_receiver_{this};
diff --git a/components/policy/core/browser/cloud/user_policy_signin_service_base.cc b/components/policy/core/browser/cloud/user_policy_signin_service_base.cc index 34c6120..bbe7edec 100644 --- a/components/policy/core/browser/cloud/user_policy_signin_service_base.cc +++ b/components/policy/core/browser/cloud/user_policy_signin_service_base.cc
@@ -17,6 +17,7 @@ #include "components/policy/core/common/cloud/profile_cloud_policy_manager.h" #include "components/policy/core/common/cloud/user_cloud_policy_manager.h" #include "components/policy/core/common/policy_logger.h" +#include "components/policy/core/common/policy_types.h" #include "components/prefs/pref_service.h" #include "components/signin/public/identity_manager/account_info.h" #include "components/signin/public/identity_manager/account_managed_status_finder.h" @@ -206,7 +207,8 @@ DCHECK(account_id.is_valid()); bool should_load_policies = ShouldLoadPolicyForUser(account_id.GetUserEmail()); - user_policy_manager_->SetPoliciesRequired(should_load_policies); + user_policy_manager_->SetPoliciesRequired(should_load_policies, + PolicyFetchReason::kSignin); if (!should_load_policies) { DVLOG_POLICY(1, POLICY_FETCHING) << "Policy load not enabled for user: " << account_id.GetUserEmail();
diff --git a/components/policy/core/common/android/android_combined_policy_provider.cc b/components/policy/core/common/android/android_combined_policy_provider.cc index 04acf709..768cba0 100644 --- a/components/policy/core/common/android/android_combined_policy_provider.cc +++ b/components/policy/core/common/android/android_combined_policy_provider.cc
@@ -41,7 +41,7 @@ java_combined_policy_provider_.Reset(); } -void AndroidCombinedPolicyProvider::RefreshPolicies() { +void AndroidCombinedPolicyProvider::RefreshPolicies(PolicyFetchReason reason) { JNIEnv* env = AttachCurrentThread(); Java_CombinedPolicyProvider_refreshPolicies(env, java_combined_policy_provider_);
diff --git a/components/policy/core/common/android/android_combined_policy_provider.h b/components/policy/core/common/android/android_combined_policy_provider.h index 4a7e9986..07aacdc 100644 --- a/components/policy/core/common/android/android_combined_policy_provider.h +++ b/components/policy/core/common/android/android_combined_policy_provider.h
@@ -12,6 +12,7 @@ #include "base/android/scoped_java_ref.h" #include "components/policy/core/common/configuration_policy_provider.h" #include "components/policy/core/common/policy_bundle.h" +#include "components/policy/core/common/policy_types.h" #include "components/policy/policy_export.h" namespace policy { @@ -46,7 +47,7 @@ // ConfigurationPolicyProvider: bool IsInitializationComplete(PolicyDomain domain) const override; bool IsFirstPolicyLoadComplete(PolicyDomain domain) const override; - void RefreshPolicies() override; + void RefreshPolicies(PolicyFetchReason reason) override; // For testing PolicyConverter* GetPolicyConverterForTesting() {
diff --git a/components/policy/core/common/async_policy_provider.cc b/components/policy/core/common/async_policy_provider.cc index c4509c8..1680f69 100644 --- a/components/policy/core/common/async_policy_provider.cc +++ b/components/policy/core/common/async_policy_provider.cc
@@ -65,7 +65,7 @@ ConfigurationPolicyProvider::Shutdown(); } -void AsyncPolicyProvider::RefreshPolicies() { +void AsyncPolicyProvider::RefreshPolicies(PolicyFetchReason reason) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // Subtle: RefreshPolicies() has a contract that requires the next policy
diff --git a/components/policy/core/common/async_policy_provider.h b/components/policy/core/common/async_policy_provider.h index edee4a0a7..4b14b67 100644 --- a/components/policy/core/common/async_policy_provider.h +++ b/components/policy/core/common/async_policy_provider.h
@@ -8,7 +8,6 @@ #include <memory> #include "base/cancelable_callback.h" -#include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" #include "components/policy/core/common/configuration_policy_provider.h" @@ -41,7 +40,7 @@ // ConfigurationPolicyProvider implementation. void Init(SchemaRegistry* registry) override; void Shutdown() override; - void RefreshPolicies() override; + void RefreshPolicies(PolicyFetchReason reason) override; bool IsFirstPolicyLoadComplete(PolicyDomain domain) const override; private:
diff --git a/components/policy/core/common/async_policy_provider_unittest.cc b/components/policy/core/common/async_policy_provider_unittest.cc index bff98bdf..db5fc66 100644 --- a/components/policy/core/common/async_policy_provider_unittest.cc +++ b/components/policy/core/common/async_policy_provider_unittest.cc
@@ -131,7 +131,7 @@ MockConfigurationPolicyObserver observer; provider_->AddObserver(&observer); EXPECT_CALL(observer, OnUpdatePolicy(provider_.get())).Times(1); - provider_->RefreshPolicies(); + provider_->RefreshPolicies(PolicyFetchReason::kTest); base::RunLoop().RunUntilIdle(); // The refreshed policies are now provided. EXPECT_TRUE(provider_->policies().Equals(refreshed_bundle)); @@ -146,13 +146,13 @@ MockConfigurationPolicyObserver observer; provider_->AddObserver(&observer); EXPECT_CALL(observer, OnUpdatePolicy(provider_.get())).Times(0); - provider_->RefreshPolicies(); + provider_->RefreshPolicies(PolicyFetchReason::kTest); // Doesn't refresh before going through the background thread. Mock::VerifyAndClearExpectations(&observer); // Doesn't refresh if another RefreshPolicies request is made. EXPECT_CALL(observer, OnUpdatePolicy(provider_.get())).Times(0); - provider_->RefreshPolicies(); + provider_->RefreshPolicies(PolicyFetchReason::kTest); Mock::VerifyAndClearExpectations(&observer); EXPECT_CALL(observer, OnUpdatePolicy(provider_.get())).Times(1); @@ -188,7 +188,7 @@ // Doesn't refresh before going through the background thread. EXPECT_CALL(observer, OnUpdatePolicy(provider_.get())).Times(0); - provider_->RefreshPolicies(); + provider_->RefreshPolicies(PolicyFetchReason::kTest); Mock::VerifyAndClearExpectations(&observer); EXPECT_CALL(observer, OnUpdatePolicy(provider_.get())).Times(1);
diff --git a/components/policy/core/common/cloud/cloud_policy_client.cc b/components/policy/core/common/cloud/cloud_policy_client.cc index 01b380b..8cf8cf3 100644 --- a/components/policy/core/common/cloud/cloud_policy_client.cc +++ b/components/policy/core/common/cloud/cloud_policy_client.cc
@@ -72,10 +72,16 @@ switch (reason) { case PolicyFetchReason::kUnspecified: return Request::UNSPECIFIED; + case PolicyFetchReason::kBrowserStart: + return Request::BROWSER_START; + case PolicyFetchReason::kCrdHostPolicyWatcher: + return Request::CRD_HOST_POLICY_WATCHER; case PolicyFetchReason::kDeviceEnrollment: return Request::DEVICE_ENROLLMENT; case PolicyFetchReason::kInvalidation: return Request::INVALIDATION; + case PolicyFetchReason::kLacros: + return Request::LACROS; case PolicyFetchReason::kRegistrationChanged: return Request::REGISTRATION_CHANGED; case PolicyFetchReason::kRetryAfterStatusServiceActivationPending: @@ -104,10 +110,10 @@ return Request::SCHEDULED; case PolicyFetchReason::kSignin: return Request::SIGNIN; - case PolicyFetchReason::kBrowserStart: - return Request::BROWSER_START; case PolicyFetchReason::kTest: return Request::TEST; + case PolicyFetchReason::kUserRequest: + return Request::USER_REQUEST; } NOTREACHED_NORETURN(); }
diff --git a/components/policy/core/common/cloud/cloud_policy_client.h b/components/policy/core/common/cloud/cloud_policy_client.h index 2008e86..df9baf0c 100644 --- a/components/policy/core/common/cloud/cloud_policy_client.h +++ b/components/policy/core/common/cloud/cloud_policy_client.h
@@ -26,6 +26,7 @@ #include "components/policy/core/common/cloud/cloud_policy_validator.h" #include "components/policy/core/common/cloud/device_management_service.h" #include "components/policy/core/common/cloud/dm_auth.h" +#include "components/policy/core/common/policy_types.h" #include "components/policy/core/common/remote_commands/remote_command_job.h" #include "components/policy/policy_export.h" #include "components/policy/proto/device_management_backend.pb.h" @@ -47,28 +48,6 @@ class SigningService; struct DMServerJobResult; -enum class PolicyFetchReason { - kUnspecified, - kBrowserStart, - kDeviceEnrollment, - kInvalidation, - kRegistrationChanged, - kRetryAfterStatusServiceActivationPending, - kRetryAfterStatusServicePolicyNotFound, - kRetryAfterStatusServiceTooManyRequests, - kRetryAfterStatusRequestFailed, - kRetryAfterStatusTemporaryUnavailable, - kRetryAfterStatusCannotSignRequest, - kRetryAfterStatusRequestInvalid, - kRetryAfterStatusHttpStatusError, - kRetryAfterStatusResponseDecodingError, - kRetryAfterStatusServiceManagementNotSupported, - kRetryAfterStatusRequestTooLarge, - kScheduled, - kSignin, - kTest, -}; - // Implements the core logic required to talk to the device management service. // Also keeps track of the current state of the association with the service, // such as whether there is a valid registration (DMToken is present in that
diff --git a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc index 63a4c62..93b3015 100644 --- a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc +++ b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
@@ -670,11 +670,16 @@ enterprise_management::DevicePolicyRequest::UNSPECIFIED), std::tuple(PolicyFetchReason::kBrowserStart, enterprise_management::DevicePolicyRequest::BROWSER_START), + std::tuple(PolicyFetchReason::kCrdHostPolicyWatcher, + enterprise_management::DevicePolicyRequest:: + CRD_HOST_POLICY_WATCHER), std::tuple( PolicyFetchReason::kDeviceEnrollment, enterprise_management::DevicePolicyRequest::DEVICE_ENROLLMENT), std::tuple(PolicyFetchReason::kInvalidation, enterprise_management::DevicePolicyRequest::INVALIDATION), + std::tuple(PolicyFetchReason::kLacros, + enterprise_management::DevicePolicyRequest::LACROS), std::tuple( PolicyFetchReason::kRegistrationChanged, enterprise_management::DevicePolicyRequest::REGISTRATION_CHANGED), @@ -717,7 +722,9 @@ std::tuple(PolicyFetchReason::kSignin, enterprise_management::DevicePolicyRequest::SIGNIN), std::tuple(PolicyFetchReason::kTest, - enterprise_management::DevicePolicyRequest::TEST))); + enterprise_management::DevicePolicyRequest::TEST), + std::tuple(PolicyFetchReason::kUserRequest, + enterprise_management::DevicePolicyRequest::USER_REQUEST))); TEST_F(CloudPolicyClientTest, SetupRegistrationAndPolicyFetchWithOAuthToken) { const em::DeviceManagementResponse policy_response = GetPolicyResponse();
diff --git a/components/policy/core/common/cloud/cloud_policy_manager.cc b/components/policy/core/common/cloud/cloud_policy_manager.cc index 9d19b28..f0e648b 100644 --- a/components/policy/core/common/cloud/cloud_policy_manager.cc +++ b/components/policy/core/common/cloud/cloud_policy_manager.cc
@@ -15,6 +15,7 @@ #include "base/task/task_traits.h" #include "base/task/thread_pool.h" #include "build/build_config.h" +#include "components/policy/core/common/cloud/cloud_policy_client.h" #include "components/policy/core/common/cloud/cloud_policy_service.h" #include "components/policy/core/common/policy_bundle.h" #include "components/policy/core/common/policy_map.h" @@ -82,15 +83,13 @@ return store()->first_policies_loaded(); } -// TODO(b/298336121) Add PolicyFetchReason parameter to make the fetch -// more specific. -void CloudPolicyManager::RefreshPolicies() { +void CloudPolicyManager::RefreshPolicies(PolicyFetchReason reason) { if (service()) { waiting_for_policy_refresh_ = true; service()->RefreshPolicy( base::BindOnce(&CloudPolicyManager::OnRefreshComplete, base::Unretained(this)), - PolicyFetchReason::kUnspecified); + reason); } else { OnRefreshComplete(false); }
diff --git a/components/policy/core/common/cloud/cloud_policy_manager.h b/components/policy/core/common/cloud/cloud_policy_manager.h index ff71cf6b..c4636c6 100644 --- a/components/policy/core/common/cloud/cloud_policy_manager.h +++ b/components/policy/core/common/cloud/cloud_policy_manager.h
@@ -74,7 +74,7 @@ void Shutdown() override; bool IsInitializationComplete(PolicyDomain domain) const override; bool IsFirstPolicyLoadComplete(PolicyDomain domain) const override; - void RefreshPolicies() override; + void RefreshPolicies(PolicyFetchReason reason) override; // CloudPolicyStore::Observer: void OnStoreLoaded(CloudPolicyStore* cloud_policy_store) override;
diff --git a/components/policy/core/common/cloud/cloud_policy_manager_unittest.cc b/components/policy/core/common/cloud/cloud_policy_manager_unittest.cc index 3e62c4f..2e8b9f1 100644 --- a/components/policy/core/common/cloud/cloud_policy_manager_unittest.cc +++ b/components/policy/core/common/cloud/cloud_policy_manager_unittest.cc
@@ -277,7 +277,7 @@ // A refresh on a non-registered store should not block. EXPECT_CALL(observer_, OnUpdatePolicy(manager_.get())); - manager_->RefreshPolicies(); + manager_->RefreshPolicies(PolicyFetchReason::kTest); Mock::VerifyAndClearExpectations(&observer_); } @@ -300,7 +300,7 @@ // Start a refresh. EXPECT_CALL(observer_, OnUpdatePolicy(_)).Times(0); EXPECT_CALL(*client, FetchPolicy(_)); - manager_->RefreshPolicies(); + manager_->RefreshPolicies(PolicyFetchReason::kTest); Mock::VerifyAndClearExpectations(client); Mock::VerifyAndClearExpectations(&observer_); store_.policy_map_ = policy_map_.Clone();
diff --git a/components/policy/core/common/cloud/user_cloud_policy_manager.cc b/components/policy/core/common/cloud/user_cloud_policy_manager.cc index 59ef916d..b885199 100644 --- a/components/policy/core/common/cloud/user_cloud_policy_manager.cc +++ b/components/policy/core/common/cloud/user_cloud_policy_manager.cc
@@ -96,9 +96,10 @@ store_->SetSigninAccountId(account_id); } -void UserCloudPolicyManager::SetPoliciesRequired(bool required) { +void UserCloudPolicyManager::SetPoliciesRequired(bool required, + PolicyFetchReason reason) { policies_required_ = required; - RefreshPolicies(); + RefreshPolicies(reason); } bool UserCloudPolicyManager::ArePoliciesRequired() const { @@ -138,7 +139,7 @@ // all external data references have been removed, causing the // |external_data_manager_| to clear its cache as well. store_->Clear(); - SetPoliciesRequired(false); + SetPoliciesRequired(false, PolicyFetchReason::kUnspecified); } void UserCloudPolicyManager::GetChromePolicy(PolicyMap* policy_map) {
diff --git a/components/policy/core/common/cloud/user_cloud_policy_manager.h b/components/policy/core/common/cloud/user_cloud_policy_manager.h index f1fd428..9217b6c 100644 --- a/components/policy/core/common/cloud/user_cloud_policy_manager.h +++ b/components/policy/core/common/cloud/user_cloud_policy_manager.h
@@ -12,6 +12,7 @@ #include "base/memory/ref_counted.h" #include "components/policy/core/common/cloud/cloud_policy_manager.h" #include "components/policy/core/common/cloud/user_policy_metrics_recorder.h" +#include "components/policy/core/common/policy_types.h" #include "components/policy/policy_export.h" #include "services/network/public/cpp/network_connection_tracker.h" @@ -60,7 +61,10 @@ // Sets whether or not policies are required for this policy manager. // This might be set to false if the user profile is an unmanaged consumer // profile. - void SetPoliciesRequired(bool required); + // + // As a side effect, this also calls `RefreshPolicies`, which is why the + // `reason` parameter is required. + void SetPoliciesRequired(bool required, PolicyFetchReason reason); bool ArePoliciesRequired() const; // Initializes the cloud connection. |local_state| must stay valid until this
diff --git a/components/policy/core/common/command_line_policy_provider.cc b/components/policy/core/common/command_line_policy_provider.cc index c45529f..dfb338c 100644 --- a/components/policy/core/common/command_line_policy_provider.cc +++ b/components/policy/core/common/command_line_policy_provider.cc
@@ -10,6 +10,7 @@ #include "base/memory/ptr_util.h" #include "build/build_config.h" #include "components/policy/core/common/policy_bundle.h" +#include "components/policy/core/common/policy_types.h" #if BUILDFLAG(IS_ANDROID) #include "base/android/build_info.h" @@ -46,7 +47,7 @@ CommandLinePolicyProvider::~CommandLinePolicyProvider() = default; -void CommandLinePolicyProvider::RefreshPolicies() { +void CommandLinePolicyProvider::RefreshPolicies(PolicyFetchReason reason) { PolicyBundle bundle = loader_.Load(); first_policies_loaded_ = true; UpdatePolicy(std::move(bundle)); @@ -60,7 +61,7 @@ CommandLinePolicyProvider::CommandLinePolicyProvider( const base::CommandLine& command_line) : loader_(command_line) { - RefreshPolicies(); + RefreshPolicies(PolicyFetchReason::kUnspecified); } } // namespace policy
diff --git a/components/policy/core/common/command_line_policy_provider.h b/components/policy/core/common/command_line_policy_provider.h index aeba9071e..6bf5ec0 100644 --- a/components/policy/core/common/command_line_policy_provider.h +++ b/components/policy/core/common/command_line_policy_provider.h
@@ -34,7 +34,7 @@ ~CommandLinePolicyProvider() override; // ConfigurationPolicyProvider implementation. - void RefreshPolicies() override; + void RefreshPolicies(PolicyFetchReason reason) override; bool IsFirstPolicyLoadComplete(PolicyDomain domain) const override; private:
diff --git a/components/policy/core/common/command_line_policy_provider_unittest.cc b/components/policy/core/common/command_line_policy_provider_unittest.cc index 4a58cee..f8ad5a7 100644 --- a/components/policy/core/common/command_line_policy_provider_unittest.cc +++ b/components/policy/core/common/command_line_policy_provider_unittest.cc
@@ -8,6 +8,7 @@ #include "base/values.h" #include "build/build_config.h" +#include "components/policy/core/common/cloud/cloud_policy_client.h" #include "components/policy/core/common/policy_bundle.h" #include "components/policy/core/common/policy_switches.h" #include "components/policy/core/common/policy_types.h" @@ -60,7 +61,7 @@ CreatePolicyProvider(); VerifyPolicyProvider(policy_provider.get()); - policy_provider->RefreshPolicies(); + policy_provider->RefreshPolicies(PolicyFetchReason::kTest); VerifyPolicyProvider(policy_provider.get()); }
diff --git a/components/policy/core/common/configuration_policy_provider.h b/components/policy/core/common/configuration_policy_provider.h index 77fa72d..a773c47 100644 --- a/components/policy/core/common/configuration_policy_provider.h +++ b/components/policy/core/common/configuration_policy_provider.h
@@ -6,7 +6,6 @@ #define COMPONENTS_POLICY_CORE_COMMON_CONFIGURATION_POLICY_PROVIDER_H_ #include "base/memory/raw_ptr.h" -#include "base/memory/ref_counted.h" #include "base/observer_list.h" #include "build/build_config.h" #include "components/policy/core/common/policy_bundle.h" @@ -16,6 +15,8 @@ namespace policy { +enum class PolicyFetchReason; + // A mostly-abstract super class for platform-specific policy providers. // Platform-specific policy providers (Windows Group Policy, gconf, // etc.) should implement a subclass of this class. @@ -73,7 +74,10 @@ // which are guaranteed to happen even if the refresh fails. // It is possible that Shutdown() is called first though, and // OnUpdatePolicy won't be called if that happens. - virtual void RefreshPolicies() = 0; + // + // The |reason| parameter can be used to tag the request to DMServer. + // Providers that do not communicate with DMServer may ignore the parameter. + virtual void RefreshPolicies(PolicyFetchReason reason) = 0; // Observers must detach themselves before the provider is deleted. virtual void AddObserver(Observer* observer);
diff --git a/components/policy/core/common/configuration_policy_provider_test.cc b/components/policy/core/common/configuration_policy_provider_test.cc index 59d4637..5c28e26f 100644 --- a/components/policy/core/common/configuration_policy_provider_test.cc +++ b/components/policy/core/common/configuration_policy_provider_test.cc
@@ -234,7 +234,7 @@ base::OnceClosure install_value) { // Install the value, reload policy and check the provider for the value. std::move(install_value).Run(); - provider_->RefreshPolicies(); + provider_->RefreshPolicies(PolicyFetchReason::kTest); task_environment_.RunUntilIdle(); PolicyBundle expected_bundle; expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) @@ -245,7 +245,7 @@ } TEST_P(ConfigurationPolicyProviderTest, Empty) { - provider_->RefreshPolicies(); + provider_->RefreshPolicies(PolicyFetchReason::kTest); task_environment_.RunUntilIdle(); const PolicyBundle kEmptyBundle; EXPECT_TRUE(provider_->policies().Equals(kEmptyBundle)); @@ -334,7 +334,7 @@ MockConfigurationPolicyObserver observer; provider_->AddObserver(&observer); EXPECT_CALL(observer, OnUpdatePolicy(provider_.get())).Times(1); - provider_->RefreshPolicies(); + provider_->RefreshPolicies(PolicyFetchReason::kTest); task_environment_.RunUntilIdle(); Mock::VerifyAndClearExpectations(&observer); @@ -343,7 +343,7 @@ // OnUpdatePolicy is called when there are changes. test_harness_->InstallStringPolicy(test_keys::kKeyString, "value"); EXPECT_CALL(observer, OnUpdatePolicy(provider_.get())).Times(1); - provider_->RefreshPolicies(); + provider_->RefreshPolicies(PolicyFetchReason::kTest); task_environment_.RunUntilIdle(); Mock::VerifyAndClearExpectations(&observer); @@ -395,7 +395,7 @@ "invalid-value"); test_harness_->Install3rdPartyPolicy(policy_3rdparty); - provider_->RefreshPolicies(); + provider_->RefreshPolicies(PolicyFetchReason::kTest); task_environment_.RunUntilIdle(); PolicyMap expected_policy;
diff --git a/components/policy/core/common/local_test_policy_provider.cc b/components/policy/core/common/local_test_policy_provider.cc index 14d365f84..bd3bd13 100644 --- a/components/policy/core/common/local_test_policy_provider.cc +++ b/components/policy/core/common/local_test_policy_provider.cc
@@ -11,6 +11,7 @@ #include "components/policy/core/common/policy_namespace.h" #include "components/policy/core/common/policy_pref_names.h" #include "components/policy/core/common/policy_service_impl.h" +#include "components/policy/core/common/policy_types.h" #include "components/policy/core/common/policy_utils.h" #include "components/prefs/pref_registry_simple.h" @@ -31,7 +32,7 @@ void LocalTestPolicyProvider::LoadJsonPolicies( const std::string& json_policies_string) { loader_.SetPolicyListJson(json_policies_string); - RefreshPolicies(); + RefreshPolicies(PolicyFetchReason::kUnspecified); } void LocalTestPolicyProvider::SetUserAffiliated(bool affiliated) { @@ -40,10 +41,10 @@ void LocalTestPolicyProvider::ClearPolicies() { loader_.ClearPolicies(); - RefreshPolicies(); + RefreshPolicies(PolicyFetchReason::kUnspecified); } -void LocalTestPolicyProvider::RefreshPolicies() { +void LocalTestPolicyProvider::RefreshPolicies(PolicyFetchReason reason) { PolicyBundle bundle = loader_.Load(); first_policies_loaded_ = true; UpdatePolicy(std::move(bundle)); @@ -63,7 +64,7 @@ LocalTestPolicyProvider::LocalTestPolicyProvider() { set_active(false); - RefreshPolicies(); + RefreshPolicies(PolicyFetchReason::kUnspecified); } } // namespace policy
diff --git a/components/policy/core/common/local_test_policy_provider.h b/components/policy/core/common/local_test_policy_provider.h index 410219d..e482f0c9 100644 --- a/components/policy/core/common/local_test_policy_provider.h +++ b/components/policy/core/common/local_test_policy_provider.h
@@ -33,7 +33,7 @@ void SetUserAffiliated(bool affiliated); // ConfigurationPolicyProvider implementation - void RefreshPolicies() override; + void RefreshPolicies(PolicyFetchReason reason) override; bool IsFirstPolicyLoadComplete(PolicyDomain domain) const override; static void RegisterLocalStatePrefs(PrefRegistrySimple* registry);
diff --git a/components/policy/core/common/mock_configuration_policy_provider.cc b/components/policy/core/common/mock_configuration_policy_provider.cc index ffdb6886..c14cabd4 100644 --- a/components/policy/core/common/mock_configuration_policy_provider.cc +++ b/components/policy/core/common/mock_configuration_policy_provider.cc
@@ -45,8 +45,9 @@ } void MockConfigurationPolicyProvider::SetAutoRefresh() { - EXPECT_CALL(*this, RefreshPolicies()).WillRepeatedly( - Invoke(this, &MockConfigurationPolicyProvider::RefreshWithSamePolicies)); + EXPECT_CALL(*this, RefreshPolicies(testing::_)) + .WillRepeatedly(Invoke( + this, &MockConfigurationPolicyProvider::RefreshWithSamePolicies)); } void MockConfigurationPolicyProvider::RefreshWithSamePolicies() {
diff --git a/components/policy/core/common/mock_configuration_policy_provider.h b/components/policy/core/common/mock_configuration_policy_provider.h index 9bbf909..9a5240e 100644 --- a/components/policy/core/common/mock_configuration_policy_provider.h +++ b/components/policy/core/common/mock_configuration_policy_provider.h
@@ -27,7 +27,7 @@ MOCK_CONST_METHOD1(IsInitializationComplete, bool(PolicyDomain domain)); MOCK_CONST_METHOD1(IsFirstPolicyLoadComplete, bool(PolicyDomain domain)); - MOCK_METHOD0(RefreshPolicies, void()); + MOCK_METHOD1(RefreshPolicies, void(PolicyFetchReason reason)); // Use this for a more accurate policy update events. Not using this may // may result in flaky tests where we expect an event to be propagated and
diff --git a/components/policy/core/common/mock_policy_service.h b/components/policy/core/common/mock_policy_service.h index 83729858..4573bc0 100644 --- a/components/policy/core/common/mock_policy_service.h +++ b/components/policy/core/common/mock_policy_service.h
@@ -7,6 +7,7 @@ #include "build/build_config.h" #include "components/policy/core/common/policy_service.h" +#include "components/policy/core/common/policy_types.h" #include "testing/gmock/include/gmock/gmock.h" namespace policy { @@ -47,7 +48,7 @@ MOCK_CONST_METHOD1(GetPolicies, const PolicyMap&(const PolicyNamespace&)); MOCK_CONST_METHOD1(IsInitializationComplete, bool(PolicyDomain domain)); MOCK_CONST_METHOD1(IsFirstPolicyLoadComplete, bool(PolicyDomain domain)); - MOCK_METHOD1(RefreshPolicies, void(base::OnceClosure)); + MOCK_METHOD2(RefreshPolicies, void(base::OnceClosure, PolicyFetchReason)); #if BUILDFLAG(IS_ANDROID) MOCK_METHOD0(GetPolicyServiceAndroid, android::PolicyServiceAndroid*());
diff --git a/components/policy/core/common/policy_loader_mac_unittest.cc b/components/policy/core/common/policy_loader_mac_unittest.cc index cb64401..942357fd 100644 --- a/components/policy/core/common/policy_loader_mac_unittest.cc +++ b/components/policy/core/common/policy_loader_mac_unittest.cc
@@ -180,7 +180,7 @@ /*is_machine=*/true); // Make the provider read the updated |prefs_|. - provider_->RefreshPolicies(); + provider_->RefreshPolicies(PolicyFetchReason::kTest); task_environment_.RunUntilIdle(); const PolicyBundle kEmptyBundle; EXPECT_TRUE(provider_->policies().Equals(kEmptyBundle)); @@ -196,7 +196,7 @@ /*is_machine=*/true); // Make the provider read the updated |prefs_|. - provider_->RefreshPolicies(); + provider_->RefreshPolicies(PolicyFetchReason::kTest); task_environment_.RunUntilIdle(); PolicyBundle expected_bundle; expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) @@ -215,7 +215,7 @@ /*is_machine=*/false); // Make the provider read the updated |prefs_|. - provider_->RefreshPolicies(); + provider_->RefreshPolicies(PolicyFetchReason::kTest); task_environment_.RunUntilIdle(); PolicyBundle expected_bundle; expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string())) @@ -249,7 +249,7 @@ POLICY_SCOPE_MACHINE, POLICY_SOURCE_PLATFORM, base::Value(true), nullptr); // Make the provider read the updated |prefs_|. - provider_->RefreshPolicies(); + provider_->RefreshPolicies(PolicyFetchReason::kTest); task_environment_.RunUntilIdle(); EXPECT_TRUE(provider_->policies().Equals(expected));
diff --git a/components/policy/core/common/policy_service.h b/components/policy/core/common/policy_service.h index 00e1d225..78adbde9 100644 --- a/components/policy/core/common/policy_service.h +++ b/components/policy/core/common/policy_service.h
@@ -15,6 +15,7 @@ #include "build/build_config.h" #include "components/policy/core/common/policy_map.h" #include "components/policy/core/common/policy_namespace.h" +#include "components/policy/core/common/policy_types.h" #include "components/policy/policy_export.h" namespace policy { @@ -127,7 +128,8 @@ // Asks the PolicyService to reload policy from all available policy sources. // |callback| is invoked once every source has reloaded its policies, and // GetPolicies() is guaranteed to return the updated values at that point. - virtual void RefreshPolicies(base::OnceClosure callback) = 0; + virtual void RefreshPolicies(base::OnceClosure callback, + PolicyFetchReason reason) = 0; #if BUILDFLAG(IS_ANDROID) // Get the PolicyService JNI bridge instance.
diff --git a/components/policy/core/common/policy_service_impl.cc b/components/policy/core/common/policy_service_impl.cc index 7cf342a..5fa294f 100644 --- a/components/policy/core/common/policy_service_impl.cc +++ b/components/policy/core/common/policy_service_impl.cc
@@ -207,7 +207,8 @@ policy_domain_status_[domain] == PolicyDomainStatus::kPolicyReady; } -void PolicyServiceImpl::RefreshPolicies(base::OnceClosure callback) { +void PolicyServiceImpl::RefreshPolicies(base::OnceClosure callback, + PolicyFetchReason reason) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); VLOG_POLICY(2, POLICY_PROCESSING) << "Policy refresh starting"; @@ -230,7 +231,7 @@ for (auto* provider : providers_) refresh_pending_.insert(provider); for (auto* provider : providers_) - provider->RefreshPolicies(); + provider->RefreshPolicies(reason); } }
diff --git a/components/policy/core/common/policy_service_impl.h b/components/policy/core/common/policy_service_impl.h index 5457f00..1b3bf87 100644 --- a/components/policy/core/common/policy_service_impl.h +++ b/components/policy/core/common/policy_service_impl.h
@@ -19,6 +19,7 @@ #include "components/policy/core/common/policy_bundle.h" #include "components/policy/core/common/policy_migrator.h" #include "components/policy/core/common/policy_service.h" +#include "components/policy/core/common/policy_types.h" #include "components/policy/policy_export.h" namespace policy { @@ -69,7 +70,8 @@ const PolicyMap& GetPolicies(const PolicyNamespace& ns) const override; bool IsInitializationComplete(PolicyDomain domain) const override; bool IsFirstPolicyLoadComplete(PolicyDomain domain) const override; - void RefreshPolicies(base::OnceClosure callback) override; + void RefreshPolicies(base::OnceClosure callback, + PolicyFetchReason reason) override; #if BUILDFLAG(IS_ANDROID) android::PolicyServiceAndroid* GetPolicyServiceAndroid() override; #endif
diff --git a/components/policy/core/common/policy_service_impl_unittest.cc b/components/policy/core/common/policy_service_impl_unittest.cc index eb62f8d..33c61efd 100644 --- a/components/policy/core/common/policy_service_impl_unittest.cc +++ b/components/policy/core/common/policy_service_impl_unittest.cc
@@ -534,13 +534,15 @@ } TEST_F(PolicyServiceTest, RefreshPolicies) { - EXPECT_CALL(provider0_, RefreshPolicies()).Times(AnyNumber()); - EXPECT_CALL(provider1_, RefreshPolicies()).Times(AnyNumber()); - EXPECT_CALL(provider2_, RefreshPolicies()).Times(AnyNumber()); + EXPECT_CALL(provider0_, RefreshPolicies(testing::_)).Times(AnyNumber()); + EXPECT_CALL(provider1_, RefreshPolicies(testing::_)).Times(AnyNumber()); + EXPECT_CALL(provider2_, RefreshPolicies(testing::_)).Times(AnyNumber()); EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); - policy_service_->RefreshPolicies(base::BindOnce( - &PolicyServiceTest::OnPolicyRefresh, base::Unretained(this))); + policy_service_->RefreshPolicies( + base::BindOnce(&PolicyServiceTest::OnPolicyRefresh, + base::Unretained(this)), + PolicyFetchReason::kTest); // Let any queued observer tasks run. RunUntilIdle(); Mock::VerifyAndClearExpectations(this); @@ -571,8 +573,10 @@ // If another RefreshPolicies() call happens while waiting for a previous // one to complete, then all providers must refresh again. EXPECT_CALL(*this, OnPolicyRefresh()).Times(0); - policy_service_->RefreshPolicies(base::BindOnce( - &PolicyServiceTest::OnPolicyRefresh, base::Unretained(this))); + policy_service_->RefreshPolicies( + base::BindOnce(&PolicyServiceTest::OnPolicyRefresh, + base::Unretained(this)), + PolicyFetchReason::kTest); RunUntilIdle(); Mock::VerifyAndClearExpectations(this);
diff --git a/components/policy/core/common/policy_service_stub.cc b/components/policy/core/common/policy_service_stub.cc index 16527ab3..db26782f 100644 --- a/components/policy/core/common/policy_service_stub.cc +++ b/components/policy/core/common/policy_service_stub.cc
@@ -4,6 +4,8 @@ #include "components/policy/core/common/policy_service_stub.h" +#include "components/policy/core/common/policy_types.h" + namespace policy { PolicyServiceStub::PolicyServiceStub() = default; @@ -34,7 +36,8 @@ return true; } -void PolicyServiceStub::RefreshPolicies(base::OnceClosure callback) { +void PolicyServiceStub::RefreshPolicies(base::OnceClosure callback, + PolicyFetchReason reason) { if (!callback.is_null()) { std::move(callback).Run(); }
diff --git a/components/policy/core/common/policy_service_stub.h b/components/policy/core/common/policy_service_stub.h index 14e710f..f18673d 100644 --- a/components/policy/core/common/policy_service_stub.h +++ b/components/policy/core/common/policy_service_stub.h
@@ -7,6 +7,7 @@ #include "components/policy/core/common/policy_map.h" #include "components/policy/core/common/policy_service.h" +#include "components/policy/core/common/policy_types.h" namespace policy { @@ -32,7 +33,8 @@ bool IsInitializationComplete(PolicyDomain domain) const override; - void RefreshPolicies(base::OnceClosure callback) override; + void RefreshPolicies(base::OnceClosure callback, + PolicyFetchReason reason) override; private: const PolicyMap kEmpty_;
diff --git a/components/policy/core/common/policy_types.h b/components/policy/core/common/policy_types.h index 3811ace..09476470 100644 --- a/components/policy/core/common/policy_types.h +++ b/components/policy/core/common/policy_types.h
@@ -115,6 +115,45 @@ POLICY_PRIORITY_BROWSER_MERGED, }; +// The `PolicyFetchReason` enum is used to tag requests to DMServer. This allows +// for more targeted monitoring and alerting. +enum class PolicyFetchReason { + kUnspecified, + // Policy fetched at browser start, e.g. device policies at Ash start. + kBrowserStart, + // Policy fetches triggered by the Chrome Remote Desktop policy watcher. + kCrdHostPolicyWatcher, + // Required policy fetch during device enrollment. + kDeviceEnrollment, + // Policy fetch triggered by incoming FCM invalidation. + kInvalidation, + // ChromeOS policy fetch request from Lacros to Ash. + kLacros, + // CloudPolicyClient registration changed (e.g. during startup). + kRegistrationChanged, + // Various retry reasons based on DMServer status, see + // `CloudPolicyRefreshScheduler`. + kRetryAfterStatusServiceActivationPending, + kRetryAfterStatusServicePolicyNotFound, + kRetryAfterStatusServiceTooManyRequests, + kRetryAfterStatusRequestFailed, + kRetryAfterStatusTemporaryUnavailable, + kRetryAfterStatusCannotSignRequest, + kRetryAfterStatusRequestInvalid, + kRetryAfterStatusHttpStatusError, + kRetryAfterStatusResponseDecodingError, + kRetryAfterStatusServiceManagementNotSupported, + kRetryAfterStatusRequestTooLarge, + // Scheduled policy refresh (e.g. once per day). + kScheduled, + // Policy fetch triggered by sign-in. + kSignin, + // A placeholder reason used for tests (should not occur in production). + kTest, + // Policy fetched as requested by the user, e.g. through chrome://policy. + kUserRequest, +}; + } // namespace policy #endif // COMPONENTS_POLICY_CORE_COMMON_POLICY_TYPES_H_
diff --git a/components/policy/core/common/proxy_policy_provider.cc b/components/policy/core/common/proxy_policy_provider.cc index 3aae5ed7..60d7b5b 100644 --- a/components/policy/core/common/proxy_policy_provider.cc +++ b/components/policy/core/common/proxy_policy_provider.cc
@@ -46,9 +46,9 @@ ConfigurationPolicyProvider::Shutdown(); } -void ProxyPolicyProvider::RefreshPolicies() { +void ProxyPolicyProvider::RefreshPolicies(PolicyFetchReason reason) { if (delegate()) { - delegate()->RefreshPolicies(); + delegate()->RefreshPolicies(reason); } else { // Subtle: if a RefreshPolicies() call comes after Shutdown() then the // current bundle should be served instead. This also does the right thing
diff --git a/components/policy/core/common/proxy_policy_provider.h b/components/policy/core/common/proxy_policy_provider.h index e7d994a..a558f0c 100644 --- a/components/policy/core/common/proxy_policy_provider.h +++ b/components/policy/core/common/proxy_policy_provider.h
@@ -57,7 +57,7 @@ // ConfigurationPolicyProvider: void Shutdown() override; - void RefreshPolicies() override; + void RefreshPolicies(PolicyFetchReason reason) override; bool IsFirstPolicyLoadComplete(PolicyDomain domain) const override; // ConfigurationPolicyProvider::Observer:
diff --git a/components/policy/core/common/proxy_policy_provider_unittest.cc b/components/policy/core/common/proxy_policy_provider_unittest.cc index 2636fa9..71ad52d 100644 --- a/components/policy/core/common/proxy_policy_provider_unittest.cc +++ b/components/policy/core/common/proxy_policy_provider_unittest.cc
@@ -101,7 +101,7 @@ TEST_F(ProxyPolicyProviderTest, RefreshPoliciesUnownedDelegate) { EXPECT_CALL(observer_, OnUpdatePolicy(&proxy_provider_)); - proxy_provider_.RefreshPolicies(); + proxy_provider_.RefreshPolicies(PolicyFetchReason::kTest); Mock::VerifyAndClearExpectations(&observer_); EXPECT_CALL(observer_, OnUpdatePolicy(&proxy_provider_)); @@ -109,8 +109,8 @@ Mock::VerifyAndClearExpectations(&observer_); EXPECT_CALL(observer_, OnUpdatePolicy(&proxy_provider_)).Times(0); - EXPECT_CALL(*mock_provider_, RefreshPolicies()); - proxy_provider_.RefreshPolicies(); + EXPECT_CALL(*mock_provider_, RefreshPolicies(PolicyFetchReason::kTest)); + proxy_provider_.RefreshPolicies(PolicyFetchReason::kTest); Mock::VerifyAndClearExpectations(&observer_); Mock::VerifyAndClearExpectations(mock_provider_.get()); @@ -121,7 +121,7 @@ TEST_F(ProxyPolicyProviderTest, RefreshPoliciesOwnedDelegate) { EXPECT_CALL(observer_, OnUpdatePolicy(&proxy_provider_)); - proxy_provider_.RefreshPolicies(); + proxy_provider_.RefreshPolicies(PolicyFetchReason::kTest); Mock::VerifyAndClearExpectations(&observer_); EXPECT_CALL(observer_, OnUpdatePolicy(&proxy_provider_)); @@ -130,8 +130,8 @@ Mock::VerifyAndClearExpectations(&observer_); EXPECT_CALL(observer_, OnUpdatePolicy(&proxy_provider_)).Times(0); - EXPECT_CALL(*mock_provider_ptr, RefreshPolicies()); - proxy_provider_.RefreshPolicies(); + EXPECT_CALL(*mock_provider_ptr, RefreshPolicies(PolicyFetchReason::kTest)); + proxy_provider_.RefreshPolicies(PolicyFetchReason::kTest); Mock::VerifyAndClearExpectations(&observer_); Mock::VerifyAndClearExpectations(mock_provider_ptr);
diff --git a/components/policy/core/common/schema_registry_tracking_policy_provider.cc b/components/policy/core/common/schema_registry_tracking_policy_provider.cc index 41a00f6f..c8782ab 100644 --- a/components/policy/core/common/schema_registry_tracking_policy_provider.cc +++ b/components/policy/core/common/schema_registry_tracking_policy_provider.cc
@@ -6,6 +6,7 @@ #include <utility> +#include "components/policy/core/common/policy_types.h" #include "components/policy/core/common/schema_map.h" #include "components/policy/core/common/schema_registry.h" @@ -45,8 +46,9 @@ return state_ == READY; } -void SchemaRegistryTrackingPolicyProvider::RefreshPolicies() { - delegate_->RefreshPolicies(); +void SchemaRegistryTrackingPolicyProvider::RefreshPolicies( + PolicyFetchReason reason) { + delegate_->RefreshPolicies(reason); } void SchemaRegistryTrackingPolicyProvider::OnSchemaRegistryReady() { @@ -66,7 +68,7 @@ } state_ = WAITING_FOR_REFRESH; - RefreshPolicies(); + RefreshPolicies(PolicyFetchReason::kUnspecified); } void SchemaRegistryTrackingPolicyProvider::OnSchemaRegistryUpdated( @@ -74,7 +76,7 @@ if (state_ != READY) return; if (has_new_schemas) { - RefreshPolicies(); + RefreshPolicies(PolicyFetchReason::kUnspecified); } else { // Remove the policies that were being served for the component that have // been removed. This is important so that update notifications are also
diff --git a/components/policy/core/common/schema_registry_tracking_policy_provider.h b/components/policy/core/common/schema_registry_tracking_policy_provider.h index 74a7449..fc498a2f 100644 --- a/components/policy/core/common/schema_registry_tracking_policy_provider.h +++ b/components/policy/core/common/schema_registry_tracking_policy_provider.h
@@ -72,7 +72,7 @@ void Init(SchemaRegistry* registry) override; bool IsInitializationComplete(PolicyDomain domain) const override; bool IsFirstPolicyLoadComplete(PolicyDomain domain) const override; - void RefreshPolicies() override; + void RefreshPolicies(PolicyFetchReason reason) override; void OnSchemaRegistryReady() override; void OnSchemaRegistryUpdated(bool has_new_schemas) override;
diff --git a/components/policy/core/common/schema_registry_tracking_policy_provider_unittest.cc b/components/policy/core/common/schema_registry_tracking_policy_provider_unittest.cc index c647b45..3ca27f6 100644 --- a/components/policy/core/common/schema_registry_tracking_policy_provider_unittest.cc +++ b/components/policy/core/common/schema_registry_tracking_policy_provider_unittest.cc
@@ -26,6 +26,8 @@ namespace { +constexpr auto test_reason = PolicyFetchReason::kTest; + const char kTestSchema[] = "{" " \"type\": \"object\"," @@ -102,8 +104,8 @@ } TEST_F(SchemaRegistryTrackingPolicyProviderTest, RefreshPolicies) { - EXPECT_CALL(mock_provider_, RefreshPolicies()); - schema_registry_tracking_provider_.RefreshPolicies(); + EXPECT_CALL(mock_provider_, RefreshPolicies(test_reason)); + schema_registry_tracking_provider_.RefreshPolicies(test_reason); Mock::VerifyAndClearExpectations(&mock_provider_); } @@ -128,13 +130,14 @@ mock_provider_.UpdatePolicy(std::move(bundle)); Mock::VerifyAndClearExpectations(&observer_); - EXPECT_CALL(mock_provider_, RefreshPolicies()).Times(0); + EXPECT_CALL(mock_provider_, RefreshPolicies(PolicyFetchReason::kUnspecified)) + .Times(0); schema_registry_.RegisterComponent( PolicyNamespace(POLICY_DOMAIN_EXTENSIONS, "xyz"), CreateTestSchema()); schema_registry_.SetExtensionsDomainsReady(); Mock::VerifyAndClearExpectations(&mock_provider_); - EXPECT_CALL(mock_provider_, RefreshPolicies()); + EXPECT_CALL(mock_provider_, RefreshPolicies(PolicyFetchReason::kUnspecified)); schema_registry_.SetDomainReady(POLICY_DOMAIN_CHROME); Mock::VerifyAndClearExpectations(&mock_provider_); @@ -173,7 +176,7 @@ mock_provider_.UpdateChromePolicy(policy_map); Mock::VerifyAndClearExpectations(&observer_); - EXPECT_CALL(mock_provider_, RefreshPolicies()); + EXPECT_CALL(mock_provider_, RefreshPolicies(PolicyFetchReason::kUnspecified)); schema_registry_.SetAllDomainsReady(); EXPECT_TRUE(schema_registry_.IsReady()); Mock::VerifyAndClearExpectations(&mock_provider_); @@ -196,7 +199,7 @@ } TEST_F(SchemaRegistryTrackingPolicyProviderTest, RemoveAndAddComponent) { - EXPECT_CALL(mock_provider_, RefreshPolicies()); + EXPECT_CALL(mock_provider_, RefreshPolicies(PolicyFetchReason::kUnspecified)); const PolicyNamespace ns(POLICY_DOMAIN_EXTENSIONS, "xyz"); schema_registry_.RegisterComponent(ns, CreateTestSchema()); schema_registry_.SetAllDomainsReady(); @@ -222,7 +225,7 @@ // Adding it back should serve the current policies again, even though they // haven't changed on the platform provider. - EXPECT_CALL(mock_provider_, RefreshPolicies()); + EXPECT_CALL(mock_provider_, RefreshPolicies(PolicyFetchReason::kUnspecified)); schema_registry_.RegisterComponent(ns, CreateTestSchema()); Mock::VerifyAndClearExpectations(&mock_provider_);
diff --git a/components/policy/proto/device_management_backend.proto b/components/policy/proto/device_management_backend.proto index 97042251..43519c94 100644 --- a/components/policy/proto/device_management_backend.proto +++ b/components/policy/proto/device_management_backend.proto
@@ -938,6 +938,12 @@ TEST = 18; // Policy fetched at browser start, e.g. device policies at Ash start. BROWSER_START = 19; + // ChromeOS Policy fetch request from Lacros to Ash. + LACROS = 20; + // Policy fetched as requested by the user, e.g. through chrome://policy. + USER_REQUEST = 21; + // Policy fetches triggered by the Chrome Remote Desktop policy watcher. + CRD_HOST_POLICY_WATCHER = 22; } optional Reason reason = 4; }
diff --git a/components/printing/renderer/print_render_frame_helper.cc b/components/printing/renderer/print_render_frame_helper.cc index 514bf6a..ab80b68 100644 --- a/components/printing/renderer/print_render_frame_helper.cc +++ b/components/printing/renderer/print_render_frame_helper.cc
@@ -21,6 +21,8 @@ #include "base/json/json_writer.h" #include "base/location.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" +#include "base/memory/raw_ref.h" #include "base/memory/read_only_shared_memory_region.h" #include "base/memory/shared_memory_mapping.h" #include "base/metrics/histogram_functions.h" @@ -640,7 +642,7 @@ } private: - blink::WebNavigationControl* frame_ = nullptr; + raw_ptr<blink::WebNavigationControl, ExperimentalRenderer> frame_ = nullptr; }; HeaderAndFooterClient frame_client; @@ -878,14 +880,16 @@ FrameReference frame_; FrameReference original_frame_; - blink::WebNavigationControl* navigation_control_ = nullptr; + raw_ptr<blink::WebNavigationControl, ExperimentalRenderer> + navigation_control_ = nullptr; blink::WebNode node_to_print_; bool owns_web_view_ = false; mojom::PrintParamsPtr selection_only_print_params_; uint32_t page_count_ = 0; base::OnceClosure on_ready_; bool is_printing_started_ = false; - blink::scheduler::WebAgentGroupScheduler& agent_group_scheduler_; + const raw_ref<blink::scheduler::WebAgentGroupScheduler, ExperimentalRenderer> + agent_group_scheduler_; base::WeakPtrFactory<PrepareFrameAndViewForPrint> weak_ptr_factory_{this}; }; @@ -970,7 +974,7 @@ /*compositing_enabled=*/false, /*widgets_never_composited=*/false, /*opener=*/nullptr, mojo::NullAssociatedReceiver(), - agent_group_scheduler_, + *agent_group_scheduler_, /*session_storage_namespace_id=*/base::EmptyString(), /*page_base_background_color=*/absl::nullopt, blink::BrowsingContextGroupInfo::CreateUnique());
diff --git a/components/printing/renderer/print_render_frame_helper.h b/components/printing/renderer/print_render_frame_helper.h index 45b6386..c68b6876 100644 --- a/components/printing/renderer/print_render_frame_helper.h +++ b/components/printing/renderer/print_render_frame_helper.h
@@ -10,6 +10,7 @@ #include "base/functional/callback.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/read_only_shared_memory_region.h" #include "base/memory/ref_counted.h" #include "base/memory/scoped_refptr.h" @@ -78,8 +79,8 @@ blink::WebView* view(); private: - blink::WebView* view_; - blink::WebLocalFrame* frame_; + raw_ptr<blink::WebView, ExperimentalRenderer> view_; + raw_ptr<blink::WebLocalFrame, ExperimentalRenderer> frame_; }; // Helper to ensure that quit closures for Mojo response are called.
diff --git a/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.h b/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.h index 59ccbba..29b05ee 100644 --- a/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.h +++ b/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.h
@@ -26,6 +26,7 @@ #include <vector> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" #include "components/safe_browsing/content/renderer/phishing_classifier/scorer.h" @@ -147,7 +148,7 @@ // Clears the current state of the PhishingClassifier. void Clear(); - content::RenderFrame* render_frame_; // owns us + raw_ptr<content::RenderFrame, ExperimentalRenderer> render_frame_; // owns us std::unique_ptr<PhishingUrlFeatureExtractor> url_extractor_; std::unique_ptr<PhishingDOMFeatureExtractor> dom_extractor_; std::unique_ptr<PhishingTermFeatureExtractor> term_extractor_; @@ -156,7 +157,8 @@ // State for any in-progress extraction. std::unique_ptr<FeatureMap> features_; std::unique_ptr<std::set<uint32_t>> shingle_hashes_; - const std::u16string* page_text_; // owned by the caller + raw_ptr<const std::u16string, ExperimentalRenderer> + page_text_; // owned by the caller std::unique_ptr<SkBitmap> bitmap_; std::unique_ptr<VisualFeatures> visual_features_; DoneCallback done_callback_;
diff --git a/components/safe_browsing/content/renderer/phishing_classifier/phishing_dom_feature_extractor.h b/components/safe_browsing/content/renderer/phishing_classifier/phishing_dom_feature_extractor.h index 22149f39..8eedbc6 100644 --- a/components/safe_browsing/content/renderer/phishing_classifier/phishing_dom_feature_extractor.h +++ b/components/safe_browsing/content/renderer/phishing_classifier/phishing_dom_feature_extractor.h
@@ -14,6 +14,7 @@ #include <string> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/time/tick_clock.h" #include "third_party/blink/public/web/web_document.h" @@ -121,10 +122,11 @@ // description of which features are computed. void InsertFeatures(); - const base::TickClock* clock_; + raw_ptr<const base::TickClock, ExperimentalRenderer> clock_; // The output parameters from the most recent call to ExtractFeatures(). - FeatureMap* features_; // The caller keeps ownership of this. + raw_ptr<FeatureMap, ExperimentalRenderer> + features_; // The caller keeps ownership of this. DoneCallback done_callback_; // The current (sub-)document that we are processing. May be a null document
diff --git a/components/safe_browsing/content/renderer/phishing_classifier/phishing_image_embedder.h b/components/safe_browsing/content/renderer/phishing_classifier/phishing_image_embedder.h index 4c91740..e22ab985 100644 --- a/components/safe_browsing/content/renderer/phishing_classifier/phishing_image_embedder.h +++ b/components/safe_browsing/content/renderer/phishing_classifier/phishing_image_embedder.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "components/safe_browsing/content/renderer/phishing_classifier/phishing_visual_feature_extractor.h" #include "components/safe_browsing/content/renderer/phishing_classifier/scorer.h" @@ -73,7 +74,8 @@ // Clears the current state of the ImageEmbedder. void Clear(); - content::RenderFrame* render_frame_; // owns us. + raw_ptr<content::RenderFrame, ExperimentalRenderer> + render_frame_; // owns us. std::unique_ptr<PhishingVisualFeatureExtractor> visual_extractor_; // State for any in-progress image embedding extraction.
diff --git a/components/safe_browsing/content/renderer/phishing_classifier/phishing_term_feature_extractor.h b/components/safe_browsing/content/renderer/phishing_classifier/phishing_term_feature_extractor.h index 1002691c..9d27d4b3 100644 --- a/components/safe_browsing/content/renderer/phishing_classifier/phishing_term_feature_extractor.h +++ b/components/safe_browsing/content/renderer/phishing_classifier/phishing_term_feature_extractor.h
@@ -25,6 +25,7 @@ #include <unordered_set> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/strings/string_piece.h" #include "base/time/tick_clock.h" @@ -149,12 +150,14 @@ const size_t shingle_size_; // Non-owned pointer to our clock. - const base::TickClock* clock_; + raw_ptr<const base::TickClock, ExperimentalRenderer> clock_; // The output parameters from the most recent call to ExtractFeatures(). - const std::u16string* page_text_; // The caller keeps ownership of this. - FeatureMap* features_; // The caller keeps ownership of this. - std::set<uint32_t>* shingle_hashes_; + raw_ptr<const std::u16string, ExperimentalRenderer> + page_text_; // The caller keeps ownership of this. + raw_ptr<FeatureMap, ExperimentalRenderer> + features_; // The caller keeps ownership of this. + raw_ptr<std::set<uint32_t>, ExperimentalRenderer> shingle_hashes_; DoneCallback done_callback_; // Stores the current state of term extraction from |page_text_|.
diff --git a/components/safe_browsing/content/renderer/phishing_classifier/scorer.h b/components/safe_browsing/content/renderer/phishing_classifier/scorer.h index 939db71..f6fab8f2 100644 --- a/components/safe_browsing/content/renderer/phishing_classifier/scorer.h +++ b/components/safe_browsing/content/renderer/phishing_classifier/scorer.h
@@ -21,6 +21,7 @@ #include "base/files/file.h" #include "base/files/memory_mapped_file.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/read_only_shared_memory_region.h" #include "base/memory/weak_ptr.h" #include "base/metrics/histogram_macros.h" @@ -181,7 +182,7 @@ // Unowned. Points within flatbuffer_mapping_ and should not be free()d. // It remains valid till flatbuffer_mapping_ is valid and should be reassigned // if the mapping is updated. - const flat::ClientSideModel* flatbuffer_model_; + raw_ptr<const flat::ClientSideModel, ExperimentalRenderer> flatbuffer_model_; base::ReadOnlySharedMemoryMapping flatbuffer_mapping_; google::protobuf::RepeatedPtrField<TfLiteModelMetadata::Threshold> thresholds_;
diff --git a/components/safe_browsing/content/renderer/renderer_url_loader_throttle.h b/components/safe_browsing/content/renderer/renderer_url_loader_throttle.h index 70920d2..adaa77e 100644 --- a/components/safe_browsing/content/renderer/renderer_url_loader_throttle.h +++ b/components/safe_browsing/content/renderer/renderer_url_loader_throttle.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" #include "components/safe_browsing/content/common/safe_browsing.mojom.h" @@ -104,7 +105,7 @@ void OnMojoDisconnect(); - mojom::SafeBrowsing* safe_browsing_; + raw_ptr<mojom::SafeBrowsing, ExperimentalRenderer> safe_browsing_; const int render_frame_id_; // These fields hold the connection to this instance's private connection to @@ -145,7 +146,8 @@ // originated from an extension and destination is HTTP/HTTPS scheme only. void MaybeSendExtensionWebRequestData(network::ResourceRequest* request); - mojom::ExtensionWebRequestReporter* extension_web_request_reporter_; + raw_ptr<mojom::ExtensionWebRequestReporter, ExperimentalRenderer> + extension_web_request_reporter_; mojo::PendingRemote<mojom::ExtensionWebRequestReporter> extension_web_request_reporter_pending_remote_; mojo::Remote<mojom::ExtensionWebRequestReporter>
diff --git a/components/safe_browsing/content/renderer/websocket_sb_handshake_throttle.h b/components/safe_browsing/content/renderer/websocket_sb_handshake_throttle.h index 5cc93c4..3ba2502 100644 --- a/components/safe_browsing/content/renderer/websocket_sb_handshake_throttle.h +++ b/components/safe_browsing/content/renderer/websocket_sb_handshake_throttle.h
@@ -11,6 +11,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "components/safe_browsing/content/common/safe_browsing.mojom.h" #include "components/safe_browsing/core/common/safe_browsing_url_checker.mojom.h" #include "extensions/buildflags/buildflags.h" @@ -69,11 +70,12 @@ GURL url_; blink::WebSocketHandshakeThrottle::OnCompletion completion_callback_; mojo::Remote<mojom::SafeBrowsingUrlChecker> url_checker_; - mojom::SafeBrowsing* safe_browsing_; + raw_ptr<mojom::SafeBrowsing, ExperimentalRenderer> safe_browsing_; std::unique_ptr<mojo::Receiver<mojom::UrlCheckNotifier>> notifier_receiver_; #if BUILDFLAG(ENABLE_EXTENSIONS) - mojom::ExtensionWebRequestReporter* extension_web_request_reporter_; + raw_ptr<mojom::ExtensionWebRequestReporter, ExperimentalRenderer> + extension_web_request_reporter_; #endif // BUILDFLAG(ENABLE_EXTENSIONS) // |state_| is used to validate that events happen in the right order. It
diff --git a/components/spellcheck/renderer/hunspell_engine.h b/components/spellcheck/renderer/hunspell_engine.h index 49ed3644..152da2b1 100644 --- a/components/spellcheck/renderer/hunspell_engine.h +++ b/components/spellcheck/renderer/hunspell_engine.h
@@ -9,6 +9,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/strings/utf_string_conversions.h" #include "components/spellcheck/common/spellcheck_common.h" #include "components/spellcheck/renderer/spelling_engine.h" @@ -59,7 +60,8 @@ // This flag is true if we have requested dictionary. bool dictionary_requested_; - service_manager::LocalInterfaceProvider* embedder_provider_; + raw_ptr<service_manager::LocalInterfaceProvider, ExperimentalRenderer> + embedder_provider_; }; #endif // COMPONENTS_SPELLCHECK_RENDERER_HUNSPELL_ENGINE_H_
diff --git a/components/spellcheck/renderer/platform_spelling_engine.h b/components/spellcheck/renderer/platform_spelling_engine.h index 6b38dba..ba08162 100644 --- a/components/spellcheck/renderer/platform_spelling_engine.h +++ b/components/spellcheck/renderer/platform_spelling_engine.h
@@ -6,6 +6,7 @@ #define COMPONENTS_SPELLCHECK_RENDERER_PLATFORM_SPELLING_ENGINE_H_ #include "base/compiler_specific.h" +#include "base/memory/raw_ptr.h" #include "components/spellcheck/common/spellcheck.mojom.h" #include "components/spellcheck/renderer/spelling_engine.h" #include "mojo/public/cpp/bindings/remote.h" @@ -28,7 +29,8 @@ spellcheck::mojom::SpellCheckHost& GetOrBindSpellCheckHost(); // Not owned. |embedder_provider_| outlives PlatformSpellingEngine. - service_manager::LocalInterfaceProvider* embedder_provider_; + raw_ptr<service_manager::LocalInterfaceProvider, ExperimentalRenderer> + embedder_provider_; mojo::Remote<spellcheck::mojom::SpellCheckHost> spell_check_host_; };
diff --git a/components/spellcheck/renderer/spellcheck.h b/components/spellcheck/renderer/spellcheck.h index 651e66c..267f206 100644 --- a/components/spellcheck/renderer/spellcheck.h +++ b/components/spellcheck/renderer/spellcheck.h
@@ -12,6 +12,7 @@ #include "base/files/file.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" #include "build/build_config.h" @@ -229,7 +230,8 @@ // Custom dictionary spelling engine. CustomDictionaryEngine custom_dictionary_; - service_manager::LocalInterfaceProvider* embedder_provider_; + raw_ptr<service_manager::LocalInterfaceProvider, ExperimentalRenderer> + embedder_provider_; // Remember state for spellchecking. bool spellcheck_enabled_;
diff --git a/components/spellcheck/renderer/spellcheck_multilingual_unittest.cc b/components/spellcheck/renderer/spellcheck_multilingual_unittest.cc index 15d9845..b7102994 100644 --- a/components/spellcheck/renderer/spellcheck_multilingual_unittest.cc +++ b/components/spellcheck/renderer/spellcheck_multilingual_unittest.cc
@@ -8,6 +8,7 @@ #include <memory> #include <utility> +#include "base/memory/raw_ptr.h" #include "base/path_service.h" #include "base/strings/string_piece.h" #include "base/strings/string_split.h" @@ -117,7 +118,7 @@ spellcheck::EmptyLocalInterfaceProvider embedder_provider_; // Owned by |provider_|. - SpellCheck* spellcheck_; + raw_ptr<SpellCheck, ExperimentalRenderer> spellcheck_; std::unique_ptr<TestingSpellCheckProvider> provider_; };
diff --git a/components/spellcheck/renderer/spellcheck_provider.cc b/components/spellcheck/renderer/spellcheck_provider.cc index 1a08a40..e2ed8e4 100644 --- a/components/spellcheck/renderer/spellcheck_provider.cc +++ b/components/spellcheck/renderer/spellcheck_provider.cc
@@ -7,6 +7,7 @@ #include <unordered_map> #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/histogram_macros.h" #include "base/ranges/algorithm.h" #include "base/strings/utf_string_conversions.h" @@ -56,7 +57,7 @@ void OnDictionaryUpdated(const WebVector<WebString>& words_added) override; private: - SpellCheckProvider* owner_; + raw_ptr<SpellCheckProvider, ExperimentalRenderer> owner_; }; SpellCheckProvider::DictionaryUpdateObserverImpl::DictionaryUpdateObserverImpl(
diff --git a/components/spellcheck/renderer/spellcheck_provider.h b/components/spellcheck/renderer/spellcheck_provider.h index 06903412..e92b04b5 100644 --- a/components/spellcheck/renderer/spellcheck_provider.h +++ b/components/spellcheck/renderer/spellcheck_provider.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/containers/id_map.h" +#include "base/memory/raw_ptr.h" #include "build/build_config.h" #include "components/spellcheck/common/spellcheck.mojom.h" #include "components/spellcheck/spellcheck_buildflags.h" @@ -163,10 +164,11 @@ int last_identifier_; // Weak pointer to shared (per renderer) spellcheck data. - SpellCheck* spellcheck_; + raw_ptr<SpellCheck, ExperimentalRenderer> spellcheck_; // Not owned. |embedder_provider_| should outlive SpellCheckProvider. - service_manager::LocalInterfaceProvider* embedder_provider_; + raw_ptr<service_manager::LocalInterfaceProvider, ExperimentalRenderer> + embedder_provider_; // Interface to the SpellCheckHost. mojo::Remote<spellcheck::mojom::SpellCheckHost> spell_check_host_;
diff --git a/components/spellcheck/renderer/spellcheck_provider_test.h b/components/spellcheck/renderer/spellcheck_provider_test.h index 25d9c45..20b79a2 100644 --- a/components/spellcheck/renderer/spellcheck_provider_test.h +++ b/components/spellcheck/renderer/spellcheck_provider_test.h
@@ -9,6 +9,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/test/task_environment.h" #include "build/build_config.h" #include "components/spellcheck/renderer/empty_local_interface_provider.h" @@ -40,7 +41,7 @@ const blink::WebVector<blink::WebTextCheckingResult>& results) override; void DidCancelCheckingText() override; - FakeTextCheckingResult* result_; + raw_ptr<FakeTextCheckingResult, ExperimentalRenderer> result_; }; // A fake SpellCheck object which can fake the number of (enabled) spell check
diff --git a/components/spellcheck/renderer/spellcheck_unittest.cc b/components/spellcheck/renderer/spellcheck_unittest.cc index b8bf50d..2c808a3 100644 --- a/components/spellcheck/renderer/spellcheck_unittest.cc +++ b/components/spellcheck/renderer/spellcheck_unittest.cc
@@ -12,6 +12,7 @@ #include "base/containers/contains.h" #include "base/files/file_path.h" #include "base/files/file_util.h" +#include "base/memory/raw_ptr.h" #include "base/path_service.h" #include "base/run_loop.h" #include "base/strings/string_number_conversions.h" @@ -149,7 +150,7 @@ void DidCancelCheckingText() override { result_->completion_count_++; } - MockTextCheckingResult* result_; + raw_ptr<MockTextCheckingResult, ExperimentalRenderer> result_; }; // Operates unit tests for the content::SpellCheck::SpellCheckWord() function
diff --git a/components/spellcheck/renderer/spellcheck_worditerator.h b/components/spellcheck/renderer/spellcheck_worditerator.h index 1d67130..88026c6 100644 --- a/components/spellcheck/renderer/spellcheck_worditerator.h +++ b/components/spellcheck/renderer/spellcheck_worditerator.h
@@ -14,6 +14,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "third_party/icu/source/common/unicode/uscript.h" namespace base { @@ -198,7 +199,7 @@ // The language-specific attributes used for filtering out non-word // characters. - const SpellcheckCharAttribute* attribute_; + raw_ptr<const SpellcheckCharAttribute, ExperimentalRenderer> attribute_; // The break iterator. std::unique_ptr<base::i18n::BreakIterator> iterator_;
diff --git a/components/subresource_filter/content/renderer/subresource_filter_agent.h b/components/subresource_filter/content/renderer/subresource_filter_agent.h index 156deac..4357962 100644 --- a/components/subresource_filter/content/renderer/subresource_filter_agent.h +++ b/components/subresource_filter/content/renderer/subresource_filter_agent.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "components/subresource_filter/content/mojom/subresource_filter.mojom.h" #include "components/subresource_filter/content/renderer/ad_resource_tracker.h" @@ -148,7 +149,7 @@ const blink::RemoteFrameToken& placeholder_token) override; // Owned by the ChromeContentRendererClient and outlives us. - UnverifiedRulesetDealer* ruleset_dealer_; + raw_ptr<UnverifiedRulesetDealer, ExperimentalRenderer> ruleset_dealer_; mojom::ActivationState activation_state_for_next_document_;
diff --git a/components/subresource_filter/content/renderer/web_document_subresource_filter_impl.h b/components/subresource_filter/content/renderer/web_document_subresource_filter_impl.h index 8f04147..b6da15e55 100644 --- a/components/subresource_filter/content/renderer/web_document_subresource_filter_impl.h +++ b/components/subresource_filter/content/renderer/web_document_subresource_filter_impl.h
@@ -7,6 +7,7 @@ #include "base/files/file.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" #include "components/subresource_filter/content/renderer/ad_resource_tracker.h" @@ -99,7 +100,7 @@ // Manages all AdResource observers. Only non-null for the // WebDocumentSubresourceFilter most recently created by the // SubresourceFilterAgent. - AdResourceTracker* ad_resource_tracker_; + raw_ptr<AdResourceTracker, ExperimentalRenderer> ad_resource_tracker_; }; } // namespace subresource_filter
diff --git a/components/sync/base/pref_names.h b/components/sync/base/pref_names.h index 850049e..c8029418 100644 --- a/components/sync/base/pref_names.h +++ b/components/sync/base/pref_names.h
@@ -53,6 +53,9 @@ "sync.selected_types_per_account"; #if BUILDFLAG(IS_CHROMEOS_ASH) +// Boolean specifying whether sync was disabled due to a dashboard reset event. +inline constexpr char kSyncDisabledViaDashboard[] = + "sync.disabled_via_dashboard"; // Boolean specifying whether to automatically sync all Chrome OS specific data // types (including future ones). This includes types like printers, OS-only @@ -94,14 +97,6 @@ // sync. inline constexpr char kSyncManaged[] = "sync.managed"; -// Boolean whether has requested sync to be enabled. This is set early in the -// sync setup flow, after the user has pressed "turn on sync" but before they -// have accepted the confirmation dialog (that maps to -// kSyncInitialSyncFeatureSetupComplete). This is also set to false when sync is -// disabled by the user in sync settings, or when sync was reset from the -// dashboard. -inline constexpr char kSyncRequested[] = "sync.requested"; - // The type of encryption passphrase used. Determined and set the first time the // engine is successfully initialized. // Note that the actual values correspond to the proto version of
diff --git a/components/sync/service/sync_prefs.cc b/components/sync/service/sync_prefs.cc index 11396f0a..5e3939d5 100644 --- a/components/sync/service/sync_prefs.cc +++ b/components/sync/service/sync_prefs.cc
@@ -87,7 +87,6 @@ // static void SyncPrefs::RegisterProfilePrefs(PrefRegistrySimple* registry) { // Actual user-controlled preferences. - registry->RegisterBooleanPref(prefs::internal::kSyncRequested, false); registry->RegisterBooleanPref(prefs::internal::kSyncKeepEverythingSynced, true); #if BUILDFLAG(IS_IOS) @@ -99,6 +98,8 @@ RegisterTypeSelectedPref(registry, type); } #if BUILDFLAG(IS_CHROMEOS_ASH) + registry->RegisterBooleanPref(prefs::internal::kSyncDisabledViaDashboard, + false); registry->RegisterBooleanPref(prefs::internal::kSyncAllOsTypes, true); registry->RegisterBooleanPref(prefs::internal::kSyncOsApps, false); registry->RegisterBooleanPref(prefs::internal::kSyncOsPreferences, false); @@ -169,25 +170,6 @@ } #endif // !BUILDFLAG(IS_CHROMEOS_ASH) -bool SyncPrefs::IsSyncRequested() const { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - return pref_service_->GetBoolean(prefs::internal::kSyncRequested); -} - -void SyncPrefs::SetSyncRequested(bool is_requested) { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - pref_service_->SetBoolean(prefs::internal::kSyncRequested, is_requested); -} - -bool SyncPrefs::IsSyncRequestedSetExplicitly() const { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - // GetUserPrefValue() returns nullptr if there is no user-set value for this - // pref (there might still be a non-default value, e.g. from a policy, but we - // explicitly don't care about that here). - return pref_service_->GetUserPrefValue(prefs::internal::kSyncRequested) != - nullptr; -} - bool SyncPrefs::HasKeepEverythingSynced() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return pref_service_->GetBoolean(prefs::internal::kSyncKeepEverythingSynced); @@ -399,6 +381,21 @@ #endif // BUILDFLAG(IS_IOS) #if BUILDFLAG(IS_CHROMEOS_ASH) +bool SyncPrefs::IsSyncFeatureDisabledViaDashboard() const { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + return pref_service_->GetBoolean(prefs::internal::kSyncDisabledViaDashboard); +} + +void SyncPrefs::SetSyncFeatureDisabledViaDashboard() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + pref_service_->SetBoolean(prefs::internal::kSyncDisabledViaDashboard, true); +} + +void SyncPrefs::ClearSyncFeatureDisabledViaDashboard() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + pref_service_->ClearPref(prefs::internal::kSyncDisabledViaDashboard); +} + bool SyncPrefs::IsSyncAllOsTypesEnabled() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return pref_service_->GetBoolean(prefs::internal::kSyncAllOsTypes);
diff --git a/components/sync/service/sync_prefs.h b/components/sync/service/sync_prefs.h index 41b759e9..aef496c 100644 --- a/components/sync/service/sync_prefs.h +++ b/components/sync/service/sync_prefs.h
@@ -81,17 +81,6 @@ void ClearInitialSyncFeatureSetupComplete(); #endif // !BUILDFLAG(IS_CHROMEOS_ASH) - // Whether the user wants Sync to run. This is false by default, but gets set - // to true early in the Sync setup flow, after the user has pressed "turn on - // Sync" but before they have actually confirmed the settings (that's - // IsInitialSyncFeatureSetupComplete()). After Sync is enabled, this can get - // set to false via signout (which also clears - // IsInitialSyncFeatureSetupComplete) or, on ChromeOS Ash, when Sync gets - // reset from the dashboard. - bool IsSyncRequested() const; - void SetSyncRequested(bool is_requested); - bool IsSyncRequestedSetExplicitly() const; - // Whether the "Sync everything" toggle is enabled. This flag only has an // effect if Sync-the-feature is enabled. Note that even if this is true, some // types may be disabled e.g. due to enterprise policy. @@ -162,6 +151,12 @@ #endif // BUILDFLAG(IS_IOS) #if BUILDFLAG(IS_CHROMEOS_ASH) + // Functions to deal with the Ash-specific state where sync-the-feature is + // disabled because the user reset sync via dashboard. + bool IsSyncFeatureDisabledViaDashboard() const; + void SetSyncFeatureDisabledViaDashboard(); + void ClearSyncFeatureDisabledViaDashboard(); + // Chrome OS provides a separate settings UI surface for sync of OS types, // including a separate "Sync All" toggle for OS types. bool IsSyncAllOsTypesEnabled() const;
diff --git a/components/sync/service/sync_prefs_unittest.cc b/components/sync/service/sync_prefs_unittest.cc index 560214c..e31e4a28 100644 --- a/components/sync/service/sync_prefs_unittest.cc +++ b/components/sync/service/sync_prefs_unittest.cc
@@ -84,7 +84,6 @@ EXPECT_CALL(mock_sync_pref_observer, OnSyncManagedPrefChange(false)); ASSERT_FALSE(sync_prefs_->IsSyncClientDisabledByPolicy()); - ASSERT_FALSE(sync_prefs_->IsSyncRequested()); sync_prefs_->AddObserver(&mock_sync_pref_observer); @@ -93,11 +92,6 @@ pref_service_.SetBoolean(prefs::internal::kSyncManaged, false); EXPECT_FALSE(sync_prefs_->IsSyncClientDisabledByPolicy()); - sync_prefs_->SetSyncRequested(true); - EXPECT_TRUE(sync_prefs_->IsSyncRequested()); - sync_prefs_->SetSyncRequested(false); - EXPECT_FALSE(sync_prefs_->IsSyncRequested()); - sync_prefs_->RemoveObserver(&mock_sync_pref_observer); } @@ -123,6 +117,16 @@ #endif // !BUILDFLAG(IS_CHROMEOS_ASH) #if BUILDFLAG(IS_CHROMEOS_ASH) +TEST_F(SyncPrefsTest, SyncFeatureDisabledViaDashboard) { + EXPECT_FALSE(sync_prefs_->IsSyncFeatureDisabledViaDashboard()); + + sync_prefs_->SetSyncFeatureDisabledViaDashboard(); + EXPECT_TRUE(sync_prefs_->IsSyncFeatureDisabledViaDashboard()); + + sync_prefs_->ClearSyncFeatureDisabledViaDashboard(); + EXPECT_FALSE(sync_prefs_->IsSyncFeatureDisabledViaDashboard()); +} + TEST_F(SyncPrefsTest, SetSelectedOsTypesTriggersPreferredDataTypesPrefChange) { StrictMock<MockSyncPrefObserver> mock_sync_pref_observer; EXPECT_CALL(mock_sync_pref_observer, @@ -145,12 +149,6 @@ EXPECT_TRUE(sync_prefs_->IsInitialSyncFeatureSetupComplete()); - EXPECT_FALSE(sync_prefs_->IsSyncRequested()); - sync_prefs_->SetSyncRequested(true); - EXPECT_TRUE(sync_prefs_->IsSyncRequested()); - sync_prefs_->SetSyncRequested(false); - EXPECT_FALSE(sync_prefs_->IsSyncRequested()); - EXPECT_TRUE(sync_prefs_->HasKeepEverythingSynced()); sync_prefs_->SetSelectedTypes( /*keep_everything_synced=*/false,
diff --git a/components/sync/service/sync_service_impl.cc b/components/sync/service/sync_service_impl.cc index 67c1279..2652cf4bd 100644 --- a/components/sync/service/sync_service_impl.cc +++ b/components/sync/service/sync_service_impl.cc
@@ -306,6 +306,14 @@ // crash during signout). if (HasDisableReason(DISABLE_REASON_ENTERPRISE_POLICY)) { StopAndClear(); +#if BUILDFLAG(IS_CHROMEOS_ASH) + // On ChromeOS Ash, sync-the-feature stays disabled even after the policy is + // removed, for historic reasons. It is unclear if this behavior is + // optional, because it is indistinguishable from the + // sync-reset-via-dashboard case. It can be resolved by invoking + // SetSyncFeatureRequested(). + sync_prefs_.SetSyncFeatureDisabledViaDashboard(); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) } else if (HasDisableReason(DISABLE_REASON_NOT_SIGNED_IN)) { // On ChromeOS-Ash, signout is not possible, so it's not necessary to handle // this case. @@ -347,16 +355,6 @@ } } - // Auto-start means the first time the profile starts up, sync should start up - // immediately. Since IsSyncRequested() is false by default and nobody else - // will set it, we need to set it here. - // Local Sync bypasses the IsSyncRequested() check, so no need to set it in - // that case. - if (ShouldAutoStartSyncFeature() && !IsLocalSyncEnabled() && - !sync_prefs_.IsSyncRequestedSetExplicitly()) { - SetSyncFeatureRequested(); - } - if (IsEngineAllowedToRun()) { // TODO(crbug.com/1374718): Consider simplifying the logic and always // triggering an immediate start if transport data is missing. @@ -736,7 +734,10 @@ void SyncServiceImpl::SetSyncFeatureRequested() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - sync_prefs_.SetSyncRequested(true); + +#if BUILDFLAG(IS_CHROMEOS_ASH) + sync_prefs_.ClearSyncFeatureDisabledViaDashboard(); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) // If the Sync engine was already initialized (probably running in transport // mode), just reconfigure. @@ -1063,14 +1064,17 @@ sync_client_->GetTrustedVaultClient()->ClearLocalDataForAccount( GetAccountInfo()); - // Note: StopAndClear sets IsSyncRequested to false, which ensures that - // Sync-the-feature remains off. // Note: This method might get called again in the following code when // clearing the primary account. But due to rarity of the event, this // should be okay. StopAndClear(); -#if !BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(IS_CHROMEOS_ASH) + // On Ash, the primary account is always set and sync the feature + // turned on, so a dedicated bit is needed to ensure that + // Sync-the-feature remains off. + sync_prefs_.SetSyncFeatureDisabledViaDashboard(); +#else // !BUILDFLAG(IS_CHROMEOS_ASH) // On every platform except ash, revoke the Sync consent/Clear primary // account after a dashboard clear. // TODO(crbug.com/1462552): Simplify once kSync becomes unreachable or is @@ -1101,7 +1105,7 @@ signin_metrics::SignoutDelete::kIgnoreMetric); #endif // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) } -#endif // !BUILDFLAG(IS_CHROMEOS_ASH) +#endif // BUILDFLAG(IS_CHROMEOS_ASH) break; case STOP_SYNC_FOR_DISABLED_ACCOUNT: // Sync disabled by domain admin. Stop syncing until next restart. @@ -1317,11 +1321,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) bool SyncServiceImpl::IsSyncFeatureDisabledViaDashboard() const { - // This can return true only on ChromeOS Ash, upon DISABLE_SYNC_ON_CLIENT. - // TODO(crbug.com/1443446): A simpler and more robust implementation for this - // state would be to use a dedicated pref. - return user_settings_->IsInitialSyncFeatureSetupComplete() && - !IsLocalSyncEnabled() && !IsSyncFeatureConsideredRequested(); + return sync_prefs_.IsSyncFeatureDisabledViaDashboard(); } #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -1399,9 +1399,9 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) // On Ash, `has_sync_consent` should always be true, and what actually matters - // is `is_sync_requested`, which is set to false if the server reports - // DISABLE_SYNC_ON_CLIENT (e.g. reset via dashboard). - return sync_prefs_.IsSyncRequested(); + // is whether sync was disabled via dashboard, which is detected when the + // server responds with DISABLE_SYNC_ON_CLIENT. + return !IsSyncFeatureDisabledViaDashboard(); #else // On all platforms except Chrome Ash, IdentityManager determines via // consent level whether or not sync is condered requested. @@ -1793,6 +1793,14 @@ if (is_sync_managed) { StopAndClear(); +#if BUILDFLAG(IS_CHROMEOS_ASH) + // On ChromeOS Ash, sync-the-feature stays disabled even after the policy is + // removed, for historic reasons. It is unclear if this behavior is + // optional, because it is indistinguishable from the + // sync-reset-via-dashboard case. It can be resolved by invoking + // SetSyncFeatureRequested(). + sync_prefs_.SetSyncFeatureDisabledViaDashboard(); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) } else { // Sync is no longer disabled by policy. Try starting it up if appropriate. DCHECK(!engine_); @@ -2118,8 +2126,6 @@ sync_prefs_.ClearBookmarksAndReadingListAccountStorageOptIn(); #endif // BUILDFLAG(IS_IOS) - sync_prefs_.SetSyncRequested(false); - // Also let observers know that Sync-the-feature is now fully disabled // (before it possibly starts up again in transport-only mode). DVLOG(2) << "Notify observers on StopAndClear";
diff --git a/components/sync/service/sync_service_impl_startup_unittest.cc b/components/sync/service/sync_service_impl_startup_unittest.cc index d0a9b48..dd10cdc0 100644 --- a/components/sync/service/sync_service_impl_startup_unittest.cc +++ b/components/sync/service/sync_service_impl_startup_unittest.cc
@@ -138,8 +138,6 @@ void SetSyncFeatureEnabledPrefs() { CHECK(!sync_service_); - sync_prefs_.SetSyncRequested(true); - #if !BUILDFLAG(IS_CHROMEOS_ASH) sync_prefs_.SetInitialSyncFeatureSetupComplete(); #endif // !BUILDFLAG(IS_CHROMEOS_ASH) @@ -459,9 +457,21 @@ EXPECT_EQ(SyncService::TransportState::ACTIVE, sync_service()->GetTransportState()); - // Sync-the-feature is still considered off. +#if BUILDFLAG(IS_CHROMEOS_ASH) + // On Ash, sync-the-feature remains on. Note however that this is not a + // common scenario, because in most case StopAndClear() would be issued from + // a codepath that would prevent either sync-the-feature (e.g. dashboard + // reset) or sync-the-transport (e.g. unrecoverable error) from starting. + EXPECT_TRUE(sync_service()->IsSyncFeatureEnabled()); + EXPECT_TRUE(sync_service()->IsSyncFeatureActive()); +#else // BUILDFLAG(IS_CHROMEOS_ASH) + // Except for Ash, StopAndClear() turns sync-the-feature off because + // IsInitialSyncFeatureSetupComplete() becomes false. + EXPECT_FALSE( + sync_service()->GetUserSettings()->IsInitialSyncFeatureSetupComplete()); EXPECT_FALSE(sync_service()->IsSyncFeatureEnabled()); EXPECT_FALSE(sync_service()->IsSyncFeatureActive()); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) // Call StopAndClear() again while the sync service is already in transport // mode. It should immediately start up again in transport mode. @@ -578,7 +588,6 @@ } TEST_F(SyncServiceImplStartupTest, StartDownloadFailed) { - sync_prefs()->SetSyncRequested(true); CreateSyncService(); SignInWithSyncConsent(); ASSERT_FALSE(component_factory()->HasTransportDataIncludingFirstSync());
diff --git a/components/sync/service/sync_service_impl_unittest.cc b/components/sync/service/sync_service_impl_unittest.cc index a4a4158c..af3a636 100644 --- a/components/sync/service/sync_service_impl_unittest.cc +++ b/components/sync/service/sync_service_impl_unittest.cc
@@ -187,7 +187,6 @@ component_factory()->set_first_time_sync_configure_done(true); // Set first sync time before initialize to simulate a complete sync setup. SyncPrefs sync_prefs(prefs()); - sync_prefs.SetSyncRequested(true); sync_prefs.SetSelectedTypes( /*keep_everything_synced=*/true, /*registered_types=*/UserSelectableTypeSet::All(), @@ -300,7 +299,6 @@ // Mimic the sync setup being pending (SetInitialSyncFeatureSetupComplete() // not invoked). SyncPrefs sync_prefs(prefs()); - sync_prefs.SetSyncRequested(true); sync_prefs.SetSelectedTypes( /*keep_everything_synced=*/true, /*registered_types=*/UserSelectableTypeSet::All(), @@ -947,13 +945,29 @@ service()->StopAndClear(); + EXPECT_FALSE(component_factory()->HasTransportDataIncludingFirstSync()); + // Even though Sync-the-feature is disabled, there's still an (unconsented) // signed-in account, so Sync-the-transport should still be running. base::RunLoop().RunUntilIdle(); EXPECT_EQ(SyncService::TransportState::ACTIVE, service()->GetTransportState()); + +#if BUILDFLAG(IS_CHROMEOS_ASH) + // On Ash, sync-the-feature remains on. Note however that this is not a + // common scenario, because in most case StopAndClear() would be issued from + // a codepath that would prevent either sync-the-feature (e.g. dashboard + // reset) or sync-the-transport (e.g. unrecoverable error) from starting. + EXPECT_TRUE(service()->IsSyncFeatureEnabled()); + EXPECT_TRUE(service()->IsSyncFeatureActive()); +#else // BUILDFLAG(IS_CHROMEOS_ASH) + // Except for Ash, StopAndClear() turns sync-the-feature off because + // IsInitialSyncFeatureSetupComplete() becomes false. + EXPECT_FALSE( + service()->GetUserSettings()->IsInitialSyncFeatureSetupComplete()); EXPECT_FALSE(service()->IsSyncFeatureEnabled()); - EXPECT_FALSE(component_factory()->HasTransportDataIncludingFirstSync()); + EXPECT_FALSE(service()->IsSyncFeatureActive()); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) } // Verify that sync transport data is cleared when the service is initializing @@ -987,13 +1001,25 @@ // Disable sync. service()->StopAndClear(); - EXPECT_FALSE(service()->IsSyncFeatureEnabled()); + +#if BUILDFLAG(IS_CHROMEOS_ASH) + // On Ash, sync-the-feature remains on. Note however that this is not a + // common scenario, because in most case StopAndClear() would be issued from + // a codepath that would prevent either sync-the-feature (e.g. dashboard + // reset) or sync-the-transport (e.g. unrecoverable error) from starting. + ASSERT_TRUE(service()->IsSyncFeatureEnabled()); +#else // BUILDFLAG(IS_CHROMEOS_ASH) + // Except for Ash, StopAndClear() turns sync-the-feature off because + // IsInitialSyncFeatureSetupComplete() becomes false. + ASSERT_FALSE( + service()->GetUserSettings()->IsInitialSyncFeatureSetupComplete()); + ASSERT_FALSE(service()->IsSyncFeatureEnabled()); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) // Calling StopAndClear while already stopped should not crash. This may // (under some circumstances) happen when the user enables sync again but hits // the cancel button at the end of the process. service()->StopAndClear(); - EXPECT_FALSE(service()->IsSyncFeatureEnabled()); } // Verify that credential errors get returned from GetAuthError().
diff --git a/components/vector_icons/google_chrome b/components/vector_icons/google_chrome index dbf059c..bd78dae 160000 --- a/components/vector_icons/google_chrome +++ b/components/vector_icons/google_chrome
@@ -1 +1 @@ -Subproject commit dbf059ca9ed5a4da6ae628042a2797e822a53d79 +Subproject commit bd78daef00c8596e4d0ef5b0f88c12c08f5348df
diff --git a/content/browser/loader/keep_alive_url_browsertest.cc b/content/browser/loader/keep_alive_url_browsertest.cc index dfd595ad..25ea88f 100644 --- a/content/browser/loader/keep_alive_url_browsertest.cc +++ b/content/browser/loader/keep_alive_url_browsertest.cc
@@ -19,6 +19,7 @@ #include "base/test/bind.h" #include "base/test/mock_callback.h" #include "base/test/scoped_feature_list.h" +#include "content/browser/back_forward_cache_test_util.h" #include "content/browser/loader/keep_alive_url_loader.h" #include "content/browser/renderer_host/render_frame_host_impl.h" #include "content/browser/storage_partition_impl.h" @@ -51,8 +52,8 @@ constexpr char16_t kPromiseResolvedPageTitle[] = u"Resolved"; -constexpr char kPrimaryHost[] = "a.com"; -constexpr char kSecondaryHost[] = "b.com"; +constexpr char kPrimaryHost[] = "a.test"; +constexpr char kSecondaryHost[] = "b.test"; constexpr char kKeepAliveEndpoint[] = "/beacon"; @@ -64,6 +65,8 @@ constexpr char kBeaconId[] = "beacon01"; +constexpr char kFetchLaterEndpoint[] = "/fetch-later"; + // Encodes the given `url` using the JS method encodeURIComponent. std::string EncodeURL(const GURL& url) { url::RawCanonOutputT<char> buffer; @@ -71,29 +74,56 @@ return std::string(buffer.data(), buffer.length()); } +MATCHER(IsFrameHidden, + base::StrCat({"Frame is", negation ? " not" : "", " hidden"})) { + return arg->GetVisibilityState() == PageVisibilityState::kHidden; +} + } // namespace class KeepAliveURLBrowserTestBase : public ContentBrowserTest { - public: - KeepAliveURLBrowserTestBase() { - feature_list_.InitWithFeaturesAndParameters( - GetDefaultEnabledBackForwardCacheFeaturesForTesting( - {{blink::features::kKeepAliveInBrowserMigration, {}}}), - GetDefaultDisabledBackForwardCacheFeaturesForTesting()); - base::test::AllowCheckIsTestForTesting(); - } + protected: + using FeaturesType = std::vector<base::test::FeatureRefAndParams>; + using DisabledFeaturesType = std::vector<base::test::FeatureRef>; + + KeepAliveURLBrowserTestBase() + : https_test_server_(std::make_unique<net::EmbeddedTestServer>( + net::EmbeddedTestServer::TYPE_HTTPS)) {} ~KeepAliveURLBrowserTestBase() override = default; // Not Copyable. KeepAliveURLBrowserTestBase(const KeepAliveURLBrowserTestBase&) = delete; KeepAliveURLBrowserTestBase& operator=(const KeepAliveURLBrowserTestBase&) = delete; + void SetUp() override { + feature_list_.InitWithFeaturesAndParameters(GetEnabledFeatures(), + GetDisabledFeatures()); + base::test::AllowCheckIsTestForTesting(); + ContentBrowserTest::SetUp(); + } + virtual const FeaturesType& GetEnabledFeatures() { + static const FeaturesType enabled_features = + GetDefaultEnabledBackForwardCacheFeaturesForTesting( + {{blink::features::kKeepAliveInBrowserMigration, {}}}); + return enabled_features; + } + virtual const DisabledFeaturesType& GetDisabledFeatures() { + static const DisabledFeaturesType disabled_features = + GetDefaultDisabledBackForwardCacheFeaturesForTesting(); + return disabled_features; + } + void SetUpOnMainThread() override { // Support multiple sites on the test server. host_resolver()->AddRule("*", "127.0.0.1"); loaders_observer_ = std::make_unique<KeepAliveURLLoadersTestObserver>( web_contents()->GetBrowserContext()); + // Initialize an HTTPS server. Subclass may choose to use HTTPS by calling + // `SetUseHttps()`. + https_test_server_->AddDefaultHandlers(GetTestDataFilePath()); + https_test_server_->SetSSLConfig(net::EmbeddedTestServer::CERT_TEST_NAMES); + ContentBrowserTest::SetUpOnMainThread(); } @@ -106,7 +136,7 @@ for (const auto& relative_url : relative_urls) { handlers.emplace_back( std::make_unique<net::test_server::ControllableHttpResponse>( - embedded_test_server(), relative_url)); + server(), relative_url)); } return handlers; } @@ -118,13 +148,13 @@ // --> http://b.com:<port>/no-cors-server-redirect-307?... // --> `target_url GURL GetCrossOriginMultipleRedirectsURL(const GURL& target_url) const { - const auto intermediate_url2 = embedded_test_server()->GetURL( + const auto intermediate_url2 = server()->GetURL( kSecondaryHost, base::StringPrintf("/no-cors-server-redirect-307?%s", target_url.spec().c_str())); - const auto intermediate_url1 = embedded_test_server()->GetURL( + const auto intermediate_url1 = server()->GetURL( kSecondaryHost, base::StringPrintf("/server-redirect-307?%s", intermediate_url2.spec().c_str())); - return embedded_test_server()->GetURL( + return server()->GetURL( kSecondaryHost, base::StringPrintf("/no-cors-server-redirect-307?%s", intermediate_url1.spec().c_str())); } @@ -135,10 +165,10 @@ // --> /no-cors-server-redirect-307?... // --> `target_url GURL GetSameOriginMultipleRedirectsURL(const GURL& target_url) const { - const auto intermediate_url1 = embedded_test_server()->GetURL( + const auto intermediate_url1 = server()->GetURL( kPrimaryHost, base::StringPrintf("/no-cors-server-redirect-307?%s", target_url.spec().c_str())); - return embedded_test_server()->GetURL( + return server()->GetURL( kPrimaryHost, base::StringPrintf("/server-redirect-307?%s", intermediate_url1.spec().c_str())); } @@ -149,10 +179,10 @@ // --> http://b.com:<port>/no-cors-server-redirect-307?... // --> `target_url GURL GetSameAndCrossOriginRedirectsURL(const GURL& target_url) const { - const auto intermediate_url1 = embedded_test_server()->GetURL( + const auto intermediate_url1 = server()->GetURL( kSecondaryHost, base::StringPrintf("/no-cors-server-redirect-307?%s", target_url.spec().c_str())); - return embedded_test_server()->GetURL( + return server()->GetURL( kPrimaryHost, base::StringPrintf("/server-redirect-307?%s", intermediate_url1.spec().c_str())); } @@ -177,10 +207,19 @@ KeepAliveURLLoadersTestObserver& loaders_observer() { return *loaders_observer_; } + void SetUseHttps() { use_https_ = true; } + net::EmbeddedTestServer* server() { + return use_https_ ? https_test_server_.get() : embedded_test_server(); + } + const net::EmbeddedTestServer* server() const { + return use_https_ ? https_test_server_.get() : embedded_test_server(); + } private: base::test::ScopedFeatureList feature_list_; std::unique_ptr<KeepAliveURLLoadersTestObserver> loaders_observer_; + bool use_https_ = false; + const std::unique_ptr<net::EmbeddedTestServer> https_test_server_; }; // Contains the integration tests for loading fetch(url, {keepalive: true}) @@ -231,7 +270,7 @@ GURL GetKeepAlivePageURL(const std::string& method, size_t num_requests = 1, bool set_csp = false) const { - return embedded_test_server()->GetURL( + return server()->GetURL( kPrimaryHost, base::StringPrintf( "/set-header-with-file/content/test/data/fetch-keepalive.html?" @@ -242,7 +281,7 @@ : "")); } GURL GetCrossOriginPageURL() { - return embedded_test_server()->GetURL(kSecondaryHost, "/title2.html"); + return server()->GetURL(kSecondaryHost, "/title2.html"); } }; @@ -259,7 +298,7 @@ const std::string method = GetParam(); auto request_handler = std::move(RegisterRequestHandlers({kKeepAliveEndpoint})[0]); - ASSERT_TRUE(embedded_test_server()->Start()); + ASSERT_TRUE(server()->Start()); ASSERT_TRUE(NavigateToURL(web_contents(), GetKeepAlivePageURL(method))); // Ensure the keepalive request is sent, but delay response. @@ -281,7 +320,7 @@ // same host. // // Note: Chromium allows at most 6 concurrent connections to the same host under -// HTTP 1.1 protocol, which `embedded_test_server()` uses by default. +// HTTP 1.1 protocol, which `server()` uses by default. // Exceeding this limit will hang the browser. // TODO(crbug.com/1428502): Flaky on Fuchsia and Android. IN_PROC_BROWSER_TEST_P(KeepAliveURLBrowserTest, @@ -290,7 +329,7 @@ const size_t num_requests = 2; auto request_handlers = RegisterRequestHandlers({kKeepAliveEndpoint, kKeepAliveEndpoint}); - ASSERT_TRUE(embedded_test_server()->Start()); + ASSERT_TRUE(server()->Start()); ASSERT_TRUE( NavigateToURL(web_contents(), GetKeepAlivePageURL(method, num_requests))); @@ -320,7 +359,7 @@ const std::string method = GetParam(); auto request_handler = std::move(RegisterRequestHandlers({kKeepAliveEndpoint})[0]); - ASSERT_TRUE(embedded_test_server()->Start()); + ASSERT_TRUE(server()->Start()); LoadPageWithKeepAliveRequestAndSendResponseAfterUnload( GetKeepAlivePageURL(method), request_handler.get(), k200TextResponse); @@ -339,7 +378,7 @@ const std::string method = GetParam(); auto request_handler = std::move(RegisterRequestHandlers({kKeepAliveEndpoint})[0]); - ASSERT_TRUE(embedded_test_server()->Start()); + ASSERT_TRUE(server()->Start()); ASSERT_TRUE(NavigateToURL(web_contents(), GetKeepAlivePageURL(method))); RenderFrameHostImplWrapper rfh_1(current_frame_host()); @@ -381,7 +420,7 @@ base::StringPrintf("%s?id=%s", kKeepAliveEndpoint, kBeaconId); auto request_handler = std::move(RegisterRequestHandlers({beacon_endpoint})[0]); - ASSERT_TRUE(embedded_test_server()->Start()); + ASSERT_TRUE(server()->Start()); // Set up a cross-origin (kSecondaryHost) URL with CORS-safelisted // payload that causes multiple redirects and eventually points to a @@ -391,13 +430,12 @@ // --> http://b.com:<port>/server-redirect-307?... // --> http://b.com:<port>/no-cors-server-redirect-307?... // --> `target_url - const auto target_url = - embedded_test_server()->GetURL(kSecondaryHost, beacon_endpoint); + const auto target_url = server()->GetURL(kSecondaryHost, beacon_endpoint); const auto beacon_url = GetCrossOriginMultipleRedirectsURL(target_url); // Navigate to a page that calls fetch() API and verify its response. - ASSERT_TRUE(NavigateToURL(web_contents(), embedded_test_server()->GetURL( - kPrimaryHost, "/title1.html"))); + ASSERT_TRUE(NavigateToURL(web_contents(), + server()->GetURL(kPrimaryHost, "/title1.html"))); ASSERT_TRUE(ExecJs(web_contents(), JsReplace(R"( @@ -439,7 +477,7 @@ MultipleRedirectsAndFailInBetweenRequest) { const auto beacon_endpoint = base::StringPrintf("%s?id=%s", kKeepAliveEndpoint, kBeaconId); - ASSERT_TRUE(embedded_test_server()->Start()); + ASSERT_TRUE(server()->Start()); // Set up a same-origin URL with CORS-safelisted payload that causes multiple // redirects and eventually points to a cross-origin `target_url`: @@ -447,13 +485,12 @@ // http://a.com:<port>/server-redirect-307?... // --> http://b.com:<port>/no-cors-server-redirect-307?... => should fail // --> `target_url => should not reach here - const auto target_url = - embedded_test_server()->GetURL(kSecondaryHost, beacon_endpoint); + const auto target_url = server()->GetURL(kSecondaryHost, beacon_endpoint); const auto beacon_url = GetSameAndCrossOriginRedirectsURL(target_url); // Navigate to a page that calls fetch() API and verify its response. - ASSERT_TRUE(NavigateToURL(web_contents(), embedded_test_server()->GetURL( - kPrimaryHost, "/title1.html"))); + ASSERT_TRUE(NavigateToURL(web_contents(), + server()->GetURL(kPrimaryHost, "/title1.html"))); ASSERT_TRUE(ExecJs(web_contents(), JsReplace(R"( fetch($1, {keepalive: true, mode: 'cors'}); @@ -491,7 +528,7 @@ base::StringPrintf("%s?id=%s", kKeepAliveEndpoint, kBeaconId); auto request_handler = std::move(RegisterRequestHandlers({beacon_endpoint})[0]); - ASSERT_TRUE(embedded_test_server()->Start()); + ASSERT_TRUE(server()->Start()); // Set up a same-origin URL with CORS-safelisted payload that causes multiple // redirects and eventually points to a cross-origin `target_url`: @@ -499,13 +536,12 @@ // http://a.com:<port>/server-redirect-307?... // --> http://a.com:<port>/no-cors-server-redirect-307?... // --> `target_url => should fail to get response - const auto target_url = - embedded_test_server()->GetURL(kSecondaryHost, beacon_endpoint); + const auto target_url = server()->GetURL(kSecondaryHost, beacon_endpoint); const auto beacon_url = GetSameOriginMultipleRedirectsURL(target_url); // Navigate to a page that calls fetch() API and verify its response. - ASSERT_TRUE(NavigateToURL(web_contents(), embedded_test_server()->GetURL( - kPrimaryHost, "/title1.html"))); + ASSERT_TRUE(NavigateToURL(web_contents(), + server()->GetURL(kPrimaryHost, "/title1.html"))); ASSERT_TRUE(ExecJs(web_contents(), JsReplace(R"( fetch($1, {keepalive: true, mode: 'cors'}); @@ -545,7 +581,7 @@ const char redirect_target[] = "/beacon-redirected"; auto request_handlers = RegisterRequestHandlers({kKeepAliveEndpoint, redirect_target}); - ASSERT_TRUE(embedded_test_server()->Start()); + ASSERT_TRUE(server()->Start()); // Sets up redirects according to the following redirect chain: // fetch("http://a.com:<port>/beacon", keepalive: true) @@ -582,7 +618,7 @@ const char unsafe_redirect_target[] = "chrome://settings"; auto request_handler = std::move(RegisterRequestHandlers({kKeepAliveEndpoint})[0]); - ASSERT_TRUE(embedded_test_server()->Start()); + ASSERT_TRUE(server()->Start()); // Set up redirects according to the following redirect chain: // fetch("http://a.com:<port>/beacon", keepalive: true) @@ -609,7 +645,7 @@ const char violating_csp_redirect_target[] = "http://b.com/beacon-redirected"; auto request_handler = std::move(RegisterRequestHandlers({kKeepAliveEndpoint})[0]); - ASSERT_TRUE(embedded_test_server()->Start()); + ASSERT_TRUE(server()->Start()); // Set up redirects according to the following redirect chain: // fetch("http://a.com:<port>/beacon", keepalive: true) @@ -652,7 +688,7 @@ delay_iframe_removal_ms.value())); } - return embedded_test_server()->GetURL(kPrimaryHost, base::StrCat(queries)); + return server()->GetURL(kPrimaryHost, base::StrCat(queries)); } // Navigates to a page that calls `navigator.sendBeacon(beacon_url)` from a @@ -735,12 +771,11 @@ base::StringPrintf("%s?id=%s", kKeepAliveEndpoint, kBeaconId); auto request_handler = std::move(RegisterRequestHandlers({beacon_endpoint})[0]); - ASSERT_TRUE(embedded_test_server()->Start()); + ASSERT_TRUE(server()->Start()); // Set up a cross-origin (kSecondaryHost) URL with CORS-safelisted // payload that causes multiple redirects. - const auto target_url = - embedded_test_server()->GetURL(kSecondaryHost, beacon_endpoint); + const auto target_url = server()->GetURL(kSecondaryHost, beacon_endpoint); const auto beacon_url = GetCrossOriginMultipleRedirectsURL(target_url); LoadPageWithIframeAndSendBeacon(beacon_url, request_handler.get(), @@ -775,12 +810,11 @@ base::StringPrintf("%s?id=%s", kKeepAliveEndpoint, kBeaconId); auto request_handler = std::move(RegisterRequestHandlers({beacon_endpoint})[0]); - ASSERT_TRUE(embedded_test_server()->Start()); + ASSERT_TRUE(server()->Start()); // Set up a cross-origin (kSecondaryHost) URL with CORS-safelisted // payload that causes multiple redirects. - const auto target_url = - embedded_test_server()->GetURL(kSecondaryHost, beacon_endpoint); + const auto target_url = server()->GetURL(kSecondaryHost, beacon_endpoint); const auto beacon_url = GetCrossOriginMultipleRedirectsURL(target_url); LoadPageWithIframeAndSendBeacon(beacon_url, request_handler.get(), @@ -808,7 +842,7 @@ base::StringPrintf("%s?id=%s", kKeepAliveEndpoint, kBeaconId); auto request_handler = std::move(RegisterRequestHandlers({beacon_endpoint})[0]); - ASSERT_TRUE(embedded_test_server()->Start()); + ASSERT_TRUE(server()->Start()); // Set up a cross-origin (kSecondaryHost) redirect with CORS-safelisted // payload according to the following redirect chain: @@ -816,9 +850,8 @@ // "http://b.com:<port>/no-cors-server-redirect-307?...", // <CORS-safelisted payload>) // --> http://b.com:<port>/beacon?id=beacon01 - const auto target_url = - embedded_test_server()->GetURL(kSecondaryHost, beacon_endpoint); - const auto beacon_url = embedded_test_server()->GetURL( + const auto target_url = server()->GetURL(kSecondaryHost, beacon_endpoint); + const auto beacon_url = server()->GetURL( kSecondaryHost, base::StringPrintf("/no-cors-server-redirect-307?%s", EncodeURL(target_url).c_str())); @@ -843,7 +876,7 @@ base::StringPrintf("%s?id=%s", kKeepAliveEndpoint, kBeaconId); auto request_handler = std::move(RegisterRequestHandlers({beacon_endpoint})[0]); - ASSERT_TRUE(embedded_test_server()->Start()); + ASSERT_TRUE(server()->Start()); // Set up a cross-origin (kSecondaryHost) redirect with non-CORS-safelisted // payload according to the following redirect chain: @@ -851,9 +884,8 @@ // "http://b.com:<port>/no-cors-server-redirect-307?...", // <non-CORS-safelisted payload>) => should fail here // --> http://b.com:<port>/beacon?id=beacon01 - const auto target_url = - embedded_test_server()->GetURL(kSecondaryHost, beacon_endpoint); - const auto beacon_url = embedded_test_server()->GetURL( + const auto target_url = server()->GetURL(kSecondaryHost, beacon_endpoint); + const auto beacon_url = server()->GetURL( kSecondaryHost, base::StringPrintf("/no-cors-server-redirect-307?%s", EncodeURL(target_url).c_str())); // Navigate to the page that calls sendBeacon with `beacon_url` from an @@ -875,4 +907,405 @@ EXPECT_EQ(loader_service()->NumLoadersForTesting(), 0u); } +// A base class to help testing JS fetchLater() API behaviors. +class FetchLaterBrowserTestBase : public KeepAliveURLBrowserTestBase { + protected: + void SetUp() override { + // fetchLater() API only supports HTTPS requests. + SetUseHttps(); + KeepAliveURLBrowserTestBase::SetUp(); + } + + bool NavigateToURL(const GURL& url) { + previous_document_ = + std::make_unique<RenderFrameHostImplWrapper>(current_frame_host()); + bool ret = content::NavigateToURL(web_contents(), url); + current_document_ = + std::make_unique<RenderFrameHostImplWrapper>(current_frame_host()); + return ret; + } + bool WaitUntilPreviousDocumentDeleted() { + CHECK(previous_document_); + // `previous_document_` might already be destroyed here. + return previous_document_->WaitUntilRenderFrameDeleted(); + } + // Caution: the returned document might already be killed if BFCache is not + // working. + RenderFrameHostImplWrapper& previous_document() { + CHECK(previous_document_); + CHECK(!previous_document_->IsDestroyed()); + return *previous_document_; + } + RenderFrameHostImplWrapper& current_document() { + CHECK(previous_document_); + return *current_document_; + } + + // Navigates to an empty page, and executes `script` on it. + void RunScript(const std::string& script) { + ASSERT_TRUE(NavigateToURL(server()->GetURL(kPrimaryHost, "/title1.html"))); + ASSERT_TRUE(ExecJs(web_contents(), script)); + ASSERT_TRUE(WaitForLoadStop(web_contents())); + } + + // Navigates to a page that executes `script`, and navigates to another page. + void RunScriptAndNavigateAway(const std::string& script) { + RunScript(script); + + // Navigate to cross-origin page to ensure the 1st page can be unloaded if + // BackForwardCache is disabled. + ASSERT_TRUE( + NavigateToURL(server()->GetURL(kSecondaryHost, "/title2.html"))); + ASSERT_TRUE(WaitForLoadStop(web_contents())); + } + + // Expects `total` number of FetchLater requests to be sent. + // `total` must equal to the size of `request_handlers`. + // `requester_handlers` are to wait for the FetchLater requests and to + // respond. + void ExpectFetchLaterRequests( + size_t total, + std::vector<std::unique_ptr<net::test_server::ControllableHttpResponse>>& + request_handlers) { + SCOPED_TRACE( + base::StringPrintf("ExpectFetchLaterRequests: %zu requests", total)); + ASSERT_EQ(total, request_handlers.size()); + EXPECT_EQ(loader_service()->NumLoadersForTesting(), total); + + for (const auto& handler : request_handlers) { + // Waits for a FetchLater request. + handler->WaitForRequest(); + // Sends back final response to terminate in-browser request handling. + handler->Send(k200TextResponse); + // Triggers OnComplete. + handler->Done(); + } + + loaders_observer().WaitForTotalOnReceiveResponse(total); + // TODO(crbug.com/1356128): Check NumLoadersForTesting==0 after migrating to + // in-browser ThrottlingURLLoader. + // Current implementation cannot ensure receiving renderer disconnection. + // Also need to wait for TotalOnComplete by `total`, not by states. + } + + private: + std::unique_ptr<RenderFrameHostImplWrapper> current_document_ = nullptr; + std::unique_ptr<RenderFrameHostImplWrapper> previous_document_ = nullptr; +}; + +// A type to support parameterized testing for timeout-related tests. +struct TestTimeoutType { + std::string test_case_name; + int32_t timeout; +}; + +// Tests to cover FetchLater's behaviors when BackForwardCache is off. +// +// Disables BackForwardCache such that a page is discarded right away on user +// navigating to another page. +class FetchLaterNoBackForwardCacheBrowserTest + : public FetchLaterBrowserTestBase, + public testing::WithParamInterface<TestTimeoutType> { + protected: + const FeaturesType& GetEnabledFeatures() override { + static const FeaturesType enabled_features = { + {blink::features::kFetchLaterAPI, {{}}}}; + return enabled_features; + } + const DisabledFeaturesType& GetDisabledFeatures() override { + static const DisabledFeaturesType disabled_features = { + features::kBackForwardCache}; + return disabled_features; + } +}; + +INSTANTIATE_TEST_SUITE_P( + All, + FetchLaterNoBackForwardCacheBrowserTest, + testing::ValuesIn<std::vector<TestTimeoutType>>({ + {"LongTimeout", 600000}, // 10 minutes + {"OneMinuteTimeout", 60000}, // 1 minute + }), + [](const testing::TestParamInfo<TestTimeoutType>& info) { + return info.param.test_case_name; + }); + +// All pending FetchLater requests should be sent after the initiator page is +// gone, no matter how much time their activationTimeout has left. +// Disables BackForwardCache such that a page is discarded right away on user +// navigating to another page. +IN_PROC_BROWSER_TEST_P(FetchLaterNoBackForwardCacheBrowserTest, + SendOnPageDiscardBeforeActivationTimeout) { + const std::string target_url = kFetchLaterEndpoint; + auto request_handlers = RegisterRequestHandlers({target_url, target_url}); + ASSERT_TRUE(server()->Start()); + + // Creates two FetchLater requests with various long activationTimeout, which + // should all be sent on page discard. + RunScriptAndNavigateAway(JsReplace(R"( + fetchLater($1, {activationTimeout: $2}); + fetchLater($1, {activationTimeout: $2}); + )", + target_url, GetParam().timeout)); + // Ensure the 1st page has been unloaded. + ASSERT_TRUE(WaitUntilPreviousDocumentDeleted()); + + // Loaders are disconnected after the 1st page is gone. + EXPECT_EQ(loader_service()->NumDisconnectedLoadersForTesting(), 2u); + // The FetchLater requests should've been sent after the 1st page is gone. + ExpectFetchLaterRequests(2, request_handlers); +} + +class FetchLaterWithBackForwardCacheMetricsBrowserTestBase + : public FetchLaterBrowserTestBase, + public BackForwardCacheMetricsTestMatcher { + protected: + void SetUpOnMainThread() override { + // TestAutoSetUkmRecorder's constructor requires a sequenced context. + ukm_recorder_ = std::make_unique<ukm::TestAutoSetUkmRecorder>(); + histogram_tester_ = std::make_unique<base::HistogramTester>(); + FetchLaterBrowserTestBase::SetUpOnMainThread(); + } + + void TearDownOnMainThread() override { + ukm_recorder_.reset(); + histogram_tester_.reset(); + FetchLaterBrowserTestBase::TearDownOnMainThread(); + } + + // `BackForwardCacheMetricsTestMatcher` implementation. + const ukm::TestAutoSetUkmRecorder& ukm_recorder() override { + return *ukm_recorder_; + } + const base::HistogramTester& histogram_tester() override { + return *histogram_tester_; + } + + private: + std::unique_ptr<ukm::TestAutoSetUkmRecorder> ukm_recorder_; + std::unique_ptr<base::HistogramTester> histogram_tester_; +}; + +// Tests to cover FetchLater's behaviors when BackForwardCache is on but does +// not come into play. +// +// Setting long `BackForwardCache TTL (1min)` so that FetchLater sending cannot +// be caused by page eviction out of BackForwardCache. +class FetchLaterNoActivationTimeoutBrowserTest + : public FetchLaterWithBackForwardCacheMetricsBrowserTestBase { + protected: + const FeaturesType& GetEnabledFeatures() override { + static const FeaturesType enabled_features = { + {blink::features::kFetchLaterAPI, {}}, + {features::kBackForwardCache, {{}}}, + {features::kBackForwardCacheTimeToLiveControl, + {{"time_to_live_seconds", "60"}}}, + // Forces BackForwardCache to work in low memory device. + {features::kBackForwardCacheMemoryControls, + {{"memory_threshold_for_back_forward_cache_in_mb", "0"}}}}; + return enabled_features; + } +}; + +// A pending FetchLater request with default options should be sent after the +// initiator page is gone. +// Similar to SendOnPageDiscardBeforeActivationTimeout. +IN_PROC_BROWSER_TEST_F(FetchLaterNoActivationTimeoutBrowserTest, + SendOnPageDeletion) { + const std::string target_url = kFetchLaterEndpoint; + auto request_handlers = RegisterRequestHandlers({target_url}); + ASSERT_TRUE(server()->Start()); + + // Creates a FetchLater request in an iframe, which is removed after loaded. + ASSERT_TRUE(NavigateToURL( + server()->GetURL(kPrimaryHost, "/page_with_blank_iframe.html"))); + ASSERT_TRUE(ExecJs(web_contents(), R"( + var promise = new Promise(resolve => { + window.addEventListener('message', e => { + const iframe = document.getElementById('test_iframe'); + iframe.remove(); + resolve(e.data); + }); + }); + )")); + auto* iframe = + static_cast<RenderFrameHostImpl*>(ChildFrameAt(web_contents(), 0)); + EXPECT_TRUE(ExecJs(iframe, JsReplace(R"( + fetchLater($1); + window.parent.postMessage(true, "*"); + )", + target_url))); + // `iframe` is removed after it calls fetchLater(). + EXPECT_EQ(true, EvalJs(web_contents(), "promise")); + + // The loader is disconnected after the 1st page is gone. + EXPECT_EQ(loader_service()->NumDisconnectedLoadersForTesting(), 1u); + // The FetchLater requests should've been sent after the 1st page is gone. + ExpectFetchLaterRequests(1, request_handlers); +} + +// A pending FetchLater request should not be sent after its page gets restored +// from BackForwardCache before getting evicted. +IN_PROC_BROWSER_TEST_F( + FetchLaterNoActivationTimeoutBrowserTest, + NotSendWhenPageIsRestoredBeforeBeingEvictedFromBackForwardCache) { + const std::string target_url = kFetchLaterEndpoint; + auto request_handlers = RegisterRequestHandlers({target_url}); + ASSERT_TRUE(server()->Start()); + + RunScriptAndNavigateAway(JsReplace(R"( + fetchLater($1); + )", + target_url)); + ASSERT_TRUE(previous_document()->IsInBackForwardCache()); + // Navigate back to the 1st page. + ASSERT_TRUE(HistoryGoBack(web_contents())); + + // The same page is still alive. + ExpectRestored(FROM_HERE); + // The loader should still exist, but the request should not be sent. + EXPECT_EQ(loader_service()->NumLoadersForTesting(), 1u); + EXPECT_EQ(loader_service()->NumDisconnectedLoadersForTesting(), 0u); +} + +// Without a activationTimeout set, a pending FetchLater request should not be +// sent out during its page frozen state. +// Similar to ResetActivationTimeoutTimerOnPageResume. +IN_PROC_BROWSER_TEST_F(FetchLaterNoActivationTimeoutBrowserTest, + NotSendWhenPageIsResumedAfterBeingFrozen) { + const std::string target_url = kFetchLaterEndpoint; + ASSERT_TRUE(server()->Start()); + + // Creates a FetchLater request with NO activationTimeout. + // It should be impossible to send out during page frozen. + ASSERT_TRUE(NavigateToURL(server()->GetURL(kPrimaryHost, "/title1.html"))); + ASSERT_TRUE(ExecJs(web_contents(), JsReplace(R"( + fetchLater($1); + )", + target_url))); + ASSERT_TRUE(WaitForLoadStop(web_contents())); + + // Forces to freeze the current page. + web_contents()->WasHidden(); + web_contents()->SetPageFrozen(true); + + // The FetchLater request should not be sent. + EXPECT_EQ(loader_service()->NumLoadersForTesting(), 1u); + EXPECT_EQ(loader_service()->NumDisconnectedLoadersForTesting(), 0u); + + // Forces to wake up the current page. + web_contents()->WasHidden(); + web_contents()->SetPageFrozen(false); + // The FetchLater request should not be sent. + // TODO(crbug.com/1465781): Verify FetchLaterResult once + // https://crrev.com/c/4820528 is submitted. + EXPECT_EQ(loader_service()->NumLoadersForTesting(), 1u); + EXPECT_EQ(loader_service()->NumDisconnectedLoadersForTesting(), 0u); +} + +// Tests to cover FetchLater's activationTimeout behaviors when BackForwardCache +// is on and may come into play. +// +// BackForwardCache eviction is simulated by calling +// `DisableBFCacheForRFHForTesting(previous_document())` instead of relying on +// its TTL. +class FetchLaterActivationTimeoutBrowserTest + : public FetchLaterWithBackForwardCacheMetricsBrowserTestBase { + protected: + const FeaturesType& GetEnabledFeatures() override { + static const FeaturesType enabled_features = { + {blink::features::kFetchLaterAPI, {}}, + {features::kBackForwardCache, {{}}}, + // Sets to a long timeout, as tests below should not rely on it. + {features::kBackForwardCacheTimeToLiveControl, + {{"time_to_live_seconds", "60"}}}, + // Forces BackForwardCache to work in low memory device. + {features::kBackForwardCacheMemoryControls, + {{"memory_threshold_for_back_forward_cache_in_mb", "0"}}}}; + return enabled_features; + } +}; + +// When setting activationTimeout>0, a pending FetchLater request should be sent +// after around the specified time, if no navigation happens. +IN_PROC_BROWSER_TEST_F(FetchLaterActivationTimeoutBrowserTest, + SendOnActivationTimeout) { + const std::string target_url = kFetchLaterEndpoint; + auto request_handlers = RegisterRequestHandlers({target_url}); + ASSERT_TRUE(server()->Start()); + + // Creates a FetchLater request with activationTimeout=2s. + // It should be sent out after 2s. + RunScript(JsReplace(R"( + fetchLater($1, {activationTimeout: 2000}); + )", + target_url)); + ASSERT_FALSE(current_document().IsDestroyed()); + + // The loader should still exist as the page exists. + EXPECT_EQ(loader_service()->NumDisconnectedLoadersForTesting(), 0u); + // The FetchLater request should be sent, triggered by its activationTimeout. + ExpectFetchLaterRequests(1, request_handlers); +} + +// A pending FetchLater request should be sent when its page is evicted out of +// BackForwardCache. +// TODO(crbug.com/1465781): Fixed this by listening to BFCache eviction. +// It looks like ContextLifecycleObserver::ContextDestroyed() is not called when +// a document is evicted from cache, i.e. most of Document::Shutdown() is +// skipped. +IN_PROC_BROWSER_TEST_F(FetchLaterActivationTimeoutBrowserTest, + DISABLED_SendOnBackForwardCachedEviction) { + const std::string target_url = kFetchLaterEndpoint; + auto request_handlers = RegisterRequestHandlers({target_url}); + ASSERT_TRUE(server()->Start()); + + // Creates a FetchLater request with long activationTimeout (3min) + RunScriptAndNavigateAway(JsReplace(R"( + fetchLater($1, {activationTimeout: 180000}); + )", + target_url)); + ASSERT_TRUE(previous_document()->IsInBackForwardCache()); + // Forces evicting previous page. This will also post a task that destroys it. + DisableBFCacheForRFHForTesting(previous_document()->GetGlobalId()); + ASSERT_TRUE(previous_document()->is_evicted_from_back_forward_cache()); + // Eviction happens immediately, but RFH deletion may be delayed. + ASSERT_TRUE(previous_document().WaitUntilRenderFrameDeleted()); + + // The loader is disconnected after the page is gone (evicted). + EXPECT_EQ(loader_service()->NumDisconnectedLoadersForTesting(), 1u); + // The FetchLater request should've been sent on page deletion. + ExpectFetchLaterRequests(1, request_handlers); +} + +// A FetchLater request can be fired immediately on entering BackForwardCache by +// making its activationTimeout=0 in persisted pagehide event. +// TODO(crbug.com/1465781): Fixed this by ensuring loading options for +// FetchLater is kLoadingTasksUnfreezable (or after new mojo is submitted). +// Currently, IPCs after BFCached is delayed and may not be sent to browser. +IN_PROC_BROWSER_TEST_F(FetchLaterActivationTimeoutBrowserTest, + DISABLED_SendOnEnterBackForwardCacheAfterNavigation) { + const std::string target_url = kFetchLaterEndpoint; + auto request_handlers = RegisterRequestHandlers({target_url}); + ASSERT_TRUE(server()->Start()); + + // Creates a FetchLater request with activationTimeout=0 in persisted pagehide + // event. It should be sent out right away, i.e. page entering + // BackForwardCache. + RunScriptAndNavigateAway(JsReplace(R"( + window.addEventListener('pagehide', e => { + if (e.persisted) { + fetchLater($1, {activationTimeout: 0}); + } + }); + )", + target_url)); + ASSERT_TRUE(previous_document()->IsInBackForwardCache()); + + // The loader should still exist as the page exists. + EXPECT_EQ(loader_service()->NumDisconnectedLoadersForTesting(), 0u); + // The FetchLater request should've been sent. + ExpectFetchLaterRequests(1, request_handlers); +} + } // namespace content
diff --git a/content/browser/loader/merkle_integrity_source_stream_unittest.cc b/content/browser/loader/merkle_integrity_source_stream_unittest.cc index 9de767ce..815e676 100644 --- a/content/browser/loader/merkle_integrity_source_stream_unittest.cc +++ b/content/browser/loader/merkle_integrity_source_stream_unittest.cc
@@ -122,8 +122,8 @@ scoped_refptr<net::IOBuffer> output_buffer_; int output_buffer_size_; - raw_ptr<net::MockSourceStream, DanglingUntriaged> source_; std::unique_ptr<MerkleIntegritySourceStream> stream_; + raw_ptr<net::MockSourceStream> source_; }; INSTANTIATE_TEST_SUITE_P(
diff --git a/content/browser/network_service_browsertest.cc b/content/browser/network_service_browsertest.cc index 55c5439..0aa2d7e 100644 --- a/content/browser/network_service_browsertest.cc +++ b/content/browser/network_service_browsertest.cc
@@ -22,9 +22,6 @@ #include "base/threading/platform_thread.h" #include "base/time/time.h" #include "build/build_config.h" -#include "build/buildflag.h" -#include "content/browser/network/network_service_util_internal.h" -#include "content/browser/network_service_instance_impl.h" #include "content/browser/storage_partition_impl.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/browser_thread.h" @@ -1804,39 +1801,6 @@ // final checks are performed in TearDownInProcessBrowserTestFixture(). } -#if BUILDFLAG(IS_ANDROID) -class EmptyNetworkServiceTest : public ContentBrowserTest { - public: - EmptyNetworkServiceTest() { - scoped_feature_list_.InitWithFeatures( - {network::features::kNetworkServiceEmptyOutOfProcess}, {}); - ForceInProcessNetworkService(); - } - EmptyNetworkServiceTest(const EmptyNetworkServiceTest&) = delete; - EmptyNetworkServiceTest& operator=(const EmptyNetworkServiceTest&) = delete; - - private: - base::test::ScopedFeatureList scoped_feature_list_; -}; - -IN_PROC_BROWSER_TEST_F(EmptyNetworkServiceTest, Base) { - // Check if EmptyNetworkService is available. - network::mojom::EmptyNetworkService* empty_network_service = - GetEmptyNetworkServiceForTesting(); - DCHECK(empty_network_service); - const int32_t kExpected = 42; - int32_t value = 0; - base::RunLoop loop; - empty_network_service->Ping(kExpected, - base::BindLambdaForTesting([&](int32_t val) { - value = val; - loop.Quit(); - })); - loop.Run(); - EXPECT_EQ(kExpected, value); -} -#endif - } // namespace } // namespace content
diff --git a/content/browser/network_service_instance_impl.cc b/content/browser/network_service_instance_impl.cc index 0d724c6..69e77a7 100644 --- a/content/browser/network_service_instance_impl.cc +++ b/content/browser/network_service_instance_impl.cc
@@ -35,6 +35,7 @@ #include "base/threading/thread.h" #include "base/threading/thread_restrictions.h" #include "base/trace_event/trace_event.h" +#include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "content/browser/browser_main_loop.h" #include "content/browser/first_party_sets/first_party_sets_handler_impl.h" @@ -91,10 +92,6 @@ #include "services/network/public/mojom/network_interface_change_listener.mojom.h" #endif -#if BUILDFLAG(IS_ANDROID) -#include "content/public/common/content_switches.h" -#endif - namespace content { namespace { @@ -116,17 +113,6 @@ bool g_force_create_network_service_directly = false; mojo::Remote<network::mojom::NetworkService>* g_network_service_remote = nullptr; -#if BUILDFLAG(IS_ANDROID) -mojo::Remote<network::mojom::EmptyNetworkService>* - g_empty_network_service_remote = nullptr; -bool IsEmptyNetworkServiceEnabledForUMA() { - return IsInProcessNetworkService() && - !base::CommandLine::ForCurrentProcess()->HasSwitch( - switches::kSingleProcess) && - base::FeatureList::IsEnabled( - network::features::kNetworkServiceEmptyOutOfProcess); -} -#endif network::NetworkConnectionTracker* g_network_connection_tracker; bool g_network_service_is_responding = false; base::Time g_last_network_service_crash; @@ -385,26 +371,6 @@ GetNetworkTaskRunner()->PostTask( FROM_HERE, base::BindOnce(&CreateInProcessNetworkServiceOnThread, std::move(receiver))); -#if BUILDFLAG(IS_ANDROID) - if (IsEmptyNetworkServiceEnabledForUMA() && - // DownloadManagerService.java calls this in ServiceManagerOnlyMode, where - // this is called before the browser threads are initialized and UI thread - // is not named Chrome_UIThread at that point. We avoid such rare case. - BrowserThread::CurrentlyOn(BrowserThread::UI)) { - if (!g_empty_network_service_remote) { - g_empty_network_service_remote = - new mojo::Remote<network::mojom::EmptyNetworkService>; - } - g_empty_network_service_remote->reset(); - mojo::PendingReceiver<network::mojom::EmptyNetworkService> empty_receiver = - g_empty_network_service_remote->BindNewPipeAndPassReceiver(); - ServiceProcessHost::Options options; - options.WithDisplayName(u"Empty Network Service"); - options.WithExtraCommandLineSwitches( - {network::switches::kRegisterEmptyNetworkService}); - ServiceProcessHost::Launch(std::move(empty_receiver), std::move(options)); - } -#endif } #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) @@ -767,13 +733,6 @@ return g_network_service_remote->get(); } -#if BUILDFLAG(IS_ANDROID) -network::mojom::EmptyNetworkService* GetEmptyNetworkServiceForTesting() { - DCHECK(IsEmptyNetworkServiceEnabledForUMA()); - return g_empty_network_service_remote->get(); -} -#endif - base::CallbackListSubscription RegisterNetworkServiceCrashHandler( base::RepeatingClosure handler) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); @@ -852,12 +811,6 @@ g_in_process_instance = nullptr; } GetNetworkTaskRunnerStorage().reset(); - -#if BUILDFLAG(IS_ANDROID) - if (IsEmptyNetworkServiceEnabledForUMA() && g_empty_network_service_remote) { - g_empty_network_service_remote->reset(); - } -#endif } void RestartNetworkService() {
diff --git a/content/browser/network_service_instance_impl.h b/content/browser/network_service_instance_impl.h index 2ca269bb..1023237 100644 --- a/content/browser/network_service_instance_impl.h +++ b/content/browser/network_service_instance_impl.h
@@ -7,15 +7,8 @@ #include "base/callback_list.h" #include "base/functional/callback.h" -#include "build/build_config.h" #include "content/common/content_export.h" -#if BUILDFLAG(IS_ANDROID) -namespace network::mojom { -class EmptyNetworkService; -} // namespace network::mojom -#endif - namespace content { // Creates the network::NetworkService object on the IO thread directly instead @@ -54,11 +47,6 @@ CONTENT_EXPORT void OnRestartNetworkServiceForTesting( base::RepeatingClosure on_restart); -#if BUILDFLAG(IS_ANDROID) -CONTENT_EXPORT network::mojom::EmptyNetworkService* -GetEmptyNetworkServiceForTesting(); -#endif - } // namespace content #endif // CONTENT_BROWSER_NETWORK_SERVICE_INSTANCE_IMPL_H_
diff --git a/content/browser/renderer_host/render_frame_host_manager.cc b/content/browser/renderer_host/render_frame_host_manager.cc index 4dcb9d4..331975f 100644 --- a/content/browser/renderer_host/render_frame_host_manager.cc +++ b/content/browser/renderer_host/render_frame_host_manager.cc
@@ -1116,6 +1116,17 @@ "bfcache_eligibility", bfcache_eligibility.flattened_reasons.ToString()); if (can_store) { + bool is_same_process = + (old_render_frame_host->GetProcess() == + frame_tree_node_->current_frame_host()->GetProcess()); + if (old_render_frame_host->GetSiteInstance()->IsSameSiteWithURL( + frame_tree_node_->current_url())) { + base::UmaHistogramBoolean("BackForwardCache.ProcessReuse.SameSite", + is_same_process); + } else { + base::UmaHistogramBoolean("BackForwardCache.ProcessReuse.CrossSite", + is_same_process); + } auto stored_page = CollectPage(std::move(old_render_frame_host)); auto entry = std::make_unique<BackForwardCacheImpl::Entry>(std::move(stored_page));
diff --git a/content/browser/service_worker/service_worker_browsertest.cc b/content/browser/service_worker/service_worker_browsertest.cc index 676293a..7c4444d3 100644 --- a/content/browser/service_worker/service_worker_browsertest.cc +++ b/content/browser/service_worker/service_worker_browsertest.cc
@@ -6161,6 +6161,8 @@ feature_list_.InitWithFeatures( {features::kServiceWorkerAutoPreload}, {features::kServiceWorkerBypassFetchHandler}); + ServiceWorkerRaceNetworkRequestURLLoaderClient:: + SetDataPipeCapacityBytesForTest(1024); } ~ServiceWorkerAutoPreloadBrowserTest() override = default; @@ -6227,6 +6229,31 @@ } IN_PROC_BROWSER_TEST_F(ServiceWorkerAutoPreloadBrowserTest, + PassThrough_LargeData) { + SetupAndRegisterServiceWorker(); + const std::string relative_url = + "/service_worker/mock_response?sw_pass_through&server_large_data"; + const GURL test_url = embedded_test_server()->GetURL(relative_url); + + WorkerRunningStatusObserver service_worker_running_status_observer( + public_context()); + NavigationHandleObserver observer(web_contents(), test_url); + NavigateToURLBlockUntilNavigationsComplete(shell(), test_url, 1); + EXPECT_TRUE(observer.has_committed()); + service_worker_running_status_observer.WaitUntilRunning(); + + // Request count should be 1. RaceNetworkRequest + pass through request from + // fetch handler but the fetch handler request will reuse the response from + // RaceNetworkRequest. + while (GetRequestCount(relative_url) != 1) { + base::RunLoop().RunUntilIdle(); + } + EXPECT_EQ(1, GetRequestCount(relative_url)); + EXPECT_EQ("race-network-request-with-large-data", + observer.GetNormalizedResponseHeader("X-Response-From")); +} + +IN_PROC_BROWSER_TEST_F(ServiceWorkerAutoPreloadBrowserTest, NetworkRequest_Wins_FetchHandler_Fallback) { // Register the ServiceWorker and navigate to the in scope URL. SetupAndRegisterServiceWorker(); @@ -6314,6 +6341,26 @@ } IN_PROC_BROWSER_TEST_F(ServiceWorkerAutoPreloadBrowserTest, + Subresource_PassThrough_LargeData) { + SetupAndRegisterServiceWorker(); + ReloadBlockUntilNavigationsComplete(shell(), 1); + + const std::string relative_url = + "/service_worker/mock_response?sw_pass_through&server_large_data"; + EXPECT_EQ(200, EvalJs(GetPrimaryMainFrame(), + "fetch('" + relative_url + + "').then(response => response.status)")); + + // Request count should be 1. RaceNetworkRequest + pass through request from + // fetch handler but the fetch handler request will reuse the response from + // RaceNetworkRequest. + while (GetRequestCount(relative_url) != 1) { + base::RunLoop().RunUntilIdle(); + } + EXPECT_EQ(1, GetRequestCount(relative_url)); +} + +IN_PROC_BROWSER_TEST_F(ServiceWorkerAutoPreloadBrowserTest, Subresource_NetworkRequest_Wins_FetchHandler_Fallback) { SetupAndRegisterServiceWorker(); ReloadBlockUntilNavigationsComplete(shell(), 1);
diff --git a/content/browser/service_worker/service_worker_main_resource_loader.cc b/content/browser/service_worker/service_worker_main_resource_loader.cc index 44252c9..3b06133 100644 --- a/content/browser/service_worker/service_worker_main_resource_loader.cc +++ b/content/browser/service_worker/service_worker_main_resource_loader.cc
@@ -736,6 +736,13 @@ case FetchResponseFrom::kSubresourceLoaderIsHandlingRedirect: NOTREACHED_NORETURN(); } + + // Cancel the in-flight request processing for the fallback. + if (commit_responsibility() == FetchResponseFrom::kServiceWorker && + race_network_request_url_loader_client_) { + race_network_request_url_loader_client_->CancelWriteData( + commit_responsibility()); + } RecordFetchResponseFrom(); DCHECK_EQ(status_, Status::kStarted);
diff --git a/content/common/service_worker/race_network_request_url_loader_client.cc b/content/common/service_worker/race_network_request_url_loader_client.cc index c2841a2..b31aa18 100644 --- a/content/common/service_worker/race_network_request_url_loader_client.cc +++ b/content/common/service_worker/race_network_request_url_loader_client.cc
@@ -407,6 +407,9 @@ if (!owner_) { return; } + if (state_ == State::kDataTransferFinished) { + return; + } std::string histogram_prefix = base::StrCat( {"ServiceWorker.FetchEvent", @@ -448,75 +451,109 @@ void* write_buffer = nullptr; void* write_buffer_for_fetch_handler = nullptr; - // Begin the write process for the response of the race network request. - result = BeginWriteData(data_pipe_for_race_network_request_, &write_buffer, - histogram_prefix); - switch (result) { - case MOJO_RESULT_OK: - // Perhaps writable size may be smaller than the readable size. Choose the - // most smallest size. - num_bytes_to_consume = - std::min(num_bytes_to_consume, - data_pipe_for_race_network_request_.num_write_bytes); - break; - case MOJO_RESULT_FAILED_PRECONDITION: - // The data pipe consumer is aborted. - TransitionState(State::kAborted); - Abort(); - return; - case MOJO_RESULT_SHOULD_WAIT: - // The data pipe is not writable yet. We don't consume data from |body_| - // and write any data in this case. And retry it later. - body_->EndReadData(0); - data_pipe_for_race_network_request_.producer->EndWriteData(0); - data_pipe_for_race_network_request_.watcher.ArmOrNotify(); - return; - } - - // If the data consuming for the fetch handler is canceled, we process the - // consuming only for the race network request. - if (!data_pipe_for_fetch_handler_.watcher.IsWatching()) { - // Copy data and complete read/write process. + if (data_pipe_for_race_network_request_.watcher.IsWatching() && + data_pipe_for_fetch_handler_.watcher.IsWatching()) { + // If both data pipes are watched, write data to both pipes. Cancel writing + // process if one of them is failed. + result = BeginWriteData(data_pipe_for_race_network_request_, &write_buffer, + histogram_prefix); + switch (result) { + case MOJO_RESULT_OK: + // Perhaps writable size may be smaller than the readable size. Choose + // the most smallest size. + num_bytes_to_consume = + std::min(num_bytes_to_consume, + data_pipe_for_race_network_request_.num_write_bytes); + break; + case MOJO_RESULT_FAILED_PRECONDITION: + // The data pipe consumer is aborted. + TransitionState(State::kAborted); + Abort(); + return; + case MOJO_RESULT_SHOULD_WAIT: + // The data pipe is not writable yet. We don't consume data from |body_| + // and write any data in this case. And retry it later. + body_->EndReadData(0); + data_pipe_for_race_network_request_.producer->EndWriteData(0); + data_pipe_for_race_network_request_.watcher.ArmOrNotify(); + return; + } + result = BeginWriteData(data_pipe_for_fetch_handler_, + &write_buffer_for_fetch_handler, histogram_prefix); + switch (result) { + case MOJO_RESULT_OK: + num_bytes_to_consume = std::min( + num_bytes_to_consume, data_pipe_for_fetch_handler_.num_write_bytes); + break; + case MOJO_RESULT_FAILED_PRECONDITION: + TransitionState(State::kAborted); + Abort(); + return; + case MOJO_RESULT_SHOULD_WAIT: + // When the data pipe returns MOJO_RESULT_SHOULD_WAIT, the data pipe is + // not consumed yet but the buffer is full. Stop processing the data + // pipe for the fetch handler side, not to make the data transfer + // process for the race network request side being stuck. + body_->EndReadData(0); + data_pipe_for_race_network_request_.producer->EndWriteData(0); + data_pipe_for_fetch_handler_.producer->EndWriteData(0); + data_pipe_for_fetch_handler_.watcher.Cancel(); + data_pipe_for_race_network_request_.watcher.ArmOrNotify(); + return; + } + // Copy data and call EndWriteData. CompleteWriteData(data_pipe_for_race_network_request_, write_buffer, buffer, num_bytes_to_consume); - CompleteReadData(num_bytes_to_consume); - return; + CompleteWriteData(data_pipe_for_fetch_handler_, + write_buffer_for_fetch_handler, buffer, + num_bytes_to_consume); + } else if (data_pipe_for_race_network_request_.watcher.IsWatching()) { + // If the data pipe for RaceNetworkRequest is the only watcher, don't write + // data to the data pipe for the fetch handler. + result = BeginWriteData(data_pipe_for_race_network_request_, &write_buffer, + histogram_prefix); + switch (result) { + case MOJO_RESULT_OK: + num_bytes_to_consume = + std::min(num_bytes_to_consume, + data_pipe_for_race_network_request_.num_write_bytes); + break; + case MOJO_RESULT_FAILED_PRECONDITION: + TransitionState(State::kAborted); + Abort(); + return; + case MOJO_RESULT_SHOULD_WAIT: + body_->EndReadData(0); + data_pipe_for_race_network_request_.producer->EndWriteData(0); + data_pipe_for_race_network_request_.watcher.ArmOrNotify(); + return; + } + CompleteWriteData(data_pipe_for_race_network_request_, write_buffer, buffer, + num_bytes_to_consume); + } else if (data_pipe_for_fetch_handler_.watcher.IsWatching()) { + // If the data pipe for the fetch handler is the only watcher, don't write + // data to the data pipe for RaceNetworkRequest. + result = BeginWriteData(data_pipe_for_fetch_handler_, + &write_buffer_for_fetch_handler, histogram_prefix); + switch (result) { + case MOJO_RESULT_OK: + num_bytes_to_consume = std::min( + num_bytes_to_consume, data_pipe_for_fetch_handler_.num_write_bytes); + break; + case MOJO_RESULT_FAILED_PRECONDITION: + TransitionState(State::kAborted); + Abort(); + return; + case MOJO_RESULT_SHOULD_WAIT: + body_->EndReadData(0); + data_pipe_for_fetch_handler_.producer->EndWriteData(0); + data_pipe_for_fetch_handler_.watcher.ArmOrNotify(); + return; + } + CompleteWriteData(data_pipe_for_fetch_handler_, + write_buffer_for_fetch_handler, buffer, + num_bytes_to_consume); } - - // Begin the write process for the response of the fetch handler. - result = BeginWriteData(data_pipe_for_fetch_handler_, - &write_buffer_for_fetch_handler, histogram_prefix); - switch (result) { - case MOJO_RESULT_OK: - // Perhaps writable size may be smaller than the readable size. Choose - // the most smallest size. - num_bytes_to_consume = std::min( - num_bytes_to_consume, data_pipe_for_fetch_handler_.num_write_bytes); - break; - case MOJO_RESULT_FAILED_PRECONDITION: - // The data pipe consumer is aborted. - TransitionState(State::kAborted); - Abort(); - return; - case MOJO_RESULT_SHOULD_WAIT: - // When the data pipe returns MOJO_RESULT_SHOULD_WAIT, the data pipe is - // not consumed yet but the buffer is full. Stop processing the data pipe - // for the fetch handler side, not to make the data transfer process for - // the race network request side being stuck. - body_->EndReadData(0); - data_pipe_for_race_network_request_.producer->EndWriteData(0); - data_pipe_for_fetch_handler_.producer->EndWriteData(0); - data_pipe_for_fetch_handler_.watcher.Cancel(); - data_pipe_for_race_network_request_.watcher.ArmOrNotify(); - return; - } - - // Copy data and call EndWriteData. - CompleteWriteData(data_pipe_for_race_network_request_, write_buffer, buffer, - num_bytes_to_consume); - CompleteWriteData(data_pipe_for_fetch_handler_, - write_buffer_for_fetch_handler, buffer, - num_bytes_to_consume); CompleteReadData(num_bytes_to_consume); } @@ -648,6 +685,28 @@ std::make_unique<mojo::DataPipeDrainer>(this, std::move(source)); } +void ServiceWorkerRaceNetworkRequestURLLoaderClient::CancelWriteData( + FetchResponseFrom commit_responsibility) { + switch (commit_responsibility) { + case FetchResponseFrom::kServiceWorker: + data_pipe_for_race_network_request_.watcher.Cancel(); + data_pipe_for_race_network_request_.producer.reset(); + break; + case FetchResponseFrom::kWithoutServiceWorker: + NOTIMPLEMENTED(); + break; + default: + break; + } + // Calls body_consumer_watcher_.ArmOrNotify() to start the data transfer + // again as we create two data pipes and propergate data from the consumer + // handle |body_|. Even though one data pipe is canceled, the data transfer + // process to the other data pipe has to be continued. + if (body_consumer_watcher_.IsWatching()) { + body_consumer_watcher_.ArmOrNotify(); + } +} + ServiceWorkerRaceNetworkRequestURLLoaderClient::MojoResultForUMA ServiceWorkerRaceNetworkRequestURLLoaderClient::ConvertMojoResultForUMA( MojoResult mojo_result) {
diff --git a/content/common/service_worker/race_network_request_url_loader_client.h b/content/common/service_worker/race_network_request_url_loader_client.h index d6fc298..9fbd40f 100644 --- a/content/common/service_worker/race_network_request_url_loader_client.h +++ b/content/common/service_worker/race_network_request_url_loader_client.h
@@ -137,8 +137,17 @@ // handler may not be consumed by the fetch handler itself if the fetch // handler doesn't dispatch the corresponding fetch request. In that case the // pipe may be stacked. So this method provides a way to just consume data. + // + // TODO(crbug.com/1472634): Consider migrating this to CancelWriteData(). void DrainData(mojo::ScopedDataPipeConsumerHandle source); + // Close the corresponding data pipe based on |commit_responsibility|, and + // cancel watching. The data pipe may not be consumed in some cases e.g. the + // fetch handler doesn't dispatch the corresponding fetch request, or + // ServiceWorkerAutoPreload is enabled and the fetch result is not a fallback. + // In those cases the pipe may be stacked due to the lack of consuming. + void CancelWriteData(FetchResponseFrom commit_responsibility); + // Commit and complete the response. Those can be called from |owner_|. void CommitAndCompleteResponseIfDataTransferFinished();
diff --git a/content/public/renderer/render_frame_observer.h b/content/public/renderer/render_frame_observer.h index d1e9ad9..a4bf5bb 100644 --- a/content/public/renderer/render_frame_observer.h +++ b/content/public/renderer/render_frame_observer.h
@@ -9,6 +9,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/read_only_shared_memory_region.h" #include "base/time/time.h" #include "build/build_config.h" @@ -387,7 +388,7 @@ // can null out its pointer. void RenderFrameGone(); - RenderFrame* render_frame_; + raw_ptr<RenderFrame, ExperimentalRenderer> render_frame_; // The routing ID of the associated RenderFrame. int routing_id_; };
diff --git a/content/public/renderer/render_frame_observer_tracker.h b/content/public/renderer/render_frame_observer_tracker.h index 67f059b5..6f063036 100644 --- a/content/public/renderer/render_frame_observer_tracker.h +++ b/content/public/renderer/render_frame_observer_tracker.h
@@ -29,6 +29,7 @@ #include <map> #include "base/lazy_instance.h" +#include "base/memory/raw_ptr.h" namespace content { @@ -55,7 +56,7 @@ } private: - const RenderFrame* render_frame_; + raw_ptr<const RenderFrame, ExperimentalRenderer> render_frame_; static typename base::LazyInstance< std::map<const RenderFrame*, RenderFrameObserverTracker<T>*>>::
diff --git a/content/public/test/test_renderer_host.cc b/content/public/test/test_renderer_host.cc index 9c1c940..a985352 100644 --- a/content/public/test/test_renderer_host.cc +++ b/content/public/test/test_renderer_host.cc
@@ -219,10 +219,18 @@ return TestWebContents::Create(GetBrowserContext(), std::move(instance)); } void RenderViewHostTestHarness::FocusWebContentsOnMainFrame() { + FocusWebContentsOnFrame(web_contents()->GetPrimaryMainFrame()); +} + +void RenderViewHostTestHarness::FocusWebContentsOnFrame( + content::RenderFrameHost* rfh) { TestWebContents* contents = static_cast<TestWebContents*>(web_contents()); - auto* root = contents->GetPrimaryFrameTree().root(); + FrameTreeNode* node = + contents->GetPrimaryFrameTree().FindByID(rfh->GetFrameTreeNodeId()); + CHECK(node); + CHECK_EQ(node->current_frame_host(), rfh); contents->GetPrimaryFrameTree().SetFocusedFrame( - root, root->current_frame_host()->GetSiteInstance()->group()); + node, node->current_frame_host()->GetSiteInstance()->group()); } void RenderViewHostTestHarness::NavigateAndCommit(
diff --git a/content/public/test/test_renderer_host.h b/content/public/test/test_renderer_host.h index 51906ae..9c0a941 100644 --- a/content/public/test/test_renderer_host.h +++ b/content/public/test/test_renderer_host.h
@@ -296,6 +296,10 @@ // rely on the focused frame not being null. void FocusWebContentsOnMainFrame(); + // Sets the focused frame to the `rfh` for tests that rely on the focused + // frame not being null. + void FocusWebContentsOnFrame(content::RenderFrameHost* rfh); + protected: // testing::Test void SetUp() override;
diff --git a/content/renderer/accessibility/aom_content_ax_tree.h b/content/renderer/accessibility/aom_content_ax_tree.h index 002ab014b..5971fd4 100644 --- a/content/renderer/accessibility/aom_content_ax_tree.h +++ b/content/renderer/accessibility/aom_content_ax_tree.h
@@ -7,6 +7,7 @@ #include <stdint.h> +#include "base/memory/raw_ptr.h" #include "third_party/blink/public/platform/web_computed_ax_tree.h" #include "content/renderer/render_frame_impl.h" @@ -55,7 +56,7 @@ blink::WebAOMBoolAttribute, bool* out_param); ui::AXTree tree_; - RenderFrameImpl* render_frame_; + raw_ptr<RenderFrameImpl, ExperimentalRenderer> render_frame_; }; } // namespace content
diff --git a/content/renderer/accessibility/ax_image_annotator.h b/content/renderer/accessibility/ax_image_annotator.h index d21e76c..38d2a057 100644 --- a/content/renderer/accessibility/ax_image_annotator.h +++ b/content/renderer/accessibility/ax_image_annotator.h
@@ -9,6 +9,7 @@ #include <unordered_map> #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/observer_list_types.h" #include "content/common/content_export.h" @@ -121,7 +122,8 @@ std::string GetDocumentUrl() const; // Weak, owns us. - RenderAccessibilityImpl* const render_accessibility_; + const raw_ptr<RenderAccessibilityImpl, ExperimentalRenderer> + render_accessibility_; // A pointer to the automatic image annotation service. mojo::Remote<image_annotation::mojom::Annotator> annotator_;
diff --git a/content/renderer/accessibility/ax_tree_snapshotter_impl.h b/content/renderer/accessibility/ax_tree_snapshotter_impl.h index a0c2042c..194cce53 100644 --- a/content/renderer/accessibility/ax_tree_snapshotter_impl.h +++ b/content/renderer/accessibility/ax_tree_snapshotter_impl.h
@@ -5,6 +5,7 @@ #ifndef CONTENT_RENDERER_ACCESSIBILITY_AX_TREE_SNAPSHOTTER_IMPL_H_ #define CONTENT_RENDERER_ACCESSIBILITY_AX_TREE_SNAPSHOTTER_IMPL_H_ +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "content/public/renderer/render_frame.h" #include "ui/accessibility/ax_tree_update_forward.h" @@ -28,7 +29,7 @@ ui::AXTreeUpdate* accessibility_tree) override; private: - RenderFrameImpl* render_frame_; + raw_ptr<RenderFrameImpl, ExperimentalRenderer> render_frame_; std::unique_ptr<blink::WebAXContext> context_; AXTreeSnapshotterImpl(const AXTreeSnapshotterImpl&) = delete;
diff --git a/content/renderer/accessibility/render_accessibility_impl.cc b/content/renderer/accessibility/render_accessibility_impl.cc index df5e2489..6721441 100644 --- a/content/renderer/accessibility/render_accessibility_impl.cc +++ b/content/renderer/accessibility/render_accessibility_impl.cc
@@ -18,6 +18,7 @@ #include "base/functional/bind.h" #include "base/location.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/histogram_macros.h" #include "base/strings/string_split.h" #include "base/strings/utf_string_conversions.h" @@ -114,7 +115,7 @@ } private: - blink::WebAXContext* context_; + raw_ptr<blink::WebAXContext, ExperimentalRenderer> context_; }; RenderAccessibilityImpl::RenderAccessibilityImpl(
diff --git a/content/renderer/accessibility/render_accessibility_impl.h b/content/renderer/accessibility/render_accessibility_impl.h index a817f88..25746fe 100644 --- a/content/renderer/accessibility/render_accessibility_impl.h +++ b/content/renderer/accessibility/render_accessibility_impl.h
@@ -9,6 +9,7 @@ #include <memory> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" #include "content/common/content_export.h" @@ -272,10 +273,11 @@ static void IgnoreProtocolChecksForTesting(); // The RenderAccessibilityManager that owns us. - RenderAccessibilityManager* render_accessibility_manager_; + raw_ptr<RenderAccessibilityManager, ExperimentalRenderer> + render_accessibility_manager_; // The associated RenderFrameImpl by means of the RenderAccessibilityManager. - RenderFrameImpl* render_frame_; + raw_ptr<RenderFrameImpl, ExperimentalRenderer> render_frame_; // This keeps accessibility enabled as long as it lives. std::unique_ptr<blink::WebAXContext> ax_context_; @@ -286,7 +288,7 @@ using PluginAXTreeSerializer = ui::AXTreeSerializer<const ui::AXNode*, std::vector<const ui::AXNode*>>; std::unique_ptr<PluginAXTreeSerializer> plugin_serializer_; - PluginAXTreeSource* plugin_tree_source_; + raw_ptr<PluginAXTreeSource, ExperimentalRenderer> plugin_tree_source_; // Token to return this token in the next IPC, so that RenderFrameHostImpl // can discard stale data, when the token does not match the expected token.
diff --git a/content/renderer/accessibility/render_accessibility_impl_browsertest.cc b/content/renderer/accessibility/render_accessibility_impl_browsertest.cc index 5690f59..7375de68 100644 --- a/content/renderer/accessibility/render_accessibility_impl_browsertest.cc +++ b/content/renderer/accessibility/render_accessibility_impl_browsertest.cc
@@ -12,6 +12,7 @@ #include "base/containers/adapters.h" #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/strings/utf_string_conversions.h" #include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" @@ -356,7 +357,7 @@ } private: - IPC::TestSink* sink_; + raw_ptr<IPC::TestSink, ExperimentalRenderer> sink_; }; TEST_F(RenderAccessibilityImplTest, SendFullAccessibilityTreeOnReload) {
diff --git a/content/renderer/accessibility/render_accessibility_manager.h b/content/renderer/accessibility/render_accessibility_manager.h index 1c98816..995ad1d 100644 --- a/content/renderer/accessibility/render_accessibility_manager.h +++ b/content/renderer/accessibility/render_accessibility_manager.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "content/common/content_export.h" #include "mojo/public/cpp/bindings/associated_receiver.h" #include "mojo/public/cpp/bindings/pending_associated_receiver.h" @@ -89,7 +90,7 @@ GetOrCreateRemoteRenderAccessibilityHost(); // The RenderFrameImpl that owns us. - RenderFrameImpl* render_frame_; + raw_ptr<RenderFrameImpl, ExperimentalRenderer> render_frame_; // Valid only while an accessibility mode including kWebContents is set. std::unique_ptr<RenderAccessibilityImpl> render_accessibility_;
diff --git a/content/renderer/agent_scheduling_group.cc b/content/renderer/agent_scheduling_group.cc index 489d2cba..a354eb75 100644 --- a/content/renderer/agent_scheduling_group.cc +++ b/content/renderer/agent_scheduling_group.cc
@@ -126,9 +126,9 @@ agent_group_scheduler_->BindInterfaceBroker(std::move(broker_remote)); channel_ = SyncChannel::Create( - /*listener=*/this, /*ipc_task_runner=*/render_thread_.GetIOTaskRunner(), + /*listener=*/this, /*ipc_task_runner=*/render_thread_->GetIOTaskRunner(), /*listener_task_runner=*/agent_group_scheduler_->DefaultTaskRunner(), - render_thread_.GetShutdownEvent()); + render_thread_->GetShutdownEvent()); // TODO(crbug.com/1111231): Add necessary filters. // Currently, the renderer process has these filters: @@ -139,7 +139,7 @@ channel_->Init( ChannelMojo::CreateClientFactory( bootstrap.PassPipe(), - /*ipc_task_runner=*/render_thread_.GetIOTaskRunner(), + /*ipc_task_runner=*/render_thread_->GetIOTaskRunner(), /*proxy_task_runner=*/agent_group_scheduler_->DefaultTaskRunner()), /*create_pipe_now=*/true); } @@ -175,7 +175,7 @@ void AgentSchedulingGroup::OnBadMessageReceived(const IPC::Message& message) { // Not strictly required, since we don't currently do anything with bad // messages in the renderer, but if we ever do then this will "just work". - return ToImpl(render_thread_).OnBadMessageReceived(message); + return ToImpl(*render_thread_).OnBadMessageReceived(message); } void AgentSchedulingGroup::OnAssociatedInterfaceRequest( @@ -195,7 +195,7 @@ std::unique_ptr<IPC::Message> msg(message); if (GetMBIMode() == features::MBIMode::kLegacy) - return render_thread_.Send(msg.release()); + return render_thread_->Send(msg.release()); // This DCHECK is too idealistic for now - messages that are handled by // filters are sent control messages since they are intercepted before @@ -212,7 +212,7 @@ void AgentSchedulingGroup::AddRoute(int32_t routing_id, Listener* listener) { DCHECK(!listener_map_.Lookup(routing_id)); listener_map_.AddWithID(listener, routing_id); - render_thread_.AddRoute(routing_id, listener); + render_thread_->AddRoute(routing_id, listener); // See warning in `GetAssociatedInterface`. // Replay any `GetAssociatedInterface` calls for this route. @@ -230,13 +230,13 @@ IPC::Listener* listener, scoped_refptr<base::SingleThreadTaskRunner> task_runner) { AddRoute(routing_id, listener); - render_thread_.AttachTaskRunnerToRoute(routing_id, std::move(task_runner)); + render_thread_->AttachTaskRunnerToRoute(routing_id, std::move(task_runner)); } void AgentSchedulingGroup::RemoveRoute(int32_t routing_id) { DCHECK(listener_map_.Lookup(routing_id)); listener_map_.Remove(routing_id); - render_thread_.RemoveRoute(routing_id); + render_thread_->RemoveRoute(routing_id); } void AgentSchedulingGroup::DidUnloadRenderFrame( @@ -245,7 +245,7 @@ } void AgentSchedulingGroup::CreateView(mojom::CreateViewParamsPtr params) { - RenderThreadImpl& renderer = ToImpl(render_thread_); + RenderThreadImpl& renderer = ToImpl(*render_thread_); renderer.SetScrollAnimatorEnabled( params->web_preferences.enable_scroll_animator, PassKey());
diff --git a/content/renderer/agent_scheduling_group.h b/content/renderer/agent_scheduling_group.h index 788214f3..ace59bc 100644 --- a/content/renderer/agent_scheduling_group.h +++ b/content/renderer/agent_scheduling_group.h
@@ -8,6 +8,7 @@ #include <map> #include "base/containers/id_map.h" +#include "base/memory/raw_ref.h" #include "base/task/single_thread_task_runner.h" #include "content/common/agent_scheduling_group.mojom.h" #include "content/common/associated_interfaces.mojom.h" @@ -134,7 +135,7 @@ std::unique_ptr<blink::scheduler::WebAgentGroupScheduler> agent_group_scheduler_; - RenderThread& render_thread_; + const raw_ref<RenderThread, ExperimentalRenderer> render_thread_; // Implementation of `mojom::AgentSchedulingGroup`, used for responding to // calls from the (browser-side) `AgentSchedulingGroupHost`.
diff --git a/content/renderer/gin_browsertest.cc b/content/renderer/gin_browsertest.cc index a6e81d1..122147a 100644 --- a/content/renderer/gin_browsertest.cc +++ b/content/renderer/gin_browsertest.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "base/command_line.h" +#include "base/memory/raw_ptr.h" #include "content/public/test/render_view_test.h" #include "gin/handle.h" #include "gin/per_isolate_data.h" @@ -32,7 +33,7 @@ TestGinObject(bool* alive) : alive_(alive) { *alive_ = true; } ~TestGinObject() override { *alive_ = false; } - bool* alive_; + raw_ptr<bool, ExperimentalRenderer> alive_; }; gin::WrapperInfo TestGinObject::kWrapperInfo = { gin::kEmbedderNativeGin };
diff --git a/content/renderer/gpu_benchmarking_extension.cc b/content/renderer/gpu_benchmarking_extension.cc index fa79089..fb3ecfba 100644 --- a/content/renderer/gpu_benchmarking_extension.cc +++ b/content/renderer/gpu_benchmarking_extension.cc
@@ -19,6 +19,7 @@ #include "base/files/file_util.h" #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_split.h" #include "build/build_config.h" @@ -122,10 +123,10 @@ } private: - WebLocalFrame* web_frame_; - WebView* web_view_; - WebFrameWidget* frame_widget_; - cc::LayerTreeHost* layer_tree_host_; + raw_ptr<WebLocalFrame, ExperimentalRenderer> web_frame_; + raw_ptr<WebView, ExperimentalRenderer> web_view_; + raw_ptr<WebFrameWidget, ExperimentalRenderer> frame_widget_; + raw_ptr<cc::LayerTreeHost, ExperimentalRenderer> layer_tree_host_; }; } // namespace blink @@ -261,7 +262,7 @@ context_.Reset(); } - v8::Isolate* isolate_; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_; v8::Persistent<v8::Function> callback_; v8::Persistent<v8::Context> context_; };
diff --git a/content/renderer/java/gin_java_bridge_value_converter_unittest.cc b/content/renderer/java/gin_java_bridge_value_converter_unittest.cc index fa7a8d8..1adfaec 100644 --- a/content/renderer/java/gin_java_bridge_value_converter_unittest.cc +++ b/content/renderer/java/gin_java_bridge_value_converter_unittest.cc
@@ -9,6 +9,7 @@ #include <cmath> #include <memory> +#include "base/memory/raw_ptr.h" #include "base/strings/stringprintf.h" #include "content/common/android/gin_java_bridge_value.h" #include "testing/gtest/include/gtest/gtest.h" @@ -38,7 +39,7 @@ void TearDown() override { context_.Reset(); } - v8::Isolate* isolate_; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_; // Context for the JavaScript in the test. v8::Persistent<v8::Context> context_;
diff --git a/content/renderer/media/android/flinging_renderer_client.h b/content/renderer/media/android/flinging_renderer_client.h index e0f96a6e..4270207 100644 --- a/content/renderer/media/android/flinging_renderer_client.h +++ b/content/renderer/media/android/flinging_renderer_client.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/task/sequenced_task_runner.h" #include "base/task/single_thread_task_runner.h" #include "content/common/content_export.h" @@ -55,7 +56,7 @@ private: scoped_refptr<base::SequencedTaskRunner> media_task_runner_; - media::RendererClient* client_; + raw_ptr<media::RendererClient, ExperimentalRenderer> client_; media::RemotePlayStateChangeCB remote_play_state_change_cb_;
diff --git a/content/renderer/media/android/media_player_renderer_client.h b/content/renderer/media/android/media_player_renderer_client.h index bfd044d..53c774b 100644 --- a/content/renderer/media/android/media_player_renderer_client.h +++ b/content/renderer/media/android/media_player_renderer_client.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/sequenced_task_runner.h" #include "base/task/single_thread_task_runner.h" @@ -84,15 +85,15 @@ // The underlying type should always be a MediaUrlDemuxer, but we only use // methods from the MediaResource interface. - media::MediaResource* media_resource_; + raw_ptr<media::MediaResource, ExperimentalRenderer> media_resource_; // Owns the StreamTexture whose surface is used by MediaPlayerRenderer. // Provides the VideoFrames to |sink_|. media::ScopedStreamTextureWrapper stream_texture_wrapper_; - media::RendererClient* client_; + raw_ptr<media::RendererClient, ExperimentalRenderer> client_; - media::VideoRendererSink* sink_; + raw_ptr<media::VideoRendererSink, ExperimentalRenderer> sink_; scoped_refptr<base::SequencedTaskRunner> media_task_runner_; // Used by |stream_texture_wrapper_| to signal OnFrameAvailable() and to send
diff --git a/content/renderer/media/batching_media_log.h b/content/renderer/media/batching_media_log.h index 9d666229..aece608 100644 --- a/content/renderer/media/batching_media_log.h +++ b/content/renderer/media/batching_media_log.h
@@ -9,6 +9,7 @@ #include <utility> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" @@ -75,7 +76,8 @@ // guarantees provided by MediaLog, since SendQueuedMediaEvents must also // be synchronized with respect to AddEvent. mutable base::Lock lock_; - const base::TickClock* tick_clock_ GUARDED_BY(lock_); + raw_ptr<const base::TickClock, ExperimentalRenderer> tick_clock_ + GUARDED_BY(lock_); base::TimeTicks last_ipc_send_time_ GUARDED_BY(lock_); std::vector<media::MediaLogRecord> queued_media_events_ GUARDED_BY(lock_);
diff --git a/content/renderer/media/batching_media_log_unittest.cc b/content/renderer/media/batching_media_log_unittest.cc index c8e7b80..412ccc2 100644 --- a/content/renderer/media/batching_media_log_unittest.cc +++ b/content/renderer/media/batching_media_log_unittest.cc
@@ -4,6 +4,7 @@ #include "content/renderer/media/batching_media_log.h" +#include "base/memory/raw_ptr.h" #include "base/test/simple_test_tick_clock.h" #include "base/test/task_environment.h" #include "base/test/test_mock_time_task_runner.h" @@ -32,7 +33,7 @@ } private: - BatchingMediaLogTest* test_cls_; + raw_ptr<BatchingMediaLogTest, ExperimentalRenderer> test_cls_; }; class BatchingMediaLogTest : public testing::Test {
diff --git a/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.h b/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.h index 2999bf6..28da729 100644 --- a/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.h +++ b/content/renderer/media/gpu/gpu_video_accelerator_factories_impl.h
@@ -12,6 +12,7 @@ #include <vector> #include "base/callback_list.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/unguessable_token.h" #include "build/build_config.h" @@ -199,7 +200,8 @@ gfx::ColorSpace rendering_color_space_; - gpu::GpuMemoryBufferManager* const gpu_memory_buffer_manager_; + const raw_ptr<gpu::GpuMemoryBufferManager, ExperimentalRenderer> + gpu_memory_buffer_manager_; }; } // namespace content
diff --git a/content/renderer/media/gpu/gpu_video_accelerator_factories_impl_unittest.cc b/content/renderer/media/gpu/gpu_video_accelerator_factories_impl_unittest.cc index 50b9d21..08ffbb2 100644 --- a/content/renderer/media/gpu/gpu_video_accelerator_factories_impl_unittest.cc +++ b/content/renderer/media/gpu/gpu_video_accelerator_factories_impl_unittest.cc
@@ -8,6 +8,7 @@ #include <cstddef> #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/task/single_thread_task_runner.h" #include "base/test/gtest_util.h" @@ -426,7 +427,7 @@ gpu::kNullSurfaceHandle, nullptr, content::kGpuStreamPriorityDefault, gpu::ContextCreationAttribs(), GURL()); ON_CALL(*mock_context_provider_, GetCommandBufferProxy()) - .WillByDefault(Return(gpu_command_buffer_proxy_)); + .WillByDefault(Return(gpu_command_buffer_proxy_.get())); } std::unique_ptr<CodecFactory> CreateCodecFactory( @@ -494,7 +495,8 @@ viz::TestGpuMemoryBufferManager gpu_memory_buffer_manager_; scoped_refptr<TestGpuChannelHost> gpu_channel_host_; scoped_refptr<MockContextProviderCommandBuffer> mock_context_provider_; - gpu::CommandBufferProxyImpl* gpu_command_buffer_proxy_; + raw_ptr<gpu::CommandBufferProxyImpl, ExperimentalRenderer> + gpu_command_buffer_proxy_; FakeVEAProviderImpl fake_vea_provider_;
diff --git a/content/renderer/media/inspector_media_event_handler.h b/content/renderer/media/inspector_media_event_handler.h index 2f0373d..2f33b025f 100644 --- a/content/renderer/media/inspector_media_event_handler.h +++ b/content/renderer/media/inspector_media_event_handler.h
@@ -7,6 +7,7 @@ #include <vector> +#include "base/memory/raw_ptr.h" #include "content/common/content_export.h" #include "content/renderer/media/batching_media_log.h" #include "third_party/blink/public/web/web_media_inspector.h" @@ -25,7 +26,8 @@ void OnWebMediaPlayerDestroyed() override; private: - blink::MediaInspectorContext* inspector_context_; + raw_ptr<blink::MediaInspectorContext, ExperimentalRenderer> + inspector_context_; blink::WebString player_id_; bool video_player_destroyed_ = false; };
diff --git a/content/renderer/media/media_factory.cc b/content/renderer/media/media_factory.cc index aeea0092..aa831a1ea 100644 --- a/content/renderer/media/media_factory.cc +++ b/content/renderer/media/media_factory.cc
@@ -12,6 +12,7 @@ #include "base/command_line.h" #include "base/functional/bind.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/field_trial_params.h" #include "base/metrics/histogram_functions.h" #include "base/strings/string_number_conversions.h" @@ -176,7 +177,7 @@ } private: - blink::WebLocalFrame* frame_; + raw_ptr<blink::WebLocalFrame, ExperimentalRenderer> frame_; }; // Obtains the media ContextProvider and calls the given callback on the same
diff --git a/content/renderer/media/media_factory.h b/content/renderer/media/media_factory.h index f0fab474..7559951 100644 --- a/content/renderer/media/media_factory.h +++ b/content/renderer/media/media_factory.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" #include "build/build_config.h" @@ -160,7 +161,7 @@ // The render frame we're helping. RenderFrameImpl owns this factory, so the // pointer will always be valid. - RenderFrameImpl* render_frame_; + raw_ptr<RenderFrameImpl, ExperimentalRenderer> render_frame_; // The media interface provider attached to this frame, lazily initialized. std::unique_ptr<MediaInterfaceFactory> media_interface_factory_; @@ -171,11 +172,13 @@ // Handy pointer to RenderFrame's browser interface broker. Null until // SetupMojo(). Lifetime matches that of the owning |render_frame_|. Will // always be valid once assigned. - blink::BrowserInterfaceBrokerProxy* interface_broker_ = nullptr; + raw_ptr<blink::BrowserInterfaceBrokerProxy, ExperimentalRenderer> + interface_broker_ = nullptr; // Manages play, pause notifications for WebMediaPlayer implementations; its // lifetime is tied to the RenderFrame via the RenderFrameObserver interface. - media::RendererWebMediaPlayerDelegate* media_player_delegate_ = nullptr; + raw_ptr<media::RendererWebMediaPlayerDelegate, ExperimentalRenderer> + media_player_delegate_ = nullptr; // The CDM and decoder factory attached to this frame, lazily initialized. std::unique_ptr<media::DefaultDecoderFactory> decoder_factory_;
diff --git a/content/renderer/media/media_interface_factory.h b/content/renderer/media/media_interface_factory.h index aa1c67e0..209bf3a 100644 --- a/content/renderer/media/media_interface_factory.h +++ b/content/renderer/media/media_interface_factory.h
@@ -6,6 +6,7 @@ #define CONTENT_RENDERER_MEDIA_MEDIA_INTERFACE_FACTORY_H_ #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/unguessable_token.h" @@ -90,7 +91,8 @@ media::mojom::InterfaceFactory* GetMediaInterfaceFactory(); void OnConnectionError(); - blink::BrowserInterfaceBrokerProxy* interface_broker_; + raw_ptr<blink::BrowserInterfaceBrokerProxy, ExperimentalRenderer> + interface_broker_; mojo::Remote<media::mojom::InterfaceFactory> media_interface_factory_; scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
diff --git a/content/renderer/media/media_permission_dispatcher.h b/content/renderer/media/media_permission_dispatcher.h index e8b14ea..875ae97 100644 --- a/content/renderer/media/media_permission_dispatcher.h +++ b/content/renderer/media/media_permission_dispatcher.h
@@ -10,6 +10,7 @@ #include <map> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "content/renderer/render_frame_impl.h" @@ -97,7 +98,7 @@ // The |RenderFrameImpl| that owns this MediaPermissionDispatcher. It's okay // to hold a raw pointer here because the lifetime of this object is bounded // by the render frame's life (the latter holds a unique pointer to this). - RenderFrameImpl* const render_frame_; + const raw_ptr<RenderFrameImpl, ExperimentalRenderer> render_frame_; // Used to safely post MediaPermission calls for execution on |task_runner_|. base::WeakPtr<MediaPermissionDispatcher> weak_ptr_;
diff --git a/content/renderer/media/renderer_webaudiodevice_impl.h b/content/renderer/media/renderer_webaudiodevice_impl.h index bd589bd..822df1a 100644 --- a/content/renderer/media/renderer_webaudiodevice_impl.h +++ b/content/renderer/media/renderer_webaudiodevice_impl.h
@@ -11,6 +11,7 @@ #include <string> #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/threading/thread_checker.h" #include "content/common/content_export.h" @@ -124,7 +125,8 @@ const blink::WebAudioLatencyHint latency_hint_; // The WebAudio renderer's callback; directs to `AudioDestination::Render()`. - media::AudioRendererSink::RenderCallback* const webaudio_callback_; + const raw_ptr<media::AudioRendererSink::RenderCallback, ExperimentalRenderer> + webaudio_callback_; // To avoid the need for locking, ensure the control methods of the // blink::WebAudioDevice implementation are called on the same thread.
diff --git a/content/renderer/media/renderer_webaudiodevice_impl_unittest.cc b/content/renderer/media/renderer_webaudiodevice_impl_unittest.cc index 3d242e3..a1c885fe 100644 --- a/content/renderer/media/renderer_webaudiodevice_impl_unittest.cc +++ b/content/renderer/media/renderer_webaudiodevice_impl_unittest.cc
@@ -7,6 +7,7 @@ #include <memory> #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/strings/stringprintf.h" #include "base/task/sequenced_task_runner.h" #include "base/test/task_environment.h" @@ -50,7 +51,8 @@ MOCK_METHOD(bool, IsOptimizedForHardwareParameters, (), (override)); MOCK_METHOD(bool, CurrentThreadIsRenderingThread, (), (override)); - media::AudioRendererSink::RenderCallback* callback_ = nullptr; + raw_ptr<media::AudioRendererSink::RenderCallback, ExperimentalRenderer> + callback_ = nullptr; private: ~MockAudioRendererSink() override = default;
diff --git a/content/renderer/media/renderer_webmediaplayer_delegate.h b/content/renderer/media/renderer_webmediaplayer_delegate.h index c9e9496..fb1b850 100644 --- a/content/renderer/media/renderer_webmediaplayer_delegate.h +++ b/content/renderer/media/renderer_webmediaplayer_delegate.h
@@ -11,6 +11,7 @@ #include "base/containers/flat_set.h" #include "base/containers/id_map.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/time/default_tick_clock.h" @@ -134,7 +135,7 @@ // Clock used for calculating when players have become stale. May be // overridden for testing. - const base::TickClock* tick_clock_; + raw_ptr<const base::TickClock, ExperimentalRenderer> tick_clock_; // Players with a video track. base::flat_set<int> players_with_video_;
diff --git a/content/renderer/media/win/dcomp_texture_host.h b/content/renderer/media/win/dcomp_texture_host.h index 7db6626..05b45e1 100644 --- a/content/renderer/media/win/dcomp_texture_host.h +++ b/content/renderer/media/win/dcomp_texture_host.h
@@ -7,6 +7,7 @@ #include <stdint.h> +#include "base/memory/raw_ptr.h" #include "base/task/sequenced_task_runner.h" #include "base/unguessable_token.h" #include "base/win/windows_types.h" @@ -66,8 +67,9 @@ scoped_refptr<gpu::GpuChannelHost> channel_; const int32_t route_id_; - Listener* const listener_; // Raw pointer is safe because the `listener_` - // (DCOMPTextureWrapperImpl) owns `this`. + const raw_ptr<Listener, ExperimentalRenderer> + listener_; // Raw pointer is safe because the `listener_` + // (DCOMPTextureWrapperImpl) owns `this`. // Calls into the DCOMPTexture in the GPU process. mojo::AssociatedRemote<gpu::mojom::DCOMPTexture> texture_remote_;
diff --git a/content/renderer/navigation_client.h b/content/renderer/navigation_client.h index a40c386..0436a07 100644 --- a/content/renderer/navigation_client.h +++ b/content/renderer/navigation_client.h
@@ -5,6 +5,7 @@ #ifndef CONTENT_RENDERER_NAVIGATION_CLIENT_H_ #define CONTENT_RENDERER_NAVIGATION_CLIENT_H_ +#include "base/memory/raw_ptr.h" #include "content/common/frame.mojom.h" #include "content/common/navigation_client.mojom.h" #include "content/public/common/alternative_error_page_override_info.mojom.h" @@ -94,7 +95,7 @@ this}; mojo::Remote<mojom::NavigationRendererCancellationListener> renderer_cancellation_listener_remote_; - RenderFrameImpl* render_frame_; + raw_ptr<RenderFrameImpl, ExperimentalRenderer> render_frame_; // See NavigationState::was_initiated_in_this_frame for details. bool was_initiated_in_this_frame_ = false;
diff --git a/content/renderer/pepper/content_renderer_pepper_host_factory.h b/content/renderer/pepper/content_renderer_pepper_host_factory.h index 36dac8bf..4a53aed 100644 --- a/content/renderer/pepper/content_renderer_pepper_host_factory.h +++ b/content/renderer/pepper/content_renderer_pepper_host_factory.h
@@ -5,6 +5,7 @@ #ifndef CONTENT_RENDERER_PEPPER_CONTENT_RENDERER_PEPPER_HOST_FACTORY_H_ #define CONTENT_RENDERER_PEPPER_CONTENT_RENDERER_PEPPER_HOST_FACTORY_H_ +#include "base/memory/raw_ptr.h" #include "ppapi/host/host_factory.h" #include "ppapi/shared_impl/ppapi_permissions.h" @@ -36,7 +37,7 @@ const ppapi::PpapiPermissions& GetPermissions() const; // Non-owning pointer. - RendererPpapiHostImpl* host_; + raw_ptr<RendererPpapiHostImpl, ExperimentalRenderer> host_; }; } // namespace content
diff --git a/content/renderer/pepper/host_dispatcher_wrapper.h b/content/renderer/pepper/host_dispatcher_wrapper.h index 4981b44..7e2517e 100644 --- a/content/renderer/pepper/host_dispatcher_wrapper.h +++ b/content/renderer/pepper/host_dispatcher_wrapper.h
@@ -5,6 +5,7 @@ #ifndef CONTENT_RENDERER_PEPPER_HOST_DISPATCHER_WRAPPER_H_ #define CONTENT_RENDERER_PEPPER_HOST_DISPATCHER_WRAPPER_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/process/process_handle.h" #include "base/task/single_thread_task_runner.h" @@ -59,7 +60,7 @@ ppapi::proxy::HostDispatcher* dispatcher() { return dispatcher_.get(); } private: - PluginModule* module_; + raw_ptr<PluginModule, ExperimentalRenderer> module_; base::ProcessId peer_pid_;
diff --git a/content/renderer/pepper/message_channel.cc b/content/renderer/pepper/message_channel.cc index b2ab5ec..072bf42 100644 --- a/content/renderer/pepper/message_channel.cc +++ b/content/renderer/pepper/message_channel.cc
@@ -438,7 +438,7 @@ // Take a reference on the PluginInstance. This is because JavaScript code // may delete the plugin, which would destroy the PluginInstance and its // corresponding MessageChannel. - scoped_refptr<PepperPluginInstanceImpl> instance_ref(instance_); + scoped_refptr<PepperPluginInstanceImpl> instance_ref(instance_.get()); while (!js_message_queue_.empty()) { PostMessageToJavaScriptImpl(js_message_queue_.front()); js_message_queue_.pop_front();
diff --git a/content/renderer/pepper/message_channel.h b/content/renderer/pepper/message_channel.h index 0873921..838476d 100644 --- a/content/renderer/pepper/message_channel.h +++ b/content/renderer/pepper/message_channel.h
@@ -9,6 +9,7 @@ #include <map> #include "base/containers/circular_deque.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "content/renderer/pepper/v8_var_converter.h" #include "gin/handle.h" @@ -152,7 +153,7 @@ const std::string& name, void (MessageChannel::*memberFuncPtr)(gin::Arguments* args)); - PepperPluginInstanceImpl* instance_; + raw_ptr<PepperPluginInstanceImpl, ExperimentalRenderer> instance_; // We pass all non-postMessage calls through to the passthrough_object_. // This way, a plugin can use PPB_Class or PPP_Class_Deprecated and also
diff --git a/content/renderer/pepper/mock_renderer_ppapi_host.h b/content/renderer/pepper/mock_renderer_ppapi_host.h index 716bd91..bd394aa 100644 --- a/content/renderer/pepper/mock_renderer_ppapi_host.h +++ b/content/renderer/pepper/mock_renderer_ppapi_host.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "content/public/renderer/renderer_ppapi_host.h" #include "content/renderer/pepper/content_renderer_pepper_host_factory.h" #include "ppapi/host/ppapi_host.h" @@ -65,7 +66,7 @@ ppapi::proxy::ResourceMessageTestSink sink_; ppapi::host::PpapiHost ppapi_host_; - RenderFrame* render_frame_; + raw_ptr<RenderFrame, ExperimentalRenderer> render_frame_; PP_Instance pp_instance_; bool has_user_gesture_;
diff --git a/content/renderer/pepper/pepper_audio_controller.h b/content/renderer/pepper/pepper_audio_controller.h index d9fd0b65..698c3d8 100644 --- a/content/renderer/pepper/pepper_audio_controller.h +++ b/content/renderer/pepper/pepper_audio_controller.h
@@ -7,6 +7,8 @@ #include <set> +#include "base/memory/raw_ptr.h" + namespace content { class PepperAudioOutputHost; @@ -61,7 +63,7 @@ // The Pepper instance which this controller is for. Will be null after // OnPepperInstanceDeleted() is called. - PepperPluginInstanceImpl* instance_; + raw_ptr<PepperPluginInstanceImpl, ExperimentalRenderer> instance_; }; } // namespace content
diff --git a/content/renderer/pepper/pepper_audio_input_host.h b/content/renderer/pepper/pepper_audio_input_host.h index 15296633..53bb93b 100644 --- a/content/renderer/pepper/pepper_audio_input_host.h +++ b/content/renderer/pepper/pepper_audio_input_host.h
@@ -11,6 +11,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/read_only_shared_memory_region.h" #include "base/sync_socket.h" #include "content/renderer/pepper/pepper_device_enumeration_host_helper.h" @@ -66,13 +67,13 @@ void SendOpenReply(int32_t result); // Non-owning pointer. - RendererPpapiHostImpl* renderer_ppapi_host_; + raw_ptr<RendererPpapiHostImpl, ExperimentalRenderer> renderer_ppapi_host_; ppapi::host::ReplyMessageContext open_context_; // Audio input object that we delegate audio IPC through. // We don't own this pointer but are responsible for calling Shutdown on it. - PepperPlatformAudioInput* audio_input_; + raw_ptr<PepperPlatformAudioInput, ExperimentalRenderer> audio_input_; PepperDeviceEnumerationHostHelper enumeration_helper_; };
diff --git a/content/renderer/pepper/pepper_audio_output_host.h b/content/renderer/pepper/pepper_audio_output_host.h index 5db1e6c..dede470 100644 --- a/content/renderer/pepper/pepper_audio_output_host.h +++ b/content/renderer/pepper/pepper_audio_output_host.h
@@ -11,6 +11,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/unsafe_shared_memory_region.h" #include "base/sync_socket.h" #include "content/renderer/pepper/pepper_device_enumeration_host_helper.h" @@ -68,13 +69,13 @@ void SendOpenReply(int32_t result); // Non-owning pointer. - RendererPpapiHostImpl* renderer_ppapi_host_; + raw_ptr<RendererPpapiHostImpl, ExperimentalRenderer> renderer_ppapi_host_; ppapi::host::ReplyMessageContext open_context_; // Audio output object that we delegate audio IPC through. // We don't own this pointer but are responsible for calling Shutdown on it. - PepperPlatformAudioOutputDev* audio_output_; + raw_ptr<PepperPlatformAudioOutputDev, ExperimentalRenderer> audio_output_; PepperDeviceEnumerationHostHelper enumeration_helper_; };
diff --git a/content/renderer/pepper/pepper_camera_device_host.h b/content/renderer/pepper/pepper_camera_device_host.h index d14ac670e..c7c3a681 100644 --- a/content/renderer/pepper/pepper_camera_device_host.h +++ b/content/renderer/pepper/pepper_camera_device_host.h
@@ -9,6 +9,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "content/public/renderer/renderer_ppapi_host.h" #include "content/renderer/pepper/ppb_buffer_impl.h" #include "ppapi/c/pp_size.h" @@ -59,7 +60,7 @@ std::unique_ptr<PepperPlatformCameraDevice> platform_camera_device_; - RendererPpapiHostImpl* renderer_ppapi_host_; + raw_ptr<RendererPpapiHostImpl, ExperimentalRenderer> renderer_ppapi_host_; ppapi::host::ReplyMessageContext open_reply_context_;
diff --git a/content/renderer/pepper/pepper_device_enumeration_host_helper.cc b/content/renderer/pepper/pepper_device_enumeration_host_helper.cc index 0f92786..e3f0ca8 100644 --- a/content/renderer/pepper/pepper_device_enumeration_host_helper.cc +++ b/content/renderer/pepper/pepper_device_enumeration_host_helper.cc
@@ -7,6 +7,7 @@ #include "base/check.h" #include "base/functional/bind.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" #include "ipc/ipc_message.h" @@ -119,7 +120,7 @@ bool requested() const { return requested_; } private: - PepperDeviceEnumerationHostHelper* const owner_; + const raw_ptr<PepperDeviceEnumerationHostHelper, ExperimentalRenderer> owner_; PepperDeviceEnumerationHostHelper::Delegate::DevicesCallback callback_; bool requested_; size_t subscription_id_;
diff --git a/content/renderer/pepper/pepper_device_enumeration_host_helper.h b/content/renderer/pepper/pepper_device_enumeration_host_helper.h index 2ae75e6..ff88f6b 100644 --- a/content/renderer/pepper/pepper_device_enumeration_host_helper.h +++ b/content/renderer/pepper/pepper_device_enumeration_host_helper.h
@@ -11,6 +11,7 @@ #include <vector> #include "base/functional/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "content/common/content_export.h" #include "ppapi/c/dev/ppb_device_ref_dev.h" @@ -106,7 +107,7 @@ const std::vector<ppapi::DeviceRefData>& devices); // Non-owning pointers. - ppapi::host::ResourceHost* resource_host_; + raw_ptr<ppapi::host::ResourceHost, ExperimentalRenderer> resource_host_; base::WeakPtr<Delegate> delegate_; PP_DeviceType_Dev device_type_;
diff --git a/content/renderer/pepper/pepper_file_chooser_host.h b/content/renderer/pepper/pepper_file_chooser_host.h index 19815f2b..7a5adab2 100644 --- a/content/renderer/pepper/pepper_file_chooser_host.h +++ b/content/renderer/pepper/pepper_file_chooser_host.h
@@ -10,6 +10,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "content/common/content_export.h" #include "ppapi/host/host_message_context.h" @@ -61,10 +62,10 @@ const std::vector<int>& browser_ids); // Non-owning pointer. - RendererPpapiHost* renderer_ppapi_host_; + raw_ptr<RendererPpapiHost, ExperimentalRenderer> renderer_ppapi_host_; ppapi::host::ReplyMessageContext reply_context_; - CompletionHandler* handler_; + raw_ptr<CompletionHandler, ExperimentalRenderer> handler_; base::WeakPtrFactory<PepperFileChooserHost> weak_factory_{this}; };
diff --git a/content/renderer/pepper/pepper_file_chooser_host_unittest.cc b/content/renderer/pepper/pepper_file_chooser_host_unittest.cc index 0fe594f..53b96d0f 100644 --- a/content/renderer/pepper/pepper_file_chooser_host_unittest.cc +++ b/content/renderer/pepper/pepper_file_chooser_host_unittest.cc
@@ -12,6 +12,7 @@ #include "base/files/file_path.h" #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/strings/utf_string_conversions.h" #include "build/build_config.h" #include "content/public/test/render_view_test.h" @@ -90,7 +91,7 @@ const base::FilePath& directory_path, EnumerateChosenDirectoryCallback callback) override {} - blink::BrowserInterfaceBrokerProxy* broker_; + raw_ptr<blink::BrowserInterfaceBrokerProxy, ExperimentalRenderer> broker_; mojo::ReceiverSet<FileChooser> receivers_; OpenFileChooserCallback callback_; FileChooserParamsPtr params_;
diff --git a/content/renderer/pepper/pepper_file_system_host.h b/content/renderer/pepper/pepper_file_system_host.h index c034c5c8..220cba5 100644 --- a/content/renderer/pepper/pepper_file_system_host.h +++ b/content/renderer/pepper/pepper_file_system_host.h
@@ -10,6 +10,7 @@ #include <string> #include "base/files/file.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "mojo/public/cpp/bindings/remote.h" #include "ppapi/c/pp_file_info.h" @@ -75,7 +76,7 @@ blink::mojom::FileSystemManager* GetFileSystemManager(); - RendererPpapiHost* renderer_ppapi_host_; + raw_ptr<RendererPpapiHost, ExperimentalRenderer> renderer_ppapi_host_; ppapi::host::ReplyMessageContext reply_context_; PP_FileSystemType type_;
diff --git a/content/renderer/pepper/pepper_graphics_2d_host.h b/content/renderer/pepper/pepper_graphics_2d_host.h index 96db001..7349df2 100644 --- a/content/renderer/pepper/pepper_graphics_2d_host.h +++ b/content/renderer/pepper/pepper_graphics_2d_host.h
@@ -9,6 +9,7 @@ #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "cc/paint/paint_canvas.h" #include "cc/resources/shared_bitmap_id_registrar.h" @@ -192,13 +193,13 @@ const gpu::SyncToken& sync_token, bool lost); - RendererPpapiHost* renderer_ppapi_host_; + raw_ptr<RendererPpapiHost, ExperimentalRenderer> renderer_ppapi_host_; scoped_refptr<PPB_ImageData_Impl> image_data_; // Non-owning pointer to the plugin instance this context is currently bound // to, if any. If the context is currently unbound, this will be NULL. - PepperPluginInstanceImpl* bound_instance_; + raw_ptr<PepperPluginInstanceImpl, ExperimentalRenderer> bound_instance_; // Keeps track of all drawing commands queued before a Flush call. struct QueuedOperation;
diff --git a/content/renderer/pepper/pepper_in_process_resource_creation.h b/content/renderer/pepper/pepper_in_process_resource_creation.h index 4a4f0a4..9ba4fc0 100644 --- a/content/renderer/pepper/pepper_in_process_resource_creation.h +++ b/content/renderer/pepper/pepper_in_process_resource_creation.h
@@ -5,6 +5,7 @@ #ifndef CONTENT_RENDERER_PEPPER_PEPPER_IN_PROCESS_RESOURCE_CREATION_H_ #define CONTENT_RENDERER_PEPPER_PEPPER_IN_PROCESS_RESOURCE_CREATION_H_ +#include "base/memory/raw_ptr.h" #include "content/renderer/pepper/resource_creation_impl.h" #include "ppapi/proxy/connection.h" @@ -67,7 +68,7 @@ private: // Non-owning pointer to the host for the current plugin. - RendererPpapiHostImpl* host_impl_; + raw_ptr<RendererPpapiHostImpl, ExperimentalRenderer> host_impl_; }; } // namespace content
diff --git a/content/renderer/pepper/pepper_in_process_router.h b/content/renderer/pepper/pepper_in_process_router.h index a3f42a89..90ab0cf 100644 --- a/content/renderer/pepper/pepper_in_process_router.h +++ b/content/renderer/pepper/pepper_in_process_router.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "ppapi/c/pp_instance.h" #include "ppapi/proxy/connection.h" @@ -82,7 +83,7 @@ void DispatchPluginMsg(IPC::Message* msg); bool SendToBrowser(IPC::Message* msg); - RendererPpapiHostImpl* host_impl_; + raw_ptr<RendererPpapiHostImpl, ExperimentalRenderer> host_impl_; class Channel; std::unique_ptr<Channel> browser_channel_;
diff --git a/content/renderer/pepper/pepper_media_stream_audio_track_host.h b/content/renderer/pepper/pepper_media_stream_audio_track_host.h index 3caaf94c..3ccbb69f 100644 --- a/content/renderer/pepper/pepper_media_stream_audio_track_host.h +++ b/content/renderer/pepper/pepper_media_stream_audio_track_host.h
@@ -8,6 +8,7 @@ #include <stdint.h> #include "base/containers/circular_deque.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/synchronization/lock.h" #include "base/threading/thread_checker.h" @@ -86,7 +87,7 @@ // host_->buffer_manager() to read some buffer properties. It is safe // because the buffer_manager()'s properties will not be changed after // initialization. - PepperMediaStreamAudioTrackHost* host_; + raw_ptr<PepperMediaStreamAudioTrackHost, ExperimentalRenderer> host_; // The estimated capture time of the first sample frame of audio. This is // used as the timebase to compute the buffer timestamps.
diff --git a/content/renderer/pepper/pepper_media_stream_track_host_base.h b/content/renderer/pepper/pepper_media_stream_track_host_base.h index 665d4cb..55e7d3a 100644 --- a/content/renderer/pepper/pepper_media_stream_track_host_base.h +++ b/content/renderer/pepper/pepper_media_stream_track_host_base.h
@@ -7,6 +7,7 @@ #include <stdint.h> +#include "base/memory/raw_ptr.h" #include "ppapi/host/resource_host.h" #include "ppapi/shared_impl/media_stream_buffer_manager.h" @@ -67,7 +68,7 @@ // Message handlers: int32_t OnHostMsgClose(ppapi::host::HostMessageContext* context); - RendererPpapiHost* host_; + raw_ptr<RendererPpapiHost, ExperimentalRenderer> host_; ppapi::MediaStreamBufferManager buffer_manager_; };
diff --git a/content/renderer/pepper/pepper_platform_audio_input.h b/content/renderer/pepper/pepper_platform_audio_input.h index cf1d691..ca3edd5 100644 --- a/content/renderer/pepper/pepper_platform_audio_input.h +++ b/content/renderer/pepper/pepper_platform_audio_input.h
@@ -8,6 +8,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "ipc/ipc_message.h" #include "media/audio/audio_input_ipc.h" @@ -95,7 +96,7 @@ // The client to notify when the stream is created. THIS MUST ONLY BE // ACCESSED ON THE MAIN THREAD. - PepperAudioInputHost* client_ = nullptr; + raw_ptr<PepperAudioInputHost, ExperimentalRenderer> client_ = nullptr; // Used to send/receive IPC. THIS MUST ONLY BE ACCESSED ON THE // I/O THREAD.
diff --git a/content/renderer/pepper/pepper_platform_audio_output.h b/content/renderer/pepper/pepper_platform_audio_output.h index 0cbd31f..031d295 100644 --- a/content/renderer/pepper/pepper_platform_audio_output.h +++ b/content/renderer/pepper/pepper_platform_audio_output.h
@@ -8,6 +8,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "media/audio/audio_output_ipc.h" #include "third_party/blink/public/common/tokens/tokens.h" @@ -89,7 +90,7 @@ // The client to notify when the stream is created. THIS MUST ONLY BE // ACCESSED ON THE MAIN THREAD. - AudioHelper* client_; + raw_ptr<AudioHelper, ExperimentalRenderer> client_; // Used to send/receive IPC. THIS MUST ONLY BE ACCESSED ON THE // I/O thread except to send messages and get the message loop.
diff --git a/content/renderer/pepper/pepper_platform_audio_output_dev.h b/content/renderer/pepper/pepper_platform_audio_output_dev.h index 773de2fd..bf0c0814 100644 --- a/content/renderer/pepper/pepper_platform_audio_output_dev.h +++ b/content/renderer/pepper/pepper_platform_audio_output_dev.h
@@ -8,6 +8,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/synchronization/waitable_event.h" #include "base/time/time.h" @@ -109,7 +110,7 @@ void NotifyStreamCreationFailed(); - PepperAudioOutputHost* client_; + raw_ptr<PepperAudioOutputHost, ExperimentalRenderer> client_; // Used to send/receive IPC. THIS MUST ONLY BE ACCESSED ON THE // I/O thread except to send messages and get the message loop.
diff --git a/content/renderer/pepper/pepper_platform_camera_device.h b/content/renderer/pepper/pepper_platform_camera_device.h index ba3bfca..061ca1a 100644 --- a/content/renderer/pepper/pepper_platform_camera_device.h +++ b/content/renderer/pepper/pepper_platform_camera_device.h
@@ -9,6 +9,7 @@ #include <string> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/threading/thread_checker.h" #include "base/unguessable_token.h" @@ -55,7 +56,7 @@ base::UnguessableToken session_id_; base::OnceClosure release_device_cb_; - PepperCameraDeviceHost* handler_; + raw_ptr<PepperCameraDeviceHost, ExperimentalRenderer> handler_; // Whether we have a pending request to open a device. We have to make sure // there isn't any pending request before this object goes away.
diff --git a/content/renderer/pepper/pepper_platform_video_capture.h b/content/renderer/pepper/pepper_platform_video_capture.h index 294d7bb..a7c10923 100644 --- a/content/renderer/pepper/pepper_platform_video_capture.h +++ b/content/renderer/pepper/pepper_platform_video_capture.h
@@ -9,6 +9,7 @@ #include <string> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/threading/thread_checker.h" #include "base/time/time.h" @@ -62,7 +63,7 @@ base::OnceClosure release_device_cb_; base::OnceClosure stop_capture_cb_; - PepperVideoCaptureHost* handler_; + raw_ptr<PepperVideoCaptureHost, ExperimentalRenderer> handler_; // Whether we have a pending request to open a device. We have to make sure // there isn't any pending request before this object goes away.
diff --git a/content/renderer/pepper/pepper_plugin_instance_impl.h b/content/renderer/pepper/pepper_plugin_instance_impl.h index 369ec69..8231ac1e 100644 --- a/content/renderer/pepper/pepper_plugin_instance_impl.h +++ b/content/renderer/pepper/pepper_plugin_instance_impl.h
@@ -16,6 +16,7 @@ #include <vector> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "build/build_config.h" @@ -612,7 +613,7 @@ // Whether a given viz::TransferableResource is in use by |texture_layer_|. bool IsTextureInUse(const viz::TransferableResource& resource) const; - RenderFrameImpl* render_frame_; + raw_ptr<RenderFrameImpl, ExperimentalRenderer> render_frame_; scoped_refptr<PluginModule> module_; std::unique_ptr<ppapi::PPP_Instance_Combined> instance_interface_; // If this is the NaCl plugin, we create a new module when we switch to the @@ -628,7 +629,7 @@ float graphics2d_scale_; // NULL until we have been initialized. - blink::WebPluginContainer* container_; + raw_ptr<blink::WebPluginContainer, ExperimentalRenderer> container_; scoped_refptr<cc::TextureLayer> texture_layer_; bool layer_is_hardware_; @@ -661,7 +662,8 @@ // The current device context for painting in 2D or 3D. scoped_refptr<PPB_Graphics3D_Impl> bound_graphics_3d_; - PepperGraphics2DHost* bound_graphics_2d_platform_; + raw_ptr<PepperGraphics2DHost, ExperimentalRenderer> + bound_graphics_2d_platform_; // Whether the plugin has focus or not. bool has_webkit_focus_; @@ -674,10 +676,14 @@ // The plugin-provided interfaces. // When adding PPP interfaces, make sure to reset them in ResetAsProxied. - const PPP_InputEvent* plugin_input_event_interface_; - const PPP_MouseLock* plugin_mouse_lock_interface_; - const PPP_Instance_Private* plugin_private_interface_; - const PPP_TextInput_Dev* plugin_textinput_interface_; + raw_ptr<const PPP_InputEvent, ExperimentalRenderer> + plugin_input_event_interface_; + raw_ptr<const PPP_MouseLock, ExperimentalRenderer> + plugin_mouse_lock_interface_; + raw_ptr<const PPP_Instance_Private, ExperimentalRenderer> + plugin_private_interface_; + raw_ptr<const PPP_TextInput_Dev, ExperimentalRenderer> + plugin_textinput_interface_; // Flags indicating whether we have asked this plugin instance for the // corresponding interfaces, so that we can ask only once. @@ -696,7 +702,7 @@ // // The metafile to save into, which is guaranteed to be valid between a // successful PrintBegin call and a PrintEnd call. - printing::MetafileSkia* metafile_; + raw_ptr<printing::MetafileSkia, ExperimentalRenderer> metafile_; // An array of page ranges. std::vector<PP_PrintPageNumberRange_Dev> ranges_; @@ -704,10 +710,11 @@ scoped_refptr<ppapi::Resource> uma_private_impl_; // The plugin print interface. - const PPP_Printing_Dev* plugin_print_interface_; + raw_ptr<const PPP_Printing_Dev, ExperimentalRenderer> plugin_print_interface_; // The plugin 3D interface. - const PPP_Graphics3D* plugin_graphics_3d_interface_; + raw_ptr<const PPP_Graphics3D, ExperimentalRenderer> + plugin_graphics_3d_interface_; // Contains the cursor if it's set by the plugin. std::unique_ptr<ui::Cursor> cursor_ = @@ -740,7 +747,7 @@ // A pointer to the MessageChannel underlying |message_channel_object_|. It is // only valid as long as |message_channel_object_| is alive. - MessageChannel* message_channel_; + raw_ptr<MessageChannel, ExperimentalRenderer> message_channel_; // Bitmap for crashed plugin. Lazily initialized. cc::PaintImage sad_plugin_image_; @@ -774,7 +781,8 @@ std::vector<std::string> argv_; // Non-owning pointer to the document loader, if any. - blink::WebAssociatedURLLoaderClient* document_loader_; + raw_ptr<blink::WebAssociatedURLLoaderClient, ExperimentalRenderer> + document_loader_; // State for deferring document loads. Used only by external instances. blink::WebURLResponse external_document_response_; std::unique_ptr<ExternalDocumentLoader> external_document_loader_; @@ -785,7 +793,7 @@ // We store the isolate at construction so that we can be sure to use the // Isolate in which this Instance was created when interacting with v8. - v8::Isolate* isolate_; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_; bool is_deleted_;
diff --git a/content/renderer/pepper/pepper_try_catch.h b/content/renderer/pepper/pepper_try_catch.h index f75ef8c..1899b3a2 100644 --- a/content/renderer/pepper/pepper_try_catch.h +++ b/content/renderer/pepper/pepper_try_catch.h
@@ -5,6 +5,7 @@ #ifndef CONTENT_RENDERER_PEPPER_PEPPER_TRY_CATCH_H_ #define CONTENT_RENDERER_PEPPER_PEPPER_TRY_CATCH_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "content/common/content_export.h" #include "ppapi/c/pp_var.h" @@ -47,7 +48,7 @@ // shouldn't keep the instance around for too long. scoped_refptr<PepperPluginInstanceImpl> instance_; - V8VarConverter* var_converter_; + raw_ptr<V8VarConverter, ExperimentalRenderer> var_converter_; }; // Catches var exceptions and emits a v8 exception. @@ -104,7 +105,7 @@ v8::TryCatch try_catch_; - PP_Var* exception_; + raw_ptr<PP_Var, ExperimentalRenderer> exception_; bool exception_is_set_; };
diff --git a/content/renderer/pepper/pepper_url_loader_host.h b/content/renderer/pepper/pepper_url_loader_host.h index 405160da..e3222dd 100644 --- a/content/renderer/pepper/pepper_url_loader_host.h +++ b/content/renderer/pepper/pepper_url_loader_host.h
@@ -10,6 +10,7 @@ #include <memory> #include <vector> +#include "base/memory/raw_ptr.h" #include "ppapi/host/resource_host.h" #include "ppapi/proxy/resource_message_params.h" #include "ppapi/shared_impl/url_request_info_data.h" @@ -102,7 +103,7 @@ void UpdateProgress(); // Non-owning pointer. - RendererPpapiHostImpl* renderer_ppapi_host_; + raw_ptr<RendererPpapiHostImpl, ExperimentalRenderer> renderer_ppapi_host_; // If true, then the plugin instance is a full-frame plugin and we're just // wrapping the main document's loader (i.e. loader_ is null).
diff --git a/content/renderer/pepper/pepper_video_capture_host.cc b/content/renderer/pepper/pepper_video_capture_host.cc index a3db9e5..974ffb56 100644 --- a/content/renderer/pepper/pepper_video_capture_host.cc +++ b/content/renderer/pepper/pepper_video_capture_host.cc
@@ -147,7 +147,7 @@ // TODO(ihf): handle size mismatches gracefully here. return; } - uint8_t* dst = reinterpret_cast<uint8_t*>(buffers_[i].data); + uint8_t* dst = reinterpret_cast<uint8_t*>(buffers_[i].data.get()); static_assert(media::VideoFrame::kYPlane == 0, "y plane should be 0"); static_assert(media::VideoFrame::kUPlane == 1, "u plane should be 1"); static_assert(media::VideoFrame::kVPlane == 2, "v plane should be 2");
diff --git a/content/renderer/pepper/pepper_video_capture_host.h b/content/renderer/pepper/pepper_video_capture_host.h index a6bc2ae..e4575e1 100644 --- a/content/renderer/pepper/pepper_video_capture_host.h +++ b/content/renderer/pepper/pepper_video_capture_host.h
@@ -10,6 +10,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "content/public/renderer/renderer_ppapi_host.h" #include "content/renderer/pepper/pepper_device_enumeration_host_helper.h" @@ -101,11 +102,11 @@ ~BufferInfo(); bool in_use; - void* data; + raw_ptr<void, ExperimentalRenderer> data; scoped_refptr<PPB_Buffer_Impl> buffer; }; - RendererPpapiHostImpl* renderer_ppapi_host_; + raw_ptr<RendererPpapiHostImpl, ExperimentalRenderer> renderer_ppapi_host_; gfx::Size alloc_size_; std::vector<BufferInfo> buffers_;
diff --git a/content/renderer/pepper/pepper_video_decoder_host.h b/content/renderer/pepper/pepper_video_decoder_host.h index 33b50b7..2a39586 100644 --- a/content/renderer/pepper/pepper_video_decoder_host.h +++ b/content/renderer/pepper/pepper_video_decoder_host.h
@@ -13,6 +13,7 @@ #include <set> #include <vector> +#include "base/memory/raw_ptr.h" #include "content/renderer/pepper/video_decoder_shim.h" #include "gpu/command_buffer/common/mailbox.h" #include "ppapi/c/pp_codecs.h" @@ -120,7 +121,7 @@ PendingDecodeList::iterator GetPendingDecodeById(int32_t decode_id); // Non-owning pointer. - RendererPpapiHost* renderer_ppapi_host_; + raw_ptr<RendererPpapiHost, ExperimentalRenderer> renderer_ppapi_host_; media::VideoCodecProfile profile_;
diff --git a/content/renderer/pepper/pepper_video_encoder_host.h b/content/renderer/pepper/pepper_video_encoder_host.h index f1cc205..3d3c75d0 100644 --- a/content/renderer/pepper/pepper_video_encoder_host.h +++ b/content/renderer/pepper/pepper_video_encoder_host.h
@@ -11,6 +11,7 @@ #include <memory> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/shared_memory_mapping.h" #include "base/memory/unsafe_shared_memory_region.h" @@ -133,7 +134,7 @@ uint8_t* ShmHandleToAddress(int32_t buffer_id); // Non-owning pointer. - RendererPpapiHost* renderer_ppapi_host_; + raw_ptr<RendererPpapiHost, ExperimentalRenderer> renderer_ppapi_host_; std::vector<std::unique_ptr<ShmBuffer>> shm_buffers_;
diff --git a/content/renderer/pepper/pepper_webplugin_impl.cc b/content/renderer/pepper/pepper_webplugin_impl.cc index ac620c5..f269f75 100644 --- a/content/renderer/pepper/pepper_webplugin_impl.cc +++ b/content/renderer/pepper/pepper_webplugin_impl.cc
@@ -10,6 +10,7 @@ #include "base/debug/crash_logging.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/strings/utf_string_conversions.h" #include "base/task/single_thread_task_runner.h" #include "content/public/renderer/content_renderer_client.h" @@ -58,7 +59,7 @@ struct PepperWebPluginImpl::InitData { scoped_refptr<PluginModule> module; - RenderFrameImpl* render_frame; + raw_ptr<RenderFrameImpl, ExperimentalRenderer> render_frame; std::vector<std::string> arg_names; std::vector<std::string> arg_values; GURL url;
diff --git a/content/renderer/pepper/pepper_webplugin_impl.h b/content/renderer/pepper/pepper_webplugin_impl.h index 1b8f650..b706ef4 100644 --- a/content/renderer/pepper/pepper_webplugin_impl.h +++ b/content/renderer/pepper/pepper_webplugin_impl.h
@@ -8,6 +8,7 @@ #include <memory> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/task/sequenced_task_runner_helpers.h" #include "mojo/public/cpp/bindings/remote.h" #include "ppapi/c/pp_var.h" @@ -103,7 +104,7 @@ scoped_refptr<PepperPluginInstanceImpl> instance_; gfx::Rect plugin_rect_; PP_Var instance_object_; - blink::WebPluginContainer* container_; + raw_ptr<blink::WebPluginContainer, ExperimentalRenderer> container_; }; } // namespace content
diff --git a/content/renderer/pepper/pepper_websocket_host.h b/content/renderer/pepper/pepper_websocket_host.h index aebef07..d5de9c15 100644 --- a/content/renderer/pepper/pepper_websocket_host.h +++ b/content/renderer/pepper/pepper_websocket_host.h
@@ -10,6 +10,7 @@ #include <memory> #include <queue> +#include "base/memory/raw_ptr.h" #include "ppapi/host/host_message_context.h" #include "ppapi/host/resource_host.h" #include "ppapi/proxy/resource_message_params.h" @@ -64,7 +65,7 @@ const std::string& message); // Non-owning pointer. - RendererPpapiHost* renderer_ppapi_host_; + raw_ptr<RendererPpapiHost, ExperimentalRenderer> renderer_ppapi_host_; // IPC reply parameters. ppapi::host::ReplyMessageContext connect_reply_;
diff --git a/content/renderer/pepper/plugin_object.h b/content/renderer/pepper/plugin_object.h index 4cd43ba78..b6f655d 100644 --- a/content/renderer/pepper/plugin_object.h +++ b/content/renderer/pepper/plugin_object.h
@@ -7,6 +7,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "gin/interceptor.h" #include "gin/wrappable.h" @@ -81,10 +82,10 @@ v8::Local<v8::FunctionTemplate> GetFunctionTemplate(v8::Isolate* isolate, const std::string& name); - PepperPluginInstanceImpl* instance_; + raw_ptr<PepperPluginInstanceImpl, ExperimentalRenderer> instance_; - const PPP_Class_Deprecated* ppp_class_; - void* ppp_class_data_; + raw_ptr<const PPP_Class_Deprecated, ExperimentalRenderer> ppp_class_; + raw_ptr<void, ExperimentalRenderer> ppp_class_data_; v8::StdGlobalValueMap<std::string, v8::FunctionTemplate> template_cache_;
diff --git a/content/renderer/pepper/ppb_audio_impl.h b/content/renderer/pepper/ppb_audio_impl.h index 3a43c1e..1e26227 100644 --- a/content/renderer/pepper/ppb_audio_impl.h +++ b/content/renderer/pepper/ppb_audio_impl.h
@@ -8,6 +8,7 @@ #include <stddef.h> #include <stdint.h> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/unsafe_shared_memory_region.h" #include "base/sync_socket.h" @@ -63,7 +64,7 @@ // PluginDelegate audio object that we delegate audio IPC through. We don't // own this pointer but are responsible for calling Shutdown on it. - PepperPlatformAudioOutput* audio_; + raw_ptr<PepperPlatformAudioOutput, ExperimentalRenderer> audio_; }; } // namespace content
diff --git a/content/renderer/pepper/ppb_buffer_impl.h b/content/renderer/pepper/ppb_buffer_impl.h index 0d07488..f9ea7a46 100644 --- a/content/renderer/pepper/ppb_buffer_impl.h +++ b/content/renderer/pepper/ppb_buffer_impl.h
@@ -7,6 +7,7 @@ #include <stdint.h> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/shared_memory_mapping.h" #include "base/memory/unsafe_shared_memory_region.h" @@ -72,7 +73,7 @@ size_t size() const { return size_; } private: - ppapi::thunk::PPB_Buffer_API* api_; + raw_ptr<ppapi::thunk::PPB_Buffer_API, ExperimentalRenderer> api_; bool needs_unmap_;
diff --git a/content/renderer/pepper/ppb_graphics_3d_impl.cc b/content/renderer/pepper/ppb_graphics_3d_impl.cc index 45b72ff..c3051e0 100644 --- a/content/renderer/pepper/ppb_graphics_3d_impl.cc +++ b/content/renderer/pepper/ppb_graphics_3d_impl.cc
@@ -8,6 +8,7 @@ #include "base/feature_list.h" #include "base/functional/bind.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/histogram_macros.h" #include "base/strings/utf_string_conversions.h" #include "base/task/single_thread_task_runner.h" @@ -152,7 +153,7 @@ enum class State { kDetached, kAttached, kInCompositor }; State state = State::kDetached; - gpu::SharedImageInterface* const sii_; + const raw_ptr<gpu::SharedImageInterface, ExperimentalRenderer> sii_; const gfx::Size size_; gpu::Mailbox mailbox_; // SyncToken to wait on before re-using this color buffer.
diff --git a/content/renderer/pepper/ppb_image_data_impl.h b/content/renderer/pepper/ppb_image_data_impl.h index bef9beb2..14db11c1 100644 --- a/content/renderer/pepper/ppb_image_data_impl.h +++ b/content/renderer/pepper/ppb_image_data_impl.h
@@ -9,6 +9,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/shared_memory_mapping.h" #include "base/memory/unsafe_shared_memory_region.h" #include "ppapi/c/ppb_image_data.h" @@ -215,7 +216,7 @@ bool is_valid() const { return is_valid_; } private: - PPB_ImageData_Impl* image_data_; + raw_ptr<PPB_ImageData_Impl, ExperimentalRenderer> image_data_; bool is_valid_; bool needs_unmap_; };
diff --git a/content/renderer/pepper/ppb_var_deprecated_impl.cc b/content/renderer/pepper/ppb_var_deprecated_impl.cc index fb982343..9dcf336f 100644 --- a/content/renderer/pepper/ppb_var_deprecated_impl.cc +++ b/content/renderer/pepper/ppb_var_deprecated_impl.cc
@@ -10,6 +10,7 @@ #include <limits> #include <memory> +#include "base/memory/raw_ptr.h" #include "content/renderer/pepper/host_globals.h" #include "content/renderer/pepper/message_channel.h" #include "content/renderer/pepper/pepper_plugin_instance_impl.h" @@ -72,8 +73,8 @@ V8VarConverter* converter() { return converter_.get(); } private: - V8ObjectVar* object_var_; - PepperPluginInstanceImpl* instance_; + raw_ptr<V8ObjectVar, ExperimentalRenderer> object_var_; + raw_ptr<PepperPluginInstanceImpl, ExperimentalRenderer> instance_; std::unique_ptr<V8VarConverter> converter_; };
diff --git a/content/renderer/pepper/renderer_ppapi_host_impl.h b/content/renderer/pepper/renderer_ppapi_host_impl.h index df2e96c..61e71c5 100644 --- a/content/renderer/pepper/renderer_ppapi_host_impl.h +++ b/content/renderer/pepper/renderer_ppapi_host_impl.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "content/common/content_export.h" #include "content/public/renderer/renderer_ppapi_host.h" #include "content/renderer/pepper/content_renderer_pepper_host_factory.h" @@ -132,11 +133,11 @@ // make sure it's not trying to spoof another instance. PepperPluginInstanceImpl* GetAndValidateInstance(PP_Instance instance) const; - PluginModule* module_; // Non-owning pointer. + raw_ptr<PluginModule, ExperimentalRenderer> module_; // Non-owning pointer. // The dispatcher we use to send messagse when the plugin is out-of-process. // Will be null when running in-process. Non-owning pointer. - ppapi::proxy::HostDispatcher* dispatcher_; + raw_ptr<ppapi::proxy::HostDispatcher, ExperimentalRenderer> dispatcher_; std::unique_ptr<ppapi::host::PpapiHost> ppapi_host_;
diff --git a/content/renderer/pepper/v8_var_converter_unittest.cc b/content/renderer/pepper/v8_var_converter_unittest.cc index 6acf163..d435425 100644 --- a/content/renderer/pepper/v8_var_converter_unittest.cc +++ b/content/renderer/pepper/v8_var_converter_unittest.cc
@@ -13,6 +13,7 @@ #include "base/check.h" #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/notreached.h" #include "base/run_loop.h" @@ -250,7 +251,7 @@ return TestEqual(expected.get(), actual.get(), false); } - v8::Isolate* isolate_; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_; // Context for the JavaScript in the test. v8::Persistent<v8::Context> context_;
diff --git a/content/renderer/pepper/v8object_var.h b/content/renderer/pepper/v8object_var.h index 91b49b1..7ec14e2 100644 --- a/content/renderer/pepper/v8object_var.h +++ b/content/renderer/pepper/v8object_var.h
@@ -5,6 +5,7 @@ #ifndef CONTENT_RENDERER_PEPPER_V8OBJECT_VAR_H_ #define CONTENT_RENDERER_PEPPER_V8OBJECT_VAR_H_ +#include "base/memory/raw_ptr.h" #include "content/common/content_export.h" #include "ppapi/c/pp_instance.h" #include "ppapi/shared_impl/var.h" @@ -55,7 +56,7 @@ private: ~V8ObjectVar() override; - content::PepperPluginInstanceImpl* instance_; + raw_ptr<content::PepperPluginInstanceImpl, ExperimentalRenderer> instance_; v8::Persistent<v8::Object> v8_object_; };
diff --git a/content/renderer/pepper/video_decoder_shim.h b/content/renderer/pepper/video_decoder_shim.h index b68d9ec2..4b07fe4 100644 --- a/content/renderer/pepper/video_decoder_shim.h +++ b/content/renderer/pepper/video_decoder_shim.h
@@ -13,6 +13,7 @@ #include <vector> #include "base/containers/queue.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/sequenced_task_runner.h" #include "media/base/video_decoder_config.h" @@ -85,7 +86,7 @@ std::unique_ptr<DecoderImpl> decoder_impl_; State state_; - PepperVideoDecoderHost* host_; + raw_ptr<PepperVideoDecoderHost, ExperimentalRenderer> host_; scoped_refptr<base::SequencedTaskRunner> media_task_runner_; scoped_refptr<viz::ContextProviderCommandBuffer> shared_main_thread_context_provider_;
diff --git a/content/renderer/pepper/video_encoder_shim.cc b/content/renderer/pepper/video_encoder_shim.cc index cf7435f..916e9280 100644 --- a/content/renderer/pepper/video_encoder_shim.cc +++ b/content/renderer/pepper/video_encoder_shim.cc
@@ -12,6 +12,7 @@ #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/system/sys_info.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" @@ -127,7 +128,7 @@ ~BitstreamBuffer() {} media::BitstreamBuffer buffer; - uint8_t* mem; + raw_ptr<uint8_t, ExperimentalRenderer> mem; }; void DoEncode();
diff --git a/content/renderer/pepper/video_encoder_shim.h b/content/renderer/pepper/video_encoder_shim.h index 20344f5..76b618a 100644 --- a/content/renderer/pepper/video_encoder_shim.h +++ b/content/renderer/pepper/video_encoder_shim.h
@@ -11,6 +11,7 @@ #include <memory> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/sequenced_task_runner.h" #include "media/base/bitrate.h" @@ -65,7 +66,7 @@ std::unique_ptr<EncoderImpl> encoder_impl_; - PepperVideoEncoderHost* host_; + raw_ptr<PepperVideoEncoderHost, ExperimentalRenderer> host_; // Task doing the encoding. scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc index 6cb3112..47a2bc8e 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc
@@ -26,6 +26,8 @@ #include "base/json/json_writer.h" #include "base/logging.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" +#include "base/memory/raw_ref.h" #include "base/memory/weak_ptr.h" #include "base/metrics/field_trial.h" #include "base/metrics/field_trial_params.h" @@ -683,9 +685,10 @@ bool RewriteFrameSource(WebFrame* frame, WebString* rewritten_link) override { const blink::FrameToken frame_token = frame->GetFrameToken(); - auto it = frame_token_to_local_path_.find(frame_token); - if (it == frame_token_to_local_path_.end()) + auto it = frame_token_to_local_path_->find(frame_token); + if (it == frame_token_to_local_path_->end()) { return false; // This can happen because of https://crbug.com/541354. + } const base::FilePath& local_path = it->second; *rewritten_link = ConvertRelativePathToHtmlAttribute(local_path); @@ -693,9 +696,10 @@ } bool RewriteLink(const WebURL& url, WebString* rewritten_link) override { - auto it = url_to_local_path_.find(GURL(url)); - if (it == url_to_local_path_.end()) + auto it = url_to_local_path_->find(GURL(url)); + if (it == url_to_local_path_->end()) { return false; + } const base::FilePath& local_path = it->second; *rewritten_link = ConvertRelativePathToHtmlAttribute(local_path); @@ -703,8 +707,11 @@ } private: - const base::flat_map<GURL, base::FilePath>& url_to_local_path_; - const base::flat_map<blink::FrameToken, base::FilePath>& + const raw_ref<const base::flat_map<GURL, base::FilePath>, + ExperimentalRenderer> + url_to_local_path_; + const raw_ref<const base::flat_map<blink::FrameToken, base::FilePath>, + ExperimentalRenderer> frame_token_to_local_path_; }; @@ -724,11 +731,11 @@ serialized_resources_uri_digests_(serialized_resources_uri_digests) { DCHECK(serialized_resources_uri_digests_); // Digests must be sorted for binary search. - DCHECK(std::is_sorted(params_.digests_of_uris_to_skip.begin(), - params_.digests_of_uris_to_skip.end())); + DCHECK(std::is_sorted(params_->digests_of_uris_to_skip.begin(), + params_->digests_of_uris_to_skip.end())); // URLs are not duplicated. - DCHECK(base::ranges::adjacent_find(params_.digests_of_uris_to_skip) == - params_.digests_of_uris_to_skip.end()); + DCHECK(base::ranges::adjacent_find(params_->digests_of_uris_to_skip) == + params_->digests_of_uris_to_skip.end()); } MHTMLPartsGenerationDelegate(const MHTMLPartsGenerationDelegate&) = delete; @@ -737,12 +744,13 @@ bool ShouldSkipResource(const WebURL& url) override { std::string digest = - crypto::SHA256HashString(params_.salt + GURL(url).spec()); + crypto::SHA256HashString(params_->salt + GURL(url).spec()); // Skip if the |url| already covered by serialization of an *earlier* frame. - if (std::binary_search(params_.digests_of_uris_to_skip.begin(), - params_.digests_of_uris_to_skip.end(), digest)) + if (std::binary_search(params_->digests_of_uris_to_skip.begin(), + params_->digests_of_uris_to_skip.end(), digest)) { return true; + } // Let's record |url| as being serialized for the *current* frame. auto pair = serialized_resources_uri_digests_->insert(digest); @@ -752,15 +760,17 @@ return false; } - bool UseBinaryEncoding() override { return params_.mhtml_binary_encoding; } + bool UseBinaryEncoding() override { return params_->mhtml_binary_encoding; } bool RemovePopupOverlay() override { - return params_.mhtml_popup_overlay_removal; + return params_->mhtml_popup_overlay_removal; } private: - const mojom::SerializeAsMHTMLParams& params_; - std::unordered_set<std::string>* serialized_resources_uri_digests_; + const raw_ref<const mojom::SerializeAsMHTMLParams, ExperimentalRenderer> + params_; + raw_ptr<std::unordered_set<std::string>, ExperimentalRenderer> + serialized_resources_uri_digests_; }; bool IsHttpPost(const blink::WebURLRequest& request) { @@ -813,7 +823,7 @@ } private: - MHTMLHandleWriter* handle_; + raw_ptr<MHTMLHandleWriter, ExperimentalRenderer> handle_; }; mojo::PendingRemote<blink::mojom::BlobURLToken> CloneBlobURLToken( @@ -1320,7 +1330,7 @@ private: // |RenderFrameImpl| owns |this|, so |frame_| is guaranteed to outlive |this|. // Will be nulled if |Detach()| has been called. - RenderFrameImpl* frame_; + raw_ptr<RenderFrameImpl, ExperimentalRenderer> frame_; bool committing_ = false; WebData data_; std::unique_ptr<blink::WebNavigationParams> navigation_params_; @@ -1857,7 +1867,7 @@ DCHECK(params.browser_interface_broker.is_valid()); browser_interface_broker_proxy_.Bind( std::move(params.browser_interface_broker), - agent_scheduling_group_.agent_group_scheduler().DefaultTaskRunner()); + agent_scheduling_group_->agent_group_scheduler().DefaultTaskRunner()); // Save the pending remote for lazy binding in // `GetRemoteAssociatedInterfaces(). @@ -1866,7 +1876,7 @@ std::move(params.associated_interface_provider); delayed_state_sync_timer_.SetTaskRunner( - agent_scheduling_group_.agent_group_scheduler().DefaultTaskRunner()); + agent_scheduling_group_->agent_group_scheduler().DefaultTaskRunner()); // Must call after binding our own remote interfaces. media_factory_.SetupMojo(); @@ -1901,7 +1911,7 @@ base::trace_event::TraceLog::GetInstance()->RemoveProcessLabel(routing_id_); g_routing_id_frame_map.Get().erase(routing_id_); - agent_scheduling_group_.RemoveRoute(routing_id_); + agent_scheduling_group_->RemoveRoute(routing_id_); } void RenderFrameImpl::Initialize(blink::WebFrame* parent) { @@ -1939,7 +1949,7 @@ frame_receiver_.Bind( std::move(pending_frame_receiver_), GetTaskRunner(blink::TaskType::kInternalNavigationAssociated)); - agent_scheduling_group_.AddFrameRoute( + agent_scheduling_group_->AddFrameRoute( routing_id_, this, GetTaskRunner(blink::TaskType::kInternalNavigationAssociated)); } @@ -2009,7 +2019,7 @@ } bool RenderFrameImpl::Send(IPC::Message* message) { - return agent_scheduling_group_.Send(message); + return agent_scheduling_group_->Send(message); } bool RenderFrameImpl::OnMessageReceived(const IPC::Message& msg) { @@ -2101,7 +2111,7 @@ // itself is asynchronous to ensure that any postMessage calls (which schedule // IPCs as well) made from unload handlers are routed to the browser process // before the corresponding `RenderFrameHostImpl` is torn down. - auto& agent_scheduling_group = agent_scheduling_group_; + auto& agent_scheduling_group = *agent_scheduling_group_; blink::LocalFrameToken frame_token = frame_->GetLocalFrameToken(); scoped_refptr<base::SingleThreadTaskRunner> task_runner = GetTaskRunner(blink::TaskType::kInternalPostMessageForwarding); @@ -2463,7 +2473,7 @@ pending_resource_load_info_notifier) { resource_load_info_notifier_receivers_.Add( this, std::move(pending_resource_load_info_notifier), - agent_scheduling_group_.agent_group_scheduler().DefaultTaskRunner()); + agent_scheduling_group_->agent_group_scheduler().DefaultTaskRunner()); } void RenderFrameImpl::GetInterfaceProvider( @@ -3280,7 +3290,7 @@ return media_factory_.CreateMediaPlayer( source, client, inspector_context, encrypted_client, initial_cdm, sink_id, GetLocalRootWebFrameWidget()->GetFrameSinkId(), *settings, - agent_scheduling_group_.agent_group_scheduler().CompositorTaskRunner(), + agent_scheduling_group_->agent_group_scheduler().CompositorTaskRunner(), std::move(compositor_worker_task_runner)); } @@ -3318,7 +3328,7 @@ resource_load_info_notifier_receivers_.Add( this, pending_resource_load_info_notifier.InitWithNewPipeAndPassReceiver(), - agent_scheduling_group_.agent_group_scheduler().DefaultTaskRunner()); + agent_scheduling_group_->agent_group_scheduler().DefaultTaskRunner()); std::vector<std::string> cors_exempt_header_list = RenderThreadImpl::current()->cors_exempt_header_list(); @@ -3371,7 +3381,7 @@ resource_load_info_notifier_receivers_.Add( this, pending_resource_load_info_notifier.InitWithNewPipeAndPassReceiver(), - agent_scheduling_group_.agent_group_scheduler().DefaultTaskRunner()); + agent_scheduling_group_->agent_group_scheduler().DefaultTaskRunner()); scoped_refptr<blink::WebDedicatedOrSharedWorkerFetchContext> web_dedicated_or_shared_worker_fetch_context = @@ -3525,7 +3535,7 @@ // Create the RenderFrame and WebLocalFrame, linking the two. RenderFrameImpl* child_render_frame = RenderFrameImpl::Create( - agent_scheduling_group_, child_routing_id, + *agent_scheduling_group_, child_routing_id, std::move(pending_frame_receiver), std::move(browser_interface_broker), std::move(associated_interface_provider), devtools_frame_token); child_render_frame->loader_factories_ = CloneLoaderFactories(); @@ -3750,7 +3760,7 @@ // BrowserInterfaceBroker interface request is bound by the // RenderFrameHostImpl. browser_interface_broker_receiver = browser_interface_broker_proxy_.Reset( - agent_scheduling_group_.agent_group_scheduler().DefaultTaskRunner()); + agent_scheduling_group_->agent_group_scheduler().DefaultTaskRunner()); // blink::AudioOutputIPCFactory::io_task_runner_ may be null in tests. auto& factory = blink::AudioOutputIPCFactory::GetInstance(); @@ -4503,7 +4513,7 @@ if (!audio_input_stream_factory_) GetBrowserInterfaceBroker()->GetInterface( audio_input_stream_factory_.BindNewPipeAndPassReceiver( - agent_scheduling_group_.agent_group_scheduler() + agent_scheduling_group_->agent_group_scheduler() .DefaultTaskRunner())); return audio_input_stream_factory_.get(); } @@ -6228,7 +6238,7 @@ blink::scheduler::WebAgentGroupScheduler& RenderFrameImpl::GetAgentGroupScheduler() { - return agent_scheduling_group_.agent_group_scheduler(); + return agent_scheduling_group_->agent_group_scheduler(); } url::Origin RenderFrameImpl::GetSecurityOriginOfTopFrame() { @@ -6456,7 +6466,7 @@ view_params->hidden = is_background_tab; view_params->never_composited = never_composited; - WebView* web_view = agent_scheduling_group_.CreateWebView( + WebView* web_view = agent_scheduling_group_->CreateWebView( std::move(view_params), /*was_created_by_renderer=*/true, base_url);
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h index 3925444..9afa054 100644 --- a/content/renderer/render_frame_impl.h +++ b/content/renderer/render_frame_impl.h
@@ -20,6 +20,8 @@ #include "base/files/file_path.h" #include "base/functional/callback.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" +#include "base/memory/raw_ref.h" #include "base/memory/read_only_shared_memory_region.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" @@ -261,7 +263,7 @@ CreateParams(CreateParams&&); CreateParams& operator=(CreateParams&&); - AgentSchedulingGroup* agent_scheduling_group; + raw_ptr<AgentSchedulingGroup, ExperimentalRenderer> agent_scheduling_group; int32_t routing_id; mojo::PendingAssociatedReceiver<mojom::Frame> frame_receiver; mojo::PendingRemote<blink::mojom::BrowserInterfaceBroker> @@ -823,7 +825,7 @@ private: base::WeakPtr<RenderFrameImpl> weak_frame_; - T* scoped_variable_; + raw_ptr<T, ExperimentalRenderer> scoped_variable_; T original_value_; }; @@ -1141,10 +1143,11 @@ // constructor until BindToFrame() is called, and it is null after // FrameDetached() is called until destruction (which is asynchronous in the // case of the main frame, but not subframes). - blink::WebNavigationControl* frame_ = nullptr; + raw_ptr<blink::WebNavigationControl, ExperimentalRenderer> frame_ = nullptr; // The `AgentSchedulingGroup` this frame is associated with. - AgentSchedulingGroup& agent_scheduling_group_; + const raw_ref<AgentSchedulingGroup, ExperimentalRenderer> + agent_scheduling_group_; // False until Initialize() is run, to avoid actions before the frame's // observers are created. @@ -1172,7 +1175,7 @@ private: blink::WebLocalFrame* GetWebFrame() const; - RenderFrameImpl* render_frame_; + raw_ptr<RenderFrameImpl, ExperimentalRenderer> render_frame_; }; UniqueNameFrameAdapter unique_name_frame_adapter_; blink::UniqueNameHelper unique_name_helper_; @@ -1258,7 +1261,8 @@ PepperPluginSet active_pepper_instances_; // Whether or not the focus is on a PPAPI plugin - PepperPluginInstanceImpl* focused_pepper_plugin_; + raw_ptr<PepperPluginInstanceImpl, ExperimentalRenderer> + focused_pepper_plugin_; mojo::AssociatedRemote<mojom::PepperHost> pepper_host_remote_; #endif
diff --git a/content/renderer/render_frame_impl_browsertest.cc b/content/renderer/render_frame_impl_browsertest.cc index fabf19e..8cc752d 100644 --- a/content/renderer/render_frame_impl_browsertest.cc +++ b/content/renderer/render_frame_impl_browsertest.cc
@@ -11,6 +11,7 @@ #include "base/debug/leak_annotations.h" #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" @@ -212,7 +213,7 @@ } private: - TestRenderFrame* frame_; + raw_ptr<TestRenderFrame, ExperimentalRenderer> frame_; mojo::AssociatedRemote<blink::mojom::Widget> widget_remote_; }; @@ -768,7 +769,7 @@ private: void OnFrameCreated(TestRenderFrame* frame) { - ASSERT_EQ(nullptr, frame_); + ASSERT_EQ(nullptr, frame_.get()); frame_ = frame; frame_commit_waiter_.emplace(frame); @@ -789,8 +790,9 @@ EXPECT_TRUE(frame->GetWebFrame()->GetCurrentHistoryItem().IsNull()); } - FrameCreationObservingRendererClient* frame_creation_observer_; - TestRenderFrame* frame_ = nullptr; + raw_ptr<FrameCreationObservingRendererClient, ExperimentalRenderer> + frame_creation_observer_; + raw_ptr<TestRenderFrame, ExperimentalRenderer> frame_ = nullptr; absl::optional<std::string> html_override_for_first_load_; GURL first_committed_url_; @@ -883,7 +885,8 @@ private: // Owned by RenderViewTest. - FrameCreationObservingRendererClient* frame_creation_observer_ = nullptr; + raw_ptr<FrameCreationObservingRendererClient, ExperimentalRenderer> + frame_creation_observer_ = nullptr; base::test::ScopedFeatureList scoped_feature_list_; };
diff --git a/content/renderer/render_thread_impl_browsertest.cc b/content/renderer/render_thread_impl_browsertest.cc index a1c6153..3a3b5f60 100644 --- a/content/renderer/render_thread_impl_browsertest.cc +++ b/content/renderer/render_thread_impl_browsertest.cc
@@ -17,6 +17,7 @@ #include "base/functional/callback.h" #include "base/location.h" #include "base/memory/discardable_memory.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/field_trial.h" #include "base/run_loop.h" #include "base/strings/string_number_conversions.h" @@ -280,12 +281,13 @@ std::unique_ptr<RenderProcess> process_; scoped_refptr<QuitOnTestMsgFilter> test_msg_filter_; - blink::scheduler::WebMockThreadScheduler* main_thread_scheduler_; + raw_ptr<blink::scheduler::WebMockThreadScheduler, ExperimentalRenderer> + main_thread_scheduler_; // RenderThreadImpl doesn't currently support a proper shutdown sequence // and it's okay when we're running in multi-process mode because renderers // get killed by the OS. Memory leaks aren't nice but it's test-only. - RenderThreadImpl* thread_; + raw_ptr<RenderThreadImpl, ExperimentalRenderer> thread_; std::unique_ptr<base::RunLoop> run_loop_; }; @@ -456,7 +458,8 @@ base::Unretained(this))); } - gpu::GpuMemoryBufferManager* memory_buffer_manager_ = nullptr; + raw_ptr<gpu::GpuMemoryBufferManager, ExperimentalRenderer> + memory_buffer_manager_ = nullptr; }; // https://crbug.com/652531
diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc index b6e20cd..a00678d2 100644 --- a/content/renderer/render_view_browsertest.cc +++ b/content/renderer/render_view_browsertest.cc
@@ -16,6 +16,7 @@ #include "base/json/json_reader.h" #include "base/json/json_writer.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" @@ -311,7 +312,7 @@ } blink::mojom::CommonNavigationParamsPtr common_params_; - const RenderFrameImpl* frame_; + raw_ptr<const RenderFrameImpl, ExperimentalRenderer> frame_; }; } // namespace
diff --git a/content/renderer/renderer_blink_platform_impl.h b/content/renderer/renderer_blink_platform_impl.h index 4813c8ce4..84c36d4 100644 --- a/content/renderer/renderer_blink_platform_impl.h +++ b/content/renderer/renderer_blink_platform_impl.h
@@ -12,6 +12,7 @@ #include <string> #include "base/containers/id_map.h" +#include "base/memory/raw_ptr.h" #include "base/synchronization/lock.h" #include "base/synchronization/waitable_event.h" #include "base/task/sequenced_task_runner.h" @@ -248,7 +249,8 @@ bool is_locked_to_site_; // NOT OWNED - blink::scheduler::WebThreadScheduler* main_thread_scheduler_; + raw_ptr<blink::scheduler::WebThreadScheduler, ExperimentalRenderer> + main_thread_scheduler_; // Event that signals `io_thread_id_` is set and ready to be read. mutable base::WaitableEvent io_thread_id_ready_event_;
diff --git a/content/renderer/renderer_main_platform_delegate.h b/content/renderer/renderer_main_platform_delegate.h index 20fd3bf..bd558a4 100644 --- a/content/renderer/renderer_main_platform_delegate.h +++ b/content/renderer/renderer_main_platform_delegate.h
@@ -5,6 +5,7 @@ #ifndef CONTENT_RENDERER_RENDERER_MAIN_PLATFORM_DELEGATE_H_ #define CONTENT_RENDERER_RENDERER_MAIN_PLATFORM_DELEGATE_H_ +#include "base/memory/raw_ref.h" #include "build/build_config.h" #if BUILDFLAG(IS_WIN) @@ -37,7 +38,7 @@ private: #if BUILDFLAG(IS_WIN) - const MainFunctionParams& parameters_; + const raw_ref<const MainFunctionParams, ExperimentalRenderer> parameters_; #endif };
diff --git a/content/renderer/renderer_main_platform_delegate_win.cc b/content/renderer/renderer_main_platform_delegate_win.cc index 7a493ad..e7b8caa9 100644 --- a/content/renderer/renderer_main_platform_delegate_win.cc +++ b/content/renderer/renderer_main_platform_delegate_win.cc
@@ -36,7 +36,7 @@ } void RendererMainPlatformDelegate::PlatformInitialize() { - const base::CommandLine& command_line = *parameters_.command_line; + const base::CommandLine& command_line = *parameters_->command_line; // Be mindful of what resources you acquire here. They can be used by // malicious code if the renderer gets compromised. @@ -62,7 +62,7 @@ bool RendererMainPlatformDelegate::EnableSandbox() { sandbox::TargetServices* target_services = - parameters_.sandbox_info->target_services; + parameters_->sandbox_info->target_services; if (target_services) { sandbox::policy::WarmupRandomnessInfrastructure();
diff --git a/content/renderer/service_worker/service_worker_context_client.cc b/content/renderer/service_worker/service_worker_context_client.cc index 2ba3adaf..2e7a0f12 100644 --- a/content/renderer/service_worker/service_worker_context_client.cc +++ b/content/renderer/service_worker/service_worker_context_client.cc
@@ -83,7 +83,7 @@ // worker thread. struct ServiceWorkerContextClient::WorkerContextData { explicit WorkerContextData(ServiceWorkerContextClient* owner) - : weak_factory(owner), proxy_weak_factory(owner->proxy_) {} + : weak_factory(owner), proxy_weak_factory(owner->proxy_.get()) {} ~WorkerContextData() { DCHECK(thread_checker.CalledOnValidThread()); }
diff --git a/content/renderer/service_worker/service_worker_context_client.h b/content/renderer/service_worker/service_worker_context_client.h index 6c055ded..8b3953d 100644 --- a/content/renderer/service_worker/service_worker_context_client.h +++ b/content/renderer/service_worker/service_worker_context_client.h
@@ -15,6 +15,7 @@ #include "base/containers/id_map.h" #include "base/functional/callback.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/time/time.h" #include "ipc/ipc_listener.h" @@ -234,7 +235,7 @@ scoped_refptr<base::SequencedTaskRunner> worker_task_runner_; // Not owned; |this| is destroyed when |proxy_| becomes invalid. - blink::WebServiceWorkerContextProxy* proxy_; + raw_ptr<blink::WebServiceWorkerContextProxy, ExperimentalRenderer> proxy_; // These Mojo objects are bound on the worker thread. mojo::PendingReceiver<blink::mojom::ServiceWorker> @@ -269,7 +270,7 @@ service_worker_provider_info_; // Must be accessed on the initiator thread only. - EmbeddedWorkerInstanceClientImpl* owner_; + raw_ptr<EmbeddedWorkerInstanceClientImpl, ExperimentalRenderer> owner_; // Initialized on the worker thread in WorkerContextStarted and // destructed on the worker thread in WillDestroyWorkerContext.
diff --git a/content/renderer/service_worker/service_worker_network_provider_for_frame.cc b/content/renderer/service_worker/service_worker_network_provider_for_frame.cc index 6b518318e..18c10848 100644 --- a/content/renderer/service_worker/service_worker_network_provider_for_frame.cc +++ b/content/renderer/service_worker/service_worker_network_provider_for_frame.cc
@@ -8,6 +8,7 @@ #include "base/feature_list.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "content/public/common/content_features.h" #include "content/public/common/origin_util.h" #include "content/public/renderer/render_frame_observer.h" @@ -56,7 +57,7 @@ } private: - ServiceWorkerNetworkProviderForFrame* owner_; + raw_ptr<ServiceWorkerNetworkProviderForFrame, ExperimentalRenderer> owner_; }; // static
diff --git a/content/renderer/service_worker/service_worker_subresource_loader.cc b/content/renderer/service_worker/service_worker_subresource_loader.cc index c6ad67d..1defa76f 100644 --- a/content/renderer/service_worker/service_worker_subresource_loader.cc +++ b/content/renderer/service_worker/service_worker_subresource_loader.cc
@@ -9,6 +9,7 @@ #include "base/feature_list.h" #include "base/functional/bind.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" @@ -190,7 +191,7 @@ void OnAborted() override { owner_->OnBodyReadingComplete(net::ERR_ABORTED); } private: - ServiceWorkerSubresourceLoader* owner_; + raw_ptr<ServiceWorkerSubresourceLoader, ExperimentalRenderer> owner_; mojo::Receiver<blink::mojom::ServiceWorkerStreamCallback> receiver_; }; @@ -766,6 +767,13 @@ case FetchResponseFrom::kAutoPreloadHandlingFallback: NOTREACHED_NORETURN(); } + + // Cancel the in-flight request processing for the fallback. + if (commit_responsibility() == FetchResponseFrom::kServiceWorker && + race_network_request_loader_client_) { + race_network_request_loader_client_->CancelWriteData( + commit_responsibility()); + } RecordFetchResponseFrom(); // A response with status code 0 is Blink telling us to respond with network
diff --git a/content/renderer/service_worker/service_worker_subresource_loader_unittest.cc b/content/renderer/service_worker/service_worker_subresource_loader_unittest.cc index af21f9dc..cbcd81d 100644 --- a/content/renderer/service_worker/service_worker_subresource_loader_unittest.cc +++ b/content/renderer/service_worker/service_worker_subresource_loader_unittest.cc
@@ -11,6 +11,7 @@ #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" @@ -498,7 +499,7 @@ private: int get_controller_service_worker_count_ = 0; - FakeControllerServiceWorker* fake_controller_; + raw_ptr<FakeControllerServiceWorker, ExperimentalRenderer> fake_controller_; mojo::ReceiverSet<blink::mojom::ServiceWorkerContainerHost> receivers_; };
diff --git a/content/renderer/service_worker/web_service_worker_provider_impl.h b/content/renderer/service_worker/web_service_worker_provider_impl.h index 435a61f7..48245c4 100644 --- a/content/renderer/service_worker/web_service_worker_provider_impl.h +++ b/content/renderer/service_worker/web_service_worker_provider_impl.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "content/common/content_export.h" @@ -100,7 +101,8 @@ // |provider_client_| is implemented by blink::SWContainer and this pointer's // nullified when its execution context is destroyed. (|this| is attached to // the same context, but could live longer until the context is GC'ed) - blink::WebServiceWorkerProviderClient* provider_client_; + raw_ptr<blink::WebServiceWorkerProviderClient, ExperimentalRenderer> + provider_client_; base::WeakPtrFactory<WebServiceWorkerProviderImpl> weak_factory_{this}; };
diff --git a/content/renderer/skia_benchmarking_extension.cc b/content/renderer/skia_benchmarking_extension.cc index 4abfb83..bd40e8d 100644 --- a/content/renderer/skia_benchmarking_extension.cc +++ b/content/renderer/skia_benchmarking_extension.cc
@@ -10,6 +10,7 @@ #include <utility> #include "base/base64.h" +#include "base/memory/raw_ref.h" #include "base/time/time.h" #include "base/values.h" #include "cc/base/math_util.h" @@ -102,10 +103,10 @@ size_t count) : canvas_(canvas), playback_count_(count) {} - bool abort() override { return canvas_.CommandCount() > playback_count_; } + bool abort() override { return canvas_->CommandCount() > playback_count_; } private: - const skia::BenchmarkingCanvas& canvas_; + const raw_ref<const skia::BenchmarkingCanvas, ExperimentalRenderer> canvas_; size_t playback_count_; };
diff --git a/content/renderer/stream_texture_host_android.h b/content/renderer/stream_texture_host_android.h index cc279958..a87de1c 100644 --- a/content/renderer/stream_texture_host_android.h +++ b/content/renderer/stream_texture_host_android.h
@@ -7,6 +7,7 @@ #include <stdint.h> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "content/common/content_export.h" #include "gpu/ipc/common/gpu_channel.mojom.h" @@ -79,7 +80,7 @@ absl::optional<gpu::VulkanYCbCrInfo> ycbcr_info) override; int32_t route_id_; - Listener* listener_; + raw_ptr<Listener, ExperimentalRenderer> listener_; scoped_refptr<gpu::GpuChannelHost> channel_; uint32_t release_id_ = 0;
diff --git a/content/renderer/v8_value_converter_impl.cc b/content/renderer/v8_value_converter_impl.cc index 0142e54..2c7d0f8 100644 --- a/content/renderer/v8_value_converter_impl.cc +++ b/content/renderer/v8_value_converter_impl.cc
@@ -17,6 +17,7 @@ #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/values.h" #include "v8/include/v8-array-buffer.h" #include "v8/include/v8-container.h" @@ -83,7 +84,7 @@ } private: - FromV8ValueState* state_; + raw_ptr<FromV8ValueState, ExperimentalRenderer> state_; }; explicit FromV8ValueState(bool avoid_identity_hash_for_testing) @@ -176,7 +177,7 @@ private: typedef std::multimap<int, v8::Local<v8::Object> > HashToHandleMap; - V8ValueConverterImpl::FromV8ValueState* state_; + raw_ptr<V8ValueConverterImpl::FromV8ValueState, ExperimentalRenderer> state_; v8::Local<v8::Object> value_; bool is_valid_; }; @@ -241,8 +242,8 @@ v8::Local<v8::Object> creation_context, base::ValueView value) const { struct Visitor { - const V8ValueConverterImpl* converter; - v8::Isolate* isolate; + raw_ptr<const V8ValueConverterImpl, ExperimentalRenderer> converter; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate; v8::Local<v8::Object> creation_context; v8::Local<v8::Value> operator()(absl::monostate value) {
diff --git a/content/renderer/v8_value_converter_impl.h b/content/renderer/v8_value_converter_impl.h index e42a0886..dffb066 100644 --- a/content/renderer/v8_value_converter_impl.h +++ b/content/renderer/v8_value_converter_impl.h
@@ -7,6 +7,7 @@ #include <map> +#include "base/memory/raw_ptr.h" #include "base/values.h" #include "content/common/content_export.h" #include "content/public/renderer/v8_value_converter.h" @@ -88,7 +89,7 @@ bool avoid_identity_hash_for_testing_; // Strategy object that changes the converter's behavior. - Strategy* strategy_; + raw_ptr<Strategy, ExperimentalRenderer> strategy_; }; } // namespace content
diff --git a/content/renderer/v8_value_converter_impl_unittest.cc b/content/renderer/v8_value_converter_impl_unittest.cc index 13041b15..c46d1451 100644 --- a/content/renderer/v8_value_converter_impl_unittest.cc +++ b/content/renderer/v8_value_converter_impl_unittest.cc
@@ -11,6 +11,7 @@ #include <memory> #include "base/containers/span.h" +#include "base/memory/raw_ptr.h" #include "base/test/task_environment.h" #include "base/test/values_test_util.h" #include "base/values.h" @@ -53,7 +54,7 @@ ~ScopedAvoidIdentityHashForTesting(); private: - content::V8ValueConverterImpl* converter_; + raw_ptr<content::V8ValueConverterImpl, ExperimentalRenderer> converter_; }; ScopedAvoidIdentityHashForTesting::ScopedAvoidIdentityHashForTesting( @@ -261,7 +262,7 @@ base::test::TaskEnvironment task_environment_; gin::IsolateHolder isolate_holder_; v8::Isolate::Scope isolate_scope_; - v8::Isolate* isolate_ = nullptr; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_ = nullptr; // Context for the JavaScript in the test. v8::Persistent<v8::Context> context_;
diff --git a/content/renderer/worker/dedicated_worker_host_factory_client.h b/content/renderer/worker/dedicated_worker_host_factory_client.h index ba036ed..ea3a021 100644 --- a/content/renderer/worker/dedicated_worker_host_factory_client.h +++ b/content/renderer/worker/dedicated_worker_host_factory_client.h
@@ -6,6 +6,7 @@ #define CONTENT_RENDERER_WORKER_DEDICATED_WORKER_HOST_FACTORY_CLIENT_H_ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/receiver.h" @@ -89,7 +90,7 @@ void OnScriptLoadStartFailed() override; // |worker_| owns |this|. - blink::WebDedicatedWorker* worker_; + raw_ptr<blink::WebDedicatedWorker, ExperimentalRenderer> worker_; scoped_refptr<blink::ChildURLLoaderFactoryBundle> subresource_loader_factory_bundle_;
diff --git a/content/renderer/worker/worker_thread_registry_unittest.cc b/content/renderer/worker/worker_thread_registry_unittest.cc index adc5ada..3cc98203 100644 --- a/content/renderer/worker/worker_thread_registry_unittest.cc +++ b/content/renderer/worker/worker_thread_registry_unittest.cc
@@ -4,6 +4,7 @@ #include "content/renderer/worker/worker_thread_registry.h" +#include "base/memory/raw_ptr.h" #include "base/test/task_environment.h" #include "build/build_config.h" #include "content/public/renderer/worker_thread.h" @@ -30,7 +31,7 @@ .WillByDefault(testing::Invoke(this, &MockObserver::RemoveSelf)); } void RemoveSelf() { WorkerThread::RemoveObserver(this); } - WorkerThreadRegistry* runner_; + raw_ptr<WorkerThreadRegistry, ExperimentalRenderer> runner_; }; TEST_F(WorkerThreadRegistryTest, BasicObservingAndWorkerId) {
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 52de7b7..ba911c8c3 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
@@ -131,7 +131,6 @@ [ android qualcomm ] WebglExtension_EXT_texture_compression_bptc [ Skip ] [ android qualcomm ] WebglExtension_EXT_texture_compression_rgtc [ Skip ] [ desktop no-passthrough ] WebglExtension_EXT_color_buffer_half_float [ Skip ] -crbug.com/776222 [ android ] WebglExtension_WEBGL_video_texture [ Skip ] crbug.com/1058744 [ no-passthrough ] WebglExtension_OES_draw_buffers_indexed [ Skip ] # Extensions unavailable on Android.
diff --git a/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt index f8c1b83..6bd7819 100644 --- a/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt +++ b/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt
@@ -138,7 +138,6 @@ crbug.com/angleproject/3031 [ android angle-opengles passthrough ] WebglExtension_KHR_parallel_shader_compile [ Skip ] crbug.com/angleproject/3031 [ mac angle-opengl passthrough ] WebglExtension_KHR_parallel_shader_compile [ Skip ] crbug.com/angleproject/3031 [ win angle-opengl passthrough ] WebglExtension_KHR_parallel_shader_compile [ Skip ] -crbug.com/776222 [ android ] WebglExtension_WEBGL_video_texture [ Skip ] # Extensions not available with SwiftShader [ passthrough angle-swiftshader ] WebglExtension_EXT_blend_func_extended [ Skip ]
diff --git a/content/test/gpu/gpu_tests/webgl1_conformance_integration_test.py b/content/test/gpu/gpu_tests/webgl1_conformance_integration_test.py index c15e8f4..11a408a 100644 --- a/content/test/gpu/gpu_tests/webgl1_conformance_integration_test.py +++ b/content/test/gpu/gpu_tests/webgl1_conformance_integration_test.py
@@ -73,7 +73,6 @@ 'WEBGL_lose_context', 'WEBGL_multi_draw', 'WEBGL_polygon_mode', - 'WEBGL_video_texture', ] @classmethod
diff --git a/content/test/gpu/gpu_tests/webgl2_conformance_integration_test.py b/content/test/gpu/gpu_tests/webgl2_conformance_integration_test.py index 2fb452d..8050b1d 100644 --- a/content/test/gpu/gpu_tests/webgl2_conformance_integration_test.py +++ b/content/test/gpu/gpu_tests/webgl2_conformance_integration_test.py
@@ -74,7 +74,6 @@ 'WEBGL_render_shared_exponent', 'WEBGL_shader_pixel_local_storage', 'WEBGL_stencil_texturing', - 'WEBGL_video_texture', ] @classmethod
diff --git a/content/utility/services.cc b/content/utility/services.cc index bbaf0f0a..83251e8 100644 --- a/content/utility/services.cc +++ b/content/utility/services.cc
@@ -96,12 +96,6 @@ #endif // (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)) && // (BUILDFLAG(USE_VAAPI) || BUILDFLAG(USE_V4L2_CODEC)) -#if BUILDFLAG(IS_ANDROID) -#include "services/network/empty_network_service.h" -#include "services/network/public/cpp/features.h" -#include "services/network/public/cpp/network_switches.h" -#endif - #if BUILDFLAG(ENABLE_ACCESSIBILITY_SERVICE) #if BUILDFLAG(SUPPORTS_OS_ACCESSIBILITY_SERVICE) #include "services/accessibility/os_accessibility_service.h" // nogncheck @@ -383,12 +377,6 @@ // The network service runs on the IO thread because it needs a message // loop of type IO that can get notified when pipes have data. services.Add(RunNetworkService); -#if BUILDFLAG(IS_ANDROID) - if (base::CommandLine::ForCurrentProcess()->HasSwitch( - network::switches::kRegisterEmptyNetworkService)) { - network::RegisterEmptyNetworkService(services); - } -#endif // Add new IO-thread services above this line. GetContentClient()->utility()->RegisterIOThreadServices(services);
diff --git a/content/web_test/renderer/accessibility_controller.h b/content/web_test/renderer/accessibility_controller.h index dada3633..8433ea7 100644 --- a/content/web_test/renderer/accessibility_controller.h +++ b/content/web_test/renderer/accessibility_controller.h
@@ -10,6 +10,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "content/web_test/renderer/web_ax_object_proxy.h" #include "third_party/blink/public/web/web_ax_object.h" @@ -77,7 +78,7 @@ v8::Persistent<v8::Function> notification_callback_; blink::WebView* web_view() const; - WebFrameTestProxy* web_frame_test_proxy_; + raw_ptr<WebFrameTestProxy, ExperimentalRenderer> web_frame_test_proxy_; std::unique_ptr<blink::WebAXContext> ax_context_;
diff --git a/content/web_test/renderer/event_sender.cc b/content/web_test/renderer/event_sender.cc index 0cd95ae79..c635d339 100644 --- a/content/web_test/renderer/event_sender.cc +++ b/content/web_test/renderer/event_sender.cc
@@ -16,6 +16,7 @@ #include "base/files/file_path.h" #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" @@ -567,7 +568,7 @@ void OnDestruct() override { bindings_->OnFrameDestroyed(); } private: - EventSenderBindings* const bindings_; + const raw_ptr<EventSenderBindings, ExperimentalRenderer> bindings_; }; explicit EventSenderBindings(base::WeakPtr<EventSender> sender, @@ -664,7 +665,7 @@ EventSenderBindingsRenderFrameObserver frame_observer_; base::WeakPtr<EventSender> sender_; - blink::WebLocalFrame* const frame_; + const raw_ptr<blink::WebLocalFrame, ExperimentalRenderer> frame_; }; gin::WrapperInfo EventSenderBindings::kWrapperInfo = {gin::kEmbedderNativeGin};
diff --git a/content/web_test/renderer/event_sender.h b/content/web_test/renderer/event_sender.h index 0bb040b7..7a7fbf78 100644 --- a/content/web_test/renderer/event_sender.h +++ b/content/web_test/renderer/event_sender.h
@@ -13,6 +13,7 @@ #include <vector> #include "base/containers/circular_deque.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" #include "build/build_config.h" @@ -264,8 +265,8 @@ int wm_sys_dead_char_; #endif - blink::WebFrameWidget* const web_frame_widget_; - TestRunner* const test_runner_; + const raw_ptr<blink::WebFrameWidget, ExperimentalRenderer> web_frame_widget_; + const raw_ptr<TestRunner, ExperimentalRenderer> test_runner_; bool force_layout_on_events_;
diff --git a/content/web_test/renderer/fake_screen_orientation_impl.h b/content/web_test/renderer/fake_screen_orientation_impl.h index 26d9acd..d77ecb0 100644 --- a/content/web_test/renderer/fake_screen_orientation_impl.h +++ b/content/web_test/renderer/fake_screen_orientation_impl.h
@@ -5,6 +5,7 @@ #ifndef CONTENT_WEB_TEST_RENDERER_FAKE_SCREEN_ORIENTATION_IMPL_H_ #define CONTENT_WEB_TEST_RENDERER_FAKE_SCREEN_ORIENTATION_IMPL_H_ +#include "base/memory/raw_ptr.h" #include "mojo/public/cpp/bindings/associated_receiver_set.h" #include "mojo/public/cpp/bindings/scoped_interface_endpoint_handle.h" #include "services/device/public/mojom/screen_orientation.mojom.h" @@ -55,7 +56,7 @@ bool IsOrientationAllowedByCurrentLock(display::mojom::ScreenOrientation); display::mojom::ScreenOrientation SuitableOrientationForCurrentLock(); - blink::WebView* web_view_ = nullptr; + raw_ptr<blink::WebView, ExperimentalRenderer> web_view_ = nullptr; device::mojom::ScreenOrientationLockType current_lock_ = device::mojom::ScreenOrientationLockType::DEFAULT; display::mojom::ScreenOrientation device_orientation_ =
diff --git a/content/web_test/renderer/gamepad_controller.h b/content/web_test/renderer/gamepad_controller.h index 50ab54e9..e340fdb 100644 --- a/content/web_test/renderer/gamepad_controller.h +++ b/content/web_test/renderer/gamepad_controller.h
@@ -10,6 +10,7 @@ #include <set> #include "base/containers/unique_ptr_adapters.h" +#include "base/memory/raw_ptr.h" #include "base/memory/read_only_shared_memory_region.h" #include "base/memory/weak_ptr.h" #include "device/gamepad/public/cpp/gamepads.h" @@ -56,7 +57,7 @@ mojo::PendingRemote<device::mojom::GamepadObserver> observer) override; private: - GamepadController* controller_; + raw_ptr<GamepadController, ExperimentalRenderer> controller_; mojo::Receiver<device::mojom::GamepadMonitor> receiver_{this}; mojo::Remote<device::mojom::GamepadObserver> observer_remote_; std::bitset<device::Gamepads::kItemsLengthCap> missed_dispatches_; @@ -102,7 +103,8 @@ base::ReadOnlySharedMemoryRegion shared_memory_region_; base::WritableSharedMemoryMapping shared_memory_mapping_; - device::GamepadHardwareBuffer* gamepads_ = nullptr; + raw_ptr<device::GamepadHardwareBuffer, ExperimentalRenderer> gamepads_ = + nullptr; base::WeakPtrFactory<GamepadController> weak_factory_{this}; };
diff --git a/content/web_test/renderer/gc_controller.h b/content/web_test/renderer/gc_controller.h index 3fadd22..1dea9dd 100644 --- a/content/web_test/renderer/gc_controller.h +++ b/content/web_test/renderer/gc_controller.h
@@ -5,6 +5,7 @@ #ifndef CONTENT_WEB_TEST_RENDERER_GC_CONTROLLER_H_ #define CONTENT_WEB_TEST_RENDERER_GC_CONTROLLER_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "gin/wrappable.h" @@ -51,7 +52,7 @@ void AsyncCollectAllWithEmptyStack( v8::UniquePersistent<v8::Function> callback); - blink::WebLocalFrame* const frame_; + const raw_ptr<blink::WebLocalFrame, ExperimentalRenderer> frame_; base::WeakPtrFactory<GCController> weak_ptr_factory_{this}; };
diff --git a/content/web_test/renderer/spell_check_client.h b/content/web_test/renderer/spell_check_client.h index 6f2b4c7..8b6d046 100644 --- a/content/web_test/renderer/spell_check_client.h +++ b/content/web_test/renderer/spell_check_client.h
@@ -7,6 +7,7 @@ #include <stdint.h> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "content/web_test/renderer/web_test_spell_checker.h" #include "third_party/blink/public/platform/web_string.h" @@ -56,7 +57,7 @@ void RequestResolved(); - blink::WebLocalFrame* const frame_; + const raw_ptr<blink::WebLocalFrame, ExperimentalRenderer> frame_; // Do not perform any checking when |enabled_ == false|. // Tests related to spell checking should enable it manually.
diff --git a/content/web_test/renderer/test_plugin.h b/content/web_test/renderer/test_plugin.h index 921c173..43327f2 100644 --- a/content/web_test/renderer/test_plugin.h +++ b/content/web_test/renderer/test_plugin.h
@@ -8,6 +8,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "cc/layers/texture_layer.h" #include "cc/layers/texture_layer_client.h" @@ -170,13 +171,13 @@ const gpu::SyncToken& sync_token, bool lost); - TestRunner* test_runner_; - blink::WebPluginContainer* container_; - blink::WebLocalFrame* web_local_frame_; + raw_ptr<TestRunner, ExperimentalRenderer> test_runner_; + raw_ptr<blink::WebPluginContainer, ExperimentalRenderer> container_; + raw_ptr<blink::WebLocalFrame, ExperimentalRenderer> web_local_frame_; gfx::Rect rect_; scoped_refptr<ContextProviderRef> context_provider_; - gpu::gles2::GLES2Interface* gl_; + raw_ptr<gpu::gles2::GLES2Interface, ExperimentalRenderer> gl_; gpu::Mailbox mailbox_; gpu::SyncToken sync_token_; scoped_refptr<cc::CrossThreadSharedBitmap> shared_bitmap_;
diff --git a/content/web_test/renderer/test_runner.cc b/content/web_test/renderer/test_runner.cc index c247556..91bb598 100644 --- a/content/web_test/renderer/test_runner.cc +++ b/content/web_test/renderer/test_runner.cc
@@ -17,6 +17,7 @@ #include "base/containers/unique_ptr_adapters.h" #include "base/functional/callback_helpers.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_piece.h" #include "base/strings/string_split.h" @@ -232,7 +233,7 @@ void OnDestruct() override { bindings_->OnFrameDestroyed(); } private: - TestRunnerBindings* const bindings_; + const raw_ptr<TestRunnerBindings, ExperimentalRenderer> bindings_; }; explicit TestRunnerBindings(TestRunner* test_runner, @@ -423,9 +424,9 @@ // stop doing anything. bool invalid_ = false; - TestRunner* runner_; - WebFrameTestProxy* const frame_; - SpellCheckClient* const spell_check_; + raw_ptr<TestRunner, ExperimentalRenderer> runner_; + const raw_ptr<WebFrameTestProxy, ExperimentalRenderer> frame_; + const raw_ptr<SpellCheckClient, ExperimentalRenderer> spell_check_; TestPreferences prefs_; std::unique_ptr<AppBannerService> app_banner_service_; @@ -2253,7 +2254,7 @@ } private: - TestRunner* const test_runner_; + const raw_ptr<TestRunner, ExperimentalRenderer> test_runner_; }; TestRunner::WorkQueue::WorkQueue(TestRunner* controller)
diff --git a/content/web_test/renderer/test_runner.h b/content/web_test/renderer/test_runner.h index b1663317..9dd0d5b 100644 --- a/content/web_test/renderer/test_runner.h +++ b/content/web_test/renderer/test_runner.h
@@ -16,6 +16,7 @@ #include "base/containers/flat_set.h" #include "base/files/file_path.h" #include "base/functional/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/values.h" #include "content/web_test/common/web_test.mojom.h" @@ -322,7 +323,7 @@ // Collection of flags to be synced with the browser process. TrackedDictionary states_; - TestRunner* controller_; + raw_ptr<TestRunner, ExperimentalRenderer> controller_; }; // If the main test window's main frame is hosted in this renderer process,
diff --git a/content/web_test/renderer/text_input_controller.h b/content/web_test/renderer/text_input_controller.h index a7434f7b..e3f59b9 100644 --- a/content/web_test/renderer/text_input_controller.h +++ b/content/web_test/renderer/text_input_controller.h
@@ -8,6 +8,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" namespace blink { @@ -60,7 +61,7 @@ // accepting IME. Could return nullptr if no such frame exists. blink::WebInputMethodController* GetInputMethodController(); - WebFrameTestProxy* const web_frame_test_proxy_; + const raw_ptr<WebFrameTestProxy, ExperimentalRenderer> web_frame_test_proxy_; base::WeakPtrFactory<TextInputController> weak_factory_{this}; };
diff --git a/content/web_test/renderer/web_ax_object_proxy.h b/content/web_test/renderer/web_ax_object_proxy.h index 1f5d7f2..93d71f0d 100644 --- a/content/web_test/renderer/web_ax_object_proxy.h +++ b/content/web_test/renderer/web_ax_object_proxy.h
@@ -10,6 +10,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "gin/object_template_builder.h" #include "gin/wrappable.h" #include "third_party/blink/public/web/web_ax_context.h" @@ -246,7 +247,7 @@ std::string Placeholder(); blink::WebAXObject accessibility_object_; - Factory* factory_; + raw_ptr<Factory, ExperimentalRenderer> factory_; v8::Global<v8::Function> notification_callback_; }; @@ -269,9 +270,9 @@ blink::WebAXContext* GetAXContext() override; private: - v8::Isolate* isolate_; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_; std::vector<v8::Global<v8::Object>> elements_; - blink::WebAXContext* const ax_context_; + const raw_ptr<blink::WebAXContext, ExperimentalRenderer> ax_context_; }; } // namespace content
diff --git a/content/web_test/renderer/web_frame_test_proxy.cc b/content/web_test/renderer/web_frame_test_proxy.cc index 6ea6806..48956f8 100644 --- a/content/web_test/renderer/web_frame_test_proxy.cc +++ b/content/web_test/renderer/web_frame_test_proxy.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "content/web_test/renderer/web_frame_test_proxy.h" +#include "base/memory/raw_ptr.h" #include "components/plugins/renderer/plugin_placeholder.h" #include "content/public/renderer/render_frame_observer.h" @@ -224,7 +225,7 @@ render_frame()->GetWebFrame()->PrintEnd(); } - TestRunner* const test_runner_; + const raw_ptr<TestRunner, ExperimentalRenderer> test_runner_; }; } // namespace
diff --git a/content/web_test/renderer/web_frame_test_proxy.h b/content/web_test/renderer/web_frame_test_proxy.h index acc7633..33aec81 100644 --- a/content/web_test/renderer/web_frame_test_proxy.h +++ b/content/web_test/renderer/web_frame_test_proxy.h
@@ -10,6 +10,7 @@ #include <utility> #include <vector> +#include "base/memory/raw_ptr.h" #include "content/renderer/render_frame_impl.h" #include "content/web_test/common/web_test.mojom.h" #include "content/web_test/renderer/accessibility_controller.h" @@ -112,7 +113,7 @@ TestRunner* test_runner(); - TestRunner* const test_runner_; + const raw_ptr<TestRunner, ExperimentalRenderer> test_runner_; std::unique_ptr<SpellCheckClient> spell_check_;
diff --git a/content/web_test/renderer/web_test_content_settings_client.h b/content/web_test/renderer/web_test_content_settings_client.h index 1b15d42..88809cb 100644 --- a/content/web_test/renderer/web_test_content_settings_client.h +++ b/content/web_test/renderer/web_test_content_settings_client.h
@@ -5,6 +5,7 @@ #ifndef CONTENT_WEB_TEST_RENDERER_WEB_TEST_CONTENT_SETTINGS_CLIENT_H_ #define CONTENT_WEB_TEST_RENDERER_WEB_TEST_CONTENT_SETTINGS_CLIENT_H_ +#include "base/memory/raw_ptr.h" #include "mojo/public/cpp/bindings/remote.h" #include "third_party/blink/public/platform/web_content_settings_client.h" #include "url/origin.h" @@ -38,8 +39,8 @@ bool IncreaseViewTransitionCallbackTimeout() const override; private: - TestRunner* const test_runner_; - WebTestRuntimeFlags* const flags_; + const raw_ptr<TestRunner, ExperimentalRenderer> test_runner_; + const raw_ptr<WebTestRuntimeFlags, ExperimentalRenderer> flags_; }; } // namespace content
diff --git a/extensions/renderer/activity_log_converter_strategy_unittest.cc b/extensions/renderer/activity_log_converter_strategy_unittest.cc index 0fa2a334..7cc5d4fd 100644 --- a/extensions/renderer/activity_log_converter_strategy_unittest.cc +++ b/extensions/renderer/activity_log_converter_strategy_unittest.cc
@@ -6,6 +6,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/values.h" #include "testing/gtest/include/gtest/gtest.h" #include "v8/include/v8.h" @@ -76,7 +77,7 @@ return v8::Local<v8::Context>::New(isolate_, context_); } - v8::Isolate* isolate_; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_; v8::HandleScope handle_scope_; v8::Global<v8::Context> context_; v8::Context::Scope context_scope_;
diff --git a/extensions/renderer/api/automation/automation_internal_custom_bindings.h b/extensions/renderer/api/automation/automation_internal_custom_bindings.h index 7b4a836..2f99f70 100644 --- a/extensions/renderer/api/automation/automation_internal_custom_bindings.h +++ b/extensions/renderer/api/automation/automation_internal_custom_bindings.h
@@ -11,6 +11,7 @@ #include <vector> #include "base/compiler_specific.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" #include "extensions/common/api/automation.h" @@ -92,7 +93,7 @@ void IsInteractPermitted( const v8::FunctionCallbackInfo<v8::Value>& args) const; - NativeExtensionBindingsSystem* bindings_system_; + raw_ptr<NativeExtensionBindingsSystem, ExperimentalRenderer> bindings_system_; bool should_ignore_context_; std::unique_ptr<ui::AutomationV8Bindings> automation_v8_bindings_;
diff --git a/extensions/renderer/api/automation/automation_internal_custom_bindings_unittests.cc b/extensions/renderer/api/automation/automation_internal_custom_bindings_unittests.cc index f42dfc4..475a826 100644 --- a/extensions/renderer/api/automation/automation_internal_custom_bindings_unittests.cc +++ b/extensions/renderer/api/automation/automation_internal_custom_bindings_unittests.cc
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/memory/raw_ptr.h" #include "extensions/renderer/api/automation/automation_internal_custom_bindings.h" #include "base/test/bind.h" @@ -60,7 +61,8 @@ } private: - AutomationInternalCustomBindings* automation_internal_bindings_ = nullptr; + raw_ptr<AutomationInternalCustomBindings, ExperimentalRenderer> + automation_internal_bindings_ = nullptr; }; TEST_F(AutomationInternalCustomBindingsTest, ActionStringMapping) {
diff --git a/extensions/renderer/api/messaging/gin_port.h b/extensions/renderer/api/messaging/gin_port.h index 467bfa2..8b686293 100644 --- a/extensions/renderer/api/messaging/gin_port.h +++ b/extensions/renderer/api/messaging/gin_port.h
@@ -8,6 +8,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "extensions/common/api/messaging/port_id.h" #include "extensions/renderer/bindings/api_binding_util.h" @@ -141,11 +142,11 @@ const std::string name_; // The associated APIEventHandler. Guaranteed to outlive this object. - APIEventHandler* const event_handler_; + const raw_ptr<APIEventHandler, ExperimentalRenderer> event_handler_; // The delegate for handling the message passing between ports. Guaranteed to // outlive this object. - Delegate* const delegate_; + const raw_ptr<Delegate, ExperimentalRenderer> delegate_; // Whether the `sender` property has been accessed, and thus set on the // port JS object.
diff --git a/extensions/renderer/api/messaging/native_renderer_messaging_service.h b/extensions/renderer/api/messaging/native_renderer_messaging_service.h index 7fcef21..5d0b50f 100644 --- a/extensions/renderer/api/messaging/native_renderer_messaging_service.h +++ b/extensions/renderer/api/messaging/native_renderer_messaging_service.h
@@ -7,6 +7,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "extensions/common/extension_id.h" #include "extensions/renderer/api/messaging/gin_port.h" #include "extensions/renderer/api/messaging/one_time_message_handler.h" @@ -210,7 +211,8 @@ const PortId& port_id); // The associated bindings system; guaranteed to outlive this object. - NativeExtensionBindingsSystem* const bindings_system_; + const raw_ptr<NativeExtensionBindingsSystem, ExperimentalRenderer> + bindings_system_; OneTimeMessageHandler one_time_message_handler_; };
diff --git a/extensions/renderer/api/messaging/native_renderer_messaging_service_unittest.cc b/extensions/renderer/api/messaging/native_renderer_messaging_service_unittest.cc index ce9d9f7..ab8c72f 100644 --- a/extensions/renderer/api/messaging/native_renderer_messaging_service_unittest.cc +++ b/extensions/renderer/api/messaging/native_renderer_messaging_service_unittest.cc
@@ -6,6 +6,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/strings/stringprintf.h" #include "base/values.h" #include "components/crx_file/id_util.h" @@ -107,7 +108,7 @@ private: std::unique_ptr<NativeRendererMessagingService> messaging_service_; - ScriptContext* script_context_ = nullptr; + raw_ptr<ScriptContext, ExperimentalRenderer> script_context_ = nullptr; scoped_refptr<const Extension> extension_; };
diff --git a/extensions/renderer/api/messaging/one_time_message_handler.h b/extensions/renderer/api/messaging/one_time_message_handler.h index 58d24f2b..582b580 100644 --- a/extensions/renderer/api/messaging/one_time_message_handler.h +++ b/extensions/renderer/api/messaging/one_time_message_handler.h
@@ -10,6 +10,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "extensions/renderer/bindings/api_binding_types.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -152,7 +153,8 @@ absl::optional<base::Value> result); // The associated bindings system. Outlives this object. - NativeExtensionBindingsSystem* const bindings_system_; + const raw_ptr<NativeExtensionBindingsSystem, ExperimentalRenderer> + bindings_system_; base::WeakPtrFactory<OneTimeMessageHandler> weak_factory_{this}; };
diff --git a/extensions/renderer/api/messaging/one_time_message_handler_unittest.cc b/extensions/renderer/api/messaging/one_time_message_handler_unittest.cc index 0b67246..026a885 100644 --- a/extensions/renderer/api/messaging/one_time_message_handler_unittest.cc +++ b/extensions/renderer/api/messaging/one_time_message_handler_unittest.cc
@@ -6,6 +6,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/strings/stringprintf.h" #include "extensions/common/api/messaging/message.h" @@ -85,7 +86,7 @@ private: std::unique_ptr<OneTimeMessageHandler> message_handler_; - ScriptContext* script_context_ = nullptr; + raw_ptr<ScriptContext, ExperimentalRenderer> script_context_ = nullptr; scoped_refptr<const Extension> extension_; };
diff --git a/extensions/renderer/api/messaging/send_message_tester.cc b/extensions/renderer/api/messaging/send_message_tester.cc index 18df6b8..39a3d23 100644 --- a/extensions/renderer/api/messaging/send_message_tester.cc +++ b/extensions/renderer/api/messaging/send_message_tester.cc
@@ -82,10 +82,10 @@ "(function() { return chrome.%s.connect(%s); })"; PortId expected_port_id(script_context_->context_id(), next_port_id_++, true, SerializationFormat::kJson); - EXPECT_CALL( - *ipc_sender_, - SendOpenMessageChannel(script_context_, expected_port_id, expected_target, - ChannelType::kConnect, expected_channel)); + EXPECT_CALL(*ipc_sender_, + SendOpenMessageChannel(script_context_.get(), expected_port_id, + expected_target, ChannelType::kConnect, + expected_channel)); v8::Local<v8::Function> add_port = FunctionFromString( v8_context, base::StringPrintf(kAddPortTemplate, api_namespace_.c_str(), args.c_str())); @@ -135,8 +135,8 @@ EXPECT_CALL( *ipc_sender_, - SendOpenMessageChannel(script_context_, expected_port_id, expected_target, - channel_type, expected_channel)); + SendOpenMessageChannel(script_context_.get(), expected_port_id, + expected_target, channel_type, expected_channel)); Message message(expected_message, SerializationFormat::kJson, false); EXPECT_CALL(*ipc_sender_, SendPostMessageToPort(expected_port_id, message));
diff --git a/extensions/renderer/api/messaging/send_message_tester.h b/extensions/renderer/api/messaging/send_message_tester.h index dabab68..48cd46a 100644 --- a/extensions/renderer/api/messaging/send_message_tester.h +++ b/extensions/renderer/api/messaging/send_message_tester.h
@@ -7,6 +7,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "v8/include/v8-forward.h" namespace extensions { @@ -73,8 +74,8 @@ Method method, v8::Local<v8::Value>& out_value); - TestIPCMessageSender* ipc_sender_; - ScriptContext* script_context_; + raw_ptr<TestIPCMessageSender, ExperimentalRenderer> ipc_sender_; + raw_ptr<ScriptContext, ExperimentalRenderer> script_context_; int next_port_id_; std::string api_namespace_; };
diff --git a/extensions/renderer/api/runtime_hooks_delegate.h b/extensions/renderer/api/runtime_hooks_delegate.h index 300c98fa..4c553d1 100644 --- a/extensions/renderer/api/runtime_hooks_delegate.h +++ b/extensions/renderer/api/runtime_hooks_delegate.h
@@ -7,6 +7,7 @@ #include <vector> +#include "base/memory/raw_ptr.h" #include "extensions/renderer/bindings/api_binding_hooks_delegate.h" #include "extensions/renderer/bindings/api_signature.h" #include "v8/include/v8-forward.h" @@ -77,7 +78,8 @@ // The messaging service to handle connect() and sendMessage() calls. // Guaranteed to outlive this object. - NativeRendererMessagingService* const messaging_service_; + const raw_ptr<NativeRendererMessagingService, ExperimentalRenderer> + messaging_service_; }; } // namespace extensions
diff --git a/extensions/renderer/api/runtime_hooks_delegate_unittest.cc b/extensions/renderer/api/runtime_hooks_delegate_unittest.cc index 14df396..ecbe937 100644 --- a/extensions/renderer/api/runtime_hooks_delegate_unittest.cc +++ b/extensions/renderer/api/runtime_hooks_delegate_unittest.cc
@@ -6,6 +6,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/strings/stringprintf.h" #include "base/values.h" #include "components/crx_file/id_util.h" @@ -98,7 +99,7 @@ private: std::unique_ptr<NativeRendererMessagingService> messaging_service_; - ScriptContext* script_context_ = nullptr; + raw_ptr<ScriptContext, ExperimentalRenderer> script_context_ = nullptr; scoped_refptr<const Extension> extension_; };
diff --git a/extensions/renderer/api_activity_logger.h b/extensions/renderer/api_activity_logger.h index 5f029fe..70d3fd93 100644 --- a/extensions/renderer/api_activity_logger.h +++ b/extensions/renderer/api_activity_logger.h
@@ -9,6 +9,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/values.h" #include "extensions/renderer/ipc_message_sender.h" #include "extensions/renderer/object_backed_native_handler.h" @@ -65,7 +66,7 @@ // // Valid to use so long as there's a valid ScriptContext associated with the // call-site. - IPCMessageSender* ipc_sender_ = nullptr; + raw_ptr<IPCMessageSender, ExperimentalRenderer> ipc_sender_ = nullptr; }; } // namespace extensions
diff --git a/extensions/renderer/api_definitions_natives.h b/extensions/renderer/api_definitions_natives.h index f910478..382f2d6 100644 --- a/extensions/renderer/api_definitions_natives.h +++ b/extensions/renderer/api_definitions_natives.h
@@ -5,6 +5,7 @@ #ifndef EXTENSIONS_RENDERER_API_DEFINITIONS_NATIVES_H_ #define EXTENSIONS_RENDERER_API_DEFINITIONS_NATIVES_H_ +#include "base/memory/raw_ptr.h" #include "extensions/renderer/object_backed_native_handler.h" #include "v8/include/v8-forward.h" @@ -29,7 +30,7 @@ const v8::FunctionCallbackInfo<v8::Value>& args); // Not owned. - Dispatcher* dispatcher_; + raw_ptr<Dispatcher, ExperimentalRenderer> dispatcher_; }; } // namespace extensions
diff --git a/extensions/renderer/binding_generating_native_handler.h b/extensions/renderer/binding_generating_native_handler.h index 4d771347..ce05f4b 100644 --- a/extensions/renderer/binding_generating_native_handler.h +++ b/extensions/renderer/binding_generating_native_handler.h
@@ -8,6 +8,7 @@ #include <string> #include "base/compiler_specific.h" +#include "base/memory/raw_ptr.h" #include "extensions/renderer/native_handler.h" #include "v8/include/v8-forward.h" @@ -31,7 +32,7 @@ v8::Local<v8::Object> NewInstance() override; private: - ScriptContext* context_; + raw_ptr<ScriptContext, ExperimentalRenderer> context_; std::string api_name_; std::string bind_to_; };
diff --git a/extensions/renderer/bindings/api_binding.cc b/extensions/renderer/bindings/api_binding.cc index ddc8740..71b6b88 100644 --- a/extensions/renderer/bindings/api_binding.cc +++ b/extensions/renderer/bindings/api_binding.cc
@@ -8,6 +8,7 @@ #include "base/check.h" #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/ranges/algorithm.h" #include "base/strings/strcat.h" #include "base/strings/string_util.h" @@ -102,7 +103,7 @@ // sendMessage). const std::string full_name; // The expected API signature. - const APISignature* signature; + raw_ptr<const APISignature, ExperimentalRenderer> signature; // The callback used by the v8 function. APIBinding::HandlerCallback callback; }; @@ -160,7 +161,7 @@ // EventData is only accessed from the callbacks associated with the // APIBinding, and both the APIBinding and APIEventHandler are owned by the // same object (the APIBindingsSystem). - APIBinding* binding; + raw_ptr<APIBinding, ExperimentalRenderer> binding; }; struct APIBinding::CustomPropertyData { @@ -179,7 +180,7 @@ // chrome.storage.local. std::string property_name; // Values curried into this particular type from the schema. - const base::Value::List* property_values; + raw_ptr<const base::Value::List, ExperimentalRenderer> property_values; CreateCustomType create_custom_type; }; @@ -588,7 +589,7 @@ v8::Local<v8::Object> property = property_data->create_custom_type.Run( isolate, property_data->type_name, property_data->property_name, - property_data->property_values); + property_data->property_values.get()); if (property.IsEmpty()) return;
diff --git a/extensions/renderer/bindings/api_binding.h b/extensions/renderer/bindings/api_binding.h index e4e7aa7..554a40f 100644 --- a/extensions/renderer/bindings/api_binding.h +++ b/extensions/renderer/bindings/api_binding.h
@@ -11,6 +11,7 @@ #include "base/containers/flat_set.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/values.h" #include "extensions/renderer/bindings/argument_spec.h" @@ -140,7 +141,7 @@ std::map<std::string, std::vector<EnumEntry>> enums_; // The associated properties of the API, if any. - const base::Value::Dict* property_definitions_; + raw_ptr<const base::Value::Dict, ExperimentalRenderer> property_definitions_; // The names of all the "root properties" added to the API; i.e., properties // exposed on the API object itself. base::flat_set<std::string> root_properties_; @@ -154,18 +155,19 @@ std::unique_ptr<APIBindingHooks> binding_hooks_; // The reference map for all known types; required to outlive this object. - APITypeReferenceMap* type_refs_; + raw_ptr<APITypeReferenceMap, ExperimentalRenderer> type_refs_; // The associated request handler, shared between this and other bindings. // Required to outlive this object. - APIRequestHandler* request_handler_; + raw_ptr<APIRequestHandler, ExperimentalRenderer> request_handler_; // The associated event handler, shared between this and other bindings. // Required to outlive this object. - APIEventHandler* event_handler_; + raw_ptr<APIEventHandler, ExperimentalRenderer> event_handler_; // The associated access checker; required to outlive this object. - const BindingAccessChecker* const access_checker_; + const raw_ptr<const BindingAccessChecker, ExperimentalRenderer> + access_checker_; // The template for this API. Note: some methods may only be available in // certain contexts, but this template contains all methods. Those that are
diff --git a/extensions/renderer/bindings/api_binding_hooks.cc b/extensions/renderer/bindings/api_binding_hooks.cc index cfb4272..6f2a5a3 100644 --- a/extensions/renderer/bindings/api_binding_hooks.cc +++ b/extensions/renderer/bindings/api_binding_hooks.cc
@@ -4,6 +4,7 @@ #include "extensions/renderer/bindings/api_binding_hooks.h" +#include "base/memory/raw_ptr.h" #include "base/strings/stringprintf.h" #include "base/supports_user_data.h" #include "extensions/renderer/bindings/api_binding_hooks_delegate.h" @@ -150,7 +151,7 @@ } } - v8::Isolate* isolate; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate; std::map<std::string, v8::Global<v8::Object>> hook_interfaces;
diff --git a/extensions/renderer/bindings/api_binding_hooks.h b/extensions/renderer/bindings/api_binding_hooks.h index d2b7ecaf..b53cdac 100644 --- a/extensions/renderer/bindings/api_binding_hooks.h +++ b/extensions/renderer/bindings/api_binding_hooks.h
@@ -8,6 +8,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "extensions/renderer/bindings/api_binding_types.h" #include "v8/include/v8.h" @@ -114,7 +115,7 @@ // The request handler used to resolve asynchronous responses associated with // handle request hooks. Guaranteed to outlive this object. - APIRequestHandler* const request_handler_; + const raw_ptr<APIRequestHandler, ExperimentalRenderer> request_handler_; std::unique_ptr<APIBindingHooksDelegate> delegate_;
diff --git a/extensions/renderer/bindings/api_binding_js_util.h b/extensions/renderer/bindings/api_binding_js_util.h index 6458d71..9e4f23d 100644 --- a/extensions/renderer/bindings/api_binding_js_util.h +++ b/extensions/renderer/bindings/api_binding_js_util.h
@@ -7,6 +7,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "gin/wrappable.h" #include "v8/include/v8.h" @@ -126,16 +127,16 @@ v8::Local<v8::Value> arguments_to_validate); // Type references. Guaranteed to outlive this object. - APITypeReferenceMap* const type_refs_; + const raw_ptr<APITypeReferenceMap, ExperimentalRenderer> type_refs_; // The request handler. Guaranteed to outlive this object. - APIRequestHandler* const request_handler_; + const raw_ptr<APIRequestHandler, ExperimentalRenderer> request_handler_; // The event handler. Guaranteed to outlive this object. - APIEventHandler* const event_handler_; + const raw_ptr<APIEventHandler, ExperimentalRenderer> event_handler_; // The exception handler. Guaranteed to outlive this object. - ExceptionHandler* const exception_handler_; + const raw_ptr<ExceptionHandler, ExperimentalRenderer> exception_handler_; }; } // namespace extensions
diff --git a/extensions/renderer/bindings/api_event_handler.cc b/extensions/renderer/bindings/api_event_handler.cc index 595d09a..6fcd3ed 100644 --- a/extensions/renderer/bindings/api_event_handler.cc +++ b/extensions/renderer/bindings/api_event_handler.cc
@@ -13,6 +13,7 @@ #include "base/containers/contains.h" #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "base/ranges/algorithm.h" #include "base/supports_user_data.h" @@ -46,7 +47,7 @@ // The associated v8::Isolate. Since this object is cleaned up at context // destruction, this should always be valid. - v8::Isolate* isolate; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate; // A map from event name -> event emitter. std::map<std::string, v8::Global<v8::Object>> emitters;
diff --git a/extensions/renderer/bindings/api_event_handler.h b/extensions/renderer/bindings/api_event_handler.h index fd799e4..1bebb2e 100644 --- a/extensions/renderer/bindings/api_event_handler.h +++ b/extensions/renderer/bindings/api_event_handler.h
@@ -8,6 +8,7 @@ #include <string> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "extensions/common/mojom/event_dispatcher.mojom-forward.h" #include "extensions/renderer/bindings/api_binding_types.h" #include "extensions/renderer/bindings/api_event_listeners.h" @@ -114,7 +115,7 @@ // The exception handler associated with the bindings system; guaranteed to // outlive this object. - ExceptionHandler* const exception_handler_; + const raw_ptr<ExceptionHandler, ExperimentalRenderer> exception_handler_; // The response validator used to verify event arguments. Only non-null if // validation is enabled.
diff --git a/extensions/renderer/bindings/api_event_listeners.h b/extensions/renderer/bindings/api_event_listeners.h index 310c07f..80aa70b2 100644 --- a/extensions/renderer/bindings/api_event_listeners.h +++ b/extensions/renderer/bindings/api_event_listeners.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/values.h" #include "extensions/common/mojom/event_dispatcher.mojom-forward.h" #include "extensions/renderer/bindings/api_binding_types.h" @@ -152,7 +153,7 @@ // The listener tracker to notify of added or removed listeners. This may be // null if this is a set of listeners for an unmanaged event. If // non-null, required to outlive this object. - ListenerTracker* listener_tracker_ = nullptr; + raw_ptr<ListenerTracker, ExperimentalRenderer> listener_tracker_ = nullptr; }; // A listener list implementation that supports filtering. Events should only @@ -220,7 +221,7 @@ // The listener tracker to notify of added or removed listeners. Required to // outlive this object. Must be non-null. - ListenerTracker* listener_tracker_ = nullptr; + raw_ptr<ListenerTracker, ExperimentalRenderer> listener_tracker_ = nullptr; }; } // namespace extensions
diff --git a/extensions/renderer/bindings/api_request_handler.cc b/extensions/renderer/bindings/api_request_handler.cc index 6118af1..cfda2fc 100644 --- a/extensions/renderer/bindings/api_request_handler.cc +++ b/extensions/renderer/bindings/api_request_handler.cc
@@ -6,6 +6,7 @@ #include "base/functional/bind.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/values.h" #include "content/public/renderer/v8_value_converter.h" #include "extensions/renderer/bindings/api_binding_util.h" @@ -47,7 +48,8 @@ mojom::ExtraResponseDataPtr TakeExtraData() { return std::move(extra_data_); } private: - const base::Value::List* base_arguments_ = nullptr; + raw_ptr<const base::Value::List, ExperimentalRenderer> base_arguments_ = + nullptr; mutable std::vector<v8::Local<v8::Value>> v8_arguments_; mojom::ExtraResponseDataPtr extra_data_ = nullptr; }; @@ -159,7 +161,7 @@ // This is guaranteed to be valid while the AsyncResultHandler is valid // because the ExceptionHandler lives for the duration of the bindings // system, similar to the APIRequestHandler (which owns this). - ExceptionHandler* exception_handler_ = nullptr; + raw_ptr<ExceptionHandler, ExperimentalRenderer> exception_handler_ = nullptr; // Custom callback handlers. v8::Global<v8::Function> custom_callback_;
diff --git a/extensions/renderer/bindings/api_request_handler.h b/extensions/renderer/bindings/api_request_handler.h index 394ec36..5dd65566 100644 --- a/extensions/renderer/bindings/api_request_handler.h +++ b/extensions/renderer/bindings/api_request_handler.h
@@ -10,6 +10,7 @@ #include <set> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/values.h" #include "extensions/common/mojom/extra_response_data.mojom.h" #include "extensions/renderer/bindings/api_binding_types.h" @@ -135,7 +136,7 @@ PendingRequest(PendingRequest&&); PendingRequest& operator=(PendingRequest&&); - v8::Isolate* isolate; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate; v8::Global<v8::Context> context; std::string method_name; @@ -182,14 +183,15 @@ // The exception handler for the bindings system; guaranteed to be valid // during this object's lifetime. - ExceptionHandler* const exception_handler_; + const raw_ptr<ExceptionHandler, ExperimentalRenderer> exception_handler_; // The response validator used to check the responses for resolved requests. // Null if response validation is disabled. std::unique_ptr<APIResponseValidator> response_validator_; // Outlives |this|. - const InteractionProvider* const interaction_provider_; + const raw_ptr<const InteractionProvider, ExperimentalRenderer> + interaction_provider_; }; } // namespace extensions
diff --git a/extensions/renderer/bindings/api_response_validator.h b/extensions/renderer/bindings/api_response_validator.h index c8cc69b5..36bf7fd 100644 --- a/extensions/renderer/bindings/api_response_validator.h +++ b/extensions/renderer/bindings/api_response_validator.h
@@ -10,6 +10,7 @@ #include <vector> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "v8/include/v8.h" namespace extensions { @@ -89,7 +90,7 @@ private: // The type reference map; guaranteed to outlive this object. - const APITypeReferenceMap* type_refs_; + raw_ptr<const APITypeReferenceMap, ExperimentalRenderer> type_refs_; }; } // namespace extensions
diff --git a/extensions/renderer/bindings/api_signature.cc b/extensions/renderer/bindings/api_signature.cc index 8dbb2ee..86d9830 100644 --- a/extensions/renderer/bindings/api_signature.cc +++ b/extensions/renderer/bindings/api_signature.cc
@@ -7,6 +7,7 @@ #include <algorithm> #include "base/containers/contains.h" +#include "base/memory/raw_ref.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/values.h" @@ -160,9 +161,12 @@ virtual void SetCallback(v8::Local<v8::Function> callback) = 0; v8::Local<v8::Context> context_; - const std::vector<std::unique_ptr<ArgumentSpec>>& signature_; - const std::vector<v8::Local<v8::Value>>& provided_arguments_; - const APITypeReferenceMap& type_refs_; + const raw_ref<const std::vector<std::unique_ptr<ArgumentSpec>>, + ExperimentalRenderer> + signature_; + const raw_ref<const std::vector<v8::Local<v8::Value>>, ExperimentalRenderer> + provided_arguments_; + const raw_ref<const APITypeReferenceMap, ExperimentalRenderer> type_refs_; PromisesAllowed promises_allowed_; binding::AsyncResponseType async_type_ = binding::AsyncResponseType::kNone; std::string error_; @@ -251,7 +255,7 @@ }; bool ArgumentParser::ParseArgumentsImpl(bool signature_has_callback) { - if (provided_arguments_.size() > signature_.size()) { + if (provided_arguments_->size() > signature_->size()) { error_ = api_errors::NoMatchingSignature(); return false; } @@ -262,23 +266,24 @@ bool allow_omitted_final_argument = signature_has_callback && promises_allowed_ == PromisesAllowed::kAllowed; - std::vector<v8::Local<v8::Value>> resolved_arguments(signature_.size()); - if (!ResolveArguments(provided_arguments_, signature_, &resolved_arguments, + std::vector<v8::Local<v8::Value>> resolved_arguments(signature_->size()); + if (!ResolveArguments(*provided_arguments_, *signature_, &resolved_arguments, 0u, allow_omitted_final_argument)) { error_ = api_errors::NoMatchingSignature(); return false; } - DCHECK_EQ(resolved_arguments.size(), signature_.size()); + DCHECK_EQ(resolved_arguments.size(), signature_->size()); size_t end_size = - signature_has_callback ? signature_.size() - 1 : signature_.size(); + signature_has_callback ? signature_->size() - 1 : signature_->size(); for (size_t i = 0; i < end_size; ++i) { - if (!ParseArgument(*signature_[i], resolved_arguments[i])) + if (!ParseArgument(*(*signature_)[i], resolved_arguments[i])) { return false; + } } if (signature_has_callback && - !ParseCallback(*signature_.back(), resolved_arguments.back())) { + !ParseCallback(*signature_->back(), resolved_arguments.back())) { return false; } @@ -316,7 +321,7 @@ // For null/undefined, just use an empty handle. It'll be normalized to // null in ParseArgument(). (*result)[index] = v8::Local<v8::Value>(); - } else if (expected[0]->IsCorrectType(provided[0], type_refs_, &error_)) { + } else if (expected[0]->IsCorrectType(provided[0], *type_refs_, &error_)) { can_match = true; (*result)[index] = provided[0]; } @@ -376,8 +381,8 @@ // ResolveArguments() should verify that all arguments are at least the // correct type. - DCHECK(spec.IsCorrectType(value, type_refs_, &error_)); - if (!spec.ParseArgument(context_, value, type_refs_, GetBaseBuffer(), + DCHECK(spec.IsCorrectType(value, *type_refs_, &error_)); + if (!spec.ParseArgument(context_, value, *type_refs_, GetBaseBuffer(), GetV8Buffer(), &parse_error_)) { error_ = api_errors::ArgumentError(spec.name(), parse_error_); return false; @@ -409,7 +414,7 @@ // Note: callbacks are set through SetCallback() rather than through the // buffered argument. - if (!spec.ParseArgument(context_, value, type_refs_, nullptr, nullptr, + if (!spec.ParseArgument(context_, value, *type_refs_, nullptr, nullptr, &parse_error_)) { error_ = api_errors::ArgumentError(spec.name(), parse_error_); return false;
diff --git a/extensions/renderer/bindings/api_signature.h b/extensions/renderer/bindings/api_signature.h index 0b31663e..2255a83c 100644 --- a/extensions/renderer/bindings/api_signature.h +++ b/extensions/renderer/bindings/api_signature.h
@@ -9,6 +9,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/values.h" #include "extensions/renderer/bindings/api_binding_types.h" #include "extensions/renderer/bindings/binding_access_checker.h" @@ -179,7 +180,7 @@ std::unique_ptr<APISignature::ReturnsAsync> returns_async_; // The associated access checker; required to outlive this object. - const BindingAccessChecker* access_checker_; + raw_ptr<const BindingAccessChecker, ExperimentalRenderer> access_checker_; // A developer-readable method signature string, lazily set. mutable std::string expected_signature_;
diff --git a/extensions/renderer/bindings/argument_spec_unittest.cc b/extensions/renderer/bindings/argument_spec_unittest.cc index f979db4..67498ec4 100644 --- a/extensions/renderer/bindings/argument_spec_unittest.cc +++ b/extensions/renderer/bindings/argument_spec_unittest.cc
@@ -5,6 +5,8 @@ #include "extensions/renderer/bindings/argument_spec.h" #include "base/functional/bind.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" +#include "base/memory/raw_ref.h" #include "base/strings/stringprintf.h" #include "base/values.h" #include "extensions/renderer/bindings/api_binding_test_util.h" @@ -58,13 +60,13 @@ TestResult result) : spec(spec), script_source(script_source), expected_result(result) {} - const ArgumentSpec& spec; + const raw_ref<const ArgumentSpec, ExperimentalRenderer> spec; base::StringPiece script_source; TestResult expected_result; base::StringPiece expected_json; base::StringPiece expected_error; base::StringPiece expected_thrown_message; - const base::Value* expected_value = nullptr; + raw_ptr<const base::Value, ExperimentalRenderer> expected_value = nullptr; bool should_convert_to_base = true; bool should_convert_to_v8 = false; V8Validator validate_v8; @@ -156,7 +158,7 @@ std::string error; std::unique_ptr<base::Value> out_value; v8::Local<v8::Value> v8_out_value; - bool did_succeed = params.spec.ParseArgument( + bool did_succeed = params.spec->ParseArgument( context, val, type_refs_, params.should_convert_to_base ? &out_value : nullptr, params.should_convert_to_v8 ? &v8_out_value : nullptr, &error);
diff --git a/extensions/renderer/bindings/declarative_event.h b/extensions/renderer/bindings/declarative_event.h index f59b79e5..c57fe8c 100644 --- a/extensions/renderer/bindings/declarative_event.h +++ b/extensions/renderer/bindings/declarative_event.h
@@ -7,6 +7,7 @@ #include <vector> +#include "base/memory/raw_ptr.h" #include "gin/wrappable.h" #include "v8/include/v8.h" @@ -52,9 +53,9 @@ std::string event_name_; - APITypeReferenceMap* type_refs_; + raw_ptr<APITypeReferenceMap, ExperimentalRenderer> type_refs_; - APIRequestHandler* request_handler_; + raw_ptr<APIRequestHandler, ExperimentalRenderer> request_handler_; const int webview_instance_id_; };
diff --git a/extensions/renderer/bindings/event_emitter.h b/extensions/renderer/bindings/event_emitter.h index b84db49..acefde5 100644 --- a/extensions/renderer/bindings/event_emitter.h +++ b/extensions/renderer/bindings/event_emitter.h
@@ -8,6 +8,7 @@ #include <map> #include <vector> +#include "base/memory/raw_ptr.h" #include "extensions/common/mojom/event_dispatcher.mojom-forward.h" #include "extensions/renderer/bindings/js_runner.h" #include "gin/wrappable.h" @@ -98,7 +99,8 @@ std::unique_ptr<APIEventListeners> listeners_; // The associated exception handler; guaranteed to outlive this object. - ExceptionHandler* const exception_handler_ = nullptr; + const raw_ptr<ExceptionHandler, ExperimentalRenderer> exception_handler_ = + nullptr; // The next id to use in the pending_filters_ map. int next_filter_id_ = 0;
diff --git a/extensions/renderer/bindings/event_emitter_unittest.cc b/extensions/renderer/bindings/event_emitter_unittest.cc index acc5cec..30980f6 100644 --- a/extensions/renderer/bindings/event_emitter_unittest.cc +++ b/extensions/renderer/bindings/event_emitter_unittest.cc
@@ -6,6 +6,7 @@ #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" +#include "base/memory/raw_ref.h" #include "base/values.h" #include "extensions/common/mojom/event_dispatcher.mojom.h" #include "extensions/renderer/bindings/api_binding_test.h" @@ -141,17 +142,17 @@ v8::Local<v8::Context> context = MainContext(); struct ListenerClosureData { - EventEmitterUnittest& test; + const raw_ref<EventEmitterUnittest, ExperimentalRenderer> test; bool did_invalidate_context; - } closure_data = {*this, false}; + } closure_data = {raw_ref(*this), false}; // A wrapper that just calls DisposeContextWrapper() on the curried in data. auto listener_wrapper = [](const v8::FunctionCallbackInfo<v8::Value>& info) { ASSERT_TRUE(info.Data()->IsExternal()); auto& data = *static_cast<ListenerClosureData*>( info.Data().As<v8::External>()->Value()); - data.test.DisposeContextWrapper(&data.did_invalidate_context, - info.GetIsolate()->GetCurrentContext()); + data.test->DisposeContextWrapper(&data.did_invalidate_context, + info.GetIsolate()->GetCurrentContext()); }; ListenerTracker tracker;
diff --git a/extensions/renderer/bindings/test_js_runner.h b/extensions/renderer/bindings/test_js_runner.h index e5ea10b..54a14ab 100644 --- a/extensions/renderer/bindings/test_js_runner.h +++ b/extensions/renderer/bindings/test_js_runner.h
@@ -6,6 +6,7 @@ #define EXTENSIONS_RENDERER_BINDINGS_TEST_JS_RUNNER_H_ #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "extensions/renderer/bindings/js_runner.h" namespace extensions { @@ -41,7 +42,7 @@ private: std::unique_ptr<JSRunner> runner_; - JSRunner* old_runner_; + raw_ptr<JSRunner, ExperimentalRenderer> old_runner_; }; // A scoped object that allows errors to be thrown from running JS functions. @@ -101,7 +102,7 @@ ~PendingCall(); PendingCall(PendingCall&& other); - v8::Isolate* isolate; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate; v8::Global<v8::Function> function; v8::Global<v8::Context> context; std::vector<v8::Global<v8::Value>> arguments;
diff --git a/extensions/renderer/chrome_setting.h b/extensions/renderer/chrome_setting.h index 32cc3142..2a9a121 100644 --- a/extensions/renderer/chrome_setting.h +++ b/extensions/renderer/chrome_setting.h
@@ -7,6 +7,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "base/values.h" #include "extensions/renderer/bindings/argument_spec.h" #include "gin/wrappable.h" @@ -65,13 +66,14 @@ void HandleFunction(const std::string& function_name, gin::Arguments* arguments); - APIRequestHandler* request_handler_; + raw_ptr<APIRequestHandler, ExperimentalRenderer> request_handler_; - APIEventHandler* event_handler_; + raw_ptr<APIEventHandler, ExperimentalRenderer> event_handler_; - const APITypeReferenceMap* type_refs_; + raw_ptr<const APITypeReferenceMap, ExperimentalRenderer> type_refs_; - const BindingAccessChecker* const access_checker_; + const raw_ptr<const BindingAccessChecker, ExperimentalRenderer> + access_checker_; // The name of the preference this ChromeSetting is managing. std::string pref_name_;
diff --git a/extensions/renderer/content_setting.h b/extensions/renderer/content_setting.h index f9ff2cc9..5c37227c3f 100644 --- a/extensions/renderer/content_setting.h +++ b/extensions/renderer/content_setting.h
@@ -7,6 +7,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "base/values.h" #include "extensions/renderer/bindings/argument_spec.h" #include "gin/wrappable.h" @@ -63,11 +64,12 @@ void HandleFunction(const std::string& function_name, gin::Arguments* arguments); - APIRequestHandler* request_handler_; + raw_ptr<APIRequestHandler, ExperimentalRenderer> request_handler_; - const APITypeReferenceMap* type_refs_; + raw_ptr<const APITypeReferenceMap, ExperimentalRenderer> type_refs_; - const BindingAccessChecker* const access_checker_; + const raw_ptr<const BindingAccessChecker, ExperimentalRenderer> + access_checker_; // The name of the preference this ContentSetting is managing. std::string pref_name_;
diff --git a/extensions/renderer/content_watcher.cc b/extensions/renderer/content_watcher.cc index 99e09d1c..427212a 100644 --- a/extensions/renderer/content_watcher.cc +++ b/extensions/renderer/content_watcher.cc
@@ -8,6 +8,7 @@ #include <set> +#include "base/memory/raw_ref.h" #include "base/strings/string_piece.h" #include "content/public/renderer/render_frame.h" #include "content/public/renderer/render_frame_observer.h" @@ -169,11 +170,13 @@ : css_selectors(css_selectors) {} bool Visit(content::RenderFrame* frame) override { - FrameContentWatcher::Get(frame)->UpdateCSSSelectors(css_selectors); + FrameContentWatcher::Get(frame)->UpdateCSSSelectors(*css_selectors); return true; // Continue visiting. } - const blink::WebVector<blink::WebString>& css_selectors; + const raw_ref<const blink::WebVector<blink::WebString>, + ExperimentalRenderer> + css_selectors; }; WatchSelectors visitor(css_selectors_); content::RenderFrame::ForEach(&visitor);
diff --git a/extensions/renderer/dispatcher.h b/extensions/renderer/dispatcher.h index f5bcd9a..2b09106c 100644 --- a/extensions/renderer/dispatcher.h +++ b/extensions/renderer/dispatcher.h
@@ -15,6 +15,7 @@ #include <vector> #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/scoped_observation.h" #include "base/timer/timer.h" #include "components/version_info/version_info.h" @@ -396,7 +397,8 @@ // TODO(bashi): Consider to have a separate class to put this logic? struct PendingServiceWorker { scoped_refptr<base::SingleThreadTaskRunner> task_runner; - blink::WebServiceWorkerContextProxy* context_proxy; + raw_ptr<blink::WebServiceWorkerContextProxy, ExperimentalRenderer> + context_proxy; PendingServiceWorker(blink::WebServiceWorkerContextProxy* context_proxy); ~PendingServiceWorker();
diff --git a/extensions/renderer/extension_frame_helper.h b/extensions/renderer/extension_frame_helper.h index 76f37c9..f976231 100644 --- a/extensions/renderer/extension_frame_helper.h +++ b/extensions/renderer/extension_frame_helper.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/functional/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/values.h" #include "content/public/renderer/render_frame_observer.h" @@ -189,7 +190,7 @@ // The id of the browser window the render frame is attached to. int browser_window_id_ = -1; - Dispatcher* extension_dispatcher_; + raw_ptr<Dispatcher, ExperimentalRenderer> extension_dispatcher_; // Whether or not the current document element has been created. This starts // true as the initial empty document is already created when this class is
diff --git a/extensions/renderer/extension_injection_host.h b/extensions/renderer/extension_injection_host.h index 51a9b14d..dd051c6f 100644 --- a/extensions/renderer/extension_injection_host.h +++ b/extensions/renderer/extension_injection_host.h
@@ -5,6 +5,7 @@ #ifndef EXTENSIONS_RENDERER_EXTENSION_INJECTION_HOST_H_ #define EXTENSIONS_RENDERER_EXTENSION_INJECTION_HOST_H_ +#include "base/memory/raw_ptr.h" #include "extensions/common/extension.h" #include "extensions/renderer/injection_host.h" @@ -37,7 +38,7 @@ int tab_id, bool is_declarative) const override; - const Extension* extension_; + raw_ptr<const Extension, ExperimentalRenderer> extension_; }; } // namespace extesions
diff --git a/extensions/renderer/extension_js_runner.h b/extensions/renderer/extension_js_runner.h index 7bc0d4e1..7f3bac399 100644 --- a/extensions/renderer/extension_js_runner.h +++ b/extensions/renderer/extension_js_runner.h
@@ -5,6 +5,7 @@ #ifndef EXTENSIONS_RENDERER_EXTENSION_JS_RUNNER_H_ #define EXTENSIONS_RENDERER_EXTENSION_JS_RUNNER_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" #include "extensions/renderer/bindings/js_runner.h" @@ -42,7 +43,7 @@ base::TimeTicks start_time); // The associated ScriptContext. Guaranteed to outlive this object. - ScriptContext* const script_context_; + const raw_ptr<ScriptContext, ExperimentalRenderer> script_context_; base::WeakPtrFactory<ExtensionJSRunner> weak_factory_{this}; };
diff --git a/extensions/renderer/extension_throttle_simulation_unittest.cc b/extensions/renderer/extension_throttle_simulation_unittest.cc index df89461..6106169 100644 --- a/extensions/renderer/extension_throttle_simulation_unittest.cc +++ b/extensions/renderer/extension_throttle_simulation_unittest.cc
@@ -22,6 +22,7 @@ #include "base/environment.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/rand_util.h" #include "base/test/task_environment.h" #include "base/time/time.h" @@ -459,8 +460,9 @@ TimeTicks time_of_last_success_; bool last_attempt_was_failure_; base::TimeDelta last_downtime_duration_; - Server* const server_; - RequesterResults* const results_; // May be nullptr. + const raw_ptr<Server, ExperimentalRenderer> server_; + const raw_ptr<RequesterResults, ExperimentalRenderer> + results_; // May be nullptr. }; void SimulateAttack(Server* server,
diff --git a/extensions/renderer/extension_url_loader_throttle.h b/extensions/renderer/extension_url_loader_throttle.h index 4382676..55cc928 100644 --- a/extensions/renderer/extension_url_loader_throttle.h +++ b/extensions/renderer/extension_url_loader_throttle.h
@@ -8,6 +8,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "third_party/blink/public/common/loader/url_loader_throttle.h" #include "url/gurl.h" @@ -47,7 +48,7 @@ // blink::URLLoaderThrottle: void DetachFromCurrentSequence() override; - ExtensionThrottleManager* manager_ = nullptr; + raw_ptr<ExtensionThrottleManager, ExperimentalRenderer> manager_ = nullptr; GURL start_request_url_; };
diff --git a/extensions/renderer/feature_cache_unittest.cc b/extensions/renderer/feature_cache_unittest.cc index c345dc6..d3aef24 100644 --- a/extensions/renderer/feature_cache_unittest.cc +++ b/extensions/renderer/feature_cache_unittest.cc
@@ -5,6 +5,7 @@ #include "extensions/renderer/feature_cache.h" #include "base/containers/contains.h" +#include "base/memory/raw_ptr.h" #include "components/crx_file/id_util.h" #include "content/public/test/test_utils.h" #include "extensions/common/extension.h" @@ -27,7 +28,7 @@ struct FakeContext { Feature::Context context_type; - const Extension* extension; + raw_ptr<const Extension, ExperimentalRenderer> extension; const GURL url; };
diff --git a/extensions/renderer/gc_callback.h b/extensions/renderer/gc_callback.h index 62f9365..354a76c 100644 --- a/extensions/renderer/gc_callback.h +++ b/extensions/renderer/gc_callback.h
@@ -6,6 +6,7 @@ #define EXTENSIONS_RENDERER_GC_CALLBACK_H_ #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/task/single_thread_task_runner.h" @@ -49,7 +50,7 @@ void OnContextInvalidated(); // The context which owns |object_|. - ScriptContext* context_; + raw_ptr<ScriptContext, ExperimentalRenderer> context_; // A task runner associated with the frame for the context. scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
diff --git a/extensions/renderer/guest_view/mime_handler_view/mime_handler_view_frame_container.h b/extensions/renderer/guest_view/mime_handler_view/mime_handler_view_frame_container.h index 8bdc3fdc..6e4ef08 100644 --- a/extensions/renderer/guest_view/mime_handler_view/mime_handler_view_frame_container.h +++ b/extensions/renderer/guest_view/mime_handler_view/mime_handler_view_frame_container.h
@@ -5,6 +5,7 @@ #ifndef EXTENSIONS_RENDERER_GUEST_VIEW_MIME_HANDLER_VIEW_MIME_HANDLER_VIEW_FRAME_CONTAINER_H_ #define EXTENSIONS_RENDERER_GUEST_VIEW_MIME_HANDLER_VIEW_MIME_HANDLER_VIEW_FRAME_CONTAINER_H_ +#include "base/memory/raw_ptr.h" #include "components/guest_view/common/guest_view_constants.h" #include "extensions/renderer/guest_view/mime_handler_view/post_message_support.h" #include "third_party/blink/public/common/tokens/tokens.h" @@ -81,7 +82,8 @@ bool AreFramesValid(); // Controls the lifetime of |this| (always alive). - MimeHandlerViewContainerManager* const container_manager_; + const raw_ptr<MimeHandlerViewContainerManager, ExperimentalRenderer> + container_manager_; blink::WebElement plugin_element_; const GURL resource_url_; const std::string mime_type_;
diff --git a/extensions/renderer/guest_view/mime_handler_view/post_message_support.h b/extensions/renderer/guest_view/mime_handler_view/post_message_support.h index 878dff82..5efe407 100644 --- a/extensions/renderer/guest_view/mime_handler_view/post_message_support.h +++ b/extensions/renderer/guest_view/mime_handler_view/post_message_support.h
@@ -8,6 +8,7 @@ #include <memory> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/values.h" #include "v8/include/v8.h" @@ -99,7 +100,7 @@ // the messages are forwarded to the target frame. bool is_active_ = false; - Delegate* const delegate_; + const raw_ptr<Delegate, ExperimentalRenderer> delegate_; base::WeakPtrFactory<PostMessageSupport> weak_factory_{this}; };
diff --git a/extensions/renderer/ipc_message_sender.cc b/extensions/renderer/ipc_message_sender.cc index 1e1d5e31..45563cfb 100644 --- a/extensions/renderer/ipc_message_sender.cc +++ b/extensions/renderer/ipc_message_sender.cc
@@ -6,6 +6,7 @@ #include <utility> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/metrics/histogram_macros.h" #include "content/public/renderer/render_frame.h" @@ -310,7 +311,7 @@ return renderer_host_.get(); } - content::RenderThread* const render_thread_; + const raw_ptr<content::RenderThread, ExperimentalRenderer> render_thread_; mojo::AssociatedRemote<mojom::EventRouter> event_router_remote_; mojo::AssociatedRemote<mojom::RendererHost> renderer_host_; mojo::AssociatedRemote<extensions::mojom::RendererAutomationRegistry> @@ -557,8 +558,9 @@ return renderer_host_.get(); } - WorkerThreadDispatcher* const dispatcher_; - blink::WebServiceWorkerContextProxy* const context_proxy_; + const raw_ptr<WorkerThreadDispatcher, ExperimentalRenderer> dispatcher_; + const raw_ptr<blink::WebServiceWorkerContextProxy, ExperimentalRenderer> + context_proxy_; const int64_t service_worker_version_id_; absl::optional<ExtensionId> extension_id_; mojo::AssociatedRemote<mojom::RendererHost> renderer_host_;
diff --git a/extensions/renderer/module_system.h b/extensions/renderer/module_system.h index 39a5a98..01736a69 100644 --- a/extensions/renderer/module_system.h +++ b/extensions/renderer/module_system.h
@@ -13,6 +13,7 @@ #include <vector> #include "base/compiler_specific.h" +#include "base/memory/raw_ptr.h" #include "extensions/renderer/native_handler.h" #include "extensions/renderer/object_backed_native_handler.h" #include "third_party/blink/public/web/web_script_execution_callback.h" @@ -54,7 +55,7 @@ std::string CreateExceptionString(const v8::TryCatch& try_catch); // A script context associated with this handler. Owned by the module // system. - ScriptContext* context_; + raw_ptr<ScriptContext, ExperimentalRenderer> context_; }; // Enables native bindings for the duration of its lifetime. @@ -212,14 +213,14 @@ v8::Local<v8::Function> GetModuleFunction(const std::string& module_name, const std::string& method_name); - ScriptContext* context_; + raw_ptr<ScriptContext, ExperimentalRenderer> context_; // TODO(1276144): remove once investigation finished. bool has_been_invalidated_ = false; // A map from module names to the JS source for that module. GetSource() // performs a lookup on this map. - const SourceMap* const source_map_; + const raw_ptr<const SourceMap, ExperimentalRenderer> source_map_; // A map from native handler names to native handlers. NativeHandlerMap native_handler_map_;
diff --git a/extensions/renderer/module_system_test.cc b/extensions/renderer/module_system_test.cc index 22c62061..3fc9788 100644 --- a/extensions/renderer/module_system_test.cc +++ b/extensions/renderer/module_system_test.cc
@@ -17,6 +17,7 @@ #include "base/functional/bind.h" #include "base/functional/callback.h" #include "base/lazy_instance.h" +#include "base/memory/raw_ptr.h" #include "base/path_service.h" #include "base/run_loop.h" #include "base/strings/string_piece.h" @@ -99,7 +100,8 @@ } private: - NativeExtensionBindingsSystem* bindings_system_ = nullptr; + raw_ptr<NativeExtensionBindingsSystem, ExperimentalRenderer> + bindings_system_ = nullptr; }; } // namespace
diff --git a/extensions/renderer/module_system_test.h b/extensions/renderer/module_system_test.h index a6cb27e..f92749b 100644 --- a/extensions/renderer/module_system_test.h +++ b/extensions/renderer/module_system_test.h
@@ -7,6 +7,7 @@ #include <set> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/test/task_environment.h" #include "extensions/renderer/module_system.h" @@ -79,14 +80,14 @@ AssertNatives* assert_natives() { return assert_natives_; } private: - v8::Isolate* isolate_; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_; std::unique_ptr<gin::ContextHolder> context_holder_; v8::HandleScope handle_scope_; scoped_refptr<const Extension> extension_; - ScriptContextSet* context_set_; - ScriptContext* context_; - AssertNatives* assert_natives_; + raw_ptr<ScriptContextSet, ExperimentalRenderer> context_set_; + raw_ptr<ScriptContext, ExperimentalRenderer> context_; + raw_ptr<AssertNatives, ExperimentalRenderer> assert_natives_; std::unique_ptr<StringSourceMap> source_map_; std::unique_ptr<NativeExtensionBindingsSystem> bindings_system_; @@ -137,7 +138,7 @@ base::test::TaskEnvironment task_environment_; gin::IsolateHolder isolate_holder_; - v8::Isolate* isolate_; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_; std::set<std::string> extension_ids_; ScriptContextSet context_set_;
diff --git a/extensions/renderer/native_extension_bindings_system_test_base.h b/extensions/renderer/native_extension_bindings_system_test_base.h index 7df03b4e0..b6bc2c7 100644 --- a/extensions/renderer/native_extension_bindings_system_test_base.h +++ b/extensions/renderer/native_extension_bindings_system_test_base.h
@@ -8,6 +8,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "base/values.h" #include "extensions/common/api/messaging/channel_type.h" #include "extensions/common/api/messaging/message.h" @@ -165,7 +166,8 @@ std::vector<ScriptContext*> raw_script_contexts_; std::unique_ptr<NativeExtensionBindingsSystem> bindings_system_; // The TestIPCMessageSender; owned by the bindings system. - TestIPCMessageSender* ipc_message_sender_ = nullptr; + raw_ptr<TestIPCMessageSender, ExperimentalRenderer> ipc_message_sender_ = + nullptr; StringSourceMap source_map_; TestExtensionsRendererClient renderer_client_;
diff --git a/extensions/renderer/object_backed_native_handler.h b/extensions/renderer/object_backed_native_handler.h index c4f9261c..fbcc424 100644 --- a/extensions/renderer/object_backed_native_handler.h +++ b/extensions/renderer/object_backed_native_handler.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "extensions/renderer/native_handler.h" #include "v8/include/v8-forward.h" #include "v8/include/v8-persistent-handle.h" @@ -131,7 +132,7 @@ // Owned list of HandlerFunctions. std::vector<std::unique_ptr<HandlerFunction>> handler_functions_; - ScriptContext* context_; + raw_ptr<ScriptContext, ExperimentalRenderer> context_; v8::Global<v8::ObjectTemplate> object_template_; };
diff --git a/extensions/renderer/renderer_frame_context_data.cc b/extensions/renderer/renderer_frame_context_data.cc index 5c72ca2..77ef99b 100644 --- a/extensions/renderer/renderer_frame_context_data.cc +++ b/extensions/renderer/renderer_frame_context_data.cc
@@ -93,7 +93,7 @@ uintptr_t RendererFrameContextData::GetId() const { CHECK(frame_); - return reinterpret_cast<uintptr_t>(frame_); + return reinterpret_cast<uintptr_t>(frame_.get()); } } // namespace extensions
diff --git a/extensions/renderer/renderer_frame_context_data.h b/extensions/renderer/renderer_frame_context_data.h index 62e9dee..dd6a7180 100644 --- a/extensions/renderer/renderer_frame_context_data.h +++ b/extensions/renderer/renderer_frame_context_data.h
@@ -8,6 +8,7 @@ #include <stdint.h> #include <memory> +#include "base/memory/raw_ptr.h" #include "extensions/common/frame_context_data.h" #include "third_party/blink/public/web/web_local_frame.h" @@ -45,7 +46,7 @@ uintptr_t GetId() const override; private: - const blink::WebLocalFrame* const frame_; + const raw_ptr<const blink::WebLocalFrame, ExperimentalRenderer> frame_; }; } // namespace extensions
diff --git a/extensions/renderer/resource_bundle_source_map.h b/extensions/renderer/resource_bundle_source_map.h index 5c320c5..3192b400 100644 --- a/extensions/renderer/resource_bundle_source_map.h +++ b/extensions/renderer/resource_bundle_source_map.h
@@ -9,6 +9,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "extensions/renderer/source_map.h" #include "v8/include/v8-forward.h" @@ -47,7 +48,7 @@ mutable std::unique_ptr<std::string> cached; }; - const ui::ResourceBundle* resource_bundle_; + raw_ptr<const ui::ResourceBundle, ExperimentalRenderer> resource_bundle_; std::map<std::string, ResourceInfo> resource_map_; };
diff --git a/extensions/renderer/safe_builtins.h b/extensions/renderer/safe_builtins.h index 65a66429..872ed88 100644 --- a/extensions/renderer/safe_builtins.h +++ b/extensions/renderer/safe_builtins.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "v8/include/v8-forward.h" namespace extensions { @@ -45,7 +46,7 @@ v8::Local<v8::Object> GetPromise() const; private: - ScriptContext* context_; + raw_ptr<ScriptContext, ExperimentalRenderer> context_; }; } // namespace extensions
diff --git a/extensions/renderer/scoped_web_frame.h b/extensions/renderer/scoped_web_frame.h index 1ccf80c9..604ac59 100644 --- a/extensions/renderer/scoped_web_frame.h +++ b/extensions/renderer/scoped_web_frame.h
@@ -5,6 +5,7 @@ #ifndef EXTENSIONS_RENDERER_SCOPED_WEB_FRAME_H_ #define EXTENSIONS_RENDERER_SCOPED_WEB_FRAME_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h" #include "third_party/blink/public/web/web_local_frame.h" #include "third_party/blink/public/web/web_local_frame_client.h" @@ -33,8 +34,8 @@ // ~ScopedWebFrame explicitly closes the WebView. std::unique_ptr<blink::scheduler::WebAgentGroupScheduler> agent_group_scheduler_; - blink::WebView* view_; - blink::WebLocalFrame* frame_; + raw_ptr<blink::WebView, ExperimentalRenderer> view_; + raw_ptr<blink::WebLocalFrame, ExperimentalRenderer> frame_; }; } // namespace extensions
diff --git a/extensions/renderer/script_context.cc b/extensions/renderer/script_context.cc index ca698a2a..83b4c83 100644 --- a/extensions/renderer/script_context.cc +++ b/extensions/renderer/script_context.cc
@@ -477,7 +477,7 @@ " context_type: %s\n" " effective extension id: %s\n" " effective context type: %s", - extension_.get() ? extension_->id().c_str() : "(none)", web_frame_, + extension_.get() ? extension_->id().c_str() : "(none)", web_frame_.get(), url_.spec().c_str(), GetContextTypeDescription().c_str(), effective_extension_.get() ? effective_extension_->id().c_str() : "(none)",
diff --git a/extensions/renderer/script_context.h b/extensions/renderer/script_context.h index cfb3fafe..836e7fb0 100644 --- a/extensions/renderer/script_context.h +++ b/extensions/renderer/script_context.h
@@ -12,6 +12,7 @@ #include "base/compiler_specific.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/threading/thread_checker.h" #include "base/unguessable_token.h" #include "extensions/common/features/feature.h" @@ -200,8 +201,8 @@ ~ScopedFrameDocumentLoader(); private: - blink::WebLocalFrame* frame_; - blink::WebDocumentLoader* document_loader_; + raw_ptr<blink::WebLocalFrame, ExperimentalRenderer> frame_; + raw_ptr<blink::WebDocumentLoader, ExperimentalRenderer> document_loader_; }; // TODO(devlin): Move all these Get*URL*() methods out of here? While they are @@ -290,7 +291,7 @@ // The WebLocalFrame associated with this context. This can be NULL because // this object can outlive is destroyed asynchronously. - blink::WebLocalFrame* web_frame_; + raw_ptr<blink::WebLocalFrame, ExperimentalRenderer> web_frame_; // The extension associated with this context, or NULL if there is none. This // might be a hosted app in the case that this context is hosting a web URL. @@ -323,7 +324,7 @@ // invalidation. std::vector<base::OnceClosure> invalidate_observers_; - v8::Isolate* isolate_; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_; GURL url_;
diff --git a/extensions/renderer/script_context_set.h b/extensions/renderer/script_context_set.h index e276ac37..e82fd6e 100644 --- a/extensions/renderer/script_context_set.h +++ b/extensions/renderer/script_context_set.h
@@ -11,6 +11,7 @@ #include <set> #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "extensions/common/extension_id.h" #include "extensions/common/features/feature.h" @@ -130,7 +131,7 @@ // Weak reference to all installed Extensions that are also active in this // process. - ExtensionIdSet* active_extension_ids_; + raw_ptr<ExtensionIdSet, ExperimentalRenderer> active_extension_ids_; // The set of all ScriptContexts we own. std::set<ScriptContext*> contexts_;
diff --git a/extensions/renderer/script_injection.cc b/extensions/renderer/script_injection.cc index 34777e89..6c924dc 100644 --- a/extensions/renderer/script_injection.cc +++ b/extensions/renderer/script_injection.cc
@@ -10,6 +10,7 @@ #include "base/feature_list.h" #include "base/functional/bind.h" #include "base/lazy_instance.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/histogram_macros.h" #include "base/time/time.h" #include "base/timer/elapsed_timer.h" @@ -68,7 +69,7 @@ void WillDetach() override { injection_->invalidate_render_frame(); } void OnDestruct() override { injection_->invalidate_render_frame(); } - ScriptInjection* injection_; + raw_ptr<ScriptInjection, ExperimentalRenderer> injection_; }; ScriptInjection::ScriptInjection(
diff --git a/extensions/renderer/script_injection.h b/extensions/renderer/script_injection.h index ab1871c..511526a 100644 --- a/extensions/renderer/script_injection.h +++ b/extensions/renderer/script_injection.h
@@ -11,6 +11,7 @@ #include <vector> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "extensions/common/mojom/host_id.mojom-forward.h" #include "extensions/common/mojom/run_location.mojom-shared.h" @@ -128,7 +129,7 @@ std::unique_ptr<ScriptInjector> injector_; // The RenderFrame into which this should inject the script. - content::RenderFrame* render_frame_; + raw_ptr<content::RenderFrame, ExperimentalRenderer> render_frame_; // The associated injection host. std::unique_ptr<const InjectionHost> injection_host_;
diff --git a/extensions/renderer/script_injection_manager.cc b/extensions/renderer/script_injection_manager.cc index 3d26c2d6..37899e10d 100644 --- a/extensions/renderer/script_injection_manager.cc +++ b/extensions/renderer/script_injection_manager.cc
@@ -11,6 +11,7 @@ #include "base/containers/cxx20_erase.h" #include "base/feature_list.h" #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/ranges/algorithm.h" #include "base/values.h" @@ -95,7 +96,7 @@ void InvalidateAndResetFrame(bool force_reset); // The owning ScriptInjectionManager. - ScriptInjectionManager* manager_; + raw_ptr<ScriptInjectionManager, ExperimentalRenderer> manager_; bool should_run_idle_ = true; @@ -246,7 +247,7 @@ ScriptInjectionManager::ScriptInjectionManager( UserScriptSetManager* user_script_set_manager) : user_script_set_manager_(user_script_set_manager) { - user_script_set_manager_observation_.Observe(user_script_set_manager_); + user_script_set_manager_observation_.Observe(user_script_set_manager_.get()); } ScriptInjectionManager::~ScriptInjectionManager() {
diff --git a/extensions/renderer/script_injection_manager.h b/extensions/renderer/script_injection_manager.h index 696d6c4..e0e9cd3 100644 --- a/extensions/renderer/script_injection_manager.h +++ b/extensions/renderer/script_injection_manager.h
@@ -13,6 +13,7 @@ #include <vector> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/scoped_observation.h" #include "extensions/common/mojom/frame.mojom.h" #include "extensions/common/mojom/host_id.mojom-forward.h" @@ -116,7 +117,7 @@ std::vector<std::unique_ptr<RFOHelper>> rfo_helpers_; // The set of UserScripts associated with extensions. Owned by the Dispatcher. - UserScriptSetManager* user_script_set_manager_; + raw_ptr<UserScriptSetManager, ExperimentalRenderer> user_script_set_manager_; // Pending injections which are waiting for either the proper run location or // user consent.
diff --git a/extensions/renderer/service_worker_data.h b/extensions/renderer/service_worker_data.h index c09bfc5c..ad59d54 100644 --- a/extensions/renderer/service_worker_data.h +++ b/extensions/renderer/service_worker_data.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/unguessable_token.h" #include "extensions/renderer/v8_schema_registry.h" @@ -44,7 +45,7 @@ private: const int64_t service_worker_version_id_; const base::UnguessableToken activation_sequence_; - ScriptContext* const context_ = nullptr; + const raw_ptr<ScriptContext, ExperimentalRenderer> context_ = nullptr; std::unique_ptr<V8SchemaRegistry> v8_schema_registry_; std::unique_ptr<NativeExtensionBindingsSystem> bindings_system_;
diff --git a/extensions/renderer/storage_area.h b/extensions/renderer/storage_area.h index 804199a5..f775e74 100644 --- a/extensions/renderer/storage_area.h +++ b/extensions/renderer/storage_area.h
@@ -7,6 +7,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "base/strings/string_piece.h" #include "base/values.h" #include "v8/include/v8-forward.h" @@ -54,15 +55,16 @@ v8::Local<v8::Object> wrapper); private: - APIRequestHandler* request_handler_; + raw_ptr<APIRequestHandler, ExperimentalRenderer> request_handler_; - APIEventHandler* event_handler_; + raw_ptr<APIEventHandler, ExperimentalRenderer> event_handler_; - const APITypeReferenceMap* type_refs_; + raw_ptr<const APITypeReferenceMap, ExperimentalRenderer> type_refs_; std::string name_; - const BindingAccessChecker* const access_checker_; + const raw_ptr<const BindingAccessChecker, ExperimentalRenderer> + access_checker_; }; } // namespace extensions
diff --git a/extensions/renderer/user_script_injector.h b/extensions/renderer/user_script_injector.h index 0a30e3e5..7b682550 100644 --- a/extensions/renderer/user_script_injector.h +++ b/extensions/renderer/user_script_injector.h
@@ -8,6 +8,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "base/scoped_observation.h" #include "extensions/common/mojom/css_origin.mojom-shared.h" #include "extensions/common/mojom/host_id.mojom.h" @@ -75,12 +76,12 @@ // The associated user script. Owned by the UserScriptSet that created this // object. - const UserScript* script_; + raw_ptr<const UserScript, ExperimentalRenderer> script_; // The UserScriptSet that eventually owns the UserScript this // UserScriptInjector points to. Outlives `this` unless the UserScriptSet may // be destroyed first, and `this` will be destroyed immediately after. - UserScriptSet* const user_script_set_; + const raw_ptr<UserScriptSet, ExperimentalRenderer> user_script_set_; // The id of the associated user script. We cache this because when we update // the |script_| associated with this injection, the old reference may be
diff --git a/extensions/renderer/v8_context_native_handler.h b/extensions/renderer/v8_context_native_handler.h index cb2990a..9b8eb54 100644 --- a/extensions/renderer/v8_context_native_handler.h +++ b/extensions/renderer/v8_context_native_handler.h
@@ -5,6 +5,7 @@ #ifndef EXTENSIONS_RENDERER_V8_CONTEXT_NATIVE_HANDLER_H_ #define EXTENSIONS_RENDERER_V8_CONTEXT_NATIVE_HANDLER_H_ +#include "base/memory/raw_ptr.h" #include "extensions/renderer/object_backed_native_handler.h" #include "v8/include/v8-forward.h" @@ -21,7 +22,7 @@ void GetAvailability(const v8::FunctionCallbackInfo<v8::Value>& args); void GetModuleSystem(const v8::FunctionCallbackInfo<v8::Value>& args); - ScriptContext* context_; + raw_ptr<ScriptContext, ExperimentalRenderer> context_; }; } // namespace extensions
diff --git a/extensions/renderer/v8_schema_registry.cc b/extensions/renderer/v8_schema_registry.cc index d04cd6e..296c689 100644 --- a/extensions/renderer/v8_schema_registry.cc +++ b/extensions/renderer/v8_schema_registry.cc
@@ -11,6 +11,7 @@ #include "base/check.h" #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/values.h" #include "content/public/renderer/v8_value_converter.h" #include "extensions/common/extension_api.h" @@ -94,7 +95,7 @@ } std::unique_ptr<ScriptContext> context_; - V8SchemaRegistry* registry_; + raw_ptr<V8SchemaRegistry, ExperimentalRenderer> registry_; }; } // namespace
diff --git a/infra/config/generated/testing/variants.pyl b/infra/config/generated/testing/variants.pyl index fa8466b..a83d262 100644 --- a/infra/config/generated/testing/variants.pyl +++ b/infra/config/generated/testing/variants.pyl
@@ -70,16 +70,16 @@ }, 'LACROS_VERSION_SKEW_CANARY': { 'identifier': 'Lacros version skew testing ash canary', - 'description': 'Run with ash-chrome version 119.0.6042.0', + 'description': 'Run with ash-chrome version 119.0.6043.0', 'args': [ - '--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6042.0/test_ash_chrome', + '--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome', ], 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/linux-ash-chromium/x86_64/ash.zip', - 'location': 'lacros_version_skew_tests_v119.0.6042.0', - 'revision': 'version:119.0.6042.0', + 'location': 'lacros_version_skew_tests_v119.0.6043.0', + 'revision': 'version:119.0.6043.0', }, ], },
diff --git a/infra/config/targets/lacros-version-skew-variants.json b/infra/config/targets/lacros-version-skew-variants.json index b993d061d..fd4ca76 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_v119.0.6042.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 119.0.6042.0", + "description": "Run with ash-chrome version 119.0.6043.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_v119.0.6042.0", - "revision": "version:119.0.6042.0" + "location": "lacros_version_skew_tests_v119.0.6043.0", + "revision": "version:119.0.6043.0" } ] }
diff --git a/internal b/internal index be82b57..1e6025a 160000 --- a/internal +++ b/internal
@@ -1 +1 @@ -Subproject commit be82b5757080fda4c40448483d9c5197a9540f5a +Subproject commit 1e6025a7fe2856d4c9400937c1210736f71428d9
diff --git a/ios/chrome/app/BUILD.gn b/ios/chrome/app/BUILD.gn index afb2435..7383980 100644 --- a/ios/chrome/app/BUILD.gn +++ b/ios/chrome/app/BUILD.gn
@@ -495,12 +495,12 @@ "//ios/chrome/browser/promos_manager:factory", "//ios/chrome/browser/push_notification:push_notification_service", "//ios/chrome/browser/reading_list", - "//ios/chrome/browser/screenshot", + "//ios/chrome/browser/screenshot/model", "//ios/chrome/browser/search_engines", "//ios/chrome/browser/search_engines:extension_search_engine_data_updater", "//ios/chrome/browser/search_engines:search_engines_util", "//ios/chrome/browser/sessions:session_service", - "//ios/chrome/browser/share_extension", + "//ios/chrome/browser/share_extension/model", "//ios/chrome/browser/shared/coordinator/scene", "//ios/chrome/browser/shared/coordinator/scene:scene_state_header", "//ios/chrome/browser/shared/model/application_context",
diff --git a/ios/chrome/app/main_controller.mm b/ios/chrome/app/main_controller.mm index 4831a86..dffa3a0 100644 --- a/ios/chrome/app/main_controller.mm +++ b/ios/chrome/app/main_controller.mm
@@ -82,13 +82,13 @@ #import "ios/chrome/browser/omaha/omaha_service.h" #import "ios/chrome/browser/passwords/password_manager_util_ios.h" #import "ios/chrome/browser/promos_manager/promos_manager_factory.h" -#import "ios/chrome/browser/screenshot/screenshot_metrics_recorder.h" +#import "ios/chrome/browser/screenshot/model/screenshot_metrics_recorder.h" #import "ios/chrome/browser/search_engines/extension_search_engine_data_updater.h" #import "ios/chrome/browser/search_engines/search_engines_util.h" #import "ios/chrome/browser/search_engines/template_url_service_factory.h" #import "ios/chrome/browser/sessions/session_service_ios.h" -#import "ios/chrome/browser/share_extension/share_extension_service.h" -#import "ios/chrome/browser/share_extension/share_extension_service_factory.h" +#import "ios/chrome/browser/share_extension/model/share_extension_service.h" +#import "ios/chrome/browser/share_extension/model/share_extension_service_factory.h" #import "ios/chrome/browser/shared/coordinator/scene/scene_delegate.h" #import "ios/chrome/browser/shared/coordinator/scene/scene_state.h" #import "ios/chrome/browser/shared/model/application_context/application_context.h"
diff --git a/ios/chrome/browser/application_context/model/BUILD.gn b/ios/chrome/browser/application_context/model/BUILD.gn index c90808e04..ed5e2ea 100644 --- a/ios/chrome/browser/application_context/model/BUILD.gn +++ b/ios/chrome/browser/application_context/model/BUILD.gn
@@ -45,7 +45,7 @@ "//ios/chrome/browser/shared/model/paths", "//ios/chrome/browser/shared/model/prefs:browser_prefs", "//ios/chrome/browser/shared/model/prefs:pref_names", - "//ios/chrome/browser/update_client", + "//ios/chrome/browser/update_client/model", "//ios/chrome/common", "//ios/components/security_interstitials/safe_browsing", "//ios/public/provider/chrome/browser/app_distribution:app_distribution_api",
diff --git a/ios/chrome/browser/application_context/model/DEPS b/ios/chrome/browser/application_context/model/DEPS index 1fab48d..186848fb 100644 --- a/ios/chrome/browser/application_context/model/DEPS +++ b/ios/chrome/browser/application_context/model/DEPS
@@ -10,5 +10,5 @@ "+ios/chrome/browser/prefs", "+ios/chrome/browser/push_notification", "+ios/chrome/browser/segmentation_platform", - "+ios/chrome/browser/update_client", + "+ios/chrome/browser/update_client/model", ]
diff --git a/ios/chrome/browser/application_context/model/application_context_impl.mm b/ios/chrome/browser/application_context/model/application_context_impl.mm index 40fab8950..c4b7637e 100644 --- a/ios/chrome/browser/application_context/model/application_context_impl.mm +++ b/ios/chrome/browser/application_context/model/application_context_impl.mm
@@ -61,7 +61,7 @@ #import "ios/chrome/browser/shared/model/paths/paths.h" #import "ios/chrome/browser/shared/model/prefs/browser_prefs.h" #import "ios/chrome/browser/shared/model/prefs/pref_names.h" -#import "ios/chrome/browser/update_client/ios_chrome_update_query_params_delegate.h" +#import "ios/chrome/browser/update_client/model/ios_chrome_update_query_params_delegate.h" #import "ios/chrome/common/channel_info.h" #import "ios/components/security_interstitials/safe_browsing/safe_browsing_service_impl.h" #import "ios/public/provider/chrome/browser/app_distribution/app_distribution_api.h"
diff --git a/ios/chrome/browser/browser_state/model/BUILD.gn b/ios/chrome/browser/browser_state/model/BUILD.gn index 6b8c1a2..d80b813 100644 --- a/ios/chrome/browser/browser_state/model/BUILD.gn +++ b/ios/chrome/browser/browser_state/model/BUILD.gn
@@ -139,7 +139,7 @@ "//ios/chrome/browser/trusted_vault", "//ios/chrome/browser/ui/fullscreen", "//ios/chrome/browser/ui/voice", - "//ios/chrome/browser/unified_consent", + "//ios/chrome/browser/unified_consent/model", "//ios/chrome/browser/web_state_list/web_usage_enabler", "//ios/chrome/browser/webdata_services/model", "//ios/components/cookie_util",
diff --git a/ios/chrome/browser/browser_state/model/DEPS b/ios/chrome/browser/browser_state/model/DEPS index f59331e7..4c173adc 100644 --- a/ios/chrome/browser/browser_state/model/DEPS +++ b/ios/chrome/browser/browser_state/model/DEPS
@@ -11,7 +11,7 @@ "+ios/chrome/browser/segmentation_platform", "+ios/chrome/browser/signin", "+ios/chrome/browser/supervised_user", - "+ios/chrome/browser/unified_consent", + "+ios/chrome/browser/unified_consent/model", ] specific_include_rules = {
diff --git a/ios/chrome/browser/browser_state/model/browser_state_keyed_service_factories.mm b/ios/chrome/browser/browser_state/model/browser_state_keyed_service_factories.mm index 940a3ea..f7b93fa8 100644 --- a/ios/chrome/browser/browser_state/model/browser_state_keyed_service_factories.mm +++ b/ios/chrome/browser/browser_state/model/browser_state_keyed_service_factories.mm
@@ -90,7 +90,7 @@ #import "ios/chrome/browser/translate/translate_ranker_factory.h" #import "ios/chrome/browser/trusted_vault/ios_trusted_vault_service_factory.h" #import "ios/chrome/browser/ui/voice/text_to_speech_playback_controller_factory.h" -#import "ios/chrome/browser/unified_consent/unified_consent_service_factory.h" +#import "ios/chrome/browser/unified_consent/model/unified_consent_service_factory.h" #import "ios/chrome/browser/webdata_services/model/web_data_service_factory.h" #if BUILDFLAG(IOS_CREDENTIAL_PROVIDER_ENABLED)
diff --git a/ios/chrome/browser/browser_state/model/chrome_browser_state_manager_impl.mm b/ios/chrome/browser/browser_state/model/chrome_browser_state_manager_impl.mm index fd1e4d9..aac75488 100644 --- a/ios/chrome/browser/browser_state/model/chrome_browser_state_manager_impl.mm +++ b/ios/chrome/browser/browser_state/model/chrome_browser_state_manager_impl.mm
@@ -37,7 +37,7 @@ #import "ios/chrome/browser/signin/identity_manager_factory.h" #import "ios/chrome/browser/supervised_user/child_account_service_factory.h" #import "ios/chrome/browser/supervised_user/supervised_user_service_factory.h" -#import "ios/chrome/browser/unified_consent/unified_consent_service_factory.h" +#import "ios/chrome/browser/unified_consent/model/unified_consent_service_factory.h" namespace {
diff --git a/ios/chrome/browser/screenshot/BUILD.gn b/ios/chrome/browser/screenshot/model/BUILD.gn similarity index 95% rename from ios/chrome/browser/screenshot/BUILD.gn rename to ios/chrome/browser/screenshot/model/BUILD.gn index 95c42730..1cdd0731 100644 --- a/ios/chrome/browser/screenshot/BUILD.gn +++ b/ios/chrome/browser/screenshot/model/BUILD.gn
@@ -2,7 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -source_set("screenshot") { +source_set("model") { sources = [ "screenshot_delegate.h", "screenshot_delegate.mm", @@ -25,7 +25,7 @@ "screenshot_metrics_recorder_unittest.mm", ] deps = [ - ":screenshot", + ":model", "//base", "//base/test:test_support", "//ios/chrome/browser/shared/coordinator/scene/test",
diff --git a/ios/chrome/browser/screenshot/DEPS b/ios/chrome/browser/screenshot/model/DEPS similarity index 100% rename from ios/chrome/browser/screenshot/DEPS rename to ios/chrome/browser/screenshot/model/DEPS
diff --git a/ios/chrome/browser/screenshot/screenshot_delegate.h b/ios/chrome/browser/screenshot/model/screenshot_delegate.h similarity index 79% rename from ios/chrome/browser/screenshot/screenshot_delegate.h rename to ios/chrome/browser/screenshot/model/screenshot_delegate.h index 97c8326..75cf7ab1 100644 --- a/ios/chrome/browser/screenshot/screenshot_delegate.h +++ b/ios/chrome/browser/screenshot/model/screenshot_delegate.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_BROWSER_SCREENSHOT_SCREENSHOT_DELEGATE_H_ -#define IOS_CHROME_BROWSER_SCREENSHOT_SCREENSHOT_DELEGATE_H_ +#ifndef IOS_CHROME_BROWSER_SCREENSHOT_MODEL_SCREENSHOT_DELEGATE_H_ +#define IOS_CHROME_BROWSER_SCREENSHOT_MODEL_SCREENSHOT_DELEGATE_H_ #import <UIKit/UIKit.h> @@ -25,4 +25,4 @@ @end -#endif // IOS_CHROME_BROWSER_SCREENSHOT_SCREENSHOT_DELEGATE_H_ +#endif // IOS_CHROME_BROWSER_SCREENSHOT_MODEL_SCREENSHOT_DELEGATE_H_
diff --git a/ios/chrome/browser/screenshot/screenshot_delegate.mm b/ios/chrome/browser/screenshot/model/screenshot_delegate.mm similarity index 96% rename from ios/chrome/browser/screenshot/screenshot_delegate.mm rename to ios/chrome/browser/screenshot/model/screenshot_delegate.mm index 5c09bdb..359e29d 100644 --- a/ios/chrome/browser/screenshot/screenshot_delegate.mm +++ b/ios/chrome/browser/screenshot/model/screenshot_delegate.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/screenshot/screenshot_delegate.h" +#import "ios/chrome/browser/screenshot/model/screenshot_delegate.h" #import "ios/chrome/browser/shared/model/browser/browser.h" #import "ios/chrome/browser/shared/model/browser/browser_provider.h"
diff --git a/ios/chrome/browser/screenshot/screenshot_delegate_unittest.mm b/ios/chrome/browser/screenshot/model/screenshot_delegate_unittest.mm similarity index 98% rename from ios/chrome/browser/screenshot/screenshot_delegate_unittest.mm rename to ios/chrome/browser/screenshot/model/screenshot_delegate_unittest.mm index 4b45a42..cfe15ff 100644 --- a/ios/chrome/browser/screenshot/screenshot_delegate_unittest.mm +++ b/ios/chrome/browser/screenshot/model/screenshot_delegate_unittest.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/screenshot/screenshot_delegate.h" +#import "ios/chrome/browser/screenshot/model/screenshot_delegate.h" #import "ios/chrome/browser/shared/coordinator/scene/test/stub_browser_provider.h" #import "ios/chrome/browser/shared/coordinator/scene/test/stub_browser_provider_interface.h"
diff --git a/ios/chrome/browser/screenshot/screenshot_metrics_recorder.h b/ios/chrome/browser/screenshot/model/screenshot_metrics_recorder.h similarity index 63% rename from ios/chrome/browser/screenshot/screenshot_metrics_recorder.h rename to ios/chrome/browser/screenshot/model/screenshot_metrics_recorder.h index d49b7b4..06629cb 100644 --- a/ios/chrome/browser/screenshot/screenshot_metrics_recorder.h +++ b/ios/chrome/browser/screenshot/model/screenshot_metrics_recorder.h
@@ -4,8 +4,8 @@ #import <Foundation/Foundation.h> -#ifndef IOS_CHROME_BROWSER_SCREENSHOT_SCREENSHOT_METRICS_RECORDER_H_ -#define IOS_CHROME_BROWSER_SCREENSHOT_SCREENSHOT_METRICS_RECORDER_H_ +#ifndef IOS_CHROME_BROWSER_SCREENSHOT_MODEL_SCREENSHOT_METRICS_RECORDER_H_ +#define IOS_CHROME_BROWSER_SCREENSHOT_MODEL_SCREENSHOT_METRICS_RECORDER_H_ // ScreenshotMetricsRecorder presents the public interface for // the screenshot metric collection. @@ -16,4 +16,4 @@ @end -#endif // IOS_CHROME_BROWSER_SCREENSHOT_SCREENSHOT_METRICS_RECORDER_H_ +#endif // IOS_CHROME_BROWSER_SCREENSHOT_MODEL_SCREENSHOT_METRICS_RECORDER_H_
diff --git a/ios/chrome/browser/screenshot/screenshot_metrics_recorder.mm b/ios/chrome/browser/screenshot/model/screenshot_metrics_recorder.mm similarity index 94% rename from ios/chrome/browser/screenshot/screenshot_metrics_recorder.mm rename to ios/chrome/browser/screenshot/model/screenshot_metrics_recorder.mm index 7bf7af9..8960c80fc 100644 --- a/ios/chrome/browser/screenshot/screenshot_metrics_recorder.mm +++ b/ios/chrome/browser/screenshot/model/screenshot_metrics_recorder.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/screenshot/screenshot_metrics_recorder.h" +#import "ios/chrome/browser/screenshot/model/screenshot_metrics_recorder.h" #import <UIKit/UIKit.h> @@ -42,8 +42,9 @@ // Only register screenshots taken of chrome in a single screen in the // foreground. - if (countForegroundScenes == 1) + if (countForegroundScenes == 1) { base::RecordAction(base::UserMetricsAction(kSingleScreenUserActionName)); + } } #pragma mark - Private
diff --git a/ios/chrome/browser/screenshot/screenshot_metrics_recorder_unittest.mm b/ios/chrome/browser/screenshot/model/screenshot_metrics_recorder_unittest.mm similarity index 98% rename from ios/chrome/browser/screenshot/screenshot_metrics_recorder_unittest.mm rename to ios/chrome/browser/screenshot/model/screenshot_metrics_recorder_unittest.mm index fd3b096c..eb896afa 100644 --- a/ios/chrome/browser/screenshot/screenshot_metrics_recorder_unittest.mm +++ b/ios/chrome/browser/screenshot/model/screenshot_metrics_recorder_unittest.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/screenshot/screenshot_metrics_recorder.h" +#import "ios/chrome/browser/screenshot/model/screenshot_metrics_recorder.h" #import <UIKit/UIKit.h>
diff --git a/ios/chrome/browser/share_extension/BUILD.gn b/ios/chrome/browser/share_extension/model/BUILD.gn similarity index 96% rename from ios/chrome/browser/share_extension/BUILD.gn rename to ios/chrome/browser/share_extension/model/BUILD.gn index 12b8715..5c0dc83 100644 --- a/ios/chrome/browser/share_extension/BUILD.gn +++ b/ios/chrome/browser/share_extension/model/BUILD.gn
@@ -2,7 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -source_set("share_extension") { +source_set("model") { sources = [ "share_extension_item_receiver.h", "share_extension_item_receiver.mm",
diff --git a/ios/chrome/browser/share_extension/DEPS b/ios/chrome/browser/share_extension/model/DEPS similarity index 100% rename from ios/chrome/browser/share_extension/DEPS rename to ios/chrome/browser/share_extension/model/DEPS
diff --git a/ios/chrome/browser/share_extension/OWNERS b/ios/chrome/browser/share_extension/model/OWNERS similarity index 100% rename from ios/chrome/browser/share_extension/OWNERS rename to ios/chrome/browser/share_extension/model/OWNERS
diff --git a/ios/chrome/browser/share_extension/share_extension_item_receiver.h b/ios/chrome/browser/share_extension/model/share_extension_item_receiver.h similarity index 79% rename from ios/chrome/browser/share_extension/share_extension_item_receiver.h rename to ios/chrome/browser/share_extension/model/share_extension_item_receiver.h index 81284db..3f2dc14 100644 --- a/ios/chrome/browser/share_extension/share_extension_item_receiver.h +++ b/ios/chrome/browser/share_extension/model/share_extension_item_receiver.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_BROWSER_SHARE_EXTENSION_SHARE_EXTENSION_ITEM_RECEIVER_H_ -#define IOS_CHROME_BROWSER_SHARE_EXTENSION_SHARE_EXTENSION_ITEM_RECEIVER_H_ +#ifndef IOS_CHROME_BROWSER_SHARE_EXTENSION_MODEL_SHARE_EXTENSION_ITEM_RECEIVER_H_ +#define IOS_CHROME_BROWSER_SHARE_EXTENSION_MODEL_SHARE_EXTENSION_ITEM_RECEIVER_H_ #import <Foundation/Foundation.h> @@ -31,4 +31,4 @@ @end -#endif // IOS_CHROME_BROWSER_SHARE_EXTENSION_SHARE_EXTENSION_ITEM_RECEIVER_H_ +#endif // IOS_CHROME_BROWSER_SHARE_EXTENSION_MODEL_SHARE_EXTENSION_ITEM_RECEIVER_H_
diff --git a/ios/chrome/browser/share_extension/share_extension_item_receiver.mm b/ios/chrome/browser/share_extension/model/share_extension_item_receiver.mm similarity index 98% rename from ios/chrome/browser/share_extension/share_extension_item_receiver.mm rename to ios/chrome/browser/share_extension/model/share_extension_item_receiver.mm index 2614d88..0279fd8 100644 --- a/ios/chrome/browser/share_extension/share_extension_item_receiver.mm +++ b/ios/chrome/browser/share_extension/model/share_extension_item_receiver.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/share_extension/share_extension_item_receiver.h" +#import "ios/chrome/browser/share_extension/model/share_extension_item_receiver.h" #import <UIKit/UIKit.h> @@ -60,7 +60,7 @@ } // namespace -@interface ShareExtensionItemReceiver ()<NSFilePresenter> { +@interface ShareExtensionItemReceiver () <NSFilePresenter> { BOOL _isObservingReadingListFolder; BOOL _readingListFolderCreated; ReadingListModel* _readingListModel; @@ -122,8 +122,9 @@ DCHECK(readingListModel); self = [super init]; - if (![self presentedItemURL]) + if (![self presentedItemURL]) { return nil; + } if (self) { _readingListModel = readingListModel; @@ -412,8 +413,9 @@ - (void)entriesReceived:(NSArray<NSURL*>*)files { UMA_HISTOGRAM_COUNTS_100("IOS.ShareExtension.ReceivedEntriesCount", [files count]); - if (!_taskRunner) + if (!_taskRunner) { return; + } __weak ShareExtensionItemReceiver* weakSelf = self; for (NSURL* fileURL : files) {
diff --git a/ios/chrome/browser/share_extension/share_extension_service.h b/ios/chrome/browser/share_extension/model/share_extension_service.h similarity index 88% rename from ios/chrome/browser/share_extension/share_extension_service.h rename to ios/chrome/browser/share_extension/model/share_extension_service.h index f2ebeb4..6efedae 100644 --- a/ios/chrome/browser/share_extension/share_extension_service.h +++ b/ios/chrome/browser/share_extension/model/share_extension_service.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_BROWSER_SHARE_EXTENSION_SHARE_EXTENSION_SERVICE_H_ -#define IOS_CHROME_BROWSER_SHARE_EXTENSION_SHARE_EXTENSION_SERVICE_H_ +#ifndef IOS_CHROME_BROWSER_SHARE_EXTENSION_MODEL_SHARE_EXTENSION_SERVICE_H_ +#define IOS_CHROME_BROWSER_SHARE_EXTENSION_MODEL_SHARE_EXTENSION_SERVICE_H_ #include "components/bookmarks/browser/base_bookmark_model_observer.h" #include "components/keyed_service/core/keyed_service.h" @@ -55,4 +55,4 @@ __strong ShareExtensionItemReceiver* receiver_; }; -#endif // IOS_CHROME_BROWSER_SHARE_EXTENSION_SHARE_EXTENSION_SERVICE_H_ +#endif // IOS_CHROME_BROWSER_SHARE_EXTENSION_MODEL_SHARE_EXTENSION_SERVICE_H_
diff --git a/ios/chrome/browser/share_extension/share_extension_service.mm b/ios/chrome/browser/share_extension/model/share_extension_service.mm similarity index 91% rename from ios/chrome/browser/share_extension/share_extension_service.mm rename to ios/chrome/browser/share_extension/model/share_extension_service.mm index e6a74cf..b013852 100644 --- a/ios/chrome/browser/share_extension/share_extension_service.mm +++ b/ios/chrome/browser/share_extension/model/share_extension_service.mm
@@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/share_extension/share_extension_service.h" +#import "ios/chrome/browser/share_extension/model/share_extension_service.h" #import "components/bookmarks/browser/bookmark_model.h" #import "components/reading_list/core/reading_list_model.h" -#import "ios/chrome/browser/share_extension/share_extension_item_receiver.h" +#import "ios/chrome/browser/share_extension/model/share_extension_item_receiver.h" ShareExtensionService::ShareExtensionService( bookmarks::BookmarkModel* bookmark_model,
diff --git a/ios/chrome/browser/share_extension/share_extension_service_factory.h b/ios/chrome/browser/share_extension/model/share_extension_service_factory.h similarity index 84% rename from ios/chrome/browser/share_extension/share_extension_service_factory.h rename to ios/chrome/browser/share_extension/model/share_extension_service_factory.h index 280a8807..680065d 100644 --- a/ios/chrome/browser/share_extension/share_extension_service_factory.h +++ b/ios/chrome/browser/share_extension/model/share_extension_service_factory.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_BROWSER_SHARE_EXTENSION_SHARE_EXTENSION_SERVICE_FACTORY_H_ -#define IOS_CHROME_BROWSER_SHARE_EXTENSION_SHARE_EXTENSION_SERVICE_FACTORY_H_ +#ifndef IOS_CHROME_BROWSER_SHARE_EXTENSION_MODEL_SHARE_EXTENSION_SERVICE_FACTORY_H_ +#define IOS_CHROME_BROWSER_SHARE_EXTENSION_MODEL_SHARE_EXTENSION_SERVICE_FACTORY_H_ #include <memory> @@ -40,4 +40,4 @@ web::BrowserState* context) const override; }; -#endif // IOS_CHROME_BROWSER_SHARE_EXTENSION_SHARE_EXTENSION_SERVICE_FACTORY_H_ +#endif // IOS_CHROME_BROWSER_SHARE_EXTENSION_MODEL_SHARE_EXTENSION_SERVICE_FACTORY_H_
diff --git a/ios/chrome/browser/share_extension/share_extension_service_factory.mm b/ios/chrome/browser/share_extension/model/share_extension_service_factory.mm similarity index 93% rename from ios/chrome/browser/share_extension/share_extension_service_factory.mm rename to ios/chrome/browser/share_extension/model/share_extension_service_factory.mm index cec7f75..7a312aa2 100644 --- a/ios/chrome/browser/share_extension/share_extension_service_factory.mm +++ b/ios/chrome/browser/share_extension/model/share_extension_service_factory.mm
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/share_extension/share_extension_service_factory.h" +#import "ios/chrome/browser/share_extension/model/share_extension_service_factory.h" #import "base/no_destructor.h" #import "components/keyed_service/ios/browser_state_dependency_manager.h" #import "ios/chrome/browser/bookmarks/model/local_or_syncable_bookmark_model_factory.h" #import "ios/chrome/browser/reading_list/reading_list_model_factory.h" -#import "ios/chrome/browser/share_extension/share_extension_service.h" +#import "ios/chrome/browser/share_extension/model/share_extension_service.h" #import "ios/chrome/browser/shared/model/browser_state/browser_state_otr_helper.h" #import "ios/chrome/browser/shared/model/browser_state/chrome_browser_state.h"
diff --git a/ios/chrome/browser/shared/coordinator/scene/BUILD.gn b/ios/chrome/browser/shared/coordinator/scene/BUILD.gn index 5ee1f973..4b24ee46 100644 --- a/ios/chrome/browser/shared/coordinator/scene/BUILD.gn +++ b/ios/chrome/browser/shared/coordinator/scene/BUILD.gn
@@ -102,7 +102,7 @@ "//ios/chrome/browser/policy:policy_util", "//ios/chrome/browser/promos_manager:factory", "//ios/chrome/browser/promos_manager:features", - "//ios/chrome/browser/screenshot", + "//ios/chrome/browser/screenshot/model", "//ios/chrome/browser/sessions:session_saving", "//ios/chrome/browser/sessions:session_service", "//ios/chrome/browser/shared/coordinator/default_browser_promo",
diff --git a/ios/chrome/browser/shared/coordinator/scene/DEPS b/ios/chrome/browser/shared/coordinator/scene/DEPS index e3ca2dd..c2c2ef1 100644 --- a/ios/chrome/browser/shared/coordinator/scene/DEPS +++ b/ios/chrome/browser/shared/coordinator/scene/DEPS
@@ -12,7 +12,7 @@ "+ios/chrome/browser/policy", "+ios/chrome/browser/passwords", "+ios/chrome/browser/promos_manager", - "+ios/chrome/browser/screenshot", + "+ios/chrome/browser/screenshot/model", "+ios/chrome/browser/sessions", "+ios/chrome/browser/signin", "+ios/chrome/browser/snapshots",
diff --git a/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm b/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm index 2a96e78..6f8cbd1 100644 --- a/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm +++ b/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm
@@ -69,7 +69,7 @@ #import "ios/chrome/browser/policy/policy_watcher_browser_agent_observer_bridge.h" #import "ios/chrome/browser/promos_manager/features.h" #import "ios/chrome/browser/promos_manager/promos_manager_factory.h" -#import "ios/chrome/browser/screenshot/screenshot_delegate.h" +#import "ios/chrome/browser/screenshot/model/screenshot_delegate.h" #import "ios/chrome/browser/sessions/session_saving_scene_agent.h" #import "ios/chrome/browser/sessions/session_service_ios.h" #import "ios/chrome/browser/shared/coordinator/default_browser_promo/non_modal_default_browser_promo_scheduler_scene_agent.h"
diff --git a/ios/chrome/browser/shared/model/prefs/browser_prefs.mm b/ios/chrome/browser/shared/model/prefs/browser_prefs.mm index 4c8f9199..9d4ac21 100644 --- a/ios/chrome/browser/shared/model/prefs/browser_prefs.mm +++ b/ios/chrome/browser/shared/model/prefs/browser_prefs.mm
@@ -159,6 +159,12 @@ inline constexpr char kPrivacySandboxManuallyControlled[] = "privacy_sandbox.manually_controlled"; +// Deprecated 10/2023. +// Boolean whether has requested sync to be enabled. This is set early in the +// sync setup flow, after the user has pressed "turn on sync" but before they +// have accepted the confirmation dialog. +inline constexpr char kSyncRequested[] = "sync.requested"; + } // namespace void RegisterLocalStatePrefs(PrefRegistrySimple* registry) { @@ -546,6 +552,7 @@ false); // Preference related to feed. registry->RegisterTimePref(kActivityBucketLastReportedDateKey, base::Time()); + registry->RegisterBooleanPref(kSyncRequested, false); } // This method should be periodically pruned of year+ old migrations. @@ -696,6 +703,9 @@ base::Time::FromNSDate(value)); } } + + // Added 10/2023. + prefs->ClearPref(kSyncRequested); } void MigrateObsoleteUserDefault(void) {
diff --git a/ios/chrome/browser/sharing/BUILD.gn b/ios/chrome/browser/sharing/model/BUILD.gn similarity index 95% rename from ios/chrome/browser/sharing/BUILD.gn rename to ios/chrome/browser/sharing/model/BUILD.gn index 1e2fbc9..b4b20ac 100644 --- a/ios/chrome/browser/sharing/BUILD.gn +++ b/ios/chrome/browser/sharing/model/BUILD.gn
@@ -4,7 +4,7 @@ import("//build/config/ios/rules.gni") -source_set("sharing") { +source_set("model") { sources = [ "share_file_download_tab_helper.h", "share_file_download_tab_helper.mm",
diff --git a/ios/chrome/browser/sharing/share_file_download_tab_helper.h b/ios/chrome/browser/sharing/model/share_file_download_tab_helper.h similarity index 93% rename from ios/chrome/browser/sharing/share_file_download_tab_helper.h rename to ios/chrome/browser/sharing/model/share_file_download_tab_helper.h index 03b56fb2..7aa1c4a 100644 --- a/ios/chrome/browser/sharing/share_file_download_tab_helper.h +++ b/ios/chrome/browser/sharing/model/share_file_download_tab_helper.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_BROWSER_SHARING_SHARE_FILE_DOWNLOAD_TAB_HELPER_H_ -#define IOS_CHROME_BROWSER_SHARING_SHARE_FILE_DOWNLOAD_TAB_HELPER_H_ +#ifndef IOS_CHROME_BROWSER_SHARING_MODEL_SHARE_FILE_DOWNLOAD_TAB_HELPER_H_ +#define IOS_CHROME_BROWSER_SHARING_MODEL_SHARE_FILE_DOWNLOAD_TAB_HELPER_H_ #include <string> @@ -117,4 +117,4 @@ WEB_STATE_USER_DATA_KEY_DECL(); }; -#endif // IOS_CHROME_BROWSER_SHARING_SHARE_FILE_DOWNLOAD_TAB_HELPER_H_ +#endif // IOS_CHROME_BROWSER_SHARING_MODEL_SHARE_FILE_DOWNLOAD_TAB_HELPER_H_
diff --git a/ios/chrome/browser/sharing/share_file_download_tab_helper.mm b/ios/chrome/browser/sharing/model/share_file_download_tab_helper.mm similarity index 98% rename from ios/chrome/browser/sharing/share_file_download_tab_helper.mm rename to ios/chrome/browser/sharing/model/share_file_download_tab_helper.mm index b26d70b..52baceb 100644 --- a/ios/chrome/browser/sharing/share_file_download_tab_helper.mm +++ b/ios/chrome/browser/sharing/model/share_file_download_tab_helper.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/sharing/share_file_download_tab_helper.h" +#import "ios/chrome/browser/sharing/model/share_file_download_tab_helper.h" #import "base/memory/ptr_util.h" #import "base/metrics/histogram_functions.h"
diff --git a/ios/chrome/browser/tabs/BUILD.gn b/ios/chrome/browser/tabs/BUILD.gn index 7cc1db0..6fd1916 100644 --- a/ios/chrome/browser/tabs/BUILD.gn +++ b/ios/chrome/browser/tabs/BUILD.gn
@@ -100,7 +100,7 @@ "//ios/chrome/browser/shared/model/url:constants", "//ios/chrome/browser/shared/model/web_state_list", "//ios/chrome/browser/shared/public/features", - "//ios/chrome/browser/sharing", + "//ios/chrome/browser/sharing/model", "//ios/chrome/browser/snapshots", "//ios/chrome/browser/ssl", "//ios/chrome/browser/store_kit",
diff --git a/ios/chrome/browser/tabs/tab_helper_util.mm b/ios/chrome/browser/tabs/tab_helper_util.mm index 679c5a5..222ec98 100644 --- a/ios/chrome/browser/tabs/tab_helper_util.mm +++ b/ios/chrome/browser/tabs/tab_helper_util.mm
@@ -77,7 +77,7 @@ #import "ios/chrome/browser/sessions/ios_chrome_session_tab_helper.h" #import "ios/chrome/browser/shared/model/browser_state/chrome_browser_state.h" #import "ios/chrome/browser/shared/public/features/features.h" -#import "ios/chrome/browser/sharing/share_file_download_tab_helper.h" +#import "ios/chrome/browser/sharing/model/share_file_download_tab_helper.h" #import "ios/chrome/browser/snapshots/snapshot_tab_helper.h" #import "ios/chrome/browser/ssl/captive_portal_tab_helper.h" #import "ios/chrome/browser/supervised_user/supervised_user_error_container.h"
diff --git a/ios/chrome/browser/ui/authentication/BUILD.gn b/ios/chrome/browser/ui/authentication/BUILD.gn index 6331fda..69d0e6e2 100644 --- a/ios/chrome/browser/ui/authentication/BUILD.gn +++ b/ios/chrome/browser/ui/authentication/BUILD.gn
@@ -68,7 +68,7 @@ "//ios/chrome/browser/ui/authentication/signin:signin_headers", "//ios/chrome/browser/ui/ntp:feature_flags", "//ios/chrome/browser/ui/settings:settings_root", - "//ios/chrome/browser/unified_consent", + "//ios/chrome/browser/unified_consent/model", "//ios/chrome/common", "//ios/chrome/common/ui/colors", "//ios/chrome/common/ui/util", @@ -158,7 +158,7 @@ "//ios/chrome/browser/sync/model:test_support", "//ios/chrome/browser/ui/authentication/cells", "//ios/chrome/browser/ui/authentication/unified_consent:unified_consent_ui", - "//ios/chrome/browser/unified_consent", + "//ios/chrome/browser/unified_consent/model", "//ios/chrome/test:test_support", "//ios/web/public/test", "//testing/gtest",
diff --git a/ios/chrome/browser/ui/authentication/signin/user_signin/BUILD.gn b/ios/chrome/browser/ui/authentication/signin/user_signin/BUILD.gn index 036ef25..4537a3f 100644 --- a/ios/chrome/browser/ui/authentication/signin/user_signin/BUILD.gn +++ b/ios/chrome/browser/ui/authentication/signin/user_signin/BUILD.gn
@@ -37,7 +37,7 @@ "//ios/chrome/browser/ui/authentication/signin:signin_protected", "//ios/chrome/browser/ui/authentication/signin/user_signin/logging", "//ios/chrome/browser/ui/authentication/unified_consent", - "//ios/chrome/browser/unified_consent", + "//ios/chrome/browser/unified_consent/model", "//ios/chrome/common", "//ios/chrome/common:button_config", "//ios/chrome/common/ui/colors", @@ -85,7 +85,7 @@ "//ios/chrome/browser/sync/model:test_support", "//ios/chrome/browser/ui/authentication", "//ios/chrome/browser/ui/authentication/signin/user_signin/logging", - "//ios/chrome/browser/unified_consent", + "//ios/chrome/browser/unified_consent/model", "//ios/chrome/test:test_support", "//ios/web/public/test", "//testing/gmock",
diff --git a/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_coordinator.mm b/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_coordinator.mm index 69724093..89d173a 100644 --- a/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_coordinator.mm +++ b/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_coordinator.mm
@@ -31,7 +31,7 @@ #import "ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_mediator.h" #import "ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_view_controller.h" #import "ios/chrome/browser/ui/authentication/unified_consent/unified_consent_coordinator.h" -#import "ios/chrome/browser/unified_consent/unified_consent_service_factory.h" +#import "ios/chrome/browser/unified_consent/model/unified_consent_service_factory.h" using signin_metrics::AccessPoint; using signin_metrics::PromoAction;
diff --git a/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_mediator_unittest.mm b/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_mediator_unittest.mm index 211a607..9c901303 100644 --- a/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_mediator_unittest.mm +++ b/ios/chrome/browser/ui/authentication/signin/user_signin/user_signin_mediator_unittest.mm
@@ -33,7 +33,7 @@ #import "ios/chrome/browser/sync/model/sync_setup_service_mock.h" #import "ios/chrome/browser/ui/authentication/authentication_flow.h" #import "ios/chrome/browser/ui/authentication/authentication_flow_performer.h" -#import "ios/chrome/browser/unified_consent/unified_consent_service_factory.h" +#import "ios/chrome/browser/unified_consent/model/unified_consent_service_factory.h" #import "ios/chrome/grit/ios_strings.h" #import "ios/chrome/test/ios_chrome_scoped_testing_local_state.h" #import "ios/web/public/test/web_task_environment.h"
diff --git a/ios/chrome/browser/ui/authentication/tangible_sync/BUILD.gn b/ios/chrome/browser/ui/authentication/tangible_sync/BUILD.gn index d09e6c8..dc71e1f3 100644 --- a/ios/chrome/browser/ui/authentication/tangible_sync/BUILD.gn +++ b/ios/chrome/browser/ui/authentication/tangible_sync/BUILD.gn
@@ -30,7 +30,7 @@ "//ios/chrome/browser/sync/model", "//ios/chrome/browser/ui/authentication", "//ios/chrome/browser/ui/authentication/signin:signin_headers", - "//ios/chrome/browser/unified_consent", + "//ios/chrome/browser/unified_consent/model", ] public_deps = [ "//ios/chrome/browser/ui/first_run:interruptible_chrome_coordinator" ]
diff --git a/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_coordinator.mm b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_coordinator.mm index c49aff42e..99e52a8 100644 --- a/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_coordinator.mm +++ b/ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_coordinator.mm
@@ -25,7 +25,7 @@ #import "ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_mediator_delegate.h" #import "ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_view_controller.h" #import "ios/chrome/browser/ui/authentication/tangible_sync/tangible_sync_view_controller_delegate.h" -#import "ios/chrome/browser/unified_consent/unified_consent_service_factory.h" +#import "ios/chrome/browser/unified_consent/model/unified_consent_service_factory.h" namespace {
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/BUILD.gn b/ios/chrome/browser/ui/authentication/unified_consent/BUILD.gn index 70c97ae0..c4c537b 100644 --- a/ios/chrome/browser/ui/authentication/unified_consent/BUILD.gn +++ b/ios/chrome/browser/ui/authentication/unified_consent/BUILD.gn
@@ -81,7 +81,7 @@ "//ios/chrome/browser/signin:fake_system_identity", "//ios/chrome/browser/signin:fake_system_identity_manager", "//ios/chrome/browser/signin:test_support", - "//ios/chrome/browser/unified_consent", + "//ios/chrome/browser/unified_consent/model", "//ios/chrome/common:string_util", "//ios/chrome/test:test_support", "//ios/web/public/test",
diff --git a/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_mediator_unittest.mm b/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_mediator_unittest.mm index 51ca8af3..5ab4adfd 100644 --- a/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_mediator_unittest.mm +++ b/ios/chrome/browser/ui/authentication/unified_consent/unified_consent_mediator_unittest.mm
@@ -19,7 +19,7 @@ #import "ios/chrome/browser/signin/fake_system_identity_manager.h" #import "ios/chrome/browser/signin/identity_manager_factory.h" #import "ios/chrome/browser/ui/authentication/unified_consent/unified_consent_view_controller.h" -#import "ios/chrome/browser/unified_consent/unified_consent_service_factory.h" +#import "ios/chrome/browser/unified_consent/model/unified_consent_service_factory.h" #import "ios/chrome/test/ios_chrome_scoped_testing_local_state.h" #import "ios/web/public/test/web_task_environment.h" #import "testing/gmock/include/gmock/gmock.h"
diff --git a/ios/chrome/browser/ui/autofill/chrome_autofill_client_ios.h b/ios/chrome/browser/ui/autofill/chrome_autofill_client_ios.h index 7de0017..c95f093f 100644 --- a/ios/chrome/browser/ui/autofill/chrome_autofill_client_ios.h +++ b/ios/chrome/browser/ui/autofill/chrome_autofill_client_ios.h
@@ -111,7 +111,9 @@ void ShowEditAddressProfileDialog( const AutofillProfile& profile, AddressProfileSavePromptCallback on_user_decision_callback) override; - void ShowDeleteAddressProfileDialog() override; + void ShowDeleteAddressProfileDialog( + const AutofillProfile& profile, + AddressProfileDeleteDialogCallback delete_dialog_callback) override; bool HasCreditCardScanFeature() override; void ScanCreditCard(CreditCardScanCallback callback) override; bool IsTouchToFillCreditCardSupported() override;
diff --git a/ios/chrome/browser/ui/autofill/chrome_autofill_client_ios.mm b/ios/chrome/browser/ui/autofill/chrome_autofill_client_ios.mm index 1fec9433..4e210fb8 100644 --- a/ios/chrome/browser/ui/autofill/chrome_autofill_client_ios.mm +++ b/ios/chrome/browser/ui/autofill/chrome_autofill_client_ios.mm
@@ -397,7 +397,9 @@ NOTREACHED_NORETURN(); } -void ChromeAutofillClientIOS::ShowDeleteAddressProfileDialog() { +void ChromeAutofillClientIOS::ShowDeleteAddressProfileDialog( + const AutofillProfile& profile, + AddressProfileDeleteDialogCallback delete_dialog_callback) { NOTREACHED_NORETURN(); }
diff --git a/ios/chrome/browser/ui/sharing/BUILD.gn b/ios/chrome/browser/ui/sharing/BUILD.gn index b4d1dfc..6180353c 100644 --- a/ios/chrome/browser/ui/sharing/BUILD.gn +++ b/ios/chrome/browser/ui/sharing/BUILD.gn
@@ -36,7 +36,7 @@ "//ios/chrome/browser/shared/model/web_state_list", "//ios/chrome/browser/shared/public/commands", "//ios/chrome/browser/shared/ui/util", - "//ios/chrome/browser/sharing", + "//ios/chrome/browser/sharing/model", "//ios/chrome/browser/ui/sharing/activity_services", "//ios/chrome/browser/ui/sharing/qr_generator", "//ios/third_party/material_components_ios",
diff --git a/ios/chrome/browser/ui/sharing/sharing_coordinator.mm b/ios/chrome/browser/ui/sharing/sharing_coordinator.mm index c780157..1202c0c 100644 --- a/ios/chrome/browser/ui/sharing/sharing_coordinator.mm +++ b/ios/chrome/browser/ui/sharing/sharing_coordinator.mm
@@ -18,7 +18,7 @@ #import "ios/chrome/browser/shared/public/commands/qr_generation_commands.h" #import "ios/chrome/browser/shared/public/commands/share_download_overlay_commands.h" #import "ios/chrome/browser/shared/public/commands/snackbar_commands.h" -#import "ios/chrome/browser/sharing/share_file_download_tab_helper.h" +#import "ios/chrome/browser/sharing/model/share_file_download_tab_helper.h" #import "ios/chrome/browser/ui/sharing/activity_services/activity_service_coordinator.h" #import "ios/chrome/browser/ui/sharing/activity_services/activity_service_presentation.h" #import "ios/chrome/browser/ui/sharing/qr_generator/qr_generator_coordinator.h"
diff --git a/ios/chrome/browser/ui/webui/policy/policy_ui_handler.mm b/ios/chrome/browser/ui/webui/policy/policy_ui_handler.mm index c187630..00a6d16c 100644 --- a/ios/chrome/browser/ui/webui/policy/policy_ui_handler.mm +++ b/ios/chrome/browser/ui/webui/policy/policy_ui_handler.mm
@@ -268,8 +268,10 @@ void PolicyUIHandler::HandleReloadPolicies(const base::Value::List& args) { reload_policies_count_ += 1; - GetPolicyService()->RefreshPolicies(base::BindOnce( - &PolicyUIHandler::OnRefreshPoliciesDone, weak_factory_.GetWeakPtr())); + GetPolicyService()->RefreshPolicies( + base::BindOnce(&PolicyUIHandler::OnRefreshPoliciesDone, + weak_factory_.GetWeakPtr()), + policy::PolicyFetchReason::kUserRequest); } void PolicyUIHandler::SendPolicies() {
diff --git a/ios/chrome/browser/unified_consent/BUILD.gn b/ios/chrome/browser/unified_consent/model/BUILD.gn similarity index 95% rename from ios/chrome/browser/unified_consent/BUILD.gn rename to ios/chrome/browser/unified_consent/model/BUILD.gn index c5cdd8e..93041444 100644 --- a/ios/chrome/browser/unified_consent/BUILD.gn +++ b/ios/chrome/browser/unified_consent/model/BUILD.gn
@@ -2,7 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -source_set("unified_consent") { +source_set("model") { sources = [ "unified_consent_service_factory.h", "unified_consent_service_factory.mm",
diff --git a/ios/chrome/browser/unified_consent/DEPS b/ios/chrome/browser/unified_consent/model/DEPS similarity index 100% rename from ios/chrome/browser/unified_consent/DEPS rename to ios/chrome/browser/unified_consent/model/DEPS
diff --git a/ios/chrome/browser/unified_consent/DIR_METADATA b/ios/chrome/browser/unified_consent/model/DIR_METADATA similarity index 100% rename from ios/chrome/browser/unified_consent/DIR_METADATA rename to ios/chrome/browser/unified_consent/model/DIR_METADATA
diff --git a/ios/chrome/browser/unified_consent/OWNERS b/ios/chrome/browser/unified_consent/model/OWNERS similarity index 100% rename from ios/chrome/browser/unified_consent/OWNERS rename to ios/chrome/browser/unified_consent/model/OWNERS
diff --git a/ios/chrome/browser/unified_consent/unified_consent_service_factory.h b/ios/chrome/browser/unified_consent/model/unified_consent_service_factory.h similarity index 82% rename from ios/chrome/browser/unified_consent/unified_consent_service_factory.h rename to ios/chrome/browser/unified_consent/model/unified_consent_service_factory.h index 7fedf68..f8dabcd 100644 --- a/ios/chrome/browser/unified_consent/unified_consent_service_factory.h +++ b/ios/chrome/browser/unified_consent/model/unified_consent_service_factory.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_BROWSER_UNIFIED_CONSENT_UNIFIED_CONSENT_SERVICE_FACTORY_H_ -#define IOS_CHROME_BROWSER_UNIFIED_CONSENT_UNIFIED_CONSENT_SERVICE_FACTORY_H_ +#ifndef IOS_CHROME_BROWSER_UNIFIED_CONSENT_MODEL_UNIFIED_CONSENT_SERVICE_FACTORY_H_ +#define IOS_CHROME_BROWSER_UNIFIED_CONSENT_MODEL_UNIFIED_CONSENT_SERVICE_FACTORY_H_ #include "base/no_destructor.h" #include "components/keyed_service/ios/browser_state_keyed_service_factory.h" @@ -39,4 +39,4 @@ web::BrowserState* context) const override; }; -#endif // IOS_CHROME_BROWSER_UNIFIED_CONSENT_UNIFIED_CONSENT_SERVICE_FACTORY_H_ +#endif // IOS_CHROME_BROWSER_UNIFIED_CONSENT_MODEL_UNIFIED_CONSENT_SERVICE_FACTORY_H_
diff --git a/ios/chrome/browser/unified_consent/unified_consent_service_factory.mm b/ios/chrome/browser/unified_consent/model/unified_consent_service_factory.mm similarity index 96% rename from ios/chrome/browser/unified_consent/unified_consent_service_factory.mm rename to ios/chrome/browser/unified_consent/model/unified_consent_service_factory.mm index d01318a..2433ad2c 100644 --- a/ios/chrome/browser/unified_consent/unified_consent_service_factory.mm +++ b/ios/chrome/browser/unified_consent/model/unified_consent_service_factory.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/unified_consent/unified_consent_service_factory.h" +#import "ios/chrome/browser/unified_consent/model/unified_consent_service_factory.h" #import <string> #import <vector>
diff --git a/ios/chrome/browser/update_client/BUILD.gn b/ios/chrome/browser/update_client/model/BUILD.gn similarity index 92% rename from ios/chrome/browser/update_client/BUILD.gn rename to ios/chrome/browser/update_client/model/BUILD.gn index 861a6af..7045b281 100644 --- a/ios/chrome/browser/update_client/BUILD.gn +++ b/ios/chrome/browser/update_client/model/BUILD.gn
@@ -2,7 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -source_set("update_client") { +source_set("model") { sources = [ "ios_chrome_update_query_params_delegate.h", "ios_chrome_update_query_params_delegate.mm", @@ -20,7 +20,7 @@ testonly = true sources = [ "ios_chrome_update_query_params_delegate_unittest.cc" ] deps = [ - ":update_client", + ":model", "//base", "//components/update_client", "//components/version_info",
diff --git a/ios/chrome/browser/update_client/DIR_METADATA b/ios/chrome/browser/update_client/model/DIR_METADATA similarity index 100% rename from ios/chrome/browser/update_client/DIR_METADATA rename to ios/chrome/browser/update_client/model/DIR_METADATA
diff --git a/ios/chrome/browser/update_client/OWNERS b/ios/chrome/browser/update_client/model/OWNERS similarity index 100% rename from ios/chrome/browser/update_client/OWNERS rename to ios/chrome/browser/update_client/model/OWNERS
diff --git a/ios/chrome/browser/update_client/ios_chrome_update_query_params_delegate.h b/ios/chrome/browser/update_client/model/ios_chrome_update_query_params_delegate.h similarity index 79% rename from ios/chrome/browser/update_client/ios_chrome_update_query_params_delegate.h rename to ios/chrome/browser/update_client/model/ios_chrome_update_query_params_delegate.h index 9850cb0..e4a7246 100644 --- a/ios/chrome/browser/update_client/ios_chrome_update_query_params_delegate.h +++ b/ios/chrome/browser/update_client/model/ios_chrome_update_query_params_delegate.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef IOS_CHROME_BROWSER_UPDATE_CLIENT_IOS_CHROME_UPDATE_QUERY_PARAMS_DELEGATE_H_ -#define IOS_CHROME_BROWSER_UPDATE_CLIENT_IOS_CHROME_UPDATE_QUERY_PARAMS_DELEGATE_H_ +#ifndef IOS_CHROME_BROWSER_UPDATE_CLIENT_MODEL_IOS_CHROME_UPDATE_QUERY_PARAMS_DELEGATE_H_ +#define IOS_CHROME_BROWSER_UPDATE_CLIENT_MODEL_IOS_CHROME_UPDATE_QUERY_PARAMS_DELEGATE_H_ #include <string> @@ -32,4 +32,4 @@ static const std::string& GetLang(); }; -#endif // IOS_CHROME_BROWSER_UPDATE_CLIENT_IOS_CHROME_UPDATE_QUERY_PARAMS_DELEGATE_H_ +#endif // IOS_CHROME_BROWSER_UPDATE_CLIENT_MODEL_IOS_CHROME_UPDATE_QUERY_PARAMS_DELEGATE_H_
diff --git a/ios/chrome/browser/update_client/ios_chrome_update_query_params_delegate.mm b/ios/chrome/browser/update_client/model/ios_chrome_update_query_params_delegate.mm similarity index 92% rename from ios/chrome/browser/update_client/ios_chrome_update_query_params_delegate.mm rename to ios/chrome/browser/update_client/model/ios_chrome_update_query_params_delegate.mm index 00ad577..3209546d 100644 --- a/ios/chrome/browser/update_client/ios_chrome_update_query_params_delegate.mm +++ b/ios/chrome/browser/update_client/model/ios_chrome_update_query_params_delegate.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/chrome/browser/update_client/ios_chrome_update_query_params_delegate.h" +#import "ios/chrome/browser/update_client/model/ios_chrome_update_query_params_delegate.h" #import "base/no_destructor.h" #import "base/strings/strcat.h"
diff --git a/ios/chrome/browser/update_client/ios_chrome_update_query_params_delegate_unittest.cc b/ios/chrome/browser/update_client/model/ios_chrome_update_query_params_delegate_unittest.cc similarity index 95% rename from ios/chrome/browser/update_client/ios_chrome_update_query_params_delegate_unittest.cc rename to ios/chrome/browser/update_client/model/ios_chrome_update_query_params_delegate_unittest.cc index 495b81d..0f44489 100644 --- a/ios/chrome/browser/update_client/ios_chrome_update_query_params_delegate_unittest.cc +++ b/ios/chrome/browser/update_client/model/ios_chrome_update_query_params_delegate_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "ios/chrome/browser/update_client/ios_chrome_update_query_params_delegate.h" +#include "ios/chrome/browser/update_client/model/ios_chrome_update_query_params_delegate.h" #include <string>
diff --git a/ios/chrome/test/BUILD.gn b/ios/chrome/test/BUILD.gn index fb8a66b..0e524ac 100644 --- a/ios/chrome/test/BUILD.gn +++ b/ios/chrome/test/BUILD.gn
@@ -253,7 +253,7 @@ "//ios/chrome/browser/safe_browsing/tailored_security:unit_tests", "//ios/chrome/browser/safe_mode:unit_tests", "//ios/chrome/browser/safety_check:unit_tests", - "//ios/chrome/browser/screenshot:unit_tests", + "//ios/chrome/browser/screenshot/model:unit_tests", "//ios/chrome/browser/search_engines:unit_tests", "//ios/chrome/browser/segmentation_platform:unit_tests", "//ios/chrome/browser/send_tab_to_self/model:unit_tests", @@ -430,7 +430,7 @@ "//ios/chrome/browser/ui/whats_new/cells:unit_tests", "//ios/chrome/browser/ui/whats_new/data_source:unit_tests", "//ios/chrome/browser/ui/whats_new/promo:unit_tests", - "//ios/chrome/browser/update_client:unit_tests", + "//ios/chrome/browser/update_client/model:unit_tests", "//ios/chrome/browser/upgrade:unit_tests", "//ios/chrome/browser/url_loading:unit_tests", "//ios/chrome/browser/variations:unit_tests",
diff --git a/ios/chrome/test/earl_grey/BUILD.gn b/ios/chrome/test/earl_grey/BUILD.gn index 49a794c..9008600f 100644 --- a/ios/chrome/test/earl_grey/BUILD.gn +++ b/ios/chrome/test/earl_grey/BUILD.gn
@@ -184,7 +184,7 @@ "//ios/chrome/browser/ui/toolbar:eg_app_support+eg2", "//ios/chrome/browser/ui/toolbar:toolbar_ui", "//ios/chrome/browser/ui/toolbar/public:constants", - "//ios/chrome/browser/unified_consent", + "//ios/chrome/browser/unified_consent/model", "//ios/chrome/browser/variations:eg_app_support+eg2", "//ios/chrome/browser/web", "//ios/chrome/browser/web:eg_app_support+eg2",
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm b/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm index 578aa0f..bc7e20ba 100644 --- a/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm +++ b/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm
@@ -58,7 +58,7 @@ #import "ios/chrome/browser/sync/model/sync_service_factory.h" #import "ios/chrome/browser/ui/ntp/new_tab_page_feature.h" #import "ios/chrome/browser/ui/popup_menu/overflow_menu/feature_flags.h" -#import "ios/chrome/browser/unified_consent/unified_consent_service_factory.h" +#import "ios/chrome/browser/unified_consent/model/unified_consent_service_factory.h" #import "ios/chrome/browser/web/web_navigation_browser_agent.h" #import "ios/chrome/test/app/browsing_data_test_util.h" #import "ios/chrome/test/app/chrome_test_util.h"
diff --git a/ios/web_view/internal/autofill/web_view_autofill_client_ios.h b/ios/web_view/internal/autofill/web_view_autofill_client_ios.h index 6ebcc3f..eca2acf 100644 --- a/ios/web_view/internal/autofill/web_view_autofill_client_ios.h +++ b/ios/web_view/internal/autofill/web_view_autofill_client_ios.h
@@ -104,7 +104,9 @@ void ShowEditAddressProfileDialog( const AutofillProfile& profile, AddressProfileSavePromptCallback on_user_decision_callback) override; - void ShowDeleteAddressProfileDialog() override; + void ShowDeleteAddressProfileDialog( + const AutofillProfile& profile, + AddressProfileDeleteDialogCallback delete_dialog_callback) override; bool HasCreditCardScanFeature() override; void ScanCreditCard(CreditCardScanCallback callback) override; bool IsTouchToFillCreditCardSupported() override;
diff --git a/ios/web_view/internal/autofill/web_view_autofill_client_ios.mm b/ios/web_view/internal/autofill/web_view_autofill_client_ios.mm index 44d8ddc..4db26c65 100644 --- a/ios/web_view/internal/autofill/web_view_autofill_client_ios.mm +++ b/ios/web_view/internal/autofill/web_view_autofill_client_ios.mm
@@ -272,7 +272,9 @@ NOTREACHED(); } -void WebViewAutofillClientIOS::ShowDeleteAddressProfileDialog() { +void WebViewAutofillClientIOS::ShowDeleteAddressProfileDialog( + const AutofillProfile& profile, + AddressProfileDeleteDialogCallback delete_dialog_callback) { // Please note: This method is only implemented on desktop and is therefore // unreachable here. NOTREACHED();
diff --git a/ios_internal b/ios_internal index 09f751a..53a8c42 160000 --- a/ios_internal +++ b/ios_internal
@@ -1 +1 @@ -Subproject commit 09f751a1a2dfd719ca4c2a41af3cab4e45c08969 +Subproject commit 53a8c425fd177be6bf436f31930c2b99408e51eb
diff --git a/media/renderers/paint_canvas_video_renderer.cc b/media/renderers/paint_canvas_video_renderer.cc index 3fdcaec..876a9ca 100644 --- a/media/renderers/paint_canvas_video_renderer.cc +++ b/media/renderers/paint_canvas_video_renderer.cc
@@ -1641,100 +1641,6 @@ return true; } -// static -bool PaintCanvasVideoRenderer::PrepareVideoFrameForWebGL( - viz::RasterContextProvider* raster_context_provider, - gpu::gles2::GLES2Interface* destination_gl, - scoped_refptr<VideoFrame> video_frame, - unsigned int target, - unsigned int texture) { - // TODO(776222): This static function uses no common functionality in - // PaintCanvasVideoRenderer, and should be removed from this class. - CHECK(video_frame); - CHECK(video_frame->HasTextures()); - if (video_frame->NumTextures() == 1 && - video_frame->shared_image_format_type() != - SharedImageFormatType::kSharedImageFormat) { - if (target == GL_TEXTURE_EXTERNAL_OES) { - // We don't support Android now. - // TODO(crbug.com/776222): support Android. - return false; - } - // We don't support sharing single video frame texture now. - // TODO(crbug.com/776222): deal with single video frame texture. - return false; - } - - DCHECK(video_frame->metadata().texture_origin_is_top_left); - - if (video_frame->shared_image_format_type() == - SharedImageFormatType::kLegacy) { - // TODO(nazabris): Support OOP-R code path here that does not have - // GrContext. - if (!raster_context_provider || !raster_context_provider->GrContext()) { - return false; - } - - // Take webgl video texture as 2D texture. Setting it as external render - // target backend for skia. - BindAndTexImage2D(destination_gl, target, texture, - /*internal_format=*/GL_RGBA, /*format=*/GL_RGBA, - /*type=*/GL_UNSIGNED_BYTE, /*level=*/0, - video_frame->coded_size()); - - CHECK_GT(video_frame->NumTextures(), 1u); - gpu::MailboxHolder mailbox_holder; - mailbox_holder.texture_target = target; - gpu::raster::RasterInterface* source_ri = - raster_context_provider->RasterInterface(); - destination_gl->ProduceTextureDirectCHROMIUM(texture, - mailbox_holder.mailbox.name); - destination_gl->GenUnverifiedSyncTokenCHROMIUM( - mailbox_holder.sync_token.GetData()); - - // Generate a new image. - VideoFrameYUVConverter::ConvertYUVVideoFrameNoCaching( - video_frame.get(), raster_context_provider, mailbox_holder); - - // Wait for mailbox creation on canvas context before consuming it and - // copying from it on the consumer context. - source_ri->GenUnverifiedSyncTokenCHROMIUM( - mailbox_holder.sync_token.GetData()); - - destination_gl->WaitSyncTokenCHROMIUM( - mailbox_holder.sync_token.GetConstData()); - - WaitAndReplaceSyncTokenClient client(source_ri); - video_frame->UpdateReleaseSyncToken(&client); - } else { - // Take webgl video texture as 2D texture. Setting it as external render - // target backend for skia. - BindAndTexImage2D(destination_gl, target, texture, - /*internal_format=*/GL_RGBA, /*format=*/GL_RGBA, - /*type=*/GL_UNSIGNED_BYTE, /*level=*/0, - video_frame->coded_size()); - - CHECK_EQ(video_frame->NumTextures(), 1u); - CHECK_EQ(video_frame->shared_image_format_type(), - SharedImageFormatType::kSharedImageFormat); - gpu::MailboxHolder mailbox_holder = - GetVideoFrameMailboxHolder(video_frame.get()); - destination_gl->WaitSyncTokenCHROMIUM( - mailbox_holder.sync_token.GetConstData()); - - destination_gl->CopySharedImageToTextureINTERNAL( - texture, target, GL_RGBA, GL_UNSIGNED_BYTE, - /*src_x=*/0, /*src_y=*/0, video_frame->coded_size().width(), - video_frame->coded_size().height(), /*flip_y=*/GL_FALSE, - mailbox_holder.mailbox.name); - - WaitAndReplaceSyncTokenClient client(destination_gl); - video_frame->UpdateReleaseSyncToken(&client); - } - - return true; -} - bool PaintCanvasVideoRenderer::CopyVideoFrameYUVDataToGLTexture( viz::RasterContextProvider* raster_context_provider, gpu::gles2::GLES2Interface* destination_gl,
diff --git a/media/renderers/paint_canvas_video_renderer.h b/media/renderers/paint_canvas_video_renderer.h index d5e26d1e..177840b 100644 --- a/media/renderers/paint_canvas_video_renderer.h +++ b/media/renderers/paint_canvas_video_renderer.h
@@ -129,14 +129,6 @@ bool premultiply_alpha, bool flip_y); - // TODO(776222): Remove this function from PaintCanvasVideoRenderer. - static bool PrepareVideoFrameForWebGL( - viz::RasterContextProvider* raster_context_provider, - gpu::gles2::GLES2Interface* gl, - scoped_refptr<VideoFrame> video_frame, - unsigned int target, - unsigned int texture); - // Copy the CPU-side YUV contents of |video_frame| to texture |texture| in // context |destination_gl|. // |level|, |internal_format|, |type| specify target texture |texture|.
diff --git a/net/spdy/spdy_http_utils.cc b/net/spdy/spdy_http_utils.cc index b6bc9ce..9aa0063 100644 --- a/net/spdy/spdy_http_utils.cc +++ b/net/spdy/spdy_http_utils.cc
@@ -201,21 +201,30 @@ // Set-Cookie: bar\0 size_t start = 0; size_t end = 0; + absl::optional<base::StringPiece> location_value; do { end = value.find('\0', start); base::StringPiece tval; if (end != value.npos) { + tval = value.substr(start, (end - start)); + // TODO(ricea): Make this comparison case-sensitive when we are no // longer maintaining compatibility with the old version of the // function. - if (base::EqualsCaseInsensitiveASCII(name, "location")) { - // We must have received multiple "location" headers from the server. - return base::unexpected(ERR_RESPONSE_HEADERS_MULTIPLE_LOCATION); + if (base::EqualsCaseInsensitiveASCII(name, "location") && + !location_value.has_value()) { + location_value = HttpUtil::TrimLWS(tval); } - tval = value.substr(start, (end - start)); } else { tval = value.substr(start); } + if (location_value.has_value() && start > 0) { + DCHECK(base::EqualsCaseInsensitiveASCII(name, "location")); + base::StringPiece trimmed_value = HttpUtil::TrimLWS(tval); + if (trimmed_value != location_value.value()) { + return base::unexpected(ERR_RESPONSE_HEADERS_MULTIPLE_LOCATION); + } + } builder.AddHeader(name, tval); start = end + 1; } while (end != value.npos);
diff --git a/net/spdy/spdy_http_utils_unittest.cc b/net/spdy/spdy_http_utils_unittest.cc index 004a80b..2bdfb36 100644 --- a/net/spdy/spdy_http_utils_unittest.cc +++ b/net/spdy/spdy_http_utils_unittest.cc
@@ -321,6 +321,46 @@ EXPECT_EQ(kRawHeaders, ToSimpleString(output)); } +TEST_P(SpdyHeadersToHttpResponseHeadersTest, DoubleEmptyLocationHeader) { + constexpr char kRawHeaders[] = + "HTTP/1.1 200\n" + "location: \n" + "location: \n"; + spdy::Http2HeaderBlock headers; + headers[spdy::kHttp2StatusHeader] = "200"; + headers.AppendValueOrAddHeader("location", ""); + headers.AppendValueOrAddHeader("location", ""); + ASSERT_OK_AND_ASSIGN(const auto output, PerformConversion(headers)); + EXPECT_EQ(kRawHeaders, ToSimpleString(output)); +} + +TEST_P(SpdyHeadersToHttpResponseHeadersTest, + DifferentLocationHeaderTriggersError) { + spdy::Http2HeaderBlock headers; + headers[spdy::kHttp2StatusHeader] = "200"; + headers.AppendValueOrAddHeader("location", "https://same/"); + headers.AppendValueOrAddHeader("location", "https://same/"); + headers.AppendValueOrAddHeader("location", "https://different/"); + EXPECT_THAT(PerformConversion(headers), + base::test::ErrorIs(ERR_RESPONSE_HEADERS_MULTIPLE_LOCATION)); +} + +// TODO(ricea): Ensure that QUICHE will never send us header values with leading +// or trailing whitespace and remove this test. +TEST_P(SpdyHeadersToHttpResponseHeadersTest, + LocationEquivalenceIgnoresSurroundingSpace) { + constexpr char kRawHeaders[] = + "HTTP/1.1 200\n" + "location: https://same/\n" + "location: https://same/\n"; + spdy::Http2HeaderBlock headers; + headers[spdy::kHttp2StatusHeader] = "200"; + headers.AppendValueOrAddHeader("location", " https://same/"); + headers.AppendValueOrAddHeader("location", "https://same/ "); + ASSERT_OK_AND_ASSIGN(const auto output, PerformConversion(headers)); + EXPECT_EQ(kRawHeaders, ToSimpleString(output)); +} + INSTANTIATE_TEST_SUITE_P( SpdyHttpUtils, SpdyHeadersToHttpResponseHeadersTest,
diff --git a/net/third_party/quiche/BUILD.gn b/net/third_party/quiche/BUILD.gn index 09a30c1..b3e942e 100644 --- a/net/third_party/quiche/BUILD.gn +++ b/net/third_party/quiche/BUILD.gn
@@ -805,25 +805,6 @@ ] sources = [ - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/client/anonymous_tokens_rsa_bssa_client.cc", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/client/anonymous_tokens_rsa_bssa_client.h", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/anonymous_tokens_pb_openssl_converters.cc", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/anonymous_tokens_pb_openssl_converters.h", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/blind_signer.h", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/blinder.h", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/constants.h", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/crypto_utils.cc", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/crypto_utils.h", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/rsa_blind_signer.cc", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/rsa_blind_signer.h", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/rsa_blinder.cc", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/rsa_blinder.h", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/rsa_ssa_pss_verifier.cc", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/rsa_ssa_pss_verifier.h", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/crypto/verifier.h", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/shared/proto_utils.cc", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/shared/proto_utils.h", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/shared/status_utils.h", "src/quiche/blind_sign_auth/blind_sign_auth.cc", "src/quiche/blind_sign_auth/blind_sign_auth.h", "src/quiche/blind_sign_auth/blind_sign_auth_interface.h", @@ -839,11 +820,15 @@ ":quiche", "//base", "//third_party/abseil-cpp:absl", + "//third_party/anonymous_tokens:proto_utils", "//third_party/boringssl", "//url", ] - public_deps = [ ":blind_sign_auth_proto" ] + public_deps = [ + ":blind_sign_auth_proto", + "//third_party/anonymous_tokens:anonymous_tokens_rsa_bssa_client", + ] defines = [ "IS_QUICHE_IMPL" ] } @@ -857,7 +842,6 @@ ] sources = [ - "src/quiche/blind_sign_auth/anonymous_tokens/proto/anonymous_tokens.proto", "src/quiche/blind_sign_auth/proto/any.proto", "src/quiche/blind_sign_auth/proto/attestation.proto", "src/quiche/blind_sign_auth/proto/auth_and_sign.proto", @@ -873,21 +857,22 @@ proto_in_dir = "src" - deps = [ "//base" ] + deps = [ + "//base", + "//third_party/anonymous_tokens:anonymous_tokens_cc_proto", + ] + + import_dirs = [ "//third_party/anonymous_tokens/src/" ] defines = [ "IS_QUICHE_IMPL" ] extra_configs = [ "//build/config/compiler:wexit_time_destructors" ] } -static_library("blind_sign_auth_test_support") { +source_set("blind_sign_auth_test_support") { visibility = [ ":quiche_tests" ] testonly = true sources = [ - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/testing/proto_utils.cc", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/testing/proto_utils.h", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/testing/utils.cc", - "src/quiche/blind_sign_auth/anonymous_tokens/cpp/testing/utils.h", "src/quiche/blind_sign_auth/test_tools/mock_blind_sign_auth_interface.h", "src/quiche/blind_sign_auth/test_tools/mock_blind_sign_http_interface.h", ] @@ -899,10 +884,7 @@ ":quiche", ":quiche_test_support", ":quiche_tool_support", - "//base", - "//testing/gmock", - "//testing/gtest", - "//third_party/abseil-cpp:absl", - "//third_party/boringssl", ] + public_deps = + [ "//third_party/anonymous_tokens:anonymous_tokens_test_support" ] }
diff --git a/net/third_party/quiche/src b/net/third_party/quiche/src index 5cdf937..0c75f98 160000 --- a/net/third_party/quiche/src +++ b/net/third_party/quiche/src
@@ -1 +1 @@ -Subproject commit 5cdf937c378cdf08ff55ea9e86cfbf05bec54df2 +Subproject commit 0c75f987990bfb2fe27eeaa8f3cc78f98f3ef42d
diff --git a/remoting/host/policy_watcher.cc b/remoting/host/policy_watcher.cc index dcff63a..dad07db 100644 --- a/remoting/host/policy_watcher.cc +++ b/remoting/host/policy_watcher.cc
@@ -438,7 +438,8 @@ base::BindOnce(&policy::PolicyService::RefreshPolicies, base::Unretained(policy_service_), base::BindOnce(&PolicyWatcher::WatchForRegistryChanges, - base::Unretained(this)))); + base::Unretained(this)), + policy::PolicyFetchReason::kCrdHostPolicyWatcher)); if (!watch_result) { LOG(WARNING) << "Failed to register for Chrome policy registry key changes"; policy_key_.Close();
diff --git a/services/network/BUILD.gn b/services/network/BUILD.gn index 639bf132..052cff40 100644 --- a/services/network/BUILD.gn +++ b/services/network/BUILD.gn
@@ -367,8 +367,6 @@ if (is_android) { sources += [ - "empty_network_service.cc", - "empty_network_service.h", "sandboxed_vfs_delegate.cc", "sandboxed_vfs_delegate.h", ]
diff --git a/services/network/empty_network_service.cc b/services/network/empty_network_service.cc deleted file mode 100644 index 0b642a2..0000000 --- a/services/network/empty_network_service.cc +++ /dev/null
@@ -1,39 +0,0 @@ -// Copyright 2023 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "services/network/empty_network_service.h" - -#include "mojo/public/cpp/bindings/pending_receiver.h" -#include "mojo/public/cpp/bindings/receiver.h" -#include "mojo/public/cpp/bindings/service_factory.h" -#include "services/network/public/mojom/network_service.mojom.h" - -namespace network { -namespace { - -class EmptyNetworkService : public network::mojom::EmptyNetworkService { - public: - explicit EmptyNetworkService( - mojo::PendingReceiver<network::mojom::EmptyNetworkService> receiver) { - receiver_.Bind(std::move(receiver)); - } - - private: - // network::mojom::EmptyNetworkService implementation: - void Ping(int32_t value, PingCallback callback) override { - std::move(callback).Run(value); - } - mojo::Receiver<network::mojom::EmptyNetworkService> receiver_{this}; -}; - -std::unique_ptr<network::mojom::EmptyNetworkService> RunEmptyNetworkService( - mojo::PendingReceiver<network::mojom::EmptyNetworkService> receiver) { - return std::make_unique<EmptyNetworkService>(std::move(receiver)); -} -} // namespace - -void RegisterEmptyNetworkService(mojo::ServiceFactory& services) { - services.Add(RunEmptyNetworkService); -} -} // namespace network
diff --git a/services/network/empty_network_service.h b/services/network/empty_network_service.h deleted file mode 100644 index d0dc4efc..0000000 --- a/services/network/empty_network_service.h +++ /dev/null
@@ -1,19 +0,0 @@ -// Copyright 2023 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef SERVICES_NETWORK_EMPTY_NETWORK_SERVICE_H_ -#define SERVICES_NETWORK_EMPTY_NETWORK_SERVICE_H_ - -#include "base/component_export.h" - -namespace mojo { -class ServiceFactory; -} // namespace mojo - -namespace network { -COMPONENT_EXPORT(NETWORK_SERVICE) -void RegisterEmptyNetworkService(mojo::ServiceFactory& services); -} // namespace network - -#endif // SERVICES_NETWORK_EMPTY_NETWORK_SERVICE_H_
diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc index e57b7f6..40dd0d3 100644 --- a/services/network/public/cpp/features.cc +++ b/services/network/public/cpp/features.cc
@@ -8,6 +8,7 @@ #include "base/metrics/field_trial_params.h" #include "base/numerics/safe_conversions.h" #include "base/system/sys_info.h" +#include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "net/base/mime_sniffer.h" @@ -398,12 +399,6 @@ "PrefetchNoVarySearch", base::FEATURE_ENABLED_BY_DEFAULT); -#if BUILDFLAG(IS_ANDROID) -BASE_FEATURE(kNetworkServiceEmptyOutOfProcess, - "NetworkServiceEmptyOutOfProcess", - base::FEATURE_DISABLED_BY_DEFAULT); -#endif - // Enables the backend of the compression dictionary transport feature. // When this feature is enabled, the following will happen: // * The network service loads the metadata database.
diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h index eeca662d..6c6b6fb 100644 --- a/services/network/public/cpp/features.h +++ b/services/network/public/cpp/features.h
@@ -9,7 +9,6 @@ #include "base/feature_list.h" #include "base/metrics/field_trial_params.h" #include "base/time/time.h" -#include "build/build_config.h" namespace network { namespace features { @@ -146,13 +145,6 @@ // interacts poorly with this metric that is recorded every 30s. COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kGetCookiesStringUma); -#if BUILDFLAG(IS_ANDROID) -// Create empty network service out of process only if canonical network service -// is in process to see process overhead on Android. -COMPONENT_EXPORT(NETWORK_CPP) -BASE_DECLARE_FEATURE(kNetworkServiceEmptyOutOfProcess); -#endif - COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kCompressionDictionaryTransportBackend); COMPONENT_EXPORT(NETWORK_CPP)
diff --git a/services/network/public/cpp/network_switches.cc b/services/network/public/cpp/network_switches.cc index 7373c4b..525d8cf 100644 --- a/services/network/public/cpp/network_switches.cc +++ b/services/network/public/cpp/network_switches.cc
@@ -118,7 +118,4 @@ // https://github.com/web-platform-tests/rfcs/blob/master/rfcs/address_space_overrides.md const char kIpAddressSpaceOverrides[] = "ip-address-space-overrides"; -// Enables register the empty network service in utility process. -const char kRegisterEmptyNetworkService[] = "register-empty-network-service"; - } // namespace network::switches
diff --git a/services/network/public/cpp/network_switches.h b/services/network/public/cpp/network_switches.h index ebde0356..c9623b7 100644 --- a/services/network/public/cpp/network_switches.h +++ b/services/network/public/cpp/network_switches.h
@@ -28,7 +28,6 @@ extern const char kAdditionalTrustTokenKeyCommitments[]; COMPONENT_EXPORT(NETWORK_CPP) extern const char kUseFirstPartySet[]; COMPONENT_EXPORT(NETWORK_CPP) extern const char kIpAddressSpaceOverrides[]; -COMPONENT_EXPORT(NETWORK_CPP) extern const char kRegisterEmptyNetworkService[]; } // namespace switches
diff --git a/services/network/public/mojom/network_service.mojom b/services/network/public/mojom/network_service.mojom index c108ad2..0b1e1ddb 100644 --- a/services/network/public/mojom/network_service.mojom +++ b/services/network/public/mojom/network_service.mojom
@@ -409,12 +409,3 @@ SetGssapiLibraryLoadObserver( pending_remote<GssapiLibraryLoadObserver> gssapi_library_load_observer); }; - -// Service that tests new process overhead on Android. -// TODO(http://crbug.com/1395707): Remove this once -// --disable-features=NetworkServiceInProcess2 is launched stable. -[EnableIf=is_android, ServiceSandbox=sandbox.mojom.Sandbox.kNetwork] -interface EmptyNetworkService { - // Test function to check if the service is available. Returns same `value`. - Ping(int32 value) => (int32 value); -};
diff --git a/testing/buildbot/chromium.chromiumos.json b/testing/buildbot/chromium.chromiumos.json index f4846b89..ed375b7 100644 --- a/testing/buildbot/chromium.chromiumos.json +++ b/testing/buildbot/chromium.chromiumos.json
@@ -5176,9 +5176,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6042.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 119.0.6042.0", + "description": "Run with ash-chrome version 119.0.6043.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -5188,8 +5188,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v119.0.6042.0", - "revision": "version:119.0.6042.0" + "location": "lacros_version_skew_tests_v119.0.6043.0", + "revision": "version:119.0.6043.0" } ], "dimensions": { @@ -5330,9 +5330,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6042.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 119.0.6042.0", + "description": "Run with ash-chrome version 119.0.6043.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -5342,8 +5342,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v119.0.6042.0", - "revision": "version:119.0.6042.0" + "location": "lacros_version_skew_tests_v119.0.6043.0", + "revision": "version:119.0.6043.0" } ], "dimensions": { @@ -5467,9 +5467,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6042.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 119.0.6042.0", + "description": "Run with ash-chrome version 119.0.6043.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -5479,8 +5479,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v119.0.6042.0", - "revision": "version:119.0.6042.0" + "location": "lacros_version_skew_tests_v119.0.6043.0", + "revision": "version:119.0.6043.0" } ], "dimensions": {
diff --git a/testing/buildbot/chromium.coverage.json b/testing/buildbot/chromium.coverage.json index 204fe77..6b4782f 100644 --- a/testing/buildbot/chromium.coverage.json +++ b/testing/buildbot/chromium.coverage.json
@@ -25384,9 +25384,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6042.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 119.0.6042.0", + "description": "Run with ash-chrome version 119.0.6043.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -25396,8 +25396,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v119.0.6042.0", - "revision": "version:119.0.6042.0" + "location": "lacros_version_skew_tests_v119.0.6043.0", + "revision": "version:119.0.6043.0" } ], "dimensions": { @@ -25532,9 +25532,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6042.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 119.0.6042.0", + "description": "Run with ash-chrome version 119.0.6043.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -25544,8 +25544,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v119.0.6042.0", - "revision": "version:119.0.6042.0" + "location": "lacros_version_skew_tests_v119.0.6043.0", + "revision": "version:119.0.6043.0" } ], "dimensions": { @@ -25664,9 +25664,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6042.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 119.0.6042.0", + "description": "Run with ash-chrome version 119.0.6043.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -25676,8 +25676,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v119.0.6042.0", - "revision": "version:119.0.6042.0" + "location": "lacros_version_skew_tests_v119.0.6043.0", + "revision": "version:119.0.6043.0" } ], "dimensions": {
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json index 36d2296..0d8dbbd 100644 --- a/testing/buildbot/chromium.fyi.json +++ b/testing/buildbot/chromium.fyi.json
@@ -43572,9 +43572,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6042.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 119.0.6042.0", + "description": "Run with ash-chrome version 119.0.6043.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -43583,8 +43583,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v119.0.6042.0", - "revision": "version:119.0.6042.0" + "location": "lacros_version_skew_tests_v119.0.6043.0", + "revision": "version:119.0.6043.0" } ], "dimensions": { @@ -43720,9 +43720,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6042.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 119.0.6042.0", + "description": "Run with ash-chrome version 119.0.6043.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -43731,8 +43731,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v119.0.6042.0", - "revision": "version:119.0.6042.0" + "location": "lacros_version_skew_tests_v119.0.6043.0", + "revision": "version:119.0.6043.0" } ], "dimensions": { @@ -43852,9 +43852,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6042.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 119.0.6042.0", + "description": "Run with ash-chrome version 119.0.6043.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -43863,8 +43863,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v119.0.6042.0", - "revision": "version:119.0.6042.0" + "location": "lacros_version_skew_tests_v119.0.6043.0", + "revision": "version:119.0.6043.0" } ], "dimensions": { @@ -45176,9 +45176,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6042.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 119.0.6042.0", + "description": "Run with ash-chrome version 119.0.6043.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -45187,8 +45187,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v119.0.6042.0", - "revision": "version:119.0.6042.0" + "location": "lacros_version_skew_tests_v119.0.6043.0", + "revision": "version:119.0.6043.0" } ], "dimensions": { @@ -45324,9 +45324,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6042.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 119.0.6042.0", + "description": "Run with ash-chrome version 119.0.6043.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -45335,8 +45335,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v119.0.6042.0", - "revision": "version:119.0.6042.0" + "location": "lacros_version_skew_tests_v119.0.6043.0", + "revision": "version:119.0.6043.0" } ], "dimensions": { @@ -45456,9 +45456,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6042.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 119.0.6042.0", + "description": "Run with ash-chrome version 119.0.6043.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -45467,8 +45467,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v119.0.6042.0", - "revision": "version:119.0.6042.0" + "location": "lacros_version_skew_tests_v119.0.6043.0", + "revision": "version:119.0.6043.0" } ], "dimensions": { @@ -46166,9 +46166,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6042.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 119.0.6042.0", + "description": "Run with ash-chrome version 119.0.6043.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -46177,8 +46177,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v119.0.6042.0", - "revision": "version:119.0.6042.0" + "location": "lacros_version_skew_tests_v119.0.6043.0", + "revision": "version:119.0.6043.0" } ], "dimensions": {
diff --git a/testing/buildbot/chromium.memory.json b/testing/buildbot/chromium.memory.json index 1fb094a7..d27cce7 100644 --- a/testing/buildbot/chromium.memory.json +++ b/testing/buildbot/chromium.memory.json
@@ -16538,12 +16538,12 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6042.0/test_ash_chrome", + "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome", "--test-launcher-print-test-stdio=always", "--combine-ash-logs-on-bots", "--asan-symbolize-output" ], - "description": "Run with ash-chrome version 119.0.6042.0", + "description": "Run with ash-chrome version 119.0.6043.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -16553,8 +16553,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v119.0.6042.0", - "revision": "version:119.0.6042.0" + "location": "lacros_version_skew_tests_v119.0.6043.0", + "revision": "version:119.0.6043.0" } ], "dimensions": { @@ -16706,12 +16706,12 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6042.0/test_ash_chrome", + "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome", "--test-launcher-print-test-stdio=always", "--combine-ash-logs-on-bots", "--asan-symbolize-output" ], - "description": "Run with ash-chrome version 119.0.6042.0", + "description": "Run with ash-chrome version 119.0.6043.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -16721,8 +16721,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v119.0.6042.0", - "revision": "version:119.0.6042.0" + "location": "lacros_version_skew_tests_v119.0.6043.0", + "revision": "version:119.0.6043.0" } ], "dimensions": { @@ -16853,12 +16853,12 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6042.0/test_ash_chrome", + "--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome", "--test-launcher-print-test-stdio=always", "--combine-ash-logs-on-bots", "--asan-symbolize-output" ], - "description": "Run with ash-chrome version 119.0.6042.0", + "description": "Run with ash-chrome version 119.0.6043.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -16868,8 +16868,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v119.0.6042.0", - "revision": "version:119.0.6042.0" + "location": "lacros_version_skew_tests_v119.0.6043.0", + "revision": "version:119.0.6043.0" } ], "dimensions": {
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index fa8466b..a83d262 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl
@@ -70,16 +70,16 @@ }, 'LACROS_VERSION_SKEW_CANARY': { 'identifier': 'Lacros version skew testing ash canary', - 'description': 'Run with ash-chrome version 119.0.6042.0', + 'description': 'Run with ash-chrome version 119.0.6043.0', 'args': [ - '--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6042.0/test_ash_chrome', + '--ash-chrome-path-override=../../lacros_version_skew_tests_v119.0.6043.0/test_ash_chrome', ], 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/linux-ash-chromium/x86_64/ash.zip', - 'location': 'lacros_version_skew_tests_v119.0.6042.0', - 'revision': 'version:119.0.6042.0', + 'location': 'lacros_version_skew_tests_v119.0.6043.0', + 'revision': 'version:119.0.6043.0', }, ], },
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 b143b66..223f1ff 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
@@ -3881,8 +3881,8 @@ kSandboxViaFencedFrame = 4541, kVisibilityStateObserver = 4542, kV8CompileHintsMagicAll = 4543, - kTextWrapBalance = 4544, - kTextWrapBalanceFail = 4545, + kOBSOLETE_TextWrapBalance = 4544, + kOBSOLETE_TextWrapBalanceFail = 4545, kAttributionReportingCrossAppWeb = 4546, kSecurePaymentConfirmationActivationlessShow = 4547, kServiceWorkerBypassFetchHandlerForAllWithRaceNetworkRequest = 4548, @@ -3931,8 +3931,8 @@ kClientHintsUAFormFactor = 4591, kURLSearchParamsHasFnBehaviourDiverged = 4592, kURLSearchParamsDeleteFnBehaviourDiverged = 4593, - kTextWrapPretty = 4594, - kTextWrapPrettyFail = 4595, + kOBSOLETE_TextWrapPretty = 4594, + kOBSOLETE_TextWrapPrettyFail = 4595, kContainerQueryEvalUnknown = 4596, kEventTimingPresentationPromiseResolvedAfterReport = 4597, kGetCoalescedEventsInInsecureContext = 4598, @@ -4010,6 +4010,8 @@ kOutOfFlowAlignSelfBothInsets = 4670, kV8WebAssemblyJSStringBuiltins = 4671, kObservableConstructor = 4672, + kTextWrapBalance = 4673, + kTextWrapPretty = 4674, // 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/renderer/bindings/generated_in_modules.gni b/third_party/blink/renderer/bindings/generated_in_modules.gni index 76bdedd..e8cb0c27 100644 --- a/third_party/blink/renderer/bindings/generated_in_modules.gni +++ b/third_party/blink/renderer/bindings/generated_in_modules.gni
@@ -2751,8 +2751,6 @@ "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_webgl_vertex_array_object.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_webgl_vertex_array_object_oes.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_webgl_vertex_array_object_oes.h", - "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_webgl_video_texture.cc", - "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_webgl_video_texture.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_websocket.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_websocket.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_websocket_stream.cc",
diff --git a/third_party/blink/renderer/bindings/idl_in_modules.gni b/third_party/blink/renderer/bindings/idl_in_modules.gni index 13c5b2d..4ec8a05 100644 --- a/third_party/blink/renderer/bindings/idl_in_modules.gni +++ b/third_party/blink/renderer/bindings/idl_in_modules.gni
@@ -1000,7 +1000,6 @@ "//third_party/blink/renderer/modules/webgl/webgl_uniform_location.idl", "//third_party/blink/renderer/modules/webgl/webgl_vertex_array_object.idl", "//third_party/blink/renderer/modules/webgl/webgl_vertex_array_object_oes.idl", - "//third_party/blink/renderer/modules/webgl/webgl_video_texture.idl", "//third_party/blink/renderer/modules/webgpu/gpu.idl", "//third_party/blink/renderer/modules/webgpu/gpu_adapter.idl", "//third_party/blink/renderer/modules/webgpu/gpu_adapter_info.idl",
diff --git a/third_party/blink/renderer/controller/highest_pmf_reporter.h b/third_party/blink/renderer/controller/highest_pmf_reporter.h index ea6b1f6c..3ccb701 100644 --- a/third_party/blink/renderer/controller/highest_pmf_reporter.h +++ b/third_party/blink/renderer/controller/highest_pmf_reporter.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_CONTROLLER_HIGHEST_PMF_REPORTER_H_ #define THIRD_PARTY_BLINK_RENDERER_CONTROLLER_HIGHEST_PMF_REPORTER_H_ +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "third_party/blink/renderer/controller/controller_export.h" #include "third_party/blink/renderer/controller/memory_usage_monitor.h" @@ -49,7 +50,7 @@ virtual void ReportMetrics(); scoped_refptr<base::SingleThreadTaskRunner> task_runner_; - const base::TickClock* clock_; + raw_ptr<const base::TickClock, ExperimentalRenderer> clock_; bool first_navigation_detected_ = false; double current_highest_pmf_ = 0.0;
diff --git a/third_party/blink/renderer/controller/performance_manager/v8_detailed_memory_reporter_impl.cc b/third_party/blink/renderer/controller/performance_manager/v8_detailed_memory_reporter_impl.cc index 0659b577..d188fe9 100644 --- a/third_party/blink/renderer/controller/performance_manager/v8_detailed_memory_reporter_impl.cc +++ b/third_party/blink/renderer/controller/performance_manager/v8_detailed_memory_reporter_impl.cc
@@ -11,6 +11,7 @@ #include "base/check.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/notreached.h" #include "third_party/blink/public/common/tokens/tokens.h" @@ -241,7 +242,7 @@ std::move(callback_).Run(std::move(result_)); } - v8::Isolate* isolate_ = nullptr; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_ = nullptr; GetV8MemoryUsageCallback callback_; mojom::blink::PerProcessV8MemoryUsagePtr result_; bool main_measurement_done_ = false;
diff --git a/third_party/blink/renderer/controller/performance_manager/v8_worker_memory_reporter.cc b/third_party/blink/renderer/controller/performance_manager/v8_worker_memory_reporter.cc index a6a9de93..af68fbe 100644 --- a/third_party/blink/renderer/controller/performance_manager/v8_worker_memory_reporter.cc +++ b/third_party/blink/renderer/controller/performance_manager/v8_worker_memory_reporter.cc
@@ -8,6 +8,7 @@ #include <utility> #include "base/check.h" +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" #include "third_party/blink/renderer/core/timing/measure_memory/measure_memory_controller.h" @@ -77,7 +78,7 @@ std::unique_ptr<V8WorkerMemoryReporter::WorkerMemoryUsage> memory_usage); void NotifyMeasurementFailure(); base::WeakPtr<V8WorkerMemoryReporter> worker_memory_reporter_; - WorkerThread* worker_thread_; + raw_ptr<WorkerThread, ExperimentalRenderer> worker_thread_; scoped_refptr<base::SingleThreadTaskRunner> task_runner_; bool did_notify_ = false; };
diff --git a/third_party/blink/renderer/controller/private_memory_footprint_provider.h b/third_party/blink/renderer/controller/private_memory_footprint_provider.h index c956af5a..5d30bf4 100644 --- a/third_party/blink/renderer/controller/private_memory_footprint_provider.h +++ b/third_party/blink/renderer/controller/private_memory_footprint_provider.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_CONTROLLER_PRIVATE_MEMORY_FOOTPRINT_PROVIDER_H_ #define THIRD_PARTY_BLINK_RENDERER_CONTROLLER_PRIVATE_MEMORY_FOOTPRINT_PROVIDER_H_ +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "third_party/blink/renderer/controller/controller_export.h" #include "third_party/blink/renderer/controller/memory_usage_monitor.h" @@ -44,7 +45,7 @@ void SetPrivateMemoryFootprint(uint64_t private_memory_footprint_bytes); scoped_refptr<base::SingleThreadTaskRunner> task_runner_; - const base::TickClock* clock_; + raw_ptr<const base::TickClock, ExperimentalRenderer> clock_; }; } // namespace blink
diff --git a/third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.h b/third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.h index f8b2f742..2bb78c3 100644 --- a/third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.h +++ b/third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_CONTROLLER_USER_LEVEL_MEMORY_PRESSURE_SIGNAL_GENERATOR_H_ #define THIRD_PARTY_BLINK_RENDERER_CONTROLLER_USER_LEVEL_MEMORY_PRESSURE_SIGNAL_GENERATOR_H_ +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" #include "build/build_config.h" @@ -73,14 +74,15 @@ scoped_refptr<base::SingleThreadTaskRunner> task_runner_; base::TimeDelta inert_interval_ = base::TimeDelta(); base::TimeDelta minimum_interval_ = base::TimeDelta(); - const base::TickClock* clock_; + raw_ptr<const base::TickClock, ExperimentalRenderer> clock_; bool is_loading_ = false; absl::optional<base::TimeTicks> last_loaded_; bool has_pending_request_ = false; base::TimeTicks last_requested_; absl::optional<base::TimeTicks> last_generated_; - MainThreadScheduler* main_thread_scheduler_ = nullptr; + raw_ptr<MainThreadScheduler, ExperimentalRenderer> main_thread_scheduler_ = + nullptr; }; } // namespace blink
diff --git a/third_party/blink/renderer/core/dom/events/event_dispatcher.cc b/third_party/blink/renderer/core/dom/events/event_dispatcher.cc index 45dd77ad..f352242 100644 --- a/third_party/blink/renderer/core/dom/events/event_dispatcher.cc +++ b/third_party/blink/renderer/core/dom/events/event_dispatcher.cc
@@ -207,18 +207,28 @@ const bool is_click = event_->IsMouseEvent() && event_->type() == event_type_names::kClick; + Node* target_node = event_->target() ? event_->target()->ToNode() : nullptr; + const bool is_target_body_element = + target_node && target_node->IsHTMLElement() && + DynamicTo<HTMLElement>(target_node)->IsHTMLBodyElement(); + const bool is_unfocused_keydown = + event_->IsKeyboardEvent() && + event_->type() == event_type_names::kKeydown && is_target_body_element; + std::unique_ptr<SoftNavigationEventScope> soft_navigation_scope; - if (is_click && event_->isTrusted() && frame) { - if (window && frame->IsMainFrame()) { + if ((is_click || is_unfocused_keydown) && event_->isTrusted() && frame) { + ScriptState* script_state = ToScriptStateForMainWorld(frame); + if (window && frame->IsMainFrame() && script_state) { soft_navigation_scope = std::make_unique<SoftNavigationEventScope>( - SoftNavigationHeuristics::From(*window), - ToScriptStateForMainWorld(frame)); + SoftNavigationHeuristics::From(*window), script_state, + is_unfocused_keydown); } // A genuine mouse click cannot be triggered by script so we don't expect // there are any script in the stack. - DCHECK(!frame->GetAdTracker() || !frame->GetAdTracker()->IsAdScriptInStack( - AdTracker::StackType::kBottomAndTop)); - if (frame->IsAdFrame()) { + DCHECK(!is_click || !frame->GetAdTracker() || + !frame->GetAdTracker()->IsAdScriptInStack( + AdTracker::StackType::kBottomAndTop)); + if (is_click && frame->IsAdFrame()) { UseCounter::Count(document, WebFeature::kAdClick); } } @@ -266,9 +276,6 @@ pre_dispatch_event_handler_result); auto result = EventTarget::GetDispatchEventResult(*event_); - if (soft_navigation_scope) { - soft_navigation_scope->SetResult(result); - } return result; }
diff --git a/third_party/blink/renderer/core/fetch/fetch_manager.cc b/third_party/blink/renderer/core/fetch/fetch_manager.cc index 98d8c7d..8d72903 100644 --- a/third_party/blink/renderer/core/fetch/fetch_manager.cc +++ b/third_party/blink/renderer/core/fetch/fetch_manager.cc
@@ -4,6 +4,8 @@ #include "third_party/blink/renderer/core/fetch/fetch_manager.h" +#include <stdint.h> +#include <algorithm> #include <utility> #include "base/check.h" @@ -12,6 +14,7 @@ #include "base/numerics/safe_conversions.h" #include "base/strings/strcat.h" #include "base/task/single_thread_task_runner.h" +#include "base/time/time.h" #include "base/unguessable_token.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "services/network/public/cpp/features.h" @@ -722,7 +725,7 @@ // Prevent notification fetch_manager_ = nullptr; if (threadable_loader_) { - if (fetch_request_data_->Keepalive()) { + if (fetch_request_data_->Keepalive() && !IsDeferred()) { threadable_loader_->Detach(); } else { threadable_loader_->Cancel(); @@ -1057,10 +1060,7 @@ // - `IsDeferred()` is true, which helps the base generate different requests. // - The response-related methods do nothing. See ThreadableLoaderClient // overrides below. -// - TODO(crbug.com/1465781): Support backgroundTimeout from [2] to allow -// sending earlier after the context being in BFCache+backgroundTimeout -// time. This requires a mechanism to ask the browser companion -// (content::KeepAliveURLLoader) to send, after URLLoader creation. +// - Support activationTimeout from [2] to allow sending at specified time. // - Support FetchLaterResult from [2]. // // Underlying, this loader intends to create a "deferred" fetch request, @@ -1074,23 +1074,48 @@ // the latter method can only be called when ResourcFetcher is not detached. // Plus, the browser companion must be notified when the context is still alive. // -// [1]: https://whatpr.org/fetch/1647/53e4c3d...71fd383.html#deferred-fetching -// [2]: https://whatpr.org/fetch/1647/53e4c3d...71fd383.html#fetch-later-method +// [1]: https://whatpr.org/fetch/1647/9ca4bda...7bff4de.html#deferred-fetching +// [2]: https://whatpr.org/fetch/1647/9ca4bda...7bff4de.html#fetch-later-method class FetchManager::DeferredLoader : public FetchManager::Loader { public: DeferredLoader(ExecutionContext* ec, FetchManager* fetch_manager, FetchRequestData* fetch_request_data, ScriptState* script_state, - AbortSignal* signal) + AbortSignal* signal, + const absl::optional<base::TimeDelta>& activation_timeout) : FetchManager::Loader(ec, fetch_manager, /*resolver=*/nullptr, fetch_request_data, script_state, signal), - fetch_later_result_(MakeGarbageCollected<FetchLaterResult>()) { + fetch_later_result_(MakeGarbageCollected<FetchLaterResult>()), + activation_timeout_(activation_timeout), + timer_( + ec->GetTaskRunner( + // TODO(crbug.com/1465781): Update to proper TaskType once the + // FetchLater API spec is finalized. + // Currently using the unfreezable type as a deferred fetch + // request needs to work when the ExecutionContext is frozen, + // e.g. put into BackForwardCache. See also + // https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/platform/scheduler/TaskSchedulingInBlink.md#task-types-and-task-sources + TaskType::kNetworkingUnfreezable), + this, + &DeferredLoader::TimerFired) { base::UmaHistogramBoolean("FetchLater.Renderer.Total", true); + + // https://whatpr.org/fetch/1647/9ca4bda...7bff4de.html#request-a-deferred-fetch + // Continued with "request a deferred fetch" + // 9. If `activation_timeout_` is not null, then run the following steps in + // parallel: + if (activation_timeout_.has_value()) { + // 9-1. The user agent should wait until `activation_timeout_` + // milliseconds have passed. The user agent may wait for a longer or + // shorter period time, e.g., to optimize batching of deferred fetches. + // Implementation followed by `TimerFired()`. + timer_.StartOneShot(*activation_timeout_, FROM_HERE); + } } ~DeferredLoader() override = default; @@ -1106,25 +1131,37 @@ // FetchManager::Loader overrides: void Dispose() override { - // https://whatpr.org/fetch/1647/53e4c3d...71fd383.html#concept-defer=fetch-record - // 1. Set deferredRecord’s invoke state to terminated. - SetInvokeState(InvokeState::TERMINATED); - // 2. Fetch deferredRecord’s request. + timer_.Stop(); // The browser companion will take care of the actual request sending when // discoverying the URL loading connections from here are gone. FetchManager::Loader::Dispose(); } void Abort() override { - // https://whatpr.org/fetch/1647/53e4c3d...71fd383.html#fetch-later-method - // 12. Add the following abort steps to requestObject’s signal: - // 1. Set deferredRecord’s invoke state to "aborted". + // https://whatpr.org/fetch/1647/9ca4bda...7bff4de.html#fetch-later-method + // 13. Add the following abort steps to requestObject’s signal: + // 13-1. Set deferredRecord’s invoke state to "aborted". SetInvokeState(InvokeState::ABORTED); LogFetchLaterMetric(FetchLaterRendererMetricType::kAbortedByUser); - // 2. Remove deferredRecord from request’s client’s fetch group’s - // deferred fetch records. + // 13-2. Remove deferredRecord from request’s client’s fetch group’s + // deferred fetch records. + // TODO(crbug.com/1465781): Implement abort function. FetchManager::Loader::Abort(); } + void Process() { + // https://whatpr.org/fetch/1647/9ca4bda...7bff4de.html#process-a-deferred-fetch + // To process a deferred fetch deferredRecord: + // 1. If deferredRecord’s invoke state is not "deferred", then return. + if (invoke_state_ != InvokeState::DEFERRED) { + return; + } + // 2. Set deferredRecord’s invoke state to "activated". + SetInvokeState(InvokeState::ACTIVATED); + // 3. Fetch deferredRecord’s request. + LogFetchLaterMetric(FetchLaterRendererMetricType::kActivatedByTimeout); + Dispose(); + } + // Returns this loader's request body length if the followings are all true: // - this loader's request has a non-null body. // - `url` is "same origin" with this loader's request URL. @@ -1138,14 +1175,13 @@ void Trace(Visitor* visitor) const override { visitor->Trace(fetch_later_result_); + visitor->Trace(timer_); FetchManager::Loader::Trace(visitor); } private: enum class InvokeState { DEFERRED, - SCHEDULED, - TERMINATED, ABORTED, ACTIVATED }; @@ -1155,14 +1191,6 @@ UseCounter::Count(GetExecutionContext(), WebFeature::kFetchLaterInvokeStateDeferred); break; - case InvokeState::SCHEDULED: - UseCounter::Count(GetExecutionContext(), - WebFeature::kFetchLaterInvokeStateScheduled); - break; - case InvokeState::TERMINATED: - UseCounter::Count(GetExecutionContext(), - WebFeature::kFetchLaterInvokeStateTerminated); - break; case InvokeState::ABORTED: UseCounter::Count(GetExecutionContext(), WebFeature::kFetchLaterInvokeStateAborted); @@ -1172,7 +1200,7 @@ WebFeature::kFetchLaterInvokeStateActivated); break; default: - NOTREACHED(); + NOTREACHED_NORETURN(); }; invoke_state_ = state; fetch_later_result_->SetActivated(state == InvokeState::ACTIVATED); @@ -1186,6 +1214,15 @@ } } + // Triggered by `timer_`. + void TimerFired(TimerBase*) { + // https://whatpr.org/fetch/1647/9ca4bda...7bff4de.html#request-a-deferred-fetch + // Continued with "request a deferred fetch" + + // 9-2. Process a deferred fetch given deferredRecord. + Process(); + } + // A deferred fetch record's "invoke state" field. InvokeState invoke_state_ = InvokeState::DEFERRED; @@ -1197,6 +1234,12 @@ // // This field should be updated whenever `invoke_state_` changes. Member<FetchLaterResult> fetch_later_result_; + + // The "activationTimeout" to request a deferred fetch. + // https://whatpr.org/fetch/1647/9ca4bda...7bff4de.html#request-a-deferred-fetch + const absl::optional<base::TimeDelta> activation_timeout_; + // A timer to handle `activation_timeout_`. + HeapTaskRunnerTimer<DeferredLoader> timer_; }; FetchManager::FetchManager(ExecutionContext* execution_context) @@ -1226,11 +1269,13 @@ return promise; } -FetchLaterResult* FetchManager::FetchLater(ScriptState* script_state, - FetchRequestData* request, - AbortSignal* signal, - ExceptionState& exception_state) { - // https://whatpr.org/fetch/1647/53e4c3d...71fd383.html#fetch-later-method +FetchLaterResult* FetchManager::FetchLater( + ScriptState* script_state, + FetchRequestData* request, + AbortSignal* signal, + absl::optional<DOMHighResTimeStamp> activation_timeout_ms, + ExceptionState& exception_state) { + // https://whatpr.org/fetch/1647/9ca4bda...7bff4de.html#fetch-later-method // Continuing the fetchLater(input, init) method steps: CHECK(signal); // 3. If request’s signal is aborted, then throw signal’s abort reason. @@ -1252,10 +1297,22 @@ return nullptr; } - // 11. Let deferredRecord be the result of calling request a deferred fetch. + absl::optional<base::TimeDelta> activation_timeout = absl::nullopt; + if (activation_timeout_ms.has_value()) { + activation_timeout = base::Milliseconds(*activation_timeout_ms); + // 11. If `activation_timeout` is less than 0 then throw a RangeError. + if (activation_timeout->is_negative()) { + exception_state.ThrowRangeError( + "fetchLater's activationTimeout cannot be negative."); + return nullptr; + } + } + + // 12. Let deferredRecord be the result of calling request a deferred fetch + // given `request` and `activation_timeout`. This may throw an exception. // - // Deferred fetching - // https://whatpr.org/fetch/1647/53e4c3d...71fd383.html#deferred-fetching + // "request a deferred fetch" + // https://whatpr.org/fetch/1647/9ca4bda...7bff4de.html#request-a-deferred-fetch uint64_t bytes_for_origin = 0; // 3. If request’s body is not null then: if (request->Buffer()) { @@ -1270,7 +1327,8 @@ // 3.2 Set `bytes_for_origin` to request’s body’s length. bytes_for_origin = request->BufferByteLength(); } - // Run Step 5 for potential early termination. + // Run Step 5 for potential early termination. It also caps + // `bytes_per_origin`. if (bytes_for_origin > kMaxScheduledDeferredBytesPerOrigin) { UseCounter::Count(GetExecutionContext(), WebFeature::kFetchLaterErrorQuotaExceeded); @@ -1286,6 +1344,9 @@ // URL’s origin, then increment `bytes_for_origin` by deferredRecord’s // request’s body’s length. for (const auto& deferred_loader : deferred_loaders_) { + // `bytes_for_orign` is capped below the max (64 kilobytes), and the value + // returned by every deferred_loader has run through the same cap. Hence, + // the sum here is guaranteed to be <= 128 kilobytes. bytes_for_origin += deferred_loader->GetDeferredBytesForUrlOrigin(request->Url()); // 5. If `bytes_for_origin` is greater than 64 kilobytes, then throw a @@ -1304,8 +1365,13 @@ // 6. Set request’s keepalive to true. request->SetKeepalive(true); + // 7. Let deferredRecord be a new deferred fetch record whose request is + // `request`. auto* deferred_loader = MakeGarbageCollected<DeferredLoader>( - GetExecutionContext(), this, request, script_state, signal); + GetExecutionContext(), this, request, script_state, signal, + activation_timeout); + // 8. Append deferredRecord to request’s client’s fetch group’s deferred fetch + // records. deferred_loaders_.insert(deferred_loader); deferred_loader->Start(); @@ -1313,18 +1379,24 @@ } void FetchManager::ContextDestroyed() { - // https://whatpr.org/fetch/1647/53e4c3d...71fd383.html#concept-defer=fetch-record + // https://whatpr.org/fetch/1647/9ca4bda...7bff4de.html#concept-defer=fetch-record // When a fetch group fetchGroup is terminated: - // 1. For each fetch record of fetchGroup's ... + // 1. For each fetch record of fetchGroup's fetch records, if record's + // controller is non-null and record’s done flag is unset and keepalive is + // false, terminate the fetch record’s controller . for (auto& loader : loaders_) { loader->LogIfKeepalive(FetchKeepAliveRendererMetricType::kContextDestroyed); loader->Dispose(); } - // 2. For each deferred fetch record of fetchGroup's ... + // 2. process deferred fetches for fetchGroup. + // https://whatpr.org/fetch/1647/9ca4bda...7bff4de.html#process-deferred-fetches + // To process deferred fetches given a fetch group fetchGroup: for (auto& deferred_loader : deferred_loaders_) { LogFetchLaterMetric(FetchLaterRendererMetricType::kContextDestroyed); - deferred_loader->Dispose(); + // 3. For each deferred fetch record deferredRecord, process a deferred + // fetch given deferredRecord. + deferred_loader->Process(); } }
diff --git a/third_party/blink/renderer/core/fetch/fetch_manager.h b/third_party/blink/renderer/core/fetch/fetch_manager.h index 9b0706a..f876a16 100644 --- a/third_party/blink/renderer/core/fetch/fetch_manager.h +++ b/third_party/blink/renderer/core/fetch/fetch_manager.h
@@ -5,9 +5,11 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_FETCH_FETCH_MANAGER_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_FETCH_FETCH_MANAGER_H_ +#include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise.h" #include "third_party/blink/renderer/core/core_export.h" -#include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.h" +#include "third_party/blink/renderer/core/dom/dom_high_res_time_stamp.h" +#include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_state_observer.h" #include "third_party/blink/renderer/platform/heap/collection_support/heap_hash_set.h" #include "third_party/blink/renderer/platform/heap/garbage_collected.h" @@ -33,7 +35,10 @@ FetchLaterResult* FetchLater(ScriptState*, FetchRequestData*, AbortSignal*, + absl::optional<DOMHighResTimeStamp>, ExceptionState&); + + // ExecutionContextLifecycleObserver overrides: void ContextDestroyed() override; void Trace(Visitor*) const override;
diff --git a/third_party/blink/renderer/core/fetch/fetch_manager_test.cc b/third_party/blink/renderer/core/fetch/fetch_manager_test.cc index 7193b42..40e00feb 100644 --- a/third_party/blink/renderer/core/fetch/fetch_manager_test.cc +++ b/third_party/blink/renderer/core/fetch/fetch_manager_test.cc
@@ -5,11 +5,14 @@ #include "third_party/blink/renderer/core/fetch/fetch_manager.h" #include "base/memory/scoped_refptr.h" +#include "base/strings/strcat.h" #include "base/test/mock_callback.h" #include "mojo/public/cpp/bindings/remote.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" +#include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-blink.h" +#include "third_party/blink/public/mojom/frame/lifecycle.mojom-blink.h" #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_testing.h" #include "third_party/blink/renderer/bindings/core/v8/v8_request_init.h" #include "third_party/blink/renderer/core/dom/abort_controller.h" @@ -30,6 +33,49 @@ using ::testing::IsNull; using ::testing::Not; +MATCHER_P(HasRangeError, + expected_message, + base::StrCat({"has ", negation ? "no " : "", "RangeError('", + expected_message, "')"})) { + const ExceptionState& exception_state = arg; + if (!exception_state.HadException()) { + *result_listener << "no exception"; + return false; + } + if (exception_state.CodeAs<ESErrorType>() != ESErrorType::kRangeError) { + *result_listener << "exception is not RangeError"; + return false; + } + if (exception_state.Message() != expected_message) { + *result_listener << "unexpected message from RangeError: " + << exception_state.Message(); + return false; + } + return true; +} + +MATCHER_P(HasAbortError, + expected_message, + base::StrCat({"has ", negation ? "no " : "", "AbortError('", + expected_message, "')"})) { + const ExceptionState& exception_state = arg; + if (!exception_state.HadException()) { + *result_listener << "no exception"; + return false; + } + if (exception_state.CodeAs<DOMExceptionCode>() != + DOMExceptionCode::kAbortError) { + *result_listener << "exception is not AbortError"; + return false; + } + if (exception_state.Message() != expected_message) { + *result_listener << "unexpected message from AbortError: " + << exception_state.Message(); + return false; + } + return true; +} + } // namespace class FetchLaterTest : public testing::Test { @@ -67,7 +113,7 @@ TEST_F(FetchLaterTest, CreateSameOriginFetchLaterRequest) { FetchLaterTestingScope scope; - ExceptionState& exception_state = scope.GetExceptionState(); + auto& exception_state = scope.GetExceptionState(); auto target_url = AtomicString("/"); url_test_helpers::RegisterMockedURLLoad(KURL(GetSourcePageURL() + target_url), test::CoreTestDataPath("foo.html"), @@ -80,11 +126,90 @@ auto* result = fetch_manager->FetchLater( scope.GetScriptState(), request->PassRequestData(scope.GetScriptState()), - request->signal(), scope.GetExceptionState()); + request->signal(), absl::nullopt, exception_state); EXPECT_THAT(result, Not(IsNull())); EXPECT_FALSE(result->activated()); EXPECT_FALSE(exception_state.HadException()); } +TEST_F(FetchLaterTest, NegativeActivationTimeoutThrowRangeError) { + FetchLaterTestingScope scope; + auto& exception_state = scope.GetExceptionState(); + auto target_url = AtomicString("/"); + url_test_helpers::RegisterMockedURLLoad(KURL(GetSourcePageURL() + target_url), + test::CoreTestDataPath("foo.html"), + "text/html"); + auto* fetch_manager = + MakeGarbageCollected<FetchManager>(scope.GetExecutionContext()); + auto* controller = AbortController::Create(scope.GetScriptState()); + auto* request = + CreateFetchLaterRequest(scope, target_url, controller->signal()); + + auto* result = fetch_manager->FetchLater( + scope.GetScriptState(), request->PassRequestData(scope.GetScriptState()), + request->signal(), /*activation_timeout=*/absl::make_optional(-1), + exception_state); + + EXPECT_THAT(result, IsNull()); + EXPECT_THAT( + exception_state, + HasRangeError("fetchLater's activationTimeout cannot be negative.")); +} + +// Test to cover when a FetchManager::FetchLater() call is provided with an +// AbortSignal that has been aborted. +TEST_F(FetchLaterTest, AbortBeforeFetchLater) { + FetchLaterTestingScope scope; + auto& exception_state = scope.GetExceptionState(); + auto target_url = AtomicString("/"); + url_test_helpers::RegisterMockedURLLoad(KURL(GetSourcePageURL() + target_url), + test::CoreTestDataPath("foo.html"), + "text/html"); + auto* fetch_manager = + MakeGarbageCollected<FetchManager>(scope.GetExecutionContext()); + auto* controller = AbortController::Create(scope.GetScriptState()); + auto* request = + CreateFetchLaterRequest(scope, target_url, controller->signal()); + // Simulates FetchLater aborted by abort signal first. + controller->abort(scope.GetScriptState()); + // Sets up a FetchLater request. + auto* result = fetch_manager->FetchLater( + scope.GetScriptState(), request->PassRequestData(scope.GetScriptState()), + request->signal(), /*background_timeout=*/absl::nullopt, exception_state); + + EXPECT_THAT(result, IsNull()); + EXPECT_THAT(exception_state, + HasAbortError("The user aborted a fetchLater request.")); +} + +// Test to cover when a FetchManager::FetchLater() is aborted after being +// called. +TEST_F(FetchLaterTest, AbortAfterFetchLater) { + FetchLaterTestingScope scope; + auto& exception_state = scope.GetExceptionState(); + auto target_url = AtomicString("/"); + url_test_helpers::RegisterMockedURLLoad(KURL(GetSourcePageURL() + target_url), + test::CoreTestDataPath("foo.html"), + "text/html"); + auto* fetch_manager = + MakeGarbageCollected<FetchManager>(scope.GetExecutionContext()); + auto* controller = AbortController::Create(scope.GetScriptState()); + auto* request = + CreateFetchLaterRequest(scope, target_url, controller->signal()); + // Sets up a FetchLater request. + auto* result = fetch_manager->FetchLater( + scope.GetScriptState(), request->PassRequestData(scope.GetScriptState()), + request->signal(), /*background_timeout=*/absl::nullopt, exception_state); + EXPECT_THAT(result, Not(IsNull())); + + // Simulates FetchLater aborted by abort signal. + controller->abort(scope.GetScriptState()); + + // Even aborted, the FetchLaterResult held by user should still exist. + EXPECT_THAT(result, Not(IsNull())); + EXPECT_FALSE(result->activated()); + EXPECT_FALSE(exception_state.HadException()); +} + } // namespace blink
diff --git a/third_party/blink/renderer/core/fetch/global_fetch.cc b/third_party/blink/renderer/core/fetch/global_fetch.cc index d4088b7..1ed82609 100644 --- a/third_party/blink/renderer/core/fetch/global_fetch.cc +++ b/third_party/blink/renderer/core/fetch/global_fetch.cc
@@ -100,7 +100,7 @@ return MakeGarbageCollected<FetchLaterResult>(); } - // https://whatpr.org/fetch/1647/53e4c3d...71fd383.html#fetch-later-method + // https://whatpr.org/fetch/1647/9ca4bda...7bff4de.html#fetch-later-method // Run the fetchLater(input, init) method steps: // 1. If the user-agent has determined that deferred fetching is not @@ -122,8 +122,15 @@ probe::WillSendXMLHttpOrFetchNetworkRequest(execution_context, r->url()); FetchRequestData* request_data = r->PassRequestData(script_state); MeasureFetchProperties(execution_context, request_data); - auto* result = fetch_manager_->FetchLater(script_state, request_data, - r->signal(), exception_state); + // 9. If init is given and init ["activationTimeout"] exists, then set + // `activation_timeout` to init ["activationTimeout"]. + absl::optional<DOMHighResTimeStamp> activation_timeout = + (init->hasActivationTimeout() + ? absl::make_optional(init->activationTimeout()) + : absl::nullopt); + auto* result = + fetch_manager_->FetchLater(script_state, request_data, r->signal(), + activation_timeout, exception_state); if (exception_state.HadException()) { return nullptr; }
diff --git a/third_party/blink/renderer/core/layout/layout_box.cc b/third_party/blink/renderer/core/layout/layout_box.cc index f1ad87a..d975ea4e 100644 --- a/third_party/blink/renderer/core/layout/layout_box.cc +++ b/third_party/blink/renderer/core/layout/layout_box.cc
@@ -4558,9 +4558,8 @@ return; } - // Now the container is a relatively positioned inline. + // Now the container is an inline box that's also an abspos containing block. CHECK(container->IsLayoutInline()); - CHECK(container->IsRelPositioned()); const LayoutInline* inline_container = To<LayoutInline>(container); if (!inline_container->HasInlineFragments()) { return;
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm.cc index 546ab39..a289c96 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm.cc
@@ -162,7 +162,6 @@ if (!score_line_break_context_->LineBreakPoints().empty()) { UMA_HISTOGRAM_TIMES("Renderer.Layout.TextWrapBalance", timer.Elapsed()); - UseCounter::Count(node.GetDocument(), WebFeature::kTextWrapBalance); return; } } @@ -181,14 +180,12 @@ score_line_break_context_->LineInfoList().Clear(); } UMA_HISTOGRAM_TIMES("Renderer.Layout.TextWrapBalance", timer.Elapsed()); - UseCounter::Count(node.GetDocument(), WebFeature::kTextWrapBalance); return; } } UMA_HISTOGRAM_TIMES("Renderer.Layout.TextWrapBalance.Fail", timer.Elapsed()); - UseCounter::Count(node.GetDocument(), WebFeature::kTextWrapBalanceFail); } void Optimize(const NGInlineNode& node, @@ -209,7 +206,6 @@ // suspending the context. UMA_HISTOGRAM_TIMES("Renderer.Layout.TextWrapPretty.Fail", timer.Elapsed()); - UseCounter::Count(node.GetDocument(), WebFeature::kTextWrapPrettyFail); return; } NGScoreLineBreaker optimizer(node, space, line_widths, break_token, @@ -221,11 +217,9 @@ } if (!score_line_break_context_->LineBreakPoints().empty()) { UMA_HISTOGRAM_TIMES("Renderer.Layout.TextWrapPretty", timer.Elapsed()); - UseCounter::Count(node.GetDocument(), WebFeature::kTextWrapPretty); } else { UMA_HISTOGRAM_TIMES("Renderer.Layout.TextWrapPretty.Fail", timer.Elapsed()); - UseCounter::Count(node.GetDocument(), WebFeature::kTextWrapPrettyFail); } }
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm_test.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm_test.cc index 534c7a9..a0345f20 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm_test.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm_test.cc
@@ -47,6 +47,19 @@ } return ostream.str(); } + + PhysicalRect TextAreaFirstLineRect(const char* id) { + HTMLTextAreaElement* textarea = To<HTMLTextAreaElement>(GetElementById(id)); + DCHECK(textarea); + + NGInlineCursor cursor(*To<LayoutBlockFlow>( + textarea->InnerEditorElement()->GetLayoutObject())); + cursor.MoveToFirstLine(); + EXPECT_TRUE(cursor.IsNotNull()); + + return PhysicalRect(cursor.Current().OffsetInContainerFragment(), + cursor.Current().Size()); + } }; TEST_F(NGInlineLayoutAlgorithmTest, Types) { @@ -774,31 +787,27 @@ "}"); SetBodyInnerHTML(R"HTML( <!DOCTYPE html> - <textarea dir="rtl" id="hangingDoesntOverflow">abc </textarea> - <textarea dir="rtl" id="hangingOverflows">abc </textarea> + <textarea dir="rtl" id="a">abc </textarea> + <textarea dir="rtl" id="b">abc nextLine</textarea> + <textarea dir="rtl" id="c">abc </textarea> + <textarea dir="rtl" id="d">abc nextLine</textarea> )HTML"); - HTMLTextAreaElement* hanging_doesnt_overflow = - To<HTMLTextAreaElement>(GetElementById("hangingDoesntOverflow")); - NGInlineCursor hanging_doesnt_overflow_cursor(*To<LayoutBlockFlow>( - hanging_doesnt_overflow->InnerEditorElement()->GetLayoutObject())); - hanging_doesnt_overflow_cursor.MoveToFirstLine(); - EXPECT_TRUE(hanging_doesnt_overflow_cursor.IsNotNull()); - PhysicalRect hanging_doesnt_overflow_rect( - hanging_doesnt_overflow_cursor.Current().OffsetInContainerFragment(), - hanging_doesnt_overflow_cursor.Current().Size()); - EXPECT_EQ(PhysicalRect(70, 0, 30, 10), hanging_doesnt_overflow_rect); + // Trailing spaces conditionally hang since the line is followed by a line + // break, and the line doesn't overflow, so they as treated as not hanging. + EXPECT_EQ(PhysicalRect(50, 0, 50, 10), TextAreaFirstLineRect("a")); - HTMLTextAreaElement* hanging_overflows = - To<HTMLTextAreaElement>(GetElementById("hangingOverflows")); - NGInlineCursor hanging_overflows_cursor(*To<LayoutBlockFlow>( - hanging_overflows->InnerEditorElement()->GetLayoutObject())); - hanging_overflows_cursor.MoveToFirstLine(); - EXPECT_TRUE(hanging_overflows_cursor.IsNotNull()); - PhysicalRect hanging_overflows_rect( - hanging_overflows_cursor.Current().OffsetInContainerFragment(), - hanging_overflows_cursor.Current().Size()); - EXPECT_EQ(PhysicalRect(70, 0, 30, 10), hanging_overflows_rect); + // The hanging width doesn't overflow, and it unconditionally hangs because + // it's not followed by a line break. + EXPECT_EQ(PhysicalRect(70, 0, 30, 10), TextAreaFirstLineRect("b")); + + // Trailing spaces conditionally hang since the line is followed by a line + // break, and the line overflows, so only the overflowing width hangs. + EXPECT_EQ(PhysicalRect(0, 0, 100, 10), TextAreaFirstLineRect("c")); + + // The hanging width overflows, and it unconditionally hangs because + // it's not followed by a line break. + EXPECT_EQ(PhysicalRect(70, 0, 30, 10), TextAreaFirstLineRect("d")); } TEST_F(NGInlineLayoutAlgorithmTest, LineBoxWithHangingWidthRTLCenterAligned) { @@ -812,36 +821,42 @@ SetBodyInnerHTML(R"HTML( <!DOCTYPE html> <textarea dir="rtl" id="a">abc </textarea> - <textarea dir="rtl" id="b">abc </textarea> + <textarea dir="rtl" id="b">abc nextLine</textarea> + <textarea dir="rtl" id="c">abc </textarea> + <textarea dir="rtl" id="d">abc nextLine</textarea> + <textarea dir="rtl" id="e">abc </textarea> + <textarea dir="rtl" id="f">abc nextLine</textarea> )HTML"); - HTMLTextAreaElement* a_textarea = - To<HTMLTextAreaElement>(GetElementById("a")); - NGInlineCursor a_cursor(*To<LayoutBlockFlow>( - a_textarea->InnerEditorElement()->GetLayoutObject())); - a_cursor.MoveToFirstLine(); - EXPECT_TRUE(a_cursor.IsNotNull()); - PhysicalRect a_rect(a_cursor.Current().OffsetInContainerFragment(), - a_cursor.Current().Size()); - // The line size is 30px and the hanging width is 20px. The rectangle - // containing the line and the hanging width is centered, so its right edge - // is at (100 + 30 + 20)/2 = 75px. Since the line's base direction is RTL, the - // text is at the right and its left edge is at 75px - 30 = 45px. - EXPECT_EQ(PhysicalRect(45, 0, 30, 10), a_rect); + // The line size is 30px and the trailing spaces are 20px. For a, those spaces + // conditionally hang, and since the line doesn't overflow, they don't + // actually hang. Therefore, the rectangle containing the line and trailing + // spaces is centered, so its left edge is at (100 - 30 - 20)/2 = 25. + // For b, those spaces hang unconditionally, so the rectangle containing the + // line without the trailing spaces is centered, with its left edge at + // (100 - 30)/2 = 35. + EXPECT_EQ(PhysicalRect(25, 0, 50, 10), TextAreaFirstLineRect("a")); + EXPECT_EQ(PhysicalRect(35, 0, 30, 10), TextAreaFirstLineRect("b")); - HTMLTextAreaElement* b_textarea = - To<HTMLTextAreaElement>(GetElementById("b")); - NGInlineCursor b_cursor(*To<LayoutBlockFlow>( - b_textarea->InnerEditorElement()->GetLayoutObject())); - b_cursor.MoveToFirstLine(); - EXPECT_TRUE(b_cursor.IsNotNull()); - PhysicalRect b_rect(b_cursor.Current().OffsetInContainerFragment(), - b_cursor.Current().Size()); - // The line size is 30px and the hanging width is 60px. The rectangle - // containing the line and the hanging width is centered, so its right edge - // is at (100 + 30 + 60)/2 = 95px. Since the line's base direction is RTL, the - // text is at the right and its left edge is at 95px - 30 = 65px. - EXPECT_EQ(PhysicalRect(65, 0, 30, 10), b_rect); + // The line size is 30px and the trailing spaces are 60px. For c, those spaces + // conditionally hang, and since the line doesn't overflow, they don't + // actually hang. Therefore, the rectangle containing the line and trailing + // spaces is centered, so its left edge is at (100 - 30 - 60)/2 = 5. + // For d, those spaces hang unconditionally, so the rectangle containing the + // line without the trailing spaces is centered, with its left edge at + // (100 - 30)/2 = 35. + EXPECT_EQ(PhysicalRect(5, 0, 90, 10), TextAreaFirstLineRect("c")); + EXPECT_EQ(PhysicalRect(35, 0, 30, 10), TextAreaFirstLineRect("d")); + + // The line size is 30px and the trailing spaces are 80px. For e, those spaces + // conditionally hang, so only the 10px that overflow the line actually hang. + // Therefore, the rectangle containing the line and non-hanging spaces is + // centered, so its left edge is at (100 - 30 - 70)/2 = 0. + // For b, those spaces hang unconditionally, so the rectangle containing the + // line without the trailing spaces is centered, with its left edge at + // (100 - 30)/2 = 35. + EXPECT_EQ(PhysicalRect(0, 0, 100, 10), TextAreaFirstLineRect("e")); + EXPECT_EQ(PhysicalRect(35, 0, 30, 10), TextAreaFirstLineRect("f")); } #undef MAYBE_VerticalAlignBottomReplaced
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker.cc index 75cc16d8..efdcc37 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker.cc
@@ -1382,10 +1382,10 @@ } breaker(this, &item, &item_shape_result); - // Use kStartShouldBeSafe if at the beginning of a line. unsigned options = ShapingLineBreaker::kDefaultOptions; - if (item_result->StartOffset() != line_info->StartOffset()) - options |= ShapingLineBreaker::kDontReshapeStart; + if (item_result->StartOffset() == line_info->StartOffset()) { + options |= ShapingLineBreaker::kStartOfLine; + } // Reshaping between the last character and trailing spaces is needed only // when we need accurate end position, because kerning between trailing spaces
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker_test.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker_test.cc index 7400a176..26c8ae8d 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker_test.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_line_breaker_test.cc
@@ -74,9 +74,7 @@ break_token = line_info.BreakToken(); if (fill_first_space_ && lines.empty()) { - first_should_hang_trailing_space_ = - line_info.ShouldHangTrailingSpaces(); - first_hang_width_ = line_info.HangWidthForAlignment(); + first_hang_width_ = line_info.HangWidth(); } lines.push_back(std::make_pair(ToString(line_info.Results(), node), line_info.Results().back().item_index)); @@ -135,7 +133,6 @@ } Vector<NGLineBreaker::WhitespaceState> trailing_whitespaces_; - bool first_should_hang_trailing_space_; LayoutUnit first_hang_width_; }; @@ -617,33 +614,33 @@ struct TrailingSpaceWidthTestData { const char* html; const char* white_space; - unsigned trailing_space_width; -} trailing_space_width_test_data[] = { - {" ", "pre", 1}, - {" ", "pre", 3}, - {"1 ", "pre", 1}, - {"1 ", "pre", 2}, - {"1<span> </span>", "pre", 1}, - {"<span>1 </span> ", "pre", 2}, - {"1<span> </span> ", "pre", 2}, - {"1 <span> </span> ", "pre", 3}, - {"1 \t", "pre", 3}, - {"1 \n", "pre", 2}, - {"1 <br>", "pre", 2}, + unsigned hanging_space_width; +} trailing_space_width_test_data[] = {{" ", "pre", 0}, + {" ", "pre", 0}, + {"1 ", "pre", 0}, + {"1 ", "pre", 0}, + {"1<span> </span>", "pre", 0}, + {"<span>1 </span> ", "pre", 0}, + {"1<span> </span> ", "pre", 0}, + {"1 <span> </span> ", "pre", 0}, + {"1 \t", "pre", 0}, + {"1 \n", "pre", 0}, + {"1 <br>", "pre", 0}, - {" ", "pre-wrap", 1}, - {" ", "pre-wrap", 3}, - {"1 ", "pre-wrap", 1}, - {"1 ", "pre-wrap", 2}, - {"1<span> </span>", "pre-wrap", 1}, - {"<span>1 </span> ", "pre-wrap", 2}, - {"1<span> </span> ", "pre-wrap", 2}, - {"1 <span> </span> ", "pre-wrap", 3}, - {"1 \t", "pre-wrap", 3}, - {"1 <br>", "pre-wrap", 2}, - {"12 1234", "pre-wrap", 1}, - {"12 1234", "pre-wrap", 2}, -}; + {" ", "pre-wrap", 0}, + {" ", "pre-wrap", 0}, + {"1 ", "pre-wrap", 0}, + {"1 ", "pre-wrap", 0}, + {"1<span> </span>", "pre-wrap", 0}, + {"<span>1 </span> ", "pre-wrap", 0}, + {"1<span> </span> ", "pre-wrap", 0}, + {"1 <span> </span> ", "pre-wrap", 0}, + {"1 \t", "pre-wrap", 0}, + {"1 <br>", "pre-wrap", 0}, + {"12 1234", "pre-wrap", 1}, + {"12 1234", "pre-wrap", 2}, + {"12 <br>1234", "pre-wrap", 0}, + {"12 ", "pre-wrap", 1}}; class NGTrailingSpaceWidthTest : public NGLineBreakerTest, @@ -672,11 +669,7 @@ )HTML"); BreakLines(node, LayoutUnit(50), nullptr, true); - if (first_should_hang_trailing_space_) { - EXPECT_EQ(first_hang_width_, LayoutUnit(10) * data.trailing_space_width); - } else { - EXPECT_EQ(first_hang_width_, LayoutUnit()); - } + EXPECT_EQ(first_hang_width_, LayoutUnit(10) * data.hanging_space_width); } TEST_F(NGLineBreakerTest, FullyCollapsedSpaces) {
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_line_info.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_line_info.cc index d48f638..13fe06c 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_line_info.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_line_info.cc
@@ -159,8 +159,13 @@ } bool NGLineInfo::ShouldHangTrailingSpaces() const { - if (!HasTrailingSpaces()) + if (RuntimeEnabledFeatures:: + HangingWhitespaceDoesNotDependOnAlignmentEnabled()) { + return true; + } + if (!HasTrailingSpaces()) { return false; + } if (!line_style_->ShouldWrapLine()) { return false; } @@ -193,15 +198,53 @@ void NGLineInfo::UpdateTextAlign() { text_align_ = GetTextAlign(IsLastLine()); - allow_hang_for_alignment_ = false; - if (HasTrailingSpaces() && line_style_->ShouldWrapLine()) { - if (ShouldHangTrailingSpaces()) { - hang_width_ = ComputeTrailingSpaceWidth(&end_offset_for_justify_); - allow_hang_for_alignment_ = true; - return; + if (RuntimeEnabledFeatures:: + HangingWhitespaceDoesNotDependOnAlignmentEnabled()) { + allow_hang_for_alignment_ = true; + + if (HasTrailingSpaces()) { + bool should_hang; + bool hang_is_conditional = false; + switch (line_style_->GetWhiteSpaceCollapse()) { + case WhiteSpaceCollapse::kCollapse: + case WhiteSpaceCollapse::kPreserveBreaks: + should_hang = true; + break; + case WhiteSpaceCollapse::kPreserve: + should_hang = line_style_->ShouldWrapLine(); + hang_is_conditional = HasForcedBreak() || IsLastLine(); + break; + case WhiteSpaceCollapse::kBreakSpaces: + should_hang = false; + } + + if (should_hang) { + hang_width_ = ComputeTrailingSpaceWidth(&end_offset_for_justify_); + + // Conditional hang: only the part of the trailing spaces that overflow + // the line actually hang. + // https://drafts.csswg.org/css-text-4/#conditionally-hang + if (hang_is_conditional) { + hang_width_ = std::min(hang_width_, Width() - available_width_) + .ClampNegativeToZero(); + } + return; + } } - hang_width_ = ComputeTrailingSpaceWidth(); + + hang_width_ = LayoutUnit(); + } else { + allow_hang_for_alignment_ = false; + + if (HasTrailingSpaces() && line_style_->ShouldWrapLine()) { + if (ShouldHangTrailingSpaces()) { + hang_width_ = ComputeTrailingSpaceWidth(&end_offset_for_justify_); + allow_hang_for_alignment_ = true; + return; + } + hang_width_ = ComputeTrailingSpaceWidth(); + } } if (text_align_ == ETextAlign::kJustify)
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_line_info.h b/third_party/blink/renderer/core/layout/ng/inline/ng_line_info.h index 73ebead7..26fe495 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_line_info.h +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_line_info.h
@@ -128,15 +128,17 @@ NGBfcOffset BfcOffset() const { return bfc_offset_; } LayoutUnit AvailableWidth() const { return available_width_; } - // The width of this line. Includes trailing spaces if they were preserved. + // The width of this line, including the hanging width from trailing spaces. // Negative width created by negative 'text-indent' is clamped to zero. LayoutUnit Width() const { return width_.ClampNegativeToZero(); } - // Same as |Width()| but returns negative value as is. Preserved trailing - // spaces may or may not be included, depends on |ShouldHangTrailingSpaces()|. + // Same as |Width()| but returns negatives value as is. The hanging width + // (e.g. from preserved trailing spaces) may or may not be included, depends + // on |ShouldHangTrailingSpaces()|. LayoutUnit WidthForAlignment() const { return width_ - HangWidthForAlignment(); } // Width that hangs over the end of the line; e.g., preserved trailing spaces. + // See https://drafts.csswg.org/css-text/#hanging. LayoutUnit HangWidth() const { return hang_width_; } // Same as |HangWidth()| but it may be 0 depending on // |ShouldHangTrailingSpaces()|.
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_score_line_breaker_test.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_score_line_breaker_test.cc index 5501588b..1dcc4b4 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_score_line_breaker_test.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_score_line_breaker_test.cc
@@ -381,10 +381,8 @@ } </style> )HTML") + data.html); - EXPECT_NE(data.disabled, - GetDocument().IsUseCounted(WebFeature::kTextWrapPretty)); - EXPECT_EQ(data.disabled, - GetDocument().IsUseCounted(WebFeature::kTextWrapPrettyFail)); + EXPECT_FALSE(GetDocument().IsUseCounted(WebFeature::kTextWrapBalance)); + EXPECT_TRUE(GetDocument().IsUseCounted(WebFeature::kTextWrapPretty)); const NGInlineNode node = GetInlineNodeByElementId("target"); const LayoutUnit width = FragmentWidth(node); @@ -475,17 +473,17 @@ SetBodyInnerHTML(R"HTML( <div>012</div> )HTML"); + EXPECT_FALSE(GetDocument().IsUseCounted(WebFeature::kTextWrapBalance)); EXPECT_FALSE(GetDocument().IsUseCounted(WebFeature::kTextWrapPretty)); - EXPECT_FALSE(GetDocument().IsUseCounted(WebFeature::kTextWrapPrettyFail)); } TEST_F(NGScoreLineBreakerTest, UseCountNotCountedForBalance) { ScopedCSSTextWrapPrettyForTest enable(true); SetBodyInnerHTML(R"HTML( - <div style="text-wrap: balance>012</div> + <div style="text-wrap: balance">012</div> )HTML"); + EXPECT_TRUE(GetDocument().IsUseCounted(WebFeature::kTextWrapBalance)); EXPECT_FALSE(GetDocument().IsUseCounted(WebFeature::kTextWrapPretty)); - EXPECT_FALSE(GetDocument().IsUseCounted(WebFeature::kTextWrapPrettyFail)); } } // namespace blink
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.cc index cf9b6cca..61931b4f 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.cc
@@ -525,18 +525,18 @@ const TextWrap wrap = node.Style().GetTextWrap(); if (UNLIKELY(wrap == TextWrap::kPretty)) { DCHECK(RuntimeEnabledFeatures::CSSTextWrapPrettyEnabled()); + UseCounter::Count(node.GetDocument(), WebFeature::kTextWrapPretty); if (!node.IsScoreLineBreakDisabled()) { return LayoutWithOptimalInlineChildLayoutContext<kMaxLinesForOptimal>( node); } - UseCounter::Count(node.GetDocument(), WebFeature::kTextWrapPrettyFail); } else if (UNLIKELY(wrap == TextWrap::kBalance) && RuntimeEnabledFeatures::CSSTextWrapBalanceByScoreEnabled()) { + UseCounter::Count(node.GetDocument(), WebFeature::kTextWrapBalance); if (!node.IsScoreLineBreakDisabled()) { return LayoutWithOptimalInlineChildLayoutContext<kMaxLinesForBalance>( node); } - UseCounter::Count(node.GetDocument(), WebFeature::kTextWrapBalanceFail); } return LayoutWithSimpleInlineChildLayoutContext(node); }
diff --git a/third_party/blink/renderer/core/lcp_critical_path_predictor/lcp_critical_path_predictor.cc b/third_party/blink/renderer/core/lcp_critical_path_predictor/lcp_critical_path_predictor.cc index 0d89059..0c5fdbe4 100644 --- a/third_party/blink/renderer/core/lcp_critical_path_predictor/lcp_critical_path_predictor.cc +++ b/third_party/blink/renderer/core/lcp_critical_path_predictor/lcp_critical_path_predictor.cc
@@ -39,6 +39,10 @@ lcp_influencer_scripts_ = std::move(scripts); } +void LCPCriticalPathPredictor::set_fetched_fonts(Vector<KURL> fonts) { + fetched_fonts_ = std::move(fonts); +} + void LCPCriticalPathPredictor::OnLargestContentfulPaintUpdated( Element* lcp_element) { if (lcp_element && IsA<HTMLImageElement>(lcp_element)) {
diff --git a/third_party/blink/renderer/core/lcp_critical_path_predictor/lcp_critical_path_predictor.h b/third_party/blink/renderer/core/lcp_critical_path_predictor/lcp_critical_path_predictor.h index ada6962..ed0848e 100644 --- a/third_party/blink/renderer/core/lcp_critical_path_predictor/lcp_critical_path_predictor.h +++ b/third_party/blink/renderer/core/lcp_critical_path_predictor/lcp_critical_path_predictor.h
@@ -51,6 +51,10 @@ return lcp_influencer_scripts_; } + void set_fetched_fonts(Vector<KURL> fonts); + + const Vector<KURL>& fetched_fonts() { return fetched_fonts_; } + void Reset() { lcp_element_locators_.clear(); lcp_influencer_scripts_.clear(); @@ -78,6 +82,7 @@ Vector<ElementLocator> lcp_element_locators_; HashSet<KURL> lcp_influencer_scripts_; + Vector<KURL> fetched_fonts_; }; } // namespace blink
diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc index de9a6d9..9b0ad24 100644 --- a/third_party/blink/renderer/core/loader/document_loader.cc +++ b/third_party/blink/renderer/core/loader/document_loader.cc
@@ -942,8 +942,8 @@ // navigation (as this is the first we hear of it in the renderer). We // need to do that now. soft_navigation_event_scope = - std::make_unique<SoftNavigationEventScope>(heuristics, - script_state); + std::make_unique<SoftNavigationEventScope>( + heuristics, script_state, /*is_unfocused_keydown=*/false); heuristics->SameDocumentNavigationStarted(script_state); } }
diff --git a/third_party/blink/renderer/core/navigation_api/navigation_api.cc b/third_party/blink/renderer/core/navigation_api/navigation_api.cc index 53fd70b1..748cf1c0 100644 --- a/third_party/blink/renderer/core/navigation_api/navigation_api.cc +++ b/third_party/blink/renderer/core/navigation_api/navigation_api.cc
@@ -779,7 +779,8 @@ // consider this a "user initiated click", and the dispatched event handlers // as potential soft navigation tasks. soft_navigation_scope = std::make_unique<SoftNavigationEventScope>( - soft_navigation_heuristics, script_state); + soft_navigation_heuristics, script_state, + /*is_unfocused_keydown=*/false); soft_navigation_heuristics->SameDocumentNavigationStarted(script_state); }
diff --git a/third_party/blink/renderer/core/timing/soft_navigation_heuristics.cc b/third_party/blink/renderer/core/timing/soft_navigation_heuristics.cc index f732930..f0fe9d66 100644 --- a/third_party/blink/renderer/core/timing/soft_navigation_heuristics.cc +++ b/third_party/blink/renderer/core/timing/soft_navigation_heuristics.cc
@@ -82,7 +82,9 @@ did_reset_paints_ = false; } -void SoftNavigationHeuristics::UserInitiatedClick(ScriptState* script_state) { +void SoftNavigationHeuristics::UserInitiatedInteraction( + ScriptState* script_state, + bool is_unfocused_keydown) { // Set task ID to the current one. ThreadScheduler* scheduler = ThreadScheduler::Current(); DCHECK(scheduler); @@ -91,11 +93,20 @@ return; } ResetHeuristic(); + CHECK(script_state); + if (is_unfocused_keydown) { + // TODO(https://crbug.com/1479052): investigate if we need to consider + // including the current task also for other cases. + scheduler::TaskAttributionInfo* task = tracker->RunningTask(script_state); + if (task) { + potential_soft_navigation_task_ids_.insert(task->Id().value()); + } + } tracker->RegisterObserver(this); SetIsTrackingSoftNavigationHeuristicsOnDocument(true); user_click_timestamp_ = base::TimeTicks::Now(); TRACE_EVENT_INSTANT("scheduler", - "SoftNavigationHeuristics::UserInitiatedClick"); + "SoftNavigationHeuristics::UserInitiatedInteraction"); } bool SoftNavigationHeuristics::IsCurrentTaskDescendantOfClickEventHandler(
diff --git a/third_party/blink/renderer/core/timing/soft_navigation_heuristics.h b/third_party/blink/renderer/core/timing/soft_navigation_heuristics.h index 3adb89f57..50fb397 100644 --- a/third_party/blink/renderer/core/timing/soft_navigation_heuristics.h +++ b/third_party/blink/renderer/core/timing/soft_navigation_heuristics.h
@@ -33,7 +33,7 @@ void Trace(Visitor*) const override; // The class's API. - void UserInitiatedClick(ScriptState*); + void UserInitiatedInteraction(ScriptState*, bool is_unfocused_keydown); void ClickEventEnded(ScriptState*); void SameDocumentNavigationStarted(ScriptState*); void SameDocumentNavigationCommitted(ScriptState*, const String& url); @@ -78,18 +78,16 @@ class SoftNavigationEventScope { public: SoftNavigationEventScope(SoftNavigationHeuristics* heuristics, - ScriptState* script_state) + ScriptState* script_state, + bool is_unfocused_keydown) : heuristics_(heuristics), script_state_(script_state) { - heuristics->UserInitiatedClick(script_state); + heuristics->UserInitiatedInteraction(script_state, is_unfocused_keydown); } ~SoftNavigationEventScope() { heuristics_->ClickEventEnded(script_state_); } - // TODO(yoav): Remove this method, as it's not doing anything useful. - void SetResult(DispatchEventResult result) { result_ = result; } private: Persistent<SoftNavigationHeuristics> heuristics_; Persistent<ScriptState> script_state_; - DispatchEventResult result_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.h b/third_party/blink/renderer/modules/accessibility/ax_object.h index f1e648b..c189a175 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_object.h +++ b/third_party/blink/renderer/modules/accessibility/ax_object.h
@@ -35,6 +35,7 @@ #include "base/dcheck_is_on.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ref.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/public/common/input/web_input_event.h" #include "third_party/blink/public/web/web_ax_enums.h" @@ -127,7 +128,7 @@ bool superseded = false; bool invalid = false; ax::mojom::blink::NameFrom type = ax::mojom::blink::NameFrom::kNone; - const QualifiedName& attribute; + const raw_ref<const QualifiedName, ExperimentalRenderer> attribute; AtomicString attribute_value; AXTextSource native_source = kAXTextFromNativeSourceUninitialized; AXRelatedObjectVector related_objects; @@ -150,7 +151,7 @@ bool invalid = false; ax::mojom::blink::DescriptionFrom type = ax::mojom::blink::DescriptionFrom::kNone; - const QualifiedName& attribute; + const raw_ref<const QualifiedName, ExperimentalRenderer> attribute; AtomicString attribute_value; AXTextSource native_source = kAXTextFromNativeSourceUninitialized; AXRelatedObjectVector related_objects;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_sparse_attribute_setter.cc b/third_party/blink/renderer/modules/accessibility/ax_sparse_attribute_setter.cc index 3f0c144..65f16e5 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_sparse_attribute_setter.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_sparse_attribute_setter.cc
@@ -215,7 +215,7 @@ default: return; } - node_data_.AddStringAttribute(attribute, value.Utf8()); + node_data_->AddStringAttribute(attribute, value.Utf8()); } void AXNodeDataAOMPropertyClient::AddBooleanProperty( @@ -229,7 +229,7 @@ default: return; } - node_data_.AddBoolAttribute(attribute, value); + node_data_->AddBoolAttribute(attribute, value); } void AXNodeDataAOMPropertyClient::AddFloatProperty(AOMFloatProperty property, @@ -252,7 +252,7 @@ if (!ax_target) return; - node_data_.AddIntAttribute(attribute, ax_target->AXObjectID()); + node_data_->AddIntAttribute(attribute, ax_target->AXObjectID()); } void AXNodeDataAOMPropertyClient::AddRelationListProperty( @@ -287,7 +287,7 @@ } } - node_data_.AddIntListAttribute(attribute, ax_ids); + node_data_->AddIntListAttribute(attribute, ax_ids); } } // namespace blink
diff --git a/third_party/blink/renderer/modules/accessibility/ax_sparse_attribute_setter.h b/third_party/blink/renderer/modules/accessibility/ax_sparse_attribute_setter.h index f9a6859..3f4ad190 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_sparse_attribute_setter.h +++ b/third_party/blink/renderer/modules/accessibility/ax_sparse_attribute_setter.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_ACCESSIBILITY_AX_SPARSE_ATTRIBUTE_SETTER_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_ACCESSIBILITY_AX_SPARSE_ATTRIBUTE_SETTER_H_ +#include "base/memory/raw_ref.h" #include "third_party/blink/renderer/core/aom/accessible_node.h" #include "third_party/blink/renderer/core/aom/accessible_node_list.h" #include "third_party/blink/renderer/modules/accessibility/ax_object.h" @@ -44,7 +45,7 @@ private: Persistent<AXObjectCacheImpl> ax_object_cache_; - ui::AXNodeData& node_data_; + const raw_ref<ui::AXNodeData, ExperimentalRenderer> node_data_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/accessibility/inspector_type_builder_helper.cc b/third_party/blink/renderer/modules/accessibility/inspector_type_builder_helper.cc index 48bbff8..cef9089 100644 --- a/third_party/blink/renderer/modules/accessibility/inspector_type_builder_helper.cc +++ b/third_party/blink/renderer/modules/accessibility/inspector_type_builder_helper.cc
@@ -217,15 +217,15 @@ std::unique_ptr<AXValueSource> value_source = AXValueSource::create().setType(type).build(); if (!name_source.related_objects.empty()) { - if (name_source.attribute == html_names::kAriaLabelledbyAttr || - name_source.attribute == html_names::kAriaLabeledbyAttr) { + if ((*name_source.attribute) == html_names::kAriaLabelledbyAttr || + (*name_source.attribute) == html_names::kAriaLabeledbyAttr) { std::unique_ptr<AXValue> attribute_value = CreateRelatedNodeListValue( name_source.related_objects, AXValueTypeEnum::IdrefList); if (!name_source.attribute_value.IsNull()) attribute_value->setValue(protocol::StringValue::create( name_source.attribute_value.GetString())); value_source->setAttributeValue(std::move(attribute_value)); - } else if (name_source.attribute == QualifiedName::Null()) { + } else if ((*name_source.attribute) == QualifiedName::Null()) { value_source->setNativeSourceValue(CreateRelatedNodeListValue( name_source.related_objects, AXValueTypeEnum::NodeList)); } @@ -235,8 +235,9 @@ if (!name_source.text.IsNull()) value_source->setValue( CreateValue(name_source.text, AXValueTypeEnum::ComputedString)); - if (name_source.attribute != QualifiedName::Null()) - value_source->setAttribute(name_source.attribute.LocalName().GetString()); + if ((*name_source.attribute) != QualifiedName::Null()) { + value_source->setAttribute(name_source.attribute->LocalName().GetString()); + } if (name_source.superseded) value_source->setSuperseded(true); if (name_source.invalid)
diff --git a/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_sink_test.cc b/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_sink_test.cc index 43853190..599f3599 100644 --- a/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_sink_test.cc +++ b/third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_sink_test.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/modules/breakout_box/media_stream_audio_track_underlying_sink.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/run_loop.h" #include "base/test/gmock_callback_support.h" @@ -100,7 +101,8 @@ Persistent<MediaStreamSource> media_stream_source_; Persistent<MediaStreamComponent> media_stream_component_; - PushableMediaStreamAudioSource* pushable_audio_source_; + raw_ptr<PushableMediaStreamAudioSource, ExperimentalRenderer> + pushable_audio_source_; }; TEST_F(MediaStreamAudioTrackUnderlyingSinkTest,
diff --git a/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_sink_test.cc b/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_sink_test.cc index 4ccef7e..2fc7133 100644 --- a/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_sink_test.cc +++ b/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_sink_test.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_sink.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -74,7 +75,8 @@ protected: ScopedTestingPlatformSupport<IOTaskRunnerTestingPlatformSupport> platform_; Persistent<MediaStreamSource> media_stream_source_; - PushableMediaStreamVideoSource* pushable_video_source_; + raw_ptr<PushableMediaStreamVideoSource, ExperimentalRenderer> + pushable_video_source_; }; // TODO(1153092): Test flakes, likely due to completing before background
diff --git a/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_source_test.cc b/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_source_test.cc index 513c32f..eba2845 100644 --- a/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_source_test.cc +++ b/third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_source_test.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/modules/breakout_box/media_stream_video_track_underlying_source.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/test/gmock_callback_support.h" #include "media/capture/video/video_capture_buffer_pool_util.h" @@ -43,7 +44,7 @@ MediaStreamSource::kTypeVideo, "dummy_source_name", false /* remote */, - base::WrapUnique(pushable_video_source_))) {} + base::WrapUnique(pushable_video_source_.get()))) {} ~MediaStreamVideoTrackUnderlyingSourceTest() override { RunIOUntilIdle(); @@ -110,7 +111,8 @@ } ScopedTestingPlatformSupport<IOTaskRunnerTestingPlatformSupport> platform_; - PushableMediaStreamVideoSource* const pushable_video_source_; + const raw_ptr<PushableMediaStreamVideoSource, ExperimentalRenderer> + pushable_video_source_; const Persistent<MediaStreamSource> media_stream_source_; };
diff --git a/third_party/blink/renderer/modules/breakout_box/pushable_media_stream_audio_source.h b/third_party/blink/renderer/modules/breakout_box/pushable_media_stream_audio_source.h index 801c9c3..2852542c 100644 --- a/third_party/blink/renderer/modules/breakout_box/pushable_media_stream_audio_source.h +++ b/third_party/blink/renderer/modules/breakout_box/pushable_media_stream_audio_source.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_BREAKOUT_BOX_PUSHABLE_MEDIA_STREAM_AUDIO_SOURCE_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_BREAKOUT_BOX_PUSHABLE_MEDIA_STREAM_AUDIO_SOURCE_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/synchronization/lock.h" #include "base/task/sequenced_task_runner.h" @@ -70,7 +71,7 @@ // It is not necessary to guard it with |lock_| to read its value on // |main_task_runner_|. This helps avoid deadlocks in // Stop()/OnSourceDestroyedOrStopped() interactions. - PushableMediaStreamAudioSource* source_; + raw_ptr<PushableMediaStreamAudioSource, ExperimentalRenderer> source_; // The same apples to |is_running_|, but since it does not have complex // interactions with owners, like |source_| does, we always guard it for // simplicity.
diff --git a/third_party/blink/renderer/modules/breakout_box/pushable_media_stream_audio_source_test.cc b/third_party/blink/renderer/modules/breakout_box/pushable_media_stream_audio_source_test.cc index 84151b8c..f296d33 100644 --- a/third_party/blink/renderer/modules/breakout_box/pushable_media_stream_audio_source_test.cc +++ b/third_party/blink/renderer/modules/breakout_box/pushable_media_stream_audio_source_test.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/modules/breakout_box/pushable_media_stream_audio_source.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" @@ -123,7 +124,7 @@ int expected_frames_ = 0; int expected_sample_rate_ = 0; bool expect_data_on_audio_task_runner_ = true; - media::AudioBus* expected_data_ = nullptr; + raw_ptr<media::AudioBus, ExperimentalRenderer> expected_data_ = nullptr; base::TimeTicks expected_time_; bool did_receive_format_change_ = false; @@ -221,7 +222,8 @@ scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_; scoped_refptr<base::SingleThreadTaskRunner> audio_task_runner_; - PushableMediaStreamAudioSource* pushable_audio_source_; + raw_ptr<PushableMediaStreamAudioSource, ExperimentalRenderer> + pushable_audio_source_; scoped_refptr<PushableMediaStreamAudioSource::Broker> broker_; };
diff --git a/third_party/blink/renderer/modules/breakout_box/pushable_media_stream_video_source.h b/third_party/blink/renderer/modules/breakout_box/pushable_media_stream_video_source.h index 91db13e..f100b16 100644 --- a/third_party/blink/renderer/modules/breakout_box/pushable_media_stream_video_source.h +++ b/third_party/blink/renderer/modules/breakout_box/pushable_media_stream_video_source.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_BREAKOUT_BOX_PUSHABLE_MEDIA_STREAM_VIDEO_SOURCE_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_BREAKOUT_BOX_PUSHABLE_MEDIA_STREAM_VIDEO_SOURCE_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/synchronization/lock.h" #include "base/task/sequenced_task_runner.h" @@ -66,7 +67,7 @@ // |main_task_runner_|. It is not necessary to guard it with |lock_| to // read its value on |main_task_runner_|. This helps avoid deadlocks in // Stop()/OnSourceDestroyedOrStopped() interactions. - PushableMediaStreamVideoSource* source_; + raw_ptr<PushableMediaStreamVideoSource, ExperimentalRenderer> source_; // The same apples to |frame_callback_|, but since it does not have // complex interactions with owners, like |source_| does, we always guard // it for simplicity.
diff --git a/third_party/blink/renderer/modules/breakout_box/pushable_media_stream_video_source_test.cc b/third_party/blink/renderer/modules/breakout_box/pushable_media_stream_video_source_test.cc index 62a8371..af3c270 100644 --- a/third_party/blink/renderer/modules/breakout_box/pushable_media_stream_video_source_test.cc +++ b/third_party/blink/renderer/modules/breakout_box/pushable_media_stream_video_source_test.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/modules/breakout_box/pushable_media_stream_video_source.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/task/bind_post_task.h" #include "base/time/time.h" @@ -56,9 +57,9 @@ } private: - base::TimeTicks* const capture_time_; - media::VideoFrameMetadata* const metadata_; - gfx::Size* const natural_size_; + const raw_ptr<base::TimeTicks, ExperimentalRenderer> capture_time_; + const raw_ptr<media::VideoFrameMetadata, ExperimentalRenderer> metadata_; + const raw_ptr<gfx::Size, ExperimentalRenderer> natural_size_; base::OnceClosure got_frame_cb_; }; @@ -103,7 +104,8 @@ ScopedTestingPlatformSupport<IOTaskRunnerTestingPlatformSupport> platform_; Persistent<MediaStreamSource> stream_source_; - PushableMediaStreamVideoSource* pushable_video_source_; + raw_ptr<PushableMediaStreamVideoSource, ExperimentalRenderer> + pushable_video_source_; }; TEST_F(PushableMediaStreamVideoSourceTest, StartAndStop) {
diff --git a/third_party/blink/renderer/modules/cache_storage/cache_test.cc b/third_party/blink/renderer/modules/cache_storage/cache_test.cc index da57d2a..48111a43 100644 --- a/third_party/blink/renderer/modules/cache_storage/cache_test.cc +++ b/third_party/blink/renderer/modules/cache_storage/cache_test.cc
@@ -9,6 +9,7 @@ #include <string> #include <utility> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/task/single_thread_task_runner.h" #include "mojo/public/cpp/bindings/associated_receiver.h" @@ -258,9 +259,11 @@ const mojom::blink::CacheStorageError error_; - const String* expected_url_; - const mojom::blink::CacheQueryOptionsPtr* expected_query_options_; - const Vector<mojom::blink::BatchOperationPtr>* expected_batch_operations_; + raw_ptr<const String, ExperimentalRenderer> expected_url_; + raw_ptr<const mojom::blink::CacheQueryOptionsPtr, ExperimentalRenderer> + expected_query_options_; + raw_ptr<const Vector<mojom::blink::BatchOperationPtr>, ExperimentalRenderer> + expected_batch_operations_; std::string last_error_web_cache_method_called_; };
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_test.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_test.cc index 3df54ab3..6b7b90c 100644 --- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_test.cc +++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d_test.cc
@@ -7,6 +7,7 @@ #include <memory> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" #include "build/build_config.h" @@ -400,7 +401,8 @@ private: std::unique_ptr<base::HistogramTester> histogram_tester_; - MockImageBufferSurfaceForOverwriteTesting* surface_ptr_; + raw_ptr<MockImageBufferSurfaceForOverwriteTesting, ExperimentalRenderer> + surface_ptr_; OverdrawHistogramBuckets expected_buckets_; };
diff --git a/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_test.cc b/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_test.cc index 81df434..8e5e336 100644 --- a/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_test.cc +++ b/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_test.cc
@@ -7,6 +7,7 @@ #include <memory> #include "base/containers/contains.h" +#include "base/memory/raw_ptr.h" #include "media/mojo/mojom/media_player.mojom-blink.h" #include "mojo/public/cpp/bindings/pending_associated_remote.h" #include "mojo/public/cpp/bindings/pending_receiver.h" @@ -693,7 +694,7 @@ MOCK_METHOD(void, SetWindowRect, (const gfx::Rect&, LocalFrame&)); private: - DummyPageHolder* dummy_page_holder_; + raw_ptr<DummyPageHolder, ExperimentalRenderer> dummy_page_holder_; }; // Tests for Picture in Picture with a mockable chrome client. This makes it
diff --git a/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.h b/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.h index 8d90df96..789607f14 100644 --- a/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.h +++ b/third_party/blink/renderer/modules/exported/web_embedded_worker_impl.h
@@ -33,6 +33,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "third_party/blink/public/mojom/cache_storage/cache_storage.mojom-blink-forward.h" @@ -103,7 +104,8 @@ const WebFetchClientSettingsObject& passed_settings_object); // Client must remain valid through the entire life time of the worker. - WebServiceWorkerContextClient* const worker_context_client_; + const raw_ptr<WebServiceWorkerContextClient, ExperimentalRenderer> + worker_context_client_; std::unique_ptr<ServiceWorkerThread> worker_thread_;
diff --git a/third_party/blink/renderer/modules/file_system_access/global_file_system_access_test.cc b/third_party/blink/renderer/modules/file_system_access/global_file_system_access_test.cc index 3f3518f..707b441e 100644 --- a/third_party/blink/renderer/modules/file_system_access/global_file_system_access_test.cc +++ b/third_party/blink/renderer/modules/file_system_access/global_file_system_access_test.cc
@@ -6,6 +6,7 @@ #include <tuple> +#include "base/memory/raw_ref.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/receiver_set.h" #include "third_party/blink/public/common/browser_interface_broker_proxy.h" @@ -31,7 +32,7 @@ MockFileSystemAccessManager(BrowserInterfaceBrokerProxy& broker, base::OnceClosure reached_callback) : reached_callback_(std::move(reached_callback)), broker_(broker) { - broker_.SetBinderForTesting( + broker_->SetBinderForTesting( mojom::blink::FileSystemAccessManager::Name_, WTF::BindRepeating( &MockFileSystemAccessManager::BindFileSystemAccessManager, @@ -39,15 +40,15 @@ } MockFileSystemAccessManager(BrowserInterfaceBrokerProxy& broker) : broker_(broker) { - broker_.SetBinderForTesting( + broker_->SetBinderForTesting( mojom::blink::FileSystemAccessManager::Name_, WTF::BindRepeating( &MockFileSystemAccessManager::BindFileSystemAccessManager, WTF::Unretained(this))); } ~MockFileSystemAccessManager() override { - broker_.SetBinderForTesting(mojom::blink::FileSystemAccessManager::Name_, - {}); + broker_->SetBinderForTesting(mojom::blink::FileSystemAccessManager::Name_, + {}); } using ChooseEntriesResponseCallback = @@ -104,7 +105,7 @@ base::OnceClosure reached_callback_; ChooseEntriesResponseCallback choose_entries_response_callback_; mojo::ReceiverSet<mojom::blink::FileSystemAccessManager> receivers_; - BrowserInterfaceBrokerProxy& broker_; + const raw_ref<BrowserInterfaceBrokerProxy, ExperimentalRenderer> broker_; }; class GlobalFileSystemAccessTest : public PageTestBase {
diff --git a/third_party/blink/renderer/modules/gamepad/gamepad_shared_memory_reader.h b/third_party/blink/renderer/modules/gamepad/gamepad_shared_memory_reader.h index 2e9d74f..a780fec 100644 --- a/third_party/blink/renderer/modules/gamepad/gamepad_shared_memory_reader.h +++ b/third_party/blink/renderer/modules/gamepad/gamepad_shared_memory_reader.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_GAMEPAD_GAMEPAD_SHARED_MEMORY_READER_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_GAMEPAD_GAMEPAD_SHARED_MEMORY_READER_H_ +#include "base/memory/raw_ptr.h" #include "device/gamepad/public/mojom/gamepad.mojom-blink.h" #include "device/gamepad/public/mojom/gamepad_hardware_buffer.h" #include "third_party/blink/renderer/platform/heap/garbage_collected.h" @@ -56,7 +57,8 @@ base::ReadOnlySharedMemoryRegion renderer_shared_buffer_region_; base::ReadOnlySharedMemoryMapping renderer_shared_buffer_mapping_; - const device::GamepadHardwareBuffer* gamepad_hardware_buffer_ = nullptr; + raw_ptr<const device::GamepadHardwareBuffer, ExperimentalRenderer> + gamepad_hardware_buffer_ = nullptr; bool ever_interacted_with_ = false; @@ -64,7 +66,7 @@ GamepadSharedMemoryReader> receiver_; HeapMojoRemote<device::mojom::blink::GamepadMonitor> gamepad_monitor_remote_; - blink::GamepadListener* listener_ = nullptr; + raw_ptr<blink::GamepadListener, ExperimentalRenderer> listener_ = nullptr; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/indexeddb/idb_key_range.h b/third_party/blink/renderer/modules/indexeddb/idb_key_range.h index a00d721..74a807a 100644 --- a/third_party/blink/renderer/modules/indexeddb/idb_key_range.h +++ b/third_party/blink/renderer/modules/indexeddb/idb_key_range.h
@@ -29,6 +29,7 @@ #include <memory> #include <utility> +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/modules/indexeddb/idb_key.h" #include "third_party/blink/renderer/modules/modules_export.h" #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" @@ -145,7 +146,7 @@ // Non-owning reference to the range's upper key. // // Points to either upper_if_distinct_ or lower_, or is null. - IDBKey* const upper_; + const raw_ptr<IDBKey, ExperimentalRenderer> upper_; const LowerBoundType lower_type_; const UpperBoundType upper_type_;
diff --git a/third_party/blink/renderer/modules/indexeddb/idb_open_db_request.h b/third_party/blink/renderer/modules/indexeddb/idb_open_db_request.h index 23314b2d..2877cfa 100644 --- a/third_party/blink/renderer/modules/indexeddb/idb_open_db_request.h +++ b/third_party/blink/renderer/modules/indexeddb/idb_open_db_request.h
@@ -28,6 +28,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "mojo/public/cpp/bindings/pending_associated_receiver.h" #include "third_party/blink/public/mojom/feature_observer/feature_observer.mojom-blink.h" @@ -106,7 +107,7 @@ // Pointer back to the IDBFactoryClient that holds a persistent reference // to this object. - IDBFactoryClient* factory_client_ = nullptr; + raw_ptr<IDBFactoryClient, ExperimentalRenderer> factory_client_ = nullptr; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/indexeddb/idb_request.h b/third_party/blink/renderer/modules/indexeddb/idb_request.h index 7dd29ff..7053840 100644 --- a/third_party/blink/renderer/modules/indexeddb/idb_request.h +++ b/third_party/blink/renderer/modules/indexeddb/idb_request.h
@@ -33,6 +33,7 @@ #include <utility> #include "base/dcheck_is_on.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/notreached.h" #include "base/time/time.h" @@ -366,7 +367,7 @@ // async onsuccess; ignore vs. assert. // Maintain the isolate so that all externally allocated memory can be // registered against it. - v8::Isolate* isolate_; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_; probe::AsyncTaskContext* async_task_context() { return &async_task_context_; } @@ -429,7 +430,7 @@ // getting post-processed. // // The IDBRequestQueueItem is owned by the result queue in IDBTransaction. - IDBRequestQueueItem* queue_item_ = nullptr; + raw_ptr<IDBRequestQueueItem, ExperimentalRenderer> queue_item_ = nullptr; probe::AsyncTaskContext async_task_context_; };
diff --git a/third_party/blink/renderer/modules/indexeddb/idb_request_loader.cc b/third_party/blink/renderer/modules/indexeddb/idb_request_loader.cc index 97efbaba..22308c4 100644 --- a/third_party/blink/renderer/modules/indexeddb/idb_request_loader.cc +++ b/third_party/blink/renderer/modules/indexeddb/idb_request_loader.cc
@@ -24,7 +24,7 @@ IDBRequestQueueItem* queue_item, Vector<std::unique_ptr<IDBValue>>& result_values) : queue_item_(queue_item), values_(result_values) { - DCHECK(IDBValueUnwrapper::IsWrapped(values_)); + DCHECK(IDBValueUnwrapper::IsWrapped(*values_)); } IDBRequestLoader::~IDBRequestLoader() {} @@ -39,7 +39,7 @@ // Consider parallelizing. The main issue is that the Blob reads // will have to be throttled somewhere, and the extra complexity // only benefits applications that use getAll(). - current_value_ = values_.begin(); + current_value_ = values_->begin(); StartNextValue(); } @@ -60,7 +60,7 @@ IDBValueUnwrapper unwrapper; while (true) { - if (current_value_ == values_.end()) { + if (current_value_ == values_->end()) { ReportSuccess(); return; } @@ -69,7 +69,7 @@ ++current_value_; } - DCHECK(current_value_ != values_.end()); + DCHECK(current_value_ != values_->end()); ExecutionContext* exection_context = queue_item_->Request()->GetExecutionContext();
diff --git a/third_party/blink/renderer/modules/indexeddb/idb_request_loader.h b/third_party/blink/renderer/modules/indexeddb/idb_request_loader.h index 9bde543..1c8d122 100644 --- a/third_party/blink/renderer/modules/indexeddb/idb_request_loader.h +++ b/third_party/blink/renderer/modules/indexeddb/idb_request_loader.h
@@ -8,6 +8,8 @@ #include <memory> #include "base/dcheck_is_on.h" +#include "base/memory/raw_ptr.h" +#include "base/memory/raw_ref.h" #include "third_party/blink/renderer/core/fileapi/file_reader_client.h" #include "third_party/blink/renderer/core/fileapi/file_reader_loader.h" #include "third_party/blink/renderer/platform/heap/garbage_collected.h" @@ -75,13 +77,14 @@ // Transaction result queue item for the IDBRequest. // // The IDBRequestQueueItem owns this loader. - IDBRequestQueueItem* queue_item_; + raw_ptr<IDBRequestQueueItem, ExperimentalRenderer> queue_item_; // All the values that will be passed back to the IDBRequest. // // The Vector is owned by the IDBRequestLoader owner, which is currently a // IDBRequestQueueItem. - Vector<std::unique_ptr<IDBValue>>& values_; + const raw_ref<Vector<std::unique_ptr<IDBValue>>, ExperimentalRenderer> + values_; // Buffer used to unwrap an IDBValue. Vector<char> wrapped_data_;
diff --git a/third_party/blink/renderer/modules/indexeddb/idb_request_queue_item.cc b/third_party/blink/renderer/modules/indexeddb/idb_request_queue_item.cc index 1826327..fee27be 100644 --- a/third_party/blink/renderer/modules/indexeddb/idb_request_queue_item.cc +++ b/third_party/blink/renderer/modules/indexeddb/idb_request_queue_item.cc
@@ -8,6 +8,7 @@ #include <utility> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "mojo/public/cpp/bindings/receiver.h" #include "third_party/blink/renderer/core/dom/dom_exception.h" @@ -114,7 +115,7 @@ private: mojo::Receiver<mojom::blink::IDBDatabaseGetAllResultSink> receiver_; - IDBRequestQueueItem* owner_; + raw_ptr<IDBRequestQueueItem, ExperimentalRenderer> owner_; bool key_only_; WTF::Vector<mojom::blink::IDBReturnValuePtr> values_;
diff --git a/third_party/blink/renderer/modules/indexeddb/idb_request_test.cc b/third_party/blink/renderer/modules/indexeddb/idb_request_test.cc index 2d3dfbc..f5088bf 100644 --- a/third_party/blink/renderer/modules/indexeddb/idb_request_test.cc +++ b/third_party/blink/renderer/modules/indexeddb/idb_request_test.cc
@@ -29,6 +29,7 @@ #include <utility> #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "build/build_config.h" #include "mojo/public/cpp/bindings/associated_receiver.h" @@ -233,7 +234,7 @@ request->queue_item_->OnResultLoadComplete(); } - URLLoaderMockFactory* url_loader_mock_factory_; + raw_ptr<URLLoaderMockFactory, ExperimentalRenderer> url_loader_mock_factory_; Persistent<IDBDatabase> db_; Persistent<IDBTransaction> transaction_; Persistent<IDBObjectStore> store_;
diff --git a/third_party/blink/renderer/modules/indexeddb/idb_transaction_test.cc b/third_party/blink/renderer/modules/indexeddb/idb_transaction_test.cc index b2a830f2..70ede24f 100644 --- a/third_party/blink/renderer/modules/indexeddb/idb_transaction_test.cc +++ b/third_party/blink/renderer/modules/indexeddb/idb_transaction_test.cc
@@ -33,6 +33,7 @@ #include <memory> #include <utility> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/platform/scheduler/test/renderer_scheduler_test_support.h" @@ -110,7 +111,7 @@ store_ = MakeGarbageCollected<IDBObjectStore>(store_metadata, transaction_); } - URLLoaderMockFactory* url_loader_mock_factory_; + raw_ptr<URLLoaderMockFactory, ExperimentalRenderer> url_loader_mock_factory_; Persistent<IDBDatabase> db_; Persistent<IDBTransaction> transaction_; Persistent<IDBObjectStore> store_;
diff --git a/third_party/blink/renderer/modules/indexeddb/idb_value.h b/third_party/blink/renderer/modules/indexeddb/idb_value.h index 5271fcc..971b24a9 100644 --- a/third_party/blink/renderer/modules/indexeddb/idb_value.h +++ b/third_party/blink/renderer/modules/indexeddb/idb_value.h
@@ -8,6 +8,7 @@ #include <memory> #include <utility> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "third_party/blink/public/mojom/file_system_access/file_system_access_transfer_token.mojom-blink-forward.h" #include "third_party/blink/public/mojom/indexeddb/indexeddb.mojom-blink-forward.h" @@ -115,7 +116,7 @@ // Used to register memory externally allocated by the IDBValue, and to // unregister that memory in the destructor. Unused in other construction // paths. - v8::Isolate* isolate_ = nullptr; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_ = nullptr; int64_t external_allocated_size_ = 0; };
diff --git a/third_party/blink/renderer/modules/indexeddb/inspector_indexed_db_agent.cc b/third_party/blink/renderer/modules/indexeddb/inspector_indexed_db_agent.cc index 58f4b594..3fda1e9 100644 --- a/third_party/blink/renderer/modules/indexeddb/inspector_indexed_db_agent.cc +++ b/third_party/blink/renderer/modules/indexeddb/inspector_indexed_db_agent.cc
@@ -33,6 +33,7 @@ #include <memory> #include <utility> +#include "base/memory/raw_ptr.h" #include "base/types/expected.h" #include "third_party/blink/renderer/bindings/core/v8/script_controller.h" #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h" @@ -715,7 +716,7 @@ } private: - v8_inspector::V8InspectorSession* v8_session_; + raw_ptr<v8_inspector::V8InspectorSession, ExperimentalRenderer> v8_session_; Member<ScriptState> script_state_; std::unique_ptr<RequestDataCallback> request_callback_; int skip_count_; @@ -796,7 +797,7 @@ skip_count_(skip_count), page_size_(page_size) {} - v8_inspector::V8InspectorSession* v8_session_; + raw_ptr<v8_inspector::V8InspectorSession, ExperimentalRenderer> v8_session_; std::unique_ptr<RequestDataCallback> request_callback_; String object_store_name_; String index_name_; @@ -958,7 +959,7 @@ void NotifySubtaskDone(scoped_refptr<GetMetadata> owner, const String& error) const; scoped_refptr<GetMetadata> owner_; - int64_t* result_; + raw_ptr<int64_t, ExperimentalRenderer> result_; }; class GetMetadata final : public ExecutableWithDatabase<GetMetadataCallback> {
diff --git a/third_party/blink/renderer/modules/indexeddb/inspector_indexed_db_agent.h b/third_party/blink/renderer/modules/indexeddb/inspector_indexed_db_agent.h index 41eadaa5..5d7d02f7 100644 --- a/third_party/blink/renderer/modules/indexeddb/inspector_indexed_db_agent.h +++ b/third_party/blink/renderer/modules/indexeddb/inspector_indexed_db_agent.h
@@ -33,6 +33,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/core/inspector/inspector_base_agent.h" #include "third_party/blink/renderer/core/inspector/protocol/indexed_db.h" #include "third_party/blink/renderer/modules/modules_export.h" @@ -110,7 +111,7 @@ private: Member<InspectedFrames> inspected_frames_; - v8_inspector::V8InspectorSession* v8_session_; + raw_ptr<v8_inspector::V8InspectorSession, ExperimentalRenderer> v8_session_; InspectorAgentState::Boolean enabled_; };
diff --git a/third_party/blink/renderer/modules/media/audio/audio_renderer_mixer_manager.h b/third_party/blink/renderer/modules/media/audio/audio_renderer_mixer_manager.h index 2df4e9c..6549ad32 100644 --- a/third_party/blink/renderer/modules/media/audio/audio_renderer_mixer_manager.h +++ b/third_party/blink/renderer/modules/media/audio/audio_renderer_mixer_manager.h
@@ -12,6 +12,7 @@ #include "base/check_op.h" #include "base/containers/flat_map.h" +#include "base/memory/raw_ptr.h" #include "base/synchronization/lock.h" #include "base/unguessable_token.h" #include "media/audio/audio_device_description.h" @@ -159,7 +160,7 @@ // AudioRendererMixerManager to keep track explicitly (v.s. RefCounted which // is implicit) of the number of outstanding AudioRendererMixers. struct AudioRendererMixerReference { - media::AudioRendererMixer* mixer; + raw_ptr<media::AudioRendererMixer, ExperimentalRenderer> mixer; size_t ref_count; };
diff --git a/third_party/blink/renderer/modules/media/audio/mojo_audio_input_ipc.h b/third_party/blink/renderer/modules/media/audio/mojo_audio_input_ipc.h index a263313e..c0adcba 100644 --- a/third_party/blink/renderer/modules/media/audio/mojo_audio_input_ipc.h +++ b/third_party/blink/renderer/modules/media/audio/mojo_audio_input_ipc.h
@@ -8,6 +8,7 @@ #include <string> #include "base/functional/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" #include "media/audio/audio_input_ipc.h" @@ -103,7 +104,8 @@ mojo::Receiver<AudioInputStreamClient> stream_client_receiver_{this}; mojo::Receiver<mojom::blink::RendererAudioInputStreamFactoryClient> factory_client_receiver_{this}; - media::AudioInputIPCDelegate* delegate_ = nullptr; + raw_ptr<media::AudioInputIPCDelegate, ExperimentalRenderer> delegate_ = + nullptr; base::WeakPtrFactory<MojoAudioInputIPC> weak_factory_{this}; };
diff --git a/third_party/blink/renderer/modules/media/audio/mojo_audio_output_ipc.h b/third_party/blink/renderer/modules/media/audio/mojo_audio_output_ipc.h index 4c0daab8..9047427e 100644 --- a/third_party/blink/renderer/modules/media/audio/mojo_audio_output_ipc.h +++ b/third_party/blink/renderer/modules/media/audio/mojo_audio_output_ipc.h
@@ -8,6 +8,7 @@ #include <string> #include "base/functional/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" @@ -100,7 +101,8 @@ receiver_{this}; mojo::Remote<media::mojom::blink::AudioOutputStreamProvider> stream_provider_; mojo::Remote<media::mojom::blink::AudioOutputStream> stream_; - media::AudioOutputIPCDelegate* delegate_ = nullptr; + raw_ptr<media::AudioOutputIPCDelegate, ExperimentalRenderer> delegate_ = + nullptr; scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_; // To make sure we don't send an "authorization completed" callback for a
diff --git a/third_party/blink/renderer/modules/media/audio/mojo_audio_output_ipc_test.cc b/third_party/blink/renderer/modules/media/audio/mojo_audio_output_ipc_test.cc index 9d284125..77a21a6 100644 --- a/third_party/blink/renderer/modules/media/audio/mojo_audio_output_ipc_test.cc +++ b/third_party/blink/renderer/modules/media/audio/mojo_audio_output_ipc_test.cc
@@ -9,6 +9,7 @@ #include <string> #include <utility> +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/test/gtest_util.h" #include "media/audio/audio_device_description.h" @@ -93,7 +94,7 @@ } private: - media::mojom::blink::AudioOutputStream* stream_; + raw_ptr<media::mojom::blink::AudioOutputStream, ExperimentalRenderer> stream_; mojo::Remote<media::mojom::blink::AudioOutputStreamProviderClient> provider_client_; absl::optional<mojo::Receiver<media::mojom::blink::AudioOutputStream>>
diff --git a/third_party/blink/renderer/modules/media_capabilities/media_capabilities.cc b/third_party/blink/renderer/modules/media_capabilities/media_capabilities.cc index e5e925e..550bff33 100644 --- a/third_party/blink/renderer/modules/media_capabilities/media_capabilities.cc +++ b/third_party/blink/renderer/modules/media_capabilities/media_capabilities.cc
@@ -837,7 +837,7 @@ ScriptPromise promise = resolver->Promise(); if (auto* handler = webrtc_decoding_info_handler_for_test_ - ? webrtc_decoding_info_handler_for_test_ + ? webrtc_decoding_info_handler_for_test_.get() : WebrtcDecodingInfoHandler::Instance()) { const int callback_id = CreateCallbackId(); pending_cb_map_.insert( @@ -1041,7 +1041,7 @@ WebFeature::kMediaCapabilitiesEncodingInfoWebrtc); if (auto* handler = webrtc_encoding_info_handler_for_test_ - ? webrtc_encoding_info_handler_for_test_ + ? webrtc_encoding_info_handler_for_test_.get() : WebrtcEncodingInfoHandler::Instance()) { const int callback_id = CreateCallbackId(); pending_cb_map_.insert(
diff --git a/third_party/blink/renderer/modules/media_capabilities/media_capabilities.h b/third_party/blink/renderer/modules/media_capabilities/media_capabilities.h index 5b0aaee..6ff84f7 100644 --- a/third_party/blink/renderer/modules/media_capabilities/media_capabilities.h +++ b/third_party/blink/renderer/modules/media_capabilities/media_capabilities.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIA_CAPABILITIES_MEDIA_CAPABILITIES_H_ #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "media/base/video_codecs.h" // for media::VideoCodecProfile #include "media/learning/mojo/public/cpp/mojo_learning_task_controller.h" @@ -215,10 +216,12 @@ HeapHashMap<int, Member<PendingCallbackState>> pending_cb_map_; // Makes it possible to override the WebrtcDecodingInfoHandler in tests. - WebrtcDecodingInfoHandler* webrtc_decoding_info_handler_for_test_ = nullptr; + raw_ptr<WebrtcDecodingInfoHandler, ExperimentalRenderer> + webrtc_decoding_info_handler_for_test_ = nullptr; // Makes it possible to override the WebrtcEncodingInfoHandler in tests. - WebrtcEncodingInfoHandler* webrtc_encoding_info_handler_for_test_ = nullptr; + raw_ptr<WebrtcEncodingInfoHandler, ExperimentalRenderer> + webrtc_encoding_info_handler_for_test_ = nullptr; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/media_capabilities/media_capabilities_test.cc b/third_party/blink/renderer/modules/media_capabilities/media_capabilities_test.cc index 3f304228..4481452 100644 --- a/third_party/blink/renderer/modules/media_capabilities/media_capabilities_test.cc +++ b/third_party/blink/renderer/modules/media_capabilities/media_capabilities_test.cc
@@ -8,6 +8,7 @@ #include <algorithm> +#include "base/memory/raw_ptr.h" #include "base/strings/string_number_conversions.h" #include "base/test/bind.h" #include "base/test/scoped_feature_list.h" @@ -226,8 +227,9 @@ private: mojo::Receiver<media::mojom::blink::MediaMetricsProvider> receiver_{this}; - MockLearningTaskControllerService* bad_window_service_; - MockLearningTaskControllerService* nnr_service_; + raw_ptr<MockLearningTaskControllerService, ExperimentalRenderer> + bad_window_service_; + raw_ptr<MockLearningTaskControllerService, ExperimentalRenderer> nnr_service_; }; // Simple helper for saving back-end callbacks for pending decodingInfo() calls.
diff --git a/third_party/blink/renderer/modules/mediarecorder/audio_track_opus_encoder.cc b/third_party/blink/renderer/modules/mediarecorder/audio_track_opus_encoder.cc index fbee6b0..aac5cebf 100644 --- a/third_party/blink/renderer/modules/mediarecorder/audio_track_opus_encoder.cc +++ b/third_party/blink/renderer/modules/mediarecorder/audio_track_opus_encoder.cc
@@ -148,13 +148,15 @@ (bits_per_second_ > 0) ? base::saturated_cast<opus_int32>(bits_per_second_) : OPUS_AUTO; - if (opus_encoder_ctl(opus_encoder_, OPUS_SET_BITRATE(bitrate)) != OPUS_OK) { + if (opus_encoder_ctl(opus_encoder_.get(), OPUS_SET_BITRATE(bitrate)) != + OPUS_OK) { DLOG(ERROR) << "Failed to set Opus bitrate: " << bitrate; return; } const opus_int32 vbr_enabled = static_cast<opus_int32>(vbr_enabled_); - if (opus_encoder_ctl(opus_encoder_, OPUS_SET_VBR(vbr_enabled)) != OPUS_OK) { + if (opus_encoder_ctl(opus_encoder_.get(), OPUS_SET_VBR(vbr_enabled)) != + OPUS_OK) { DLOG(ERROR) << "Failed to set Opus VBR mode: " << vbr_enabled; return; }
diff --git a/third_party/blink/renderer/modules/mediarecorder/audio_track_opus_encoder.h b/third_party/blink/renderer/modules/mediarecorder/audio_track_opus_encoder.h index 096d25f..5321f8a5 100644 --- a/third_party/blink/renderer/modules/mediarecorder/audio_track_opus_encoder.h +++ b/third_party/blink/renderer/modules/mediarecorder/audio_track_opus_encoder.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "media/base/audio_bus.h" #include "media/base/audio_converter.h" #include "media/base/audio_fifo.h" @@ -67,7 +68,7 @@ // Buffer for passing AudioBus data from the converter to the encoder. std::unique_ptr<float[]> buffer_; - OpusEncoder* opus_encoder_; + raw_ptr<OpusEncoder, ExperimentalRenderer> opus_encoder_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/mediarecorder/audio_track_recorder_unittest.cc b/third_party/blink/renderer/modules/mediarecorder/audio_track_recorder_unittest.cc index 43f62c5..1462049 100644 --- a/third_party/blink/renderer/modules/mediarecorder/audio_track_recorder_unittest.cc +++ b/third_party/blink/renderer/modules/mediarecorder/audio_track_recorder_unittest.cc
@@ -7,6 +7,7 @@ #include <stdint.h> #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/run_loop.h" #include "base/task/bind_post_task.h" @@ -806,7 +807,7 @@ int excess_input_ = 0; // Decoder for verifying data was properly encoded. - OpusDecoder* opus_decoder_ = nullptr; + raw_ptr<OpusDecoder, ExperimentalRenderer> opus_decoder_ = nullptr; std::unique_ptr<float[]> opus_buffer_; int opus_buffer_size_;
diff --git a/third_party/blink/renderer/modules/mediarecorder/h264_encoder_unittest.cc b/third_party/blink/renderer/modules/mediarecorder/h264_encoder_unittest.cc index 7fd5ca15..5580182 100644 --- a/third_party/blink/renderer/modules/mediarecorder/h264_encoder_unittest.cc +++ b/third_party/blink/renderer/modules/mediarecorder/h264_encoder_unittest.cc
@@ -6,6 +6,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/synchronization/waitable_event.h" #include "base/task/thread_pool.h" @@ -139,7 +140,8 @@ const absl::optional<media::VideoCodecProfile> profile_; const absl::optional<uint8_t> level_; const uint32_t bitrate_; - media::MockVideoEncoderMetricsProvider* mock_metrics_provider_; + raw_ptr<media::MockVideoEncoderMetricsProvider, ExperimentalRenderer> + mock_metrics_provider_; H264Encoder encoder_; };
diff --git a/third_party/blink/renderer/modules/mediarecorder/media_recorder_encoder_wrapper_unittest.cc b/third_party/blink/renderer/modules/mediarecorder/media_recorder_encoder_wrapper_unittest.cc index 8615916..6429c22 100644 --- a/third_party/blink/renderer/modules/mediarecorder/media_recorder_encoder_wrapper_unittest.cc +++ b/third_party/blink/renderer/modules/mediarecorder/media_recorder_encoder_wrapper_unittest.cc
@@ -6,6 +6,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "media/base/mock_filters.h" #include "media/base/video_frame.h" #include "testing/gtest/include/gtest/gtest.h" @@ -100,7 +101,7 @@ } private: - media::MockVideoEncoder* const mock_encoder_; + const raw_ptr<media::MockVideoEncoder, ExperimentalRenderer> mock_encoder_; base::OnceClosure dtor_cb_; SEQUENCE_CHECKER(sequence_checker_); @@ -190,7 +191,8 @@ media::VideoEncoder::OutputCB output_cb; media::MockVideoEncoder mock_encoder_; - media::MockVideoEncoderMetricsProvider* mock_metrics_provider_; + raw_ptr<media::MockVideoEncoderMetricsProvider, ExperimentalRenderer> + mock_metrics_provider_; MediaRecorderEncoderWrapper encoder_wrapper_; };
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 b560f74..239f6e1 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
@@ -6,6 +6,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/test/gmock_callback_support.h" #include "base/test/scoped_feature_list.h" @@ -234,7 +235,8 @@ bool has_audio_; Persistent<MediaRecorderHandler> media_recorder_handler_; media::SineWaveAudioSource audio_source_; - MockMediaStreamVideoSource* video_source_ = nullptr; + raw_ptr<MockMediaStreamVideoSource, ExperimentalRenderer> video_source_ = + nullptr; }; class MediaRecorderHandlerTest : public TestWithParam<MediaRecorderTestParams>, @@ -1097,7 +1099,8 @@ ScopedTestingPlatformSupport<IOTaskRunnerTestingPlatformSupport> platform_; MockMediaStreamRegistry registry_; - MockMediaStreamVideoSource* video_source_ = nullptr; + raw_ptr<MockMediaStreamVideoSource, ExperimentalRenderer> video_source_ = + nullptr; Persistent<MediaRecorderHandler> media_recorder_handler_; };
diff --git a/third_party/blink/renderer/modules/mediarecorder/vea_encoder.h b/third_party/blink/renderer/modules/mediarecorder/vea_encoder.h index b06c954..73f5f850 100644 --- a/third_party/blink/renderer/modules/mediarecorder/vea_encoder.h +++ b/third_party/blink/renderer/modules/mediarecorder/vea_encoder.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/containers/queue.h" +#include "base/memory/raw_ptr.h" #include "base/memory/read_only_shared_memory_region.h" #include "base/memory/shared_memory_mapping.h" #include "base/memory/unsafe_shared_memory_region.h" @@ -91,7 +92,8 @@ void ConfigureEncoder(const gfx::Size& size, bool use_native_input); - media::GpuVideoAcceleratorFactories* const gpu_factories_; + const raw_ptr<media::GpuVideoAcceleratorFactories, ExperimentalRenderer> + gpu_factories_; const media::VideoCodecProfile codec_; const absl::optional<uint8_t> level_; const media::Bitrate::Mode bitrate_mode_;
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 8ce22fe..4e25f43 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
@@ -6,6 +6,7 @@ #include "base/location.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/synchronization/waitable_event.h" #include "base/test/bind.h" @@ -217,7 +218,7 @@ const String track_id("dummy"); source_ = MakeGarbageCollected<MediaStreamSource>( track_id, MediaStreamSource::kTypeVideo, track_id, false /*remote*/, - base::WrapUnique(mock_source_)); + base::WrapUnique(mock_source_.get())); EXPECT_CALL(*mock_source_, OnRequestRefreshFrame()) .Times(testing::AnyNumber()); EXPECT_CALL(*mock_source_, OnCapturingLinkSecured(_)) @@ -320,9 +321,9 @@ // All members are non-const due to the series of initialize() calls needed. // |mock_source_| is owned by |source_|, |track_| by |component_|. - MockMediaStreamVideoSource* mock_source_; + raw_ptr<MockMediaStreamVideoSource, ExperimentalRenderer> mock_source_; Persistent<MediaStreamSource> source_; - MediaStreamVideoTrack* track_; + raw_ptr<MediaStreamVideoTrack, ExperimentalRenderer> track_; Persistent<MediaStreamComponent> component_; std::unique_ptr<VideoTrackRecorderImpl> video_track_recorder_; @@ -851,7 +852,7 @@ const String track_id("dummy"); source_ = MakeGarbageCollected<MediaStreamSource>( track_id, MediaStreamSource::kTypeVideo, track_id, false /*remote*/, - base::WrapUnique(mock_source_)); + base::WrapUnique(mock_source_.get())); component_ = MakeGarbageCollected<MediaStreamComponentImpl>( source_, std::make_unique<MediaStreamVideoTrack>( mock_source_, @@ -883,7 +884,7 @@ // All members are non-const due to the series of initialize() calls needed. // |mock_source_| is owned by |source_|. - MockMediaStreamVideoSource* mock_source_; + raw_ptr<MockMediaStreamVideoSource, ExperimentalRenderer> mock_source_; Persistent<MediaStreamSource> source_; Persistent<MediaStreamComponent> component_;
diff --git a/third_party/blink/renderer/modules/mediasession/media_session.h b/third_party/blink/renderer/modules/mediasession/media_session.h index 29bcc957..6f53aeb 100644 --- a/third_party/blink/renderer/modules/mediasession/media_session.h +++ b/third_party/blink/renderer/modules/mediasession/media_session.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASESSION_MEDIA_SESSION_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASESSION_MEDIA_SESSION_H_ +#include "base/memory/raw_ptr.h" #include "mojo/public/cpp/bindings/remote.h" #include "third_party/blink/public/mojom/mediasession/media_session.mojom-blink.h" #include "third_party/blink/renderer/modules/modules_export.h" @@ -85,7 +86,7 @@ // Returns null if the associated window is detached. mojom::blink::MediaSessionService* GetService(); - const base::TickClock* clock_ = nullptr; + raw_ptr<const base::TickClock, ExperimentalRenderer> clock_ = nullptr; mojom::blink::MediaSessionPlaybackState playback_state_; media_session::mojom::blink::MediaPositionPtr position_state_;
diff --git a/third_party/blink/renderer/modules/mediastream/apply_constraints_processor.h b/third_party/blink/renderer/modules/mediastream/apply_constraints_processor.h index 1f2fc2d..8f31cca 100644 --- a/third_party/blink/renderer/modules/mediastream/apply_constraints_processor.h +++ b/third_party/blink/renderer/modules/mediastream/apply_constraints_processor.h
@@ -7,6 +7,7 @@ #include "base/feature_list.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/threading/thread_checker.h" #include "media/base/scoped_async_trace.h" @@ -111,7 +112,8 @@ std::unique_ptr<ScopedMediaStreamTrace> video_device_request_trace_; // TODO(crbug.com/704136): Change to use Member. - blink::MediaStreamVideoSource* video_source_ = nullptr; + raw_ptr<blink::MediaStreamVideoSource, ExperimentalRenderer> video_source_ = + nullptr; base::OnceClosure request_completed_cb_; const Member<LocalFrame> frame_;
diff --git a/third_party/blink/renderer/modules/mediastream/local_video_capturer_source.h b/third_party/blink/renderer/modules/mediastream/local_video_capturer_source.h index bee1050..f7f4b87 100644 --- a/third_party/blink/renderer/modules/mediastream/local_video_capturer_source.h +++ b/third_party/blink/renderer/modules/mediastream/local_video_capturer_source.h
@@ -9,6 +9,7 @@ #include <string> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/threading/thread_checker.h" #include "base/token.h" @@ -71,7 +72,7 @@ // |session_id_| identifies the capture device used for this capture session. const media::VideoCaptureSessionId session_id_; - WebVideoCaptureImplManager* const manager_; + const raw_ptr<WebVideoCaptureImplManager, ExperimentalRenderer> manager_; LocalFrameToken frame_token_; base::OnceClosure release_device_cb_;
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 e6d4b47b..3064df7 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 "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "build/build_config.h" #include "media/base/audio_parameters.h" @@ -39,7 +40,7 @@ private: // TODO(crbug.com/704136): Replace with Member at some point. scoped_refptr<WebRtcAudioDeviceImpl> const playout_data_source_; - WebRtcPlayoutDataSource::Sink* const sink_; + const raw_ptr<WebRtcPlayoutDataSource::Sink, ExperimentalRenderer> sink_; }; MediaStreamAudioProcessor::MediaStreamAudioProcessor(
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_audio.h b/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_audio.h index 2fd464d..4bc3d6a3 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_audio.h +++ b/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_audio.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASTREAM_MEDIA_STREAM_CONSTRAINTS_UTIL_AUDIO_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASTREAM_MEDIA_STREAM_CONSTRAINTS_UTIL_AUDIO_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/public/mojom/mediastream/media_stream.mojom-blink-forward.h" #include "third_party/blink/renderer/modules/mediastream/media_stream_constraints_util.h" #include "third_party/blink/renderer/modules/modules_export.h" @@ -76,7 +77,8 @@ const media::AudioParameters& Parameters() const; private: - blink::MediaStreamAudioSource* source_ = nullptr; + raw_ptr<blink::MediaStreamAudioSource, ExperimentalRenderer> source_ = + nullptr; String device_id_; String group_id_; media::AudioParameters parameters_;
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_audio_test.cc b/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_audio_test.cc index 344da54..efdabbc 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_audio_test.cc +++ b/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_audio_test.cc
@@ -12,6 +12,7 @@ #include "base/containers/contains.h" #include "base/functional/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/test/scoped_feature_list.h" #include "base/types/optional_util.h" #include "build/build_config.h" @@ -449,10 +450,14 @@ blink::MockConstraintFactory constraint_factory_; AudioDeviceCaptureCapabilities capabilities_; - const AudioDeviceCaptureCapability* default_device_ = nullptr; - const AudioDeviceCaptureCapability* system_echo_canceller_device_ = nullptr; - const AudioDeviceCaptureCapability* four_channels_device_ = nullptr; - const AudioDeviceCaptureCapability* variable_latency_device_ = nullptr; + raw_ptr<const AudioDeviceCaptureCapability, ExperimentalRenderer> + default_device_ = nullptr; + raw_ptr<const AudioDeviceCaptureCapability, ExperimentalRenderer> + system_echo_canceller_device_ = nullptr; + raw_ptr<const AudioDeviceCaptureCapability, ExperimentalRenderer> + four_channels_device_ = nullptr; + raw_ptr<const AudioDeviceCaptureCapability, ExperimentalRenderer> + variable_latency_device_ = nullptr; std::unique_ptr<ProcessedLocalAudioSource> system_echo_canceller_source_; const WTF::Vector<media::Point> kMicPositions = {{8, 8, 8}, {4, 4, 4}};
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_video_device_test.cc b/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_video_device_test.cc index e45b4024..db08aaf1 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_video_device_test.cc +++ b/third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_video_device_test.cc
@@ -7,6 +7,7 @@ #include <algorithm> #include <utility> +#include "base/memory/raw_ptr.h" #include "media/base/limits.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -210,15 +211,23 @@ } VideoDeviceCaptureCapabilities capabilities_; - const VideoInputDeviceCapabilities* default_device_; - const VideoInputDeviceCapabilities* low_res_device_; - const VideoInputDeviceCapabilities* high_res_device_; - const VideoInputDeviceCapabilities* invalid_frame_rate_device_; + raw_ptr<const VideoInputDeviceCapabilities, ExperimentalRenderer> + default_device_; + raw_ptr<const VideoInputDeviceCapabilities, ExperimentalRenderer> + low_res_device_; + raw_ptr<const VideoInputDeviceCapabilities, ExperimentalRenderer> + high_res_device_; + raw_ptr<const VideoInputDeviceCapabilities, ExperimentalRenderer> + invalid_frame_rate_device_; // Closest formats to the default settings. - const media::VideoCaptureFormat* default_closest_format_; - const media::VideoCaptureFormat* low_res_closest_format_; - const media::VideoCaptureFormat* high_res_closest_format_; - const media::VideoCaptureFormat* high_res_highest_format_; + raw_ptr<const media::VideoCaptureFormat, ExperimentalRenderer> + default_closest_format_; + raw_ptr<const media::VideoCaptureFormat, ExperimentalRenderer> + low_res_closest_format_; + raw_ptr<const media::VideoCaptureFormat, ExperimentalRenderer> + high_res_closest_format_; + raw_ptr<const media::VideoCaptureFormat, ExperimentalRenderer> + high_res_highest_format_; MockConstraintFactory constraint_factory_; };
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_track.h b/third_party/blink/renderer/modules/mediastream/media_stream_track.h index 8efefcb..ac91cfe 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_track.h +++ b/third_party/blink/renderer/modules/mediastream/media_stream_track.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "build/build_config.h" #include "third_party/blink/renderer/bindings/core/v8/active_script_wrappable.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise.h" @@ -59,7 +60,7 @@ // For carrying data to the FromTransferredState method. struct TransferredValues { - const WrapperTypeInfo* track_impl_subtype; + raw_ptr<const WrapperTypeInfo, ExperimentalRenderer> track_impl_subtype; base::UnguessableToken session_id; base::UnguessableToken transfer_id; String kind;
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_video_capturer_source_test.cc b/third_party/blink/renderer/modules/mediastream/media_stream_video_capturer_source_test.cc index 26c0740..f8f8971 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_video_capturer_source_test.cc +++ b/third_party/blink/renderer/modules/mediastream/media_stream_video_capturer_source_test.cc
@@ -8,6 +8,7 @@ #include "base/functional/bind.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/task/bind_post_task.h" #include "base/time/time.h" @@ -71,8 +72,8 @@ } private: - base::TimeTicks* const capture_time_; - media::VideoFrameMetadata* const metadata_; + const raw_ptr<base::TimeTicks, ExperimentalRenderer> capture_time_; + const raw_ptr<media::VideoFrameMetadata, ExperimentalRenderer> metadata_; base::OnceClosure got_frame_cb_; }; @@ -166,9 +167,10 @@ Persistent<MediaStreamSource> stream_source_; MockMojoMediaStreamDispatcherHost mock_dispatcher_host_; - MediaStreamVideoCapturerSource* - video_capturer_source_; // owned by |stream_source_|. - MockVideoCapturerSource* delegate_; // owned by |source_|. + raw_ptr<MediaStreamVideoCapturerSource, ExperimentalRenderer> + video_capturer_source_; // owned by |stream_source_|. + raw_ptr<MockVideoCapturerSource, ExperimentalRenderer> + delegate_; // owned by |source_|. String stream_source_id_; bool source_stopped_; bool stop_capture_flag_ = false;
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_video_renderer_sink_test.cc b/third_party/blink/renderer/modules/mediastream/media_stream_video_renderer_sink_test.cc index 80a6292..98cbb1e2 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_video_renderer_sink_test.cc +++ b/third_party/blink/renderer/modules/mediastream/media_stream_video_renderer_sink_test.cc
@@ -8,6 +8,7 @@ #include "base/functional/bind.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/strings/utf_string_conversions.h" #include "media/base/video_frame.h" @@ -119,7 +120,7 @@ } Persistent<MediaStreamSource> media_stream_source_; - MockMediaStreamVideoSource* mock_source_; + raw_ptr<MockMediaStreamVideoSource, ExperimentalRenderer> mock_source_; }; // Checks that the initialization-destruction sequence works fine.
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_video_source_test.cc b/third_party/blink/renderer/modules/mediastream/media_stream_video_source_test.cc index cd9d109..47303803 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_video_source_test.cc +++ b/third_party/blink/renderer/modules/mediastream/media_stream_video_source_test.cc
@@ -5,6 +5,7 @@ #include <utility> #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/strings/string_number_conversions.h" #include "base/strings/utf_string_conversions.h" @@ -54,7 +55,7 @@ stream_source_ = MakeGarbageCollected<MediaStreamSource>( String::FromUTF8("dummy_source_id"), MediaStreamSource::kTypeVideo, String::FromUTF8("dummy_source_name"), false /* remote */, - base::WrapUnique(mock_stream_video_source_)); + base::WrapUnique(mock_stream_video_source_.get())); ON_CALL(*mock_stream_video_source_, OnSourceCanDiscardAlpha) .WillByDefault(Return()); ON_CALL(*mock_stream_video_source_, SupportsEncodedOutput) @@ -291,7 +292,8 @@ WebString result_name_; Persistent<MediaStreamSource> stream_source_; // |mock_stream_video_source_| is owned by |stream_source_|. - MockMediaStreamVideoSource* mock_stream_video_source_; + raw_ptr<MockMediaStreamVideoSource, ExperimentalRenderer> + mock_stream_video_source_; }; TEST_F(MediaStreamVideoSourceTest, AddTrackAndStartSource) {
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_video_track_test.cc b/third_party/blink/renderer/modules/mediastream/media_stream_video_track_test.cc index d16c585..0c877fe 100644 --- a/third_party/blink/renderer/modules/mediastream/media_stream_video_track_test.cc +++ b/third_party/blink/renderer/modules/mediastream/media_stream_video_track_test.cc
@@ -8,6 +8,7 @@ #include "base/functional/callback.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/histogram_macros.h" #include "base/run_loop.h" #include "base/strings/utf_string_conversions.h" @@ -188,7 +189,7 @@ ScopedTestingPlatformSupport<IOTaskRunnerTestingPlatformSupport> platform_; Persistent<MediaStreamSource> source_; // |mock_source_| is owned by |source_|. - MockMediaStreamVideoSource* mock_source_; + raw_ptr<MockMediaStreamVideoSource, ExperimentalRenderer> mock_source_; bool source_started_; }; @@ -227,7 +228,7 @@ private: base::OnceClosure callback_; - bool* correct_; + raw_ptr<bool, ExperimentalRenderer> correct_; THREAD_CHECKER(thread_checker_); };
diff --git a/third_party/blink/renderer/modules/mediastream/track_audio_renderer_test.cc b/third_party/blink/renderer/modules/mediastream/track_audio_renderer_test.cc index c044aa5..f456d524 100644 --- a/third_party/blink/renderer/modules/mediastream/track_audio_renderer_test.cc +++ b/third_party/blink/renderer/modules/mediastream/track_audio_renderer_test.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/modules/mediastream/track_audio_renderer.h" #include "base/functional/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/task/single_thread_task_runner.h" #include "base/test/bind.h" @@ -233,7 +234,7 @@ int total_frames_captured_ = 0; int frames_captured_since_last_reconfig_ = 0; - FakeMediaStreamAudioSource* fake_source_; + raw_ptr<FakeMediaStreamAudioSource, ExperimentalRenderer> fake_source_; }; TEST_P(TrackAudioRendererTest, SingleCapture) {
diff --git a/third_party/blink/renderer/modules/mediastream/user_media_client_test.cc b/third_party/blink/renderer/modules/mediastream/user_media_client_test.cc index 83eae04..313cc75 100644 --- a/third_party/blink/renderer/modules/mediastream/user_media_client_test.cc +++ b/third_party/blink/renderer/modules/mediastream/user_media_client_test.cc
@@ -12,6 +12,7 @@ #include <vector> #include "base/functional/bind.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/strings/utf_string_conversions.h" #include "base/test/bind.h" @@ -374,7 +375,8 @@ private: media::AudioParameters audio_parameters_ = media::AudioParameters::UnavailableDeviceParams(); - blink::MediaStreamVideoSource* video_source_ = nullptr; + raw_ptr<blink::MediaStreamVideoSource, ExperimentalRenderer> video_source_ = + nullptr; }; enum RequestState { @@ -451,7 +453,7 @@ override { video_source_ = new MockMediaStreamVideoCapturerSource( device, std::move(stop_callback)); - return base::WrapUnique(video_source_); + return base::WrapUnique(video_source_.get()); } std::unique_ptr<blink::MediaStreamAudioSource> CreateAudioSource( @@ -474,7 +476,7 @@ source = std::make_unique<FailedAtLifeAudioSource>(); } else if (blink::IsDesktopCaptureMediaType(device.type)) { local_audio_source_ = new MockLocalMediaStreamAudioSource(); - source = base::WrapUnique(local_audio_source_); + source = base::WrapUnique(local_audio_source_.get()); } else { source = std::make_unique<blink::MediaStreamAudioSource>( blink::scheduler::GetSingleThreadTaskRunnerForTesting(), true); @@ -527,14 +529,16 @@ std::unique_ptr<WebMediaStreamDeviceObserver> media_stream_device_observer_; HeapMojoRemote<blink::mojom::blink::MediaDevicesDispatcherHost> media_devices_dispatcher_; - MockMediaStreamVideoCapturerSource* video_source_ = nullptr; - MockLocalMediaStreamAudioSource* local_audio_source_ = nullptr; + raw_ptr<MockMediaStreamVideoCapturerSource, ExperimentalRenderer> + video_source_ = nullptr; + raw_ptr<MockLocalMediaStreamAudioSource, ExperimentalRenderer> + local_audio_source_ = nullptr; bool create_source_that_fails_ = false; Member<MediaStreamDescriptor> last_generated_descriptor_; blink::mojom::blink::MediaStreamRequestResult result_ = blink::mojom::blink::MediaStreamRequestResult::NUM_MEDIA_REQUEST_RESULTS; String constraint_name_; - RequestState* state_; + raw_ptr<RequestState, ExperimentalRenderer> state_; }; class UserMediaClientUnderTest : public UserMediaClient { @@ -563,7 +567,7 @@ } private: - RequestState* state_; + raw_ptr<RequestState, ExperimentalRenderer> state_; }; class UserMediaChromeClient : public EmptyChromeClient {
diff --git a/third_party/blink/renderer/modules/mediastream/user_media_processor.cc b/third_party/blink/renderer/modules/mediastream/user_media_processor.cc index 8101156..47ed1a47 100644 --- a/third_party/blink/renderer/modules/mediastream/user_media_processor.cc +++ b/third_party/blink/renderer/modules/mediastream/user_media_processor.cc
@@ -985,7 +985,7 @@ WebMediaStreamDeviceObserver* UserMediaProcessor::GetMediaStreamDeviceObserver() { auto* media_stream_device_observer = - media_stream_device_observer_for_testing_; + media_stream_device_observer_for_testing_.get(); if (frame_) { // Can be null for tests. auto* web_frame = static_cast<WebLocalFrame*>(WebFrame::FromCoreFrame(frame_));
diff --git a/third_party/blink/renderer/modules/mediastream/user_media_processor.h b/third_party/blink/renderer/modules/mediastream/user_media_processor.h index d1a5a60..d6459f9 100644 --- a/third_party/blink/renderer/modules/mediastream/user_media_processor.h +++ b/third_party/blink/renderer/modules/mediastream/user_media_processor.h
@@ -10,6 +10,7 @@ #include "base/functional/callback_forward.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/task/single_thread_task_runner.h" #include "base/threading/thread_checker.h" @@ -302,8 +303,8 @@ WebMediaStreamDeviceObserver* GetMediaStreamDeviceObserver(); // Owned by the test. - WebMediaStreamDeviceObserver* media_stream_device_observer_for_testing_ = - nullptr; + raw_ptr<WebMediaStreamDeviceObserver, ExperimentalRenderer> + media_stream_device_observer_for_testing_ = nullptr; LocalStreamSources local_sources_; LocalStreamSources pending_local_sources_;
diff --git a/third_party/blink/renderer/modules/mediastream/video_renderer_algorithm_wrapper.h b/third_party/blink/renderer/modules/mediastream/video_renderer_algorithm_wrapper.h index 138bdf49..4cf157a 100644 --- a/third_party/blink/renderer/modules/mediastream/video_renderer_algorithm_wrapper.h +++ b/third_party/blink/renderer/modules/mediastream/video_renderer_algorithm_wrapper.h
@@ -9,6 +9,7 @@ #include <stdint.h> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "media/base/media_util.h" #include "media/base/time_source.h" @@ -49,7 +50,7 @@ enum RendererAlgorithm { kDefault, kLowLatency }; const media::TimeSource::WallClockTimeCB wall_clock_time_cb_; - media::MediaLog* media_log_; + raw_ptr<media::MediaLog, ExperimentalRenderer> media_log_; RendererAlgorithm renderer_algorithm_; std::unique_ptr<media::VideoRendererAlgorithm> default_rendering_frame_buffer_;
diff --git a/third_party/blink/renderer/modules/mediastream/video_track_adapter_unittest.cc b/third_party/blink/renderer/modules/mediastream/video_track_adapter_unittest.cc index 06451bc..5d2a72f 100644 --- a/third_party/blink/renderer/modules/mediastream/video_track_adapter_unittest.cc +++ b/third_party/blink/renderer/modules/mediastream/video_track_adapter_unittest.cc
@@ -8,6 +8,7 @@ #include "base/functional/callback.h" #include "base/functional/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/numerics/ranges.h" #include "base/run_loop.h" #include "base/synchronization/waitable_event.h" @@ -821,7 +822,7 @@ platform_support_; base::Thread render_thread_; WebMediaStreamSource web_source_; - MockMediaStreamVideoSource* mock_source_; + raw_ptr<MockMediaStreamVideoSource, ExperimentalRenderer> mock_source_; scoped_refptr<VideoTrackAdapter> adapter_; };
diff --git a/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms.cc b/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms.cc index 20eda24..4b23386 100644 --- a/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms.cc +++ b/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms.cc
@@ -13,6 +13,7 @@ #include "base/functional/bind.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/sequence_checker.h" #include "base/task/bind_post_task.h" #include "base/task/sequenced_task_runner.h" @@ -330,7 +331,8 @@ const scoped_refptr<base::SequencedTaskRunner> media_task_runner_; const scoped_refptr<base::TaskRunner> worker_task_runner_; - media::GpuVideoAcceleratorFactories* const gpu_factories_; + const raw_ptr<media::GpuVideoAcceleratorFactories, ExperimentalRenderer> + gpu_factories_; // Used for DCHECKs to ensure method calls are executed on the correct thread. SEQUENCE_CHECKER(video_sequence_checker_);
diff --git a/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms_compositor.h b/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms_compositor.h index e1e1ce6..364d4ae 100644 --- a/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms_compositor.h +++ b/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms_compositor.h
@@ -11,6 +11,7 @@ #include <memory> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/synchronization/lock.h" @@ -230,7 +231,8 @@ // is not |nullptr| while the compositor is actively using this // VideoFrameProvider. This will be set to |nullptr| when the compositor stops // serving this VideoFrameProvider. - cc::VideoFrameProvider::Client* video_frame_provider_client_; + raw_ptr<cc::VideoFrameProvider::Client, ExperimentalRenderer> + video_frame_provider_client_; // |current_frame_| is updated only on compositor thread. The object it // holds can be freed on the compositor thread if it is the last to hold a
diff --git a/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms_test.cc b/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms_test.cc index 029d5d2b..c1550160 100644 --- a/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms_test.cc +++ b/third_party/blink/renderer/modules/mediastream/webmediaplayer_ms_test.cc
@@ -10,6 +10,7 @@ #include "base/containers/circular_deque.h" #include "base/functional/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/run_loop.h" #include "base/task/sequenced_task_runner.h" @@ -164,7 +165,7 @@ private: int delegate_id_ = 1234; - Observer* observer_ = nullptr; + raw_ptr<Observer, ExperimentalRenderer> observer_ = nullptr; bool is_hidden_ = false; bool is_gone_ = true; bool is_idle_ = false; @@ -240,7 +241,8 @@ gfx::Size standard_size_; const scoped_refptr<base::SingleThreadTaskRunner> task_runner_; - ReusableMessageLoopEvent* const message_loop_controller_; + const raw_ptr<ReusableMessageLoopEvent, ExperimentalRenderer> + message_loop_controller_; const WebMediaStreamVideoRenderer::RepaintCB repaint_cb_; base::circular_deque<TestFrame> frames_; @@ -417,7 +419,7 @@ } private: - cc::VideoFrameProvider* provider_; + raw_ptr<cc::VideoFrameProvider, ExperimentalRenderer> provider_; }; // The class is used to generate a MockVideoProvider in @@ -463,7 +465,8 @@ private: const scoped_refptr<base::SingleThreadTaskRunner> task_runner_; scoped_refptr<WebMediaStreamVideoRenderer> provider_; - ReusableMessageLoopEvent* const message_loop_controller_; + const raw_ptr<ReusableMessageLoopEvent, ExperimentalRenderer> + message_loop_controller_; bool support_video_renderer_ = true; scoped_refptr<WebMediaStreamAudioRenderer> audio_renderer_; }; @@ -637,19 +640,21 @@ return std::move(surface_layer_bridge_); } - MockRenderFactory* render_factory_; + raw_ptr<MockRenderFactory, ExperimentalRenderer> render_factory_; std::unique_ptr<media::MockGpuVideoAcceleratorFactories> gpu_factories_; FakeWebMediaPlayerDelegate delegate_; std::unique_ptr<WebMediaPlayerMS> player_; - WebMediaPlayerMSCompositor* compositor_; + raw_ptr<WebMediaPlayerMSCompositor, ExperimentalRenderer> compositor_; ReusableMessageLoopEvent message_loop_controller_; - cc::Layer* layer_; + raw_ptr<cc::Layer, ExperimentalRenderer> layer_; bool is_audio_element_ = false; std::vector<base::OnceClosure> frame_ready_cbs_; std::unique_ptr<NiceMock<MockSurfaceLayerBridge>> surface_layer_bridge_; std::unique_ptr<NiceMock<MockWebVideoFrameSubmitter>> submitter_; - NiceMock<MockSurfaceLayerBridge>* surface_layer_bridge_ptr_ = nullptr; - NiceMock<MockWebVideoFrameSubmitter>* submitter_ptr_ = nullptr; + raw_ptr<NiceMock<MockSurfaceLayerBridge>, ExperimentalRenderer> + surface_layer_bridge_ptr_ = nullptr; + raw_ptr<NiceMock<MockWebVideoFrameSubmitter>, ExperimentalRenderer> + submitter_ptr_ = nullptr; bool enable_surface_layer_for_video_ = false; private:
diff --git a/third_party/blink/renderer/modules/ml/ml_model_loader_test_util.cc b/third_party/blink/renderer/modules/ml/ml_model_loader_test_util.cc index 9d34b116..69086ca 100644 --- a/third_party/blink/renderer/modules/ml/ml_model_loader_test_util.cc +++ b/third_party/blink/renderer/modules/ml/ml_model_loader_test_util.cc
@@ -39,7 +39,7 @@ const V8TestingScope& scope) : interface_broker_( scope.GetExecutionContext()->GetBrowserInterfaceBroker()) { - interface_broker_.SetBinderForTesting( + interface_broker_->SetBinderForTesting( MLService::Name_, WTF::BindRepeating(&FakeMLService::BindFakeService, // Safe to WTF::Unretained, we unregister the @@ -48,7 +48,8 @@ } ScopedSetMLServiceBinder::~ScopedSetMLServiceBinder() { - interface_broker_.SetBinderForTesting(MLService::Name_, base::NullCallback()); + interface_broker_->SetBinderForTesting(MLService::Name_, + base::NullCallback()); } FakeMLModelLoader::FakeMLModelLoader() = default;
diff --git a/third_party/blink/renderer/modules/ml/ml_model_loader_test_util.h b/third_party/blink/renderer/modules/ml/ml_model_loader_test_util.h index 48f72269..7bb4ea01 100644 --- a/third_party/blink/renderer/modules/ml/ml_model_loader_test_util.h +++ b/third_party/blink/renderer/modules/ml/ml_model_loader_test_util.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_ML_ML_MODEL_LOADER_TEST_UTIL_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_ML_ML_MODEL_LOADER_TEST_UTIL_H_ +#include "base/memory/raw_ref.h" #include "components/ml/mojom/ml_service.mojom-blink.h" #include "components/ml/mojom/web_platform_model.mojom-blink.h" #include "mojo/public/cpp/bindings/pending_remote.h" @@ -52,7 +53,8 @@ ~ScopedSetMLServiceBinder(); private: - const BrowserInterfaceBrokerProxy& interface_broker_; + const raw_ref<const BrowserInterfaceBrokerProxy, ExperimentalRenderer> + interface_broker_; }; // A fake MLModelLoader Mojo interface implementation that backs a Blink
diff --git a/third_party/blink/renderer/modules/ml/webnn/ml_graph_test_mojo.cc b/third_party/blink/renderer/modules/ml/webnn/ml_graph_test_mojo.cc index 4c84322..1f3881ec 100644 --- a/third_party/blink/renderer/modules/ml/webnn/ml_graph_test_mojo.cc +++ b/third_party/blink/renderer/modules/ml/webnn/ml_graph_test_mojo.cc
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/memory/raw_ref.h" #include "base/test/scoped_feature_list.h" #include "components/ml/webnn/features.h" #include "mojo/public/cpp/base/big_buffer.h" @@ -73,10 +74,10 @@ void Compute(HashMap<String, mojo_base::BigBuffer> inputs, blink_mojom::WebNNGraph::ComputeCallback callback) override { // Set the input array buffers for validation in the test. - helper_.SetInputArrayBuffers(std::move(inputs)); + helper_->SetInputArrayBuffers(std::move(inputs)); // Return the compute result with shared memory. - auto& compute_result = helper_.GetComputeResult(); + auto& compute_result = helper_->GetComputeResult(); HashMap<String, mojo_base::BigBuffer> mojo_outputs; for (const auto& [name, output_data] : compute_result.output) { mojo_outputs.insert( @@ -85,7 +86,7 @@ std::move(callback).Run(compute_result.result, std::move(mojo_outputs)); } - MLGraphTestMojo& helper_; + const raw_ref<MLGraphTestMojo, ExperimentalRenderer> helper_; }; class FakeWebNNContext : public blink_mojom::WebNNContext { @@ -99,18 +100,18 @@ // Override methods from webnn::mojom::WebNNContext. void CreateGraph(blink_mojom::GraphInfoPtr graph_info, CreateGraphCallback callback) override { - helper_.SetGraphInfo(std::move(graph_info)); + helper_->SetGraphInfo(std::move(graph_info)); mojo::PendingRemote<blink_mojom::WebNNGraph> blink_remote; // The receiver bind to FakeWebNNGraph. mojo::MakeSelfOwnedReceiver<blink_mojom::WebNNGraph>( - std::make_unique<FakeWebNNGraph>(helper_), + std::make_unique<FakeWebNNGraph>(*helper_), blink_remote.InitWithNewPipeAndPassReceiver()); std::move(callback).Run(blink_mojom::CreateGraphResult::NewGraphRemote( std::move(blink_remote))); } - MLGraphTestMojo& helper_; + const raw_ref<MLGraphTestMojo, ExperimentalRenderer> helper_; }; class FakeWebNNContextProvider : public blink_mojom::WebNNContextProvider { @@ -140,14 +141,14 @@ mojo::PendingRemote<blink_mojom::WebNNContext> blink_remote; // The receiver bind to FakeWebNNContext. mojo::MakeSelfOwnedReceiver<blink_mojom::WebNNContext>( - std::make_unique<FakeWebNNContext>(helper_), + std::make_unique<FakeWebNNContext>(*helper_), blink_remote.InitWithNewPipeAndPassReceiver()); std::move(callback).Run(blink_mojom::CreateContextResult::NewContextRemote( std::move(blink_remote))); } - MLGraphTestMojo& helper_; + const raw_ref<MLGraphTestMojo, ExperimentalRenderer> helper_; mojo::Receiver<blink_mojom::WebNNContextProvider> receiver_; }; @@ -159,7 +160,7 @@ std::make_unique<FakeWebNNContextProvider>(helper)), interface_broker_( scope.GetExecutionContext()->GetBrowserInterfaceBroker()) { - interface_broker_.SetBinderForTesting( + interface_broker_->SetBinderForTesting( blink_mojom::WebNNContextProvider::Name_, WTF::BindRepeating( &FakeWebNNContextProvider::BindRequest, @@ -167,7 +168,7 @@ } ~ScopedWebNNServiceBinder() { - interface_broker_.SetBinderForTesting( + interface_broker_->SetBinderForTesting( blink_mojom::WebNNContextProvider::Name_, base::NullCallback()); } @@ -177,7 +178,8 @@ private: std::unique_ptr<FakeWebNNContextProvider> fake_webnn_context_provider_; - const BrowserInterfaceBrokerProxy& interface_broker_; + const raw_ref<const BrowserInterfaceBrokerProxy, ExperimentalRenderer> + interface_broker_; }; MLGraphMojo* ToMLGraphMojo(V8TestingScope* scope, ScriptValue value) {
diff --git a/third_party/blink/renderer/modules/payments/on_payment_response_test.cc b/third_party/blink/renderer/modules/payments/on_payment_response_test.cc index f8421cc..42a64e0f 100644 --- a/third_party/blink/renderer/modules/payments/on_payment_response_test.cc +++ b/third_party/blink/renderer/modules/payments/on_payment_response_test.cc
@@ -6,6 +6,7 @@ #include <utility> +#include "base/memory/raw_ptr.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/mojom/frame/user_activation_notification_type.mojom-blink.h" #include "third_party/blink/renderer/bindings/core/v8/script_function.h" @@ -406,7 +407,7 @@ } private: - ScriptValue* const value_; + const raw_ptr<ScriptValue, ExperimentalRenderer> value_; }; // If the merchant requests shipping information, the resolved show() promise
diff --git a/third_party/blink/renderer/modules/payments/payment_instruments.cc b/third_party/blink/renderer/modules/payments/payment_instruments.cc index 38c0b5a..bafbbba7 100644 --- a/third_party/blink/renderer/modules/payments/payment_instruments.cc +++ b/third_party/blink/renderer/modules/payments/payment_instruments.cc
@@ -110,7 +110,7 @@ if (!AllowedToUsePaymentFeatures(script_state)) return RejectNotAllowedToUsePaymentFeatures(script_state, exception_state); - if (!manager_.is_bound()) { + if (!manager_->is_bound()) { exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError, kPaymentManagerUnavailable); return ScriptPromise(); @@ -120,7 +120,7 @@ script_state, exception_state.GetContext()); ScriptPromise promise = resolver->Promise(); - manager_->DeletePaymentInstrument( + (*manager_)->DeletePaymentInstrument( instrument_key, WTF::BindOnce(&PaymentInstruments::onDeletePaymentInstrument, WrapPersistent(this), WrapPersistent(resolver))); @@ -133,7 +133,7 @@ if (!AllowedToUsePaymentFeatures(script_state)) return RejectNotAllowedToUsePaymentFeatures(script_state, exception_state); - if (!manager_.is_bound()) { + if (!manager_->is_bound()) { exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError, kPaymentManagerUnavailable); return ScriptPromise(); @@ -143,7 +143,7 @@ script_state, exception_state.GetContext()); ScriptPromise promise = resolver->Promise(); - manager_->GetPaymentInstrument( + (*manager_)->GetPaymentInstrument( instrument_key, WTF::BindOnce(&PaymentInstruments::onGetPaymentInstrument, WrapPersistent(this), WrapPersistent(resolver))); @@ -155,7 +155,7 @@ if (!AllowedToUsePaymentFeatures(script_state)) return RejectNotAllowedToUsePaymentFeatures(script_state, exception_state); - if (!manager_.is_bound()) { + if (!manager_->is_bound()) { exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError, kPaymentManagerUnavailable); return ScriptPromise(); @@ -165,7 +165,7 @@ script_state, exception_state.GetContext()); ScriptPromise promise = resolver->Promise(); - manager_->KeysOfPaymentInstruments( + (*manager_)->KeysOfPaymentInstruments( WTF::BindOnce(&PaymentInstruments::onKeysOfPaymentInstruments, WrapPersistent(this), WrapPersistent(resolver))); return promise; @@ -177,7 +177,7 @@ if (!AllowedToUsePaymentFeatures(script_state)) return RejectNotAllowedToUsePaymentFeatures(script_state, exception_state); - if (!manager_.is_bound()) { + if (!manager_->is_bound()) { exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError, kPaymentManagerUnavailable); return ScriptPromise(); @@ -187,7 +187,7 @@ script_state, exception_state.GetContext()); ScriptPromise promise = resolver->Promise(); - manager_->HasPaymentInstrument( + (*manager_)->HasPaymentInstrument( instrument_key, WTF::BindOnce(&PaymentInstruments::onHasPaymentInstrument, WrapPersistent(this), WrapPersistent(resolver))); @@ -201,7 +201,7 @@ if (!AllowedToUsePaymentFeatures(script_state)) return RejectNotAllowedToUsePaymentFeatures(script_state, exception_state); - if (!manager_.is_bound()) { + if (!manager_->is_bound()) { exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError, kPaymentManagerUnavailable); return ScriptPromise(); @@ -236,7 +236,7 @@ if (!AllowedToUsePaymentFeatures(script_state)) return RejectNotAllowedToUsePaymentFeatures(script_state, exception_state); - if (!manager_.is_bound()) { + if (!manager_->is_bound()) { exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError, kPaymentManagerUnavailable); return ScriptPromise(); @@ -246,7 +246,7 @@ script_state, exception_state.GetContext()); ScriptPromise promise = resolver->Promise(); - manager_->ClearPaymentInstruments( + (*manager_)->ClearPaymentInstruments( WTF::BindOnce(&PaymentInstruments::onClearPaymentInstruments, WrapPersistent(this), WrapPersistent(resolver))); return promise; @@ -328,7 +328,7 @@ UseCounter::Count(resolver->GetExecutionContext(), WebFeature::kPaymentHandler); - manager_->SetPaymentInstrument( + (*manager_)->SetPaymentInstrument( instrument_key, std::move(instrument), WTF::BindOnce(&PaymentInstruments::onSetPaymentInstrument, WrapPersistent(this), WrapPersistent(resolver)));
diff --git a/third_party/blink/renderer/modules/payments/payment_instruments.h b/third_party/blink/renderer/modules/payments/payment_instruments.h index a90cb375..f9feca4 100644 --- a/third_party/blink/renderer/modules/payments/payment_instruments.h +++ b/third_party/blink/renderer/modules/payments/payment_instruments.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_PAYMENTS_PAYMENT_INSTRUMENTS_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_PAYMENTS_PAYMENT_INSTRUMENTS_H_ +#include "base/memory/raw_ref.h" #include "third_party/blink/public/mojom/payments/payment_app.mojom-blink.h" #include "third_party/blink/public/mojom/permissions/permission.mojom-blink.h" #include "third_party/blink/renderer/core/execution_context/execution_context.h" @@ -73,7 +74,9 @@ void onClearPaymentInstruments(ScriptPromiseResolver*, payments::mojom::blink::PaymentHandlerStatus); - const HeapMojoRemote<payments::mojom::blink::PaymentManager>& manager_; + const raw_ref<const HeapMojoRemote<payments::mojom::blink::PaymentManager>, + ExperimentalRenderer> + manager_; HeapMojoRemote<mojom::blink::PermissionService> permission_service_; };
diff --git a/third_party/blink/renderer/modules/peerconnection/adapters/dtls_transport_proxy.h b/third_party/blink/renderer/modules/peerconnection/adapters/dtls_transport_proxy.h index ab08a5c..b34cdab 100644 --- a/third_party/blink/renderer/modules/peerconnection/adapters/dtls_transport_proxy.h +++ b/third_party/blink/renderer/modules/peerconnection/adapters/dtls_transport_proxy.h
@@ -4,6 +4,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_PEERCONNECTION_ADAPTERS_DTLS_TRANSPORT_PROXY_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_PEERCONNECTION_ADAPTERS_DTLS_TRANSPORT_PROXY_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/task/single_thread_task_runner.h" #include "third_party/blink/renderer/platform/heap/cross_thread_handle.h" @@ -67,7 +68,7 @@ const scoped_refptr<base::SingleThreadTaskRunner> proxy_thread_; const scoped_refptr<base::SingleThreadTaskRunner> host_thread_; - webrtc::DtlsTransportInterface* dtls_transport_; + raw_ptr<webrtc::DtlsTransportInterface, ExperimentalRenderer> dtls_transport_; CrossThreadHandle<Delegate> delegate_; };
diff --git a/third_party/blink/renderer/modules/peerconnection/adapters/ice_transport_adapter_impl.h b/third_party/blink/renderer/modules/peerconnection/adapters/ice_transport_adapter_impl.h index 0cc354e..06ee6b4 100644 --- a/third_party/blink/renderer/modules/peerconnection/adapters/ice_transport_adapter_impl.h +++ b/third_party/blink/renderer/modules/peerconnection/adapters/ice_transport_adapter_impl.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_PEERCONNECTION_ADAPTERS_ICE_TRANSPORT_ADAPTER_IMPL_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_PEERCONNECTION_ADAPTERS_ICE_TRANSPORT_ADAPTER_IMPL_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/public/platform/web_vector.h" #include "third_party/blink/renderer/modules/peerconnection/adapters/ice_transport_adapter.h" #include "third_party/webrtc/api/ice_transport_interface.h" @@ -51,7 +52,7 @@ absl::optional<rtc::NetworkRoute> new_network_route); void OnRoleConflict(cricket::IceTransportInternal* transport); - Delegate* const delegate_; + const raw_ptr<Delegate, ExperimentalRenderer> delegate_; rtc::scoped_refptr<webrtc::IceTransportInterface> ice_transport_channel_; };
diff --git a/third_party/blink/renderer/modules/peerconnection/adapters/ice_transport_proxy.h b/third_party/blink/renderer/modules/peerconnection/adapters/ice_transport_proxy.h index 08602fc..e866dcf 100644 --- a/third_party/blink/renderer/modules/peerconnection/adapters/ice_transport_proxy.h +++ b/third_party/blink/renderer/modules/peerconnection/adapters/ice_transport_proxy.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_PEERCONNECTION_ADAPTERS_ICE_TRANSPORT_PROXY_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_PEERCONNECTION_ADAPTERS_ICE_TRANSPORT_PROXY_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" @@ -88,7 +89,7 @@ // Since the Host is deleted on the host thread (via OnTaskRunnerDeleter), as // long as this is alive it is safe to post tasks to it (using unretained). std::unique_ptr<IceTransportHost, base::OnTaskRunnerDeleter> host_; - Delegate* const delegate_; + const raw_ptr<Delegate, ExperimentalRenderer> delegate_; // This handle notifies scheduler about an active connection associated // with a frame. Handle should be destroyed when connection is closed.
diff --git a/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source.cc b/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source.cc index 423e101..aa6f595 100644 --- a/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source.cc +++ b/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source.cc
@@ -9,6 +9,7 @@ #include "base/functional/callback_helpers.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/task/sequenced_task_runner.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" @@ -119,7 +120,7 @@ absl::optional<base::TimeTicks> start_timestamp_; // WebRTC real time clock, needed to determine NTP offset. - webrtc::Clock* clock_; + raw_ptr<webrtc::Clock, ExperimentalRenderer> clock_; // Offset between NTP clock and WebRTC clock. const int64_t ntp_offset_;
diff --git a/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source_test.cc b/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source_test.cc index c641660f..0275e2cf 100644 --- a/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source_test.cc +++ b/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source_test.cc
@@ -9,6 +9,7 @@ #include "base/functional/bind.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/synchronization/waitable_event.h" #include "base/task/single_thread_task_runner.h" @@ -177,7 +178,8 @@ scoped_refptr<webrtc::VideoTrackSourceInterface> webrtc_video_source_; scoped_refptr<webrtc::VideoTrackInterface> webrtc_video_track_; // |remote_source_| is owned by |source_|. - MediaStreamRemoteVideoSourceUnderTest* remote_source_ = nullptr; + raw_ptr<MediaStreamRemoteVideoSourceUnderTest, ExperimentalRenderer> + remote_source_ = nullptr; Persistent<MediaStreamSource> source_; int number_of_successful_track_starts_ = 0; int number_of_failed_track_starts_ = 0;
diff --git a/third_party/blink/renderer/modules/peerconnection/media_stream_track_metrics.cc b/third_party/blink/renderer/modules/peerconnection/media_stream_track_metrics.cc index f041aec..3d19044 100644 --- a/third_party/blink/renderer/modules/peerconnection/media_stream_track_metrics.cc +++ b/third_party/blink/renderer/modules/peerconnection/media_stream_track_metrics.cc
@@ -9,6 +9,7 @@ #include <string> #include "base/hash/md5.h" +#include "base/memory/raw_ptr.h" #include "base/ranges/algorithm.h" #include "base/strings/stringprintf.h" #include "base/threading/thread_checker.h" @@ -54,7 +55,7 @@ std::string track_id_; // Non-owning. - MediaStreamTrackMetrics* owner_; + raw_ptr<MediaStreamTrackMetrics, ExperimentalRenderer> owner_; base::ThreadChecker thread_checker_; };
diff --git a/third_party/blink/renderer/modules/peerconnection/mock_data_channel_impl.h b/third_party/blink/renderer/modules/peerconnection/mock_data_channel_impl.h index 95cd9f3..3042c8a 100644 --- a/third_party/blink/renderer/modules/peerconnection/mock_data_channel_impl.h +++ b/third_party/blink/renderer/modules/peerconnection/mock_data_channel_impl.h
@@ -9,6 +9,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "third_party/webrtc/api/peer_connection_interface.h" namespace blink { @@ -54,7 +55,7 @@ bool reliable_; webrtc::DataChannelInterface::DataState state_; webrtc::DataChannelInit config_; - webrtc::DataChannelObserver* observer_; + raw_ptr<webrtc::DataChannelObserver, ExperimentalRenderer> observer_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_dependency_factory.h b/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_dependency_factory.h index 2543cef..88ed415c 100644 --- a/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_dependency_factory.h +++ b/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_dependency_factory.h
@@ -7,6 +7,7 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.h" #include "third_party/blink/renderer/platform/wtf/hash_set.h" #include "third_party/webrtc/api/media_stream_interface.h" @@ -124,7 +125,8 @@ bool enabled_; TrackState state_; ObserverSet observers_; - rtc::VideoSinkInterface<webrtc::VideoFrame>* sink_; + raw_ptr<rtc::VideoSinkInterface<webrtc::VideoFrame>, ExperimentalRenderer> + sink_; }; class MockMediaStream : public webrtc::MediaStreamInterface {
diff --git a/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_impl.cc b/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_impl.cc index d0fb6c0..bb7c5fb 100644 --- a/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_impl.cc +++ b/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_impl.cc
@@ -11,6 +11,7 @@ #include "base/check_op.h" #include "base/containers/contains.h" +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "base/ranges/algorithm.h" #include "third_party/blink/renderer/modules/peerconnection/mock_data_channel_impl.h" @@ -110,7 +111,8 @@ int inter_tone_gap() const override { return inter_tone_gap_; } private: - DtmfSenderObserverInterface* observer_ = nullptr; + raw_ptr<DtmfSenderObserverInterface, ExperimentalRenderer> observer_ = + nullptr; std::string tones_; int duration_ = 0; int inter_tone_gap_ = 0;
diff --git a/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_impl.h b/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_impl.h index f8f82a80..76bd43a 100644 --- a/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_impl.h +++ b/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_impl.h
@@ -8,6 +8,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "testing/gmock/include/gmock/gmock.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -343,7 +344,7 @@ std::string sdp_mid_; int sdp_mline_index_; std::string ice_sdp_; - webrtc::PeerConnectionObserver* observer_; + raw_ptr<webrtc::PeerConnectionObserver, ExperimentalRenderer> observer_; webrtc::RTCErrorType setconfiguration_error_type_ = webrtc::RTCErrorType::NONE; rtc::scoped_refptr<webrtc::RTCStatsReport> stats_report_;
diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc index 1cb3c21..9a1a271c 100644 --- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc +++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
@@ -16,6 +16,7 @@ #include "base/functional/callback_helpers.h" #include "base/location.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/field_trial_params.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" @@ -164,7 +165,7 @@ } private: - IpcPacketSocketFactory* ipc_psf_; + raw_ptr<IpcPacketSocketFactory, ExperimentalRenderer> ipc_psf_; }; std::string WorkerThreadName() {
diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.h b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.h index cafdfac9..a4200ef4 100644 --- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.h +++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_MODULES_PEERCONNECTION_PEER_CONNECTION_DEPENDENCY_FACTORY_H_ #include "base/feature_list.h" +#include "base/memory/raw_ptr.h" #include "base/task/sequenced_task_runner.h" #include "base/task/single_thread_task_runner.h" #include "base/threading/thread.h" @@ -204,7 +205,8 @@ scoped_refptr<blink::WebRtcAudioDeviceImpl> audio_device_; - media::GpuVideoAcceleratorFactories* gpu_factories_; + raw_ptr<media::GpuVideoAcceleratorFactories, ExperimentalRenderer> + gpu_factories_; GC_PLUGIN_IGNORE("https://crbug.com/1381979") WebrtcVideoPerfReporter webrtc_video_perf_reporter_;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_test.cc b/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_test.cc index a6ae6fc..67f302c 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_test.cc +++ b/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_test.cc
@@ -9,6 +9,7 @@ #include <utility> #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/run_loop.h" #include "base/task/single_thread_task_runner.h" @@ -235,7 +236,7 @@ // Accessed on signaling thread. uint64_t buffered_amount_; - webrtc::DataChannelObserver* observer_; + raw_ptr<webrtc::DataChannelObserver, ExperimentalRenderer> observer_; webrtc::DataChannelInterface::DataState state_; };
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.h b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.h index d74d75b..da25dba 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.h +++ b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler.h
@@ -12,6 +12,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" @@ -439,7 +440,7 @@ // references on the signaling thread during GC. scoped_refptr<base::SingleThreadTaskRunner> signaling_thread_; - blink::WebLocalFrame* frame_ = nullptr; + raw_ptr<blink::WebLocalFrame, ExperimentalRenderer> frame_ = nullptr; // Map and owners of track adapters. Every track that is in use by the peer // connection has an associated blink and webrtc layer representation of it.
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler_test.cc b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler_test.cc index f8838ab0..3d31847 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler_test.cc +++ b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_handler_test.cc
@@ -18,6 +18,7 @@ #include "base/functional/callback_helpers.h" #include "base/location.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/synchronization/waitable_event.h" #include "base/task/single_thread_task_runner.h" @@ -610,7 +611,8 @@ std::unique_ptr<RTCPeerConnectionHandlerUnderTest> pc_handler_; // Weak reference to the mocked native peer connection implementation. - blink::MockPeerConnectionImpl* mock_peer_connection_; + raw_ptr<blink::MockPeerConnectionImpl, ExperimentalRenderer> + mock_peer_connection_; std::vector<std::unique_ptr<blink::RTCRtpSenderImpl>> senders_; std::map<webrtc::MediaStreamTrackInterface*,
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_sctp_transport_test.cc b/third_party/blink/renderer/modules/peerconnection/rtc_sctp_transport_test.cc index df58363..1e80e76 100644 --- a/third_party/blink/renderer/modules/peerconnection/rtc_sctp_transport_test.cc +++ b/third_party/blink/renderer/modules/peerconnection/rtc_sctp_transport_test.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/modules/peerconnection/rtc_sctp_transport.h" +#include "base/memory/raw_ptr.h" #include "base/test/test_simple_task_runner.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -54,7 +55,8 @@ private: webrtc::SctpTransportInformation info_ = webrtc::SctpTransportInformation(webrtc::SctpTransportState::kNew); - webrtc::SctpTransportObserverInterface* observer_ = nullptr; + raw_ptr<webrtc::SctpTransportObserverInterface, ExperimentalRenderer> + observer_ = nullptr; }; class RTCSctpTransportTest : public testing::Test {
diff --git a/third_party/blink/renderer/modules/peerconnection/thermal_resource.h b/third_party/blink/renderer/modules/peerconnection/thermal_resource.h index 325f4707..30ae5d1 100644 --- a/third_party/blink/renderer/modules/peerconnection/thermal_resource.h +++ b/third_party/blink/renderer/modules/peerconnection/thermal_resource.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_MODULES_PEERCONNECTION_THERMAL_RESOURCE_H_ #include "base/feature_list.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/synchronization/lock.h" #include "base/task/sequenced_task_runner.h" @@ -60,7 +61,8 @@ const scoped_refptr<base::SequencedTaskRunner> task_runner_; base::Lock lock_; - webrtc::ResourceListener* listener_ GUARDED_BY(&lock_) = nullptr; + raw_ptr<webrtc::ResourceListener, ExperimentalRenderer> listener_ + GUARDED_BY(&lock_) = nullptr; mojom::blink::DeviceThermalState measurement_ GUARDED_BY(&lock_) = mojom::blink::DeviceThermalState::kUnknown; size_t measurement_id_ GUARDED_BY(&lock_) = 0u;
diff --git a/third_party/blink/renderer/modules/peerconnection/webrtc_audio_renderer_test.cc b/third_party/blink/renderer/modules/peerconnection/webrtc_audio_renderer_test.cc index 533d40e..165b9dad 100644 --- a/third_party/blink/renderer/modules/peerconnection/webrtc_audio_renderer_test.cc +++ b/third_party/blink/renderer/modules/peerconnection/webrtc_audio_renderer_test.cc
@@ -10,6 +10,7 @@ #include "base/cfi_buildflags.h" #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/time/time.h" #include "build/build_config.h" @@ -180,7 +181,7 @@ EXPECT_CALL( *audio_device_factory_platform_, MockNewAudioRendererSink(blink::WebAudioDeviceSourceType::kWebRtc, - web_local_frame_, _)) + web_local_frame_.get(), _)) .Times(testing::AtLeast(1)) .WillRepeatedly(DoAll(SaveArg<2>(¶ms), InvokeWithoutArgs([&]() { EXPECT_EQ(params.device_id, device_id.Utf8()); @@ -238,9 +239,9 @@ Persistent<MediaStreamDescriptor> stream_descriptor_; std::unique_ptr<blink::scheduler::WebAgentGroupScheduler> agent_group_scheduler_; - WebView* web_view_ = nullptr; + raw_ptr<WebView, ExperimentalRenderer> web_view_ = nullptr; WebLocalFrameClient web_local_frame_client_; - WebLocalFrame* web_local_frame_ = nullptr; + raw_ptr<WebLocalFrame, ExperimentalRenderer> web_local_frame_ = nullptr; scoped_refptr<blink::WebRtcAudioRenderer> renderer_; scoped_refptr<blink::WebMediaStreamAudioRenderer> renderer_proxy_; };
diff --git a/third_party/blink/renderer/modules/presentation/presentation_availability_state.h b/third_party/blink/renderer/modules/presentation/presentation_availability_state.h index a90273d..f0967c9 100644 --- a/third_party/blink/renderer/modules/presentation/presentation_availability_state.h +++ b/third_party/blink/renderer/modules/presentation/presentation_availability_state.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "third_party/blink/public/mojom/presentation/presentation.mojom-blink.h" #include "third_party/blink/renderer/modules/modules_export.h" #include "third_party/blink/renderer/modules/presentation/presentation_availability_callbacks.h" @@ -129,7 +130,8 @@ HeapVector<Member<AvailabilityListener>> availability_listeners_; // A pointer to PresentationService owned by PresentationController. - mojom::blink::PresentationService* const presentation_service_; + const raw_ptr<mojom::blink::PresentationService, ExperimentalRenderer> + presentation_service_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/scheduler/task_attribution_tracker_impl.h b/third_party/blink/renderer/modules/scheduler/task_attribution_tracker_impl.h index 00dc588..bafb619 100644 --- a/third_party/blink/renderer/modules/scheduler/task_attribution_tracker_impl.h +++ b/third_party/blink/renderer/modules/scheduler/task_attribution_tracker_impl.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_MODULES_SCHEDULER_TASK_ATTRIBUTION_TRACKER_IMPL_H_ #include "base/containers/contains.h" +#include "base/memory/raw_ptr.h" #include "third_party/blink/public/common/scheduler/task_attribution_id.h" #include "third_party/blink/renderer/modules/modules_export.h" #include "third_party/blink/renderer/platform/heap/collection_support/heap_hash_set.h" @@ -134,7 +135,7 @@ ScriptState* GetScriptState() const { return script_state_; } private: - TaskAttributionTrackerImpl* task_tracker_; + raw_ptr<TaskAttributionTrackerImpl, ExperimentalRenderer> task_tracker_; TaskAttributionId scope_task_id_; Persistent<TaskAttributionInfo> running_task_to_be_restored_; Persistent<ScriptWrappableTaskState> continuation_state_to_be_restored_;
diff --git a/third_party/blink/renderer/modules/screen_orientation/screen_orientation_controller_test.cc b/third_party/blink/renderer/modules/screen_orientation/screen_orientation_controller_test.cc index 07c80ef..0850839 100644 --- a/third_party/blink/renderer/modules/screen_orientation/screen_orientation_controller_test.cc +++ b/third_party/blink/renderer/modules/screen_orientation/screen_orientation_controller_test.cc
@@ -7,6 +7,7 @@ #include <memory> #include <tuple> +#include "base/memory/raw_ptr.h" #include "mojo/public/cpp/bindings/associated_remote.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/web/web_local_frame.h" @@ -56,7 +57,7 @@ } private: - LockOrientationResultHolder* results_; + raw_ptr<LockOrientationResultHolder, ExperimentalRenderer> results_; }; class ScreenOrientationControllerTest : public PageTestBase {
diff --git a/third_party/blink/renderer/modules/service_worker/navigation_preload_request.h b/third_party/blink/renderer/modules/service_worker/navigation_preload_request.h index 9da8cd2..8d84a78 100644 --- a/third_party/blink/renderer/modules/service_worker/navigation_preload_request.h +++ b/third_party/blink/renderer/modules/service_worker/navigation_preload_request.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/system/data_pipe.h" @@ -59,7 +60,7 @@ void ReportErrorToOwner(const WebString& message, WebServiceWorkerError::Mode error_mode); - WebServiceWorkerContextClient* owner_ = nullptr; + raw_ptr<WebServiceWorkerContextClient, ExperimentalRenderer> owner_ = nullptr; const int fetch_event_id_ = -1; const WebURL url_;
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_container_test.cc b/third_party/blink/renderer/modules/service_worker/service_worker_container_test.cc index aa8393e..cef3ecf9 100644 --- a/third_party/blink/renderer/modules/service_worker/service_worker_container_test.cc +++ b/third_party/blink/renderer/modules/service_worker/service_worker_container_test.cc
@@ -7,6 +7,7 @@ #include <memory> #include <utility> +#include "base/memory/raw_ref.h" #include "base/test/bind.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/mojom/script/script_type.mojom-blink.h" @@ -66,12 +67,12 @@ explicit ScriptFunctionImpl(StubScriptFunction& owner) : owner_(owner) {} ScriptValue Call(ScriptState*, ScriptValue arg) override { - owner_.arg_ = arg; - owner_.call_count_++; + owner_->arg_ = arg; + owner_->call_count_++; return ScriptValue(); } - StubScriptFunction& owner_; + const raw_ref<StubScriptFunction, ExperimentalRenderer> owner_; }; }; @@ -312,11 +313,11 @@ const WebFetchClientSettingsObject& fetch_client_settings_object, std::unique_ptr<WebServiceWorkerRegistrationCallbacks> callbacks) override { - owner_.register_call_count_++; - owner_.register_scope_ = scope; - owner_.register_script_url_ = script_url; - owner_.script_type_ = script_type; - owner_.update_via_cache_ = update_via_cache; + owner_->register_call_count_++; + owner_->register_scope_ = scope; + owner_->register_script_url_ = script_url; + owner_->script_type_ = script_type; + owner_->update_via_cache_ = update_via_cache; registration_callbacks_to_delete_.push_back(std::move(callbacks)); } @@ -324,8 +325,8 @@ const WebURL& document_url, std::unique_ptr<WebServiceWorkerGetRegistrationCallbacks> callbacks) override { - owner_.get_registration_call_count_++; - owner_.get_registration_url_ = document_url; + owner_->get_registration_call_count_++; + owner_->get_registration_url_ = document_url; get_registration_callbacks_to_delete_.push_back(std::move(callbacks)); } @@ -336,7 +337,7 @@ } private: - StubWebServiceWorkerProvider& owner_; + const raw_ref<StubWebServiceWorkerProvider, ExperimentalRenderer> owner_; Vector<std::unique_ptr<WebServiceWorkerRegistrationCallbacks>> registration_callbacks_to_delete_; Vector<std::unique_ptr<WebServiceWorkerGetRegistrationCallbacks>>
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_event_queue.h b/third_party/blink/renderer/modules/service_worker/service_worker_event_queue.h index 0eb829e7..30ebe95d 100644 --- a/third_party/blink/renderer/modules/service_worker/service_worker_event_queue.h +++ b/third_party/blink/renderer/modules/service_worker/service_worker_event_queue.h
@@ -8,6 +8,7 @@ #include <set> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/sequenced_task_runner.h" #include "base/time/time.h" @@ -303,7 +304,7 @@ bool is_ready_for_processing_events_ = false; // |tick_clock_| outlives |this|. - const base::TickClock* const tick_clock_; + const raw_ptr<const base::TickClock, ExperimentalRenderer> tick_clock_; // Monotonically increasing number. Event id should not start from zero since // HashMap in Blink requires non-zero keys.
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h index 0ef79d6..46c431b 100644 --- a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h +++ b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h
@@ -32,6 +32,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "mojo/public/cpp/bindings/associated_remote.h" #include "mojo/public/cpp/bindings/pending_associated_remote.h" @@ -627,7 +628,7 @@ Member<::blink::ServiceWorker> service_worker_; // Registry of interfaces exposed to the browser from Service Workers. - InterfaceRegistry* const interface_registry_; + const raw_ptr<InterfaceRegistry, ExperimentalRenderer> interface_registry_; // Map from service worker version id to JavaScript ServiceWorker object in // current execution context.
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope_proxy.cc b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope_proxy.cc index 8606f4c2..4b50a7a 100644 --- a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope_proxy.cc +++ b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope_proxy.cc
@@ -212,7 +212,7 @@ PostCrossThreadTask( *parent_thread_default_task_runner_, FROM_HERE, CrossThreadBindOnce(&WebEmbeddedWorkerImpl::TerminateWorkerContext, - CrossThreadUnretained(embedded_worker_))); + CrossThreadUnretained(embedded_worker_.get()))); // NOTE: WorkerThread calls WillDestroyWorkerGlobalScope() synchronously after // this function returns, since it calls DidCloseWorkerGlobalScope() then
diff --git a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope_proxy.h b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope_proxy.h index fe2b0cf..5828b33 100644 --- a/third_party/blink/renderer/modules/service_worker/service_worker_global_scope_proxy.h +++ b/third_party/blink/renderer/modules/service_worker/service_worker_global_scope_proxy.h
@@ -33,6 +33,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/threading/thread_checker.h" #include "base/time/time.h" @@ -161,12 +162,12 @@ // Non-null until the WebEmbeddedWorkerImpl explicitly detach()es // as part of its finalization. - WebEmbeddedWorkerImpl* embedded_worker_; + raw_ptr<WebEmbeddedWorkerImpl, ExperimentalRenderer> embedded_worker_; scoped_refptr<base::SingleThreadTaskRunner> parent_thread_default_task_runner_; - WebServiceWorkerContextClient* client_; + raw_ptr<WebServiceWorkerContextClient, ExperimentalRenderer> client_; CrossThreadPersistent<ServiceWorkerGlobalScope> worker_global_scope_;
diff --git a/third_party/blink/renderer/modules/service_worker/web_service_worker_fetch_context_impl.h b/third_party/blink/renderer/modules/service_worker/web_service_worker_fetch_context_impl.h index 8c84603e8..b74ee6b 100644 --- a/third_party/blink/renderer/modules/service_worker/web_service_worker_fetch_context_impl.h +++ b/third_party/blink/renderer/modules/service_worker/web_service_worker_fetch_context_impl.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_SERVICE_WORKER_WEB_SERVICE_WORKER_FETCH_CONTEXT_IMPL_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_SERVICE_WORKER_WEB_SERVICE_WORKER_FETCH_CONTEXT_IMPL_H_ +#include "base/memory/raw_ptr.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/receiver.h" #include "third_party/blink/public/common/renderer_preferences/renderer_preferences.h" @@ -131,9 +132,11 @@ pending_subresource_loader_updater_; // This is owned by ThreadedMessagingProxyBase on the main thread. - base::WaitableEvent* terminate_sync_load_event_ = nullptr; + raw_ptr<base::WaitableEvent, ExperimentalRenderer> + terminate_sync_load_event_ = nullptr; - AcceptLanguagesWatcher* accept_languages_watcher_ = nullptr; + raw_ptr<AcceptLanguagesWatcher, ExperimentalRenderer> + accept_languages_watcher_ = nullptr; Vector<String> cors_exempt_header_list_; bool is_offline_mode_ = false;
diff --git a/third_party/blink/renderer/modules/storage/storage_namespace.h b/third_party/blink/renderer/modules/storage/storage_namespace.h index e4d7764b..be45a87a 100644 --- a/third_party/blink/renderer/modules/storage/storage_namespace.h +++ b/third_party/blink/renderer/modules/storage/storage_namespace.h
@@ -26,6 +26,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_STORAGE_STORAGE_NAMESPACE_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_STORAGE_STORAGE_NAMESPACE_H_ +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "third_party/blink/public/common/dom_storage/session_storage_namespace_id.h" @@ -126,7 +127,7 @@ HeapHashSet<WeakMember<InspectorDOMStorageAgent>> inspector_agents_; // Lives globally. - StorageController* controller_; + raw_ptr<StorageController, ExperimentalRenderer> controller_; String namespace_id_; scoped_refptr<base::SingleThreadTaskRunner> task_runner_; // `StorageNamespace` is a per-Page object and doesn't have any
diff --git a/third_party/blink/renderer/modules/video_rvfc/video_frame_callback_requester_impl_test.cc b/third_party/blink/renderer/modules/video_rvfc/video_frame_callback_requester_impl_test.cc index 8c710883..6374a98d 100644 --- a/third_party/blink/renderer/modules/video_rvfc/video_frame_callback_requester_impl_test.cc +++ b/third_party/blink/renderer/modules/video_rvfc/video_frame_callback_requester_impl_test.cc
@@ -3,6 +3,8 @@ // found in the LICENSE file. #include "third_party/blink/renderer/modules/video_rvfc/video_frame_callback_requester_impl.h" +#include "base/memory/raw_ptr.h" +#include "base/memory/raw_ref.h" #include "third_party/blink/renderer/core/page/page_animator.h" #include "base/time/time.h" @@ -150,12 +152,12 @@ double TicksToClampedMillisecondsF(base::TimeTicks ticks) { return Performance::ClampTimeResolution( - timing_.MonotonicTimeToZeroBasedDocumentTime(ticks), + timing_->MonotonicTimeToZeroBasedDocumentTime(ticks), /*cross_origin_isolated_capability_=*/false); } double TicksToMillisecondsF(base::TimeTicks ticks) { - return timing_.MonotonicTimeToZeroBasedDocumentTime(ticks) + return timing_->MonotonicTimeToZeroBasedDocumentTime(ticks) .InMillisecondsF(); } @@ -165,7 +167,7 @@ double now_; bool was_invoked_ = false; - DocumentLoadTiming& timing_; + const raw_ref<DocumentLoadTiming, ExperimentalRenderer> timing_; }; } // namespace @@ -223,7 +225,7 @@ Persistent<HTMLVideoElement> video_; // Owned by HTMLVideoElementFrameClient. - MockWebMediaPlayer* media_player_; + raw_ptr<MockWebMediaPlayer, ExperimentalRenderer> media_player_; }; class VideoFrameCallbackRequesterImplNullMediaPlayerTest
diff --git a/third_party/blink/renderer/modules/webaudio/audio_node_input.h b/third_party/blink/renderer/modules/webaudio/audio_node_input.h index c0c357a2..8852a06 100644 --- a/third_party/blink/renderer/modules/webaudio/audio_node_input.h +++ b/third_party/blink/renderer/modules/webaudio/audio_node_input.h
@@ -26,6 +26,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBAUDIO_AUDIO_NODE_INPUT_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBAUDIO_AUDIO_NODE_INPUT_H_ +#include "base/memory/raw_ref.h" #include "third_party/blink/renderer/modules/modules_export.h" #include "third_party/blink/renderer/modules/webaudio/audio_node.h" #include "third_party/blink/renderer/modules/webaudio/audio_summing_junction.h" @@ -56,7 +57,7 @@ void DidUpdate() override; // Can be called from any thread. - AudioHandler& Handler() const { return handler_; } + AudioHandler& Handler() const { return *handler_; } // pull() processes all of the AudioNodes connected to us. // In the case of multiple connections it sums the result into an internal @@ -84,7 +85,7 @@ private: // This reference is safe because the AudioHandler owns this AudioNodeInput // object. - AudioHandler& handler_; + const raw_ref<AudioHandler, ExperimentalRenderer> handler_; // m_disabledOutputs contains the AudioNodeOutputs which are disabled (will // not be processed) by the audio graph rendering. But, from JavaScript's
diff --git a/third_party/blink/renderer/modules/webaudio/audio_node_output.h b/third_party/blink/renderer/modules/webaudio/audio_node_output.h index 5256097..cf5c297 100644 --- a/third_party/blink/renderer/modules/webaudio/audio_node_output.h +++ b/third_party/blink/renderer/modules/webaudio/audio_node_output.h
@@ -26,6 +26,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBAUDIO_AUDIO_NODE_OUTPUT_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBAUDIO_AUDIO_NODE_OUTPUT_H_ +#include "base/memory/raw_ref.h" #include "base/memory/scoped_refptr.h" #include "third_party/blink/renderer/modules/modules_export.h" #include "third_party/blink/renderer/modules/webaudio/audio_node.h" @@ -91,14 +92,14 @@ private: // Can be called from any thread. - AudioHandler& Handler() const { return handler_; } + AudioHandler& Handler() const { return *handler_; } DeferredTaskHandler& GetDeferredTaskHandler() const { - return handler_.GetDeferredTaskHandler(); + return handler_->GetDeferredTaskHandler(); } // This reference is safe because the AudioHandler owns this AudioNodeOutput // object. - AudioHandler& handler_; + const raw_ref<AudioHandler, ExperimentalRenderer> handler_; // fanOutCount() is the number of AudioNodeInputs that we're connected to. // This method should not be called in audio thread rendering code, instead
diff --git a/third_party/blink/renderer/modules/webaudio/audio_node_wiring.cc b/third_party/blink/renderer/modules/webaudio/audio_node_wiring.cc index feabb8c..4e891ef 100644 --- a/third_party/blink/renderer/modules/webaudio/audio_node_wiring.cc +++ b/third_party/blink/renderer/modules/webaudio/audio_node_wiring.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/modules/webaudio/audio_node_wiring.h" +#include "base/memory/raw_ref.h" #include "third_party/blink/renderer/modules/webaudio/audio_node_input.h" #include "third_party/blink/renderer/modules/webaudio/audio_node_output.h" #include "third_party/blink/renderer/modules/webaudio/deferred_task_handler.h" @@ -16,7 +17,7 @@ using AudioNodeOutputSet = HashSet<AudioNodeOutput*>; struct FindOutputResult { - AudioNodeOutputSet& output_set; + const raw_ref<AudioNodeOutputSet, ExperimentalRenderer> output_set; AudioNodeOutputSet::const_iterator iterator; bool is_disabled; }; @@ -33,16 +34,16 @@ AudioNodeOutputSet& disabled_outputs) { auto it = outputs.find(&output); if (it != outputs.end()) { - return {outputs, it, false}; + return {raw_ref(outputs), it, false}; } it = disabled_outputs.find(&output); if (it != disabled_outputs.end()) { - return {disabled_outputs, it, true}; + return {raw_ref(disabled_outputs), it, true}; } NOTREACHED() << "The output must be connected to the input."; - return {outputs, {}, false}; + return {raw_ref(outputs), {}, false}; } } // namespace @@ -109,7 +110,7 @@ auto result = FindOutput(output, input.outputs_, input.disabled_outputs_); // Erase the pointers from both sets. - result.output_set.erase(result.iterator); + result.output_set->erase(result.iterator); output.inputs_.erase(&input); // If an active connection was disconnected, the input may need to have its
diff --git a/third_party/blink/renderer/modules/webaudio/audio_param_timeline.cc b/third_party/blink/renderer/modules/webaudio/audio_param_timeline.cc index e0ab185..c308764 100644 --- a/third_party/blink/renderer/modules/webaudio/audio_param_timeline.cc +++ b/third_party/blink/renderer/modules/webaudio/audio_param_timeline.cc
@@ -1673,7 +1673,7 @@ auto sample_rate = current_state.sample_rate; auto control_rate = current_state.control_rate; auto fill_to_end_frame = current_state.fill_to_end_frame; - auto* event = current_state.event; + auto* event = current_state.event.get(); // Exponential approach to target value with given time constant. // @@ -1784,7 +1784,7 @@ auto start_frame = current_state.start_frame; auto end_frame = current_state.end_frame; auto fill_to_end_frame = current_state.fill_to_end_frame; - auto* event = current_state.event; + auto* event = current_state.event.get(); const Vector<float> curve = event->Curve(); const float* curve_data = curve.data(); @@ -1976,7 +1976,7 @@ auto sample_rate = current_state.sample_rate; auto control_rate = current_state.control_rate; auto fill_to_end_frame = current_state.fill_to_end_frame; - auto* event = current_state.event; + auto* event = current_state.event.get(); auto event_index = current_state.event_index; // If the previous event was a SetTarget or ExponentialRamp
diff --git a/third_party/blink/renderer/modules/webaudio/audio_param_timeline.h b/third_party/blink/renderer/modules/webaudio/audio_param_timeline.h index 500b9330..51136dc3 100644 --- a/third_party/blink/renderer/modules/webaudio/audio_param_timeline.h +++ b/third_party/blink/renderer/modules/webaudio/audio_param_timeline.h
@@ -31,6 +31,7 @@ #include <tuple> +#include "base/memory/raw_ptr.h" #include "base/synchronization/lock.h" #include "third_party/blink/renderer/core/typed_arrays/dom_typed_array.h" #include "third_party/blink/renderer/modules/webaudio/audio_destination_node.h" @@ -297,7 +298,7 @@ const double time2; // The current event, and its index in the event vector. - const ParamEvent* event; + raw_ptr<const ParamEvent, ExperimentalRenderer> event; const int event_index; };
diff --git a/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope.h b/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope.h index 5d848d6..42a7574 100644 --- a/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope.h +++ b/third_party/blink/renderer/modules/webaudio/audio_worklet_global_scope.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBAUDIO_AUDIO_WORKLET_GLOBAL_SCOPE_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBAUDIO_AUDIO_WORKLET_GLOBAL_SCOPE_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/public/common/messaging/message_port_channel.h" #include "third_party/blink/public/common/tokens/tokens.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_audio_param_descriptor.h" @@ -134,7 +135,8 @@ // AudioWorkletObjectProxy manages the cross-thread messaging to // AudioWorkletMessagingProxy on the main thread. AudioWorkletObjectProxy // outlives AudioWorkletGlobalScope, this raw pointer is safe. - AudioWorkletObjectProxy* object_proxy_ = nullptr; + raw_ptr<AudioWorkletObjectProxy, ExperimentalRenderer> object_proxy_ = + nullptr; }; template <>
diff --git a/third_party/blink/renderer/modules/webaudio/base_audio_context.h b/third_party/blink/renderer/modules/webaudio/base_audio_context.h index b3a04147..eb44f58 100644 --- a/third_party/blink/renderer/modules/webaudio/base_audio_context.h +++ b/third_party/blink/renderer/modules/webaudio/base_audio_context.h
@@ -26,6 +26,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBAUDIO_BASE_AUDIO_CONTEXT_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBAUDIO_BASE_AUDIO_CONTEXT_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "third_party/blink/renderer/bindings/core/v8/active_script_wrappable.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise.h" @@ -439,7 +440,7 @@ // reference to the WorkerThread associated with the AudioWorkletGlobalScope. // This cannot be nullptr once it is assigned from AudioWorkletThread until // the BaseAudioContext goes away. - WorkerThread* audio_worklet_thread_ = nullptr; + raw_ptr<WorkerThread, ExperimentalRenderer> audio_worklet_thread_ = nullptr; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/webcodecs/reclaimable_codec.h b/third_party/blink/renderer/modules/webcodecs/reclaimable_codec.h index 3379fadf..22989698 100644 --- a/third_party/blink/renderer/modules/webcodecs/reclaimable_codec.h +++ b/third_party/blink/renderer/modules/webcodecs/reclaimable_codec.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/feature_list.h" +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.h" #include "third_party/blink/renderer/modules/modules_export.h" @@ -123,7 +124,7 @@ // Whether this codec is holding on to platform resources. bool is_applying_pressure_ = false; - const base::TickClock* tick_clock_; + raw_ptr<const base::TickClock, ExperimentalRenderer> tick_clock_; // Period of time after which a codec is considered to be inactive. base::TimeDelta inactivity_threshold_;
diff --git a/third_party/blink/renderer/modules/webcodecs/video_decoder_broker.cc b/third_party/blink/renderer/modules/webcodecs/video_decoder_broker.cc index bfa8f63a..5db189f6 100644 --- a/third_party/blink/renderer/modules/webcodecs/video_decoder_broker.cc +++ b/third_party/blink/renderer/modules/webcodecs/video_decoder_broker.cc
@@ -8,6 +8,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/sequenced_task_runner.h" #include "build/buildflag.h" @@ -323,7 +324,8 @@ base::WeakPtr<CrossThreadVideoDecoderClient> weak_client_; scoped_refptr<base::SequencedTaskRunner> media_task_runner_; scoped_refptr<base::SequencedTaskRunner> main_task_runner_; - media::GpuVideoAcceleratorFactories* gpu_factories_; + raw_ptr<media::GpuVideoAcceleratorFactories, ExperimentalRenderer> + gpu_factories_; std::unique_ptr<media::MediaLog> media_log_; mojo::Remote<media::mojom::InterfaceFactory> media_interface_factory_; std::unique_ptr<WebCodecsVideoDecoderSelector> selector_;
diff --git a/third_party/blink/renderer/modules/webdatabase/database_task.cc b/third_party/blink/renderer/modules/webdatabase/database_task.cc index ef8cdc9..1c0e7bc1 100644 --- a/third_party/blink/renderer/modules/webdatabase/database_task.cc +++ b/third_party/blink/renderer/modules/webdatabase/database_task.cc
@@ -105,10 +105,11 @@ void Database::DatabaseOpenTask::DoPerformTask() { String error_message; - success_ = GetDatabase()->PerformOpenAndVerify(set_version_in_new_database_, - error_, error_message); - if (!success_) - error_message_ = error_message; + *success_ = GetDatabase()->PerformOpenAndVerify(set_version_in_new_database_, + *error_, error_message); + if (!*success_) { + (*error_message_) = error_message; + } } #if DCHECK_IS_ON() @@ -180,7 +181,7 @@ } void Database::DatabaseTableNamesTask::DoPerformTask() { - table_names_ = GetDatabase()->PerformGetTableNames(); + (*table_names_) = GetDatabase()->PerformGetTableNames(); } #if DCHECK_IS_ON()
diff --git a/third_party/blink/renderer/modules/webdatabase/database_task.h b/third_party/blink/renderer/modules/webdatabase/database_task.h index 43a758f..bac0a51 100644 --- a/third_party/blink/renderer/modules/webdatabase/database_task.h +++ b/third_party/blink/renderer/modules/webdatabase/database_task.h
@@ -31,6 +31,8 @@ #include "base/dcheck_is_on.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" +#include "base/memory/raw_ref.h" #include "base/synchronization/waitable_event.h" #include "third_party/blink/renderer/modules/webdatabase/database.h" #include "third_party/blink/renderer/modules/webdatabase/database_basic_types.h" @@ -64,7 +66,7 @@ virtual void TaskCancelled() {} CrossThreadPersistent<Database> database_; - base::WaitableEvent* complete_event_; + raw_ptr<base::WaitableEvent, ExperimentalRenderer> complete_event_; #if DCHECK_IS_ON() virtual const char* DebugTaskName() const = 0; @@ -88,9 +90,9 @@ #endif bool set_version_in_new_database_; - DatabaseError& error_; - String& error_message_; - bool& success_; + const raw_ref<DatabaseError, ExperimentalRenderer> error_; + const raw_ref<String, ExperimentalRenderer> error_message_; + const raw_ref<bool, ExperimentalRenderer> success_; }; class Database::DatabaseCloseTask final : public DatabaseTask { @@ -134,7 +136,7 @@ const char* DebugTaskName() const override; #endif - Vector<String>& table_names_; + const raw_ref<Vector<String>, ExperimentalRenderer> table_names_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/webdatabase/database_thread.h b/third_party/blink/renderer/modules/webdatabase/database_thread.h index 669bd1d..014542e 100644 --- a/third_party/blink/renderer/modules/webdatabase/database_thread.h +++ b/third_party/blink/renderer/modules/webdatabase/database_thread.h
@@ -29,6 +29,7 @@ #define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBDATABASE_DATABASE_THREAD_H_ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/synchronization/lock.h" #include "base/synchronization/waitable_event.h" #include "base/thread_annotations.h" @@ -84,7 +85,7 @@ std::unique_ptr<SQLTransactionClient> transaction_client_; CrossThreadPersistent<SQLTransactionCoordinator> transaction_coordinator_; - base::WaitableEvent* cleanup_sync_; + raw_ptr<base::WaitableEvent, ExperimentalRenderer> cleanup_sync_; base::Lock termination_requested_lock_; bool termination_requested_ GUARDED_BY(termination_requested_lock_);
diff --git a/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_database.cc b/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_database.cc index 2dcf710..1bc0443 100644 --- a/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_database.cc +++ b/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_database.cc
@@ -103,7 +103,8 @@ // Defensive mode is a layer of defense in depth for applications that must // run SQL queries from an untrusted source, such as WebDatabase. Refuse to // proceed if this layer cannot be enabled. - open_error_ = sqlite3_db_config(db_, SQLITE_DBCONFIG_DEFENSIVE, 1, nullptr); + open_error_ = + sqlite3_db_config(db_.get(), SQLITE_DBCONFIG_DEFENSIVE, 1, nullptr); if (open_error_ != SQLITE_OK) { open_error_message_ = sqlite3_errmsg(db_); DLOG(ERROR) << "SQLite database error when enabling defensive mode - "
diff --git a/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_database.h b/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_database.h index 952bd33..accc38a5 100644 --- a/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_database.h +++ b/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_database.h
@@ -29,6 +29,7 @@ #include "base/check_op.h" #include "base/dcheck_is_on.h" +#include "base/memory/raw_ptr.h" #include "base/synchronization/lock.h" #include "base/thread_annotations.h" #include "build/build_config.h" @@ -135,7 +136,7 @@ int PageSize(); - sqlite3* db_ = nullptr; + raw_ptr<sqlite3, ExperimentalRenderer> db_ = nullptr; int page_size_ = -1; bool transaction_in_progress_ = false; @@ -145,7 +146,8 @@ // The raw pointer usage is safe because the DatabaseAuthorizer is guaranteed // to outlive this instance. The DatabaseAuthorizer is owned by the same // Database that owns this instance. - DatabaseAuthorizer* authorizer_ GUARDED_BY(authorizer_lock_) = nullptr; + raw_ptr<DatabaseAuthorizer, ExperimentalRenderer> authorizer_ + GUARDED_BY(authorizer_lock_) = nullptr; base::PlatformThreadId opening_thread_ = 0;
diff --git a/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_statement.cc b/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_statement.cc index c9c70c7..19321955 100644 --- a/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_statement.cc +++ b/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_statement.cc
@@ -105,7 +105,7 @@ wtf_size_t length_including_null_character = static_cast<wtf_size_t>(query.length()) + 1; - error = sqlite3_prepare_v3(database_.Sqlite3Handle(), query.c_str(), + error = sqlite3_prepare_v3(database_->Sqlite3Handle(), query.c_str(), length_including_null_character, /* prepFlags= */ 0, statement.get(), tail.get()); } @@ -114,7 +114,7 @@ if (error != SQLITE_OK) { SQL_DVLOG(1) << "sqlite3_prepare_v3 failed (" << error << ")\n" << query << "\n" - << sqlite3_errmsg(database_.Sqlite3Handle()); + << sqlite3_errmsg(database_->Sqlite3Handle()); } else if (*tail && **tail) { error = SQLITE_ERROR; } @@ -131,13 +131,13 @@ // The database needs to update its last changes count before each statement // in order to compute properly the lastChanges() return value. - database_.UpdateLastChangesCount(); + database_->UpdateLastChangesCount(); SQL_DVLOG(1) << "SQL - step - " << query_; int error = sqlite3_step(statement_); if (error != SQLITE_DONE && error != SQLITE_ROW) { SQL_DVLOG(1) << "sqlite3_step failed (" << error << " )\nQuery - " << query_ - << "\nError - " << sqlite3_errmsg(database_.Sqlite3Handle()); + << "\nError - " << sqlite3_errmsg(database_->Sqlite3Handle()); } return restrictError(error);
diff --git a/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_statement.h b/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_statement.h index 97413ab..beb588e 100644 --- a/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_statement.h +++ b/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_statement.h
@@ -27,6 +27,8 @@ #define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBDATABASE_SQLITE_SQLITE_STATEMENT_H_ #include "base/dcheck_is_on.h" +#include "base/memory/raw_ptr.h" +#include "base/memory/raw_ref.h" #include "third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_database.h" struct sqlite3_stmt; @@ -78,9 +80,9 @@ int64_t GetColumnInt64(int col); private: - SQLiteDatabase& database_; + const raw_ref<SQLiteDatabase, ExperimentalRenderer> database_; String query_; - sqlite3_stmt* statement_; + raw_ptr<sqlite3_stmt, ExperimentalRenderer> statement_; #if DCHECK_IS_ON() bool is_prepared_ = false; #endif
diff --git a/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_transaction.cc b/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_transaction.cc index a954a4b..3bd2d094 100644 --- a/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_transaction.cc +++ b/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_transaction.cc
@@ -39,7 +39,7 @@ void SQLiteTransaction::begin() { if (!in_progress_) { - DCHECK(!db_.transaction_in_progress_); + DCHECK(!db_->transaction_in_progress_); // Call BEGIN IMMEDIATE for a write transaction to acquire // a RESERVED lock on the DB file. Otherwise, another write // transaction (on another connection) could make changes @@ -48,18 +48,18 @@ // http://www.sqlite.org/lang_transaction.html // http://www.sqlite.org/lockingv3.html#locking if (read_only_) - in_progress_ = db_.ExecuteCommand("BEGIN"); + in_progress_ = db_->ExecuteCommand("BEGIN"); else - in_progress_ = db_.ExecuteCommand("BEGIN IMMEDIATE"); - db_.transaction_in_progress_ = in_progress_; + in_progress_ = db_->ExecuteCommand("BEGIN IMMEDIATE"); + db_->transaction_in_progress_ = in_progress_; } } void SQLiteTransaction::Commit() { if (in_progress_) { - DCHECK(db_.transaction_in_progress_); - in_progress_ = !db_.ExecuteCommand("COMMIT"); - db_.transaction_in_progress_ = in_progress_; + DCHECK(db_->transaction_in_progress_); + in_progress_ = !db_->ExecuteCommand("COMMIT"); + db_->transaction_in_progress_ = in_progress_; } } @@ -70,24 +70,24 @@ // fail, thus returning a non-zero/true result // (http://www.sqlite.org/lang_transaction.html). if (in_progress_) { - DCHECK(db_.transaction_in_progress_); - db_.ExecuteCommand("ROLLBACK"); + DCHECK(db_->transaction_in_progress_); + db_->ExecuteCommand("ROLLBACK"); in_progress_ = false; - db_.transaction_in_progress_ = false; + db_->transaction_in_progress_ = false; } } void SQLiteTransaction::Stop() { if (in_progress_) { in_progress_ = false; - db_.transaction_in_progress_ = false; + db_->transaction_in_progress_ = false; } } bool SQLiteTransaction::WasRolledBackBySqlite() const { // According to http://www.sqlite.org/c3ref/get_autocommit.html, // the auto-commit flag should be off in the middle of a transaction - return in_progress_ && db_.IsAutoCommitOn(); + return in_progress_ && db_->IsAutoCommitOn(); } } // namespace blink
diff --git a/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_transaction.h b/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_transaction.h index 4f610cdb..972648d0 100644 --- a/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_transaction.h +++ b/third_party/blink/renderer/modules/webdatabase/sqlite/sqlite_transaction.h
@@ -26,6 +26,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBDATABASE_SQLITE_SQLITE_TRANSACTION_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBDATABASE_SQLITE_SQLITE_TRANSACTION_H_ +#include "base/memory/raw_ref.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" namespace blink { @@ -52,7 +53,7 @@ bool WasRolledBackBySqlite() const; private: - SQLiteDatabase& db_; + const raw_ref<SQLiteDatabase, ExperimentalRenderer> db_; bool in_progress_; bool read_only_; };
diff --git a/third_party/blink/renderer/modules/webgl/BUILD.gn b/third_party/blink/renderer/modules/webgl/BUILD.gn index 097879a..b1239f696 100644 --- a/third_party/blink/renderer/modules/webgl/BUILD.gn +++ b/third_party/blink/renderer/modules/webgl/BUILD.gn
@@ -183,9 +183,6 @@ "webgl_vertex_array_object_base.h", "webgl_vertex_array_object_oes.cc", "webgl_vertex_array_object_oes.h", - "webgl_video_texture.cc", - "webgl_video_texture.h", - "webgl_video_texture_enum.h", ] # The modules/webgl/ directly is a larger module, and
diff --git a/third_party/blink/renderer/modules/webgl/gl_string_query.h b/third_party/blink/renderer/modules/webgl/gl_string_query.h index 72455c8..5b8eced 100644 --- a/third_party/blink/renderer/modules/webgl/gl_string_query.h +++ b/third_party/blink/renderer/modules/webgl/gl_string_query.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_GL_STRING_QUERY_H_ #include "base/check_op.h" +#include "base/memory/raw_ptr.h" #include "gpu/command_buffer/client/gles2_interface.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" #include "third_party/khronos/GLES2/gl2ext.h" @@ -84,7 +85,7 @@ } private: - gpu::gles2::GLES2Interface* gl_; + raw_ptr<gpu::gles2::GLES2Interface, ExperimentalRenderer> gl_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.cc b/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.cc index 6593d52..199b22af 100644 --- a/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.cc +++ b/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.cc
@@ -57,7 +57,6 @@ #include "third_party/blink/renderer/modules/webgl/webgl_render_shared_exponent.h" #include "third_party/blink/renderer/modules/webgl/webgl_shader_pixel_local_storage.h" #include "third_party/blink/renderer/modules/webgl/webgl_stencil_texturing.h" -#include "third_party/blink/renderer/modules/webgl/webgl_video_texture.h" #include "third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h" namespace blink { @@ -208,7 +207,6 @@ RegisterExtension(webgl_render_shared_exponent_, kDraftExtension); RegisterExtension(webgl_shader_pixel_local_storage_, kDraftExtension); RegisterExtension(webgl_stencil_texturing_, kDraftExtension); - RegisterExtension(webgl_video_texture_, kDraftExtension); } void WebGL2RenderingContext::Trace(Visitor* visitor) const { @@ -252,7 +250,6 @@ visitor->Trace(webgl_render_shared_exponent_); visitor->Trace(webgl_shader_pixel_local_storage_); visitor->Trace(webgl_stencil_texturing_); - visitor->Trace(webgl_video_texture_); WebGL2RenderingContextBase::Trace(visitor); }
diff --git a/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.h b/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.h index 936c3c9c..d5fe9238 100644 --- a/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.h +++ b/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.h
@@ -46,7 +46,6 @@ class WebGLRenderSharedExponent; class WebGLShaderPixelLocalStorage; class WebGLStencilTexturing; -class WebGLVideoTexture; class WebGL2RenderingContext : public WebGL2RenderingContextBase { DEFINE_WRAPPERTYPEINFO(); @@ -130,7 +129,6 @@ Member<WebGLRenderSharedExponent> webgl_render_shared_exponent_; Member<WebGLShaderPixelLocalStorage> webgl_shader_pixel_local_storage_; Member<WebGLStencilTexturing> webgl_stencil_texturing_; - Member<WebGLVideoTexture> webgl_video_texture_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/webgl/webgl_extension_name.h b/third_party/blink/renderer/modules/webgl/webgl_extension_name.h index 2799fd9..1768392 100644 --- a/third_party/blink/renderer/modules/webgl/webgl_extension_name.h +++ b/third_party/blink/renderer/modules/webgl/webgl_extension_name.h
@@ -68,7 +68,6 @@ kWebGLRenderSharedExponentName, kWebGLShaderPixelLocalStorageName, kWebGLStencilTexturingName, - kWebGLVideoTextureName, kWebGLWebCodecsVideoFrameName, kWebGLExtensionNameCount, // Must be the last entry };
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context.cc index e73ef76..fa4bb65 100644 --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context.cc +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context.cc
@@ -78,7 +78,6 @@ #include "third_party/blink/renderer/modules/webgl/webgl_multi_draw.h" #include "third_party/blink/renderer/modules/webgl/webgl_multi_draw_instanced_base_vertex_base_instance.h" #include "third_party/blink/renderer/modules/webgl/webgl_polygon_mode.h" -#include "third_party/blink/renderer/modules/webgl/webgl_video_texture.h" #include "third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h" namespace blink { @@ -219,7 +218,6 @@ RegisterExtension(webgl_lose_context_, kApprovedExtension); RegisterExtension(webgl_multi_draw_); RegisterExtension(webgl_polygon_mode_, kDraftExtension); - RegisterExtension(webgl_video_texture_, kDraftExtension); } void WebGLRenderingContext::Trace(Visitor* visitor) const { @@ -262,7 +260,6 @@ visitor->Trace(webgl_lose_context_); visitor->Trace(webgl_multi_draw_); visitor->Trace(webgl_polygon_mode_); - visitor->Trace(webgl_video_texture_); WebGLRenderingContextBase::Trace(visitor); }
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context.h b/third_party/blink/renderer/modules/webgl/webgl_rendering_context.h index c005a880..247716d 100644 --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context.h +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context.h
@@ -64,7 +64,6 @@ class WebGLLoseContext; class WebGLMultiDraw; class WebGLPolygonMode; -class WebGLVideoTexture; class WebGLRenderingContext final : public WebGLRenderingContextBase { DEFINE_WRAPPERTYPEINFO(); @@ -144,7 +143,6 @@ Member<WebGLLoseContext> webgl_lose_context_; Member<WebGLMultiDraw> webgl_multi_draw_; Member<WebGLPolygonMode> webgl_polygon_mode_; - Member<WebGLVideoTexture> webgl_video_texture_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc index 67ae17b..4843ce6 100644 --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
@@ -111,8 +111,6 @@ #include "third_party/blink/renderer/modules/webgl/webgl_uniform_location.h" #include "third_party/blink/renderer/modules/webgl/webgl_vertex_array_object.h" #include "third_party/blink/renderer/modules/webgl/webgl_vertex_array_object_oes.h" -#include "third_party/blink/renderer/modules/webgl/webgl_video_texture.h" -#include "third_party/blink/renderer/modules/webgl/webgl_video_texture_enum.h" #include "third_party/blink/renderer/modules/xr/xr_system.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h" #include "third_party/blink/renderer/platform/bindings/script_state.h" @@ -210,6 +208,30 @@ return *forcibly_evicted_contexts_persistent; } +WebGLVideoFrameUploadMetadata CreateVideoFrameUploadMetadata( + const media::VideoFrame* frame, + media::VideoFrame::ID already_uploaded_id) { + DCHECK(frame); + WebGLVideoFrameUploadMetadata metadata = {}; + if (!RuntimeEnabledFeatures::ExtraWebGLVideoTextureMetadataEnabled()) { + return metadata; + } + + metadata.frame_id = frame->unique_id(); + metadata.visible_rect = frame->visible_rect(); + metadata.timestamp = frame->timestamp(); + if (frame->metadata().frame_duration.has_value()) { + metadata.expected_timestamp = + frame->timestamp() + *frame->metadata().frame_duration; + }; + + // Skip uploading frames which have already been uploaded. + if (already_uploaded_id == frame->unique_id()) { + metadata.skipped = true; + } + return metadata; +} + } // namespace ScopedRGBEmulationColorMask::ScopedRGBEmulationColorMask( @@ -2152,14 +2174,6 @@ texture_units_[active_texture_unit_].texture2d_array_binding_ = texture; } else if (IsWebGL2() && target == GL_TEXTURE_3D) { texture_units_[active_texture_unit_].texture3d_binding_ = texture; - } else if (target == GL_TEXTURE_VIDEO_IMAGE_WEBGL) { - if (!ExtensionEnabled(kWebGLVideoTextureName)) { - SynthesizeGLError( - GL_INVALID_VALUE, "bindTexture", - "unhandled type, WEBGL_video_texture extension not enabled"); - return; - } - texture_units_[active_texture_unit_].texture_video_image_binding_ = texture; } else if (target == GL_TEXTURE_EXTERNAL_OES) { SynthesizeGLError(GL_INVALID_ENUM, "bindTexture", "GL_TEXTURE_EXTERNAL_OES textures not supported"); @@ -2173,29 +2187,7 @@ return; } - // We use TEXTURE_EXTERNAL_OES to implement video texture on Android platform - if (target == GL_TEXTURE_VIDEO_IMAGE_WEBGL) { -#if BUILDFLAG(IS_ANDROID) - // TODO(crbug.com/776222): Support extension on Android - NOTIMPLEMENTED(); - return; -#else - // TODO(crbug.com/776222): Using GL_TEXTURE_VIDEO_IMAGE_WEBGL in blink - ContextGL()->BindTexture(GL_TEXTURE_2D, ObjectOrZero(texture)); - if (texture && !texture->GetTarget()) { - ContextGL()->TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, - GL_LINEAR); - ContextGL()->TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR); - ContextGL()->TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, - GL_CLAMP_TO_EDGE); - ContextGL()->TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, - GL_CLAMP_TO_EDGE); - } -#endif // BUILDFLAG(IS_ANDROID) - } else { - ContextGL()->BindTexture(target, ObjectOrZero(texture)); - } + ContextGL()->BindTexture(target, ObjectOrZero(texture)); if (texture) { texture->SetTarget(target); one_plus_max_non_default_texture_unit_ = @@ -4338,16 +4330,6 @@ base_type = GL_INT; length = 1; break; - case GL_SAMPLER_VIDEO_IMAGE_WEBGL: - if (!ExtensionEnabled(kWebGLVideoTextureName)) { - SynthesizeGLError( - GL_INVALID_VALUE, "getUniform", - "unhandled type, WEBGL_video_texture extension not enabled"); - return ScriptValue::CreateNull(script_state->GetIsolate()); - } - base_type = GL_INT; - length = 1; - break; default: if (!IsWebGL2()) { // Can't handle this type @@ -6166,7 +6148,7 @@ if (auto sk_img = local_handle->sk_image()) { DCHECK(!sk_img->isTextureBacked()); // For WebGL last-uploaded-frame-metadata API. https://crbug.com/639174 - auto metadata = WebGLVideoTexture::CreateVideoFrameUploadMetadata( + auto metadata = CreateVideoFrameUploadMetadata( local_handle->frame().get(), texture->GetLastUploadedVideoFrameId()); if (metadata.skipped) { texture->UpdateLastUploadedFrame(metadata); @@ -6193,7 +6175,7 @@ DCHECK(texture); DCHECK(media_video_frame); - auto metadata = WebGLVideoTexture::CreateVideoFrameUploadMetadata( + auto metadata = CreateVideoFrameUploadMetadata( media_video_frame.get(), texture->GetLastUploadedVideoFrameId()); if (metadata.skipped) { texture->UpdateLastUploadedFrame(metadata); @@ -6489,14 +6471,6 @@ return; switch (pname) { case GL_TEXTURE_MIN_FILTER: - if (target == GL_TEXTURE_VIDEO_IMAGE_WEBGL) { - if ((is_float && paramf != GL_NEAREST && paramf != GL_LINEAR) || - (!is_float && parami != GL_NEAREST && parami != GL_LINEAR)) { - SynthesizeGLError(GL_INVALID_ENUM, "texParameter", - "invalid parameter name"); - return; - } - } break; case GL_TEXTURE_MAG_FILTER: break; @@ -6526,15 +6500,6 @@ SynthesizeGLError(GL_INVALID_ENUM, "texParameter", "invalid parameter"); return; } - - if (target == GL_TEXTURE_VIDEO_IMAGE_WEBGL) { - if ((is_float && paramf != GL_CLAMP_TO_EDGE) || - (!is_float && parami != GL_CLAMP_TO_EDGE)) { - SynthesizeGLError(GL_INVALID_ENUM, "texParameter", - "invalid parameter"); - return; - } - } break; case GL_TEXTURE_MAX_ANISOTROPY_EXT: // EXT_texture_filter_anisotropic if (!ExtensionEnabled(kEXTTextureFilterAnisotropicName)) { @@ -7792,15 +7757,6 @@ } tex = texture_units_[active_texture_unit_].texture2d_array_binding_.Get(); break; - case GL_TEXTURE_VIDEO_IMAGE_WEBGL: - if (!ExtensionEnabled(kWebGLVideoTextureName)) { - SynthesizeGLError(GL_INVALID_ENUM, function_name, - "invalid texture target"); - return nullptr; - } - tex = texture_units_[active_texture_unit_] - .texture_video_image_binding_.Get(); - break; default: SynthesizeGLError(GL_INVALID_ENUM, function_name, "invalid texture target"); @@ -8051,8 +8007,6 @@ case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: return max_cube_map_texture_level_; - case GL_TEXTURE_VIDEO_IMAGE_WEBGL: - return 1; } return 0; } @@ -8090,7 +8044,6 @@ switch (target) { case GL_TEXTURE_2D: - case GL_TEXTURE_VIDEO_IMAGE_WEBGL: if (width > (max_texture_size_ >> level) || height > (max_texture_size_ >> level)) { SynthesizeGLError(GL_INVALID_VALUE, function_name,
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h index 7901bb7..771f4dc0 100644 --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
@@ -30,6 +30,7 @@ #include "base/check_op.h" #include "base/containers/lru_cache.h" +#include "base/memory/raw_ptr_exclusion.h" #include "base/numerics/checked_math.h" #include "base/task/single_thread_task_runner.h" #include "device/vr/public/mojom/vr_service.mojom-blink.h" @@ -722,7 +723,6 @@ friend class WebGLMultiDrawCommon; friend class WebGLMultiDrawInstancedBaseVertexBaseInstance; friend class WebGLShaderPixelLocalStorage; - friend class WebGLVideoTexture; WebGLRenderingContextBase(CanvasRenderingContextHost*, std::unique_ptr<WebGraphicsContext3DProvider>, @@ -1062,7 +1062,10 @@ } private: - Member<T>& extension_field_; + // `extension_field_` is not a `raw_ref` because `Member<T>` denotes + // a type managed by Oilpan, i.e. memory that is not managed by + // PartitionAlloc. + RAW_PTR_EXCLUSION Member<T>& extension_field_; // ExtensionTracker holds it's own reference to the extension to ensure // that it is not deleted before this object's destructor is called Member<T> extension_;
diff --git a/third_party/blink/renderer/modules/webgl/webgl_video_texture.cc b/third_party/blink/renderer/modules/webgl/webgl_video_texture.cc deleted file mode 100644 index 24c71270..0000000 --- a/third_party/blink/renderer/modules/webgl/webgl_video_texture.cc +++ /dev/null
@@ -1,180 +0,0 @@ -// Copyright 2018 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/modules/webgl/webgl_video_texture.h" - -#include "build/build_config.h" -#include "media/renderers/paint_canvas_video_renderer.h" -#include "third_party/blink/renderer/bindings/modules/v8/v8_video_frame_metadata.h" -#include "third_party/blink/renderer/core/html/media/html_video_element.h" -#include "third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h" -#include "third_party/blink/renderer/modules/webgl/webgl_video_texture_enum.h" -#include "third_party/blink/renderer/platform/bindings/exception_state.h" -#include "third_party/blink/renderer/platform/graphics/gpu/shared_gpu_context.h" - -namespace blink { - -WebGLVideoTexture::WebGLVideoTexture(WebGLRenderingContextBase* context) - : WebGLExtension(context) { - context->ExtensionsUtil()->EnsureExtensionEnabled("GL_WEBGL_video_texture"); -} - -WebGLExtensionName WebGLVideoTexture::GetName() const { - return kWebGLVideoTextureName; -} - -bool WebGLVideoTexture::Supported(WebGLRenderingContextBase* context) { -#if BUILDFLAG(IS_ANDROID) - // TODO(crbug.com/776222): support extension on Android - return false; -#else - return true; -#endif -} - -const char* WebGLVideoTexture::ExtensionName() { - return "WEBGL_video_texture"; -} - -void WebGLVideoTexture::Trace(Visitor* visitor) const { - visitor->Trace(current_frame_metadata_); - WebGLExtension::Trace(visitor); -} - -VideoFrameMetadata* WebGLVideoTexture::shareVideoImageWEBGL( - ScriptState* script_state, - unsigned target, - HTMLVideoElement* video, - ExceptionState& exception_state) { - WebGLExtensionScopedContext scoped(this); - if (!video || scoped.IsLost()) - return nullptr; - - if (target != GL_TEXTURE_VIDEO_IMAGE_WEBGL) { - scoped.Context()->SynthesizeGLError(GL_INVALID_ENUM, "WEBGLVideoTexture", - "invalid texture target"); - } - - ExecutionContext* execution_context = ExecutionContext::From(script_state); - if (!scoped.Context()->ValidateHTMLVideoElement( - execution_context->GetSecurityOrigin(), "WEBGLVideoTexture", video, - exception_state)) { - return nullptr; - } - - if (!scoped.Context()->ValidateTexFuncDimensions( - "WEBGLVideoTexture", WebGLRenderingContextBase::kTexImage, target, 0, - video->videoWidth(), video->videoHeight(), 1)) { - return nullptr; - } - - WebGLTexture* texture = - scoped.Context()->ValidateTextureBinding("WEBGLVideoTexture", target); - if (!texture) { - exception_state.ThrowTypeError( - "Failed to get correct binding texture for WEBGL_video_texture"); - return nullptr; - } - -#if BUILDFLAG(IS_ANDROID) - // TODO(crbug.com/776222): support extension on Android - NOTIMPLEMENTED(); - return nullptr; -#else - media::PaintCanvasVideoRenderer* video_renderer = nullptr; - scoped_refptr<media::VideoFrame> media_video_frame; - if (auto* wmp = video->GetWebMediaPlayer()) { - media_video_frame = wmp->GetCurrentFrameThenUpdate(); - video_renderer = wmp->GetPaintCanvasVideoRenderer(); - } - - if (!media_video_frame || !video_renderer) - return nullptr; - - // For WebGL last-uploaded-frame-metadata API. - auto metadata = CreateVideoFrameUploadMetadata( - media_video_frame.get(), texture->GetLastUploadedVideoFrameId()); - if (metadata.skipped) { - texture->UpdateLastUploadedFrame(metadata); - DCHECK(current_frame_metadata_); - return current_frame_metadata_; - } - - target = GL_TEXTURE_2D; - - viz::RasterContextProvider* raster_context_provider = nullptr; - if (auto wrapper = SharedGpuContext::ContextProviderWrapper()) { - if (auto* context_provider = wrapper->ContextProvider()) - raster_context_provider = context_provider->RasterContextProvider(); - } - - // TODO(shaobo.yan@intel.com) : A fallback path or exception needs to be - // added when video is not using gpu decoder. - const bool success = video_renderer->PrepareVideoFrameForWebGL( - raster_context_provider, scoped.Context()->ContextGL(), - std::move(media_video_frame), target, texture->Object()); - if (!success) { - exception_state.ThrowTypeError("Failed to share video to texture."); - return nullptr; - } - - if (RuntimeEnabledFeatures::ExtraWebGLVideoTextureMetadataEnabled()) - texture->UpdateLastUploadedFrame(metadata); - - if (!current_frame_metadata_) - current_frame_metadata_ = VideoFrameMetadata::Create(); - - // TODO(crbug.com/776222): These should be read from the VideoFrameCompositor - // when the VideoFrame is retrieved in WebMediaPlayerImpl. These fields are - // not currently saved in VideoFrameCompositor, so VFC::ProcessNewFrame() - // would need to save the current time as well as the presentation time. - current_frame_metadata_->setPresentationTime( - metadata.timestamp.InMicrosecondsF()); - current_frame_metadata_->setExpectedDisplayTime( - metadata.expected_timestamp.InMicrosecondsF()); - - current_frame_metadata_->setWidth(metadata.visible_rect.width()); - current_frame_metadata_->setHeight(metadata.visible_rect.height()); - current_frame_metadata_->setMediaTime(metadata.timestamp.InSecondsF()); - - // This is a required field. It is supposed to be monotonically increasing for - // video.requestVideoFrameCallback, but it isn't used yet for - // WebGLVideoTexture. - current_frame_metadata_->setPresentedFrames(0); - return current_frame_metadata_; -#endif // BUILDFLAG(IS_ANDROID) -} - -bool WebGLVideoTexture::releaseVideoImageWEBGL( - unsigned target, - ExceptionState& exception_state) { - // NOTE: In current WEBGL_video_texture status, there is no lock on video - // frame. So this API doesn't need to do anything. - return true; -} - -// static -WebGLVideoFrameUploadMetadata WebGLVideoTexture::CreateVideoFrameUploadMetadata( - const media::VideoFrame* frame, - media::VideoFrame::ID already_uploaded_id) { - DCHECK(frame); - WebGLVideoFrameUploadMetadata metadata = {}; - if (!RuntimeEnabledFeatures::ExtraWebGLVideoTextureMetadataEnabled()) - return metadata; - - metadata.frame_id = frame->unique_id(); - metadata.visible_rect = frame->visible_rect(); - metadata.timestamp = frame->timestamp(); - if (frame->metadata().frame_duration.has_value()) { - metadata.expected_timestamp = - frame->timestamp() + *frame->metadata().frame_duration; - }; - - // Skip uploading frames which have already been uploaded. - if (already_uploaded_id == frame->unique_id()) - metadata.skipped = true; - return metadata; -} - -} // namespace blink
diff --git a/third_party/blink/renderer/modules/webgl/webgl_video_texture.h b/third_party/blink/renderer/modules/webgl/webgl_video_texture.h deleted file mode 100644 index 66b5f0fe..0000000 --- a/third_party/blink/renderer/modules/webgl/webgl_video_texture.h +++ /dev/null
@@ -1,54 +0,0 @@ -// Copyright 2018 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_MODULES_WEBGL_WEBGL_VIDEO_TEXTURE_H_ -#define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_VIDEO_TEXTURE_H_ - -#include "media/base/video_frame.h" -#include "third_party/blink/renderer/modules/webgl/webgl_extension.h" -#include "third_party/blink/renderer/platform/heap/member.h" - -namespace blink { - -class ExceptionState; -class ScriptState; -class HTMLVideoElement; -class VideoFrameMetadata; -struct WebGLVideoFrameUploadMetadata; - -class WebGLVideoTexture final : public WebGLExtension { - DEFINE_WRAPPERTYPEINFO(); - - public: - static bool Supported(WebGLRenderingContextBase*); - static const char* ExtensionName(); - - explicit WebGLVideoTexture(WebGLRenderingContextBase*); - - WebGLExtensionName GetName() const override; - - void Trace(Visitor*) const override; - - // Get video frame from video frame compositor and bind it to platform - // texture. - VideoFrameMetadata* shareVideoImageWEBGL(ScriptState*, - unsigned, - HTMLVideoElement*, - ExceptionState&); - - bool releaseVideoImageWEBGL(unsigned, ExceptionState&); - - // Helper method for filling in WebGLVideoFrameUploadMetadata. Will be default - // initialized (skipped = false) if the metadata API is disabled. - static WebGLVideoFrameUploadMetadata CreateVideoFrameUploadMetadata( - const media::VideoFrame* frame, - media::VideoFrame::ID already_uploaded_id); - - private: - Member<VideoFrameMetadata> current_frame_metadata_; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_VIDEO_TEXTURE_H_
diff --git a/third_party/blink/renderer/modules/webgl/webgl_video_texture.idl b/third_party/blink/renderer/modules/webgl/webgl_video_texture.idl deleted file mode 100644 index 30bb063..0000000 --- a/third_party/blink/renderer/modules/webgl/webgl_video_texture.idl +++ /dev/null
@@ -1,16 +0,0 @@ -// Copyright 2018 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// https://www.khronos.org/registry/webgl/extensions/proposals/WEBGL_video_texture/ - -[ - RuntimeEnabled=WebGLDraftExtensions, - LegacyNoInterfaceObject -] interface WebGLVideoTexture { - const GLenum TEXTURE_VIDEO_IMAGE = 0x9248; - const GLenum SAMPLER_VIDEO_IMAGE = 0x9249; - - [CallWith=ScriptState, RaisesException] VideoFrameMetadata? shareVideoImageWEBGL(GLenum target, HTMLVideoElement video); - [RaisesException] boolean releaseVideoImageWEBGL(GLenum target); -};
diff --git a/third_party/blink/renderer/modules/webgl/webgl_video_texture_enum.h b/third_party/blink/renderer/modules/webgl/webgl_video_texture_enum.h deleted file mode 100644 index 5127a803..0000000 --- a/third_party/blink/renderer/modules/webgl/webgl_video_texture_enum.h +++ /dev/null
@@ -1,10 +0,0 @@ -// Copyright 2018 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_MODULES_WEBGL_WEBGL_VIDEO_TEXTURE_ENUM_H_ -#define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_VIDEO_TEXTURE_ENUM_H_ - -#define GL_TEXTURE_VIDEO_IMAGE_WEBGL 0x9248 -#define GL_SAMPLER_VIDEO_IMAGE_WEBGL 0x9249 - -#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_VIDEO_TEXTURE_ENUM_H_
diff --git a/third_party/blink/renderer/modules/webgpu/external_texture_helper.h b/third_party/blink/renderer/modules/webgpu/external_texture_helper.h index 981c2bb..5df87ad 100644 --- a/third_party/blink/renderer/modules/webgpu/external_texture_helper.h +++ b/third_party/blink/renderer/modules/webgpu/external_texture_helper.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGPU_EXTERNAL_TEXTURE_HELPER_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGPU_EXTERNAL_TEXTURE_HELPER_H_ +#include "base/memory/raw_ptr.h" #include "media/base/video_frame.h" #include "third_party/blink/renderer/modules/webgpu/dawn_object.h" @@ -31,7 +32,8 @@ struct ExternalTextureSource { scoped_refptr<media::VideoFrame> media_video_frame = nullptr; - media::PaintCanvasVideoRenderer* video_renderer = nullptr; + raw_ptr<media::PaintCanvasVideoRenderer, ExperimentalRenderer> + video_renderer = nullptr; absl::optional<media::VideoFrame::ID> media_video_frame_unique_id = absl::nullopt; bool valid = false;
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_context_lost_test.cc b/third_party/blink/renderer/modules/webgpu/gpu_context_lost_test.cc index 49c051ac..ce10a82 100644 --- a/third_party/blink/renderer/modules/webgpu/gpu_context_lost_test.cc +++ b/third_party/blink/renderer/modules/webgpu/gpu_context_lost_test.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/test/mock_callback.h" #include "gpu/command_buffer/client/webgpu_interface_stub.h" @@ -51,7 +52,8 @@ void CallLostContextCallback() { lost_context_callback_.Run(); } private: - base::MockCallback<base::OnceClosure>* destruction_callback_; + raw_ptr<base::MockCallback<base::OnceClosure>, ExperimentalRenderer> + destruction_callback_; base::RepeatingClosure lost_context_callback_; };
diff --git a/third_party/blink/renderer/modules/webmidi/midi_dispatcher.h b/third_party/blink/renderer/modules/webmidi/midi_dispatcher.h index 1a98795..4d96fc7 100644 --- a/third_party/blink/renderer/modules/webmidi/midi_dispatcher.h +++ b/third_party/blink/renderer/modules/webmidi/midi_dispatcher.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBMIDI_MIDI_DISPATCHER_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBMIDI_MIDI_DISPATCHER_H_ +#include "base/memory/raw_ptr.h" #include "media/midi/midi_service.mojom-blink.h" #include "third_party/blink/renderer/core/execution_context/execution_context.h" #include "third_party/blink/renderer/platform/heap/garbage_collected.h" @@ -68,7 +69,7 @@ void Trace(Visitor* visitor) const; private: - Client* client_ = nullptr; + raw_ptr<Client, ExperimentalRenderer> client_ = nullptr; bool initialized_ = false;
diff --git a/third_party/blink/renderer/modules/webrtc/webrtc_audio_device_impl.h b/third_party/blink/renderer/modules/webrtc/webrtc_audio_device_impl.h index 9452dde..c6745de9 100644 --- a/third_party/blink/renderer/modules/webrtc/webrtc_audio_device_impl.h +++ b/third_party/blink/renderer/modules/webrtc/webrtc_audio_device_impl.h
@@ -11,6 +11,7 @@ #include <memory> #include <string> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/threading/thread_checker.h" #include "base/time/time.h" @@ -165,7 +166,8 @@ // Weak reference to the audio callback. // The webrtc client defines |audio_transport_callback_| by calling // RegisterAudioCallback(). - webrtc::AudioTransport* audio_transport_callback_; + raw_ptr<webrtc::AudioTransport, ExperimentalRenderer> + audio_transport_callback_; // Cached value of the current audio delay on the output/renderer side. base::TimeDelta output_delay_ GUARDED_BY(lock_);
diff --git a/third_party/blink/renderer/modules/webrtc/webrtc_audio_renderer.h b/third_party/blink/renderer/modules/webrtc/webrtc_audio_renderer.h index 2e3d963..ed9ae93 100644 --- a/third_party/blink/renderer/modules/webrtc/webrtc_audio_renderer.h +++ b/third_party/blink/renderer/modules/webrtc/webrtc_audio_renderer.h
@@ -13,6 +13,7 @@ #include <string> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" @@ -325,7 +326,7 @@ // Audio data source from the browser process. // // TODO(crbug.com/704136): Make it a Member. - WebRtcAudioRendererSource* source_; + raw_ptr<WebRtcAudioRendererSource, ExperimentalRenderer> source_; // Protects access to |state_|, |source_|, |audio_fifo_|, // |audio_delay_milliseconds_|, |fifo_delay_milliseconds_|, |current_time_|,
diff --git a/third_party/blink/renderer/modules/websockets/web_pepper_socket_channel_client_proxy.h b/third_party/blink/renderer/modules/websockets/web_pepper_socket_channel_client_proxy.h index 3492461..a9368b2 100644 --- a/third_party/blink/renderer/modules/websockets/web_pepper_socket_channel_client_proxy.h +++ b/third_party/blink/renderer/modules/websockets/web_pepper_socket_channel_client_proxy.h
@@ -7,6 +7,7 @@ #include <stdint.h> #include <memory> +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/modules/websockets/web_pepper_socket_impl.h" #include "third_party/blink/renderer/modules/websockets/websocket_channel_client.h" #include "third_party/blink/renderer/platform/heap/garbage_collected.h" @@ -63,7 +64,7 @@ } private: - WebPepperSocketImpl* impl_; + raw_ptr<WebPepperSocketImpl, ExperimentalRenderer> impl_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/websockets/web_pepper_socket_impl.h b/third_party/blink/renderer/modules/websockets/web_pepper_socket_impl.h index e696063..ce9a1b5 100644 --- a/third_party/blink/renderer/modules/websockets/web_pepper_socket_impl.h +++ b/third_party/blink/renderer/modules/websockets/web_pepper_socket_impl.h
@@ -32,6 +32,7 @@ #define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBSOCKETS_WEB_PEPPER_SOCKET_IMPL_H_ #include <memory> +#include "base/memory/raw_ptr.h" #include "third_party/blink/public/platform/web_string.h" #include "third_party/blink/public/web/web_pepper_socket.h" #include "third_party/blink/public/web/web_pepper_socket_client.h" @@ -75,7 +76,7 @@ private: Persistent<WebSocketChannel> private_; - WebPepperSocketClient* client_; + raw_ptr<WebPepperSocketClient, ExperimentalRenderer> client_; Persistent<WebPepperSocketChannelClientProxy> channel_proxy_; WebString subprotocol_; bool is_closing_or_closed_;
diff --git a/third_party/blink/renderer/modules/websockets/websocket_channel_impl_test.cc b/third_party/blink/renderer/modules/websockets/websocket_channel_impl_test.cc index ce3d417..abcd625 100644 --- a/third_party/blink/renderer/modules/websockets/websocket_channel_impl_test.cc +++ b/third_party/blink/renderer/modules/websockets/websocket_channel_impl_test.cc
@@ -10,6 +10,7 @@ #include "base/functional/callback.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "mojo/public/cpp/bindings/receiver_set.h" #include "mojo/public/cpp/bindings/remote_set.h" @@ -387,7 +388,8 @@ WebSocketConnector connector_; Persistent<MockWebSocketChannelClient> channel_client_; std::unique_ptr<MockWebSocketHandshakeThrottle> handshake_throttle_; - MockWebSocketHandshakeThrottle* const raw_handshake_throttle_; + const raw_ptr<MockWebSocketHandshakeThrottle, ExperimentalRenderer> + raw_handshake_throttle_; Persistent<WebSocketChannelImpl> channel_; uint64_t sum_of_consumed_buffered_amount_;
diff --git a/third_party/blink/renderer/modules/webtransport/outgoing_stream.h b/third_party/blink/renderer/modules/webtransport/outgoing_stream.h index 144fd03f..ac65d6e 100644 --- a/third_party/blink/renderer/modules/webtransport/outgoing_stream.h +++ b/third_party/blink/renderer/modules/webtransport/outgoing_stream.h
@@ -9,6 +9,7 @@ #include <cstdint> #include "base/containers/span.h" +#include "base/memory/raw_ptr.h" #include "base/types/strong_alias.h" #include "mojo/public/cpp/system/data_pipe.h" #include "mojo/public/cpp/system/simple_watcher.h" @@ -153,9 +154,9 @@ private: // We need the isolate to call |AdjustAmountOfExternalAllocatedMemory| for // the memory stored in |buffer_|. - v8::Isolate* isolate_; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_; size_t length_ = 0u; - uint8_t* buffer_ = nullptr; + raw_ptr<uint8_t, ExperimentalRenderer> buffer_ = nullptr; }; const Member<ScriptState> script_state_;
diff --git a/third_party/blink/renderer/modules/webtransport/test_utils.h b/third_party/blink/renderer/modules/webtransport/test_utils.h index c847f03..908eb55 100644 --- a/third_party/blink/renderer/modules/webtransport/test_utils.h +++ b/third_party/blink/renderer/modules/webtransport/test_utils.h
@@ -9,6 +9,7 @@ #define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBTRANSPORT_TEST_UTILS_H_ #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/receiver.h" @@ -77,7 +78,8 @@ // |browser_interface_broker_| is cached here because we need to use it in the // destructor. This means ScopedWebTransporHelper must always be destroyed // before the ExecutionContext that owns the BrowserInterfaceBrokerProxy. - const BrowserInterfaceBrokerProxy* browser_interface_broker_ = nullptr; + raw_ptr<const BrowserInterfaceBrokerProxy, ExperimentalRenderer> + browser_interface_broker_ = nullptr; Persistent<WebTransport> web_transport_; mojo::Remote<network::mojom::blink::WebTransportClient> client_remote_; mojo::Receiver<mojom::blink::WebTransportConnector> connector_receiver_{this};
diff --git a/third_party/blink/renderer/modules/webtransport/web_transport_test.cc b/third_party/blink/renderer/modules/webtransport/web_transport_test.cc index a6a6719..6f83758 100644 --- a/third_party/blink/renderer/modules/webtransport/web_transport_test.cc +++ b/third_party/blink/renderer/modules/webtransport/web_transport_test.cc
@@ -9,6 +9,7 @@ #include <utility> #include "base/containers/span.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/test/mock_callback.h" #include "mojo/public/cpp/bindings/receiver_set.h" @@ -325,7 +326,8 @@ mojom::blink::WebTransportConnector::Name_, {}); } - const BrowserInterfaceBrokerProxy* interface_broker_ = nullptr; + raw_ptr<const BrowserInterfaceBrokerProxy, ExperimentalRenderer> + interface_broker_ = nullptr; WTF::Deque<AcceptUnidirectionalStreamCallback> pending_unidirectional_accept_callbacks_; WTF::Deque<AcceptBidirectionalStreamCallback>
diff --git a/third_party/blink/renderer/modules/xr/xr_hand.cc b/third_party/blink/renderer/modules/xr/xr_hand.cc index 51470a33..ed1736f 100644 --- a/third_party/blink/renderer/modules/xr/xr_hand.cc +++ b/third_party/blink/renderer/modules/xr/xr_hand.cc
@@ -7,6 +7,7 @@ #include <memory> #include <utility> +#include "base/memory/raw_ref.h" #include "third_party/blink/renderer/modules/xr/xr_input_source.h" #include "third_party/blink/renderer/modules/xr/xr_joint_space.h" #include "third_party/blink/renderer/modules/xr/xr_utils.h" @@ -28,7 +29,7 @@ return false; key = V8XRHandJoint(static_cast<V8XRHandJoint::Enum>(index_)); - value = joints_.at(index_); + value = joints_->at(index_); index_++; return true; } @@ -40,7 +41,8 @@ private: wtf_size_t index_; - const HeapVector<Member<XRJointSpace>>& joints_; + const raw_ref<const HeapVector<Member<XRJointSpace>>, ExperimentalRenderer> + joints_; Member<XRHand> xr_hand_; // Owner object of `joints_` };
diff --git a/third_party/blink/renderer/platform/animation/compositor_animation.h b/third_party/blink/renderer/platform/animation/compositor_animation.h index 0130085..13095743 100644 --- a/third_party/blink/renderer/platform/animation/compositor_animation.h +++ b/third_party/blink/renderer/platform/animation/compositor_animation.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "cc/animation/animation.h" #include "cc/animation/animation_delegate.h" @@ -79,7 +80,7 @@ absl::optional<base::TimeDelta> local_time) override; scoped_refptr<cc::Animation> animation_; - CompositorAnimationDelegate* delegate_; + raw_ptr<CompositorAnimationDelegate, ExperimentalRenderer> delegate_; }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/audio/audio_array.h b/third_party/blink/renderer/platform/audio/audio_array.h index bc7fc783..f48bae4 100644 --- a/third_party/blink/renderer/platform/audio/audio_array.h +++ b/third_party/blink/renderer/platform/audio/audio_array.h
@@ -32,6 +32,7 @@ #include <string.h> #include "base/check_op.h" +#include "base/memory/raw_ptr.h" #include "base/numerics/checked_math.h" #include "build/build_config.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" @@ -86,7 +87,7 @@ total, WTF_HEAP_PROFILER_TYPE_NAME(AudioArray<T>))); CHECK(allocation_); - aligned_data_ = AlignedAddress(allocation_, kAlignment); + aligned_data_ = AlignedAddress(allocation_.get(), kAlignment); size_ = static_cast<uint32_t>(n); } @@ -140,8 +141,8 @@ return reinterpret_cast<T*>((value + alignment - 1) & ~(alignment - 1)); } - T* allocation_; - T* aligned_data_; + raw_ptr<T, ExperimentalRenderer> allocation_; + raw_ptr<T, ExperimentalRenderer> aligned_data_; uint32_t size_; };
diff --git a/third_party/blink/renderer/platform/audio/audio_channel.h b/third_party/blink/renderer/platform/audio/audio_channel.h index 89e4cd1..410e468d 100644 --- a/third_party/blink/renderer/platform/audio/audio_channel.h +++ b/third_party/blink/renderer/platform/audio/audio_channel.h
@@ -30,6 +30,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_AUDIO_AUDIO_CHANNEL_H_ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/numerics/checked_math.h" #include "third_party/blink/renderer/platform/audio/audio_array.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -76,11 +77,11 @@ // Direct access to PCM sample data. Non-const accessor clears silent flag. float* MutableData() { ClearSilentFlag(); - return raw_pointer_ ? raw_pointer_ : mem_buffer_->Data(); + return raw_pointer_ ? raw_pointer_.get() : mem_buffer_->Data(); } const float* Data() const { - return raw_pointer_ ? raw_pointer_ : mem_buffer_->Data(); + return raw_pointer_ ? raw_pointer_.get() : mem_buffer_->Data(); } // Zeroes out all sample values in buffer. @@ -124,7 +125,7 @@ private: uint32_t length_; - float* raw_pointer_; + raw_ptr<float, ExperimentalRenderer> raw_pointer_; std::unique_ptr<AudioFloatArray> mem_buffer_; bool silent_; };
diff --git a/third_party/blink/renderer/platform/audio/audio_destination.cc b/third_party/blink/renderer/platform/audio/audio_destination.cc index cdfcf36..2bc5859 100644 --- a/third_party/blink/renderer/platform/audio/audio_destination.cc +++ b/third_party/blink/renderer/platform/audio/audio_destination.cc
@@ -528,8 +528,8 @@ resampler_->ResampleInternal(RenderQuantumFrames(), resampler_bus_.get()); } else { // Process WebAudio graph and push the rendered output to FIFO. - callback_.Render(render_bus_.get(), RenderQuantumFrames(), - output_position_, metric_reporter_.GetMetric()); + callback_->Render(render_bus_.get(), RenderQuantumFrames(), + output_position_, metric_reporter_.GetMetric()); } fifo_->Push(render_bus_.get()); @@ -542,8 +542,8 @@ void AudioDestination::ProvideResamplerInput(int resampler_frame_delay, AudioBus* dest) { - callback_.Render(dest, RenderQuantumFrames(), output_position_, - metric_reporter_.GetMetric()); + callback_->Render(dest, RenderQuantumFrames(), output_position_, + metric_reporter_.GetMetric()); } void AudioDestination::SendLogMessage(const String& message) const {
diff --git a/third_party/blink/renderer/platform/audio/audio_destination.h b/third_party/blink/renderer/platform/audio/audio_destination.h index 10f3646..3f193716 100644 --- a/third_party/blink/renderer/platform/audio/audio_destination.h +++ b/third_party/blink/renderer/platform/audio/audio_destination.h
@@ -31,6 +31,7 @@ #include <memory> +#include "base/memory/raw_ref.h" #include "base/memory/scoped_refptr.h" #include "base/synchronization/lock.h" #include "base/synchronization/waitable_event.h" @@ -189,7 +190,7 @@ // Accessed by rendering thread: the render callback function of WebAudio // engine. (i.e. DestinationNode) - AudioIOCallback& callback_; + const raw_ref<AudioIOCallback, ExperimentalRenderer> callback_; // Accessed by rendering thread. size_t frames_elapsed_ = 0;
diff --git a/third_party/blink/renderer/platform/audio/audio_dsp_kernel.h b/third_party/blink/renderer/platform/audio/audio_dsp_kernel.h index c0424ba..cfa88384 100644 --- a/third_party/blink/renderer/platform/audio/audio_dsp_kernel.h +++ b/third_party/blink/renderer/platform/audio/audio_dsp_kernel.h
@@ -31,6 +31,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_AUDIO_AUDIO_DSP_KERNEL_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_AUDIO_AUDIO_DSP_KERNEL_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/audio/audio_dsp_kernel_processor.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" @@ -80,7 +81,7 @@ protected: // This raw pointer is safe because the AudioDSPKernelProcessor object is // guaranteed to be kept alive while the AudioDSPKernel object is alive. - AudioDSPKernelProcessor* kernel_processor_; + raw_ptr<AudioDSPKernelProcessor, ExperimentalRenderer> kernel_processor_; float sample_rate_; unsigned render_quantum_frames_; };
diff --git a/third_party/blink/renderer/platform/audio/fft_frame.h b/third_party/blink/renderer/platform/audio/fft_frame.h index f9c9571b..545deb0 100644 --- a/third_party/blink/renderer/platform/audio/fft_frame.h +++ b/third_party/blink/renderer/platform/audio/fft_frame.h
@@ -30,6 +30,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_AUDIO_FFT_FRAME_H_ #include <memory> +#include "base/memory/raw_ptr.h" #include "build/build_config.h" #include "third_party/blink/renderer/platform/audio/audio_array.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -190,7 +191,7 @@ PFFFT_Setup* GetSetup() const { return setup_; } private: - PFFFT_Setup* setup_; + raw_ptr<PFFFT_Setup, ExperimentalRenderer> setup_; }; // Returns the HashMap that holds all of the possible FFTSetup objects. This
diff --git a/third_party/blink/renderer/platform/audio/iir_filter.h b/third_party/blink/renderer/platform/audio/iir_filter.h index e54bb69..cd857e6 100644 --- a/third_party/blink/renderer/platform/audio/iir_filter.h +++ b/third_party/blink/renderer/platform/audio/iir_filter.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_AUDIO_IIR_FILTER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_AUDIO_IIR_FILTER_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/audio/audio_array.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -63,8 +64,8 @@ // Coefficients of the IIR filter. To minimize storage, these point to the // arrays given in the constructor. - const AudioDoubleArray* feedback_; - const AudioDoubleArray* feedforward_; + raw_ptr<const AudioDoubleArray, ExperimentalRenderer> feedback_; + raw_ptr<const AudioDoubleArray, ExperimentalRenderer> feedforward_; }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/audio/push_pull_fifo_multithread_test.cc b/third_party/blink/renderer/platform/audio/push_pull_fifo_multithread_test.cc index 5527d767..8e829423 100644 --- a/third_party/blink/renderer/platform/audio/push_pull_fifo_multithread_test.cc +++ b/third_party/blink/renderer/platform/audio/push_pull_fifo_multithread_test.cc
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/audio/push_pull_fifo.h" #include <memory> @@ -81,7 +82,7 @@ ScopedTestingPlatformSupport<TestingPlatformSupportWithMockScheduler> platform_; - PushPullFIFO* fifo_; + raw_ptr<PushPullFIFO, ExperimentalRenderer> fifo_; scoped_refptr<AudioBus> bus_; std::unique_ptr<NonMainThread> client_thread_; std::unique_ptr<base::WaitableEvent> done_event_;
diff --git a/third_party/blink/renderer/platform/audio/reverb_convolver_stage.h b/third_party/blink/renderer/platform/audio/reverb_convolver_stage.h index 46804781..2e28ba19 100644 --- a/third_party/blink/renderer/platform/audio/reverb_convolver_stage.h +++ b/third_party/blink/renderer/platform/audio/reverb_convolver_stage.h
@@ -30,6 +30,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_AUDIO_REVERB_CONVOLVER_STAGE_H_ #include <memory> +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/audio/audio_array.h" #include "third_party/blink/renderer/platform/audio/fft_frame.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" @@ -84,7 +85,7 @@ AudioFloatArray pre_delay_buffer_; - ReverbAccumulationBuffer* accumulation_buffer_; + raw_ptr<ReverbAccumulationBuffer, ExperimentalRenderer> accumulation_buffer_; uint32_t accumulation_read_index_; size_t input_read_index_;
diff --git a/third_party/blink/renderer/platform/audio/sinc_resampler.cc b/third_party/blink/renderer/platform/audio/sinc_resampler.cc index b822e2da..d2f2485 100644 --- a/third_party/blink/renderer/platform/audio/sinc_resampler.cc +++ b/third_party/blink/renderer/platform/audio/sinc_resampler.cc
@@ -28,6 +28,7 @@ #include "third_party/blink/renderer/platform/audio/sinc_resampler.h" +#include "base/memory/raw_ptr.h" #include "build/build_config.h" #include "third_party/blink/renderer/platform/audio/audio_bus.h" #include "third_party/blink/renderer/platform/wtf/math_extras.h" @@ -182,7 +183,7 @@ } private: - const float* source_; + raw_ptr<const float, ExperimentalRenderer> source_; int source_frames_available_; };
diff --git a/third_party/blink/renderer/platform/audio/sinc_resampler.h b/third_party/blink/renderer/platform/audio/sinc_resampler.h index 107ece3..fec97aaa 100644 --- a/third_party/blink/renderer/platform/audio/sinc_resampler.h +++ b/third_party/blink/renderer/platform/audio/sinc_resampler.h
@@ -29,6 +29,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_AUDIO_SINC_RESAMPLER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_AUDIO_SINC_RESAMPLER_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/audio/audio_array.h" #include "third_party/blink/renderer/platform/audio/audio_source_provider.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" @@ -87,12 +88,12 @@ // Source is copied into this buffer for each processing pass. AudioFloatArray input_buffer_; - const float* source_; + raw_ptr<const float, ExperimentalRenderer> source_; unsigned source_frames_available_; // m_sourceProvider is used to provide the audio input stream to the // resampler. - AudioSourceProvider* source_provider_; + raw_ptr<AudioSourceProvider, ExperimentalRenderer> source_provider_; // The buffer is primed once at the very beginning of processing. bool is_buffer_primed_;
diff --git a/third_party/blink/renderer/platform/audio/vector_math_test.cc b/third_party/blink/renderer/platform/audio/vector_math_test.cc index 9b52599..edf4b2f0 100644 --- a/third_party/blink/renderer/platform/audio/vector_math_test.cc +++ b/third_party/blink/renderer/platform/audio/vector_math_test.cc
@@ -9,6 +9,7 @@ #include <numeric> #include <random> +#include "base/memory/raw_ptr.h" #include "base/ranges/algorithm.h" #include "build/build_config.h" #include "testing/gtest/include/gtest/gtest.h" @@ -130,7 +131,7 @@ primary_vector.memory_layout(), primary_vector.size()) {} - Iterator begin() const { return Iterator(p_, stride()); } + Iterator begin() const { return Iterator(p_.get(), stride()); } Iterator end() const { return Iterator(p_ + size() * stride(), stride()); } ReverseIterator rbegin() const { return ReverseIterator(end()); } ReverseIterator rend() const { return ReverseIterator(begin()); } @@ -159,8 +160,8 @@ return reinterpret_cast<size_t>(p) % kMaxByteAlignment; } - T* p_; - const MemoryLayout* memory_layout_; + raw_ptr<T, ExperimentalRenderer> p_; + raw_ptr<const MemoryLayout, ExperimentalRenderer> memory_layout_; size_t size_; };
diff --git a/third_party/blink/renderer/platform/bindings/no_alloc_direct_call_host.h b/third_party/blink/renderer/platform/bindings/no_alloc_direct_call_host.h index 3d77276..0eadbba6 100644 --- a/third_party/blink/renderer/platform/bindings/no_alloc_direct_call_host.h +++ b/third_party/blink/renderer/platform/bindings/no_alloc_direct_call_host.h
@@ -30,6 +30,8 @@ #include "base/check.h" #include "base/compiler_specific.h" +#include "base/memory/raw_ptr.h" +#include "base/memory/raw_ref.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/wtf/functional.h" #include "third_party/blink/renderer/platform/wtf/vector.h" @@ -74,17 +76,18 @@ // Methods used by NoAllocDirectCallScope //======================================== - cppgc::HeapHandle& heap_handle() { return heap_handle_; } + cppgc::HeapHandle& heap_handle() { return *heap_handle_; } void EnterNoAllocDirectCallScope(v8::FastApiCallbackOptions*); void ExitNoAllocDirectCallScope(); private: // We cache the heap handle here to avoid accessing thread-local storage // (ThreadState::Current) on each NADC method call. - cppgc::HeapHandle& heap_handle_; + const raw_ref<cppgc::HeapHandle, ExperimentalRenderer> heap_handle_; WTF::Vector<DeferrableAction> deferred_actions_; - v8::FastApiCallbackOptions* callback_options_ = nullptr; + raw_ptr<v8::FastApiCallbackOptions, ExperimentalRenderer> callback_options_ = + nullptr; }; class NoAllocDirectCallScope {
diff --git a/third_party/blink/renderer/platform/bindings/parkable_string.cc b/third_party/blink/renderer/platform/bindings/parkable_string.cc index e72efd8..65dd7fc 100644 --- a/third_party/blink/renderer/platform/bindings/parkable_string.cc +++ b/third_party/blink/renderer/platform/bindings/parkable_string.cc
@@ -10,6 +10,7 @@ #include "base/allocator/partition_allocator/partition_alloc.h" #include "base/check_op.h" #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" #include "base/numerics/safe_conversions.h" @@ -177,7 +178,7 @@ const scoped_refptr<base::SingleThreadTaskRunner> callback_task_runner; const scoped_refptr<ParkableStringImpl> string; - const void* data; + raw_ptr<const void, ExperimentalRenderer> data; const size_t size; std::unique_ptr<ReservedChunk> reserved_chunk; }; @@ -712,7 +713,7 @@ // Compression touches the string. AsanUnpoisonString(params->string->string_); bool ok; - base::StringPiece data(reinterpret_cast<const char*>(params->data), + base::StringPiece data(reinterpret_cast<const char*>(params->data.get()), params->size); std::unique_ptr<Vector<uint8_t>> compressed;
diff --git a/third_party/blink/renderer/platform/bindings/runtime_call_stats.h b/third_party/blink/renderer/platform/bindings/runtime_call_stats.h index 950a7d4..8fe096cc 100644 --- a/third_party/blink/renderer/platform/bindings/runtime_call_stats.h +++ b/third_party/blink/renderer/platform/bindings/runtime_call_stats.h
@@ -9,6 +9,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_BINDINGS_RUNTIME_CALL_STATS_H_ #include "base/check_op.h" +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/renderer/platform/bindings/buildflags.h" @@ -333,12 +334,12 @@ const base::TickClock* clock() const { return clock_; } private: - RuntimeCallTimer* current_timer_ = nullptr; + raw_ptr<RuntimeCallTimer, ExperimentalRenderer> current_timer_ = nullptr; bool in_use_ = false; RuntimeCallCounter counters_[static_cast<int>(CounterId::kNumberOfCounters)]; static const int number_of_counters_ = static_cast<int>(CounterId::kNumberOfCounters); - const base::TickClock* clock_ = nullptr; + raw_ptr<const base::TickClock, ExperimentalRenderer> clock_ = nullptr; #if BUILDFLAG(RCS_COUNT_EVERYTHING) typedef HashMap<const char*, std::unique_ptr<RuntimeCallCounter>> CounterMap;
diff --git a/third_party/blink/renderer/platform/bindings/script_state.h b/third_party/blink/renderer/platform/bindings/script_state.h index 8be11a1..7c3cbdf 100644 --- a/third_party/blink/renderer/platform/bindings/script_state.h +++ b/third_party/blink/renderer/platform/bindings/script_state.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "gin/public/context_holder.h" #include "gin/public/gin_embedders.h" #include "third_party/blink/public/common/tokens/tokens.h" @@ -222,7 +223,7 @@ static void OnV8ContextCollectedCallback( const v8::WeakCallbackInfo<ScriptState>&); - v8::Isolate* isolate_; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_; // This persistent handle is weak. ScopedPersistent<v8::Context> context_;
diff --git a/third_party/blink/renderer/platform/bindings/v8_per_context_data.h b/third_party/blink/renderer/platform/bindings/v8_per_context_data.h index e62249f..412c31a 100644 --- a/third_party/blink/renderer/platform/bindings/v8_per_context_data.h +++ b/third_party/blink/renderer/platform/bindings/v8_per_context_data.h
@@ -33,6 +33,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "gin/public/context_holder.h" #include "gin/public/gin_embedders.h" #include "third_party/blink/renderer/platform/bindings/scoped_persistent.h" @@ -119,7 +120,7 @@ v8::Local<v8::Object> CreateWrapperFromCacheSlowCase(const WrapperTypeInfo*); v8::Local<v8::Function> ConstructorForTypeSlowCase(const WrapperTypeInfo*); - v8::Isolate* const isolate_; + const raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_; // For each possible type of wrapper, we keep a boilerplate object. // The boilerplate is used to create additional wrappers of the same type. @@ -134,7 +135,7 @@ ScopedPersistent<v8::Context> context_; // This is owned by a static hash map in V8DOMActivityLogger. - V8DOMActivityLogger* activity_logger_; + raw_ptr<V8DOMActivityLogger, ExperimentalRenderer> activity_logger_; using DataMap = HeapHashMap<const char*, Member<Data>>; DataMap data_map_;
diff --git a/third_party/blink/renderer/platform/blob/testing/fake_blob.h b/third_party/blink/renderer/platform/blob/testing/fake_blob.h index 774b7d39..6e78e30 100644 --- a/third_party/blink/renderer/platform/blob/testing/fake_blob.h +++ b/third_party/blink/renderer/platform/blob/testing/fake_blob.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_BLOB_TESTING_FAKE_BLOB_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_BLOB_TESTING_FAKE_BLOB_H_ +#include "base/memory/raw_ptr.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "third_party/blink/public/mojom/blob/blob.mojom-blink.h" @@ -43,7 +44,7 @@ protected: String uuid_; String body_; - State* state_; + raw_ptr<State, ExperimentalRenderer> state_; }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/disk_data_metadata.h b/third_party/blink/renderer/platform/disk_data_metadata.h index 0ce25938..c24be2c5 100644 --- a/third_party/blink/renderer/platform/disk_data_metadata.h +++ b/third_party/blink/renderer/platform/disk_data_metadata.h
@@ -10,6 +10,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/platform_export.h" namespace blink { @@ -45,7 +46,7 @@ std::unique_ptr<DiskDataMetadata> Take(); private: - DiskDataAllocator* allocator_; + raw_ptr<DiskDataAllocator, ExperimentalRenderer> allocator_; std::unique_ptr<DiskDataMetadata> metadata_; };
diff --git a/third_party/blink/renderer/platform/exported/video_capture/web_video_capture_impl_manager_test.cc b/third_party/blink/renderer/platform/exported/video_capture/web_video_capture_impl_manager_test.cc index 210ec22..ccede61 100644 --- a/third_party/blink/renderer/platform/exported/video_capture/web_video_capture_impl_manager_test.cc +++ b/third_party/blink/renderer/platform/exported/video_capture/web_video_capture_impl_manager_test.cc
@@ -7,6 +7,7 @@ #include "base/functional/bind.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/run_loop.h" #include "base/task/bind_post_task.h" @@ -108,7 +109,7 @@ MOCK_METHOD1(OnFrameDropped, void(media::VideoCaptureFrameDropReason)); MOCK_METHOD2(OnLog, void(const base::UnguessableToken&, const String&)); - PauseResumeCallback* const pause_callback_; + const raw_ptr<PauseResumeCallback, ExperimentalRenderer> pause_callback_; base::OnceClosure destruct_callback_; }; @@ -134,7 +135,7 @@ return std::move(video_capture_impl); } - PauseResumeCallback* const pause_callback_; + const raw_ptr<PauseResumeCallback, ExperimentalRenderer> pause_callback_; const base::RepeatingClosure stop_capture_callback_; }; @@ -244,7 +245,8 @@ platform_; base::RunLoop cleanup_run_loop_; std::unique_ptr<MockVideoCaptureImplManager> manager_; - BrowserInterfaceBrokerProxy* browser_interface_broker_; + raw_ptr<BrowserInterfaceBrokerProxy, ExperimentalRenderer> + browser_interface_broker_; }; // Multiple clients with the same session id. There is only one
diff --git a/third_party/blink/renderer/platform/exported/web_url_request_extra_data_test.cc b/third_party/blink/renderer/platform/exported/web_url_request_extra_data_test.cc index ae5094e8..702f6f1e 100644 --- a/third_party/blink/renderer/platform/exported/web_url_request_extra_data_test.cc +++ b/third_party/blink/renderer/platform/exported/web_url_request_extra_data_test.cc
@@ -29,6 +29,7 @@ */ #include "third_party/blink/public/platform/web_url_request_extra_data.h" +#include "base/memory/raw_ptr.h" #include "third_party/blink/public/platform/web_url_request.h" #include "testing/gtest/include/gtest/gtest.h" @@ -44,7 +45,7 @@ private: ~RequestTestExtraData() override { *alive_ = false; } - bool* alive_; + raw_ptr<bool, ExperimentalRenderer> alive_; }; } // anonymous namespace
diff --git a/third_party/blink/renderer/platform/fonts/font_fallback_list.h b/third_party/blink/renderer/platform/fonts/font_fallback_list.h index aebf0e0..24b0c20 100644 --- a/third_party/blink/renderer/platform/fonts/font_fallback_list.h +++ b/third_party/blink/renderer/platform/fonts/font_fallback_list.h
@@ -21,6 +21,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_FONT_FALLBACK_LIST_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_FONT_FALLBACK_LIST_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "third_party/blink/renderer/platform/fonts/fallback_list_composite_key.h" #include "third_party/blink/renderer/platform/fonts/font_cache.h" @@ -137,7 +138,8 @@ bool ComputeCanShapeWordByWord(const FontDescription&); Vector<scoped_refptr<FontData>, 1> font_list_; - const SimpleFontData* cached_primary_simple_font_data_ = nullptr; + raw_ptr<const SimpleFontData, ExperimentalRenderer> + cached_primary_simple_font_data_ = nullptr; const WeakPersistent<FontFallbackMap> font_fallback_map_; int family_index_ = 0; const uint16_t generation_;
diff --git a/third_party/blink/renderer/platform/fonts/ng_text_fragment_paint_info.h b/third_party/blink/renderer/platform/fonts/ng_text_fragment_paint_info.h index 3e9f7ab0..0e6972f4 100644 --- a/third_party/blink/renderer/platform/fonts/ng_text_fragment_paint_info.h +++ b/third_party/blink/renderer/platform/fonts/ng_text_fragment_paint_info.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_NG_TEXT_FRAGMENT_PAINT_INFO_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_NG_TEXT_FRAGMENT_PAINT_INFO_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/wtf/text/string_view.h" @@ -28,7 +29,7 @@ // The |shape_result| may not contain all characters of the |text|, but is // guaranteed to contain |from| to |to|. - const ShapeResultView* shape_result; + raw_ptr<const ShapeResultView, ExperimentalRenderer> shape_result; }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/fonts/opentype/open_type_baseline_metrics.h b/third_party/blink/renderer/platform/fonts/opentype/open_type_baseline_metrics.h index 33db1c8..9fb6faa 100644 --- a/third_party/blink/renderer/platform/fonts/opentype/open_type_baseline_metrics.h +++ b/third_party/blink/renderer/platform/fonts/opentype/open_type_baseline_metrics.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_OPENTYPE_OPEN_TYPE_BASELINE_METRICS_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_OPENTYPE_OPEN_TYPE_BASELINE_METRICS_H_ +#include "base/memory/raw_ptr.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/renderer/platform/fonts/font_description.h" @@ -28,7 +29,7 @@ absl::optional<float> OpenTypeIdeographicBaseline(); private: - hb_font_t* font_; + raw_ptr<hb_font_t, ExperimentalRenderer> font_; hb_direction_t hb_dir_; };
diff --git a/third_party/blink/renderer/platform/fonts/script_run_iterator.h b/third_party/blink/renderer/platform/fonts/script_run_iterator.h index 4b4f283..eb43c42 100644 --- a/third_party/blink/renderer/platform/fonts/script_run_iterator.h +++ b/third_party/blink/renderer/platform/fonts/script_run_iterator.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_SCRIPT_RUN_ITERATOR_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_SCRIPT_RUN_ITERATOR_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" #include "third_party/blink/renderer/platform/wtf/deque.h" @@ -71,7 +72,7 @@ UScriptCode common_preferred_; - const ScriptData* script_data_; + raw_ptr<const ScriptData, ExperimentalRenderer> script_data_; }; // ScriptData is a wrapper which returns a set of scripts for a particular
diff --git a/third_party/blink/renderer/platform/fonts/shaping/font_features.cc b/third_party/blink/renderer/platform/fonts/shaping/font_features.cc index 6efcde2a..78660763 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/font_features.cc +++ b/third_party/blink/renderer/platform/fonts/shaping/font_features.cc
@@ -197,7 +197,8 @@ const hb_tag_t chws_or_vchw = is_horizontal ? HB_TAG('c', 'h', 'w', 's') : HB_TAG('v', 'c', 'h', 'w'); - bool default_enable_chws = true; + bool default_enable_chws = + description.GetTextSpacingTrim() == TextSpacingTrim::kSpaceFirst; const FontFeatureSettings* settings = description.FeatureSettings(); if (UNLIKELY(settings)) {
diff --git a/third_party/blink/renderer/platform/fonts/shaping/han_kerning.cc b/third_party/blink/renderer/platform/fonts/shaping/han_kerning.cc index af905b9..e40e00b 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/han_kerning.cc +++ b/third_party/blink/renderer/platform/fonts/shaping/han_kerning.cc
@@ -112,9 +112,14 @@ wtf_size_t start, wtf_size_t end, const SimpleFontData& font, - const LayoutLocale& locale, + const FontDescription& font_description, bool is_horizontal, FontFeatures& features) { + if (UNLIKELY(font_description.GetTextSpacingTrim() != + TextSpacingTrim::kSpaceFirst)) { + return; + } + const LayoutLocale& locale = font_description.LocaleOrDefault(); const FontData& font_data = font.HanKerningData(locale, is_horizontal); if (!font_data.has_alternate_spacing) { return;
diff --git a/third_party/blink/renderer/platform/fonts/shaping/han_kerning.h b/third_party/blink/renderer/platform/fonts/shaping/han_kerning.h index 9c431c3c..be2c6c7 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/han_kerning.h +++ b/third_party/blink/renderer/platform/fonts/shaping/han_kerning.h
@@ -11,6 +11,7 @@ namespace blink { +class FontDescription; class FontFeatures; class LayoutLocale; class SimpleFontData; @@ -45,14 +46,15 @@ wtf_size_t start, wtf_size_t end, const SimpleFontData& font_data, - const LayoutLocale& locale, + const FontDescription& font_description, bool is_horizontal, FontFeatures& features) { if (!RuntimeEnabledFeatures::CSSTextSpacingTrimEnabled()) { return; } // TODO(crbug.com/1463890): Add more conditions to fail fast. - Compute(text, start, end, font_data, locale, is_horizontal, features); + Compute(text, start, end, font_data, font_description, is_horizontal, + features); } enum class CharType : uint8_t { @@ -97,7 +99,7 @@ wtf_size_t start, wtf_size_t end, const SimpleFontData& font_data, - const LayoutLocale& locale, + const FontDescription& font_description, bool is_horizontal, FontFeatures& features); };
diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc index f9a2711..5616fe37 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc +++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc
@@ -39,6 +39,7 @@ #include <memory> #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "build/build_config.h" #include "third_party/blink/renderer/platform/fonts/font_cache.h" #include "third_party/blink/renderer/platform/fonts/font_global_context.h" @@ -389,9 +390,11 @@ return funcs; } - hb_font_funcs_t* const hb_font_funcs_skia_advances_; + const raw_ptr<hb_font_funcs_t, ExperimentalRenderer> + hb_font_funcs_skia_advances_; #if BUILDFLAG(IS_APPLE) - hb_font_funcs_t* const hb_font_funcs_harfbuzz_advances_; + const raw_ptr<hb_font_funcs_t, ExperimentalRenderer> + hb_font_funcs_harfbuzz_advances_; #endif };
diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h index d02e5ae..e535671d 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h +++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h
@@ -31,6 +31,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_SHAPING_HARFBUZZ_FACE_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_SHAPING_HARFBUZZ_FACE_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/fonts/glyph.h" #include "third_party/blink/renderer/platform/fonts/typesetting_features.h" #include "third_party/blink/renderer/platform/fonts/unicode_range_set.h" @@ -91,10 +92,10 @@ void PrepareHarfBuzzFontData(); - FontPlatformData* const platform_data_; + const raw_ptr<FontPlatformData, ExperimentalRenderer> platform_data_; const uint64_t unique_id_; - hb_font_t* unscaled_font_; - HarfBuzzFontData* harfbuzz_font_data_; + raw_ptr<hb_font_t, ExperimentalRenderer> unscaled_font_; + raw_ptr<HarfBuzzFontData, ExperimentalRenderer> harfbuzz_font_data_; }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_shaper.cc b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_shaper.cc index 5f5219c..9e2c7aa 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_shaper.cc +++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_shaper.cc
@@ -848,9 +848,10 @@ &range_data->font_features, caps_support.FontFeatureToUse(small_caps_behavior)); hb_direction_t direction = range_data->HarfBuzzDirection(canvas_rotation); - HanKerning han_kerning( - text_, range_data->start, range_data->end, *adjusted_font, locale, - HB_DIRECTION_IS_HORIZONTAL(direction), range_data->font_features); + HanKerning han_kerning(text_, range_data->start, range_data->end, + *adjusted_font, font_description, + HB_DIRECTION_IS_HORIZONTAL(direction), + range_data->font_features); if (!ShapeRange(range_data->buffer, range_data->font_features, adjusted_font, current_font_data_for_range_set->Ranges(),
diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_shaper_test.cc b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_shaper_test.cc index ce33eb40..bf7ad0a 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_shaper_test.cc +++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_shaper_test.cc
@@ -826,9 +826,10 @@ const auto& run = TestInfo(result)->RunInfoForTesting(data.run_index); auto glyphs = run.FindGlyphDataRange(data.start_offset, data.end_offset); - unsigned start_glyph = std::distance(run.glyph_data_.begin(), glyphs.begin); + unsigned start_glyph = + std::distance(run.glyph_data_.begin(), glyphs.begin.get()); EXPECT_EQ(data.start_glyph, start_glyph); - unsigned end_glyph = std::distance(run.glyph_data_.begin(), glyphs.end); + unsigned end_glyph = std::distance(run.glyph_data_.begin(), glyphs.end.get()); EXPECT_EQ(data.end_glyph, end_glyph); }
diff --git a/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc b/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc index 211e267..1569518 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc +++ b/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc
@@ -39,6 +39,7 @@ #include "base/containers/adapters.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/numerics/safe_conversions.h" #include "build/build_config.h" #include "third_party/blink/renderer/platform/fonts/character_range.h" @@ -70,7 +71,7 @@ void* pointers[2]; unsigned integer; } glyph_data; - void* pointer; + raw_ptr<void, ExperimentalRenderer> pointer; Vector<int> vector; int integers[6]; };
diff --git a/third_party/blink/renderer/platform/fonts/shaping/shape_result.h b/third_party/blink/renderer/platform/fonts/shaping/shape_result.h index 4372634..4043b2f 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/shape_result.h +++ b/third_party/blink/renderer/platform/fonts/shaping/shape_result.h
@@ -35,6 +35,7 @@ #include "base/containers/span.h" #include "base/dcheck_is_on.h" +#include "base/memory/raw_ptr.h" #include "base/types/strong_alias.h" #include "third_party/blink/renderer/platform/fonts/canvas_rotation_in_vertical.h" #include "third_party/blink/renderer/platform/fonts/glyph.h" @@ -315,7 +316,7 @@ unsigned start; unsigned end; - ShapeResult* target; + raw_ptr<ShapeResult, ExperimentalRenderer> target; }; // Copy a set of sequential ranges. The ranges may not overlap and the offsets
diff --git a/third_party/blink/renderer/platform/fonts/shaping/shape_result_bloberizer_test.cc b/third_party/blink/renderer/platform/fonts/shaping/shape_result_bloberizer_test.cc index 1496e0a..d5d176696 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/shape_result_bloberizer_test.cc +++ b/third_party/blink/renderer/platform/fonts/shaping/shape_result_bloberizer_test.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/platform/fonts/shaping/shape_result_bloberizer.h" #include <memory> +#include "base/memory/raw_ptr.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/renderer/platform/fonts/character_range.h" @@ -54,7 +55,7 @@ FontDescription font_description; Font font; std::unique_ptr<ShapeCache> cache; - HashSet<const SimpleFontData*>* fallback_fonts; + raw_ptr<HashSet<const SimpleFontData*>, ExperimentalRenderer> fallback_fonts; unsigned start_index = 0; unsigned num_glyphs = 0; hb_script_t script = HB_SCRIPT_INVALID;
diff --git a/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h b/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h index d98e223..376dd7b3 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h +++ b/third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h
@@ -39,6 +39,7 @@ #include <type_traits> #include "base/check_op.h" +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/fonts/shaping/shape_result.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" #include "third_party/blink/renderer/platform/wtf/vector.h" @@ -158,9 +159,9 @@ unsigned end_character_index) const; unsigned size() const { return static_cast<unsigned>(end - begin); } - const HarfBuzzRunGlyphData* begin = nullptr; - const HarfBuzzRunGlyphData* end = nullptr; - const GlyphOffset* offsets = nullptr; + raw_ptr<const HarfBuzzRunGlyphData, ExperimentalRenderer> begin = nullptr; + raw_ptr<const HarfBuzzRunGlyphData, ExperimentalRenderer> end = nullptr; + raw_ptr<const GlyphOffset, ExperimentalRenderer> offsets = nullptr; }; // Find the range of HarfBuzzRunGlyphData for the specified character index @@ -178,8 +179,8 @@ DCHECK(end > start); unsigned number_of_characters = std::min(end - start, num_characters_); auto glyphs = FindGlyphDataRange(start, end); - unsigned number_of_glyphs = - static_cast<unsigned>(std::distance(glyphs.begin, glyphs.end)); + unsigned number_of_glyphs = static_cast<unsigned>( + std::distance(glyphs.begin.get(), glyphs.end.get())); if (UNLIKELY(!number_of_glyphs)) return nullptr; @@ -349,7 +350,8 @@ storage_.reset(); return; } - std::copy(range.offsets, range.offsets + range.size(), AllocateStorage()); + std::copy(range.offsets.get(), (range.offsets + range.size()).get(), + AllocateStorage()); } GlyphOffset* GetStorage() const { return storage_.get(); } @@ -470,7 +472,7 @@ void CopyFromRange(const GlyphDataRange& range) { CHECK_EQ(static_cast<size_t>(range.end - range.begin), size()); static_assert(std::is_trivially_copyable_v<HarfBuzzRunGlyphData>); - std::copy(range.begin, range.end, data_.get()); + std::copy(range.begin.get(), range.end.get(), data_.get()); offsets_.CopyFromRange(range); } @@ -590,7 +592,7 @@ GlyphOffset operator*() const { return *pointer; } void operator++() { ++pointer; } - const GlyphOffset* pointer; + raw_ptr<const GlyphOffset, ExperimentalRenderer> pointer; }; // For zero glyph offset array @@ -616,12 +618,12 @@ return glyph_data.character_index < index; }; if (!is_rtl) { - const HarfBuzzRunGlyphData* start_glyph = - std::lower_bound(begin, end, start_character_index, comparer); + const HarfBuzzRunGlyphData* start_glyph = std::lower_bound( + begin.get(), end.get(), start_character_index, comparer); if (UNLIKELY(start_glyph == end)) return GlyphDataRange(); const HarfBuzzRunGlyphData* end_glyph = - std::lower_bound(start_glyph, end, end_character_index, comparer); + std::lower_bound(start_glyph, end.get(), end_character_index, comparer); if (offsets) return {start_glyph, end_glyph, offsets + (start_glyph - begin)}; return {start_glyph, end_glyph, nullptr}; @@ -629,8 +631,10 @@ // RTL needs to use reverse iterators because there maybe multiple glyphs // for a character, and we want to find the first one in the logical order. - const auto rbegin = std::reverse_iterator<const HarfBuzzRunGlyphData*>(end); - const auto rend = std::reverse_iterator<const HarfBuzzRunGlyphData*>(begin); + const auto rbegin = + std::reverse_iterator<const HarfBuzzRunGlyphData*>(end.get()); + const auto rend = + std::reverse_iterator<const HarfBuzzRunGlyphData*>(begin.get()); const auto start_glyph_it = std::lower_bound(rbegin, rend, start_character_index, comparer); if (UNLIKELY(start_glyph_it == rend))
diff --git a/third_party/blink/renderer/platform/fonts/shaping/shape_result_view.cc b/third_party/blink/renderer/platform/fonts/shaping/shape_result_view.cc index 1541b054..480cfb51 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/shape_result_view.cc +++ b/third_party/blink/renderer/platform/fonts/shaping/shape_result_view.cc
@@ -362,7 +362,7 @@ } else { range = run->FindGlyphDataRange(range_start, range_end); part_width = std::accumulate( - range.begin, range.end, 0.0f, + range.begin.get(), range.end.get(), 0.0f, [](float sum, auto& glyph) { return sum + glyph.advance; }); }
diff --git a/third_party/blink/renderer/platform/fonts/shaping/shape_result_view.h b/third_party/blink/renderer/platform/fonts/shaping/shape_result_view.h index 2771f09db..0fff9db 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/shape_result_view.h +++ b/third_party/blink/renderer/platform/fonts/shaping/shape_result_view.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_SHAPING_SHAPE_RESULT_VIEW_H_ #include "base/containers/span.h" +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/fonts/shaping/shape_result.h" #include "third_party/blink/renderer/platform/fonts/simple_font_data.h" #include "third_party/blink/renderer/platform/geometry/layout_unit.h" @@ -84,8 +85,8 @@ view(view), start_index(start_index), end_index(end_index) {} - const ShapeResult* result; - const ShapeResultView* view; + raw_ptr<const ShapeResult, ExperimentalRenderer> result; + raw_ptr<const ShapeResultView, ExperimentalRenderer> view; unsigned start_index; unsigned end_index; };
diff --git a/third_party/blink/renderer/platform/fonts/shaping/shaping_line_breaker.cc b/third_party/blink/renderer/platform/fonts/shaping/shaping_line_breaker.cc index 2c0c2abd..2e2323c 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/shaping_line_breaker.cc +++ b/third_party/blink/renderer/platform/fonts/shaping/shaping_line_breaker.cc
@@ -265,9 +265,10 @@ unsigned candidate_break = result_->CachedOffsetForPosition(end_position) + range_start; - unsigned first_safe = (options & kDontReshapeStart) - ? start - : result_->CachedNextSafeToBreakOffset(start); + // When it's not at the start of a wrapped line, disable reshaping. + unsigned first_safe = (options & kStartOfLine) + ? result_->CachedNextSafeToBreakOffset(start) + : start; DCHECK_GE(first_safe, start); if (candidate_break >= range_end) { // The |result_| does not have glyphs to fill the available space, @@ -584,9 +585,7 @@ unsigned first_safe; scoped_refptr<const ShapeResult> line_start_result; - if (options & kDontReshapeStart) { - first_safe = start; - } else { + if (options & kStartOfLine) { first_safe = result_->CachedNextSafeToBreakOffset(start); DCHECK_GE(first_safe, start); if (first_safe != start) { @@ -597,6 +596,8 @@ } line_start_result = Shape(start, first_safe); } + } else { + first_safe = start; } unsigned last_safe;
diff --git a/third_party/blink/renderer/platform/fonts/shaping/shaping_line_breaker.h b/third_party/blink/renderer/platform/fonts/shaping/shaping_line_breaker.h index c078f5b..d6b09aa7 100644 --- a/third_party/blink/renderer/platform/fonts/shaping/shaping_line_breaker.h +++ b/third_party/blink/renderer/platform/fonts/shaping/shaping_line_breaker.h
@@ -68,9 +68,8 @@ // based on the shaping results for the entire paragraph. enum Options { kDefaultOptions = 0, - // Disable reshpaing the start edge even if the start offset is not safe- - // to-break. Set if this is not at the start edge of a wrapped line. - kDontReshapeStart = 1 << 0, + // Set when the start is at the start of a wrapped line. + kStartOfLine = 1 << 0, // Disable reshaping the end edge if it is at a breakable space, even if it // is not safe-to-break. Good for performance if accurate width is not // critical.
diff --git a/third_party/blink/renderer/platform/geometry/float_polygon.h b/third_party/blink/renderer/platform/geometry/float_polygon.h index 566da7f..54ea186 100644 --- a/third_party/blink/renderer/platform/geometry/float_polygon.h +++ b/third_party/blink/renderer/platform/geometry/float_polygon.h
@@ -31,6 +31,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GEOMETRY_FLOAT_POLYGON_H_ #include "base/check_op.h" +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" #include "third_party/blink/renderer/platform/wtf/pod_interval_tree.h" @@ -132,7 +133,7 @@ unsigned vertex_index1_; unsigned vertex_index2_; unsigned edge_index_; - const FloatPolygon* polygon_; + raw_ptr<const FloatPolygon, ExperimentalRenderer> polygon_; }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/animation_worklet_mutator_dispatcher_impl.h b/third_party/blink/renderer/platform/graphics/animation_worklet_mutator_dispatcher_impl.h index f182735..cbd525f 100644 --- a/third_party/blink/renderer/platform/graphics/animation_worklet_mutator_dispatcher_impl.h +++ b/third_party/blink/renderer/platform/graphics/animation_worklet_mutator_dispatcher_impl.h
@@ -8,6 +8,7 @@ #include <memory> #include <utility> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/time/tick_clock.h" @@ -137,7 +138,7 @@ // The MutatorClient owns (std::unique_ptr) us, so this pointer is // valid as long as this class exists. - MutatorClient* client_; + raw_ptr<MutatorClient, ExperimentalRenderer> client_; // Map of mutator scope IDs to mutator input. The Mutate methods safeguards // against concurrent calls (important once async mutations are introduced) by
diff --git a/third_party/blink/renderer/platform/graphics/animation_worklet_mutator_dispatcher_impl_test.cc b/third_party/blink/renderer/platform/graphics/animation_worklet_mutator_dispatcher_impl_test.cc index c9a84a96..0f89359 100644 --- a/third_party/blink/renderer/platform/graphics/animation_worklet_mutator_dispatcher_impl_test.cc +++ b/third_party/blink/renderer/platform/graphics/animation_worklet_mutator_dispatcher_impl_test.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/platform/graphics/animation_worklet_mutator_dispatcher_impl.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/task/single_thread_task_runner.h" #include "base/test/metrics/histogram_tester.h" @@ -110,7 +111,7 @@ void TearDown() override { mutator_ = nullptr; } std::unique_ptr<::testing::StrictMock<MockCompositorMutatorClient>> client_; - AnimationWorkletMutatorDispatcherImpl* mutator_; + raw_ptr<AnimationWorkletMutatorDispatcherImpl, ExperimentalRenderer> mutator_; }; std::unique_ptr<AnimationWorkletDispatcherInput> CreateTestMutatorInput() {
diff --git a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h index bc0d255..f514471d 100644 --- a/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h +++ b/third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h
@@ -29,6 +29,7 @@ #include <memory> #include <utility> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/rand_util.h" #include "build/build_config.h" @@ -156,7 +157,8 @@ }; mutable SnapshotState snapshot_state_; - CanvasResourceHost* resource_host_; + raw_ptr<CanvasResourceHost, ExperimentalRenderer> resource_host_; + viz::TransferableResource previous_frame_resource_; absl::optional<cc::PaintRecord> last_recording_;
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource.h b/third_party/blink/renderer/platform/graphics/canvas_resource.h index bfe370fa..012ff322 100644 --- a/third_party/blink/renderer/platform/graphics/canvas_resource.h +++ b/third_party/blink/renderer/platform/graphics/canvas_resource.h
@@ -4,6 +4,7 @@ #include "base/check_op.h" #include "base/dcheck_is_on.h" +#include "base/memory/raw_ptr.h" #include "base/memory/shared_memory_mapping.h" #include "base/memory/weak_ptr.h" #include "base/notreached.h" @@ -483,7 +484,7 @@ // MapSharedImage() which should be fine since we are preserving legacy // behavior of not modifying the CPU mapped memory content on non owning // thread. Note that this will be only used when MappableSI is enabled. - gpu::SharedImageInterface* const sii_; + const raw_ptr<gpu::SharedImageInterface, ExperimentalRenderer> sii_; OwningThreadData owning_thread_data_; };
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.h b/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.h index 87a032a..6e7f3a8 100644 --- a/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.h +++ b/third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/read_only_shared_memory_region.h" #include "base/task/single_thread_task_runner.h" #include "cc/paint/paint_flags.h" @@ -168,7 +169,7 @@ viz::BeginFrameAck current_begin_frame_ack_; - CanvasResourceDispatcherClient* client_; + raw_ptr<CanvasResourceDispatcherClient, ExperimentalRenderer> client_; scoped_refptr<base::SingleThreadTaskRunner> task_runner_; scoped_refptr<base::SingleThreadTaskRunner>
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource_provider.h b/third_party/blink/renderer/platform/graphics/canvas_resource_provider.h index e9f654a..3b784e7 100644 --- a/third_party/blink/renderer/platform/graphics/canvas_resource_provider.h +++ b/third_party/blink/renderer/platform/graphics/canvas_resource_provider.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_CANVAS_RESOURCE_PROVIDER_H_ #include "base/feature_list.h" +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "cc/paint/skia_paint_canvas.h" #include "cc/raster/playback_image_provider.h" @@ -391,7 +392,7 @@ size_t max_recorded_op_bytes_; size_t max_pinned_image_bytes_; - CanvasResourceHost* resource_host_ = nullptr; + raw_ptr<CanvasResourceHost, ExperimentalRenderer> resource_host_ = nullptr; bool clear_frame_ = true; FlushReason last_flush_reason_ = FlushReason::kNone;
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 f0a900f..ba8a1c7 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
@@ -766,8 +766,8 @@ cc::LayerTreeHost* layer_tree_host) { // The inner and outer viewports' existence is linked. That is, either they're // both null or they both exist. - CHECK_EQ(static_cast<bool>(properties.outer_scroll_translation), - static_cast<bool>(properties.inner_scroll_translation)); + CHECK_EQ(static_cast<bool>(properties.outer_scroll_translation.get()), + static_cast<bool>(properties.inner_scroll_translation.get())); CHECK(!properties.outer_clip || static_cast<bool>(properties.inner_scroll_translation));
diff --git a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h index 2e14563..d40ec90 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h +++ b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h
@@ -9,6 +9,7 @@ #include "base/dcheck_is_on.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "cc/layers/content_layer_client.h" #include "cc/layers/layer_collections.h" @@ -120,11 +121,16 @@ ~PaintArtifactCompositor() override; struct ViewportProperties { - const TransformPaintPropertyNode* overscroll_elasticity_transform = nullptr; - const TransformPaintPropertyNode* page_scale = nullptr; - const TransformPaintPropertyNode* inner_scroll_translation = nullptr; - const ClipPaintPropertyNode* outer_clip = nullptr; - const TransformPaintPropertyNode* outer_scroll_translation = nullptr; + raw_ptr<const TransformPaintPropertyNode, ExperimentalRenderer> + overscroll_elasticity_transform = nullptr; + raw_ptr<const TransformPaintPropertyNode, ExperimentalRenderer> page_scale = + nullptr; + raw_ptr<const TransformPaintPropertyNode, ExperimentalRenderer> + inner_scroll_translation = nullptr; + raw_ptr<const ClipPaintPropertyNode, ExperimentalRenderer> outer_clip = + nullptr; + raw_ptr<const TransformPaintPropertyNode, ExperimentalRenderer> + outer_scroll_translation = nullptr; }; // Updates the cc layer list and property trees to match those provided in @@ -326,7 +332,7 @@ scoped_refptr<cc::Layer> root_layer_; struct SynthesizedClipEntry { - const ClipPaintPropertyNode* key; + raw_ptr<const ClipPaintPropertyNode, ExperimentalRenderer> key; std::unique_ptr<SynthesizedClip> synthesized_clip; bool in_use; };
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 88fdedb..9d6771c 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
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/platform/graphics/compositing/paint_chunks_to_cc_layer.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/numerics/safe_conversions.h" #include "cc/input/layer_selection_bound.h" #include "cc/layers/layer.h" @@ -234,11 +235,12 @@ bool NeedsRestore() const { return type_ != kClipOmitted; } // These fields are neve nullptr. - const TransformPaintPropertyNode* transform; - const ClipPaintPropertyNode* clip; - const EffectPaintPropertyNode* effect; + raw_ptr<const TransformPaintPropertyNode, ExperimentalRenderer> transform; + raw_ptr<const ClipPaintPropertyNode, ExperimentalRenderer> clip; + raw_ptr<const EffectPaintPropertyNode, ExperimentalRenderer> effect; // See ConversionContext<Result>::previous_transform_. - const TransformPaintPropertyNode* previous_transform; + raw_ptr<const TransformPaintPropertyNode, ExperimentalRenderer> + previous_transform; #if DCHECK_IS_ON() bool has_pre_cap_effect_hierarchy_issue = false; #endif @@ -278,7 +280,7 @@ // UpdateSaveLayerBounds(). size_t save_layer_id; // The transform space when the SaveLayer[Alpha]Op was emitted. - const TransformPaintPropertyNode* transform; + raw_ptr<const TransformPaintPropertyNode, ExperimentalRenderer> transform; // Records the bounds of the effect which initiated the entry. Note that // the effect is not |effect| (which is the previous effect), but the // |current_effect_| when this entry is the top of the stack. @@ -856,10 +858,10 @@ PaintOpBufferExt buffer; ConversionContext(layer_state, layer_offset, buffer).Convert(chunks); recorder.getRecordingCanvas()->drawPicture(buffer.ReleaseAsRecord()); - params.tracking.CheckUnderInvalidations(params.debug_name, - recorder.finishRecordingAsPicture(), - params.interest_rect); - auto under_invalidation_record = params.tracking.UnderInvalidationRecord(); + params.tracking->CheckUnderInvalidations( + params.debug_name, recorder.finishRecordingAsPicture(), + params.interest_rect); + auto under_invalidation_record = params.tracking->UnderInvalidationRecord(); if (!under_invalidation_record.empty()) { cc_list.StartPaint(); cc_list.push<cc::DrawRecordOp>(std::move(under_invalidation_record));
diff --git a/third_party/blink/renderer/platform/graphics/compositing/paint_chunks_to_cc_layer.h b/third_party/blink/renderer/platform/graphics/compositing/paint_chunks_to_cc_layer.h index 34888dcf..e0f409c 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/paint_chunks_to_cc_layer.h +++ b/third_party/blink/renderer/platform/graphics/compositing/paint_chunks_to_cc_layer.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_COMPOSITING_PAINT_CHUNKS_TO_CC_LAYER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_COMPOSITING_PAINT_CHUNKS_TO_CC_LAYER_H_ +#include "base/memory/raw_ref.h" #include "base/memory/scoped_refptr.h" #include "cc/input/layer_selection_bound.h" #include "cc/paint/display_item_list.h" @@ -34,7 +35,7 @@ interest_rect(interest_rect), debug_name(debug_name) {} - RasterInvalidationTracking& tracking; + const raw_ref<RasterInvalidationTracking, ExperimentalRenderer> tracking; gfx::Rect interest_rect; String debug_name; };
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 a9d5b2e..23cba56b 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
@@ -255,34 +255,34 @@ void PropertyTreeManager::SetupRootTransformNode() { // cc is hardcoded to use transform node index 1 for device scale and // transform. - transform_tree_.clear(); - cc::TransformNode& transform_node = *transform_tree_.Node( - transform_tree_.Insert(cc::TransformNode(), cc::kRootPropertyNodeId)); + transform_tree_->clear(); + cc::TransformNode& transform_node = *transform_tree_->Node( + transform_tree_->Insert(cc::TransformNode(), cc::kRootPropertyNodeId)); DCHECK_EQ(transform_node.id, cc::kSecondaryRootPropertyNodeId); // TODO(jaydasika): We shouldn't set ToScreen and FromScreen of root // transform node here. They should be set while updating transform tree in // cc. float device_scale_factor = - root_layer_.layer_tree_host()->device_scale_factor(); - transform_tree_.set_device_scale_factor(device_scale_factor); + root_layer_->layer_tree_host()->device_scale_factor(); + transform_tree_->set_device_scale_factor(device_scale_factor); gfx::Transform to_screen; to_screen.Scale(device_scale_factor, device_scale_factor); - transform_tree_.SetToScreen(cc::kRootPropertyNodeId, to_screen); + transform_tree_->SetToScreen(cc::kRootPropertyNodeId, to_screen); gfx::Transform from_screen = to_screen.GetCheckedInverse(); - transform_tree_.SetFromScreen(cc::kRootPropertyNodeId, from_screen); - transform_tree_.set_needs_update(true); + transform_tree_->SetFromScreen(cc::kRootPropertyNodeId, from_screen); + transform_tree_->set_needs_update(true); TransformPaintPropertyNode::Root().SetCcNodeId(new_sequence_number_, transform_node.id); - root_layer_.SetTransformTreeIndex(transform_node.id); + root_layer_->SetTransformTreeIndex(transform_node.id); } void PropertyTreeManager::SetupRootClipNode() { // cc is hardcoded to use clip node index 1 for viewport clip. - clip_tree_.clear(); - cc::ClipNode& clip_node = *clip_tree_.Node( - clip_tree_.Insert(cc::ClipNode(), cc::kRootPropertyNodeId)); + clip_tree_->clear(); + cc::ClipNode& clip_node = *clip_tree_->Node( + clip_tree_->Insert(cc::ClipNode(), cc::kRootPropertyNodeId)); DCHECK_EQ(clip_node.id, cc::kSecondaryRootPropertyNodeId); // TODO(bokan): This needs to come from the Visual Viewport which will @@ -290,18 +290,18 @@ // tree builder should probably be the one to create the property tree state // and have this created in the same way as other layers. clip_node.clip = - gfx::RectF(root_layer_.layer_tree_host()->device_viewport_rect()); + gfx::RectF(root_layer_->layer_tree_host()->device_viewport_rect()); clip_node.transform_id = cc::kRootPropertyNodeId; ClipPaintPropertyNode::Root().SetCcNodeId(new_sequence_number_, clip_node.id); - root_layer_.SetClipTreeIndex(clip_node.id); + root_layer_->SetClipTreeIndex(clip_node.id); } void PropertyTreeManager::SetupRootEffectNode() { // cc is hardcoded to use effect node index 1 for root render surface. - effect_tree_.clear(); - cc::EffectNode& effect_node = *effect_tree_.Node( - effect_tree_.Insert(cc::EffectNode(), cc::kInvalidPropertyNodeId)); + effect_tree_->clear(); + cc::EffectNode& effect_node = *effect_tree_->Node( + effect_tree_->Insert(cc::EffectNode(), cc::kInvalidPropertyNodeId)); DCHECK_EQ(effect_node.id, cc::kSecondaryRootPropertyNodeId); static UniqueObjectId unique_id = NewUniqueObjectId(); @@ -310,7 +310,7 @@ effect_node.transform_id = cc::kRootPropertyNodeId; effect_node.clip_id = cc::kSecondaryRootPropertyNodeId; effect_node.render_surface_reason = cc::RenderSurfaceReason::kRoot; - root_layer_.SetEffectTreeIndex(effect_node.id); + root_layer_->SetEffectTreeIndex(effect_node.id); EffectPaintPropertyNode::Root().SetCcNodeId(new_sequence_number_, effect_node.id); @@ -320,15 +320,15 @@ } void PropertyTreeManager::SetupRootScrollNode() { - scroll_tree_.clear(); - cc::ScrollNode& scroll_node = *scroll_tree_.Node( - scroll_tree_.Insert(cc::ScrollNode(), cc::kRootPropertyNodeId)); + scroll_tree_->clear(); + cc::ScrollNode& scroll_node = *scroll_tree_->Node( + scroll_tree_->Insert(cc::ScrollNode(), cc::kRootPropertyNodeId)); DCHECK_EQ(scroll_node.id, cc::kSecondaryRootPropertyNodeId); scroll_node.transform_id = cc::kSecondaryRootPropertyNodeId; ScrollPaintPropertyNode::Root().SetCcNodeId(new_sequence_number_, scroll_node.id); - root_layer_.SetScrollTreeIndex(scroll_node.id); + root_layer_->SetScrollTreeIndex(scroll_node.id); } static bool TransformsToAncestorHaveNonAxisAlignedActiveAnimation( @@ -405,14 +405,14 @@ const TransformPaintPropertyNode& transform_node) { int id = transform_node.CcNodeId(new_sequence_number_); if (id != cc::kInvalidPropertyNodeId) { - DCHECK(transform_tree_.Node(id)); + DCHECK(transform_tree_->Node(id)); return id; } DCHECK(transform_node.Parent()); int parent_id = EnsureCompositorTransformNode(transform_node.Parent()->Unalias()); - id = transform_tree_.Insert(cc::TransformNode(), parent_id); + id = transform_tree_->Insert(cc::TransformNode(), parent_id); if (auto* scroll_translation_for_fixed = transform_node.ScrollTranslationForFixed()) { @@ -422,7 +422,7 @@ EnsureCompositorTransformNode(*scroll_translation_for_fixed); } - cc::TransformNode& compositor_node = *transform_tree_.Node(id); + cc::TransformNode& compositor_node = *transform_tree_->Node(id); UpdateCcTransformLocalMatrix(compositor_node, transform_node); compositor_node.should_undo_overscroll = @@ -436,7 +436,7 @@ if (transform_node.IsAffectedByOuterViewportBoundsDelta()) { compositor_node.moved_by_outer_viewport_bounds_delta_y = true; - transform_tree_.AddNodeAffectedByOuterViewportBoundsDelta(id); + transform_tree_->AddNodeAffectedByOuterViewportBoundsDelta(id); } compositor_node.in_subtree_of_page_scale_layer = @@ -452,39 +452,40 @@ if (const auto* sticky_constraint = transform_node.GetStickyConstraint()) { cc::StickyPositionNodeData& sticky_data = - transform_tree_.EnsureStickyPositionData(id); + transform_tree_->EnsureStickyPositionData(id); sticky_data.constraints = *sticky_constraint; const auto& scroll_ancestor = transform_node.NearestScrollTranslationNode(); sticky_data.scroll_ancestor = EnsureCompositorScrollAndTransformNode(scroll_ancestor); const auto& scroll_ancestor_compositor_node = - *scroll_tree_.Node(sticky_data.scroll_ancestor); + *scroll_tree_->Node(sticky_data.scroll_ancestor); if (scroll_ancestor_compositor_node.scrolls_outer_viewport) - transform_tree_.AddNodeAffectedByOuterViewportBoundsDelta(id); + transform_tree_->AddNodeAffectedByOuterViewportBoundsDelta(id); if (auto shifting_sticky_box_element_id = sticky_data.constraints.nearest_element_shifting_sticky_box) { sticky_data.nearest_node_shifting_sticky_box = - transform_tree_.FindNodeFromElementId(shifting_sticky_box_element_id) + transform_tree_->FindNodeFromElementId(shifting_sticky_box_element_id) ->id; } if (auto shifting_containing_block_element_id = sticky_data.constraints.nearest_element_shifting_containing_block) { // TODO(crbug.com/1224888): Get rid of the nullptr check below: - if (cc::TransformNode* node = transform_tree_.FindNodeFromElementId( - shifting_containing_block_element_id)) + if (cc::TransformNode* node = transform_tree_->FindNodeFromElementId( + shifting_containing_block_element_id)) { sticky_data.nearest_node_shifting_containing_block = node->id; + } } } if (const auto* data = transform_node.GetAnchorPositionScrollersData()) { cc::AnchorPositionScrollersData& compositor_data = - transform_tree_.EnsureAnchorPositionScrollersData(id); + transform_tree_->EnsureAnchorPositionScrollersData(id); compositor_data = *data; } auto compositor_element_id = transform_node.GetCompositorElementId(); if (compositor_element_id) { - transform_tree_.SetElementIdForNodeId(id, compositor_element_id); + transform_tree_->SetElementIdForNodeId(id, compositor_element_id); compositor_node.element_id = compositor_element_id; } @@ -499,10 +500,10 @@ compositor_node.scrolls = true; compositor_node.should_be_snapped = true; int scroll_id = EnsureCompositorScrollNode(transform_node); - cc::ScrollNode* scroll_node = scroll_tree_.Node(scroll_id); + cc::ScrollNode* scroll_node = scroll_tree_->Node(scroll_id); scroll_node->transform_id = id; scroll_node->is_composited = - client_.NeedsCompositedScrolling(transform_node); + client_->NeedsCompositedScrolling(transform_node); if (RuntimeEnabledFeatures::CompositeScrollAfterPaintEnabled() && !scroll_node->is_composited) { scroll_node->main_thread_scrolling_reasons |= @@ -519,14 +520,14 @@ if (parent->IsFramePaintOffsetTranslation()) { parent_frame_id = parent_id; } else { - const auto* parent_compositor_node = transform_tree_.Node(parent_id); + const auto* parent_compositor_node = transform_tree_->Node(parent_id); DCHECK(parent_compositor_node); parent_frame_id = parent_compositor_node->parent_frame_id; } } compositor_node.parent_frame_id = parent_frame_id; - transform_tree_.set_needs_update(true); + transform_tree_->set_needs_update(true); return id; } @@ -535,10 +536,10 @@ const TransformPaintPropertyNode& node) { DCHECK(!node.IsInSubtreeOfPageScale()); int id = EnsureCompositorTransformNode(node); - DCHECK(transform_tree_.Node(id)); - cc::TransformNode& compositor_node = *transform_tree_.Node(id); - SetTransformTreePageScaleFactor(&transform_tree_, &compositor_node); - transform_tree_.set_needs_update(true); + DCHECK(transform_tree_->Node(id)); + cc::TransformNode& compositor_node = *transform_tree_->Node(id); + SetTransformTreePageScaleFactor(&*transform_tree_, &compositor_node); + transform_tree_->set_needs_update(true); return id; } @@ -546,15 +547,15 @@ const ClipPaintPropertyNode& clip_node) { int id = clip_node.CcNodeId(new_sequence_number_); if (id != cc::kInvalidPropertyNodeId) { - DCHECK(clip_tree_.Node(id)); + DCHECK(clip_tree_->Node(id)); return id; } DCHECK(clip_node.UnaliasedParent()); int parent_id = EnsureCompositorClipNode(*clip_node.UnaliasedParent()); - id = clip_tree_.Insert(cc::ClipNode(), parent_id); + id = clip_tree_->Insert(cc::ClipNode(), parent_id); - cc::ClipNode& compositor_node = *clip_tree_.Node(id); + cc::ClipNode& compositor_node = *clip_tree_->Node(id); compositor_node.clip = clip_node.PaintClipRect().Rect(); compositor_node.transform_id = @@ -566,7 +567,7 @@ } clip_node.SetCcNodeId(new_sequence_number_, id); - clip_tree_.set_needs_update(true); + clip_tree_->set_needs_update(true); return id; } @@ -575,7 +576,7 @@ const auto* scroll_node = scroll_translation.ScrollNode(); CHECK(scroll_node); int scroll_id = EnsureCompositorScrollNodeInternal(*scroll_node); - scroll_tree_.SetScrollOffset( + scroll_tree_->SetScrollOffset( scroll_node->GetCompositorElementId(), gfx::PointAtOffsetFromOrigin(-scroll_translation.Get2dTranslation())); return scroll_id; @@ -590,9 +591,9 @@ CHECK(scroll_node.Parent()); int parent_id = EnsureCompositorScrollNodeInternal(*scroll_node.Parent()); - id = scroll_tree_.Insert(cc::ScrollNode(), parent_id); + id = scroll_tree_->Insert(cc::ScrollNode(), parent_id); - cc::ScrollNode& compositor_node = *scroll_tree_.Node(id); + cc::ScrollNode& compositor_node = *scroll_tree_->Node(id); compositor_node.scrollable = true; compositor_node.container_bounds = scroll_node.ContainerRect().size(); @@ -616,7 +617,7 @@ auto compositor_element_id = scroll_node.GetCompositorElementId(); if (compositor_element_id) { compositor_node.element_id = compositor_element_id; - scroll_tree_.SetElementIdForNodeId(id, compositor_element_id); + scroll_tree_->SetElementIdForNodeId(id, compositor_element_id); } // These two fields are either permanent for unpainted scrolls, or will be @@ -639,33 +640,33 @@ DCHECK(scroll_node); EnsureCompositorTransformNode(scroll_translation); int id = scroll_node->CcNodeId(new_sequence_number_); - DCHECK(scroll_tree_.Node(id)); + DCHECK(scroll_tree_->Node(id)); return id; } int PropertyTreeManager::EnsureCompositorInnerScrollAndTransformNode( const TransformPaintPropertyNode& scroll_translation) { int node_id = EnsureCompositorScrollAndTransformNode(scroll_translation); - scroll_tree_.Node(node_id)->scrolls_inner_viewport = true; + scroll_tree_->Node(node_id)->scrolls_inner_viewport = true; return node_id; } int PropertyTreeManager::EnsureCompositorOuterScrollAndTransformNode( const TransformPaintPropertyNode& scroll_translation) { int node_id = EnsureCompositorScrollAndTransformNode(scroll_translation); - scroll_tree_.Node(node_id)->scrolls_outer_viewport = true; + scroll_tree_->Node(node_id)->scrolls_outer_viewport = true; return node_id; } void PropertyTreeManager::EmitClipMaskLayer() { - cc::EffectNode* mask_isolation = effect_tree_.Node(current_.effect_id); + cc::EffectNode* mask_isolation = effect_tree_->Node(current_.effect_id); DCHECK(mask_isolation); bool needs_layer = !pending_synthetic_mask_layers_.Contains(mask_isolation->id) && mask_isolation->mask_filter_info.IsEmpty(); CompositorElementId mask_isolation_id, mask_effect_id; - SynthesizedClip& clip = client_.CreateOrReuseSynthesizedClipLayer( + SynthesizedClip& clip = client_->CreateOrReuseSynthesizedClipLayer( *current_.clip, *current_.transform, needs_layer, mask_isolation_id, mask_effect_id); @@ -677,11 +678,11 @@ if (!needs_layer) return; - cc::EffectNode& mask_effect = *effect_tree_.Node( - effect_tree_.Insert(cc::EffectNode(), current_.effect_id)); + cc::EffectNode& mask_effect = *effect_tree_->Node( + effect_tree_->Insert(cc::EffectNode(), current_.effect_id)); // The address of mask_isolation may have changed when we insert // |mask_effect| into the tree. - mask_isolation = effect_tree_.Node(current_.effect_id); + mask_isolation = effect_tree_->Node(current_.effect_id); mask_effect.element_id = mask_effect_id; mask_effect.clip_id = mask_isolation->clip_id; @@ -689,9 +690,9 @@ cc::PictureLayer* mask_layer = clip.Layer(); - layer_list_builder_.Add(mask_layer); + layer_list_builder_->Add(mask_layer); mask_layer->set_property_tree_sequence_number( - root_layer_.property_tree_sequence_number()); + root_layer_->property_tree_sequence_number()); mask_layer->SetTransformTreeIndex( EnsureCompositorTransformNode(*current_.transform)); int scroll_id = EnsureCompositorScrollAndTransformNode( @@ -870,7 +871,7 @@ void PropertyTreeManager::ForceRenderSurfaceIfSyntheticRoundedCornerClip( PropertyTreeManager::EffectState& state) { if (state.effect_type & CcEffectType::kSyntheticForNonTrivialClip) { - auto& effect_node = *effect_tree_.Node(state.effect_id); + auto& effect_node = *effect_tree_->Node(state.effect_id); effect_node.render_surface_reason = cc::RenderSurfaceReason::kRoundedCorner; } } @@ -933,7 +934,7 @@ // An effect node can't omit render surface if it has child with backdrop // effect, in order to define the scope of the backdrop. - effect_tree_.Node(current_.effect_id)->render_surface_reason = + effect_tree_->Node(current_.effect_id)->render_surface_reason = cc::RenderSurfaceReason::kBackdropScope; should_realize_backdrop_effect = true; backdrop_effect_clip_id = EnsureCompositorClipNode(target_clip); @@ -991,8 +992,8 @@ // only the layers that should be masked by the synthesized clip. // For a non-2d-axis-preserving clip, the synthetic effect creates a render // surface which is axis-aligned with the clip. - cc::EffectNode& synthetic_effect = *effect_tree_.Node( - effect_tree_.Insert(cc::EffectNode(), current_.effect_id)); + cc::EffectNode& synthetic_effect = *effect_tree_->Node( + effect_tree_->Insert(cc::EffectNode(), current_.effect_id)); if (pending_clip.type & CcEffectType::kSyntheticFor2dAxisAlignment) { if (should_realize_backdrop_effect) { @@ -1047,7 +1048,7 @@ ForceRenderSurfaceIfSyntheticRoundedCornerClip(current_); for (auto effect_it = effect_stack_.rbegin(); effect_it != effect_stack_.rend(); ++effect_it) { - auto& effect_node = *effect_tree_.Node(effect_it->effect_id); + auto& effect_node = *effect_tree_->Node(effect_it->effect_id); if (effect_node.HasRenderSurface() && !IsConditionalRenderSurfaceReason( effect_node.render_surface_reason)) { @@ -1102,7 +1103,7 @@ DCHECK_EQ(next_effect.UnaliasedParent(), current_.effect); bool has_multiple_groups = false; - if (effect_tree_.Node(next_effect.CcNodeId(new_sequence_number_))) { + if (effect_tree_->Node(next_effect.CcNodeId(new_sequence_number_))) { // TODO(crbug.com/1064341): We have to allow one blink effect node to apply // to multiple groups in block fragments (multicol, etc.) due to the // current FragmentClip implementation. This can only be fixed by LayoutNG @@ -1130,13 +1131,13 @@ output_clip = current_.clip; DCHECK(output_clip); - output_clip_id = effect_tree_.Node(current_.effect_id)->clip_id; + output_clip_id = effect_tree_->Node(current_.effect_id)->clip_id; DCHECK_EQ(output_clip_id, EnsureCompositorClipNode(*output_clip)); } const auto& transform = next_effect.LocalTransformSpace().Unalias(); - auto& effect_node = *effect_tree_.Node( - effect_tree_.Insert(cc::EffectNode(), current_.effect_id)); + auto& effect_node = *effect_tree_->Node( + effect_tree_->Insert(cc::EffectNode(), current_.effect_id)); if (real_effect_node_id == cc::kInvalidPropertyNodeId) { real_effect_node_id = effect_node.id; @@ -1178,9 +1179,9 @@ CompositorElementId compositor_element_id = next_effect.GetCompositorElementId(); if (compositor_element_id && !has_multiple_groups) { - DCHECK(!effect_tree_.FindNodeFromElementId(compositor_element_id)); - effect_tree_.SetElementIdForNodeId(real_effect_node_id, - compositor_element_id); + DCHECK(!effect_tree_->FindNodeFromElementId(compositor_element_id)); + effect_tree_->SetElementIdForNodeId(real_effect_node_id, + compositor_element_id); } effect_stack_.emplace_back(current_); @@ -1277,7 +1278,7 @@ const cc::LayerList& layers) { // This vector is indexed by effect node id. The value is the number of // layers and sub-render-surfaces controlled by this effect. - wtf_size_t tree_size = base::checked_cast<wtf_size_t>(effect_tree_.size()); + wtf_size_t tree_size = base::checked_cast<wtf_size_t>(effect_tree_->size()); Vector<int> effect_layer_counts(tree_size); Vector<bool> has_child_surface(tree_size); // Initialize the vector to count directly controlled layers. @@ -1290,7 +1291,7 @@ // following loop will check descendants before parents and accumulate // effect_layer_counts. for (int id = tree_size - 1; id > cc::kSecondaryRootPropertyNodeId; id--) { - auto* effect = effect_tree_.Node(id); + auto* effect = effect_tree_->Node(id); if (effect_layer_counts[id] < 2 && IsConditionalRenderSurfaceReason(effect->render_surface_reason) && // kBlendModeDstIn should create a render surface if the mask itself @@ -1328,7 +1329,7 @@ for (auto* clip : pixel_moving_filter_clip_expanders_) { DCHECK(clip->PixelMovingFilter()); cc::ClipNode* cc_clip = - clip_tree_.Node(clip->CcNodeId(new_sequence_number_)); + clip_tree_->Node(clip->CcNodeId(new_sequence_number_)); DCHECK(cc_clip); cc_clip->pixel_moving_filter_id = clip->PixelMovingFilter()->CcNodeId(new_sequence_number_);
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 76d9b6d..ea2d205 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
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_COMPOSITING_PROPERTY_TREE_MANAGER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_COMPOSITING_PROPERTY_TREE_MANAGER_H_ +#include "base/memory/raw_ref.h" #include "cc/layers/layer_collections.h" #include "third_party/blink/renderer/platform/graphics/compositor_element_id.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" @@ -305,24 +306,24 @@ void UpdatePixelMovingFilterClipExpanders(); - PropertyTreeManagerClient& client_; + const raw_ref<PropertyTreeManagerClient, ExperimentalRenderer> client_; // Property trees which should be updated by the manager. - cc::PropertyTrees& property_trees_; + const raw_ref<cc::PropertyTrees, ExperimentalRenderer> property_trees_; // See comment above EffectState about holding direct references to data // owned by PropertyTrees. - cc::ClipTree& clip_tree_; - cc::EffectTree& effect_tree_; - cc::ScrollTree& scroll_tree_; - cc::TransformTree& transform_tree_; + const raw_ref<cc::ClipTree, ExperimentalRenderer> clip_tree_; + const raw_ref<cc::EffectTree, ExperimentalRenderer> effect_tree_; + const raw_ref<cc::ScrollTree, ExperimentalRenderer> scroll_tree_; + const raw_ref<cc::TransformTree, ExperimentalRenderer> transform_tree_; // The special layer which is the parent of every other layers. // This is where clip mask layers we generated for synthesized clips are // appended into. - cc::Layer& root_layer_; + const raw_ref<cc::Layer, ExperimentalRenderer> root_layer_; - LayerListBuilder& layer_list_builder_; + const raw_ref<LayerListBuilder, ExperimentalRenderer> layer_list_builder_; int new_sequence_number_;
diff --git a/third_party/blink/renderer/platform/graphics/compositor_mutator_client.h b/third_party/blink/renderer/platform/graphics/compositor_mutator_client.h index 6b9e2d58..a4be1de1 100644 --- a/third_party/blink/renderer/platform/graphics/compositor_mutator_client.h +++ b/third_party/blink/renderer/platform/graphics/compositor_mutator_client.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_COMPOSITOR_MUTATOR_CLIENT_H_ #include <memory> +#include "base/memory/raw_ptr.h" #include "cc/trees/layer_tree_mutator.h" #include "third_party/blink/renderer/platform/graphics/mutator_client.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -33,7 +34,7 @@ private: std::unique_ptr<AnimationWorkletMutatorDispatcherImpl> mutator_; - cc::LayerTreeMutatorClient* client_; + raw_ptr<cc::LayerTreeMutatorClient, ExperimentalRenderer> client_; }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/deferred_image_decoder_test.cc b/third_party/blink/renderer/platform/graphics/deferred_image_decoder_test.cc index 0ba6d94..d2823133 100644 --- a/third_party/blink/renderer/platform/graphics/deferred_image_decoder_test.cc +++ b/third_party/blink/renderer/platform/graphics/deferred_image_decoder_test.cc
@@ -27,6 +27,7 @@ #include <memory> #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/time/time.h" #include "build/build_config.h" @@ -144,7 +145,7 @@ // Don't own this but saves the pointer to query states. PaintImage::Id paint_image_id_; - MockImageDecoder* actual_decoder_; + raw_ptr<MockImageDecoder, ExperimentalRenderer> actual_decoder_; std::unique_ptr<DeferredImageDecoder> lazy_decoder_; SkBitmap bitmap_; std::unique_ptr<cc::PaintCanvas> canvas_;
diff --git a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h index 7f6ba38d..3369084e 100644 --- a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h +++ b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h
@@ -36,6 +36,7 @@ #include "base/containers/span.h" #include "base/functional/function_ref.h" +#include "base/memory/raw_ptr.h" #include "cc/layers/texture_layer_client.h" #include "cc/resources/cross_thread_shared_bitmap.h" #include "cc/resources/shared_bitmap_id_registrar.h" @@ -408,7 +409,8 @@ private: scoped_refptr<DrawingBuffer> drawing_buffer_; // The previous state restorer, in case restorers are nested. - ScopedStateRestorer* previous_state_restorer_ = nullptr; + raw_ptr<ScopedStateRestorer, ExperimentalRenderer> + previous_state_restorer_ = nullptr; bool clear_state_dirty_ = false; bool pixel_pack_parameters_dirty_ = false; bool texture_binding_dirty_ = false; @@ -606,14 +608,14 @@ void ResolveAndPresentSwapChainIfNeeded(); // Weak, reset by beginDestruction. - Client* client_ = nullptr; + raw_ptr<Client, ExperimentalRenderer> client_ = nullptr; const PreserveDrawingBuffer preserve_drawing_buffer_; const WebGLVersion webgl_version_; std::unique_ptr<WebGraphicsContext3DProviderWrapper> context_provider_; // Lifetime is tied to the m_contextProvider. - gpu::gles2::GLES2Interface* gl_; + raw_ptr<gpu::gles2::GLES2Interface, ExperimentalRenderer> gl_; std::unique_ptr<Extensions3DUtil> extensions_util_; gfx::Size size_; const bool discard_framebuffer_supported_; @@ -637,7 +639,7 @@ // The current state restorer, which is used to track state dirtying. It is an // error to dirty state shared with WebGL while there is no existing state // restorer. - ScopedStateRestorer* state_restorer_ = nullptr; + raw_ptr<ScopedStateRestorer, ExperimentalRenderer> state_restorer_ = nullptr; // This is used when the user requests either a depth or stencil buffer. GLuint depth_stencil_buffer_ = 0;
diff --git a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_test_helpers.h b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_test_helpers.h index 113bbcc..19d4b34e 100644 --- a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_test_helpers.h +++ b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer_test_helpers.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_GPU_DRAWING_BUFFER_TEST_HELPERS_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_GPU_DRAWING_BUFFER_TEST_HELPERS_H_ +#include "base/memory/raw_ptr.h" #include "build/build_config.h" #include "cc/test/stub_decode_cache.h" #include "components/viz/test/test_context_provider.h" @@ -472,7 +473,7 @@ ContextProvider()->SharedImageInterface()); } - bool* live_; + raw_ptr<bool, ExperimentalRenderer> live_; int RecycledBitmapCount() { return recycled_bitmaps_.size(); } };
diff --git a/third_party/blink/renderer/platform/graphics/gpu/extensions_3d_util.h b/third_party/blink/renderer/platform/graphics/gpu/extensions_3d_util.h index 95506c4..1fb0cfc 100644 --- a/third_party/blink/renderer/platform/graphics/gpu/extensions_3d_util.h +++ b/third_party/blink/renderer/platform/graphics/gpu/extensions_3d_util.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" #include "third_party/blink/renderer/platform/wtf/hash_set.h" @@ -46,7 +47,7 @@ Extensions3DUtil(gpu::gles2::GLES2Interface*); void InitializeExtensions(); - gpu::gles2::GLES2Interface* gl_; + raw_ptr<gpu::gles2::GLES2Interface, ExperimentalRenderer> gl_; HashSet<String> enabled_extensions_; HashSet<String> requestable_extensions_; bool is_valid_;
diff --git a/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.h b/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.h index d04038a..eb42a57 100644 --- a/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.h +++ b/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_GPU_WEBGPU_SWAP_BUFFER_PROVIDER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_GPU_WEBGPU_SWAP_BUFFER_PROVIDER_H_ +#include "base/memory/raw_ptr.h" #include "cc/layers/texture_layer.h" #include "cc/layers/texture_layer_client.h" #include "components/viz/common/resources/shared_image_format.h" @@ -155,7 +156,7 @@ void ReleaseWGPUTextureAccessIfNeeded(); scoped_refptr<DawnControlClientHolder> dawn_control_client_; - Client* client_; + raw_ptr<Client, ExperimentalRenderer> client_; WGPUDevice device_; scoped_refptr<cc::TextureLayer> layer_; bool neutered_ = false;
diff --git a/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider_test.cc b/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider_test.cc index f8991c8..2c1bce3 100644 --- a/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider_test.cc +++ b/third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider_test.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/platform/graphics/gpu/webgpu_swap_buffer_provider.h" +#include "base/memory/raw_ptr.h" #include "base/test/task_environment.h" #include "gpu/command_buffer/client/webgpu_interface_stub.h" #include "testing/gmock/include/gmock/gmock.h" @@ -136,8 +137,8 @@ } private: - bool* alive_; - FakeProviderClient* client_; + raw_ptr<bool, ExperimentalRenderer> alive_; + raw_ptr<FakeProviderClient, ExperimentalRenderer> client_; WGPUTextureDescriptor texture_desc_; }; @@ -170,8 +171,8 @@ base::test::TaskEnvironment task_environment_; scoped_refptr<DawnControlClientHolder> dawn_control_client_; - MockWebGPUInterface* webgpu_; - viz::TestSharedImageInterface* sii_; + raw_ptr<MockWebGPUInterface, ExperimentalRenderer> webgpu_; + raw_ptr<viz::TestSharedImageInterface, ExperimentalRenderer> sii_; FakeProviderClient client_; scoped_refptr<WebGPUSwapBufferProviderForTests> provider_; bool provider_alive_ = true;
diff --git a/third_party/blink/renderer/platform/graphics/gpu/xr_webgl_drawing_buffer.cc b/third_party/blink/renderer/platform/graphics/gpu/xr_webgl_drawing_buffer.cc index cde3462..455b3b7 100644 --- a/third_party/blink/renderer/platform/graphics/gpu/xr_webgl_drawing_buffer.cc +++ b/third_party/blink/renderer/platform/graphics/gpu/xr_webgl_drawing_buffer.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/platform/graphics/gpu/xr_webgl_drawing_buffer.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "build/build_config.h" #include "components/viz/common/resources/shared_image_format.h" #include "gpu/GLES2/gl2extchromium.h" @@ -39,7 +40,7 @@ } private: - blink::DrawingBuffer::Client* const client_; + const raw_ptr<blink::DrawingBuffer::Client, ExperimentalRenderer> client_; }; } // namespace
diff --git a/third_party/blink/renderer/platform/graphics/gpu_memory_buffer_image_copy.h b/third_party/blink/renderer/platform/graphics/gpu_memory_buffer_image_copy.h index 75fd2d34..ce262f4f 100644 --- a/third_party/blink/renderer/platform/graphics/gpu_memory_buffer_image_copy.h +++ b/third_party/blink/renderer/platform/graphics/gpu_memory_buffer_image_copy.h
@@ -2,6 +2,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_GPU_MEMORY_BUFFER_IMAGE_COPY_H_ #include <memory> +#include "base/memory/raw_ptr.h" #include "gpu/command_buffer/client/gles2_interface.h" #include "gpu/command_buffer/client/shared_image_interface.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -28,8 +29,8 @@ bool EnsureDestImage(const gfx::Size&); void CleanupDestImage(); - gpu::gles2::GLES2Interface* const gl_; - gpu::SharedImageInterface* const sii_; + const raw_ptr<gpu::gles2::GLES2Interface, ExperimentalRenderer> gl_; + const raw_ptr<gpu::SharedImageInterface, ExperimentalRenderer> sii_; std::unique_ptr<gfx::GpuMemoryBuffer> gpu_memory_buffer_; gfx::Size dest_image_size_; gpu::Mailbox dest_mailbox_;
diff --git a/third_party/blink/renderer/platform/graphics/graphics_context.cc b/third_party/blink/renderer/platform/graphics/graphics_context.cc index 254115f..144c215 100644 --- a/third_party/blink/renderer/platform/graphics/graphics_context.cc +++ b/third_party/blink/renderer/platform/graphics/graphics_context.cc
@@ -553,7 +553,7 @@ DOMNodeId node_id, const AutoDarkMode& auto_dark_mode) { DarkModeFlags dark_mode_flags(this, auto_dark_mode, flags); - if (sk_sp<SkTextBlob> text_blob = paint_controller_.CachedTextBlob()) { + if (sk_sp<SkTextBlob> text_blob = paint_controller_->CachedTextBlob()) { canvas_->drawTextBlob(text_blob, point.x(), point.y(), node_id, dark_mode_flags); return; @@ -664,7 +664,7 @@ custom_font_not_ready_action, flags, printing_ ? Font::DrawType::kGlyphsAndClusters : Font::DrawType::kGlyphsOnly)) { - paint_controller_.SetTextPainted(); + paint_controller_->SetTextPainted(); } }); } @@ -773,7 +773,7 @@ return; } - paint_controller_.SetImagePainted(); + paint_controller_->SetImagePainted(); } cc::PaintFlags::FilterQuality GraphicsContext::ComputeFilterQuality(
diff --git a/third_party/blink/renderer/platform/graphics/graphics_context.h b/third_party/blink/renderer/platform/graphics/graphics_context.h index 182457f..287c6e3 100644 --- a/third_party/blink/renderer/platform/graphics/graphics_context.h +++ b/third_party/blink/renderer/platform/graphics/graphics_context.h
@@ -31,6 +31,8 @@ #include <memory> #include "base/dcheck_is_on.h" +#include "base/memory/raw_ptr.h" +#include "base/memory/raw_ref.h" #include "cc/paint/paint_flags.h" #include "third_party/blink/renderer/platform/fonts/font.h" #include "third_party/blink/renderer/platform/graphics/dark_mode_filter.h" @@ -189,9 +191,9 @@ cc::PaintCanvas* Canvas() { return canvas_; } const cc::PaintCanvas* Canvas() const { return canvas_; } - PaintController& GetPaintController() { return paint_controller_; } + PaintController& GetPaintController() { return *paint_controller_; } const PaintController& GetPaintController() const { - return paint_controller_; + return *paint_controller_; } DarkModeFilter* GetDarkModeFilter(); @@ -601,9 +603,9 @@ // This is owned by paint_recorder_. Never delete this object. // Drawing operations are allowed only after the first BeginRecording() which // initializes this to not null. - cc::PaintCanvas* canvas_ = nullptr; + raw_ptr<cc::PaintCanvas, ExperimentalRenderer> canvas_ = nullptr; - PaintController& paint_controller_; + const raw_ref<PaintController, ExperimentalRenderer> paint_controller_; // Paint states stack. The state controls the appearance of drawn content, so // this stack enables local drawing state changes with Save()/Restore() calls. @@ -614,12 +616,14 @@ wtf_size_t paint_state_index_ = 0; // Raw pointer to the current state. - GraphicsContextState* paint_state_ = nullptr; + raw_ptr<GraphicsContextState, ExperimentalRenderer> paint_state_ = nullptr; PaintRecorder paint_recorder_; - printing::MetafileSkia* printing_metafile_ = nullptr; - paint_preview::PaintPreviewTracker* paint_preview_tracker_ = nullptr; + raw_ptr<printing::MetafileSkia, ExperimentalRenderer> printing_metafile_ = + nullptr; + raw_ptr<paint_preview::PaintPreviewTracker, ExperimentalRenderer> + paint_preview_tracker_ = nullptr; #if DCHECK_IS_ON() int layer_count_ = 0;
diff --git a/third_party/blink/renderer/platform/graphics/graphics_context_state_saver.h b/third_party/blink/renderer/platform/graphics/graphics_context_state_saver.h index 1236ec8c..3ad4bb2 100644 --- a/third_party/blink/renderer/platform/graphics/graphics_context_state_saver.h +++ b/third_party/blink/renderer/platform/graphics/graphics_context_state_saver.h
@@ -29,6 +29,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_GRAPHICS_CONTEXT_STATE_SAVER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_GRAPHICS_CONTEXT_STATE_SAVER_H_ +#include "base/memory/raw_ref.h" #include "third_party/blink/renderer/platform/graphics/graphics_context.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" @@ -43,7 +44,7 @@ bool save_and_restore = true) : context_(context), save_and_restore_(save_and_restore) { if (save_and_restore_) - context_.Save(); + context_->Save(); } GraphicsContextStateSaver(const GraphicsContextStateSaver&) = delete; @@ -52,12 +53,12 @@ ~GraphicsContextStateSaver() { if (save_and_restore_) - context_.Restore(); + context_->Restore(); } void Save() { DCHECK(!save_and_restore_); - context_.Save(); + context_->Save(); save_and_restore_ = true; } @@ -69,15 +70,15 @@ void Restore() { DCHECK(save_and_restore_); - context_.Restore(); + context_->Restore(); save_and_restore_ = false; } - GraphicsContext& Context() const { return context_; } + GraphicsContext& Context() const { return *context_; } bool Saved() const { return save_and_restore_; } private: - GraphicsContext& context_; + const raw_ref<GraphicsContext, ExperimentalRenderer> context_; bool save_and_restore_; };
diff --git a/third_party/blink/renderer/platform/graphics/image_decoding_store.h b/third_party/blink/renderer/platform/graphics/image_decoding_store.h index bfd564b..9587f64 100644 --- a/third_party/blink/renderer/platform/graphics/image_decoding_store.h +++ b/third_party/blink/renderer/platform/graphics/image_decoding_store.h
@@ -32,6 +32,7 @@ #include "base/check_op.h" #include "base/memory/memory_pressure_listener.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/synchronization/lock.h" #include "cc/paint/paint_image_generator.h" #include "third_party/blink/renderer/platform/graphics/image_frame_generator.h" @@ -52,7 +53,7 @@ // 2. Size of the image. // 3. ImageDecoder::AlphaOption struct DecoderCacheKey { - const blink::ImageFrameGenerator* gen_; + raw_ptr<const blink::ImageFrameGenerator, ExperimentalRenderer> gen_; SkISize size_; blink::ImageDecoder::AlphaOption alpha_option_; cc::PaintImage::GeneratorClientId client_id_; @@ -109,7 +110,7 @@ virtual CacheType GetType() const = 0; protected: - const ImageFrameGenerator* generator_; + raw_ptr<const ImageFrameGenerator, ExperimentalRenderer> generator_; int use_count_; private: @@ -177,9 +178,9 @@ : GenericHashTraits<blink::DecoderCacheKey> { STATIC_ONLY(HashTraits); static unsigned GetHash(const blink::DecoderCacheKey& p) { - auto first = - HashInts(WTF::GetHash(const_cast<blink::ImageFrameGenerator*>(p.gen_)), - WTF::GetHash(p.size_)); + auto first = HashInts( + WTF::GetHash(const_cast<blink::ImageFrameGenerator*>(p.gen_.get())), + WTF::GetHash(p.size_)); auto second = HashInts(WTF::GetHash(static_cast<uint8_t>(p.alpha_option_)), p.client_id_); return HashInts(first, second);
diff --git a/third_party/blink/renderer/platform/graphics/main_thread_mutator_client.h b/third_party/blink/renderer/platform/graphics/main_thread_mutator_client.h index 7c13309..bea6bc7 100644 --- a/third_party/blink/renderer/platform/graphics/main_thread_mutator_client.h +++ b/third_party/blink/renderer/platform/graphics/main_thread_mutator_client.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_MAIN_THREAD_MUTATOR_CLIENT_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_MAIN_THREAD_MUTATOR_CLIENT_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/graphics/animation_worklet_mutators_state.h" #include "third_party/blink/renderer/platform/graphics/mutator_client.h" #include "third_party/blink/renderer/platform/heap/persistent.h" @@ -27,7 +28,7 @@ private: std::unique_ptr<AnimationWorkletMutatorDispatcherImpl> mutator_; - MutatorClient* delegate_; + raw_ptr<MutatorClient, ExperimentalRenderer> delegate_; }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/memory_managed_paint_canvas.h b/third_party/blink/renderer/platform/graphics/memory_managed_paint_canvas.h index 0f885cdf..57538f0 100644 --- a/third_party/blink/renderer/platform/graphics/memory_managed_paint_canvas.h +++ b/third_party/blink/renderer/platform/graphics/memory_managed_paint_canvas.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_MEMORY_MANAGED_PAINT_CANVAS_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_MEMORY_MANAGED_PAINT_CANVAS_H_ +#include "base/memory/raw_ptr.h" #include "cc/paint/paint_canvas.h" #include "cc/paint/record_paint_canvas.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -55,7 +56,7 @@ IntWithZeroKeyHashTraits<cc::PaintImage::ContentId>> cached_image_ids_; - Client* client_; + raw_ptr<Client, ExperimentalRenderer> client_; }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/memory_managed_paint_recorder.h b/third_party/blink/renderer/platform/graphics/memory_managed_paint_recorder.h index 7b88c3a5..3a1608b9 100644 --- a/third_party/blink/renderer/platform/graphics/memory_managed_paint_recorder.h +++ b/third_party/blink/renderer/platform/graphics/memory_managed_paint_recorder.h
@@ -26,6 +26,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_MEMORY_MANAGED_PAINT_RECORDER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_MEMORY_MANAGED_PAINT_RECORDER_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/graphics/memory_managed_paint_canvas.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -66,7 +67,7 @@ private: // Unowned, must not be nullptr. - Client* client_; + raw_ptr<MemoryManagedPaintRecorder::Client, ExperimentalRenderer> client_; bool is_recording_ = false; gfx::Size size_; std::unique_ptr<MemoryManagedPaintCanvas> canvas_;
diff --git a/third_party/blink/renderer/platform/graphics/paint/display_item.cc b/third_party/blink/renderer/platform/graphics/paint/display_item.cc index 3fcef255..b07f182 100644 --- a/third_party/blink/renderer/platform/graphics/paint/display_item.cc +++ b/third_party/blink/renderer/platform/graphics/paint/display_item.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/platform/graphics/paint/display_item.h" #include <cinttypes> +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/graphics/paint/drawing_display_item.h" #include "third_party/blink/renderer/platform/graphics/paint/foreign_layer_display_item.h" #include "third_party/blink/renderer/platform/graphics/paint/paint_artifact.h" @@ -14,7 +15,7 @@ namespace blink { struct SameSizeAsDisplayItem { - void* pointer; + raw_ptr<void, ExperimentalRenderer> pointer; gfx::Rect rect; uint32_t i1; uint32_t i2;
diff --git a/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_clip_cache.h b/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_clip_cache.h index e8c2cd27c..9bc6828 100644 --- a/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_clip_cache.h +++ b/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_clip_cache.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_GEOMETRY_MAPPER_CLIP_CACHE_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_GEOMETRY_MAPPER_CLIP_CACHE_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/graphics/overlay_scrollbar_clip_behavior.h" #include "third_party/blink/renderer/platform/graphics/paint/float_clip_rect.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -31,8 +32,9 @@ DISALLOW_NEW(); public: - const ClipPaintPropertyNode* ancestor_clip; - const TransformPaintPropertyNode* ancestor_transform; + raw_ptr<const ClipPaintPropertyNode, ExperimentalRenderer> ancestor_clip; + raw_ptr<const TransformPaintPropertyNode, ExperimentalRenderer> + ancestor_transform; OverlayScrollbarClipBehavior clip_behavior; bool operator==(const ClipAndTransform& other) const { return ancestor_clip == other.ancestor_clip && @@ -93,7 +95,8 @@ Vector<ClipCacheEntry> clip_cache_; // The nearest ancestor that has non-null PixelMovingFilter(). - const ClipPaintPropertyNode* nearest_pixel_moving_filter_clip_ = nullptr; + raw_ptr<const ClipPaintPropertyNode, ExperimentalRenderer> + nearest_pixel_moving_filter_clip_ = nullptr; unsigned cache_generation_ = s_global_generation_ - 1; static unsigned s_global_generation_;
diff --git a/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_transform_cache.h b/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_transform_cache.h index fa939c1..1629dd3 100644 --- a/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_transform_cache.h +++ b/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_transform_cache.h
@@ -7,6 +7,7 @@ #include "base/check_op.h" #include "base/dcheck_is_on.h" +#include "base/memory/raw_ptr.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" @@ -148,7 +149,8 @@ // The parent of the root of consecutive identity or 2d translations from the // transform node, or the root of the tree if the whole path from the // transform node to the root contains identity or 2d translations only. - const TransformPaintPropertyNode* root_of_2d_translation_; + raw_ptr<const TransformPaintPropertyNode, ExperimentalRenderer> + root_of_2d_translation_; // The cached values here can be categorized in two logical groups: //
diff --git a/third_party/blink/renderer/platform/graphics/paint/paint_chunk.cc b/third_party/blink/renderer/platform/graphics/paint/paint_chunk.cc index 110dd66..2ef40cc 100644 --- a/third_party/blink/renderer/platform/graphics/paint/paint_chunk.cc +++ b/third_party/blink/renderer/platform/graphics/paint/paint_chunk.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/platform/graphics/paint/paint_chunk.h" +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/graphics/paint/drawing_display_item.h" #include "third_party/blink/renderer/platform/graphics/paint/paint_artifact.h" #include "third_party/blink/renderer/platform/wtf/size_assertions.h" @@ -33,9 +34,9 @@ PaintChunk::Id id; PaintChunk::BackgroundColorInfo background_color; PropertyTreeState properties; - void* hit_test_data; - void* region_capture_data; - void* layer_selection; + raw_ptr<void, ExperimentalRenderer> hit_test_data; + raw_ptr<void, ExperimentalRenderer> region_capture_data; + raw_ptr<void, ExperimentalRenderer> layer_selection; gfx::Rect bounds; gfx::Rect drawable_bounds; gfx::Rect rect_known_to_be_opaque;
diff --git a/third_party/blink/renderer/platform/graphics/paint/paint_controller.h b/third_party/blink/renderer/platform/graphics/paint/paint_controller.h index 706331e..e7cda29 100644 --- a/third_party/blink/renderer/platform/graphics/paint/paint_controller.h +++ b/third_party/blink/renderer/platform/graphics/paint/paint_controller.h
@@ -11,6 +11,7 @@ #include "base/check_op.h" #include "base/dcheck_is_on.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "cc/input/hit_test_opaqueness.h" #include "cc/input/layer_selection_bound.h" #include "cc/paint/element_id.h" @@ -60,7 +61,7 @@ text_painted(false), image_painted(false) {} - const void* frame; + raw_ptr<const void, ExperimentalRenderer> frame; bool first_painted : 1; bool text_painted : 1; bool image_painted : 1;
diff --git a/third_party/blink/renderer/platform/graphics/paint/paint_property_node_test.cc b/third_party/blink/renderer/platform/graphics/paint/paint_property_node_test.cc index 2e5c0474..fa8fbfb 100644 --- a/third_party/blink/renderer/platform/graphics/paint/paint_property_node_test.cc +++ b/third_party/blink/renderer/platform/graphics/paint/paint_property_node_test.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/platform/graphics/paint/paint_property_node.h" +#include "base/memory/raw_ptr.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/renderer/platform/graphics/paint/property_tree_state.h" #include "third_party/blink/renderer/platform/testing/paint_property_test_helpers.h" @@ -15,7 +16,7 @@ protected: template <typename NodeType> struct Tree { - const NodeType* root; + raw_ptr<const NodeType, ExperimentalRenderer> root; scoped_refptr<NodeType> ancestor; scoped_refptr<NodeType> child1; scoped_refptr<NodeType> child2;
diff --git a/third_party/blink/renderer/platform/graphics/paint/paint_record_builder.h b/third_party/blink/renderer/platform/graphics/paint/paint_record_builder.h index 0bbd39c..11330bc 100644 --- a/third_party/blink/renderer/platform/graphics/paint/paint_record_builder.h +++ b/third_party/blink/renderer/platform/graphics/paint/paint_record_builder.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_PAINT_RECORD_BUILDER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_PAINT_RECORD_BUILDER_H_ +#include "base/memory/raw_ptr.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/renderer/platform/graphics/graphics_context.h" #include "third_party/blink/renderer/platform/graphics/paint/display_item_client.h" @@ -62,7 +63,7 @@ private: absl::optional<PaintController> own_paint_controller_; - PaintController* paint_controller_; + raw_ptr<PaintController, ExperimentalRenderer> paint_controller_; GraphicsContext context_; };
diff --git a/third_party/blink/renderer/platform/graphics/paint/paint_under_invalidation_checker.cc b/third_party/blink/renderer/platform/graphics/paint/paint_under_invalidation_checker.cc index 8ae72cb..4479373 100644 --- a/third_party/blink/renderer/platform/graphics/paint/paint_under_invalidation_checker.cc +++ b/third_party/blink/renderer/platform/graphics/paint/paint_under_invalidation_checker.cc
@@ -16,7 +16,7 @@ : paint_controller_(paint_controller) { #if DCHECK_IS_ON() DCHECK(RuntimeEnabledFeatures::PaintUnderInvalidationCheckingEnabled()); - DCHECK_EQ(paint_controller_.GetUsage(), PaintController::kMultiplePaints); + DCHECK_EQ(paint_controller_->GetUsage(), PaintController::kMultiplePaints); #endif } @@ -63,13 +63,13 @@ void PaintUnderInvalidationChecker::CheckNewItem() { DCHECK(IsChecking()); - if (paint_controller_.IsSkippingCache()) { + if (paint_controller_->IsSkippingCache()) { // We allow cache skipping and temporary under-invalidation in cached // subsequences. See the usage of DisplayItemCacheSkipper in BoxPainter. Stop(); // Match the remaining display items in the subsequence normally. - paint_controller_.next_item_to_match_ = old_item_index_; - paint_controller_.next_item_to_index_ = old_item_index_; + paint_controller_->next_item_to_match_ = old_item_index_; + paint_controller_->next_item_to_index_ = old_item_index_; return; } @@ -104,7 +104,7 @@ DisplayItemClientId client_id) { DCHECK(!IsChecking()); - const auto* markers = paint_controller_.GetSubsequenceMarkers(client_id); + const auto* markers = paint_controller_->GetSubsequenceMarkers(client_id); DCHECK(markers); old_chunk_index_ = markers->start_chunk_index; new_chunk_index_ = NewPaintChunks().size(); @@ -133,7 +133,7 @@ if (!IsCheckingSubsequence()) return; - const auto* markers = paint_controller_.GetSubsequenceMarkers(client_id); + const auto* markers = paint_controller_->GetSubsequenceMarkers(client_id); if (!markers) { if (start_chunk_index != NewPaintChunks().size()) ShowSubsequenceError("unexpected subsequence", client_id); @@ -158,7 +158,7 @@ void PaintUnderInvalidationChecker::CheckNewChunkInternal() { DCHECK_NE(subsequence_client_id_, kInvalidDisplayItemClientId); const auto* markers = - paint_controller_.GetSubsequenceMarkers(subsequence_client_id_); + paint_controller_->GetSubsequenceMarkers(subsequence_client_id_); DCHECK(markers); const auto& new_chunk = NewPaintChunks()[new_chunk_index_]; if (old_chunk_index_ >= markers->end_chunk_index) { @@ -181,18 +181,18 @@ const DisplayItem* old_item) const { if (subsequence_client_id_ != kInvalidDisplayItemClientId) { LOG(ERROR) << "(In cached subsequence for " - << paint_controller_.new_paint_artifact_->ClientDebugName( + << paint_controller_->new_paint_artifact_->ClientDebugName( subsequence_client_id_) << ")"; } LOG(ERROR) << "Under-invalidation: " << reason; #if DCHECK_IS_ON() LOG(ERROR) << "New display item: " - << new_item.AsDebugString(*paint_controller_.new_paint_artifact_); + << new_item.AsDebugString(*paint_controller_->new_paint_artifact_); if (old_item) { LOG(ERROR) << "Old display item: " << old_item->AsDebugString( - *paint_controller_.current_paint_artifact_); + *paint_controller_->current_paint_artifact_); } LOG(ERROR) << "See http://crbug.com/619103."; @@ -205,7 +205,7 @@ << RecordAsDebugString(old_drawing->GetPaintRecord()).Utf8(); } - paint_controller_.ShowDebugData(); + paint_controller_->ShowDebugData(); #else LOG(ERROR) << "Run a build with DCHECK on to get more details."; #endif @@ -219,7 +219,7 @@ const PaintChunk* old_chunk) { if (subsequence_client_id_ != kInvalidDisplayItemClientId) { LOG(ERROR) << "(In cached subsequence for " - << paint_controller_.new_paint_artifact_->ClientDebugName( + << paint_controller_->new_paint_artifact_->ClientDebugName( subsequence_client_id_) << ")"; } @@ -228,20 +228,20 @@ // |client_id| may be different from |subsequence_client_id_| if the error // occurs in a descendant subsequence of the cached subsequence. LOG(ERROR) << "Subsequence client: " - << paint_controller_.new_paint_artifact_->ClientDebugName( + << paint_controller_->new_paint_artifact_->ClientDebugName( client_id); } if (new_chunk) { LOG(ERROR) << "New paint chunk: " - << new_chunk->ToString(*paint_controller_.new_paint_artifact_); + << new_chunk->ToString(*paint_controller_->new_paint_artifact_); } if (old_chunk) { LOG(ERROR) << "Old paint chunk: " << old_chunk->ToString( - *paint_controller_.current_paint_artifact_); + *paint_controller_->current_paint_artifact_); } #if DCHECK_IS_ON() - paint_controller_.ShowDebugData(); + paint_controller_->ShowDebugData(); #else LOG(ERROR) << "Run a build with DCHECK on to get more details."; #endif @@ -250,20 +250,20 @@ const Vector<PaintChunk>& PaintUnderInvalidationChecker::OldPaintChunks() const { - return paint_controller_.current_paint_artifact_->PaintChunks(); + return paint_controller_->current_paint_artifact_->PaintChunks(); } const Vector<PaintChunk>& PaintUnderInvalidationChecker::NewPaintChunks() const { - return paint_controller_.new_paint_artifact_->PaintChunks(); + return paint_controller_->new_paint_artifact_->PaintChunks(); } DisplayItemList& PaintUnderInvalidationChecker::OldDisplayItemList() { - return paint_controller_.current_paint_artifact_->GetDisplayItemList(); + return paint_controller_->current_paint_artifact_->GetDisplayItemList(); } DisplayItemList& PaintUnderInvalidationChecker::NewDisplayItemList() { - return paint_controller_.new_paint_artifact_->GetDisplayItemList(); + return paint_controller_->new_paint_artifact_->GetDisplayItemList(); } } // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/paint/paint_under_invalidation_checker.h b/third_party/blink/renderer/platform/graphics/paint/paint_under_invalidation_checker.h index 16423d8..19efde8 100644 --- a/third_party/blink/renderer/platform/graphics/paint/paint_under_invalidation_checker.h +++ b/third_party/blink/renderer/platform/graphics/paint/paint_under_invalidation_checker.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_PAINT_UNDER_INVALIDATION_CHECKER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PAINT_PAINT_UNDER_INVALIDATION_CHECKER_H_ +#include "base/memory/raw_ref.h" #include "third_party/blink/renderer/platform/graphics/graphics_types.h" #include "third_party/blink/renderer/platform/wtf/vector.h" @@ -59,7 +60,7 @@ DisplayItemList& OldDisplayItemList(); DisplayItemList& NewDisplayItemList(); - PaintController& paint_controller_; + const raw_ref<PaintController, ExperimentalRenderer> paint_controller_; // Points to the cached display item which is expected to match the nextnew // display item.
diff --git a/third_party/blink/renderer/platform/graphics/parkable_image_test.cc b/third_party/blink/renderer/platform/graphics/parkable_image_test.cc index 0abdc8b..8c79e4d 100644 --- a/third_party/blink/renderer/platform/graphics/parkable_image_test.cc +++ b/third_party/blink/renderer/platform/graphics/parkable_image_test.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "third_party/blink/renderer/platform/graphics/parkable_image.h" +#include "base/memory/raw_ptr.h" #include "base/synchronization/lock.h" #include "base/test/bind.h" #include "base/test/metrics/histogram_tester.h" @@ -173,7 +174,7 @@ private: base::test::TaskEnvironment task_env_; - InMemoryDataAllocator* allocator_for_testing_; + raw_ptr<InMemoryDataAllocator, ExperimentalRenderer> allocator_for_testing_; }; // Parking is enabled for these tests.
diff --git a/third_party/blink/renderer/platform/graphics/path.h b/third_party/blink/renderer/platform/graphics/path.h index 0afce31..c19f608 100644 --- a/third_party/blink/renderer/platform/graphics/path.h +++ b/third_party/blink/renderer/platform/graphics/path.h
@@ -29,6 +29,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PATH_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_PATH_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/geometry/float_rounded_rect.h" #include "third_party/blink/renderer/platform/graphics/graphics_types.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -64,7 +65,7 @@ // returns two tangent points and the endpoint. struct PathElement { PathElementType type; - gfx::PointF* points; + raw_ptr<gfx::PointF, ExperimentalRenderer> points; }; // Result structure from Path::PointAndNormalAtLength() (and similar).
diff --git a/third_party/blink/renderer/platform/graphics/surface_layer_bridge.h b/third_party/blink/renderer/platform/graphics/surface_layer_bridge.h index 355ec1c..17a5741 100644 --- a/third_party/blink/renderer/platform/graphics/surface_layer_bridge.h +++ b/third_party/blink/renderer/platform/graphics/surface_layer_bridge.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_SURFACE_LAYER_BRIDGE_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_SURFACE_LAYER_BRIDGE_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "components/viz/common/surfaces/parent_local_surface_id_allocator.h" #include "components/viz/common/surfaces/surface_id.h" @@ -66,7 +67,7 @@ scoped_refptr<cc::SolidColorLayer> solid_color_layer_; // The |observer_| handles unregistering the contents layer on its own. - WebSurfaceLayerBridgeObserver* observer_; + raw_ptr<WebSurfaceLayerBridgeObserver, ExperimentalRenderer> observer_; cc::UpdateSubmissionStateCB update_submission_state_callback_; viz::ParentLocalSurfaceIdAllocator parent_local_surface_id_allocator_; mojo::Receiver<blink::mojom::blink::EmbeddedFrameSinkClient> receiver_{this};
diff --git a/third_party/blink/renderer/platform/graphics/test/fake_web_graphics_context_3d_provider.h b/third_party/blink/renderer/platform/graphics/test/fake_web_graphics_context_3d_provider.h index 45912af3..647437cb 100644 --- a/third_party/blink/renderer/platform/graphics/test/fake_web_graphics_context_3d_provider.h +++ b/third_party/blink/renderer/platform/graphics/test/fake_web_graphics_context_3d_provider.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_TEST_FAKE_WEB_GRAPHICS_CONTEXT_3D_PROVIDER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_TEST_FAKE_WEB_GRAPHICS_CONTEXT_3D_PROVIDER_H_ +#include "base/memory/raw_ptr.h" #include "cc/test/stub_decode_cache.h" #include "cc/tiles/image_decode_cache.h" #include "components/viz/test/test_context_provider.h" @@ -137,16 +138,19 @@ private: cc::StubDecodeCache stub_image_decode_cache_; viz::TestSharedImageInterface test_shared_image_interface_; - gpu::gles2::GLES2Interface* gl_ = nullptr; + raw_ptr<gpu::gles2::GLES2Interface, ExperimentalRenderer> gl_ = nullptr; std::unique_ptr<gpu::raster::RasterInterface> raster_interface_; - gpu::raster::RasterInterface* external_raster_interface_ = nullptr; + raw_ptr<gpu::raster::RasterInterface, ExperimentalRenderer> + external_raster_interface_ = nullptr; std::unique_ptr<gpu::webgpu::WebGPUInterfaceStub> webgpu_interface_; sk_sp<GrDirectContext> gr_context_; gpu::Capabilities capabilities_; gpu::GpuFeatureInfo gpu_feature_info_; WebglPreferences webgl_preferences_; - cc::ImageDecodeCache* image_decode_cache_ = nullptr; - viz::RasterContextProvider* raster_context_provider_ = nullptr; + raw_ptr<cc::ImageDecodeCache, ExperimentalRenderer> image_decode_cache_ = + nullptr; + raw_ptr<viz::RasterContextProvider, ExperimentalRenderer> + raster_context_provider_ = nullptr; }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/test/mock_image_decoder.h b/third_party/blink/renderer/platform/graphics/test/mock_image_decoder.h index 4da2f9e..cd74241 100644 --- a/third_party/blink/renderer/platform/graphics/test/mock_image_decoder.h +++ b/third_party/blink/renderer/platform/graphics/test/mock_image_decoder.h
@@ -30,6 +30,7 @@ #include <utility> #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/graphics/image_frame_generator.h" #include "third_party/blink/renderer/platform/image-decoders/image_decoder.h" #include "third_party/blink/renderer/platform/wtf/forward.h" @@ -141,7 +142,7 @@ frame_buffer_cache_[index].SetHasAlpha(false); } - MockImageDecoderClient* client_; + raw_ptr<MockImageDecoderClient, ExperimentalRenderer> client_; }; class MockImageDecoderFactory : public ImageDecoderFactory { @@ -171,7 +172,7 @@ const gfx::Size& decoded_size) : client_(client), decoded_size_(decoded_size) {} - MockImageDecoderClient* client_; + raw_ptr<MockImageDecoderClient, ExperimentalRenderer> client_; gfx::Size decoded_size_; };
diff --git a/third_party/blink/renderer/platform/graphics/video_frame_resource_provider.h b/third_party/blink/renderer/platform/graphics/video_frame_resource_provider.h index cf05cf0..d9d6b82 100644 --- a/third_party/blink/renderer/platform/graphics/video_frame_resource_provider.h +++ b/third_party/blink/renderer/platform/graphics/video_frame_resource_provider.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_VIDEO_FRAME_RESOURCE_PROVIDER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_GRAPHICS_VIDEO_FRAME_RESOURCE_PROVIDER_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "cc/trees/layer_tree_settings.h" #include "components/viz/client/client_resource_provider.h" @@ -63,7 +64,7 @@ private: const cc::LayerTreeSettings settings_; - viz::RasterContextProvider* context_provider_; + raw_ptr<viz::RasterContextProvider, ExperimentalRenderer> context_provider_; std::unique_ptr<viz::ClientResourceProvider> resource_provider_; std::unique_ptr<media::VideoResourceUpdater> resource_updater_; bool use_sync_primitives_ = false;
diff --git a/third_party/blink/renderer/platform/graphics/video_frame_submitter.h b/third_party/blink/renderer/platform/graphics/video_frame_submitter.h index 9fdcd88..1f5d0ab7 100644 --- a/third_party/blink/renderer/platform/graphics/video_frame_submitter.h +++ b/third_party/blink/renderer/platform/graphics/video_frame_submitter.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/read_only_shared_memory_region.h" #include "base/memory/weak_ptr.h" #include "base/threading/thread_checker.h" @@ -143,7 +144,8 @@ scoped_refptr<media::VideoFrame> video_frame, media::VideoTransformation transform); - cc::VideoFrameProvider* video_frame_provider_ = nullptr; + raw_ptr<cc::VideoFrameProvider, ExperimentalRenderer> video_frame_provider_ = + nullptr; bool is_media_stream_ = false; scoped_refptr<viz::RasterContextProvider> context_provider_; mojo::Remote<viz::mojom::blink::CompositorFrameSink> remote_frame_sink_; @@ -161,7 +163,8 @@ // Points to either `remote_frame_sink_` or `bundle_proxy_` depending // on whether UseVideoFrameSinkBundle is enabled. - viz::mojom::blink::CompositorFrameSink* compositor_frame_sink_ = nullptr; + raw_ptr<viz::mojom::blink::CompositorFrameSink, ExperimentalRenderer> + compositor_frame_sink_ = nullptr; // Current rendering state. Set by StartRendering() and StopRendering(). bool is_rendering_ = false;
diff --git a/third_party/blink/renderer/platform/graphics/video_frame_submitter_test.cc b/third_party/blink/renderer/platform/graphics/video_frame_submitter_test.cc index 41e89d2..67ba0a8 100644 --- a/third_party/blink/renderer/platform/graphics/video_frame_submitter_test.cc +++ b/third_party/blink/renderer/platform/graphics/video_frame_submitter_test.cc
@@ -11,6 +11,7 @@ #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/read_only_shared_memory_region.h" #include "base/test/bind.h" #include "base/test/scoped_feature_list.h" @@ -192,7 +193,8 @@ context_provider_.get(), nullptr); submitter_ = std::make_unique<VideoFrameSubmitter>( base::DoNothing(), reporting_cb, - base::WrapUnique<MockVideoFrameResourceProvider>(resource_provider_)); + base::WrapUnique<MockVideoFrameResourceProvider>( + resource_provider_.get())); submitter_->Initialize(video_frame_provider_.get(), false); mojo::PendingRemote<viz::mojom::blink::CompositorFrameSink> submitter_sink; @@ -264,7 +266,8 @@ std::unique_ptr<viz::FakeExternalBeginFrameSource> begin_frame_source_; std::unique_ptr<StrictMock<VideoMockCompositorFrameSink>> sink_; std::unique_ptr<StrictMock<MockVideoFrameProvider>> video_frame_provider_; - StrictMock<MockVideoFrameResourceProvider>* resource_provider_; + raw_ptr<StrictMock<MockVideoFrameResourceProvider>, ExperimentalRenderer> + resource_provider_; scoped_refptr<viz::TestContextProvider> context_provider_; std::unique_ptr<VideoFrameSubmitter> submitter_;
diff --git a/third_party/blink/renderer/platform/graphics/web_graphics_context_3d_provider_util.cc b/third_party/blink/renderer/platform/graphics/web_graphics_context_3d_provider_util.cc index f859f3e6..e981c2d 100644 --- a/third_party/blink/renderer/platform/graphics/web_graphics_context_3d_provider_util.cc +++ b/third_party/blink/renderer/platform/graphics/web_graphics_context_3d_provider_util.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/platform/graphics/web_graphics_context_3d_provider_util.h" +#include "base/memory/raw_ptr.h" #include "base/synchronization/waitable_event.h" #include "base/task/single_thread_task_runner.h" #include "third_party/blink/public/platform/web_url.h" @@ -28,7 +29,7 @@ struct ContextProviderCreationInfo { // Inputs. Platform::ContextAttributes context_attributes; - Platform::GraphicsInfo* gl_info; + raw_ptr<Platform::GraphicsInfo, ExperimentalRenderer> gl_info; KURL url; // Outputs. std::unique_ptr<WebGraphicsContext3DProvider> created_context_provider;
diff --git a/third_party/blink/renderer/platform/graphics/web_graphics_context_3d_video_frame_pool.cc b/third_party/blink/renderer/platform/graphics/web_graphics_context_3d_video_frame_pool.cc index 373e7fc..1f887ea 100644 --- a/third_party/blink/renderer/platform/graphics/web_graphics_context_3d_video_frame_pool.cc +++ b/third_party/blink/renderer/platform/graphics/web_graphics_context_3d_video_frame_pool.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/platform/graphics/web_graphics_context_3d_video_frame_pool.h" #include "base/feature_list.h" +#include "base/memory/raw_ptr.h" #include "components/viz/common/gpu/raster_context_provider.h" #include "gpu/GLES2/gl2extchromium.h" #include "gpu/command_buffer/client/context_support.h" @@ -96,7 +97,7 @@ base::WeakPtr<blink::WebGraphicsContext3DProviderWrapper> weak_context_provider_; - gpu::GpuMemoryBufferManager* gmb_manager_; + raw_ptr<gpu::GpuMemoryBufferManager, ExperimentalRenderer> gmb_manager_; }; } // namespace
diff --git a/third_party/blink/renderer/platform/image-decoders/rw_buffer.cc b/third_party/blink/renderer/platform/image-decoders/rw_buffer.cc index 6f8e63e..8760db0e 100644 --- a/third_party/blink/renderer/platform/image-decoders/rw_buffer.cc +++ b/third_party/blink/renderer/platform/image-decoders/rw_buffer.cc
@@ -7,6 +7,7 @@ #include "base/atomic_ref_count.h" #include "base/check.h" #include "base/check_op.h" +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/wtf/allocator/partitions.h" #include <algorithm> @@ -23,7 +24,8 @@ } // namespace struct RWBuffer::BufferBlock { - RWBuffer::BufferBlock* next_; // updated by the writer + raw_ptr<RWBuffer::BufferBlock, ExperimentalRenderer> + next_; // updated by the writer size_t used_; // updated by the writer const size_t capacity_;
diff --git a/third_party/blink/renderer/platform/image-decoders/rw_buffer.h b/third_party/blink/renderer/platform/image-decoders/rw_buffer.h index f4011f0c..e6a80af 100644 --- a/third_party/blink/renderer/platform/image-decoders/rw_buffer.h +++ b/third_party/blink/renderer/platform/image-decoders/rw_buffer.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_IMAGE_DECODERS_RW_BUFFER_H_ #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/wtf/thread_safe_ref_counted.h" @@ -37,8 +38,8 @@ bool HasNext() const; private: - const RWBuffer* rw_buffer_; - RWBuffer::BufferBlock* block_; + raw_ptr<const RWBuffer, ExperimentalRenderer> rw_buffer_; + raw_ptr<RWBuffer::BufferBlock, ExperimentalRenderer> block_; size_t remaining_; }; @@ -77,8 +78,8 @@ void Validate() const; private: - BufferHead* head_ = nullptr; - BufferBlock* tail_ = nullptr; + raw_ptr<BufferHead, ExperimentalRenderer> head_ = nullptr; + raw_ptr<BufferBlock, ExperimentalRenderer> tail_ = nullptr; size_t total_used_ = 0; }; @@ -121,9 +122,9 @@ bool Next(); private: - const RWBuffer::BufferBlock* block_; + raw_ptr<const RWBuffer::BufferBlock, ExperimentalRenderer> block_; size_t remaining_; - const ROBuffer* buffer_; + raw_ptr<const ROBuffer, ExperimentalRenderer> buffer_; }; private: @@ -133,9 +134,9 @@ const RWBuffer::BufferBlock* tail); ~ROBuffer(); - const RWBuffer::BufferHead* head_; + raw_ptr<const RWBuffer::BufferHead, ExperimentalRenderer> head_; const size_t available_; - const RWBuffer::BufferBlock* tail_; + raw_ptr<const RWBuffer::BufferBlock, ExperimentalRenderer> tail_; friend class RWBuffer; };
diff --git a/third_party/blink/renderer/platform/image-encoders/image_encoder.h b/third_party/blink/renderer/platform/image-encoders/image_encoder.h index 9c42b19..f3a16ef 100644 --- a/third_party/blink/renderer/platform/image-encoders/image_encoder.h +++ b/third_party/blink/renderer/platform/image-encoders/image_encoder.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_IMAGE_ENCODERS_IMAGE_ENCODER_H_ #include "base/check_op.h" +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/graphics/graphics_types.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" @@ -34,7 +35,7 @@ private: // Does not have ownership. - Vector<unsigned char>* dst_; + raw_ptr<Vector<unsigned char>, ExperimentalRenderer> dst_; }; class PLATFORM_EXPORT ImageEncoder {
diff --git a/third_party/blink/renderer/platform/instrumentation/histogram.h b/third_party/blink/renderer/platform/instrumentation/histogram.h index 7d43f81..d3b09eb1 100644 --- a/third_party/blink/renderer/platform/instrumentation/histogram.h +++ b/third_party/blink/renderer/platform/instrumentation/histogram.h
@@ -6,6 +6,8 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_INSTRUMENTATION_HISTOGRAM_H_ #include <stdint.h> +#include "base/memory/raw_ptr.h" +#include "base/memory/raw_ref.h" #include "base/metrics/histogram_base.h" #include "base/metrics/histogram_macros.h" #include "base/time/default_tick_clock.h" @@ -36,7 +38,7 @@ protected: explicit CustomCountHistogram(base::HistogramBase*); - base::HistogramBase* histogram_; + raw_ptr<base::HistogramBase, ExperimentalRenderer> histogram_; }; template <typename Derived> @@ -50,17 +52,17 @@ ScopedUsHistogramTimerBase(CustomCountHistogram& counter, const base::TickClock* clock) - : clock_(*clock), start_time_(clock_.NowTicks()), counter_(counter) {} + : clock_(*clock), start_time_(clock_->NowTicks()), counter_(counter) {} ~ScopedUsHistogramTimerBase() { if (Derived::ShouldRecord()) - counter_.CountMicroseconds(clock_.NowTicks() - start_time_); + counter_->CountMicroseconds(clock_->NowTicks() - start_time_); } private: - const base::TickClock& clock_; + const raw_ref<const base::TickClock, ExperimentalRenderer> clock_; base::TimeTicks start_time_; - CustomCountHistogram& counter_; + const raw_ref<CustomCountHistogram, ExperimentalRenderer> counter_; }; class ScopedUsHistogramTimer
diff --git a/third_party/blink/renderer/platform/instrumentation/tracing/web_memory_allocator_dump.h b/third_party/blink/renderer/platform/instrumentation/tracing/web_memory_allocator_dump.h index dd4e38a..34afe0f6 100644 --- a/third_party/blink/renderer/platform/instrumentation/tracing/web_memory_allocator_dump.h +++ b/third_party/blink/renderer/platform/instrumentation/tracing/web_memory_allocator_dump.h
@@ -7,6 +7,7 @@ #include <stdint.h> +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" @@ -52,7 +53,8 @@ blink::WebMemoryAllocatorDumpGuid Guid() const; private: - base::trace_event::MemoryAllocatorDump* memory_allocator_dump_; // Not owned. + raw_ptr<base::trace_event::MemoryAllocatorDump, ExperimentalRenderer> + memory_allocator_dump_; // Not owned. blink::WebMemoryAllocatorDumpGuid guid_; };
diff --git a/third_party/blink/renderer/platform/instrumentation/tracing/web_process_memory_dump.h b/third_party/blink/renderer/platform/instrumentation/tracing/web_process_memory_dump.h index 9879682e..266c307 100644 --- a/third_party/blink/renderer/platform/instrumentation/tracing/web_process_memory_dump.h +++ b/third_party/blink/renderer/platform/instrumentation/tracing/web_process_memory_dump.h
@@ -9,6 +9,7 @@ #include <unordered_map> #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/trace_event/heap_profiler_allocation_context.h" #include "base/trace_event/memory_dump_request_args.h" #include "third_party/blink/renderer/platform/instrumentation/tracing/web_memory_allocator_dump.h" @@ -147,7 +148,8 @@ // The underlying ProcessMemoryDump instance to which the // createMemoryAllocatorDump() calls will be proxied to. - base::trace_event::ProcessMemoryDump* process_memory_dump_; // Not owned. + raw_ptr<base::trace_event::ProcessMemoryDump, ExperimentalRenderer> + process_memory_dump_; // Not owned. // TODO(ssid): Remove it once this information is added to ProcessMemoryDump. base::trace_event::MemoryDumpLevelOfDetail level_of_detail_;
diff --git a/third_party/blink/renderer/platform/json/json_parser.cc b/third_party/blink/renderer/platform/json/json_parser.cc index 074a1ba..f45791d 100644 --- a/third_party/blink/renderer/platform/json/json_parser.cc +++ b/third_party/blink/renderer/platform/json/json_parser.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/platform/json/json_parser.h" +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "base/numerics/safe_conversions.h" #include "third_party/blink/renderer/platform/json/json_values.h" @@ -58,8 +59,8 @@ template <typename CharType> struct Cursor { int line; - const CharType* line_start; - const CharType* pos; + raw_ptr<const CharType, ExperimentalRenderer> line_start; + raw_ptr<const CharType, ExperimentalRenderer> pos; }; enum Token { @@ -495,7 +496,7 @@ } case kStringLiteral: { String value; - error = DecodeString(&token_start, cursor->pos, &value); + error = DecodeString(&token_start, cursor->pos.get(), &value); if (error != Error::kNoError) { *cursor = token_start; return error; @@ -555,7 +556,7 @@ return Error::kUnexpectedToken; } String key; - error = DecodeString(&token_start, cursor->pos, &key); + error = DecodeString(&token_start, cursor->pos.get(), &key); if (error != Error::kNoError) { *cursor = token_start; return error;
diff --git a/third_party/blink/renderer/platform/json/json_values_test.cc b/third_party/blink/renderer/platform/json/json_values_test.cc index 18c1ac6e..d96b0fc 100644 --- a/third_party/blink/renderer/platform/json/json_values_test.cc +++ b/third_party/blink/renderer/platform/json/json_values_test.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/platform/json/json_values.h" +#include "base/memory/raw_ref.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/renderer/platform/wtf/text/string_builder.h" @@ -15,10 +16,10 @@ public: JSONValueDeletionVerifier(int& counter) : counter_(counter) {} - ~JSONValueDeletionVerifier() override { ++counter_; } + ~JSONValueDeletionVerifier() override { ++(*counter_); } private: - int& counter_; + const raw_ref<int, ExperimentalRenderer> counter_; }; } // namespace
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher_test.cc b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher_test.cc index 8209ef2..2990e30 100644 --- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher_test.cc +++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher_test.cc
@@ -32,6 +32,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/strings/string_number_conversions.h" #include "base/task/single_thread_task_runner.h" #include "base/test/bind.h" @@ -662,7 +663,7 @@ String DebugName() const override { return "RequestSameResourceOnComplete"; } private: - URLLoaderMockFactory* mock_factory_; + raw_ptr<URLLoaderMockFactory, ExperimentalRenderer> mock_factory_; bool notify_finished_called_ = false; scoped_refptr<const SecurityOrigin> source_origin_; }; @@ -753,7 +754,7 @@ String DebugName() const override { return "ServeRequestsOnCompleteClient"; } private: - URLLoaderMockFactory* mock_factory_; + raw_ptr<URLLoaderMockFactory, ExperimentalRenderer> mock_factory_; }; // Regression test for http://crbug.com/594072.
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler.h b/third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler.h index d567a7c..6239eef 100644 --- a/third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler.h +++ b/third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler.h
@@ -8,6 +8,7 @@ #include <map> #include <set> +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "base/types/strong_alias.h" #include "net/http/http_response_info.h" @@ -401,7 +402,7 @@ const Member<DetachableConsoleLogger> console_logger_; - const base::Clock* clock_; + raw_ptr<const base::Clock, ExperimentalRenderer> clock_; ThrottleOptionOverride throttle_option_override_;
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler_test.cc b/third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler_test.cc index ee26ff9..39ec458 100644 --- a/third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler_test.cc +++ b/third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler_test.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler.h" #include <memory> +#include "base/memory/raw_ptr.h" #include "base/test/scoped_feature_list.h" #include "base/test/test_mock_time_task_runner.h" #include "testing/gtest/include/gtest/gtest.h" @@ -66,7 +67,7 @@ private: Member<DetachableConsoleLogger> console_logger_ = MakeGarbageCollected<DetachableConsoleLogger>(); - MockClientDelegate* delegate_; + raw_ptr<MockClientDelegate, ExperimentalRenderer> delegate_; bool was_run_ = false; };
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_loader_defer_loading_test.cc b/third_party/blink/renderer/platform/loader/fetch/resource_loader_defer_loading_test.cc index 43d9c5d..35f24956 100644 --- a/third_party/blink/renderer/platform/loader/fetch/resource_loader_defer_loading_test.cc +++ b/third_party/blink/renderer/platform/loader/fetch/resource_loader_defer_loading_test.cc
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/loader/fetch/resource_loader.h" #include "base/debug/stack_trace.h" @@ -81,7 +82,7 @@ private: // Points to |ResourceLoaderDefersLoadingTest::freeze_mode_|. - LoaderFreezeMode* const freeze_mode_ptr_; + const raw_ptr<LoaderFreezeMode, ExperimentalRenderer> freeze_mode_ptr_; }; class DummyCodeCacheHost final : public mojom::blink::CodeCacheHost { @@ -142,7 +143,7 @@ private: // Points to |ResourceLoaderDefersLoadingTest::freeze_mode_|. - LoaderFreezeMode* const freeze_mode_ptr_; + const raw_ptr<LoaderFreezeMode, ExperimentalRenderer> freeze_mode_ptr_; std::unique_ptr<CodeCacheHost> code_cache_host_; };
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/cached_metadata_handler_test.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/cached_metadata_handler_test.cc index 9523830..e810493 100644 --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/cached_metadata_handler_test.cc +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/cached_metadata_handler_test.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/platform/loader/fetch/url_loader/cached_metadata_handler.h" +#include "base/memory/raw_ptr.h" #include "base/test/task_environment.h" #include "mojo/public/cpp/bindings/receiver.h" #include "testing/gtest/include/gtest/gtest.h" @@ -72,7 +73,7 @@ sim_->CacheMetadataInCacheStorage(url); } - MockGeneratedCodeCache* sim_; + raw_ptr<MockGeneratedCodeCache, ExperimentalRenderer> sim_; }; ResourceResponse CreateTestResourceResponse() {
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 dff2b582..f31bd22 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
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_FETCH_URL_LOADER_DEDICATED_OR_SHARED_WORKER_FETCH_CONTEXT_IMPL_H_ #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" @@ -276,7 +277,8 @@ child_preference_watchers_; // This is owned by ThreadedMessagingProxyBase on the main thread. - base::WaitableEvent* terminate_sync_load_event_ = nullptr; + raw_ptr<base::WaitableEvent, ExperimentalRenderer> + terminate_sync_load_event_ = nullptr; // The URLLoaderFactory which was created and passed to // Blink by GetURLLoaderFactory(). @@ -300,7 +302,8 @@ std::unique_ptr<WeakWrapperResourceLoadInfoNotifier> weak_wrapper_resource_load_info_notifier_; - AcceptLanguagesWatcher* accept_languages_watcher_ = nullptr; + raw_ptr<AcceptLanguagesWatcher, ExperimentalRenderer> + accept_languages_watcher_ = nullptr; }; template <>
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.cc index 3619bbb..48d8d374 100644 --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.cc +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.cc
@@ -10,6 +10,7 @@ #include "base/feature_list.h" #include "base/functional/bind.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/trace_event/trace_event.h" #include "mojo/public/cpp/system/data_pipe_drainer.h" @@ -257,7 +258,7 @@ owner_->FlushDeferredMessages(); } - MojoURLLoaderClient* const owner_; + const raw_ptr<MojoURLLoaderClient, ExperimentalRenderer> owner_; mojo::ScopedDataPipeProducerHandle writable_; mojo::SimpleWatcher writable_watcher_; std::unique_ptr<mojo::DataPipeDrainer> pipe_drainer_;
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.h b/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.h index cd8cb2e..2829ddf 100644 --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.h +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/functional/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" @@ -109,7 +110,8 @@ bool has_received_complete_ = false; LoaderFreezeMode freeze_mode_ = LoaderFreezeMode::kNone; int32_t accumulated_transfer_size_diff_during_deferred_ = 0; - ResourceRequestSender* const resource_request_sender_; + const raw_ptr<ResourceRequestSender, ExperimentalRenderer> + resource_request_sender_; scoped_refptr<base::SequencedTaskRunner> task_runner_; bool bypass_redirect_checks_ = false; KURL last_loaded_url_;
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client_unittest.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client_unittest.cc index b75af64..ea4e8cfc 100644 --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client_unittest.cc +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client_unittest.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/platform/loader/fetch/url_loader/mojo_url_loader_client.h" #include <vector> +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/task/sequenced_task_runner.h" #include "base/test/scoped_feature_list.h" @@ -144,7 +145,7 @@ net::LoadTimingInfo last_load_timing; network::URLLoaderCompletionStatus completion_status; - MojoURLLoaderClient* url_laoder_client; + raw_ptr<MojoURLLoaderClient, ExperimentalRenderer> url_laoder_client; }; private: @@ -264,7 +265,7 @@ std::unique_ptr<ThrottlingURLLoader> url_loader_; std::unique_ptr<MojoURLLoaderClient> client_; std::unique_ptr<MockResourceRequestSender> resource_request_sender_; - MockResourceRequestSender::Context* context_; + raw_ptr<MockResourceRequestSender::Context, ExperimentalRenderer> context_; int request_id_ = 0; mojo::Remote<network::mojom::URLLoaderClient> url_loader_client_; };
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/navigation_body_loader.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/navigation_body_loader.cc index 725711f..9a74567 100644 --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/navigation_body_loader.cc +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/navigation_body_loader.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/platform/loader/fetch/url_loader/navigation_body_loader.h" #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/field_trial_params.h" #include "base/metrics/histogram_functions.h" #include "base/numerics/safe_conversions.h" @@ -318,7 +319,7 @@ } private: - NavigationBodyLoader* loader_; + raw_ptr<NavigationBodyLoader, ExperimentalRenderer> loader_; }; NavigationBodyLoader::NavigationBodyLoader(
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/navigation_body_loader.h b/third_party/blink/renderer/platform/loader/fetch/url_loader/navigation_body_loader.h index 76cc323..e653ae04 100644 --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/navigation_body_loader.h +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/navigation_body_loader.h
@@ -11,6 +11,7 @@ #include <utility> #include <vector> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" @@ -152,7 +153,8 @@ mojo::Remote<network::mojom::URLLoader> url_loader_; mojo::Receiver<network::mojom::URLLoaderClient> url_loader_client_receiver_{ this}; - WebNavigationBodyLoader::Client* client_ = nullptr; + raw_ptr<WebNavigationBodyLoader::Client, ExperimentalRenderer> client_ = + nullptr; // The handle and watcher are live while loading the body. mojo::ScopedDataPipeConsumerHandle handle_;
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/sync_load_context.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/sync_load_context.cc index f5ca19e0..3d7b796 100644 --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/sync_load_context.cc +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/sync_load_context.cc
@@ -10,6 +10,7 @@ #include "base/feature_list.h" #include "base/functional/bind.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/synchronization/waitable_event.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" @@ -83,14 +84,15 @@ } if (timeout_timer_) { DCHECK_NE(base::TimeDelta::Max(), timeout); - timeout_timer_->Start(FROM_HERE, timeout, context_, + timeout_timer_->Start(FROM_HERE, timeout, context_.get(), &SyncLoadContext::OnTimeout); } } - SyncLoadContext* context_; - base::WaitableEvent* redirect_or_response_event_; - base::WaitableEvent* abort_event_; + raw_ptr<SyncLoadContext, ExperimentalRenderer> context_; + raw_ptr<base::WaitableEvent, ExperimentalRenderer> + redirect_or_response_event_; + raw_ptr<base::WaitableEvent, ExperimentalRenderer> abort_event_; base::WaitableEventWatcher abort_watcher_; absl::optional<base::OneShotTimer> timeout_timer_; };
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/sync_load_context.h b/third_party/blink/renderer/platform/loader/fetch/url_loader/sync_load_context.h index 101bcc8..6a17049c 100644 --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/sync_load_context.h +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/sync_load_context.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_FETCH_URL_LOADER_SYNC_LOAD_CONTEXT_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_FETCH_URL_LOADER_SYNC_LOAD_CONTEXT_H_ +#include "base/memory/raw_ptr.h" #include "base/synchronization/waitable_event_watcher.h" #include "base/task/single_thread_task_runner.h" #include "base/timer/timer.h" @@ -121,7 +122,7 @@ // This raw pointer will remain valid for the lifetime of this object because // it remains on the stack until |event_| is signaled. // Set to null after CompleteRequest() is called. - SyncLoadResponse* response_; + raw_ptr<SyncLoadResponse, ExperimentalRenderer> response_; // Used when handling a redirect. It is set in OnReceivedRedirect(), and // called when FollowRedirect() is called from the original thread. @@ -131,7 +132,7 @@ // independent thread and set to nullptr in `FollowRedirect()` or // `CancelRedirect()` on the same thread after `redirect_or_response_event_` // is signaled, which protects it against race condition. - SyncLoadContext** context_for_redirect_; + raw_ptr<SyncLoadContext*, ExperimentalRenderer> context_for_redirect_; enum class Mode { kInitial, kDataPipe, kBlob }; Mode mode_ = Mode::kInitial;
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader.cc index 013c7f9..790e780 100644 --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader.cc +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader.cc
@@ -15,6 +15,7 @@ #include "base/check_op.h" #include "base/functional/bind.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/task/sequenced_task_runner.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" @@ -129,7 +130,7 @@ private: ~Context() override; - URLLoader* loader_; + raw_ptr<URLLoader, ExperimentalRenderer> loader_; KURL url_; // This is set in Start() and is used by SetSecurityStyleAndDetails() to @@ -140,7 +141,7 @@ // DevTools request id to that new request, and it will propagate here. bool has_devtools_request_id_; - URLLoaderClient* client_; + raw_ptr<URLLoaderClient, ExperimentalRenderer> client_; // TODO(https://crbug.com/1137682): Remove |freezable_task_runner_|, migrating // the current usage to use |unfreezable_task_runner_| instead. Also, rename // |unfreezable_task_runner_| to |maybe_unfreezable_task_runner_| here and @@ -153,7 +154,7 @@ mojo::PendingRemote<mojom::blink::KeepAliveHandle> keep_alive_handle_; LoaderFreezeMode freeze_mode_ = LoaderFreezeMode::kNone; const Vector<String> cors_exempt_header_list_; - base::WaitableEvent* terminate_sync_load_event_; + raw_ptr<base::WaitableEvent, ExperimentalRenderer> terminate_sync_load_event_; int request_id_;
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader_factory.h b/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader_factory.h index 8f8c7be..8d33452 100644 --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader_factory.h +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/url_loader_factory.h
@@ -62,7 +62,8 @@ protected: scoped_refptr<network::SharedURLLoaderFactory> loader_factory_; Vector<String> cors_exempt_header_list_; - base::WaitableEvent* terminate_sync_load_event_ = nullptr; + raw_ptr<base::WaitableEvent, ExperimentalRenderer> + terminate_sync_load_event_ = nullptr; }; // A test version of the above factory interface, which supports cloning the
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 a370658..164227d 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
@@ -10,6 +10,7 @@ #include "base/command_line.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/run_loop.h" #include "base/task/single_thread_task_runner.h" @@ -416,7 +417,7 @@ base::test::SingleThreadTaskEnvironment task_environment_; mojo::ScopedDataPipeProducerHandle body_handle_; std::unique_ptr<TestURLLoaderClient> client_; - MockResourceRequestSender* sender_ = nullptr; + raw_ptr<MockResourceRequestSender, ExperimentalRenderer> sender_ = nullptr; }; TEST_F(URLLoaderTest, Success) {
diff --git a/third_party/blink/renderer/platform/loader/static_data_navigation_body_loader.h b/third_party/blink/renderer/platform/loader/static_data_navigation_body_loader.h index 749a7bd..a828ac94 100644 --- a/third_party/blink/renderer/platform/loader/static_data_navigation_body_loader.h +++ b/third_party/blink/renderer/platform/loader/static_data_navigation_body_loader.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_STATIC_DATA_NAVIGATION_BODY_LOADER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_STATIC_DATA_NAVIGATION_BODY_LOADER_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "third_party/blink/public/platform/web_navigation_body_loader.h" #include "third_party/blink/renderer/platform/loader/fetch/loader_freeze_mode.h" @@ -34,7 +35,8 @@ void Continue(); scoped_refptr<SharedBuffer> data_; - WebNavigationBodyLoader::Client* client_ = nullptr; + raw_ptr<WebNavigationBodyLoader::Client, ExperimentalRenderer> client_ = + nullptr; LoaderFreezeMode freeze_mode_ = LoaderFreezeMode::kNone; bool sent_all_data_ = false; bool received_all_data_ = false;
diff --git a/third_party/blink/renderer/platform/loader/testing/mock_fetch_context.h b/third_party/blink/renderer/platform/loader/testing/mock_fetch_context.h index b1cd1378..d28664a 100644 --- a/third_party/blink/renderer/platform/loader/testing/mock_fetch_context.h +++ b/third_party/blink/renderer/platform/loader/testing/mock_fetch_context.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_TESTING_MOCK_FETCH_CONTEXT_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_TESTING_MOCK_FETCH_CONTEXT_H_ +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/types/optional_ref.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -115,7 +116,8 @@ } private: - mojom::ResourceLoadInfoNotifier* resource_load_info_notifier_ = nullptr; + raw_ptr<mojom::ResourceLoadInfoNotifier, ExperimentalRenderer> + resource_load_info_notifier_ = nullptr; std::unique_ptr<WeakWrapperResourceLoadInfoNotifier> weak_wrapper_resource_load_info_notifier_; Vector<String> blocked_urls_;
diff --git a/third_party/blink/renderer/platform/loader/testing/test_loader_factory.h b/third_party/blink/renderer/platform/loader/testing/test_loader_factory.h index 53a54623..29de3748 100644 --- a/third_party/blink/renderer/platform/loader/testing/test_loader_factory.h +++ b/third_party/blink/renderer/platform/loader/testing/test_loader_factory.h
@@ -7,6 +7,7 @@ #include <memory> #include <utility> +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "third_party/blink/public/platform/platform.h" #include "third_party/blink/renderer/platform/exported/wrapped_resource_request.h" @@ -37,7 +38,7 @@ CodeCacheHost* GetCodeCacheHost() override { return nullptr; } private: - URLLoaderMockFactory* mock_factory_; + raw_ptr<URLLoaderMockFactory, ExperimentalRenderer> mock_factory_; }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/media/buffered_data_source_host_impl.h b/third_party/blink/renderer/platform/media/buffered_data_source_host_impl.h index 5ffa2c4a6..060d6f51 100644 --- a/third_party/blink/renderer/platform/media/buffered_data_source_host_impl.h +++ b/third_party/blink/renderer/platform/media/buffered_data_source_host_impl.h
@@ -10,6 +10,7 @@ #include "base/containers/circular_deque.h" #include "base/functional/callback.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/time/tick_clock.h" #include "base/time/time.h" #include "media/base/ranges.h" @@ -90,7 +91,7 @@ base::circular_deque<std::pair<base::TimeTicks, uint64_t>> download_history_; base::RepeatingClosure progress_cb_; - const base::TickClock* tick_clock_; + raw_ptr<const base::TickClock, ExperimentalRenderer> tick_clock_; FRIEND_TEST_ALL_PREFIXES(BufferedDataSourceHostImplTest, CanPlayThrough); FRIEND_TEST_ALL_PREFIXES(BufferedDataSourceHostImplTest,
diff --git a/third_party/blink/renderer/platform/media/hls_data_source_provider_impl.h b/third_party/blink/renderer/platform/media/hls_data_source_provider_impl.h index ec73430..c0f18dc 100644 --- a/third_party/blink/renderer/platform/media/hls_data_source_provider_impl.h +++ b/third_party/blink/renderer/platform/media/hls_data_source_provider_impl.h
@@ -7,6 +7,7 @@ #include <deque> #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/task/single_thread_task_runner.h" #include "base/time/tick_clock.h" @@ -71,7 +72,7 @@ bool success); std::unique_ptr<media::MediaLog> media_log_; - UrlIndex* url_index_; + raw_ptr<UrlIndex, ExperimentalRenderer> url_index_; scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_; scoped_refptr<base::SequencedTaskRunner> media_task_runner_; std::unique_ptr<BufferedDataSourceHostImpl> buffered_data_source_host_;
diff --git a/third_party/blink/renderer/platform/media/learning_experiment_helper_unittest.cc b/third_party/blink/renderer/platform/media/learning_experiment_helper_unittest.cc index 03a7e97..c008688 100644 --- a/third_party/blink/renderer/platform/media/learning_experiment_helper_unittest.cc +++ b/third_party/blink/renderer/platform/media/learning_experiment_helper_unittest.cc
@@ -6,6 +6,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "media/learning/common/learning_task_controller.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -77,7 +78,8 @@ } LearningTask task_; - MockLearningTaskController* controller_raw_ = nullptr; + raw_ptr<MockLearningTaskController, ExperimentalRenderer> controller_raw_ = + nullptr; std::unique_ptr<LearningExperimentHelper> helper_; FeatureDictionary dict_;
diff --git a/third_party/blink/renderer/platform/media/multi_buffer_data_source.cc b/third_party/blink/renderer/platform/media/multi_buffer_data_source.cc index 2b5c5f0..30558fdf 100644 --- a/third_party/blink/renderer/platform/media/multi_buffer_data_source.cc +++ b/third_party/blink/renderer/platform/media/multi_buffer_data_source.cc
@@ -11,6 +11,7 @@ #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/numerics/safe_conversions.h" #include "base/task/single_thread_task_runner.h" #include "media/base/media_log.h" @@ -85,7 +86,7 @@ private: const int64_t position_; const int size_; - uint8_t* data_; + raw_ptr<uint8_t, ExperimentalRenderer> data_; media::DataSource::ReadCB callback_; };
diff --git a/third_party/blink/renderer/platform/media/multi_buffer_data_source.h b/third_party/blink/renderer/platform/media/multi_buffer_data_source.h index 8d6408c..c5093ee 100644 --- a/third_party/blink/renderer/platform/media/multi_buffer_data_source.h +++ b/third_party/blink/renderer/platform/media/multi_buffer_data_source.h
@@ -10,6 +10,7 @@ #include <memory> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/synchronization/lock.h" #include "media/base/cross_origin_data_source.h" @@ -258,14 +259,14 @@ // Current playback rate. double playback_rate_; - media::MediaLog* media_log_; + raw_ptr<media::MediaLog, ExperimentalRenderer> media_log_; bool is_client_audio_element_ = false; int buffer_size_update_counter_; // Host object to report buffered byte range changes to. - BufferedDataSourceHost* host_; + raw_ptr<BufferedDataSourceHost, ExperimentalRenderer> host_; DownloadingCB downloading_cb_;
diff --git a/third_party/blink/renderer/platform/media/multi_buffer_reader.h b/third_party/blink/renderer/platform/media/multi_buffer_reader.h index 2a5781b9..ee27c46 100644 --- a/third_party/blink/renderer/platform/media/multi_buffer_reader.h +++ b/third_party/blink/renderer/platform/media/multi_buffer_reader.h
@@ -8,6 +8,7 @@ #include <stdint.h> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "third_party/blink/public/platform/media/multi_buffer.h" @@ -140,7 +141,7 @@ void Call(base::OnceClosure cb) const; // The multibuffer we're wrapping, not owned. - MultiBuffer* multibuffer_; + raw_ptr<MultiBuffer, ExperimentalRenderer> multibuffer_; // We're not interested in reading past this position. int64_t end_;
diff --git a/third_party/blink/renderer/platform/media/multi_buffer_unittest.cc b/third_party/blink/renderer/platform/media/multi_buffer_unittest.cc index 5667c07..2fd92429 100644 --- a/third_party/blink/renderer/platform/media/multi_buffer_unittest.cc +++ b/third_party/blink/renderer/platform/media/multi_buffer_unittest.cc
@@ -15,6 +15,7 @@ #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/task/single_thread_task_runner.h" #include "base/test/simple_test_tick_clock.h" @@ -124,8 +125,8 @@ int32_t max_blocks_after_defer_; size_t file_size_; bool must_read_whole_file_; - MultiBuffer* multibuffer_; - media::TestRandom* rnd_; + raw_ptr<MultiBuffer, ExperimentalRenderer> multibuffer_; + raw_ptr<media::TestRandom, ExperimentalRenderer> rnd_; }; } // namespace @@ -221,7 +222,7 @@ int32_t max_blocks_after_defer_; bool must_read_whole_file_; int32_t writers_created_; - media::TestRandom* rnd_; + raw_ptr<media::TestRandom, ExperimentalRenderer> rnd_; }; class MultiBufferTest : public testing::Test { @@ -550,7 +551,7 @@ int64_t end_; int64_t max_read_size_; int64_t read_size_; - media::TestRandom* rnd_; + raw_ptr<media::TestRandom, ExperimentalRenderer> rnd_; MultiBufferReader reader_; };
diff --git a/third_party/blink/renderer/platform/media/resource_multi_buffer_data_provider.cc b/third_party/blink/renderer/platform/media/resource_multi_buffer_data_provider.cc index 2e40173..2ce8b89 100644 --- a/third_party/blink/renderer/platform/media/resource_multi_buffer_data_provider.cc +++ b/third_party/blink/renderer/platform/media/resource_multi_buffer_data_provider.cc
@@ -217,7 +217,7 @@ #endif DCHECK(active_loader_); - scoped_refptr<UrlData> destination_url_data(url_data_); + scoped_refptr<UrlData> destination_url_data(url_data_.get()); if (!redirects_to_.is_empty()) { destination_url_data = url_data_->url_index()->GetByUrl( @@ -323,12 +323,12 @@ destination_url_data->set_passed_timing_allow_origin_check( response.TimingAllowPassed()); - if (destination_url_data != url_data_) { + if (destination_url_data != url_data_.get()) { // At this point, we've encountered a redirect, or found a better url data // instance for the data that we're about to download. // First, let's take a ref on the current url data. - scoped_refptr<UrlData> old_url_data(url_data_); + scoped_refptr<UrlData> old_url_data(url_data_.get()); destination_url_data->Use(); // Take ownership of ourselves. (From the multibuffer) @@ -451,7 +451,7 @@ fifo_.push_back(media::DataBuffer::CreateEOSBuffer()); if (url_data_->url_index()) { - url_data_->url_index()->TryInsert(url_data_); + url_data_->url_index()->TryInsert(url_data_.get()); } DCHECK(Available());
diff --git a/third_party/blink/renderer/platform/media/resource_multi_buffer_data_provider.h b/third_party/blink/renderer/platform/media/resource_multi_buffer_data_provider.h index 0ec0eb3..6cecedce 100644 --- a/third_party/blink/renderer/platform/media/resource_multi_buffer_data_provider.h +++ b/third_party/blink/renderer/platform/media/resource_multi_buffer_data_provider.h
@@ -11,6 +11,7 @@ #include <string> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "third_party/blink/public/platform/media/multi_buffer.h" @@ -96,7 +97,7 @@ // We don't need (or want) a scoped_refptr for this one, because // we are owned by it. Note that we may change this when we encounter // a redirect because we actually change ownership. - UrlData* url_data_; + raw_ptr<UrlData, ExperimentalRenderer> url_data_; // Temporary storage for incoming data. std::list<scoped_refptr<media::DataBuffer>> fifo_;
diff --git a/third_party/blink/renderer/platform/media/resource_multi_buffer_data_provider_unittest.cc b/third_party/blink/renderer/platform/media/resource_multi_buffer_data_provider_unittest.cc index 4b2a13e5..b76c288c 100644 --- a/third_party/blink/renderer/platform/media/resource_multi_buffer_data_provider_unittest.cc +++ b/third_party/blink/renderer/platform/media/resource_multi_buffer_data_provider_unittest.cc
@@ -12,6 +12,7 @@ #include "base/containers/contains.h" #include "base/format_macros.h" #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/run_loop.h" #include "base/strings/stringprintf.h" @@ -202,8 +203,9 @@ std::unique_ptr<WebAssociatedURLLoader> CreateUrlLoader( const WebAssociatedURLLoaderOptions& options) { auto url_loader = std::make_unique<NiceMock<MockWebAssociatedURLLoader>>(); - EXPECT_CALL(*url_loader.get(), - LoadAsynchronously(Truly(CorrectAcceptEncoding), loader_)); + EXPECT_CALL( + *url_loader.get(), + LoadAsynchronously(Truly(CorrectAcceptEncoding), loader_.get())); return url_loader; } @@ -217,7 +219,7 @@ scoped_refptr<UrlData> url_data_; scoped_refptr<UrlData> redirected_to_; // The loader is owned by the UrlData above. - ResourceMultiBufferDataProvider* loader_; + raw_ptr<ResourceMultiBufferDataProvider, ExperimentalRenderer> loader_; uint8_t data_[kDataSize]; };
diff --git a/third_party/blink/renderer/platform/media/smoothness_helper.cc b/third_party/blink/renderer/platform/media/smoothness_helper.cc index 93f01228..f6fa195 100644 --- a/third_party/blink/renderer/platform/media/smoothness_helper.cc +++ b/third_party/blink/renderer/platform/media/smoothness_helper.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/platform/media/smoothness_helper.h" #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "base/timer/timer.h" #include "base/unguessable_token.h" @@ -63,7 +64,7 @@ } private: - SmoothnessHelper::Client* player_ = nullptr; + raw_ptr<SmoothnessHelper::Client, ExperimentalRenderer> player_ = nullptr; WindowCB cb_; base::RepeatingTimer update_timer_; // Current dropped, decoded frames at the start of the segment. @@ -216,7 +217,7 @@ int max_num_consecutive_nnrs_ = 0; // WebMediaPlayer which will tell us about the decoded / dropped frame counts. - Client* player_; + raw_ptr<Client, ExperimentalRenderer> player_; std::unique_ptr<SmoothnessWindowMonitor> monitor_; };
diff --git a/third_party/blink/renderer/platform/media/smoothness_helper_unittest.cc b/third_party/blink/renderer/platform/media/smoothness_helper_unittest.cc index 6d81e48..7b28e415 100644 --- a/third_party/blink/renderer/platform/media/smoothness_helper_unittest.cc +++ b/third_party/blink/renderer/platform/media/smoothness_helper_unittest.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/platform/media/smoothness_helper.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/test/task_environment.h" #include "base/time/time.h" @@ -105,10 +106,10 @@ std::unique_ptr<SmoothnessHelper> helper_; // Max bad consecutive windows by frame drop LTC. - MockLearningTaskController* bad_ltc_; + raw_ptr<MockLearningTaskController, ExperimentalRenderer> bad_ltc_; // Max consecutive NNRs LTC. - MockLearningTaskController* nnr_ltc_; + raw_ptr<MockLearningTaskController, ExperimentalRenderer> nnr_ltc_; MockClient client_; FeatureVector features_;
diff --git a/third_party/blink/renderer/platform/media/video_decode_stats_reporter.h b/third_party/blink/renderer/platform/media/video_decode_stats_reporter.h index 7f862180..c0b08b0 100644 --- a/third_party/blink/renderer/platform/media/video_decode_stats_reporter.h +++ b/third_party/blink/renderer/platform/media/video_decode_stats_reporter.h
@@ -9,6 +9,7 @@ #include <string> #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/time/default_tick_clock.h" #include "base/time/tick_clock.h" @@ -172,7 +173,7 @@ // Clock for |stats_cb_timer_| and getting current tick count (NowTicks()). // Tests may supply a mock clock via the constructor. - const base::TickClock* tick_clock_; + raw_ptr<const base::TickClock, ExperimentalRenderer> tick_clock_; // Timer for all stats callbacks. Timer interval will be dynamically set based // on state of reporter. See calls to RunStatsTimerAtIntervalMs().
diff --git a/third_party/blink/renderer/platform/media/video_frame_compositor_unittest.cc b/third_party/blink/renderer/platform/media/video_frame_compositor_unittest.cc index 84e793d..2c966e5 100644 --- a/third_party/blink/renderer/platform/media/video_frame_compositor_unittest.cc +++ b/third_party/blink/renderer/platform/media/video_frame_compositor_unittest.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/public/platform/media/video_frame_compositor.h" #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/run_loop.h" #include "base/synchronization/waitable_event.h" @@ -145,7 +146,8 @@ base::test::SingleThreadTaskEnvironment task_environment_; base::TimeDelta preferred_render_interval_; base::SimpleTestTickClock tick_clock_; - StrictMock<MockWebVideoFrameSubmitter>* submitter_; + raw_ptr<StrictMock<MockWebVideoFrameSubmitter>, ExperimentalRenderer> + submitter_; std::unique_ptr<StrictMock<MockWebVideoFrameSubmitter>> client_; std::unique_ptr<VideoFrameCompositor> compositor_; const scoped_refptr<base::SingleThreadTaskRunner> task_runner_ =
diff --git a/third_party/blink/renderer/platform/media/watch_time_reporter_unittest.cc b/third_party/blink/renderer/platform/media/watch_time_reporter_unittest.cc index c30883d2..400f772 100644 --- a/third_party/blink/renderer/platform/media/watch_time_reporter_unittest.cc +++ b/third_party/blink/renderer/platform/media/watch_time_reporter_unittest.cc
@@ -6,6 +6,7 @@ #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/run_loop.h" #include "base/task/single_thread_task_runner.h" @@ -251,7 +252,7 @@ } private: - WatchTimeReporterTest* parent_; + raw_ptr<WatchTimeReporterTest, ExperimentalRenderer> parent_; }; class FakeMediaMetricsProvider : public media::mojom::MediaMetricsProvider { @@ -302,7 +303,7 @@ void SetAudioPipelineInfo(const media::AudioPipelineInfo& info) override {} private: - WatchTimeReporterTest* parent_; + raw_ptr<WatchTimeReporterTest, ExperimentalRenderer> parent_; }; WatchTimeReporterTest()
diff --git a/third_party/blink/renderer/platform/media/web_content_decryption_module_session_impl.h b/third_party/blink/renderer/platform/media/web_content_decryption_module_session_impl.h index 70d035d..7e89876 100644 --- a/third_party/blink/renderer/platform/media/web_content_decryption_module_session_impl.h +++ b/third_party/blink/renderer/platform/media/web_content_decryption_module_session_impl.h
@@ -12,6 +12,7 @@ #include <vector> #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/threading/thread_checker.h" @@ -73,7 +74,7 @@ const media::CdmSessionType session_type_; // Non-owned pointer. - Client* client_; + raw_ptr<Client, ExperimentalRenderer> client_; // Session ID is the app visible ID for this session generated by the CDM. // This value is not set until the CDM resolves the initializeNewSession()
diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.h b/third_party/blink/renderer/platform/media/web_media_player_impl.h index db5d3ee..a06ea6b 100644 --- a/third_party/blink/renderer/platform/media/web_media_player_impl.h +++ b/third_party/blink/renderer/platform/media/web_media_player_impl.h
@@ -13,6 +13,7 @@ #include "base/cancelable_callback.h" #include "base/compiler_specific.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" @@ -720,7 +721,7 @@ // Notifies the `client_` and the `delegate_` about metadata change. void DidMediaMetadataChange(); - WebLocalFrame* const frame_; + const raw_ptr<WebLocalFrame, ExperimentalRenderer> frame_; WebMediaPlayer::NetworkState network_state_ = WebMediaPlayer::kNetworkStateEmpty; @@ -809,8 +810,9 @@ // Whether the current decoder requires a restart on overlay transitions. bool decoder_requires_restart_for_overlay_ = false; - WebMediaPlayerClient* const client_; - WebMediaPlayerEncryptedMediaClient* const encrypted_client_; + const raw_ptr<WebMediaPlayerClient, ExperimentalRenderer> client_; + const raw_ptr<WebMediaPlayerEncryptedMediaClient, ExperimentalRenderer> + encrypted_client_; // WebMediaPlayer notifies the |delegate_| of playback state changes using // |delegate_id_|; an id provided after registering with the delegate. The @@ -823,7 +825,7 @@ // before the frame is destroyed). RenderFrameImpl owns |delegate_| and is // guaranteed to outlive |this|; thus it is safe to store |delegate_| as a raw // pointer. - WebMediaPlayerDelegate* delegate_; + raw_ptr<WebMediaPlayerDelegate, ExperimentalRenderer> delegate_; int delegate_id_ = 0; // The playback state last reported to |delegate_|, to avoid setting duplicate @@ -848,10 +850,10 @@ // Manages the lifetime of the DataSource, and soon the Demuxer. std::unique_ptr<media::DemuxerManager> demuxer_manager_; - const base::TickClock* tick_clock_ = nullptr; + raw_ptr<const base::TickClock, ExperimentalRenderer> tick_clock_ = nullptr; std::unique_ptr<BufferedDataSourceHostImpl> buffered_data_source_host_; - UrlIndex* const url_index_; + const raw_ptr<UrlIndex, ExperimentalRenderer> url_index_; scoped_refptr<viz::RasterContextProvider> raster_context_provider_; // Video rendering members.
diff --git a/third_party/blink/renderer/platform/media/web_media_source_impl.h b/third_party/blink/renderer/platform/media/web_media_source_impl.h index 9f0e474..0ce5a7a 100644 --- a/third_party/blink/renderer/platform/media/web_media_source_impl.h +++ b/third_party/blink/renderer/platform/media/web_media_source_impl.h
@@ -7,6 +7,7 @@ #include <vector> +#include "base/memory/raw_ptr.h" #include "third_party/blink/public/platform/web_media_source.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -42,7 +43,8 @@ void UnmarkEndOfStream() override; private: - media::ChunkDemuxer* demuxer_; // Owned by WebMediaPlayerImpl. + raw_ptr<media::ChunkDemuxer, ExperimentalRenderer> + demuxer_; // Owned by WebMediaPlayerImpl. }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/media/web_source_buffer_impl.h b/third_party/blink/renderer/platform/media/web_source_buffer_impl.h index 5ecfab63..baa10ac1 100644 --- a/third_party/blink/renderer/platform/media/web_source_buffer_impl.h +++ b/third_party/blink/renderer/platform/media/web_source_buffer_impl.h
@@ -11,6 +11,7 @@ #include <string> #include "base/compiler_specific.h" +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "media/base/stream_parser.h" #include "third_party/blink/public/platform/web_source_buffer.h" @@ -66,9 +67,10 @@ void NotifyParseWarning(const media::SourceBufferParseWarning warning); std::string id_; - media::ChunkDemuxer* demuxer_; // Owned by WebMediaPlayerImpl. + raw_ptr<media::ChunkDemuxer, ExperimentalRenderer> + demuxer_; // Owned by WebMediaPlayerImpl. - WebSourceBufferClient* client_; + raw_ptr<WebSourceBufferClient, ExperimentalRenderer> client_; // Controls the offset applied to timestamps when processing appended media // segments. It is initially 0, which indicates that no offset is being
diff --git a/third_party/blink/renderer/platform/media/webaudiosourceprovider_impl.cc b/third_party/blink/renderer/platform/media/webaudiosourceprovider_impl.cc index 840473e..014536f8c 100644 --- a/third_party/blink/renderer/platform/media/webaudiosourceprovider_impl.cc +++ b/third_party/blink/renderer/platform/media/webaudiosourceprovider_impl.cc
@@ -11,6 +11,7 @@ #include "base/functional/bind.h" #include "base/logging.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/histogram_macros.h" #include "base/notreached.h" #include "base/task/bind_post_task.h" @@ -100,7 +101,8 @@ bool is_tainted() const { return origin_tainted_.IsSet(); } private: - AudioRendererSink::RenderCallback* renderer_ = nullptr; + raw_ptr<AudioRendererSink::RenderCallback, ExperimentalRenderer> renderer_ = + nullptr; int channels_ = 0; int sample_rate_ = 0;
diff --git a/third_party/blink/renderer/platform/mediastream/aec_dump_agent_impl.h b/third_party/blink/renderer/platform/mediastream/aec_dump_agent_impl.h index 5f9d7d8..f266faf3 100644 --- a/third_party/blink/renderer/platform/mediastream/aec_dump_agent_impl.h +++ b/third_party/blink/renderer/platform/mediastream/aec_dump_agent_impl.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_MEDIASTREAM_AEC_DUMP_AGENT_IMPL_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_MEDIASTREAM_AEC_DUMP_AGENT_IMPL_H_ +#include "base/memory/raw_ptr.h" #include "mojo/public/cpp/bindings/receiver.h" #include "third_party/blink/public/mojom/mediastream/aec_dump.mojom-blink.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -37,7 +38,7 @@ Delegate* delegate, mojo::PendingReceiver<mojom::blink::AecDumpAgent> receiver); - Delegate* delegate_; + raw_ptr<Delegate, ExperimentalRenderer> delegate_; mojo::Receiver<mojom::blink::AecDumpAgent> receiver_{this}; };
diff --git a/third_party/blink/renderer/platform/mediastream/audio_service_audio_processor_proxy.h b/third_party/blink/renderer/platform/mediastream/audio_service_audio_processor_proxy.h index bba85c4..59b9a339 100644 --- a/third_party/blink/renderer/platform/mediastream/audio_service_audio_processor_proxy.h +++ b/third_party/blink/renderer/platform/mediastream/audio_service_audio_processor_proxy.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_MEDIASTREAM_AUDIO_SERVICE_AUDIO_PROCESSOR_PROXY_H_ #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/synchronization/lock.h" #include "base/task/single_thread_task_runner.h" @@ -64,8 +65,8 @@ const scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_; - media::AudioProcessorControls* processor_controls_ - GUARDED_BY_CONTEXT(main_thread_checker_) = nullptr; + raw_ptr<media::AudioProcessorControls, ExperimentalRenderer> + processor_controls_ GUARDED_BY_CONTEXT(main_thread_checker_) = nullptr; base::Lock stats_lock_; AudioProcessorStatistics latest_stats_ GUARDED_BY(stats_lock_);
diff --git a/third_party/blink/renderer/platform/mediastream/media_stream_component_impl.h b/third_party/blink/renderer/platform/mediastream/media_stream_component_impl.h index b3eef88..3af05d7 100644 --- a/third_party/blink/renderer/platform/mediastream/media_stream_component_impl.h +++ b/third_party/blink/renderer/platform/mediastream/media_stream_component_impl.h
@@ -34,6 +34,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/synchronization/lock.h" #include "third_party/blink/public/platform/modules/mediastream/web_media_stream_track.h" #include "third_party/blink/public/platform/web_vector.h" @@ -125,7 +126,7 @@ WebMediaStreamTrack::ContentHintType::kNone; std::unique_ptr<MediaStreamTrackPlatform> platform_track_; // Frame where the referenced platform track was created, if applicable. - WebLocalFrame* creation_frame_ = nullptr; + raw_ptr<WebLocalFrame, ExperimentalRenderer> creation_frame_ = nullptr; }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/mediastream/media_stream_source.h b/third_party/blink/renderer/platform/mediastream/media_stream_source.h index 0d0ca5a..d83fdd2 100644 --- a/third_party/blink/renderer/platform/mediastream/media_stream_source.h +++ b/third_party/blink/renderer/platform/mediastream/media_stream_source.h
@@ -35,6 +35,7 @@ #include <memory> #include <utility> +#include "base/memory/raw_ptr.h" #include "base/synchronization/lock.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/public/platform/modules/mediastream/web_media_stream_source.h" @@ -179,7 +180,7 @@ void ConsumeAudio(AudioBus* bus, int number_of_frames); // m_consumer is not owned by this class. - WebAudioDestinationConsumer* consumer_; + raw_ptr<WebAudioDestinationConsumer, ExperimentalRenderer> consumer_; // bus_vector_ must only be used in ConsumeAudio. The only reason it's a // member variable is to not have to reallocate it for each call. Vector<const float*> bus_vector_;
diff --git a/third_party/blink/renderer/platform/mediastream/transferred_media_stream_component.h b/third_party/blink/renderer/platform/mediastream/transferred_media_stream_component.h index 9a648ba..b3aed4ea 100644 --- a/third_party/blink/renderer/platform/mediastream/transferred_media_stream_component.h +++ b/third_party/blink/renderer/platform/mediastream/transferred_media_stream_component.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_MEDIASTREAM_TRANSFERRED_MEDIA_STREAM_COMPONENT_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_MEDIASTREAM_TRANSFERRED_MEDIA_STREAM_COMPONENT_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/public/platform/modules/mediastream/web_media_stream_track.h" #include "third_party/blink/renderer/platform/audio/audio_source_provider.h" #include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h" @@ -74,7 +75,7 @@ private: struct AddSinkArgs { - WebMediaStreamSink* sink; + raw_ptr<WebMediaStreamSink, ExperimentalRenderer> sink; VideoCaptureDeliverFrameCB callback; MediaStreamVideoSink::IsSecure is_secure; MediaStreamVideoSink::UsesAlpha uses_alpha;
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver_set_test.cc b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver_set_test.cc index 99d1dd3..9110efc 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver_set_test.cc +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver_set_test.cc
@@ -6,6 +6,7 @@ #include <utility> +#include "base/memory/raw_ptr.h" #include "base/test/null_task_runner.h" #include "mojo/public/cpp/bindings/associated_receiver.h" #include "mojo/public/cpp/bindings/associated_receiver_set.h" @@ -84,7 +85,8 @@ private: HeapMojoAssociatedReceiverSet<sample::blink::Service, GCOwner, Mode> associated_receiver_set_; - HeapMojoAssociatedReceiverSetGCBaseTest<Mode>* test_; + raw_ptr<HeapMojoAssociatedReceiverSetGCBaseTest<Mode>, ExperimentalRenderer> + test_; }; } // namespace
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver_test.cc b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver_test.cc index 3946bc9a..22128a77 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver_test.cc +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver_test.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver.h" +#include "base/memory/raw_ptr.h" #include "base/test/null_task_runner.h" #include "mojo/public/cpp/bindings/associated_remote.h" #include "mojo/public/interfaces/bindings/tests/sample_service.mojom-blink.h" @@ -65,7 +66,8 @@ AssociatedReceiverOwner, Mode> associated_receiver_; - HeapMojoAssociatedReceiverGCBaseTest<Mode>* test_; + raw_ptr<HeapMojoAssociatedReceiverGCBaseTest<Mode>, ExperimentalRenderer> + test_; }; template <HeapMojoWrapperMode Mode>
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote_set_test.cc b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote_set_test.cc index 61e75d9..1e780b5 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote_set_test.cc +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_associated_remote_set_test.cc
@@ -8,6 +8,7 @@ #include <tuple> #include <utility> +#include "base/memory/raw_ptr.h" #include "base/test/null_task_runner.h" #include "mojo/public/cpp/bindings/pending_associated_remote.h" #include "mojo/public/cpp/bindings/remote_set.h" @@ -46,7 +47,8 @@ private: HeapMojoAssociatedRemoteSet<sample::blink::Service, Mode> remote_set_; - HeapMojoAssociatedRemoteSetGCBaseTest<Mode>* test_; + raw_ptr<HeapMojoAssociatedRemoteSetGCBaseTest<Mode>, ExperimentalRenderer> + test_; }; template <HeapMojoWrapperMode Mode>
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_receiver_set_test.cc b/third_party/blink/renderer/platform/mojo/heap_mojo_receiver_set_test.cc index dbf8241..16c5c18 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_receiver_set_test.cc +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_receiver_set_test.cc
@@ -7,6 +7,7 @@ #include <utility> #include <string> +#include "base/memory/raw_ptr.h" #include "base/test/null_task_runner.h" #include "mojo/public/cpp/bindings/receiver_set.h" #include "mojo/public/cpp/bindings/remote.h" @@ -54,7 +55,9 @@ private: HeapMojoReceiverSet<sample::blink::Service, GCOwner, Mode, ContextType> receiver_set_; - HeapMojoReceiverSetGCBaseTest<Mode, ContextType>* test_; + raw_ptr<HeapMojoReceiverSetGCBaseTest<Mode, ContextType>, + ExperimentalRenderer> + test_; }; template <HeapMojoWrapperMode Mode, typename ContextType>
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_receiver_test.cc b/third_party/blink/renderer/platform/mojo/heap_mojo_receiver_test.cc index fdcf44d0..55e88746 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_receiver_test.cc +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_receiver_test.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "third_party/blink/renderer/platform/mojo/heap_mojo_receiver.h" +#include "base/memory/raw_ptr.h" #include "base/test/null_task_runner.h" #include "base/test/scoped_feature_list.h" #include "mojo/public/cpp/bindings/remote.h" @@ -58,7 +59,7 @@ void GetPort(mojo::PendingReceiver<sample::blink::Port> port) override {} HeapMojoReceiver<sample::blink::Service, ReceiverOwner, Mode> receiver_; - HeapMojoReceiverGCBaseTest<Mode>* test_; + raw_ptr<HeapMojoReceiverGCBaseTest<Mode>, ExperimentalRenderer> test_; }; template <HeapMojoWrapperMode Mode>
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_remote_set_test.cc b/third_party/blink/renderer/platform/mojo/heap_mojo_remote_set_test.cc index 7590a68..fef5878 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_remote_set_test.cc +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_remote_set_test.cc
@@ -7,6 +7,7 @@ #include <utility> #include <string> +#include "base/memory/raw_ptr.h" #include "base/test/null_task_runner.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/remote_set.h" @@ -44,7 +45,7 @@ private: HeapMojoRemoteSet<sample::blink::Service, Mode> remote_set_; - HeapMojoRemoteSetGCBaseTest<Mode>* test_; + raw_ptr<HeapMojoRemoteSetGCBaseTest<Mode>, ExperimentalRenderer> test_; }; template <HeapMojoWrapperMode Mode>
diff --git a/third_party/blink/renderer/platform/mojo/heap_mojo_unique_receiver_set_test.cc b/third_party/blink/renderer/platform/mojo/heap_mojo_unique_receiver_set_test.cc index c0681f1..c2f8dc3 100644 --- a/third_party/blink/renderer/platform/mojo/heap_mojo_unique_receiver_set_test.cc +++ b/third_party/blink/renderer/platform/mojo/heap_mojo_unique_receiver_set_test.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "third_party/blink/renderer/platform/mojo/heap_mojo_unique_receiver_set.h" +#include "base/memory/raw_ptr.h" #include "base/test/null_task_runner.h" #include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/interfaces/bindings/tests/sample_service.mojom-blink.h" @@ -92,7 +93,7 @@ void GetPort(mojo::PendingReceiver<sample::blink::Port> receiver) override {} private: - T* test_; + raw_ptr<T, ExperimentalRenderer> test_; }; } // namespace
diff --git a/third_party/blink/renderer/platform/network/network_state_notifier.h b/third_party/blink/renderer/platform/network/network_state_notifier.h index 4166900..fbdcb8e 100644 --- a/third_party/blink/renderer/platform/network/network_state_notifier.h +++ b/third_party/blink/renderer/platform/network/network_state_notifier.h
@@ -28,6 +28,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "base/rand_util.h" #include "base/synchronization/lock.h" @@ -117,9 +118,9 @@ ~NetworkStateObserverHandle(); private: - NetworkStateNotifier* notifier_; + raw_ptr<NetworkStateNotifier, ExperimentalRenderer> notifier_; ObserverType type_; - NetworkStateObserver* observer_; + raw_ptr<NetworkStateObserver, ExperimentalRenderer> observer_; scoped_refptr<base::SingleThreadTaskRunner> task_runner_; };
diff --git a/third_party/blink/renderer/platform/network/network_state_notifier_test.cc b/third_party/blink/renderer/platform/network/network_state_notifier_test.cc index f295fbbc..424ba7c 100644 --- a/third_party/blink/renderer/platform/network/network_state_notifier_test.cc +++ b/third_party/blink/renderer/platform/network/network_state_notifier_test.cc
@@ -31,6 +31,7 @@ #include "third_party/blink/renderer/platform/network/network_state_notifier.h" #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/test/task_environment.h" #include "base/time/time.h" @@ -1065,7 +1066,7 @@ handle_.reset(); task_runner_->RunUntilIdle(); } - FakeTaskRunner* task_runner_; + raw_ptr<FakeTaskRunner, ExperimentalRenderer> task_runner_; std::unique_ptr<NetworkStateNotifier::NetworkStateObserverHandle> handle_; int count = 0; };
diff --git a/third_party/blink/renderer/platform/p2p/filtering_network_manager.h b/third_party/blink/renderer/platform/p2p/filtering_network_manager.h index 2dbb6fe..fbc6e19d 100644 --- a/third_party/blink/renderer/platform/p2p/filtering_network_manager.h +++ b/third_party/blink/renderer/platform/p2p/filtering_network_manager.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_P2P_FILTERING_NETWORK_MANAGER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_P2P_FILTERING_NETWORK_MANAGER_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/threading/thread_checker.h" #include "base/time/time.h" @@ -97,7 +98,7 @@ // The class is created by the main thread but used by the worker thread. THREAD_CHECKER(thread_checker_); - media::MediaPermission* media_permission_; + raw_ptr<media::MediaPermission, ExperimentalRenderer> media_permission_; int pending_permission_checks_ = 0;
diff --git a/third_party/blink/renderer/platform/p2p/socket_client_impl.h b/third_party/blink/renderer/platform/p2p/socket_client_impl.h index e42e6bb..94e6823d 100644 --- a/third_party/blink/renderer/platform/p2p/socket_client_impl.h +++ b/third_party/blink/renderer/platform/p2p/socket_client_impl.h
@@ -7,6 +7,7 @@ #include <stdint.h> +#include "base/memory/raw_ptr.h" #include "base/threading/thread_checker.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_remote.h" @@ -103,7 +104,7 @@ THREAD_CHECKER(thread_checker_); const bool batch_packets_; int socket_id_; - blink::P2PSocketClientDelegate* delegate_; + raw_ptr<blink::P2PSocketClientDelegate, ExperimentalRenderer> delegate_; State state_; // Packets sent with rtc::PacketOptions::batchable being true are collected
diff --git a/third_party/blink/renderer/platform/peerconnection/bridge_ice_controller_test.cc b/third_party/blink/renderer/platform/peerconnection/bridge_ice_controller_test.cc index 15f04489..2d943a7 100644 --- a/third_party/blink/renderer/platform/peerconnection/bridge_ice_controller_test.cc +++ b/third_party/blink/renderer/platform/peerconnection/bridge_ice_controller_test.cc
@@ -7,6 +7,7 @@ #include <memory> #include <tuple> +#include "base/memory/raw_ptr.h" #include "base/memory/raw_ptr_exclusion.h" #include "base/memory/scoped_refptr.h" #include "base/strings/strcat.h" @@ -700,8 +701,8 @@ void Recheck() { env.FastForwardBy(base::Milliseconds(recheck_delay_ms)); } const int recheck_delay_ms = 10; - const Connection* conn = nullptr; - const Connection* conn_two = nullptr; + raw_ptr<const Connection, ExperimentalRenderer> conn = nullptr; + raw_ptr<const Connection, ExperimentalRenderer> conn_two = nullptr; // This field is not vector<raw_ptr<...>> due to interaction with third_party // api. RAW_PTR_EXCLUSION const std::vector<const Connection*> @@ -712,7 +713,8 @@ scoped_refptr<IceInteractionInterface> interaction_agent; StrictMock<MockIceAgent> agent; StrictMock<MockIceControllerObserver> observer; - StrictMock<MockIceController>* wrapped_controller; + raw_ptr<StrictMock<MockIceController>, ExperimentalRenderer> + wrapped_controller; std::unique_ptr<BridgeIceController> controller; }; @@ -753,7 +755,7 @@ TEST_F(BridgeIceControllerDeathTest, AcceptUnsolicitedSwitchProposal) { const IceControllerInterface::SwitchResult switch_result{ - conn, recheck_event, empty_conns_to_forget}; + conn.get(), recheck_event, empty_conns_to_forget}; const IceSwitchProposal proposal(reason, switch_result, /*reply_expected=*/false); EXPECT_DCHECK_DEATH_WITH(interaction_agent->AcceptSwitchProposal(proposal), @@ -762,7 +764,7 @@ TEST_F(BridgeIceControllerDeathTest, RejectUnsolicitedSwitchProposal) { const IceControllerInterface::SwitchResult switch_result{ - conn, recheck_event, empty_conns_to_forget}; + conn.get(), recheck_event, empty_conns_to_forget}; const IceSwitchProposal proposal(reason, switch_result, /*reply_expected=*/false); EXPECT_DCHECK_DEATH_WITH(interaction_agent->RejectSwitchProposal(proposal), @@ -790,7 +792,7 @@ TEST_F(BridgeIceControllerNoopTest, AcceptUnknownSwitchProposal) { const IceControllerInterface::SwitchResult switch_result{ - conn_two, recheck_event, empty_conns_to_forget}; + conn_two.get(), recheck_event, empty_conns_to_forget}; const IceSwitchProposal proposal(reason, switch_result, /*reply_expected=*/true); interaction_agent->AcceptSwitchProposal(proposal);
diff --git a/third_party/blink/renderer/platform/peerconnection/gpu_codec_support_waiter.h b/third_party/blink/renderer/platform/peerconnection/gpu_codec_support_waiter.h index ece770be3..d18ae83 100644 --- a/third_party/blink/renderer/platform/peerconnection/gpu_codec_support_waiter.h +++ b/third_party/blink/renderer/platform/peerconnection/gpu_codec_support_waiter.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_PEERCONNECTION_GPU_CODEC_SUPPORT_WAITER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_PEERCONNECTION_GPU_CODEC_SUPPORT_WAITER_H_ +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "media/video/gpu_video_accelerator_factories.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -26,7 +27,8 @@ private: bool IsCodecSupportKnown(bool is_encoder) const; - media::GpuVideoAcceleratorFactories* gpu_factories_; + raw_ptr<media::GpuVideoAcceleratorFactories, ExperimentalRenderer> + gpu_factories_; const absl::optional<base::TimeDelta> wait_timeout_ms_; };
diff --git a/third_party/blink/renderer/platform/peerconnection/metronome_source_test.cc b/third_party/blink/renderer/platform/peerconnection/metronome_source_test.cc index 5ad9971..50e3e51 100644 --- a/third_party/blink/renderer/platform/peerconnection/metronome_source_test.cc +++ b/third_party/blink/renderer/platform/peerconnection/metronome_source_test.cc
@@ -7,6 +7,7 @@ #include "base/functional/bind.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/notreached.h" #include "base/synchronization/waitable_event.h" @@ -40,7 +41,8 @@ public: std::unique_ptr<MockTickProvider> tick_provider_{ std::make_unique<MockTickProvider>()}; - MockTickProvider* tick_provider_ptr_ = tick_provider_.get(); + raw_ptr<MockTickProvider, ExperimentalRenderer> tick_provider_ptr_ = + tick_provider_.get(); std::unique_ptr<MetronomeSource> source_{ std::make_unique<MetronomeSource>(std::move(tick_provider_))}; };
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_encoded_audio_stream_transformer.h b/third_party/blink/renderer/platform/peerconnection/rtc_encoded_audio_stream_transformer.h index 7fb3db4..648f39d2 100644 --- a/third_party/blink/renderer/platform/peerconnection/rtc_encoded_audio_stream_transformer.h +++ b/third_party/blink/renderer/platform/peerconnection/rtc_encoded_audio_stream_transformer.h
@@ -11,6 +11,7 @@ #include <vector> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/synchronization/lock.h" #include "base/threading/thread_checker.h" @@ -67,7 +68,7 @@ friend class RTCEncodedAudioStreamTransformer; base::Lock transformer_lock_; - RTCEncodedAudioStreamTransformer* transformer_ + raw_ptr<RTCEncodedAudioStreamTransformer, ExperimentalRenderer> transformer_ GUARDED_BY(transformer_lock_); };
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_encoded_video_stream_transformer.h b/third_party/blink/renderer/platform/peerconnection/rtc_encoded_video_stream_transformer.h index dbe1783..4b66b49a 100644 --- a/third_party/blink/renderer/platform/peerconnection/rtc_encoded_video_stream_transformer.h +++ b/third_party/blink/renderer/platform/peerconnection/rtc_encoded_video_stream_transformer.h
@@ -11,6 +11,7 @@ #include <utility> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/synchronization/lock.h" #include "base/threading/thread_checker.h" @@ -74,7 +75,7 @@ friend class RTCEncodedVideoStreamTransformer; base::Lock transformer_lock_; - RTCEncodedVideoStreamTransformer* transformer_ + raw_ptr<RTCEncodedVideoStreamTransformer, ExperimentalRenderer> transformer_ GUARDED_BY(transformer_lock_); };
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_adapter.cc b/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_adapter.cc index fdc36a47..de3f8c4 100644 --- a/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_adapter.cc +++ b/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_adapter.cc
@@ -15,6 +15,7 @@ #include "base/location.h" #include "base/logging.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" #include "base/synchronization/waitable_event.h" @@ -233,7 +234,8 @@ void OnDecodeDone(media::DecoderStatus status); void OnOutput(scoped_refptr<media::VideoFrame> frame); - media::GpuVideoAcceleratorFactories* const gpu_factories_; + const raw_ptr<media::GpuVideoAcceleratorFactories, ExperimentalRenderer> + gpu_factories_; // Set on Initialize(). std::unique_ptr<media::MediaLog> media_log_; @@ -242,7 +244,8 @@ int32_t outstanding_decode_requests_ = 0; absl::optional<base::TimeTicks> start_time_; - webrtc::DecodedImageCallback* decode_complete_callback_ = nullptr; + raw_ptr<webrtc::DecodedImageCallback, ExperimentalRenderer> + decode_complete_callback_ = nullptr; int32_t consecutive_error_count_ = 0; // Requests that have not been submitted to the decoder yet. WTF::Deque<scoped_refptr<media::DecoderBuffer>> pending_buffers_;
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_adapter_test.cc b/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_adapter_test.cc index 60ba93d6..716da2b 100644 --- a/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_adapter_test.cc +++ b/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_adapter_test.cc
@@ -11,6 +11,7 @@ #include "base/check.h" #include "base/functional/bind.h" #include "base/memory/ptr_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/task/sequenced_task_runner.h" #include "base/test/gmock_callback_support.h" @@ -450,7 +451,8 @@ base::Thread media_thread_; // Owned by |rtc_video_decoder_adapter_|. - StrictMock<MockVideoDecoder>* video_decoder_ = nullptr; + raw_ptr<StrictMock<MockVideoDecoder>, ExperimentalRenderer> video_decoder_ = + nullptr; StrictMock<base::MockCallback< base::RepeatingCallback<void(const webrtc::VideoFrame&)>>>
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_factory.h b/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_factory.h index f5d27ee..139a591 100644 --- a/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_factory.h +++ b/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_factory.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_PEERCONNECTION_RTC_VIDEO_DECODER_FACTORY_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_PEERCONNECTION_RTC_VIDEO_DECODER_FACTORY_H_ +#include "base/memory/raw_ptr.h" #include "base/task/sequenced_task_runner.h" #include "third_party/blink/renderer/platform/peerconnection/gpu_codec_support_waiter.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -56,7 +57,8 @@ private: void CheckAndWaitDecoderSupportStatusIfNeeded() const; - media::GpuVideoAcceleratorFactories* gpu_factories_; + raw_ptr<media::GpuVideoAcceleratorFactories, ExperimentalRenderer> + gpu_factories_; base::WeakPtr<media::DecoderFactory> decoder_factory_; scoped_refptr<base::SequencedTaskRunner> media_task_runner_;
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_stream_adapter.h b/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_stream_adapter.h index 65a9ae7..e5c5f6a 100644 --- a/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_stream_adapter.h +++ b/third_party/blink/renderer/platform/peerconnection/rtc_video_decoder_stream_adapter.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/functional/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/metrics/single_sample_metrics.h" @@ -193,7 +194,8 @@ // Construction parameters. const scoped_refptr<base::SequencedTaskRunner> media_task_runner_; - media::GpuVideoAcceleratorFactories* const gpu_factories_; + const raw_ptr<media::GpuVideoAcceleratorFactories, ExperimentalRenderer> + gpu_factories_; base::WeakPtr<media::DecoderFactory> const decoder_factory_; gfx::ColorSpace render_color_space_; const webrtc::SdpVideoFormat format_; @@ -236,8 +238,8 @@ // If it's true, it indicates the decoder has been initialized successfully. bool decoder_configured_ GUARDED_BY(lock_) = false; // Current decode callback, if any. - webrtc::DecodedImageCallback* decode_complete_callback_ GUARDED_BY(lock_) = - nullptr; + raw_ptr<webrtc::DecodedImageCallback, ExperimentalRenderer> + decode_complete_callback_ GUARDED_BY(lock_) = nullptr; // Time since construction. Cleared when we record that a frame has been // successfully decoded. absl::optional<base::TimeTicks> start_time_ GUARDED_BY(lock_);
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder.cc b/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder.cc index 2203dc3..3be2ef3 100644 --- a/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder.cc +++ b/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder.cc
@@ -14,6 +14,7 @@ #include "base/functional/callback_helpers.h" #include "base/location.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/unsafe_shared_memory_region.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" @@ -135,8 +136,8 @@ bool IsValid() { return event; } private: - base::WaitableEvent* event; - int32_t* val; + raw_ptr<base::WaitableEvent, ExperimentalRenderer> event; + raw_ptr<int32_t, ExperimentalRenderer> val; }; class ScopedSignaledValue { @@ -681,7 +682,8 @@ SEQUENCE_CHECKER(sequence_checker_); // Factory for creating VEAs, shared memory buffers, etc. - media::GpuVideoAcceleratorFactories* const gpu_factories_; + const raw_ptr<media::GpuVideoAcceleratorFactories, ExperimentalRenderer> + gpu_factories_; scoped_refptr<media::MojoVideoEncoderMetricsProviderFactory> encoder_metrics_provider_factory_; @@ -779,8 +781,8 @@ // webrtc::VideoEncoder encode complete callback. // TODO(b/257021675): Don't guard this by |lock_| - webrtc::EncodedImageCallback* encoded_image_callback_ GUARDED_BY(lock_){ - nullptr}; + raw_ptr<webrtc::EncodedImageCallback, ExperimentalRenderer> + encoded_image_callback_ GUARDED_BY(lock_){nullptr}; // They are bound to |gpu_task_runner_|, which is sequence checked by // |sequence_checker|.
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder.h b/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder.h index fd1b1ec..378829e 100644 --- a/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder.h +++ b/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder.h
@@ -12,6 +12,7 @@ #include <vector> #include "base/feature_list.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/synchronization/lock.h" @@ -101,7 +102,8 @@ const bool is_constrained_h264_; // Factory for creating VEAs, shared memory buffers, etc. - media::GpuVideoAcceleratorFactories* const gpu_factories_; + const raw_ptr<media::GpuVideoAcceleratorFactories, ExperimentalRenderer> + gpu_factories_; scoped_refptr<media::MojoVideoEncoderMetricsProviderFactory> encoder_metrics_provider_factory_;
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder_factory.h b/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder_factory.h index fb4a712..1b8820f 100644 --- a/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder_factory.h +++ b/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder_factory.h
@@ -7,6 +7,7 @@ #include <vector> +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/allow_discouraged_type.h" #include "third_party/blink/renderer/platform/peerconnection/gpu_codec_support_waiter.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -48,7 +49,8 @@ private: void CheckAndWaitEncoderSupportStatusIfNeeded() const; - media::GpuVideoAcceleratorFactories* gpu_factories_; + raw_ptr<media::GpuVideoAcceleratorFactories, ExperimentalRenderer> + gpu_factories_; scoped_refptr<media::MojoVideoEncoderMetricsProviderFactory> encoder_metrics_provider_factory_;
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder_test.cc b/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder_test.cc index d5f9227..411f5c0 100644 --- a/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder_test.cc +++ b/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder_test.cc
@@ -6,6 +6,7 @@ #include "base/functional/bind.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "base/synchronization/waitable_event.h" #include "base/task/sequenced_task_runner.h" @@ -311,7 +312,7 @@ mock_vea_ = new media::MockVideoEncodeAccelerator(); EXPECT_CALL(*mock_gpu_factories_.get(), DoCreateVideoEncodeAccelerator()) - .WillRepeatedly(Return(mock_vea_)); + .WillRepeatedly(Return(mock_vea_.get())); EXPECT_CALL(*mock_vea_, Initialize(CheckConfig(pixel_format, storage_type), _, _)) .WillOnce(Invoke(this, &RTCVideoEncoderTest::Initialize)); @@ -577,10 +578,10 @@ features::kWebRtcInitializeEncoderOnFirstFrame); } - media::MockVideoEncodeAccelerator* mock_vea_; + raw_ptr<media::MockVideoEncodeAccelerator, ExperimentalRenderer> mock_vea_; std::unique_ptr<RTCVideoEncoderWrapper> rtc_encoder_; absl::optional<media::VideoEncodeAccelerator::Config> config_; - media::VideoEncodeAccelerator::Client* client_; + raw_ptr<media::VideoEncodeAccelerator::Client, ExperimentalRenderer> client_; base::Thread encoder_thread_; std::unique_ptr<media::MockGpuVideoAcceleratorFactories> mock_gpu_factories_; @@ -1811,7 +1812,7 @@ // factory.CreateVideoEncodeAccelerator() is called. mock_vea_ = new media::MockVideoEncodeAccelerator(); EXPECT_CALL(*mock_gpu_factories_.get(), DoCreateVideoEncodeAccelerator()) - .WillRepeatedly(Return(mock_vea_)); + .WillRepeatedly(Return(mock_vea_.get())); EXPECT_CALL(*mock_encoder_metrics_provider_factory_, CreateVideoEncoderMetricsProvider()) .WillOnce(Return(::testing::ByMove(std::move(encoder_metrics_provider)))); @@ -1882,7 +1883,7 @@ // factory.CreateVideoEncodeAccelerator() is called. mock_vea_ = new media::MockVideoEncodeAccelerator(); EXPECT_CALL(*mock_gpu_factories_.get(), DoCreateVideoEncodeAccelerator()) - .WillRepeatedly(Return(mock_vea_)); + .WillRepeatedly(Return(mock_vea_.get())); EXPECT_CALL(*mock_encoder_metrics_provider_factory_, CreateVideoEncoderMetricsProvider()) .WillOnce(Return(::testing::ByMove(std::move(encoder_metrics_provider))));
diff --git a/third_party/blink/renderer/platform/peerconnection/stats_collecting_decoder.h b/third_party/blink/renderer/platform/peerconnection/stats_collecting_decoder.h index 92110e8f..e9548ae 100644 --- a/third_party/blink/renderer/platform/peerconnection/stats_collecting_decoder.h +++ b/third_party/blink/renderer/platform/peerconnection/stats_collecting_decoder.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_PEERCONNECTION_STATS_COLLECTING_DECODER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_PEERCONNECTION_STATS_COLLECTING_DECODER_H_ +#include "base/memory/raw_ptr.h" #include "base/thread_annotations.h" #include "base/time/time.h" #include "third_party/blink/renderer/platform/peerconnection/stats_collector.h" @@ -66,7 +67,8 @@ absl::optional<uint8_t> qp) override; const std::unique_ptr<webrtc::VideoDecoder> decoder_; - webrtc::DecodedImageCallback* decoded_callback_{nullptr}; + raw_ptr<webrtc::DecodedImageCallback, ExperimentalRenderer> decoded_callback_{ + nullptr}; // Lock for variables that are accessed in both Decode() and Decoded(). This // is needed because Decode() and Decoded() may be called simultaneously on
diff --git a/third_party/blink/renderer/platform/peerconnection/stats_collecting_decoder_test.cc b/third_party/blink/renderer/platform/peerconnection/stats_collecting_decoder_test.cc index ef195aa2..cdac3ff 100644 --- a/third_party/blink/renderer/platform/peerconnection/stats_collecting_decoder_test.cc +++ b/third_party/blink/renderer/platform/peerconnection/stats_collecting_decoder_test.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include <vector> +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "base/test/task_environment.h" #include "testing/gtest/include/gtest/gtest.h" @@ -92,8 +93,8 @@ } private: - bool* const is_hw_accelerated_; - webrtc::DecodedImageCallback* callback_; + const raw_ptr<bool, ExperimentalRenderer> is_hw_accelerated_; + raw_ptr<webrtc::DecodedImageCallback, ExperimentalRenderer> callback_; }; class MockDecodedImageCallback : public webrtc::DecodedImageCallback {
diff --git a/third_party/blink/renderer/platform/peerconnection/stats_collecting_encoder.h b/third_party/blink/renderer/platform/peerconnection/stats_collecting_encoder.h index f39325c9..b54c8cb 100644 --- a/third_party/blink/renderer/platform/peerconnection/stats_collecting_encoder.h +++ b/third_party/blink/renderer/platform/peerconnection/stats_collecting_encoder.h
@@ -9,6 +9,7 @@ #include <vector> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/thread_annotations.h" #include "base/time/time.h" #include "media/base/video_codecs.h" @@ -89,7 +90,8 @@ base::Lock lock_; const std::unique_ptr<webrtc::VideoEncoder> encoder_; - webrtc::EncodedImageCallback* encoded_callback_{nullptr}; + raw_ptr<webrtc::EncodedImageCallback, ExperimentalRenderer> encoded_callback_{ + nullptr}; // We only care about the highest layer... // - In simulcast, the stream index refers to the simulcast index. // - In SVC, the stream index refers to the spatial index.
diff --git a/third_party/blink/renderer/platform/peerconnection/stats_collecting_encoder_test.cc b/third_party/blink/renderer/platform/peerconnection/stats_collecting_encoder_test.cc index 03729b3a..540cd6c4 100644 --- a/third_party/blink/renderer/platform/peerconnection/stats_collecting_encoder_test.cc +++ b/third_party/blink/renderer/platform/peerconnection/stats_collecting_encoder_test.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include <vector> +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "base/test/task_environment.h" #include "testing/gmock/include/gmock/gmock.h" @@ -121,10 +122,10 @@ private: int frame_counter_ = 0; - base::test::TaskEnvironment* task_environment_; - int* spatial_layers_; - bool* const is_hw_accelerated_; - webrtc::EncodedImageCallback* callback_; + raw_ptr<base::test::TaskEnvironment, ExperimentalRenderer> task_environment_; + raw_ptr<int, ExperimentalRenderer> spatial_layers_; + const raw_ptr<bool, ExperimentalRenderer> is_hw_accelerated_; + raw_ptr<webrtc::EncodedImageCallback, ExperimentalRenderer> callback_; }; class FakeEncodedImageCallback : public webrtc::EncodedImageCallback { @@ -215,7 +216,7 @@ int spatial_layers_{1}; bool is_hw_accelerated_{false}; FakeEncodedImageCallback encoded_image_callback_; - MockEncoder* internal_encoder_; + raw_ptr<MockEncoder, ExperimentalRenderer> internal_encoder_; StatsCollectingEncoder stats_encoder_; uint32_t frame_counter_{0};
diff --git a/third_party/blink/renderer/platform/peerconnection/vsync_tick_provider.cc b/third_party/blink/renderer/platform/peerconnection/vsync_tick_provider.cc index 0d4e31e..1f535433 100644 --- a/third_party/blink/renderer/platform/peerconnection/vsync_tick_provider.cc +++ b/third_party/blink/renderer/platform/peerconnection/vsync_tick_provider.cc
@@ -43,7 +43,7 @@ void VSyncTickProvider::Initialize() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - vsync_provider_.Initialize(base::BindPostTask( + vsync_provider_->Initialize(base::BindPostTask( sequence_, base::BindRepeating(&VSyncTickProvider::OnTabVisibilityChange, weak_factory_.GetWeakPtr()), @@ -72,7 +72,7 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); TRACE_EVENT0("webrtc", "ScheduleVSync"); DCHECK_NE(state_, State::kDrivenByDefault); - vsync_provider_.SetVSyncCallback( + vsync_provider_->SetVSyncCallback( base::BindPostTask(sequence_, base::BindOnce(&VSyncTickProvider::OnVSync, weak_tick_factory_.GetWeakPtr()),
diff --git a/third_party/blink/renderer/platform/peerconnection/vsync_tick_provider.h b/third_party/blink/renderer/platform/peerconnection/vsync_tick_provider.h index 55944d1..0ae2a04c 100644 --- a/third_party/blink/renderer/platform/peerconnection/vsync_tick_provider.h +++ b/third_party/blink/renderer/platform/peerconnection/vsync_tick_provider.h
@@ -9,6 +9,7 @@ #include "base/functional/bind.h" #include "base/functional/callback.h" #include "base/functional/callback_forward.h" +#include "base/memory/raw_ref.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/task/sequenced_task_runner.h" @@ -81,7 +82,7 @@ kDrivenByVSync }; - VSyncProvider& vsync_provider_; + const raw_ref<VSyncProvider, ExperimentalRenderer> vsync_provider_; const scoped_refptr<base::SequencedTaskRunner> sequence_; SEQUENCE_CHECKER(sequence_checker_);
diff --git a/third_party/blink/renderer/platform/peerconnection/vsync_tick_provider_test.cc b/third_party/blink/renderer/platform/peerconnection/vsync_tick_provider_test.cc index c957aa7..335c697 100644 --- a/third_party/blink/renderer/platform/peerconnection/vsync_tick_provider_test.cc +++ b/third_party/blink/renderer/platform/peerconnection/vsync_tick_provider_test.cc
@@ -6,6 +6,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/task/sequenced_task_runner.h" #include "base/test/mock_callback.h" #include "base/test/task_environment.h" @@ -92,8 +93,8 @@ base::test::TaskEnvironment::TimeSource::MOCK_TIME}; std::unique_ptr<FakeDefaultTickProvider> fake_default_tick_provider_holder_ = std::make_unique<FakeDefaultTickProvider>(); - FakeDefaultTickProvider* fake_default_tick_provider_ = - fake_default_tick_provider_holder_.get(); + raw_ptr<FakeDefaultTickProvider, ExperimentalRenderer> + fake_default_tick_provider_ = fake_default_tick_provider_holder_.get(); FakeVSyncProvider fake_begin_frame_provider_; std::unique_ptr<VSyncTickProvider> begin_frame_tick_provider_ = VSyncTickProvider::Create(fake_begin_frame_provider_,
diff --git a/third_party/blink/renderer/platform/peerconnection/webrtc_audio_sink_test.cc b/third_party/blink/renderer/platform/peerconnection/webrtc_audio_sink_test.cc index 5fba995..5132aab 100644 --- a/third_party/blink/renderer/platform/peerconnection/webrtc_audio_sink_test.cc +++ b/third_party/blink/renderer/platform/peerconnection/webrtc_audio_sink_test.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/platform/peerconnection/webrtc_audio_sink.h" +#include "base/memory/raw_ptr.h" #include "media/base/fake_single_thread_task_runner.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -42,7 +43,7 @@ } private: - ClockInterface* const prev_clock_; + const raw_ptr<ClockInterface, ExperimentalRenderer> prev_clock_; int64_t time_ns_; };
diff --git a/third_party/blink/renderer/platform/peerconnection/webrtc_decoding_info_handler_test.cc b/third_party/blink/renderer/platform/peerconnection/webrtc_decoding_info_handler_test.cc index 95db2cc..bc804f9 100644 --- a/third_party/blink/renderer/platform/peerconnection/webrtc_decoding_info_handler_test.cc +++ b/third_party/blink/renderer/platform/peerconnection/webrtc_decoding_info_handler_test.cc
@@ -10,6 +10,7 @@ #include "base/functional/bind.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/platform/web_string.h" @@ -122,7 +123,8 @@ protected: std::vector<webrtc::AudioCodecSpec> kSupportedAudioCodecs; - MockVideoDecoderFactory* mock_video_decoder_factory_; + raw_ptr<MockVideoDecoderFactory, ExperimentalRenderer> + mock_video_decoder_factory_; std::unique_ptr<webrtc::VideoDecoderFactory> video_decoder_factory_; rtc::scoped_refptr<webrtc::AudioDecoderFactory> audio_decoder_factory_; };
diff --git a/third_party/blink/renderer/platform/peerconnection/webrtc_encoding_info_handler_test.cc b/third_party/blink/renderer/platform/peerconnection/webrtc_encoding_info_handler_test.cc index a5d6f62..7b617668 100644 --- a/third_party/blink/renderer/platform/peerconnection/webrtc_encoding_info_handler_test.cc +++ b/third_party/blink/renderer/platform/peerconnection/webrtc_encoding_info_handler_test.cc
@@ -10,6 +10,7 @@ #include "base/functional/bind.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/platform/web_string.h" @@ -128,7 +129,8 @@ protected: std::vector<webrtc::AudioCodecSpec> kSupportedAudioCodecs; - MockVideoEncoderFactory* mock_video_encoder_factory_; + raw_ptr<MockVideoEncoderFactory, ExperimentalRenderer> + mock_video_encoder_factory_; std::unique_ptr<webrtc::VideoEncoderFactory> video_encoder_factory_; rtc::scoped_refptr<webrtc::AudioEncoderFactory> audio_encoder_factory_; };
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index 8d2642f3..5395ad0 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -1829,6 +1829,7 @@ }, { name: "FontPaletteAnimation", + status: "experimental", }, { name: "FontSrcLocalMatching", @@ -1981,6 +1982,15 @@ base_feature: "none", }, { + // Updates the hanging behavior of preserved whitespace at the end of a + // line to not depend on text-align. This flag is to be used as a + // killswitch in case of any issues. + // https://github.com/w3c/csswg-drafts/issues/3440 + // crbug.com/1363901 + name: "HangingWhitespaceDoesNotDependOnAlignment", + status: "stable", + }, + { name: "HasUAVisualTransition", status: "stable", base_feature: "none",
diff --git a/third_party/blink/renderer/platform/scheduler/common/auto_advancing_virtual_time_domain.h b/third_party/blink/renderer/platform/scheduler/common/auto_advancing_virtual_time_domain.h index 457d78bc..82ade5c 100644 --- a/third_party/blink/renderer/platform/scheduler/common/auto_advancing_virtual_time_domain.h +++ b/third_party/blink/renderer/platform/scheduler/common/auto_advancing_virtual_time_domain.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_COMMON_AUTO_ADVANCING_VIRTUAL_TIME_DOMAIN_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_COMMON_AUTO_ADVANCING_VIRTUAL_TIME_DOMAIN_H_ +#include "base/memory/raw_ptr.h" #include "base/task/sequence_manager/time_domain.h" #include "base/task/task_observer.h" #include "base/time/tick_clock.h" @@ -89,7 +90,7 @@ int max_task_starvation_count_; bool can_advance_virtual_time_; - SchedulerHelper* helper_; // NOT OWNED + raw_ptr<SchedulerHelper, ExperimentalRenderer> helper_; // NOT OWNED // VirtualTime is usually doled out in 100ms intervals using fences and this // variable let us honor a request to MaybeAdvanceVirtualTime that straddles
diff --git a/third_party/blink/renderer/platform/scheduler/common/back_forward_cache_disabling_feature_tracker.h b/third_party/blink/renderer/platform/scheduler/common/back_forward_cache_disabling_feature_tracker.h index ec1c6ad9..761f717 100644 --- a/third_party/blink/renderer/platform/scheduler/common/back_forward_cache_disabling_feature_tracker.h +++ b/third_party/blink/renderer/platform/scheduler/common/back_forward_cache_disabling_feature_tracker.h
@@ -9,6 +9,7 @@ #include <utility> #include "base/containers/flat_map.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "third_party/blink/renderer/platform/scheduler/common/tracing_helper.h" #include "third_party/blink/renderer/platform/scheduler/public/frame_or_worker_scheduler.h" @@ -118,8 +119,9 @@ BFCacheBlockingFeatureAndLocations non_sticky_features_and_js_locations_; BFCacheBlockingFeatureAndLocations sticky_features_and_js_locations_; - FrameOrWorkerScheduler::Delegate* delegate_ = nullptr; - ThreadSchedulerBase* scheduler_; + raw_ptr<FrameOrWorkerScheduler::Delegate, ExperimentalRenderer> delegate_ = + nullptr; + raw_ptr<ThreadSchedulerBase, ExperimentalRenderer> scheduler_; base::WeakPtrFactory<BackForwardCacheDisablingFeatureTracker> weak_factory_{ this};
diff --git a/third_party/blink/renderer/platform/scheduler/common/blink_scheduler_single_thread_task_runner.cc b/third_party/blink/renderer/platform/scheduler/common/blink_scheduler_single_thread_task_runner.cc index f0cf97e..7127287 100644 --- a/third_party/blink/renderer/platform/scheduler/common/blink_scheduler_single_thread_task_runner.cc +++ b/third_party/blink/renderer/platform/scheduler/common/blink_scheduler_single_thread_task_runner.cc
@@ -8,6 +8,7 @@ #include <utility> #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/task/single_thread_task_runner.h" @@ -73,7 +74,7 @@ private: base::Location from_here_; void (*deleter_)(const void*) = nullptr; - const void* object_ = nullptr; + raw_ptr<const void, ExperimentalRenderer> object_ = nullptr; scoped_refptr<base::SingleThreadTaskRunner> preferred_task_runner_; scoped_refptr<base::SingleThreadTaskRunner> fallback_task_runner_; };
diff --git a/third_party/blink/renderer/platform/scheduler/common/blink_scheduler_single_thread_task_runner_unittest.cc b/third_party/blink/renderer/platform/scheduler/common/blink_scheduler_single_thread_task_runner_unittest.cc index 0583d3bf..9acf15c 100644 --- a/third_party/blink/renderer/platform/scheduler/common/blink_scheduler_single_thread_task_runner_unittest.cc +++ b/third_party/blink/renderer/platform/scheduler/common/blink_scheduler_single_thread_task_runner_unittest.cc
@@ -8,6 +8,7 @@ #include <utility> #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/run_loop.h" #include "base/task/sequence_manager/sequence_manager.h" @@ -33,7 +34,7 @@ ~TestObject() { ++(*counter_); } private: - int* counter_; + raw_ptr<int, ExperimentalRenderer> counter_; }; } // namespace
diff --git a/third_party/blink/renderer/platform/scheduler/common/dummy_schedulers.cc b/third_party/blink/renderer/platform/scheduler/common/dummy_schedulers.cc index 9b06b55..254298c 100644 --- a/third_party/blink/renderer/platform/scheduler/common/dummy_schedulers.cc +++ b/third_party/blink/renderer/platform/scheduler/common/dummy_schedulers.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/platform/scheduler/public/dummy_schedulers.h" +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "third_party/blink/public/common/browser_interface_broker_proxy.h" #include "third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h" @@ -213,7 +214,7 @@ bool IsCurrentThread() const { return WTF::IsMainThread(); } private: - ThreadScheduler* scheduler_; + raw_ptr<ThreadScheduler, ExperimentalRenderer> scheduler_; }; class DummyWebMainThreadScheduler : public WebThreadScheduler,
diff --git a/third_party/blink/renderer/platform/scheduler/common/idle_helper.h b/third_party/blink/renderer/platform/scheduler/common/idle_helper.h index 3893f68..e3a7e64 100644 --- a/third_party/blink/renderer/platform/scheduler/common/idle_helper.h +++ b/third_party/blink/renderer/platform/scheduler/common/idle_helper.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_COMMON_IDLE_HELPER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_COMMON_IDLE_HELPER_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/task_observer.h" #include "base/time/time.h" @@ -184,8 +185,8 @@ base::TimeTicks new_deadline, base::TimeTicks optional_now); - SchedulerHelper* helper_; // NOT OWNED - Delegate* delegate_; // NOT OWNED + raw_ptr<SchedulerHelper, ExperimentalRenderer> helper_; // NOT OWNED + raw_ptr<Delegate, ExperimentalRenderer> delegate_; // NOT OWNED IdlePeriodState idle_period_state_; base::TimeTicks idle_period_deadline_; @@ -223,9 +224,10 @@ // Returns true if |state| represents being within a long idle period state. static bool IsInLongIdlePeriod(IdlePeriodState state); - SchedulerHelper* helper_; // NOT OWNED - Delegate* delegate_; // NOT OWNED - base::sequence_manager::TaskQueue* idle_queue_; // NOT OWNED + raw_ptr<SchedulerHelper, ExperimentalRenderer> helper_; // NOT OWNED + raw_ptr<Delegate, ExperimentalRenderer> delegate_; // NOT OWNED + raw_ptr<base::sequence_manager::TaskQueue, ExperimentalRenderer> + idle_queue_; // NOT OWNED scoped_refptr<SingleThreadIdleTaskRunner> idle_task_runner_; CancelableClosureHolder enable_next_long_idle_period_closure_;
diff --git a/third_party/blink/renderer/platform/scheduler/common/pollable_thread_safe_flag.h b/third_party/blink/renderer/platform/scheduler/common/pollable_thread_safe_flag.h index 4b8fe269..485d700 100644 --- a/third_party/blink/renderer/platform/scheduler/common/pollable_thread_safe_flag.h +++ b/third_party/blink/renderer/platform/scheduler/common/pollable_thread_safe_flag.h
@@ -7,6 +7,7 @@ #include <atomic> +#include "base/memory/raw_ptr.h" #include "base/synchronization/lock.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" @@ -32,7 +33,7 @@ private: std::atomic<bool> flag_; - base::Lock* write_lock_; // Not owned. + raw_ptr<base::Lock, ExperimentalRenderer> write_lock_; // Not owned. }; #endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_COMMON_POLLABLE_THREAD_SAFE_FLAG_H_
diff --git a/third_party/blink/renderer/platform/scheduler/common/scheduler_helper.h b/third_party/blink/renderer/platform/scheduler/common/scheduler_helper.h index 4673a54..549b67c 100644 --- a/third_party/blink/renderer/platform/scheduler/common/scheduler_helper.h +++ b/third_party/blink/renderer/platform/scheduler/common/scheduler_helper.h
@@ -8,6 +8,7 @@ #include <stddef.h> #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/task/sequence_manager/sequence_manager.h" #include "base/task/single_thread_task_runner.h" #include "base/threading/thread_checker.h" @@ -130,14 +131,15 @@ virtual void ShutdownAllQueues() {} THREAD_CHECKER(thread_checker_); - base::sequence_manager::SequenceManager* sequence_manager_; // NOT OWNED + raw_ptr<base::sequence_manager::SequenceManager, ExperimentalRenderer> + sequence_manager_; // NOT OWNED private: friend class SchedulerHelperTest; scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_; - Observer* observer_; // NOT OWNED + raw_ptr<Observer, ExperimentalRenderer> observer_; // NOT OWNED UkmTaskSampler ukm_task_sampler_; // Depth of nested_runloop.
diff --git a/third_party/blink/renderer/platform/scheduler/common/simple_main_thread_scheduler.cc b/third_party/blink/renderer/platform/scheduler/common/simple_main_thread_scheduler.cc index 8835bd9..789a94c 100644 --- a/third_party/blink/renderer/platform/scheduler/common/simple_main_thread_scheduler.cc +++ b/third_party/blink/renderer/platform/scheduler/common/simple_main_thread_scheduler.cc
@@ -41,7 +41,7 @@ void SimpleMainThreadScheduler::ForEachMainThreadIsolate( base::RepeatingCallback<void(v8::Isolate* isolate)> callback) { if (isolate_) { - callback.Run(isolate_); + callback.Run(isolate_.get()); } }
diff --git a/third_party/blink/renderer/platform/scheduler/common/simple_main_thread_scheduler.h b/third_party/blink/renderer/platform/scheduler/common/simple_main_thread_scheduler.h index d47f7c2..87aa01d4 100644 --- a/third_party/blink/renderer/platform/scheduler/common/simple_main_thread_scheduler.h +++ b/third_party/blink/renderer/platform/scheduler/common/simple_main_thread_scheduler.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h" #include "third_party/blink/renderer/platform/scheduler/public/main_thread_scheduler.h" @@ -85,7 +86,7 @@ void StartIdlePeriodForTesting() override; private: - v8::Isolate* isolate_ = nullptr; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_ = nullptr; }; } // namespace scheduler
diff --git a/third_party/blink/renderer/platform/scheduler/common/single_thread_idle_task_runner.h b/third_party/blink/renderer/platform/scheduler/common/single_thread_idle_task_runner.h index d8c39d97..29c40b3 100644 --- a/third_party/blink/renderer/platform/scheduler/common/single_thread_idle_task_runner.h +++ b/third_party/blink/renderer/platform/scheduler/common/single_thread_idle_task_runner.h
@@ -10,6 +10,7 @@ #include "base/functional/bind.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" @@ -108,7 +109,7 @@ scoped_refptr<base::SingleThreadTaskRunner> control_task_runner_; std::multimap<base::TimeTicks, DelayedIdleTask> delayed_idle_tasks_ ALLOW_DISCOURAGED_TYPE("TODO(crbug.com/1404327)"); - Delegate* delegate_; // NOT OWNED + raw_ptr<Delegate, ExperimentalRenderer> delegate_; // NOT OWNED base::WeakPtr<SingleThreadIdleTaskRunner> weak_scheduler_ptr_; base::WeakPtrFactory<SingleThreadIdleTaskRunner> weak_factory_{this}; };
diff --git a/third_party/blink/renderer/platform/scheduler/common/thread_scheduler_base.h b/third_party/blink/renderer/platform/scheduler/common/thread_scheduler_base.h index d286bb94..e08b124a 100644 --- a/third_party/blink/renderer/platform/scheduler/common/thread_scheduler_base.h +++ b/third_party/blink/renderer/platform/scheduler/common/thread_scheduler_base.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_COMMON_THREAD_SCHEDULER_BASE_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_COMMON_THREAD_SCHEDULER_BASE_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "base/task/sequenced_task_runner.h" @@ -114,7 +115,7 @@ void OnBeginNestedRunLoop() override; void OnExitNestedRunLoop() override; - v8::Isolate* isolate_ = nullptr; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_ = nullptr; // Note |virtual_time_domain_| is only present iff virtual time is enabled. std::unique_ptr<AutoAdvancingVirtualTimeDomain> virtual_time_domain_;
diff --git a/third_party/blink/renderer/platform/scheduler/common/tracing_helper.h b/third_party/blink/renderer/platform/scheduler/common/tracing_helper.h index 41de86cf..c04c8bc 100644 --- a/third_party/blink/renderer/platform/scheduler/common/tracing_helper.h +++ b/third_party/blink/renderer/platform/scheduler/common/tracing_helper.h
@@ -8,6 +8,7 @@ #include <string> #include "base/compiler_specific.h" +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "base/trace_event/trace_event.h" #include "base/trace_event/typed_macros.h" @@ -90,7 +91,8 @@ virtual void OnTraceLogEnabled() = 0; private: - TraceableVariableController* const controller_; // Not owned. + const raw_ptr<TraceableVariableController, ExperimentalRenderer> + controller_; // Not owned. }; // TRACE_EVENT macros define static variable to cache a pointer to the state
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/agent_group_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/agent_group_scheduler_impl.cc index f2d4925..d45b43cf 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/agent_group_scheduler_impl.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/agent_group_scheduler_impl.cc
@@ -63,7 +63,7 @@ std::unique_ptr<PageScheduler> AgentGroupSchedulerImpl::CreatePageScheduler( PageScheduler::Delegate* delegate) { auto page_scheduler = std::make_unique<PageSchedulerImpl>(delegate, *this); - main_thread_scheduler_.AddPageScheduler(page_scheduler.get()); + main_thread_scheduler_->AddPageScheduler(page_scheduler.get()); return page_scheduler; } @@ -74,13 +74,13 @@ scoped_refptr<base::SingleThreadTaskRunner> AgentGroupSchedulerImpl::CompositorTaskRunner() { - if (main_thread_scheduler_.scheduling_settings() + if (main_thread_scheduler_->scheduling_settings() .mbi_compositor_task_runner_per_agent_scheduling_group) { return compositor_task_runner_; } // We temporarily redirect the per-AGS compositor task runner to the main // thread's compositor task runner. - return main_thread_scheduler_.CompositorTaskRunner(); + return main_thread_scheduler_->CompositorTaskRunner(); } scoped_refptr<MainThreadTaskQueue> @@ -89,7 +89,7 @@ } WebThreadScheduler& AgentGroupSchedulerImpl::GetMainThreadScheduler() { - return main_thread_scheduler_; + return *main_thread_scheduler_; } void AgentGroupSchedulerImpl::BindInterfaceBroker( @@ -106,7 +106,7 @@ v8::Isolate* AgentGroupSchedulerImpl::Isolate() { // TODO(dtapuska): crbug.com/1051790 implement an Isolate per scheduler. - v8::Isolate* isolate = main_thread_scheduler_.isolate(); + v8::Isolate* isolate = main_thread_scheduler_->isolate(); DCHECK(isolate); return isolate; }
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/agent_group_scheduler_impl.h b/third_party/blink/renderer/platform/scheduler/main_thread/agent_group_scheduler_impl.h index be4de7d..0a09195 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/agent_group_scheduler_impl.h +++ b/third_party/blink/renderer/platform/scheduler/main_thread/agent_group_scheduler_impl.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_AGENT_GROUP_SCHEDULER_IMPL_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_AGENT_GROUP_SCHEDULER_IMPL_H_ +#include "base/memory/raw_ref.h" #include "base/memory/scoped_refptr.h" #include "base/task/sequence_manager/task_queue.h" #include "mojo/public/cpp/bindings/remote.h" @@ -66,7 +67,8 @@ scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_; scoped_refptr<MainThreadTaskQueue> compositor_task_queue_; scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_; - MainThreadSchedulerImpl& main_thread_scheduler_; // Not owned. + const raw_ref<MainThreadSchedulerImpl, ExperimentalRenderer> + main_thread_scheduler_; // Not owned. HeapHashSet<WeakMember<Agent>> agents_; GC_PLUGIN_IGNORE("https://crbug.com/1381979")
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/find_in_page_budget_pool_controller.h b/third_party/blink/renderer/platform/scheduler/main_thread/find_in_page_budget_pool_controller.h index 8d619017e..34ef959 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/find_in_page_budget_pool_controller.h +++ b/third_party/blink/renderer/platform/scheduler/main_thread/find_in_page_budget_pool_controller.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_FIND_IN_PAGE_BUDGET_POOL_CONTROLLER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_FIND_IN_PAGE_BUDGET_POOL_CONTROLLER_H_ +#include "base/memory/raw_ptr.h" #include "base/task/sequence_manager/task_queue.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/scheduler/common/task_priority.h" @@ -35,7 +36,8 @@ TaskPriority CurrentTaskPriority() { return task_priority_; } private: - MainThreadSchedulerImpl* scheduler_; // Not owned. + raw_ptr<MainThreadSchedulerImpl, ExperimentalRenderer> + scheduler_; // Not owned. std::unique_ptr<CPUTimeBudgetPool> find_in_page_budget_pool_; TaskPriority task_priority_; const bool best_effort_budget_experiment_enabled_;
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.h b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.h index bbe6183..2054e309 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.h +++ b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.h
@@ -11,6 +11,7 @@ #include <utility> #include "base/containers/flat_map.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/task/sequence_manager/task_queue.h" @@ -328,9 +329,12 @@ TraceableVariableController tracing_controller_; std::unique_ptr<FrameTaskQueueController> frame_task_queue_controller_; - MainThreadSchedulerImpl* const main_thread_scheduler_; // NOT OWNED - PageSchedulerImpl* parent_page_scheduler_; // NOT OWNED - FrameScheduler::Delegate* delegate_; // NOT OWNED + const raw_ptr<MainThreadSchedulerImpl, ExperimentalRenderer> + main_thread_scheduler_; // NOT OWNED + raw_ptr<PageSchedulerImpl, ExperimentalRenderer> + parent_page_scheduler_; // NOT OWNED + raw_ptr<FrameScheduler::Delegate, ExperimentalRenderer> + delegate_; // NOT OWNED TraceableState<bool, TracingCategory::kInfo> frame_visible_; TraceableState<bool, TracingCategory::kInfo> frame_paused_; TraceableState<FrameOriginType, TracingCategory::kInfo> frame_origin_type_;
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl_unittest.cc b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl_unittest.cc index 6c54c5b..a6590ec 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl_unittest.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl_unittest.cc
@@ -13,6 +13,7 @@ #include "base/functional/callback.h" #include "base/functional/callback_helpers.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/field_trial_param_associator.h" #include "base/metrics/field_trial_params.h" #include "base/run_loop.h" @@ -106,7 +107,7 @@ ~TestObject() { ++(*counter_); } private: - int* counter_; + raw_ptr<int, ExperimentalRenderer> counter_; }; } // namespace
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.h b/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.h index 9175559c..491b4ac 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.h +++ b/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.h
@@ -9,6 +9,7 @@ #include <utility> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h" @@ -110,9 +111,10 @@ static MainThreadTaskQueue::QueueType QueueTypeFromQueueTraits( MainThreadTaskQueue::QueueTraits); - MainThreadSchedulerImpl* const main_thread_scheduler_impl_; - FrameSchedulerImpl* const frame_scheduler_impl_; - Delegate* const delegate_; + const raw_ptr<MainThreadSchedulerImpl, ExperimentalRenderer> + main_thread_scheduler_impl_; + const raw_ptr<FrameSchedulerImpl, ExperimentalRenderer> frame_scheduler_impl_; + const raw_ptr<Delegate, ExperimentalRenderer> delegate_; using TaskQueueMap = WTF::HashMap<MainThreadTaskQueue::QueueTraitsKeyType,
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/idle_time_estimator.h b/third_party/blink/renderer/platform/scheduler/main_thread/idle_time_estimator.h index 89d6226..58cace68 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/idle_time_estimator.h +++ b/third_party/blink/renderer/platform/scheduler/main_thread/idle_time_estimator.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_IDLE_TIME_ESTIMATOR_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_IDLE_TIME_ESTIMATOR_H_ +#include "base/memory/raw_ptr.h" #include "base/task/task_observer.h" #include "base/time/tick_clock.h" #include "base/time/time.h" @@ -48,7 +49,8 @@ private: cc::RollingTimeDeltaHistory per_frame_compositor_task_runtime_; - const base::TickClock* time_source_; // NOT OWNED + raw_ptr<const base::TickClock, ExperimentalRenderer> + time_source_; // NOT OWNED double estimation_percentile_; base::TimeTicks task_start_time_;
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_impl.h b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_impl.h index c51352f9..fbd31256e 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_impl.h +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_impl.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_MAIN_THREAD_IMPL_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_MAIN_THREAD_IMPL_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/task/single_thread_task_runner.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -35,7 +36,8 @@ private: scoped_refptr<base::SingleThreadTaskRunner> task_runner_; - MainThreadSchedulerImpl* scheduler_; // Not owned. + raw_ptr<MainThreadSchedulerImpl, ExperimentalRenderer> + scheduler_; // Not owned. }; } // namespace scheduler
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper.h b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper.h index 088009e9..7540bde 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper.h +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_MAIN_THREAD_METRICS_HELPER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_MAIN_THREAD_METRICS_HELPER_H_ +#include "base/memory/raw_ptr.h" #include "base/rand_util.h" #include "base/time/time.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -65,7 +66,8 @@ private: void ReportLowThreadLoadForPageAlmostIdleSignal(int load_percentage); - MainThreadSchedulerImpl* main_thread_scheduler_; // NOT OWNED + raw_ptr<MainThreadSchedulerImpl, ExperimentalRenderer> + main_thread_scheduler_; // NOT OWNED // Set to true when OnRendererShutdown is called. Used to ensure that metrics // that need to cross IPC boundaries aren't sent, as they cause additional
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper_unittest.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper_unittest.cc index 2364339..151ceae 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper_unittest.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper_unittest.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper.h" #include <memory> +#include "base/memory/raw_ptr.h" #include "base/task/sequence_manager/test/fake_task.h" #include "base/task/sequence_manager/test/sequence_manager_for_test.h" #include "base/test/metrics/histogram_tester.h" @@ -200,7 +201,8 @@ base::test::TaskEnvironment task_environment_; std::unique_ptr<MainThreadSchedulerImpl> scheduler_; - MainThreadMetricsHelper* metrics_helper_; // NOT OWNED + raw_ptr<MainThreadMetricsHelper, ExperimentalRenderer> + metrics_helper_; // NOT OWNED std::unique_ptr<base::HistogramTester> histogram_tester_; std::unique_ptr<FakePageScheduler> playing_view_ = FakePageScheduler::Builder().SetIsAudioPlaying(true).Build();
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_helper.h b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_helper.h index 82dafda..15efc29b 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_helper.h +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_helper.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_MAIN_THREAD_SCHEDULER_HELPER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_MAIN_THREAD_SCHEDULER_HELPER_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/scheduler/common/scheduler_helper.h" #include "base/task/single_thread_task_runner.h" @@ -43,7 +44,8 @@ void ShutdownAllQueues() override; private: - MainThreadSchedulerImpl* main_thread_scheduler_; // NOT OWNED + raw_ptr<MainThreadSchedulerImpl, ExperimentalRenderer> + main_thread_scheduler_; // NOT OWNED const scoped_refptr<MainThreadTaskQueue> default_task_queue_; const scoped_refptr<MainThreadTaskQueue> control_task_queue_;
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc index 95fbce56..1d0a21d 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc
@@ -2295,7 +2295,8 @@ TRACE_EVENT_NESTABLE_ASYNC_END1( TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), agent_group_scheduler_scope.trace_event_scope_name, - agent_group_scheduler_scope.trace_event_scope_id, "agent_group_scheduler", + agent_group_scheduler_scope.trace_event_scope_id.get(), + "agent_group_scheduler", static_cast<void*>( agent_group_scheduler_scope.current_agent_group_scheduler));
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h index a726e4d..ab12ef3 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h
@@ -11,6 +11,7 @@ #include "base/dcheck_is_on.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/metrics/single_sample_metrics.h" #include "base/observer_list.h" @@ -439,7 +440,7 @@ scoped_refptr<base::SingleThreadTaskRunner> previous_task_runner; scoped_refptr<base::SingleThreadTaskRunner> current_task_runner; const char* trace_event_scope_name; - void* trace_event_scope_id; + raw_ptr<void, ExperimentalRenderer> trace_event_scope_id; }; void BeginAgentGroupSchedulerScope( @@ -531,7 +532,8 @@ ~RendererPauseHandleImpl() override; private: - MainThreadSchedulerImpl* scheduler_; // NOT OWNED + raw_ptr<MainThreadSchedulerImpl, ExperimentalRenderer> + scheduler_; // NOT OWNED }; // IdleHelper::Delegate implementation:
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h index 1942251..8a75b8d 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "base/task/common/lazy_now.h" @@ -380,7 +381,7 @@ QueueType queue_type; TaskQueue::Spec spec; WeakPersistent<AgentGroupSchedulerImpl> agent_group_scheduler; - FrameSchedulerImpl* frame_scheduler = nullptr; + raw_ptr<FrameSchedulerImpl, ExperimentalRenderer> frame_scheduler = nullptr; QueueTraits queue_traits; absl::optional<WebSchedulingQueueType> web_scheduling_queue_type; absl::optional<WebSchedulingPriority> web_scheduling_priority; @@ -575,17 +576,20 @@ absl::optional<WebSchedulingPriority> web_scheduling_priority_; // Needed to notify renderer scheduler about completed tasks. - MainThreadSchedulerImpl* main_thread_scheduler_; // NOT OWNED + raw_ptr<MainThreadSchedulerImpl, ExperimentalRenderer> + main_thread_scheduler_; // NOT OWNED WeakPersistent<AgentGroupSchedulerImpl> agent_group_scheduler_; // Set in the constructor. Cleared in `DetachTaskQueue()` and // `ShutdownTaskQueue()`. Can never be set to a different value afterwards // (except in tests). - FrameSchedulerImpl* frame_scheduler_; // NOT OWNED + raw_ptr<FrameSchedulerImpl, ExperimentalRenderer> + frame_scheduler_; // NOT OWNED // The WakeUpBudgetPool for this TaskQueue, if any. - WakeUpBudgetPool* wake_up_budget_pool_{nullptr}; // NOT OWNED + raw_ptr<WakeUpBudgetPool, ExperimentalRenderer> wake_up_budget_pool_{ + nullptr}; // NOT OWNED std::unique_ptr<TaskQueue::OnTaskPostedCallbackHandle> on_ipc_task_posted_callback_handle_;
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_unittest.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_unittest.cc index d9e830b..20311e31 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_unittest.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_unittest.cc
@@ -10,6 +10,7 @@ #include "base/functional/bind.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/message_loop/message_pump.h" #include "base/message_loop/message_pump_type.h" #include "base/run_loop.h" @@ -77,7 +78,7 @@ base::SimpleTestTickClock clock_; std::unique_ptr<MainThreadSchedulerImpl> scheduler_; std::unique_ptr<ScopedSchedulerOverrider> scheduler_overrider_; - Thread* thread_; + raw_ptr<Thread, ExperimentalRenderer> thread_; }; TEST_F(MainThreadTest, TestTaskObserver) {
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.h b/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.h index 15a577c..837efe4c 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.h +++ b/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/common/lazy_now.h" #include "base/task/sequence_manager/task_queue.h" @@ -233,7 +234,7 @@ TraceableVariableController tracing_controller_; HashSet<FrameSchedulerImpl*> frame_schedulers_; - MainThreadSchedulerImpl* main_thread_scheduler_; + raw_ptr<MainThreadSchedulerImpl, ExperimentalRenderer> main_thread_scheduler_; Persistent<AgentGroupSchedulerImpl> agent_group_scheduler_; PageVisibilityState page_visibility_; @@ -289,7 +290,7 @@ // AllowUnalignedWakeUpIfNoRecentWakeUp() on this pool. std::unique_ptr<WakeUpBudgetPool> cross_origin_intensive_wake_up_budget_pool_; - PageScheduler::Delegate* delegate_; + raw_ptr<PageScheduler::Delegate, ExperimentalRenderer> delegate_; CancelableClosureHolder do_throttle_cpu_time_callback_; CancelableClosureHolder do_intensively_throttle_wake_ups_callback_; CancelableClosureHolder reset_had_recent_title_or_favicon_update_;
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/render_widget_signals.h b/third_party/blink/renderer/platform/scheduler/main_thread/render_widget_signals.h index cd89921..73c644c 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/render_widget_signals.h +++ b/third_party/blink/renderer/platform/scheduler/main_thread/render_widget_signals.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_RENDER_WIDGET_SIGNALS_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_MAIN_THREAD_RENDER_WIDGET_SIGNALS_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" #include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h" @@ -47,7 +48,7 @@ void IncNumVisibleRenderWidgetsWithTouchHandlers(); void DecNumVisibleRenderWidgetsWithTouchHandlers(); - Observer* observer_; // NOT OWNED + raw_ptr<Observer, ExperimentalRenderer> observer_; // NOT OWNED int num_visible_render_widgets_; int num_visible_render_widgets_with_touch_handlers_; };
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/widget_scheduler_impl.h b/third_party/blink/renderer/platform/scheduler/main_thread/widget_scheduler_impl.h index 8e29659..eea90bd 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/widget_scheduler_impl.h +++ b/third_party/blink/renderer/platform/scheduler/main_thread/widget_scheduler_impl.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/task/sequence_manager/task_queue.h" #include "base/task/single_thread_task_runner.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -54,8 +55,10 @@ std::unique_ptr<base::sequence_manager::TaskQueue::QueueEnabledVoter> input_task_queue_enabled_voter_; - MainThreadSchedulerImpl* const main_thread_scheduler_; - RenderWidgetSignals* const render_widget_signals_; + const raw_ptr<MainThreadSchedulerImpl, ExperimentalRenderer> + main_thread_scheduler_; + const raw_ptr<RenderWidgetSignals, ExperimentalRenderer> + render_widget_signals_; bool hidden_ = false; bool has_touch_handler_ = false; };
diff --git a/third_party/blink/renderer/platform/scheduler/public/aggregated_metric_reporter.h b/third_party/blink/renderer/platform/scheduler/public/aggregated_metric_reporter.h index 3f57442..fac6cc0 100644 --- a/third_party/blink/renderer/platform/scheduler/public/aggregated_metric_reporter.h +++ b/third_party/blink/renderer/platform/scheduler/public/aggregated_metric_reporter.h
@@ -9,6 +9,7 @@ #include "base/check_op.h" #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/histogram.h" #include "base/threading/thread_checker.h" #include "base/time/time.h" @@ -80,7 +81,7 @@ std::array<ValueType, static_cast<size_t>(TaskClass::kCount)> unreported_values_ = {}; - base::HistogramBase* value_per_type_histogram_; + raw_ptr<base::HistogramBase, ExperimentalRenderer> value_per_type_histogram_; AggregatorFuncPtr aggregator_; THREAD_CHECKER(thread_checker_);
diff --git a/third_party/blink/renderer/platform/scheduler/public/cooperative_scheduling_manager.h b/third_party/blink/renderer/platform/scheduler/public/cooperative_scheduling_manager.h index d72db7e..3bcbcc7 100644 --- a/third_party/blink/renderer/platform/scheduler/public/cooperative_scheduling_manager.h +++ b/third_party/blink/renderer/platform/scheduler/public/cooperative_scheduling_manager.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_PUBLIC_COOPERATIVE_SCHEDULING_MANAGER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_PUBLIC_COOPERATIVE_SCHEDULING_MANAGER_H_ +#include "base/memory/raw_ptr.h" #include "base/time/tick_clock.h" #include "base/time/time.h" #include "third_party/blink/renderer/platform/platform_export.h" @@ -67,7 +68,7 @@ int allowed_stack_scope_depth_ = 0; bool running_nested_loop_ = false; base::TimeTicks wait_until_; - const base::TickClock* clock_; + raw_ptr<const base::TickClock, ExperimentalRenderer> clock_; bool feature_enabled_ = true; };
diff --git a/third_party/blink/renderer/platform/scheduler/public/event_loop.h b/third_party/blink/renderer/platform/scheduler/public/event_loop.h index 46040d3..817d8850 100644 --- a/third_party/blink/renderer/platform/scheduler/public/event_loop.h +++ b/third_party/blink/renderer/platform/scheduler/public/event_loop.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "third_party/blink/renderer/platform/heap/garbage_collected.h" #include "third_party/blink/renderer/platform/heap/persistent.h" @@ -123,7 +124,7 @@ static void RunEndOfCheckpointTasks(v8::Isolate* isolat, void* data); WeakPersistent<Delegate> delegate_; - v8::Isolate* isolate_; + raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_; bool loop_enabled_ = true; bool register_complete_callback_ = false; Deque<base::OnceClosure> pending_microtasks_;
diff --git a/third_party/blink/renderer/platform/scheduler/public/thread.h b/third_party/blink/renderer/platform/scheduler/public/thread.h index abc61713c..d2b699c 100644 --- a/third_party/blink/renderer/platform/scheduler/public/thread.h +++ b/third_party/blink/renderer/platform/scheduler/public/thread.h
@@ -27,6 +27,7 @@ #include <stdint.h> #include "base/functional/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/task/task_observer.h" #include "base/threading/thread.h" @@ -64,7 +65,8 @@ ThreadType thread_type; const char* name; - FrameOrWorkerScheduler* frame_or_worker_scheduler; // NOT OWNED + raw_ptr<FrameOrWorkerScheduler, ExperimentalRenderer> + frame_or_worker_scheduler; // NOT OWNED // Do NOT set the thread priority for non-WebAudio usages. Please consult // scheduler-dev@ first in order to use an elevated thread priority.
diff --git a/third_party/blink/renderer/platform/scheduler/test/fake_agent_group_scheduler_scheduler.h b/third_party/blink/renderer/platform/scheduler/test/fake_agent_group_scheduler_scheduler.h index 2b70d90..ec3235e 100644 --- a/third_party/blink/renderer/platform/scheduler/test/fake_agent_group_scheduler_scheduler.h +++ b/third_party/blink/renderer/platform/scheduler/test/fake_agent_group_scheduler_scheduler.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_TEST_FAKE_AGENT_GROUP_SCHEDULER_SCHEDULER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_TEST_FAKE_AGENT_GROUP_SCHEDULER_SCHEDULER_H_ +#include "base/memory/raw_ref.h" #include "base/task/single_thread_task_runner.h" #include "third_party/blink/public/common/browser_interface_broker_proxy.h" #include "third_party/blink/public/platform/scheduler/test/renderer_scheduler_test_support.h" @@ -34,7 +35,7 @@ } WebThreadScheduler& GetMainThreadScheduler() override { - return web_thread_scheduler_; + return *web_thread_scheduler_; } BrowserInterfaceBrokerProxy& GetBrowserInterfaceBroker() override { @@ -52,7 +53,7 @@ void AddAgent(Agent* agent) override {} private: - WebThreadScheduler& web_thread_scheduler_; + const raw_ref<WebThreadScheduler, ExperimentalRenderer> web_thread_scheduler_; }; } // namespace scheduler
diff --git a/third_party/blink/renderer/platform/scheduler/test/fake_frame_scheduler.h b/third_party/blink/renderer/platform/scheduler/test/fake_frame_scheduler.h index f2796c2..094b7ba0 100644 --- a/third_party/blink/renderer/platform/scheduler/test/fake_frame_scheduler.h +++ b/third_party/blink/renderer/platform/scheduler/test/fake_frame_scheduler.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_TEST_FAKE_FRAME_SCHEDULER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_TEST_FAKE_FRAME_SCHEDULER_H_ +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.h" #include "third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h" @@ -168,7 +169,7 @@ } private: - PageScheduler* page_scheduler_; // NOT OWNED + raw_ptr<PageScheduler, ExperimentalRenderer> page_scheduler_; // NOT OWNED bool is_page_visible_; bool is_frame_visible_;
diff --git a/third_party/blink/renderer/platform/scheduler/test/web_scheduling_test_helper.cc b/third_party/blink/renderer/platform/scheduler/test/web_scheduling_test_helper.cc index b59abb6..659ed9dd 100644 --- a/third_party/blink/renderer/platform/scheduler/test/web_scheduling_test_helper.cc +++ b/third_party/blink/renderer/platform/scheduler/test/web_scheduling_test_helper.cc
@@ -32,7 +32,7 @@ WebSchedulingTestHelper::WebSchedulingTestHelper(Delegate& delegate) : delegate_(delegate) { FrameOrWorkerScheduler& frame_or_worker_scheduler = - delegate_.GetFrameOrWorkerScheduler(); + delegate_->GetFrameOrWorkerScheduler(); for (int i = 0; i <= static_cast<int>(WebSchedulingPriority::kLastPriority); i++) { WebSchedulingPriority priority = static_cast<WebSchedulingPriority>(i); @@ -71,7 +71,7 @@ ->GetTaskRunner(); } else { task_runner = - delegate_.GetTaskRunner(absl::get<TaskType>(entry.type_info)); + delegate_->GetTaskRunner(absl::get<TaskType>(entry.type_info)); } task_runner->PostDelayedTask( FROM_HERE,
diff --git a/third_party/blink/renderer/platform/scheduler/test/web_scheduling_test_helper.h b/third_party/blink/renderer/platform/scheduler/test/web_scheduling_test_helper.h index d926eb7..55a5d72 100644 --- a/third_party/blink/renderer/platform/scheduler/test/web_scheduling_test_helper.h +++ b/third_party/blink/renderer/platform/scheduler/test/web_scheduling_test_helper.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ref.h" #include "base/memory/scoped_refptr.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" @@ -64,7 +65,7 @@ const Vector<TestTaskSpecEntry>& test_spec); private: - Delegate& delegate_; + const raw_ref<Delegate, ExperimentalRenderer> delegate_; Vector<std::unique_ptr<WebSchedulingTaskQueue>> task_queues_; Vector<std::unique_ptr<WebSchedulingTaskQueue>> continuation_task_queues_; };
diff --git a/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_impl.h b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_impl.h index 4c9d254..aa42152 100644 --- a/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_impl.h +++ b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_impl.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_WORKER_NON_MAIN_THREAD_IMPL_H_ #include "base/functional/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "base/message_loop/message_pump_type.h" #include "base/run_loop.h" #include "base/synchronization/waitable_event.h" @@ -113,7 +114,7 @@ // loop. scoped_refptr<base::SingleThreadTaskRunner> internal_task_runner_; - NonMainThreadImpl* thread_; + raw_ptr<NonMainThreadImpl, ExperimentalRenderer> thread_; // The following variables are "owned" by the worker thread std::unique_ptr<base::sequence_manager::SequenceManager> sequence_manager_; @@ -121,7 +122,7 @@ std::unique_ptr<scheduler::NonMainThreadSchedulerBase> non_main_thread_scheduler_; scoped_refptr<base::SingleThreadTaskRunner> default_task_runner_; - base::RunLoop* run_loop_; + raw_ptr<base::RunLoop, ExperimentalRenderer> run_loop_; bool supports_gc_; std::unique_ptr<GCSupport> gc_support_; };
diff --git a/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_impl_unittest.cc b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_impl_unittest.cc index 522e775..ecd135a 100644 --- a/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_impl_unittest.cc +++ b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_impl_unittest.cc
@@ -6,6 +6,7 @@ #include "base/functional/bind.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/synchronization/waitable_event.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -48,7 +49,7 @@ } private: - StringBuilder* calls_; // NOT OWNED + raw_ptr<StringBuilder, ExperimentalRenderer> calls_; // NOT OWNED }; void RunTestTask(StringBuilder* calls) {
diff --git a/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_scheduler_helper.h b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_scheduler_helper.h index e2abb0e..66bd538d 100644 --- a/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_scheduler_helper.h +++ b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_scheduler_helper.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_WORKER_NON_MAIN_THREAD_SCHEDULER_HELPER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_WORKER_NON_MAIN_THREAD_SCHEDULER_HELPER_H_ +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "third_party/blink/renderer/platform/scheduler/common/scheduler_helper.h" @@ -58,7 +59,8 @@ NonMainThreadTaskQueue::QueueCreationParams params = NonMainThreadTaskQueue::QueueCreationParams()); - NonMainThreadSchedulerBase* non_main_thread_scheduler_; // NOT OWNED + raw_ptr<NonMainThreadSchedulerBase, ExperimentalRenderer> + non_main_thread_scheduler_; // NOT OWNED const scoped_refptr<NonMainThreadTaskQueue> default_task_queue_; const scoped_refptr<NonMainThreadTaskQueue> input_task_queue_; const scoped_refptr<NonMainThreadTaskQueue> control_task_queue_;
diff --git a/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_task_queue.h b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_task_queue.h index a0d44b0..06280ca 100644 --- a/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_task_queue.h +++ b/third_party/blink/renderer/platform/scheduler/worker/non_main_thread_task_queue.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_WORKER_NON_MAIN_THREAD_TASK_QUEUE_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCHEDULER_WORKER_NON_MAIN_THREAD_TASK_QUEUE_H_ +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/task/common/lazy_now.h" #include "base/task/sequence_manager/task_queue.h" @@ -133,7 +134,8 @@ absl::optional<TaskQueueThrottler> throttler_; // Not owned. - NonMainThreadSchedulerBase* non_main_thread_scheduler_; + raw_ptr<NonMainThreadSchedulerBase, ExperimentalRenderer> + non_main_thread_scheduler_; // Set if this is queue is used for the web-exposed scheduling API. Used to // differentiate initial tasks from continuations for prioritization.
diff --git a/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_impl.h b/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_impl.h index 1ed83c760..5155964 100644 --- a/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_impl.h +++ b/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_impl.h
@@ -7,6 +7,7 @@ #include <map> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/sequence_manager/task_queue.h" #include "base/task/single_thread_task_runner.h" @@ -131,7 +132,8 @@ SchedulingLifecycleState lifecycle_state_ = SchedulingLifecycleState::kNotThrottled; - WorkerThreadScheduler* thread_scheduler_; // NOT OWNED + raw_ptr<WorkerThreadScheduler, ExperimentalRenderer> + thread_scheduler_; // NOT OWNED bool is_disposed_ = false; uint32_t paused_count_ = 0;
diff --git a/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_impl_unittest.cc b/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_impl_unittest.cc index 5d07229..fcf492e 100644 --- a/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_impl_unittest.cc +++ b/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_impl_unittest.cc
@@ -7,6 +7,7 @@ #include <memory> #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/task/sequence_manager/test/sequence_manager_for_test.h" #include "base/task/single_thread_task_runner.h" @@ -84,7 +85,7 @@ ~TestObject() { ++(*counter_); } private: - int* counter_; + raw_ptr<int, ExperimentalRenderer> counter_; }; } // namespace
diff --git a/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_proxy_unittest.cc b/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_proxy_unittest.cc index ae5eaa54..dfe28cd4 100644 --- a/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_proxy_unittest.cc +++ b/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_proxy_unittest.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_proxy.h" #include "base/functional/bind.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/synchronization/waitable_event.h" #include "base/task/sequence_manager/test/sequence_manager_for_test.h" @@ -43,7 +44,7 @@ using WorkerThreadScheduler::lifecycle_state; private: - base::WaitableEvent* throtting_state_changed_; + raw_ptr<base::WaitableEvent, ExperimentalRenderer> throtting_state_changed_; }; class WorkerThreadForTest : public NonMainThreadImpl { @@ -91,8 +92,10 @@ WorkerThreadSchedulerForTest* GetWorkerScheduler() { return scheduler_; } private: - base::WaitableEvent* throtting_state_changed_; // NOT OWNED - WorkerThreadSchedulerForTest* scheduler_ = nullptr; // NOT OWNED + raw_ptr<base::WaitableEvent, ExperimentalRenderer> + throtting_state_changed_; // NOT OWNED + raw_ptr<WorkerThreadSchedulerForTest, ExperimentalRenderer> scheduler_ = + nullptr; // NOT OWNED std::unique_ptr<WorkerSchedulerImpl> worker_scheduler_; };
diff --git a/third_party/blink/renderer/platform/scheduler/worker/worker_thread_scheduler_unittest.cc b/third_party/blink/renderer/platform/scheduler/worker/worker_thread_scheduler_unittest.cc index 9ae3e2f..8c9d3ff3 100644 --- a/third_party/blink/renderer/platform/scheduler/worker/worker_thread_scheduler_unittest.cc +++ b/third_party/blink/renderer/platform/scheduler/worker/worker_thread_scheduler_unittest.cc
@@ -6,6 +6,7 @@ #include "base/functional/bind.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/task/sequence_manager/test/fake_task.h" #include "base/task/sequence_manager/test/sequence_manager_for_test.h" #include "base/task/single_thread_task_runner.h" @@ -132,8 +133,8 @@ std::move(on_microtask_checkpoint_).Run(); } - const base::TickClock* clock_; // Not owned. - Vector<String>* timeline_; // Not owned. + raw_ptr<const base::TickClock, ExperimentalRenderer> clock_; // Not owned. + raw_ptr<Vector<String>, ExperimentalRenderer> timeline_; // Not owned. base::OnceClosure on_microtask_checkpoint_; };
diff --git a/third_party/blink/renderer/platform/storage/blink_storage_key_test.cc b/third_party/blink/renderer/platform/storage/blink_storage_key_test.cc index 36f32a8a..cf7949c 100644 --- a/third_party/blink/renderer/platform/storage/blink_storage_key_test.cc +++ b/third_party/blink/renderer/platform/storage/blink_storage_key_test.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/platform/storage/blink_storage_key.h" +#include "base/memory/raw_ptr_exclusion.h" #include "base/memory/scoped_refptr.h" #include "base/test/gtest_util.h" #include "base/test/scoped_feature_list.h" @@ -367,9 +368,13 @@ const struct TestCase { scoped_refptr<const SecurityOrigin> origin; - const BlinkSchemefulSite& top_level_site; - const BlinkSchemefulSite& top_level_site_if_third_party_enabled; - const absl::optional<base::UnguessableToken>& nonce; + // These members are excluded from `raw_ptr` rewriting because + // they are test-only and add a ton of churn in the test case + // below. + RAW_PTR_EXCLUSION const BlinkSchemefulSite& top_level_site; + RAW_PTR_EXCLUSION const BlinkSchemefulSite& + top_level_site_if_third_party_enabled; + RAW_PTR_EXCLUSION const absl::optional<base::UnguessableToken>& nonce; AncestorChainBit ancestor_chain_bit; AncestorChainBit ancestor_chain_bit_if_third_party_enabled; bool result;
diff --git a/third_party/blink/renderer/platform/testing/font_test_helpers.h b/third_party/blink/renderer/platform/testing/font_test_helpers.h index f8893bc..360e1ec6 100644 --- a/third_party/blink/renderer/platform/testing/font_test_helpers.h +++ b/third_party/blink/renderer/platform/testing/font_test_helpers.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_TESTING_FONT_TEST_HELPERS_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_TESTING_FONT_TEST_HELPERS_H_ +#include "base/memory/raw_ptr.h" #include "build/build_config.h" #include "third_party/blink/public/platform/web_font_prewarmer.h" #include "third_party/blink/renderer/platform/fonts/font_description.h" @@ -54,7 +55,7 @@ private: TestFontPrewarmer current_; - WebFontPrewarmer* saved_; + raw_ptr<WebFontPrewarmer, ExperimentalRenderer> saved_; }; #endif
diff --git a/third_party/blink/renderer/platform/testing/scoped_scheduler_overrider.cc b/third_party/blink/renderer/platform/testing/scoped_scheduler_overrider.cc index 990064c..c527e60 100644 --- a/third_party/blink/renderer/platform/testing/scoped_scheduler_overrider.cc +++ b/third_party/blink/renderer/platform/testing/scoped_scheduler_overrider.cc
@@ -4,6 +4,7 @@ #include "third_party/blink/renderer/platform/testing/scoped_scheduler_overrider.h" +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "third_party/blink/renderer/platform/wtf/wtf.h" @@ -27,7 +28,7 @@ } private: - ThreadScheduler* scheduler_; + raw_ptr<ThreadScheduler, ExperimentalRenderer> scheduler_; scoped_refptr<base::SingleThreadTaskRunner> task_runner_; };
diff --git a/third_party/blink/renderer/platform/testing/testing_platform_support.h b/third_party/blink/renderer/platform/testing/testing_platform_support.h index de980345..075f5d5 100644 --- a/third_party/blink/renderer/platform/testing/testing_platform_support.h +++ b/third_party/blink/renderer/platform/testing/testing_platform_support.h
@@ -37,6 +37,7 @@ #include "base/auto_reset.h" #include "base/check_op.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "third_party/blink/public/platform/platform.h" #include "third_party/blink/renderer/platform/heap/heap_test_utilities.h" @@ -91,7 +92,7 @@ protected: class TestingBrowserInterfaceBroker; - Platform* const old_platform_; + const raw_ptr<Platform, ExperimentalRenderer> old_platform_; scoped_refptr<TestingBrowserInterfaceBroker> interface_broker_; private: @@ -150,7 +151,7 @@ private: std::unique_ptr<T> testing_platform_support_; - Platform* original_platform_; + raw_ptr<Platform, ExperimentalRenderer> original_platform_; }; class ScopedUnittestsEnvironmentSetup final {
diff --git a/third_party/blink/renderer/platform/testing/testing_platform_support_with_mock_scheduler.h b/third_party/blink/renderer/platform/testing/testing_platform_support_with_mock_scheduler.h index cf6d89e..af63aaf 100644 --- a/third_party/blink/renderer/platform/testing/testing_platform_support_with_mock_scheduler.h +++ b/third_party/blink/renderer/platform/testing/testing_platform_support_with_mock_scheduler.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/test/test_mock_time_task_runner.h" #include "third_party/blink/renderer/platform/scheduler/public/thread.h" #include "third_party/blink/renderer/platform/testing/scoped_main_thread_overrider.h" @@ -79,7 +80,7 @@ bool auto_advance_ = true; std::unique_ptr<scheduler::MainThreadSchedulerImpl> scheduler_; - base::sequence_manager::SequenceManager* + raw_ptr<base::sequence_manager::SequenceManager, ExperimentalRenderer> sequence_manager_; // Owned by scheduler_. std::unique_ptr<ScopedMainThreadOverrider> main_thread_overrider_; };
diff --git a/third_party/blink/renderer/platform/testing/url_loader_mock.h b/third_party/blink/renderer/platform/testing/url_loader_mock.h index ddd4a223..2c492c3 100644 --- a/third_party/blink/renderer/platform/testing/url_loader_mock.h +++ b/third_party/blink/renderer/platform/testing/url_loader_mock.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_TESTING_URL_LOADER_MOCK_H_ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -81,8 +82,8 @@ private: void Cancel(); - URLLoaderMockFactoryImpl* factory_ = nullptr; - URLLoaderClient* client_ = nullptr; + raw_ptr<URLLoaderMockFactoryImpl, ExperimentalRenderer> factory_ = nullptr; + raw_ptr<URLLoaderClient, ExperimentalRenderer> client_ = nullptr; bool is_deferred_ = false; base::WeakPtrFactory<URLLoaderMock> weak_factory_{this};
diff --git a/third_party/blink/renderer/platform/testing/url_loader_mock_factory_impl.h b/third_party/blink/renderer/platform/testing/url_loader_mock_factory_impl.h index a5620a5..55b6f33 100644 --- a/third_party/blink/renderer/platform/testing/url_loader_mock_factory_impl.h +++ b/third_party/blink/renderer/platform/testing/url_loader_mock_factory_impl.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_TESTING_URL_LOADER_MOCK_FACTORY_IMPL_H_ #include "base/files/file_path.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/public/platform/web_url.h" @@ -104,7 +105,7 @@ static bool ReadFile(const base::FilePath& file_path, scoped_refptr<SharedBuffer>& data); - URLLoaderTestDelegate* delegate_ = nullptr; + raw_ptr<URLLoaderTestDelegate, ExperimentalRenderer> delegate_ = nullptr; // The loaders that have not being served data yet. using LoaderToRequestMap = @@ -125,7 +126,7 @@ using ProtocolToResponseMap = HashMap<String, ResponseInfo>; ProtocolToResponseMap protocol_to_response_info_; - TestingPlatformSupport* platform_; + raw_ptr<TestingPlatformSupport, ExperimentalRenderer> platform_; }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/text/layout_locale.cc b/third_party/blink/renderer/platform/text/layout_locale.cc index a08a794..cd6294dd 100644 --- a/third_party/blink/renderer/platform/text/layout_locale.cc +++ b/third_party/blink/renderer/platform/text/layout_locale.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/platform/text/layout_locale.h" #include "base/compiler_specific.h" +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "third_party/blink/renderer/platform/language.h" #include "third_party/blink/renderer/platform/text/hyphenation.h" @@ -28,9 +29,10 @@ scoped_refptr<LayoutLocale>, CaseFoldingHashTraits<AtomicString>> locale_map; - const LayoutLocale* default_locale = nullptr; - const LayoutLocale* system_locale = nullptr; - const LayoutLocale* default_locale_for_han = nullptr; + raw_ptr<const LayoutLocale, ExperimentalRenderer> default_locale = nullptr; + raw_ptr<const LayoutLocale, ExperimentalRenderer> system_locale = nullptr; + raw_ptr<const LayoutLocale, ExperimentalRenderer> default_locale_for_han = + nullptr; bool default_locale_for_han_computed = false; String current_accept_languages; }; @@ -42,7 +44,7 @@ struct DelimiterConfig { ULocaleDataDelimiterType type; - UChar* result; + raw_ptr<UChar, ExperimentalRenderer> result; }; // Use ICU ulocdata to find quote delimiters for an ICU locale // https://unicode-org.github.io/icu-docs/apidoc/dev/icu4c/ulocdata_8h.html#a0bf1fdd1a86918871ae2c84b5ce8421f
diff --git a/third_party/blink/renderer/platform/text/layout_locale.h b/third_party/blink/renderer/platform/text/layout_locale.h index 3588df8c..ab50b3a 100644 --- a/third_party/blink/renderer/platform/text/layout_locale.h +++ b/third_party/blink/renderer/platform/text/layout_locale.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_TEXT_LAYOUT_LOCALE_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_TEXT_LAYOUT_LOCALE_H_ +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/text/hyphenation.h" #include "third_party/blink/renderer/platform/text/quotes_data.h" @@ -98,7 +99,7 @@ mutable scoped_refptr<QuotesData> quotes_data_; // hb_language_t is defined in hb.h, which not all files can include. - const hb_language_impl_t* harfbuzz_language_; + raw_ptr<const hb_language_impl_t, ExperimentalRenderer> harfbuzz_language_; UScriptCode script_; mutable UScriptCode script_for_han_;
diff --git a/third_party/blink/renderer/platform/text/locale_icu.h b/third_party/blink/renderer/platform/text/locale_icu.h index e37c170..02ca3d2 100644 --- a/third_party/blink/renderer/platform/text/locale_icu.h +++ b/third_party/blink/renderer/platform/text/locale_icu.h
@@ -36,6 +36,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/renderer/platform/text/date_components.h" #include "third_party/blink/renderer/platform/text/platform_locale.h" @@ -92,8 +93,8 @@ void InitializeDateTimeFormat(); std::string locale_; - UNumberFormat* number_format_; - UDateFormat* short_date_format_; + raw_ptr<UNumberFormat, ExperimentalRenderer> number_format_; + raw_ptr<UDateFormat, ExperimentalRenderer> short_date_format_; bool did_create_decimal_format_; bool did_create_short_date_format_; @@ -107,8 +108,8 @@ String time_format_without_seconds_; String date_time_format_with_seconds_; String date_time_format_without_seconds_; - UDateFormat* medium_time_format_; - UDateFormat* short_time_format_; + raw_ptr<UDateFormat, ExperimentalRenderer> medium_time_format_; + raw_ptr<UDateFormat, ExperimentalRenderer> short_time_format_; Vector<String> short_month_labels_; Vector<String> stand_alone_month_labels_; Vector<String> short_stand_alone_month_labels_;
diff --git a/third_party/blink/renderer/platform/text/segmented_string.h b/third_party/blink/renderer/platform/text/segmented_string.h index 1d67f30..e179f3a4 100644 --- a/third_party/blink/renderer/platform/text/segmented_string.h +++ b/third_party/blink/renderer/platform/text/segmented_string.h
@@ -21,6 +21,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_TEXT_SEGMENTED_STRING_H_ #include "base/check_op.h" +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" #include "third_party/blink/renderer/platform/wtf/deque.h" @@ -354,7 +355,8 @@ bool closed_; bool empty_; UChar current_char_; - const SegmentedString* next_segmented_string_ = nullptr; + raw_ptr<const SegmentedString, ExperimentalRenderer> next_segmented_string_ = + nullptr; }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/text/text_run.cc b/third_party/blink/renderer/platform/text/text_run.cc index 88f8b190..33bb2aa6 100644 --- a/third_party/blink/renderer/platform/text/text_run.cc +++ b/third_party/blink/renderer/platform/text/text_run.cc
@@ -25,6 +25,7 @@ #include "third_party/blink/renderer/platform/text/text_run.h" +#include "base/memory/raw_ptr.h" #include "third_party/blink/renderer/platform/text/bidi_paragraph.h" #include "third_party/blink/renderer/platform/text/character.h" #include "third_party/blink/renderer/platform/wtf/size_assertions.h" @@ -34,7 +35,7 @@ struct SameSizeAsTextRun { DISALLOW_NEW(); - const void* pointer; + raw_ptr<const void, ExperimentalRenderer> pointer; int integer; uint32_t bitfields : 4; };
diff --git a/third_party/blink/renderer/platform/timer.h b/third_party/blink/renderer/platform/timer.h index d005db29..05c7a99e 100644 --- a/third_party/blink/renderer/platform/timer.h +++ b/third_party/blink/renderer/platform/timer.h
@@ -29,6 +29,7 @@ #include "base/check_op.h" #include "base/dcheck_is_on.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/delay_policy.h" #include "base/task/delayed_task_handle.h" @@ -120,7 +121,7 @@ base::Location location_; scoped_refptr<base::SingleThreadTaskRunner> web_task_runner_; // The tick clock used to calculate the run time for scheduled tasks. - const base::TickClock* tick_clock_ = nullptr; + raw_ptr<const base::TickClock, ExperimentalRenderer> tick_clock_ = nullptr; base::subtle::DelayPolicy delay_policy_; #if DCHECK_IS_ON()
diff --git a/third_party/blink/renderer/platform/timer_test.cc b/third_party/blink/renderer/platform/timer_test.cc index 7fcdc89e..687cdc8 100644 --- a/third_party/blink/renderer/platform/timer_test.cc +++ b/third_party/blink/renderer/platform/timer_test.cc
@@ -7,6 +7,7 @@ #include <memory> #include <queue> +#include "base/memory/raw_ptr.h" #include "base/task/common/lazy_now.h" #include "base/task/single_thread_task_runner.h" #include "base/test/task_environment.h" @@ -679,7 +680,9 @@ private: scoped_refptr<base::SingleThreadTaskRunner> task_runner_; - Vector<scoped_refptr<base::SingleThreadTaskRunner>>* run_order_; + raw_ptr<Vector<scoped_refptr<base::SingleThreadTaskRunner>>, + ExperimentalRenderer> + run_order_; }; } // namespace
diff --git a/third_party/blink/renderer/platform/video_capture/gpu_memory_buffer_test_support.h b/third_party/blink/renderer/platform/video_capture/gpu_memory_buffer_test_support.h index 93aea61..970932a 100644 --- a/third_party/blink/renderer/platform/video_capture/gpu_memory_buffer_test_support.h +++ b/third_party/blink/renderer/platform/video_capture/gpu_memory_buffer_test_support.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "gpu/ipc/common/gpu_memory_buffer_support.h" #include "third_party/blink/renderer/platform/testing/io_task_runner_testing_platform_support.h" @@ -50,7 +51,7 @@ std::unique_ptr<viz::TestSharedImageInterface> sii_; std::unique_ptr<media::MockGpuVideoAcceleratorFactories> gpu_factories_; base::Thread media_thread_; - gpu::Capabilities* capabilities_ = nullptr; + raw_ptr<gpu::Capabilities, ExperimentalRenderer> capabilities_ = nullptr; }; } // namespace blink
diff --git a/third_party/blink/renderer/platform/video_capture/video_capture_impl.cc b/third_party/blink/renderer/platform/video_capture/video_capture_impl.cc index 67e53578..59acdf68 100644 --- a/third_party/blink/renderer/platform/video_capture/video_capture_impl.cc +++ b/third_party/blink/renderer/platform/video_capture/video_capture_impl.cc
@@ -22,6 +22,7 @@ #include "base/functional/callback.h" #include "base/functional/callback_helpers.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/histogram_functions.h" #include "base/task/bind_post_task.h" #include "base/task/sequenced_task_runner.h" @@ -254,7 +255,8 @@ // The following is for |buffer_type == GPU_MEMORY_BUFFER_HANDLE|. // Uses to create SharedImage from |gpu_memory_buffer_|. - media::GpuVideoAcceleratorFactories* gpu_factories_ = nullptr; + raw_ptr<media::GpuVideoAcceleratorFactories, ExperimentalRenderer> + gpu_factories_ = nullptr; // The task runner that |gpu_factories_| runs on. const scoped_refptr<base::SequencedTaskRunner> media_task_runner_; @@ -290,8 +292,8 @@ bool VideoCaptureImpl::VideoFrameBufferPreparer::Initialize() { // Prior to initializing, |frame_| and |gpu_memory_buffer_| are null. DCHECK(!frame_ && !gpu_memory_buffer_); - const auto& iter = video_capture_impl_.client_buffers_.find(buffer_id_); - DCHECK(iter != video_capture_impl_.client_buffers_.end()); + const auto& iter = video_capture_impl_->client_buffers_.find(buffer_id_); + DCHECK(iter != video_capture_impl_->client_buffers_.end()); buffer_context_ = iter->second; switch (buffer_context_->buffer_type()) { case VideoFrameBufferHandleType::kUnsafeShmemRegion: @@ -361,8 +363,8 @@ // On macOS, an IOSurfaces passed as a GpuMemoryBufferHandle can be // used by both hardware and software paths. // https://crbug.com/1125879 - if (!video_capture_impl_.gpu_factories_ || - !video_capture_impl_.media_task_runner_) { + if (!video_capture_impl_->gpu_factories_ || + !video_capture_impl_->media_task_runner_) { frame_ = media::VideoFrame::WrapUnacceleratedIOSurface( buffer_context_->TakeGpuMemoryBufferHandle(), gfx::Rect(frame_info_->visible_rect), frame_info_->timestamp); @@ -380,10 +382,10 @@ // On Windows it might happen that the Renderer process loses GPU // connection, while the capturer process will continue to produce // GPU backed frames. - if (!video_capture_impl_.gpu_factories_ || - !video_capture_impl_.media_task_runner_ || - video_capture_impl_.gmb_not_supported_) { - video_capture_impl_.RequirePremappedFrames(); + if (!video_capture_impl_->gpu_factories_ || + !video_capture_impl_->media_task_runner_ || + video_capture_impl_->gmb_not_supported_) { + video_capture_impl_->RequirePremappedFrames(); if (!frame_info_->is_premapped || !buffer_context_->data()) { // If the frame isn't premapped, can't do anything here. return false; @@ -402,8 +404,8 @@ break; } #endif - CHECK(video_capture_impl_.gpu_factories_); - CHECK(video_capture_impl_.media_task_runner_); + CHECK(video_capture_impl_->gpu_factories_); + CHECK(video_capture_impl_->media_task_runner_); // Create GpuMemoryBuffer from handle. if (!buffer_context_->GetGpuMemoryBuffer()) { gfx::BufferFormat gfx_format; @@ -419,14 +421,14 @@ // buffer pool from the video capture service process, so we don't need // to destroy the GpuMemoryBuffer here. auto gmb = - video_capture_impl_.gpu_memory_buffer_support_ + video_capture_impl_->gpu_memory_buffer_support_ ->CreateGpuMemoryBufferImplFromHandle( buffer_context_->TakeGpuMemoryBufferHandle(), gfx::Size(frame_info_->coded_size), gfx_format, gfx::BufferUsage::SCANOUT_VEA_CPU_READ, base::DoNothing(), - video_capture_impl_.gpu_factories_ + video_capture_impl_->gpu_factories_ ->GpuMemoryBufferManager(), - video_capture_impl_.pool_); + video_capture_impl_->pool_); // Keep one GpuMemoryBuffer for current GpuMemoryHandle alive, // so that any associated structures are kept alive while this buffer id @@ -457,14 +459,14 @@ // Clone the GpuMemoryBuffer and wrap it in a VideoFrame. gpu_memory_buffer_ = - video_capture_impl_.gpu_memory_buffer_support_ + video_capture_impl_->gpu_memory_buffer_support_ ->CreateGpuMemoryBufferImplFromHandle( std::move(buffer_handle), buffer_context_->GetGpuMemoryBuffer()->GetSize(), buffer_context_->GetGpuMemoryBuffer()->GetFormat(), gfx::BufferUsage::SCANOUT_VEA_CPU_READ, base::DoNothing(), - video_capture_impl_.gpu_factories_->GpuMemoryBufferManager(), - video_capture_impl_.pool_, + video_capture_impl_->gpu_factories_->GpuMemoryBufferManager(), + video_capture_impl_->pool_, base::span<uint8_t>(premapped_data, buffer_context_->data_size())); if (!gpu_memory_buffer_) { @@ -506,8 +508,8 @@ const gpu::Capabilities* context_capabilites = gpu_factories->ContextCapabilities(); if (!context_capabilites || !context_capabilites->shared_image_d3d) { - video_capture_impl_.RequirePremappedFrames(); - video_capture_impl_.gmb_not_supported_ = true; + video_capture_impl_->RequirePremappedFrames(); + video_capture_impl_->gmb_not_supported_ = true; return false; } #endif @@ -678,7 +680,7 @@ base::BindOnce(&VideoCaptureImpl::DidFinishConsumingFrame, base::BindPostTaskToCurrentDefault(base::BindOnce( &VideoCaptureImpl::OnAllClientsFinishedConsumingFrame, - video_capture_impl_.weak_factory_.GetWeakPtr(), + video_capture_impl_->weak_factory_.GetWeakPtr(), buffer_id_, buffer_context_)))); if (frame_info_->color_space.IsValid()) { frame_->set_color_space(frame_info_->color_space);
diff --git a/third_party/blink/renderer/platform/video_capture/video_capture_impl.h b/third_party/blink/renderer/platform/video_capture/video_capture_impl.h index fa3f796..7a5ef713 100644 --- a/third_party/blink/renderer/platform/video_capture/video_capture_impl.h +++ b/third_party/blink/renderer/platform/video_capture/video_capture_impl.h
@@ -10,6 +10,8 @@ #include "base/feature_list.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" +#include "base/memory/raw_ref.h" #include "base/memory/scoped_refptr.h" #include "base/memory/unsafe_shared_memory_pool.h" #include "base/memory/weak_ptr.h" @@ -173,7 +175,7 @@ private: // Set by constructor. - VideoCaptureImpl& video_capture_impl_; + const raw_ref<VideoCaptureImpl, ExperimentalRenderer> video_capture_impl_; int32_t buffer_id_; media::mojom::blink::VideoFrameInfoPtr frame_info_; // Set by Initialize(). @@ -268,7 +270,8 @@ mojo::PendingRemote<media::mojom::blink::VideoCaptureHost> pending_video_capture_host_; mojo::Remote<media::mojom::blink::VideoCaptureHost> video_capture_host_; - media::mojom::blink::VideoCaptureHost* video_capture_host_for_testing_; + raw_ptr<media::mojom::blink::VideoCaptureHost, ExperimentalRenderer> + video_capture_host_for_testing_; mojo::Receiver<media::mojom::blink::VideoCaptureObserver> observer_receiver_{ this}; @@ -293,7 +296,8 @@ int num_first_frame_logs_ = 0; // Methods of |gpu_factories_| need to run on |media_task_runner_|. - media::GpuVideoAcceleratorFactories* gpu_factories_ = nullptr; + raw_ptr<media::GpuVideoAcceleratorFactories, ExperimentalRenderer> + gpu_factories_ = nullptr; scoped_refptr<base::SequencedTaskRunner> media_task_runner_; scoped_refptr<base::SequencedTaskRunner> main_task_runner_; bool gmb_not_supported_ = false;
diff --git a/third_party/blink/renderer/platform/weborigin/kurl.cc b/third_party/blink/renderer/platform/weborigin/kurl.cc index affdea3..a7c840a 100644 --- a/third_party/blink/renderer/platform/weborigin/kurl.cc +++ b/third_party/blink/renderer/platform/weborigin/kurl.cc
@@ -30,6 +30,7 @@ #include <algorithm> #include "base/feature_list.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/histogram_functions.h" #include "base/numerics/checked_math.h" #include "base/numerics/safe_conversions.h" @@ -115,7 +116,7 @@ } private: - const WTF::TextEncoding* encoding_; + raw_ptr<const WTF::TextEncoding, ExperimentalRenderer> encoding_; }; } // namespace
diff --git a/third_party/blink/renderer/platform/webrtc/webrtc_video_frame_adapter.cc b/third_party/blink/renderer/platform/webrtc/webrtc_video_frame_adapter.cc index b56e2b8f..02ed2105 100644 --- a/third_party/blink/renderer/platform/webrtc/webrtc_video_frame_adapter.cc +++ b/third_party/blink/renderer/platform/webrtc/webrtc_video_frame_adapter.cc
@@ -9,6 +9,7 @@ #include "base/containers/contains.h" #include "base/dcheck_is_on.h" +#include "base/memory/raw_ptr.h" #include "base/synchronization/waitable_event.h" #include "base/threading/thread_restrictions.h" #include "cc/trees/raster_context_provider_wrapper.h" @@ -122,7 +123,8 @@ return manager; } - media::GpuVideoAcceleratorFactories* gpu_factories_; + raw_ptr<media::GpuVideoAcceleratorFactories, ExperimentalRenderer> + gpu_factories_; scoped_refptr<viz::RasterContextProvider> raster_context_provider_; };
diff --git a/third_party/blink/renderer/platform/webrtc/webrtc_video_frame_adapter.h b/third_party/blink/renderer/platform/webrtc/webrtc_video_frame_adapter.h index 5e6843b9..bcad769 100644 --- a/third_party/blink/renderer/platform/webrtc/webrtc_video_frame_adapter.h +++ b/third_party/blink/renderer/platform/webrtc/webrtc_video_frame_adapter.h
@@ -7,6 +7,7 @@ #include "base/feature_list.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/synchronization/lock.h" #include "base/time/default_tick_clock.h" @@ -62,7 +63,7 @@ }; base::Lock buffer_lock_; Vector<BufferEntry> free_buffers_ GUARDED_BY(buffer_lock_); - const base::TickClock* tick_clock_; + raw_ptr<const base::TickClock, ExperimentalRenderer> tick_clock_; }; class PLATFORM_EXPORT SharedResources @@ -126,7 +127,8 @@ scoped_refptr<viz::RasterContextProvider> raster_context_provider_ GUARDED_BY(context_provider_lock_); - media::GpuVideoAcceleratorFactories* gpu_factories_; + raw_ptr<media::GpuVideoAcceleratorFactories, ExperimentalRenderer> + gpu_factories_; base::Lock feedback_lock_;
diff --git a/third_party/blink/renderer/platform/widget/compositing/android_webview/synchronous_layer_tree_frame_sink.cc b/third_party/blink/renderer/platform/widget/compositing/android_webview/synchronous_layer_tree_frame_sink.cc index 050b7353..8e07aa8 100644 --- a/third_party/blink/renderer/platform/widget/compositing/android_webview/synchronous_layer_tree_frame_sink.cc +++ b/third_party/blink/renderer/platform/widget/compositing/android_webview/synchronous_layer_tree_frame_sink.cc
@@ -11,6 +11,7 @@ #include "base/command_line.h" #include "base/functional/bind.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "base/task/single_thread_task_runner.h" #include "cc/trees/layer_tree_frame_sink_client.h" @@ -64,7 +65,7 @@ void EndPaint() override {} private: - SkCanvas** canvas_; + raw_ptr<SkCanvas*, ExperimentalRenderer> canvas_; }; // This is used with resourceless software draws.
diff --git a/third_party/blink/renderer/platform/widget/compositing/android_webview/synchronous_layer_tree_frame_sink.h b/third_party/blink/renderer/platform/widget/compositing/android_webview/synchronous_layer_tree_frame_sink.h index 561e5d6..4dbd87b 100644 --- a/third_party/blink/renderer/platform/widget/compositing/android_webview/synchronous_layer_tree_frame_sink.h +++ b/third_party/blink/renderer/platform/widget/compositing/android_webview/synchronous_layer_tree_frame_sink.h
@@ -12,6 +12,7 @@ #include "base/cancelable_callback.h" #include "base/compiler_specific.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/read_only_shared_memory_region.h" #include "base/memory/scoped_refptr.h" #include "base/task/single_thread_task_runner.h" @@ -157,10 +158,12 @@ void DeliverMessages(); const uint32_t layer_tree_frame_sink_id_; - SynchronousCompositorRegistry* const registry_; // Not owned. + const raw_ptr<SynchronousCompositorRegistry, ExperimentalRenderer> + registry_; // Not owned. // Not owned. - SynchronousLayerTreeFrameSinkClient* sync_client_ = nullptr; + raw_ptr<SynchronousLayerTreeFrameSinkClient, ExperimentalRenderer> + sync_client_ = nullptr; // Used to allocate bitmaps in the software Display. // TODO(crbug.com/692814): The Display never sends its resources out of @@ -225,7 +228,8 @@ // Uses frame_sink_manager_. std::unique_ptr<viz::Display> display_; // Owned by |display_|. - SoftwareOutputSurface* software_output_surface_ = nullptr; + raw_ptr<SoftwareOutputSurface, ExperimentalRenderer> + software_output_surface_ = nullptr; std::unique_ptr<viz::BeginFrameSource> synthetic_begin_frame_source_; std::unique_ptr<viz::ExternalBeginFrameSource> external_begin_frame_source_;
diff --git a/third_party/blink/renderer/platform/widget/compositing/layer_tree_view.h b/third_party/blink/renderer/platform/widget/compositing/layer_tree_view.h index fdced51..0b698ed 100644 --- a/third_party/blink/renderer/platform/widget/compositing/layer_tree_view.h +++ b/third_party/blink/renderer/platform/widget/compositing/layer_tree_view.h
@@ -9,6 +9,7 @@ #include "base/containers/circular_deque.h" #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" @@ -159,7 +160,7 @@ // class should do nothing in calls from the LayerTreeHost, and just wait to // be destroyed. It is not expected to be used at all after Disconnect() // outside of handling/dropping LayerTreeHost client calls. - LayerTreeViewDelegate* delegate_; + raw_ptr<LayerTreeViewDelegate, ExperimentalRenderer> delegate_; std::unique_ptr<cc::LayerTreeHost> layer_tree_host_; // This class should do nothing and access no pointers once this value becomes
diff --git a/third_party/blink/renderer/platform/widget/compositing/layer_tree_view_unittest.cc b/third_party/blink/renderer/platform/widget/compositing/layer_tree_view_unittest.cc index b9ab515..67af4ef 100644 --- a/third_party/blink/renderer/platform/widget/compositing/layer_tree_view_unittest.cc +++ b/third_party/blink/renderer/platform/widget/compositing/layer_tree_view_unittest.cc
@@ -8,6 +8,7 @@ #include "base/functional/bind.h" #include "base/location.h" +#include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/task/single_thread_task_runner.h" #include "base/test/bind.h" @@ -198,8 +199,8 @@ void EndTest() { run_loop_->Quit(); } private: - FakeLayerTreeViewDelegate* delegate_; - base::RunLoop* run_loop_ = nullptr; + raw_ptr<FakeLayerTreeViewDelegate, ExperimentalRenderer> delegate_; + raw_ptr<base::RunLoop, ExperimentalRenderer> run_loop_ = nullptr; int expected_successes_ = 0; int expected_requests_ = 0; FailureMode failure_mode_ = kNoFailure; @@ -313,7 +314,7 @@ private: int num_requests_sent_ = 0; - base::RunLoop* run_loop_; + raw_ptr<base::RunLoop, ExperimentalRenderer> run_loop_; }; TEST(LayerTreeViewTest, VisibilityTest) {
diff --git a/third_party/blink/renderer/platform/widget/compositing/widget_compositor_unittest.cc b/third_party/blink/renderer/platform/widget/compositing/widget_compositor_unittest.cc index eebcca3..2ef43d1 100644 --- a/third_party/blink/renderer/platform/widget/compositing/widget_compositor_unittest.cc +++ b/third_party/blink/renderer/platform/widget/compositing/widget_compositor_unittest.cc
@@ -6,6 +6,7 @@ #include <tuple> +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/test/task_environment.h" #include "cc/test/layer_tree_test.h" @@ -69,7 +70,7 @@ cc::LayerTreeHost* LayerTreeHost() const override { return layer_tree_host_; } - cc::LayerTreeHost* layer_tree_host_; + raw_ptr<cc::LayerTreeHost, ExperimentalRenderer> layer_tree_host_; }; class WidgetCompositorTest : public cc::LayerTreeTest {
diff --git a/third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller.h b/third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller.h index e6cb4b5..cb8e6b1 100644 --- a/third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller.h +++ b/third_party/blink/renderer/platform/widget/input/elastic_overscroll_controller.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_WIDGET_INPUT_ELASTIC_OVERSCROLL_CONTROLLER_H_ #include "base/gtest_prod_util.h" +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "cc/input/overscroll_behavior.h" #include "cc/input/scroll_elasticity_helper.h" @@ -161,7 +162,7 @@ bool CanScrollVertically() const; base::TimeTicks momentum_animation_start_time_; - cc::ScrollElasticityHelper* helper_; + raw_ptr<cc::ScrollElasticityHelper, ExperimentalRenderer> helper_; State state_; // If there is no overscroll, require a minimum overscroll delta before
diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_proxy.h b/third_party/blink/renderer/platform/widget/input/input_handler_proxy.h index 8fd4989..3a3b9ca 100644 --- a/third_party/blink/renderer/platform/widget/input/input_handler_proxy.h +++ b/third_party/blink/renderer/platform/widget/input/input_handler_proxy.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "cc/input/browser_controls_state.h" #include "cc/input/input_handler.h" @@ -333,14 +334,15 @@ bool HasQueuedEventsReadyForDispatch(bool frame_aligned); - InputHandlerProxyClient* client_; + raw_ptr<InputHandlerProxyClient, ExperimentalRenderer> client_; // The input handler object is owned by the compositor delegate. The input // handler must call WillShutdown() on this class before it is deleted at // which point this pointer will be cleared. - cc::InputHandler* input_handler_; + raw_ptr<cc::InputHandler, ExperimentalRenderer> input_handler_; - SynchronousInputHandler* synchronous_input_handler_; + raw_ptr<SynchronousInputHandler, ExperimentalRenderer> + synchronous_input_handler_; // This should be true when a pinch is in progress. The sequence of events is // as follows: GSB GPB GSU GPU ... GPE GSE. @@ -397,7 +399,7 @@ // latency component should be added for injected GestureScrollUpdates. bool last_injected_gesture_was_begin_; - const base::TickClock* tick_clock_; + raw_ptr<const base::TickClock, ExperimentalRenderer> tick_clock_; std::unique_ptr<cc::SnapFlingController> snap_fling_controller_;
diff --git a/third_party/blink/renderer/platform/widget/input/main_thread_event_queue.h b/third_party/blink/renderer/platform/widget/input/main_thread_event_queue.h index 2155576..cfcdece 100644 --- a/third_party/blink/renderer/platform/widget/input/main_thread_event_queue.h +++ b/third_party/blink/renderer/platform/widget/input/main_thread_event_queue.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/feature_list.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" @@ -174,7 +175,7 @@ friend class QueuedWebInputEvent; friend class MainThreadEventQueueTest; friend class MainThreadEventQueueInitializationTest; - MainThreadEventQueueClient* client_; + raw_ptr<MainThreadEventQueueClient, ExperimentalRenderer> client_; bool last_touch_start_forced_nonblocking_due_to_fling_; bool needs_low_latency_; bool needs_unbuffered_input_for_debugger_;
diff --git a/third_party/blink/renderer/platform/widget/input/synchronous_compositor_proxy.h b/third_party/blink/renderer/platform/widget/input/synchronous_compositor_proxy.h index e65ba8b..592e337 100644 --- a/third_party/blink/renderer/platform/widget/input/synchronous_compositor_proxy.h +++ b/third_party/blink/renderer/platform/widget/input/synchronous_compositor_proxy.h
@@ -9,6 +9,7 @@ #include <stdint.h> #include "base/functional/callback.h" +#include "base/memory/raw_ptr.h" #include "base/memory/writable_shared_memory_region.h" #include "components/viz/common/frame_timing_details_map.h" #include "mojo/public/cpp/bindings/associated_receiver.h" @@ -112,7 +113,8 @@ DemandDrawHwCallback hardware_draw_reply_; DemandDrawSwCallback software_draw_reply_; ZoomByCallback zoom_by_reply_; - SynchronousLayerTreeFrameSink* layer_tree_frame_sink_ = nullptr; + raw_ptr<SynchronousLayerTreeFrameSink, ExperimentalRenderer> + layer_tree_frame_sink_ = nullptr; bool begin_frame_paused_ = false; private: @@ -122,7 +124,7 @@ struct SharedMemoryWithSize; - InputHandlerProxy* const input_handler_proxy_; + const raw_ptr<InputHandlerProxy, ExperimentalRenderer> input_handler_proxy_; mojo::Remote<mojom::blink::SynchronousCompositorControlHost> control_host_; mojo::AssociatedRemote<mojom::blink::SynchronousCompositorHost> host_; mojo::AssociatedReceiver<mojom::blink::SynchronousCompositor> receiver_{this};
diff --git a/third_party/blink/renderer/platform/widget/input/widget_base_input_handler.cc b/third_party/blink/renderer/platform/widget/input/widget_base_input_handler.cc index 19c50a4..12961af 100644 --- a/third_party/blink/renderer/platform/widget/input/widget_base_input_handler.cc +++ b/third_party/blink/renderer/platform/widget/input/widget_base_input_handler.cc
@@ -8,6 +8,7 @@ #include <stdint.h> #include <utility> +#include "base/memory/raw_ptr.h" #include "base/metrics/histogram_macros.h" #include "base/time/time.h" #include "build/build_config.h" @@ -261,7 +262,7 @@ // Whether the event we are handling is a touch start or move. bool touch_start_or_move_; - HandlingState* previous_state_; + raw_ptr<HandlingState, ExperimentalRenderer> previous_state_; bool previous_was_handling_input_; base::WeakPtr<WidgetBaseInputHandler> input_handler_; };
diff --git a/third_party/blink/renderer/platform/widget/input/widget_base_input_handler.h b/third_party/blink/renderer/platform/widget/input/widget_base_input_handler.h index ec9b0d2..2a2bc08 100644 --- a/third_party/blink/renderer/platform/widget/input/widget_base_input_handler.h +++ b/third_party/blink/renderer/platform/widget/input/widget_base_input_handler.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/public/common/input/web_coalesced_input_event.h" @@ -114,14 +115,14 @@ const ui::LatencyInfo& original_latency_info, const cc::EventMetrics* original_metrics); - WidgetBase* widget_; + raw_ptr<WidgetBase, ExperimentalRenderer> widget_; // Are we currently handling an input event? bool handling_input_event_ = false; // Current state from HandleInputEvent. This variable is stack allocated // and is not owned. - HandlingState* handling_input_state_ = nullptr; + raw_ptr<HandlingState, ExperimentalRenderer> handling_input_state_ = nullptr; // We store the current cursor object so we can avoid spamming SetCursor // messages.
diff --git a/third_party/blink/renderer/platform/widget/input/widget_input_handler_manager.cc b/third_party/blink/renderer/platform/widget/input/widget_input_handler_manager.cc index 8a0cb7f1..db364a3 100644 --- a/third_party/blink/renderer/platform/widget/input/widget_input_handler_manager.cc +++ b/third_party/blink/renderer/platform/widget/input/widget_input_handler_manager.cc
@@ -10,6 +10,7 @@ #include "base/feature_list.h" #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/histogram_macros.h" #include "base/notreached.h" #include "base/task/single_thread_task_runner.h" @@ -160,7 +161,7 @@ scoped_refptr<base::SingleThreadTaskRunner> compositor_thread_default_task_runner_; std::unique_ptr<SynchronousCompositorProxy> proxy_; - SynchronousLayerTreeFrameSink* sink_ = nullptr; + raw_ptr<SynchronousLayerTreeFrameSink, ExperimentalRenderer> sink_ = nullptr; }; #endif
diff --git a/third_party/blink/renderer/platform/widget/widget_base.h b/third_party/blink/renderer/platform/widget/widget_base.h index 792afb25..690f06e 100644 --- a/third_party/blink/renderer/platform/widget/widget_base.h +++ b/third_party/blink/renderer/platform/widget/widget_base.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_WIDGET_WIDGET_BASE_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_WIDGET_WIDGET_BASE_H_ +#include "base/memory/raw_ptr.h" #include "base/task/single_thread_task_runner.h" #include "base/time/time.h" #include "cc/animation/animation_timeline.h" @@ -444,7 +445,7 @@ // The client which handles behaviour specific to the type of widget. // It's the owner of the widget and will outlive this class. - WidgetBaseClient* const client_; + const raw_ptr<WidgetBaseClient, ExperimentalRenderer> client_; mojo::AssociatedRemote<mojom::blink::WidgetHost> widget_host_; mojo::AssociatedReceiver<mojom::blink::Widget> receiver_; @@ -521,7 +522,7 @@ // It is possible that one ImeEventGuard is nested inside another // ImeEventGuard. We keep track of the outermost one, and update it as needed. - ImeEventGuard* ime_event_guard_ = nullptr; + raw_ptr<ImeEventGuard, ExperimentalRenderer> ime_event_guard_ = nullptr; // The screen rects of the view and the window that contains it. These do not // include any scaling by device scale factor, so are logical pixels not
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index e919796..f534de3b 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -1277,8 +1277,6 @@ crbug.com/1219058 external/wpt/css/css-text/letter-spacing/letter-spacing-bidi-001.html [ Failure ] crbug.com/1219058 external/wpt/css/css-text/letter-spacing/letter-spacing-end-of-line-001.html [ Failure ] crbug.com/1098801 external/wpt/css/css-text/overflow-wrap/overflow-wrap-normal-keep-all-001.html [ Failure ] -crbug.com/1008029 external/wpt/css/css-text/white-space/pre-wrap-012.html [ Failure ] -crbug.com/1008029 external/wpt/css/css-text/white-space/pre-wrap-013.html [ Failure ] crbug.com/1219041 external/wpt/css/css-text/white-space/text-space-collapse-preserve-breaks-001.xht [ Failure ] crbug.com/1219041 external/wpt/css/css-text/white-space/text-space-collapse-discard-001.xht [ Failure ] crbug.com/1219041 external/wpt/css/css-text/white-space/text-space-trim-trim-inner-001.xht [ Failure ] @@ -1816,9 +1814,7 @@ crbug.com/1030452 external/wpt/css/css-text/text-transform/text-transform-upperlower-016.html [ Failure ] crbug.com/1008029 [ Mac ] external/wpt/css/css-text/white-space/pre-wrap-018.html [ Failure ] -crbug.com/1008029 external/wpt/css/css-text/white-space/pre-wrap-019.html [ Failure ] crbug.com/1008029 external/wpt/css/css-text/white-space/textarea-pre-wrap-012.html [ Failure ] -crbug.com/1008029 external/wpt/css/css-text/white-space/textarea-pre-wrap-013.html [ Failure ] # Handling of trailing other space separator crbug.com/1129834 external/wpt/css/css-text/white-space/trailing-other-space-separators-001.html [ Failure ] @@ -3032,15 +3028,6 @@ crbug.com/626703 external/wpt/css/css-color/system-color-hightlights-vs-getSelection-001.html [ Failure ] crbug.com/626703 [ Linux ] external/wpt/mediacapture-record/MediaRecorder-mimetype.html [ Timeout ] crbug.com/626703 external/wpt/svg/text/reftests/opacity.svg [ Failure ] -crbug.com/626703 external/wpt/css/css-text/white-space/pre-wrap-align-center-001.html [ Failure ] -crbug.com/626703 external/wpt/css/css-text/white-space/pre-wrap-align-center-002.html [ Failure ] -crbug.com/626703 external/wpt/css/css-text/white-space/pre-wrap-align-center-003.html [ Failure ] -crbug.com/626703 external/wpt/css/css-text/white-space/pre-wrap-align-end-001.html [ Failure ] -crbug.com/626703 external/wpt/css/css-text/white-space/pre-wrap-align-end-002.html [ Failure ] -crbug.com/626703 external/wpt/css/css-text/white-space/pre-wrap-align-end-003.html [ Failure ] -crbug.com/626703 external/wpt/css/css-text/white-space/pre-wrap-align-left-002.html [ Failure ] -crbug.com/626703 external/wpt/css/css-text/white-space/pre-wrap-align-left-003.html [ Failure ] -crbug.com/626703 external/wpt/css/css-text/white-space/pre-wrap-align-right-001.html [ Failure ] crbug.com/626703 external/wpt/css/css-box/margin-trim/flex-column-style-change-triggers-layout-block-end.html [ Failure ] crbug.com/626703 external/wpt/css/css-box/margin-trim/flex-column-style-change-triggers-layout-block-start.html [ Failure ] crbug.com/626703 external/wpt/css/css-box/margin-trim/flex-column-style-change-triggers-layout-block.html [ Failure ] @@ -3522,12 +3509,14 @@ crbug.com/1463891 external/wpt/css/css-text/text-spacing-trim/text-spacing-trim-colon-001.html?class=halt,vrl [ Failure ] crbug.com/1463891 external/wpt/css/css-text/text-spacing-trim/text-spacing-trim-dot-001.html?class=halt,htb [ Failure ] crbug.com/1463891 external/wpt/css/css-text/text-spacing-trim/text-spacing-trim-dot-001.html?class=halt,vrl [ Failure ] +crbug.com/1463891 external/wpt/css/css-text/text-spacing-trim/text-spacing-trim-space-all-001.html?class=chws [ Failure ] crbug.com/1463891 virtual/css-text-spacing-trim/external/wpt/css/css-text/text-spacing-trim/text-spacing-trim-001.html?class=halt,htb [ Pass ] crbug.com/1463891 virtual/css-text-spacing-trim/external/wpt/css/css-text/text-spacing-trim/text-spacing-trim-001.html?class=halt,vrl [ Pass ] crbug.com/1463891 virtual/css-text-spacing-trim/external/wpt/css/css-text/text-spacing-trim/text-spacing-trim-colon-001.html?class=halt,htb [ Pass ] crbug.com/1463891 virtual/css-text-spacing-trim/external/wpt/css/css-text/text-spacing-trim/text-spacing-trim-colon-001.html?class=halt,vrl [ Pass ] crbug.com/1463891 virtual/css-text-spacing-trim/external/wpt/css/css-text/text-spacing-trim/text-spacing-trim-dot-001.html?class=halt,htb [ Pass ] crbug.com/1463891 virtual/css-text-spacing-trim/external/wpt/css/css-text/text-spacing-trim/text-spacing-trim-dot-001.html?class=halt,vrl [ Pass ] +crbug.com/1463891 virtual/css-text-spacing-trim/external/wpt/css/css-text/text-spacing-trim/text-spacing-trim-space-all-001.html?class=chws [ Pass ] # Implement text-decoration correctly for vertical text crbug.com/1133806 external/wpt/css/css-text-decor/text-decoration-thickness-vertical-002.html [ Failure ] @@ -6764,3 +6753,6 @@ external/wpt/fs/FileSystemFileHandle-cross-primitive-locking.https.tentative.worker.html [ Skip Failure ] external/wpt/fs/FileSystemFileHandle-sync-access-handle-lock-modes.https.tentative.worker.html [ Skip Failure ] external/wpt/fs/FileSystemFileHandle-writable-file-stream-lock-modes.https.tentative.worker.html [ Skip Failure ] + +# Gardener 2023-10-02 +crbug.com/1481694 [ Win10.20h2 ] accessibility/selection-change-notification-on-selection-removed.html [ Failure ]
diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites index 57de3c9..aa10fb6a 100644 --- a/third_party/blink/web_tests/VirtualTestSuites +++ b/third_party/blink/web_tests/VirtualTestSuites
@@ -2341,20 +2341,6 @@ "expires": "Dec 1, 2023" }, { - "prefix": "font-palette-animation", - "platforms": ["Linux"], - "bases": [ - "wpt_internal/css/css-fonts/animations", - "wpt_internal/css/css-fonts/palette-mix-computed.tentative.html" - ], - "exclusive_tests": "ALL", - "args": [ - "--enable-blink-features=FontPaletteAnimation", - "--disable-threaded-compositing", "--disable-threaded-animation" - ], - "expires": "Dec 1, 2023" - }, - { "prefix": "soft-navigation-fp-fcp", "platforms": ["Linux"], "bases": [
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-fonts/animations/font-palette-interpolation.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-fonts/animations/font-palette-interpolation.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/css/css-fonts/animations/font-palette-interpolation.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-fonts/animations/font-palette-interpolation.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-fonts/discrete-no-interpolation.html b/third_party/blink/web_tests/external/wpt/css/css-fonts/discrete-no-interpolation.html index 28760f6..327e463a 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-fonts/discrete-no-interpolation.html +++ b/third_party/blink/web_tests/external/wpt/css/css-fonts/discrete-no-interpolation.html
@@ -27,12 +27,6 @@ }); test_no_interpolation({ - property: 'font-palette', - from: 'initial', - to: 'dark' - }); - - test_no_interpolation({ property: 'font-feature-settings', from: 'initial', to: '"smcp"'
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-fonts/palette-mix-computed.tentative.html b/third_party/blink/web_tests/external/wpt/css/css-fonts/palette-mix-computed.html similarity index 100% rename from third_party/blink/web_tests/wpt_internal/css/css-fonts/palette-mix-computed.tentative.html rename to third_party/blink/web_tests/external/wpt/css/css-fonts/palette-mix-computed.html
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/text-spacing-trim/text-spacing-trim-space-all-001-ref.html b/third_party/blink/web_tests/external/wpt/css/css-text/text-spacing-trim/text-spacing-trim-space-all-001-ref.html new file mode 100644 index 0000000..d33e3b6 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-text/text-spacing-trim/text-spacing-trim-space-all-001-ref.html
@@ -0,0 +1,20 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<style> +@font-face { + font-family: halt-font; + src: url('/fonts/noto/cjk/NotoSansCJKjp-Regular-subset-halt.otf'); +} +#container { + font-family: halt-font; + font-size: 20px; + text-spacing-trim: space-all; + width: 4em; +} +#container > div > span { + background: black; +} +</style> +<div id="container"> + <div><span>国国国国国国国国国国</span></div> +</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/text-spacing-trim/text-spacing-trim-space-all-001.html b/third_party/blink/web_tests/external/wpt/css/css-text/text-spacing-trim/text-spacing-trim-space-all-001.html new file mode 100644 index 0000000..20e59c5a0 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-text/text-spacing-trim/text-spacing-trim-space-all-001.html
@@ -0,0 +1,32 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel="help" href="https://drafts.csswg.org/css-text-4/#text-spacing-trim-property"> +<link rel="match" href="text-spacing-trim-space-all-001-ref.html"> +<meta name="variant" content="?class=halt"> +<meta name="variant" content="?class=chws"> +<script src="support/variant-class.js"></script> +<style> +@font-face { + font-family: halt-font; + src: url('/fonts/noto/cjk/NotoSansCJKjp-Regular-subset-halt.otf'); +} +@font-face { + font-family: chws-font; + src: url('/fonts/noto/cjk/NotoSansCJKjp-Regular-subset-chws.otf'); +} +#container { + font-family: halt-font; + font-size: 20px; + text-spacing-trim: space-all; + width: 4em; +} +.chws #container { + font-family: chws-font; +} +#container > div > span { + background: black; +} +</style> +<div id="container"> + <div><span>国)(国国((国(国</span></div> +</div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-012.html.ini b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-012.html.ini deleted file mode 100644 index ad5a035d..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-012.html.ini +++ /dev/null
@@ -1,2 +0,0 @@ -[pre-wrap-012.html] - expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-013.html.ini b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-013.html.ini deleted file mode 100644 index 27a4a1b..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-013.html.ini +++ /dev/null
@@ -1,2 +0,0 @@ -[pre-wrap-013.html] - expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-019.html.ini b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-019.html.ini deleted file mode 100644 index 793142e..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-019.html.ini +++ /dev/null
@@ -1,2 +0,0 @@ -[pre-wrap-019.html] - expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-center-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-center-001.html.ini deleted file mode 100644 index 89f3918..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-center-001.html.ini +++ /dev/null
@@ -1,2 +0,0 @@ -[pre-wrap-align-center-001.html] - expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-center-002.html.ini b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-center-002.html.ini deleted file mode 100644 index 2e7b544..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-center-002.html.ini +++ /dev/null
@@ -1,2 +0,0 @@ -[pre-wrap-align-center-002.html] - expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-center-003.html.ini b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-center-003.html.ini deleted file mode 100644 index 8738c2f..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-center-003.html.ini +++ /dev/null
@@ -1,2 +0,0 @@ -[pre-wrap-align-center-003.html] - expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-end-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-end-001.html.ini deleted file mode 100644 index f2f518b0..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-end-001.html.ini +++ /dev/null
@@ -1,2 +0,0 @@ -[pre-wrap-align-end-001.html] - expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-end-002.html.ini b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-end-002.html.ini deleted file mode 100644 index c2d0f7a2..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-end-002.html.ini +++ /dev/null
@@ -1,2 +0,0 @@ -[pre-wrap-align-end-002.html] - expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-end-003.html.ini b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-end-003.html.ini deleted file mode 100644 index 9a7946c..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-end-003.html.ini +++ /dev/null
@@ -1,2 +0,0 @@ -[pre-wrap-align-end-003.html] - expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-left-002.html.ini b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-left-002.html.ini deleted file mode 100644 index 7f8b0d3..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-left-002.html.ini +++ /dev/null
@@ -1,2 +0,0 @@ -[pre-wrap-align-left-002.html] - expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-left-003.html.ini b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-left-003.html.ini deleted file mode 100644 index 21903bf6..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-left-003.html.ini +++ /dev/null
@@ -1,2 +0,0 @@ -[pre-wrap-align-left-003.html] - expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-right-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-right-001.html.ini deleted file mode 100644 index 7c29a54b..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/pre-wrap-align-right-001.html.ini +++ /dev/null
@@ -1,2 +0,0 @@ -[pre-wrap-align-right-001.html] - expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/textarea-pre-wrap-013.html.ini b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/textarea-pre-wrap-013.html.ini deleted file mode 100644 index 1b63e23..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/textarea-pre-wrap-013.html.ini +++ /dev/null
@@ -1,2 +0,0 @@ -[textarea-pre-wrap-013.html] - expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/fetch/fetch-later/basic.tentative.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/fetch-later/basic.tentative.https.window-expected.txt index f01ae94..a9102ca 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/fetch-later/basic.tentative.https.window-expected.txt +++ b/third_party/blink/web_tests/external/wpt/fetch/fetch-later/basic.tentative.https.window-expected.txt
@@ -1,9 +1,10 @@ This is a testharness.js-based test. FAIL fetchLater() cannot be called without request. assert_throws_js: function "() => fetchLater()" threw object "ReferenceError: fetchLater is not defined" ("ReferenceError") expected instance of function "function TypeError() { [native code] }" ("TypeError") -FAIL fetchLater()'s return tells the deferred request is not yet sent. fetchLater is not defined FAIL fetchLater() throws TypeError on non-HTTPS URL. fetchLater is not defined +FAIL fetchLater() throws RangeError on negative activationTimeout. fetchLater is not defined FAIL fetchLater()'s return tells the deferred request is not yet sent. fetchLater is not defined FAIL fetchLater() throws TypeError when mutating its returned state. fetchLater is not defined FAIL fetchLater() throws AbortError when its initial abort signal is aborted. fetchLater is not defined +FAIL fetchLater() does not throw error when it is aborted before sending. fetchLater is not defined Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/fetch/fetch-later/basic.tentative.https.window.js b/third_party/blink/web_tests/external/wpt/fetch/fetch-later/basic.tentative.https.window.js index 55bdbc97..0870f1c 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/fetch-later/basic.tentative.https.window.js +++ b/third_party/blink/web_tests/external/wpt/fetch/fetch-later/basic.tentative.https.window.js
@@ -17,6 +17,12 @@ }, `fetchLater() throws TypeError on non-HTTPS URL.`); test(() => { + assert_throws_js( + RangeError, + () => fetchLater('https://www.google.com', {activationTimeout: -1})); +}, `fetchLater() throws RangeError on negative activationTimeout.`); + +test(() => { const result = fetchLater('/'); assert_false(result.activated); }, `fetchLater()'s return tells the deferred request is not yet sent.`); @@ -33,3 +39,11 @@ assert_throws_dom( 'AbortError', () => fetchLater('/', {signal: controller.signal})); }, `fetchLater() throws AbortError when its initial abort signal is aborted.`); + +test(() => { + const controller = new AbortController(); + const result = fetchLater('/', {signal: controller.signal}); + assert_false(result.activated); + controller.abort(); + assert_false(result.activated); +}, `fetchLater() does not throw error when it is aborted before sending.`);
diff --git a/third_party/blink/web_tests/external/wpt/fetch/fetch-later/send-on-deactivate.tentative.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/fetch-later/send-on-deactivate.tentative.https.window-expected.txt new file mode 100644 index 0000000..496d4fb --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/fetch/fetch-later/send-on-deactivate.tentative.https.window-expected.txt
@@ -0,0 +1,6 @@ +This is a testharness.js-based test. +PASS fetchLater() does not send on page entering BFCache. +FAIL Call fetchLater() when BFCached with activationTimeout=0 sends immediately. assert_equals: Number of sent beacons does not match expected count: expected 1 but got 0 +FAIL fetchLater() sends on navigating away a page w/o BFCache. assert_equals: Number of sent beacons does not match expected count: expected 1 but got 0 +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/fetch/fetch-later/send-on-deactivate.tentative.https.window.js b/third_party/blink/web_tests/external/wpt/fetch/fetch-later/send-on-deactivate.tentative.https.window.js index 4ea9d2e..4fbea12b 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/fetch-later/send-on-deactivate.tentative.https.window.js +++ b/third_party/blink/web_tests/external/wpt/fetch/fetch-later/send-on-deactivate.tentative.https.window.js
@@ -38,3 +38,66 @@ await expectBeacon(uuid, {count: 0}); }, `fetchLater() does not send on page entering BFCache.`); + +parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + const helper = new RemoteContextHelper(); + // Opens a window with noopener so that BFCache will work. + const rc1 = await helper.addWindow( + /*config=*/ null, /*options=*/ {features: 'noopener'}); + + // When the remote is BFCached, creates a fetchLater request w/ + // activationTimeout = 0s. It should be sent out immediately. + await rc1.executeScript(url => { + window.addEventListener('pagehide', e => { + if (e.persisted) { + fetchLater(url, {activationTimeout: 0}); + } + }); + // Add a pageshow listener to stash the BFCache event. + window.addEventListener('pageshow', e => { + window.pageshowEvent = e; + }); + }, [url]); + // Navigates away to trigger request sending. + const rc2 = await rc1.navigateToNew(); + // Navigate back. + await rc2.historyBack(); + // Verify that the page was BFCached. + assert_true(await rc1.executeScript(() => { + return window.pageshowEvent.persisted; + })); + + await expectBeacon(uuid, {count: 1}); +}, `Call fetchLater() when BFCached with activationTimeout=0 sends immediately.`); + +parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + // Sets no option to test the default behavior when a document gets discarded + // on navigated away. + const helper = new RemoteContextHelper(); + // Opens a window without BFCache. + const rc1 = await helper.addWindow(); + + // Creates a fetchLater request in remote which should only be sent on + // navigating away. + await rc1.executeScript(url => { + fetchLater(url); + // Add a pageshow listener to stash the BFCache event. + window.addEventListener('pageshow', e => { + window.pageshowEvent = e; + }); + }, [url]); + // Navigates away to trigger request sending. + const rc2 = await rc1.navigateToNew(); + // Navigate back. + await rc2.historyBack(); + // Verify that the page was NOT BFCached. + assert_equals(undefined, await rc1.executeScript(() => { + return window.pageshowEvent; + })); + + await expectBeacon(uuid, {count: 1}); +}, `fetchLater() sends on navigating away a page w/o BFCache.`);
diff --git a/third_party/blink/web_tests/external/wpt/fetch/fetch-later/send-on-discard.tentative.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/fetch-later/send-on-discard.tentative.https.window-expected.txt index b04f0d50..a0e5cd7 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/fetch-later/send-on-discard.tentative.https.window-expected.txt +++ b/third_party/blink/web_tests/external/wpt/fetch/fetch-later/send-on-discard.tentative.https.window-expected.txt
@@ -1,5 +1,6 @@ This is a testharness.js-based test. FAIL A discarded document sends all its fetchLater requests. assert_equals: Number of sent beacons does not match expected count: expected 40 but got 0 +FAIL A discarded document sends all its fetchLater requests, no matter how much their timeout remain. assert_equals: Number of sent beacons does not match expected count: expected 40 but got 0 FAIL A discarded document does not send an already aborted fetchLater request. assert_equals: Number of sent beacons does not match expected count: expected 1 but got 0 Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/fetch/fetch-later/send-on-discard.tentative.https.window.js b/third_party/blink/web_tests/external/wpt/fetch/fetch-later/send-on-discard.tentative.https.window.js index 4fde4e4c..8a39458 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/fetch-later/send-on-discard.tentative.https.window.js +++ b/third_party/blink/web_tests/external/wpt/fetch/fetch-later/send-on-discard.tentative.https.window.js
@@ -29,6 +29,27 @@ parallelPromiseTest(async t => { const uuid = token(); const url = generateSetBeaconURL(uuid); + const numPerMethod = 20; + const total = numPerMethod * 2; + + // Loads an iframe that creates `numPerMethod` GET & POST fetchLater requests. + const iframe = await loadScriptAsIframe(` + const url = "${url}"; + for (let i = 0; i < ${numPerMethod}; i++) { + fetchLater(url, {method: 'GET', activationTimeout: 10000}); // 10s + fetchLater(url, {method: 'POST', activationTimeout: 8000}); // 8s + } + `); + // Delete the iframe to trigger deferred request sending. + document.body.removeChild(iframe); + + // The iframe should have sent all requests. + await expectBeacon(uuid, {count: total}); +}, 'A discarded document sends all its fetchLater requests, no matter how much their timeout remain.'); + +parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); // Loads an iframe that creates 2 fetchLater requests. One of them is aborted. const iframe = await loadScriptAsIframe(` @@ -42,5 +63,6 @@ document.body.removeChild(iframe); // The iframe should not send the aborted request. + // TODO(crbug.com/1465781): Fix this after implementing abort function. await expectBeacon(uuid, {count: 1}); }, 'A discarded document does not send an already aborted fetchLater request.');
diff --git a/third_party/blink/web_tests/external/wpt/fetch/fetch-later/timeout.tentative.https.window-expected.txt b/third_party/blink/web_tests/external/wpt/fetch/fetch-later/timeout.tentative.https.window-expected.txt new file mode 100644 index 0000000..62e2e7d --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/fetch/fetch-later/timeout.tentative.https.window-expected.txt
@@ -0,0 +1,5 @@ +This is a testharness.js-based test. +FAIL fetchLater() sends out based on activationTimeout. assert_equals: Number of sent beacons does not match expected count: expected 1 but got 0 +FAIL fetchLater() sends out based on activationTimeout, even if document is in BFCache. assert_equals: Number of sent beacons does not match expected count: expected 1 but got 0 +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/fetch/fetch-later/timeout.tentative.https.window.js b/third_party/blink/web_tests/external/wpt/fetch/fetch-later/timeout.tentative.https.window.js new file mode 100644 index 0000000..ec47e756 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/fetch/fetch-later/timeout.tentative.https.window.js
@@ -0,0 +1,56 @@ +// META: script=/resources/testharness.js +// META: script=/resources/testharnessreport.js +// META: script=/common/dispatcher/dispatcher.js +// META: script=/common/get-host-info.sub.js +// META: script=/common/utils.js +// META: script=/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js +// META: script=/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js +// META: script=/pending-beacon/resources/pending_beacon-helper.js + +'use strict'; + +parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + + // Loads an iframe that creates a fetchLater request w/ short timeout. + const iframe = await loadScriptAsIframe(` + fetchLater("${url}", {activationTimeout: 1000}); // 1s + `); + // Deletes the iframe to trigger deferred request sending. + document.body.removeChild(iframe); + + // The iframe should have sent all requests. + await expectBeacon(uuid, {count: 1}); +}, 'fetchLater() sends out based on activationTimeout.'); + +parallelPromiseTest(async t => { + const uuid = token(); + const url = generateSetBeaconURL(uuid); + // Sets no option to test the default behavior when a document enters BFCache. + const helper = new RemoteContextHelper(); + // Opens a window with noopener so that BFCache will work. + const rc1 = await helper.addWindow( + /*config=*/ null, /*options=*/ {features: 'noopener'}); + + // Creates a fetchLater request with short timeout. It should be sent out + // even if the document is then put into BFCache. + // only be sent on page discarded (not on entering BFCache). + await rc1.executeScript(url => { + fetchLater(url, {activationTimeout: 1000}); // 1. + // Add a pageshow listener to stash the BFCache event. + window.addEventListener('pageshow', e => { + window.pageshowEvent = e; + }); + }, [url]); + // Navigates away to let page enter BFCache. + const rc2 = await rc1.navigateToNew(); + // Navigate back. + await rc2.historyBack(); + // Verify that the page was BFCached. + assert_true(await rc1.executeScript(() => { + return window.pageshowEvent.persisted; + })); + + await expectBeacon(uuid, {count: 1}); +}, 'fetchLater() sends out based on activationTimeout, even if document is in BFCache.');
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/elements/global-attributes/the-anchor-attribute-003-crash.tentative.html b/third_party/blink/web_tests/external/wpt/html/dom/elements/global-attributes/the-anchor-attribute-003-crash.tentative.html new file mode 100644 index 0000000..207275d --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/dom/elements/global-attributes/the-anchor-attribute-003-crash.tentative.html
@@ -0,0 +1,27 @@ +<!DOCTYPE html> +<title>Tests that using the `anchor` attribute with inline containing block does not crash</title> +<link rel="help" href="https://github.com/whatwg/html/pull/9144"> +<link rel="help" href="https://crbug.com/1486148"> +<link rel="author" href="mailto:xiaochengh@chromium.org"> + +<style> +.target { + position: absolute; + top: anchor(top); + left: anchor(right); +} +</style> + +<div id="anchor">foo</div> + +<span style="position: relative"> + <div anchor="anchor2" class="target">bar</div> +</span> + +<span style="position: sticky"> + <div anchor="anchor2" class="target">bar</div> +</span> + +<span style="backdrop-filter: blur(1px)"> + <div anchor="anchor2" class="target">bar</div> +</span>
diff --git a/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/image-lcp-followed-by-two-image-softnavs-lcp.tentative.html b/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/image-lcp-followed-by-two-image-softnavs-lcp.tentative.html index 25151cd..0e1b9a4 100644 --- a/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/image-lcp-followed-by-two-image-softnavs-lcp.tentative.html +++ b/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/image-lcp-followed-by-two-image-softnavs-lcp.tentative.html
@@ -31,7 +31,7 @@ const first_click_paint_promise = waitOnPaintEntriesPromise(); - click(link); + interact(link); await new Promise(resolve => { (new PerformanceObserver(resolve)).observe({ type: 'soft-navigation' @@ -54,7 +54,7 @@ const second_click_paint_promise = waitOnPaintEntriesPromise(); const preClickLcp2 = await getLcpEntries(); - click(link); + interact(link); await new Promise(resolve => { (new PerformanceObserver(() => resolve())).observe({ type: 'soft-navigation'
diff --git a/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/keydown.tentative.html b/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/keydown.tentative.html new file mode 100644 index 0000000..fac86d7 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/keydown.tentative.html
@@ -0,0 +1,30 @@ +<!DOCTYPE HTML> +<html> +<head> +<meta charset="utf-8"> +<title>Detect hashchange event.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="resources/soft-navigation-helper.js"></script> +</head> +<!-- Not including a body element to ensure the keydown heuristic works on + malformed HTML --> + <main id=main> + <div> + First LCP! + </div> + </main> + <script> + testSoftNavigation({ + addContent: () => { + addTextToDivOnMain(); + }, + link: document.body, + interactionType: "keydown", + eventType: "keydown", + test: "Keydown on body triggers SoftNavigationHeuristics"}); + </script> +</html> +
diff --git a/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/navigate-child.html b/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/navigate-child.html index 63a8adb2..e3c17e2 100644 --- a/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/navigate-child.html +++ b/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/navigate-child.html
@@ -20,7 +20,7 @@ await new Promise(r => t.step_timeout(r, 10)); } const link = document.getElementById("link"); - click(link); + interact(link); while (!child.location.href.includes("2")) { await new Promise(r => t.step_timeout(r, 10)); }
diff --git a/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/resources/soft-navigation-helper.js b/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/resources/soft-navigation-helper.js index d119e02..37097b2 100644 --- a/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/resources/soft-navigation-helper.js +++ b/third_party/blink/web_tests/external/wpt/soft-navigation-heuristics/resources/soft-navigation-helper.js
@@ -1,5 +1,5 @@ var counter = 0; -var clicked; +var interacted; var timestamps = [] const MAX_CLICKS = 50; // Entries for one hard navigation + 50 soft navigations. @@ -20,6 +20,7 @@ const testName = options.testName; const pushUrl = readValue(options.pushUrl, true); const eventType = readValue(options.eventType, "click"); + const interactionType = readValue(options.interactionType, 'click'); const expectLCP = options.validate != 'no-lcp'; const eventPrepWork = options.eventPrepWork; promise_test(async t => { @@ -30,8 +31,8 @@ const firstClick = (i === 0); let paint_entries_promise = waitOnPaintEntriesPromise(expectLCP && firstClick); - clicked = false; - click(link); + interacted = false; + interact(link, interactionType); await new Promise(resolve => { (new PerformanceObserver(() => resolve())).observe({ @@ -62,7 +63,7 @@ await waitInitialLCP(); const preClickLcp = await getLcpEntries(); let paint_entries_promise = waitOnPaintEntriesPromise(); - click(link); + interact(link); await new Promise(resolve => { (new PerformanceObserver(() => resolve())).observe({ type: 'soft-navigation' @@ -81,7 +82,7 @@ promise_test(async t => { const preClickLcp = await getLcpEntries(); options.eventTarget.addEventListener(options.eventName, options.eventHandler); - click(options.link); + interact(options.link); await new Promise((resolve, reject) => { (new PerformanceObserver(() => reject("Soft navigation should not be triggered"))).observe({ @@ -129,16 +130,21 @@ } }; -const click = link => { - if (test_driver) { - test_driver.click(link); - timestamps[counter] = {"syncPostClick": performance.now()}; - } -} +const interact = + (link, interactionType = 'click') => { + if (test_driver) { + if (interactionType == 'click') { + test_driver.click(link); + } else { + test_driver.send_keys(link, 'j'); + } + timestamps[counter] = {"syncPostInteraction": performance.now()}; + } + } const setEvent = (t, button, pushState, addContent, pushUrl, eventType, prepWork) => { - const eventObject = (eventType == "click") ? button : window; - + const eventObject = + (eventType == 'click' || eventType == 'keydown') ? button : window; eventObject.addEventListener(eventType, async e => { if (prepWork &&!prepWork(t)) { return; @@ -163,7 +169,7 @@ await addContent(url); ++counter; - clicked = true; + interacted = true; }); }; @@ -183,7 +189,7 @@ assert_true(entry.name.includes(pushUrl ? URL : document.location.href), "The soft navigation name is properly set"); const entryTimestamp = entry.startTime; - assert_less_than_equal(timestamps[i]["syncPostClick"], entryTimestamp); + assert_less_than_equal(timestamps[i]["syncPostInteraction"], entryTimestamp); assert_greater_than_equal( timestamps[i]['eventStart'], entryTimestamp, 'Event start timestamp matches');
diff --git a/third_party/blink/web_tests/fast/css/text-align-pre-wrap-trailing-spaces-multi-lines-expected.html b/third_party/blink/web_tests/fast/css/text-align-pre-wrap-trailing-spaces-multi-lines-expected.html index f28a2e6..48b5d9e 100644 --- a/third_party/blink/web_tests/fast/css/text-align-pre-wrap-trailing-spaces-multi-lines-expected.html +++ b/third_party/blink/web_tests/fast/css/text-align-pre-wrap-trailing-spaces-multi-lines-expected.html
@@ -8,21 +8,21 @@ font-family: Ahem; font-size: 20px; line-height: 1; - width: 10ch; + width: 11ch; border: 1px solid black; } </style> <section> <div>12345<br>12345<br>12345</div> - <div>12345<br> 12345<br> 12345</div> - <div>12345<br> 12345<br> 12345</div> + <div> 12345<br> 12345<br> 12345</div> + <div> 12345<br> 12345<br> 12345</div> <div>12345<br>12345<br>12345</div> - <div>12345<br> 12345<br> 12345</div> + <div> 12345<br> 12345<br> 12345</div> </section> <section> - <div> 12345<br> 12345<br> 12345</div> - <div> 12345<br> 12345<br> 12345</div> - <div> 12345<br> 12345<br> 12345</div> - <div> 12345<br> 12345<br> 12345</div> - <div> 12345<br> 12345<br> 12345</div> + <div>12345<br>12345<br> 12345</div> + <div> 12345<br> 12345<br> 12345</div> + <div> 12345<br> 12345<br> 12345</div> + <div> 12345<br> 12345<br> 12345</div> + <div>12345<br>12345<br> 12345</div> </section>
diff --git a/third_party/blink/web_tests/fast/css/text-align-pre-wrap-trailing-spaces-multi-lines.html b/third_party/blink/web_tests/fast/css/text-align-pre-wrap-trailing-spaces-multi-lines.html index b7d74a2..718161c 100644 --- a/third_party/blink/web_tests/fast/css/text-align-pre-wrap-trailing-spaces-multi-lines.html +++ b/third_party/blink/web_tests/fast/css/text-align-pre-wrap-trailing-spaces-multi-lines.html
@@ -13,7 +13,7 @@ font-family: Ahem; font-size: 20px; line-height: 1; - width: 10ch; + width: 11ch; border: 1px solid black; } .left { text-align: left; } @@ -23,16 +23,16 @@ .end { text-align: end; } </style> <section> - <div class="left">12345 12345 12345 </div> - <div class="center">12345 12345 12345 </div> - <div class="right">12345 12345 12345 </div> - <div class="start">12345 12345 12345 </div> - <div class="end">12345 12345 12345 </div> + <div class="left">12345 12345 12345 </div> + <div class="center">12345 12345 12345 </div> + <div class="right">12345 12345 12345 </div> + <div class="start">12345 12345 12345 </div> + <div class="end">12345 12345 12345 </div> </section> <section dir="rtl"> - <div class="left">12345 12345 12345 </div> - <div class="center">12345 12345 12345 </div> - <div class="right">12345 12345 12345 </div> - <div class="start">12345 12345 12345 </div> - <div class="end">12345 12345 12345 </div> + <div class="left">12345 12345 12345 </div> + <div class="center">12345 12345 12345 </div> + <div class="right">12345 12345 12345 </div> + <div class="start">12345 12345 12345 </div> + <div class="end">12345 12345 12345 </div> </section>
diff --git a/third_party/blink/web_tests/http/tests/devtools/webaudio/audio-context-selector-test.js b/third_party/blink/web_tests/http/tests/devtools/webaudio/audio-context-selector-test.js index a0c98323c..5ca9be6 100644 --- a/third_party/blink/web_tests/http/tests/devtools/webaudio/audio-context-selector-test.js +++ b/third_party/blink/web_tests/http/tests/devtools/webaudio/audio-context-selector-test.js
@@ -4,9 +4,10 @@ import {TestRunner} from 'test_runner'; +import * as WebAudioModule from 'devtools/panels/web_audio/web_audio.js'; + (async function() { TestRunner.addResult(`Tests the AudioContextSelector.`); - await TestRunner.loadLegacyModule('web_audio'); /** @type {!Protocol.WebAudio.BaseAudioContext} */ const context1 = { @@ -20,7 +21,7 @@ }; function dumpSelectorState( - /** @type {!WebAudio.AudioContextSelector} */ selector) { + /** @type {!WebAudioModule.AudioContextSelector.AudioContextSelector} */ selector) { TestRunner.addResult(` Number of contexts (items): ${selector.items.length} Title: ${selector.toolbarItem().title}} @@ -30,13 +31,13 @@ TestRunner.runAsyncTestSuite([ async function testStartsEmpty() { - const selector = new WebAudio.AudioContextSelector(); + const selector = new WebAudioModule.AudioContextSelector.AudioContextSelector(); dumpSelectorState(selector); }, async function testSelectsCreatedContext() { - const selector = new WebAudio.AudioContextSelector(); + const selector = new WebAudioModule.AudioContextSelector.AudioContextSelector(); selector.contextCreated({data: context1}); @@ -44,7 +45,7 @@ }, async function testResetClearsList() { - const selector = new WebAudio.AudioContextSelector(); + const selector = new WebAudioModule.AudioContextSelector.AudioContextSelector(); selector.contextCreated({data: context1}); selector.reset(); @@ -53,7 +54,7 @@ }, async function testReSelectsCreatedContextAfterChange() { - const selector = new WebAudio.AudioContextSelector(); + const selector = new WebAudioModule.AudioContextSelector.AudioContextSelector(); selector.contextCreated({data: context1}); selector.contextChanged({data: context1}); @@ -62,7 +63,7 @@ }, async function testFirstCreatedContextStaysSelected() { - const selector = new WebAudio.AudioContextSelector(); + const selector = new WebAudioModule.AudioContextSelector.AudioContextSelector(); selector.contextCreated({data: context1}); selector.contextCreated({data: context2}); @@ -71,7 +72,7 @@ }, async function testChangingContextDoesNotChangeSelection() { - const selector = new WebAudio.AudioContextSelector(); + const selector = new WebAudioModule.AudioContextSelector.AudioContextSelector(); selector.contextCreated({data: context1}); selector.contextCreated({data: context2}); @@ -81,7 +82,7 @@ }, async function testSelectedContextBecomesSelected() { - const selector = new WebAudio.AudioContextSelector(); + const selector = new WebAudioModule.AudioContextSelector.AudioContextSelector(); selector.contextCreated({data: context1}); selector.contextCreated({data: context2}); @@ -98,10 +99,10 @@ } TestRunner.addSniffer( - WebAudio.AudioContextSelector.prototype, 'onListItemReplaced', + WebAudioModule.AudioContextSelector.AudioContextSelector.prototype, 'onListItemReplaced', dumpItemCount); - const selector = new WebAudio.AudioContextSelector(); + const selector = new WebAudioModule.AudioContextSelector.AudioContextSelector(); selector.contextCreated({data: context1}); selector.contextChanged({data: context1});
diff --git a/third_party/blink/web_tests/http/tests/devtools/webaudio/graphview-test.js b/third_party/blink/web_tests/http/tests/devtools/webaudio/graphview-test.js index 906c1433..b545c2f 100644 --- a/third_party/blink/web_tests/http/tests/devtools/webaudio/graphview-test.js +++ b/third_party/blink/web_tests/http/tests/devtools/webaudio/graphview-test.js
@@ -4,14 +4,15 @@ import {TestRunner} from 'test_runner'; +import * as WebAudioModule from 'devtools/panels/web_audio/web_audio.js'; + (async function() { TestRunner.addResult(`Tests the graph model.\n`); await TestRunner.showPanel('web-audio'); - await TestRunner.loadLegacyModule('web_audio'); const contextId = 'contextId'; - const graph = new WebAudio.GraphVisualizer.GraphView(contextId); + const graph = new WebAudioModule.GraphView.GraphView(contextId); TestRunner.addResult('Original lengths'); dumpNodeEdgeSize();
diff --git a/third_party/blink/web_tests/http/tests/devtools/webaudio/nodeview-test.js b/third_party/blink/web_tests/http/tests/devtools/webaudio/nodeview-test.js index 4e6ad1e..bc7669a4 100644 --- a/third_party/blink/web_tests/http/tests/devtools/webaudio/nodeview-test.js +++ b/third_party/blink/web_tests/http/tests/devtools/webaudio/nodeview-test.js
@@ -4,11 +4,12 @@ import {TestRunner} from 'test_runner'; +import * as WebAudioModule from 'devtools/panels/web_audio/web_audio.js'; + (async function() { TestRunner.addResult(`Tests the node model.\n`); await TestRunner.showPanel('web-audio'); - await TestRunner.loadLegacyModule('web_audio'); const nodeData1 = { nodeId: 'node1', @@ -16,7 +17,7 @@ numberOfInputs: 1, numberOfOutputs: 1 }; - const node = new WebAudio.GraphVisualizer.NodeView(nodeData1, 'nodeLabel'); + const node = new WebAudioModule.NodeView.NodeView(nodeData1, 'nodeLabel'); TestRunner.addResult('Original lengths'); dumpNumberOfPorts();
diff --git a/third_party/blink/web_tests/virtual/fetch-later/external/wpt/fetch/fetch-later/basic.tentative.https.window-expected.txt b/third_party/blink/web_tests/virtual/fetch-later/external/wpt/fetch/fetch-later/basic.tentative.https.window-expected.txt index ef5e70c..f8b9cecf 100644 --- a/third_party/blink/web_tests/virtual/fetch-later/external/wpt/fetch/fetch-later/basic.tentative.https.window-expected.txt +++ b/third_party/blink/web_tests/virtual/fetch-later/external/wpt/fetch/fetch-later/basic.tentative.https.window-expected.txt
@@ -1,8 +1,10 @@ This is a testharness.js-based test. PASS fetchLater() cannot be called without request. PASS fetchLater() throws TypeError on non-HTTPS URL. +PASS fetchLater() throws RangeError on negative activationTimeout. PASS fetchLater()'s return tells the deferred request is not yet sent. PASS fetchLater() throws TypeError when mutating its returned state. PASS fetchLater() throws AbortError when its initial abort signal is aborted. +PASS fetchLater() does not throw error when it is aborted before sending. Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/virtual/fetch-later/external/wpt/fetch/fetch-later/send-on-deactivate.tentative.https.window-expected.txt b/third_party/blink/web_tests/virtual/fetch-later/external/wpt/fetch/fetch-later/send-on-deactivate.tentative.https.window-expected.txt new file mode 100644 index 0000000..193f6ede --- /dev/null +++ b/third_party/blink/web_tests/virtual/fetch-later/external/wpt/fetch/fetch-later/send-on-deactivate.tentative.https.window-expected.txt
@@ -0,0 +1,6 @@ +This is a testharness.js-based test. +PASS fetchLater() does not send on page entering BFCache. +PASS Call fetchLater() when BFCached with activationTimeout=0 sends immediately. +PASS fetchLater() sends on navigating away a page w/o BFCache. +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/fetch-later/external/wpt/fetch/fetch-later/send-on-discard.tentative.https.window-expected.txt b/third_party/blink/web_tests/virtual/fetch-later/external/wpt/fetch/fetch-later/send-on-discard.tentative.https.window-expected.txt index 4632739..de022615 100644 --- a/third_party/blink/web_tests/virtual/fetch-later/external/wpt/fetch/fetch-later/send-on-discard.tentative.https.window-expected.txt +++ b/third_party/blink/web_tests/virtual/fetch-later/external/wpt/fetch/fetch-later/send-on-discard.tentative.https.window-expected.txt
@@ -1,5 +1,6 @@ This is a testharness.js-based test. PASS A discarded document sends all its fetchLater requests. +PASS A discarded document sends all its fetchLater requests, no matter how much their timeout remain. FAIL A discarded document does not send an already aborted fetchLater request. assert_equals: Number of sent beacons does not match expected count: expected 1 but got 2 Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/virtual/fetch-later/external/wpt/fetch/fetch-later/timeout.tentative.https.window-expected.txt b/third_party/blink/web_tests/virtual/fetch-later/external/wpt/fetch/fetch-later/timeout.tentative.https.window-expected.txt new file mode 100644 index 0000000..5ef0184 --- /dev/null +++ b/third_party/blink/web_tests/virtual/fetch-later/external/wpt/fetch/fetch-later/timeout.tentative.https.window-expected.txt
@@ -0,0 +1,5 @@ +This is a testharness.js-based test. +PASS fetchLater() sends out based on activationTimeout. +PASS fetchLater() sends out based on activationTimeout, even if document is in BFCache. +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/virtual/font-palette-animation/README.md b/third_party/blink/web_tests/virtual/font-palette-animation/README.md deleted file mode 100644 index 67ab807..0000000 --- a/third_party/blink/web_tests/virtual/font-palette-animation/README.md +++ /dev/null
@@ -1 +0,0 @@ -Tests for experimental, non-spec'ed font palette animation, flag name: FontPaletteAnimation.
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-fonts/animations/font-palette-interpolation.tentative.html.ini b/third_party/blink/web_tests/wpt_internal/css/css-fonts/animations/font-palette-interpolation.tentative.html.ini deleted file mode 100644 index 6365d47..0000000 --- a/third_party/blink/web_tests/wpt_internal/css/css-fonts/animations/font-palette-interpolation.tentative.html.ini +++ /dev/null
@@ -1,108 +0,0 @@ -[font-palette-interpolation.tentative.html] - [An interpolation to inherit updates correctly on a parent style change.] - expected: FAIL - - [CSS Animations: property <font-palette> from [--custom-palette\] to [normal\] at (0.3) should be [palette-mix(in oklab, --custom-palette, normal 30%)\]] - expected: FAIL - - [CSS Animations: property <font-palette> from [initial\] to [inherit\] at (0.6) should be [palette-mix(in oklab, normal, light 60%)\]] - expected: FAIL - - [CSS Animations: property <font-palette> from [light\] to [dark\] at (0.3) should be [palette-mix(in oklab, light, dark 30%)\]] - expected: FAIL - - [CSS Animations: property <font-palette> from [light\] to [dark\] at (0.6) should be [palette-mix(in oklab, light, dark 60%)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <font-palette> from [--custom-palette\] to [normal\] at (-0.25) should be [--custom-palette\]] - expected: FAIL - - [CSS Transitions with transition: all: property <font-palette> from [--custom-palette\] to [normal\] at (-2) should be [--custom-palette\]] - expected: FAIL - - [CSS Transitions with transition: all: property <font-palette> from [--custom-palette\] to [normal\] at (0) should be [--custom-palette\]] - expected: FAIL - - [CSS Transitions with transition: all: property <font-palette> from [initial\] to [inherit\] at (-0.25) should be [normal\]] - expected: FAIL - - [CSS Transitions with transition: all: property <font-palette> from [initial\] to [inherit\] at (-2) should be [normal\]] - expected: FAIL - - [CSS Transitions with transition: all: property <font-palette> from [initial\] to [inherit\] at (0) should be [normal\]] - expected: FAIL - - [CSS Transitions with transition: all: property <font-palette> from [initial\] to [inherit\] at (0.3) should be [palette-mix(in oklab, normal, light 30%)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <font-palette> from [initial\] to [inherit\] at (0.6) should be [palette-mix(in oklab, normal, light 60%)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <font-palette> from [light\] to [dark\] at (-0.25) should be [light\]] - expected: FAIL - - [CSS Transitions with transition: all: property <font-palette> from [light\] to [dark\] at (-2) should be [light\]] - expected: FAIL - - [CSS Transitions with transition: all: property <font-palette> from [light\] to [dark\] at (0) should be [light\]] - expected: FAIL - - [CSS Transitions with transition: all: property <font-palette> from [light\] to [dark\] at (0.3) should be [palette-mix(in oklab, light, dark 30%)\]] - expected: FAIL - - [CSS Transitions with transition: all: property <font-palette> from [light\] to [dark\] at (0.6) should be [palette-mix(in oklab, light, dark 60%)\]] - expected: FAIL - - [CSS Transitions: property <font-palette> from [--custom-palette\] to [normal\] at (-0.25) should be [--custom-palette\]] - expected: FAIL - - [CSS Transitions: property <font-palette> from [--custom-palette\] to [normal\] at (-2) should be [--custom-palette\]] - expected: FAIL - - [CSS Transitions: property <font-palette> from [--custom-palette\] to [normal\] at (0) should be [--custom-palette\]] - expected: FAIL - - [CSS Transitions: property <font-palette> from [initial\] to [inherit\] at (-0.25) should be [normal\]] - expected: FAIL - - [CSS Transitions: property <font-palette> from [initial\] to [inherit\] at (-2) should be [normal\]] - expected: FAIL - - [CSS Transitions: property <font-palette> from [initial\] to [inherit\] at (0) should be [normal\]] - expected: FAIL - - [CSS Transitions: property <font-palette> from [initial\] to [inherit\] at (0.3) should be [palette-mix(in oklab, normal, light 30%)\]] - expected: FAIL - - [CSS Transitions: property <font-palette> from [initial\] to [inherit\] at (0.6) should be [palette-mix(in oklab, normal, light 60%)\]] - expected: FAIL - - [CSS Transitions: property <font-palette> from [light\] to [dark\] at (-0.25) should be [light\]] - expected: FAIL - - [CSS Transitions: property <font-palette> from [light\] to [dark\] at (-2) should be [light\]] - expected: FAIL - - [CSS Transitions: property <font-palette> from [light\] to [dark\] at (0) should be [light\]] - expected: FAIL - - [CSS Transitions: property <font-palette> from [light\] to [dark\] at (0.3) should be [palette-mix(in oklab, light, dark 30%)\]] - expected: FAIL - - [CSS Transitions: property <font-palette> from [light\] to [dark\] at (0.6) should be [palette-mix(in oklab, light, dark 60%)\]] - expected: FAIL - - [Test additive animations] - expected: FAIL - - [Web Animations: property <font-palette> from [--custom-palette\] to [normal\] at (0.3) should be [palette-mix(in oklab, --custom-palette, normal 30%)\]] - expected: FAIL - - [Web Animations: property <font-palette> from [initial\] to [inherit\] at (0.6) should be [palette-mix(in oklab, normal, light 60%)\]] - expected: FAIL - - [Web Animations: property <font-palette> from [light\] to [dark\] at (0.3) should be [palette-mix(in oklab, light, dark 30%)\]] - expected: FAIL - - [Web Animations: property <font-palette> from [light\] to [dark\] at (0.6) should be [palette-mix(in oklab, light, dark 60%)\]] - expected: FAIL
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-fonts/palette-mix-computed.tentative.html.ini b/third_party/blink/web_tests/wpt_internal/css/css-fonts/palette-mix-computed.tentative.html.ini deleted file mode 100644 index 321bc57..0000000 --- a/third_party/blink/web_tests/wpt_internal/css/css-fonts/palette-mix-computed.tentative.html.ini +++ /dev/null
@@ -1,81 +0,0 @@ -[palette-mix-computed.tentative.html] - [Property font-palette value 'palette-mix(in hsl, light 10%, dark)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in hwb, light 10%, dark)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in lab, light 10%, dark)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in lch, light 10%, dark)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in oklab, --custom-palette 30%, normal)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in oklab, light 10%, dark 40%)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in oklab, light 10%, dark)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in oklab, light 30%, dark 70%)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in oklab, light 30%, dark)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in oklab, light 30%, light)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in oklab, light 30%, normal)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in oklab, light 50%, dark 50%)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in oklab, light 50%, dark 70%)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in oklab, light 50%, dark)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in oklab, light 60%, dark)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in oklab, light 70%, dark 70%)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in oklab, light, dark 50%)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in oklab, light, dark 70%)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in oklab, light, dark)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in oklab, palette-mix(in srgb, light 30%, normal) 20%, dark)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in oklab, palette-mix(in srgb, light 30%, normal) 30%, palette-mix(in srgb, --custom-palette 30%, dark))'] - expected: FAIL - - [Property font-palette value 'palette-mix(in oklch, light 10%, dark)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in srgb, light 10%, dark)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in srgb-linear, light 10%, dark)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in xyz, light 10%, dark)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in xyz-d50, light 10%, dark)'] - expected: FAIL - - [Property font-palette value 'palette-mix(in xyz-d65, light 10%, dark)'] - expected: FAIL
diff --git a/third_party/chromium-variations b/third_party/chromium-variations index e8462fa..923dfb9 160000 --- a/third_party/chromium-variations +++ b/third_party/chromium-variations
@@ -1 +1 @@ -Subproject commit e8462fa1881743917c3a5cfab581211defad39da +Subproject commit 923dfb9e61617b401ffc72b882a8eb48210d1bef
diff --git a/third_party/cros-components/src b/third_party/cros-components/src index 66ea0cc1..10d2e37 160000 --- a/third_party/cros-components/src +++ b/third_party/cros-components/src
@@ -1 +1 @@ -Subproject commit 66ea0cc1c267d9a8a969e80b0d45fb6bf9cfb33b +Subproject commit 10d2e376519e88221117e38cd901054b0153501c
diff --git a/third_party/dawn b/third_party/dawn index 5d3173a..addd749 160000 --- a/third_party/dawn +++ b/third_party/dawn
@@ -1 +1 @@ -Subproject commit 5d3173ac9a2249dff582ed4f9ab6962e00737ea8 +Subproject commit addd7493ccd6a001f0e5458007982f10df77cd0a
diff --git a/third_party/devtools-frontend-internal b/third_party/devtools-frontend-internal index 63bda74..46b0231 160000 --- a/third_party/devtools-frontend-internal +++ b/third_party/devtools-frontend-internal
@@ -1 +1 @@ -Subproject commit 63bda74f4350a6a59e38983a14d35a6eece12805 +Subproject commit 46b0231738a9dbba7b3827649d231fe6a6290fb9
diff --git a/third_party/devtools-frontend/src b/third_party/devtools-frontend/src index 4e41c1c..d49819fe 160000 --- a/third_party/devtools-frontend/src +++ b/third_party/devtools-frontend/src
@@ -1 +1 @@ -Subproject commit 4e41c1c367239f5d2aec4fe63b2600a0ecd38604 +Subproject commit d49819fe244438697b53be6ca829f35b0959f009
diff --git a/third_party/libaddressinput/OWNERS b/third_party/libaddressinput/OWNERS index 562d774..f1b792e 100644 --- a/third_party/libaddressinput/OWNERS +++ b/third_party/libaddressinput/OWNERS
@@ -1,6 +1,4 @@ battre@chromium.org -dvadym@chromium.org koerber@google.com -kolos@chromium.org mathp@chromium.org rouslan@chromium.org
diff --git a/third_party/libphonenumber/OWNERS b/third_party/libphonenumber/OWNERS index 562d774..f1b792e 100644 --- a/third_party/libphonenumber/OWNERS +++ b/third_party/libphonenumber/OWNERS
@@ -1,6 +1,4 @@ battre@chromium.org -dvadym@chromium.org koerber@google.com -kolos@chromium.org mathp@chromium.org rouslan@chromium.org
diff --git a/third_party/pdfium b/third_party/pdfium index 5cdaf28..8cf636e 160000 --- a/third_party/pdfium +++ b/third_party/pdfium
@@ -1 +1 @@ -Subproject commit 5cdaf28d07a78d6b3d17aebf6efcc05cd8f2fec7 +Subproject commit 8cf636e15ce21f4c8a574882c7cfd00629b59aba
diff --git a/third_party/perfetto b/third_party/perfetto index f952448..d3bf532 160000 --- a/third_party/perfetto +++ b/third_party/perfetto
@@ -1 +1 @@ -Subproject commit f95244890e05c2d6fae40a293035ce479db6fc3c +Subproject commit d3bf532f84cf34f899c5785043ceb4af8f76d4e3
diff --git a/third_party/skia b/third_party/skia index 20a4310..0fef7d2 160000 --- a/third_party/skia +++ b/third_party/skia
@@ -1 +1 @@ -Subproject commit 20a431090e24b620c32b8389d3a183f34cfc8c8c +Subproject commit 0fef7d25a55f52cfb7153b4990e288a8e36f2a2a
diff --git a/third_party/vulkan-deps b/third_party/vulkan-deps index 285e370..1e40b8e 160000 --- a/third_party/vulkan-deps +++ b/third_party/vulkan-deps
@@ -1 +1 @@ -Subproject commit 285e370766723ea96f91115884ec01492b505907 +Subproject commit 1e40b8e966f5dbac2e886e5ba1eb30f660cd5cf9
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 13bc0f7f..9d3bcd2 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -44059,8 +44059,8 @@ <int value="4541" label="SandboxViaFencedFrame"/> <int value="4542" label="VisibilityStateObserver"/> <int value="4543" label="V8CompileHintsMagicAll"/> - <int value="4544" label="TextWrapBalance"/> - <int value="4545" label="TextWrapBalanceFail"/> + <int value="4544" label="OBSOLETE_TextWrapBalance"/> + <int value="4545" label="OBSOLETE_TextWrapBalanceFail"/> <int value="4546" label="AttributionReportingCrossAppWeb"/> <int value="4547" label="SecurePaymentConfirmationActivationlessShow"/> <int value="4548" @@ -44112,8 +44112,8 @@ <int value="4591" label="ClientHintsUAFormFactor"/> <int value="4592" label="URLSearchParamsHasFnBehaviourDiverged"/> <int value="4593" label="URLSearchParamsDeleteFnBehaviourDiverged"/> - <int value="4594" label="TextWrapPretty"/> - <int value="4595" label="TextWrapPrettyFail"/> + <int value="4594" label="OBSOLETE_TextWrapPretty"/> + <int value="4595" label="OBSOLETE_TextWrapPrettyFail"/> <int value="4596" label="ContainerQueryEvalUnknown"/> <int value="4597" label="EventTimingPresentationPromiseResolvedAfterReport"/> <int value="4598" label="GetCoalescedEventsInInsecureContext"/> @@ -44191,6 +44191,8 @@ <int value="4670" label="OutOfFlowAlignSelfBothInsets"/> <int value="4671" label="V8WebAssemblyJSStringBuiltins"/> <int value="4672" label="ObservableConstructor"/> + <int value="4673" label="TextWrapBalance"/> + <int value="4674" label="TextWrapPretty"/> </enum> <enum name="FeaturePolicyAllowlistType"> @@ -70312,6 +70314,7 @@ <int value="16" label="Chrome menu item"/> <int value="17" label="Shared Passwords Notification Bubble"/> <int value="18" label="Search Passwords widget"/> + <int value="19" label="Add Username bubble"/> </enum> <enum name="MandatoryReauthAuthEvent"> @@ -110604,6 +110607,21 @@ </int> </enum> +<enum name="V8SourceMapReference"> + <int value="0" label="None">The script did not specify a source map</int> + <int value="1" label="HTTP"> + The source map was specified via "SourceMap" HTTP header + </int> + <int value="2" label="HashSignComment"> + The source map was specified via hash sign prefixed sourceMappingURL magic + comment + </int> + <int value="3" label="AtSignComment"> + The source map was specified via atsgin prefixed sourceMappingURL magic + comment + </int> +</enum> + <enum name="VaapiFunctions"> <int value="0" label="vaBeginPicture()"/> <int value="1" label="vaCreateBuffer()"/>
diff --git a/tools/metrics/histograms/metadata/histogram_suffixes_list.xml b/tools/metrics/histograms/metadata/histogram_suffixes_list.xml index 7b2f1d876..6d0bd0d4 100644 --- a/tools/metrics/histograms/metadata/histogram_suffixes_list.xml +++ b/tools/metrics/histograms/metadata/histogram_suffixes_list.xml
@@ -4194,6 +4194,18 @@ <suffix name="ParkableImage.UnparkedSize" label="Size of encoded image data of ParkableImages that are not written to disk."/> + <suffix name="PartitionAlloc.BRPQuarantined" + label="Memory used by objects quarantined by BRP, recorded when + USE_BACKUP_REF_PTR build flag is enabled."/> + <suffix name="PartitionAlloc.BRPQuarantined.ArrayBuffer" + label="Memory used by objects quarantined by BRP, recorded when + USE_BACKUP_REF_PTR build flag is enabled."/> + <suffix name="PartitionAlloc.BRPQuarantined.Buffer" + label="Memory used by objects quarantined by BRP, recorded when + USE_BACKUP_REF_PTR build flag is enabled."/> + <suffix name="PartitionAlloc.BRPQuarantined.FastMalloc" + label="Memory used by objects quarantined by BRP, recorded when + USE_BACKUP_REF_PTR build flag is enabled."/> <suffix name="PartitionAlloc.Partitions.FastMalloc.ThreadCache" label="Memory used by all thread caches for the FastMalloc partition. Recorded in blink processes, unless PartitionAlloc is used as @@ -4288,6 +4300,18 @@ <suffix name="PartitionAlloc.AddressSpace.BlocklistSize.After24H" label="Monotonically increasing count of blocked addresses. Only recorded for 32-bit with process uptime 24H+."/> + <suffix name="PartitionAlloc.BRPQuarantinedCount" + label="Number of slots quarantined by BRP, recorded when + USE_BACKUP_REF_PTR build flag is enabled."/> + <suffix name="PartitionAlloc.BRPQuarantinedCount.ArrayBuffer" + label="Number of slots quarantined by BRP, recorded when + USE_BACKUP_REF_PTR build flag is enabled."/> + <suffix name="PartitionAlloc.BRPQuarantinedCount.Buffer" + label="Number of slots quarantined by BRP, recorded when + USE_BACKUP_REF_PTR build flag is enabled."/> + <suffix name="PartitionAlloc.BRPQuarantinedCount.FastMalloc" + label="Number of slots quarantined by BRP, recorded when + USE_BACKUP_REF_PTR build flag is enabled."/> <affected-histogram name="Memory.Experimental.Browser2.Tiny"/> <affected-histogram name="Memory.Experimental.Extension2.Tiny"/> <affected-histogram name="Memory.Experimental.Gpu2.Tiny"/>
diff --git a/tools/metrics/histograms/metadata/navigation/histograms.xml b/tools/metrics/histograms/metadata/navigation/histograms.xml index ca7aebe..4361966fb 100644 --- a/tools/metrics/histograms/metadata/navigation/histograms.xml +++ b/tools/metrics/histograms/metadata/navigation/histograms.xml
@@ -51,6 +51,11 @@ <variant name="Regular"/> </variants> +<variants name="SiteRelation"> + <variant name="CrossSite"/> + <variant name="SameSite"/> +</variants> + <histogram name="BackForwardCache.AllSites.EvictedAfterDocumentRestoredReason" enum="BackForwardCacheEvictedAfterDocumentRestoredReason" expires_after="2024-03-03"> @@ -428,6 +433,21 @@ </summary> </histogram> +<histogram name="BackForwardCache.ProcessReuse.{SiteRelation}" units="count" + expires_after="2024-01-15"> + <owner>rakina@chromium.org</owner> + <owner>bfcache-dev@chromium.org</owner> + <summary> + Whether a back/forward cached page shares the same process as the page that + we're navigating to (i.e. whether the new active page reuses the process of + the back/forward cached page). + + Recorded when navigating away from a page, after the navigation commits and + we're about to put the previous page into the back/forward cache. + </summary> + <token key="SiteRelation" variants="SiteRelation"/> +</histogram> + <histogram name="BackForwardCache.Restore.NavigationToFirstPaint" units="ms" expires_after="2024-03-17"> <owner>sreejakshetty@chromium.org</owner> @@ -1650,7 +1670,7 @@ <histogram name="Prerender.CanceledForInactivePageRestriction.DisallowActivationReason{PrerenderTriggerType}" - enum="InactiveFrameDisallowActivationReason" expires_after="2023-09-03"> + enum="InactiveFrameDisallowActivationReason" expires_after="2024-01-31"> <owner>lingqi@chromium.org</owner> <owner>chrome-prerendering@chromium.org</owner> <summary> @@ -1675,7 +1695,7 @@ <histogram name="Prerender.Experimental.ActivationHeadersMismatch{PrerenderTriggerType}" - enum="PrerenderActivationHeaderMismatchType" expires_after="2023-09-03"> + enum="PrerenderActivationHeaderMismatchType" expires_after="2024-01-31"> <owner>lingqi@chromium.org</owner> <owner>chrome-prerendering@google.com</owner> <summary> @@ -1979,7 +1999,7 @@ <histogram name="Prerender.Experimental.ResourceLoadingBlockedByClientByType{PrerenderTriggerType}" - enum="RequestDestination" expires_after="2023-09-03"> + enum="RequestDestination" expires_after="2023-12-03"> <owner>lingqi@chromium.org</owner> <owner>chrome-prerendering@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/v8/histograms.xml b/tools/metrics/histograms/metadata/v8/histograms.xml index b111e8e..8082f1d2 100644 --- a/tools/metrics/histograms/metadata/v8/histograms.xml +++ b/tools/metrics/histograms/metadata/v8/histograms.xml
@@ -1395,6 +1395,19 @@ </summary> </histogram> +<histogram name="V8.SourceMapReference" enum="V8SourceMapReference" + expires_after="2024-06-30"> + <owner>szuend@chromium.org</owner> + <owner>bmeurer@chromium.org</owner> + <summary> + Each time a script is parsed we report how the source map for that script is + specified. + + This histogram does not care whether a source map is actually publicly + available or if it's specified inline as a data URL. + </summary> +</histogram> + <histogram name="V8.TurboFan1KTicks" units="1000 ticks" expires_after="2023-06-30"> <owner>tebbi@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/web_rtc/histograms.xml b/tools/metrics/histograms/metadata/web_rtc/histograms.xml index 62d919f..07911fa 100644 --- a/tools/metrics/histograms/metadata/web_rtc/histograms.xml +++ b/tools/metrics/histograms/metadata/web_rtc/histograms.xml
@@ -1358,7 +1358,7 @@ </histogram> <histogram name="WebRTC.PeerConnection.IPv4Interfaces" units="units" - expires_after="2023-11-01"> + expires_after="2024-05-01"> <owner>hta@chromium.org</owner> <owner>webrtc-dev@chromium.org</owner> <summary> @@ -1370,7 +1370,7 @@ </histogram> <histogram name="WebRTC.PeerConnection.IPv6Interfaces" units="units" - expires_after="2023-11-01"> + expires_after="2024-05-01"> <owner>hta@chromium.org</owner> <owner>webrtc-dev@chromium.org</owner> <summary> @@ -1880,7 +1880,7 @@ </histogram> <histogram name="WebRTC.Stun.Integrity.{StunPacketType}" - enum="WebRtcStunIntegrityOutcome" expires_after="2023-10-07"> + enum="WebRtcStunIntegrityOutcome" expires_after="2024-04-07"> <owner>hta@chromium.org</owner> <owner>webrtc-dev@chromium.org</owner> <summary>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index be91af7..f25ff5c 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -22,7 +22,7 @@ }, "linux": { "hash": "a0d37191475ed9da1200b7baa7208c34035102ab", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/f95244890e05c2d6fae40a293035ce479db6fc3c/trace_processor_shell" + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/d3bf532f84cf34f899c5785043ceb4af8f76d4e3/trace_processor_shell" } }, "power_profile.sql": {
diff --git a/ui/webui/examples/renderer/render_frame_observer.cc b/ui/webui/examples/renderer/render_frame_observer.cc index 58a80dd1..1c9311e 100644 --- a/ui/webui/examples/renderer/render_frame_observer.cc +++ b/ui/webui/examples/renderer/render_frame_observer.cc
@@ -7,6 +7,7 @@ #include "base/check.h" #include "base/functional/callback.h" #include "base/logging.h" +#include "base/memory/raw_ptr.h" #include "base/no_destructor.h" #include "components/guest_view/common/guest_view.mojom.h" #include "components/guest_view/common/guest_view_constants.h" @@ -250,7 +251,7 @@ callback->Run(args); } - v8::Isolate* const isolate_; + const raw_ptr<v8::Isolate, ExperimentalRenderer> isolate_; v8::HandleScope handle_scope_; v8::Local<v8::Context> context_; v8::Context::Scope context_scope_;
diff --git a/v8 b/v8 index cbfc282e..3eb7d73 160000 --- a/v8 +++ b/v8
@@ -1 +1 @@ -Subproject commit cbfc282edb990b16d1ec7f7f31b1603148be9d17 +Subproject commit 3eb7d73cbd4266dcc250a7b4d0099d0946ec1138