diff --git a/DEPS b/DEPS index dd34037a..4d4bbe9 100644 --- a/DEPS +++ b/DEPS
@@ -254,7 +254,7 @@ # luci-go CIPD package version. # Make sure the revision is uploaded by infra-packagers builder. # https://ci.chromium.org/p/infra-internal/g/infra-packagers/console - 'luci_go': 'git_revision:77c9b09de8f234ae9c47d9d865a5d860ff390ed0', + 'luci_go': 'git_revision:fe3cfd422b1012c2c8cf00d65cdb11aa2c26cd66', # This can be overridden, e.g. with custom_vars, to build clang from HEAD # instead of downloading the prebuilt pinned revision. @@ -314,7 +314,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': 'af4ecc4cd3e9d4ff5a8402d3fc734d6f577a1121', + 'skia_revision': '27b242111cb0f5db82e5c0e0fd3bb29cc089475e', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. @@ -806,7 +806,7 @@ }, 'src/chrome/test/data/autofill/captured_sites/artifacts': { - 'url': Var('chrome_git') + '/chrome/test/captured_sites/autofill.git' + '@' + 'bff7987166462e8276297b301222f312241b0b56', + 'url': Var('chrome_git') + '/chrome/test/captured_sites/autofill.git' + '@' + 'fbd172ab07184d7abf6f9e9b08f7af7be804d9e3', 'condition': 'checkout_chromium_autofill_test_dependencies', }, @@ -837,7 +837,7 @@ 'src/clank': { 'url': Var('chrome_git') + '/clank/internal/apps.git' + '@' + - '4c582d36ea7a1d1cc8400272a25bbcdb71ecd42f', + 'd3687a2437fad1d6f61c52e060d4ca56533e6c56', 'condition': 'checkout_android and checkout_src_internal', }, @@ -1032,7 +1032,7 @@ 'packages': [ { 'package': 'chromium/third_party/androidx', - 'version': 'Wl73SoB2e1tWNamVobKw6a8XGjjLYumYWDXkuuC8gasC', + 'version': '84jRVDAs3H8N5K3z5rMB6TRrG-g1tl0-EDU11BYWVOkC', }, ], 'condition': 'checkout_android', @@ -1276,7 +1276,7 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'e4e4da7109120610d5357377d13e2a4c307311e8', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '2d5c673fdb0072bb7b0c7463e6e7e18d0170b288', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), @@ -1751,7 +1751,7 @@ Var('pdfium_git') + '/pdfium.git' + '@' + Var('pdfium_revision'), 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + 'bfee50850e5fb0e31e540087446e86889d1147b3', + Var('android_git') + '/platform/external/perfetto.git' + '@' + '9e9addaf01b3748d0bf2182017d10aabfeefc167', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3', @@ -1899,7 +1899,7 @@ 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@aa121378c102bf27e8995258aac6b90eaba712e4', 'src/third_party/vulkan_memory_allocator': - Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git' + '@' + '56300b29fbfcc693ee6609ddad3fdd5b7a449a21', + Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git' + '@' + 'e87036508bb156f9986ea959323de1869e328f58', # Display server protocol for Linux. 'src/third_party/wayland/src': { @@ -1986,7 +1986,7 @@ 'packages': [ { 'package': 'skia/tools/goldctl/linux-amd64', - 'version': 'UFlmhX6-Qb8IgDGznrPTinozgZ41Ul69CJEw_37d5Q0C', + 'version': 'FdyOkAznuQ7k2iieFXsUTpz6jBaUHPGw8fNxb1-0JLMC', }, ], 'dep_type': 'cipd', @@ -2007,7 +2007,7 @@ 'packages': [ { 'package': 'skia/tools/goldctl/mac-amd64', - 'version': 'UjktW10Ah81eMdqbYaUevQNFJozJWoGy33MmF1BdM18C', + 'version': '9RuiM5HJiEHkr27MLsTx04jOTEYQG-D_3P1BCrM03q4C', }, ], 'dep_type': 'cipd', @@ -2018,7 +2018,7 @@ 'packages': [ { 'package': 'skia/tools/goldctl/mac-arm64', - 'version': 'obLm-ouXMf1S3hnZaO-yUAG5CoeW2qzVWy2fhz3WXWIC', + 'version': 'tDNHYe-tSHHr68Th6urfIcXLngT2yJ2jCyZBQLAB5mYC', }, ], 'dep_type': 'cipd',
diff --git a/apps/app_restore_service_factory.cc b/apps/app_restore_service_factory.cc index d717cda..a212d3144 100644 --- a/apps/app_restore_service_factory.cc +++ b/apps/app_restore_service_factory.cc
@@ -32,9 +32,10 @@ AppRestoreServiceFactory::~AppRestoreServiceFactory() = default; -KeyedService* AppRestoreServiceFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +AppRestoreServiceFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { - return new AppRestoreService(context); + return std::make_unique<AppRestoreService>(context); } bool AppRestoreServiceFactory::ServiceIsCreatedWithBrowserContext() const {
diff --git a/apps/app_restore_service_factory.h b/apps/app_restore_service_factory.h index ecf1881d..c66ff56 100644 --- a/apps/app_restore_service_factory.h +++ b/apps/app_restore_service_factory.h
@@ -34,7 +34,7 @@ ~AppRestoreServiceFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; bool ServiceIsCreatedWithBrowserContext() const override; content::BrowserContext* GetBrowserContextToUse(
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index f38b6a2..3f9b6ec 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -79,8 +79,6 @@ "accessibility/accessibility_delegate.h", "accessibility/accessibility_event_handler_manager.cc", "accessibility/accessibility_event_handler_manager.h", - "accessibility/accessibility_notification_controller.cc", - "accessibility/accessibility_notification_controller.h", "accessibility/accessibility_observer.h", "accessibility/autoclick/autoclick_controller.cc", "accessibility/autoclick/autoclick_controller.h",
diff --git a/ash/accessibility/accessibility_controller_impl.cc b/ash/accessibility/accessibility_controller_impl.cc index e9bb54f..89c8c77 100644 --- a/ash/accessibility/accessibility_controller_impl.cc +++ b/ash/accessibility/accessibility_controller_impl.cc
@@ -12,7 +12,6 @@ #include "ash/accelerators/accelerator_controller_impl.h" #include "ash/accessibility/a11y_feature_type.h" -#include "ash/accessibility/accessibility_notification_controller.h" #include "ash/accessibility/accessibility_observer.h" #include "ash/accessibility/autoclick/autoclick_controller.h" #include "ash/accessibility/dictation_nudge_controller.h" @@ -970,14 +969,10 @@ Shell::Get()->session_controller()->AddObserver(this); Shell::Get()->tablet_mode_controller()->AddObserver(this); CreateAccessibilityFeatures(); - - accessibility_notification_controller_ = - std::make_unique<AccessibilityNotificationController>(); } AccessibilityControllerImpl::~AccessibilityControllerImpl() { floating_menu_controller_.reset(); - accessibility_notification_controller_.reset(); } void AccessibilityControllerImpl::CreateAccessibilityFeatures() { @@ -1943,8 +1938,6 @@ void AccessibilityControllerImpl::ShowDictationLanguageUpgradedNudge( const std::string& dictation_locale, const std::string& application_locale) { - // TODO(b:259352600): Move dictation_nudge_controller_ into - // accessibility_notification_controller. dictation_nudge_controller_ = std::make_unique<DictationNudgeController>( dictation_locale, application_locale); dictation_nudge_controller_->ShowNudge(); @@ -2932,14 +2925,4 @@ return dictation_bubble_controller_.get(); } -void AccessibilityControllerImpl::ShowToast(AccessibilityToastType type) { - accessibility_notification_controller_->ShowToast(type); -} - -void AccessibilityControllerImpl::AddShowToastCallbackForTesting( - base::RepeatingClosure callback) { - accessibility_notification_controller_->AddShowToastCallbackForTesting( - std::move(callback)); -} - } // namespace ash
diff --git a/ash/accessibility/accessibility_controller_impl.h b/ash/accessibility/accessibility_controller_impl.h index 0b496067..1a1551a 100644 --- a/ash/accessibility/accessibility_controller_impl.h +++ b/ash/accessibility/accessibility_controller_impl.h
@@ -8,7 +8,6 @@ #include <memory> #include "ash/accessibility/a11y_feature_type.h" -#include "ash/accessibility/accessibility_notification_controller.h" #include "ash/ash_export.h" #include "ash/constants/ash_constants.h" #include "ash/public/cpp/accessibility_controller.h" @@ -472,7 +471,6 @@ const absl::optional<std::vector<DictationBubbleHintType>>& hints) override; void SilenceSpokenFeedback() override; - void ShowToast(AccessibilityToastType type) override; // A confirmation dialog will be shown the first time an accessibility feature // is enabled using the specified accelerator key sequence. Only one dialog @@ -536,8 +534,6 @@ OnDictationKeyboardDialogDismissed(); } - void AddShowToastCallbackForTesting(base::RepeatingClosure callback); - private: // Populate |features_| with the feature of the correct type. void CreateAccessibilityFeatures(); @@ -651,10 +647,6 @@ // Used to control the Dictation bubble UI. std::unique_ptr<DictationBubbleController> dictation_bubble_controller_; - // Used to control accessibility-related notifications. - std::unique_ptr<AccessibilityNotificationController> - accessibility_notification_controller_; - // True if ChromeVox should enable its volume slide gesture. bool enable_chromevox_volume_slide_gesture_ = false;
diff --git a/ash/accessibility/accessibility_controller_test_api_impl.cc b/ash/accessibility/accessibility_controller_test_api_impl.cc index d7fc792e..099087bd 100644 --- a/ash/accessibility/accessibility_controller_test_api_impl.cc +++ b/ash/accessibility/accessibility_controller_test_api_impl.cc
@@ -7,7 +7,6 @@ #include "ash/accelerators/accelerator_controller_impl.h" #include "ash/accessibility/accessibility_controller_impl.h" #include "ash/shell.h" -#include "base/functional/callback.h" namespace ash { @@ -53,12 +52,6 @@ ->DismissDictationKeyboardDialogForTesting(); // IN-TEST } -void AccessibilityControllerTestApiImpl::AddShowToastCallbackForTesting( - base::RepeatingClosure callback) const { - GetController()->AddShowToastCallbackForTesting( - std::move(callback)); // IN-TEST -} - // static std::unique_ptr<AccessibilityControllerTestApi> AccessibilityControllerTestApi::Create() {
diff --git a/ash/accessibility/accessibility_controller_test_api_impl.h b/ash/accessibility/accessibility_controller_test_api_impl.h index bfcbb16..4ad02f3 100644 --- a/ash/accessibility/accessibility_controller_test_api_impl.h +++ b/ash/accessibility/accessibility_controller_test_api_impl.h
@@ -6,7 +6,6 @@ #define ASH_ACCESSIBILITY_ACCESSIBILITY_CONTROLLER_TEST_API_IMPL_H_ #include "ash/public/cpp/test/accessibility_controller_test_api.h" -#include "base/functional/callback_forward.h" namespace ash { @@ -15,10 +14,12 @@ : public AccessibilityControllerTestApi { public: AccessibilityControllerTestApiImpl(); + AccessibilityControllerTestApiImpl( const AccessibilityControllerTestApiImpl&) = delete; AccessibilityControllerTestApiImpl& operator=( const AccessibilityControllerTestApiImpl&) = delete; + ~AccessibilityControllerTestApiImpl() override; // AccessibilityControllerTestApi: @@ -28,8 +29,6 @@ bool IsDictationKeboardDialogShowing() const override; void AcceptDictationKeyboardDialog() override; void DismissDictationKeyboardDialog() override; - void AddShowToastCallbackForTesting( - base::RepeatingClosure callback) const override; }; } // namespace ash
diff --git a/ash/accessibility/accessibility_notification_controller.cc b/ash/accessibility/accessibility_notification_controller.cc deleted file mode 100644 index 90e0adb..0000000 --- a/ash/accessibility/accessibility_notification_controller.cc +++ /dev/null
@@ -1,56 +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 "ash/accessibility/accessibility_notification_controller.h" - -#include "ash/public/cpp/accessibility_controller_enums.h" -#include "ash/public/cpp/system/toast_data.h" -#include "ash/shell.h" -#include "ash/strings/grit/ash_strings.h" -#include "ash/system/toast/toast_manager_impl.h" -#include "ui/accessibility/accessibility_features.h" -#include "ui/base/l10n/l10n_util.h" - -namespace ash { - -namespace { - -const std::string kAccessibilityToastId = "AccessibilityToast"; - -ToastData GetToastData(AccessibilityToastType type) { - switch (type) { - case AccessibilityToastType::kDictationNoFocusedTextField: - return {/*id=*/kAccessibilityToastId, - /*catalog_name=*/ToastCatalogName::kDictationNoFocusedTextField, - /*text=*/ - l10n_util::GetStringUTF16( - IDS_ASH_ACCESSIBILITY_NUDGE_DICTATION_NO_FOCUSED_TEXT_FIELD)}; - } -} - -} // namespace - -AccessibilityNotificationController::AccessibilityNotificationController() = - default; -AccessibilityNotificationController::~AccessibilityNotificationController() = - default; - -void AccessibilityNotificationController::ShowToast( - AccessibilityToastType type) { - if (!::features::IsAccessibilityDictationKeyboardImprovementsEnabled()) { - return; - } - - Shell::Get()->toast_manager()->Show(GetToastData(type)); - if (show_anchored_nudge_callback_for_testing_) { - show_anchored_nudge_callback_for_testing_.Run(); - } -} - -void AccessibilityNotificationController::AddShowToastCallbackForTesting( - base::RepeatingClosure callback) { - show_anchored_nudge_callback_for_testing_ = std::move(callback); -} - -} // namespace ash
diff --git a/ash/accessibility/accessibility_notification_controller.h b/ash/accessibility/accessibility_notification_controller.h deleted file mode 100644 index 366d81b..0000000 --- a/ash/accessibility/accessibility_notification_controller.h +++ /dev/null
@@ -1,33 +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 ASH_ACCESSIBILITY_ACCESSIBILITY_NOTIFICATION_CONTROLLER_H_ -#define ASH_ACCESSIBILITY_ACCESSIBILITY_NOTIFICATION_CONTROLLER_H_ - -#include "ash/ash_export.h" -#include "ash/public/cpp/accessibility_controller_enums.h" -#include "base/functional/callback.h" - -namespace ash { - -// Class that manages showing notifications for accessibility. -class ASH_EXPORT AccessibilityNotificationController { - public: - AccessibilityNotificationController(); - AccessibilityNotificationController( - const AccessibilityNotificationController&) = delete; - AccessibilityNotificationController& operator=( - const AccessibilityNotificationController&) = delete; - ~AccessibilityNotificationController(); - - void ShowToast(AccessibilityToastType type); - void AddShowToastCallbackForTesting(base::RepeatingClosure callback); - - private: - base::RepeatingClosure show_anchored_nudge_callback_for_testing_; -}; - -} // namespace ash - -#endif // ASH_ACCESSIBILITY_ACCESSIBILITY_NOTIFICATION_CONTROLLER_H_
diff --git a/ash/ambient/backdrop/ambient_backend_controller_impl.cc b/ash/ambient/backdrop/ambient_backend_controller_impl.cc index de34897..93338bdb 100644 --- a/ash/ambient/backdrop/ambient_backend_controller_impl.cc +++ b/ash/ambient/backdrop/ambient_backend_controller_impl.cc
@@ -414,7 +414,7 @@ } void AmbientBackendControllerImpl::UpdateSettings( - const AmbientSettings& settings, + const AmbientSettings settings, UpdateSettingsCallback callback) { auto* ambient_controller = Shell::Get()->ambient_controller(); @@ -613,7 +613,7 @@ const std::string& gaia_id, const std::string& access_token) { if (gaia_id.empty() || access_token.empty()) { - std::move(callback).Run(/*success=*/false); + std::move(callback).Run(/*success=*/false, settings); return; } @@ -651,7 +651,7 @@ static_cast<int>(ambient::AmbientSettingsToPhotoSource(settings))); } - std::move(callback).Run(success); + std::move(callback).Run(success, settings); } void AmbientBackendControllerImpl::FetchPersonalAlbumsInternal(
diff --git a/ash/ambient/backdrop/ambient_backend_controller_impl.h b/ash/ambient/backdrop/ambient_backend_controller_impl.h index 5b0408b..9aecee2 100644 --- a/ash/ambient/backdrop/ambient_backend_controller_impl.h +++ b/ash/ambient/backdrop/ambient_backend_controller_impl.h
@@ -35,7 +35,7 @@ OnScreenUpdateInfoFetchedCallback callback) override; void FetchPreviewImages(const gfx::Size& preview_size, OnPreviewImagesFetchedCallback callback) override; - void UpdateSettings(const AmbientSettings& settings, + void UpdateSettings(const AmbientSettings settings, UpdateSettingsCallback callback) override; void FetchSettingsAndAlbums( int banner_width,
diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd index 9364377..26560999 100644 --- a/ash/ash_strings.grd +++ b/ash/ash_strings.grd
@@ -1333,11 +1333,6 @@ With dictation, you can type using your voice. Press the dictation key or select the microphone icon at the bottom of the screen when you’re on a text field. Your dictation language is set to <ph name="language">$1<ex>English (United States)</ex></ph>. Speech is sent to Google for processing. You can change the dictation language anytime in Settings > Accessibility. </message> - <!-- Accessibility nudges --> - <message name="IDS_ASH_ACCESSIBILITY_NUDGE_DICTATION_NO_FOCUSED_TEXT_FIELD" desc="Displayed in a nudge when Dictation is stopped automatically because there is no focused text field."> - Go to a text field to use Dictation - </message> - <message name="IDS_ASH_STATUS_TRAY_ACCESSIBILITY_VIRTUAL_KEYBOARD" desc="The label used in the accessibility menu of the system tray to toggle on/off the onscreen keyboard."> On-screen keyboard </message>
diff --git a/ash/ash_strings_grd/IDS_ASH_ACCESSIBILITY_NUDGE_DICTATION_NO_FOCUSED_TEXT_FIELD.png.sha1 b/ash/ash_strings_grd/IDS_ASH_ACCESSIBILITY_NUDGE_DICTATION_NO_FOCUSED_TEXT_FIELD.png.sha1 deleted file mode 100644 index b37bde2..0000000 --- a/ash/ash_strings_grd/IDS_ASH_ACCESSIBILITY_NUDGE_DICTATION_NO_FOCUSED_TEXT_FIELD.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -cc8d39b5868c8f202c7edc14eedd27e7e64855dd \ No newline at end of file
diff --git a/ash/components/arc/mojom/keymint.mojom b/ash/components/arc/mojom/keymint.mojom index b9d6df67..1ea14f5d 100644 --- a/ash/components/arc/mojom/keymint.mojom +++ b/ash/components/arc/mojom/keymint.mojom
@@ -45,20 +45,20 @@ // Generates a new cryptographic key, specifying associated parameters, which // must be cryptographically bound to the key. GenerateKey@2(GenerateKeyRequest request) => - (int32 error, KeyCreationResult? result); + (KeyCreationResultOrError response); // Imports key material into an IKeyMintDevice. ImportKey@3(ImportKeyRequest request) => - (int32 error, KeyCreationResult? result); + (KeyCreationResultOrError response); // Securely imports a key, or key pair, returning a key blob and a description // of the imported key. ImportWrappedKey@4(ImportWrappedKeyRequest request) => - (int32 error, KeyCreationResult? result); + (KeyCreationResultOrError response); // Upgrades an old key blob. UpgradeKey@5(UpgradeKeyRequest request) => - (int32 error, array<uint8>? upgraded_key_blob); + (ByteArrayOrError response); // Deletes the key, or key pair, associated with the key blob. DeleteKey@6(array<uint8> key_blob) => (int32 error); @@ -74,7 +74,7 @@ // Begins a cryptographic operation using the specified key. If all is well, // begin() must create an KeyMintOperation handle which will be used to // perform the cryptographic operation. - Begin@9(BeginRequest request) => (int32 error, BeginResult? result); + Begin@9(BeginRequest request) => (BeginResultOrError response); // Called by client to notify the IKeyMintDevice that the device is now // locked, and keys with the UNLOCKED_DEVICE_REQUIRED tag should no longer be @@ -105,23 +105,23 @@ // |ephemeral_key_blob| is the per-boot ephemeral keyblob that should // henceforth be used in place of the input |storage_key_blob|. ConvertStorageKeyToEphemeral@12(array<uint8> storage_key_blob) => - (int32 error, array<uint8>? ephemeral_key_blob); + (ByteArrayOrError response); // Returns KeyMint-enforced parameters associated with the provided key. // // |key_characteristics| is the characteristics of the generated key. GetKeyCharacteristics@13(GetKeyCharacteristicsRequest request) => - (int32 error, array<KeyCharacteristics>? key_characteristics); + (KeyCharacteristicsArrayOrError response); // Returns a 16-byte random challenge nonce, used to prove freshness when // exchanging root of trust data. This method may only be implemented by // StrongBox KeyMint. TEE KeyMint implementations must return error. - GetRootOfTrustChallenge@14() => (int32 error, array<uint8, 16>? challenge); + GetRootOfTrustChallenge@14() => (ByteArrayOrError response); // Returns the TEE KeyMint Root of Trust data. This method is required for TEE // KeyMint. StrongBox KeyMint implementations MUST return error. GetRootOfTrust@15(array<uint8, 16> challenge) => - (int32 error, array<uint8>? root_of_trust); + (ByteArrayOrError response); // Delivers the TEE KeyMint Root of Trust data to StrongBox KeyMint. // The implementation must verify the MAC on the RootOfTrust data. If it is @@ -140,11 +140,11 @@ // Provides data to, and possibly receives output from, an ongoing // cryptographic operation begun with begin(). - Update@18(UpdateRequest request) => (int32 error, array<uint8>? output); + Update@18(UpdateRequest request) => (ByteArrayOrError response); // Finalizes a cryptographic operation begun with begin() and invalidates the // operation. - Finish@19(FinishRequest request) => (int32 error, array<uint8>? output); + Finish@19(FinishRequest request) => (ByteArrayOrError response); // Aborts this cryptographic operation. // |op_handle| is the handle of the operation to abort. @@ -384,21 +384,37 @@ array<uint8>? confirmation_token; }; +union KeyCharacteristicsArrayOrError { + array<KeyCharacteristics> key_characteristics; + int32 error; +}; + +union BeginResultOrError { + BeginResult begin_result; + int32 error; +}; + +// Used for Key Creation methods. +union KeyCreationResultOrError { + KeyCreationResult key_creation_result; + int32 error; +}; + // Result used for Array outputs. union ByteArrayOrError { - int32 error; array<uint8> output; + int32 error; }; // Result used for GetSharedSecretParameters. union SharedSecretParametersOrError { - int32 error; SharedSecretParameters secret_parameters; + int32 error; }; union TimeStampTokenOrError { - int32 error; TimeStampToken timestamp_token; + int32 error; }; // String used as label in the shared key derivation.
diff --git a/ash/constants/notifier_catalogs.h b/ash/constants/notifier_catalogs.h index d490049..8082d5a 100644 --- a/ash/constants/notifier_catalogs.h +++ b/ash/constants/notifier_catalogs.h
@@ -273,8 +273,7 @@ kCopyGifToClipboardAction = 42, // [Deprecated] kVideoConferenceTrayUseWhileDisabled = 43, kBatterySaverDisabled = 44, - kDictationNoFocusedTextField = 45, - kMaxValue = kDictationNoFocusedTextField + kMaxValue = kBatterySaverDisabled }; } // namespace ash
diff --git a/ash/public/cpp/accessibility_controller.h b/ash/public/cpp/accessibility_controller.h index e2173b903..c1f82228f 100644 --- a/ash/public/cpp/accessibility_controller.h +++ b/ash/public/cpp/accessibility_controller.h
@@ -210,9 +210,6 @@ // Cancels all of spoken feedback's current and queued speech immediately. virtual void SilenceSpokenFeedback() = 0; - // Shows an accessibility-related toast. - virtual void ShowToast(AccessibilityToastType type) = 0; - protected: AccessibilityController(); virtual ~AccessibilityController();
diff --git a/ash/public/cpp/accessibility_controller_enums.h b/ash/public/cpp/accessibility_controller_enums.h index cd8ef4e..8d645ab 100644 --- a/ash/public/cpp/accessibility_controller_enums.h +++ b/ash/public/cpp/accessibility_controller_enums.h
@@ -232,12 +232,6 @@ kOnlyPumpkinDownloaded, }; -// The types of accessibility-related toasts. This enum should be kept in sync -// with chrome.accessibilityPrivate.ToastType. -enum class AccessibilityToastType { - kDictationNoFocusedTextField, -}; - } // namespace ash #endif // ASH_PUBLIC_CPP_ACCESSIBILITY_CONTROLLER_ENUMS_H_
diff --git a/ash/public/cpp/ambient/ambient_backend_controller.h b/ash/public/cpp/ambient/ambient_backend_controller.h index 1dff6c6..46225d8f 100644 --- a/ash/public/cpp/ambient/ambient_backend_controller.h +++ b/ash/public/cpp/ambient/ambient_backend_controller.h
@@ -97,7 +97,8 @@ base::OnceCallback<void(const ScreenUpdate&)>; using OnPreviewImagesFetchedCallback = base::OnceCallback<void(const std::vector<GURL>& preview_urls)>; - using UpdateSettingsCallback = base::OnceCallback<void(bool success)>; + using UpdateSettingsCallback = + base::OnceCallback<void(bool success, const AmbientSettings& settings)>; // TODO(wutao): Make |settings| move only. using OnSettingsAndAlbumsFetchedCallback = base::OnceCallback<void(const absl::optional<AmbientSettings>& settings, @@ -132,7 +133,7 @@ OnPreviewImagesFetchedCallback callback) = 0; // Update ambient mode Settings to server. - virtual void UpdateSettings(const AmbientSettings& settings, + virtual void UpdateSettings(const AmbientSettings settings, UpdateSettingsCallback callback) = 0; // Fetch the Settings and albums as one API.
diff --git a/ash/public/cpp/ambient/fake_ambient_backend_controller_impl.cc b/ash/public/cpp/ambient/fake_ambient_backend_controller_impl.cc index f78939c..896c6b7b 100644 --- a/ash/public/cpp/ambient/fake_ambient_backend_controller_impl.cc +++ b/ash/public/cpp/ambient/fake_ambient_backend_controller_impl.cc
@@ -139,16 +139,17 @@ } void FakeAmbientBackendControllerImpl::UpdateSettings( - const AmbientSettings& settings, + const AmbientSettings settings, UpdateSettingsCallback callback) { // |show_weather| should always be set to true. DCHECK(settings.show_weather); current_temperature_unit_ = settings.temperature_unit; if (update_auto_reply_.has_value()) { - std::move(callback).Run(update_auto_reply_.value()); + std::move(callback).Run(update_auto_reply_.value(), settings); return; } pending_update_callback_ = std::move(callback); + pending_settings_ = settings; } void FakeAmbientBackendControllerImpl::FetchSettingsAndAlbums( @@ -212,7 +213,7 @@ if (!pending_update_callback_) return; - std::move(pending_update_callback_).Run(success); + std::move(pending_update_callback_).Run(success, pending_settings_); } bool FakeAmbientBackendControllerImpl::IsUpdateSettingsPending() const {
diff --git a/ash/public/cpp/ambient/fake_ambient_backend_controller_impl.h b/ash/public/cpp/ambient/fake_ambient_backend_controller_impl.h index 43aa5293..1669fde 100644 --- a/ash/public/cpp/ambient/fake_ambient_backend_controller_impl.h +++ b/ash/public/cpp/ambient/fake_ambient_backend_controller_impl.h
@@ -33,7 +33,7 @@ OnScreenUpdateInfoFetchedCallback callback) override; void FetchPreviewImages(const gfx::Size& preview_size, OnPreviewImagesFetchedCallback callback) override; - void UpdateSettings(const AmbientSettings& settings, + void UpdateSettings(const AmbientSettings settings, UpdateSettingsCallback callback) override; void FetchSettingsAndAlbums( int banner_width, @@ -104,6 +104,8 @@ UpdateSettingsCallback pending_update_callback_; + AmbientSettings pending_settings_; + absl::optional<bool> update_auto_reply_; absl::optional<WeatherInfo> weather_info_;
diff --git a/ash/public/cpp/app_list/app_list_types.cc b/ash/public/cpp/app_list/app_list_types.cc index a45e9d3..c2bd792 100644 --- a/ash/public/cpp/app_list/app_list_types.cc +++ b/ash/public/cpp/app_list/app_list_types.cc
@@ -426,6 +426,9 @@ // Privacy. case kKeyboardShortcutPrivacyScreenToggle: return &kKsvPrivacyScreenToggleIcon; + // Settings. + case kKeyboardShortcutSettings: + return &kKsSettingsIcon; // Snapshot. case kKeyboardShortcutSnapshot: return &kKsvSnapshotIcon;
diff --git a/ash/public/cpp/app_list/app_list_types.h b/ash/public/cpp/app_list/app_list_types.h index 107bc2e..82c2060 100644 --- a/ash/public/cpp/app_list/app_list_types.h +++ b/ash/public/cpp/app_list/app_list_types.h
@@ -623,6 +623,7 @@ kKeyboardShortcutLeft, kKeyboardShortcutRight, kKeyboardShortcutPrivacyScreenToggle, + kKeyboardShortcutSettings, kKeyboardShortcutSnapshot, };
diff --git a/ash/public/cpp/test/accessibility_controller_test_api.h b/ash/public/cpp/test/accessibility_controller_test_api.h index d3546c9..caf12a5e 100644 --- a/ash/public/cpp/test/accessibility_controller_test_api.h +++ b/ash/public/cpp/test/accessibility_controller_test_api.h
@@ -8,7 +8,6 @@ #include <memory> #include "ash/ash_export.h" -#include "base/functional/callback_forward.h" namespace ash { @@ -28,8 +27,6 @@ virtual bool IsDictationKeboardDialogShowing() const = 0; virtual void AcceptDictationKeyboardDialog() = 0; virtual void DismissDictationKeyboardDialog() = 0; - virtual void AddShowToastCallbackForTesting( - base::RepeatingClosure callback) const = 0; }; } // namespace ash
diff --git a/ash/resources/vector_icons/BUILD.gn b/ash/resources/vector_icons/BUILD.gn index 8205232..0411af29 100644 --- a/ash/resources/vector_icons/BUILD.gn +++ b/ash/resources/vector_icons/BUILD.gn
@@ -154,6 +154,7 @@ "ks_media_play_pause.icon", "ks_media_track_next.icon", "ks_media_track_previous.icon", + "ks_settings.icon", "ksv_arrow_down.icon", "ksv_arrow_left.icon", "ksv_arrow_right.icon",
diff --git a/ash/resources/vector_icons/ks_settings.icon b/ash/resources/vector_icons/ks_settings.icon new file mode 100644 index 0000000..1c6edb1 --- /dev/null +++ b/ash/resources/vector_icons/ks_settings.icon
@@ -0,0 +1,92 @@ +// 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. + +CANVAS_DIMENSIONS, 20, +PATH_COLOR_ARGB, 0xFF, 0x1B, 0x1B, 0x1F, +MOVE_TO, 11.48f, 18, +H_LINE_TO, 8.52f, +CUBIC_TO, 7.93f, 18, 7.43f, 17.58f, 7.36f, 17.01f, +LINE_TO, 7.14f, 15.53f, +CUBIC_TO, 6.93f, 15.42f, 6.72f, 15.31f, 6.51f, 15.17f, +LINE_TO, 5.07f, 15.74f, +CUBIC_TO, 4.51f, 15.94f, 3.9f, 15.71f, 3.62f, 15.23f, +LINE_TO, 2.16f, 12.75f, +CUBIC_TO, 1.88f, 12.24f, 2, 11.63f, 2.45f, 11.28f, +LINE_TO, 3.67f, 10.36f, +CUBIC_TO, 3.66f, 10.24f, 3.66f, 10.12f, 3.66f, 10, +CUBIC_TO, 3.66f, 9.88f, 3.66f, 9.75f, 3.67f, 9.64f, +LINE_TO, 2.46f, 8.71f, +CUBIC_TO, 1.98f, 8.36f, 1.87f, 7.72f, 2.16f, 7.24f, +LINE_TO, 3.64f, 4.75f, +CUBIC_TO, 3.91f, 4.26f, 4.53f, 4.05f, 5.07f, 4.26f, +LINE_TO, 6.52f, 4.83f, +CUBIC_TO, 6.73f, 4.69f, 6.94f, 4.58f, 7.14f, 4.47f, +LINE_TO, 7.36f, 2.98f, +CUBIC_TO, 7.43f, 2.43f, 7.93f, 2, 8.51f, 2, +H_LINE_TO, 11.47f, +CUBIC_TO, 12.06f, 2, 12.56f, 2.42f, 12.63f, 2.99f, +LINE_TO, 12.85f, 4.47f, +CUBIC_TO, 13.06f, 4.58f, 13.27f, 4.69f, 13.48f, 4.83f, +LINE_TO, 14.92f, 4.26f, +CUBIC_TO, 15.48f, 4.06f, 16.1f, 4.29f, 16.37f, 4.77f, +LINE_TO, 17.84f, 7.26f, +CUBIC_TO, 18.13f, 7.77f, 18, 8.38f, 17.56f, 8.72f, +LINE_TO, 16.34f, 9.65f, +CUBIC_TO, 16.35f, 9.77f, 16.36f, 9.89f, 16.36f, 10.01f, +CUBIC_TO, 16.36f, 10.14f, 16.35f, 10.25f, 16.34f, 10.37f, +LINE_TO, 17.56f, 11.3f, +CUBIC_TO, 18, 11.65f, 18.13f, 12.26f, 17.85f, 12.75f, +LINE_TO, 16.36f, 15.27f, +CUBIC_TO, 16.09f, 15.75f, 15.48f, 15.97f, 14.93f, 15.76f, +LINE_TO, 13.49f, 15.2f, +CUBIC_TO, 13.28f, 15.33f, 13.07f, 15.45f, 12.86f, 15.56f, +LINE_TO, 12.65f, 17.05f, +CUBIC_TO, 12.57f, 17.58f, 12.07f, 18, 11.48f, 18, +CLOSE, +MOVE_TO, 8.95f, 16, +H_LINE_TO, 11.06f, +LINE_TO, 11.34f, 14.15f, +LINE_TO, 11.75f, 13.99f, +CUBIC_TO, 12.09f, 13.85f, 12.42f, 13.67f, 12.78f, 13.42f, +LINE_TO, 13.12f, 13.17f, +LINE_TO, 14.94f, 13.87f, +LINE_TO, 16, 12.12f, +LINE_TO, 14.45f, 10.97f, +LINE_TO, 14.5f, 10.57f, +CUBIC_TO, 14.52f, 10.38f, 14.55f, 10.2f, 14.55f, 10, +CUBIC_TO, 14.55f, 9.8f, 14.52f, 9.61f, 14.5f, 9.43f, +LINE_TO, 14.45f, 9.03f, +LINE_TO, 16, 7.88f, +LINE_TO, 14.94f, 6.13f, +LINE_TO, 13.11f, 6.83f, +LINE_TO, 12.76f, 6.57f, +CUBIC_TO, 12.44f, 6.34f, 12.09f, 6.15f, 11.74f, 6.01f, +LINE_TO, 11.34f, 5.85f, +LINE_TO, 11.06f, 4, +H_LINE_TO, 8.95f, +LINE_TO, 8.66f, 5.85f, +LINE_TO, 8.26f, 6.01f, +CUBIC_TO, 7.92f, 6.15f, 7.58f, 6.33f, 7.23f, 6.58f, +LINE_TO, 6.89f, 6.82f, +LINE_TO, 5.06f, 6.13f, +LINE_TO, 4, 7.87f, +LINE_TO, 5.55f, 9.02f, +LINE_TO, 5.5f, 9.43f, +CUBIC_TO, 5.48f, 9.61f, 5.46f, 9.81f, 5.46f, 10, +CUBIC_TO, 5.46f, 10.19f, 5.47f, 10.39f, 5.5f, 10.57f, +LINE_TO, 5.55f, 10.97f, +LINE_TO, 4, 12.12f, +LINE_TO, 5.06f, 13.87f, +LINE_TO, 6.89f, 13.17f, +LINE_TO, 7.23f, 13.43f, +CUBIC_TO, 7.56f, 13.67f, 7.89f, 13.85f, 8.25f, 13.99f, +LINE_TO, 8.66f, 14.15f, +LINE_TO, 8.95f, 16, +CLOSE, +MOVE_TO, 10, 12.5f, +CUBIC_TO, 11.38f, 12.5f, 12.5f, 11.38f, 12.5f, 10, +CUBIC_TO, 12.5f, 8.62f, 11.38f, 7.5f, 10, 7.5f, +CUBIC_TO, 8.62f, 7.5f, 7.5f, 8.62f, 7.5f, 10, +CUBIC_TO, 7.5f, 11.38f, 8.62f, 12.5f, 10, 12.5f, +CLOSE
diff --git a/ash/style/combobox.cc b/ash/style/combobox.cc index 2da414e..e872d7c 100644 --- a/ash/style/combobox.cc +++ b/ash/style/combobox.cc
@@ -71,7 +71,8 @@ class Combobox::ComboboxMenuView : public views::View { public: METADATA_HEADER(ComboboxMenuView); - explicit ComboboxMenuView(Combobox* combobox) : combobox_(combobox) { + explicit ComboboxMenuView(base::WeakPtr<Combobox> combobox) + : combobox_(combobox) { SetLayoutManager(std::make_unique<views::FillLayout>()); // Create a radio buttons group for item list. @@ -101,8 +102,7 @@ // Build a radio button group according to current combobox model. for (size_t i = 0; i < combobox_->model_->GetItemCount(); i++) { auto* item = menu_item_group_->AddButton( - base::BindRepeating(&Combobox::MenuSelectionAt, - base::Unretained(combobox_), i), + base::BindRepeating(&Combobox::MenuSelectionAt, combobox_, i), combobox_->model_->GetDropDownTextAt(i)); item->SetLabelStyle(TypographyToken::kCrosButton2); item->SetLabelColorId(kTextAndIconColorId); @@ -111,7 +111,7 @@ } private: - const raw_ptr<Combobox> combobox_; + const base::WeakPtr<Combobox> combobox_; // Owned by this. raw_ptr<RadioButtonGroup> menu_item_group_; @@ -268,6 +268,15 @@ } } +std::u16string Combobox::GetTextForRow(size_t row) const { + return model_->IsItemSeparatorAt(row) ? std::u16string() + : model_->GetItemAt(row); +} + +void Combobox::SelectMenuItemForTest(size_t row) { + MenuSelectionAt(row); +} + gfx::Rect Combobox::GetExpectedMenuBounds() const { CHECK(menu_view_); return gfx::Rect(GetBoundsInScreen().bottom_left() + kMenuOffset, @@ -297,7 +306,8 @@ return; } - auto menu_view = std::make_unique<ComboboxMenuView>(this); + auto menu_view = + std::make_unique<ComboboxMenuView>(weak_ptr_factory_.GetWeakPtr()); menu_view_ = menu_view.get(); views::Widget::InitParams params(views::Widget::InitParams::TYPE_POPUP); @@ -317,6 +327,7 @@ SetBackground(views::CreateThemedRoundedRectBackground( kComboboxActiveColorId, kComboboxRoundedCorners, /*for_border_thickness=*/0)); + RequestFocus(); } void Combobox::CloseDropDownMenu() { @@ -359,6 +370,92 @@ observation_.Reset(); } +bool Combobox::SkipDefaultKeyEventProcessing(const ui::KeyEvent& e) { + // Escape should close the drop down list when it is active, not host UI. + if (e.key_code() != ui::VKEY_ESCAPE || e.IsShiftDown() || e.IsControlDown() || + e.IsAltDown() || e.IsAltGrDown()) { + return false; + } + return IsMenuRunning(); +} + +bool Combobox::OnKeyPressed(const ui::KeyEvent& e) { + CHECK_EQ(e.type(), ui::ET_KEY_PRESSED); + + CHECK(selected_index_.has_value()); + CHECK_LT(selected_index_.value(), model_->GetItemCount()); + + const auto index_at_or_after = [](ui::ComboboxModel* model, + size_t index) -> absl::optional<size_t> { + for (; index < model->GetItemCount(); ++index) { + if (!model->IsItemSeparatorAt(index) && model->IsItemEnabledAt(index)) { + return index; + } + } + return absl::nullopt; + }; + + const auto index_before = [](ui::ComboboxModel* model, + size_t index) -> absl::optional<size_t> { + for (; index > 0; --index) { + const auto prev = index - 1; + if (!model->IsItemSeparatorAt(prev) && model->IsItemEnabledAt(prev)) { + return prev; + } + } + return absl::nullopt; + }; + + absl::optional<size_t> new_index; + switch (e.key_code()) { + // Show the menu on F4 without modifiers. + case ui::VKEY_F4: + if (e.IsAltDown() || e.IsAltGrDown() || e.IsControlDown()) { + return false; + } + ShowDropDownMenu(); + return true; + + // Move to the next item if any, or show the menu on Alt+Down like Windows. + case ui::VKEY_DOWN: + if (e.IsAltDown()) { + ShowDropDownMenu(); + return true; + } + new_index = index_at_or_after(model_, selected_index_.value() + 1); + break; + + // Move to the end of the list. + case ui::VKEY_END: + case ui::VKEY_NEXT: // Page down. + new_index = index_before(model_, model_->GetItemCount()); + break; + + // Move to the beginning of the list. + case ui::VKEY_HOME: + case ui::VKEY_PRIOR: // Page up. + new_index = index_at_or_after(model_, 0); + break; + + // Move to the previous item if any. + case ui::VKEY_UP: + new_index = index_before(model_, selected_index_.value()); + break; + + case ui::VKEY_RETURN: + case ui::VKEY_SPACE: + ShowDropDownMenu(); + return true; + default: + return false; + } + + if (new_index.has_value()) { + SetSelectedIndex(new_index); + } + return true; +} + BEGIN_METADATA(Combobox, views::Button) END_METADATA
diff --git a/ash/style/combobox.h b/ash/style/combobox.h index 5047af5..3256fc3 100644 --- a/ash/style/combobox.h +++ b/ash/style/combobox.h
@@ -57,6 +57,11 @@ void SetCallback(PressedCallback callback) override; void OnBoundsChanged(const gfx::Rect& previous_bounds) override; + std::u16string GetTextForRow(size_t row) const; + + // Test method exposing MenuSelectionAt. + void SelectMenuItemForTest(size_t index); + private: class ComboboxMenuView; class ComboboxEventHandler; @@ -81,6 +86,10 @@ void OnComboboxModelChanged(ui::ComboboxModel* model) override; void OnComboboxModelDestroying(ui::ComboboxModel* model) override; + // views::Button: + bool SkipDefaultKeyEventProcessing(const ui::KeyEvent& e) override; + bool OnKeyPressed(const ui::KeyEvent& e) override; + // Optionally used to tie the lifetime of the model to this combobox. See // constructor. std::unique_ptr<ui::ComboboxModel> owned_model_; @@ -101,12 +110,12 @@ // menu. std::unique_ptr<ComboboxEventHandler> event_handler_; - // Drop down menu widget. - views::UniqueWidgetPtr menu_; - // Drop down menu view owned by menu widget. raw_ptr<ComboboxMenuView> menu_view_ = nullptr; + // Drop down menu widget. + views::UniqueWidgetPtr menu_; + // Like MenuButton, we use a time object in order to keep track of when the // combobox was closed. The time is used for simulating menu behavior; that // is, if the menu is shown and the button is pressed, we need to close the @@ -117,6 +126,8 @@ base::ScopedObservation<ui::ComboboxModel, ui::ComboboxModelObserver> observation_{this}; + + base::WeakPtrFactory<Combobox> weak_ptr_factory_{this}; }; } // namespace ash
diff --git a/ash/system/unified/tasks_bubble_view.cc b/ash/system/unified/tasks_bubble_view.cc index eef85fbd..cbfcfc66 100644 --- a/ash/system/unified/tasks_bubble_view.cc +++ b/ash/system/unified/tasks_bubble_view.cc
@@ -18,6 +18,7 @@ #include "ash/shell.h" #include "ash/strings/grit/ash_strings.h" #include "ash/style/ash_color_id.h" +#include "ash/style/combobox.h" #include "ash/system/unified/glanceable_tray_child_bubble.h" #include "ash/system/unified/tasks_combobox_model.h" #include "base/strings/utf_string_conversions.h" @@ -33,7 +34,6 @@ #include "ui/views/background.h" #include "ui/views/controls/button/button.h" #include "ui/views/controls/button/label_button.h" -#include "ui/views/controls/combobox/combobox.h" #include "ui/views/controls/image_view.h" #include "ui/views/layout/box_layout.h" #include "ui/views/layout/flex_layout_view.h" @@ -150,17 +150,15 @@ tasks_combobox_model_ = std::make_unique<TasksComboboxModel>(task_list); task_list_combo_box_view_ = tasks_header_view_->AddChildView( - std::make_unique<views::Combobox>(tasks_combobox_model_.get())); + std::make_unique<Combobox>(tasks_combobox_model_.get())); task_list_combo_box_view_->SetID( base::to_underlying(GlanceablesViewId::kTasksBubbleComboBox)); - task_list_combo_box_view_->SetSizeToLargestLabel(false); combobox_view_observation_.Observe(task_list_combo_box_view_); - task_list_combo_box_view_->SetTooltipTextAndAccessibleName( - l10n_util::GetStringUTF16( - IDS_GLANCEABLES_TASKS_DROPDOWN_ACCESSIBLE_NAME)); + task_list_combo_box_view_->SetTooltipText(l10n_util::GetStringUTF16( + IDS_GLANCEABLES_TASKS_DROPDOWN_ACCESSIBLE_NAME)); task_list_combo_box_view_->SetAccessibleDescription(u""); - task_list_combo_box_view_->SetCallback(base::BindRepeating( + task_list_combo_box_view_->SetSelectionChangedCallback(base::BindRepeating( &TasksBubbleView::SelectedTasksListChanged, base::Unretained(this))); task_list_combo_box_view_->SetSelectedIndex(0);
diff --git a/ash/system/unified/tasks_bubble_view.h b/ash/system/unified/tasks_bubble_view.h index fc067b62..42f4c00 100644 --- a/ash/system/unified/tasks_bubble_view.h +++ b/ash/system/unified/tasks_bubble_view.h
@@ -16,13 +16,13 @@ #include "ui/views/view_observer.h" namespace views { -class Combobox; class ImageView; class LabelButton; } // namespace views namespace ash { +class Combobox; class GlanceablesListFooterView; class GlanceablesProgressBarView; class TasksComboboxModel; @@ -111,7 +111,7 @@ // Owned by views hierarchy. raw_ptr<views::FlexLayoutView, ExperimentalAsh> tasks_header_view_ = nullptr; raw_ptr<views::ImageView, ExperimentalAsh> task_icon_view_ = nullptr; - raw_ptr<views::Combobox, ExperimentalAsh> task_list_combo_box_view_ = nullptr; + raw_ptr<Combobox, ExperimentalAsh> task_list_combo_box_view_ = nullptr; raw_ptr<views::FlexLayoutView, ExperimentalAsh> button_container_ = nullptr; raw_ptr<views::View, ExperimentalAsh> task_items_container_view_ = nullptr; raw_ptr<views::LabelButton, ExperimentalAsh> add_new_task_button_ = nullptr;
diff --git a/ash/system/unified/tasks_bubble_view_unittest.cc b/ash/system/unified/tasks_bubble_view_unittest.cc index 3ed3c6e..d11c2ab 100644 --- a/ash/system/unified/tasks_bubble_view_unittest.cc +++ b/ash/system/unified/tasks_bubble_view_unittest.cc
@@ -12,6 +12,7 @@ #include "ash/glanceables/tasks/glanceables_task_view.h" #include "ash/public/cpp/test/test_new_window_delegate.h" #include "ash/shell.h" +#include "ash/style/combobox.h" #include "ash/system/tray/detailed_view_delegate.h" #include "ash/system/unified/tasks_bubble_view.h" #include "ash/test/ash_test_base.h" @@ -87,8 +88,8 @@ AshTestBase::TearDown(); } - views::Combobox* GetComboBoxView() const { - return views::AsViewClass<views::Combobox>(view_->GetViewByID( + Combobox* GetComboBoxView() const { + return views::AsViewClass<Combobox>(view_->GetViewByID( base::to_underlying(GlanceablesViewId::kTasksBubbleComboBox))); } @@ -125,6 +126,10 @@ return new_window_delegate_; } + void MenuSelectionAt(int index) { + GetComboBoxView()->SelectMenuItemForTest(index); + } + private: base::test::ScopedFeatureList feature_list_{features::kGlanceablesV2}; AccountId account_id_ = AccountId::FromUserEmail("test_user@gmail.com"); @@ -148,13 +153,37 @@ base::RunLoop().RunUntilIdle(); EXPECT_TRUE(IsMenuRunning()); - // Select the next task list using keyboard navigation. - PressAndReleaseKey(ui::KeyboardCode::VKEY_DOWN); + // Select the second task list using keyboard navigation. PressAndReleaseKey(ui::KeyboardCode::VKEY_DOWN); PressAndReleaseKey(ui::KeyboardCode::VKEY_RETURN); // Verify the number of items in task_items_container_view()->children(). EXPECT_EQ(GetTaskItemsContainerView()->children().size(), 3u); + + // Verify that tapping on combobox opens the selection menu. + GestureTapOn(GetComboBoxView()); + base::RunLoop().RunUntilIdle(); + EXPECT_TRUE(IsMenuRunning()); + + // Select the first task list using keyboard navigation. + PressAndReleaseKey(ui::KeyboardCode::VKEY_UP); + PressAndReleaseKey(ui::KeyboardCode::VKEY_RETURN); + + // Verify the number of items in task_items_container_view()->children(). + EXPECT_EQ(GetTaskItemsContainerView()->children().size(), 2u); + + // Verify that tapping on combobox opens the selection menu. + GestureTapOn(GetComboBoxView()); + base::RunLoop().RunUntilIdle(); + EXPECT_TRUE(IsMenuRunning()); + + // Select the third task list using keyboard navigation. + PressAndReleaseKey(ui::KeyboardCode::VKEY_DOWN); + PressAndReleaseKey(ui::KeyboardCode::VKEY_DOWN); + PressAndReleaseKey(ui::KeyboardCode::VKEY_RETURN); + + // Verify the number of items in task_items_container_view()->children(). + EXPECT_EQ(GetTaskItemsContainerView()->children().size(), 0u); } TEST_F(TasksBubbleViewTest, MarkTaskAsComplete) { @@ -191,7 +220,7 @@ // Switch to the empty task list. ASSERT_EQ(GetComboBoxView()->GetTextForRow(2), u"Task List 3 Title (empty)"); - GetComboBoxView()->MenuSelectionAt(2); + MenuSelectionAt(2); EXPECT_FALSE(GetTaskItemsContainerView()->GetVisible()); EXPECT_TRUE(GetTaskItemsContainerView()->children().empty()); EXPECT_TRUE(GetAddNewTaskButton()->GetVisible()); @@ -208,7 +237,7 @@ EXPECT_FALSE(GetProgressBar()->GetVisible()); // Switch to another task list, the progress bar should become visible. - GetComboBoxView()->MenuSelectionAt(2); + MenuSelectionAt(2); EXPECT_TRUE(GetProgressBar()->GetVisible()); // After replying to pending callbacks, the progress bar should become hidden.
diff --git a/base/apple/dispatch_source_mach.cc b/base/apple/dispatch_source_mach.cc index 8b1bf023..e9df5fa34 100644 --- a/base/apple/dispatch_source_mach.cc +++ b/base/apple/dispatch_source_mach.cc
@@ -6,7 +6,7 @@ #include "base/apple/scoped_dispatch_object.h" -namespace base { +namespace base::apple { struct DispatchSourceMach::Storage { // The dispatch queue used to service the source_. @@ -62,4 +62,4 @@ return storage_->queue.get(); } -} // namespace base +} // namespace base::apple
diff --git a/base/apple/dispatch_source_mach.h b/base/apple/dispatch_source_mach.h index 6b7519d..e6289ba 100644 --- a/base/apple/dispatch_source_mach.h +++ b/base/apple/dispatch_source_mach.h
@@ -11,7 +11,7 @@ #include "base/base_export.h" -namespace base { +namespace base::apple { // This class encapsulates a MACH_RECV dispatch source. When this object is // destroyed, the source will be cancelled and it will wait for the source @@ -50,6 +50,6 @@ std::unique_ptr<Storage> storage_; }; -} // namespace base +} // namespace base::apple #endif // BASE_APPLE_DISPATCH_SOURCE_MACH_H_
diff --git a/base/apple/dispatch_source_mach_unittest.cc b/base/apple/dispatch_source_mach_unittest.cc index 7cc54b1..9fd7e21 100644 --- a/base/apple/dispatch_source_mach_unittest.cc +++ b/base/apple/dispatch_source_mach_unittest.cc
@@ -13,7 +13,7 @@ #include "base/test/test_timeouts.h" #include "testing/gtest/include/gtest/gtest.h" -namespace base { +namespace base::apple { class DispatchSourceMachTest : public testing::Test { public: @@ -122,4 +122,4 @@ dispatch_release(queue); } -} // namespace base +} // namespace base::apple
diff --git a/base/apple/scoped_dispatch_object.h b/base/apple/scoped_dispatch_object.h index fc0f37a..a39b31ab 100644 --- a/base/apple/scoped_dispatch_object.h +++ b/base/apple/scoped_dispatch_object.h
@@ -17,7 +17,7 @@ #error Do not use this file, or allow it to be included, in Objective-C code. #endif -namespace base { +namespace base::apple { namespace internal { @@ -37,6 +37,6 @@ using ScopedDispatchObject = ScopedTypeRef<T, internal::ScopedDispatchObjectTraits<T>>; -} // namespace base +} // namespace base::apple #endif // BASE_APPLE_SCOPED_DISPATCH_OBJECT_H_
diff --git a/base/apple/scoped_nsobject.h b/base/apple/scoped_nsobject.h index bba4212..2276bfb 100644 --- a/base/apple/scoped_nsobject.h +++ b/base/apple/scoped_nsobject.h
@@ -22,7 +22,7 @@ @class NSAutoreleasePool; -namespace base { +namespace base::apple { // scoped_nsobject<> is patterned after std::unique_ptr<>, but maintains // ownership of an NSObject subclass object. Style deviations here are solely @@ -97,6 +97,6 @@ using scoped_nsprotocol<id>::scoped_nsprotocol; }; -} // namespace base +} // namespace base::apple #endif // BASE_APPLE_SCOPED_NSOBJECT_H_
diff --git a/base/apple/scoped_nsobject_unittest.mm b/base/apple/scoped_nsobject_unittest.mm index a7fe731..27ef9e3 100644 --- a/base/apple/scoped_nsobject_unittest.mm +++ b/base/apple/scoped_nsobject_unittest.mm
@@ -14,17 +14,17 @@ namespace { TEST(ScopedNSObjectTest, ScopedNSObject) { - base::scoped_nsobject<NSObject> p1([[NSObject alloc] init]); + base::apple::scoped_nsobject<NSObject> p1([[NSObject alloc] init]); ASSERT_TRUE(p1.get()); ASSERT_EQ(1u, [p1 retainCount]); - base::scoped_nsobject<NSObject> p2(p1); + base::apple::scoped_nsobject<NSObject> p2(p1); ASSERT_EQ(p1.get(), p2.get()); ASSERT_EQ(2u, [p1 retainCount]); p2.reset(); ASSERT_EQ(nil, p2.get()); ASSERT_EQ(1u, [p1 retainCount]); { - base::scoped_nsobject<NSObject> p3 = p1; + base::apple::scoped_nsobject<NSObject> p3 = p1; ASSERT_EQ(p1.get(), p3.get()); ASSERT_EQ(2u, [p1 retainCount]); @autoreleasepool { @@ -34,19 +34,19 @@ ASSERT_EQ(2u, [p1 retainCount]); } ASSERT_EQ(1u, [p1 retainCount]); - base::scoped_nsobject<NSObject> p4([p1.get() retain]); + base::apple::scoped_nsobject<NSObject> p4([p1.get() retain]); ASSERT_EQ(2u, [p1 retainCount]); ASSERT_TRUE(p1 == p1.get()); ASSERT_TRUE(p1 == p1); ASSERT_FALSE(p1 != p1); ASSERT_FALSE(p1 != p1.get()); - base::scoped_nsobject<NSObject> p5([[NSObject alloc] init]); + base::apple::scoped_nsobject<NSObject> p5([[NSObject alloc] init]); ASSERT_TRUE(p1 != p5); ASSERT_TRUE(p1 != p5.get()); ASSERT_FALSE(p1 == p5); ASSERT_FALSE(p1 == p5.get()); - base::scoped_nsobject<NSObject> p6 = p1; + base::apple::scoped_nsobject<NSObject> p6 = p1; ASSERT_EQ(3u, [p6 retainCount]); @autoreleasepool { p6.autorelease(); @@ -55,8 +55,8 @@ } ASSERT_EQ(2u, [p1 retainCount]); - base::scoped_nsobject<NSObject> p7([NSObject new]); - base::scoped_nsobject<NSObject> p8(std::move(p7)); + base::apple::scoped_nsobject<NSObject> p7([NSObject new]); + base::apple::scoped_nsobject<NSObject> p8(std::move(p7)); ASSERT_TRUE(p8); ASSERT_EQ(1u, [p8 retainCount]); ASSERT_FALSE(p7.get()); @@ -66,20 +66,21 @@ // static_assert. #if 0 TEST(ScopedNSObjectTest, FailToCreateScopedNSObjectAutoreleasePool) { - base::scoped_nsobject<NSAutoreleasePool> pool; + base::apple::scoped_nsobject<NSAutoreleasePool> pool; } #endif TEST(ScopedNSObjectTest, ScopedNSObjectInContainer) { - base::scoped_nsobject<id> p([[NSObject alloc] init]); + base::apple::scoped_nsobject<id> p([[NSObject alloc] init]); ASSERT_TRUE(p.get()); ASSERT_EQ(1u, [p retainCount]); { - std::vector<base::scoped_nsobject<id>> objects; + std::vector<base::apple::scoped_nsobject<id>> objects; objects.push_back(p); ASSERT_EQ(2u, [p retainCount]); ASSERT_EQ(p.get(), objects[0].get()); - objects.push_back(base::scoped_nsobject<id>([[NSObject alloc] init])); + objects.push_back( + base::apple::scoped_nsobject<id>([[NSObject alloc] init])); ASSERT_TRUE(objects[1].get()); ASSERT_EQ(1u, [objects[1] retainCount]); } @@ -87,11 +88,11 @@ } TEST(ScopedNSObjectTest, ScopedNSObjectFreeFunctions) { - base::scoped_nsobject<id> p1([[NSObject alloc] init]); + base::apple::scoped_nsobject<id> p1([[NSObject alloc] init]); id o1 = p1.get(); ASSERT_TRUE(o1 == p1); ASSERT_FALSE(o1 != p1); - base::scoped_nsobject<id> p2([[NSObject alloc] init]); + base::apple::scoped_nsobject<id> p2([[NSObject alloc] init]); ASSERT_TRUE(o1 != p2); ASSERT_FALSE(o1 == p2); id o2 = p2.get(); @@ -101,12 +102,12 @@ } TEST(ScopedNSObjectTest, ResetWithAnotherScopedNSObject) { - base::scoped_nsobject<id> p1([[NSObject alloc] init]); + base::apple::scoped_nsobject<id> p1([[NSObject alloc] init]); id o1 = p1.get(); id o2 = nil; { - base::scoped_nsobject<id> p2([[NSObject alloc] init]); + base::apple::scoped_nsobject<id> p2([[NSObject alloc] init]); o2 = p2.get(); p1.reset(p2); EXPECT_EQ(2u, [p1 retainCount]);
diff --git a/base/files/file_path_watcher_fsevents.h b/base/files/file_path_watcher_fsevents.h index 5310df5..8377ddb 100644 --- a/base/files/file_path_watcher_fsevents.h +++ b/base/files/file_path_watcher_fsevents.h
@@ -76,7 +76,7 @@ FilePathWatcher::Callback callback_; // The dispatch queue on which the event stream is scheduled. - ScopedDispatchObject<dispatch_queue_t> queue_; + apple::ScopedDispatchObject<dispatch_queue_t> queue_; // Target path to watch (passed to callback). // (Only accessed from the libdispatch queue.)
diff --git a/base/mac/mach_port_rendezvous.cc b/base/mac/mach_port_rendezvous.cc index 370734f..2db7410 100644 --- a/base/mac/mach_port_rendezvous.cc +++ b/base/mac/mach_port_rendezvous.cc
@@ -116,9 +116,10 @@ DCHECK_LT(ports.size(), kMaximumRendezvousPorts); DCHECK(!ports.empty()); - ScopedDispatchObject<dispatch_source_t> exit_watcher(dispatch_source_create( - DISPATCH_SOURCE_TYPE_PROC, static_cast<uintptr_t>(pid), - DISPATCH_PROC_EXIT, dispatch_source_->Queue())); + apple::ScopedDispatchObject<dispatch_source_t> exit_watcher( + dispatch_source_create(DISPATCH_SOURCE_TYPE_PROC, + static_cast<uintptr_t>(pid), DISPATCH_PROC_EXIT, + dispatch_source_->Queue())); dispatch_source_set_event_handler(exit_watcher, ^{ OnClientExited(pid); }); @@ -130,7 +131,7 @@ } MachPortRendezvousServer::ClientData::ClientData( - ScopedDispatchObject<dispatch_source_t> exit_watcher, + apple::ScopedDispatchObject<dispatch_source_t> exit_watcher, MachPortsForRendezvous ports) : exit_watcher(exit_watcher), ports(ports) {} @@ -147,7 +148,7 @@ BOOTSTRAP_CHECK(kr == KERN_SUCCESS, kr) << "bootstrap_check_in " << bootstrap_name; - dispatch_source_ = std::make_unique<DispatchSourceMach>( + dispatch_source_ = std::make_unique<apple::DispatchSourceMach>( bootstrap_name.c_str(), server_port_.get(), ^{ HandleRequest(); });
diff --git a/base/mac/mach_port_rendezvous.h b/base/mac/mach_port_rendezvous.h index 364f832f..5c7ed0d4 100644 --- a/base/mac/mach_port_rendezvous.h +++ b/base/mac/mach_port_rendezvous.h
@@ -109,14 +109,14 @@ friend struct MachPortRendezvousFuzzer; struct ClientData { - ClientData(ScopedDispatchObject<dispatch_source_t> exit_watcher, + ClientData(apple::ScopedDispatchObject<dispatch_source_t> exit_watcher, MachPortsForRendezvous ports); ClientData(ClientData&&); ~ClientData(); // A DISPATCH_SOURCE_TYPE_PROC / DISPATCH_PROC_EXIT dispatch source. When // the source is triggered, it calls OnClientExited(). - ScopedDispatchObject<dispatch_source_t> exit_watcher; + apple::ScopedDispatchObject<dispatch_source_t> exit_watcher; MachPortsForRendezvous ports; }; @@ -150,7 +150,7 @@ apple::ScopedMachReceiveRight server_port_; // Mach message dispatch source for |server_port_|. - std::unique_ptr<DispatchSourceMach> dispatch_source_; + std::unique_ptr<apple::DispatchSourceMach> dispatch_source_; Lock lock_; // Association of pid-to-ports.
diff --git a/base/synchronization/waitable_event_watcher_mac.cc b/base/synchronization/waitable_event_watcher_mac.cc index c764740..74c12a2 100644 --- a/base/synchronization/waitable_event_watcher_mac.cc +++ b/base/synchronization/waitable_event_watcher_mac.cc
@@ -14,7 +14,7 @@ // A TYPE_MACH_RECV dispatch source on |receive_right_|. When a receive event // is delivered, the message queue will be peeked and the bound |callback_| // may be run. This will be null if nothing is currently being watched. - ScopedDispatchObject<dispatch_source_t> dispatch_source; + apple::ScopedDispatchObject<dispatch_source_t> dispatch_source; }; WaitableEventWatcher::WaitableEventWatcher()
diff --git a/base/win/scoped_com_initializer.cc b/base/win/scoped_com_initializer.cc index 83195ec4..52ed746c 100644 --- a/base/win/scoped_com_initializer.cc +++ b/base/win/scoped_com_initializer.cc
@@ -53,6 +53,12 @@ init | COINIT_DISABLE_OLE1DDE); } hr_ = ::CoInitializeEx(nullptr, init | COINIT_DISABLE_OLE1DDE); + // TODO(crbug.com/1473487): consider changing this assertion to a CHECK. When + // this code fails, it is possible that the calling thread joins the wrong + // apartement, for example, the caller requested an STA but the thread + // remained in an MTA instead. Continuing the program execution under these + // conditions is hazardous and it may lead to data races. + DUMP_WILL_BE_CHECK(RPC_E_CHANGED_MODE != hr_); DCHECK_NE(RPC_E_CHANGED_MODE, hr_) << "Invalid COM thread model change"; }
diff --git a/build_overrides/angle.gni b/build_overrides/angle.gni index c6f8dba..d1b56165 100644 --- a/build_overrides/angle.gni +++ b/build_overrides/angle.gni
@@ -8,11 +8,6 @@ # True if ANGLE can access build/, testing/ and other Chrome folders. angle_has_build = true -# Declares the maximum supported VulkanMemoryAllocator version by the client -# in format AAABBBCCC, where AAA = major, BBB = minor, CCC = patch. -# The VulkanMemoryAllocator version may be found in its CHANGELOG.md. -angle_vma_version = 3000000 - # Overrides for ANGLE's dependencies angle_glslang_dir = "//third_party/vulkan-deps/glslang/src" angle_googletest_dir = "//third_party/googletest/src"
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn index 34d4f0f..1fb0b830 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn
@@ -408,6 +408,7 @@ "//chrome/browser/thumbnail:java", "//chrome/browser/ui/android/appmenu:factory_java", "//chrome/browser/ui/android/appmenu:java", + "//chrome/browser/ui/android/cars:java", "//chrome/browser/ui/android/default_browser_promo:java", "//chrome/browser/ui/android/device_lock:java", "//chrome/browser/ui/android/edge_to_edge:factory_java", @@ -1026,6 +1027,7 @@ "//chrome/browser/ui/android/appmenu:java", "//chrome/browser/ui/android/appmenu/internal:junit", "//chrome/browser/ui/android/autofill/internal:junit", + "//chrome/browser/ui/android/cars:junit", "//chrome/browser/ui/android/default_browser_promo:java", "//chrome/browser/ui/android/default_browser_promo:junit", "//chrome/browser/ui/android/device_lock:junit",
diff --git a/chrome/android/features/start_surface/java/res/layout/tasks_surface_search_box_layout.xml b/chrome/android/features/start_surface/java/res/layout/tasks_surface_search_box_layout.xml index 7d0377d..e5e39b3 100644 --- a/chrome/android/features/start_surface/java/res/layout/tasks_surface_search_box_layout.xml +++ b/chrome/android/features/start_surface/java/res/layout/tasks_surface_search_box_layout.xml
@@ -37,7 +37,7 @@ android:ellipsize="end" android:focusable="false" android:focusableInTouchMode="false" - android:hint="@string/search_or_type_web_address" + android:hint="@string/omnibox_empty_hint" android:inputType="text" android:singleLine="true" tools:ignore="Autofill,LabelFor" /> @@ -58,4 +58,4 @@ android:contentDescription="@string/accessibility_btn_lens_camera" android:src="@drawable/lens_camera_icon" android:visibility="gone" /> -</view> \ No newline at end of file +</view>
diff --git a/chrome/android/java/res/layout/fake_search_box_layout.xml b/chrome/android/java/res/layout/fake_search_box_layout.xml index 18c2582b..63ab5c7 100644 --- a/chrome/android/java/res/layout/fake_search_box_layout.xml +++ b/chrome/android/java/res/layout/fake_search_box_layout.xml
@@ -41,7 +41,7 @@ android:focusable="false" android:inputType="text" android:singleLine="true" - android:hint="@string/search_or_type_web_address" /> + android:hint="@string/omnibox_empty_hint" /> </RelativeLayout> <org.chromium.ui.widget.ChromeImageView android:id="@+id/voice_search_button"
diff --git a/chrome/android/java/res/layout/url_bar.xml b/chrome/android/java/res/layout/url_bar.xml index 5abe6e5..eca410c 100644 --- a/chrome/android/java/res/layout/url_bar.xml +++ b/chrome/android/java/res/layout/url_bar.xml
@@ -14,6 +14,6 @@ android:gravity="center_vertical" android:singleLine="true" android:imeOptions="actionGo|flagNoExtractUi|flagNoFullscreen" - android:textSize="@dimen/location_bar_url_text_size" - android:hint="@string/search_or_type_web_address" + android:textAppearance="@style/TextAppearance.SearchBoxText" + android:hint="@string/omnibox_empty_hint" android:importantForAutofill="no" />
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowCoordinator.java index 448aba3..ce0c5f09 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowCoordinator.java
@@ -123,6 +123,7 @@ propertyModel.set(ImprovedBookmarkRowProperties.START_AREA_BACKGROUND_COLOR, ChromeColors.getSurfaceColor(mContext, R.dimen.default_elevation_1)); propertyModel.set(ImprovedBookmarkRowProperties.START_ICON_TINT, null); + propertyModel.set(ImprovedBookmarkRowProperties.START_ICON_DRAWABLE, null); if (useImages) { mBookmarkImageFetcher.fetchImageForBookmarkWithFaviconFallback(item, image -> { propertyModel.set(ImprovedBookmarkRowProperties.START_ICON_DRAWABLE, image);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java index 4f5e88c..564ed46 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java
@@ -15,6 +15,7 @@ import androidx.annotation.WorkerThread; +import org.chromium.base.BuildInfo; import org.chromium.base.CommandLine; import org.chromium.base.ContextUtils; import org.chromium.base.Log; @@ -81,6 +82,7 @@ import org.chromium.chrome.browser.signin.SigninCheckerProvider; import org.chromium.chrome.browser.tab.state.PersistedTabData; import org.chromium.chrome.browser.tab.state.ShoppingPersistedTabData; +import org.chromium.chrome.browser.ui.cars.DrivingRestrictionsManager; import org.chromium.chrome.browser.ui.searchactivityutils.SearchActivityPreferencesManager; import org.chromium.chrome.browser.usb.UsbNotificationManager; import org.chromium.chrome.browser.util.AfterStartupTaskUtils; @@ -255,6 +257,10 @@ setProcessStateSummaryForAnrs(true); AccessibilityState.registerObservers(); + + if (BuildInfo.getInstance().isAutomotive) { + DrivingRestrictionsManager.initialize(); + } } /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/search/SearchBoxViewBinder.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/search/SearchBoxViewBinder.java index ba1c7b4..bacd645 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/search/SearchBoxViewBinder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/search/SearchBoxViewBinder.java
@@ -75,10 +75,9 @@ searchBoxTextView.setText(model.get(SearchBoxProperties.SEARCH_TEXT)); } else if (SearchBoxProperties.SEARCH_HINT_VISIBILITY == propertyKey) { boolean isHintVisible = model.get(SearchBoxProperties.SEARCH_HINT_VISIBILITY); - searchBoxTextView.setHint(isHintVisible - ? view.getContext().getString( - org.chromium.chrome.R.string.search_or_type_web_address) - : null); + searchBoxTextView.setHint(isHintVisible ? view.getContext().getString( + org.chromium.chrome.R.string.omnibox_empty_hint) + : null); } else if (SearchBoxProperties.VOICE_SEARCH_CLICK_CALLBACK == propertyKey) { voiceSearchButton.setOnClickListener( model.get(SearchBoxProperties.VOICE_SEARCH_CLICK_CALLBACK));
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/vr/VrCompositorDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/vr/VrCompositorDelegateImpl.java index 1f128f1..feeeb9c9 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/vr/VrCompositorDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/vr/VrCompositorDelegateImpl.java
@@ -4,11 +4,15 @@ package org.chromium.chrome.browser.vr; +import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.Supplier; import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.compositor.CompositorView; import org.chromium.chrome.browser.compositor.CompositorViewHolder; +import org.chromium.chrome.browser.tab.TabLaunchType; +import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.components.webxr.VrCompositorDelegate; +import org.chromium.content_public.browser.LoadUrlParams; import org.chromium.content_public.browser.WebContents; /** @@ -16,15 +20,24 @@ */ public class VrCompositorDelegateImpl implements VrCompositorDelegate { private CompositorView mCompositorView; + private ObservableSupplier<TabModelSelector> mTabModelSelectorSupplier; VrCompositorDelegateImpl(WebContents webContents) { + ChromeActivity activity = ChromeActivity.fromWebContents(webContents); Supplier<CompositorViewHolder> compositorViewHolderSupplier = - ChromeActivity.fromWebContents(webContents).getCompositorViewHolderSupplier(); + activity.getCompositorViewHolderSupplier(); mCompositorView = compositorViewHolderSupplier.get().getCompositorView(); + mTabModelSelectorSupplier = activity.getTabModelSelectorSupplier(); } @Override public void setOverlayImmersiveVrMode(boolean enabled) { mCompositorView.setOverlayVrMode(enabled); } + + @Override + public void openNewTab(LoadUrlParams url) { + mTabModelSelectorSupplier.get().openNewTab( + url, TabLaunchType.FROM_CHROME_UI, /*parent=*/null, /*incognito=*/false); + } }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/OmniboxTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/OmniboxTest.java index eb15176..973c5d9 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/OmniboxTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/OmniboxTest.java
@@ -106,7 +106,7 @@ Assert.assertEquals("Location bar has text.", "", urlBar.getText().toString()); Assert.assertEquals("Location bar has incorrect hint.", mActivityTestRule.getActivity().getResources().getString( - R.string.search_or_type_web_address), + R.string.omnibox_empty_hint), urlBar.getHint().toString()); // Type something in the omnibox.
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowCoordinatorTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowCoordinatorTest.java index 14954cc..727bedce 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowCoordinatorTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowCoordinatorTest.java
@@ -127,6 +127,12 @@ -> callback.onResult(new Pair<>(mDrawable, mDrawable))) .when(mBookmarkImageFetcher) .fetchFirstTwoImagesForFolder(any(), any()); + doCallback(1, (Callback<Drawable> callback) -> callback.onResult(mDrawable)) + .when(mBookmarkImageFetcher) + .fetchImageForBookmarkWithFaviconFallback(any(), any()); + doCallback(1, (Callback<Drawable> callback) -> callback.onResult(mDrawable)) + .when(mBookmarkImageFetcher) + .fetchFaviconForBookmark(any(), any()); mCoordinator = new ImprovedBookmarkRowCoordinator(mActivity, mBookmarkImageFetcher, mBookmarkModel, mBookmarkUiPrefs, mShoppingService); @@ -171,6 +177,24 @@ assertEquals( "https://www.example.com/", model.get(ImprovedBookmarkRowProperties.DESCRIPTION)); assertNull(model.get(ImprovedBookmarkRowProperties.FOLDER_COORDINATOR)); + assertEquals(mDrawable, model.get(ImprovedBookmarkRowProperties.START_ICON_DRAWABLE)); + } + + @Test + public void testBookmark_visal_nullOutImageWhenBound() { + doCallback(1, (Callback<Pair<Drawable, Drawable>> callback) -> {}) + .when(mBookmarkImageFetcher) + .fetchImageForBookmarkWithFaviconFallback(any(), any()); + + doReturn(BookmarkRowDisplayPref.VISUAL).when(mBookmarkUiPrefs).getBookmarkRowDisplayPref(); + PropertyModel model = mCoordinator.createBasePropertyModel(mBookmarkId); + + assertEquals("Bookmark", model.get(ImprovedBookmarkRowProperties.TITLE)); + assertTrue(model.get(ImprovedBookmarkRowProperties.DESCRIPTION_VISIBLE)); + assertEquals( + "https://www.example.com/", model.get(ImprovedBookmarkRowProperties.DESCRIPTION)); + assertNull(model.get(ImprovedBookmarkRowProperties.FOLDER_COORDINATOR)); + assertNull(model.get(ImprovedBookmarkRowProperties.START_ICON_DRAWABLE)); } @Test @@ -184,4 +208,21 @@ "https://www.example.com/", model.get(ImprovedBookmarkRowProperties.DESCRIPTION)); assertNull(model.get(ImprovedBookmarkRowProperties.FOLDER_COORDINATOR)); } + + @Test + public void testBookmark_compact_nullOutImageWhenBoun() { + doCallback(1, (Callback<Pair<Drawable, Drawable>> callback) -> {}) + .when(mBookmarkImageFetcher) + .fetchFaviconForBookmark(any(), any()); + + doReturn(BookmarkRowDisplayPref.COMPACT).when(mBookmarkUiPrefs).getBookmarkRowDisplayPref(); + PropertyModel model = mCoordinator.createBasePropertyModel(mBookmarkId); + + assertEquals("Bookmark", model.get(ImprovedBookmarkRowProperties.TITLE)); + assertTrue(model.get(ImprovedBookmarkRowProperties.DESCRIPTION_VISIBLE)); + assertEquals( + "https://www.example.com/", model.get(ImprovedBookmarkRowProperties.DESCRIPTION)); + assertNull(model.get(ImprovedBookmarkRowProperties.FOLDER_COORDINATOR)); + assertNull(model.get(ImprovedBookmarkRowProperties.START_ICON_DRAWABLE)); + } }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinatorUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinatorUnitTest.java index 913a4cc..ecc43d5 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinatorUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinatorUnitTest.java
@@ -16,12 +16,14 @@ import org.chromium.base.FeatureList; import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.Batch; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.sync.SyncServiceFactory; import org.chromium.components.sync.SyncService; /** JUnit tests for BaseCustomTabRootUiCoordinator. */ @RunWith(BaseRobolectricTestRunner.class) +@Batch(Batch.UNIT_TESTS) @Config(manifest = Config.NONE) public final class BaseCustomTabRootUiCoordinatorUnitTest { private void enablePageInsights(FeatureList.TestValues testValues,
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/ClientManagerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/ClientManagerTest.java index 2fd97f85..877fa61 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/ClientManagerTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/ClientManagerTest.java
@@ -42,6 +42,7 @@ import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.UmaRecorderHolder; import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.Batch; import org.chromium.base.test.util.JniMocker; import org.chromium.chrome.browser.browserservices.verification.ChromeOriginVerifier; import org.chromium.chrome.browser.browserservices.verification.ChromeOriginVerifierFactoryImpl; @@ -56,6 +57,7 @@ /** Tests for ClientManager. */ @RunWith(BaseRobolectricTestRunner.class) +@Batch(Batch.UNIT_TESTS) @Config(manifest = Config.NONE, shadows = {ShadowUrlUtilities.class, ShadowPackageManager.class, ClientManagerTest.ShadowSysUtils.class})
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CloseButtonNavigatorTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CloseButtonNavigatorTest.java index c6020cb0..7954ef1b 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CloseButtonNavigatorTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CloseButtonNavigatorTest.java
@@ -33,6 +33,7 @@ import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.UmaRecorderHolder; import org.chromium.base.test.BaseRobolectricTestRule; +import org.chromium.base.test.util.Batch; import org.chromium.chrome.browser.browserservices.intents.BrowserServicesIntentDataProvider; import org.chromium.chrome.browser.browserservices.intents.WebappExtras; import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabController; @@ -56,6 +57,7 @@ * Tests for {@link CloseButtonNavigator}. */ @RunWith(ParameterizedRobolectricTestRunner.class) +@Batch(Batch.UNIT_TESTS) @Config(sdk = Build.VERSION_CODES.N, manifest = Config.NONE) public class CloseButtonNavigatorTest { @Parameters
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabActivityLifecycleUmaTrackerUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabActivityLifecycleUmaTrackerUnitTest.java index 2e0bf09b..e2cd37c 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabActivityLifecycleUmaTrackerUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabActivityLifecycleUmaTrackerUnitTest.java
@@ -24,6 +24,7 @@ import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.UmaRecorderHolder; import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.Batch; import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.customtabs.CustomTabActivityLifecycleUmaTracker.ClientIdentifierType; import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; @@ -35,6 +36,7 @@ * Unit test for {@link CustomTabActivityLifecycleUmaTracker}. */ @RunWith(BaseRobolectricTestRunner.class) +@Batch(Batch.UNIT_TESTS) @Config(shadows = {ShadowSystemClock.class}) public class CustomTabActivityLifecycleUmaTrackerUnitTest { private static final String PACKAGE_A = "com.example.test.package";
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabBottomBarDelegateUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabBottomBarDelegateUnitTest.java index 841c6488..c2a2a924 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabBottomBarDelegateUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabBottomBarDelegateUnitTest.java
@@ -34,6 +34,7 @@ import org.robolectric.annotation.Config; import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.Batch; import org.chromium.chrome.R; import org.chromium.chrome.browser.browser_controls.BrowserControlsSizer; import org.chromium.chrome.browser.browserservices.intents.BrowserServicesIntentDataProvider; @@ -46,6 +47,7 @@ /** Unit test for {@link CustomTabBottomBarDelegate}. */ @RunWith(BaseRobolectricTestRunner.class) +@Batch(Batch.UNIT_TESTS) @Config(manifest = Config.NONE) public class CustomTabBottomBarDelegateUnitTest { @Rule
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProviderTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProviderTest.java index 01d19e93..925e708 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProviderTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProviderTest.java
@@ -54,6 +54,7 @@ import org.chromium.base.IntentUtils; import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.Batch; import org.chromium.base.test.util.CommandLineFlags; import org.chromium.chrome.R; import org.chromium.chrome.browser.IntentHandler; @@ -70,6 +71,7 @@ /** Tests for {@link CustomTabIntentDataProvider}. */ @RunWith(BaseRobolectricTestRunner.class) +@Batch(Batch.UNIT_TESTS) @Config(manifest = Config.NONE) public class CustomTabIntentDataProviderTest { @Rule
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabNavigationBarControllerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabNavigationBarControllerTest.java index e9bc9f3..b74baa7 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabNavigationBarControllerTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabNavigationBarControllerTest.java
@@ -25,12 +25,14 @@ import org.robolectric.annotation.Config; import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.Batch; import org.chromium.chrome.browser.browserservices.intents.ColorProvider; import org.chromium.chrome.browser.customtabs.features.CustomTabNavigationBarController; import org.chromium.ui.util.ColorUtils; /** Tests for {@link CustomTabNavigationBarController}. */ @RunWith(BaseRobolectricTestRunner.class) +@Batch(Batch.UNIT_TESTS) @Config(manifest = Config.NONE) public class CustomTabNavigationBarControllerTest { @Mock
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabNightModeStateControllerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabNightModeStateControllerTest.java index 68338a3..d087315 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabNightModeStateControllerTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabNightModeStateControllerTest.java
@@ -31,6 +31,7 @@ import org.robolectric.annotation.Config; import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.Batch; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.night_mode.NightModeStateProvider; import org.chromium.chrome.browser.night_mode.PowerSavingModeMonitor; @@ -40,6 +41,7 @@ * Tests for {@link CustomTabNightModeStateController}. */ @RunWith(BaseRobolectricTestRunner.class) +@Batch(Batch.UNIT_TESTS) @Config(manifest = Config.NONE) public class CustomTabNightModeStateControllerTest { @Mock @@ -167,5 +169,4 @@ observer.onSystemNightModeChanged(); } } - }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabStatusBarColorProviderTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabStatusBarColorProviderTest.java index 862fc6c..49072a13 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabStatusBarColorProviderTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabStatusBarColorProviderTest.java
@@ -21,6 +21,7 @@ import org.robolectric.annotation.Config; import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.Batch; import org.chromium.chrome.browser.browserservices.intents.ColorProvider; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.TabImpl; @@ -30,6 +31,7 @@ * Tests for {@link CustomTabStatusBarColorProvider}. */ @RunWith(BaseRobolectricTestRunner.class) +@Batch(Batch.UNIT_TESTS) @Config(manifest = Config.NONE) public class CustomTabStatusBarColorProviderTest { private static final int USER_PROVIDED_COLOR = 0x99aabbcc;
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabsConnectionUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabsConnectionUnitTest.java index e0748c2..415bf82 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabsConnectionUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabsConnectionUnitTest.java
@@ -49,6 +49,7 @@ import org.chromium.base.task.test.ShadowPostTask; import org.chromium.base.task.test.ShadowPostTask.TestImpl; import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.Batch; import org.chromium.chrome.browser.ChromeApplicationImpl; import org.chromium.chrome.browser.browserservices.SessionHandler; import org.chromium.chrome.browser.customtabs.content.EngagementSignalsHandler; @@ -61,6 +62,7 @@ /** Tests for some parts of {@link CustomTabsConnection}. */ @RunWith(BaseRobolectricTestRunner.class) +@Batch(Batch.UNIT_TESTS) @Config(shadows = {CustomTabsConnectionUnitTest.ShadowUmaSessionStats.class, ShadowPostTask.class}) public class CustomTabsConnectionUnitTest { @Rule
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabsFilterTouchUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabsFilterTouchUnitTest.java index fe33504..84b38e8 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabsFilterTouchUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabsFilterTouchUnitTest.java
@@ -26,6 +26,7 @@ import org.chromium.base.ActivityState; import org.chromium.base.ApplicationStatus; import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.Batch; import org.chromium.base.test.util.CommandLineFlags; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeSwitches; @@ -38,6 +39,7 @@ */ // clang-format off @RunWith(BaseRobolectricTestRunner.class) +@Batch(Batch.UNIT_TESTS) @EnableFeatures(ChromeFeatureList.CCT_PREVENT_TOUCHES) @CommandLineFlags.Add({ ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabsOpenTimeRecorderTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabsOpenTimeRecorderTest.java index 3aeb7bb..ab03b8a 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabsOpenTimeRecorderTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CustomTabsOpenTimeRecorderTest.java
@@ -21,6 +21,7 @@ import org.chromium.base.ContextUtils; import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.Batch; import org.chromium.chrome.browser.browserservices.intents.BrowserServicesIntentDataProvider; import org.chromium.chrome.browser.customtabs.content.CustomTabActivityNavigationController; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; @@ -30,6 +31,7 @@ /** Tests for some parts of {@link CustomTabsOpenTimeRecorder}. */ @RunWith(BaseRobolectricTestRunner.class) +@Batch(Batch.UNIT_TESTS) public class CustomTabsOpenTimeRecorderTest { private static final String CHROME_PACKAGE_NAME = "chrome.package.name";
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabSnapshotControllerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabSnapshotControllerTest.java index 06eff13..682ba36b 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabSnapshotControllerTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabSnapshotControllerTest.java
@@ -28,6 +28,7 @@ import org.chromium.base.supplier.Supplier; import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.Batch; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.test.util.browser.Features; import org.chromium.chrome.test.util.browser.Features.DisableFeatures; @@ -37,6 +38,7 @@ * Robolectric tests for {@link IncognitoCustomTabSnapshotController}. */ @RunWith(BaseRobolectricTestRunner.class) +@Batch(Batch.UNIT_TESTS) @Config(manifest = Config.NONE) public class IncognitoCustomTabSnapshotControllerTest { @Mock
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/LaunchesWithColorSchemeTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/LaunchesWithColorSchemeTest.java index 9833af15..6983fe6 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/LaunchesWithColorSchemeTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/LaunchesWithColorSchemeTest.java
@@ -24,6 +24,7 @@ import org.robolectric.annotation.Config; import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.Batch; import org.chromium.base.test.util.CommandLineFlags; import org.chromium.chrome.R; import org.chromium.chrome.browser.app.tabmodel.TabWindowManagerSingleton; @@ -40,6 +41,7 @@ */ // clang-format off @RunWith(BaseRobolectricTestRunner.class) +@Batch(Batch.UNIT_TESTS) @Config(manifest = Config.NONE) @DisableFeatures(ChromeFeatureList.SUPPRESS_TOOLBAR_CAPTURES) @CommandLineFlags.Add({
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/NavigationInfoCaptureTriggerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/NavigationInfoCaptureTriggerTest.java index 74676498..406f955e 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/NavigationInfoCaptureTriggerTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/NavigationInfoCaptureTriggerTest.java
@@ -19,6 +19,7 @@ import org.chromium.base.Callback; import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.Batch; import org.chromium.base.test.util.Feature; import org.chromium.chrome.browser.tab.Tab; @@ -28,6 +29,7 @@ * Tests for {@link NavigationInfoCaptureTrigger}. */ @RunWith(BaseRobolectricTestRunner.class) +@Batch(Batch.UNIT_TESTS) @Config(manifest = Config.NONE) public class NavigationInfoCaptureTriggerTest { @Mock
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/RequestThrottlerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/RequestThrottlerTest.java index 8e62847..da6e376 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/RequestThrottlerTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/RequestThrottlerTest.java
@@ -17,11 +17,13 @@ import org.robolectric.annotation.Config; import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.Batch; /** * Tests for RequestThrottler. */ @RunWith(BaseRobolectricTestRunner.class) +@Batch(Batch.UNIT_TESTS) @Config(manifest = Config.NONE) public class RequestThrottlerTest { private static final int UID = 1234;
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/TrustedCdnTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/TrustedCdnTest.java index 75888f08..20d4074 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/TrustedCdnTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/TrustedCdnTest.java
@@ -21,6 +21,7 @@ import org.chromium.base.UnownedUserDataHost; import org.chromium.base.UserDataHost; +import org.chromium.base.test.util.Batch; import org.chromium.base.test.util.JniMocker; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.tab.Tab; @@ -44,6 +45,7 @@ * TrustedCdnPublisherUrlTest (the instrumentation test) is still used to test native functionality. */ @RunWith(RobolectricTestRunner.class) +@Batch(Batch.UNIT_TESTS) @Config(manifest = Config.NONE) public class TrustedCdnTest { private static final String PUBLISHER_URL = "https://www.publisher.com/";
diff --git a/chrome/app/extensions_strings.grdp b/chrome/app/extensions_strings.grdp index 03765201..a19a7172 100644 --- a/chrome/app/extensions_strings.grdp +++ b/chrome/app/extensions_strings.grdp
@@ -25,6 +25,15 @@ <message name="IDS_EXTENSIONS_ENABLE_ERROR_COLLECTION" desc="The checkbox for enabling error collection for an extension."> Collect errors </message> + <message name="IDS_EXTENSIONS_ENABLE_TOGGLE_TOOLTIP_DISABLED" desc="The tooltip for the enable extension toggle when the extension is disabled."> + This extension cannot read and change site information or run in the background + </message> + <message name="IDS_EXTENSIONS_ENABLE_TOGGLE_TOOLTIP_ENABLED" desc="The tooltip for the enable extension toggle when the extension is enabled but does not have host permissions."> + This extension may run in the background + </message> + <message name="IDS_EXTENSIONS_ENABLE_TOGGLE_TOOLTIP_ENABLED_WITH_SITE_ACCESS" desc="The tooltip for the enable extension toggle when the extension is enabled and has host permissions."> + This extension may read and change site information or run in the background + </message> <message name="IDS_EXTENSIONS_ERROR_NO_ERRORS_CODE_MESSAGE" desc="The text displayed in the 'code' section when an extension has no errors."> Nothing to see here, move along. </message>
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ENABLE_TOGGLE_TOOLTIP_DISABLED.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ENABLE_TOGGLE_TOOLTIP_DISABLED.png.sha1 new file mode 100644 index 0000000..1966455 --- /dev/null +++ b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ENABLE_TOGGLE_TOOLTIP_DISABLED.png.sha1
@@ -0,0 +1 @@ +72b6ded6b4d1a0162ea0eadf47bfb8563c87b2e3 \ No newline at end of file
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ENABLE_TOGGLE_TOOLTIP_ENABLED.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ENABLE_TOGGLE_TOOLTIP_ENABLED.png.sha1 new file mode 100644 index 0000000..e3eeac1 --- /dev/null +++ b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ENABLE_TOGGLE_TOOLTIP_ENABLED.png.sha1
@@ -0,0 +1 @@ +9ab9bcbd4431edafdcc35a2c348eea89b0640a30 \ No newline at end of file
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ENABLE_TOGGLE_TOOLTIP_ENABLED_WITH_SITE_ACCESS.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ENABLE_TOGGLE_TOOLTIP_ENABLED_WITH_SITE_ACCESS.png.sha1 new file mode 100644 index 0000000..213195ccf --- /dev/null +++ b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_ENABLE_TOGGLE_TOOLTIP_ENABLED_WITH_SITE_ACCESS.png.sha1
@@ -0,0 +1 @@ +90f06b364d05d28be205d73979b3c257f794a9a7 \ No newline at end of file
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index d68de389..21f4619 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -7304,11 +7304,6 @@ <message name="IDS_OMNIBOX_CLEAR_ALL" desc="Accessibility text for the button that deletes all text input from the omnibox on touch devices."> Clear input </message> - <if expr="is_android or enable_vr"> - <message name="IDS_SEARCH_OR_TYPE_WEB_ADDRESS" desc="Prompt to enter text into the text field that will either perform web searches or navigate to a website. [CHAR_LIMIT=38]" formatter_data="android_java"> - Search or type web address - </message> - </if> <message name="IDS_OMNIBOX_WHY_THIS_SUGGESTION" desc="The title of a menu entry and bubble that explains why this suggestion appears in the omnibox popup."> Why this suggestion? </message> @@ -7698,9 +7693,6 @@ <message name="IDS_NTP_MODULES_DISABLE_TOAST_MESSAGE" desc="Text shown in the toast confirming a module has been disabled."> You won't see <ph name="MODULE_NAME">$1<ex>shopping suggestions</ex></ph> on this page again </message> - <message name="IDS_NTP_MODULES_HISTORY_CLUSTERS_DISABLE_TOAST_MESSAGE" desc="Text shown in the toast confirming the NTP History Clusters module has been disabled."> - You won't see <ph name="MODULE_NAME">$1<ex>this type of card</ex></ph> again - </message> <message name="IDS_NTP_MODULES_DISMISS_BUTTON_TEXT" desc="Text shown on the disable button of an NTP module."> Hide <ph name="MODULE_TITLE">$1<ex>Office Chairs</ex></ph> </message> @@ -8017,9 +8009,6 @@ <message name="IDS_NTP_MODULES_RESUME_YOUR_JOURNEY" desc="A label for the title in NTP Quests Module."> Resume your journey for <ph name="MODULE_TITLE">$1<ex>Office Chairs</ex></ph> </message> - <message name="IDS_NTP_MODULES_HISTORY_CLUSTERS_RESUME_BROWSING" desc="A label for the title in NTP History Clusters Module in sentence case."> - Resume browsing for <ph name="MODULE_TITLE">$1<ex>Office Chairs</ex></ph> - </message> <message name="IDS_NTP_MODULES_SHOW_ALL" desc="A label for the show all button in NTP Quests Module."> Show all </message> @@ -8032,12 +8021,6 @@ <ph name="BREAK"><br></ph> You can manage settings from the card menu or see more options in Customize Chrome. </message> - <message name="IDS_NTP_MODULES_HISTORY_CLUSTERS_INFO2" desc="Text shown in the body of the info dialog of the NTP History Clusters module."> - You’re seeing pages you've visited and suggested searches to help you easily get back to your most recent activity. - <ph name="BREAK"><br></ph> - <ph name="BREAK"><br></ph> - You can manage settings from the card menu or see more options in Customize Chrome. - </message> <message name="IDS_NTP_MODULES_HISTORY_CLUSTERS_WITH_DISCOUNT_INFO" desc="Text shown in the body of the info dialog of the history clusters module when the cluster has available discount."> You’re seeing suggested searches and shopping discounts that might interest you based on your recent activity. <ph name="BREAK"><br></ph> @@ -8047,18 +8030,12 @@ <message name="IDS_NTP_MODULES_HISTORY_CLUSTERS_SENTENCE2" desc="Variant of the name of the History Clusters module in sentence case shown in various UIs."> Journeys </message> - <message name="IDS_NTP_MODULES_HISTORY_CLUSTERS_DISABLE_TOAST_NAME" desc="Variant of the name of the History Clusters module shown in the toast confirming it has been disabled."> - this type of card - </message> <message name="IDS_NTP_MODULES_HISTORY_CLUSTERS_DISMISS_BUTTON" desc="A label for the dismiss button in the dropdown."> No longer interested </message> <message name="IDS_NTP_MODULES_HISTORY_CLUSTERS_DISABLE_TEXT" desc="A label to append to the disable text in the dropdown."> Journeys card </message> - <message name="IDS_NTP_MODULES_HISTORY_CLUSTERS_DISABLE_DROPDOWN_TEXT" desc="A label to append to the disable text in the dropdown."> - this card - </message> <message name="IDS_NTP_MODULES_HISTORY_CLUSTERS_DONE_BUTTON" desc="A label for the done button in the dropdown."> Mark as done and hide </message>
diff --git a/chrome/app/generated_resources_grd/IDS_NTP_MODULES_HISTORY_CLUSTERS_DISABLE_DROPDOWN_TEXT.png.sha1 b/chrome/app/generated_resources_grd/IDS_NTP_MODULES_HISTORY_CLUSTERS_DISABLE_DROPDOWN_TEXT.png.sha1 deleted file mode 100644 index 603f3518..0000000 --- a/chrome/app/generated_resources_grd/IDS_NTP_MODULES_HISTORY_CLUSTERS_DISABLE_DROPDOWN_TEXT.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -3663fd0fbf7164c7c6e73b070f40611fba45930c \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_NTP_MODULES_HISTORY_CLUSTERS_DISABLE_TOAST_MESSAGE.png.sha1 b/chrome/app/generated_resources_grd/IDS_NTP_MODULES_HISTORY_CLUSTERS_DISABLE_TOAST_MESSAGE.png.sha1 deleted file mode 100644 index 2b1f463..0000000 --- a/chrome/app/generated_resources_grd/IDS_NTP_MODULES_HISTORY_CLUSTERS_DISABLE_TOAST_MESSAGE.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -a362433093621e90bbef43255b0fb94100c38ac1 \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_NTP_MODULES_HISTORY_CLUSTERS_DISABLE_TOAST_NAME.png.sha1 b/chrome/app/generated_resources_grd/IDS_NTP_MODULES_HISTORY_CLUSTERS_DISABLE_TOAST_NAME.png.sha1 deleted file mode 100644 index 38b23051..0000000 --- a/chrome/app/generated_resources_grd/IDS_NTP_MODULES_HISTORY_CLUSTERS_DISABLE_TOAST_NAME.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -ad9742b814fa3852966b4e6d159ed4da83f86fe8 \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_NTP_MODULES_HISTORY_CLUSTERS_INFO2.png.sha1 b/chrome/app/generated_resources_grd/IDS_NTP_MODULES_HISTORY_CLUSTERS_INFO2.png.sha1 deleted file mode 100644 index 5fbfaa9..0000000 --- a/chrome/app/generated_resources_grd/IDS_NTP_MODULES_HISTORY_CLUSTERS_INFO2.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -b6a96118410cedd6ff3eec739ab180318cad0b82 \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_NTP_MODULES_HISTORY_CLUSTERS_RESUME_BROWSING.png.sha1 b/chrome/app/generated_resources_grd/IDS_NTP_MODULES_HISTORY_CLUSTERS_RESUME_BROWSING.png.sha1 deleted file mode 100644 index c0968c2..0000000 --- a/chrome/app/generated_resources_grd/IDS_NTP_MODULES_HISTORY_CLUSTERS_RESUME_BROWSING.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -1bf982b29b3846a037248a57b9cd77fff5835f7b \ No newline at end of file
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 31a8a82d..712a89e7 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -5647,6 +5647,8 @@ sources += [ "apps/intent_helper/chromeos_apps_navigation_throttle.cc", "apps/intent_helper/chromeos_apps_navigation_throttle.h", + "apps/intent_helper/chromeos_disabled_apps_throttle.cc", + "apps/intent_helper/chromeos_disabled_apps_throttle.h", "apps/intent_helper/chromeos_intent_picker_helpers.cc", "apps/intent_helper/chromeos_intent_picker_helpers.h", "apps/intent_helper/metrics/intent_handling_metrics.cc",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 63ad4a7e..256ed7b 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -6292,10 +6292,6 @@ kJourneysVariations, "HistoryJourneys")}, - {"rename-history-journeys", flag_descriptions::kRenameJourneysName, - flag_descriptions::kRenameJourneysDescription, kOsDesktop | kOsAndroid, - FEATURE_VALUE_TYPE(history_clusters::kRenameJourneys)}, - {"history-journeys-content-clustering", flag_descriptions::kJourneysContentClusteringName, flag_descriptions::kJourneysContentClusteringDescription, @@ -9517,10 +9513,6 @@ #if BUILDFLAG(IS_CHROMEOS_LACROS) - {"enable-lacros-aura-capture", flag_descriptions::kLacrosAuraCaptureName, - flag_descriptions::kLacrosAuraCaptureDescription, kOsCrOS | kOsLacros, - FEATURE_VALUE_TYPE(features::kLacrosAuraCapture)}, - {"lacros-merge-icu-data-file", flag_descriptions::kLacrosMergeIcuDataFileName, flag_descriptions::kLacrosMergeIcuDataFileDescription, kOsCrOS | kOsLacros,
diff --git a/chrome/browser/accessibility/accessibility_extension_api_chromeos.cc b/chrome/browser/accessibility/accessibility_extension_api_chromeos.cc index 1da4f05..f01cbd4 100644 --- a/chrome/browser/accessibility/accessibility_extension_api_chromeos.cc +++ b/chrome/browser/accessibility/accessibility_extension_api_chromeos.cc
@@ -67,17 +67,6 @@ namespace accessibility_private = ::extensions::api::accessibility_private; using ::ash::AccessibilityManager; -ash::AccessibilityToastType ConvertToastType( - accessibility_private::ToastType type) { - switch (type) { - case accessibility_private::ToastType:: - TOAST_TYPE_DICTATIONNOFOCUSEDTEXTFIELD: - return ash::AccessibilityToastType::kDictationNoFocusedTextField; - case accessibility_private::ToastType::TOAST_TYPE_NONE: - NOTREACHED_NORETURN(); - } -} - ash::DictationBubbleHintType ConvertDictationHintType( accessibility_private::DictationBubbleHintType hint_type) { switch (hint_type) { @@ -793,15 +782,6 @@ return RespondNow(NoArguments()); } -ExtensionFunction::ResponseAction AccessibilityPrivateShowToastFunction::Run() { - absl::optional<accessibility_private::ShowToast::Params> params( - accessibility_private::ShowToast::Params::Create(args())); - EXTENSION_FUNCTION_VALIDATE(params); - ash::AccessibilityController::Get()->ShowToast( - ConvertToastType(params->type)); - return RespondNow(NoArguments()); -} - ExtensionFunction::ResponseAction AccessibilityPrivateShowConfirmationDialogFunction::Run() { absl::optional<accessibility_private::ShowConfirmationDialog::Params> params =
diff --git a/chrome/browser/accessibility/accessibility_extension_api_chromeos.h b/chrome/browser/accessibility/accessibility_extension_api_chromeos.h index be96563..39311db4 100644 --- a/chrome/browser/accessibility/accessibility_extension_api_chromeos.h +++ b/chrome/browser/accessibility/accessibility_extension_api_chromeos.h
@@ -240,14 +240,6 @@ ACCESSIBILITY_PRIVATE_SETVIRTUALKEYBOARDVISIBLE) }; -// API function that displays an accessibility-related toast. -class AccessibilityPrivateShowToastFunction : public ExtensionFunction { - ~AccessibilityPrivateShowToastFunction() override = default; - ResponseAction Run() override; - DECLARE_EXTENSION_FUNCTION("accessibilityPrivate.showToast", - ACCESSIBILITY_PRIVATE_SHOWTOAST) -}; - // API function that shows a confirmation dialog, with callbacks for // confirm/cancel. class AccessibilityPrivateShowConfirmationDialogFunction
diff --git a/chrome/browser/apps/app_discovery_service/app_discovery_service_factory.cc b/chrome/browser/apps/app_discovery_service/app_discovery_service_factory.cc index d8f62658c..52c09caa 100644 --- a/chrome/browser/apps/app_discovery_service/app_discovery_service_factory.cc +++ b/chrome/browser/apps/app_discovery_service/app_discovery_service_factory.cc
@@ -41,9 +41,11 @@ AppDiscoveryServiceFactory::~AppDiscoveryServiceFactory() = default; -KeyedService* AppDiscoveryServiceFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +AppDiscoveryServiceFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { - return new AppDiscoveryService(Profile::FromBrowserContext(context)); + return std::make_unique<AppDiscoveryService>( + Profile::FromBrowserContext(context)); } } // namespace apps
diff --git a/chrome/browser/apps/app_discovery_service/app_discovery_service_factory.h b/chrome/browser/apps/app_discovery_service/app_discovery_service_factory.h index 872b1b0..6ff8212 100644 --- a/chrome/browser/apps/app_discovery_service/app_discovery_service_factory.h +++ b/chrome/browser/apps/app_discovery_service/app_discovery_service_factory.h
@@ -32,7 +32,7 @@ ~AppDiscoveryServiceFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; };
diff --git a/chrome/browser/apps/app_preload_service/app_preload_service_factory.cc b/chrome/browser/apps/app_preload_service/app_preload_service_factory.cc index d1c5a60..3504ca5 100644 --- a/chrome/browser/apps/app_preload_service/app_preload_service_factory.cc +++ b/chrome/browser/apps/app_preload_service/app_preload_service_factory.cc
@@ -83,13 +83,14 @@ g_skip_api_key_check = skip_api_key_check; } -KeyedService* AppPreloadServiceFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +AppPreloadServiceFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { Profile* profile = Profile::FromBrowserContext(context); if (!IsAvailable(profile)) { return nullptr; } - return new AppPreloadService(profile); + return std::make_unique<AppPreloadService>(profile); } bool AppPreloadServiceFactory::ServiceIsCreatedWithBrowserContext() const {
diff --git a/chrome/browser/apps/app_preload_service/app_preload_service_factory.h b/chrome/browser/apps/app_preload_service/app_preload_service_factory.h index 8e3d8559..1df31c6 100644 --- a/chrome/browser/apps/app_preload_service/app_preload_service_factory.h +++ b/chrome/browser/apps/app_preload_service/app_preload_service_factory.h
@@ -40,7 +40,7 @@ ~AppPreloadServiceFactory() override; // ProfileKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; bool ServiceIsCreatedWithBrowserContext() const override; };
diff --git a/chrome/browser/apps/app_service/app_icon/app_icon_factory.cc b/chrome/browser/apps/app_service/app_icon/app_icon_factory.cc index 190cfef0..1edb636 100644 --- a/chrome/browser/apps/app_service/app_icon/app_icon_factory.cc +++ b/chrome/browser/apps/app_service/app_icon/app_icon_factory.cc
@@ -599,7 +599,7 @@ base::MakeRefCounted<AppIconLoader>( profile, /*app_id=*/absl::nullopt, IconType::kCompressed, size_in_dip, /*is_placeholder_icon=*/false, IconEffects::kNone, - kInvalidIconResource, std::move(callback)); + IDR_APP_DEFAULT_ICON, std::move(callback)); icon_loader->GetChromeAppCompressedIconData( extensions::ExtensionRegistry::Get(profile)->GetInstalledExtension( extension_id),
diff --git a/chrome/browser/apps/app_service/publishers/web_apps_crosapi_factory.cc b/chrome/browser/apps/app_service/publishers/web_apps_crosapi_factory.cc index 66b457e..01538920 100644 --- a/chrome/browser/apps/app_service/publishers/web_apps_crosapi_factory.cc +++ b/chrome/browser/apps/app_service/publishers/web_apps_crosapi_factory.cc
@@ -41,10 +41,12 @@ DependsOn(AppServiceProxyFactory::GetInstance()); } -KeyedService* WebAppsCrosapiFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +WebAppsCrosapiFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { - return new WebAppsCrosapi(AppServiceProxyFactory::GetForProfile( - Profile::FromBrowserContext(context))); + return std::make_unique<WebAppsCrosapi>( + AppServiceProxyFactory::GetForProfile( + Profile::FromBrowserContext(context))); } } // namespace apps
diff --git a/chrome/browser/apps/app_service/publishers/web_apps_crosapi_factory.h b/chrome/browser/apps/app_service/publishers/web_apps_crosapi_factory.h index 6a552ab..6de86b23 100644 --- a/chrome/browser/apps/app_service/publishers/web_apps_crosapi_factory.h +++ b/chrome/browser/apps/app_service/publishers/web_apps_crosapi_factory.h
@@ -33,8 +33,8 @@ ~WebAppsCrosapiFactory() override = default; // BrowserContextKeyedServiceFactory overrides. - KeyedService* BuildServiceInstanceFor( - content::BrowserContext* context) const override; + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( + content::BrowserContext* context) const override; }; } // namespace apps
diff --git a/chrome/browser/apps/app_shim/mach_bootstrap_acceptor.cc b/chrome/browser/apps/app_shim/mach_bootstrap_acceptor.cc index d3e997e..3867475a 100644 --- a/chrome/browser/apps/app_shim/mach_bootstrap_acceptor.cc +++ b/chrome/browser/apps/app_shim/mach_bootstrap_acceptor.cc
@@ -42,7 +42,7 @@ return; } - dispatch_source_ = std::make_unique<base::DispatchSourceMach>( + dispatch_source_ = std::make_unique<base::apple::DispatchSourceMach>( server_name_.c_str(), port(), ^{ HandleRequest(); });
diff --git a/chrome/browser/apps/app_shim/mach_bootstrap_acceptor.h b/chrome/browser/apps/app_shim/mach_bootstrap_acceptor.h index e07117db..71643e3 100644 --- a/chrome/browser/apps/app_shim/mach_bootstrap_acceptor.h +++ b/chrome/browser/apps/app_shim/mach_bootstrap_acceptor.h
@@ -64,7 +64,7 @@ mojo::NamedPlatformChannel::ServerName server_name_; raw_ptr<Delegate, AcrossTasksDanglingUntriaged> delegate_; mojo::PlatformChannelServerEndpoint endpoint_; - std::unique_ptr<base::DispatchSourceMach> dispatch_source_; + std::unique_ptr<base::apple::DispatchSourceMach> dispatch_source_; }; } // namespace apps
diff --git a/chrome/browser/apps/intent_helper/apps_navigation_throttle.cc b/chrome/browser/apps/intent_helper/apps_navigation_throttle.cc index 5b13523..d756d70 100644 --- a/chrome/browser/apps/intent_helper/apps_navigation_throttle.cc +++ b/chrome/browser/apps/intent_helper/apps_navigation_throttle.cc
@@ -87,15 +87,6 @@ return false; } -bool AppsNavigationThrottle::ShouldShowDisablePage( - content::NavigationHandle* handle) { - return false; -} - -ThrottleCheckResult AppsNavigationThrottle::MaybeShowCustomResult() { - return content::NavigationThrottle::CANCEL_AND_IGNORE; -} - bool AppsNavigationThrottle::navigate_from_link() const { return navigate_from_link_; } @@ -121,9 +112,6 @@ if (ShouldCancelNavigation(handle)) { return content::NavigationThrottle::CANCEL_AND_IGNORE; } - - if (ShouldShowDisablePage(handle)) - return MaybeShowCustomResult(); } return content::NavigationThrottle::PROCEED;
diff --git a/chrome/browser/apps/intent_helper/apps_navigation_throttle.h b/chrome/browser/apps/intent_helper/apps_navigation_throttle.h index 29e74783..0971220b 100644 --- a/chrome/browser/apps/intent_helper/apps_navigation_throttle.h +++ b/chrome/browser/apps/intent_helper/apps_navigation_throttle.h
@@ -41,10 +41,6 @@ protected: virtual bool ShouldCancelNavigation(content::NavigationHandle* handle); - virtual bool ShouldShowDisablePage(content::NavigationHandle* handle); - - virtual ThrottleCheckResult MaybeShowCustomResult(); - bool navigate_from_link() const; GURL starting_url_;
diff --git a/chrome/browser/apps/intent_helper/chromeos_apps_navigation_throttle.cc b/chrome/browser/apps/intent_helper/chromeos_apps_navigation_throttle.cc index d314618..25d53cc3 100644 --- a/chrome/browser/apps/intent_helper/chromeos_apps_navigation_throttle.cc +++ b/chrome/browser/apps/intent_helper/chromeos_apps_navigation_throttle.cc
@@ -10,7 +10,6 @@ #include <utility> #include "ash/webui/projector_app/public/cpp/projector_app_constants.h" -#include "base/containers/contains.h" #include "base/functional/bind.h" #include "base/functional/callback_forward.h" #include "base/functional/callback_helpers.h" @@ -27,8 +26,6 @@ #include "chrome/browser/apps/intent_helper/chromeos_intent_picker_helpers.h" #include "chrome/browser/apps/intent_helper/intent_picker_internal.h" #include "chrome/browser/apps/intent_helper/metrics/intent_handling_metrics.h" -#include "chrome/browser/browser_process.h" -#include "chrome/browser/policy/system_features_disable_list_policy_handler.h" #include "chrome/browser/profiles/keep_alive/profile_keep_alive_types.h" #include "chrome/browser/profiles/keep_alive/scoped_profile_keep_alive.h" #include "chrome/browser/profiles/profile.h" @@ -38,20 +35,14 @@ #include "chrome/browser/web_applications/web_app_provider.h" #include "chrome/browser/web_applications/web_app_tab_helper.h" #include "chrome/common/chrome_features.h" -#include "chrome/grit/browser_resources.h" #include "components/keep_alive_registry/keep_alive_types.h" #include "components/keep_alive_registry/scoped_keep_alive.h" #include "components/policy/core/common/policy_pref_names.h" #include "components/prefs/pref_service.h" #include "components/services/app_service/public/cpp/app_launch_util.h" #include "components/services/app_service/public/cpp/app_types.h" -#include "components/strings/grit/components_strings.h" #include "content/public/browser/navigation_handle.h" #include "content/public/browser/web_contents.h" -#include "ui/base/l10n/l10n_util.h" -#include "ui/base/resource/resource_bundle.h" -#include "ui/base/webui/jstemplate_builder.h" -#include "ui/base/webui/web_ui_util.h" #include "ui/display/types/display_constants.h" namespace apps { @@ -60,37 +51,6 @@ using ThrottleCheckResult = content::NavigationThrottle::ThrottleCheckResult; -// TODO(crbug.com/1251490 ) Update to make disabled page works in Lacros. -std::string GetAppDisabledErrorPage() { - base::Value::Dict strings; - - strings.Set("disabledPageHeader", - l10n_util::GetStringUTF16(IDS_CHROME_URLS_DISABLED_PAGE_HEADER)); - strings.Set("disabledPageTitle", - l10n_util::GetStringUTF16(IDS_CHROME_URLS_DISABLED_PAGE_TITLE)); - strings.Set("disabledPageMessage", - l10n_util::GetStringUTF16(IDS_CHROME_URLS_DISABLED_PAGE_MESSAGE)); - std::string html = - ui::ResourceBundle::GetSharedInstance().LoadDataResourceString( - IDR_CHROME_URLS_DISABLED_PAGE_HTML); - const std::string& app_locale = g_browser_process->GetApplicationLocale(); - webui::SetLoadTimeDataDefaults(app_locale, &strings); - return webui::GetI18nTemplateHtml(html, strings); -} - -bool IsAppDisabled(const std::string& app_id) { - policy::SystemFeature system_feature = - policy::SystemFeaturesDisableListPolicyHandler::GetSystemFeatureFromAppId( - app_id); - - if (system_feature == policy::SystemFeature::kUnknownSystemFeature) { - return false; - } - - return policy::SystemFeaturesDisableListPolicyHandler:: - IsSystemFeatureDisabled(system_feature, g_browser_process->local_state()); -} - // Usually we want to only capture navigations from clicking a link. For a // subset of apps, we want to capture typing into the omnibox as well. bool ShouldOnlyCaptureLinks(const std::vector<std::string>& app_ids) { @@ -342,29 +302,4 @@ return true; } -bool ChromeOsAppsNavigationThrottle::ShouldShowDisablePage( - content::NavigationHandle* handle) { - content::WebContents* web_contents = handle->GetWebContents(); - const GURL& url = handle->GetURL(); - - Profile* profile = - Profile::FromBrowserContext(web_contents->GetBrowserContext()); - std::vector<std::string> app_ids = - apps::AppServiceProxyFactory::GetForProfile(profile)->GetAppIdsForUrl( - url, /*exclude_browsers=*/true, /*exclude_browser_tab_apps=*/false); - - for (const auto& app_id : app_ids) { - if (IsAppDisabled(app_id)) { - return true; - } - } - return false; -} - -ThrottleCheckResult ChromeOsAppsNavigationThrottle::MaybeShowCustomResult() { - return ThrottleCheckResult(content::NavigationThrottle::CANCEL, - net::ERR_BLOCKED_BY_ADMINISTRATOR, - GetAppDisabledErrorPage()); -} - } // namespace apps
diff --git a/chrome/browser/apps/intent_helper/chromeos_apps_navigation_throttle.h b/chrome/browser/apps/intent_helper/chromeos_apps_navigation_throttle.h index 9df40ec5..58b2cbb 100644 --- a/chrome/browser/apps/intent_helper/chromeos_apps_navigation_throttle.h +++ b/chrome/browser/apps/intent_helper/chromeos_apps_navigation_throttle.h
@@ -49,8 +49,6 @@ private: bool ShouldCancelNavigation(content::NavigationHandle* handle) override; - bool ShouldShowDisablePage(content::NavigationHandle* handle) override; - ThrottleCheckResult MaybeShowCustomResult() override; // Used to create a unique timestamped URL to force reload apps. // Points to the base::DefaultTickClock by default.
diff --git a/chrome/browser/apps/intent_helper/chromeos_disabled_apps_throttle.cc b/chrome/browser/apps/intent_helper/chromeos_disabled_apps_throttle.cc new file mode 100644 index 0000000..ed94987 --- /dev/null +++ b/chrome/browser/apps/intent_helper/chromeos_disabled_apps_throttle.cc
@@ -0,0 +1,125 @@ +// 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/apps/intent_helper/chromeos_disabled_apps_throttle.h" + +#include <memory> +#include <vector> + +#include "base/memory/ptr_util.h" +#include "chrome/browser/apps/app_service/app_service_proxy.h" +#include "chrome/browser/apps/app_service/app_service_proxy_factory.h" +#include "chrome/browser/apps/intent_helper/intent_picker_internal.h" +#include "chrome/browser/browser_process.h" +#include "chrome/browser/policy/system_features_disable_list_policy_handler.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/grit/browser_resources.h" +#include "components/strings/grit/components_strings.h" +#include "content/public/browser/navigation_handle.h" +#include "content/public/browser/navigation_throttle.h" +#include "content/public/browser/web_contents.h" +#include "ui/base/l10n/l10n_util.h" +#include "ui/base/resource/resource_bundle.h" +#include "ui/base/webui/jstemplate_builder.h" +#include "ui/base/webui/web_ui_util.h" + +namespace apps { +namespace { +using ThrottleCheckResult = content::NavigationThrottle::ThrottleCheckResult; + +std::string GetAppDisabledErrorPage() { + base::Value::Dict strings; + + strings.Set("disabledPageHeader", + l10n_util::GetStringUTF16(IDS_CHROME_URLS_DISABLED_PAGE_HEADER)); + strings.Set("disabledPageTitle", + l10n_util::GetStringUTF16(IDS_CHROME_URLS_DISABLED_PAGE_TITLE)); + strings.Set("disabledPageMessage", + l10n_util::GetStringUTF16(IDS_CHROME_URLS_DISABLED_PAGE_MESSAGE)); + std::string html = + ui::ResourceBundle::GetSharedInstance().LoadDataResourceString( + IDR_CHROME_URLS_DISABLED_PAGE_HTML); + const std::string& app_locale = g_browser_process->GetApplicationLocale(); + webui::SetLoadTimeDataDefaults(app_locale, &strings); + return webui::GetI18nTemplateHtml(html, strings); +} + +} // namespace + +// static +std::unique_ptr<content::NavigationThrottle> +ChromeOsDisabledAppsThrottle::MaybeCreate(content::NavigationHandle* handle) { + // Don't handle navigations in subframes or main frames that are in a nested + // frame tree (e.g. portals, fenced-frame). + if (!handle->IsInPrimaryMainFrame() && !handle->IsInPrerenderedMainFrame()) { + return nullptr; + } + + content::WebContents* web_contents = handle->GetWebContents(); + Profile* profile = + Profile::FromBrowserContext(web_contents->GetBrowserContext()); + if (!AppServiceProxyFactory::IsAppServiceAvailableForProfile(profile)) { + return nullptr; + } + + // TODO(dmurph): Remove this, as prerenders and app browsers should be able to + // escape the disabled throttle. https://crbug.com/1474680 + if (!ShouldCheckAppsForUrl(web_contents)) { + return nullptr; + } + + return base::WrapUnique(new ChromeOsDisabledAppsThrottle(handle)); +} + +ChromeOsDisabledAppsThrottle::ChromeOsDisabledAppsThrottle( + content::NavigationHandle* navigation_handle) + : content::NavigationThrottle(navigation_handle) {} +ChromeOsDisabledAppsThrottle::~ChromeOsDisabledAppsThrottle() = default; + +const char* ChromeOsDisabledAppsThrottle::GetNameForLogging() { + return "ChromeOsDisabledAppsThrottle"; +} + +ThrottleCheckResult ChromeOsDisabledAppsThrottle::WillStartRequest() { + return HandleRequest(); +} + +ThrottleCheckResult ChromeOsDisabledAppsThrottle::WillRedirectRequest() { + return HandleRequest(); +} + +ThrottleCheckResult ChromeOsDisabledAppsThrottle::HandleRequest() { + content::WebContents* web_contents = navigation_handle()->GetWebContents(); + const GURL& url = navigation_handle()->GetURL(); + + Profile* profile = + Profile::FromBrowserContext(web_contents->GetBrowserContext()); + + std::vector<std::string> app_ids = + apps::AppServiceProxyFactory::GetForProfile(profile)->GetAppIdsForUrl( + url, /*exclude_browsers=*/true, /*exclude_browser_tab_apps=*/false); + + for (const auto& app_id : app_ids) { + policy::SystemFeature system_feature = + policy::SystemFeaturesDisableListPolicyHandler:: + GetSystemFeatureFromAppId(app_id); + + if (system_feature == policy::SystemFeature::kUnknownSystemFeature) { + continue; + } + + if (!policy::SystemFeaturesDisableListPolicyHandler:: + IsSystemFeatureDisabled(system_feature, + g_browser_process->local_state())) { + continue; + } + + return ThrottleCheckResult(content::NavigationThrottle::CANCEL, + net::ERR_BLOCKED_BY_ADMINISTRATOR, + GetAppDisabledErrorPage()); + } + return content::NavigationThrottle::PROCEED; +} + +} // namespace apps
diff --git a/chrome/browser/apps/intent_helper/chromeos_disabled_apps_throttle.h b/chrome/browser/apps/intent_helper/chromeos_disabled_apps_throttle.h new file mode 100644 index 0000000..fd2d02a --- /dev/null +++ b/chrome/browser/apps/intent_helper/chromeos_disabled_apps_throttle.h
@@ -0,0 +1,47 @@ +// 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_APPS_INTENT_HELPER_CHROMEOS_DISABLED_APPS_THROTTLE_H_ +#define CHROME_BROWSER_APPS_INTENT_HELPER_CHROMEOS_DISABLED_APPS_THROTTLE_H_ + +#include <memory> + +#include "content/public/browser/navigation_throttle.h" + +namespace content { +class NavigationHandle; +} // namespace content + +namespace apps { + +// Allows cancelling a navigation to a disabled app & showing the disabled app +// page. +class ChromeOsDisabledAppsThrottle : public content::NavigationThrottle { + public: + using ThrottleCheckResult = content::NavigationThrottle::ThrottleCheckResult; + + // Possibly creates a navigation throttle that checks if the given url is + // part of a disabled app. + static std::unique_ptr<content::NavigationThrottle> MaybeCreate( + content::NavigationHandle* handle); + + ChromeOsDisabledAppsThrottle(const ChromeOsDisabledAppsThrottle&) = delete; + ChromeOsDisabledAppsThrottle& operator=(const ChromeOsDisabledAppsThrottle&) = + delete; + ~ChromeOsDisabledAppsThrottle() override; + + // content::NavigationHandle overrides + const char* GetNameForLogging() override; + ThrottleCheckResult WillStartRequest() override; + ThrottleCheckResult WillRedirectRequest() override; + + private: + explicit ChromeOsDisabledAppsThrottle( + content::NavigationHandle* navigation_handle); + ThrottleCheckResult HandleRequest(); +}; + +} // namespace apps + +#endif // CHROME_BROWSER_APPS_INTENT_HELPER_CHROMEOS_DISABLED_APPS_THROTTLE_H_
diff --git a/chrome/browser/apps/platform_apps/app_load_service_factory.cc b/chrome/browser/apps/platform_apps/app_load_service_factory.cc index 6347ad7..f0677682 100644 --- a/chrome/browser/apps/platform_apps/app_load_service_factory.cc +++ b/chrome/browser/apps/platform_apps/app_load_service_factory.cc
@@ -46,9 +46,10 @@ AppLoadServiceFactory::~AppLoadServiceFactory() = default; -KeyedService* AppLoadServiceFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +AppLoadServiceFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { - return new AppLoadService(context); + return std::make_unique<AppLoadService>(context); } bool AppLoadServiceFactory::ServiceIsCreatedWithBrowserContext() const {
diff --git a/chrome/browser/apps/platform_apps/app_load_service_factory.h b/chrome/browser/apps/platform_apps/app_load_service_factory.h index b7a5c22..52b45cee 100644 --- a/chrome/browser/apps/platform_apps/app_load_service_factory.h +++ b/chrome/browser/apps/platform_apps/app_load_service_factory.h
@@ -29,7 +29,7 @@ ~AppLoadServiceFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; bool ServiceIsCreatedWithBrowserContext() const override; };
diff --git a/chrome/browser/ash/BUILD.gn b/chrome/browser/ash/BUILD.gn index 6097afe0..0f0a457b 100644 --- a/chrome/browser/ash/BUILD.gn +++ b/chrome/browser/ash/BUILD.gn
@@ -3596,6 +3596,7 @@ "//chromeos/ash/components/mojo_service_manager/mojom", "//chromeos/ash/components/multidevice", "//chromeos/ash/components/nearby/presence", + "//chromeos/ash/components/nearby/presence/conversions", "//chromeos/ash/components/network", "//chromeos/ash/components/network/portal_detector", "//chromeos/ash/components/osauth/impl",
diff --git a/chrome/browser/ash/accessibility/dictation_browsertest.cc b/chrome/browser/ash/accessibility/dictation_browsertest.cc index 7036faa..0d47626f0 100644 --- a/chrome/browser/ash/accessibility/dictation_browsertest.cc +++ b/chrome/browser/ash/accessibility/dictation_browsertest.cc
@@ -8,7 +8,6 @@ #include "ash/constants/ash_pref_names.h" #include "ash/public/cpp/system_tray_test_api.h" -#include "ash/public/cpp/test/accessibility_controller_test_api.h" #include "ash/root_window_controller.h" #include "ash/shell.h" #include "ash/system/accessibility/dictation_button_tray.h" @@ -317,8 +316,6 @@ utils_->set_wait_for_accessibility_common_extension_load_(use); } - DictationTestUtils* utils() { return utils_.get(); } - private: std::unique_ptr<DictationTestUtils> utils_; base::test::ScopedFeatureList scoped_feature_list_; @@ -2243,102 +2240,4 @@ SendFinalResultAndWaitForEditableValue("was one", "This was one test"); } -class AccessibilityToastCallbackManager { - public: - void OnToastShown() { run_loop_.Quit(); } - void WaitForToastShown() { run_loop_.Run(); } - - private: - base::RunLoop run_loop_; -}; - -class DictationKeyboardImprovementsTest : public DictationTestBase { - public: - DictationKeyboardImprovementsTest() = default; - ~DictationKeyboardImprovementsTest() override = default; - DictationKeyboardImprovementsTest(const DictationKeyboardImprovementsTest&) = - delete; - DictationKeyboardImprovementsTest& operator=( - const DictationKeyboardImprovementsTest&) = delete; - - protected: - void SetUpCommandLine(base::CommandLine* command_line) override { - DictationTestBase::SetUpCommandLine(command_line); - - std::vector<base::test::FeatureRef> enabled_features{ - ::features::kAccessibilityDictationKeyboardImprovements}; - scoped_feature_list_.InitWithFeatures( - enabled_features, std::vector<base::test::FeatureRef>()); - } - - void SetUpOnMainThread() override { - DictationTestBase::SetUpOnMainThread(); - test_api_ = AccessibilityControllerTestApi::Create(); - callback_manager_ = std::make_unique<AccessibilityToastCallbackManager>(); - test_api_->AddShowToastCallbackForTesting( - base::BindRepeating(&AccessibilityToastCallbackManager::OnToastShown, - base::Unretained(callback_manager_.get()))); - - // Tab away from the editable. - ASSERT_NO_FATAL_FAILURE(ASSERT_TRUE(ui_test_utils::SendKeyPressToWindowSync( - /*window=*/nullptr, /*key=*/ui::KeyboardCode::VKEY_TAB, - /*control=*/false, - /*shift=*/false, /*alt=*/false, /*command=*/false))); - // Reduce the no focused IME timeout so that the nudge will be shown - // promptly. - ExecuteAccessibilityCommonScript( - "testSupport.setNoFocusedImeTimeout(500);"); - } - - void WaitForToastShown() { callback_manager_->WaitForToastShown(); } - - private: - std::unique_ptr<AccessibilityControllerTestApi> test_api_; - std::unique_ptr<AccessibilityToastCallbackManager> callback_manager_; - base::test::ScopedFeatureList scoped_feature_list_; -}; - -INSTANTIATE_TEST_SUITE_P( - NetworkDictationKeyboardImprovementsTest, - DictationKeyboardImprovementsTest, - ::testing::Values(TestConfig(speech::SpeechRecognitionType::kNetwork, - EditableType::kInput))); - -// Verifies that a nudge is shown in the system UI when Dictation is toggled -// when there is no focused editable. -IN_PROC_BROWSER_TEST_P(DictationKeyboardImprovementsTest, - ToggledWithNoFocusShowsNudge) { - // Disable the console observer because toggling Dictation in the following - // manner will cause an error to be emitted to the console. - utils()->DisableConsoleObserver(); - ToggleDictationWithKeystroke(); - WaitForToastShown(); - WaitForRecognitionStopped(); -} - -// Verifies that ChromeVox announces a message when when Dictation is toggled -// when there is no focused editable. -IN_PROC_BROWSER_TEST_P(DictationKeyboardImprovementsTest, - ToggledWithNoFocusTriggersSpeech) { - // Setup ChromeVox. - test::SpeechMonitor sm; - EXPECT_FALSE(GetManager()->IsSpokenFeedbackEnabled()); - extensions::ExtensionHostTestHelper host_helper( - browser()->profile(), extension_misc::kChromeVoxExtensionId); - EnableChromeVox(); - host_helper.WaitForHostCompletedFirstLoad(); - EXPECT_TRUE(GetManager()->IsSpokenFeedbackEnabled()); - - // Disable the console observer because toggling Dictation in the following - // manner will cause an error to be emitted to the console. - utils()->DisableConsoleObserver(); - ToggleDictationWithKeystroke(); - WaitForToastShown(); - WaitForRecognitionStopped(); - - // Assert speech from ChromeVox. - sm.ExpectSpeechPattern("*Go to a text field to use Dictation*"); - sm.Replay(); -} - } // namespace ash
diff --git a/chrome/browser/ash/accessibility/dictation_test_utils.cc b/chrome/browser/ash/accessibility/dictation_test_utils.cc index 8c1e593..f27cf98 100644 --- a/chrome/browser/ash/accessibility/dictation_test_utils.cc +++ b/chrome/browser/ash/accessibility/dictation_test_utils.cc
@@ -179,7 +179,7 @@ // Increase Dictation's NO_FOCUSED_IME timeout to reduce flakiness on slower // builds. - std::string script = "testSupport.setNoFocusedImeTimeout(20 * 1000);"; + std::string script = "testSupport.increaseNoFocusedImeTimeout();"; ExecuteAccessibilityCommonScript(script); // Dictation will request a Pumpkin install when it starts up. Wait for
diff --git a/chrome/browser/ash/accessibility/dictation_test_utils.h b/chrome/browser/ash/accessibility/dictation_test_utils.h index ae7e6be5..879e2e7a 100644 --- a/chrome/browser/ash/accessibility/dictation_test_utils.h +++ b/chrome/browser/ash/accessibility/dictation_test_utils.h
@@ -94,10 +94,6 @@ int GetCommitTextCallCount(); void WaitForCommitText(const std::u16string& value); - // TODO(b:259352600): Instead of disabling the observer, change this to - // allow specific messages. - void DisableConsoleObserver() { console_observer_.reset(); } - // Sets whether or not we should wait for the accessibility common extension // to load when enabling Dictation. This should be true in almost all cases. // However, there are times when we don't want to wait for accessibility
diff --git a/chrome/browser/ash/accessibility/live_caption/system_live_caption_service_factory.cc b/chrome/browser/ash/accessibility/live_caption/system_live_caption_service_factory.cc index 782db5f..8865287 100644 --- a/chrome/browser/ash/accessibility/live_caption/system_live_caption_service_factory.cc +++ b/chrome/browser/ash/accessibility/live_caption/system_live_caption_service_factory.cc
@@ -39,9 +39,11 @@ SystemLiveCaptionServiceFactory::~SystemLiveCaptionServiceFactory() = default; -KeyedService* SystemLiveCaptionServiceFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +SystemLiveCaptionServiceFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { - return new SystemLiveCaptionService(Profile::FromBrowserContext(context)); + return std::make_unique<SystemLiveCaptionService>( + Profile::FromBrowserContext(context)); } } // namespace ash
diff --git a/chrome/browser/ash/accessibility/live_caption/system_live_caption_service_factory.h b/chrome/browser/ash/accessibility/live_caption/system_live_caption_service_factory.h index a48fad5..962dd6f 100644 --- a/chrome/browser/ash/accessibility/live_caption/system_live_caption_service_factory.h +++ b/chrome/browser/ash/accessibility/live_caption/system_live_caption_service_factory.h
@@ -33,7 +33,7 @@ ~SystemLiveCaptionServiceFactory() override; // BrowserContextKeyedServiceFactory overrides: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* profile) const override; };
diff --git a/chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc b/chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc index ae897de9..a417e52 100644 --- a/chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc +++ b/chrome/browser/ash/accessibility/spoken_feedback_browsertest.cc
@@ -16,6 +16,7 @@ #include "ash/public/cpp/event_rewriter_controller.h" #include "ash/public/cpp/screen_backlight.h" #include "ash/public/cpp/shelf_model.h" +#include "ash/public/cpp/shell_window_ids.h" #include "ash/public/cpp/test/shell_test_api.h" #include "ash/public/cpp/test/test_shelf_item_delegate.h" #include "ash/root_window_controller.h" @@ -29,6 +30,7 @@ #include "ash/system/status_area_widget_test_helper.h" #include "ash/system/unified/unified_system_tray.h" #include "ash/wm/desks/templates/saved_desk_util.h" +#include "base/allocator/partition_allocator/pointers/raw_ptr.h" #include "base/command_line.h" #include "base/functional/bind.h" #include "base/test/scoped_feature_list.h" @@ -39,6 +41,7 @@ #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/ash/accessibility/html_test_utils.h" +#include "chrome/browser/ash/input_method/ui/candidate_window_view.h" #include "chrome/browser/ash/login/test/device_state_mixin.h" #include "chrome/browser/ash/login/test/login_manager_mixin.h" #include "chrome/browser/ash/login/test/oobe_base_test.h" @@ -65,6 +68,7 @@ #include "extensions/common/constants.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/accessibility/accessibility_features.h" +#include "ui/base/ime/candidate_window.h" #include "ui/base/ui_base_features.h" #include "ui/display/manager/display_manager.h" #include "ui/display/screen.h" @@ -2368,4 +2372,84 @@ sm_.ExpectSpeech("row 1 column 1"); sm_.Replay(); } + +class SpokenFeedbackWithCandidateWindowTest + : public LoggedInSpokenFeedbackTest { + public: + SpokenFeedbackWithCandidateWindowTest() = default; + SpokenFeedbackWithCandidateWindowTest( + const SpokenFeedbackWithCandidateWindowTest&) = delete; + SpokenFeedbackWithCandidateWindowTest& operator=( + const SpokenFeedbackWithCandidateWindowTest&) = delete; + ~SpokenFeedbackWithCandidateWindowTest() override = default; + + void SetUpOnMainThread() override { + LoggedInSpokenFeedbackTest::SetUpOnMainThread(); + + aura::Window* parent = + ash::Shell::GetContainer(Shell::Get()->GetPrimaryRootWindow(), + ash::kShellWindowId_MenuContainer); + + candidate_window_view_ = new ui::ime::CandidateWindowView(parent); + candidate_window_view_->InitWidget(); + } + void TearDownOnMainThread() override { + candidate_window_view_.ExtractAsDangling()->GetWidget()->CloseNow(); + LoggedInSpokenFeedbackTest::TearDownOnMainThread(); + } + + raw_ptr<ui::ime::CandidateWindowView> candidate_window_view_; +}; + +IN_PROC_BROWSER_TEST_F(SpokenFeedbackWithCandidateWindowTest, + SpeakSelectedItem) { + EnableChromeVox(); + + ui::CandidateWindow candidate_window; + candidate_window.set_cursor_position(0); + candidate_window.set_page_size(2); + candidate_window.mutable_candidates()->clear(); + candidate_window.set_orientation(ui::CandidateWindow::VERTICAL); + for (size_t i = 0; i < 2; ++i) { + ui::CandidateWindow::Entry entry; + entry.value = u"value " + base::NumberToString16(i); + entry.label = u"label " + base::NumberToString16(i); + candidate_window.mutable_candidates()->push_back(entry); + } + + sm_.Call([this, &candidate_window]() { + candidate_window_view_->GetWidget()->Show(); + candidate_window_view_->UpdateCandidates(candidate_window); + candidate_window_view_->ShowLookupTable(); + }); + sm_.ExpectSpeech("value 0"); + + // Move selection to another item. + sm_.Call([this, &candidate_window]() { + candidate_window.set_cursor_position(1); + candidate_window_view_->UpdateCandidates(candidate_window); + }); + sm_.ExpectSpeech("value 1"); + + // Simulate pagination. + sm_.Call([this, &candidate_window]() { + candidate_window.set_cursor_position(0); + candidate_window.mutable_candidates()->at(0).value = u"value 2"; + candidate_window.mutable_candidates()->at(0).label = u"label 2"; + candidate_window.mutable_candidates()->at(1).value = u"value 3"; + candidate_window.mutable_candidates()->at(1).label = u"label 3"; + candidate_window_view_->UpdateCandidates(candidate_window); + }); + // TODO(hirokisato): We should check unexpected utterances are not skipped + // when consuming "value 2", otherwise there's a race between when we check + // "NextSpeechIsNot" and when speech is created, and test may pass + // unexpectedly. + sm_.ExpectNextSpeechIsNot("value 0"); + sm_.ExpectNextSpeechIsNot("value 1"); + sm_.ExpectNextSpeechIsNot("value 3"); + sm_.ExpectSpeech("value 2"); + + sm_.Replay(); +} + } // namespace ash
diff --git a/chrome/browser/ash/android_sms/android_sms_service_factory.cc b/chrome/browser/ash/android_sms/android_sms_service_factory.cc index b125e64..ee5f9a5 100644 --- a/chrome/browser/ash/android_sms/android_sms_service_factory.cc +++ b/chrome/browser/ash/android_sms/android_sms_service_factory.cc
@@ -80,11 +80,12 @@ AndroidSmsServiceFactory::~AndroidSmsServiceFactory() = default; -KeyedService* AndroidSmsServiceFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +AndroidSmsServiceFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { Profile* profile = Profile::FromBrowserContext(context); - return new AndroidSmsService( + return std::make_unique<AndroidSmsService>( profile, HostContentSettingsMapFactory::GetForProfile(profile), multidevice_setup::MultiDeviceSetupClientFactory::GetForProfile(profile), web_app::WebAppProvider::GetDeprecated(profile),
diff --git a/chrome/browser/ash/android_sms/android_sms_service_factory.h b/chrome/browser/ash/android_sms/android_sms_service_factory.h index dc1b7702..f434f44 100644 --- a/chrome/browser/ash/android_sms/android_sms_service_factory.h +++ b/chrome/browser/ash/android_sms/android_sms_service_factory.h
@@ -33,7 +33,7 @@ ~AndroidSmsServiceFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; content::BrowserContext* GetBrowserContextToUse( content::BrowserContext* context) const override;
diff --git a/chrome/browser/ash/app_list/app_list_client_impl_browsertest.cc b/chrome/browser/ash/app_list/app_list_client_impl_browsertest.cc index f31cfba..8b811080 100644 --- a/chrome/browser/ash/app_list/app_list_client_impl_browsertest.cc +++ b/chrome/browser/ash/app_list/app_list_client_impl_browsertest.cc
@@ -192,6 +192,9 @@ IN_PROC_BROWSER_TEST_F(AppListClientImplBrowserTest, UninstallApp) { AppListClientImpl* client = AppListClientImpl::GetInstance(); const extensions::Extension* app = InstallPlatformApp("minimal"); + auto* app_service_proxy = + apps::AppServiceProxyFactory::GetForProfile(browser()->profile()); + ASSERT_TRUE(app_service_proxy); // Bring up the app list. EXPECT_FALSE(client->GetAppListWindow()); @@ -204,9 +207,11 @@ // Open the uninstall dialog. base::RunLoop run_loop; - client->UninstallApp(profile(), app->id()); + app_service_proxy->UninstallForTesting( + app->id(), client->GetAppListWindow(), + base::BindLambdaForTesting([&](bool) { run_loop.Quit(); })); + run_loop.Run(); - run_loop.RunUntilIdle(); EXPECT_FALSE(wm::GetTransientChildren(client->GetAppListWindow()).empty()); // The app list should not be dismissed when the dialog is shown.
diff --git a/chrome/browser/ash/app_list/app_sync_ui_state_factory.cc b/chrome/browser/ash/app_list/app_sync_ui_state_factory.cc index 2631d5f..9e03712 100644 --- a/chrome/browser/ash/app_list/app_sync_ui_state_factory.cc +++ b/chrome/browser/ash/app_list/app_sync_ui_state_factory.cc
@@ -39,9 +39,10 @@ AppSyncUIStateFactory::~AppSyncUIStateFactory() = default; -KeyedService* AppSyncUIStateFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +AppSyncUIStateFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { Profile* profile = static_cast<Profile*>(context); DCHECK(AppSyncUIState::ShouldObserveAppSyncForProfile(profile)); - return new AppSyncUIState(profile); + return std::make_unique<AppSyncUIState>(profile); }
diff --git a/chrome/browser/ash/app_list/app_sync_ui_state_factory.h b/chrome/browser/ash/app_list/app_sync_ui_state_factory.h index 1aec1a1..7f384eb 100644 --- a/chrome/browser/ash/app_list/app_sync_ui_state_factory.h +++ b/chrome/browser/ash/app_list/app_sync_ui_state_factory.h
@@ -28,7 +28,7 @@ ~AppSyncUIStateFactory() override; // BrowserContextKeyedServiceFactory overrides: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; };
diff --git a/chrome/browser/ash/app_list/search/keyboard_shortcut_result.cc b/chrome/browser/ash/app_list/search/keyboard_shortcut_result.cc index 482702c1..bc0e852c 100644 --- a/chrome/browser/ash/app_list/search/keyboard_shortcut_result.cc +++ b/chrome/browser/ash/app_list/search/keyboard_shortcut_result.cc
@@ -109,6 +109,8 @@ return IconCode::kKeyboardShortcutRight; case (KeyboardCode::VKEY_PRIVACY_SCREEN_TOGGLE): return IconCode::kKeyboardShortcutPrivacyScreenToggle; + case (KeyboardCode::VKEY_SETTINGS): + return IconCode::kKeyboardShortcutSettings; case (KeyboardCode::VKEY_SNAPSHOT): return IconCode::kKeyboardShortcutSnapshot; default:
diff --git a/chrome/browser/ash/app_restore/app_restore_arc_task_handler_factory.cc b/chrome/browser/ash/app_restore/app_restore_arc_task_handler_factory.cc index 7c15862..6069ec2 100644 --- a/chrome/browser/ash/app_restore/app_restore_arc_task_handler_factory.cc +++ b/chrome/browser/ash/app_restore/app_restore_arc_task_handler_factory.cc
@@ -42,12 +42,14 @@ AppRestoreArcTaskHandlerFactory::~AppRestoreArcTaskHandlerFactory() = default; -KeyedService* AppRestoreArcTaskHandlerFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +AppRestoreArcTaskHandlerFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { if (!arc::IsArcAllowedForProfile(Profile::FromBrowserContext(context))) return nullptr; - return new AppRestoreArcTaskHandler(Profile::FromBrowserContext(context)); + return std::make_unique<AppRestoreArcTaskHandler>( + Profile::FromBrowserContext(context)); } } // namespace ash::app_restore
diff --git a/chrome/browser/ash/app_restore/app_restore_arc_task_handler_factory.h b/chrome/browser/ash/app_restore/app_restore_arc_task_handler_factory.h index ed565e5..f9ef14a8 100644 --- a/chrome/browser/ash/app_restore/app_restore_arc_task_handler_factory.h +++ b/chrome/browser/ash/app_restore/app_restore_arc_task_handler_factory.h
@@ -31,7 +31,7 @@ ~AppRestoreArcTaskHandlerFactory() override; // BrowserContextKeyedServiceFactory. - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; };
diff --git a/chrome/browser/ash/app_restore/full_restore_service_factory.cc b/chrome/browser/ash/app_restore/full_restore_service_factory.cc index ad940a25..ad9977b 100644 --- a/chrome/browser/ash/app_restore/full_restore_service_factory.cc +++ b/chrome/browser/ash/app_restore/full_restore_service_factory.cc
@@ -59,13 +59,14 @@ FullRestoreServiceFactory::~FullRestoreServiceFactory() = default; -KeyedService* FullRestoreServiceFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +FullRestoreServiceFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { Profile* profile = Profile::FromBrowserContext(context); if (!IsFullRestoreAvailableForProfile(profile)) return nullptr; - return new FullRestoreService(profile); + return std::make_unique<FullRestoreService>(profile); } } // namespace ash::full_restore
diff --git a/chrome/browser/ash/app_restore/full_restore_service_factory.h b/chrome/browser/ash/app_restore/full_restore_service_factory.h index 0123da2a..d1ea40c 100644 --- a/chrome/browser/ash/app_restore/full_restore_service_factory.h +++ b/chrome/browser/ash/app_restore/full_restore_service_factory.h
@@ -35,7 +35,7 @@ delete; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; };
diff --git a/chrome/browser/ash/apps/apk_web_app_service_factory.cc b/chrome/browser/ash/apps/apk_web_app_service_factory.cc index 56e9e02b..c345d2c6 100644 --- a/chrome/browser/ash/apps/apk_web_app_service_factory.cc +++ b/chrome/browser/ash/apps/apk_web_app_service_factory.cc
@@ -44,13 +44,14 @@ ApkWebAppServiceFactory::~ApkWebAppServiceFactory() = default; -KeyedService* ApkWebAppServiceFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +ApkWebAppServiceFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { Profile* profile = static_cast<Profile*>(context); if (!arc::IsArcAllowedForProfile(profile)) return nullptr; - return new ApkWebAppService(profile, /*test_delegate=*/nullptr); + return std::make_unique<ApkWebAppService>(profile, /*test_delegate=*/nullptr); } } // namespace ash
diff --git a/chrome/browser/ash/apps/apk_web_app_service_factory.h b/chrome/browser/ash/apps/apk_web_app_service_factory.h index 23cf17e9..7cd5a10 100644 --- a/chrome/browser/ash/apps/apk_web_app_service_factory.h +++ b/chrome/browser/ash/apps/apk_web_app_service_factory.h
@@ -39,7 +39,7 @@ ~ApkWebAppServiceFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; };
diff --git a/chrome/browser/ash/bluetooth/debug_logs_manager_factory.cc b/chrome/browser/ash/bluetooth/debug_logs_manager_factory.cc index c049d2a1..836c1c7 100644 --- a/chrome/browser/ash/bluetooth/debug_logs_manager_factory.cc +++ b/chrome/browser/ash/bluetooth/debug_logs_manager_factory.cc
@@ -70,7 +70,8 @@ DebugLogsManagerFactory::~DebugLogsManagerFactory() = default; -KeyedService* DebugLogsManagerFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +DebugLogsManagerFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { Profile* profile = Profile::FromBrowserContext(context); @@ -78,7 +79,7 @@ if (!ProfileHelper::Get()->IsPrimaryProfile(profile)) return nullptr; - return new DebugLogsManagerService(profile); + return std::make_unique<DebugLogsManagerService>(profile); } bool DebugLogsManagerFactory::ServiceIsCreatedWithBrowserContext() const {
diff --git a/chrome/browser/ash/bluetooth/debug_logs_manager_factory.h b/chrome/browser/ash/bluetooth/debug_logs_manager_factory.h index 41d2ea2..db0597f 100644 --- a/chrome/browser/ash/bluetooth/debug_logs_manager_factory.h +++ b/chrome/browser/ash/bluetooth/debug_logs_manager_factory.h
@@ -32,7 +32,7 @@ ~DebugLogsManagerFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; bool ServiceIsCreatedWithBrowserContext() const override; bool ServiceIsNULLWhileTesting() const override;
diff --git a/chrome/browser/ash/child_accounts/family_user_metrics_service_factory.cc b/chrome/browser/ash/child_accounts/family_user_metrics_service_factory.cc index bedb64b..0e6bc4bb 100644 --- a/chrome/browser/ash/child_accounts/family_user_metrics_service_factory.cc +++ b/chrome/browser/ash/child_accounts/family_user_metrics_service_factory.cc
@@ -38,9 +38,10 @@ FamilyUserMetricsServiceFactory::~FamilyUserMetricsServiceFactory() = default; -KeyedService* FamilyUserMetricsServiceFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +FamilyUserMetricsServiceFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { - return new FamilyUserMetricsService(context); + return std::make_unique<FamilyUserMetricsService>(context); } } // namespace ash
diff --git a/chrome/browser/ash/child_accounts/family_user_metrics_service_factory.h b/chrome/browser/ash/child_accounts/family_user_metrics_service_factory.h index 9b8dfb83..86ee63b7 100644 --- a/chrome/browser/ash/child_accounts/family_user_metrics_service_factory.h +++ b/chrome/browser/ash/child_accounts/family_user_metrics_service_factory.h
@@ -38,7 +38,7 @@ ~FamilyUserMetricsServiceFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; };
diff --git a/chrome/browser/ash/child_accounts/screen_time_controller_factory.cc b/chrome/browser/ash/child_accounts/screen_time_controller_factory.cc index e04acc8..46f93df 100644 --- a/chrome/browser/ash/child_accounts/screen_time_controller_factory.cc +++ b/chrome/browser/ash/child_accounts/screen_time_controller_factory.cc
@@ -37,9 +37,10 @@ ScreenTimeControllerFactory::~ScreenTimeControllerFactory() = default; -KeyedService* ScreenTimeControllerFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +ScreenTimeControllerFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { - return new ScreenTimeController(context); + return std::make_unique<ScreenTimeController>(context); } } // namespace ash
diff --git a/chrome/browser/ash/child_accounts/screen_time_controller_factory.h b/chrome/browser/ash/child_accounts/screen_time_controller_factory.h index c4cb8fe85..4298893 100644 --- a/chrome/browser/ash/child_accounts/screen_time_controller_factory.h +++ b/chrome/browser/ash/child_accounts/screen_time_controller_factory.h
@@ -36,7 +36,7 @@ ~ScreenTimeControllerFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; };
diff --git a/chrome/browser/ash/extensions/file_manager/event_router_factory.cc b/chrome/browser/ash/extensions/file_manager/event_router_factory.cc index 73c5510e..623e0866 100644 --- a/chrome/browser/ash/extensions/file_manager/event_router_factory.cc +++ b/chrome/browser/ash/extensions/file_manager/event_router_factory.cc
@@ -54,9 +54,10 @@ EventRouterFactory::~EventRouterFactory() = default; -KeyedService* EventRouterFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +EventRouterFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { - return new EventRouter(Profile::FromBrowserContext(context)); + return std::make_unique<EventRouter>(Profile::FromBrowserContext(context)); } bool EventRouterFactory::ServiceIsCreatedWithBrowserContext() const {
diff --git a/chrome/browser/ash/extensions/file_manager/event_router_factory.h b/chrome/browser/ash/extensions/file_manager/event_router_factory.h index 6fb7a635..de34158 100644 --- a/chrome/browser/ash/extensions/file_manager/event_router_factory.h +++ b/chrome/browser/ash/extensions/file_manager/event_router_factory.h
@@ -35,7 +35,7 @@ ~EventRouterFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; };
diff --git a/chrome/browser/ash/file_manager/file_tasks_notifier_factory.cc b/chrome/browser/ash/file_manager/file_tasks_notifier_factory.cc index 8b1fb72..f2f7a706 100644 --- a/chrome/browser/ash/file_manager/file_tasks_notifier_factory.cc +++ b/chrome/browser/ash/file_manager/file_tasks_notifier_factory.cc
@@ -31,9 +31,11 @@ GetServiceForBrowserContext(profile, true)); } -KeyedService* FileTasksNotifierFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +FileTasksNotifierFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { - return new FileTasksNotifier(Profile::FromBrowserContext(context)); + return std::make_unique<FileTasksNotifier>( + Profile::FromBrowserContext(context)); } } // namespace file_tasks
diff --git a/chrome/browser/ash/file_manager/file_tasks_notifier_factory.h b/chrome/browser/ash/file_manager/file_tasks_notifier_factory.h index e4566f69..cc70da4 100644 --- a/chrome/browser/ash/file_manager/file_tasks_notifier_factory.h +++ b/chrome/browser/ash/file_manager/file_tasks_notifier_factory.h
@@ -26,7 +26,7 @@ FileTasksNotifier* GetForProfile(Profile* profile); - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; };
diff --git a/chrome/browser/ash/file_manager/volume_manager_factory.cc b/chrome/browser/ash/file_manager/volume_manager_factory.cc index ce357a93..4eedf39 100644 --- a/chrome/browser/ash/file_manager/volume_manager_factory.cc +++ b/chrome/browser/ash/file_manager/volume_manager_factory.cc
@@ -35,10 +35,11 @@ return true; } -KeyedService* VolumeManagerFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +VolumeManagerFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { Profile* const profile = Profile::FromBrowserContext(context); - VolumeManager* instance = new VolumeManager( + std::unique_ptr<VolumeManager> instance = std::make_unique<VolumeManager>( profile, drive::DriveIntegrationServiceFactory::GetForProfile(profile), chromeos::PowerManagerClient::Get(), ash::disks::DiskMountManager::GetInstance(),
diff --git a/chrome/browser/ash/file_manager/volume_manager_factory.h b/chrome/browser/ash/file_manager/volume_manager_factory.h index 793ba9b..7025b69 100644 --- a/chrome/browser/ash/file_manager/volume_manager_factory.h +++ b/chrome/browser/ash/file_manager/volume_manager_factory.h
@@ -35,7 +35,7 @@ // BrowserContextKeyedServiceFactory overrides: bool ServiceIsCreatedWithBrowserContext() const override; bool ServiceIsNULLWhileTesting() const override; - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; private:
diff --git a/chrome/browser/ash/file_system_provider/service_factory.cc b/chrome/browser/ash/file_system_provider/service_factory.cc index 13c525f..418a365 100644 --- a/chrome/browser/ash/file_system_provider/service_factory.cc +++ b/chrome/browser/ash/file_system_provider/service_factory.cc
@@ -47,10 +47,11 @@ ServiceFactory::~ServiceFactory() = default; -KeyedService* ServiceFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +ServiceFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* profile) const { - return new Service(Profile::FromBrowserContext(profile), - extensions::ExtensionRegistry::Get(profile)); + return std::make_unique<Service>(Profile::FromBrowserContext(profile), + extensions::ExtensionRegistry::Get(profile)); } bool ServiceFactory::ServiceIsCreatedWithBrowserContext() const { return true; }
diff --git a/chrome/browser/ash/file_system_provider/service_factory.h b/chrome/browser/ash/file_system_provider/service_factory.h index 62bf413..46a70d4 100644 --- a/chrome/browser/ash/file_system_provider/service_factory.h +++ b/chrome/browser/ash/file_system_provider/service_factory.h
@@ -37,7 +37,7 @@ ~ServiceFactory() override; // BrowserContextKeyedServiceFactory overrides: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* profile) const override; bool ServiceIsCreatedWithBrowserContext() const override; };
diff --git a/chrome/browser/ash/fileapi/file_change_service_factory.cc b/chrome/browser/ash/fileapi/file_change_service_factory.cc index dc82d01..9565666 100644 --- a/chrome/browser/ash/fileapi/file_change_service_factory.cc +++ b/chrome/browser/ash/fileapi/file_change_service_factory.cc
@@ -34,12 +34,13 @@ FileChangeServiceFactory::~FileChangeServiceFactory() = default; -KeyedService* FileChangeServiceFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +FileChangeServiceFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { Profile* const profile = Profile::FromBrowserContext(context); if (profile->IsOffTheRecord()) CHECK(profile->IsGuestSession()); - return new FileChangeService(); + return std::make_unique<FileChangeService>(); } } // namespace ash
diff --git a/chrome/browser/ash/fileapi/file_change_service_factory.h b/chrome/browser/ash/fileapi/file_change_service_factory.h index 41ad46f..59ea6a42 100644 --- a/chrome/browser/ash/fileapi/file_change_service_factory.h +++ b/chrome/browser/ash/fileapi/file_change_service_factory.h
@@ -37,7 +37,7 @@ ~FileChangeServiceFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; };
diff --git a/chrome/browser/ash/guest_os/guest_os_session_tracker_factory.cc b/chrome/browser/ash/guest_os/guest_os_session_tracker_factory.cc index 7e07b7d..69c973f 100644 --- a/chrome/browser/ash/guest_os/guest_os_session_tracker_factory.cc +++ b/chrome/browser/ash/guest_os/guest_os_session_tracker_factory.cc
@@ -36,10 +36,11 @@ GuestOsSessionTrackerFactory::~GuestOsSessionTrackerFactory() = default; -KeyedService* GuestOsSessionTrackerFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +GuestOsSessionTrackerFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { Profile* profile = Profile::FromBrowserContext(context); - return new GuestOsSessionTracker( + return std::make_unique<GuestOsSessionTracker>( ash::ProfileHelper::GetUserIdHashFromProfile(profile)); }
diff --git a/chrome/browser/ash/guest_os/guest_os_session_tracker_factory.h b/chrome/browser/ash/guest_os/guest_os_session_tracker_factory.h index 446ff37..aae1f68 100644 --- a/chrome/browser/ash/guest_os/guest_os_session_tracker_factory.h +++ b/chrome/browser/ash/guest_os/guest_os_session_tracker_factory.h
@@ -30,7 +30,7 @@ ~GuestOsSessionTrackerFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; };
diff --git a/chrome/browser/ash/lock_screen_apps/state_controller_unittest.cc b/chrome/browser/ash/lock_screen_apps/state_controller_unittest.cc index 7dfff34..d59c8e8 100644 --- a/chrome/browser/ash/lock_screen_apps/state_controller_unittest.cc +++ b/chrome/browser/ash/lock_screen_apps/state_controller_unittest.cc
@@ -60,6 +60,7 @@ #include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/remote.h" +#include "services/data_decoder/public/cpp/test_support/in_process_data_decoder.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/aura/window.h" #include "ui/events/devices/device_data_manager.h" @@ -444,6 +445,10 @@ } void TearDown() override { + // Add loop to wait for icon loading. Otherwise, + // data_decoder::ServiceProvider is set as null, and data_decoder for icon + // loading could cause crash. + base::RunLoop().RunUntilIdle(); state_controller_->RemoveObserver(&observer_); state_controller_->Shutdown(); focus_cycler_delegate_.reset(); @@ -701,6 +706,8 @@ scoped_refptr<const extensions::Extension> app_; base::SimpleTestTickClock tick_clock_; + + data_decoder::test::InProcessDataDecoder in_process_data_decoder_; }; class LockScreenAppStateKioskUserTest : public LockScreenAppStateTest {
diff --git a/chrome/browser/ash/multidevice_setup/oobe_completion_tracker_factory.cc b/chrome/browser/ash/multidevice_setup/oobe_completion_tracker_factory.cc index 134fa0d..a3f1b04 100644 --- a/chrome/browser/ash/multidevice_setup/oobe_completion_tracker_factory.cc +++ b/chrome/browser/ash/multidevice_setup/oobe_completion_tracker_factory.cc
@@ -37,9 +37,10 @@ OobeCompletionTrackerFactory::~OobeCompletionTrackerFactory() = default; -KeyedService* OobeCompletionTrackerFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +OobeCompletionTrackerFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { - return new OobeCompletionTracker(); + return std::make_unique<OobeCompletionTracker>(); } } // namespace multidevice_setup
diff --git a/chrome/browser/ash/multidevice_setup/oobe_completion_tracker_factory.h b/chrome/browser/ash/multidevice_setup/oobe_completion_tracker_factory.h index c13b8e556..2fa1ae8 100644 --- a/chrome/browser/ash/multidevice_setup/oobe_completion_tracker_factory.h +++ b/chrome/browser/ash/multidevice_setup/oobe_completion_tracker_factory.h
@@ -34,7 +34,7 @@ ~OobeCompletionTrackerFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; };
diff --git a/chrome/browser/ash/nearby/nearby_dependencies_provider_factory.cc b/chrome/browser/ash/nearby/nearby_dependencies_provider_factory.cc index 8b33331..38f17d8 100644 --- a/chrome/browser/ash/nearby/nearby_dependencies_provider_factory.cc +++ b/chrome/browser/ash/nearby/nearby_dependencies_provider_factory.cc
@@ -54,10 +54,11 @@ NearbyDependenciesProviderFactory::~NearbyDependenciesProviderFactory() = default; -KeyedService* NearbyDependenciesProviderFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +NearbyDependenciesProviderFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { Profile* profile = Profile::FromBrowserContext(context); - return new NearbyDependenciesProvider( + return std::make_unique<NearbyDependenciesProvider>( profile, IdentityManagerFactory::GetForProfile(profile)); }
diff --git a/chrome/browser/ash/nearby/nearby_dependencies_provider_factory.h b/chrome/browser/ash/nearby/nearby_dependencies_provider_factory.h index bd61f79..0329344 100644 --- a/chrome/browser/ash/nearby/nearby_dependencies_provider_factory.h +++ b/chrome/browser/ash/nearby/nearby_dependencies_provider_factory.h
@@ -32,7 +32,7 @@ ~NearbyDependenciesProviderFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; bool ServiceIsCreatedWithBrowserContext() const override; };
diff --git a/chrome/browser/ash/nearby/nearby_process_manager_factory.cc b/chrome/browser/ash/nearby/nearby_process_manager_factory.cc index 0b4c360..d11eca0 100644 --- a/chrome/browser/ash/nearby/nearby_process_manager_factory.cc +++ b/chrome/browser/ash/nearby/nearby_process_manager_factory.cc
@@ -77,7 +77,8 @@ NearbyProcessManagerFactory::~NearbyProcessManagerFactory() = default; -KeyedService* NearbyProcessManagerFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +NearbyProcessManagerFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { Profile* profile = Profile::FromBrowserContext(context); @@ -87,8 +88,7 @@ if (CanBeLaunchedForProfile(profile) || g_bypass_primary_user_check_for_testing) { return NearbyProcessManagerImpl::Factory::Create( - NearbyDependenciesProviderFactory::GetForProfile(profile)) - .release(); + NearbyDependenciesProviderFactory::GetForProfile(profile)); } return nullptr;
diff --git a/chrome/browser/ash/nearby/nearby_process_manager_factory.h b/chrome/browser/ash/nearby/nearby_process_manager_factory.h index 9dd01136..a4e7fc9 100644 --- a/chrome/browser/ash/nearby/nearby_process_manager_factory.h +++ b/chrome/browser/ash/nearby/nearby_process_manager_factory.h
@@ -54,7 +54,7 @@ ~NearbyProcessManagerFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; bool ServiceIsCreatedWithBrowserContext() const override; };
diff --git a/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage.cc b/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage.cc index 7a6387f1..b0f0871 100644 --- a/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage.cc +++ b/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage.cc
@@ -69,6 +69,53 @@ weak_ptr_factory_.GetWeakPtr(), std::move(on_fully_initialized))); } +void NearbyPresenceCredentialStorage::SaveCredentials( + std::vector<mojom::LocalCredentialPtr> local_credentials, + SaveCredentialsCallback on_save_credential_callback) { + std::vector<::nearby::internal::LocalCredential> proto_local_credentials; + for (const auto& local_credential : local_credentials) { + proto_local_credentials.push_back( + proto::LocalCredentialFromMojom(local_credential.get())); + } + + auto credential_pairs_to_save = std::make_unique<std::vector< + std::pair<std::string, ::nearby::internal::LocalCredential>>>(); + for (const auto& local_credential : proto_local_credentials) { + credential_pairs_to_save->emplace_back( + std::make_pair(local_credential.secret_id(), local_credential)); + } + + // |delete_key_filter| is always set to true, since |entries_to_save| are not + // deleted if they match |delete_key_filter|. This avoids duplicating new keys + // in memory to be saved. + const leveldb_proto::KeyFilter clearAllFilter = + base::BindRepeating([](const std::string& key) { return true; }); + + private_db_->UpdateEntriesWithRemoveFilter( + std::move(credential_pairs_to_save), clearAllFilter, + base::BindOnce( + &NearbyPresenceCredentialStorage::OnPrivateCredentialsSaved, + weak_ptr_factory_.GetWeakPtr(), + std::move(on_save_credential_callback))); +} + +void NearbyPresenceCredentialStorage::OnPrivateCredentialsSaved( + SaveCredentialsCallback on_save_credential_callback, + bool success) { + mojom::StatusCode save_status; + if (success) { + save_status = mojom::StatusCode::kOk; + } else { + // TODO(b/287334363): Emit a failure metric. + LOG(ERROR) << __func__ << ": failed to save private credentials"; + save_status = mojom::StatusCode::kFailure; + } + + // TODO(b/287334195): Attempt to save public credentials if private + // credentials were successfully saved. + std::move(on_save_credential_callback).Run(save_status); +} + void NearbyPresenceCredentialStorage::OnPrivateDatabaseInitialized( base::OnceCallback<void(bool)> on_fully_initialized, leveldb_proto::Enums::InitStatus private_db_initialization_status) {
diff --git a/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage.h b/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage.h index 49fd7dae..287f249 100644 --- a/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage.h +++ b/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage.h
@@ -7,6 +7,8 @@ #include "base/files/file_path.h" #include "base/functional/callback.h" +#include "chromeos/ash/components/nearby/presence/conversions/proto_conversions.h" +#include "chromeos/ash/services/nearby/public/mojom/nearby_presence.mojom.h" #include "chromeos/ash/services/nearby/public/mojom/nearby_presence_credential_storage.mojom.h" #include "components/leveldb_proto/public/proto_database.h" #include "third_party/nearby/internal/proto/credential.pb.h" @@ -40,6 +42,10 @@ // credentials. void Initialize(base::OnceCallback<void(bool)> on_initialized); + // NearbyPresenceCredentialStorage: + void SaveCredentials(std::vector<mojom::LocalCredentialPtr> local_credentials, + SaveCredentialsCallback callback) override; + protected: NearbyPresenceCredentialStorage( std::unique_ptr<leveldb_proto::ProtoDatabase< @@ -49,11 +55,15 @@ public_db); private: + void OnPrivateCredentialsSaved( + SaveCredentialsCallback on_save_credential_callback, + bool success); + void OnPrivateDatabaseInitialized( - base::OnceCallback<void(bool)> on_initialized, + base::OnceCallback<void(bool)> on_fully_initialized, leveldb_proto::Enums::InitStatus status); void OnPublicDatabaseInitialized( - base::OnceCallback<void(bool)> on_initialized, + base::OnceCallback<void(bool)> on_fully_initialized, leveldb_proto::Enums::InitStatus status); std::unique_ptr<
diff --git a/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage_unittest.cc b/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage_unittest.cc index 962a8cb..7660bd8 100644 --- a/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage_unittest.cc +++ b/chrome/browser/ash/nearby/presence/credential_storage/nearby_presence_credential_storage_unittest.cc
@@ -6,6 +6,7 @@ #include "base/memory/raw_ptr.h" #include "base/test/bind.h" #include "base/test/task_environment.h" +#include "chromeos/ash/services/nearby/public/mojom/nearby_presence.mojom.h" #include "components/leveldb_proto/testing/fake_db.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/nearby/internal/proto/credential.pb.h" @@ -13,6 +14,66 @@ namespace { +const std::vector<uint8_t> kSecretId_1 = {0x11, 0x12, 0x13, 0x14, 0x15, 0x16}; +const std::vector<uint8_t> kKeySeed_1 = {0x21, 0x22, 0x23, 0x24, 0x25, 0x26}; +const std::vector<uint8_t> kMetadataEncryptionKeyV0_1 = { + 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e}; +constexpr int64_t kStartTimeMillis_1 = 255486129307; +const char AdvertisementSigningKeyCertificateAlias_1[] = + "NearbySharingABCDEF123456"; +const std::vector<uint8_t> kAdvertisementPrivateKey_1 = {0x41, 0x42, 0x43, + 0x44, 0x45, 0x46}; +const char ConnectionSigningKeyCertificateAlias_1[] = "NearbySharingXYZ789"; +const std::vector<uint8_t> kConnectionPrivateKey_1 = {0x51, 0x52, 0x53, + 0x54, 0x55, 0x56}; +const std::vector<uint8_t> kMetadataEncryptionKeyV1_1 = { + 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, + 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70}; +const base::flat_map<uint32_t, bool> kConsumedSalts_1 = {{0xb412, true}, + {0x34b2, false}, + {0x5171, false}}; + +const std::vector<uint8_t> kSecretId_2 = {0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6}; +const std::vector<uint8_t> kKeySeed_2 = {0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC}; +const std::vector<uint8_t> kMetadataEncryptionKeyV0_2 = { + 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, + 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA}; +constexpr int64_t kStartTimeMillis_2 = 255486129307; +const char AdvertisementSigningKeyCertificateAlias_2[] = + "NearbySharingFEDCBA987654"; +const std::vector<uint8_t> kAdvertisementPrivateKey_2 = {0xBB, 0xBC, 0xBD, + 0xBE, 0xBF, 0xC0}; +const char ConnectionSigningKeyCertificateAlias_2[] = "NearbySharingZYX543"; +const std::vector<uint8_t> kConnectionPrivateKey_2 = {0xC1, 0xC2, 0xC3, + 0xC4, 0xC5, 0xC6}; +const std::vector<uint8_t> kMetadataEncryptionKeyV1_2 = { + 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, + 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6}; +const base::flat_map<uint32_t, bool> kConsumedSalts_2 = {{0xb412, false}, + {0x34b2, true}, + {0x5171, false}}; + +const std::vector<uint8_t> kSecretId_3 = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06}; +const std::vector<uint8_t> kKeySeed_3 = {0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C}; +const std::vector<uint8_t> kMetadataEncryptionKeyV0_3 = { + 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A}; +constexpr int64_t kStartTimeMillis_3 = 255486129307; +const char AdvertisementSigningKeyCertificateAlias_3[] = + "NearbySharingJIHGFED3210"; +const std::vector<uint8_t> kAdvertisementPrivateKey_3 = {0x1B, 0x1C, 0x1D, + 0x1E, 0x1F, 0x20}; +const char ConnectionSigningKeyCertificateAlias_3[] = "NearbySharingWVU109"; +const std::vector<uint8_t> kConnectionPrivateKey_3 = {0x21, 0x22, 0x23, + 0x24, 0x25, 0x26}; +const std::vector<uint8_t> kMetadataEncryptionKeyV1_3 = { + 0x27, 0x28, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, + 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6}; +const base::flat_map<uint32_t, bool> kConsumedSalts_3 = {{0xb402, false}, + {0x3202, false}, + {0x5b71, true}}; + class TestNearbyPresenceCredentialStorage : public ash::nearby::presence::NearbyPresenceCredentialStorage { public: @@ -27,6 +88,42 @@ std::move(public_db)) {} }; +ash::nearby::presence::mojom::LocalCredentialPtr CreateLocalCredential( + const std::vector<uint8_t>& secret_id, + const std::vector<uint8_t>& key_seed, + const int start_time_millis, + const std::vector<uint8_t>& metadata_encryption_key_v0, + const std::string& advertisement_signing_key_certificate_alias, + const std::vector<uint8_t>& advertisement_signing_key_data, + const std::string& connection_signing_key_certificate_alias, + const std::vector<uint8_t>& connection_signing_key_data, + const ash::nearby::presence::mojom::IdentityType identity_type, + const base::flat_map<uint32_t, bool>& consumed_salts, + const std::vector<uint8_t>& metadata_encryption_key_v1) { + auto local_credential = ash::nearby::presence::mojom::LocalCredential::New(); + + local_credential->secret_id = secret_id; + local_credential->key_seed = key_seed; + local_credential->start_time_millis = start_time_millis; + local_credential->metadata_encryption_key_v0 = metadata_encryption_key_v0; + local_credential->identity_type = identity_type; + local_credential->consumed_salts = consumed_salts; + local_credential->metadata_encryption_key_v1 = metadata_encryption_key_v1; + + auto advertisement_key = ash::nearby::presence::mojom::PrivateKey::New(); + advertisement_key->certificate_alias = + advertisement_signing_key_certificate_alias; + advertisement_key->key = advertisement_signing_key_data; + local_credential->advertisement_signing_key = std::move(advertisement_key); + + auto connection_key = ash::nearby::presence::mojom::PrivateKey::New(); + connection_key->certificate_alias = connection_signing_key_certificate_alias; + connection_key->key = connection_signing_key_data; + local_credential->connection_signing_key = std::move(connection_key); + + return local_credential; +} + } // namespace namespace ash::nearby::presence { @@ -54,8 +151,8 @@ } void TearDown() override { - // Reset the raw pointer to prevent a dangling pointer when - // NearbyPresenceCredentialStorageTest is deconstructed. + // Reset the raw pointer to prevent a dangling pointer while + // NearbyPresenceCredentialStorageTest is being deconstructed. private_db_ = nullptr; public_db_ = nullptr; @@ -71,6 +168,13 @@ })); } + void FullyInitializeDatabases(base::RunLoop& run_loop) { + InitializeCredentialStorage(run_loop, /*expected_success=*/true); + + private_db_->InitStatusCallback(leveldb_proto::Enums::InitStatus::kOK); + public_db_->InitStatusCallback(leveldb_proto::Enums::InitStatus::kOK); + } + protected: base::test::SingleThreadTaskEnvironment task_environment; @@ -119,4 +223,46 @@ run_loop.Run(); } +TEST_F(NearbyPresenceCredentialStorageTest, SaveCredentials) { + { + base::RunLoop run_loop; + FullyInitializeDatabases(run_loop); + } + + std::vector<mojom::LocalCredentialPtr> credentials; + credentials.emplace_back(CreateLocalCredential( + kSecretId_1, kKeySeed_1, kStartTimeMillis_1, kMetadataEncryptionKeyV0_1, + AdvertisementSigningKeyCertificateAlias_1, kAdvertisementPrivateKey_1, + ConnectionSigningKeyCertificateAlias_1, kConnectionPrivateKey_1, + mojom::IdentityType::kIdentityTypePrivate, kConsumedSalts_1, + kMetadataEncryptionKeyV1_1)); + credentials.emplace_back(CreateLocalCredential( + kSecretId_2, kKeySeed_2, kStartTimeMillis_2, kMetadataEncryptionKeyV0_2, + AdvertisementSigningKeyCertificateAlias_2, kAdvertisementPrivateKey_2, + ConnectionSigningKeyCertificateAlias_2, kConnectionPrivateKey_2, + mojom::IdentityType::kIdentityTypePrivate, kConsumedSalts_2, + kMetadataEncryptionKeyV1_2)); + credentials.emplace_back(CreateLocalCredential( + kSecretId_3, kKeySeed_3, kStartTimeMillis_3, kMetadataEncryptionKeyV0_3, + AdvertisementSigningKeyCertificateAlias_3, kAdvertisementPrivateKey_3, + ConnectionSigningKeyCertificateAlias_3, kConnectionPrivateKey_3, + mojom::IdentityType::kIdentityTypePrivate, kConsumedSalts_3, + kMetadataEncryptionKeyV1_3)); + + { + base::RunLoop run_loop; + credential_storage_->SaveCredentials( + std::move(credentials), + base::BindLambdaForTesting([&run_loop](mojom::StatusCode status) { + EXPECT_EQ(status, mojom::StatusCode::kOk); + run_loop.Quit(); + })); + + private_db_->UpdateCallback(true); + run_loop.Run(); + } + + ASSERT_EQ(3u, private_db_entries_.size()); +} + } // namespace ash::nearby::presence
diff --git a/chrome/browser/ash/plugin_vm/plugin_vm_engagement_metrics_service.cc b/chrome/browser/ash/plugin_vm/plugin_vm_engagement_metrics_service.cc index e6292d1..12d900ce 100644 --- a/chrome/browser/ash/plugin_vm/plugin_vm_engagement_metrics_service.cc +++ b/chrome/browser/ash/plugin_vm/plugin_vm_engagement_metrics_service.cc
@@ -38,11 +38,11 @@ PluginVmEngagementMetricsService::Factory::~Factory() = default; -KeyedService* -PluginVmEngagementMetricsService::Factory::BuildServiceInstanceFor( - content::BrowserContext* context) const { +std::unique_ptr<KeyedService> PluginVmEngagementMetricsService::Factory:: + BuildServiceInstanceForBrowserContext( + content::BrowserContext* context) const { Profile* profile = Profile::FromBrowserContext(context); - return new PluginVmEngagementMetricsService(profile); + return std::make_unique<PluginVmEngagementMetricsService>(profile); } bool PluginVmEngagementMetricsService::Factory::
diff --git a/chrome/browser/ash/plugin_vm/plugin_vm_engagement_metrics_service.h b/chrome/browser/ash/plugin_vm/plugin_vm_engagement_metrics_service.h index 8d8b8a7..a403dee1 100644 --- a/chrome/browser/ash/plugin_vm/plugin_vm_engagement_metrics_service.h +++ b/chrome/browser/ash/plugin_vm/plugin_vm_engagement_metrics_service.h
@@ -30,7 +30,7 @@ ~Factory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; bool ServiceIsCreatedWithBrowserContext() const override; bool ServiceIsNULLWhileTesting() const override;
diff --git a/chrome/browser/ash/plugin_vm/plugin_vm_manager_factory.cc b/chrome/browser/ash/plugin_vm/plugin_vm_manager_factory.cc index 2d2e346..62dbac4 100644 --- a/chrome/browser/ash/plugin_vm/plugin_vm_manager_factory.cc +++ b/chrome/browser/ash/plugin_vm/plugin_vm_manager_factory.cc
@@ -33,10 +33,11 @@ PluginVmManagerFactory::~PluginVmManagerFactory() = default; // BrowserContextKeyedServiceFactory: -KeyedService* PluginVmManagerFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +PluginVmManagerFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { Profile* profile = Profile::FromBrowserContext(context); - return new PluginVmManagerImpl(profile); + return std::make_unique<PluginVmManagerImpl>(profile); } } // namespace plugin_vm
diff --git a/chrome/browser/ash/plugin_vm/plugin_vm_manager_factory.h b/chrome/browser/ash/plugin_vm/plugin_vm_manager_factory.h index ce07c9c5..fe41644 100644 --- a/chrome/browser/ash/plugin_vm/plugin_vm_manager_factory.h +++ b/chrome/browser/ash/plugin_vm/plugin_vm_manager_factory.h
@@ -28,7 +28,7 @@ ~PluginVmManagerFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; };
diff --git a/chrome/browser/ash/scalable_iph/scalable_iph_browser_test_base.cc b/chrome/browser/ash/scalable_iph/scalable_iph_browser_test_base.cc index 7d3a2d9..baf29da 100644 --- a/chrome/browser/ash/scalable_iph/scalable_iph_browser_test_base.cc +++ b/chrome/browser/ash/scalable_iph/scalable_iph_browser_test_base.cc
@@ -154,35 +154,55 @@ } void ScalableIphBrowserTestBase::AppendVersionNumber( - base::FieldTrialParams& params) { - params[FullyQualified(kScalableIphTest, + base::FieldTrialParams& params, + const base::Feature& feature, + const std::string& version_number) { + params[FullyQualified(feature, scalable_iph::kCustomParamsVersionNumberParamName)] = - base::NumberToString(scalable_iph::kCurrentVersionNumber); + version_number; +} + +void ScalableIphBrowserTestBase::AppendVersionNumber( + base::FieldTrialParams& params, + const base::Feature& feature) { + AppendVersionNumber( + params, feature, + base::NumberToString(scalable_iph::kCurrentVersionNumber)); +} + +void ScalableIphBrowserTestBase::AppendVersionNumber( + base::FieldTrialParams& params) { + AppendVersionNumber(params, kScalableIphTest); +} + +void ScalableIphBrowserTestBase::AppendFakeUiParamsNotification( + base::FieldTrialParams& params, + const base::Feature& feature) { + params[FullyQualified(feature, scalable_iph::kCustomUiTypeParamName)] = + scalable_iph::kCustomUiTypeValueNotification; + params[FullyQualified(feature, + scalable_iph::kCustomNotificationIdParamName)] = + kTestNotificationId; + params[FullyQualified(feature, + scalable_iph::kCustomNotificationTitleParamName)] = + kTestNotificationTitle; + params[FullyQualified(feature, + scalable_iph::kCustomNotificationBodyTextParamName)] = + kTestNotificationBodyText; + params[FullyQualified(feature, + scalable_iph::kCustomNotificationButtonTextParamName)] = + kTestNotificationButtonText; + params[FullyQualified(feature, + scalable_iph::kCustomButtonActionTypeParamName)] = + kTestButtonActionTypeOpenChrome; + params[FullyQualified(feature, + scalable_iph::kCustomButtonActionEventParamName)] = + kTestActionEventName; } void ScalableIphBrowserTestBase::AppendFakeUiParamsNotification( base::FieldTrialParams& params) { - params[FullyQualified(kScalableIphTest, - scalable_iph::kCustomUiTypeParamName)] = - scalable_iph::kCustomUiTypeValueNotification; - params[FullyQualified(kScalableIphTest, - scalable_iph::kCustomNotificationIdParamName)] = - kTestNotificationId; - params[FullyQualified(kScalableIphTest, - scalable_iph::kCustomNotificationTitleParamName)] = - kTestNotificationTitle; - params[FullyQualified(kScalableIphTest, - scalable_iph::kCustomNotificationBodyTextParamName)] = - kTestNotificationBodyText; - params[FullyQualified(kScalableIphTest, - scalable_iph::kCustomNotificationButtonTextParamName)] = - kTestNotificationButtonText; - params[FullyQualified(kScalableIphTest, - scalable_iph::kCustomButtonActionTypeParamName)] = - kTestButtonActionTypeOpenChrome; - params[FullyQualified(kScalableIphTest, - scalable_iph::kCustomButtonActionEventParamName)] = - kTestActionEventName; + AppendFakeUiParamsNotification(params, kScalableIphTest); } void ScalableIphBrowserTestBase::AppendFakeUiParamsBubble( @@ -224,10 +244,13 @@ return mock_delegate_created_.contains(profile->GetProfileUserName()); } -void ScalableIphBrowserTestBase::EnableTestIphFeature() { +void ScalableIphBrowserTestBase::EnableTestIphFeatures( + const std::vector<const base::Feature*> test_iph_features) { + const base::flat_set<const base::Feature*> test_iph_features_set( + test_iph_features.begin(), test_iph_features.end()); ON_CALL(*mock_tracker(), ShouldTriggerHelpUI) - .WillByDefault([](const base::Feature& feature) { - return &feature == &kScalableIphTest; + .WillByDefault([test_iph_features_set](const base::Feature& feature) { + return test_iph_features_set.contains(&feature); }); // Do not access profile via `browser()` as this method can be called before a @@ -240,7 +263,11 @@ // called twice. scalable_iph::ScalableIph* scalable_iph = ScalableIphFactory::GetForBrowserContext(profile); - scalable_iph->OverrideFeatureListForTesting({&kScalableIphTest}); + scalable_iph->OverrideFeatureListForTesting(test_iph_features); +} + +void ScalableIphBrowserTestBase::EnableTestIphFeature() { + EnableTestIphFeatures({&kScalableIphTest}); } const base::Feature& ScalableIphBrowserTestBase::TestIphFeature() const {
diff --git a/chrome/browser/ash/scalable_iph/scalable_iph_browser_test_base.h b/chrome/browser/ash/scalable_iph/scalable_iph_browser_test_base.h index 7ae93b17..d5b5b5dc 100644 --- a/chrome/browser/ash/scalable_iph/scalable_iph_browser_test_base.h +++ b/chrome/browser/ash/scalable_iph/scalable_iph_browser_test_base.h
@@ -59,7 +59,14 @@ protected: // Allow sub-classes to initialize scoped feature list with different values. virtual void InitializeScopedFeatureList(); + void AppendVersionNumber(base::FieldTrialParams& params, + const base::Feature& feature, + const std::string& version_number); + void AppendVersionNumber(base::FieldTrialParams& params, + const base::Feature& feature); virtual void AppendVersionNumber(base::FieldTrialParams& params); + void AppendFakeUiParamsNotification(base::FieldTrialParams& params, + const base::Feature& feature); void AppendFakeUiParamsNotification(base::FieldTrialParams& params); void AppendFakeUiParamsBubble(base::FieldTrialParams& params); static std::string FullyQualified(const base::Feature& feature, @@ -78,6 +85,8 @@ void AddOnlineNetwork(); + void EnableTestIphFeatures( + const std::vector<const base::Feature*> test_iph_features); void EnableTestIphFeature(); const base::Feature& TestIphFeature() const;
diff --git a/chrome/browser/ash/scalable_iph/scalable_iph_browsertest.cc b/chrome/browser/ash/scalable_iph/scalable_iph_browsertest.cc index c05f64c..117892e 100644 --- a/chrome/browser/ash/scalable_iph/scalable_iph_browsertest.cc +++ b/chrome/browser/ash/scalable_iph/scalable_iph_browsertest.cc
@@ -50,8 +50,8 @@ using UserSessionType = ::ash::CustomizableTestEnvBrowserTestBase::UserSessionType; -BASE_FEATURE(kScalableIphTest, - "ScalableIphTest", +BASE_FEATURE(kScalableIphTestTwo, + "ScalableIphTestTwo", base::FEATURE_DISABLED_BY_DEFAULT); bool IsGoogleChrome() { @@ -137,9 +137,9 @@ : public ScalableIphBrowserTest { protected: void AppendVersionNumber(base::FieldTrialParams& params) override { - params[FullyQualified(TestIphFeature(), - scalable_iph::kCustomParamsVersionNumberParamName)] = - base::NumberToString(scalable_iph::kCurrentVersionNumber - 1); + ScalableIphBrowserTest::AppendVersionNumber( + params, TestIphFeature(), + base::NumberToString(scalable_iph::kCurrentVersionNumber - 1)); } }; @@ -147,9 +147,31 @@ : public ScalableIphBrowserTest { protected: void AppendVersionNumber(base::FieldTrialParams& params) override { - params[FullyQualified(TestIphFeature(), - scalable_iph::kCustomParamsVersionNumberParamName)] = - "Invalid"; + ScalableIphBrowserTest::AppendVersionNumber(params, TestIphFeature(), + "Invalid"); + } +}; + +class ScalableIphBrowserTestMultipleIphs : public ScalableIphBrowserTest { + protected: + void InitializeScopedFeatureList() override { + base::FieldTrialParams params_one; + AppendVersionNumber(params_one, TestIphFeature()); + AppendFakeUiParamsNotification(params_one, TestIphFeature()); + base::test::FeatureRefAndParams test_config_one(TestIphFeature(), + params_one); + + base::FieldTrialParams params_two; + AppendVersionNumber(params_two, kScalableIphTestTwo); + AppendFakeUiParamsNotification(params_two, kScalableIphTestTwo); + base::test::FeatureRefAndParams test_config_two(kScalableIphTestTwo, + params_two); + + base::test::FeatureRefAndParams scalable_iph_feature( + ash::features::kScalableIph, {}); + + scoped_feature_list_.InitWithFeaturesAndParameters( + {scalable_iph_feature, test_config_one, test_config_two}, {}); } }; @@ -325,7 +347,7 @@ base::FieldTrialParams params; AppendVersionNumber(params); AppendFakeUiParamsNotification(params); - params[FullyQualified(kScalableIphTest, + params[FullyQualified(TestIphFeature(), scalable_iph::kCustomNotificationIdParamName)] = ""; base::test::FeatureRefAndParams test_config(TestIphFeature(), params); @@ -344,7 +366,7 @@ base::FieldTrialParams params; AppendVersionNumber(params); AppendFakeUiParamsBubble(params); - params[FullyQualified(kScalableIphTest, + params[FullyQualified(TestIphFeature(), scalable_iph::kCustomBubbleIdParamName)] = ""; base::test::FeatureRefAndParams test_config(TestIphFeature(), params); @@ -587,6 +609,19 @@ app_list_controller->ShowAppList(ash::AppListShowSource::kSearchKey); } +IN_PROC_BROWSER_TEST_F(ScalableIphBrowserTestMultipleIphs, OneIphAtATime) { + EnableTestIphFeatures({&TestIphFeature(), &kScalableIphTestTwo}); + + // Expects that `ShowNotification` gets called exactly once as we expect that + // only a single IPH gets triggered at a time. + EXPECT_CALL(*mock_delegate(), + ShowNotification(::testing::_, ::testing::NotNull())) + .Times(1); + TriggerConditionsCheckWithAFakeEvent( + scalable_iph::ScalableIph::Event::kFiveMinTick); + testing::Mock::VerifyAndClearExpectations(mock_tracker()); +} + IN_PROC_BROWSER_TEST_F(ScalableIphBrowserTestPreinstallApps, AppListItemActivationWebApp) { if (!IsGoogleChrome()) {
diff --git a/chrome/browser/ash/smb_client/smb_service_factory.cc b/chrome/browser/ash/smb_client/smb_service_factory.cc index 41635b9..352f9599 100644 --- a/chrome/browser/ash/smb_client/smb_service_factory.cc +++ b/chrome/browser/ash/smb_client/smb_service_factory.cc
@@ -65,7 +65,8 @@ return true; } -KeyedService* SmbServiceFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +SmbServiceFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { // Check if service is enabled by feature flag, via policy, and if profile has // a user. Lock screen is the example of a profile that doesn't have a user - @@ -75,7 +76,8 @@ IsAllowedByPolicy(profile) && DoesProfileHaveUser(profile); if (!service_should_run) return nullptr; - return new SmbService(profile, std::make_unique<base::DefaultTickClock>()); + return std::make_unique<SmbService>( + profile, std::make_unique<base::DefaultTickClock>()); } void SmbServiceFactory::RegisterProfilePrefs(
diff --git a/chrome/browser/ash/smb_client/smb_service_factory.h b/chrome/browser/ash/smb_client/smb_service_factory.h index c3237564..c1077d98 100644 --- a/chrome/browser/ash/smb_client/smb_service_factory.h +++ b/chrome/browser/ash/smb_client/smb_service_factory.h
@@ -37,7 +37,7 @@ ~SmbServiceFactory() override; // BrowserContextKeyedServiceFactory overrides: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; bool ServiceIsCreatedWithBrowserContext() const override; void RegisterProfilePrefs(
diff --git a/chrome/browser/ash/sync/sync_mojo_service_factory_ash.cc b/chrome/browser/ash/sync/sync_mojo_service_factory_ash.cc index 6e37886..271aef0 100644 --- a/chrome/browser/ash/sync/sync_mojo_service_factory_ash.cc +++ b/chrome/browser/ash/sync/sync_mojo_service_factory_ash.cc
@@ -36,7 +36,8 @@ SyncMojoServiceFactoryAsh::~SyncMojoServiceFactoryAsh() = default; -KeyedService* SyncMojoServiceFactoryAsh::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +SyncMojoServiceFactoryAsh::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { Profile* profile = Profile::FromBrowserContext(context); syncer::SyncService* sync_service = @@ -47,7 +48,7 @@ return nullptr; } - return new SyncMojoServiceAsh(sync_service); + return std::make_unique<SyncMojoServiceAsh>(sync_service); } } // namespace ash
diff --git a/chrome/browser/ash/sync/sync_mojo_service_factory_ash.h b/chrome/browser/ash/sync/sync_mojo_service_factory_ash.h index 9cbc9957..51cc112b 100644 --- a/chrome/browser/ash/sync/sync_mojo_service_factory_ash.h +++ b/chrome/browser/ash/sync/sync_mojo_service_factory_ash.h
@@ -34,7 +34,7 @@ ~SyncMojoServiceFactoryAsh() override; // BrowserContextKeyedServiceFactory implementation. - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; };
diff --git a/chrome/browser/ash/system_extensions/api/window_management/cros_window_management_context_factory.cc b/chrome/browser/ash/system_extensions/api/window_management/cros_window_management_context_factory.cc index aa69c83d7..c705f6f 100644 --- a/chrome/browser/ash/system_extensions/api/window_management/cros_window_management_context_factory.cc +++ b/chrome/browser/ash/system_extensions/api/window_management/cros_window_management_context_factory.cc
@@ -38,9 +38,11 @@ CrosWindowManagementContextFactory::~CrosWindowManagementContextFactory() = default; -KeyedService* CrosWindowManagementContextFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +CrosWindowManagementContextFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { - return new CrosWindowManagementContext(Profile::FromBrowserContext(context)); + return std::make_unique<CrosWindowManagementContext>( + Profile::FromBrowserContext(context)); } bool CrosWindowManagementContextFactory::ServiceIsCreatedWithBrowserContext()
diff --git a/chrome/browser/ash/system_extensions/api/window_management/cros_window_management_context_factory.h b/chrome/browser/ash/system_extensions/api/window_management/cros_window_management_context_factory.h index 43aaa9d8..addd4bb 100644 --- a/chrome/browser/ash/system_extensions/api/window_management/cros_window_management_context_factory.h +++ b/chrome/browser/ash/system_extensions/api/window_management/cros_window_management_context_factory.h
@@ -37,7 +37,7 @@ ~CrosWindowManagementContextFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; bool ServiceIsCreatedWithBrowserContext() const override; content::BrowserContext* GetBrowserContextToUse(
diff --git a/chrome/browser/ash/system_extensions/system_extensions_provider_factory.cc b/chrome/browser/ash/system_extensions/system_extensions_provider_factory.cc index 858f17c1..4f1f440 100644 --- a/chrome/browser/ash/system_extensions/system_extensions_provider_factory.cc +++ b/chrome/browser/ash/system_extensions/system_extensions_provider_factory.cc
@@ -38,9 +38,11 @@ SystemExtensionsProviderFactory::~SystemExtensionsProviderFactory() = default; -KeyedService* SystemExtensionsProviderFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +SystemExtensionsProviderFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { - return new SystemExtensionsProvider(Profile::FromBrowserContext(context)); + return std::make_unique<SystemExtensionsProvider>( + Profile::FromBrowserContext(context)); } bool SystemExtensionsProviderFactory::ServiceIsCreatedWithBrowserContext()
diff --git a/chrome/browser/ash/system_extensions/system_extensions_provider_factory.h b/chrome/browser/ash/system_extensions/system_extensions_provider_factory.h index 64e9362..99fc691 100644 --- a/chrome/browser/ash/system_extensions/system_extensions_provider_factory.h +++ b/chrome/browser/ash/system_extensions/system_extensions_provider_factory.h
@@ -41,7 +41,7 @@ ~SystemExtensionsProviderFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; bool ServiceIsCreatedWithBrowserContext() const override; content::BrowserContext* GetBrowserContextToUse(
diff --git a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_ambient_provider_impl.cc b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_ambient_provider_impl.cc index 4dff206..2635e2d 100644 --- a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_ambient_provider_impl.cc +++ b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_ambient_provider_impl.cc
@@ -531,19 +531,20 @@ // weather information. See: b/158630188. settings_->show_weather = true; - settings_sent_for_update_ = settings_; ash::AmbientBackendController::Get()->UpdateSettings( *settings_, base::BindOnce(&PersonalizationAppAmbientProviderImpl::OnUpdateSettings, write_weak_factory_.GetWeakPtr())); } -void PersonalizationAppAmbientProviderImpl::OnUpdateSettings(bool success) { +void PersonalizationAppAmbientProviderImpl::OnUpdateSettings( + bool success, + const AmbientSettings& settings) { is_updating_backend_ = false; if (success) { update_settings_retry_backoff_.Reset(); - cached_settings_ = settings_sent_for_update_; + cached_settings_ = settings; if (needs_update_previews_) { FetchPreviewImages(); } @@ -752,7 +753,6 @@ settings_.reset(); cached_settings_.reset(); - settings_sent_for_update_.reset(); update_settings_retry_backoff_.Reset(); fetch_settings_retry_backoff_.Reset(); has_pending_fetch_request_ = false;
diff --git a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_ambient_provider_impl.h b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_ambient_provider_impl.h index a2b9e5b..4dd3707d 100644 --- a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_ambient_provider_impl.h +++ b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_ambient_provider_impl.h
@@ -89,7 +89,7 @@ // Called when the settings is updated. // `success` is true when update successfully. - void OnUpdateSettings(bool success); + void OnUpdateSettings(bool success, const AmbientSettings& settings); // Return true if a new update needed. // `success` is true when update successfully. @@ -156,9 +156,6 @@ // If `UpdateSettings()` fails, will restore to this value. absl::optional<ash::AmbientSettings> cached_settings_; - // A temporary settings sent to the server in `UpdateSettings()`. - absl::optional<ash::AmbientSettings> settings_sent_for_update_; - ash::PersonalAlbums personal_albums_; // Whether to update UI when `UpdateSettings()` returns successfully.
diff --git a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_ambient_provider_impl_unittest.cc b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_ambient_provider_impl_unittest.cc index 9433e1d..4fba79c 100644 --- a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_ambient_provider_impl_unittest.cc +++ b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_ambient_provider_impl_unittest.cc
@@ -1183,4 +1183,35 @@ EXPECT_FALSE(ShouldShowTimeOfDayBanner()); } +TEST_F(PersonalizationAppAmbientProviderImplTest, + UpdateSettingsFailure_ShowsCachedSettings) { + SetAmbientObserver(); + FetchSettings(); + ReplyFetchSettingsAndAlbums(/*success=*/true); + // The cached settings have Celsius stored. + EXPECT_EQ(ash::AmbientModeTemperatureUnit::kCelsius, + ObservedTemperatureUnit()); + EXPECT_EQ(ash::AmbientModeTemperatureUnit::kCelsius, + GetCurrentTemperatureUnitInServer()); + + SetTemperatureUnit(ash::AmbientModeTemperatureUnit::kFahrenheit); + + // The value updates to Fahrenheit optimistically. + EXPECT_EQ(ash::AmbientModeTemperatureUnit::kFahrenheit, + ObservedTemperatureUnit()); + + // Fail through all the retries. + ReplyUpdateSettings(/*success=*/false); + FastForwardBy(GetUpdateSettingsDelay() * 1.5); + ReplyUpdateSettings(/*success=*/false); + FastForwardBy(GetUpdateSettingsDelay() * 1.5); + ReplyUpdateSettings(/*success=*/false); + FastForwardBy(GetUpdateSettingsDelay() * 1.5); + ReplyUpdateSettings(/*success=*/false); + FastForwardBy(GetUpdateSettingsDelay() * 1.5); + + // After all the failures, restore to the cached value. + EXPECT_EQ(ash::AmbientModeTemperatureUnit::kCelsius, + ObservedTemperatureUnit()); +} } // namespace ash::personalization_app
diff --git a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_manager_factory.cc b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_manager_factory.cc index bd23d49..2dd921e8 100644 --- a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_manager_factory.cc +++ b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_manager_factory.cc
@@ -55,7 +55,8 @@ PersonalizationAppManagerFactory::~PersonalizationAppManagerFactory() = default; -KeyedService* PersonalizationAppManagerFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +PersonalizationAppManagerFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { DCHECK(CanSeeWallpaperOrPersonalizationApp( Profile::FromBrowserContext(context))); @@ -63,8 +64,8 @@ LocalSearchServiceProxyFactory::GetForBrowserContext(context); DCHECK(local_search_service_proxy); - return PersonalizationAppManager::Create(context, *local_search_service_proxy) - .release(); + return PersonalizationAppManager::Create(context, + *local_search_service_proxy); } bool PersonalizationAppManagerFactory::ServiceIsNULLWhileTesting() const {
diff --git a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_manager_factory.h b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_manager_factory.h index 445a668..e4420de 100644 --- a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_manager_factory.h +++ b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_manager_factory.h
@@ -30,7 +30,7 @@ ~PersonalizationAppManagerFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; bool ServiceIsNULLWhileTesting() const override; };
diff --git a/chrome/browser/autocomplete/document_suggestions_service_factory.cc b/chrome/browser/autocomplete/document_suggestions_service_factory.cc index 9fcbd70..2b57125 100644 --- a/chrome/browser/autocomplete/document_suggestions_service_factory.cc +++ b/chrome/browser/autocomplete/document_suggestions_service_factory.cc
@@ -25,13 +25,14 @@ return instance.get(); } -KeyedService* DocumentSuggestionsServiceFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +DocumentSuggestionsServiceFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { Profile* profile = Profile::FromBrowserContext(context); signin::IdentityManager* identity_manager = IdentityManagerFactory::GetForProfile(profile); - return new DocumentSuggestionsService( + return std::make_unique<DocumentSuggestionsService>( identity_manager, profile->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess()); }
diff --git a/chrome/browser/autocomplete/document_suggestions_service_factory.h b/chrome/browser/autocomplete/document_suggestions_service_factory.h index 4dbf731a..2539597 100644 --- a/chrome/browser/autocomplete/document_suggestions_service_factory.h +++ b/chrome/browser/autocomplete/document_suggestions_service_factory.h
@@ -29,7 +29,7 @@ ~DocumentSuggestionsServiceFactory() override; // Overrides from BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; };
diff --git a/chrome/browser/autocomplete/zero_suggest_cache_service_factory.cc b/chrome/browser/autocomplete/zero_suggest_cache_service_factory.cc index 93e2820..df499ef 100644 --- a/chrome/browser/autocomplete/zero_suggest_cache_service_factory.cc +++ b/chrome/browser/autocomplete/zero_suggest_cache_service_factory.cc
@@ -20,10 +20,11 @@ return instance.get(); } -KeyedService* ZeroSuggestCacheServiceFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +ZeroSuggestCacheServiceFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { Profile* profile = Profile::FromBrowserContext(context); - return new ZeroSuggestCacheService( + return std::make_unique<ZeroSuggestCacheService>( profile->GetPrefs(), OmniboxFieldTrial::kZeroSuggestCacheMaxSize.Get()); }
diff --git a/chrome/browser/autocomplete/zero_suggest_cache_service_factory.h b/chrome/browser/autocomplete/zero_suggest_cache_service_factory.h index 17c0e56..256f249c 100644 --- a/chrome/browser/autocomplete/zero_suggest_cache_service_factory.h +++ b/chrome/browser/autocomplete/zero_suggest_cache_service_factory.h
@@ -23,7 +23,7 @@ ~ZeroSuggestCacheServiceFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const override; };
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index aa78137..aefad7d 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc
@@ -554,6 +554,7 @@ #if !BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_CHROMEOS) #include "chrome/browser/apps/intent_helper/chromeos_apps_navigation_throttle.h" +#include "chrome/browser/apps/intent_helper/chromeos_disabled_apps_throttle.h" #include "chrome/browser/policy/system_features_disable_list_policy_handler.h" #else #include "chrome/browser/apps/intent_helper/apps_navigation_throttle.h" @@ -5047,15 +5048,24 @@ #endif #if !BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(IS_CHROMEOS) + auto disabled_app_throttle = + apps::ChromeOsDisabledAppsThrottle::MaybeCreate(handle); + if (disabled_app_throttle) { + throttles.push_back(std::move(disabled_app_throttle)); + } +#endif // BUILDFLAG(IS_CHROMEOS) + auto url_to_apps_throttle = #if BUILDFLAG(IS_CHROMEOS) apps::ChromeOsAppsNavigationThrottle::MaybeCreate(handle); #else apps::AppsNavigationThrottle::MaybeCreate(handle); -#endif - if (url_to_apps_throttle) +#endif // BUILDFLAG(IS_CHROMEOS) + if (url_to_apps_throttle) { throttles.push_back(std::move(url_to_apps_throttle)); -#endif + } +#endif // !BUILDFLAG(IS_ANDROID) Profile* profile = Profile::FromBrowserContext( handle->GetWebContents()->GetBrowserContext());
diff --git a/chrome/browser/chromeos/extensions/wm/wm_desks_private_events.cc b/chrome/browser/chromeos/extensions/wm/wm_desks_private_events.cc index fee42e83..b3740ce 100644 --- a/chrome/browser/chromeos/extensions/wm/wm_desks_private_events.cc +++ b/chrome/browser/chromeos/extensions/wm/wm_desks_private_events.cc
@@ -37,7 +37,8 @@ : events::DESK_EVENTS_ON_DESK_ADDED, api::wm_desks_private::OnDeskAdded::kEventName, base::Value::List() - .Append(desk_id.AsLowercaseString())); + .Append(desk_id.AsLowercaseString()) + .Append(from_undo)); event_router_->BroadcastEvent(std::move(event)); }
diff --git a/chrome/browser/chromeos/extensions/wm/wm_desks_private_events_unittest.cc b/chrome/browser/chromeos/extensions/wm/wm_desks_private_events_unittest.cc index 1c5fe815..7b8220b 100644 --- a/chrome/browser/chromeos/extensions/wm/wm_desks_private_events_unittest.cc +++ b/chrome/browser/chromeos/extensions/wm/wm_desks_private_events_unittest.cc
@@ -91,7 +91,7 @@ const auto& event_map = test_observer.events(); auto iter = event_map.find(event_name); ASSERT_FALSE(iter == event_map.end()); - ASSERT_EQ(1u, iter->second->event_args.size()); + ASSERT_EQ(2u, iter->second->event_args.size()); EXPECT_EQ(desk_1.AsLowercaseString(), iter->second->event_args[0]); } @@ -162,7 +162,7 @@ const auto& event_map = test_observer.events(); auto iter = event_map.find(event_name); ASSERT_FALSE(iter == event_map.end()); - ASSERT_EQ(1u, iter->second->event_args.size()); + ASSERT_EQ(2u, iter->second->event_args.size()); EXPECT_EQ(desk_1.AsLowercaseString(), iter->second->event_args[0]); } } // namespace extensions
diff --git a/chrome/browser/engagement/site_engagement_service_factory.cc b/chrome/browser/engagement/site_engagement_service_factory.cc index a65c81a..819558b0 100644 --- a/chrome/browser/engagement/site_engagement_service_factory.cc +++ b/chrome/browser/engagement/site_engagement_service_factory.cc
@@ -52,11 +52,12 @@ SiteEngagementService::ClearServiceProvider(this); } -KeyedService* SiteEngagementServiceFactory::BuildServiceInstanceFor( +std::unique_ptr<KeyedService> +SiteEngagementServiceFactory::BuildServiceInstanceForBrowserContext( content::BrowserContext* context) const { history::HistoryService* history = HistoryServiceFactory::GetForProfile( Profile::FromBrowserContext(context), ServiceAccessType::IMPLICIT_ACCESS); - return new HistoryAwareSiteEngagementService(context, history); + return std::make_unique<HistoryAwareSiteEngagementService>(context, history); } SiteEngagementService* SiteEngagementServiceFactory::GetSiteEngagementService(
diff --git a/chrome/browser/engagement/site_engagement_service_factory.h b/chrome/browser/engagement/site_engagement_service_factory.h index 3f3c7562..119ac360 100644 --- a/chrome/browser/engagement/site_engagement_service_factory.h +++ b/chrome/browser/engagement/site_engagement_service_factory.h
@@ -45,7 +45,7 @@ ~SiteEngagementServiceFactory() override; // BrowserContextKeyedServiceFactory: - KeyedService* BuildServiceInstanceFor( + std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext( content::BrowserContext* profile) const override; };
diff --git a/chrome/browser/extensions/api/developer_private/extension_info_generator.cc b/chrome/browser/extensions/api/developer_private/extension_info_generator.cc index ad38812..66bcabc 100644 --- a/chrome/browser/extensions/api/developer_private/extension_info_generator.cc +++ b/chrome/browser/extensions/api/developer_private/extension_info_generator.cc
@@ -56,6 +56,7 @@ #include "extensions/common/manifest_handlers/icons_handler.h" #include "extensions/common/manifest_handlers/offline_enabled_info.h" #include "extensions/common/manifest_handlers/options_page_info.h" +#include "extensions/common/manifest_handlers/permissions_parser.h" #include "extensions/common/manifest_url_handlers.h" #include "extensions/common/permissions/permission_message_provider.h" #include "extensions/common/permissions/permission_message_util.h" @@ -313,6 +314,19 @@ return runtime_host_permissions; } +// Returns if the extension can access site data. This checks for host +// permissions, activeTab and API permissions that will surface a warning for +// all hosts access. +bool CanAccessSiteData(PermissionsManager* permissions_manager, + const Extension& extension) { + return permissions_manager->ExtensionRequestsHostPermissionsOrActiveTab( + extension) || + PermissionsParser::GetRequiredPermissions(&extension) + .ShouldWarnAllHosts() || + PermissionsParser::GetOptionalPermissions(&extension) + .ShouldWarnAllHosts(); +} + // Populates the |permissions| data for the given |extension|. void AddPermissionsInfo(content::BrowserContext* browser_context, const Extension& extension, @@ -333,6 +347,10 @@ PermissionsManager* permissions_manager = PermissionsManager::Get(browser_context); + + permissions->can_access_site_data = + CanAccessSiteData(permissions_manager, extension); + bool enable_runtime_host_permissions = permissions_manager->CanAffectExtension(extension);
diff --git a/chrome/browser/extensions/api/developer_private/extension_info_generator_unittest.cc b/chrome/browser/extensions/api/developer_private/extension_info_generator_unittest.cc index f09e558..f4e866ca 100644 --- a/chrome/browser/extensions/api/developer_private/extension_info_generator_unittest.cc +++ b/chrome/browser/extensions/api/developer_private/extension_info_generator_unittest.cc
@@ -352,6 +352,7 @@ ++i; } EXPECT_TRUE(info->permissions.runtime_host_permissions); + EXPECT_TRUE(info->permissions.can_access_site_data); ASSERT_EQ(2u, info->runtime_errors.size()); const api::developer_private::RuntimeError& runtime_error = @@ -631,6 +632,7 @@ "no urls", base::Value::List(), ManifestLocation::kInternal); info = GenerateExtensionInfo(no_urls_extension->id()); EXPECT_FALSE(info->permissions.runtime_host_permissions); + EXPECT_FALSE(info->permissions.can_access_site_data); } // Tests that specific_site_controls is correctly populated when permissions @@ -911,6 +913,27 @@ EXPECT_FALSE(info->file_access.is_active); } +// Test that `permissions.can_access_site_data` is set to true for extensions +// with API permissions that can access site data, without specifying host +// permissions. +TEST_F(ExtensionInfoGeneratorUnitTest, + CanAccessSiteDataWithoutHostPermissions) { + scoped_refptr<const Extension> active_tab_extension = + CreateExtension("activeTab", base::Value::List().Append("activeTab"), + ManifestLocation::kInternal); + scoped_refptr<const Extension> debugger_extension = + CreateExtension("activeTab", base::Value::List().Append("debugger"), + ManifestLocation::kInternal); + + std::unique_ptr<developer::ExtensionInfo> active_tab_info = + GenerateExtensionInfo(active_tab_extension->id()); + std::unique_ptr<developer::ExtensionInfo> debugger_info = + GenerateExtensionInfo(debugger_extension->id()); + + EXPECT_TRUE(active_tab_info->permissions.can_access_site_data); + EXPECT_TRUE(debugger_info->permissions.can_access_site_data); +} + // Tests that blocklisted extensions are returned by the ExtensionInfoGenerator. TEST_F(ExtensionInfoGeneratorUnitTest, Blocklisted) { const scoped_refptr<const Extension> extension1 = CreateExtension(
diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc index f2596d34..cfbd8a1 100644 --- a/chrome/browser/extensions/api/settings_private/prefs_util.cc +++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc
@@ -401,6 +401,8 @@ settings_api::PrefType::PREF_TYPE_BOOLEAN; (*s_allowlist)[ash::prefs::kAssistPredictiveWritingEnabled] = settings_api::PrefType::PREF_TYPE_BOOLEAN; + (*s_allowlist)[ash::prefs::kOrcaEnabled] = + settings_api::PrefType::PREF_TYPE_BOOLEAN; (*s_allowlist)[ash::prefs::kEmojiSuggestionEnabled] = settings_api::PrefType::PREF_TYPE_BOOLEAN; (*s_allowlist)[ash::prefs::kLacrosProxyControllingExtension] =
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index f83c834..dcc54ed 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -2994,11 +2994,6 @@ "expiry_milestone": 105 }, { - "name": "enable-lacros-aura-capture", - "owners": ["alcooper", "mfoltz", "petermcneeley"], - "expiry_milestone": 120 - }, - { "name": "enable-lacros-in-chrome-kiosk", "owners": ["bfranz", "chromeos-kiosk-eng@google.com"], "expiry_milestone": 120 @@ -6988,11 +6983,6 @@ "expiry_milestone": -1 }, { - "name": "rename-history-journeys", - "owners": [ "mahmadi", "chrome-journeys@google.com" ], - "expiry_milestone": 120 - }, - { "name": "render-arc-notifications-by-chrome", "owners": [ "shuminghao", "arc-framework@google.com" ], "expiry_milestone": 118 @@ -7713,7 +7703,7 @@ { "name": "tab-groups-save", "owners": [ "chrome-desktop-ui-sea@google.com", "dpenning" ], - "expiry_milestone": 120 + "expiry_milestone": 130 }, { "name": "tab-hover-card-image-settings",
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 2db1ca3..cd2105e75 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -2035,9 +2035,6 @@ const char kJourneysName[] = "History Journeys"; const char kJourneysDescription[] = "Enables the History Journeys UI."; -const char kRenameJourneysName[] = "Rename History Journeys"; -const char kRenameJourneysDescription[] = "Renames History Journeys in the UI."; - const char kJourneysContentClusteringName[] = "History Journeys Content Clustering"; const char kJourneysContentClusteringDescription[] = @@ -3253,9 +3250,10 @@ const char kTabGroupsContinuationAndroidDescription[] = "Allows users to access continuation features in Tab Group on phones."; -const char kTabGroupsSaveName[] = "Tab Groups Save"; +const char kTabGroupsSaveName[] = "Tab Groups Save and Sync"; const char kTabGroupsSaveDescription[] = - "Enables users to explicitly save and recall tab groups."; + "Enable saving and recalling of tab groups. Right click a tab group to " + "save it. Recall groups from the bookmarks bar."; const char kTabHoverCardImageSettingsName[] = "Tab Hover Card Image Setting"; const char kTabHoverCardImageSettingsDescription[] = @@ -7036,11 +7034,6 @@ "experimental. Enabling this flag could break things. And a factory reset" "might be needed to fully recover the state."; -const char kLacrosAuraCaptureName[] = "Enable Lacros Aura Capture"; -const char kLacrosAuraCaptureDescription[] = - "Enables LaCrOS to perform an in-process capture of it's own windows " - "rather than needing to delegate the capture to Ash"; - const char kLacrosMergeIcuDataFileName[] = "Enable merging of icudtl.dat in Lacros"; const char kLacrosMergeIcuDataFileDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index b547a09b..b93dd2c 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -1146,9 +1146,6 @@ extern const char kJourneysName[]; extern const char kJourneysDescription[]; -extern const char kRenameJourneysName[]; -extern const char kRenameJourneysDescription[]; - extern const char kJourneysContentClusteringName[]; extern const char kJourneysContentClusteringDescription[]; @@ -4045,9 +4042,6 @@ extern const char kExperimentalWebAppStoragePartitionIsolationName[]; extern const char kExperimentalWebAppStoragePartitionIsolationDescription[]; -extern const char kLacrosAuraCaptureName[]; -extern const char kLacrosAuraCaptureDescription[]; - extern const char kLacrosMergeIcuDataFileName[]; extern const char kLacrosMergeIcuDataFileDescription[]; #endif // #if BUILDFLAG(IS_CHROMEOS_LACROS)
diff --git a/chrome/browser/history_clusters/history_clusters_internals_browsertest.cc b/chrome/browser/history_clusters/history_clusters_internals_browsertest.cc index 81ad9e28..e9b202bb7 100644 --- a/chrome/browser/history_clusters/history_clusters_internals_browsertest.cc +++ b/chrome/browser/history_clusters/history_clusters_internals_browsertest.cc
@@ -111,7 +111,7 @@ // Trigger the debug messages to be added to the internals page. EXPECT_TRUE(ui_test_utils::NavigateToURL( - browser(), GURL(history_clusters::GetChromeUIHistoryClustersURL()))); + browser(), GURL(history_clusters::kChromeUIHistoryClustersURL))); // Verify that log messages are not added to the UI. There are still two // entries in the UI - the table header and the feature disabled message. @@ -150,7 +150,7 @@ // Trigger the debug messages to be added to the internals page. EXPECT_TRUE(ui_test_utils::NavigateToURL( - browser(), GURL(history_clusters::GetChromeUIHistoryClustersURL()))); + browser(), GURL(history_clusters::kChromeUIHistoryClustersURL))); // Verify that log messages are added to the UI. EXPECT_EQ(true, EvalJs(internals_page_web_contents, R"(
diff --git a/chrome/browser/history_clusters/history_clusters_metrics_browsertest.cc b/chrome/browser/history_clusters/history_clusters_metrics_browsertest.cc index ca0148c4..b9bd4fe 100644 --- a/chrome/browser/history_clusters/history_clusters_metrics_browsertest.cc +++ b/chrome/browser/history_clusters/history_clusters_metrics_browsertest.cc
@@ -113,7 +113,7 @@ // Navigates to the history clusters UI with `PAGE_TRANSITION_RELOAD`. Assumes // the current URL is also the history clusters UI. void RefreshHistoryClusters() { - NavigateParams params(browser(), GURL(GetChromeUIHistoryClustersURL()), + NavigateParams params(browser(), GURL(kChromeUIHistoryClustersURL), ui::PAGE_TRANSITION_RELOAD); ui_test_utils::NavigateToURL(¶ms); } @@ -150,8 +150,8 @@ MAYBE_DirectNavigationNoInteraction) { base::HistogramTester histogram_tester; ukm::TestAutoSetUkmRecorder ukm_recorder; - EXPECT_TRUE(ui_test_utils::NavigateToURL( - browser(), GURL(GetChromeUIHistoryClustersURL()))); + EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), + GURL(kChromeUIHistoryClustersURL))); EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), GURL("https://foo.com"))); auto entries = ukm_recorder.GetEntriesByName(ukm::builders::HistoryClusters::kEntryName); @@ -179,8 +179,8 @@ base::HistogramTester histogram_tester; ukm::TestAutoSetUkmRecorder ukm_recorder; - EXPECT_TRUE(ui_test_utils::NavigateToURL( - browser(), GURL(GetChromeUIHistoryClustersURL()))); + EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), + GURL(kChromeUIHistoryClustersURL))); EXPECT_TRUE(content::WaitForLoadStop( browser()->tab_strip_model()->GetActiveWebContents())); history_clusters::HistoryClustersHandler* page_handler = @@ -226,8 +226,8 @@ base::HistogramTester histogram_tester; ukm::TestAutoSetUkmRecorder ukm_recorder; - EXPECT_TRUE(ui_test_utils::NavigateToURL( - browser(), GURL(GetChromeUIHistoryClustersURL()))); + EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), + GURL(kChromeUIHistoryClustersURL))); ToggleToUi(UiTab::kBasicHistory); EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), GURL("https://foo.com"))); @@ -251,8 +251,8 @@ base::HistogramTester histogram_tester; ukm::TestAutoSetUkmRecorder ukm_recorder; - EXPECT_TRUE(ui_test_utils::NavigateToURL( - browser(), GURL(GetChromeUIHistoryClustersURL()))); + EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), + GURL(kChromeUIHistoryClustersURL))); ToggleToUi(UiTab::kBasicHistory); ToggleToUi(UiTab::kClustersUi);
diff --git a/chrome/browser/history_clusters/history_clusters_tab_helper.cc b/chrome/browser/history_clusters/history_clusters_tab_helper.cc index 4beac89..2d2f5f3a 100644 --- a/chrome/browser/history_clusters/history_clusters_tab_helper.cc +++ b/chrome/browser/history_clusters/history_clusters_tab_helper.cc
@@ -299,7 +299,7 @@ // The remaining logic only pertains to if the previously committed navigation // was the HistoryClusters UI. if (!IsHistoryPage(navigation_handle->GetWebContents()->GetLastCommittedURL(), - GURL(history_clusters::GetChromeUIHistoryClustersURL()))) { + GURL(history_clusters::kChromeUIHistoryClustersURL))) { return; } @@ -332,7 +332,7 @@ } if (!IsHistoryPage(navigation_handle->GetURL(), - GURL(history_clusters::GetChromeUIHistoryClustersURL()))) { + GURL(history_clusters::kChromeUIHistoryClustersURL))) { return; }
diff --git a/chrome/browser/lacros/lacros_extension_apps_controller.cc b/chrome/browser/lacros/lacros_extension_apps_controller.cc index e6443d4..a3539d2 100644 --- a/chrome/browser/lacros/lacros_extension_apps_controller.cc +++ b/chrome/browser/lacros/lacros_extension_apps_controller.cc
@@ -149,26 +149,13 @@ NOTREACHED(); } -void LacrosExtensionAppsController::LoadIcon(const std::string& app_id, - apps::IconKeyPtr icon_key, - apps::IconType icon_type, - int32_t size_hint_in_dip, - LoadIconCallback callback) { - Profile* profile = nullptr; - const extensions::Extension* extension = nullptr; - bool success = lacros_extensions_util::GetProfileAndExtension( - app_id, &profile, &extension); - if (success && icon_key) { - DCHECK(which_type_.Matches(extension)); - LoadIconFromExtension( - icon_type, size_hint_in_dip, profile, extension->id(), - static_cast<apps::IconEffects>(icon_key->icon_effects), - std::move(callback)); - return; - } - - // On failure, we still run the callback, with the zero IconValue. - std::move(callback).Run(std::make_unique<apps::IconValue>()); +void LacrosExtensionAppsController::DEPRECATED_LoadIcon( + const std::string& app_id, + apps::IconKeyPtr icon_key, + apps::IconType icon_type, + int32_t size_hint_in_dip, + apps::LoadIconCallback callback) { + NOTREACHED(); } void LacrosExtensionAppsController::GetCompressedIcon(
diff --git a/chrome/browser/lacros/lacros_extension_apps_controller.h b/chrome/browser/lacros/lacros_extension_apps_controller.h index 7372816..60d9b21c 100644 --- a/chrome/browser/lacros/lacros_extension_apps_controller.h +++ b/chrome/browser/lacros/lacros_extension_apps_controller.h
@@ -64,11 +64,11 @@ void UnpauseApp(const std::string& app_id) override; void GetMenuModel(const std::string& app_id, GetMenuModelCallback callback) override; - void LoadIcon(const std::string& app_id, - apps::IconKeyPtr icon_key, - apps::IconType icon_type, - int32_t size_hint_in_dip, - LoadIconCallback callback) override; + void DEPRECATED_LoadIcon(const std::string& app_id, + apps::IconKeyPtr icon_key, + apps::IconType icon_type, + int32_t size_hint_in_dip, + apps::LoadIconCallback callback) override; void GetCompressedIcon(const std::string& app_id, int32_t size_in_dip, ui::ResourceScaleFactor scale_factor,
diff --git a/chrome/browser/lacros/lacros_extension_apps_controller_browsertest.cc b/chrome/browser/lacros/lacros_extension_apps_controller_browsertest.cc index 69f25a7..0063063 100644 --- a/chrome/browser/lacros/lacros_extension_apps_controller_browsertest.cc +++ b/chrome/browser/lacros/lacros_extension_apps_controller_browsertest.cc
@@ -88,53 +88,42 @@ } // Test loading an icon -IN_PROC_BROWSER_TEST_F(LacrosExtensionAppsControllerTest, LoadIcon) { +IN_PROC_BROWSER_TEST_F(LacrosExtensionAppsControllerTest, GetCompressedIcon) { const extensions::Extension* extension_minimal = LoadExtension(test_data_dir_.AppendASCII("platform_apps/minimal")); const extensions::Extension* extension_with_icon = LoadExtension(test_data_dir_.AppendASCII("platform_apps/app_icon")); - // Two for loops are much easier to set up then a doubly parameterized test. + // For loop is much easier to set up then a doubly parameterized test. for (int i = 0; i <= 1; ++i) { // Regardless of whether we use an extension with an custom icon or not, an // icon should always load. const extensions::Extension* extension = (i == 0) ? extension_minimal : extension_with_icon; - for (int j = 0; j <= 1; ++j) { - // Check that both the compressed and uncompressed images load correctly. - bool compressed = (j == 0); + // Check that the compressed images load correctly. - // Set up the LoadIconCallback which quits the nested run loop and - // populates |output|. - apps::IconValuePtr output; - base::RunLoop run_loop; - LacrosExtensionAppsController::LoadIconCallback callback = base::BindOnce( - [](base::RunLoop* run_loop, apps::IconValuePtr* output, - apps::IconValuePtr input) { - *output = std::move(input); - run_loop->QuitClosure().Run(); - }, - &run_loop, &output); + // Set up the LoadIconCallback which quits the nested run loop and + // populates |output|. + apps::IconValuePtr output; + base::RunLoop run_loop; + apps::LoadIconCallback callback = base::BindOnce( + [](base::RunLoop* run_loop, apps::IconValuePtr* output, + apps::IconValuePtr input) { + *output = std::move(input); + run_loop->QuitClosure().Run(); + }, + &run_loop, &output); - // Load the icon - auto icon_type = compressed ? apps::IconType::kCompressed - : apps::IconType::kUncompressed; - std::unique_ptr<LacrosExtensionAppsController> controller = - LacrosExtensionAppsController::MakeForChromeApps(); - controller->LoadIcon(extension->id(), - std::make_unique<apps::IconKey>(0, 0, 0), icon_type, - /*size_hint_in_dip=*/1, std::move(callback)); - run_loop.Run(); + // Load the icon + std::unique_ptr<LacrosExtensionAppsController> controller = + LacrosExtensionAppsController::MakeForChromeApps(); + controller->GetCompressedIcon(extension->id(), /*size_in_dip=*/1, + ui::ResourceScaleFactor::k100Percent, + std::move(callback)); + run_loop.Run(); - if (compressed) { - EXPECT_FALSE(output->compressed.empty()); - } else { - EXPECT_FALSE(output->uncompressed.isNull()); - EXPECT_GT(output->uncompressed.width(), 0); - EXPECT_GT(output->uncompressed.height(), 0); - } - } + EXPECT_FALSE(output->compressed.empty()); } }
diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc index 0f33b0c2..4ee9c3e 100644 --- a/chrome/browser/net/system_network_context_manager.cc +++ b/chrome/browser/net/system_network_context_manager.cc
@@ -70,7 +70,6 @@ #include "net/cookies/cookie_util.h" #include "net/net_buildflags.h" #include "net/third_party/uri_template/uri_template.h" -#include "sandbox/features.h" #include "sandbox/policy/features.h" #include "sandbox/policy/sandbox_type.h" #include "services/cert_verifier/public/mojom/cert_verifier_service_factory.mojom.h" @@ -258,7 +257,7 @@ #endif // BUILDFLAG(IS_CHROMEOS) #if BUILDFLAG(IS_WIN) - if (!sandbox::features::IsAppContainerSandboxSupported()) { + if (!sandbox::policy::features::IsNetworkSandboxSupported()) { return NetworkSandboxState::kDisabledByPlatform; } #endif // BUILDFLAG(IS_WIN)
diff --git a/chrome/browser/new_tab_page/modules/new_tab_page_modules.cc b/chrome/browser/new_tab_page/modules/new_tab_page_modules.cc index 4e25f05..8485511 100644 --- a/chrome/browser/new_tab_page/modules/new_tab_page_modules.cc +++ b/chrome/browser/new_tab_page/modules/new_tab_page_modules.cc
@@ -15,7 +15,6 @@ #include "chrome/browser/new_tab_page/new_tab_page_util.h" #include "chrome/browser/signin/identity_manager_factory.h" #include "chrome/grit/generated_resources.h" -#include "components/history_clusters/core/features.h" #include "components/page_image_service/features.h" #include "components/search/ntp_features.h" #include "components/signin/public/identity_manager/accounts_in_cookie_jar_info.h" @@ -30,11 +29,8 @@ if (base::FeatureList::IsEnabled(ntp_features::kNtpHistoryClustersModule) && base::FeatureList::IsEnabled(page_image_service::kImageService)) { - details.emplace_back( - "history_clusters", - base::FeatureList::IsEnabled(history_clusters::kRenameJourneys) - ? IDS_OMNIBOX_HISTORY_CLUSTERS_SEARCH_HINT - : IDS_HISTORY_CLUSTERS_JOURNEYS_TAB_LABEL); + details.emplace_back("history_clusters", + IDS_HISTORY_CLUSTERS_JOURNEYS_TAB_LABEL); } if (IsRecipeTasksModuleEnabled()) {
diff --git a/chrome/browser/policy/messaging_layer/util/manual_test_heartbeat_event.cc b/chrome/browser/policy/messaging_layer/util/manual_test_heartbeat_event.cc index 4d403b5..2bad6d9c 100644 --- a/chrome/browser/policy/messaging_layer/util/manual_test_heartbeat_event.cc +++ b/chrome/browser/policy/messaging_layer/util/manual_test_heartbeat_event.cc
@@ -4,6 +4,9 @@ #include "chrome/browser/policy/messaging_layer/util/manual_test_heartbeat_event.h" +#include <memory> + +#include "base/check_op.h" #include "base/feature_list.h" #include "base/functional/callback.h" #include "base/logging.h" @@ -12,7 +15,6 @@ #include "base/time/time.h" #include "build/buildflag.h" #include "chrome/browser/policy/messaging_layer/util/report_queue_manual_test_context.h" -#include "components/keyed_service/core/keyed_service.h" #include "components/reporting/client/report_queue_configuration.h" #include "components/reporting/proto/synced/record_constants.pb.h" #include "components/reporting/util/status.h" @@ -26,14 +28,15 @@ "EncryptedReportingManualTestHeartbeatEvent", base::FEATURE_DISABLED_BY_DEFAULT); -// User heartbeat event. -BASE_FEATURE(kEncryptedReportingManualTestUserHeartbeatEvent, - "EncryptedReportingManualTestUserHeartbeatEvent", - base::FEATURE_DISABLED_BY_DEFAULT); - } // namespace ManualTestHeartbeatEvent::ManualTestHeartbeatEvent() { +#if BUILDFLAG(IS_CHROMEOS_ASH) + managed_session_service_ = std::make_unique<policy::ManagedSessionService>(); + CHECK(managed_session_service_); + managed_session_observation_.Observe(managed_session_service_.get()); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) + StartHeartbeatEvent(); } @@ -58,8 +61,22 @@ base::ThreadPool::CreateSequencedTaskRunner( {base::TaskPriority::BEST_EFFORT, base::MayBlock()})); } +} - // User heartbeat +#if BUILDFLAG(IS_CHROMEOS_ASH) + +namespace { +// User heartbeat event. +BASE_FEATURE(kEncryptedReportingManualTestUserHeartbeatEvent, + "EncryptedReportingManualTestUserHeartbeatEvent", + base::FEATURE_DISABLED_BY_DEFAULT); +} // namespace + +// Enqueues a 10 heartbeat events with `EventType::kUser` upon login. +void ManualTestHeartbeatEvent::OnLogin(Profile* profile) { + managed_session_observation_.Reset(); + CHECK_NE(profile, nullptr); + if (base::FeatureList::IsEnabled( kEncryptedReportingManualTestUserHeartbeatEvent)) { Start<ReportQueueManualTestContext>( @@ -74,5 +91,6 @@ {base::TaskPriority::BEST_EFFORT, base::MayBlock()})); } } +#endif // BUILDFLAG(IS_CHROMEOS_ASH) } // namespace reporting
diff --git a/chrome/browser/policy/messaging_layer/util/manual_test_heartbeat_event.h b/chrome/browser/policy/messaging_layer/util/manual_test_heartbeat_event.h index ad6c7e00..6f36948 100644 --- a/chrome/browser/policy/messaging_layer/util/manual_test_heartbeat_event.h +++ b/chrome/browser/policy/messaging_layer/util/manual_test_heartbeat_event.h
@@ -5,14 +5,25 @@ #ifndef CHROME_BROWSER_POLICY_MESSAGING_LAYER_UTIL_MANUAL_TEST_HEARTBEAT_EVENT_H_ #define CHROME_BROWSER_POLICY_MESSAGING_LAYER_UTIL_MANUAL_TEST_HEARTBEAT_EVENT_H_ -#include "base/feature_list.h" +#include <memory> + +#include "build/chromeos_buildflags.h" #include "components/keyed_service/core/keyed_service.h" +#if BUILDFLAG(IS_CHROMEOS_ASH) +#include "chrome/browser/ash/policy/status_collector/managed_session_service.h" +#endif // BUILDFLAG(IS_CHROMEOS_ASH) + namespace reporting { // This class is only used for manual testing purpose. Do not depend on it in // other parts of the production code. -class ManualTestHeartbeatEvent : public KeyedService { +class ManualTestHeartbeatEvent : +#if BUILDFLAG(IS_CHROMEOS_ASH) + // Used to listen for user login. + public policy::ManagedSessionService::Observer, +#endif // BUILDFLAG(IS_CHROMEOS_ASH) + public KeyedService { public: ManualTestHeartbeatEvent(); ~ManualTestHeartbeatEvent() override; @@ -20,11 +31,25 @@ // KeyedService void Shutdown() override; +#if BUILDFLAG(IS_CHROMEOS_ASH) + // ManagedSessionService::Observer: + void OnLogin(Profile* profile) override; +#endif // BUILDFLAG(IS_CHROMEOS_ASH) + private: // Starts a self-managed ReportQueueManualTestContext running on its own // SequencedTaskRunner. Will upload ten records to the HEARTBEAT_EVENTS // Destination and delete itself. void StartHeartbeatEvent() const; + +#if BUILDFLAG(IS_CHROMEOS_ASH) + // Object that monitors managed session related events used by reporting + // services. + std::unique_ptr<policy::ManagedSessionService> managed_session_service_; + base::ScopedObservation<policy::ManagedSessionService, + policy::ManagedSessionService::Observer> + managed_session_observation_{this}; +#endif // BUILDFLAG(IS_CHROMEOS_ASH) }; } // namespace reporting
diff --git a/chrome/browser/policy/test/history_clusters_policy_browsertest.cc b/chrome/browser/policy/test/history_clusters_policy_browsertest.cc deleted file mode 100644 index 5a84d1e..0000000 --- a/chrome/browser/policy/test/history_clusters_policy_browsertest.cc +++ /dev/null
@@ -1,106 +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 "base/test/scoped_feature_list.h" -#include "chrome/browser/history_clusters/history_clusters_service_factory.h" -#include "chrome/browser/policy/policy_test_utils.h" -#include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/browser.h" -#include "components/history_clusters/core/config.h" -#include "components/history_clusters/core/features.h" -#include "components/history_clusters/core/history_clusters_prefs.h" -#include "components/history_clusters/core/history_clusters_service.h" -#include "components/policy/core/common/policy_map.h" -#include "components/policy/core/common/policy_types.h" -#include "components/policy/policy_constants.h" -#include "components/prefs/pref_service.h" -#include "content/public/test/browser_test.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace policy { - -// Tests setting the visibility of the History Clusters by policy. -class HistoryClustersPolicyTest : public PolicyTest, - public testing::WithParamInterface<bool> { - public: - HistoryClustersPolicyTest() { - if (GetParam()) { - scoped_feature_list_.InitAndEnableFeature( - history_clusters::kRenameJourneys); - } else { - scoped_feature_list_.InitAndDisableFeature( - history_clusters::kRenameJourneys); - } - } - - void SetUp() override { - PolicyTest::SetUp(); - - config_.is_journeys_enabled_no_locale_check = true; - history_clusters::SetConfigForTesting(config_); - } - - private: - base::test::ScopedFeatureList scoped_feature_list_; - history_clusters::Config config_; -}; - -INSTANTIATE_TEST_SUITE_P(RenameJourneys, - HistoryClustersPolicyTest, - testing::Bool()); - -IN_PROC_BROWSER_TEST_P(HistoryClustersPolicyTest, HistoryClustersVisible) { - auto* history_clusters_service = - HistoryClustersServiceFactory::GetForBrowserContext(browser()->profile()); - PrefService* prefs = browser()->profile()->GetPrefs(); - PolicyMap policies; - - // Verify that history clusters are visible by default. - EXPECT_TRUE(prefs->GetBoolean(history_clusters::prefs::kVisible)); - EXPECT_FALSE(prefs->IsManagedPreference(history_clusters::prefs::kVisible)); - EXPECT_TRUE(history_clusters_service->IsJourneysEnabledAndVisible()); - - // Verify that history clusters can be hidden by prefs. - prefs->SetBoolean(history_clusters::prefs::kVisible, false); - - EXPECT_FALSE(prefs->GetBoolean(history_clusters::prefs::kVisible)); - EXPECT_FALSE(prefs->IsManagedPreference(history_clusters::prefs::kVisible)); - // When history_clusters::kRenameJourneys is enabled, history clusters are - // always visible unless the visibility prefs is set to false by policy. - EXPECT_EQ(history_clusters_service->IsJourneysEnabledAndVisible(), - GetParam()); - - // Verify that history clusters can be hidden by policy. - policies.Set(key::kHistoryClustersVisible, POLICY_LEVEL_MANDATORY, - POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, base::Value(false), - nullptr); - UpdateProviderPolicy(policies); - - EXPECT_FALSE(prefs->GetBoolean(history_clusters::prefs::kVisible)); - EXPECT_TRUE(prefs->IsManagedPreference(history_clusters::prefs::kVisible)); - EXPECT_FALSE(history_clusters_service->IsJourneysEnabledAndVisible()); - - // Verify that history clusters can be made visible by policy. - policies.Set(key::kHistoryClustersVisible, POLICY_LEVEL_MANDATORY, - POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD, base::Value(true), - nullptr); - UpdateProviderPolicy(policies); - - EXPECT_TRUE(prefs->GetBoolean(history_clusters::prefs::kVisible)); - EXPECT_TRUE(prefs->IsManagedPreference(history_clusters::prefs::kVisible)); - EXPECT_TRUE(history_clusters_service->IsJourneysEnabledAndVisible()); - - // Verify that clearing the policy restores the original prefs. - policies.Clear(); - UpdateProviderPolicy(policies); - - EXPECT_FALSE(prefs->GetBoolean(history_clusters::prefs::kVisible)); - EXPECT_FALSE(prefs->IsManagedPreference(history_clusters::prefs::kVisible)); - // When history_clusters::kRenameJourneys is enabled, history clusters are - // always visible unless the visibility prefs is set to false by policy. - EXPECT_EQ(history_clusters_service->IsJourneysEnabledAndVisible(), - GetParam()); -} - -} // namespace policy
diff --git a/chrome/browser/policy/test/network_service_sandbox_enabled_browsertest.cc b/chrome/browser/policy/test/network_service_sandbox_enabled_browsertest.cc index b3c1241..9b834ec2 100644 --- a/chrome/browser/policy/test/network_service_sandbox_enabled_browsertest.cc +++ b/chrome/browser/policy/test/network_service_sandbox_enabled_browsertest.cc
@@ -18,7 +18,7 @@ #include "testing/gtest/include/gtest/gtest.h" #if BUILDFLAG(IS_WIN) -#include "sandbox/features.h" +#include "sandbox/policy/features.h" #endif namespace policy { @@ -58,8 +58,9 @@ #if BUILDFLAG(IS_WIN) // On Windows, the policy is ignored if the platform does not support // sandboxing at all, e.g. pre Windows 10. - if (!sandbox::features::IsAppContainerSandboxSupported()) + if (!sandbox::policy::features::IsNetworkSandboxSupported()) { expected_value = false; + } #endif ChromeContentBrowserClient client; EXPECT_EQ(expected_value, client.ShouldSandboxNetworkService());
diff --git a/chrome/browser/resources/chromeos/accessibility/accessibility_common/dictation/dictation.js b/chrome/browser/resources/chromeos/accessibility/accessibility_common/dictation/dictation.js index 1c00b60..1ae9c332 100644 --- a/chrome/browser/resources/chromeos/accessibility/accessibility_common/dictation/dictation.js +++ b/chrome/browser/resources/chromeos/accessibility/accessibility_common/dictation/dictation.js
@@ -202,7 +202,7 @@ } this.setStopTimeout_( Dictation.Timeouts.NO_FOCUSED_IME_MS, - Dictation.StopReason.NO_FOCUSED_IME); + 'Dictation stopped automatically: No focused IME'); this.inputController_.connect(() => this.maybeStartSpeechRecognition_()); } @@ -262,21 +262,18 @@ /** * Sets the timeout to stop Dictation. * @param {number} durationMs - * @param {Dictation.StopReason=} reason Optional reason for why Dictation + * @param {string=} debugInfo Optional debugging information for why Dictation * stopped automatically. * @private */ - setStopTimeout_(durationMs, reason) { + setStopTimeout_(durationMs, debugInfo) { if (this.stopTimeoutId_ !== null) { clearTimeout(this.stopTimeoutId_); } this.stopTimeoutId_ = setTimeout(() => { this.stopDictation_(/*notify=*/ true); - - if (reason === Dictation.StopReason.NO_FOCUSED_IME) { - chrome.accessibilityPrivate.showToast( - chrome.accessibilityPrivate.ToastType - .DICTATION_NO_FOCUSED_TEXT_FIELD); + if (debugInfo) { + console.log(debugInfo); } }, durationMs); } @@ -543,9 +540,12 @@ InputController.IME_ENGINE_ID); } - /** Used to set the NO_FOCUSED_IME_MS timeout for testing purposes only. */ - setNoFocusedImeTimeoutForTesting(duration) { - Dictation.Timeouts.NO_FOCUSED_IME_MS = duration; + /** + * Used to increase the NO_FOCUSED_IME_MS timeout to reduce the flakiness of + * Dictation tests on slower builds. For testing purposes only. + */ + increaseNoFocusedImeTimeoutForTesting() { + Dictation.Timeouts.NO_FOCUSED_IME_MS = 20 * 1000; } /** @@ -628,8 +628,3 @@ NO_NEW_SPEECH_MS: 5 * 1000, NO_FOCUSED_IME_MS: 1000, }; - -/** @enum {string} */ -Dictation.StopReason = { - NO_FOCUSED_IME: 'Dictation stopped automatically: No focused IME', -};
diff --git a/chrome/browser/resources/chromeos/accessibility/accessibility_common/dictation/dictation_test_base.js b/chrome/browser/resources/chromeos/accessibility/accessibility_common/dictation/dictation_test_base.js index 617f260..67175ac 100644 --- a/chrome/browser/resources/chromeos/accessibility/accessibility_common/dictation/dictation_test_base.js +++ b/chrome/browser/resources/chromeos/accessibility/accessibility_common/dictation/dictation_test_base.js
@@ -116,7 +116,7 @@ accessibilityCommon.dictation_.disablePumpkinForTesting(); // Increase Dictation's NO_FOCUSED_IME timeout to reduce flakiness on slower // builds. - accessibilityCommon.dictation_.setNoFocusedImeTimeoutForTesting(20 * 1000); + accessibilityCommon.dictation_.increaseNoFocusedImeTimeoutForTesting(); } /** @override */
diff --git a/chrome/browser/resources/chromeos/accessibility/accessibility_common/dictation/dictation_test_support.js b/chrome/browser/resources/chromeos/accessibility/accessibility_common/dictation/dictation_test_support.js index 764b7f4b..5d854dda 100644 --- a/chrome/browser/resources/chromeos/accessibility/accessibility_common/dictation/dictation_test_support.js +++ b/chrome/browser/resources/chromeos/accessibility/accessibility_common/dictation/dictation_test_support.js
@@ -20,9 +20,9 @@ domAutomationController.send('ready'); } - /** Sets Dictation timeouts for test stability. */ - setNoFocusedImeTimeout(duration) { - this.dictation_.setNoFocusedImeTimeoutForTesting(duration); + /** Increases Dictation timeouts for test stability. */ + increaseNoFocusedImeTimeout() { + this.dictation_.increaseNoFocusedImeTimeoutForTesting(); this.notifyCcTests_(); }
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/event/range_automation_handler.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/event/range_automation_handler.js index 88b17c59..cd0f207 100644 --- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/event/range_automation_handler.js +++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/event/range_automation_handler.js
@@ -173,6 +173,12 @@ return; } + // To avoid output of stale information, don't report changes in IME + // candidates. IME candidate output is handled during selection events. + if (evt.target.role === RoleType.IME_CANDIDATE) { + return; + } + // Report attribute changes for specific generated events. if (evt.type === chrome.automation.EventType.SORT_CHANGED) { let msgId;
diff --git a/chrome/browser/resources/chromeos/accessibility/common/testing/mock_accessibility_private.js b/chrome/browser/resources/chromeos/accessibility/common/testing/mock_accessibility_private.js index e5fb082..7f286bc9 100644 --- a/chrome/browser/resources/chromeos/accessibility/common/testing/mock_accessibility_private.js +++ b/chrome/browser/resources/chromeos/accessibility/common/testing/mock_accessibility_private.js
@@ -73,10 +73,6 @@ this.SyntheticKeyboardEventType = {KEYDOWN: 'keydown', KEYUP: 'keyup'}; - this.ToastType = { - DICTATION_NO_FOCUSED_TEXT_FIELD: 'dictationNoFocusedTextField', - }; - /** @private {function<number, number>} */ this.boundsListener_ = null; @@ -488,7 +484,4 @@ await getFileBytes(`${pumpkinDir}/es_es/pumpkin_config.binarypb`); MockAccessibilityPrivate.pumpkinData_ = data; } - - /** @param {!chrome.accessibilityPrivate.ToastType} type */ - showToast(type) {} }
diff --git a/chrome/browser/resources/extensions/detail_view.html b/chrome/browser/resources/extensions/detail_view.html index ef24c3df..0d99e18 100644 --- a/chrome/browser/resources/extensions/detail_view.html +++ b/chrome/browser/resources/extensions/detail_view.html
@@ -238,12 +238,17 @@ </cr-tooltip-icon> <cr-toggle id="enableToggle" aria-label$="[[getEnableToggleAriaLabel_(data.*)]]" - aria-describedby="name" + aria-describedby="name enable-toggle-tooltip" checked="[[isEnabled_(data.state)]]" on-change="onEnableToggleChange_" disabled$="[[!isEnableToggleEnabled_(data.*)]]" hidden$="[[!showEnableToggle_(data.*)]]"> </cr-toggle> + <paper-tooltip id="enable-toggle-tooltip" for="enableToggle" + position="left" aria-hidden="true" animation-delay="0" + fit-to-visible-bounds> + [[getEnableToggleTooltipText_(data.*)]] + </paper-tooltip> </div> </div> <div id="warnings" hidden$="[[!hasSevereWarnings_(data.*)]]">
diff --git a/chrome/browser/resources/extensions/detail_view.ts b/chrome/browser/resources/extensions/detail_view.ts index 624c626c..6f435e2 100644 --- a/chrome/browser/resources/extensions/detail_view.ts +++ b/chrome/browser/resources/extensions/detail_view.ts
@@ -36,7 +36,7 @@ import {getTemplate} from './detail_view.html.js'; import {ItemDelegate} from './item.js'; import {ItemMixin} from './item_mixin.js'; -import {computeInspectableViewLabel, EnableControl, getEnableControl, getEnableToggleAriaLabel, getItemSource, getItemSourceString, isEnabled, sortViews, userCanChangeEnablement} from './item_util.js'; +import {computeInspectableViewLabel, EnableControl, getEnableControl, getEnableToggleAriaLabel, getEnableToggleTooltipText, getItemSource, getItemSourceString, isEnabled, sortViews, userCanChangeEnablement} from './item_util.js'; import {navigation, Page} from './navigation_helper.js'; import {ExtensionsToggleRowElement} from './toggle_row.js'; @@ -190,6 +190,10 @@ this.i18n('extensionEnabled'), this.i18n('itemOff')); } + private getEnableToggleTooltipText_(): string { + return getEnableToggleTooltipText(this.data); + } + private onCloseButtonClick_() { navigation.navigateTo({page: Page.LIST}); }
diff --git a/chrome/browser/resources/extensions/item.html b/chrome/browser/resources/extensions/item.html index 42ebe26..73fb2ba 100644 --- a/chrome/browser/resources/extensions/item.html +++ b/chrome/browser/resources/extensions/item.html
@@ -338,9 +338,13 @@ icon-class="cr20:kite" icon-aria-label="$i18n{parentDisabledPermissions}"> </cr-tooltip-icon> + <paper-tooltip id="enable-toggle-tooltip" for="enableToggle" position="left" + aria-hidden="true" animation-delay="0" fit-to-visible-bounds> + [[getEnableToggleTooltipText_(data.*)]] + </paper-tooltip> <cr-toggle id="enableToggle" aria-label$="[[getEnableToggleAriaLabel_(data.*)]]" - aria-describedby="a11yAssociation" + aria-describedby="a11yAssociation enable-toggle-tooltip" checked="[[isEnabled_(data.state)]]" on-change="onEnableToggleChange_" disabled$="[[!isEnableToggleEnabled_(data.*)]]"
diff --git a/chrome/browser/resources/extensions/item.ts b/chrome/browser/resources/extensions/item.ts index a4da781a..0e0a836 100644 --- a/chrome/browser/resources/extensions/item.ts +++ b/chrome/browser/resources/extensions/item.ts
@@ -29,7 +29,7 @@ import {getTemplate} from './item.html.js'; import {ItemMixin} from './item_mixin.js'; -import {computeInspectableViewLabel, EnableControl, getEnableControl, getEnableToggleAriaLabel, getItemSource, getItemSourceString, isEnabled, sortViews, SourceType, userCanChangeEnablement} from './item_util.js'; +import {computeInspectableViewLabel, EnableControl, getEnableControl, getEnableToggleAriaLabel, getEnableToggleTooltipText, getItemSource, getItemSourceString, isEnabled, sortViews, SourceType, userCanChangeEnablement} from './item_util.js'; import {navigation, Page} from './navigation_helper.js'; export interface ItemDelegate { @@ -150,6 +150,10 @@ this.i18n('extensionEnabled'), this.i18n('itemOff')); } + private getEnableToggleTooltipText_(): string { + return getEnableToggleTooltipText(this.data); + } + private observeIdVisibility_() { flush(); const idElement = this.shadowRoot!.querySelector('#extension-id');
diff --git a/chrome/browser/resources/extensions/item_util.ts b/chrome/browser/resources/extensions/item_util.ts index f55c531..3dc19d84 100644 --- a/chrome/browser/resources/extensions/item_util.ts +++ b/chrome/browser/resources/extensions/item_util.ts
@@ -219,3 +219,18 @@ } return EnableControl.ENABLE_TOGGLE; } + +/** + * @return The tooltip to show for an extension's enable toggle. + */ +export function getEnableToggleTooltipText( + data: chrome.developerPrivate.ExtensionInfo): string { + if (!isEnabled(data.state)) { + return loadTimeData.getString('enableToggleTooltipDisabled'); + } + + return loadTimeData.getString( + data.permissions.canAccessSiteData ? + 'enableToggleTooltipEnabledWithSiteAccess' : + 'enableToggleTooltipEnabled'); +}
diff --git a/chrome/browser/resources/history/app.html b/chrome/browser/resources/history/app.html index a810828d..013cda62 100644 --- a/chrome/browser/resources/history/app.html +++ b/chrome/browser/resources/history/app.html
@@ -110,7 +110,7 @@ if="[[historyClustersSelected_(selectedPage_, showHistoryClusters_)]]"> <history-clusters id="history-clusters" query="[[queryState_.searchTerm]]" - path="[[historyClustersPath_]]"> + path="journeys"> </history-clusters> </template> </iron-pages>
diff --git a/chrome/browser/resources/history/app.ts b/chrome/browser/resources/history/app.ts index 7a162bf..945c55e1 100644 --- a/chrome/browser/resources/history/app.ts +++ b/chrome/browser/resources/history/app.ts
@@ -197,12 +197,6 @@ value: () => loadTimeData.getBoolean('isHistoryClustersVisible'), }, - historyClustersPath_: { - type: Boolean, - value: () => - loadTimeData.getBoolean('renameJourneys') ? '2' : 'journeys', - }, - showHistoryClusters_: { type: Boolean, computed: @@ -244,7 +238,7 @@ private pendingDelete_: boolean; private queryResult_: QueryResult; private queryState_: QueryState; - private selectedPage_: string; + private selectedPage_: Page; private selectedTab_: number; private showHistoryClusters_: boolean; private tabsIcons_: string[]; @@ -314,7 +308,7 @@ } private historyClustersSelected_( - _selectedPage: string, _showHistoryClusters: boolean): boolean { + _selectedPage: Page, _showHistoryClusters: boolean): boolean { return this.selectedPage_ === Page.HISTORY_CLUSTERS && this.showHistoryClusters_; } @@ -475,7 +469,7 @@ this.set('footerInfo.otherFormsOfHistory', hasOtherForms); } - private syncedTabsSelected_(_selectedPage: string): boolean { + private syncedTabsSelected_(_selectedPage: Page): boolean { return this.selectedPage_ === Page.SYNCED_TABS; } @@ -488,7 +482,7 @@ return querying && !incremental && searchTerm !== ''; } - private selectedPageChanged_(newPage: string, oldPage: string) { + private selectedPageChanged_(newPage: Page, oldPage: Page) { this.unselectAll(); this.historyViewChanged_(); this.maybeUpdateSelectedHistoryTab_();
diff --git a/chrome/browser/resources/history/router.ts b/chrome/browser/resources/history/router.ts index 1c0c7f5585..b5e0f383 100644 --- a/chrome/browser/resources/history/router.ts +++ b/chrome/browser/resources/history/router.ts
@@ -5,21 +5,17 @@ import 'chrome://resources/polymer/v3_0/iron-location/iron-location.js'; import 'chrome://resources/polymer/v3_0/iron-location/iron-query-params.js'; -import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; import {Debouncer, microTask, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {QueryState} from './externs.js'; import {getTemplate} from './router.html.js'; // All valid pages. -// TODO(crbug.com/1473855): Change this to an enum and use that type for holding -// these values for better type check when `loadTimeData` is no longer needed. -export const Page = { - HISTORY: 'history', - HISTORY_CLUSTERS: loadTimeData.getBoolean('renameJourneys') ? '2' : - 'journeys', - SYNCED_TABS: 'syncedTabs', -}; +export enum Page { + HISTORY = 'history', + HISTORY_CLUSTERS = 'journeys', + SYNCED_TABS = 'syncedTabs', +} // The ids of pages with corresponding tabs in the order of their tab indices. export const TABBED_PAGES = [Page.HISTORY, Page.HISTORY_CLUSTERS];
diff --git a/chrome/browser/resources/history/side_bar.ts b/chrome/browser/resources/history/side_bar.ts index cc0e3c9..c2fe87e 100644 --- a/chrome/browser/resources/history/side_bar.ts +++ b/chrome/browser/resources/history/side_bar.ts
@@ -85,11 +85,6 @@ }, }, - renameJourneys_: { - type: Boolean, - value: () => loadTimeData.getBoolean('renameJourneys'), - }, - /** * Used to display notices for profile sign-in status and managed status. */ @@ -108,8 +103,7 @@ showToggleHistoryClusters_: { type: Boolean, computed: 'computeShowToggleHistoryClusters_(' + - 'historyClustersEnabled, historyClustersVisibleManagedByPolicy_, ' + - 'renameJourneys_)', + 'historyClustersEnabled, historyClustersVisibleManagedByPolicy_)', }, }; } @@ -117,11 +111,10 @@ footerInfo: FooterInfo; historyClustersEnabled: boolean; historyClustersVisible: boolean; - selectedPage: string; + selectedPage: Page; selectedTab: number; private guestSession_ = loadTimeData.getBoolean('isGuestSession'); private historyClustersVisibleManagedByPolicy_: boolean; - private renameJourneys_: boolean; private showFooter_: boolean; private showHistoryClusters_: boolean; @@ -234,7 +227,7 @@ private computeShowToggleHistoryClusters_(): boolean { return this.historyClustersEnabled && - !this.historyClustersVisibleManagedByPolicy_ && !this.renameJourneys_; + !this.historyClustersVisibleManagedByPolicy_; } }
diff --git a/chrome/browser/resources/new_tab_page/modules/history_clusters/module.ts b/chrome/browser/resources/new_tab_page/modules/history_clusters/module.ts index c8404f6..7a8474b 100644 --- a/chrome/browser/resources/new_tab_page/modules/history_clusters/module.ts +++ b/chrome/browser/resources/new_tab_page/modules/history_clusters/module.ts
@@ -200,8 +200,8 @@ composed: true, detail: { message: loadTimeData.getStringF( - 'disableQuestsModuleToastMessage', - loadTimeData.getString('disableQuestsModuleToastName')), + 'disableModuleToastMessage', + loadTimeData.getString('modulesJourneysSentence2')), }, }); this.dispatchEvent(disableEvent);
diff --git a/chrome/browser/resources/new_tab_page/modules/v2/history_clusters/module.ts b/chrome/browser/resources/new_tab_page/modules/v2/history_clusters/module.ts index 19900004..082eac3 100644 --- a/chrome/browser/resources/new_tab_page/modules/v2/history_clusters/module.ts +++ b/chrome/browser/resources/new_tab_page/modules/v2/history_clusters/module.ts
@@ -127,8 +127,8 @@ composed: true, detail: { message: loadTimeData.getStringF( - 'disableQuestsModuleToastMessage', - loadTimeData.getString('disableQuestsModuleToastName')), + 'disableModuleToastMessage', + loadTimeData.getString('modulesJourneysSentence2')), }, }); this.dispatchEvent(disableEvent);
diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn index 2baaa86..dc77f9b 100644 --- a/chrome/browser/resources/settings/BUILD.gn +++ b/chrome/browser/resources/settings/BUILD.gn
@@ -343,11 +343,6 @@ non_web_component_files += [ "autofill_page/passkeys_browser_proxy.ts" ] } - if (is_mac) { - non_web_component_files += - [ "a11y_page/mac_system_settings_browser_proxy.ts" ] - } - # -----------------non_web_component_files end ------------------------------- icons_html_files = [
diff --git a/chrome/browser/resources/settings_shared/BUILD.gn b/chrome/browser/resources/settings_shared/BUILD.gn index 609b1c8c..2691b09 100644 --- a/chrome/browser/resources/settings_shared/BUILD.gn +++ b/chrome/browser/resources/settings_shared/BUILD.gn
@@ -40,6 +40,10 @@ "privacy_page/privacy_page_browser_proxy.ts", ] + if (is_mac) { + non_web_component_files += [ "mac_system_settings_browser_proxy.ts" ] + } + ts_composite = true ts_definitions = [ "//tools/typescript/definitions/chrome_send.d.ts",
diff --git a/chrome/browser/resources/settings/a11y_page/mac_system_settings_browser_proxy.ts b/chrome/browser/resources/settings_shared/mac_system_settings_browser_proxy.ts similarity index 100% rename from chrome/browser/resources/settings/a11y_page/mac_system_settings_browser_proxy.ts rename to chrome/browser/resources/settings_shared/mac_system_settings_browser_proxy.ts
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/file_analysis_request.cc b/chrome/browser/safe_browsing/cloud_content_scanning/file_analysis_request.cc index ac95662..4cd0a99 100644 --- a/chrome/browser/safe_browsing/cloud_content_scanning/file_analysis_request.cc +++ b/chrome/browser/safe_browsing/cloud_content_scanning/file_analysis_request.cc
@@ -226,7 +226,7 @@ if (IsZipFile(ext, mime_type)) { zip_analyzer_ = SandboxedZipAnalyzer::CreateAnalyzer( path_, - /*password=*/"", + /*password=*/password(), base::BindOnce(&FileAnalysisRequest::OnCheckedForEncryption, weakptr_factory_.GetWeakPtr(), std::move(result_and_data.second)), @@ -235,7 +235,7 @@ } else if (IsRarFile(ext, mime_type)) { rar_analyzer_ = SandboxedRarAnalyzer::CreateAnalyzer( path_, - /*password=*/"", + /*password=*/password(), base::BindOnce(&FileAnalysisRequest::OnCheckedForEncryption, weakptr_factory_.GetWeakPtr(), std::move(result_and_data.second)), @@ -251,9 +251,9 @@ void FileAnalysisRequest::OnCheckedForEncryption( Data data, const ArchiveAnalyzerResults& analyzer_result) { - bool encrypted = base::ranges::any_of( - analyzer_result.archived_binary, - [](const auto& binary) { return binary.is_encrypted(); }); + bool encrypted = analyzer_result.encryption_info.is_encrypted && + analyzer_result.encryption_info.password_status == + EncryptionInfo::kKnownIncorrect; BinaryUploadService::Result result = encrypted ? BinaryUploadService::Result::FILE_ENCRYPTED
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/file_analysis_request_unittest.cc b/chrome/browser/safe_browsing/cloud_content_scanning/file_analysis_request_unittest.cc index c8d74e73..b44b0034 100644 --- a/chrome/browser/safe_browsing/cloud_content_scanning/file_analysis_request_unittest.cc +++ b/chrome/browser/safe_browsing/cloud_content_scanning/file_analysis_request_unittest.cc
@@ -12,6 +12,7 @@ #include "base/test/bind.h" #include "base/test/gmock_callback_support.h" #include "base/test/task_environment.h" +#include "base/test/test_future.h" #include "build/build_config.h" #include "chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.h" #include "chrome/browser/enterprise/connectors/common.h" @@ -85,20 +86,13 @@ MakeRequest(/*block_unsupported_types=*/false, file_path, file_path.BaseName(), /*delay_opening_file*/ false); - bool called = false; - base::RunLoop run_loop; - request->GetRequestData(base::BindLambdaForTesting( - [&run_loop, &called, &out_result, &out_data]( - BinaryUploadService::Result result, - BinaryUploadService::Request::Data data) { - called = true; - run_loop.Quit(); - *out_result = result; - *out_data = std::move(data); - })); - run_loop.Run(); + base::test::TestFuture<BinaryUploadService::Result, + BinaryUploadService::Request::Data> + future; + request->GetRequestData(future.GetCallback()); - EXPECT_TRUE(called); + *out_result = future.Get<BinaryUploadService::Result>(); + *out_data = future.Get<BinaryUploadService::Request::Data>(); EXPECT_EQ(file_path, out_data->path); EXPECT_TRUE(out_data->contents.empty()); } @@ -117,23 +111,17 @@ auto request = MakeRequest(/*block_unsupported_types=*/false, path, path.BaseName(), /*delay_opening_file*/ false); - bool called = false; - base::RunLoop run_loop; - request->GetRequestData(base::BindLambdaForTesting( - [&run_loop, &called](BinaryUploadService::Result result, - BinaryUploadService::Request::Data data) { - called = true; - run_loop.Quit(); + base::test::TestFuture<BinaryUploadService::Result, + BinaryUploadService::Request::Data> + future; + request->GetRequestData(future.GetCallback()); - EXPECT_EQ(result, BinaryUploadService::Result::UNKNOWN); - EXPECT_EQ(data.size, 0u); - EXPECT_TRUE(data.contents.empty()); - EXPECT_TRUE(data.hash.empty()); - EXPECT_TRUE(data.mime_type.empty()); - })); - run_loop.Run(); - - EXPECT_TRUE(called); + auto [result, data] = future.Take(); + EXPECT_EQ(result, BinaryUploadService::Result::UNKNOWN); + EXPECT_EQ(data.size, 0u); + EXPECT_TRUE(data.contents.empty()); + EXPECT_TRUE(data.hash.empty()); + EXPECT_TRUE(data.mime_type.empty()); } { @@ -143,23 +131,17 @@ auto request = MakeRequest(/*block_unsupported_types=*/false, path, path.BaseName(), /*delay_opening_file*/ false); - bool called = false; - base::RunLoop run_loop; - request->GetRequestData(base::BindLambdaForTesting( - [&run_loop, &called](BinaryUploadService::Result result, - BinaryUploadService::Request::Data data) { - called = true; - run_loop.Quit(); + base::test::TestFuture<BinaryUploadService::Result, + BinaryUploadService::Request::Data> + future; + request->GetRequestData(future.GetCallback()); - EXPECT_EQ(result, BinaryUploadService::Result::UNKNOWN); - EXPECT_EQ(data.size, 0u); - EXPECT_TRUE(data.contents.empty()); - EXPECT_TRUE(data.hash.empty()); - EXPECT_TRUE(data.mime_type.empty()); - })); - run_loop.Run(); - - EXPECT_TRUE(called); + auto [result, data] = future.Take(); + EXPECT_EQ(result, BinaryUploadService::Result::UNKNOWN); + EXPECT_EQ(data.size, 0u); + EXPECT_TRUE(data.contents.empty()); + EXPECT_TRUE(data.hash.empty()); + EXPECT_TRUE(data.mime_type.empty()); } { @@ -169,23 +151,17 @@ auto request = MakeRequest(/*block_unsupported_types=*/false, path, path.BaseName(), /*delay_opening_file*/ false); - bool called = false; - base::RunLoop run_loop; - request->GetRequestData(base::BindLambdaForTesting( - [&run_loop, &called](BinaryUploadService::Result result, - BinaryUploadService::Request::Data data) { - called = true; - run_loop.Quit(); + base::test::TestFuture<BinaryUploadService::Result, + BinaryUploadService::Request::Data> + future; + request->GetRequestData(future.GetCallback()); - EXPECT_EQ(result, BinaryUploadService::Result::SUCCESS); - EXPECT_EQ(data.size, 0u); - EXPECT_TRUE(data.contents.empty()); - EXPECT_TRUE(data.hash.empty()); - EXPECT_TRUE(data.mime_type.empty()); - })); - run_loop.Run(); - - EXPECT_TRUE(called); + auto [result, data] = future.Take(); + EXPECT_EQ(result, BinaryUploadService::Result::SUCCESS); + EXPECT_EQ(data.size, 0u); + EXPECT_TRUE(data.contents.empty()); + EXPECT_TRUE(data.hash.empty()); + EXPECT_TRUE(data.mime_type.empty()); } } @@ -314,11 +290,9 @@ file_path.BaseName(), /*delay_opening_file*/ false); base::RunLoop run_loop; - request->GetRequestData(base::BindLambdaForTesting( - [&run_loop](BinaryUploadService::Result result, - BinaryUploadService::Request::Data data) { - run_loop.Quit(); - })); + request->GetRequestData(base::IgnoreArgs<BinaryUploadService::Result, + BinaryUploadService::Request::Data>( + run_loop.QuitClosure())); run_loop.Run(); // printf "Normal file contents" | sha256sum | tr '[:lower:]' '[:upper:]' @@ -342,11 +316,9 @@ file_path.BaseName(), /*delay_opening_file*/ false); base::RunLoop run_loop; - request->GetRequestData(base::BindLambdaForTesting( - [&run_loop](BinaryUploadService::Result result, - BinaryUploadService::Request::Data data) { - run_loop.Quit(); - })); + request->GetRequestData(base::IgnoreArgs<BinaryUploadService::Result, + BinaryUploadService::Request::Data>( + run_loop.QuitClosure())); run_loop.Run(); EXPECT_EQ(request->filename(), file_path.AsUTF8Unsafe()); @@ -361,39 +333,20 @@ base::FilePath file_path = temp_dir.GetPath().AppendASCII("normal.doc"); base::WriteFile(file_path, normal_contents); - BinaryUploadService::Result async_result; - BinaryUploadService::Request::Data async_data; - auto request = MakeRequest(/*block_unsupported_types=*/false, file_path, file_path.BaseName(), /*delay_opening_file*/ false); - bool called = false; - base::RunLoop run_loop; - request->GetRequestData(base::BindLambdaForTesting( - [&run_loop, &called, &async_result, &async_data]( - BinaryUploadService::Result result, - BinaryUploadService::Request::Data data) { - called = true; - run_loop.Quit(); - async_result = result; - async_data = std::move(data); - })); - run_loop.Run(); + base::test::TestFuture<BinaryUploadService::Result, + BinaryUploadService::Request::Data> + future; + request->GetRequestData(future.GetCallback()); - ASSERT_TRUE(called); + auto [async_result, async_data] = future.Take(); - BinaryUploadService::Result sync_result; - BinaryUploadService::Request::Data sync_data; - request->GetRequestData( - base::BindLambdaForTesting([&run_loop, &called, &sync_result, &sync_data]( - BinaryUploadService::Result result, - BinaryUploadService::Request::Data data) { - called = true; - run_loop.Quit(); - sync_result = result; - sync_data = std::move(data); - })); + request->GetRequestData(future.GetCallback()); + + auto [sync_result, sync_data] = future.Take(); EXPECT_EQ(sync_result, async_result); EXPECT_EQ(sync_data.contents, async_data.contents); @@ -411,27 +364,16 @@ base::FilePath file_path = temp_dir.GetPath().AppendASCII("normal.doc"); base::WriteFile(file_path, normal_contents); - BinaryUploadService::Result result; - BinaryUploadService::Request::Data data; - auto request = MakeRequest(/*block_unsupported_types=*/false, file_path, file_path.BaseName(), /*delay_opening_file*/ false, "fake/mimetype"); - bool called = false; - base::RunLoop run_loop; - request->GetRequestData(base::BindLambdaForTesting( - [&run_loop, &called, &result, &data]( - BinaryUploadService::Result tmp_result, - BinaryUploadService::Request::Data tmp_data) { - called = true; - run_loop.Quit(); - result = tmp_result; - data = std::move(tmp_data); - })); - run_loop.Run(); + base::test::TestFuture<BinaryUploadService::Result, + BinaryUploadService::Request::Data> + future; + request->GetRequestData(future.GetCallback()); - ASSERT_TRUE(called); + auto [result, data] = future.Take(); EXPECT_EQ(result, BinaryUploadService::Result::SUCCESS); EXPECT_EQ(data.size, normal_contents.size()); @@ -486,6 +428,52 @@ EXPECT_TRUE(run_loop.AnyQuitCalled()); } +TEST_F(FileAnalysisRequestTest, SuccessWithCorrectPassword) { + content::BrowserTaskEnvironment browser_task_environment; + content::InProcessUtilityThreadHelper in_process_utility_thread_helper; + + base::FilePath test_zip; + EXPECT_TRUE(base::PathService::Get(chrome::DIR_TEST_DATA, &test_zip)); + test_zip = + test_zip.AppendASCII("safe_browsing/download_protection/encrypted.zip"); + + auto request = MakeRequest(/*block_unsupported_types=*/false, test_zip, + test_zip.BaseName(), /*delay_opening_file*/ false); + request->set_password("12345"); + + base::test::TestFuture<BinaryUploadService::Result, + BinaryUploadService::Request::Data> + future; + request->GetRequestData(future.GetCallback()); + + auto [result, data] = future.Take(); + + EXPECT_EQ(result, BinaryUploadService::Result::SUCCESS); +} + +TEST_F(FileAnalysisRequestTest, FileEncryptedWithIncorrectPassword) { + content::BrowserTaskEnvironment browser_task_environment; + content::InProcessUtilityThreadHelper in_process_utility_thread_helper; + + base::FilePath test_zip; + EXPECT_TRUE(base::PathService::Get(chrome::DIR_TEST_DATA, &test_zip)); + test_zip = + test_zip.AppendASCII("safe_browsing/download_protection/encrypted.zip"); + + auto request = MakeRequest(/*block_unsupported_types=*/false, test_zip, + test_zip.BaseName(), /*delay_opening_file*/ false); + request->set_password("67890"); + + base::test::TestFuture<BinaryUploadService::Result, + BinaryUploadService::Request::Data> + future; + request->GetRequestData(future.GetCallback()); + + auto [result, data] = future.Take(); + + EXPECT_EQ(result, BinaryUploadService::Result::FILE_ENCRYPTED); +} + // Class used to validate that an archive file is correctly detected and checked // for encryption, even without a .zip/.rar extension. class FileAnalysisRequestZipTest @@ -515,22 +503,12 @@ auto request = MakeRequest(/*block_unsupported_types=*/false, test_zip, test_zip.BaseName(), /*delay_opening_file*/ false); - bool called = false; - base::RunLoop run_loop; - BinaryUploadService::Result result; - BinaryUploadService::Request::Data data; - request->GetRequestData(base::BindLambdaForTesting( - [&run_loop, &called, &result, &data]( - BinaryUploadService::Result tmp_result, - BinaryUploadService::Request::Data tmp_data) { - called = true; - run_loop.Quit(); - result = tmp_result; - data = std::move(tmp_data); - })); - run_loop.Run(); + base::test::TestFuture<BinaryUploadService::Result, + BinaryUploadService::Request::Data> + future; + request->GetRequestData(future.GetCallback()); - ASSERT_TRUE(called); + auto [result, data] = future.Take(); // encrypted_zip_no_extension is a copy of encrypted.zip, so the same // assertions hold and the same commands can be used to get its size/hash.
diff --git a/chrome/browser/ui/android/cars/BUILD.gn b/chrome/browser/ui/android/cars/BUILD.gn new file mode 100644 index 0000000..8851af9 --- /dev/null +++ b/chrome/browser/ui/android/cars/BUILD.gn
@@ -0,0 +1,26 @@ +# 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. + +import("//build/config/android/rules.gni") + +android_library("java") { + sources = [ + "java/src/org/chromium/chrome/browser/ui/cars/DrivingRestrictionsDelegate.java", + "java/src/org/chromium/chrome/browser/ui/cars/DrivingRestrictionsManager.java", + ] + + deps = [ "//base:base_java" ] +} + +robolectric_library("junit") { + sources = [ "java/src/org/chromium/chrome/browser/ui/cars/DrivingRestrictionsManagerTest.java" ] + + deps = [ + ":java", + "//base:base_java", + "//base:base_junit_test_support", + "//third_party/junit", + "//third_party/mockito:mockito_java", + ] +}
diff --git a/chrome/browser/ui/android/cars/OWNERS b/chrome/browser/ui/android/cars/OWNERS new file mode 100644 index 0000000..7d896a07 --- /dev/null +++ b/chrome/browser/ui/android/cars/OWNERS
@@ -0,0 +1,2 @@ +twellington@chromium.org +clhager@google.com
diff --git a/chrome/browser/ui/android/cars/java/src/org/chromium/chrome/browser/ui/cars/DrivingRestrictionsDelegate.java b/chrome/browser/ui/android/cars/java/src/org/chromium/chrome/browser/ui/cars/DrivingRestrictionsDelegate.java new file mode 100644 index 0000000..ec16a464 --- /dev/null +++ b/chrome/browser/ui/android/cars/java/src/org/chromium/chrome/browser/ui/cars/DrivingRestrictionsDelegate.java
@@ -0,0 +1,26 @@ +// 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. + +package org.chromium.chrome.browser.ui.cars; + +import org.chromium.base.Callback; + +/** + * Base class that exposes methods for starting and stopping monitoring. + */ +class DrivingRestrictionsDelegate { + private Callback<Boolean> mRequiresDrivingOptimizationsCallback; + + DrivingRestrictionsDelegate(Callback<Boolean> requiresDrivingOptimizationsCallback) { + mRequiresDrivingOptimizationsCallback = requiresDrivingOptimizationsCallback; + } + + void startMonitoring() {} + + void stopMonitoring() {} + + protected void notifyCallback(boolean requiresOptimization) { + mRequiresDrivingOptimizationsCallback.onResult(requiresOptimization); + } +}
diff --git a/chrome/browser/ui/android/cars/java/src/org/chromium/chrome/browser/ui/cars/DrivingRestrictionsManager.java b/chrome/browser/ui/android/cars/java/src/org/chromium/chrome/browser/ui/cars/DrivingRestrictionsManager.java new file mode 100644 index 0000000..bb02d3b --- /dev/null +++ b/chrome/browser/ui/android/cars/java/src/org/chromium/chrome/browser/ui/cars/DrivingRestrictionsManager.java
@@ -0,0 +1,60 @@ +// 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. + +package org.chromium.chrome.browser.ui.cars; + +import android.app.Activity; + +import org.chromium.base.ApplicationState; +import org.chromium.base.ApplicationStatus; + +/** + * Monitors changes to driving restrictions and applies required optimizations. + */ +public class DrivingRestrictionsManager { + private static DrivingRestrictionsManager sInstance; + + private DrivingRestrictionsDelegate mDelegate; + private boolean mMonitoring; + + /** + * Initializes DrivingRestrictionsManager if it has not yet been initialized. + */ + public static void initialize() { + if (sInstance == null) sInstance = new DrivingRestrictionsManager(); + } + + DrivingRestrictionsManager() { + mDelegate = new DrivingRestrictionsDelegate(this::onRequiresDistractionOptimizationChanged); + + updateMonitoring(ApplicationStatus.getStateForApplication()); + ApplicationStatus.registerApplicationStateListener(newState -> updateMonitoring(newState)); + } + + void updateMonitoring(@ApplicationState int applicationState) { + if (mMonitoring && applicationState == ApplicationState.HAS_DESTROYED_ACTIVITIES) { + mMonitoring = false; + mDelegate.stopMonitoring(); + } else if (!mMonitoring && applicationState != ApplicationState.HAS_DESTROYED_ACTIVITIES) { + mMonitoring = true; + mDelegate.startMonitoring(); + } + } + + private void onRequiresDistractionOptimizationChanged(boolean requiresOptimization) { + if (requiresOptimization) { + for (Activity activity : ApplicationStatus.getRunningActivities()) { + activity.finish(); + } + } + } + + void setDelegateForTesting(DrivingRestrictionsDelegate delegate) { + mDelegate = delegate; + } + + DrivingRestrictionsDelegate getDelegateForTesting() { + return mDelegate; + } +}
diff --git a/chrome/browser/ui/android/cars/java/src/org/chromium/chrome/browser/ui/cars/DrivingRestrictionsManagerTest.java b/chrome/browser/ui/android/cars/java/src/org/chromium/chrome/browser/ui/cars/DrivingRestrictionsManagerTest.java new file mode 100644 index 0000000..1edea52e --- /dev/null +++ b/chrome/browser/ui/android/cars/java/src/org/chromium/chrome/browser/ui/cars/DrivingRestrictionsManagerTest.java
@@ -0,0 +1,131 @@ +// 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. + +package org.chromium.chrome.browser.ui.cars; + +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +import android.app.Activity; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mockito; +import org.mockito.Spy; +import org.robolectric.Robolectric; +import org.robolectric.annotation.Config; + +import org.chromium.base.ActivityState; +import org.chromium.base.ApplicationState; +import org.chromium.base.ApplicationStatus; +import org.chromium.base.test.BaseRobolectricTestRunner; + +@RunWith(BaseRobolectricTestRunner.class) +@Config(manifest = Config.NONE) +public class DrivingRestrictionsManagerTest { + private DrivingRestrictionsManager mManager; + @Spy + private DrivingRestrictionsDelegate mSpyDelegate; + + @Before + public void setUp() { + mManager = new DrivingRestrictionsManager(); + mSpyDelegate = Mockito.spy(mManager.getDelegateForTesting()); + mManager.setDelegateForTesting(mSpyDelegate); + } + + @Test + public void testDrivingOptimizationRequired() { + // Set state for Activity so it's added to the list of running activities tracked by + // ApplicationStatus. + Activity activity = Mockito.spy(Robolectric.buildActivity(Activity.class).setup().get()); + ApplicationStatus.onStateChangeForTesting(activity, ActivityState.CREATED); + + verify(activity, never().description("Activity shouldn't be finished yet.")).finish(); + mSpyDelegate.notifyCallback(true); + verify(activity, + times(1).description( + "Activity should be finished after driver optimizations required.")) + .finish(); + } + + @Test + public void testDrivingOptimizationNotRequired() { + // Set state for Activity so it's added to the list of running activities tracked by + // ApplicationStatus. + Activity activity = Mockito.spy(Robolectric.buildActivity(Activity.class).setup().get()); + ApplicationStatus.onStateChangeForTesting(activity, ActivityState.CREATED); + + verify(activity, never().description("Activity shouldn't be finished yet.")).finish(); + mSpyDelegate.notifyCallback(false); + verify(activity, + never().description( + "Activity shouldn't be finished if driver optimizations not required.")) + .finish(); + } + + @Test + public void testStartStopMonitoring() { + verify(mSpyDelegate, + never().description("startMonitoring incorrectly called at start of test.")) + .startMonitoring(); + verify(mSpyDelegate, + never().description("stopMonitoring incorrectly called at start of test.")) + .stopMonitoring(); + + mManager.updateMonitoring(ApplicationState.HAS_RUNNING_ACTIVITIES); + verify(mSpyDelegate, + times(1).description( + "startMonitoring should be called when there are running activities.")) + .startMonitoring(); + verify(mSpyDelegate, + never().description( + "stopMonitoring shouldn't be called when there are running activities.")) + .stopMonitoring(); + + mManager.updateMonitoring(ApplicationState.HAS_PAUSED_ACTIVITIES); + verify(mSpyDelegate, + times(1).description( + "startMonitoring shouldn't be called again for paused activities.")) + .startMonitoring(); + verify(mSpyDelegate, + never().description( + "stopMonitoring shouldn't be called when there are paused activities.")) + .stopMonitoring(); + + mManager.updateMonitoring(ApplicationState.HAS_STOPPED_ACTIVITIES); + verify(mSpyDelegate, + times(1).description( + "startMonitoring shouldn't be called again for stopped activities.")) + .startMonitoring(); + verify(mSpyDelegate, + never().description( + "stopMonitoring shouldn't be called when there are stopped activities.")) + .stopMonitoring(); + + mManager.updateMonitoring(ApplicationState.HAS_DESTROYED_ACTIVITIES); + verify(mSpyDelegate, + times(1).description( + "startMonitoring shouldn't be called when all activities are destroyed.")) + .startMonitoring(); + verify(mSpyDelegate, + times(1).description( + "stopMonitoring should be called when all activities are destroyed .")) + .stopMonitoring(); + + mManager.updateMonitoring(ApplicationState.HAS_RUNNING_ACTIVITIES); + verify(mSpyDelegate, + times(2).description( + "startMonitoring should be called when there are running activities " + + "again.")) + .startMonitoring(); + verify(mSpyDelegate, + times(1).description( + "stopMonitoring shouldn't be called again when there are running " + + "activities.")) + .stopMonitoring(); + } +}
diff --git a/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.cc b/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.cc index 8f2b37e..6d060a49c 100644 --- a/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.cc +++ b/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.cc
@@ -117,5 +117,3 @@ const absl::optional<std::vector<ash::DictationBubbleHintType>>& hints) {} void FakeAccessibilityController::SilenceSpokenFeedback() {} - -void FakeAccessibilityController::ShowToast(ash::AccessibilityToastType type) {}
diff --git a/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.h b/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.h index 808dcc11..3fc2c32 100644 --- a/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.h +++ b/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.h
@@ -77,7 +77,6 @@ const absl::optional<std::vector<ash::DictationBubbleHintType>>& hints) override; void SilenceSpokenFeedback() override; - void ShowToast(ash::AccessibilityToastType type) override; private: bool was_client_set_ = false;
diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/browser/ui/autofill/chrome_autofill_client.cc index 54bfbc77..e4303f1dd 100644 --- a/chrome/browser/ui/autofill/chrome_autofill_client.cc +++ b/chrome/browser/ui/autofill/chrome_autofill_client.cc
@@ -973,13 +973,15 @@ } void ChromeAutofillClient::HideAutofillPopup(PopupHidingReason reason) { - if (popup_controller_.get()) + if (popup_controller_.get()) { popup_controller_->Hide(reason); + } } void ChromeAutofillClient::UpdateOfferNotification( const AutofillOfferData* offer, - bool notification_has_been_shown) { + bool notification_has_been_shown, + bool expand_notification_icon) { DCHECK(offer); CreditCard* card = offer->GetEligibleInstrumentIds().empty() @@ -1005,7 +1007,8 @@ OfferNotificationBubbleControllerImpl* controller = OfferNotificationBubbleControllerImpl::FromWebContents(web_contents()); controller->ShowOfferNotificationIfApplicable( - offer, card, /*should_show_icon_only_=*/notification_has_been_shown); + offer, card, /*should_show_icon_only_=*/notification_has_been_shown, + expand_notification_icon); #endif }
diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.h b/chrome/browser/ui/autofill/chrome_autofill_client.h index 469f254..063e5c3 100644 --- a/chrome/browser/ui/autofill/chrome_autofill_client.h +++ b/chrome/browser/ui/autofill/chrome_autofill_client.h
@@ -241,7 +241,8 @@ AutofillSuggestionTriggerSource trigger_source) override; void HideAutofillPopup(PopupHidingReason reason) override; void UpdateOfferNotification(const AutofillOfferData* offer, - bool notification_has_been_shown) override; + bool notification_has_been_shown, + bool expand_notification_icon) override; void DismissOfferNotification() override; void OnVirtualCardDataAvailable( const VirtualCardManualFallbackBubbleOptions& options) override;
diff --git a/chrome/browser/ui/autofill/payments/offer_notification_bubble_controller.h b/chrome/browser/ui/autofill/payments/offer_notification_bubble_controller.h index 36e43279..1c49903 100644 --- a/chrome/browser/ui/autofill/payments/offer_notification_bubble_controller.h +++ b/chrome/browser/ui/autofill/payments/offer_notification_bubble_controller.h
@@ -62,6 +62,9 @@ // Returns whether the omnibox icon should be visible. virtual bool IsIconVisible() const = 0; + // Returns whether the omnibox icon should expand if it's visible. + virtual bool ShouldIconExpand() const = 0; + // Removes the reference the controller has to the bubble. virtual void OnBubbleClosed(PaymentsBubbleClosedReason closed_reason) = 0;
diff --git a/chrome/browser/ui/autofill/payments/offer_notification_bubble_controller_impl.cc b/chrome/browser/ui/autofill/payments/offer_notification_bubble_controller_impl.cc index f42afcb..98a9d7a 100644 --- a/chrome/browser/ui/autofill/payments/offer_notification_bubble_controller_impl.cc +++ b/chrome/browser/ui/autofill/payments/offer_notification_bubble_controller_impl.cc
@@ -117,6 +117,10 @@ return bubble_state_ != BubbleState::kHidden; } +bool OfferNotificationBubbleControllerImpl::ShouldIconExpand() const { + return icon_should_expand_; +} + void OfferNotificationBubbleControllerImpl::OnBubbleClosed( PaymentsBubbleClosedReason closed_reason) { set_bubble_view(nullptr); @@ -160,9 +164,12 @@ void OfferNotificationBubbleControllerImpl::ShowOfferNotificationIfApplicable( const AutofillOfferData* offer, const CreditCard* card, - bool should_show_icon_only) { + bool should_show_icon_only, + bool expand_notification_icon) { DCHECK(offer); + icon_should_expand_ = expand_notification_icon; + // If this is not the bubble's first show, and offer to be shown has not // changed, and it has not been shown for more than // kAutofillBubbleSurviveNavigationTime, do not dismiss the bubble.
diff --git a/chrome/browser/ui/autofill/payments/offer_notification_bubble_controller_impl.h b/chrome/browser/ui/autofill/payments/offer_notification_bubble_controller_impl.h index 4f9feb5..1e50887 100644 --- a/chrome/browser/ui/autofill/payments/offer_notification_bubble_controller_impl.h +++ b/chrome/browser/ui/autofill/payments/offer_notification_bubble_controller_impl.h
@@ -51,17 +51,20 @@ const CreditCard* GetLinkedCard() const override; const AutofillOfferData* GetOffer() const override; bool IsIconVisible() const override; + bool ShouldIconExpand() const override; void OnBubbleClosed(PaymentsBubbleClosedReason closed_reason) override; void OnPromoCodeButtonClicked() override; - // Displays an offer notification for the given |offer| on the current page. - // The information of the |card|, if present, will be displayed in the bubble - // for a card-linked offer. |should_show_icon_only| indicates whether client + // Displays an offer notification for the given `offer` on the current page. + // The information of the `card`, if present, will be displayed in the bubble + // for a card-linked offer. `should_show_icon_only` indicates whether client // should just show the offer omnibox icon instead of the icon and the bubble - // on this merchant website. + // on this merchant website. `expand_notification_icon` indicates whether + // the offer omnibox icon will automatically expand upon being shown. void ShowOfferNotificationIfApplicable(const AutofillOfferData* offer, const CreditCard* card, - bool should_show_icon_only); + bool should_show_icon_only, + bool expand_notification_icon); // Called when user clicks on omnibox icon. void ReshowBubble(); @@ -92,7 +95,7 @@ friend class OfferNotificationBubbleViewsTestBase; // Hides the bubble if it is visible and resets the bubble shown timestamp. - // |should_show_icon| decides whether the icon should be visible after the + // `should_show_icon` decides whether the icon should be visible after the // bubble is dismissed. void HideBubbleAndClearTimestamp(bool should_show_icon); @@ -129,6 +132,9 @@ raw_ptr<ObserverForTest> observer_for_testing_ = nullptr; + // Denotes whether the icon should expand in the omnibox. + bool icon_should_expand_ = false; + base::ScopedObservation<CouponService, CouponServiceObserver> coupon_service_observation_{this};
diff --git a/chrome/browser/ui/autofill/payments/offer_notification_bubble_controller_impl_unittest.cc b/chrome/browser/ui/autofill/payments/offer_notification_bubble_controller_impl_unittest.cc index 7940f90..d2963837 100644 --- a/chrome/browser/ui/autofill/payments/offer_notification_bubble_controller_impl_unittest.cc +++ b/chrome/browser/ui/autofill/payments/offer_notification_bubble_controller_impl_unittest.cc
@@ -81,9 +81,11 @@ (const autofill::AutofillOfferData& offer)); }; - void ShowBubble(const AutofillOfferData* offer) { + void ShowBubble(const AutofillOfferData* offer, + bool expand_notification_icon = false) { controller()->ShowOfferNotificationIfApplicable( - offer, &card_, /*should_show_icon_only=*/false); + offer, &card_, /*should_show_icon_only=*/false, + expand_notification_icon); } void CloseBubble(PaymentsBubbleClosedReason closed_reason = @@ -162,8 +164,7 @@ TEST_F(OfferNotificationBubbleControllerImplTest, BubbleShown) { // Check that bubble is visible. AutofillOfferData offer = CreateTestCardLinkedOffer( - /*merchant_origins=*/{GURL("https://www.example.com/first/") - .DeprecatedGetOriginAsURL()}, + /*merchant_origins=*/{GURL("https://www.example.com")}, /*eligible_instrument_ids=*/{123}); ShowBubble(&offer); EXPECT_TRUE(controller()->GetOfferNotificationBubbleView()); @@ -174,21 +175,22 @@ TEST_F(OfferNotificationBubbleControllerImplTest, OfferBubbleDismissesOnNavigation) { AutofillOfferData offer = CreateTestCardLinkedOffer( - /*merchant_origins=*/{GURL("https://www.example.com/first/") - .DeprecatedGetOriginAsURL()}, + /*merchant_origins=*/{GURL("https://www.example.com")}, /*eligible_instrument_ids=*/{123}); ShowBubble(&offer); EXPECT_TRUE(controller()->GetOfferNotificationBubbleView()); test_clock_.Advance(kAutofillBubbleSurviveNavigationTime - base::Seconds(1)); controller()->ShowOfferNotificationIfApplicable( - &offer, nullptr, /*should_show_icon_only=*/true); + &offer, nullptr, /*should_show_icon_only=*/true, + /*expand_notification_icon=*/false); // Ensure the bubble is still there if // kOfferNotificationBubbleSurviveNavigationTime hasn't been reached yet. EXPECT_TRUE(controller()->GetOfferNotificationBubbleView()); test_clock_.Advance(base::Seconds(2)); controller()->ShowOfferNotificationIfApplicable( - &offer, nullptr, /*should_show_icon_only=*/true); + &offer, nullptr, /*should_show_icon_only=*/true, + /*expand_notification_icon=*/false); // Ensure new page does not have an active offer notification bubble. EXPECT_EQ(nullptr, controller()->GetOfferNotificationBubbleView()); } @@ -196,8 +198,7 @@ TEST_F(OfferNotificationBubbleControllerImplTest, ShownOfferIsRetrievableFromController) { AutofillOfferData offer = CreateTestCardLinkedOffer( - /*merchant_origins=*/{GURL("https://www.example.com/first/") - .DeprecatedGetOriginAsURL()}, + /*merchant_origins=*/{GURL("https://www.example.com")}, /*eligible_instrument_ids=*/{123}); ShowBubble(&offer); @@ -208,8 +209,7 @@ FreeListing_NotShownWithinTimeGap) { base::HistogramTester histogram_tester; AutofillOfferData offer = CreateTestFreeListingCouponOffer( - /*merchant_origins=*/{GURL("https://www.example.com/first/") - .DeprecatedGetOriginAsURL()}, + /*merchant_origins=*/{GURL("https://www.example.com")}, /*promo_code=*/"FREEFALL1234"); // Try to show a FreeListing coupon whose last shown timestamp is within time // gap. @@ -230,8 +230,7 @@ FreeListing_ShownBeyondTimeGap) { base::HistogramTester histogram_tester; AutofillOfferData offer = CreateTestFreeListingCouponOffer( - /*merchant_origins=*/{GURL("https://www.example.com/first/") - .DeprecatedGetOriginAsURL()}, + /*merchant_origins=*/{GURL("https://www.example.com")}, /*promo_code=*/"FREEFALL1234"); // Try to show a FreeListing coupon whose last shown timestamp is beyond time // gap. @@ -253,8 +252,7 @@ TEST_F(OfferNotificationBubbleControllerImplTest, FreeListing_OnCouponInvalidated) { AutofillOfferData offer = CreateTestFreeListingCouponOffer( - /*merchant_origins=*/{GURL("https://www.example.com/first/") - .DeprecatedGetOriginAsURL()}, + /*merchant_origins=*/{GURL("https://www.example.com")}, /*promo_code=*/"FREEFALL1234"); EXPECT_CALL(mock_coupon_service_, GetCouponDisplayTimestamp(offer)) .Times(1) @@ -265,8 +263,7 @@ EXPECT_TRUE(controller()->GetOfferNotificationBubbleView()); AutofillOfferData offer2 = CreateTestFreeListingCouponOffer( - /*merchant_origins=*/{GURL("https://www.example.com/first/") - .DeprecatedGetOriginAsURL()}, + /*merchant_origins=*/{GURL("https://www.example.com")}, /*promo_code=*/"FREEFALL5678"); controller()->OnCouponInvalidated(offer2); EXPECT_TRUE(controller()->GetOfferNotificationBubbleView()); @@ -279,8 +276,7 @@ // will not be called for a GPay promo code offer. TEST_F(OfferNotificationBubbleControllerImplTest, GPayPromoCode_BubbleShown) { AutofillOfferData offer = CreateTestGPayPromoCodeOffer( - /*merchant_origins=*/{GURL("https://www.example.com/first/") - .DeprecatedGetOriginAsURL()}, + /*merchant_origins=*/{GURL("https://www.example.com")}, /*promo_code=*/"FREEFALL5678"); ShowBubble(&offer); @@ -291,4 +287,16 @@ IDS_AUTOFILL_GPAY_PROMO_CODE_OFFERS_REMINDER_TITLE)); } +// Tests that the offer notification icon will be expanded. +TEST_F(OfferNotificationBubbleControllerImplTest, + OfferNotificationIconShouldBeExpanded) { + AutofillOfferData offer = CreateTestFreeListingCouponOffer( + /*merchant_origins=*/{GURL("https://www.example.com")}, + /*promo_code=*/"FREEFALL1234"); + controller()->ShowOfferNotificationIfApplicable( + &offer, nullptr, /*should_show_icon_only=*/true, + /*expand_notification_icon=*/true); + + EXPECT_TRUE(controller()->ShouldIconExpand()); +} } // namespace autofill
diff --git a/chrome/browser/ui/browser_element_identifiers.cc b/chrome/browser/ui/browser_element_identifiers.cc index 0350725..8e1f172 100644 --- a/chrome/browser/ui/browser_element_identifiers.cc +++ b/chrome/browser/ui/browser_element_identifiers.cc
@@ -35,6 +35,7 @@ DEFINE_ELEMENT_IDENTIFIER_VALUE(kLocationIconElementId); DEFINE_ELEMENT_IDENTIFIER_VALUE(kMediaButtonElementId); DEFINE_ELEMENT_IDENTIFIER_VALUE(kNewTabButtonElementId); +DEFINE_ELEMENT_IDENTIFIER_VALUE(kOfferNotificationChipElementId); DEFINE_ELEMENT_IDENTIFIER_VALUE(kOmniboxElementId); DEFINE_ELEMENT_IDENTIFIER_VALUE(kPasswordsOmniboxKeyIconElementId); DEFINE_ELEMENT_IDENTIFIER_VALUE(kPriceInsightsChipElementId);
diff --git a/chrome/browser/ui/browser_element_identifiers.h b/chrome/browser/ui/browser_element_identifiers.h index 32575f7..69368ec 100644 --- a/chrome/browser/ui/browser_element_identifiers.h +++ b/chrome/browser/ui/browser_element_identifiers.h
@@ -44,6 +44,7 @@ DECLARE_ELEMENT_IDENTIFIER_VALUE(kLocationIconElementId); DECLARE_ELEMENT_IDENTIFIER_VALUE(kMediaButtonElementId); DECLARE_ELEMENT_IDENTIFIER_VALUE(kNewTabButtonElementId); +DECLARE_ELEMENT_IDENTIFIER_VALUE(kOfferNotificationChipElementId); DECLARE_ELEMENT_IDENTIFIER_VALUE(kOmniboxElementId); DECLARE_ELEMENT_IDENTIFIER_VALUE(kPasswordsOmniboxKeyIconElementId); DECLARE_ELEMENT_IDENTIFIER_VALUE(kPriceInsightsChipElementId);
diff --git a/chrome/browser/ui/tabs/tab_style.cc b/chrome/browser/ui/tabs/tab_style.cc index 48bab03..38e9d32 100644 --- a/chrome/browser/ui/tabs/tab_style.cc +++ b/chrome/browser/ui/tabs/tab_style.cc
@@ -219,7 +219,7 @@ gfx::Insets ChromeRefresh2023TabStyle::GetContentsInsets() const { return gfx::Insets::TLBR( - kChromeRefreshTabVerticalPadding, + kChromeRefreshTabVerticalPadding + GetLayoutConstant(TAB_STRIP_PADDING), GetBottomCornerRadius() + kChromeRefreshTabHorizontalPadding, kChromeRefreshTabVerticalPadding + GetLayoutConstant(TAB_STRIP_PADDING), GetBottomCornerRadius() + kChromeRefreshTabHorizontalPadding);
diff --git a/chrome/browser/ui/views/autofill/payments/offer_notification_icon_view.cc b/chrome/browser/ui/views/autofill/payments/offer_notification_icon_view.cc index 105503fa..c41ad1d 100644 --- a/chrome/browser/ui/views/autofill/payments/offer_notification_icon_view.cc +++ b/chrome/browser/ui/views/autofill/payments/offer_notification_icon_view.cc
@@ -8,6 +8,7 @@ #include "chrome/app/vector_icons/vector_icons.h" #include "chrome/browser/ui/autofill/payments/offer_notification_bubble_controller.h" #include "chrome/browser/ui/browser_command_controller.h" +#include "chrome/browser/ui/browser_element_identifiers.h" #include "chrome/browser/ui/view_ids.h" #include "chrome/browser/ui/views/autofill/payments/offer_notification_bubble_views.h" #include "chrome/grit/generated_resources.h" @@ -18,8 +19,11 @@ #include "ui/base/l10n/l10n_util.h" #include "ui/base/metadata/metadata_impl_macros.h" #include "ui/gfx/paint_vector_icon.h" +#include "ui/views/view_class_properties.h" namespace autofill { +constexpr double kAnimationValueWhenLabelFullyShown = 0.5; +constexpr base::TimeDelta kLabelPersistDuration = base::Seconds(10.8); OfferNotificationIconView::OfferNotificationIconView( CommandUpdater* command_updater, @@ -30,6 +34,8 @@ icon_label_bubble_delegate, page_action_icon_delegate, "PaymentsOfferNotification") { + SetUpForInOutAnimation(); + SetProperty(views::kElementIdentifierKey, kOfferNotificationChipElementId); SetAccessibilityProperties( /*role*/ absl::nullopt, l10n_util::GetStringUTF16( @@ -56,9 +62,56 @@ bool command_enabled = SetCommandEnabled(controller && controller->IsIconVisible()); + + if (command_enabled) { + if (!GetVisible()) { + MaybeShowPageActionLabel(); + } + } else { + HidePageActionLabel(); + } SetVisible(command_enabled); } +void OfferNotificationIconView::MaybeShowPageActionLabel() { + OfferNotificationBubbleController* controller = GetController(); + if (!controller || !controller->ShouldIconExpand()) { + return; + } + should_extend_label_shown_duration_ = true; + AnimateIn(IDS_DISCOUNT_ICON_EXPANDED_TEXT); + SetAccessibilityProperties( + /*role*/ absl::nullopt, + l10n_util::GetStringUTF16( + IDS_AUTOFILL_OFFERS_REMINDER_ICON_TOOLTIP_TEXT)); +} + +void OfferNotificationIconView::HidePageActionLabel() { + UnpauseAnimation(); + ResetSlideAnimation(false); +} + +void OfferNotificationIconView::AnimationProgressed( + const gfx::Animation* animation) { + PageActionIconView::AnimationProgressed(animation); + // When the label is fully revealed, pause the animation for + // kLabelPersistDuration before resuming the animation and allowing the label + // to animate out. This is currently set to show for 12s including the in/out + // animation. + // TODO(crbug.com/1314206): This approach of inspecting the animation progress + // to extend the animation duration is quite hacky. This should be removed and + // the IconLabelBubbleView API expanded to support a finer level of control. + if (should_extend_label_shown_duration_ && + GetAnimationValue() >= kAnimationValueWhenLabelFullyShown) { + should_extend_label_shown_duration_ = false; + PauseAnimation(); + animate_out_timer_.Start( + FROM_HERE, kLabelPersistDuration, + base::BindRepeating(&OfferNotificationIconView::UnpauseAnimation, + base::Unretained(this))); + } +} + void OfferNotificationIconView::OnExecuting( PageActionIconView::ExecuteSource execute_source) {} @@ -68,6 +121,11 @@ : kLocalOfferFlippedIcon; } +const std::u16string& OfferNotificationIconView::GetIconLabelForTesting() + const { + return label()->GetText(); +} + OfferNotificationBubbleController* OfferNotificationIconView::GetController() const { return OfferNotificationBubbleController::Get(GetWebContents());
diff --git a/chrome/browser/ui/views/autofill/payments/offer_notification_icon_view.h b/chrome/browser/ui/views/autofill/payments/offer_notification_icon_view.h index 407c4ed..74806d4d 100644 --- a/chrome/browser/ui/views/autofill/payments/offer_notification_icon_view.h +++ b/chrome/browser/ui/views/autofill/payments/offer_notification_icon_view.h
@@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_UI_VIEWS_AUTOFILL_PAYMENTS_OFFER_NOTIFICATION_ICON_VIEW_H_ #define CHROME_BROWSER_UI_VIEWS_AUTOFILL_PAYMENTS_OFFER_NOTIFICATION_ICON_VIEW_H_ +#include "base/timer/timer.h" #include "chrome/browser/ui/views/page_action/page_action_icon_view.h" #include "ui/base/metadata/metadata_header_macros.h" @@ -32,6 +33,8 @@ views::BubbleDialogDelegate* GetBubble() const override; void UpdateImpl() override; + const std::u16string& GetIconLabelForTesting() const; + protected: // PageActionIconView: void OnExecuting(PageActionIconView::ExecuteSource execute_source) override; @@ -39,6 +42,20 @@ private: OfferNotificationBubbleController* GetController() const; + // IconLabelBubbleView: + void AnimationProgressed(const gfx::Animation* animation) override; + + // Show page action label if it meets the requirements. + void MaybeShowPageActionLabel(); + // Hides the page action label. + void HidePageActionLabel(); + // Animates out the price tracking icon label after a fixed period of time. + // This keeps the label visible for long enough to give users an opportunity + // to read the label text. + base::RetainingOneShotTimer animate_out_timer_; + // Boolean that tracks whether we should extend the duration for which the + // label is shown when it animates in. + bool should_extend_label_shown_duration_ = false; }; } // namespace autofill
diff --git a/chrome/browser/ui/views/autofill/payments/offer_notification_icon_view_browsertest.cc b/chrome/browser/ui/views/autofill/payments/offer_notification_icon_view_browsertest.cc new file mode 100644 index 0000000..d6eab19 --- /dev/null +++ b/chrome/browser/ui/views/autofill/payments/offer_notification_icon_view_browsertest.cc
@@ -0,0 +1,133 @@ +// 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/autofill/chrome_autofill_client.h" +#include "chrome/browser/ui/browser_element_identifiers.h" +#include "chrome/browser/ui/page_action/page_action_icon_type.h" +#include "chrome/browser/ui/test/test_browser_ui.h" +#include "chrome/browser/ui/views/autofill/payments/offer_notification_icon_view.h" +#include "chrome/browser/ui/views/frame/browser_view.h" +#include "chrome/browser/ui/views/location_bar/location_bar_view.h" +#include "chrome/browser/ui/views/toolbar/toolbar_view.h" +#include "chrome/grit/generated_resources.h" +#include "chrome/test/base/ui_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_offer_data.h" +#include "components/commerce/core/test_utils.h" +#include "components/strings/grit/components_strings.h" +#include "content/public/test/browser_test.h" +#include "ui/base/interaction/element_identifier.h" +#include "ui/base/interaction/element_tracker.h" +#include "ui/views/interaction/element_tracker_views.h" + +namespace autofill { + +namespace { +constexpr char kTestURL[] = "https://www.example.com"; +constexpr char kTestPromoCode[] = "FREEFALL1234"; + +AutofillOfferData CreateTestFreeListingCouponOffer( + const std::vector<GURL>& merchant_origins, + const std::string& promo_code) { + int64_t offer_id = 2468; + base::Time expiry = base::Time::Now() + base::Days(2); + autofill::DisplayStrings display_strings; + display_strings.value_prop_text = "5% off on shoes. Up to $50."; + display_strings.see_details_text = "See details"; + display_strings.usage_instructions_text = + "Click the promo code field at checkout to autofill it."; + return autofill::AutofillOfferData::FreeListingCouponOffer( + offer_id, expiry, merchant_origins, /*offer_details_url=*/GURL(), + display_strings, promo_code); +} +} // namespace + +class OfferNotificationIconViewBrowserTest : public UiBrowserTest { + public: + // UiBrowserTest: + void ShowUi(const std::string& name) override { + AutofillOfferData offer = CreateTestFreeListingCouponOffer( + /*merchant_origins=*/{GURL(kTestURL)}, kTestPromoCode); + auto* autofill_client = + ChromeAutofillClient::FromWebContentsForTesting(GetWebContents()); + + if (name == "show_offer_notification_icon_only") { + autofill_client->UpdateOfferNotification( + &offer, /*notification_has_been_shown=*/false, + /*expand_notification_icon=*/false); + } else if (name == "show_offer_notification_icon_expanded") { + autofill_client->UpdateOfferNotification( + &offer, /*notification_has_been_shown=*/false, + /*expand_notification_icon=*/true); + } + } + + bool VerifyUi() override { + auto* offer_notification_icon_view = GetIcon(); + if (!offer_notification_icon_view) { + return false; + } + EXPECT_EQ(offer_notification_icon_view->GetAccessibleName(), + l10n_util::GetStringUTF16( + IDS_AUTOFILL_OFFERS_REMINDER_ICON_TOOLTIP_TEXT)); + + std::string test_name = + testing::UnitTest::GetInstance()->current_test_info()->name(); + + if (test_name == "InvokeUi_show_offer_notification_icon_only") { + EXPECT_FALSE(offer_notification_icon_view->ShouldShowLabel()); + } else if (test_name == "InvokeUi_show_offer_notification_icon_expanded") { + WaitForIconToFinishAnimating(offer_notification_icon_view); + EXPECT_TRUE(offer_notification_icon_view->ShouldShowLabel()); + EXPECT_EQ(offer_notification_icon_view->GetIconLabelForTesting(), + l10n_util::GetStringUTF16(IDS_DISCOUNT_ICON_EXPANDED_TEXT)); + } + + return true; + } + + void WaitForUserDismissal() override {} + + protected: + content::WebContents* GetWebContents() { + return browser()->tab_strip_model()->GetActiveWebContents(); + } + + OfferNotificationIconView* GetIcon() { + const ui::ElementContext context = + views::ElementTrackerViews::GetContextForView(GetLocationBarView()); + views::View* matched_view = + views::ElementTrackerViews::GetInstance()->GetFirstMatchingView( + kOfferNotificationChipElementId, context); + + return matched_view + ? views::AsViewClass<OfferNotificationIconView>(matched_view) + : nullptr; + } + + void WaitForIconToFinishAnimating(OfferNotificationIconView* icon_view) { + while (icon_view->is_animating_label()) { + base::RunLoop().RunUntilIdle(); + } + } + + private: + BrowserView* GetBrowserView() { + return BrowserView::GetBrowserViewForBrowser(browser()); + } + + LocationBarView* GetLocationBarView() { + return GetBrowserView()->toolbar()->location_bar(); + } +}; + +IN_PROC_BROWSER_TEST_F(OfferNotificationIconViewBrowserTest, + InvokeUi_show_offer_notification_icon_only) { + ShowAndVerifyUi(); +} + +IN_PROC_BROWSER_TEST_F(OfferNotificationIconViewBrowserTest, + InvokeUi_show_offer_notification_icon_expanded) { + ShowAndVerifyUi(); +} +} // namespace autofill
diff --git a/chrome/browser/ui/views/editor_menu/BUILD.gn b/chrome/browser/ui/views/editor_menu/BUILD.gn index 2f8b2353..87d8b30 100644 --- a/chrome/browser/ui/views/editor_menu/BUILD.gn +++ b/chrome/browser/ui/views/editor_menu/BUILD.gn
@@ -23,6 +23,8 @@ sources = [ "editor_menu_chip_view.cc", "editor_menu_chip_view.h", + "editor_menu_textfield_view.cc", + "editor_menu_textfield_view.h", "editor_menu_view.cc", "editor_menu_view.h", ]
diff --git a/chrome/browser/ui/views/editor_menu/editor_menu_textfield_view.cc b/chrome/browser/ui/views/editor_menu/editor_menu_textfield_view.cc new file mode 100644 index 0000000..c2a6c6a --- /dev/null +++ b/chrome/browser/ui/views/editor_menu/editor_menu_textfield_view.cc
@@ -0,0 +1,101 @@ +// 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/editor_menu/editor_menu_textfield_view.h" + +#include <algorithm> +#include <memory> + +#include "base/memory/raw_ptr.h" +#include "components/vector_icons/vector_icons.h" +#include "ui/base/metadata/metadata_impl_macros.h" +#include "ui/base/models/image_model.h" +#include "ui/chromeos/styles/cros_tokens_color_mappings.h" +#include "ui/color/color_id.h" +#include "ui/gfx/geometry/insets.h" +#include "ui/views/accessibility/view_accessibility.h" +#include "ui/views/background.h" +#include "ui/views/border.h" +#include "ui/views/controls/button/image_button.h" +#include "ui/views/controls/textfield/textfield.h" +#include "ui/views/layout/box_layout.h" +#include "ui/views/layout/fill_layout.h" +#include "ui/views/view.h" +#include "ui/views/view_class_properties.h" +#include "ui/views/widget/widget.h" + +namespace chromeos::editor_menu { + +namespace { + +constexpr char16_t kContainerTitle[] = u"Editor Menu Textfield"; + +constexpr int kConatinerHeightDip = 30; +constexpr int kBackgroundRadiusDip = 8; +constexpr gfx::Insets kContainerInsets = gfx::Insets::TLBR(0, 16, 0, 6); +constexpr int kTextIconSpacingDip = 8; +constexpr int kButtonSizeDip = 32; + +} // namespace + +EditorMenuTextfieldView::EditorMenuTextfieldView() = default; +EditorMenuTextfieldView::~EditorMenuTextfieldView() = default; + +void EditorMenuTextfieldView::AddedToWidget() { + // Only initialize the view after it is added to a widget. + InitLayout(); +} + +int EditorMenuTextfieldView::GetHeightForWidth(int width) const { + return kConatinerHeightDip; +} + +void EditorMenuTextfieldView::GetAccessibleNodeData(ui::AXNodeData* node_data) { + node_data->role = ax::mojom::Role::kDialog; + node_data->SetName(kContainerTitle); +} + +void EditorMenuTextfieldView::ContentsChanged( + views::Textfield* sender, + const std::u16string& new_contents) { + arrow_button_->SetVisible(!new_contents.empty()); +} + +void EditorMenuTextfieldView::InitLayout() { + SetBackground(views::CreateThemedRoundedRectBackground( + static_cast<ui::ColorId>(cros_tokens::kCrosSysSystemBaseElevated), + kBackgroundRadiusDip)); + auto* layout = SetLayoutManager(std::make_unique<views::BoxLayout>( + views::BoxLayout::Orientation::kHorizontal, kContainerInsets, + kTextIconSpacingDip)); + layout->set_cross_axis_alignment( + views::BoxLayout::CrossAxisAlignment::kCenter); + + textfield_ = AddChildView(std::make_unique<views::Textfield>()); + textfield_->SetAccessibleName(kContainerTitle); + textfield_->set_controller(this); + textfield_->SetBorder(views::NullBorder()); + textfield_->SetBackgroundColor(SK_ColorTRANSPARENT); + textfield_->SetTextInputType(ui::TEXT_INPUT_TYPE_TEXT); + textfield_->SetPlaceholderText(kContainerTitle); + layout->SetFlexForView(textfield_, 1, /*use_min_size=*/true); + + auto* button_container = AddChildView(std::make_unique<views::View>()); + button_container->SetLayoutManager(std::make_unique<views::FillLayout>()); + button_container->SetPreferredSize(gfx::Size(kButtonSizeDip, kButtonSizeDip)); + + arrow_button_ = + button_container->AddChildView(std::make_unique<views::ImageButton>()); + arrow_button_->SetAccessibleName(kContainerTitle); + arrow_button_->SetTooltipText(kContainerTitle); + arrow_button_->SetImageModel( + views::Button::ButtonState::STATE_NORMAL, + ui::ImageModel::FromVectorIcon(vector_icons::kProductIcon)); + arrow_button_->SetVisible(false); +} + +BEGIN_METADATA(EditorMenuTextfieldView, views::View) +END_METADATA + +} // namespace chromeos::editor_menu
diff --git a/chrome/browser/ui/views/editor_menu/editor_menu_textfield_view.h b/chrome/browser/ui/views/editor_menu/editor_menu_textfield_view.h new file mode 100644 index 0000000..858cc61 --- /dev/null +++ b/chrome/browser/ui/views/editor_menu/editor_menu_textfield_view.h
@@ -0,0 +1,60 @@ +// 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_EDITOR_MENU_EDITOR_MENU_TEXTFIELD_VIEW_H_ +#define CHROME_BROWSER_UI_VIEWS_EDITOR_MENU_EDITOR_MENU_TEXTFIELD_VIEW_H_ + +#include <string> + +#include "base/functional/callback_forward.h" +#include "base/memory/raw_ptr.h" +#include "ui/base/metadata/metadata_header_macros.h" +#include "ui/views/controls/textfield/textfield_controller.h" +#include "ui/views/view.h" + +namespace views { + +class ImageButton; + +} // namespace views + +namespace chromeos::editor_menu { + +// EditorMenuTextfieldView consists of a Textfield and an icon. The Textfiled is +// for inputting text. The icon is a right arrow indicate to send. +class EditorMenuTextfieldView : public views::View, + public views::TextfieldController { + public: + METADATA_HEADER(EditorMenuTextfieldView); + + EditorMenuTextfieldView(); + EditorMenuTextfieldView(const EditorMenuTextfieldView&) = delete; + EditorMenuTextfieldView& operator=(const EditorMenuTextfieldView&) = delete; + ~EditorMenuTextfieldView() override; + + views::ImageButton* CreateArrowButton( + const base::RepeatingClosure& button_callback); + + views::ImageButton* arrow_button() { return arrow_button_; } + views::Textfield* textfield() { return textfield_; } + + // views::View: + void AddedToWidget() override; + int GetHeightForWidth(int width) const override; + void GetAccessibleNodeData(ui::AXNodeData* node_data) override; + + // views::TextfieldController: + void ContentsChanged(views::Textfield* sender, + const std::u16string& new_contents) override; + + private: + void InitLayout(); + + raw_ptr<views::Textfield> textfield_ = nullptr; + raw_ptr<views::ImageButton> arrow_button_ = nullptr; +}; + +} // namespace chromeos::editor_menu + +#endif // CHROME_BROWSER_UI_VIEWS_EDITOR_MENU_EDITOR_MENU_TEXTFIELD_VIEW_H_
diff --git a/chrome/browser/ui/views/editor_menu/editor_menu_view.cc b/chrome/browser/ui/views/editor_menu/editor_menu_view.cc index 4add1a06..0d6723fb 100644 --- a/chrome/browser/ui/views/editor_menu/editor_menu_view.cc +++ b/chrome/browser/ui/views/editor_menu/editor_menu_view.cc
@@ -11,6 +11,7 @@ #include "base/functional/callback_forward.h" #include "base/memory/raw_ptr.h" #include "chrome/browser/ui/views/editor_menu/editor_menu_chip_view.h" +#include "chrome/browser/ui/views/editor_menu/editor_menu_textfield_view.h" #include "components/vector_icons/vector_icons.h" #include "ui/base/metadata/metadata_impl_macros.h" #include "ui/chromeos/styles/cros_tokens_color_mappings.h" @@ -47,6 +48,9 @@ gfx::Insets::TLBR(0, 8, kChipsContainerVerticalSpacingDip, 0); constexpr gfx::Insets kChipsContainerInsets = gfx::Insets::TLBR(0, 8, 0, 8); +constexpr gfx::Insets kTextfieldContainerInsets = + gfx::Insets::TLBR(0, 16, 10, 16); + // Spacing between this view and the anchor view (context menu). constexpr int kMarginDip = 8; @@ -121,6 +125,7 @@ AddTitleContainer(); AddChipsContainer(); + AddTextfield(); } void EditorMenuView::AddTitleContainer() { @@ -181,6 +186,15 @@ } } +void EditorMenuView::AddTextfield() { + textfield_ = AddChildView(std::make_unique<EditorMenuTextfieldView>()); + textfield_->SetProperty(views::kMarginsKey, kTextfieldContainerInsets); + + int width = kContainerMinWidthDip - kTextfieldContainerInsets.width(); + int height = textfield_->GetHeightForWidth(width); + textfield_->SetPreferredSize(gfx::Size(width, height)); +} + BEGIN_METADATA(EditorMenuView, views::View) END_METADATA
diff --git a/chrome/browser/ui/views/editor_menu/editor_menu_view.h b/chrome/browser/ui/views/editor_menu/editor_menu_view.h index fdf7710..fd9f70e 100644 --- a/chrome/browser/ui/views/editor_menu/editor_menu_view.h +++ b/chrome/browser/ui/views/editor_menu/editor_menu_view.h
@@ -18,6 +18,7 @@ namespace chromeos::editor_menu { class EditorMenuChipView; +class EditorMenuTextfieldView; // A bubble style view to show Editor Menu. class EditorMenuView : public views::View { @@ -43,14 +44,16 @@ void InitLayout(); void AddTitleContainer(); void AddChipsContainer(); + void AddTextfield(); // Containing title, badge, and icons. raw_ptr<views::View> title_container_ = nullptr; // Containing chips. raw_ptr<views::FlexLayoutView> chips_container_ = nullptr; - std::vector<raw_ptr<EditorMenuChipView>> chips_; + + raw_ptr<EditorMenuTextfieldView> textfield_ = nullptr; }; } // namespace chromeos::editor_menu
diff --git a/chrome/browser/ui/views/frame/tab_strip_region_view.cc b/chrome/browser/ui/views/frame/tab_strip_region_view.cc index 3902d97..7577f7e 100644 --- a/chrome/browser/ui/views/frame/tab_strip_region_view.cc +++ b/chrome/browser/ui/views/frame/tab_strip_region_view.cc
@@ -161,6 +161,15 @@ l10n_util::GetStringUTF16(IDS_TOOLTIP_NEW_TAB)); new_tab_button_->SetAccessibleName( l10n_util::GetStringUTF16(IDS_ACCNAME_NEWTAB)); + + // TODO(crbug.com/1052397): Revisit the macro expression once build flag + // switch of lacros-chrome is complete. +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) + // The New Tab Button can be middle-clicked on Linux. + new_tab_button_->SetTriggerableEventFlags( + new_tab_button_->GetTriggerableEventFlags() | + ui::EF_MIDDLE_MOUSE_BUTTON); +#endif } reserved_grab_handle_space_ =
diff --git a/chrome/browser/ui/views/side_panel/history_clusters/history_clusters_side_panel_coordinator.cc b/chrome/browser/ui/views/side_panel/history_clusters/history_clusters_side_panel_coordinator.cc index 68a2aeb..06bac14 100644 --- a/chrome/browser/ui/views/side_panel/history_clusters/history_clusters_side_panel_coordinator.cc +++ b/chrome/browser/ui/views/side_panel/history_clusters/history_clusters_side_panel_coordinator.cc
@@ -55,16 +55,11 @@ void HistoryClustersSidePanelCoordinator::CreateAndRegisterEntry( SidePanelRegistry* global_registry) { - const bool rename_journeys = - base::FeatureList::IsEnabled(history_clusters::kRenameJourneys); global_registry->Register(std::make_unique<SidePanelEntry>( SidePanelEntry::Id::kHistoryClusters, - l10n_util::GetStringUTF16(rename_journeys - ? IDS_HISTORY_TITLE - : IDS_HISTORY_CLUSTERS_JOURNEYS_TAB_LABEL), - ui::ImageModel::FromVectorIcon( - rename_journeys ? kHistoryIcon : kJourneysIcon, ui::kColorIcon, - /*icon_size=*/16), + l10n_util::GetStringUTF16(IDS_HISTORY_CLUSTERS_JOURNEYS_TAB_LABEL), + ui::ImageModel::FromVectorIcon(kJourneysIcon, ui::kColorIcon, + /*icon_size=*/16), base::BindRepeating( &HistoryClustersSidePanelCoordinator::CreateHistoryClustersWebView, base::Unretained(this)), @@ -120,9 +115,12 @@ auto* browser = &GetBrowser(); auto* global_registry = SidePanelCoordinator::GetGlobalSidePanelRegistry(browser); - if (IsSupported(browser->profile())) { - HistoryClustersSidePanelCoordinator::GetOrCreateForBrowser(browser) - ->CreateAndRegisterEntry(global_registry); + if (browser->profile()->GetPrefs()->GetBoolean( + history_clusters::prefs::kVisible)) { + if (IsSupported(browser->profile())) { + HistoryClustersSidePanelCoordinator::GetOrCreateForBrowser(browser) + ->CreateAndRegisterEntry(global_registry); + } } else { global_registry->Deregister( SidePanelEntry::Key(SidePanelEntry::Id::kHistoryClusters)); @@ -154,7 +152,7 @@ if (history_clusters_ui_) query = history_clusters_ui_->GetLastQueryIssued(); - return query.empty() ? GURL(history_clusters::GetChromeUIHistoryClustersURL()) + return query.empty() ? GURL(history_clusters::kChromeUIHistoryClustersURL) : history_clusters::GetFullJourneysUrlForQuery(query); }
diff --git a/chrome/browser/ui/views/tabs/new_tab_button.cc b/chrome/browser/ui/views/tabs/new_tab_button.cc index 19841c2..29cf11f 100644 --- a/chrome/browser/ui/views/tabs/new_tab_button.cc +++ b/chrome/browser/ui/views/tabs/new_tab_button.cc
@@ -60,12 +60,6 @@ NewTabButton::NewTabButton(TabStrip* tab_strip, PressedCallback callback) : views::ImageButton(std::move(callback)), tab_strip_(tab_strip) { SetAnimateOnStateChange(true); -// TODO(crbug.com/1052397): Revisit the macro expression once build flag switch -// of lacros-chrome is complete. -#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS) - SetTriggerableEventFlags(GetTriggerableEventFlags() | - ui::EF_MIDDLE_MOUSE_BUTTON); -#endif foreground_frame_active_color_id_ = kColorNewTabButtonForegroundFrameActive; foreground_frame_inactive_color_id_ =
diff --git a/chrome/browser/ui/views/tabs/tab_container_impl.cc b/chrome/browser/ui/views/tabs/tab_container_impl.cc index e820567..8e90576 100644 --- a/chrome/browser/ui/views/tabs/tab_container_impl.cc +++ b/chrome/browser/ui/views/tabs/tab_container_impl.cc
@@ -1116,8 +1116,7 @@ ExitTabClosingMode(); gfx::Rect bounds = GetTabAtModelIndex(model_index)->bounds(); - bounds.set_height(GetLayoutConstant(TAB_HEIGHT)); - bounds.set_y(GetLayoutConstant(TAB_STRIP_PADDING)); + bounds.set_height(GetLayoutConstant(TAB_STRIP_HEIGHT)); // Adjust the starting bounds of the new tab. const int tab_overlap = TabStyle::Get()->GetTabOverlap(); @@ -1425,15 +1424,6 @@ const gfx::Point point_in_tab_coords = View::ConvertPointToTarget(this, tab, point_in_tabstrip_coords); - - if (point_in_tab_coords.y() < tab->bounds().y() && - (GetWidget()->IsMaximized() || GetWidget()->IsFullscreen())) { - // In maximized and fullscreen windows, tab hit tests should reach the top - // of the screen to make it easier to click on tabs quickly (Fitt's law). - return tab->HitTestPoint( - gfx::Point(point_in_tab_coords.x(), tab->bounds().y())); - } - return tab->HitTestPoint(point_in_tab_coords); }
diff --git a/chrome/browser/ui/views/tabs/tab_strip_layout.cc b/chrome/browser/ui/views/tabs/tab_strip_layout.cc index bd5be99..af235c1 100644 --- a/chrome/browser/ui/views/tabs/tab_strip_layout.cc +++ b/chrome/browser/ui/views/tabs/tab_strip_layout.cc
@@ -140,8 +140,7 @@ std::vector<gfx::Rect> bounds; for (const TabWidthConstraints& tab : tabs) { const int tab_width = tab_sizer.CalculateTabWidth(tab); - bounds.emplace_back(next_x, GetLayoutConstant(TAB_STRIP_PADDING), tab_width, - layout_constants.tab_height); + bounds.emplace_back(next_x, 0, tab_width, layout_constants.tab_height); next_x += tab_width - layout_constants.tab_overlap; }
diff --git a/chrome/browser/ui/views/tabs/tab_strip_layout_helper.cc b/chrome/browser/ui/views/tabs/tab_strip_layout_helper.cc index a616868..c72f269f 100644 --- a/chrome/browser/ui/views/tabs/tab_strip_layout_helper.cc +++ b/chrome/browser/ui/views/tabs/tab_strip_layout_helper.cc
@@ -255,7 +255,7 @@ pinned_tab_count - 1)) : absl::nullopt; - TabLayoutConstants layout_constants = {GetLayoutConstant(TAB_HEIGHT), + TabLayoutConstants layout_constants = {GetLayoutConstant(TAB_STRIP_HEIGHT), TabStyle::Get()->GetTabOverlap()}; std::vector<TabWidthConstraints> tab_widths; for (int i = 0; i < static_cast<int>(slots_.size()); i++) {
diff --git a/chrome/browser/ui/views/tabs/tab_strip_layout_unittest.cc b/chrome/browser/ui/views/tabs/tab_strip_layout_unittest.cc index 5795f5f..6d68407 100644 --- a/chrome/browser/ui/views/tabs/tab_strip_layout_unittest.cc +++ b/chrome/browser/ui/views/tabs/tab_strip_layout_unittest.cc
@@ -8,7 +8,6 @@ #include <string> #include "base/strings/string_number_conversions.h" -#include "chrome/browser/ui/layout_constants.h" #include "chrome/browser/ui/tabs/tab_types.h" #include "chrome/browser/ui/views/tabs/tab_layout_state.h" #include "chrome/browser/ui/views/tabs/tab_width_constraints.h" @@ -102,7 +101,7 @@ EXPECT_EQ("100 100 100", TabWidthsAsString(bounds)); EXPECT_EQ("0 96 192", TabXPositionsAsString(bounds)); for (const auto& b : bounds) { - EXPECT_EQ(GetLayoutConstant(TAB_STRIP_PADDING), b.y()); + EXPECT_EQ(0, b.y()); EXPECT_EQ(kTabHeight, b.height()); } }
diff --git a/chrome/browser/ui/views/tabs/tab_style_views.cc b/chrome/browser/ui/views/tabs/tab_style_views.cc index b28e10e1..3b16107 100644 --- a/chrome/browser/ui/views/tabs/tab_style_views.cc +++ b/chrome/browser/ui/views/tabs/tab_style_views.cc
@@ -239,7 +239,8 @@ // Calculate the bounds of the actual path. const float left = aligned_bounds.x(); const float right = aligned_bounds.right(); - float tab_top = aligned_bounds.y(); + float tab_top = + aligned_bounds.y() + GetLayoutConstant(TAB_STRIP_PADDING) * scale; float tab_left = left + extension; float tab_right = right - extension; @@ -1154,16 +1155,25 @@ // The tab displays favicon animations that can emerge from the toolbar. The // interior clip needs to extend the entire height of the toolbar to support // this. Detached tab shapes do not need to respect this. - if (path_type != TabStyle::PathType::kInteriorClip || - path_type == TabStyle::PathType::kHitTest) { + if (path_type != TabStyle::PathType::kInteriorClip && + path_type != TabStyle::PathType::kHitTest) { tab_height -= GetLayoutConstant(TAB_STRIP_PADDING) * scale; } int left = aligned_bounds.x() + extension_corner_radius; - const int top = aligned_bounds.y(); + int top = aligned_bounds.y() + GetLayoutConstant(TAB_STRIP_PADDING) * scale; int right = aligned_bounds.right() - extension_corner_radius; const int bottom = top + tab_height; + // For maximized and fullscreen windows, extend the tab hit test to the top + // of the tab, encompassing the top padding. This makes it easy to click on + // tabs by moving the mouse to the top of the screen. + if (path_type == TabStyle::PathType::kHitTest && + (tab()->GetWidget()->IsMaximized() || + tab()->GetWidget()->IsFullscreen())) { + top -= GetLayoutConstant(TAB_STRIP_PADDING) * scale; + } + // if the size of the space for the path is smaller than the size of a // favicon or if we are building a path for the hit test, expand to take the // entire width of the separator margins AND the separator.
diff --git a/chrome/browser/ui/views/webauthn/authenticator_dialog_view_browsertest.cc b/chrome/browser/ui/views/webauthn/authenticator_dialog_view_browsertest.cc index d4917ab8..5aea1af 100644 --- a/chrome/browser/ui/views/webauthn/authenticator_dialog_view_browsertest.cc +++ b/chrome/browser/ui/views/webauthn/authenticator_dialog_view_browsertest.cc
@@ -124,6 +124,8 @@ // "Manage devices" button to be shown. device::FidoRequestHandlerBase::TransportAvailabilityInfo transport_availability; + transport_availability.request_type = + device::FidoRequestType::kGetAssertion; transport_availability.available_transports = { AuthenticatorTransport::kUsbHumanInterfaceDevice, AuthenticatorTransport::kHybrid}; @@ -171,7 +173,6 @@ // Test that the models decide to show the "Manage devices" button when a phone // is listed. // TODO(crbug.com/1474278): Re-enable this test -IN_PROC_BROWSER_TEST_F(AuthenticatorDialogViewTest, - DISABLED_InvokeUi_manage_devices) { +IN_PROC_BROWSER_TEST_F(AuthenticatorDialogViewTest, InvokeUi_manage_devices) { ShowAndVerifyUi(); }
diff --git a/chrome/browser/ui/webui/ash/settings/DIR_METADATA b/chrome/browser/ui/webui/ash/settings/DIR_METADATA new file mode 100644 index 0000000..a3b9d18 --- /dev/null +++ b/chrome/browser/ui/webui/ash/settings/DIR_METADATA
@@ -0,0 +1 @@ +mixins: "//chrome/browser/resources/ash/settings/COMMON_METADATA"
diff --git a/chrome/browser/ui/webui/ash/settings/OWNERS b/chrome/browser/ui/webui/ash/settings/OWNERS new file mode 100644 index 0000000..e4b1c84e --- /dev/null +++ b/chrome/browser/ui/webui/ash/settings/OWNERS
@@ -0,0 +1,10 @@ +file://chrome/browser/resources/ash/settings/OWNERS + +per-file account_manager_*=file://chromeos/ash/components/account_manager/OWNERS +per-file apps_section*=file://chrome/browser/ui/webui/app_management/OWNERS +per-file device_*=file://chrome/browser/resources/ash/settings/device_page/OWNERS +per-file files_section*=file://ui/file_manager/OWNERS +per-file kerberos_*=file://chrome/browser/ash/kerberos/OWNERS +per-file languages_section*=file://chrome/browser/resources/ash/settings/os_languages_page/OWNERS +per-file multidevice_handler*=file://chromeos/ash/components/multidevice/OWNERS +per-file printing_*,cups_*=file://chrome/browser/resources/ash/settings/os_printing_page/OWNERS
diff --git a/chrome/browser/ui/webui/settings/ash/BUILD.gn b/chrome/browser/ui/webui/ash/settings/test_support/BUILD.gn similarity index 100% rename from chrome/browser/ui/webui/settings/ash/BUILD.gn rename to chrome/browser/ui/webui/ash/settings/test_support/BUILD.gn
diff --git a/chrome/browser/ui/webui/settings/ash/os_settings_browser_test_mixin.cc b/chrome/browser/ui/webui/ash/settings/test_support/os_settings_browser_test_mixin.cc similarity index 97% rename from chrome/browser/ui/webui/settings/ash/os_settings_browser_test_mixin.cc rename to chrome/browser/ui/webui/ash/settings/test_support/os_settings_browser_test_mixin.cc index cdeb24c..d292545d 100644 --- a/chrome/browser/ui/webui/settings/ash/os_settings_browser_test_mixin.cc +++ b/chrome/browser/ui/webui/ash/settings/test_support/os_settings_browser_test_mixin.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/webui/settings/ash/os_settings_browser_test_mixin.h" +#include "chrome/browser/ui/webui/ash/settings/test_support/os_settings_browser_test_mixin.h" #include <memory> #include <string>
diff --git a/chrome/browser/ui/webui/settings/ash/os_settings_browser_test_mixin.h b/chrome/browser/ui/webui/ash/settings/test_support/os_settings_browser_test_mixin.h similarity index 93% rename from chrome/browser/ui/webui/settings/ash/os_settings_browser_test_mixin.h rename to chrome/browser/ui/webui/ash/settings/test_support/os_settings_browser_test_mixin.h index 45c2d9f6..1638630d 100644 --- a/chrome/browser/ui/webui/settings/ash/os_settings_browser_test_mixin.h +++ b/chrome/browser/ui/webui/ash/settings/test_support/os_settings_browser_test_mixin.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 CHROME_BROWSER_UI_WEBUI_SETTINGS_ASH_OS_SETTINGS_BROWSER_TEST_MIXIN_H_ -#define CHROME_BROWSER_UI_WEBUI_SETTINGS_ASH_OS_SETTINGS_BROWSER_TEST_MIXIN_H_ +#ifndef CHROME_BROWSER_UI_WEBUI_ASH_SETTINGS_TEST_SUPPORT_OS_SETTINGS_BROWSER_TEST_MIXIN_H_ +#define CHROME_BROWSER_UI_WEBUI_ASH_SETTINGS_TEST_SUPPORT_OS_SETTINGS_BROWSER_TEST_MIXIN_H_ #include "chrome/browser/chrome_content_browser_client.h" #include "chrome/test/base/mixin_based_in_process_browser_test.h" @@ -114,4 +114,4 @@ } // namespace ash::settings -#endif // CHROME_BROWSER_UI_WEBUI_SETTINGS_ASH_OS_SETTINGS_BROWSER_TEST_MIXIN_H_ +#endif // CHROME_BROWSER_UI_WEBUI_ASH_SETTINGS_TEST_SUPPORT_OS_SETTINGS_BROWSER_TEST_MIXIN_H_
diff --git a/chrome/browser/ui/webui/settings/ash/os_settings_lock_screen_browser_test_base.cc b/chrome/browser/ui/webui/ash/settings/test_support/os_settings_lock_screen_browser_test_base.cc similarity index 96% rename from chrome/browser/ui/webui/settings/ash/os_settings_lock_screen_browser_test_base.cc rename to chrome/browser/ui/webui/ash/settings/test_support/os_settings_lock_screen_browser_test_base.cc index 51806cf60..7e67d23 100644 --- a/chrome/browser/ui/webui/settings/ash/os_settings_lock_screen_browser_test_base.cc +++ b/chrome/browser/ui/webui/ash/settings/test_support/os_settings_lock_screen_browser_test_base.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/webui/settings/ash/os_settings_lock_screen_browser_test_base.h" +#include "chrome/browser/ui/webui/ash/settings/test_support/os_settings_lock_screen_browser_test_base.h" namespace ash::settings {
diff --git a/chrome/browser/ui/webui/settings/ash/os_settings_lock_screen_browser_test_base.h b/chrome/browser/ui/webui/ash/settings/test_support/os_settings_lock_screen_browser_test_base.h similarity index 86% rename from chrome/browser/ui/webui/settings/ash/os_settings_lock_screen_browser_test_base.h rename to chrome/browser/ui/webui/ash/settings/test_support/os_settings_lock_screen_browser_test_base.h index 5ea37a7..bd96ac00 100644 --- a/chrome/browser/ui/webui/settings/ash/os_settings_lock_screen_browser_test_base.h +++ b/chrome/browser/ui/webui/ash/settings/test_support/os_settings_lock_screen_browser_test_base.h
@@ -2,13 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_WEBUI_SETTINGS_ASH_OS_SETTINGS_LOCK_SCREEN_BROWSER_TEST_BASE_H_ -#define CHROME_BROWSER_UI_WEBUI_SETTINGS_ASH_OS_SETTINGS_LOCK_SCREEN_BROWSER_TEST_BASE_H_ +#ifndef CHROME_BROWSER_UI_WEBUI_ASH_SETTINGS_TEST_SUPPORT_OS_SETTINGS_LOCK_SCREEN_BROWSER_TEST_BASE_H_ +#define CHROME_BROWSER_UI_WEBUI_ASH_SETTINGS_TEST_SUPPORT_OS_SETTINGS_LOCK_SCREEN_BROWSER_TEST_BASE_H_ -#include "ash/constants/ash_features.h" #include "chrome/browser/ash/login/test/cryptohome_mixin.h" #include "chrome/browser/ash/login/test/logged_in_user_mixin.h" -#include "chrome/browser/ui/webui/settings/ash/os_settings_browser_test_mixin.h" +#include "chrome/browser/ui/webui/ash/settings/test_support/os_settings_browser_test_mixin.h" #include "chrome/test/base/mixin_based_in_process_browser_test.h" #include "chrome/test/data/webui/settings/chromeos/test_api.test-mojom-test-utils.h" #include "components/account_id/account_id.h" @@ -73,4 +72,4 @@ } // namespace ash::settings -#endif // CHROME_BROWSER_UI_WEBUI_SETTINGS_ASH_OS_SETTINGS_LOCK_SCREEN_BROWSER_TEST_BASE_H_ +#endif // CHROME_BROWSER_UI_WEBUI_ASH_SETTINGS_TEST_SUPPORT_OS_SETTINGS_LOCK_SCREEN_BROWSER_TEST_BASE_H_
diff --git a/chrome/browser/ui/webui/cr_components/history_clusters/history_clusters_util.cc b/chrome/browser/ui/webui/cr_components/history_clusters/history_clusters_util.cc index 8032a3f0..b69822c1 100644 --- a/chrome/browser/ui/webui/cr_components/history_clusters/history_clusters_util.cc +++ b/chrome/browser/ui/webui/cr_components/history_clusters/history_clusters_util.cc
@@ -11,7 +11,6 @@ #include "chrome/grit/generated_resources.h" #include "components/history/core/common/pref_names.h" #include "components/history_clusters/core/config.h" -#include "components/history_clusters/core/features.h" #include "components/history_clusters/core/history_clusters_prefs.h" #include "components/history_clusters/core/history_clusters_service.h" #include "components/page_image_service/features.h" @@ -34,18 +33,11 @@ "isHistoryClustersEnabled", history_clusters_service && history_clusters_service->is_journeys_feature_flag_enabled()); - const bool rename_journeys = - base::FeatureList::IsEnabled(history_clusters::kRenameJourneys); - source->AddBoolean(kRenameJourneysKey, rename_journeys); - const bool journeys_is_managed = - prefs->IsManagedPreference(history_clusters::prefs::kVisible); - // When history_clusters::kRenameJourneys is enabled, history clusters are - // always visible unless the visibility prefs is set to false by policy. source->AddBoolean(kIsHistoryClustersVisibleKey, - prefs->GetBoolean(history_clusters::prefs::kVisible) || - (rename_journeys && !journeys_is_managed)); - source->AddBoolean(kIsHistoryClustersVisibleManagedByPolicyKey, - journeys_is_managed); + prefs->GetBoolean(history_clusters::prefs::kVisible)); + source->AddBoolean( + kIsHistoryClustersVisibleManagedByPolicyKey, + prefs->IsManagedPreference(history_clusters::prefs::kVisible)); source->AddBoolean("isHistoryClustersDebug", history_clusters::GetConfig().user_visible_debug); source->AddBoolean( @@ -86,15 +78,5 @@ {"toggleButtonLabelMore", IDS_HISTORY_CLUSTERS_SHOW_MORE_BUTTON_LABEL}, }; source->AddLocalizedStrings(kHistoryClustersStrings); - - if (rename_journeys) { - source->AddLocalizedString("historyClustersSearchPrompt", - IDS_HISTORY_SEARCH_PROMPT); - source->AddLocalizedString("historyClustersTabLabel", - IDS_HISTORY_CLUSTERS_BY_GROUP_TAB_LABEL); - source->AddLocalizedString("historyListTabLabel", - IDS_HISTORY_CLUSTERS_BY_DATE_TAB_LABEL); - } - return; }
diff --git a/chrome/browser/ui/webui/cr_components/history_clusters/history_clusters_util.h b/chrome/browser/ui/webui/cr_components/history_clusters/history_clusters_util.h index 18354cd..0e18a85 100644 --- a/chrome/browser/ui/webui/cr_components/history_clusters/history_clusters_util.h +++ b/chrome/browser/ui/webui/cr_components/history_clusters/history_clusters_util.h
@@ -8,7 +8,6 @@ constexpr char kIsHistoryClustersVisibleKey[] = "isHistoryClustersVisible"; constexpr char kIsHistoryClustersVisibleManagedByPolicyKey[] = "isHistoryClustersVisibleManagedByPolicy"; -constexpr char kRenameJourneysKey[] = "renameJourneys"; class Profile;
diff --git a/chrome/browser/ui/webui/extensions/extensions_ui.cc b/chrome/browser/ui/webui/extensions/extensions_ui.cc index 625352c..6eedc81 100644 --- a/chrome/browser/ui/webui/extensions/extensions_ui.cc +++ b/chrome/browser/ui/webui/extensions/extensions_ui.cc
@@ -120,6 +120,12 @@ IDS_EXTENSIONS_EDIT_SITE_PERMISSIONS_CUSTOMIZE_PER_EXTENSION}, {"editSitePermissionsRestrictExtensions", IDS_EXTENSIONS_EDIT_SITE_PERMISSIONS_RESTRICT_EXTENSIONS}, + {"enableToggleTooltipDisabled", + IDS_EXTENSIONS_ENABLE_TOGGLE_TOOLTIP_DISABLED}, + {"enableToggleTooltipEnabled", + IDS_EXTENSIONS_ENABLE_TOGGLE_TOOLTIP_ENABLED}, + {"enableToggleTooltipEnabledWithSiteAccess", + IDS_EXTENSIONS_ENABLE_TOGGLE_TOOLTIP_ENABLED_WITH_SITE_ACCESS}, {"errorsPageHeading", IDS_EXTENSIONS_ERROR_PAGE_HEADING}, {"clearActivities", IDS_EXTENSIONS_CLEAR_ACTIVITIES}, {"clearAll", IDS_EXTENSIONS_ERROR_CLEAR_ALL},
diff --git a/chrome/browser/ui/webui/history/history_ui.cc b/chrome/browser/ui/webui/history/history_ui.cc index af184ef..14db0f47 100644 --- a/chrome/browser/ui/webui/history/history_ui.cc +++ b/chrome/browser/ui/webui/history/history_ui.cc
@@ -218,18 +218,12 @@ base::Value::Dict update; update.Set(kIsUserSignedInKey, IsUserSignedIn(profile)); - - const bool rename_journeys = - base::FeatureList::IsEnabled(history_clusters::kRenameJourneys); - const bool is_managed = profile->GetPrefs()->IsManagedPreference( - history_clusters::prefs::kVisible); - // When history_clusters::kRenameJourneys is enabled, history clusters are - // always visible unless the visibility prefs is set to false by policy. update.Set( kIsHistoryClustersVisibleKey, - profile->GetPrefs()->GetBoolean(history_clusters::prefs::kVisible) || - (rename_journeys && !is_managed)); - update.Set(kIsHistoryClustersVisibleManagedByPolicyKey, is_managed); + profile->GetPrefs()->GetBoolean(history_clusters::prefs::kVisible)); + update.Set(kIsHistoryClustersVisibleManagedByPolicyKey, + profile->GetPrefs()->IsManagedPreference( + history_clusters::prefs::kVisible)); content::WebUIDataSource::Update(profile, chrome::kChromeUIHistoryHost, std::move(update));
diff --git a/chrome/browser/ui/webui/history_clusters/history_clusters_handler_browsertest.cc b/chrome/browser/ui/webui/history_clusters/history_clusters_handler_browsertest.cc index 504d0ad..f542a2c 100644 --- a/chrome/browser/ui/webui/history_clusters/history_clusters_handler_browsertest.cc +++ b/chrome/browser/ui/webui/history_clusters/history_clusters_handler_browsertest.cc
@@ -31,7 +31,7 @@ void SetUpOnMainThread() override { EXPECT_TRUE(ui_test_utils::NavigateToURL( - browser(), GURL(GetChromeUIHistoryClustersURL()))); + browser(), GURL(kChromeUIHistoryClustersURL))); EXPECT_TRUE(content::WaitForLoadStop( browser()->tab_strip_model()->GetActiveWebContents())); handler_ = browser()
diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.cc b/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.cc index 2a4c8676..c42edcb 100644 --- a/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.cc +++ b/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler.cc
@@ -170,7 +170,6 @@ most_visited->use_white_tile_icon = color_utils::IsDark(most_visited->background_color); most_visited->is_dark = !color_utils::IsDark(text_color); - most_visited->use_title_pill = false; theme->text_color = text_color; theme->is_dark = !color_utils::IsDark(text_color); theme->theme_realbox_icons = @@ -187,7 +186,6 @@ new_tab_page::mojom::NtpBackgroundImageSource::kThirdPartyTheme; } theme->is_custom_background = false; - most_visited->use_title_pill = false; auto theme_id = theme_service->GetThemeID(); background_image->url = GURL(base::StrCat( {"chrome-untrusted://theme/IDR_THEME_NTP_BACKGROUND?", theme_id}));
diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler_unittest.cc b/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler_unittest.cc index 1257100..f580672d 100644 --- a/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler_unittest.cc +++ b/chrome/browser/ui/webui/new_tab_page/new_tab_page_handler_unittest.cc
@@ -486,7 +486,6 @@ EXPECT_FALSE(theme->background_image_collection_id.has_value()); ASSERT_TRUE(theme->most_visited); EXPECT_EQ(SkColorSetRGB(0, 0, 8), theme->most_visited->background_color); - EXPECT_FALSE(theme->most_visited->use_title_pill); EXPECT_TRUE(theme->most_visited->use_white_tile_icon); EXPECT_EQ(false, theme->most_visited->is_dark); }
diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc index 2b9e769..96858ada 100644 --- a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc +++ b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc
@@ -66,7 +66,6 @@ #include "components/feed/feed_feature_list.h" #include "components/google/core/common/google_util.h" #include "components/grit/components_scaled_resources.h" -#include "components/history_clusters/core/features.h" #include "components/page_image_service/image_service.h" #include "components/page_image_service/image_service_handler.h" #include "components/prefs/pref_registry_simple.h" @@ -494,10 +493,7 @@ {"modulesJourneysResumeJourney", IDS_NTP_MODULES_RESUME_YOUR_JOURNEY}, {"modulesJourneysShowAll", IDS_NTP_MODULES_SHOW_ALL}, {"modulesJourneysInfo", IDS_NTP_MODULES_HISTORY_CLUSTERS_INFO}, - {"disableQuestsModuleToastName", - IDS_NTP_MODULES_HISTORY_CLUSTERS_SENTENCE2}, - {"disableQuestsModuleToastMessage", - IDS_NTP_MODULES_DISABLE_TOAST_MESSAGE}, + {"modulesJourneysSentence2", IDS_NTP_MODULES_HISTORY_CLUSTERS_SENTENCE2}, {"modulesJourneyDisable", IDS_NTP_MODULES_HISTORY_CLUSTERS_DISABLE_TEXT}, {"modulesJourneysDismissButton", IDS_NTP_MODULES_HISTORY_CLUSTERS_DISMISS_BUTTON}, @@ -532,23 +528,6 @@ source->AddBoolean("wideModulesEnabled", base::FeatureList::IsEnabled( ntp_features::kNtpWideModules)); - if (base::FeatureList::IsEnabled(history_clusters::kRenameJourneys)) { - source->AddLocalizedString( - "modulesJourneysResumeJourney", - IDS_NTP_MODULES_HISTORY_CLUSTERS_RESUME_BROWSING); - source->AddLocalizedString("modulesJourneysInfo", - IDS_NTP_MODULES_HISTORY_CLUSTERS_INFO2); - source->AddLocalizedString( - "disableQuestsModuleToastName", - IDS_NTP_MODULES_HISTORY_CLUSTERS_DISABLE_TOAST_NAME); - source->AddLocalizedString( - "disableQuestsModuleToastMessage", - IDS_NTP_MODULES_HISTORY_CLUSTERS_DISABLE_TOAST_MESSAGE); - source->AddLocalizedString( - "modulesJourneyDisable", - IDS_NTP_MODULES_HISTORY_CLUSTERS_DISABLE_DROPDOWN_TEXT); - } - source->AddBoolean( "modulesHeaderIconEnabled", base::FeatureList::IsEnabled(ntp_features::kNtpModulesHeaderIcon));
diff --git a/chrome/browser/ui/webui/new_tab_page_third_party/new_tab_page_third_party_handler.cc b/chrome/browser/ui/webui/new_tab_page_third_party/new_tab_page_third_party_handler.cc index 24f976c..82438ac5 100644 --- a/chrome/browser/ui/webui/new_tab_page_third_party/new_tab_page_third_party_handler.cc +++ b/chrome/browser/ui/webui/new_tab_page_third_party/new_tab_page_third_party_handler.cc
@@ -62,7 +62,6 @@ color_provider.GetColor(kColorNewTabPageMostVisitedTileBackground); most_visited->use_white_tile_icon = color_utils::IsDark(most_visited->background_color); - most_visited->use_title_pill = false; theme->text_color = color_provider.GetColor(kColorNewTabPageText); most_visited->is_dark = !color_utils::IsDark(theme->text_color); theme->color_background = color_utils::SkColorToRgbaString(GetThemeColor( @@ -75,7 +74,6 @@ theme->has_custom_background = theme_provider->HasCustomImage(IDR_THEME_NTP_BACKGROUND); theme->id = profile_->GetPrefs()->GetString(prefs::kCurrentThemeID); - most_visited->use_title_pill = false; } theme->most_visited = std::move(most_visited); page_->SetTheme(std::move(theme));
diff --git a/chrome/browser/ui/webui/settings/ash/files_page/google_drive_handler_browsertest.cc b/chrome/browser/ui/webui/settings/ash/files_page/google_drive_handler_browsertest.cc index f9c9b65..2fc7551 100644 --- a/chrome/browser/ui/webui/settings/ash/files_page/google_drive_handler_browsertest.cc +++ b/chrome/browser/ui/webui/settings/ash/files_page/google_drive_handler_browsertest.cc
@@ -18,8 +18,8 @@ #include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/webui/ash/settings/test_support/os_settings_browser_test_mixin.h" #include "chrome/browser/ui/webui/settings/ash/files_page/mojom/google_drive_handler.mojom.h" -#include "chrome/browser/ui/webui/settings/ash/os_settings_browser_test_mixin.h" #include "chrome/test/data/webui/settings/chromeos/test_api.test-mojom-test-utils.h" #include "chromeos/ash/components/dbus/spaced/fake_spaced_client.h" #include "chromeos/ash/components/drivefs/fake_drivefs.h"
diff --git a/chrome/browser/ui/webui/settings/ash/os_settings_auto_screen_lock_browsertest.cc b/chrome/browser/ui/webui/settings/ash/os_settings_auto_screen_lock_browsertest.cc index 4e70680..07a060b 100644 --- a/chrome/browser/ui/webui/settings/ash/os_settings_auto_screen_lock_browsertest.cc +++ b/chrome/browser/ui/webui/settings/ash/os_settings_auto_screen_lock_browsertest.cc
@@ -5,7 +5,7 @@ #include "ash/constants/ash_pref_names.h" #include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/webui/settings/ash/os_settings_lock_screen_browser_test_base.h" +#include "chrome/browser/ui/webui/ash/settings/test_support/os_settings_lock_screen_browser_test_base.h" #include "chrome/test/data/webui/settings/chromeos/test_api.test-mojom-test-utils.h" #include "components/prefs/pref_service.h" #include "content/public/test/browser_test.h"
diff --git a/chrome/browser/ui/webui/settings/ash/os_settings_lock_screen_authentication_browsertest.cc b/chrome/browser/ui/webui/settings/ash/os_settings_lock_screen_authentication_browsertest.cc index 608794d..37dfb8eb2 100644 --- a/chrome/browser/ui/webui/settings/ash/os_settings_lock_screen_authentication_browsertest.cc +++ b/chrome/browser/ui/webui/settings/ash/os_settings_lock_screen_authentication_browsertest.cc
@@ -4,7 +4,7 @@ #include "base/metrics/histogram_base.h" #include "base/test/metrics/histogram_tester.h" -#include "chrome/browser/ui/webui/settings/ash/os_settings_lock_screen_browser_test_base.h" +#include "chrome/browser/ui/webui/ash/settings/test_support/os_settings_lock_screen_browser_test_base.h" #include "content/public/test/browser_test.h" namespace ash::settings {
diff --git a/chrome/browser/ui/webui/settings/ash/os_settings_notification_settings_browsertest.cc b/chrome/browser/ui/webui/settings/ash/os_settings_notification_settings_browsertest.cc index 105b88b..241daa8 100644 --- a/chrome/browser/ui/webui/settings/ash/os_settings_notification_settings_browsertest.cc +++ b/chrome/browser/ui/webui/settings/ash/os_settings_notification_settings_browsertest.cc
@@ -9,7 +9,7 @@ #include "base/test/scoped_feature_list.h" #include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/webui/settings/ash/os_settings_lock_screen_browser_test_base.h" +#include "chrome/browser/ui/webui/ash/settings/test_support/os_settings_lock_screen_browser_test_base.h" #include "chrome/test/data/webui/settings/chromeos/test_api.test-mojom-test-utils.h" #include "components/prefs/pref_service.h" #include "content/public/test/browser_test.h"
diff --git a/chrome/browser/ui/webui/settings/ash/os_settings_pin_setup_browsertest.cc b/chrome/browser/ui/webui/settings/ash/os_settings_pin_setup_browsertest.cc index 99b023ed..fd27a2b 100644 --- a/chrome/browser/ui/webui/settings/ash/os_settings_pin_setup_browsertest.cc +++ b/chrome/browser/ui/webui/settings/ash/os_settings_pin_setup_browsertest.cc
@@ -11,7 +11,7 @@ #include "chrome/browser/ash/login/quick_unlock/quick_unlock_utils.h" #include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/ui/webui/settings/ash/os_settings_lock_screen_browser_test_base.h" +#include "chrome/browser/ui/webui/ash/settings/test_support/os_settings_lock_screen_browser_test_base.h" #include "chrome/common/pref_names.h" #include "chrome/test/data/webui/settings/chromeos/os_people_page/pin_settings_api.test-mojom-test-utils.h" #include "chrome/test/data/webui/settings/chromeos/test_api.test-mojom-test-utils.h"
diff --git a/chrome/browser/ui/webui/settings/ash/os_settings_recovery_browsertest.cc b/chrome/browser/ui/webui/settings/ash/os_settings_recovery_browsertest.cc index d180d74f..a4b115a 100644 --- a/chrome/browser/ui/webui/settings/ash/os_settings_recovery_browsertest.cc +++ b/chrome/browser/ui/webui/settings/ash/os_settings_recovery_browsertest.cc
@@ -6,7 +6,7 @@ #include "ash/constants/ash_pref_names.h" #include "ash/webui/settings/public/constants/setting.mojom-shared.h" #include "base/test/scoped_feature_list.h" -#include "chrome/browser/ui/webui/settings/ash/os_settings_lock_screen_browser_test_base.h" +#include "chrome/browser/ui/webui/ash/settings/test_support/os_settings_lock_screen_browser_test_base.h" #include "chrome/test/data/webui/settings/chromeos/test_api.test-mojom-test-utils.h" #include "components/policy/core/browser/browser_policy_connector.h" #include "components/policy/core/common/mock_configuration_policy_provider.h"
diff --git a/chrome/browser/ui/webui/settings/mac_system_settings_handler.cc b/chrome/browser/ui/webui/settings/mac_system_settings_handler.cc index c8accb7..b18d53a69 100644 --- a/chrome/browser/ui/webui/settings/mac_system_settings_handler.cc +++ b/chrome/browser/ui/webui/settings/mac_system_settings_handler.cc
@@ -23,7 +23,7 @@ void MacSystemSettingsHandler::HandleOpenTrackpadGesturesSettings( const base::Value::List& args) { - AllowJavascript(); + DCHECK(IsJavascriptAllowed()); // TODO(crbug.com/1473415): Figure out how to directly open the more gestures // subpane. Currently this only opens the first subpane of trackpad settings. base::mac::OpenSystemSettingsPane(base::mac::SystemSettingsPane::kTrackpad);
diff --git a/chrome/browser/web_applications/app_service/lacros_web_apps_controller.cc b/chrome/browser/web_applications/app_service/lacros_web_apps_controller.cc index c998d1cb..c288ccee 100644 --- a/chrome/browser/web_applications/app_service/lacros_web_apps_controller.cc +++ b/chrome/browser/web_applications/app_service/lacros_web_apps_controller.cc
@@ -150,20 +150,13 @@ publisher_helper().UnpauseApp(app_id); } -void LacrosWebAppsController::LoadIcon(const std::string& app_id, - apps::IconKeyPtr icon_key, - apps::IconType icon_type, - int32_t size_hint_in_dip, - apps::LoadIconCallback callback) { - if (!icon_key) { - // On failure, we still run the callback, with an empty IconValue. - std::move(callback).Run(std::make_unique<apps::IconValue>()); - return; - } - - publisher_helper().LoadIcon(app_id, icon_type, size_hint_in_dip, - static_cast<IconEffects>(icon_key->icon_effects), - std::move(callback)); +void LacrosWebAppsController::DEPRECATED_LoadIcon( + const std::string& app_id, + apps::IconKeyPtr icon_key, + apps::IconType icon_type, + int32_t size_hint_in_dip, + apps::LoadIconCallback callback) { + NOTREACHED(); } void LacrosWebAppsController::GetCompressedIcon(
diff --git a/chrome/browser/web_applications/app_service/lacros_web_apps_controller.h b/chrome/browser/web_applications/app_service/lacros_web_apps_controller.h index b1d5a6447..0f05bb2 100644 --- a/chrome/browser/web_applications/app_service/lacros_web_apps_controller.h +++ b/chrome/browser/web_applications/app_service/lacros_web_apps_controller.h
@@ -80,11 +80,11 @@ void UnpauseApp(const std::string& app_id) override; void GetMenuModel(const std::string& app_id, GetMenuModelCallback callback) override; - void LoadIcon(const std::string& app_id, - apps::IconKeyPtr icon_key, - apps::IconType icon_type, - int32_t size_hint_in_dip, - apps::LoadIconCallback callback) override; + void DEPRECATED_LoadIcon(const std::string& app_id, + apps::IconKeyPtr icon_key, + apps::IconType icon_type, + int32_t size_hint_in_dip, + apps::LoadIconCallback callback) override; void GetCompressedIcon(const std::string& app_id, int32_t size_in_dip, ui::ResourceScaleFactor scale_factor,
diff --git a/chrome/browser/webauthn/authenticator_request_dialog_model.cc b/chrome/browser/webauthn/authenticator_request_dialog_model.cc index 00dfd22..f4027af 100644 --- a/chrome/browser/webauthn/authenticator_request_dialog_model.cc +++ b/chrome/browser/webauthn/authenticator_request_dialog_model.cc
@@ -702,6 +702,24 @@ Cancel(); return; } + + if (ephemeral_state_.did_dispatch_to_icloud_keychain_) { + // If we dispatched automatically to iCloud Keychain for a create(), and the + // user clicked cancel, give them the option to create in the profile + // authenticator. + if (transport_availability_.request_type == + device::FidoRequestType::kMakeCredential && + priority_mechanism_index_.has_value() && + absl::holds_alternative<Mechanism::ICloudKeychain>( + mechanisms_[*priority_mechanism_index_].type)) { + StartOver(); + return; + } + // Otherwise, respect the "Cancel" button in macOS UI as if it were our own. + Cancel(); + return; + } + SetCurrentStep(Step::kErrorInternalUnrecognized); } @@ -1736,6 +1754,24 @@ if (!multiple_distinct_creds && best_cred.has_value()) { return best_cred->first; } + + // If it's caBLEv1, or server-linked caBLEv2, jump to that. + if (cable_ui_type_) { + switch (*cable_ui_type_) { + case AuthenticatorRequestDialogModel::CableUIType::CABLE_V2_SERVER_LINK: + case AuthenticatorRequestDialogModel::CableUIType::CABLE_V1: + for (size_t i = 0; i < mechanisms_.size(); ++i) { + if (mechanisms_[i].type == Mechanism::Type(Mechanism::Transport( + AuthenticatorTransport::kHybrid))) { + return i; + } + } + break; + case AuthenticatorRequestDialogModel::CableUIType::CABLE_V2_2ND_FACTOR: + break; + } + } + // TODO(crbug.com/1459273): implement skipping to the relevant authenticator // for certain Windows requests. // For all other cases, go to the multi source passkey picker. @@ -1830,7 +1866,7 @@ } #if BUILDFLAG(IS_MAC) - if (*transport_availability_.make_credential_attachment == + if (transport_availability_.make_credential_attachment == device::AuthenticatorAttachment::kPlatform) { // For platform attachments, either we have iCloud Keychain available // or not. If not, then there's only a single active mechanism (the @@ -1914,5 +1950,10 @@ return; } + if (platform_authenticator_it->type == + device::AuthenticatorType::kICloudKeychain) { + ephemeral_state_.did_dispatch_to_icloud_keychain_ = true; + } + DispatchRequestAsync(&*platform_authenticator_it); }
diff --git a/chrome/browser/webauthn/authenticator_request_dialog_model.h b/chrome/browser/webauthn/authenticator_request_dialog_model.h index 1c5f5d0..ec834beb 100644 --- a/chrome/browser/webauthn/authenticator_request_dialog_model.h +++ b/chrome/browser/webauthn/authenticator_request_dialog_model.h
@@ -683,6 +683,10 @@ // creds_ contains possible credentials to select between before or after an // authenticator has responded to a request. std::vector<device::DiscoverableCredentialMetadata> creds_; + + // did_dispatch_to_icloud_keychain_ is true if iCloud Keychain has been + // triggered. + bool did_dispatch_to_icloud_keychain_ = false; }; void ResetEphemeralState();
diff --git a/chrome/browser/webauthn/authenticator_request_dialog_model_unittest.cc b/chrome/browser/webauthn/authenticator_request_dialog_model_unittest.cc index 383b7e7..a227baa9 100644 --- a/chrome/browser/webauthn/authenticator_request_dialog_model_unittest.cc +++ b/chrome/browser/webauthn/authenticator_request_dialog_model_unittest.cc
@@ -1770,7 +1770,7 @@ public: base::RepeatingCallback<void(const std::string&)> Callback() { return base::BindRepeating(&RequestCallbackReceiver::OnRequest, - base::Unretained(this)); + weak_factory_.GetWeakPtr()); } std::string WaitForResult() { @@ -1790,6 +1790,7 @@ } absl::optional<std::string> authenticator_id_; std::unique_ptr<base::RunLoop> run_loop_ = std::make_unique<base::RunLoop>(); + base::WeakPtrFactory<RequestCallbackReceiver> weak_factory_{this}; }; TEST_F(MultiplePlatformAuthenticatorsTest, DeduplicateAccounts) { @@ -1834,41 +1835,91 @@ device::kWebAuthnICloudKeychain}; for (const bool should_create_in_icloud_keychain : {false, true}) { - SCOPED_TRACE(should_create_in_icloud_keychain); + for (const bool platform_attachment : {false, true}) { + if (!platform_attachment && should_create_in_icloud_keychain) { + // Without `platform_attachment`, `should_create_in_icloud_keychain` is + // moot. + continue; + } - TransportAvailabilityInfo transports_info; - transports_info.has_icloud_keychain = true; - transports_info.available_transports = {AuthenticatorTransport::kInternal}; - transports_info.request_type = device::FidoRequestType::kMakeCredential; - transports_info.make_credential_attachment = - device::AuthenticatorAttachment::kPlatform; + SCOPED_TRACE(testing::Message() << "should_create_in_icloud_keychain: " + << should_create_in_icloud_keychain); + SCOPED_TRACE(testing::Message() + << "platform_attachment: " << platform_attachment); - AuthenticatorRequestDialogModel model(main_rfh()); - model.set_allow_icloud_keychain(true); - model.set_should_create_in_icloud_keychain( - should_create_in_icloud_keychain); + TransportAvailabilityInfo transports_info; + transports_info.has_icloud_keychain = true; + transports_info.available_transports = { + AuthenticatorTransport::kInternal, + AuthenticatorTransport::kUsbHumanInterfaceDevice}; + transports_info.request_type = device::FidoRequestType::kMakeCredential; + transports_info.resident_key_requirement = + device::ResidentKeyRequirement::kRequired; + transports_info.make_credential_attachment = + platform_attachment ? device::AuthenticatorAttachment::kPlatform + : device::AuthenticatorAttachment::kAny; - RequestCallbackReceiver request_callback; - model.SetRequestCallback(request_callback.Callback()); + AuthenticatorRequestDialogModel model(main_rfh()); + model.set_allow_icloud_keychain(true); + model.set_should_create_in_icloud_keychain( + should_create_in_icloud_keychain); - const std::string kProfileAuthenticatorId = "platauth"; - model.saved_authenticators().AddAuthenticator(AuthenticatorReference( - kProfileAuthenticatorId, AuthenticatorTransport::kInternal, - device::AuthenticatorType::kTouchID)); - const std::string kICloudKeychainId = "ickc"; - model.saved_authenticators().AddAuthenticator(AuthenticatorReference( - kICloudKeychainId, AuthenticatorTransport::kInternal, - device::AuthenticatorType::kICloudKeychain)); + RequestCallbackReceiver request_callback; + model.SetRequestCallback(request_callback.Callback()); - model.StartFlow(std::move(transports_info), - /*is_conditional_mediation=*/false); - if (should_create_in_icloud_keychain) { - EXPECT_EQ(request_callback.WaitForResult(), kICloudKeychainId); - } else { - EXPECT_EQ(model.current_step(), - AuthenticatorRequestDialogModel::Step::kCreatePasskey); - model.HideDialogAndDispatchToPlatformAuthenticator(); - EXPECT_EQ(request_callback.WaitForResult(), kProfileAuthenticatorId); + const std::string kProfileAuthenticatorId = "platauth"; + model.saved_authenticators().AddAuthenticator(AuthenticatorReference( + kProfileAuthenticatorId, AuthenticatorTransport::kInternal, + device::AuthenticatorType::kTouchID)); + const std::string kICloudKeychainId = "ickc"; + model.saved_authenticators().AddAuthenticator(AuthenticatorReference( + kICloudKeychainId, AuthenticatorTransport::kInternal, + device::AuthenticatorType::kICloudKeychain)); + + model.StartFlow(std::move(transports_info), + /*is_conditional_mediation=*/false); + if (platform_attachment) { + if (should_create_in_icloud_keychain) { + EXPECT_EQ(request_callback.WaitForResult(), kICloudKeychainId); + } else { + EXPECT_EQ(model.current_step(), + AuthenticatorRequestDialogModel::Step::kCreatePasskey); + model.HideDialogAndDispatchToPlatformAuthenticator(); + EXPECT_EQ(request_callback.WaitForResult(), kProfileAuthenticatorId); + } + } else { + EXPECT_EQ(model.current_step(), + AuthenticatorRequestDialogModel::Step::kMechanismSelection); + } + + if (!platform_attachment) { + // Dispatch to iCloud Keychain to check that canceling doesn't show + // a Chrome error dialog. + base::ranges::find_if( + model.mechanisms(), + [](const AuthenticatorRequestDialogModel::Mechanism& m) -> bool { + return absl::holds_alternative< + AuthenticatorRequestDialogModel::Mechanism::ICloudKeychain>( + m.type); + }) + ->callback.Run(); + } + + model.OnUserConsentDenied(); + + if (platform_attachment) { + EXPECT_EQ( + model.current_step(), + should_create_in_icloud_keychain + ? AuthenticatorRequestDialogModel::Step::kMechanismSelection + : AuthenticatorRequestDialogModel::Step:: + kErrorInternalUnrecognized); + } else { + // Canceling after a non-automatic dispatch to iCloud Keychain should + // end the request. + EXPECT_EQ(model.current_step(), + AuthenticatorRequestDialogModel::Step::kNotStarted); + } } } }
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt index 17bbe36..108fad0 100644 --- a/chrome/build/mac-arm.pgo.txt +++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@ -chrome-mac-arm-main-1692640759-83c4191cf319adc7919b24abd64a46fc450b5c1a.profdata +chrome-mac-arm-main-1692647788-bf581906dfacaac623d842aaf6740a496ff616ce.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index c8c2b7b..e20327a 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-main-1692640759-29626c30025109cbea1688460c6b5027576e86af.profdata +chrome-win32-main-1692651568-ec042f60246e27ad9e5302a3d83242f083405a61.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index a4f2078..96d3be5 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-main-1692640759-6a1fb7cef26e1ce060fc019ddc51f16ef78476e2.profdata +chrome-win64-main-1692651568-19488fd7625f1a7ed98528e03f8aac9a687b6cd1.profdata
diff --git a/chrome/common/extensions/api/accessibility_private.json b/chrome/common/extensions/api/accessibility_private.json index 07f7899..83b1439 100644 --- a/chrome/common/extensions/api/accessibility_private.json +++ b/chrome/common/extensions/api/accessibility_private.json
@@ -293,13 +293,6 @@ } }, { - "id": "ToastType", - "type": "string", - "enum": [ - "dictationNoFocusedTextField" - ] - }, - { "id": "DlcType", "type": "string", "enum": [ @@ -901,16 +894,6 @@ } ] } - }, - { - "name": "showToast", - "type": "function", - "description": "Displays an accessibility-related toast.", - "parameters": [{ - "name": "type", - "$ref": "ToastType", - "description": "The type of toast to show." - }] } ], "events": [
diff --git a/chrome/common/extensions/api/developer_private.idl b/chrome/common/extensions/api/developer_private.idl index 57df480..4dd8268 100644 --- a/chrome/common/extensions/api/developer_private.idl +++ b/chrome/common/extensions/api/developer_private.idl
@@ -225,6 +225,10 @@ // Only populated for extensions that can be affected by the runtime host // permissions feature. RuntimeHostPermissions? runtimeHostPermissions; + + // True if the extension can access site data through host permissions or + // API permissions such as activeTab. + boolean canAccessSiteData; }; dictionary ExtensionInfo {
diff --git a/chrome/common/extensions/api/file_manager_private.idl b/chrome/common/extensions/api/file_manager_private.idl index c6bc344..b1797e5 100644 --- a/chrome/common/extensions/api/file_manager_private.idl +++ b/chrome/common/extensions/api/file_manager_private.idl
@@ -1457,7 +1457,7 @@ // |descriptor| The unique identifier of task to execute. // |entries| Array of entries // |callback| - [nocompile] + [nocompile, supportsPromises] static void executeTask(FileTaskDescriptor descriptor, [instanceOf=Entry] object[] entries, ExecuteTaskCallback callback); @@ -1469,7 +1469,7 @@ // |entries| Array of selected entries to extract path extensions from. // |mimeTypes| Array of selected file MIME types. // |callback| - [nocompile] + [nocompile, supportsPromises] static void setDefaultTask(FileTaskDescriptor descriptor, [instanceOf=Entry] object[] entries, DOMString[] mimeTypes, @@ -1480,7 +1480,7 @@ // |dlpSourceUrls| Array of source URLs corresponding to the entries, used to // check Data Leak Prevention (DLP) restrictions // |callback| - [nocompile] + [nocompile, supportsPromises] static void getFileTasks([instanceOf=Entry] object[] entries, DOMString[] dlpSourceUrls, GetFileTasksCallback callback); @@ -1488,14 +1488,14 @@ // Gets the MIME type of an entry. // |entry| The entry to be checked. // |callback| - [nocompile] + [nocompile, supportsPromises] static void getMimeType([instanceOf=Entry] object entry, GetMimeTypeCallback callback); // Gets the content sniffed MIME type of a file. // |fileEntry| The file entry to be checked. // |callback| - [nocompile] + [nocompile, supportsPromises] static void getContentMimeType([instanceOf=FileEntry] object fileEntry, GetContentMimeTypeCallback callback); @@ -1505,7 +1505,7 @@ // |includeImages| False returns metadata tags only. True returns // metadata tags and metadata (thumbnail) images. // |callback| - [nocompile] + [nocompile, supportsPromises] static void getContentMetadata([instanceOf=FileEntry] object fileEntry, DOMString mimeType, boolean includeImages, @@ -1513,19 +1513,20 @@ // Gets localized strings and initialization data. // |callback| + [supportsPromises] static void getStrings(GetStringsCallback callback); // Adds file watch. // |entry| Entry to watch // |callback| - [nocompile] + [nocompile, supportsPromises] static void addFileWatch([instanceOf=Entry] object entry, AddFileWatchCallback callback); // Removes file watch. // |entry| Watched entry // |callback| - [nocompile] + [nocompile, supportsPromises] static void removeFileWatch([instanceOf=Entry] object entry, RemoveFileWatchCallback callback); @@ -1538,12 +1539,14 @@ // invalid or not backed by the external file system. // |entryUrls| Urls for the entries to be accessed. // |callback| + [supportsPromises] static void grantAccess(DOMString[] entryUrls, SimpleCallback callback); // Selects multiple files. // |selectedPaths| Array of selected paths // |shouldReturnLocalPath| true if paths need to be resolved to local paths. // |callback| + [supportsPromises] static void selectFiles(DOMString[] selectedPaths, boolean shouldReturnLocalPath, SimpleCallback callback); @@ -1554,6 +1557,7 @@ // |forOpening| true if paths are selected for opening. false if for saving. // |shouldReturnLocalPath| true if paths need to be resolved to local paths. // |callback| + [supportsPromises] static void selectFile(DOMString selectedPath, long index, boolean forOpening, @@ -1566,7 +1570,7 @@ // |callback| Completion callback. May return less than requested properties // if some are not available. In the same time, it can return properties // which were not requested (if it's cheap to compute them). - [nocompile] + [nocompile, supportsPromises] static void getEntryProperties( [instanceOf=Entry] object[] entries, EntryPropertyName[] names, @@ -1577,7 +1581,7 @@ // |pin| Pass true to pin the file. // |callback| Completion callback. $(ref:runtime.lastError) will be set if // there was an error. - [nocompile] + [nocompile, supportsPromises] static void pinDriveFile([instanceOf=Entry] object entry, boolean pin, SimpleCallback callback); @@ -1586,7 +1590,7 @@ // entries in the external file system mounted to Chrome OS file manager // backend. If resolving entry fails, the entry will be just ignored and the // corresponding entry does not appear in the result. - [nocompile] + [nocompile, supportsPromises] static void resolveIsolatedEntries( [instanceOf=Entry] object[] entries, ResolveEntriesCallback callback); @@ -1595,20 +1599,24 @@ // |fileUrl| Mount point source. // |password| Optional password to decrypt the archive. // |callback| Callback called with the source path of the mount. + [supportsPromises] static void addMount(DOMString fileUrl, optional DOMString password, AddMountCallback callback); // Cancels an archive mounting operation. // |fileUrl| Mount point source. Should be same as the one passed to addMount. // |callback| + [supportsPromises] static void cancelMounting(DOMString fileUrl, SimpleCallback callback); // Unmounts a mounted resource. // |volumeId| An ID of the volume. + [supportsPromises] static void removeMount(DOMString volumeId, SimpleCallback callback); // Get the list of mounted volumes. // |callback| + [supportsPromises] static void getVolumeMetadataList(GetVolumeMetadataListCallback callback); // Returns the list of files not allowed to be transfered. @@ -1616,7 +1624,7 @@ // |destinationEntry| Entry for the destination (parent) directory. // |isMove| True if the operation is move, false otherwise. // |callback| Result callback. - [nocompile] + [nocompile, supportsPromises] static void getDisallowedTransfers( [instanceOf=Entry] object[] entries, [instanceOf=DirectoryEntry] object destinationEntry, @@ -1627,7 +1635,7 @@ // about the entries. // |entries| List of the source entries to be checked. // |callback| Result callback. - [nocompile] + [nocompile, supportsPromises] static void getDlpMetadata( [instanceOf=Entry] object[] entries, GetDlpMetadataCallback callback); @@ -1635,6 +1643,7 @@ // Retrieves Data Leak Prevention (DLP) restriction details. // |sourceUrl| Source URL of the Entry for which the details should be shown. // |callback| Result callback. + [supportsPromises] static void getDlpRestrictionDetails( DOMString sourceUrl, GetDlpRestrictionDetailsCallback callback); @@ -1643,17 +1652,20 @@ // is blocked by Data Leak Prevention (DLP) policy. // |sourceUrl| Source URL of the Entry that should be checked. // |callback| Result callback. + [supportsPromises] static void getDlpBlockedComponents( DOMString sourceUrl, GetDlpBlockedComponentsCallback callback); // Retrieves the caller that created the dialog (Save As/File Picker). // |callback| Result callback. + [supportsPromises] static void getDialogCaller(GetDialogCallerCallback callback); // Retrieves total and remaining size of a mount point. // |volumeId| ID of the volume to be checked. // |callback| + [supportsPromises] static void getSizeStats(DOMString volumeId, GetSizeStatsCallback callback); @@ -1661,7 +1673,7 @@ // |entry| If entry is within a Shared Drive, then the applicable shared // drive quota is returned, else the overall Drive quota is returned. // |callback| - [nocompile] + [nocompile, supportsPromises] static void getDriveQuotaMetadata([instanceOf=Entry] object entry, GetDriveQuotaMetadataCallback callback); @@ -1689,6 +1701,7 @@ // Retrieves file manager preferences. // |callback| + [supportsPromises] static void getPreferences(GetPreferencesCallback callback); // Sets file manager preferences. @@ -1704,28 +1717,31 @@ // Performs drive metadata search. // |searchParams| // |callback| + [supportsPromises] static void searchDriveMetadata(SearchMetadataParams searchParams, SearchDriveMetadataCallback callback); // Search files in the volume having |volumeId| by using |hashList|. + [supportsPromises] static void searchFilesByHashes(DOMString volumeId, DOMString[] hashList, SearchFilesByHashesCallback callback); // Search files in My Files. - [nocompile] + [nocompile, supportsPromises] static void searchFiles(SearchMetadataParams searchParams, SearchFilesCallback callback); // Retrieves the state of the current drive connection. // |callback| + [supportsPromises] static void getDriveConnectionState(GetDriveConnectionStateCallback callback); // Checks whether the path name length fits in the limit of the filesystem. // |parentEntry| The entry of the parent directory entry. // |name| The name of the file. // |callback| Called back when the check is finished. - [nocompile] + [nocompile, supportsPromises] static void validatePathNameLength( [instanceOf=DirectoryEntry] object parentEntry, DOMString name, @@ -1749,31 +1765,34 @@ // Computes an MD5 checksum for the given file. // |entry| The entry of the file to checksum. // |callback| - [nocompile] + [nocompile, supportsPromises] static void computeChecksum([instanceOf=Entry] object entry, ComputeChecksumCallback callback); // Returns list of available providers. + [supportsPromises] static void getProviders(GetProvidersCallback callback); // Requests adding a new provided file system. On failure, sets // $(ref:runtime.lastError). + [supportsPromises] static void addProvidedFileSystem(DOMString providerId, SimpleCallback callback); // Requests configuring an existing volume. On failure, sets // $(ref:runtime.lastError). + [supportsPromises] static void configureVolume(DOMString volumeId, SimpleCallback callback); // Requests list of custom actions for the specified entries. On failure, sets // $(ref:runtime.lastError). - [nocompile] + [nocompile, supportsPromises] static void getCustomActions([instanceOf=Entry] object[] entries, GetCustomActionsCallback callback); // Executes a custom action for a set of entries. On failure, sets // $(ref:runtime.lastError). - [nocompile] + [nocompile, supportsPromises] static void executeCustomAction([instanceOf=Entry] object[] entries, DOMString actionId, SimpleCallback callback); @@ -1781,7 +1800,7 @@ // Get the total size of a directory. // |entry| Entry of the target directory. // |callback| - [nocompile] + [nocompile, supportsPromises] static void getDirectorySize([instanceOf=DirectoryEntry] object entry, GetDirectorySizeCallback callback); @@ -1789,7 +1808,7 @@ // |restriction| Flag to restrict sources of recent files. // |fileType| Requested file type to filter recent files. // |callback| - [nocompile] + [nocompile, supportsPromises] static void getRecentFiles(SourceRestriction restriction, FileCategory fileCategory, boolean invalidateCache, @@ -1797,12 +1816,13 @@ // Requests the root directory of the volume with the ID specified in // |options.volumeId|. - [nocompile] + [nocompile, supportsPromises] static void getVolumeRoot(GetVolumeRootOptions options, GetVolumeRootCallback callback); // Starts and mounts crostini container. // |callback| + [supportsPromises] static void mountCrostini(SimpleCallback callback); // Shares paths with crostini container. @@ -1810,28 +1830,32 @@ // |entries| Entries of the files or directories to share. // |persist| If true, shares will persist across restarts. // |callback| - [nocompile] static void sharePathsWithCrostini( - DOMString vmName, [instanceOf=Entry] object[] entries, boolean persist, - SimpleCallback callback); + [nocompile, supportsPromises] + static void sharePathsWithCrostini(DOMString vmName, + [instanceOf=Entry] object[] entries, + boolean persist, + SimpleCallback callback); // Unshares path with crostini container. // |vmName| VM to unshare path from. // |entry| Entry of the file or directory to unshare. // |callback| - [nocompile] static void unsharePathWithCrostini( - DOMString vmName, [instanceOf=Entry] object entry, - SimpleCallback callback); + [nocompile, supportsPromises] + static void unsharePathWithCrostini(DOMString vmName, + [instanceOf=Entry] object entry, + SimpleCallback callback); // Returns list of paths shared with crostini container. // |observeFirstForSession| If true, callback provides whether this is the // |vmName| VM to get shared paths of. // first time this function has been called with observeFirstForSession true. - [nocompile] static void getCrostiniSharedPaths( - boolean observeFirstForSession, DOMString vmName, - GetCrostiniSharedPathsCallback callback); + [nocompile] + static void getCrostiniSharedPaths(boolean observeFirstForSession, + DOMString vmName, + GetCrostiniSharedPathsCallback callback); // Requests information about a Linux package. |entry| is a .deb file. - [nocompile] + [nocompile, supportsPromises] static void getLinuxPackageInfo([instanceOf=Entry] object entry, GetLinuxPackageInfoCallback callback); @@ -1846,10 +1870,12 @@ static void importCrostiniImage([instanceOf=Entry] object entry); // Returns a list of Android picker apps to be shown in file selector. + [supportsPromises] static void getAndroidPickerApps(DOMString[] extensions, GetAndroidPickerAppsCallback callback); // Called when the user selects an Android picker app in file selector. + [supportsPromises] static void selectAndroidPickerApp(AndroidApp androidApp, SimpleCallback callback); @@ -1858,7 +1884,7 @@ // |callback| is called with error in case of failure and with no arguments // if successfully launched the Sharesheet dialog, but before user has // finished the sharing. - [nocompile] + [nocompile, supportsPromises] static void sharesheetHasTargets([instanceOf=Entry] object[] entries, BooleanCallback callback); @@ -1868,7 +1894,7 @@ // |dlpSourceUrls| Array of source URLs corresponding to the entries, used to // check Data Leak Prevention (DLP) restrictions // |callback| - [nocompile] + [nocompile, supportsPromises] static void invokeSharesheet([instanceOf=Entry] object[] entries, SharesheetLaunchSource launchSource, DOMString[] dlpSourceUrls, @@ -1880,7 +1906,7 @@ // |entries| The list of entries whose holding space needs to be updated. // |add| Whether items should be added or removed from the holding space. // |callback| Completion callback. - [nocompile] + [nocompile, supportsPromises] static void toggleAddedToHoldingSpace([instanceOf=Entry] object[] entries, boolean added, optional SimpleCallback callback); @@ -1888,9 +1914,11 @@ // Retrieves the current holding space state, for example the list of items // the holding space currently contains. // |callback| The result callback. + [supportsPromises] static void getHoldingSpaceState(HoldingSpaceStateCallback callback); // Returns true via `callback` if tablet mode is enabled, false otherwise. + [supportsPromises] static void isTabletModeEnabled(BooleanCallback callback); // Notifies the browser of the result of a dialog displayed earlier as a @@ -1901,6 +1929,7 @@ static void openURL(DOMString url); // Creates a new Files app window in the directory provided in `params`. + [supportsPromises] static void openWindow(OpenWindowParams params, BooleanCallback callback); // Opens the feedback report window. @@ -1908,7 +1937,7 @@ // Starts an I/O task of type |type| on |entries|. Task type specific // parameters are passed via |params|. - [nocompile] + [nocompile, supportsPromises] static void startIOTask( IOTaskType type, [instanceOf=Entry] object[] entries, @@ -1932,10 +1961,12 @@ static void progressPausedTasks(); // Lists mountable Guest OSs. + [supportsPromises] static void listMountableGuests(ListMountableGuestsCallback callback); // Starts and mounts the target Guest OS. // |callback| + [supportsPromises] static void mountGuest(long id, SimpleCallback callback); // Tells DriveFS to update its cached pin states of hosted files (once). @@ -1945,15 +1976,17 @@ static void openManageSyncSettings(); // Validates and parses the supplied `entries` as .trashinfo files. - [nocompile] + [nocompile, supportsPromises] static void parseTrashInfoFiles([instanceOf=Entry] object[] entries, ParseTrashInfoFilesCallback callback); // Returns the current progress of the bulk pinning manager. + [supportsPromises] static void getBulkPinProgress(GetBulkPinProgressCallback callback); // Starts calculating the space required to pin all the items in a users My // drive. + [supportsPromises] static void calculateBulkPinRequiredSpace(SimpleCallback callback); };
diff --git a/chrome/common/extensions/api/file_manager_private_internal.idl b/chrome/common/extensions/api/file_manager_private_internal.idl index 6e4043a4..1443990 100644 --- a/chrome/common/extensions/api/file_manager_private_internal.idl +++ b/chrome/common/extensions/api/file_manager_private_internal.idl
@@ -69,93 +69,121 @@ callback SearchFilesCallback = void(EntryDescription[] entries); interface Functions { - static void resolveIsolatedEntries(DOMString[] urls, - ResolveIsolatedEntriesCallback callback); - static void getEntryProperties( + [supportsPromises] static void resolveIsolatedEntries( + DOMString[] urls, + ResolveIsolatedEntriesCallback callback); + [supportsPromises] static void getEntryProperties( DOMString[] urls, fileManagerPrivate.EntryPropertyName[] names, GetEntryPropertiesCallback callback); - static void addFileWatch( + [supportsPromises] static void addFileWatch( DOMString url, AddFileWatchCallback callback); - static void removeFileWatch( + [supportsPromises] static void removeFileWatch( DOMString url, RemoveFileWatchCallback callback); - static void getCustomActions(DOMString[] urls, - GetCustomActionsCallback callback); - static void executeCustomAction(DOMString[] urls, - DOMString actionId, - SimpleCallback callback); - static void computeChecksum(DOMString url, - ComputeChecksumCallback callback); - static void getMimeType(DOMString url, - GetMimeTypeCallback callback); - static void getContentMimeType(DOMString blobUUID, - GetContentMimeTypeCallback callback); - static void getContentMetadata(DOMString blobUUID, - DOMString mimeType, - boolean includeImages, - GetContentMetadataCallback callback); - static void pinDriveFile(DOMString url, - boolean pin, - SimpleCallback callback); - static void executeTask(fileManagerPrivate.FileTaskDescriptor descriptor, - DOMString[] urls, - ExecuteTaskCallback callback); - static void searchFiles(SearchFilesParams searchParams, SearchFilesCallback callback); - static void setDefaultTask(fileManagerPrivate.FileTaskDescriptor descriptor, - DOMString[] urls, - DOMString[] mimeTypes, - SimpleCallback callback); - static void getFileTasks(DOMString[] urls, - DOMString[] dlpSourceUrls, - GetFileTasksCallback callback); - static void getDisallowedTransfers(DOMString[] entries, - DOMString destinationEntry, - boolean isMove, - GetDisallowedTransfersCallback callback); - static void getDlpMetadata(DOMString[] entries, - GetDlpMetadataCallback callback); - static void getDriveQuotaMetadata(DOMString url, - GetDriveQuotaMetadataCallback callback); - static void validatePathNameLength( + [supportsPromises] static void getCustomActions( + DOMString[] urls, + GetCustomActionsCallback callback); + [supportsPromises] static void executeCustomAction( + DOMString[] urls, + DOMString actionId, + SimpleCallback callback); + [supportsPromises] static void computeChecksum( + DOMString url, + ComputeChecksumCallback callback); + [supportsPromises] static void getMimeType( + DOMString url, + GetMimeTypeCallback callback); + [supportsPromises] static void getContentMimeType( + DOMString blobUUID, + GetContentMimeTypeCallback callback); + [supportsPromises] static void getContentMetadata( + DOMString blobUUID, + DOMString mimeType, + boolean includeImages, + GetContentMetadataCallback callback); + [supportsPromises] static void pinDriveFile( + DOMString url, + boolean pin, + SimpleCallback callback); + [supportsPromises] static void executeTask( + fileManagerPrivate.FileTaskDescriptor descriptor, + DOMString[] urls, + ExecuteTaskCallback callback); + [supportsPromises] static void searchFiles( + SearchFilesParams searchParams, SearchFilesCallback callback); + [supportsPromises] static void setDefaultTask( + fileManagerPrivate.FileTaskDescriptor descriptor, + DOMString[] urls, + DOMString[] mimeTypes, + SimpleCallback callback); + [supportsPromises] static void getFileTasks( + DOMString[] urls, + DOMString[] dlpSourceUrls, + GetFileTasksCallback callback); + [supportsPromises] static void getDisallowedTransfers( + DOMString[] entries, + DOMString destinationEntry, + boolean isMove, + GetDisallowedTransfersCallback callback); + [supportsPromises] static void getDlpMetadata( + DOMString[] entries, + GetDlpMetadataCallback callback); + [supportsPromises] static void getDriveQuotaMetadata( + DOMString url, + GetDriveQuotaMetadataCallback callback); + [supportsPromises] static void validatePathNameLength( DOMString parentUrl, DOMString name, ValidatePathNameLengthCallback callback); - static void getDirectorySize(DOMString url, - GetDirectorySizeCallback callback); - static void getVolumeRoot(fileManagerPrivate.GetVolumeRootOptions options, - GetVolumeRootCallback callback); - static void getRecentFiles(fileManagerPrivate.SourceRestriction restriction, - fileManagerPrivate.FileCategory file_category, - boolean invalidate_cache, - GetRecentFilesCallback callback); - static void sharePathsWithCrostini(DOMString vmName, DOMString[] urls, - boolean persist, - SimpleCallback callback); - static void unsharePathWithCrostini(DOMString vmName, DOMString url, - SimpleCallback callback); - static void getCrostiniSharedPaths(boolean observeFirstForSession, - DOMString vmName, - GetCrostiniSharedPathsCallback callback); - static void getLinuxPackageInfo(DOMString url, - GetLinuxPackageInfoCallback callback); - static void installLinuxPackage(DOMString url, - InstallLinuxPackageCallback callback); + [supportsPromises] static void getDirectorySize( + DOMString url, + GetDirectorySizeCallback callback); + [supportsPromises] static void getVolumeRoot( + fileManagerPrivate.GetVolumeRootOptions options, + GetVolumeRootCallback callback); + [supportsPromises] static void getRecentFiles( + fileManagerPrivate.SourceRestriction restriction, + fileManagerPrivate.FileCategory file_category, + boolean invalidate_cache, + GetRecentFilesCallback callback); + [supportsPromises] static void sharePathsWithCrostini( + DOMString vmName, DOMString[] urls, + boolean persist, + SimpleCallback callback); + [supportsPromises] static void unsharePathWithCrostini( + DOMString vmName, DOMString url, + SimpleCallback callback); + static void getCrostiniSharedPaths( + boolean observeFirstForSession, + DOMString vmName, + GetCrostiniSharedPathsCallback callback); + [supportsPromises] static void getLinuxPackageInfo( + DOMString url, + GetLinuxPackageInfoCallback callback); + static void installLinuxPackage( + DOMString url, + InstallLinuxPackageCallback callback); static void importCrostiniImage(DOMString url); - static void sharesheetHasTargets(DOMString[] urls, BooleanCallback callback); - static void invokeSharesheet( + [supportsPromises] static void sharesheetHasTargets( + DOMString[] urls, + BooleanCallback callback); + [supportsPromises] static void invokeSharesheet( DOMString[] urls, fileManagerPrivate.SharesheetLaunchSource launchSource, DOMString[] dlpSourceUrls, SimpleCallback callback); - static void toggleAddedToHoldingSpace(DOMString[] urls, boolean add, + [supportsPromises] static void toggleAddedToHoldingSpace( + DOMString[] urls, boolean add, optional SimpleCallback callback); - static void startIOTask(fileManagerPrivate.IOTaskType type, - DOMString[] urls, - IOTaskParams params, - optional IOTaskIdCallback callback); - static void parseTrashInfoFiles(DOMString[] urls, - ParseTrashInfoFilesCallback callback); + [supportsPromises] static void startIOTask( + fileManagerPrivate.IOTaskType type, + DOMString[] urls, + IOTaskParams params, + optional IOTaskIdCallback callback); + [supportsPromises] static void parseTrashInfoFiles( + DOMString[] urls, + ParseTrashInfoFilesCallback callback); }; };
diff --git a/chrome/renderer/resources/extensions/file_manager_private_custom_bindings.js b/chrome/renderer/resources/extensions/file_manager_private_custom_bindings.js index f6f89fe..93c628bf 100644 --- a/chrome/renderer/resources/extensions/file_manager_private_custom_bindings.js +++ b/chrome/renderer/resources/extensions/file_manager_private_custom_bindings.js
@@ -7,6 +7,7 @@ // Natives var blobNatives = requireNative('blob_natives'); var fileManagerPrivateNatives = requireNative('file_manager_private'); +var logging = requireNative('logging'); // Internals var fileManagerPrivateInternal = getInternalApi('fileManagerPrivateInternal'); @@ -15,6 +16,39 @@ var GetFileSystem = fileManagerPrivateNatives.GetFileSystem; var GetExternalFileEntry = fileManagerPrivateNatives.GetExternalFileEntry; +// Adaptor to help propagating errors emitted by calls to internal API +// implementations. +function callbackAdaptor(successCallback, failureCallback, resultHandler) { + return function(...results) { + // No callback should take more than one result. + logging.CHECK(results.length <= 1); + let lastErrorMessage = bindingUtil.getLastErrorMessage(); + if (lastErrorMessage) { + // We re-emit |lastError| through the |failureCallback| here to ensure it + // gets correctly propagated to the top level caller either as a rejected + // promise or |lastError| for a callback. We also clear it to ensure this + // instance of the |lastError| isn't reported as unchecked. + bindingUtil.clearLastError(); + failureCallback(lastErrorMessage); + return; + } + // Invoke the success callback, optionally handling the result first. + // Note that we ensure we call |successCallback| with the expected number of + // arguments (as opposed to just calling with undefined if result are empty) + // so that any callers using `arguments` are unaffected. + if (resultHandler) { + // If a function has a result handler, it must have a result. + logging.CHECK(results.length == 1); + let finalResult = resultHandler(results[0]); + successCallback(finalResult); + } else if (results.length == 1) { + successCallback(results[0]); + } else { + successCallback(); + } + } +} + apiBridge.registerCustomHook(function(bindingsAPI) { // For FilesAppEntry types that wraps a native entry, returns the native entry // to be able to send to fileManagerPrivate API. @@ -61,84 +95,109 @@ callback(response); }); - apiFunctions.setHandleRequest('resolveIsolatedEntries', - function(entries, callback) { - var urls = entries.map(function(entry) { - return getEntryURL(entry); - }); - fileManagerPrivateInternal.resolveIsolatedEntries(urls, function( - entryDescriptions) { - callback(entryDescriptions.map(function(description) { - return GetExternalFileEntry(description); - })); - }); - }); + apiFunctions.setHandleRequest( + 'resolveIsolatedEntries', + function(entries, successCallback, failureCallback) { + var urls = entries.map(function(entry) { + return getEntryURL(entry); + }); + let resultHandler = function(entryDescriptions) { + return entryDescriptions.map((description) => { + return GetExternalFileEntry(description); + }); + }; + fileManagerPrivateInternal.resolveIsolatedEntries( + urls, + callbackAdaptor(successCallback, failureCallback, resultHandler)); + }); - apiFunctions.setHandleRequest('getVolumeRoot', function(options, callback) { - fileManagerPrivateInternal.getVolumeRoot(options, function(entry) { - callback(entry ? GetExternalFileEntry(entry) : undefined); - }); - }); + apiFunctions.setHandleRequest( + 'getVolumeRoot', function(options, successCallback, failureCallback) { + let resultHandler = function(entry) { + return entry ? GetExternalFileEntry(entry) : undefined; + }; + fileManagerPrivateInternal.getVolumeRoot( + options, + callbackAdaptor(successCallback, failureCallback, resultHandler)); + }); - apiFunctions.setHandleRequest('getEntryProperties', - function(entries, names, callback) { - var urls = entries.map(function(entry) { - return getEntryURL(entry); - }); - fileManagerPrivateInternal.getEntryProperties(urls, names, callback); - }); + apiFunctions.setHandleRequest( + 'getEntryProperties', + function(entries, names, successCallback, failureCallback) { + var urls = entries.map(function(entry) { + return getEntryURL(entry); + }); + fileManagerPrivateInternal.getEntryProperties( + urls, names, callbackAdaptor(successCallback, failureCallback)); + }); - apiFunctions.setHandleRequest('addFileWatch', function(entry, callback) { - var url = getEntryURL(entry); - fileManagerPrivateInternal.addFileWatch(url, callback); - }); + apiFunctions.setHandleRequest( + 'addFileWatch', function(entry, successCallback, failureCallback) { + var url = getEntryURL(entry); + fileManagerPrivateInternal.addFileWatch( + url, callbackAdaptor(successCallback, failureCallback)); + }); - apiFunctions.setHandleRequest('removeFileWatch', function(entry, callback) { - var url = getEntryURL(entry); - fileManagerPrivateInternal.removeFileWatch(url, callback); - }); + apiFunctions.setHandleRequest( + 'removeFileWatch', function(entry, successCallback, failureCallback) { + var url = getEntryURL(entry); + fileManagerPrivateInternal.removeFileWatch( + url, callbackAdaptor(successCallback, failureCallback)); + }); - apiFunctions.setHandleRequest('getCustomActions', function( - entries, callback) { - var urls = entries.map(function(entry) { - return getEntryURL(entry); - }); - fileManagerPrivateInternal.getCustomActions(urls, callback); - }); + apiFunctions.setHandleRequest( + 'getCustomActions', function(entries, successCallback, failureCallback) { + var urls = entries.map(function(entry) { + return getEntryURL(entry); + }); + fileManagerPrivateInternal.getCustomActions( + urls, callbackAdaptor(successCallback, failureCallback)); + }); - apiFunctions.setHandleRequest('executeCustomAction', function( - entries, actionId, callback) { - var urls = entries.map(function(entry) { - return getEntryURL(entry); - }); - fileManagerPrivateInternal.executeCustomAction(urls, actionId, callback); - }); + apiFunctions.setHandleRequest( + 'executeCustomAction', + function(entries, actionId, successCallback, failureCallback) { + var urls = entries.map(function(entry) { + return getEntryURL(entry); + }); + fileManagerPrivateInternal.executeCustomAction( + urls, actionId, callbackAdaptor(successCallback, failureCallback)); + }); - apiFunctions.setHandleRequest('computeChecksum', function(entry, callback) { - var url = getEntryURL(entry); - fileManagerPrivateInternal.computeChecksum(url, callback); - }); + apiFunctions.setHandleRequest( + 'computeChecksum', function(entry, successCallback, failureCallback) { + var url = getEntryURL(entry); + fileManagerPrivateInternal.computeChecksum( + url, callbackAdaptor(successCallback, failureCallback)); + }); - apiFunctions.setHandleRequest('getMimeType', function(entry, callback) { - var url = getEntryURL(entry); - fileManagerPrivateInternal.getMimeType(url, callback); - }); + apiFunctions.setHandleRequest( + 'getMimeType', function(entry, successCallback, failureCallback) { + var url = getEntryURL(entry); + fileManagerPrivateInternal.getMimeType( + url, callbackAdaptor(successCallback, failureCallback)); + }); - apiFunctions.setHandleRequest('searchFiles', function(params, callback) { - const newParams = { - query: params.query, - types: params.types, - maxResults: params.maxResults, - modifiedTimestamp: params.modifiedTimestamp || 0, - category: params.category || chrome.fileManagerPrivate.FileCategory.ALL - }; - if (params.rootDir) { - newParams.rootUrl = getEntryURL(params.rootDir); - } - fileManagerPrivateInternal.searchFiles(newParams, function(entryList) { - callback((entryList || []).map(e => GetExternalFileEntry(e))); - }); - }); + apiFunctions.setHandleRequest( + 'searchFiles', function(params, successCallback, failureCallback) { + const newParams = { + query: params.query, + types: params.types, + maxResults: params.maxResults, + modifiedTimestamp: params.modifiedTimestamp || 0, + category: + params.category || chrome.fileManagerPrivate.FileCategory.ALL + }; + if (params.rootDir) { + newParams.rootUrl = getEntryURL(params.rootDir); + } + let resultHandler = function(entryList) { + return (entryList || []).map(entry => GetExternalFileEntry(entry)); + }; + fileManagerPrivateInternal.searchFiles( + newParams, + callbackAdaptor(successCallback, failureCallback, resultHandler)); + }); apiFunctions.setHandleRequest('getContentMimeType', function(fileEntry, successCallback, failureCallback) { @@ -150,15 +209,13 @@ return; } - var onGetContentMimeType = function(blob, mimeType) { - // TODO(tjudkins): This should be triggering the failureCallback if - // there is an error while calling the Internal API in order to properly - // support promise rejection on the API. - successCallback(mimeType ? mimeType : undefined); + var resultHandler = function(blob, mimeType) { + return mimeType; }.bind(this, blob); // Bind a blob reference: crbug.com/415792#c12 fileManagerPrivateInternal.getContentMimeType( - blobUUID, onGetContentMimeType); + blobUUID, + callbackAdaptor(successCallback, failureCallback, resultHandler)); }, (error) => { failureCallback(`fileEntry.file() blob error: ${error.message}`); }); @@ -174,145 +231,181 @@ return; } - var onGetContentMetadata = function(blob, metadata) { - // TODO(tjudkins): This should be triggering the failureCallback if - // there is an error while calling the Internal API in order to properly - // support promise rejection on the API. - successCallback(metadata ? metadata : undefined); + var resultHandler = function(blob, metadata) { + return metadata; }.bind(this, blob); // Bind a blob reference: crbug.com/415792#c12 fileManagerPrivateInternal.getContentMetadata( - blobUUID, mimeType, !!includeImages, onGetContentMetadata); + blobUUID, mimeType, !!includeImages, + callbackAdaptor(successCallback, failureCallback, resultHandler)); }, (error) => { failureCallback(`fileEntry.file() blob error: ${error.message}`); }); }); - apiFunctions.setHandleRequest('pinDriveFile', function(entry, pin, callback) { - var url = getEntryURL(entry); - fileManagerPrivateInternal.pinDriveFile(url, pin, callback); - }); + apiFunctions.setHandleRequest( + 'pinDriveFile', function(entry, pin, successCallback, failureCallback) { + var url = getEntryURL(entry); + fileManagerPrivateInternal.pinDriveFile( + url, pin, callbackAdaptor(successCallback, failureCallback)); + }); - apiFunctions.setHandleRequest('executeTask', - function(descriptor, entries, callback) { + apiFunctions.setHandleRequest( + 'executeTask', + function(descriptor, entries, successCallback, failureCallback) { var urls = entries.map(function(entry) { return getEntryURL(entry); }); - fileManagerPrivateInternal.executeTask(descriptor, urls, callback); + fileManagerPrivateInternal.executeTask( + descriptor, urls, + callbackAdaptor(successCallback, failureCallback)); }); - apiFunctions.setHandleRequest('setDefaultTask', - function(descriptor, entries, mimeTypes, callback) { + apiFunctions.setHandleRequest( + 'setDefaultTask', + function( + descriptor, entries, mimeTypes, successCallback, failureCallback) { var urls = entries.map(function(entry) { return getEntryURL(entry); }); fileManagerPrivateInternal.setDefaultTask( - descriptor, urls, mimeTypes, callback); + descriptor, urls, mimeTypes, + callbackAdaptor(successCallback, failureCallback)); }); apiFunctions.setHandleRequest( - 'getFileTasks', function(entries, dlpSourceUrls, callback) { + 'getFileTasks', + function(entries, dlpSourceUrls, successCallback, failureCallback) { var urls = entries.map(function(entry) { return getEntryURL(entry); }); - fileManagerPrivateInternal.getFileTasks(urls, dlpSourceUrls, callback); + fileManagerPrivateInternal.getFileTasks( + urls, dlpSourceUrls, + callbackAdaptor(successCallback, failureCallback)); }); - apiFunctions.setHandleRequest('getDownloadUrl', function(entry, callback) { - var url = getEntryURL(entry); - fileManagerPrivateInternal.getDownloadUrl(url, callback); - }); + apiFunctions.setHandleRequest( + 'getDownloadUrl', function(entry, successCallback, failureCallback) { + var url = getEntryURL(entry); + fileManagerPrivateInternal.getDownloadUrl( + url, callbackAdaptor(successCallback, failureCallback)); + }); apiFunctions.setHandleRequest( 'getDisallowedTransfers', - function(entries, destinationEntry, isMove, callback) { + function( + entries, destinationEntry, isMove, successCallback, failureCallback) { var sourceUrls = entries.map(getEntryURL); var destinationUrl = getEntryURL(destinationEntry); fileManagerPrivateInternal.getDisallowedTransfers( - sourceUrls, destinationUrl, isMove, callback); + sourceUrls, destinationUrl, isMove, + callbackAdaptor(successCallback, failureCallback)); }); apiFunctions.setHandleRequest( - 'getDlpMetadata', function(entries, callback) { + 'getDlpMetadata', function(entries, successCallback, failureCallback) { var sourceUrls = entries.map(getEntryURL); fileManagerPrivateInternal.getDlpMetadata( - sourceUrls, callback); + sourceUrls, callbackAdaptor(successCallback, failureCallback)); }); - apiFunctions.setHandleRequest('getDriveQuotaMetadata', function( - entry, callback) { - var url = getEntryURL(entry); - fileManagerPrivateInternal.getDriveQuotaMetadata(url, callback); - }); + apiFunctions.setHandleRequest( + 'getDriveQuotaMetadata', + function(entry, successCallback, failureCallback) { + var url = getEntryURL(entry); + fileManagerPrivateInternal.getDriveQuotaMetadata( + url, callbackAdaptor(successCallback, failureCallback)); + }); apiFunctions.setHandleRequest( 'zipSelection', - (entries, parentEntry, destName, callback) => - fileManagerPrivateInternal.zipSelection( - getEntryURL(parentEntry), entries.map(getEntryURL), destName, - callback)); - - apiFunctions.setHandleRequest('validatePathNameLength', function( - entry, name, callback) { - - var url = getEntryURL(entry); - fileManagerPrivateInternal.validatePathNameLength(url, name, callback); - }); - - apiFunctions.setHandleRequest('getDirectorySize', function( - entry, callback) { - var url = getEntryURL(entry); - fileManagerPrivateInternal.getDirectorySize(url, callback); - }); - - apiFunctions.setHandleRequest('getRecentFiles', function( - restriction, file_type, invalidate_cache, callback) { - fileManagerPrivateInternal.getRecentFiles(restriction, file_type, - invalidate_cache, function(entryDescriptions) { - callback(entryDescriptions.map(function(description) { - return GetExternalFileEntry(description); - })); - }); - }); + function( + entries, parentEntry, destName, successCallback, failureCallback) { + fileManagerPrivateInternal.zipSelection( + getEntryURL(parentEntry), entries.map(getEntryURL), destName, + callbackAdaptor(successCallback, failureCallback)); + }); apiFunctions.setHandleRequest( - 'sharePathsWithCrostini', function(vmName, entries, persist, callback) { + 'validatePathNameLength', + function(entry, name, successCallback, failureCallback) { + var url = getEntryURL(entry); + fileManagerPrivateInternal.validatePathNameLength( + url, name, callbackAdaptor(successCallback, failureCallback)); + }); + + apiFunctions.setHandleRequest( + 'getDirectorySize', function(entry, successCallback, failureCallback) { + var url = getEntryURL(entry); + fileManagerPrivateInternal.getDirectorySize( + url, callbackAdaptor(successCallback, failureCallback)); + }); + + apiFunctions.setHandleRequest( + 'getRecentFiles', + function( + restriction, file_type, invalidate_cache, successCallback, + failureCallback) { + let resultHandler = function(entryDescriptions) { + return entryDescriptions.map(description => { + return GetExternalFileEntry(description); + }); + }; + fileManagerPrivateInternal.getRecentFiles( + restriction, file_type, invalidate_cache, + callbackAdaptor(successCallback, failureCallback, resultHandler)); + }); + + apiFunctions.setHandleRequest( + 'sharePathsWithCrostini', + function(vmName, entries, persist, successCallback, failureCallback) { const urls = entries.map((entry) => { return getEntryURL(entry); }); fileManagerPrivateInternal.sharePathsWithCrostini( - vmName, urls, persist, callback); + vmName, urls, persist, + callbackAdaptor(successCallback, failureCallback)); }); apiFunctions.setHandleRequest( - 'unsharePathWithCrostini', function(vmName, entry, callback) { + 'unsharePathWithCrostini', + function(vmName, entry, successCallback, failureCallback) { fileManagerPrivateInternal.unsharePathWithCrostini( - vmName, getEntryURL(entry), callback); + vmName, getEntryURL(entry), + callbackAdaptor(successCallback, failureCallback)); }); apiFunctions.setHandleRequest( 'getCrostiniSharedPaths', - function(observeFirstForSession, vmName, callback) { + function( + observeFirstForSession, vmName, successCallback, failureCallback) { + // TODO(tjudkins): This call can't use the callbackAdaptor due to it + // having a multiparameter callback. fileManagerPrivateInternal.getCrostiniSharedPaths( observeFirstForSession, vmName, function(entryDescriptions, firstForSession) { - callback(entryDescriptions.map(function(description) { - return GetExternalFileEntry(description); - }), firstForSession); + successCallback( + entryDescriptions.map(function(description) { + return GetExternalFileEntry(description); + }), + firstForSession); }); }); apiFunctions.setHandleRequest( - 'getLinuxPackageInfo', function(entry, callback) { + 'getLinuxPackageInfo', function(entry, successCallback, failureCallback) { var url = getEntryURL(entry); - fileManagerPrivateInternal.getLinuxPackageInfo(url, callback); + fileManagerPrivateInternal.getLinuxPackageInfo( + url, callbackAdaptor(successCallback, failureCallback)); }); - apiFunctions.setHandleRequest('installLinuxPackage', function( - entry, callback) { - var url = getEntryURL(entry); - fileManagerPrivateInternal.installLinuxPackage(url, callback); - }); + apiFunctions.setHandleRequest( + 'installLinuxPackage', function(entry, successCallback, failureCallback) { + // TODO(tjudkins): This call can't use the callbackAdaptor due to it + // having a multiparameter callback. + var url = getEntryURL(entry); + fileManagerPrivateInternal.installLinuxPackage(url, successCallback); + }); apiFunctions.setCustomCallback('searchFiles', function(callback, response) { @@ -338,32 +431,39 @@ }); apiFunctions.setHandleRequest( - 'sharesheetHasTargets', function(entries, callback) { + 'sharesheetHasTargets', + function(entries, successCallback, failureCallback) { var urls = entries.map(function(entry) { return getEntryURL(entry); }); - fileManagerPrivateInternal.sharesheetHasTargets(urls, callback); + fileManagerPrivateInternal.sharesheetHasTargets( + urls, callbackAdaptor(successCallback, failureCallback)); }); apiFunctions.setHandleRequest( 'invokeSharesheet', - function(entries, launchSource, dlpSourceUrls, callback) { + function( + entries, launchSource, dlpSourceUrls, successCallback, + failureCallback) { var urls = entries.map(function(entry) { return getEntryURL(entry); }); fileManagerPrivateInternal.invokeSharesheet( - urls, launchSource, dlpSourceUrls, callback); + urls, launchSource, dlpSourceUrls, + callbackAdaptor(successCallback, failureCallback)); }); apiFunctions.setHandleRequest( - 'toggleAddedToHoldingSpace', function(entries, added, callback) { + 'toggleAddedToHoldingSpace', + function(entries, added, successCallback, failureCallback) { const urls = entries.map(entry => getEntryURL(entry)); fileManagerPrivateInternal.toggleAddedToHoldingSpace( - urls, added, callback); + urls, added, callbackAdaptor(successCallback, failureCallback)); }); apiFunctions.setHandleRequest( - 'startIOTask', function(type, entries, params, callback) { + 'startIOTask', + function(type, entries, params, successCallback, failureCallback) { const urls = entries.map(entry => getEntryURL(entry)); let newParams = {}; if (params.destinationFolder) { @@ -376,21 +476,25 @@ if (params.showNotification !== undefined) { newParams.showNotification = params.showNotification; } - fileManagerPrivateInternal.startIOTask(type, urls, newParams, callback); + fileManagerPrivateInternal.startIOTask( + type, urls, newParams, + callbackAdaptor(successCallback, failureCallback)); }); apiFunctions.setHandleRequest( - 'parseTrashInfoFiles', function(entries, callback) { + 'parseTrashInfoFiles', + function(entries, successCallback, failureCallback) { const urls = entries.map(entry => getEntryURL(entry)); + let resultHandler = function(entryDescriptions) { + return entryDescriptions.map(description => { + description.restoreEntry = + GetExternalFileEntry(description.restoreEntry); + return description; + }); + }; fileManagerPrivateInternal.parseTrashInfoFiles( - urls, function(entryDescriptions) { - // Convert the restoreEntry to a DirectoryEntry. - callback(entryDescriptions.map(description => { - description.restoreEntry = - GetExternalFileEntry(description.restoreEntry); - return description; - })); - }); + urls, + callbackAdaptor(successCallback, failureCallback, resultHandler)); }); });
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index d1fe0d6..ebfea6f 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -651,6 +651,8 @@ "../browser/ui/views/frame/immersive_mode_tester.h", ] deps += [ + "base/chromeos/crosier:proto", + "//base/test:proto_test_support", "//chrome/browser/chromeos", "//chromeos/dbus/constants", ] @@ -2245,7 +2247,6 @@ "../browser/policy/test/content_settings_policy_browsertest.cc", "../browser/policy/test/default_search_provider_policy_browsertest.cc", "../browser/policy/test/force_google_safe_search_policy_browsertest.cc", - "../browser/policy/test/history_clusters_policy_browsertest.cc", "../browser/policy/test/jit_policy_browsertest.cc", "../browser/policy/test/platform_management_service_browsertest.cc", "../browser/policy/test/policy_browsertest.cc", @@ -2473,6 +2474,7 @@ "../browser/ui/update_chrome_dialog_browsertest.cc", "../browser/ui/user_education/show_promo_in_page_browsertest.cc", "../browser/ui/views/apps/app_info_dialog/app_info_dialog_views_browsertest.cc", + "../browser/ui/views/autofill/payments/offer_notification_icon_view_browsertest.cc", "../browser/ui/views/bluetooth_device_credentials_view_browsertest.cc", "../browser/ui/views/bluetooth_device_pair_confirm_view_browsertest.cc", "../browser/ui/views/bookmarks/bookmark_bar_view_browsertest.cc", @@ -4683,7 +4685,7 @@ "//chrome/browser/ui/webui/ash/manage_mirrorsync:mojo_bindings", "//chrome/browser/ui/webui/ash/parent_access:mojo_bindings", "//chrome/browser/ui/webui/ash/parent_access:proto", - "//chrome/browser/ui/webui/settings/ash:test_support", + "//chrome/browser/ui/webui/ash/settings/test_support", "//chrome/browser/ui/webui/settings/ash/files_page/mojom", "//chrome/services/file_util/public/cpp:browser_tests", "//chrome/services/keymaster/public/mojom",
diff --git a/chrome/test/base/chromeos/crosier/BUILD.gn b/chrome/test/base/chromeos/crosier/BUILD.gn new file mode 100644 index 0000000..619f849 --- /dev/null +++ b/chrome/test/base/chromeos/crosier/BUILD.gn
@@ -0,0 +1,9 @@ +# 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. + +import("//third_party/protobuf/proto_library.gni") + +proto_library("proto") { + sources = [ "chromeos_test_definition.proto" ] +}
diff --git a/chrome/test/base/chromeos/crosier/chromeos_integration_test_mixin.cc b/chrome/test/base/chromeos/crosier/chromeos_integration_test_mixin.cc index fed3b421..825a744 100644 --- a/chrome/test/base/chromeos/crosier/chromeos_integration_test_mixin.cc +++ b/chrome/test/base/chromeos/crosier/chromeos_integration_test_mixin.cc
@@ -5,6 +5,7 @@ #include "chrome/test/base/chromeos/crosier/chromeos_integration_test_mixin.h" #include "base/command_line.h" +#include "base/test/gtest_tags.h" #include "build/chromeos_buildflags.h" #include "ui/compositor/compositor_switches.h" #include "ui/gl/gl_switches.h" @@ -21,6 +22,26 @@ ChromeOSIntegrationTestMixin::~ChromeOSIntegrationTestMixin() = default; +void ChromeOSIntegrationTestMixin::AddTestInfo( + const chrome_test_base_chromeos_crosier::TestInfo& info) { + for (int i = 0; i < info.contacts_size(); ++i) { + // This field name aligns with existing Tast test format. + base::AddTagToTestResult("contacts", info.contacts(i)); + } + if (info.has_team_email()) { + // This field name aligns with 'team_email' in DIR_METADATA. + base::AddTagToTestResult("team_email", info.team_email()); + } + if (info.has_buganizer()) { + // This field name aligns with 'buganizer' in DIR_METADATA. + base::AddTagToTestResult("buganizer", info.buganizer()); + } + if (info.has_buganizer_public()) { + // This field name aligns with 'buganizer_public' in DIR_METADATA. + base::AddTagToTestResult("buganizer_public", info.buganizer_public()); + } +} + void ChromeOSIntegrationTestMixin::SetUpCommandLine( base::CommandLine* command_line) { // One of the main reason for using ChromeOS integration test is it can
diff --git a/chrome/test/base/chromeos/crosier/chromeos_integration_test_mixin.h b/chrome/test/base/chromeos/crosier/chromeos_integration_test_mixin.h index da6a8bc2..0b3a6d88 100644 --- a/chrome/test/base/chromeos/crosier/chromeos_integration_test_mixin.h +++ b/chrome/test/base/chromeos/crosier/chromeos_integration_test_mixin.h
@@ -5,6 +5,7 @@ #ifndef CHROME_TEST_BASE_CHROMEOS_CROSIER_CHROMEOS_INTEGRATION_TEST_MIXIN_H_ #define CHROME_TEST_BASE_CHROMEOS_CROSIER_CHROMEOS_INTEGRATION_TEST_MIXIN_H_ +#include "chrome/test/base/chromeos/crosier/chromeos_test_definition.pb.h" #include "chrome/test/base/mixin_based_in_process_browser_test.h" namespace base { @@ -21,6 +22,12 @@ delete; ~ChromeOSIntegrationTestMixin() override; + // Add the test information. + // Call this at the beginning of the test body. Setting test info would help + // other folks to understand the test and have better ownership. + // See |chromeos_test_definition.proto| for more information. + void AddTestInfo(const chrome_test_base_chromeos_crosier::TestInfo& info); + // InProcessBrowserTestMixin: void SetUpCommandLine(base::CommandLine* command_line) override; bool SetUpUserDataDirectory() override;
diff --git a/chrome/test/base/chromeos/crosier/chromeos_test_definition.proto b/chrome/test/base/chromeos/crosier/chromeos_test_definition.proto new file mode 100644 index 0000000..a68ca5ac --- /dev/null +++ b/chrome/test/base/chromeos/crosier/chromeos_test_definition.proto
@@ -0,0 +1,44 @@ +// 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. + +syntax = "proto3"; + +package chrome_test_base_chromeos_crosier; + +message TestInfo { + // Test case description. + // Write in a way that non developers can also understand. If possible, + // include a manual test steps. The intention is for test and release + // teams to understand the impacts. + // e.g. + // "This test verifies system UI can turn on bluetooth. + // 1 Open settings page. + // 2 Go to bluetooth page, turn off bluetooth. + // 3 Verify bluetooth is turned off. + // 4 Turn on bluetooth and verify it's turned on." + // "This test verifies system UI can turn on bluetooth. + // Manual test plan at https://shortn/<some_link> + optional string description = 1; + + // Individual owners of the tests. + // Use full email address. + repeated string contacts = 2; + + // The team of the test. + // If not set, the test is owned by the directory owner defined + // in DIR_METADATA. + optional string team_email = 3; + + // Internal buganizer component id. + // If not set, the test failure bug will be filed to the buganizer component + // defined in DIR_METADATA. + // e.g. 123456 + optional string buganizer = 4; + + // Public buganizer component id. + // If not set, the test failure bug will be filed to the public buganizer + // component defined in DIR_METADATA. + // e.g. 123456 + optional string buganizer_public = 5; +}
diff --git a/chrome/test/base/chromeos/crosier/demo_integration_test.cc b/chrome/test/base/chromeos/crosier/demo_integration_test.cc index cd32027..879ecab 100644 --- a/chrome/test/base/chromeos/crosier/demo_integration_test.cc +++ b/chrome/test/base/chromeos/crosier/demo_integration_test.cc
@@ -102,11 +102,23 @@ } #endif // BUILDFLAG(IS_CHROMEOS_ASH) - private: + protected: ChromeOSIntegrationTestMixin chromeos_integration_test_mixin_{&mixin_host_}; }; IN_PROC_BROWSER_TEST_F(DemoIntegrationTest, NewTab) { + chrome_test_base_chromeos_crosier::TestInfo info; + info.set_description(R"( +This test verifies Chrome can launch and open version page. +Manually: + 1 Launch Chrome + 2 Go to chrome://version + 3 Make sure the page can open successfully.)"); + info.add_contacts("svenzheng@chromium.org"); + info.add_contacts("jamescook@chromium.org"); + info.set_team_email("crosier-team@google.com"); + info.set_buganizer("1394295"); + chromeos_integration_test_mixin_.AddTestInfo(info); base::AddFeatureIdTagToTestResult( "screenplay-351d628b-e4a4-41c6-91e4-a4036ad12360");
diff --git a/chrome/test/data/extensions/api_test/file_browser/add_file_watch/test.js b/chrome/test/data/extensions/api_test/file_browser/add_file_watch/test.js index 678826e..6f44e2e 100644 --- a/chrome/test/data/extensions/api_test/file_browser/add_file_watch/test.js +++ b/chrome/test/data/extensions/api_test/file_browser/add_file_watch/test.js
@@ -54,22 +54,40 @@ /** Async wrapper for chrome.fileManager.addFileWatch() */ async function addFileWatch(...args) { - return new Promise(resolve => { - chrome.fileManagerPrivate.addFileWatch(...args, resolve); + return new Promise(function (resolve, reject) { + chrome.fileManagerPrivate.addFileWatch(...args, function(result) { + if (chrome.runtime.lastError) { + reject(chrome.runtime.lastError.message); + } else { + resolve(result); + } + }); }); } /** Async wrapper for chrome.fileManager.removeFileWatch() */ async function removeFileWatch(...args) { - return new Promise(resolve => { - chrome.fileManagerPrivate.removeFileWatch(...args, resolve); + return new Promise(function (resolve, reject) { + chrome.fileManagerPrivate.removeFileWatch(...args, function(result) { + if (chrome.runtime.lastError) { + reject(chrome.runtime.lastError.message); + } else { + resolve(result); + } + }); }); } /** Async wrapper for chrome.fileManager.removeMount() */ async function removeMount(...args) { - return new Promise(resolve => { - chrome.fileManagerPrivate.removeMount(...args, resolve); + return new Promise(function (resolve, reject) { + chrome.fileManagerPrivate.removeMount(...args, function(result) { + if (chrome.runtime.lastError) { + reject(chrome.runtime.lastError.message); + } else { + resolve(result); + } + }); }); } @@ -87,34 +105,28 @@ async function testAddFileWatchToWatchableVolume() { const downloads = volumesByVolumeKey['downloads']; await addFileWatch(downloads.root); - chrome.test.assertNoLastError(); await removeFileWatch(downloads.root); - chrome.test.assertNoLastError(); chrome.test.succeed(); }, // Test that addFileWatch fails on a non-watchable volume ("testing"). async function testAddFileWatchToNonWatchableVolume() { const testing = volumesByVolumeKey['testing']; - await addFileWatch(testing.root); - chrome.test.assertLastError('Volume is not watchable'); + chrome.test.assertPromiseRejects(addFileWatch(testing.root), + 'Volume is not watchable'); await removeFileWatch(testing.root); - // chrome.test.assertNoLastError(); chrome.test.succeed(); }, // Test that removeFileWatcher doesn't fail after unmounting the volume. async function testRemoveFileWatcherAfterUnmounting() { const volume = volumesByVolumeKey['testing']; - await addFileWatch(volume.root); - chrome.test.assertLastError('Volume is not watchable'); + chrome.test.assertPromiseRejects(addFileWatch(volume.root), + 'Volume is not watchable'); // Unmount the testing volume. await removeMount(volume.volumeId); - chrome.test.assertNoLastError(); - await removeFileWatch(volume.root); - chrome.test.assertNoLastError(); chrome.test.succeed(); }, ]);
diff --git a/chrome/test/data/webui/cr_components/most_visited_test.ts b/chrome/test/data/webui/cr_components/most_visited_test.ts index 1610e41..c2d20f30 100644 --- a/chrome/test/data/webui/cr_components/most_visited_test.ts +++ b/chrome/test/data/webui/cr_components/most_visited_test.ts
@@ -17,7 +17,7 @@ import {TestMock} from 'chrome://webui-test/test_mock.js'; import {eventToPromise} from 'chrome://webui-test/test_util.js'; -import {$$, assertNotStyle, assertStyle, keydown} from './most_visited_test_support.js'; +import {$$, assertStyle, keydown} from './most_visited_test_support.js'; let mostVisited: MostVisitedElement; let windowProxy: TestMock<MostVisitedWindowProxy>&MostVisitedWindowProxy; @@ -1203,24 +1203,6 @@ $$(mostVisited, '#addShortcutIcon'), 'background-color', 'rgb(255, 255, 255)'); }); - - test('add title pill', () => { - mostVisited.style.setProperty('--most-visited-text-shadow', '1px 2px'); - queryAll('.tile-title').forEach(tile => { - assertStyle(tile, 'background-color', 'rgba(0, 0, 0, 0)'); - }); - queryAll('.tile-title span').forEach(tile => { - assertNotStyle(tile, 'text-shadow', 'none'); - }); - mostVisited.toggleAttribute('use-title-pill_', true); - queryAll('.tile-title').forEach(tile => { - assertStyle(tile, 'background-color', 'rgb(255, 255, 255)'); - }); - queryAll('.tile-title span').forEach(tile => { - assertStyle(tile, 'text-shadow', 'none'); - assertStyle(tile, 'color', 'rgb(60, 64, 67)'); - }); - }); }); suite('Prerendering', () => {
diff --git a/chrome/test/data/webui/extensions/detail_view_test.ts b/chrome/test/data/webui/extensions/detail_view_test.ts index 9a1b67c5..ef3be13 100644 --- a/chrome/test/data/webui/extensions/detail_view_test.ts +++ b/chrome/test/data/webui/extensions/detail_view_test.ts
@@ -92,9 +92,10 @@ assertFalse(testIsVisible('extensions-runtime-host-permissions')); assertTrue(testIsVisible('#no-permissions')); - item.set( - 'data.permissions', - {simplePermissions: ['Permission 1', 'Permission 2']}); + item.set('data.permissions', { + simplePermissions: ['Permission 1', 'Permission 2'], + canAccessSiteData: false, + }); flush(); assertTrue(testIsVisible('#permissions-list')); assertEquals( @@ -107,7 +108,8 @@ assertFalse(testIsVisible('extensions-runtime-host-permissions')); // Reset state. item.set('data.dependentExtensions', []); - item.set('data.permissions', {simplePermissions: []}); + item.set( + 'data.permissions', {simplePermissions: [], canAccessSiteData: false}); flush(); const optionsUrl = @@ -197,6 +199,7 @@ hasAllHosts: true, hostAccess: chrome.developerPrivate.HostAccess.ON_CLICK, }, + canAccessSiteData: true, }; item.set('data.permissions', allSitesPermissions); flush(); @@ -214,6 +217,7 @@ hasAllHosts: false, hostAccess: chrome.developerPrivate.HostAccess.ON_SPECIFIC_SITES, }, + canAccessSiteData: true, }; item.set('data.permissions', someSitesPermissions); flush(); @@ -489,7 +493,8 @@ // the no site access message is in the permissions section and not in // the site access section. item.set('data.dependentExtensions', []); - item.set('data.permissions', {simplePermissions: []}); + item.set( + 'data.permissions', {simplePermissions: [], canAccessSiteData: false}); item.enableEnhancedSiteControls = true; flush(); @@ -499,9 +504,10 @@ 'itemPermissionsAndSiteAccessEmpty'))); assertFalse(testIsVisible('#no-site-access')); - item.set( - 'data.permissions', - {simplePermissions: ['Permission 1', 'Permission 2']}); + item.set('data.permissions', { + simplePermissions: ['Permission 1', 'Permission 2'], + canAccessSiteData: false, + }); flush(); // The permissions list should contain the above 2 permissions as well @@ -558,6 +564,7 @@ hasAllHosts: true, hostAccess: chrome.developerPrivate.HostAccess.ON_CLICK, }, + canAccessSiteData: true, }; item.set('data.permissions', allSitesPermissions); item.set('data.showAccessRequestsInToolbar', true);
diff --git a/chrome/test/data/webui/extensions/extensions_browsertest.cc b/chrome/test/data/webui/extensions/extensions_browsertest.cc index b859656..2ab759d 100644 --- a/chrome/test/data/webui/extensions/extensions_browsertest.cc +++ b/chrome/test/data/webui/extensions/extensions_browsertest.cc
@@ -220,6 +220,10 @@ RunTestCase("InspectableViewSortOrder"); } +IN_PROC_BROWSER_TEST_F(CrExtensionsItemsTest, EnableExtensionToggleTooltips) { + RunTestCase("EnableExtensionToggleTooltips"); +} + class CrExtensionsDetailViewTest : public ExtensionsBrowserTest { protected: void RunTestCase(const std::string& testCase) {
diff --git a/chrome/test/data/webui/extensions/item_test.ts b/chrome/test/data/webui/extensions/item_test.ts index 1b2c8db4..73d0bc5 100644 --- a/chrome/test/data/webui/extensions/item_test.ts +++ b/chrome/test/data/webui/extensions/item_test.ts
@@ -5,6 +5,7 @@ /** @fileoverview Suite of tests for extension-item. */ import {ExtensionsItemElement, IronIconElement, navigation, Page} from 'chrome://extensions/extensions.js'; +import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {assertDeepEquals, assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js'; import {isChildVisible} from 'chrome://webui-test/test_util.js'; @@ -441,4 +442,35 @@ .querySelector<HTMLElement>( '#inspect-views a:first-of-type')!.textContent!.trim()); }); + + // Test that the correct tooltip text is shown when the enable toggle is + // hovered over, depending on if the extension is enabled/disabled and its + // permissions. + test('EnableExtensionToggleTooltips', function() { + const paperTooltip = + item.shadowRoot!.querySelector<HTMLElement>('#enable-toggle-tooltip')!; + testVisible(item, '#enable-toggle-tooltip', false); + + item.$.enableToggle.dispatchEvent( + new MouseEvent('mouseenter', {bubbles: true, composed: true})); + flush(); + testVisible(item, '#enable-toggle-tooltip', true); + assertEquals( + loadTimeData.getString('enableToggleTooltipEnabled'), + paperTooltip.textContent!.trim()); + + item.set( + 'data.permissions', + {simplePermissions: ['activeTab'], canAccessSiteData: true}); + flush(); + assertEquals( + loadTimeData.getString('enableToggleTooltipEnabledWithSiteAccess'), + paperTooltip.textContent!.trim()); + + item.set('data.state', 'DISABLED'); + flush(); + assertEquals( + loadTimeData.getString('enableToggleTooltipDisabled'), + paperTooltip.textContent!.trim()); + }); });
diff --git a/chrome/test/data/webui/extensions/test_util.ts b/chrome/test/data/webui/extensions/test_util.ts index f1ca66d..3a576dfab 100644 --- a/chrome/test/data/webui/extensions/test_util.ts +++ b/chrome/test/data/webui/extensions/test_util.ts
@@ -218,7 +218,7 @@ offlineEnabled: false, runtimeErrors: [], runtimeWarnings: [], - permissions: {simplePermissions: []}, + permissions: {simplePermissions: [], canAccessSiteData: false}, state: 'ENABLED', type: 'EXTENSION', updateUrl: '',
diff --git a/chrome/test/data/webui/history/history_metrics_test.ts b/chrome/test/data/webui/history/history_metrics_test.ts index eeec40c..f7ca6ae9 100644 --- a/chrome/test/data/webui/history/history_metrics_test.ts +++ b/chrome/test/data/webui/history/history_metrics_test.ts
@@ -7,7 +7,6 @@ import {BrowserServiceImpl, ensureLazyLoaded, HistoryAppElement, HistoryEntry, HistoryPageViewHistogram, SYNCED_TABS_HISTOGRAM_NAME, SyncedTabsHistogram} from 'chrome://history/history.js'; import {webUIListenerCallback} from 'chrome://resources/js/cr.js'; -import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {assertEquals, assertTrue} from 'chrome://webui-test/chai_assert.js'; import {flushTasks, waitAfterNextRender} from 'chrome://webui-test/polymer_test_util.js'; @@ -23,9 +22,6 @@ suiteSetup(function() { disableLinkClicks(); - loadTimeData.overrideValues({ - renameJourneys: false, - }); }); setup(async () => {
diff --git a/chrome/test/data/webui/history/history_routing_test.ts b/chrome/test/data/webui/history/history_routing_test.ts index 06d14d7..488d8c5 100644 --- a/chrome/test/data/webui/history/history_routing_test.ts +++ b/chrome/test/data/webui/history/history_routing_test.ts
@@ -28,7 +28,6 @@ enableHistoryClusters: 'Enable', isHistoryClustersEnabled, isHistoryClustersVisible: true, - renameJourneys: false, }); });
diff --git a/chrome/test/data/webui/js/BUILD.gn b/chrome/test/data/webui/js/BUILD.gn index 39ee12b5..0b958ce 100644 --- a/chrome/test/data/webui/js/BUILD.gn +++ b/chrome/test/data/webui/js/BUILD.gn
@@ -19,6 +19,7 @@ "parse_html_subset_trusted_types_test.ts", "promise_resolver_test.ts", "static_types_test.ts", + "store_test.ts", "test_suite_self_test.ts", "util_test.ts", ]
diff --git a/chrome/test/data/webui/js/js_browsertest.cc b/chrome/test/data/webui/js/js_browsertest.cc index e1ca531..f90e147d 100644 --- a/chrome/test/data/webui/js/js_browsertest.cc +++ b/chrome/test/data/webui/js/js_browsertest.cc
@@ -52,6 +52,10 @@ RunTest("js/static_types_test.js", "mocha.run();"); } +IN_PROC_BROWSER_TEST_F(WebUiJsTest, Store) { + RunTest("js/store_test.js", "mocha.run();"); +} + IN_PROC_BROWSER_TEST_F(WebUiJsTest, MetricsReporter) { // MetricsReporter needs a host that enables BINDINGS_POLICY_MOJO_WEB_UI. // Any WebUI host should work, except chrome://webui-test since it is just a
diff --git a/chrome/test/data/webui/js/store_test.ts b/chrome/test/data/webui/js/store_test.ts new file mode 100644 index 0000000..d8e47b93 --- /dev/null +++ b/chrome/test/data/webui/js/store_test.ts
@@ -0,0 +1,111 @@ +// 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. + +import {Action, Store, StoreObserver} from 'chrome://resources/js/store_ts.js'; +import {assertDeepEquals, assertEquals, assertFalse} from 'chrome://webui-test/chai_assert.js'; + +interface TestState { + value: string; +} + +interface TestAction extends Action { + name: 'append'; + value: string; +} + +function reducer({value}: TestState, action: TestAction): TestState { + switch (action.name) { + case 'append': + return {value: value + action.value}; + } +} + +class TestObserver implements StoreObserver<TestState> { + values: string[] = []; + + onStateChanged({value}: TestState) { + this.values.push(value); + } +} + +suite('StoreTest', function() { + let store: Store<TestState, TestAction>; + + setup(function() { + store = new Store({value: ''}, reducer); + }); + + test('pre-init dispatch queues actions', function() { + assertFalse(store.isInitialized(), 'store not initialized yet'); + + store.dispatch({name: 'append', value: '+pre-init-action'}); + store.dispatch({name: 'append', value: '+second-action'}); + assertEquals('', store.data.value, 'no actions processed yet'); + + store.init({value: 'initial'}); + + assertEquals( + 'initial+pre-init-action+second-action', store.data.value, + 'append action processed'); + }); + + test('notifies observers of changes', function() { + store.init({value: ''}); + + const observer = new TestObserver(); + store.addObserver(observer); + + const actions: TestAction[] = [ + {name: 'append', value: 'a'}, + {name: 'append', value: 'b'}, + {name: 'append', value: 'c'}, + ]; + actions.forEach(action => store.dispatch(action)); + assertDeepEquals( + ['a', 'ab', 'abc'], observer.values, + 'each state is recorded by observer'); + }); + + test('batches changes together after beginBatchUpdate', function() { + store.init({value: ''}); + + const observer = new TestObserver(); + store.addObserver(observer); + + store.dispatch({name: 'append', value: 'a'}); + store.beginBatchUpdate(); + const actions: TestAction[] = [ + {name: 'append', value: 'x'}, + {name: 'append', value: 'yz'}, + ]; + actions.forEach(action => store.dispatch(action)); + + assertEquals( + 'axyz', store.data.value, + 'batch update actions still update store data'); + assertDeepEquals( + ['a'], observer.values, 'observers are behind actual store data'); + + store.endBatchUpdate(); + + assertDeepEquals( + ['a', 'axyz'], observer.values, + 'observed values grouped the batch actions'); + }); + + test('removeObserver stops updates', function() { + store.init({value: ''}); + const observer = new TestObserver(); + + store.addObserver(observer); + store.dispatch({name: 'append', value: 'a'}); + store.dispatch({name: 'append', value: 'b'}); + store.removeObserver(observer); + store.dispatch({name: 'append', value: 'c'}); + + assertDeepEquals( + ['a', 'ab'], observer.values, + 'append c not received after removeObserver'); + }); +});
diff --git a/chrome/test/data/webui/new_tab_page/app_test.ts b/chrome/test/data/webui/new_tab_page/app_test.ts index ddb728c..ba95fd73 100644 --- a/chrome/test/data/webui/new_tab_page/app_test.ts +++ b/chrome/test/data/webui/new_tab_page/app_test.ts
@@ -382,17 +382,6 @@ assertTrue(mostVisited.hasAttribute('use-white-tile-icon_')); }); - test('theme updates use title pill', async () => { - const theme = createTheme(); - theme.mostVisited.useTitlePill = true; - callbackRouterRemote.setTheme(theme); - const mostVisited = $$(app, '#mostVisited'); - assertTrue(!!mostVisited); - assertFalse(mostVisited.hasAttribute('use-title-pill_')); - await callbackRouterRemote.$.flushForTesting(); - assertTrue(mostVisited.hasAttribute('use-title-pill_')); - }); - test('theme updates is dark', async () => { const theme = createTheme(); theme.mostVisited.isDark = true;
diff --git a/chrome/test/data/webui/new_tab_page/test_support.ts b/chrome/test/data/webui/new_tab_page/test_support.ts index 1a403a30..2fbeefbf 100644 --- a/chrome/test/data/webui/new_tab_page/test_support.ts +++ b/chrome/test/data/webui/new_tab_page/test_support.ts
@@ -63,7 +63,6 @@ const mostVisited = { backgroundColor: {value: 0xff00ff00}, isDark, - useTitlePill: false, useWhiteTileIcon: false, }; return {
diff --git a/chrome/updater/test/integration_tests.cc b/chrome/updater/test/integration_tests.cc index 26fb847..cf1742df 100644 --- a/chrome/updater/test/integration_tests.cc +++ b/chrome/updater/test/integration_tests.cc
@@ -14,10 +14,12 @@ #include "base/functional/bind.h" #include "base/functional/callback.h" #include "base/functional/callback_helpers.h" +#include "base/functional/function_ref.h" #include "base/memory/scoped_refptr.h" #include "base/path_service.h" #include "base/run_loop.h" #include "base/strings/stringprintf.h" +#include "base/strings/utf_string_conversions.h" #include "base/test/bind.h" #include "base/test/scoped_run_loop_timeout.h" #include "base/test/task_environment.h" @@ -71,6 +73,11 @@ namespace updater::test { namespace { +namespace enterprise_management = + ::wireless_android_enterprise_devicemanagement; +using enterprise_management::ApplicationSettings; +using enterprise_management::OmahaSettingsClientProto; + #if BUILDFLAG(IS_WIN) || !defined(COMPONENT_BUILD) void ExpectNoUpdateSequence(ScopedServer* test_server, @@ -298,11 +305,12 @@ test_commands_->ExpectAppVersion(app_id, version); } - void InstallApp(const std::string& app_id, - const base::Version& version = base::Version("0.1"), - base::OnceClosure post_install_action = base::DoNothing()) { + void InstallApp( + const std::string& app_id, + const base::Version& version = base::Version("0.1"), + base::FunctionRef<void()> post_install_action = []() {}) { test_commands_->InstallApp(app_id, version); - std::move(post_install_action).Run(); + post_install_action(); } void UninstallApp(const std::string& app_id) { @@ -523,6 +531,7 @@ ASSERT_NO_FATAL_FAILURE(InstallApp("test")); ASSERT_TRUE(WaitForUpdaterExit()); + ASSERT_NO_FATAL_FAILURE(ExpectInstalled()); ASSERT_NO_FATAL_FAILURE(ExpectVersionActive(kUpdaterVersion)); ASSERT_NO_FATAL_FAILURE(ExpectRegistered("test")); @@ -1528,12 +1537,43 @@ IntegrationTest::TearDown(); } + base::FilePath GetInstallerPath(const std::string& installer) const { + return base::FilePath::FromASCII("test_installer").AppendASCII(installer); + } + void PushEnrollmentToken(const std::string& enrollment_token) { scoped_refptr<DMStorage> storage = GetDefaultDMStorage(); EXPECT_TRUE(storage->StoreEnrollmentToken(enrollment_token)); EXPECT_TRUE(storage->DeleteDMToken()); } + void InstallAppWithVersion(const std::string& app_id, + const base::Version& version) { + InstallApp(app_id, version, [&]() { + // Run test app installer to set app `pv` value to its initial + // version. + base::FilePath exe_path; + ASSERT_TRUE(base::PathService::Get(base::DIR_EXE, &exe_path)); + base::CommandLine command( + exe_path.Append(GetInstallerPath(kAppCRX).ReplaceExtension( + FILE_PATH_LITERAL(".exe")))); + command.AppendArg("--system"); + command.AppendSwitchASCII("--company", COMPANY_SHORTNAME_STRING); + command.AppendSwitchASCII("--appid", app_id); + command.AppendSwitchASCII("--product_version", version.GetString()); + VLOG(2) << "Launch app setup command: " << command.GetCommandLineString(); + base::Process process = base::LaunchProcess(command, {}); + if (!process.IsValid()) { + VLOG(2) << "Invalid process launching command: " + << command.GetCommandLineString(); + } + int exit_code = -1; + EXPECT_TRUE(process.WaitForExitWithTimeout(TestTimeouts::action_timeout(), + &exit_code)); + EXPECT_EQ(0, exit_code); + }); + } + void ExpectAppInstalled(const std::string& appid, const base::Version& expected_version) { ASSERT_NO_FATAL_FAILURE(ExpectAppVersion(appid, expected_version)); @@ -1550,27 +1590,23 @@ std::unique_ptr<ScopedServer> test_server_; static constexpr char kEnrollmentToken[] = "integration-enrollment-token"; static constexpr char kDMToken[] = "integration-dm-token"; - static constexpr char kAppId[] = "test1"; + static constexpr char kAppId1[] = "test1"; + static constexpr char kAppId2[] = "test2"; + static constexpr char kAppId3[] = "test3"; + static constexpr char kAppCRX[] = "TestApp2Setup.crx3"; }; TEST_F(IntegrationTestDeviceManagement, PolicyFetchBeforeInstall) { - if (!IsSystemInstall(GetTestScope())) { - GTEST_SKIP(); - } - - ::wireless_android_enterprise_devicemanagement::OmahaSettingsClientProto - omaha_settings; + OmahaSettingsClientProto omaha_settings; omaha_settings.set_install_default( - ::wireless_android_enterprise_devicemanagement::INSTALL_DEFAULT_DISABLED); + enterprise_management::INSTALL_DEFAULT_DISABLED); omaha_settings.set_proxy_server("test.proxy.server"); - ::wireless_android_enterprise_devicemanagement::ApplicationSettings app; - app.set_app_guid(kAppId); - app.set_update( - ::wireless_android_enterprise_devicemanagement::AUTOMATIC_UPDATES_ONLY); + ApplicationSettings app; + app.set_app_guid(kAppId1); + app.set_update(enterprise_management::AUTOMATIC_UPDATES_ONLY); app.set_target_version_prefix("0.1"); app.set_rollback_to_target_version( - ::wireless_android_enterprise_devicemanagement:: - ROLLBACK_TO_TARGET_VERSION_ENABLED); + enterprise_management::ROLLBACK_TO_TARGET_VERSION_ENABLED); omaha_settings.mutable_application_settings()->Add(std::move(app)); PushEnrollmentToken(kEnrollmentToken); @@ -1582,85 +1618,121 @@ ASSERT_NO_FATAL_FAILURE(Install()); ASSERT_NO_FATAL_FAILURE(ExpectInstalled()); - std::unique_ptr< - ::wireless_android_enterprise_devicemanagement::OmahaSettingsClientProto> - omaha_policy = GetDefaultDMStorage()->GetOmahaPolicySettings(); + std::unique_ptr<OmahaSettingsClientProto> omaha_policy = + GetDefaultDMStorage()->GetOmahaPolicySettings(); EXPECT_EQ(omaha_policy->proxy_server(), "test.proxy.server"); - const ::wireless_android_enterprise_devicemanagement::ApplicationSettings& - app_policy = omaha_policy->application_settings()[0]; - EXPECT_EQ(app_policy.app_guid(), kAppId); - EXPECT_EQ( - app_policy.update(), - ::wireless_android_enterprise_devicemanagement::AUTOMATIC_UPDATES_ONLY); + const ApplicationSettings& app_policy = + omaha_policy->application_settings()[0]; + EXPECT_EQ(app_policy.app_guid(), kAppId1); + EXPECT_EQ(app_policy.update(), enterprise_management::AUTOMATIC_UPDATES_ONLY); EXPECT_EQ(app_policy.target_version_prefix(), "0.1"); EXPECT_EQ(app_policy.rollback_to_target_version(), - ::wireless_android_enterprise_devicemanagement:: - ROLLBACK_TO_TARGET_VERSION_ENABLED); + enterprise_management::ROLLBACK_TO_TARGET_VERSION_ENABLED); ASSERT_NO_FATAL_FAILURE(ExpectUninstallPing(test_server_.get())); ASSERT_NO_FATAL_FAILURE(Uninstall()); } #if !defined(COMPONENT_BUILD) -TEST_F(IntegrationTestDeviceManagement, RollbackToTargetVersion) { - if (!IsSystemInstall(GetTestScope())) { - GTEST_SKIP(); - } +TEST_F(IntegrationTestDeviceManagement, AppUpdateConflictPolicies) { + const base::Version kApp1InitialVersion = base::Version("1.2.3.4"); + const base::Version kApp1UpdatedVersion = base::Version("2.3.4.5"); + const base::Version kApp2InitialVersion = base::Version("100.0.0.0"); + const base::Version kApp2UpdatedVersion = base::Version("101.0.0.0"); + const base::Version kApp3InitialVersion = base::Version("1.0"); + const base::Version kApp3UpdatedVersion = base::Version("1.1"); + ASSERT_NO_FATAL_FAILURE(Install()); + ASSERT_NO_FATAL_FAILURE(InstallAppWithVersion(kAppId1, kApp1InitialVersion)); + ASSERT_NO_FATAL_FAILURE(InstallAppWithVersion(kAppId2, kApp2InitialVersion)); + ASSERT_NO_FATAL_FAILURE(InstallAppWithVersion(kAppId3, kApp3InitialVersion)); + ASSERT_NO_FATAL_FAILURE(ExpectInstalled()); + ASSERT_NO_FATAL_FAILURE(ExpectAppInstalled(kAppId1, kApp1InitialVersion)); + ASSERT_NO_FATAL_FAILURE(ExpectAppInstalled(kAppId2, kApp2InitialVersion)); + ASSERT_NO_FATAL_FAILURE(ExpectAppInstalled(kAppId3, kApp3InitialVersion)); + + // Group policy sets app2 to auto-update. + base::win::RegKey key(HKEY_LOCAL_MACHINE, UPDATER_POLICIES_KEY, + Wow6432(KEY_WRITE)); + EXPECT_EQ( + ERROR_SUCCESS, + key.WriteValue( + base::ASCIIToWide(base::StringPrintf("Update%s", kAppId2)).c_str(), + kPolicyEnabled)); + + // Cloud policy sets update default to disabled, app1 to auto-update, and + // app2 to manual-update. + PushEnrollmentToken(kEnrollmentToken); + ExpectDeviceManagementRegistrationRequest(test_server_.get(), + kEnrollmentToken, kDMToken); + OmahaSettingsClientProto omaha_settings; + omaha_settings.set_update_default(enterprise_management::UPDATES_DISABLED); + ApplicationSettings app1; + app1.set_app_guid(kAppId1); + app1.set_update(enterprise_management::AUTOMATIC_UPDATES_ONLY); + omaha_settings.mutable_application_settings()->Add(std::move(app1)); + ApplicationSettings app2; + app2.set_app_guid(kAppId2); + app2.set_update(enterprise_management::MANUAL_UPDATES_ONLY); + omaha_settings.mutable_application_settings()->Add(std::move(app2)); + ExpectDeviceManagementPolicyFetchRequest(test_server_.get(), kDMToken, + omaha_settings); + + const base::FilePath crx_path = GetInstallerPath(kAppCRX); + ExpectAppsUpdateSequence( + UpdaterScope::kSystem, test_server_.get(), + { + AppUpdateExpectation({kAppId1, kApp1InitialVersion, + kApp1UpdatedVersion, + /*should_update=*/true, false, "", crx_path}), + AppUpdateExpectation({kAppId2, kApp2InitialVersion, + kApp2UpdatedVersion, + /*should_update=*/true, false, "", crx_path}), + AppUpdateExpectation({kAppId3, kApp3InitialVersion, + kApp3UpdatedVersion, + /*should_update=*/false, false, "", crx_path}), + }); + ASSERT_NO_FATAL_FAILURE(RunWake(0)); + ASSERT_TRUE(WaitForUpdaterExit()); + ASSERT_NO_FATAL_FAILURE(ExpectAppInstalled(kAppId1, kApp1UpdatedVersion)); + ASSERT_NO_FATAL_FAILURE(ExpectAppInstalled(kAppId2, kApp2UpdatedVersion)); + ASSERT_NO_FATAL_FAILURE(ExpectAppInstalled(kAppId3, kApp3InitialVersion)); + + ASSERT_NO_FATAL_FAILURE(ExpectUninstallPing(test_server_.get())); + ASSERT_NO_FATAL_FAILURE(Uninstall()); +} + +TEST_F(IntegrationTestDeviceManagement, RollbackToTargetVersion) { constexpr char kTargetVersionPrefix[] = "1.0."; const base::Version kAppInitialVersion = base::Version("2.3.1.0"); const base::Version kAppRollbackVersion = base::Version("1.0.1.2"); ASSERT_NO_FATAL_FAILURE(Install()); - ASSERT_NO_FATAL_FAILURE(InstallApp( - kAppId, kAppInitialVersion, base::BindLambdaForTesting([&]() { - // Run test app installer to set app `pv` value to its initial version. - base::FilePath exe_path; - ASSERT_TRUE(base::PathService::Get(base::DIR_EXE, &exe_path)); - base::CommandLine command(exe_path.AppendASCII("test_installer") - .AppendASCII("TestApp2Setup.exe")); - command.AppendArg("--system"); - command.AppendSwitchASCII("--company", COMPANY_SHORTNAME_STRING); - command.AppendSwitchASCII("--appid", kAppId); - command.AppendSwitchASCII("--product_version", - kAppInitialVersion.GetString()); - VLOG(2) << "Launch app setup command: " - << command.GetCommandLineString(); + ASSERT_NO_FATAL_FAILURE(InstallAppWithVersion(kAppId1, kAppInitialVersion)); - base::Process process = base::LaunchProcess(command, {}); - if (!process.IsValid()) { - VLOG(2) << "Invalid process launching command: " - << command.GetCommandLineString(); - } - - int exit_code = -1; - EXPECT_TRUE(process.WaitForExitWithTimeout( - TestTimeouts::action_timeout(), &exit_code)); - EXPECT_EQ(0, exit_code); - }))); ASSERT_NO_FATAL_FAILURE(ExpectInstalled()); - ASSERT_NO_FATAL_FAILURE(ExpectAppInstalled(kAppId, kAppInitialVersion)); + ASSERT_NO_FATAL_FAILURE(ExpectAppInstalled(kAppId1, kAppInitialVersion)); PushEnrollmentToken(kEnrollmentToken); ExpectDeviceManagementRegistrationRequest(test_server_.get(), kEnrollmentToken, kDMToken); - ::wireless_android_enterprise_devicemanagement::OmahaSettingsClientProto - omaha_settings; - ::wireless_android_enterprise_devicemanagement::ApplicationSettings app; - app.set_app_guid(kAppId); + OmahaSettingsClientProto omaha_settings; + ApplicationSettings app; + app.set_app_guid(kAppId1); app.set_target_version_prefix(kTargetVersionPrefix); app.set_rollback_to_target_version( - ::wireless_android_enterprise_devicemanagement:: - ROLLBACK_TO_TARGET_VERSION_ENABLED); + enterprise_management::ROLLBACK_TO_TARGET_VERSION_ENABLED); omaha_settings.mutable_application_settings()->Add(std::move(app)); ExpectDeviceManagementPolicyFetchRequest(test_server_.get(), kDMToken, omaha_settings); - ExpectAppRollbackUpdateSequence(UpdaterScope::kSystem, test_server_.get(), - kAppId, - /*allow_rollback=*/true, kTargetVersionPrefix, - kAppInitialVersion, kAppRollbackVersion); + + ExpectAppsUpdateSequence( + UpdaterScope::kSystem, test_server_.get(), + {AppUpdateExpectation(kAppId1, kAppInitialVersion, kAppRollbackVersion, + /*should_update=*/true, /*allow_rollback=*/true, + kTargetVersionPrefix, GetInstallerPath(kAppCRX))}); ASSERT_NO_FATAL_FAILURE(RunWake(0)); ASSERT_TRUE(WaitForUpdaterExit()); - ASSERT_NO_FATAL_FAILURE(ExpectAppInstalled(kAppId, kAppRollbackVersion)); + ASSERT_NO_FATAL_FAILURE(ExpectAppInstalled(kAppId1, kAppRollbackVersion)); ASSERT_NO_FATAL_FAILURE(ExpectUninstallPing(test_server_.get())); ASSERT_NO_FATAL_FAILURE(Uninstall());
diff --git a/chrome/updater/test/integration_tests_impl.cc b/chrome/updater/test/integration_tests_impl.cc index 7d5df14..6e380159 100644 --- a/chrome/updater/test/integration_tests_impl.cc +++ b/chrome/updater/test/integration_tests_impl.cc
@@ -110,19 +110,16 @@ return base::HexEncode(actual_hash, sizeof(actual_hash)); } -std::string GetUpdateResponse(const std::string& app_id, - const std::string& install_data_index, - const std::string& codebase, - const base::Version& version, - const base::FilePath& update_file, - const std::string& run_action, - const std::string& arguments, - const std::string& file_hash) { +std::string GetUpdateResponseForApp( + const std::string& app_id, + const std::string& install_data_index, + const std::string& codebase, + const base::Version& version, + const base::FilePath& update_file, + const std::string& run_action, + const std::string& arguments, + const absl::optional<std::string>& file_hash = absl::nullopt) { return base::StringPrintf( - ")]}'\n" - R"({"response":{)" - R"( "protocol":"3.1",)" - R"( "app":[)" R"( {)" R"( "appid":"%s",)" R"( "status":"ok",)" @@ -141,9 +138,7 @@ R"( })" R"( })" R"( })" - R"( })" - R"( ])" - R"(}})", + R"( })", base::ToLowerASCII(app_id).c_str(), !install_data_index.empty() ? base::StringPrintf( @@ -154,7 +149,33 @@ : "", codebase.c_str(), version.GetString().c_str(), run_action.c_str(), arguments.c_str(), update_file.BaseName().AsUTF8Unsafe().c_str(), - file_hash.c_str()); + file_hash ? file_hash->c_str() : GetHashHex(update_file).c_str()); +} + +std::string GetUpdateResponse(const std::vector<std::string>& app_responses) { + return base::StringPrintf( + ")]}'\n" + R"({"response":{)" + R"( "protocol":"3.1",)" + R"( "app":[)" + R"(%s)" + R"( ])" + R"(}})", + base::JoinString(app_responses, ",\n").c_str()); +} + +std::string GetUpdateResponse(const std::string& app_id, + const std::string& install_data_index, + const std::string& codebase, + const base::Version& version, + const base::FilePath& update_file, + const std::string& run_action, + const std::string& arguments, + const std::string& file_hash) { + return GetUpdateResponse( + {GetUpdateResponseForApp(app_id, install_data_index, codebase, version, + update_file, run_action, arguments, file_hash) + .c_str()}); } std::string GetUpdateResponse(const std::string& app_id, @@ -292,6 +313,25 @@ } // namespace +AppUpdateExpectation::AppUpdateExpectation( + const std::string& app_id, + const base::Version& from_version, + const base::Version& to_version, + bool should_update, + bool allow_rollback, + const std::string& target_version_prefix, + const base::FilePath& crx_relative_path) + : app_id(app_id), + from_version(from_version), + to_version(to_version), + should_update(should_update), + allow_rollback(allow_rollback), + target_version_prefix(target_version_prefix), + crx_relative_path(crx_relative_path) {} +AppUpdateExpectation::AppUpdateExpectation(const AppUpdateExpectation&) = + default; +AppUpdateExpectation::~AppUpdateExpectation() = default; + void ExitTestMode(UpdaterScope scope) { DeleteFileAndEmptyParentDirectories(GetOverrideFilePath(scope)); } @@ -446,56 +486,80 @@ EXPECT_EQ(count, 0) << ": " << count << " crashes found"; } +void ExpectAppsUpdateSequence(UpdaterScope scope, + ScopedServer* test_server, + const std::vector<AppUpdateExpectation>& apps) { #if BUILDFLAG(IS_WIN) -void ExpectAppRollbackUpdateSequence(UpdaterScope scope, - ScopedServer* test_server, - const std::string& app_id, - bool rollback_allowed, - const std::string& target_version_prefix, - const base::Version& from_version, - const base::Version& to_version) { + const base::FilePath::StringType kExeExtension = FILE_PATH_LITERAL(".exe"); +#else + const base::FilePath::StringType kExeExtension = FILE_PATH_LITERAL(""); +#endif // BUILDFLAG(IS_WIN) + base::FilePath exe_path; ASSERT_TRUE(base::PathService::Get(base::DIR_EXE, &exe_path)); - base::FilePath crx_path = exe_path.Append(FILE_PATH_LITERAL("test_installer")) - .AppendASCII("TestApp2Setup.crx3"); - ASSERT_TRUE(base::PathExists(crx_path)); // First request: update check. - test_server->ExpectOnce( - {request::GetPathMatcher(test_server->update_path()), - request::GetContentMatcher({ - base::StringPrintf(R"("appid":"%s")", app_id.c_str()), - rollback_allowed ? "\"rollback_allowed\":true" : "", - target_version_prefix.empty() - ? "" - : base::StringPrintf(R"("targetversionprefix":"%s")", - target_version_prefix.c_str()), - }), - request::GetScopeMatcher(scope)}, - GetUpdateResponse( - app_id, "", test_server->update_url().spec(), to_version, crx_path, - "TestApp2Setup.exe", - base::StringPrintf("%s --appid=%s --company=%s --product_version=%s", - IsSystemInstall(scope) ? "--system" : "", - app_id.c_str(), COMPANY_SHORTNAME_STRING, - to_version.GetString().c_str()))); + std::vector<std::string> app_requests; + std::vector<std::string> app_responses; + for (const AppUpdateExpectation& app : apps) { + const base::FilePath crx_path = exe_path.Append(app.crx_relative_path); + app_requests.push_back( + base::StringPrintf(R"("appid":"%s")", app.app_id.c_str())); + app_responses.push_back(GetUpdateResponseForApp( + app.app_id, "", test_server->update_url().spec(), app.to_version, + crx_path, + crx_path.BaseName() + .ReplaceExtension(kExeExtension) + .MaybeAsASCII() + .c_str(), + base::StringPrintf("%s --appid=%s --company=%s --product_version=%s", + IsSystemInstall(scope) ? "--system" : "", + app.app_id.c_str(), COMPANY_SHORTNAME_STRING, + app.to_version.GetString().c_str()))); + } + test_server->ExpectOnce({request::GetPathMatcher(test_server->update_path()), + request::GetContentMatcher(app_requests), + request::GetScopeMatcher(scope)}, + GetUpdateResponse(app_responses)); - // Second request: update download. - std::string crx_bytes; - base::ReadFileToString(crx_path, &crx_bytes); - test_server->ExpectOnce({request::GetContentMatcher({""})}, crx_bytes); + for (const AppUpdateExpectation& app : apps) { + if (app.should_update) { + // Download requests for apps that update + const base::FilePath crx_path = exe_path.Append(app.crx_relative_path); + ASSERT_TRUE(base::PathExists(crx_path)); + std::string crx_bytes; + base::ReadFileToString(crx_path, &crx_bytes); + test_server->ExpectOnce({request::GetContentMatcher({""})}, crx_bytes); - // Third request: event ping. - test_server->ExpectOnce( - {request::GetPathMatcher(test_server->update_path()), - request::GetContentMatcher({base::StringPrintf( - R"(.*"eventresult":1,"eventtype":3,)" - R"("nextversion":"%s","previousversion":"%s".*)", - to_version.GetString().c_str(), from_version.GetString().c_str())}), - request::GetScopeMatcher(scope)}, - ")]}'\n"); + // Followed by event ping. + test_server->ExpectOnce( + {request::GetPathMatcher(test_server->update_path()), + request::GetContentMatcher({base::StringPrintf( + R"(.*"appid":"%s",.*)" + R"("eventresult":1,"eventtype":3,)" + R"("nextversion":"%s","previousversion":"%s".*)" + R"("version":"%s".*)", + app.app_id.c_str(), app.to_version.GetString().c_str(), + app.from_version.GetString().c_str(), + app.to_version.GetString().c_str())})}, + ")]}'\n"); + } else { + // Event ping for apps that doesn't update. + test_server->ExpectOnce( + {request::GetPathMatcher(test_server->update_path()), + request::GetContentMatcher({base::StringPrintf( + R"(.*"appid":"%s",.*)" + R"(.*"errorcat":4,"errorcode":2,)" + R"("eventresult":0,"eventtype":3,)" + R"("nextversion":"%s","previousversion":"%s".*)" + R"("version":"%s".*)", + app.app_id.c_str(), app.to_version.GetString().c_str(), + app.from_version.GetString().c_str(), + app.from_version.GetString().c_str())})}, + ")]}'\n"); + } + } } -#endif // BUILDFLAG(IS_WIN) void RunWake(UpdaterScope scope, int expected_exit_code) { RunUpdaterWithSwitch(base::Version(kUpdaterVersion), scope, kWakeSwitch,
diff --git a/chrome/updater/test/integration_tests_impl.h b/chrome/updater/test/integration_tests_impl.h index 7d4906f..2051606 100644 --- a/chrome/updater/test/integration_tests_impl.h +++ b/chrome/updater/test/integration_tests_impl.h
@@ -7,6 +7,7 @@ #include <set> #include <string> +#include <vector> #include "base/containers/flat_map.h" #include "base/files/file_path.h" @@ -40,6 +41,26 @@ kCreateInstalledApp = 1, }; +struct AppUpdateExpectation { + AppUpdateExpectation(const std::string& app_id, + const base::Version& from_version, + const base::Version& to_version, + bool should_update, + bool allow_rollback, + const std::string& target_version_prefix, + const base::FilePath& crx_relative_path); + AppUpdateExpectation(const AppUpdateExpectation&); + ~AppUpdateExpectation(); + + const std::string app_id; + const base::Version from_version; + const base::Version to_version; + const bool should_update; + const bool allow_rollback; + const std::string target_version_prefix; + const base::FilePath crx_relative_path; +}; + // Returns the path to the updater installer program (in the build output // directory). This is typically the updater setup, or the updater itself for // the platforms where a setup program is not provided. @@ -279,15 +300,9 @@ const base::Version& from_version, const base::Version& to_version); -#if BUILDFLAG(IS_WIN) -void ExpectAppRollbackUpdateSequence(UpdaterScope scope, - ScopedServer* test_server, - const std::string& app_id, - bool allow_rollback, - const std::string& target_version_prefix, - const base::Version& from_version, - const base::Version& to_version); -#endif // BUILDFLAG(IS_WIN) +void ExpectAppsUpdateSequence(UpdaterScope scope, + ScopedServer* test_server, + const std::vector<AppUpdateExpectation>& apps); void StressUpdateService(UpdaterScope scope);
diff --git a/chromeos/ash/components/network/device_state.cc b/chromeos/ash/components/network/device_state.cc index 83adf7e..d8bce70 100644 --- a/chromeos/ash/components/network/device_state.cc +++ b/chromeos/ash/components/network/device_state.cc
@@ -15,6 +15,21 @@ #include "third_party/cros_system_api/dbus/service_constants.h" namespace ash { +namespace { + +bool IpTypeMatchesIpConfigMethod(const std::string& type, + const std::string& method) { + if (type == method) { + return true; + } + if (type == shill::kTypeIPv4) { + return method == shill::kTypeDHCP; + } + return type == shill::kTypeIPv6 && + (method == shill::kTypeDHCP6 || method == shill::kTypeSLAAC); +} + +} // namespace DeviceState::DeviceState(const std::string& path) : ManagedState(MANAGED_TYPE_DEVICE, path) {} @@ -194,9 +209,7 @@ ip_config.FindString(shill::kMethodProperty); if (!ip_config_method) continue; - if (type == *ip_config_method || - (type == shill::kTypeIPv4 && *ip_config_method == shill::kTypeDHCP) || - (type == shill::kTypeIPv6 && *ip_config_method == shill::kTypeDHCP6)) { + if (IpTypeMatchesIpConfigMethod(type, *ip_config_method)) { const std::string* address = ip_config.FindString(shill::kAddressProperty); if (!address)
diff --git a/chromeos/ash/components/network/device_state_unittest.cc b/chromeos/ash/components/network/device_state_unittest.cc index d04edb6..b3068c8 100644 --- a/chromeos/ash/components/network/device_state_unittest.cc +++ b/chromeos/ash/components/network/device_state_unittest.cc
@@ -21,6 +21,12 @@ const char kTestWifiDevicePath[] = "wifi_path"; const char kTestWifiDeviceName[] = "wifi_name"; +const char kTestIpv6ConfigPath[] = "/ipconfig/wlan0_ipv6"; +const char kTestIpv4ConfigPath[] = "/ipconfig/wlan0_ipv4"; +const char kTestIpv4Address_1[] = "192.168.1.255"; +const char kTestIpv4Address_2[] = "192.168.1.123"; +const char kTestIpv6Address_1[] = "2600:1700:6900:f000:ab00:8a39:2099:72fd"; +const char kTestIpv6Address_2[] = "2600:1700:6900:f000:ab00:8a39:2099:12df"; // Creates a list of cellular SIM slots with an eSIM and pSIM slot. base::Value GenerateTestSimSlotInfos() { @@ -70,6 +76,14 @@ return helper_.network_state_handler()->GetDeviceState(kTestWifiDevicePath); } + void UpdateDeviceIpConfigProperties(const std::string& device_path, + const std::string& ip_config_path, + base::Value::Dict properties) { + helper_.network_state_handler()->UpdateIPConfigProperties( + ManagedState::MANAGED_TYPE_DEVICE, device_path, ip_config_path, + std::move(properties)); + } + void SetIccid() { helper_.device_test()->SetDeviceProperty( kTestCellularDevicePath, shill::kIccidProperty, @@ -118,4 +132,46 @@ EXPECT_TRUE(GetWifiDevice()->GetSimSlotInfos().empty()); } +TEST_F(DeviceStateTest, DeviceIPAddress) { + auto dhcp_ip_config = base::Value::Dict() + .Set(shill::kAddressProperty, kTestIpv4Address_1) + .Set(shill::kMethodProperty, shill::kTypeDHCP); + UpdateDeviceIpConfigProperties(kTestWifiDevicePath, kTestIpv4ConfigPath, + std::move(dhcp_ip_config)); + EXPECT_EQ(kTestIpv4Address_1, + GetWifiDevice()->GetIpAddressByType(shill::kTypeIPv4)); + EXPECT_EQ(std::string(), + GetWifiDevice()->GetIpAddressByType(shill::kTypeIPv6)); + + auto ipv4_ip_config = base::Value::Dict() + .Set(shill::kAddressProperty, kTestIpv4Address_2) + .Set(shill::kMethodProperty, shill::kTypeIPv4); + UpdateDeviceIpConfigProperties(kTestWifiDevicePath, kTestIpv4ConfigPath, + std::move(ipv4_ip_config)); + EXPECT_EQ(kTestIpv4Address_2, + GetWifiDevice()->GetIpAddressByType(shill::kTypeIPv4)); + EXPECT_EQ(std::string(), + GetWifiDevice()->GetIpAddressByType(shill::kTypeIPv6)); + + auto slaac_ip_config = base::Value::Dict() + .Set(shill::kAddressProperty, kTestIpv6Address_1) + .Set(shill::kMethodProperty, shill::kTypeSLAAC); + UpdateDeviceIpConfigProperties(kTestWifiDevicePath, kTestIpv6ConfigPath, + std::move(slaac_ip_config)); + EXPECT_EQ(kTestIpv4Address_2, + GetWifiDevice()->GetIpAddressByType(shill::kTypeIPv4)); + EXPECT_EQ(kTestIpv6Address_1, + GetWifiDevice()->GetIpAddressByType(shill::kTypeIPv6)); + + auto ipv6_ip_config = base::Value::Dict() + .Set(shill::kAddressProperty, kTestIpv6Address_2) + .Set(shill::kMethodProperty, shill::kTypeIPv6); + UpdateDeviceIpConfigProperties(kTestWifiDevicePath, kTestIpv6ConfigPath, + std::move(ipv6_ip_config)); + EXPECT_EQ(kTestIpv4Address_2, + GetWifiDevice()->GetIpAddressByType(shill::kTypeIPv4)); + EXPECT_EQ(kTestIpv6Address_2, + GetWifiDevice()->GetIpAddressByType(shill::kTypeIPv6)); +} + } // namespace ash
diff --git a/chromeos/ash/components/network/network_state_handler.h b/chromeos/ash/components/network/network_state_handler.h index 7c60241a..1d2c74e 100644 --- a/chromeos/ash/components/network/network_state_handler.h +++ b/chromeos/ash/components/network/network_state_handler.h
@@ -531,6 +531,7 @@ private: typedef std::map<std::string, std::string> SpecifierGuidMap; + friend class DeviceStateTest; friend class NetworkStateHandlerTest; friend class TechnologyStateController;
diff --git a/chromeos/ash/components/scalable_iph/scalable_iph.cc b/chromeos/ash/components/scalable_iph/scalable_iph.cc index e3335a5..c98df9f 100644 --- a/chromeos/ash/components/scalable_iph/scalable_iph.cc +++ b/chromeos/ash/components/scalable_iph/scalable_iph.cc
@@ -649,7 +649,7 @@ delegate_->ShowNotification( *notification_params.get(), std::make_unique<IphSession>(*feature, tracker_, this)); - break; + return; } case UiType::kBubble: { std::unique_ptr<BubbleParams> bubble_params = @@ -662,7 +662,7 @@ delegate_->ShowBubble( *bubble_params.get(), std::make_unique<IphSession>(*feature, tracker_, this)); - break; + return; } case UiType::kNone: break;
diff --git a/chromeos/ash/services/nearby/public/mojom/nearby_presence_credential_storage.mojom b/chromeos/ash/services/nearby/public/mojom/nearby_presence_credential_storage.mojom index 1224031..ce62c1f 100644 --- a/chromeos/ash/services/nearby/public/mojom/nearby_presence_credential_storage.mojom +++ b/chromeos/ash/services/nearby/public/mojom/nearby_presence_credential_storage.mojom
@@ -4,8 +4,17 @@ module ash.nearby.presence.mojom; +import "chromeos/ash/services/nearby/public/mojom/nearby_presence.mojom"; + // Used by the utility process to fetch from and write to the storage component // of credentials for Nearby Presence. Implementation lives in // the browser process. // TODO(b/287333989): Implement relevant methods. -interface NearbyPresenceCredentialStorage {}; \ No newline at end of file +interface NearbyPresenceCredentialStorage { + // SaveCredentials saves the provided credentials to the Nearby Presence + // Credential Storage database. If the credentials were saved successfully, + // 'status' will be kOk, otherwise, it will be kFailure. + // TODO(b/287334195): Accept public_credentials as a parameter. + SaveCredentials(array<LocalCredential> local_credentials) + => (StatusCode status); +}; \ No newline at end of file
diff --git a/chromeos/crosapi/mojom/app_service.mojom b/chromeos/crosapi/mojom/app_service.mojom index 5010a67..f91d56b 100644 --- a/chromeos/crosapi/mojom/app_service.mojom +++ b/chromeos/crosapi/mojom/app_service.mojom
@@ -82,10 +82,9 @@ // succeeded, the size of the returning icon is expected to be as close as // possible with the |size_hint_in_dip| set in the interface, but may not be // exactly the same. - // TODO(crbug/1380608): Deprecated this interface when enable the unfified - // AppService icon loading flag. + // DEPRECATED. Use GetCompressedIcon() instead. [MinVersion=5] - LoadIcon@5( + DEPRECATED_LoadIcon@5( string app_id, IconKey icon_key, IconType icon_type,
diff --git a/components/autofill/core/browser/autofill_client.cc b/components/autofill/core/browser/autofill_client.cc index 99201a1..f6a29cc 100644 --- a/components/autofill/core/browser/autofill_client.cc +++ b/components/autofill/core/browser/autofill_client.cc
@@ -173,7 +173,8 @@ } void AutofillClient::UpdateOfferNotification(const AutofillOfferData* offer, - bool notification_has_been_shown) { + bool notification_has_been_shown, + bool expand_notification_icon) { // This is overridden by platform subclasses. Currently only // ChromeAutofillClient (Chrome Desktop and Clank) implement this. }
diff --git a/components/autofill/core/browser/autofill_client.h b/components/autofill/core/browser/autofill_client.h index 600630b..e780aab 100644 --- a/components/autofill/core/browser/autofill_client.h +++ b/components/autofill/core/browser/autofill_client.h
@@ -770,11 +770,14 @@ // TODO(crbug.com/1093057): Rename all the "domain" in this flow to origin. // The server is passing down full origin of the // urls. "Domain" is no longer accurate. - // Notifies the client to update the offer notification when the |offer| is - // available. |notification_has_been_shown| indicates whether this + // Notifies the client to update the offer notification when the `offer` is + // available. `notification_has_been_shown` indicates whether this // notification has been shown since profile start-up. + // `expand_notification_icon` indicates whether the notification will + // automatically expand upon being shown. virtual void UpdateOfferNotification(const AutofillOfferData* offer, - bool notification_has_been_shown); + bool notification_has_been_shown, + bool expand_notification_icon); // Dismiss any visible offer notification on the current tab. virtual void DismissOfferNotification();
diff --git a/components/autofill/core/browser/payments/offer_notification_handler.cc b/components/autofill/core/browser/payments/offer_notification_handler.cc index dbe4323..e5bd02b1 100644 --- a/components/autofill/core/browser/payments/offer_notification_handler.cc +++ b/components/autofill/core/browser/payments/offer_notification_handler.cc
@@ -63,7 +63,8 @@ } client->UpdateOfferNotification( - offer, shown_notification_ids_.contains(offer->GetOfferId())); + offer, shown_notification_ids_.contains(offer->GetOfferId()), + /*expand_notification_icon=*/false); shown_notification_ids_.insert(offer->GetOfferId()); }
diff --git a/components/browser_sync/active_devices_provider_impl.cc b/components/browser_sync/active_devices_provider_impl.cc index b5e69c7a..b5c83fc 100644 --- a/components/browser_sync/active_devices_provider_impl.cc +++ b/components/browser_sync/active_devices_provider_impl.cc
@@ -11,6 +11,7 @@ #include "base/feature_list.h" #include "base/metrics/field_trial_params.h" #include "base/ranges/algorithm.h" +#include "base/trace_event/trace_event.h" #include "components/browser_sync/active_devices_provider_impl.h" #include "components/browser_sync/browser_sync_switches.h" #include "components/sync/base/model_type.h" @@ -33,6 +34,7 @@ syncer::ActiveDevicesInvalidationInfo ActiveDevicesProviderImpl::CalculateInvalidationInfo( const std::string& local_cache_guid) const { + TRACE_EVENT0("ui", "ActiveDevicesProviderImpl::CalculateInvalidationInfo"); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); const std::vector<std::unique_ptr<syncer::DeviceInfo>> active_devices = @@ -98,6 +100,9 @@ switches::kSyncFCMRegistrationTokensListMaxSize.Get())) { all_fcm_registration_tokens.clear(); } + TRACE_EVENT0("ui", + "ActiveDevicesProviderImpl::CalculateInvalidationInfo() => " + "ActiveDevicesInvalidationInfo::Create"); return syncer::ActiveDevicesInvalidationInfo::Create( std::move(all_fcm_registration_tokens), all_interested_data_types,
diff --git a/components/components_strings.grd b/components/components_strings.grd index e13fef4f..810ffc93 100644 --- a/components/components_strings.grd +++ b/components/components_strings.grd
@@ -381,7 +381,7 @@ <message name="IDS_SAVE" desc="Used on a button to save information you are editing."> Save </message> - <message name="IDS_MENU" desc="The accessible name for the Menu. This is used as the aria-roledescription for context menus."> + <message name="IDS_MENU" desc="The accessible name for the Menu. This is used as the aria-roledescription for context menus." formatter_data="android_java"> Menu </message> <message name="IDS_INSTALL" desc="Text to be displayed when an action will trigger an installation (of a component, app from the Play Store, etc.).">
diff --git a/components/crash/core/common/objc_zombie_unittest.mm b/components/crash/core/common/objc_zombie_unittest.mm index e14fecc5..97f6ba7 100644 --- a/components/crash/core/common/objc_zombie_unittest.mm +++ b/components/crash/core/common/objc_zombie_unittest.mm
@@ -12,7 +12,7 @@ @interface ZombieCxxDestructTest : NSObject { - base::scoped_nsobject<id> _aRef; + base::apple::scoped_nsobject<id> _aRef; } - (instancetype)initWith:(id)anObject; @end @@ -53,12 +53,12 @@ // NOTE(shess): To test the negative, comment out the |g_objectDestruct()| // call in |ZombieDealloc()|. TEST(ObjcZombieTest, CxxDestructors) { - base::scoped_nsobject<id> anObject([[NSObject alloc] init]); + base::apple::scoped_nsobject<id> anObject([[NSObject alloc] init]); EXPECT_EQ(1u, [anObject retainCount]); ASSERT_TRUE(ObjcEvilDoers::ZombieEnable(YES, 100)); - base::scoped_nsobject<ZombieCxxDestructTest> soonInfected( + base::apple::scoped_nsobject<ZombieCxxDestructTest> soonInfected( [[ZombieCxxDestructTest alloc] initWith:anObject]); EXPECT_EQ(2u, [anObject retainCount]); @@ -75,12 +75,12 @@ // Verify that the associated objects are released when the object is // released. TEST(ObjcZombieTest, AssociatedObjectsReleased) { - base::scoped_nsobject<id> anObject([[NSObject alloc] init]); + base::apple::scoped_nsobject<id> anObject([[NSObject alloc] init]); EXPECT_EQ(1u, [anObject retainCount]); ASSERT_TRUE(ObjcEvilDoers::ZombieEnable(YES, 100)); - base::scoped_nsobject<ZombieAssociatedObjectTest> soonInfected( + base::apple::scoped_nsobject<ZombieAssociatedObjectTest> soonInfected( [[ZombieAssociatedObjectTest alloc] initWithAssociatedObject:anObject]); EXPECT_EQ(2u, [anObject retainCount]);
diff --git a/components/feature_engagement/README.md b/components/feature_engagement/README.md index 5825f8f..674591b 100644 --- a/components/feature_engagement/README.md +++ b/components/feature_engagement/README.md
@@ -875,6 +875,18 @@ --vmodule=tracker_impl*=2,event_model_impl*=2,persistent_availability_store*=2,chrome_variations_configuration*=3 ``` +## Automated External Testing (Tast) + +If you want to restrict the IPH that can show when launching Chrome as an +external process as part of a test, use the `--propagate-iph-for-testing` +switch: + + * `chrome --propagate-iph-for-testing` + - disables all IPH + * `chrome --propagate-iph-for-testing=IPH_GoatTeleportationFeature,IPH_FlyingCowFeature` + - disables all IPH except for "IPH_GoatTeleportationFeature" and + "IPH_FlyingCowFeature". + ## Development of `//components/feature_engagement` ### Testing
diff --git a/components/feature_engagement/public/group_constants.cc b/components/feature_engagement/public/group_constants.cc index 9c870c3..d9f25ca 100644 --- a/components/feature_engagement/public/group_constants.cc +++ b/components/feature_engagement/public/group_constants.cc
@@ -11,7 +11,7 @@ // Group-related features used by the In-Product Help system. -BASE_FEATURE(kIPHGroups, "IPHGroups", base::FEATURE_DISABLED_BY_DEFAULT); +BASE_FEATURE(kIPHGroups, "IPHGroups", base::FEATURE_ENABLED_BY_DEFAULT); // Group features used by various clients to control their In-Product Help // groups.
diff --git a/components/history_clusters/core/features.cc b/components/history_clusters/core/features.cc index 539f7f8..bdea49d 100644 --- a/components/history_clusters/core/features.cc +++ b/components/history_clusters/core/features.cc
@@ -111,8 +111,4 @@ const base::FeatureParam<bool> kSidePanelJourneysOpensFromOmnibox{ &kSidePanelJourneys, "SidePanelJourneysOpensFromOmnibox", true}; -BASE_FEATURE(kRenameJourneys, - "RenameJourneys", - enabled_by_default_desktop_only); - } // namespace history_clusters
diff --git a/components/history_clusters/core/features.h b/components/history_clusters/core/features.h index 00eae7c..a31a22a 100644 --- a/components/history_clusters/core/features.h +++ b/components/history_clusters/core/features.h
@@ -96,9 +96,6 @@ extern const base::FeatureParam<bool> kSidePanelJourneysOpensFromOmnibox; BASE_DECLARE_FEATURE(kSidePanelJourneysQueryless); -// Enables renaming Journeys in the UI. -BASE_DECLARE_FEATURE(kRenameJourneys); - } // namespace history_clusters #endif // COMPONENTS_HISTORY_CLUSTERS_CORE_FEATURES_H_
diff --git a/components/history_clusters/core/history_clusters_service.cc b/components/history_clusters/core/history_clusters_service.cc index f59a026a..7a1663c 100644 --- a/components/history_clusters/core/history_clusters_service.cc +++ b/components/history_clusters/core/history_clusters_service.cc
@@ -9,7 +9,6 @@ #include <string> #include <utility> -#include "base/feature_list.h" #include "base/functional/bind.h" #include "base/i18n/case_conversion.h" #include "base/json/values_util.h" @@ -26,7 +25,6 @@ #include "components/history/core/browser/history_db_task.h" #include "components/history/core/browser/history_types.h" #include "components/history_clusters/core/config.h" -#include "components/history_clusters/core/features.h" #include "components/history_clusters/core/file_clustering_backend.h" #include "components/history_clusters/core/history_clusters_debug_jsons.h" #include "components/history_clusters/core/history_clusters_prefs.h" @@ -171,14 +169,8 @@ void HistoryClustersService::Shutdown() {} bool HistoryClustersService::IsJourneysEnabledAndVisible() const { - const bool rename_journeys = base::FeatureList::IsEnabled(kRenameJourneys); - const bool journeys_is_managed = - pref_service_->IsManagedPreference(prefs::kVisible); - // When history_clusters::kRenameJourneys is enabled, history clusters are - // always visible unless the visibility prefs is set to false by policy. return is_journeys_feature_flag_enabled_ && - (pref_service_->GetBoolean(prefs::kVisible) || - (rename_journeys && !journeys_is_managed)); + pref_service_->GetBoolean(prefs::kVisible); } // static
diff --git a/components/history_clusters/core/url_constants.cc b/components/history_clusters/core/url_constants.cc index dfa17ec..bc8290f 100644 --- a/components/history_clusters/core/url_constants.cc +++ b/components/history_clusters/core/url_constants.cc
@@ -3,15 +3,9 @@ // found in the LICENSE file. #include "components/history_clusters/core/url_constants.h" -#include "base/feature_list.h" -#include "components/history_clusters/core/features.h" namespace history_clusters { -const char* GetChromeUIHistoryClustersURL() { - return base::FeatureList::IsEnabled(history_clusters::kRenameJourneys) - ? "chrome://history/2" - : "chrome://history/journeys"; -} +const char kChromeUIHistoryClustersURL[] = "chrome://history/journeys"; } // namespace history_clusters
diff --git a/components/history_clusters/core/url_constants.h b/components/history_clusters/core/url_constants.h index 45b2b61..acb13f7 100644 --- a/components/history_clusters/core/url_constants.h +++ b/components/history_clusters/core/url_constants.h
@@ -7,10 +7,8 @@ namespace history_clusters { -// Returns the main History Clusters WebUI URL. -// TODO(crbug.com/1473855): Change to a const char array when feature check is -// no longer needed. -const char* GetChromeUIHistoryClustersURL(); +// The main History Clusters WebUI URL. +extern const char kChromeUIHistoryClustersURL[]; } // namespace history_clusters
diff --git a/components/history_clusters_strings.grdp b/components/history_clusters_strings.grdp index f26df8c..a916da88 100644 --- a/components/history_clusters_strings.grdp +++ b/components/history_clusters_strings.grdp
@@ -23,16 +23,10 @@ <message name="IDS_HISTORY_CLUSTERS_JOURNEYS_TAB_LABEL" desc="A label for the section in Chrome History (chrome://history) where Journeys are collected and shown to the user. See glossary entry for meaning of 'Journeys'." formatter_data="android_java"> Journeys </message> - <message name="IDS_HISTORY_CLUSTERS_BY_GROUP_TAB_LABEL" desc="A label for the section in Chrome History (chrome://history) where a list of history items organized into groups of pages are shown to the user."> - By group - </message> <message name="IDS_HISTORY_CLUSTERS_LIST_TAB_LABEL" desc="A label for the section in Chrome History (chrome://history) where a list of history items are shown to the user." formatter_data="android_java"> List </message> - <message name="IDS_HISTORY_CLUSTERS_BY_DATE_TAB_LABEL" desc="A label for the section in Chrome History (chrome://history) where a list of history items are shown to the user."> - By date - </message> <message name="IDS_HISTORY_CLUSTERS_CLUSTER_LABEL_SEARCH_TERMS" desc="The header used for Journeys that are anchored by search terms. The header is just the search terms in locale-specific quotation marks."> “<ph name="SEARCH_TERMS">$1<ex>flowers</ex></ph>” </message>
diff --git a/components/history_clusters_strings_grdp/IDS_HISTORY_CLUSTERS_BY_DATE_TAB_LABEL.png.sha1 b/components/history_clusters_strings_grdp/IDS_HISTORY_CLUSTERS_BY_DATE_TAB_LABEL.png.sha1 deleted file mode 100644 index 1adf428..0000000 --- a/components/history_clusters_strings_grdp/IDS_HISTORY_CLUSTERS_BY_DATE_TAB_LABEL.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -5eb14a828f3365fdc0a30c03e5d6aa50a3f48145 \ No newline at end of file
diff --git a/components/history_clusters_strings_grdp/IDS_HISTORY_CLUSTERS_BY_GROUP_TAB_LABEL.png.sha1 b/components/history_clusters_strings_grdp/IDS_HISTORY_CLUSTERS_BY_GROUP_TAB_LABEL.png.sha1 deleted file mode 100644 index e3b5f60..0000000 --- a/components/history_clusters_strings_grdp/IDS_HISTORY_CLUSTERS_BY_GROUP_TAB_LABEL.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -6b6a348177560a4bd28325c068cf078c93a039ac \ No newline at end of file
diff --git a/components/memory_pressure/system_memory_pressure_evaluator_mac.h b/components/memory_pressure/system_memory_pressure_evaluator_mac.h index 18a6766..c8cef53e 100644 --- a/components/memory_pressure/system_memory_pressure_evaluator_mac.h +++ b/components/memory_pressure/system_memory_pressure_evaluator_mac.h
@@ -51,7 +51,8 @@ void OnMemoryPressureChanged(); // The dispatch source that generates memory pressure change notifications. - base::ScopedDispatchObject<dispatch_source_t> memory_level_event_source_; + base::apple::ScopedDispatchObject<dispatch_source_t> + memory_level_event_source_; // Timer that will re-notify with the current vote at regular interval. base::RepeatingTimer renotify_current_vote_timer_;
diff --git a/components/named_mojo_ipc_server/named_mojo_server_endpoint_connector_mac.cc b/components/named_mojo_ipc_server/named_mojo_server_endpoint_connector_mac.cc index da6e6e5..fc166ef 100644 --- a/components/named_mojo_ipc_server/named_mojo_server_endpoint_connector_mac.cc +++ b/components/named_mojo_ipc_server/named_mojo_server_endpoint_connector_mac.cc
@@ -52,7 +52,7 @@ // Note: |server_endpoint_| must outlive |dispatch_source_|. mojo::PlatformChannelServerEndpoint server_endpoint_; - std::unique_ptr<base::DispatchSourceMach> dispatch_source_; + std::unique_ptr<base::apple::DispatchSourceMach> dispatch_source_; }; NamedMojoServerEndpointConnectorMac::NamedMojoServerEndpointConnectorMac( @@ -120,7 +120,7 @@ } server_endpoint_ = std::move(server_endpoint); - dispatch_source_ = std::make_unique<base::DispatchSourceMach>( + dispatch_source_ = std::make_unique<base::apple::DispatchSourceMach>( options_.server_name.c_str(), port(), ^{ HandleRequest(); });
diff --git a/components/omnibox/browser/actions/history_clusters_action.cc b/components/omnibox/browser/actions/history_clusters_action.cc index 87a2731..9c91b5f5 100644 --- a/components/omnibox/browser/actions/history_clusters_action.cc +++ b/components/omnibox/browser/actions/history_clusters_action.cc
@@ -91,8 +91,8 @@ } GURL GetFullJourneysUrlForQuery(const std::string& query) { - return net::AppendOrReplaceQueryParameter( - GURL(GetChromeUIHistoryClustersURL()), "q", query); + return net::AppendOrReplaceQueryParameter(GURL(kChromeUIHistoryClustersURL), + "q", query); } HistoryClustersAction::HistoryClustersAction(
diff --git a/components/omnibox/browser/actions/history_clusters_action_unittest.cc b/components/omnibox/browser/actions/history_clusters_action_unittest.cc index 1b3244ab..77dbb68 100644 --- a/components/omnibox/browser/actions/history_clusters_action_unittest.cc +++ b/components/omnibox/browser/actions/history_clusters_action_unittest.cc
@@ -9,12 +9,10 @@ #include "base/files/scoped_temp_dir.h" #include "base/memory/scoped_refptr.h" #include "base/ranges/algorithm.h" -#include "base/test/scoped_feature_list.h" #include "base/test/task_environment.h" #include "components/history/core/browser/history_service.h" #include "components/history/core/test/history_service_test_util.h" #include "components/history_clusters/core/config.h" -#include "components/history_clusters/core/features.h" #include "components/history_clusters/core/history_clusters_prefs.h" #include "components/history_clusters/core/history_clusters_service.h" #include "components/history_clusters/core/history_clusters_service_test_api.h" @@ -62,9 +60,6 @@ // `history_dir_` needs to be initialized once only. void SetUp() override { - scoped_feature_list_.InitAndDisableFeature( - history_clusters::kRenameJourneys); - CHECK(history_dir_.CreateUniqueTempDir()); history_service_ = history::CreateHistoryService(history_dir_.GetPath(), true); @@ -131,8 +126,6 @@ base::test::TaskEnvironment task_environment_; - base::test::ScopedFeatureList scoped_feature_list_; - base::ScopedTempDir history_dir_; std::unique_ptr<history::HistoryService> history_service_; std::unique_ptr<HistoryClustersService> history_clusters_service_;
diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc index 5890933d..718a228b 100644 --- a/components/omnibox/browser/autocomplete_controller.cc +++ b/components/omnibox/browser/autocomplete_controller.cc
@@ -1807,18 +1807,6 @@ match_itr->RecordAdditionalInfo("ml_legacy_relevance", match_itr->relevance); match_itr->relevance = relevance_heap.top(); - - // Fuzzy matches use the scoring signals for history and bookmark - // providers with the "corrected" input. This leads to an artificially - // high confidence from the model. Correct for this by re-applying the - // penalty from the history fuzzy provider. - if (match_itr->provider && match_itr->provider->type() == - AutocompleteProvider::TYPE_HISTORY_FUZZY) { - match_itr->RecordAdditionalInfo("ml_relevance_before_penalty", - match_itr->relevance); - HistoryFuzzyProvider::ApplyRelevancePenalty( - *match_itr, match_itr->fuzzy_match_penalty); - } } relevance_heap.pop(); prediction_and_match_itr_heap.pop();
diff --git a/components/omnibox/browser/autocomplete_match.cc b/components/omnibox/browser/autocomplete_match.cc index 678dff40e9..a07a579 100644 --- a/components/omnibox/browser/autocomplete_match.cc +++ b/components/omnibox/browser/autocomplete_match.cc
@@ -258,7 +258,6 @@ : provider(match.provider), relevance(match.relevance), typed_count(match.typed_count), - fuzzy_match_penalty(match.fuzzy_match_penalty), deletable(match.deletable), fill_into_edit(match.fill_into_edit), additional_text(match.additional_text), @@ -319,7 +318,6 @@ provider = std::move(match.provider); relevance = std::move(match.relevance); typed_count = std::move(match.typed_count); - fuzzy_match_penalty = std::move(match.fuzzy_match_penalty); deletable = std::move(match.deletable); fill_into_edit = std::move(match.fill_into_edit); additional_text = std::move(match.additional_text); @@ -389,7 +387,6 @@ provider = match.provider; relevance = match.relevance; typed_count = match.typed_count; - fuzzy_match_penalty = match.fuzzy_match_penalty; deletable = match.deletable; fill_into_edit = match.fill_into_edit; additional_text = match.additional_text;
diff --git a/components/omnibox/browser/autocomplete_match.h b/components/omnibox/browser/autocomplete_match.h index 71828be..3b9d70f 100644 --- a/components/omnibox/browser/autocomplete_match.h +++ b/components/omnibox/browser/autocomplete_match.h
@@ -641,10 +641,6 @@ // set for matches from HistoryURL and HistoryQuickProvider. int typed_count = -1; - // The percentage deducted from the relevance score by the history fuzzy - // provider. This is currently used to re-apply the penalty after ML scoring. - int fuzzy_match_penalty = 0; - // True if the user should be able to delete this match. bool deletable = false;
diff --git a/components/omnibox/browser/history_cluster_provider.cc b/components/omnibox/browser/history_cluster_provider.cc index 2f18b101..be469216 100644 --- a/components/omnibox/browser/history_cluster_provider.cc +++ b/components/omnibox/browser/history_cluster_provider.cc
@@ -4,13 +4,10 @@ #include "components/omnibox/browser/history_cluster_provider.h" -#include "base/feature_list.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "components/history_clusters/core/config.h" -#include "components/history_clusters/core/features.h" #include "components/history_clusters/core/history_clusters_service.h" -#include "components/history_clusters/core/url_constants.h" #include "components/omnibox/browser/actions/history_clusters_action.h" #include "components/omnibox/browser/autocomplete_controller.h" #include "components/omnibox/browser/autocomplete_match.h" @@ -166,12 +163,10 @@ const auto& text = search_match.contents; - match.destination_url = GURL( - base::UTF8ToUTF16(history_clusters::GetChromeUIHistoryClustersURL() + - base::StringPrintf("?q=%s", base::EscapeQueryParamValue( - base::UTF16ToUTF8(text), - /*use_plus=*/false) - .c_str()))); + match.destination_url = GURL(base::UTF8ToUTF16(base::StringPrintf( + "chrome://history/journeys?q=%s", + base::EscapeQueryParamValue(base::UTF16ToUTF8(text), /*use_plus=*/false) + .c_str()))); match.fill_into_edit = text; @@ -181,9 +176,7 @@ ACMatchClassification::MATCH, ACMatchClassification::NONE); match.contents = l10n_util::GetStringUTF16( - base::FeatureList::IsEnabled(history_clusters::kRenameJourneys) - ? IDS_OMNIBOX_HISTORY_CLUSTERS_SEARCH_HINT - : IDS_OMNIBOX_ACTION_HISTORY_CLUSTERS_SEARCH_HINT); + IDS_OMNIBOX_ACTION_HISTORY_CLUSTERS_SEARCH_HINT); match.contents_class = {{0, ACMatchClassification::DIM}}; CompleteHistoryClustersMatch(base::UTF16ToUTF8(text),
diff --git a/components/omnibox/browser/history_cluster_provider_unittest.cc b/components/omnibox/browser/history_cluster_provider_unittest.cc index e17515eb..afa70ec 100644 --- a/components/omnibox/browser/history_cluster_provider_unittest.cc +++ b/components/omnibox/browser/history_cluster_provider_unittest.cc
@@ -8,11 +8,9 @@ #include "base/files/scoped_temp_dir.h" #include "base/memory/scoped_refptr.h" -#include "base/test/scoped_feature_list.h" #include "base/test/task_environment.h" #include "components/history/core/browser/history_service.h" #include "components/history_clusters/core/config.h" -#include "components/history_clusters/core/features.h" #include "components/history_clusters/core/history_clusters_prefs.h" #include "components/history_clusters/core/history_clusters_service.h" #include "components/history_clusters/core/history_clusters_service_test_api.h" @@ -45,9 +43,6 @@ public AutocompleteProviderListener { public: void SetUp() override { - scoped_feature_list_.InitAndDisableFeature( - history_clusters::kRenameJourneys); - config_.is_journeys_enabled_no_locale_check = true; config_.omnibox_history_cluster_provider = true; history_clusters::SetConfigForTesting(config_); @@ -122,8 +117,6 @@ base::test::TaskEnvironment task_environment_; - base::test::ScopedFeatureList scoped_feature_list_; - std::unique_ptr<FakeAutocompleteProviderClient> autocomplete_provider_client_; base::ScopedTempDir history_dir_;
diff --git a/components/omnibox/browser/history_fuzzy_provider.cc b/components/omnibox/browser/history_fuzzy_provider.cc index 11fc6b68..e02f830 100644 --- a/components/omnibox/browser/history_fuzzy_provider.cc +++ b/components/omnibox/browser/history_fuzzy_provider.cc
@@ -567,15 +567,6 @@ return res; } -// static -void HistoryFuzzyProvider::ApplyRelevancePenalty(AutocompleteMatch& match, - int penalty) { - DCHECK_GE(penalty, 0); - DCHECK_LE(penalty, 100); - match.relevance -= match.relevance * penalty / 100; - match.fuzzy_match_penalty = penalty; -} - HistoryFuzzyProvider::~HistoryFuzzyProvider() = default; void HistoryFuzzyProvider::DoAutocomplete() { @@ -707,7 +698,15 @@ // Apply relevance penalty; all corrections are equal and we only apply this // to the most relevant result, so edit distance isn't needed. - ApplyRelevancePenalty(match, penalty); + DCHECK_GE(penalty, 0); + DCHECK_LE(penalty, 100); + match.relevance -= match.relevance * penalty / 100; + + // Scoring signals are calculated in the history and bookmark providers using + // the corrected input. These scoring signals are inaccurate for the true + // input, so clear them to prevent the ml model assigning an + // artificially high confidence to this suggestion. + match.scoring_signals.reset(); return 1; }
diff --git a/components/omnibox/browser/history_fuzzy_provider.h b/components/omnibox/browser/history_fuzzy_provider.h index 5e93cd4..b10793b 100644 --- a/components/omnibox/browser/history_fuzzy_provider.h +++ b/components/omnibox/browser/history_fuzzy_provider.h
@@ -207,11 +207,6 @@ // See base/trace_event/memory_usage_estimator.h for more info. size_t EstimateMemoryUsage() const override; - // Reduces a match's relevance score according to the penalty and records the - // penalty amount. `penalty` is the percentage that will be deducted from the - // match's relevance. - static void ApplyRelevancePenalty(AutocompleteMatch& match, int penalty); - private: ~HistoryFuzzyProvider() override;
diff --git a/components/omnibox_strings.grdp b/components/omnibox_strings.grdp index 391b8348..8ad5f20 100644 --- a/components/omnibox_strings.grdp +++ b/components/omnibox_strings.grdp
@@ -57,8 +57,8 @@ <message name="IDS_OFFLINE_VERBOSE_STATE" desc="Text for the Offline Omnibox Verbose state. Displayed when the current page is loaded from a previously-downloaded cache."> Offline </message> - <if expr="is_ios"> - <message name="IDS_OMNIBOX_EMPTY_HINT" desc="The text displayed in the omnibox when it is empty."> + <if expr="is_ios or is_android or enable_vr"> + <message name="IDS_OMNIBOX_EMPTY_HINT" desc="The text displayed in the omnibox when it is empty." formatter_data="android_java"> Search or type URL </message> </if> @@ -116,9 +116,6 @@ <!-- History Clusters Actions. --> - <message name="IDS_OMNIBOX_HISTORY_CLUSTERS_SEARCH_HINT" desc="The button text for the History Clusters omnibox suggestion in sentence case. Clicking this button takes users to a view of their browsing history related to the suggestion."> - Resume browsing - </message> <message name="IDS_OMNIBOX_ACTION_HISTORY_CLUSTERS_SEARCH_HINT" desc="The button text for the History Clusters omnibox action. Clicking this button takes users to a view of their browsing history related to the attached suggestion."> Resume your journey </message>
diff --git a/components/omnibox_strings_grdp/IDS_OMNIBOX_HISTORY_CLUSTERS_SEARCH_HINT.png.sha1 b/components/omnibox_strings_grdp/IDS_OMNIBOX_HISTORY_CLUSTERS_SEARCH_HINT.png.sha1 deleted file mode 100644 index b9c4e48..0000000 --- a/components/omnibox_strings_grdp/IDS_OMNIBOX_HISTORY_CLUSTERS_SEARCH_HINT.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -75912b568848ac9011f97ce7791f0fdc1c5fb670 \ No newline at end of file
diff --git a/components/payments/content/android/payment_manifest_web_data_service_android.cc b/components/payments/content/android/payment_manifest_web_data_service_android.cc index a9ecb98..8ed8069 100644 --- a/components/payments/content/android/payment_manifest_web_data_service_android.cc +++ b/components/payments/content/android/payment_manifest_web_data_service_android.cc
@@ -5,6 +5,7 @@ #include "components/payments/content/android/payment_manifest_web_data_service_android.h" #include <string> +#include <utility> #include "base/android/jni_array.h" #include "base/android/jni_string.h" @@ -31,19 +32,25 @@ void PaymentManifestWebDataServiceAndroid::OnWebDataServiceRequestDone( WebDataServiceBase::Handle h, std::unique_ptr<WDTypedResult> result) { - JNIEnv* env = base::android::AttachCurrentThread(); - if (weak_java_obj_.get(env).is_null()) + if (!result) { return; + } - if (web_data_service_requests_.find(h) == web_data_service_requests_.end()) + JNIEnv* env = base::android::AttachCurrentThread(); + if (weak_java_obj_.get(env).is_null()) { return; + } + + if (web_data_service_requests_.find(h) == web_data_service_requests_.end()) { + return; + } switch (result->GetType()) { case PAYMENT_WEB_APP_MANIFEST: - OnWebAppManifestRequestDone(env, h, result.get()); + OnWebAppManifestRequestDone(env, h, std::move(result)); break; case PAYMENT_METHOD_MANIFEST: - OnPaymentMethodManifestRequestDone(env, h, result.get()); + OnPaymentMethodManifestRequestDone(env, h, std::move(result)); break; default: NOTREACHED() << "unsupported data type"; @@ -53,9 +60,12 @@ void PaymentManifestWebDataServiceAndroid::OnWebAppManifestRequestDone( JNIEnv* env, WebDataServiceBase::Handle h, - WDTypedResult* result) { + std::unique_ptr<WDTypedResult> result) { + DCHECK(result); + const WDResult<std::vector<WebAppManifestSection>>* typed_result = - static_cast<const WDResult<std::vector<WebAppManifestSection>>*>(result); + static_cast<const WDResult<std::vector<WebAppManifestSection>>*>( + result.get()); const std::vector<WebAppManifestSection>* manifest = &(typed_result->GetValue()); @@ -89,9 +99,11 @@ void PaymentManifestWebDataServiceAndroid::OnPaymentMethodManifestRequestDone( JNIEnv* env, WebDataServiceBase::Handle h, - WDTypedResult* result) { + std::unique_ptr<WDTypedResult> result) { + DCHECK(result); + const WDResult<std::vector<std::string>>* typed_result = - static_cast<const WDResult<std::vector<std::string>>*>(result); + static_cast<const WDResult<std::vector<std::string>>*>(result.get()); const std::vector<std::string>* web_apps_ids = &(typed_result->GetValue()); Java_PaymentManifestWebDataServiceCallback_onPaymentMethodManifestFetched( @@ -126,8 +138,9 @@ scoped_refptr<payments::PaymentManifestWebDataService> web_data_service = GetPaymentManifestWebDataService(); - if (web_data_service == nullptr) + if (web_data_service == nullptr) { return; + } web_data_service->AddPaymentMethodManifest( base::android::ConvertJavaStringToUTF8(jmethod_name), @@ -140,8 +153,9 @@ const base::android::JavaParamRef<jobjectArray>& jmanifest_sections) { scoped_refptr<payments::PaymentManifestWebDataService> web_data_service = GetPaymentManifestWebDataService(); - if (web_data_service == nullptr) + if (web_data_service == nullptr) { return; + } std::vector<WebAppManifestSection> manifest; @@ -176,8 +190,9 @@ const base::android::JavaParamRef<jobject>& jcallback) { scoped_refptr<payments::PaymentManifestWebDataService> web_data_service = GetPaymentManifestWebDataService(); - if (web_data_service == nullptr) + if (web_data_service == nullptr) { return false; + } WebDataServiceBase::Handle handle = web_data_service->GetPaymentMethodManifest( @@ -195,8 +210,9 @@ const base::android::JavaParamRef<jobject>& jcallback) { scoped_refptr<payments::PaymentManifestWebDataService> web_data_service = GetPaymentManifestWebDataService(); - if (web_data_service == nullptr) + if (web_data_service == nullptr) { return false; + } WebDataServiceBase::Handle handle = web_data_service->GetPaymentWebAppManifest( @@ -212,8 +228,9 @@ const base::android::JavaParamRef<jobject>& obj, const base::android::JavaParamRef<jobject>& jweb_contents) { auto* web_contents = content::WebContents::FromJavaWebContents(jweb_contents); - if (!web_contents) + if (!web_contents) { return 0; + } PaymentManifestWebDataServiceAndroid* manifest_web_data_service_android = new PaymentManifestWebDataServiceAndroid(env, obj, web_contents); @@ -222,8 +239,9 @@ scoped_refptr<PaymentManifestWebDataService> PaymentManifestWebDataServiceAndroid::GetPaymentManifestWebDataService() { - if (!web_contents_ || !web_contents_->GetBrowserContext()) + if (!web_contents_ || !web_contents_->GetBrowserContext()) { return nullptr; + } return webdata_services::WebDataServiceWrapperFactory:: GetPaymentManifestWebDataServiceForBrowserContext(
diff --git a/components/payments/content/android/payment_manifest_web_data_service_android.h b/components/payments/content/android/payment_manifest_web_data_service_android.h index d8e1a49..0d2d91c 100644 --- a/components/payments/content/android/payment_manifest_web_data_service_android.h +++ b/components/payments/content/android/payment_manifest_web_data_service_android.h
@@ -81,10 +81,11 @@ private: void OnWebAppManifestRequestDone(JNIEnv* env, WebDataServiceBase::Handle h, - WDTypedResult* result); - void OnPaymentMethodManifestRequestDone(JNIEnv* env, - WebDataServiceBase::Handle h, - WDTypedResult* result); + std::unique_ptr<WDTypedResult> result); + void OnPaymentMethodManifestRequestDone( + JNIEnv* env, + WebDataServiceBase::Handle h, + std::unique_ptr<WDTypedResult> result); scoped_refptr<PaymentManifestWebDataService> GetPaymentManifestWebDataService();
diff --git a/components/payments/content/manifest_verifier.cc b/components/payments/content/manifest_verifier.cc index b3b504d..3b8977f 100644 --- a/components/payments/content/manifest_verifier.cc +++ b/components/payments/content/manifest_verifier.cc
@@ -152,9 +152,14 @@ std::unique_ptr<WDTypedResult> result) { DCHECK_LT(0U, number_of_manifests_to_verify_); - auto it = cache_request_handles_.find(h); - if (it == cache_request_handles_.end()) + if (!result) { return; + } + + auto it = cache_request_handles_.find(h); + if (it == cache_request_handles_.end()) { + return; + } GURL method_manifest_url = it->second.method_manifest_url; base::TimeDelta check_cache_duration = @@ -214,8 +219,9 @@ DCHECK_LT(0U, number_of_manifests_to_download_); if (content.empty()) { - if (first_error_message_.empty()) + if (first_error_message_.empty()) { first_error_message_ = error_message; + } if (cached_manifest_urls_.find(method_manifest_url) == cached_manifest_urls_.end() && --number_of_manifests_to_verify_ == 0) { @@ -224,8 +230,9 @@ .Run(std::move(apps_), first_error_message_); } - if (--number_of_manifests_to_download_ == 0) + if (--number_of_manifests_to_download_ == 0) { std::move(finished_using_resources_callback_).Run(); + } return; } @@ -279,8 +286,9 @@ cache_->AddPaymentMethodManifest(method_manifest_url.spec(), supported_origin_strings); - if (--number_of_manifests_to_download_ == 0) + if (--number_of_manifests_to_download_ == 0) { std::move(finished_using_resources_callback_).Run(); + } } void ManifestVerifier::RemoveInvalidPaymentApps() { @@ -307,10 +315,11 @@ // Remove apps without enabled methods. for (auto it = apps_.begin(); it != apps_.end();) { - if (it->second->enabled_methods.empty()) + if (it->second->enabled_methods.empty()) { it = apps_.erase(it); - else + } else { ++it; + } } }
diff --git a/components/payments/content/payment_credential.cc b/components/payments/content/payment_credential.cc index cf30eb6..3aa040a1 100644 --- a/components/payments/content/payment_credential.cc +++ b/components/payments/content/payment_credential.cc
@@ -86,7 +86,7 @@ Reset(); std::move(callback).Run( - static_cast<WDResult<bool>*>(result.get())->GetValue() + result && static_cast<WDResult<bool>*>(result.get())->GetValue() ? mojom::PaymentCredentialStorageStatus::SUCCESS : mojom::PaymentCredentialStorageStatus::FAILED_TO_STORE_CREDENTIAL); }
diff --git a/components/pdf/browser/pdf_web_contents_helper_browsertest.cc b/components/pdf/browser/pdf_web_contents_helper_browsertest.cc index 65383a4..23c39da 100644 --- a/components/pdf/browser/pdf_web_contents_helper_browsertest.cc +++ b/components/pdf/browser/pdf_web_contents_helper_browsertest.cc
@@ -108,6 +108,7 @@ void SetUpOnMainThread() override { content::ContentBrowserTest::SetUpOnMainThread(); + content::NavigateToURL(shell(), GURL("about:blank")); auto client = std::make_unique<TestPDFWebContentsHelperClient>(); client_ = client.get(); PDFWebContentsHelper::CreateForWebContentsWithClient( @@ -139,8 +140,6 @@ // Tests that select-changed on a pdf text brings up selection handles and the // quick menu in the reasonable position. IN_PROC_BROWSER_TEST_F(PDFWebContentsHelperTest, SelectionChanged) { - content::NavigateToURL(shell(), GURL()); - gfx::SelectionBound initial_start = client()->GetSelectionBoundStart(); gfx::SelectionBound initial_end = client()->GetSelectionBoundEnd(); @@ -166,8 +165,9 @@ #else gfx::PointF origin_f; content::RenderWidgetHostView* view = GetRenderWidgetHostView(); - if (view) + if (view) { origin_f = view->TransformPointToRootCoordSpaceF(gfx::PointF()); + } gfx::SelectionBound expected_start; { @@ -213,8 +213,6 @@ // When selecting something, only the copy command id should be enabled. IN_PROC_BROWSER_TEST_F(PDFWebContentsHelperTest, IsCommandIdEnabledCopyEnabled) { - content::NavigateToURL(shell(), GURL()); - EXPECT_FALSE( pdf_web_contents_helper()->IsCommandIdEnabled(ui::TouchEditable::kCut)); EXPECT_FALSE( @@ -242,8 +240,6 @@ // Test that the copy command executes. IN_PROC_BROWSER_TEST_F(PDFWebContentsHelperTest, ExecuteCommandCopy) { - content::NavigateToURL(shell(), GURL()); - base::UserActionTester action_tester; EXPECT_EQ(0, action_tester.GetActionCount("Copy"));
diff --git a/components/plus_addresses/BUILD.gn b/components/plus_addresses/BUILD.gn index dbb98a1..fcc2dc1 100644 --- a/components/plus_addresses/BUILD.gn +++ b/components/plus_addresses/BUILD.gn
@@ -4,6 +4,8 @@ source_set("plus_addresses") { sources = [ + "features.cc", + "features.h", "plus_address_service.cc", "plus_address_service.h", ] @@ -12,10 +14,6 @@ "//net", ] public_deps = [ - # While not strictly public by h file inclusion, this is a temporary move - # of features.h out of sources. Allowing those depending on - # :plus_addresses to also depend on its features to reduce churn. - ":features", "//base", "//components/keyed_service/core", "//third_party/abseil-cpp:absl", @@ -23,20 +21,11 @@ ] } -source_set("features") { - sources = [ - "features.cc", - "features.h", - ] - public_deps = [ "//base" ] -} - source_set("unit_tests") { testonly = true sources = [ "plus_address_service_unittest.cc" ] deps = [ - ":features", ":plus_addresses", "//base/test:test_support", "//components/signin/public/identity_manager:test_support",
diff --git a/components/plus_addresses/features.cc b/components/plus_addresses/features.cc index b0a979d..26cf10bf 100644 --- a/components/plus_addresses/features.cc +++ b/components/plus_addresses/features.cc
@@ -12,10 +12,6 @@ base::FEATURE_DISABLED_BY_DEFAULT); const char kEnterprisePlusAddressLabelOverrideName[] = "suggestion-label"; -const char kEnterprisePlusAddressOAuthScopeName[] = "oauth-scope"; - const base::FeatureParam<std::string> kEnterprisePlusAddressLabelOverride{ &kFeature, kEnterprisePlusAddressLabelOverrideName, "Lorem Ipsum"}; -const base::FeatureParam<std::string> kEnterprisePlusAddressOAuthScope{ - &kFeature, kEnterprisePlusAddressOAuthScopeName, ""}; } // namespace plus_addresses
diff --git a/components/plus_addresses/features.h b/components/plus_addresses/features.h index 6ae6476..e63a4172 100644 --- a/components/plus_addresses/features.h +++ b/components/plus_addresses/features.h
@@ -15,9 +15,6 @@ // label. Defaults to generic Lorem Ipsum as strings are not yet determined. extern const base::FeatureParam<std::string> kEnterprisePlusAddressLabelOverride; - -// Used to control the enterprise plus address feature's OAuth scope. -extern const base::FeatureParam<std::string> kEnterprisePlusAddressOAuthScope; } // namespace plus_addresses #endif // COMPONENTS_PLUS_ADDRESSES_FEATURES_H_
diff --git a/components/policy/resources/templates/policy_definitions/Miscellaneous/HistoryClustersVisible.yaml b/components/policy/resources/templates/policy_definitions/Miscellaneous/HistoryClustersVisible.yaml index 217cf15..fc65eeb 100644 --- a/components/policy/resources/templates/policy_definitions/Miscellaneous/HistoryClustersVisible.yaml +++ b/components/policy/resources/templates/policy_definitions/Miscellaneous/HistoryClustersVisible.yaml
@@ -1,14 +1,15 @@ -caption: Show a view of Chrome history with groups of pages +caption: Show Journeys on the Chrome history page default: null -desc: "This policy controls the visibility of the Chrome history page organized into groups of pages.\n\ - \n If the policy is set to Enabled, a Chrome history page organized into groups will be visible at chrome://history/2.\n\ - \n If the policy is set to Disabled, a Chrome history page organized into groups will not be visible at chrome://history/2.\n\ - \n If the policy is left unset, a Chrome history page organized into groups will be visible at chrome://history/2\ - \ by default.\n\n Please note,\ +desc: "This policy controls the visibility of Journeys on the Chrome history page.\n\ + \n If the policy is set to Enabled, Journeys will be visible at chrome://history/journeys.\n\ + \n If the policy is set to Disabled, Journeys will not be visible at chrome://history/journeys.\n\ + \n If the policy is left unset, Journeys will be visible at chrome://history/journeys\ + \ by default and users can change the visibility of Journeys.\n\n Please note,\ \ if <ph name=\"COMPONENT_UPDATES_ENABLED_POLICY_NAME\">ComponentUpdatesEnabled</ph>\ \ policy is set to Disabled, but <ph name=\"HISTORY_CLUSTERS_VISIBLE_POLICY_NAME\"\ - >HistoryClustersVisible</ph> is set to Enabled or unset, a Chrome history page organized into groups will still be\ - \ available at chrome://history/2, but may be less relevant to the user.\n" + >HistoryClustersVisible</ph> is set to Enabled or unset, Journeys will still be\ + \ available at chrome://history/journeys, but may be absent from the omnibox, and\ + \ less relevant to the user.\n " example_value: false features: dynamic_refresh: true @@ -16,11 +17,12 @@ future_on: - fuchsia items: -- caption: Chrome history page organized into groups will be visible at chrome://history/2. +- caption: Journeys will be visible at chrome://history/journeys. value: true -- caption: Chrome history page organized into groups will not be visible at chrome://history/2. +- caption: Journeys will not be visible at chrome://history/journeys. value: false -- caption: Chrome history page organized into groups will be visible at chrome://history/2 by default. +- caption: Journeys will be visible at chrome://history/journeys by default and users + can change the visibility of Journeys. value: null owners: - file://components/history_clusters/OWNERS
diff --git a/components/signin/DEPS b/components/signin/DEPS index b2b1631..6cd5fe9 100644 --- a/components/signin/DEPS +++ b/components/signin/DEPS
@@ -6,7 +6,6 @@ "+components/image_fetcher/core", "+components/keyed_service/core", "+components/os_crypt/sync", - "+components/plus_addresses", "+components/prefs", "+components/sync_preferences", # Subdirectories of //components/signin must explicitly allow deps on each
diff --git a/components/signin/public/identity_manager/BUILD.gn b/components/signin/public/identity_manager/BUILD.gn index ecb20ec..d2a46f9 100644 --- a/components/signin/public/identity_manager/BUILD.gn +++ b/components/signin/public/identity_manager/BUILD.gn
@@ -64,7 +64,6 @@ deps = [ "//build:chromeos_buildflags", "//components/image_fetcher/core", - "//components/plus_addresses:features", "//components/prefs", "//components/signin/internal/identity_manager", "//components/signin/public/webdata",
diff --git a/components/signin/public/identity_manager/access_token_constants.cc b/components/signin/public/identity_manager/access_token_constants.cc index eea359e..de5140b 100644 --- a/components/signin/public/identity_manager/access_token_constants.cc +++ b/components/signin/public/identity_manager/access_token_constants.cc
@@ -6,7 +6,6 @@ #include "build/build_config.h" #include "build/chromeos_buildflags.h" -#include "components/plus_addresses/features.h" #include "google_apis/gaia/gaia_constants.h" namespace signin { @@ -21,7 +20,7 @@ const std::set<std::string> GetUnconsentedOAuth2Scopes() { // clang-format off - std::set<std::string> allowlist = { + return { // Used to fetch account information. GaiaConstants::kGoogleUserInfoEmail, GaiaConstants::kGoogleUserInfoProfile, @@ -98,12 +97,6 @@ #endif // BUILDFLAG(IS_CHROMEOS_ASH) }; // clang-format on - std::string plus_address_scope = - plus_addresses::kEnterprisePlusAddressOAuthScope.Get(); - if (!plus_address_scope.empty()) { - allowlist.insert(plus_address_scope); - } - return allowlist; } const std::set<std::string> GetPrivilegedOAuth2Scopes() {
diff --git a/components/strings/BUILD.gn b/components/strings/BUILD.gn index cece9b8..bb492b3 100644 --- a/components/strings/BUILD.gn +++ b/components/strings/BUILD.gn
@@ -34,6 +34,7 @@ source = "../components_strings.grd" defines = [ "enable_arcore=$enable_arcore", + "enable_cardboard=$enable_cardboard", "enable_pdf=$enable_pdf", "enable_plugins=$enable_plugins", "enable_print_preview=$enable_print_preview",
diff --git a/components/sync/engine/sync_manager_impl.cc b/components/sync/engine/sync_manager_impl.cc index c4db653..5b927c33 100644 --- a/components/sync/engine/sync_manager_impl.cc +++ b/components/sync/engine/sync_manager_impl.cc
@@ -15,6 +15,7 @@ #include "base/metrics/histogram_macros.h" #include "base/observer_list.h" #include "base/task/sequenced_task_runner.h" +#include "base/trace_event/trace_event.h" #include "base/values.h" #include "components/sync/base/model_type.h" #include "components/sync/base/sync_invalidation.h"
diff --git a/components/sync/model/client_tag_based_model_type_processor.cc b/components/sync/model/client_tag_based_model_type_processor.cc index ac6e6a8..c4ae63b 100644 --- a/components/sync/model/client_tag_based_model_type_processor.cc +++ b/components/sync/model/client_tag_based_model_type_processor.cc
@@ -16,6 +16,7 @@ #include "base/strings/stringprintf.h" #include "base/task/sequenced_task_runner.h" #include "base/trace_event/memory_usage_estimator.h" +#include "base/trace_event/trace_event.h" #include "components/sync/base/data_type_histogram.h" #include "components/sync/base/features.h" #include "components/sync/base/model_type.h" @@ -93,6 +94,7 @@ void ClientTagBasedModelTypeProcessor::ModelReadyToSync( std::unique_ptr<MetadataBatch> batch) { + TRACE_EVENT0("sync", "ClientTagBasedModelTypeProcessor::ModelReadyToSync"); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(!entity_tracker_); DCHECK(!model_ready_to_sync_);
diff --git a/components/sync/model/model_type_store_impl.cc b/components/sync/model/model_type_store_impl.cc index f7bb947..45214518 100644 --- a/components/sync/model/model_type_store_impl.cc +++ b/components/sync/model/model_type_store_impl.cc
@@ -12,6 +12,7 @@ #include "base/functional/callback_helpers.h" #include "base/location.h" #include "base/task/sequenced_task_runner.h" +#include "base/trace_event/trace_event.h" #include "components/sync/model/blocking_model_type_store_impl.h" #include "components/sync/model/metadata_batch.h" #include "components/sync/model/model_error.h" @@ -119,6 +120,7 @@ } void ModelTypeStoreImpl::ReadAllMetadata(ReadMetadataCallback callback) { + TRACE_EVENT0("sync", "ModelTypeStoreImpl::ReadAllMetadata"); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(!callback.is_null()); @@ -137,6 +139,7 @@ ReadMetadataCallback callback, std::unique_ptr<MetadataBatch> metadata_batch, const absl::optional<ModelError>& error) { + TRACE_EVENT0("sync", "ModelTypeStoreImpl::ReadAllMetadataDone"); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (error) {
diff --git a/components/sync/model/syncable_service_based_bridge.cc b/components/sync/model/syncable_service_based_bridge.cc index cf1fcec1..0caa0b4f 100644 --- a/components/sync/model/syncable_service_based_bridge.cc +++ b/components/sync/model/syncable_service_based_bridge.cc
@@ -15,6 +15,7 @@ #include "base/metrics/histogram_functions.h" #include "base/strings/stringprintf.h" #include "base/trace_event/memory_usage_estimator.h" +#include "base/trace_event/trace_event.h" #include "components/sync/base/client_tag_hash.h" #include "components/sync/model/conflict_resolution.h" #include "components/sync/model/metadata_batch.h" @@ -418,6 +419,7 @@ void SyncableServiceBasedBridge::OnReadAllMetadataForInit( const absl::optional<ModelError>& error, std::unique_ptr<MetadataBatch> metadata_batch) { + TRACE_EVENT0("sync", "SyncableServiceBasedBridge::OnReadAllMetadataForInit"); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(!syncable_service_started_); @@ -433,6 +435,7 @@ void SyncableServiceBasedBridge::OnSyncableServiceReady( std::unique_ptr<MetadataBatch> metadata_batch) { + TRACE_EVENT0("sync", "SyncableServiceBasedBridge::OnSyncableServiceReady"); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(!syncable_service_started_);
diff --git a/components/sync/nigori/nigori_model_type_processor.cc b/components/sync/nigori/nigori_model_type_processor.cc index 525ff61..8e453bf 100644 --- a/components/sync/nigori/nigori_model_type_processor.cc +++ b/components/sync/nigori/nigori_model_type_processor.cc
@@ -7,6 +7,7 @@ #include <vector> #include "base/logging.h" +#include "base/trace_event/trace_event.h" #include "components/sync/base/client_tag_hash.h" #include "components/sync/base/data_type_histogram.h" #include "components/sync/base/time.h" @@ -309,6 +310,7 @@ void NigoriModelTypeProcessor::ModelReadyToSync( NigoriSyncBridge* bridge, NigoriMetadataBatch nigori_metadata) { + TRACE_EVENT0("sync", "NigoriModelTypeProcessor::ModelReadyToSync"); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(bridge); DCHECK(!model_ready_to_sync_);
diff --git a/components/sync/service/glue/sync_engine_backend.cc b/components/sync/service/glue/sync_engine_backend.cc index b94fefc..b8dbcc2 100644 --- a/components/sync/service/glue/sync_engine_backend.cc +++ b/components/sync/service/glue/sync_engine_backend.cc
@@ -13,6 +13,7 @@ #include "base/logging.h" #include "base/metrics/histogram_macros.h" #include "base/task/sequenced_task_runner.h" +#include "base/trace_event/trace_event.h" #include "components/sync/base/legacy_directory_deletion.h" #include "components/sync/base/sync_invalidation_adapter.h" #include "components/sync/base/sync_stop_metadata_fate.h"
diff --git a/components/sync/service/glue/sync_engine_impl.cc b/components/sync/service/glue/sync_engine_impl.cc index 87fb106..3b5c0c27 100644 --- a/components/sync/service/glue/sync_engine_impl.cc +++ b/components/sync/service/glue/sync_engine_impl.cc
@@ -18,6 +18,7 @@ #include "base/task/bind_post_task.h" #include "base/task/sequenced_task_runner.h" #include "base/time/time.h" +#include "base/trace_event/trace_event.h" #include "components/sync/engine/data_type_activation_response.h" #include "components/sync/engine/events/protocol_event.h" #include "components/sync/engine/nigori/nigori.h" @@ -396,6 +397,8 @@ std::unique_ptr<ModelTypeConnector> model_type_connector, const std::string& birthday, const std::string& bag_of_chips) { + TRACE_EVENT0("sync", + "SyncEngineImpl::HandleInitializationSuccessOnFrontendLoop"); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); model_type_connector_ = std::move(model_type_connector);
diff --git a/components/sync/test/forwarding_model_type_change_processor.cc b/components/sync/test/forwarding_model_type_change_processor.cc index 8842c72..fb7e6bc 100644 --- a/components/sync/test/forwarding_model_type_change_processor.cc +++ b/components/sync/test/forwarding_model_type_change_processor.cc
@@ -6,6 +6,7 @@ #include <utility> +#include "base/trace_event/trace_event.h" #include "components/sync/model/metadata_batch.h" #include "components/sync/protocol/entity_data.h"
diff --git a/components/sync_bookmarks/bookmark_model_type_processor.cc b/components/sync_bookmarks/bookmark_model_type_processor.cc index fc723a7..6240b880 100644 --- a/components/sync_bookmarks/bookmark_model_type_processor.cc +++ b/components/sync_bookmarks/bookmark_model_type_processor.cc
@@ -327,8 +327,7 @@ DCHECK(!bookmark_tracker_); DCHECK(!bookmark_model_observer_); - // TODO(crbug.com/950869): Remove after investigations are completed. - TRACE_EVENT0("browser", "BookmarkModelTypeProcessor::ModelReadyToSync"); + TRACE_EVENT0("sync", "BookmarkModelTypeProcessor::ModelReadyToSync"); bookmark_model_ = model; schedule_save_closure_ = schedule_save_closure;
diff --git a/components/sync_device_info/device_info_prefs.cc b/components/sync_device_info/device_info_prefs.cc index 23e47f3..7ce6d27 100644 --- a/components/sync_device_info/device_info_prefs.cc +++ b/components/sync_device_info/device_info_prefs.cc
@@ -9,6 +9,7 @@ #include "base/time/clock.h" #include "base/time/default_clock.h" +#include "base/trace_event/trace_event.h" #include "components/prefs/pref_registry_simple.h" #include "components/prefs/pref_service.h" #include "components/prefs/scoped_user_pref_update.h" @@ -61,6 +62,7 @@ bool DeviceInfoPrefs::IsRecentLocalCacheGuid( const std::string& cache_guid) const { + TRACE_EVENT0("sync", "DeviceInfoPrefs::IsRecentLocalCacheGuid"); const base::Value::List& recent_local_cache_guids = pref_service_->GetList(kDeviceInfoRecentGUIDsWithTimestamps); @@ -74,6 +76,7 @@ } void DeviceInfoPrefs::AddLocalCacheGuid(const std::string& cache_guid) { + TRACE_EVENT0("sync", "DeviceInfoPrefs::AddLocalCacheGuid"); ScopedListPrefUpdate update_cache_guids(pref_service_, kDeviceInfoRecentGUIDsWithTimestamps); base::Value::List& update_list = update_cache_guids.Get();
diff --git a/components/sync_device_info/device_info_sync_bridge.cc b/components/sync_device_info/device_info_sync_bridge.cc index 5cf60ddb..920ae87 100644 --- a/components/sync_device_info/device_info_sync_bridge.cc +++ b/components/sync_device_info/device_info_sync_bridge.cc
@@ -75,6 +75,7 @@ absl::optional<DeviceInfo::SharingInfo> SpecificsToSharingInfo( const DeviceInfoSpecifics& specifics) { + TRACE_EVENT0("sync", "syncer::SpecificsToSharingInfo"); if (!specifics.has_sharing_fields()) { return absl::nullopt; } @@ -654,6 +655,7 @@ } void DeviceInfoSyncBridge::NotifyObservers() { + TRACE_EVENT0("sync", "DeviceInfoSyncBridge::NotifyObservers"); for (auto& observer : observers_) { observer.OnDeviceInfoChange(); } @@ -742,6 +744,7 @@ void DeviceInfoSyncBridge::OnReadAllMetadata( const absl::optional<ModelError>& error, std::unique_ptr<MetadataBatch> metadata_batch) { + TRACE_EVENT0("sync", "DeviceInfoSyncBridge::OnReadAllMetadata"); if (error) { change_processor()->ReportError(*error); return; @@ -827,6 +830,7 @@ } bool DeviceInfoSyncBridge::ReconcileLocalAndStored() { + TRACE_EVENT0("sync", "DeviceInfoSyncBridge::ReconcileLocalAndStored"); const DeviceInfo* current_info = local_device_info_provider_->GetLocalDeviceInfo(); DCHECK(current_info); @@ -981,6 +985,7 @@ } void DeviceInfoSyncBridge::ExpireOldEntries() { + TRACE_EVENT0("sync", "DeviceInfoSyncBridge::ExpireOldEntries"); const base::Time expiration_threshold = base::Time::Now() - kExpirationThreshold; std::unordered_set<std::string> cache_guids_to_expire;
diff --git a/components/sync_device_info/local_device_info_provider_impl.cc b/components/sync_device_info/local_device_info_provider_impl.cc index e5e5339..1599673 100644 --- a/components/sync_device_info/local_device_info_provider_impl.cc +++ b/components/sync_device_info/local_device_info_provider_impl.cc
@@ -4,6 +4,7 @@ #include "components/sync_device_info/local_device_info_provider_impl.h" +#include "base/trace_event/trace_event.h" #include "components/sync/base/sync_util.h" #include "components/sync_device_info/device_info_sync_client.h" #include "components/sync_device_info/device_info_util.h" @@ -104,6 +105,7 @@ const std::string& model_name, const std::string& full_hardware_class, std::unique_ptr<DeviceInfo> device_info_restored_from_store) { + TRACE_EVENT0("sync", "LocalDeviceInfoProviderImpl::Initialize"); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(!cache_guid.empty()); @@ -137,6 +139,8 @@ full_hardware_class_ = full_hardware_class; + TRACE_EVENT0("ui", + "LocalDeviceInfoProviderImpl::Initialize::NotifyObservers"); // Notify observers. closure_list_.Notify(); }
diff --git a/components/sync_sessions/session_store.cc b/components/sync_sessions/session_store.cc index f02386a7..5add3c9 100644 --- a/components/sync_sessions/session_store.cc +++ b/components/sync_sessions/session_store.cc
@@ -108,6 +108,7 @@ std::map<std::string, sync_pb::SessionSpecifics>* initial_data, std::string* session_name, std::unique_ptr<ModelTypeStore::RecordList> record_list) { + TRACE_EVENT0("sync", "sync_sessions::ParseInitialDataOnBackendSequence"); DCHECK(initial_data); DCHECK(initial_data->empty()); DCHECK(record_list); @@ -351,6 +352,7 @@ std::unique_ptr<Builder> builder, const absl::optional<syncer::ModelError>& error, std::unique_ptr<syncer::MetadataBatch> metadata_batch) { + TRACE_EVENT0("sync", "sync_sessions::SessionStore::OnReadAllMetadata"); DCHECK(builder); if (error) { @@ -376,6 +378,7 @@ void SessionStore::OnReadAllData( std::unique_ptr<Builder> builder, const absl::optional<syncer::ModelError>& error) { + TRACE_EVENT0("sync", "sync_sessions::SessionStore::OnReadAllData"); DCHECK(builder); if (error) {
diff --git a/components/sync_user_events/user_event_sync_bridge.cc b/components/sync_user_events/user_event_sync_bridge.cc index 9d5e287..1292effe 100644 --- a/components/sync_user_events/user_event_sync_bridge.cc +++ b/components/sync_user_events/user_event_sync_bridge.cc
@@ -16,6 +16,7 @@ #include "base/functional/callback_helpers.h" #include "base/location.h" #include "base/strings/string_number_conversions.h" +#include "base/trace_event/trace_event.h" #include "build/build_config.h" #include "components/sync/model/data_type_activation_request.h" #include "components/sync/model/entity_change.h" @@ -223,6 +224,7 @@ void UserEventSyncBridge::OnReadAllMetadata( const absl::optional<ModelError>& error, std::unique_ptr<MetadataBatch> metadata_batch) { + TRACE_EVENT0("sync", "syncer::UserEventSyncBridge::OnReadAllMetadata"); if (error) { change_processor()->ReportError(*error); } else {
diff --git a/components/test/data/viz/anti_aliasing_graphite.png b/components/test/data/viz/anti_aliasing_graphite.png index 1455c094..5f1a169 100644 --- a/components/test/data/viz/anti_aliasing_graphite.png +++ b/components/test/data/viz/anti_aliasing_graphite.png Binary files differ
diff --git a/components/test/data/viz/anti_aliasing_perspective_graphite.png b/components/test/data/viz/anti_aliasing_perspective_graphite.png index 7166f30..b65d1ea 100644 --- a/components/test/data/viz/anti_aliasing_perspective_graphite.png +++ b/components/test/data/viz/anti_aliasing_perspective_graphite.png Binary files differ
diff --git a/components/test/data/viz/rounded_corner_render_pass_graphite.png b/components/test/data/viz/rounded_corner_render_pass_graphite.png new file mode 100644 index 0000000..707c82cd --- /dev/null +++ b/components/test/data/viz/rounded_corner_render_pass_graphite.png Binary files differ
diff --git a/components/test/data/viz/rounded_corner_render_pass_skia.png b/components/test/data/viz/rounded_corner_render_pass_skia.png index 44fce5c..707c82cd 100644 --- a/components/test/data/viz/rounded_corner_render_pass_skia.png +++ b/components/test/data/viz/rounded_corner_render_pass_skia.png Binary files differ
diff --git a/components/test/data/viz/unit_tests_bundle_data.filelist b/components/test/data/viz/unit_tests_bundle_data.filelist index fbe64bb..55aab976 100644 --- a/components/test/data/viz/unit_tests_bundle_data.filelist +++ b/components/test/data/viz/unit_tests_bundle_data.filelist
@@ -209,6 +209,7 @@ //components/test/data/viz/rotated_filter_sw.png //components/test/data/viz/rounded_corner_multi_quad.png //components/test/data/viz/rounded_corner_multi_radii.png +//components/test/data/viz/rounded_corner_render_pass_graphite.png //components/test/data/viz/rounded_corner_render_pass_skia.png //components/test/data/viz/rounded_corner_render_pass_software.png //components/test/data/viz/rounded_corner_simple.png
diff --git a/components/viz/service/display/overlay_processor_delegated.cc b/components/viz/service/display/overlay_processor_delegated.cc index 84d784ca..97caa1c3 100644 --- a/components/viz/service/display/overlay_processor_delegated.cc +++ b/components/viz/service/display/overlay_processor_delegated.cc
@@ -146,8 +146,10 @@ return false; } - if (disable_delegation()) + if (disable_delegation()) { + delegated_status_ = DelegationStatus::kCompositedFeatureDisabled; return false; + } // Do not delegate when we have copy requests on the root render pass or we // will end up with the delegated quads missing from the frame buffer. @@ -244,7 +246,33 @@ case OverlayCandidate::CandidateStatus::kFailNotOverlay: delegated_status_ = DelegationStatus::kCompositedNotOverlay; break; + case OverlayCandidate::CandidateStatus::kFailBlending: + delegated_status_ = DelegationStatus::kCompositedCandidateBlending; + break; + case OverlayCandidate::CandidateStatus::kFailQuadNotSupported: + delegated_status_ = + DelegationStatus::kCompositedCandidateQuadMaterial; + break; + case OverlayCandidate::CandidateStatus::kFailBufferFormat: + delegated_status_ = + DelegationStatus::kCompositedCandidateBufferFormat; + break; + case OverlayCandidate::CandidateStatus::kFailNearFilter: + delegated_status_ = DelegationStatus::kCompositedCandidateNearFilter; + break; + case OverlayCandidate::CandidateStatus::kFailNotSharedImage: + delegated_status_ = + DelegationStatus::kCompositedCandidateNotSharedImage; + break; + case OverlayCandidate::CandidateStatus::kFailMaskFilterNotSupported: + delegated_status_ = DelegationStatus::kCompositedCandidateMaskFilter; + break; + case OverlayCandidate::CandidateStatus::kFailHasTransformButCantClip: + delegated_status_ = + DelegationStatus::kCompositedCandidateTransformCantClip; + break; default: + delegated_status_ = DelegationStatus::kCompositedCandidateFailed; break; } }
diff --git a/components/viz/service/display/overlay_processor_delegated.h b/components/viz/service/display/overlay_processor_delegated.h index 296ac634..6177f881 100644 --- a/components/viz/service/display/overlay_processor_delegated.h +++ b/components/viz/service/display/overlay_processor_delegated.h
@@ -85,7 +85,15 @@ kCompositedHas2dShear = 9, kCompositedHas2dRotation = 10, kCompositedFeatureDisabled = 11, - kMaxValue = kCompositedFeatureDisabled + kCompositedCandidateFailed = 12, + kCompositedCandidateBlending = 13, + kCompositedCandidateQuadMaterial = 14, + kCompositedCandidateBufferFormat = 15, + kCompositedCandidateNearFilter = 16, + kCompositedCandidateNotSharedImage = 17, + kCompositedCandidateMaskFilter = 18, + kCompositedCandidateTransformCantClip = 19, + kMaxValue = kCompositedCandidateTransformCantClip }; gfx::RectF GetPrimaryPlaneDisplayRect(
diff --git a/components/webxr/android/BUILD.gn b/components/webxr/android/BUILD.gn index 69577ef..1753437 100644 --- a/components/webxr/android/BUILD.gn +++ b/components/webxr/android/BUILD.gn
@@ -3,6 +3,7 @@ # found in the LICENSE file. import("//build/config/android/rules.gni") +import("//chrome/android/chrome_java_resources.gni") import("//device/vr/buildflags/buildflags.gni") source_set("android_utils") { @@ -17,6 +18,20 @@ ] } +android_resources("cardboard_java_resources") { + sources = [ + "java/res/layout/cardboard_ui.xml", + "java/res/menu/settings_menu.xml", + "java/res/values/dimens.xml", + "java/res/values/styles.xml", + ] + + deps = [ + # Required to get the 3 dots image for the settings button. + "//components/browser_ui/widget/android:java_resources", + "//components/strings:components_strings_grd", + ] +} source_set("android") { # TODO(https://crbug.com/1426233): Investigate why this cannot simply be an # assert(enable_vr). @@ -175,7 +190,10 @@ "//components/webxr/android/java/src/org/chromium/components/webxr/CardboardClassProvider.java", "//components/webxr/android/java/src/org/chromium/components/webxr/CardboardOverlayDelegate.java", ] - deps += [ "//third_party/cardboard:cardboard_java" ] + deps += [ + ":cardboard_java_resources", + "//third_party/cardboard:cardboard_java", + ] } else if (enable_arcore || enable_openxr) { # These stub classes are needed for the general Xr infrastructure code, but # are not needed for the more broad always-available code. So we check that
diff --git a/components/webxr/android/java/res/layout/cardboard_ui.xml b/components/webxr/android/java/res/layout/cardboard_ui.xml new file mode 100644 index 0000000..e2e651b --- /dev/null +++ b/components/webxr/android/java/res/layout/cardboard_ui.xml
@@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +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. +--> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/relLayout" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <FrameLayout + android:id="@+id/ui_back_button_holder" + android:layout_alignParentStart="true" + android:layout_alignParentTop="true" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginTop="16dp" + android:layout_marginStart="16dp"> + <org.chromium.ui.widget.ChromeImageButton + style="@style/CardboardUiButton" + android:id="@+id/cardboard_ui_back_button" + android:contentDescription="@string/close" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:src="@drawable/btn_close_white" + android:layout_gravity="start|top"/> + </FrameLayout> + + <RelativeLayout + android:id="@+id/ui_alignment_marker" + android:layout_width="@dimen/align_marker_thickness" + android:layout_height="@dimen/align_marker_height" + android:layout_centerHorizontal="true" + android:layout_alignParentBottom="true" + android:background="@android:color/white"> + </RelativeLayout> + + <FrameLayout + android:id="@+id/ui_settings_button_holder" + android:layout_alignParentEnd="true" + android:layout_alignParentTop="true" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp"> + <org.chromium.ui.widget.ChromeImageButton + style="@style/CardboardUiButton" + android:id="@+id/cardboard_ui_settings_button" + android:contentDescription="@string/menu" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:src="@drawable/ic_more_vert_24dp_on_dark_bg" + android:layout_gravity="end|top"/> + </FrameLayout> + +</RelativeLayout> \ No newline at end of file
diff --git a/components/webxr/android/java/res/menu/settings_menu.xml b/components/webxr/android/java/res/menu/settings_menu.xml new file mode 100644 index 0000000..fdfb7aa --- /dev/null +++ b/components/webxr/android/java/res/menu/settings_menu.xml
@@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +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. +--> +<menu xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent"> + <item android:id="@+id/cardboard_menu_option_about_vr" + android:title="@string/about_vr" /> + <item android:id="@+id/cardboard_menu_option_use_another_device" + android:title="@string/use_another_device" /> +</menu> \ No newline at end of file
diff --git a/components/webxr/android/java/res/values/dimens.xml b/components/webxr/android/java/res/values/dimens.xml new file mode 100644 index 0000000..1d4fbf6 --- /dev/null +++ b/components/webxr/android/java/res/values/dimens.xml
@@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +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. +--> +<resources> + <!-- Approximately 24mm height. --> + <dimen name="align_marker_height">150dp</dimen> + <!-- Thickess of thin line. --> + <dimen name="align_marker_thickness">2dip</dimen> +</resources> \ No newline at end of file
diff --git a/components/webxr/android/java/res/values/styles.xml b/components/webxr/android/java/res/values/styles.xml new file mode 100644 index 0000000..c613e6a9 --- /dev/null +++ b/components/webxr/android/java/res/values/styles.xml
@@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +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. +--> +<resources> + <style name="CardboardUiButton"> + <item name="android:layout_width">wrap_content</item> + <item name="android:layout_height">wrap_content</item> + <item name="android:background">@android:color/transparent</item> + <item name="android:padding">9dip</item> + </style> +</resources> \ No newline at end of file
diff --git a/components/webxr/android/java/src/org/chromium/components/webxr/CardboardOverlayDelegate.java b/components/webxr/android/java/src/org/chromium/components/webxr/CardboardOverlayDelegate.java index 78859bc..2142d85 100644 --- a/components/webxr/android/java/src/org/chromium/components/webxr/CardboardOverlayDelegate.java +++ b/components/webxr/android/java/src/org/chromium/components/webxr/CardboardOverlayDelegate.java
@@ -6,20 +6,28 @@ import android.app.Activity; import android.content.res.Configuration; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.MotionEvent; import android.view.SurfaceView; import android.view.View; +import android.view.View.OnClickListener; import android.view.ViewGroup; +import android.widget.ImageButton; +import android.widget.PopupMenu; import androidx.annotation.NonNull; import org.chromium.base.Log; +import org.chromium.content_public.browser.LoadUrlParams; /** * Provides a fullscreen overlay for immersive Cardboard (VR) mode. */ -public class CardboardOverlayDelegate implements XrImmersiveOverlay.Delegate { +public class CardboardOverlayDelegate + implements XrImmersiveOverlay.Delegate, PopupMenu.OnMenuItemClickListener { private static final String TAG = "CardboardOverlay"; + private static final String ABOUT_VR_URL = "google.com/cardboard"; private static final boolean DEBUG_LOGS = false; static final int VR_SYSTEM_UI_FLAGS = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN @@ -29,6 +37,8 @@ private Activity mActivity; private VrCompositorDelegate mCompositorDelegate; + private View mWidgetsLayout; + public CardboardOverlayDelegate( VrCompositorDelegate compositorDelegate, @NonNull Activity activity) { if (DEBUG_LOGS) { @@ -39,9 +49,63 @@ mCompositorDelegate = compositorDelegate; } + private void setupWidgetsLayout() { + mWidgetsLayout = mActivity.getLayoutInflater().inflate(R.layout.cardboard_ui, null); + + // Close button. + ImageButton closeButton = mWidgetsLayout.findViewById(R.id.cardboard_ui_back_button); + closeButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + XrSessionCoordinator.endActiveSession(); + } + }); + + // Settings button. + ImageButton settingsButton = mWidgetsLayout.findViewById(R.id.cardboard_ui_settings_button); + settingsButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + showSettings(v); + } + }); + } + + private ViewGroup getParentView() { + return (ViewGroup) mActivity.getWindow().findViewById(android.R.id.content); + } + + public void showSettings(View view) { + PopupMenu popup = new PopupMenu(mActivity, view); + MenuInflater inflater = popup.getMenuInflater(); + inflater.inflate(R.menu.settings_menu, popup.getMenu()); + popup.setOnMenuItemClickListener(this); + popup.show(); + } + + @Override + public boolean onMenuItemClick(MenuItem item) { + if (item.getItemId() == R.id.cardboard_menu_option_use_another_device) { + XrSessionCoordinator.onActiveXrSessionButtonTouched(); + XrSessionCoordinator.endActiveSession(); + return true; + } else if (item.getItemId() == R.id.cardboard_menu_option_about_vr) { + LoadUrlParams url = new LoadUrlParams(ABOUT_VR_URL); + // Storing this value in a new variable as the ending the active + // session could clear it otherwise. + VrCompositorDelegate delegate = mCompositorDelegate; + XrSessionCoordinator.endActiveSession(); + delegate.openNewTab(url); + return true; + } + return false; + } + @Override public void prepareToCreateSurfaceView() { mCompositorDelegate.setOverlayImmersiveVrMode(true); + + setupWidgetsLayout(); } @Override @@ -56,8 +120,8 @@ int flags = mActivity.getWindow().getDecorView().getSystemUiVisibility(); mActivity.getWindow().getDecorView().setSystemUiVisibility(flags | VR_SYSTEM_UI_FLAGS); - ViewGroup parent = (ViewGroup) mActivity.getWindow().findViewById(android.R.id.content); - parent.addView(surfaceView); + getParentView().addView(surfaceView); + getParentView().addView(mWidgetsLayout); } @Override @@ -80,6 +144,10 @@ // don't trigger any duplicate destruction events. parent.removeView(surfaceView); } + + if (getParentView() != null) { + getParentView().removeView(mWidgetsLayout); + } } @Override
diff --git a/components/webxr/android/java/src/org/chromium/components/webxr/VrCompositorDelegate.java b/components/webxr/android/java/src/org/chromium/components/webxr/VrCompositorDelegate.java index 6a3150f..1680ee6b 100644 --- a/components/webxr/android/java/src/org/chromium/components/webxr/VrCompositorDelegate.java +++ b/components/webxr/android/java/src/org/chromium/components/webxr/VrCompositorDelegate.java
@@ -4,6 +4,8 @@ package org.chromium.components.webxr; +import org.chromium.content_public.browser.LoadUrlParams; + /** * Interface used by ArOverlayDelegate to communicate with the underlying * compositor. Used to implement WebXR's DOM Overlay mode correctly. @@ -13,4 +15,9 @@ * Enables/disables immersive VR mode in the compositor. */ void setOverlayImmersiveVrMode(boolean enabled); + + /** + * Opens a new tab in the current browser. + */ + void openNewTab(LoadUrlParams url); }
diff --git a/components/webxr_strings.grdp b/components/webxr_strings.grdp index 9a7f6e3..d0609a1 100644 --- a/components/webxr_strings.grdp +++ b/components/webxr_strings.grdp
@@ -13,4 +13,12 @@ View augmented reality content </message> </if> + <if expr="enable_vr"> + <message name="IDS_ABOUT_VR" desc="Short text shown on the settings menu to let the user open the About VR page.[CHAR_LIMIT=30]" formatter_data="android_java"> + About VR + </message> + <message name="IDS_USE_ANOTHER_DEVICE" desc="Short text shown on the settings menu to let the user switch viewer.[CHAR_LIMIT=30]" formatter_data="android_java"> + Use another device + </message> + </if> </grit-part>
diff --git a/components/webxr_strings_grdp/IDS_ABOUT_VR.png.sha1 b/components/webxr_strings_grdp/IDS_ABOUT_VR.png.sha1 new file mode 100644 index 0000000..f77aa71 --- /dev/null +++ b/components/webxr_strings_grdp/IDS_ABOUT_VR.png.sha1
@@ -0,0 +1 @@ +7a907b01ad76c5a8853d22ed42efdd38081f7a79 \ No newline at end of file
diff --git a/components/webxr_strings_grdp/IDS_USE_ANOTHER_DEVICE.png.sha1 b/components/webxr_strings_grdp/IDS_USE_ANOTHER_DEVICE.png.sha1 new file mode 100644 index 0000000..f77aa71 --- /dev/null +++ b/components/webxr_strings_grdp/IDS_USE_ANOTHER_DEVICE.png.sha1
@@ -0,0 +1 @@ +7a907b01ad76c5a8853d22ed42efdd38081f7a79 \ No newline at end of file
diff --git a/content/browser/browser_context_impl.cc b/content/browser/browser_context_impl.cc index 4dda379..3b215303 100644 --- a/content/browser/browser_context_impl.cc +++ b/content/browser/browser_context_impl.cc
@@ -41,7 +41,7 @@ ServiceWorkerContextWrapper* wrapper = static_cast<ServiceWorkerContextWrapper*>( partition->GetServiceWorkerContext()); - wrapper->process_manager()->Shutdown(); + wrapper->Shutdown(); } void ShutdownSharedWorkerContext(StoragePartition* partition) {
diff --git a/content/browser/child_process_task_port_provider_mac.cc b/content/browser/child_process_task_port_provider_mac.cc index 654cff2..9b0fa42 100644 --- a/content/browser/child_process_task_port_provider_mac.cc +++ b/content/browser/child_process_task_port_provider_mac.cc
@@ -58,7 +58,7 @@ const std::string dispatch_name = base::StringPrintf( "%s.ChildProcessTaskPortProvider.%p", base::apple::BaseBundleID(), this); - notification_source_ = std::make_unique<base::DispatchSourceMach>( + notification_source_ = std::make_unique<base::apple::DispatchSourceMach>( dispatch_name.c_str(), notification_port_.get(), ^{ OnTaskPortDied(); });
diff --git a/content/browser/child_process_task_port_provider_mac.h b/content/browser/child_process_task_port_provider_mac.h index a56d33b..287e2196 100644 --- a/content/browser/child_process_task_port_provider_mac.h +++ b/content/browser/child_process_task_port_provider_mac.h
@@ -82,7 +82,7 @@ base::apple::ScopedMachReceiveRight notification_port_; // Dispatch source for |notification_port_|. - std::unique_ptr<base::DispatchSourceMach> notification_source_; + std::unique_ptr<base::apple::DispatchSourceMach> notification_source_; }; } // namespace content
diff --git a/content/browser/hid/hid_test_utils.cc b/content/browser/hid/hid_test_utils.cc index 5a43f5d..052ad1f 100644 --- a/content/browser/hid/hid_test_utils.cc +++ b/content/browser/hid/hid_test_utils.cc
@@ -26,11 +26,17 @@ void MockHidDelegate::AddObserver(BrowserContext* browser_context, Observer* observer) { + if (assert_browser_context_) { + ASSERT_TRUE(browser_context); + } observer_list_.AddObserver(observer); } void MockHidDelegate::RemoveObserver(BrowserContext* browser_context, Observer* observer) { + if (assert_browser_context_) { + ASSERT_TRUE(browser_context); + } observer_list_.RemoveObserver(observer); } @@ -63,6 +69,10 @@ } } +void MockHidDelegate::SetAssertBrowserContext(bool assert_browser_context) { + assert_browser_context_ = assert_browser_context; +} + HidTestContentBrowserClient::HidTestContentBrowserClient() = default; HidTestContentBrowserClient::~HidTestContentBrowserClient() = default;
diff --git a/content/browser/hid/hid_test_utils.h b/content/browser/hid/hid_test_utils.h index 9aeff38..b361ab0 100644 --- a/content/browser/hid/hid_test_utils.h +++ b/content/browser/hid/hid_test_utils.h
@@ -81,8 +81,11 @@ const base::ObserverList<Observer>& observer_list() { return observer_list_; } + void SetAssertBrowserContext(bool assert_browser_context); + private: base::ObserverList<Observer> observer_list_; + bool assert_browser_context_ = false; }; // Test implementation of ContentBrowserClient for HID tests. The test client
diff --git a/content/browser/media/capture/desktop_capturer_lacros.cc b/content/browser/media/capture/desktop_capturer_lacros.cc index 3ee04574..6970a35 100644 --- a/content/browser/media/capture/desktop_capturer_lacros.cc +++ b/content/browser/media/capture/desktop_capturer_lacros.cc
@@ -8,7 +8,6 @@ #include "chromeos/lacros/lacros_service.h" #include "content/public/browser/desktop_media_id.h" #include "content/public/common/content_features.h" -#include "media/capture/capture_switches.h" #include "mojo/public/cpp/bindings/sync_call_restrictions.h" #include "third_party/skia/include/core/SkBitmap.h" #include "third_party/webrtc/modules/desktop_capture/desktop_frame.h" @@ -45,25 +44,17 @@ DesktopCapturerLacros::DesktopCapturerLacros( CaptureType capture_type, const webrtc::DesktopCaptureOptions& options) - : capture_type_(capture_type), - options_(options), - is_aura_capture_enabled_( - base::FeatureList::IsEnabled(features::kLacrosAuraCapture)) { + : capture_type_(capture_type), options_(options) { // Allow this class to be constructed on any sequence. DETACH_FROM_SEQUENCE(sequence_checker_); - if (is_aura_capture_enabled_) { - InitializeWidgetMap(); - aura::Env::GetInstance()->AddObserver(this); - } + InitializeWidgetMap(); + aura::Env::GetInstance()->AddObserver(this); } DesktopCapturerLacros::~DesktopCapturerLacros() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - - if (is_aura_capture_enabled_) { - aura::Env::GetInstance()->RemoveObserver(this); - } + aura::Env::GetInstance()->RemoveObserver(this); } bool DesktopCapturerLacros::GetSourceList(SourceList* result) { @@ -82,7 +73,7 @@ s.title = source->title; s.display_id = source->display_id; - if (is_aura_capture_enabled_ && source->window_unique_id) { + if (source->window_unique_id) { // Use the AcceleratedWidget's value as the in process identifier, since // that is unique to the process. Since we aren't called on the UI thread, // we cannot call |DesktopMediaID::RegisterNativeWindow()| directly.
diff --git a/content/browser/media/capture/desktop_capturer_lacros.h b/content/browser/media/capture/desktop_capturer_lacros.h index 03c344b..bdfc594 100644 --- a/content/browser/media/capture/desktop_capturer_lacros.h +++ b/content/browser/media/capture/desktop_capturer_lacros.h
@@ -92,11 +92,6 @@ std::map<std::string, gfx::AcceleratedWidget> widget_map_ GUARDED_BY(widget_map_lock_); - // Helper bool to cache the state of the `kLacrosAuraCapture` feature flag, - // since the state is the same unless Chrome is restarted. This is mostly to - // help improve readability, since the feature lookup is fairly cheap. - const bool is_aura_capture_enabled_; - #if DCHECK_IS_ON() bool capturing_frame_ = false; #endif
diff --git a/content/browser/network/sandboxed_http_cache_browsertest.cc b/content/browser/network/sandboxed_http_cache_browsertest.cc index bd94812..8ab0ec5 100644 --- a/content/browser/network/sandboxed_http_cache_browsertest.cc +++ b/content/browser/network/sandboxed_http_cache_browsertest.cc
@@ -31,7 +31,6 @@ #include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/self_owned_receiver.h" #include "net/base/features.h" -#include "sandbox/features.h" #include "sandbox/policy/features.h" #include "services/network/public/cpp/features.h" #include "services/network/public/mojom/network_service_test.mojom.h" @@ -116,7 +115,7 @@ void SetUp() override { #if BUILDFLAG(IS_WIN) - if (!sandbox::features::IsAppContainerSandboxSupported()) { + if (!sandbox::policy::features::IsNetworkSandboxSupported()) { // On *some* Windows, sandboxing cannot be enabled. We skip all the tests // on such platforms. GTEST_SKIP();
diff --git a/content/browser/network/sandboxed_nqe_browsertest.cc b/content/browser/network/sandboxed_nqe_browsertest.cc index ca3e2797..4edd78d 100644 --- a/content/browser/network/sandboxed_nqe_browsertest.cc +++ b/content/browser/network/sandboxed_nqe_browsertest.cc
@@ -14,7 +14,6 @@ #include "content/public/test/browser_test.h" #include "content/public/test/content_browser_test.h" #include "mojo/public/cpp/bindings/sync_call_restrictions.h" -#include "sandbox/features.h" #include "sandbox/policy/features.h" #include "services/network/public/cpp/network_quality_tracker.h" #include "services/network/public/mojom/network_service.mojom.h" @@ -94,7 +93,7 @@ void SetUpOnMainThread() override { #if BUILDFLAG(IS_WIN) - if (!sandbox::features::IsAppContainerSandboxSupported()) { + if (!sandbox::policy::features::IsNetworkSandboxSupported()) { // On *some* Windows, sandboxing cannot be enabled. We skip all the tests // on such platforms. GTEST_SKIP();
diff --git a/content/browser/network/sandboxed_socket_broker_browsertest.cc b/content/browser/network/sandboxed_socket_broker_browsertest.cc index 2a8ac7f..b3cb369 100644 --- a/content/browser/network/sandboxed_socket_broker_browsertest.cc +++ b/content/browser/network/sandboxed_socket_broker_browsertest.cc
@@ -23,7 +23,6 @@ #include "net/socket/tcp_server_socket.h" #include "net/test/embedded_test_server/embedded_test_server.h" #include "net/traffic_annotation/network_traffic_annotation_test_helper.h" -#include "sandbox/features.h" #include "sandbox/policy/features.h" #include "services/cert_verifier/public/mojom/cert_verifier_service_factory.mojom.h" #include "services/network/public/mojom/network_context.mojom.h" @@ -52,8 +51,9 @@ #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_WIN) - if (!sandbox::features::IsAppContainerSandboxSupported()) + if (!sandbox::policy::features::IsNetworkSandboxSupported()) { check_sandbox_ = false; + } #endif // BUILDFLAG(IS_WIN) if (check_sandbox_) {
diff --git a/content/browser/network/transferable_socket_browsertest.cc b/content/browser/network/transferable_socket_browsertest.cc index fc39a33..56f31b34 100644 --- a/content/browser/network/transferable_socket_browsertest.cc +++ b/content/browser/network/transferable_socket_browsertest.cc
@@ -26,7 +26,6 @@ #include "net/test/embedded_test_server/embedded_test_server.h" #include "net/test/embedded_test_server/http_request.h" #include "net/test/embedded_test_server/http_response.h" -#include "sandbox/features.h" #include "sandbox/policy/features.h" #include "services/network/public/cpp/features.h" #include "services/network/public/cpp/transferable_socket.h" @@ -54,7 +53,7 @@ void SetUp() override { #if BUILDFLAG(IS_WIN) - if (!sandbox::features::IsAppContainerSandboxSupported()) { + if (!sandbox::policy::features::IsNetworkSandboxSupported()) { // On *some* Windows, sandboxing cannot be enabled. We skip all the tests // on such platforms. GTEST_SKIP();
diff --git a/content/browser/network_sandbox.cc b/content/browser/network_sandbox.cc index b9b7682..50bb8b2 100644 --- a/content/browser/network_sandbox.cc +++ b/content/browser/network_sandbox.cc
@@ -24,7 +24,7 @@ #include "base/win/security_util.h" #include "base/win/sid.h" -#include "sandbox/features.h" +#include "sandbox/policy/features.h" #endif // BUILDFLAG(IS_WIN) namespace content { @@ -220,8 +220,9 @@ #if BUILDFLAG(IS_WIN) // On platforms that don't support the LPAC sandbox, do nothing. - if (!sandbox::features::IsAppContainerSandboxSupported()) + if (!sandbox::policy::features::IsNetworkSandboxSupported()) { return true; + } DCHECK(!sandbox_params.lpac_capability_name.empty()); auto ac_sids = base::win::Sid::FromNamedCapabilityVector( {sandbox_params.lpac_capability_name});
diff --git a/content/browser/process_internals/process_internals.mojom b/content/browser/process_internals/process_internals.mojom index a974510a..1187645 100644 --- a/content/browser/process_internals/process_internals.mojom +++ b/content/browser/process_internals/process_internals.mojom
@@ -47,6 +47,9 @@ // Specifies whether this SiteInstance is for a <webview> guest. bool is_guest; + // Specifies whether this SiteInstance is for a PDF. + bool is_pdf; + // If this SiteInstance uses a non-default StoragePartition, this specifies a // string representation of that StoragePartition. string? storage_partition;
diff --git a/content/browser/process_internals/process_internals_handler_impl.cc b/content/browser/process_internals/process_internals_handler_impl.cc index 988b19bb..6aa1274 100644 --- a/content/browser/process_internals/process_internals_handler_impl.cc +++ b/content/browser/process_internals/process_internals_handler_impl.cc
@@ -59,6 +59,7 @@ ? absl::make_optional(site_instance->GetSiteInfo().site_url()) : absl::nullopt; frame_info->site_instance->is_guest = site_instance->IsGuest(); + frame_info->site_instance->is_pdf = site_instance->IsPdf(); frame_info->site_instance->is_sandbox_for_iframes = site_instance->GetSiteInfo().is_sandboxed(); frame_info->site_instance->site_instance_group_id =
diff --git a/content/browser/resources/process/process_internals.ts b/content/browser/resources/process/process_internals.ts index 914e2ce0..440e6403 100644 --- a/content/browser/resources/process/process_internals.ts +++ b/content/browser/resources/process/process_internals.ts
@@ -169,6 +169,9 @@ if (frame.siteInstance.isGuest) { itemLabel += ', guest'; } + if (frame.siteInstance.isPdf) { + itemLabel += ', pdf'; + } if (frame.siteInstance.storagePartition) { itemLabel += `, partition:${frame.siteInstance.storagePartition}`; }
diff --git a/content/browser/service_worker/embedded_worker_instance.cc b/content/browser/service_worker/embedded_worker_instance.cc index 2f1dd8fe..79fef11 100644 --- a/content/browser/service_worker/embedded_worker_instance.cc +++ b/content/browser/service_worker/embedded_worker_instance.cc
@@ -406,7 +406,7 @@ GetContentClient() ->browser() ->UpdateEnabledBlinkRuntimeFeaturesInIsolatedWorker( - process_manager->browser_context(), params->script_url, + context_->wrapper()->browser_context(), params->script_url, params->forced_enabled_runtime_features); } CHECK(params->forced_enabled_runtime_features.empty() || @@ -414,10 +414,11 @@ // TODO(crbug.com/862854): Support changes to blink::RendererPreferences while // the worker is running. - DCHECK(process_manager->browser_context() || process_manager->IsShutdown()); + DCHECK(context_->wrapper()->browser_context() || + process_manager->IsShutdown()); params->renderer_preferences = blink::RendererPreferences(); GetContentClient()->browser()->UpdateRendererPreferencesForWorker( - process_manager->browser_context(), ¶ms->renderer_preferences); + context_->wrapper()->browser_context(), ¶ms->renderer_preferences); { // Create a RendererPreferenceWatcher to observe updates in the preferences. @@ -425,7 +426,7 @@ params->preference_watcher_receiver = watcher_remote.InitWithNewPipeAndPassReceiver(); GetContentClient()->browser()->RegisterRendererPreferenceWatcher( - process_manager->browser_context(), std::move(watcher_remote)); + context_->wrapper()->browser_context(), std::move(watcher_remote)); } // If we allocated a process, WorkerProcessHandle has to be created before
diff --git a/content/browser/service_worker/service_worker_context_wrapper.cc b/content/browser/service_worker/service_worker_context_wrapper.cc index 0d1a5e08..be2681f9a 100644 --- a/content/browser/service_worker/service_worker_context_wrapper.cc +++ b/content/browser/service_worker/service_worker_context_wrapper.cc
@@ -244,8 +244,8 @@ BrowserContext* browser_context) : core_observer_list_( base::MakeRefCounted<ServiceWorkerContextObserverList>()), - process_manager_( - std::make_unique<ServiceWorkerProcessManager>(browser_context)) { + browser_context_(browser_context), + process_manager_(std::make_unique<ServiceWorkerProcessManager>()) { DCHECK_CURRENTLY_ON(BrowserThread::UI); // Add this object as an observer of the wrapped |context_core_|. This lets us @@ -303,6 +303,7 @@ process_manager_->Shutdown(); storage_control_.reset(); context_core_.reset(); + browser_context_ = nullptr; } void ServiceWorkerContextWrapper::DeleteAndStartOver() { @@ -331,7 +332,7 @@ BrowserContext* ServiceWorkerContextWrapper::browser_context() { DCHECK_CURRENTLY_ON(BrowserThread::UI); - return process_manager()->browser_context(); + return browser_context_; } void ServiceWorkerContextWrapper::OnRegistrationCompleted(
diff --git a/content/browser/service_worker/service_worker_context_wrapper.h b/content/browser/service_worker/service_worker_context_wrapper.h index 07a92c26..7e0cda8 100644 --- a/content/browser/service_worker/service_worker_context_wrapper.h +++ b/content/browser/service_worker/service_worker_context_wrapper.h
@@ -522,6 +522,10 @@ base::ObserverList<ServiceWorkerContextObserver, true>::Unchecked observer_list_; + // `browser_context_` is maintained to be valid within the lifetime of the + // browser context. + raw_ptr<BrowserContext, DanglingUntriaged> browser_context_; + const std::unique_ptr<ServiceWorkerProcessManager> process_manager_; std::unique_ptr<ServiceWorkerContextCore> context_core_;
diff --git a/content/browser/service_worker/service_worker_hid_delegate_observer_unittest.cc b/content/browser/service_worker/service_worker_hid_delegate_observer_unittest.cc index a0c5d969..80b0c490 100644 --- a/content/browser/service_worker/service_worker_hid_delegate_observer_unittest.cc +++ b/content/browser/service_worker/service_worker_hid_delegate_observer_unittest.cc
@@ -164,6 +164,7 @@ void SetUp() override { ServiceWorkerDeviceDelegateObserverTest::SetUp(); + hid_delegate().SetAssertBrowserContext(true); ON_CALL(hid_delegate(), GetHidManager).WillByDefault(Return(&hid_manager_)); ON_CALL(hid_delegate(), IsFidoAllowedForOrigin) .WillByDefault(Return(false)); @@ -916,4 +917,22 @@ context()->hid_delegate_observer()->registration_id_map().empty()); } +// Shutdown the service worker context and make sure that +// ServiceWorkerHidDelegateObserver removes itself from the hid delegate +// properly. +TEST_F(ServiceWorkerHidDelegateObserverTest, ShutdownServiceWorkerContext) { + const GURL origin(kTestUrl); + auto registration = InstallServiceWorker(origin); + auto* version = registration->newest_installed_version(); + ASSERT_NE(version, nullptr); + StartServiceWorker(version); + CreateHidService(version); + EXPECT_TRUE(context()->hid_delegate_observer()->GetHidServiceForTesting( + registration->id())); + + EXPECT_FALSE(hid_delegate().observer_list().empty()); + helper()->ShutdownContext(); + EXPECT_TRUE(hid_delegate().observer_list().empty()); +} + } // namespace content
diff --git a/content/browser/service_worker/service_worker_new_script_fetcher.cc b/content/browser/service_worker/service_worker_new_script_fetcher.cc index e65644a..4d4f786 100644 --- a/content/browser/service_worker/service_worker_new_script_fetcher.cc +++ b/content/browser/service_worker/service_worker_new_script_fetcher.cc
@@ -89,8 +89,7 @@ void ServiceWorkerNewScriptFetcher::StartScriptLoadingWithNewResourceID( int64_t resource_id) { - BrowserContext* browser_context = - context_->process_manager()->browser_context(); + BrowserContext* browser_context = context_->wrapper()->browser_context(); if (!browser_context) { std::move(callback_).Run(/*main_script_load_params=*/nullptr); return;
diff --git a/content/browser/service_worker/service_worker_process_manager.cc b/content/browser/service_worker/service_worker_process_manager.cc index a33bb65f..de47c9fa 100644 --- a/content/browser/service_worker/service_worker_process_manager.cc +++ b/content/browser/service_worker/service_worker_process_manager.cc
@@ -23,15 +23,12 @@ namespace content { -ServiceWorkerProcessManager::ServiceWorkerProcessManager( - BrowserContext* browser_context) - : browser_context_(browser_context), - storage_partition_(nullptr), +ServiceWorkerProcessManager::ServiceWorkerProcessManager() + : storage_partition_(nullptr), process_id_for_test_(ChildProcessHost::kInvalidUniqueID), new_process_id_for_test_(ChildProcessHost::kInvalidUniqueID), force_new_process_for_test_(false) { DCHECK_CURRENTLY_ON(BrowserThread::UI); - DCHECK(browser_context); weak_this_ = weak_this_factory_.GetWeakPtr(); } @@ -46,22 +43,11 @@ CHECK(worker_process_map_.empty()); } -BrowserContext* ServiceWorkerProcessManager::browser_context() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - // This is safe because reading |browser_context_| on the UI thread doesn't - // need locking (while modifying does). - return browser_context_; -} - void ServiceWorkerProcessManager::Shutdown() { DCHECK_CURRENTLY_ON(BrowserThread::UI); // `StoragePartitionImpl` might be destroyed before `this` is destroyed. Set // `storage_partition_` to nullptr to avoid holding a dangling ptr. storage_partition_ = nullptr; - { - base::AutoLock lock(browser_context_lock_); - browser_context_ = nullptr; - } // In single-process mode, Shutdown() is called when deleting the default // browser context, which is itself destroyed after the RenderProcessHost. @@ -77,11 +63,11 @@ } } worker_process_map_.clear(); + is_shutdown_ = true; } bool ServiceWorkerProcessManager::IsShutdown() { - base::AutoLock lock(browser_context_lock_); - return !browser_context_; + return is_shutdown_; } blink::ServiceWorkerStatusCode @@ -136,9 +122,9 @@ url::Origin::Create(script_url)) : WebExposedIsolationInfo::CreateNonIsolated())); scoped_refptr<SiteInstanceImpl> site_instance = - SiteInstanceImpl::CreateForServiceWorker(browser_context_, url_info, - can_use_existing_process, - is_guest, is_fenced); + SiteInstanceImpl::CreateForServiceWorker( + storage_partition_->browser_context(), url_info, + can_use_existing_process, is_guest, is_fenced); // Get the process from the SiteInstance. RenderProcessHost* rph = site_instance->GetProcess();
diff --git a/content/browser/service_worker/service_worker_process_manager.h b/content/browser/service_worker/service_worker_process_manager.h index 7dd31ca..599492ab 100644 --- a/content/browser/service_worker/service_worker_process_manager.h +++ b/content/browser/service_worker/service_worker_process_manager.h
@@ -13,7 +13,6 @@ #include "base/gtest_prod_util.h" #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" -#include "base/synchronization/lock.h" #include "content/browser/service_worker/service_worker_metrics.h" #include "content/common/content_export.h" #include "services/network/public/mojom/cross_origin_embedder_policy.mojom-forward.h" @@ -25,7 +24,6 @@ namespace content { -class BrowserContext; class SiteInstance; class StoragePartitionImpl; @@ -46,16 +44,12 @@ ServiceWorkerMetrics::StartSituation start_situation; }; - // |*this| must be owned by a ServiceWorkerContextWrapper in a - // StoragePartition within |browser_context|. - explicit ServiceWorkerProcessManager(BrowserContext* browser_context); + // |*this| must be owned by a ServiceWorkerContextWrapper. + ServiceWorkerProcessManager(); // Shutdown must be called before the ProcessManager is destroyed. ~ServiceWorkerProcessManager(); - // Called on the UI thread. - BrowserContext* browser_context(); - // Synchronously prevents new processes from being allocated // and drops references to RenderProcessHosts. Called on the UI thread. void Shutdown(); @@ -122,14 +116,6 @@ private: friend class ServiceWorkerProcessManagerTest; - // Guarded by |browser_context_lock_|. - // Written only on the UI thread, so the UI thread doesn't need to acquire the - // lock when reading. Can be read from other threads with the lock. - raw_ptr<BrowserContext, DanglingUntriaged> browser_context_; - - // Protects |browser_context_|. - base::Lock browser_context_lock_; - ////////////////////////////////////////////////////////////////////////////// // All fields below are only accessed on the UI thread. @@ -150,6 +136,9 @@ bool force_new_process_for_test_; + // If it has been shut down. + bool is_shutdown_ = false; + // Used to double-check that we don't access *this after it's destroyed. base::WeakPtr<ServiceWorkerProcessManager> weak_this_; base::WeakPtrFactory<ServiceWorkerProcessManager> weak_this_factory_{this};
diff --git a/content/browser/service_worker/service_worker_process_manager_unittest.cc b/content/browser/service_worker/service_worker_process_manager_unittest.cc index e0a781cb..07333b5 100644 --- a/content/browser/service_worker/service_worker_process_manager_unittest.cc +++ b/content/browser/service_worker/service_worker_process_manager_unittest.cc
@@ -78,8 +78,7 @@ void SetUp() override { browser_context_ = std::make_unique<TestBrowserContext>(); - process_manager_ = - std::make_unique<ServiceWorkerProcessManager>(browser_context_.get()); + process_manager_ = std::make_unique<ServiceWorkerProcessManager>(); process_manager_->set_storage_partition(static_cast<StoragePartitionImpl*>( browser_context_->GetDefaultStoragePartition())); script_url_ = GURL("http://www.example.com/sw.js");
diff --git a/content/browser/service_worker/service_worker_update_checker.cc b/content/browser/service_worker/service_worker_update_checker.cc index 06a1139..69eac2f 100644 --- a/content/browser/service_worker/service_worker_update_checker.cc +++ b/content/browser/service_worker/service_worker_update_checker.cc
@@ -246,7 +246,7 @@ url, is_main_script, main_script_url_, version_to_update_->scope(), force_bypass_cache_, worker_script_type_, update_via_cache_, fetch_client_settings_object_, time_since_last_check_, - context_->process_manager()->browser_context(), loader_factory_, + context_->wrapper()->browser_context(), loader_factory_, std::move(compare_reader), std::move(copy_reader), std::move(writer), new_resource_id, // If the main script checksum is empty, then calculate each script
diff --git a/content/test/gpu/gpu_tests/test_expectations/context_lost_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/context_lost_expectations.txt index e3e0bf2..34161dd 100644 --- a/content/test/gpu/gpu_tests/test_expectations/context_lost_expectations.txt +++ b/content/test/gpu/gpu_tests/test_expectations/context_lost_expectations.txt
@@ -190,15 +190,7 @@ crbug.com/1419558 [ angle-swiftshader clang-coverage fuchsia fuchsia-board-qemu-x64 google-0xc0de ] ContextLost_WebGLContextLostFromQuantity [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled mac ] ContextLost_WebGLBlockedAfterJSNavigation [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled mac ] ContextLost_WebGLContextLostFromGPUProcessExit [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled mac ] ContextLost_WebGLContextRestoredInHiddenTab [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled mac ] ContextLost_WebGLUnblockedAfterUserInitiatedReload [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled mac ] ContextLost_WorkerWebGLRAFAfterGPUCrash [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled mac ] GpuCrash_GPUProcessCrashesExactlyOncePerVisitToAboutGpuCrash [ Failure ] crbug.com/1469875 [ mac graphite-enabled intel release asan ] GpuCrash_InfoForHardwareGpu [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled mac ] GpuNormalTermination_NewWebGLNotBlocked [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled mac ] GpuNormalTermination_OriginalWebGLNotBlocked [ Failure ] ####################################################################### # Automated Entries After This Point - Do Not Manually Add Below Here #
diff --git a/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt index 885a643..234b5b37 100644 --- a/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt +++ b/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt
@@ -210,6 +210,7 @@ crbug.com/1356246 [ android android-nexus-5x ] Pixel_SVGHuge [ Skip ] crbug.com/1356246 [ mac amd debug ] Pixel_SVGHuge [ Skip ] crbug.com/1356246 [ mac amd release asan ] Pixel_SVGHuge [ Skip ] +crbug.com/1356246 [ mac intel debug ] Pixel_SVGHuge [ Skip ] crbug.com/1356246 [ mac intel release asan ] Pixel_SVGHuge [ Skip ] # Mac Nvidia laptops are quite old and the test times out on release builds too. crbug.com/1356246 [ mac nvidia ] Pixel_SVGHuge [ Skip ] @@ -377,48 +378,20 @@ crbug.com/1469875 [ mac graphite-enabled ] Pixel_CSSFilterEffects_NoOverlays [ Failure ] crbug.com/1469875 [ mac graphite-enabled ] Pixel_OffscreenCanvasAccelerated2D [ Failure ] crbug.com/1469875 [ mac graphite-enabled ] Pixel_OffscreenCanvasAccelerated2DWorker [ Failure ] -crbug.com/1469875 [ mac graphite-enabled amd angle-opengl ] Pixel_OffscreenCanvasIBRCWebGLHighPerfMain [ Failure ] -crbug.com/1469875 [ mac graphite-enabled apple angle-opengl ] Pixel_OffscreenCanvasIBRCWebGLHighPerfMain [ Failure ] -crbug.com/1469875 [ mac graphite-enabled intel angle-opengl ] Pixel_OffscreenCanvasIBRCWebGLHighPerfMain [ Failure ] -crbug.com/1469875 [ mac graphite-enabled amd angle-opengl ] Pixel_OffscreenCanvasIBRCWebGLHighPerfWorker [ Failure ] -crbug.com/1469875 [ mac graphite-enabled apple angle-opengl ] Pixel_OffscreenCanvasIBRCWebGLHighPerfWorker [ Failure ] -crbug.com/1469875 [ mac graphite-enabled intel angle-opengl ] Pixel_OffscreenCanvasIBRCWebGLHighPerfWorker [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_OffscreenCanvasIBRCWebGLMain [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_OffscreenCanvasIBRCWebGLWorker [ Failure ] crbug.com/1469875 [ mac graphite-enabled ] Pixel_OffscreenCanvasTransferAfterStyleResize [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_OffscreenCanvasTransferBeforeStyleResize [ Failure ] crbug.com/1469875 [ mac graphite-enabled ] Pixel_OffscreenCanvasTransferToImageBitmap [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_OffscreenCanvasTransferToImageBitmapSoftwareCompositing [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_OffscreenCanvasTransferToImageBitmapWorker [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_OffscreenCanvasWebGLDefault [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_OffscreenCanvasWebGLDefaultWorker [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_OffscreenCanvasWebGLSoftwareCompositing [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_OffscreenCanvasWebGLSoftwareCompositingWorker [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_OffscreenCanvasWebglResizeOnWorker [ Failure ] crbug.com/1469875 [ mac graphite-enabled ] Pixel_PaintWorkletTransform [ Failure ] crbug.com/1469875 [ mac graphite-enabled amd release no-asan ] Pixel_SVGHuge [ Failure ] crbug.com/1469875 [ mac graphite-enabled apple ] Pixel_SVGHuge [ Failure ] -crbug.com/1469875 [ mac graphite-enabled intel no-asan ] Pixel_SVGHuge [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_VideoStreamFrom2DAlphaCanvas_DisableOOPRaster [ Failure ] -crbug.com/1469875 [ angle-opengl apple-apple-m2 graphite-enabled mac-arm64 ventura ] Pixel_VideoStreamFrom2DAlphaCanvas_DisableReadbackFromTexture [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled intel-0x3e9b mac-x86_64 ventura ] Pixel_VideoStreamFrom2DAlphaCanvas_DisableReadbackFromTexture [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_WebGLContextRestored [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_WebGLFloat [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_WebGLGreenTriangle_NoAA_NoAlpha [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_WebGLGreenTriangle_NonChromiumImage_AA_Alpha [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_WebGLGreenTriangle_NonChromiumImage_AA_NoAlpha [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_WebGLGreenTriangle_NonChromiumImage_NoAA_Alpha [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_WebGLGreenTriangle_NonChromiumImage_NoAA_NoAlpha [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_WebGLSadCanvas [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled ventura ] Pixel_WebGLWebCodecsBreakoutBoxDisplaysFrame [ Failure ] -crbug.com/1469875 [ angle-opengl apple-apple-m2 graphite-enabled mac-arm64 ventura ] Pixel_WebGPUCanvasDisableOneCopyCapture_Accelerated [ Failure ] -crbug.com/1469875 [ angle-opengl graphite-enabled intel-0x3e9b mac-x86_64 ventura ] Pixel_WebGPUCanvasDisableOneCopyCapture_Accelerated [ Failure ] +crbug.com/1469875 [ mac graphite-enabled intel release no-asan ] Pixel_SVGHuge [ Failure ] crbug.com/1469875 [ mac graphite-enabled no-asan ] Pixel_WebGPUCanvasOneCopyCapture [ Failure ] crbug.com/1469875 [ mac graphite-enabled ] Pixel_WebGPUImportVideoFrame [ Failure ] crbug.com/1469875 [ mac graphite-enabled ] Pixel_WebGPUImportVideoFrameOffscreenCanvas [ Failure ] crbug.com/1469875 [ mac graphite-enabled ] Pixel_WebGPUImportVideoFrameUnaccelerated [ Failure ] crbug.com/1469875 [ mac graphite-enabled ] Pixel_WebGPUImportVideoFrameUnacceleratedOffscreenCanvas [ Failure ] +crbug.com/1474611 [ mac nvidia angle-opengl graphite-disabled ] Pixel_WebGLGreenTriangle_NonChromiumImage_NoAA_NoAlpha [ Failure ] + ####################################################################### # Automated Entries After This Point - Do Not Manually Add Below Here # #######################################################################
diff --git a/docs/mac/arc.md b/docs/mac/arc.md index c76b6b7..2c79230 100644 --- a/docs/mac/arc.md +++ b/docs/mac/arc.md
@@ -186,9 +186,9 @@ are still parts of Chromium that cannot be compiled with ARC, these utilities remain, however they should not (or sometimes cannot) be used from ARC: -- `base::scoped_nsobject<>`: This only exists to handle scoping of Objective-C - objects in non-ARC code. It cannot be used in ARC code; use `__strong` - instead. +- `scoped_nsobject<>`/`scoped_nsprotocol<>`: These only exists to handle scoping + of Objective-C objects in non-ARC code. They cannot be used in ARC code; use + `__strong` instead. - `ScopedNSAutoreleasePool`: Use `@autoreleasepool` instead, and remove any use of `ScopedNSAutoreleasePool` that you encounter, if possible. `ScopedNSAutoreleasePool` was rewritten to be able to work in ARC code, but
diff --git a/extensions/browser/api/web_request/extension_web_request_event_router.cc b/extensions/browser/api/web_request/extension_web_request_event_router.cc index e020b9a..7533376 100644 --- a/extensions/browser/api/web_request/extension_web_request_event_router.cc +++ b/extensions/browser/api/web_request/extension_web_request_event_router.cc
@@ -955,14 +955,14 @@ for (const auto& action : actions) { switch (action.type) { case DNRRequestAction::Type::BLOCK: - ClearPendingCallbacks(*request); + ClearPendingCallbacks(browser_context, *request); DCHECK_EQ(1u, actions.size()); OnDNRActionMatched(browser_context, *request, action); RecordNetworkRequestBlocked(request->ukm_source_id, action.extension_id); return net::ERR_BLOCKED_BY_CLIENT; case DNRRequestAction::Type::COLLAPSE: - ClearPendingCallbacks(*request); + ClearPendingCallbacks(browser_context, *request); DCHECK_EQ(1u, actions.size()); OnDNRActionMatched(browser_context, *request, action); *should_collapse_initiator = true; @@ -976,7 +976,7 @@ break; case DNRRequestAction::Type::REDIRECT: case DNRRequestAction::Type::UPGRADE: - ClearPendingCallbacks(*request); + ClearPendingCallbacks(browser_context, *request); DCHECK_EQ(1u, actions.size()); DCHECK(action.redirect_url); OnDNRActionMatched(browser_context, *request, action); @@ -1003,7 +1003,8 @@ return net::OK; // Nobody saw a reason for modifying the request. } - BlockedRequest& blocked_request = blocked_requests_[request->id]; + BlockedRequest& blocked_request = + GetOrAddBlockedRequest(browser_context, request->id); blocked_request.event = kOnBeforeRequest; blocked_request.is_incognito |= is_incognito_context; blocked_request.request = request; @@ -1058,7 +1059,8 @@ return net::OK; // Nobody saw a reason for modifying the request. } - BlockedRequest& blocked_request = blocked_requests_[request->id]; + BlockedRequest& blocked_request = + GetOrAddBlockedRequest(browser_context, request->id); blocked_request.event = kOnBeforeSendHeaders; blocked_request.is_incognito |= browser_context->IsOffTheRecord(); blocked_request.request = request; @@ -1144,7 +1146,8 @@ return net::OK; // Nobody saw a reason for modifying the request. } - BlockedRequest& blocked_request = blocked_requests_[request->id]; + BlockedRequest& blocked_request = + GetOrAddBlockedRequest(browser_context, request->id); blocked_request.event = kOnHeadersReceived; blocked_request.is_incognito |= browser_context->IsOffTheRecord(); blocked_request.request = request; @@ -1190,7 +1193,8 @@ if (DispatchEvent(browser_context, request, listeners, std::move(event_details))) { - BlockedRequest& blocked_request = blocked_requests_[request->id]; + BlockedRequest& blocked_request = + GetOrAddBlockedRequest(browser_context, request->id); blocked_request.event = kOnAuthRequired; blocked_request.is_incognito |= browser_context->IsOffTheRecord(); blocked_request.request = request; @@ -1288,7 +1292,7 @@ DCHECK(!GetAndSetSignaled(request->id, kOnCompleted)); - ClearPendingCallbacks(*request); + ClearPendingCallbacks(browser_context, *request); int extra_info_spec = 0; RawListeners listeners = GetMatchingListeners( @@ -1342,7 +1346,7 @@ DCHECK(!GetAndSetSignaled(request->id, kOnErrorOccurred)); - ClearPendingCallbacks(*request); + ClearPendingCallbacks(browser_context, *request); int extra_info_spec = 0; RawListeners listeners = GetMatchingListeners( @@ -1367,15 +1371,16 @@ void ExtensionWebRequestEventRouter::OnRequestWillBeDestroyed( content::BrowserContext* browser_context, const WebRequestInfo* request) { - ClearPendingCallbacks(*request); + ClearPendingCallbacks(browser_context, *request); SignaledRequestIDTracker::Get().ClearRequest(request->id); GetExtensionWebRequestTimeTracker().LogRequestEndTime(request->id, base::TimeTicks::Now()); } void ExtensionWebRequestEventRouter::ClearPendingCallbacks( + content::BrowserContext* browser_context, const WebRequestInfo& request) { - blocked_requests_.erase(request.id); + ClearBlockedRequest(browser_context, request.id); } bool ExtensionWebRequestEventRouter::DispatchEvent( @@ -1401,7 +1406,8 @@ request->id, std::move(event_details)); if (num_handlers_blocking > 0) { - BlockedRequest& blocked_request = blocked_requests_[request->id]; + BlockedRequest& blocked_request = + GetOrAddBlockedRequest(browser_context, request->id); blocked_request.request = request; blocked_request.is_incognito |= browser_context->IsOffTheRecord(); blocked_request.num_handlers_blocking += num_handlers_blocking; @@ -1937,6 +1943,41 @@ return iter != data_.end() && iter->second.extra_headers_count > 0; } +ExtensionWebRequestEventRouter::BlockedRequestMap& +ExtensionWebRequestEventRouter::GetBlockedRequestMap( + content::BrowserContext* browser_context) { + // Blocked requests are stored in the data for the regular context. + // TODO(crbug.com/1474688): Blocked requests should be isolated to + // a particular BrowserContext and not shared between the main and + // OTR contexts. + if (browser_context->IsOffTheRecord()) { + browser_context = GetCrossBrowserContext(browser_context); + } + return data_[GetBrowserContextID(browser_context)].blocked_requests; +} + +void ExtensionWebRequestEventRouter::ClearBlockedRequest( + content::BrowserContext* browser_context, + uint64_t id) { + GetBlockedRequestMap(browser_context).erase(id); +} + +ExtensionWebRequestEventRouter::BlockedRequest& +ExtensionWebRequestEventRouter::GetOrAddBlockedRequest( + content::BrowserContext* browser_context, + uint64_t id) { + return GetBlockedRequestMap(browser_context)[id]; +} + +ExtensionWebRequestEventRouter::BlockedRequest* +ExtensionWebRequestEventRouter::GetBlockedRequest( + content::BrowserContext* browser_context, + uint64_t id) { + BlockedRequestMap& blocked_requests = GetBlockedRequestMap(browser_context); + auto it = blocked_requests.find(id); + return it == blocked_requests.end() ? nullptr : &it->second; +} + bool ExtensionWebRequestEventRouter::IsPageLoad( const WebRequestInfo& request) const { return request.web_request_type == WebRequestResourceType::MAIN_FRAME; @@ -2119,35 +2160,34 @@ // It's possible that this request was deleted, or cancelled by a previous // event handler or handled by Declarative Net Request API. If so, ignore this // response. - auto it = blocked_requests_.find(request_id); - if (it == blocked_requests_.end()) { + BlockedRequest* blocked_request = + GetBlockedRequest(browser_context, request_id); + if (!blocked_request) { return; } - BlockedRequest& blocked_request = it->second; - // Ensure that the response is for the event we are blocked on. - DCHECK_EQ(blocked_request.event, GetEventTypeFromEventName(event_name)); + DCHECK_EQ(blocked_request->event, GetEventTypeFromEventName(event_name)); // Cache the event type; we use it below. - EventTypes request_event = blocked_request.event; + EventTypes request_event = blocked_request->event; - int num_handlers_blocking = --blocked_request.num_handlers_blocking; + int num_handlers_blocking = --blocked_request->num_handlers_blocking; CHECK_GE(num_handlers_blocking, 0); if (response) { helpers::EventResponseDelta delta = CalculateDelta( - browser_context, &blocked_request, response, extra_info_spec); + browser_context, blocked_request, response, extra_info_spec); activity_monitor::OnWebRequestApiUsed( static_cast<content::BrowserContext*>(browser_context), extension_id, - blocked_request.request->url, blocked_request.is_incognito, event_name, - SummarizeResponseDelta(event_name, delta)); + blocked_request->request->url, blocked_request->is_incognito, + event_name, SummarizeResponseDelta(event_name, delta)); - blocked_request.response_deltas.push_back(std::move(delta)); + blocked_request->response_deltas.push_back(std::move(delta)); } if (num_handlers_blocking == 0) { - ExecuteDeltas(browser_context, blocked_request.request, true); + ExecuteDeltas(browser_context, blocked_request->request, true); // Note: `blocked_request` can be deleted here, depending on the outcome // of ExecuteDeltas(). Use the cached `request_event` and `request_id` // instead of using `blocked_request`. @@ -2182,7 +2222,8 @@ content::BrowserContext* browser_context, const WebRequestInfo* request, bool call_callback) { - BlockedRequest& blocked_request = blocked_requests_[request->id]; + BlockedRequest& blocked_request = + GetOrAddBlockedRequest(browser_context, request->id); CHECK_EQ(0, blocked_request.num_handlers_blocking); helpers::EventResponseDeltas& deltas = blocked_request.response_deltas; base::TimeDelta block_time = @@ -2288,7 +2329,7 @@ net::CompletionOnceCallback callback = std::move(blocked_request.callback); // Ensure that request is removed before callback because the callback // might trigger the next event. - blocked_requests_.erase(request->id); + ClearBlockedRequest(browser_context, request->id); if (call_callback) { std::move(callback).Run(rv); } @@ -2296,7 +2337,7 @@ auto callback = std::move(blocked_request.before_send_headers_callback); // Ensure that request is removed before callback because the callback // might trigger the next event. - blocked_requests_.erase(request->id); + ClearBlockedRequest(browser_context, request->id); if (call_callback) { std::move(callback).Run(request_headers_removed, request_headers_set, rv); } @@ -2311,12 +2352,12 @@ } AuthCallback callback = std::move(blocked_request.auth_callback); - blocked_requests_.erase(request->id); + ClearBlockedRequest(browser_context, request->id); if (call_callback) { std::move(callback).Run(response); } } else { - blocked_requests_.erase(request->id); + ClearBlockedRequest(browser_context, request->id); } return rv; } @@ -2380,7 +2421,8 @@ base::Unretained(this), base::UnsafeDanglingUntriaged(browser_context), event_name, request->id, request_stage)); - BlockedRequest& blocked_request = blocked_requests_[request->id]; + BlockedRequest& blocked_request = + GetOrAddBlockedRequest(browser_context, request->id); blocked_request.num_handlers_blocking++; blocked_request.request = request; blocked_request.is_incognito |= browser_context->IsOffTheRecord(); @@ -2399,7 +2441,7 @@ if (!result.empty()) { helpers::EventResponseDeltas& deltas = - blocked_requests_[request->id].response_deltas; + GetOrAddBlockedRequest(browser_context, request->id).response_deltas; deltas.insert(deltas.end(), std::make_move_iterator(result.begin()), std::make_move_iterator(result.end())); deltas_created = true; @@ -2416,15 +2458,15 @@ RequestStage request_stage) { // It's possible that this request was deleted, or cancelled by a previous // event handler. If so, ignore this response. - auto it = blocked_requests_.find(request_id); - if (it == blocked_requests_.end()) { + BlockedRequest* blocked_request = + GetBlockedRequest(browser_context, request_id); + if (!blocked_request) { return; } - BlockedRequest& blocked_request = it->second; - ProcessDeclarativeRules(browser_context, event_name, blocked_request.request, + ProcessDeclarativeRules(browser_context, event_name, blocked_request->request, request_stage, - blocked_request.original_response_headers.get()); + blocked_request->original_response_headers.get()); DecrementBlockCount(browser_context, std::string(), event_name, request_id, nullptr, 0 /* extra_info_spec */); }
diff --git a/extensions/browser/api/web_request/extension_web_request_event_router.h b/extensions/browser/api/web_request/extension_web_request_event_router.h index 07bef95..792a690d 100644 --- a/extensions/browser/api/web_request/extension_web_request_event_router.h +++ b/extensions/browser/api/web_request/extension_web_request_event_router.h
@@ -406,6 +406,7 @@ using ListenerIDs = std::vector<EventListener::ID>; using Listeners = std::vector<std::unique_ptr<EventListener>>; using ListenerMap = std::map<std::string, Listeners>; + using BlockedRequestMap = std::map<uint64_t, BlockedRequest>; // A collection of data associated with a given BrowserContext. struct BrowserContextData { @@ -427,10 +428,14 @@ // registry. For non-webview contexts, the default value defined by // `RulesRegistryService::kDefaultRulesRegistryID` is used. std::map<int, scoped_refptr<WebRequestRulesRegistry>> rules_registries; + + // A map of network requests that are waiting for at least one event handler + // to respond. Blocked requests are stored on the regular BrowserContext for + // both it and any off-the-record BrowserContext that exists. + BlockedRequestMap blocked_requests; }; using DataMap = std::map<BrowserContextID, BrowserContextData>; - using BlockedRequestMap = std::map<uint64_t, BlockedRequest>; ExtensionWebRequestEventRouter(); @@ -475,7 +480,8 @@ // Ensures that future callbacks for |request| are ignored so that it can be // destroyed safely. - void ClearPendingCallbacks(const WebRequestInfo& request); + void ClearPendingCallbacks(content::BrowserContext* browser_context, + const WebRequestInfo& request); bool DispatchEvent(content::BrowserContext* browser_context, const WebRequestInfo* request, @@ -588,12 +594,28 @@ // Helper for |HasAnyExtraHeadersListener()|. bool HasAnyExtraHeadersListenerImpl(content::BrowserContext* browser_context); + // Returns the instance of the BlockedRequestMap for `browser_context`. + BlockedRequestMap& GetBlockedRequestMap( + content::BrowserContext* browser_context); + + // Clears any entries in the BlockedRequestMap for `browser_context` with + // `id`. + void ClearBlockedRequest(content::BrowserContext* browser_context, + uint64_t id); + + // Gets the entry in the BlockedRequestMap for `browser_context` with `id`. + // The entry is created if it doesn't exist. + BlockedRequest& GetOrAddBlockedRequest( + content::BrowserContext* browser_context, + uint64_t id); + + // Gets the existing entry in the BlockedRequestMap for `browser_context` + // with `id`. The entry is not created if it doesn't exist. + BlockedRequest* GetBlockedRequest(content::BrowserContext* browser_context, + uint64_t id); + // A map of data associated with given BrowserContexts. DataMap data_; - - // A map of network requests that are waiting for at least one event handler - // to respond. - BlockedRequestMap blocked_requests_; }; } // namespace extensions
diff --git a/extensions/browser/extension_creator_unittest.cc b/extensions/browser/extension_creator_unittest.cc index 5d01396d..40da41b5 100644 --- a/extensions/browser/extension_creator_unittest.cc +++ b/extensions/browser/extension_creator_unittest.cc
@@ -128,8 +128,8 @@ ASSERT_TRUE(base::WriteFile(manifest_file, R"({ "manifest_version": 3)")); EXPECT_FALSE(ValidateExtension(src_path, 0)); - EXPECT_EQ("Manifest is not valid JSON. Line: 1, column: 24, Syntax error.", - extension_creator()->error_message()); + EXPECT_TRUE(extension_creator()->error_message().starts_with( + "Manifest is not valid JSON.")); // Replace partial manifest with correct minimum file. ASSERT_TRUE(base::WriteFile(manifest_file,
diff --git a/extensions/browser/extension_function_histogram_value.h b/extensions/browser/extension_function_histogram_value.h index fa9e11dd..fc0e2235 100644 --- a/extensions/browser/extension_function_histogram_value.h +++ b/extensions/browser/extension_function_histogram_value.h
@@ -1879,7 +1879,6 @@ USERSCRIPTS_REGISTER = 1817, OS_DIAGNOSTICS_RUNBLUETOOTHSCANNINGROUTINE = 1818, OS_DIAGNOSTICS_RUNBLUETOOTHPAIRINGROUTINE = 1819, - ACCESSIBILITY_PRIVATE_SHOWTOAST = 1820, // Last entry: Add new entries above, then run: // tools/metrics/histograms/update_extension_histograms.py ENUM_BOUNDARY
diff --git a/extensions/renderer/bindings/api_binding_unittest.cc b/extensions/renderer/bindings/api_binding_unittest.cc index 6716b04..dc78340 100644 --- a/extensions/renderer/bindings/api_binding_unittest.cc +++ b/extensions/renderer/bindings/api_binding_unittest.cc
@@ -2288,21 +2288,14 @@ // request is completed with a value, the promise will be resolved with that // value. { - constexpr char kFunctionCall[] = - R"((function(api) { - this.apiResult = api.supportsPromises(3); - this.apiResult.then((strResult) => { - this.promiseResult = strResult; - }); - }))"; - v8::Local<v8::Function> promise_api_call = - FunctionFromString(context, kFunctionCall); + v8::Local<v8::Function> promise_api_call = FunctionFromString( + context, "(function(api) { return api.supportsPromises(3); })"); v8::Local<v8::Value> args[] = {binding_object}; - RunFunctionOnGlobal(promise_api_call, context, std::size(args), args); + v8::Local<v8::Value> result = + RunFunctionOnGlobal(promise_api_call, context, std::size(args), args); v8::Local<v8::Promise> promise; - ASSERT_TRUE(GetPropertyFromObjectAs(context->Global(), context, "apiResult", - &promise)); + ASSERT_TRUE(GetValueAs(result, &promise)); EXPECT_EQ(v8::Promise::kPending, promise->State()); ASSERT_TRUE(last_request()); @@ -2312,8 +2305,6 @@ EXPECT_EQ(v8::Promise::kFulfilled, promise->State()); EXPECT_EQ(R"("foo")", V8ToString(promise->Result(), context)); - EXPECT_EQ(R"("foo")", GetStringPropertyFromObject( - context->Global(), context, "promiseResult")); } // Also test that promise-based APIs still support passing a callback. { @@ -2389,12 +2380,8 @@ // required callback isn't supplied. context_allows_promises = false; { - constexpr char kPromiseFunctionCall[] = - R"((function(api) { - this.apiResult = api.supportsPromises(3); - }))"; - v8::Local<v8::Function> promise_api_call = - FunctionFromString(context, kPromiseFunctionCall); + v8::Local<v8::Function> promise_api_call = FunctionFromString( + context, "(function(api) { return api.supportsPromises(3) });"); v8::Local<v8::Value> args[] = {binding_object}; auto expected_error = "Uncaught TypeError: " + @@ -2429,19 +2416,13 @@ // If a returns_async field is marked as optional, then a context which // doesn't support promises should be able to leave it off of the call. { - constexpr char kCallbackOptionalFunctionCall[] = - R"((function(api) { - this.callbackOptionalResult = api.callbackOptional(3); - }))"; - v8::Local<v8::Function> promise_api_call = - FunctionFromString(context, kCallbackOptionalFunctionCall); + v8::Local<v8::Function> promise_api_call = FunctionFromString( + context, "(function(api) { return api.callbackOptional(3) });"); v8::Local<v8::Value> args[] = {binding_object}; - RunFunctionOnGlobal(promise_api_call, context, std::size(args), args); + v8::Local<v8::Value> api_result = + RunFunctionOnGlobal(promise_api_call, context, std::size(args), args); ASSERT_TRUE(last_request()); - - v8::Local<v8::Value> api_result = GetPropertyFromObject( - context->Global(), context, "callbackOptionalResult"); ASSERT_TRUE(api_result->IsNullOrUndefined()); } }
diff --git a/gpu/command_buffer/service/shared_image/iosurface_image_backing.h b/gpu/command_buffer/service/shared_image/iosurface_image_backing.h index 6af7e34..602cd09 100644 --- a/gpu/command_buffer/service/shared_image/iosurface_image_backing.h +++ b/gpu/command_buffer/service/shared_image/iosurface_image_backing.h
@@ -221,7 +221,7 @@ uint64_t signaled_value() const { return signaled_value_; } private: - base::scoped_nsprotocol<id<MTLSharedEvent>> shared_event_; + base::apple::scoped_nsprotocol<id<MTLSharedEvent>> shared_event_; uint64_t signaled_value_; };
diff --git a/gpu/command_buffer/service/shared_image/iosurface_image_backing.mm b/gpu/command_buffer/service/shared_image/iosurface_image_backing.mm index 8c4f88a..d083e94 100644 --- a/gpu/command_buffer/service/shared_image/iosurface_image_backing.mm +++ b/gpu/command_buffer/service/shared_image/iosurface_image_backing.mm
@@ -91,21 +91,21 @@ #if BUILDFLAG(SKIA_USE_METAL) -base::scoped_nsprotocol<id<MTLTexture>> CreateMetalTexture( +base::apple::scoped_nsprotocol<id<MTLTexture>> CreateMetalTexture( id<MTLDevice> mtl_device, IOSurfaceRef io_surface, const gfx::Size& size, viz::SharedImageFormat format, int plane_index) { TRACE_EVENT0("gpu", "IOSurfaceImageBackingFactory::CreateMetalTexture"); - base::scoped_nsprotocol<id<MTLTexture>> mtl_texture; + base::apple::scoped_nsprotocol<id<MTLTexture>> mtl_texture; MTLPixelFormat mtl_pixel_format = static_cast<MTLPixelFormat>(ToMTLPixelFormat(format, plane_index)); if (mtl_pixel_format == MTLPixelFormatInvalid) { return mtl_texture; } - base::scoped_nsobject<MTLTextureDescriptor> mtl_tex_desc( + base::apple::scoped_nsobject<MTLTextureDescriptor> mtl_tex_desc( [MTLTextureDescriptor new]); [mtl_tex_desc setTextureType:MTLTextureType2D]; [mtl_tex_desc @@ -134,7 +134,7 @@ } std::vector<skgpu::graphite::BackendTexture> CreateGraphiteMetalTextures( - std::vector<base::scoped_nsprotocol<id<MTLTexture>>> mtl_textures, + std::vector<base::apple::scoped_nsprotocol<id<MTLTexture>>> mtl_textures, const viz::SharedImageFormat format, const gfx::Size& size) { int num_planes = format.NumberOfPlanes(); @@ -399,7 +399,7 @@ SharedImageBacking* backing, MemoryTypeTracker* tracker, skgpu::graphite::Recorder* recorder, - std::vector<base::scoped_nsprotocol<id<MTLTexture>>> mtl_textures) + std::vector<base::apple::scoped_nsprotocol<id<MTLTexture>>> mtl_textures) : SkiaGraphiteImageRepresentation(manager, backing, tracker), recorder_(recorder), mtl_textures_(std::move(mtl_textures)) { @@ -482,7 +482,7 @@ } const raw_ptr<skgpu::graphite::Recorder> recorder_; - std::vector<base::scoped_nsprotocol<id<MTLTexture>>> mtl_textures_; + std::vector<base::apple::scoped_nsprotocol<id<MTLTexture>>> mtl_textures_; std::vector<sk_sp<SkSurface>> write_surfaces_; }; #endif @@ -1125,14 +1125,15 @@ } else { CHECK_EQ(context_state->gr_context_type(), GrContextType::kGraphiteMetal); #if BUILDFLAG(SKIA_USE_METAL) - std::vector<base::scoped_nsprotocol<id<MTLTexture>>> mtl_textures; + std::vector<base::apple::scoped_nsprotocol<id<MTLTexture>>> mtl_textures; mtl_textures.reserve(format().NumberOfPlanes()); for (int plane = 0; plane < format().NumberOfPlanes(); plane++) { auto plane_size = format().GetPlaneSize(plane, size()); - base::scoped_nsprotocol<id<MTLTexture>> mtl_texture = CreateMetalTexture( - context_state->metal_context_provider()->GetMTLDevice(), - io_surface_.get(), plane_size, format(), plane); + base::apple::scoped_nsprotocol<id<MTLTexture>> mtl_texture = + CreateMetalTexture( + context_state->metal_context_provider()->GetMTLDevice(), + io_surface_.get(), plane_size, format(), plane); if (!mtl_texture) { LOG(ERROR) << "Failed to create MTLTexture from IOSurface"; return nullptr;
diff --git a/gpu/vulkan/init/gr_vk_memory_allocator_impl.cc b/gpu/vulkan/init/gr_vk_memory_allocator_impl.cc index 9dd6ccb4..695d169 100644 --- a/gpu/vulkan/init/gr_vk_memory_allocator_impl.cc +++ b/gpu/vulkan/init/gr_vk_memory_allocator_impl.cc
@@ -203,8 +203,8 @@ vmaGetMemoryProperties(allocator_, &physical_device_memory_properties); for (uint32_t i = 0; i < physical_device_memory_properties->memoryHeapCount; ++i) { - total_allocated_memory += budget[i].statistics.blockBytes; - total_used_memory += budget[i].statistics.allocationBytes; + total_allocated_memory += budget[i].blockBytes; + total_used_memory += budget[i].allocationBytes; } DCHECK_LE(total_used_memory, total_allocated_memory); return {total_allocated_memory, total_used_memory};
diff --git a/gpu/vulkan/vma_wrapper.cc b/gpu/vulkan/vma_wrapper.cc index 72413b73..f185b25 100644 --- a/gpu/vulkan/vma_wrapper.cc +++ b/gpu/vulkan/vma_wrapper.cc
@@ -24,39 +24,30 @@ const bool is_thread_safe, VmaAllocator* pAllocator) { auto* function_pointers = gpu::GetVulkanFunctionPointers(); - VmaVulkanFunctions functions; - functions.vkGetPhysicalDeviceProperties = - function_pointers->vkGetPhysicalDeviceProperties.get(); - functions.vkGetPhysicalDeviceMemoryProperties = - function_pointers->vkGetPhysicalDeviceMemoryProperties.get(); - functions.vkAllocateMemory = function_pointers->vkAllocateMemory.get(); - functions.vkFreeMemory = function_pointers->vkFreeMemory.get(); - functions.vkMapMemory = function_pointers->vkMapMemory.get(); - functions.vkUnmapMemory = function_pointers->vkUnmapMemory.get(); - functions.vkFlushMappedMemoryRanges = - function_pointers->vkFlushMappedMemoryRanges.get(); - functions.vkInvalidateMappedMemoryRanges = - function_pointers->vkInvalidateMappedMemoryRanges.get(); - functions.vkBindBufferMemory = function_pointers->vkBindBufferMemory.get(); - functions.vkBindImageMemory = function_pointers->vkBindImageMemory.get(); - functions.vkGetBufferMemoryRequirements = - function_pointers->vkGetBufferMemoryRequirements.get(); - functions.vkGetImageMemoryRequirements = - function_pointers->vkGetImageMemoryRequirements.get(); - functions.vkCreateBuffer = function_pointers->vkCreateBuffer.get(); - functions.vkDestroyBuffer = function_pointers->vkDestroyBuffer.get(); - functions.vkCreateImage = function_pointers->vkCreateImage.get(); - functions.vkDestroyImage = function_pointers->vkDestroyImage.get(); - functions.vkCmdCopyBuffer = function_pointers->vkCmdCopyBuffer.get(); - functions.vkGetBufferMemoryRequirements2KHR = - function_pointers->vkGetBufferMemoryRequirements2.get(); - functions.vkGetImageMemoryRequirements2KHR = - function_pointers->vkGetImageMemoryRequirements2.get(); - functions.vkBindBufferMemory2KHR = - function_pointers->vkBindBufferMemory2.get(); - functions.vkBindImageMemory2KHR = function_pointers->vkBindImageMemory2.get(); - functions.vkGetPhysicalDeviceMemoryProperties2KHR = - function_pointers->vkGetPhysicalDeviceMemoryProperties2.get(); + VmaVulkanFunctions functions = { + function_pointers->vkGetPhysicalDeviceProperties.get(), + function_pointers->vkGetPhysicalDeviceMemoryProperties.get(), + function_pointers->vkAllocateMemory.get(), + function_pointers->vkFreeMemory.get(), + function_pointers->vkMapMemory.get(), + function_pointers->vkUnmapMemory.get(), + function_pointers->vkFlushMappedMemoryRanges.get(), + function_pointers->vkInvalidateMappedMemoryRanges.get(), + function_pointers->vkBindBufferMemory.get(), + function_pointers->vkBindImageMemory.get(), + function_pointers->vkGetBufferMemoryRequirements.get(), + function_pointers->vkGetImageMemoryRequirements.get(), + function_pointers->vkCreateBuffer.get(), + function_pointers->vkDestroyBuffer.get(), + function_pointers->vkCreateImage.get(), + function_pointers->vkDestroyImage.get(), + function_pointers->vkCmdCopyBuffer.get(), + function_pointers->vkGetBufferMemoryRequirements2.get(), + function_pointers->vkGetImageMemoryRequirements2.get(), + function_pointers->vkBindBufferMemory2.get(), + function_pointers->vkBindImageMemory2.get(), + function_pointers->vkGetPhysicalDeviceMemoryProperties2.get(), + }; static_assert(kVulkanRequiredApiVersion >= VK_API_VERSION_1_1, ""); VmaAllocatorCreateInfo allocator_info = { @@ -184,7 +175,7 @@ } void GetBudget(VmaAllocator allocator, VmaBudget* budget) { - vmaGetHeapBudgets(allocator, budget); + vmaGetBudget(allocator, budget); } std::pair<uint64_t, uint64_t> GetTotalAllocatedAndUsedMemory( @@ -192,14 +183,14 @@ // See GrVkMemoryAllocatorImpl::totalAllocatedAndUsedMemory() in skia for // reference. VmaBudget budget[VK_MAX_MEMORY_HEAPS]; - GetBudget(allocator, budget); + vmaGetBudget(allocator, budget); const VkPhysicalDeviceMemoryProperties* pPhysicalDeviceMemoryProperties; vmaGetMemoryProperties(allocator, &pPhysicalDeviceMemoryProperties); uint64_t total_allocated_memory = 0, total_used_memory = 0; for (uint32_t i = 0; i < pPhysicalDeviceMemoryProperties->memoryHeapCount; ++i) { - total_allocated_memory += budget[i].statistics.blockBytes; - total_used_memory += budget[i].statistics.allocationBytes; + total_allocated_memory += budget[i].blockBytes; + total_used_memory += budget[i].allocationBytes; } DCHECK_LE(total_used_memory, total_allocated_memory);
diff --git a/infra/config/generated/testing/variants.pyl b/infra/config/generated/testing/variants.pyl index 52b9ded..ab75cd9 100644 --- a/infra/config/generated/testing/variants.pyl +++ b/infra/config/generated/testing/variants.pyl
@@ -595,7 +595,7 @@ 'identifier': 'STRONGBAD_RELEASE_LKGM', 'skylab': { 'cros_board': 'strongbad', - 'cros_img': 'strongbad-release/R118-15574.0.0', + 'cros_img': 'strongbad-release/R118-15585.0.0', 'autotest_name': 'tast.lacros-from-gcs', }, },
diff --git a/infra/config/targets/cros-skylab-variants.json b/infra/config/targets/cros-skylab-variants.json index ba557ec..793ac53 100644 --- a/infra/config/targets/cros-skylab-variants.json +++ b/infra/config/targets/cros-skylab-variants.json
@@ -280,8 +280,8 @@ "CROS_STRONGBAD_RELEASE_LKGM": { "skylab": { "cros_board": "strongbad", - "cros_chrome_version": "117.0.5936.0", - "cros_img": "strongbad-release/R118-15574.0.0", + "cros_chrome_version": "118.0.5956.0", + "cros_img": "strongbad-release/R118-15585.0.0", "autotest_name": "tast.lacros-from-gcs" }, "enabled": true,
diff --git a/ios/chrome/browser/promos_manager/features.mm b/ios/chrome/browser/promos_manager/features.mm index 31c5b9d..7aa202f 100644 --- a/ios/chrome/browser/promos_manager/features.mm +++ b/ios/chrome/browser/promos_manager/features.mm
@@ -12,7 +12,7 @@ BASE_FEATURE(kPromosManagerUsesFET, "PromosManagerUsesFET", - base::FEATURE_DISABLED_BY_DEFAULT); + base::FEATURE_ENABLED_BY_DEFAULT); bool IsSkippingInternalImpressionLimitsEnabled() { return base::FeatureList::IsEnabled(
diff --git a/ios/chrome/browser/promos_manager/promos_manager_event_exporter.mm b/ios/chrome/browser/promos_manager/promos_manager_event_exporter.mm index 622a0ce..dc8b9c8 100644 --- a/ios/chrome/browser/promos_manager/promos_manager_event_exporter.mm +++ b/ios/chrome/browser/promos_manager/promos_manager_event_exporter.mm
@@ -12,9 +12,7 @@ #import "ios/chrome/browser/shared/model/prefs/pref_names.h" PromosManagerEventExporter::PromosManagerEventExporter(PrefService* local_state) - : local_state_(local_state) { - DCHECK(local_state_); -} + : local_state_(local_state) {} PromosManagerEventExporter::~PromosManagerEventExporter() = default;
diff --git a/ios/chrome/browser/promos_manager/promos_manager_impl_unittest.mm b/ios/chrome/browser/promos_manager/promos_manager_impl_unittest.mm index 0f025ce..8e5187f 100644 --- a/ios/chrome/browser/promos_manager/promos_manager_impl_unittest.mm +++ b/ios/chrome/browser/promos_manager/promos_manager_impl_unittest.mm
@@ -330,6 +330,9 @@ // Tests PromosManager::CanShowPromo() correctly allows a promo to be shown // because it hasn't met any impression limits. TEST_F(PromosManagerImplTest, DecidesCanShowPromo) { + base::test::ScopedFeatureList feature_list; + feature_list.InitAndDisableFeature(kPromosManagerUsesFET); + CreatePromosManager(); const std::vector<promos_manager::Impression> zeroImpressions = {}; @@ -341,6 +344,9 @@ // Tests PromosManager::CanShowPromo() correctly allows/denies promos based on // promo specific limits. TEST_F(PromosManagerImplTest, CanShowPromo_TestPromoSpecifLimits) { + base::test::ScopedFeatureList feature_list; + feature_list.InitAndDisableFeature(kPromosManagerUsesFET); + CreatePromosManager(); SetPromoLimits(); @@ -379,6 +385,9 @@ // Tests PromosManager::CanShowPromo() correctly allows/denies promos based on // global per promo impression limits. TEST_F(PromosManagerImplTest, CanShowPromo_TestGlobalPerPromoImpressionLimits) { + base::test::ScopedFeatureList feature_list; + feature_list.InitAndDisableFeature(kPromosManagerUsesFET); + CreatePromosManager(); SetPromoLimits(); @@ -404,6 +413,9 @@ // Tests PromosManager::CanShowPromo() correctly allows/denies promos based on // global impression limits. TEST_F(PromosManagerImplTest, CanShowPromo_TestGlobalImpressionLimits) { + base::test::ScopedFeatureList feature_list; + feature_list.InitAndDisableFeature(kPromosManagerUsesFET); + CreatePromosManager(); SetPromoLimits(); @@ -1592,6 +1604,9 @@ // Tests `NextPromoForDisplay` returns a pending promo that has become active // and takes precedence over other active promos. TEST_F(PromosManagerImplTest, NextPromoForDisplayReturnsPendingPromo) { + base::test::ScopedFeatureList feature_list; + feature_list.InitAndDisableFeature(kPromosManagerUsesFET); + CreatePromosManager(); promos_manager_->single_display_active_promos_ = { @@ -1618,6 +1633,9 @@ // promos. TEST_F(PromosManagerImplTest, NextPromoForDisplayReturnsActivePromoOfPrioritizedType) { + base::test::ScopedFeatureList feature_list; + feature_list.InitAndDisableFeature(kPromosManagerUsesFET); + CreatePromosManager(); promos_manager_->single_display_active_promos_ = {
diff --git a/media/capture/capture_switches.cc b/media/capture/capture_switches.cc index 97a3a28..753a92f6 100644 --- a/media/capture/capture_switches.cc +++ b/media/capture/capture_switches.cc
@@ -30,13 +30,3 @@ } } // namespace switches - -namespace features { - -#if BUILDFLAG(IS_CHROMEOS_LACROS) -BASE_FEATURE(kLacrosAuraCapture, - "LacrosAuraCapture", - base::FEATURE_ENABLED_BY_DEFAULT); -#endif - -} // namespace features
diff --git a/media/capture/capture_switches.h b/media/capture/capture_switches.h index aee58a4c..0d697d1c 100644 --- a/media/capture/capture_switches.h +++ b/media/capture/capture_switches.h
@@ -5,9 +5,6 @@ #ifndef MEDIA_CAPTURE_CAPTURE_SWITCHES_H_ #define MEDIA_CAPTURE_CAPTURE_SWITCHES_H_ -#include "base/feature_list.h" -#include "build/build_config.h" -#include "build/chromeos_buildflags.h" #include "media/capture/capture_export.h" namespace switches { @@ -19,12 +16,4 @@ } // namespace switches -namespace features { - -#if BUILDFLAG(IS_CHROMEOS_LACROS) -CAPTURE_EXPORT BASE_DECLARE_FEATURE(kLacrosAuraCapture); -#endif - -} // namespace features - #endif // MEDIA_CAPTURE_CAPTURE_SWITCHES_H_
diff --git a/media/gpu/mac/vt_video_encode_accelerator_mac.cc b/media/gpu/mac/vt_video_encode_accelerator_mac.cc index d7a8c46..d3a5e67 100644 --- a/media/gpu/mac/vt_video_encode_accelerator_mac.cc +++ b/media/gpu/mac/vt_video_encode_accelerator_mac.cc
@@ -534,10 +534,19 @@ frame_rate_ = framerate; video_toolbox::SessionPropertySetter session_property_setter( compression_session_); - session_property_setter.Set(kVTCompressionPropertyKey_ExpectedFrameRate, - frame_rate_); - session_property_setter.Set(kVTCompressionPropertyKey_AverageBitRate, - static_cast<int32_t>(bitrate.target_bps())); + if (!session_property_setter.Set(kVTCompressionPropertyKey_ExpectedFrameRate, + frame_rate_)) { + NotifyErrorStatus( + {EncoderStatus::Codes::kSystemAPICallError, "Can't change frame rate"}); + return; + } + if (!session_property_setter.Set( + kVTCompressionPropertyKey_AverageBitRate, + static_cast<int32_t>(bitrate.target_bps()))) { + NotifyErrorStatus({EncoderStatus::Codes::kSystemAPICallError, + "Can't change average bitrate"}); + return; + } // Here in case of VBR we'd like to set more relaxed bitrate constraints. // It looks like setting VTCompressionPropertyKey_DataRateLimits should be // appropriate her, but it is NOT compatible with
diff --git a/media/media_options.gni b/media/media_options.gni index 04bc278..61d5046 100644 --- a/media/media_options.gni +++ b/media/media_options.gni
@@ -105,7 +105,7 @@ enable_media_drm_storage = is_android || is_castos # Enable HLS manifest parser and demuxer. - enable_hls_demuxer = false + enable_hls_demuxer = proprietary_codecs && is_android # Enable inclusion of the HEVC/H265 parser and also enable HEVC/H265 decoding # with hardware acceleration assist. Enabled by default for fuzzer builds,
diff --git a/media/mojo/mojom/video_encode_accelerator.mojom b/media/mojo/mojom/video_encode_accelerator.mojom index 39d2d64..7336991a 100644 --- a/media/mojo/mojom/video_encode_accelerator.mojom +++ b/media/mojo/mojom/video_encode_accelerator.mojom
@@ -212,9 +212,9 @@ UseOutputBitstreamBuffer(int32 bitstream_buffer_id, mojo_base.mojom.UnsafeSharedMemoryRegion region); - // Request a change to the encoding parameters. This is only a request, - // fulfilled on a best-effort basis. This method is intended for use with - // spatial or temporal layers, and is implicitly a constant bitrate encoding. + // Request a change to the encoding parameters. + // This method is intended for use with spatial or temporal layers, + // and is implicitly a constant bitrate encoding. // Parameters: // |bitrate_allocation| is the requested new bitrate, per spatial and // temporal layer. @@ -223,10 +223,9 @@ VideoBitrateAllocation bitrate_allocation, uint32 framerate); - // Request a change to the encoding parameters. This is only a request, - // fulfilled on a best-effort basis. This method is for use with non-layered - // bitrates, and may make requests for constant or variable bitrates based on - // the initially-configured bitrate mode. + // Request a change to the encoding parameters. This method is for use + // with non-layered bitrates, and may make requests for constant or + // variable bitrates based on the initially-configured bitrate mode. // Parameters: // |bitrate| is the requested new bitrate for non-layered encoding, which // may be constant or variable bitrate. This should not change the
diff --git a/media/video/video_encode_accelerator.h b/media/video/video_encode_accelerator.h index c92be21..c09f92e3 100644 --- a/media/video/video_encode_accelerator.h +++ b/media/video/video_encode_accelerator.h
@@ -389,8 +389,7 @@ // |buffer| is the bitstream buffer to use for output. virtual void UseOutputBitstreamBuffer(BitstreamBuffer buffer) = 0; - // Request a change to the encoding parameters. This is only a request, - // fulfilled on a best-effort basis. + // Request a change to the encoding parameters. // Parameters: // |bitrate| is the requested new bitrate. The bitrate mode cannot be changed // using this method and attempting to do so will result in an error. @@ -399,9 +398,9 @@ virtual void RequestEncodingParametersChange(const Bitrate& bitrate, uint32_t framerate) = 0; - // Request a change to the encoding parameters. This is only a request, - // fulfilled on a best-effort basis. If not implemented, default behavior is - // to get the sum over layers and pass to version with bitrate as uint32_t. + // Request a change to the encoding parameters. If not implemented, default + // behavior is to get the sum over layers and pass to version with bitrate + // as uint32_t. // Parameters: // |bitrate| is the requested new bitrate, per spatial and temporal layer. // |framerate| is the requested new framerate, in frames per second.
diff --git a/sandbox/policy/features.cc b/sandbox/policy/features.cc index fa22135..0d75b6be 100644 --- a/sandbox/policy/features.cc +++ b/sandbox/policy/features.cc
@@ -110,13 +110,21 @@ base::FEATURE_ENABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_MAC) +#if BUILDFLAG(IS_WIN) +bool IsNetworkSandboxSupported() { + // Delegate to the sandbox for support, for now. + return sandbox::features::IsAppContainerSandboxSupported(); +} +#endif // BUILDFLAG(IS_WIN) + bool IsNetworkSandboxEnabled() { #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_FUCHSIA) return true; #else #if BUILDFLAG(IS_WIN) - if (!sandbox::features::IsAppContainerSandboxSupported()) + if (!IsNetworkSandboxSupported()) { return false; + } #endif // BUILDFLAG(IS_WIN) // Check feature status. return base::FeatureList::IsEnabled(kNetworkServiceSandbox);
diff --git a/sandbox/policy/features.h b/sandbox/policy/features.h index f2bf477..4aade45b 100644 --- a/sandbox/policy/features.h +++ b/sandbox/policy/features.h
@@ -45,6 +45,13 @@ SANDBOX_POLICY_EXPORT BASE_DECLARE_FEATURE(kCacheMacSandboxProfiles); #endif // BUILDFLAG(IS_MAC) +#if BUILDFLAG(IS_WIN) +// Returns whether the network sandbox is supported. This is different from +// IsAppContainerSandboxSupported as the Network Service uses some newer APIs to +// correctly function when sandboxed. +SANDBOX_POLICY_EXPORT bool IsNetworkSandboxSupported(); +#endif // BUILDFLAG(IS_WIN) + // Returns whether the network sandbox is enabled for the current platform // configuration. This might be overridden by the content embedder so prefer // calling ContentBrowserClient::ShouldSandboxNetworkService().
diff --git a/testing/buildbot/chrome.json b/testing/buildbot/chrome.json index bb31b32..63cb1ce7d 100644 --- a/testing/buildbot/chrome.json +++ b/testing/buildbot/chrome.json
@@ -1709,7 +1709,7 @@ { "autotest_name": "tast.lacros-from-gcs", "cros_board": "strongbad", - "cros_img": "strongbad-release/R118-15574.0.0", + "cros_img": "strongbad-release/R118-15585.0.0", "name": "lacros_all_tast_tests STRONGBAD_RELEASE_LKGM", "resultdb": { "enable": true,
diff --git a/testing/buildbot/chromium.gpu.fyi.json b/testing/buildbot/chromium.gpu.fyi.json index f623b66a..6b51c6c2 100644 --- a/testing/buildbot/chromium.gpu.fyi.json +++ b/testing/buildbot/chromium.gpu.fyi.json
@@ -8465,14 +8465,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--jobs=4" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "context_lost_gl_passthrough_graphite_tests", + "name": "context_lost_metal_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -8501,14 +8501,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--jobs=4" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "context_lost_metal_passthrough_ganesh_tests", + "name": "context_lost_metal_passthrough_graphite_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -8581,7 +8581,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -8591,7 +8591,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "expected_color_pixel_gl_passthrough_graphite_test", + "name": "expected_color_pixel_metal_passthrough_ganesh_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -8625,7 +8625,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -8635,7 +8635,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "expected_color_pixel_metal_passthrough_ganesh_test", + "name": "expected_color_pixel_metal_passthrough_graphite_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -8897,6 +8897,51 @@ }, { "args": [ + "pixel", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", + "--dont-restore-color-profile-after-test", + "--test-machine-name", + "${buildername}", + "--jobs=4", + "--git-revision=${got_revision}" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "pixel_skia_gold_metal_passthrough_graphite_test", + "precommit_args": [ + "--gerrit-issue=${patch_issue}", + "--gerrit-patchset=${patch_set}", + "--buildbucket-id=${buildbucket_build_id}" + ], + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "containment_type": "AUTO", + "dimensions": { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "8086:3e9b", + "os": "Mac-13.3.1" + }, + "hard_timeout": 1800, + "idempotent": false, + "io_timeout": 1800, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ "screenshot_sync", "--show-stdout", "--browser=release", @@ -8939,14 +8984,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "screenshot_sync_gl_passthrough_graphite_tests", + "name": "screenshot_sync_metal_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -8975,14 +9020,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "screenshot_sync_metal_passthrough_ganesh_tests", + "name": "screenshot_sync_metal_passthrough_graphite_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -9341,14 +9386,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --disable-features=SkiaGraphite", "--jobs=4" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "context_lost_gl_passthrough_graphite_tests", + "name": "context_lost_gl_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -9377,7 +9422,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -9387,7 +9432,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "expected_color_pixel_gl_passthrough_graphite_test", + "name": "expected_color_pixel_gl_passthrough_ganesh_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -9524,20 +9569,65 @@ }, { "args": [ + "pixel", + "--show-stdout", + "--browser=debug", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --disable-features=SkiaGraphite", + "--dont-restore-color-profile-after-test", + "--test-machine-name", + "${buildername}", + "--jobs=1", + "--git-revision=${got_revision}" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "pixel_skia_gold_gl_passthrough_ganesh_test", + "precommit_args": [ + "--gerrit-issue=${patch_issue}", + "--gerrit-patchset=${patch_set}", + "--buildbucket-id=${buildbucket_build_id}" + ], + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "containment_type": "AUTO", + "dimensions": { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "8086:3e9b", + "os": "Mac-13.3.1" + }, + "hard_timeout": 1800, + "idempotent": false, + "io_timeout": 1800, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ "screenshot_sync", "--show-stdout", "--browser=debug", "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "screenshot_sync_gl_passthrough_graphite_tests", + "name": "screenshot_sync_gl_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -9890,14 +9980,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--jobs=4" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "context_lost_gl_passthrough_graphite_tests", + "name": "context_lost_metal_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -9927,14 +10017,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--jobs=4" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "context_lost_metal_passthrough_ganesh_tests", + "name": "context_lost_metal_passthrough_graphite_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -10009,7 +10099,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -10019,7 +10109,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "expected_color_pixel_gl_passthrough_graphite_test", + "name": "expected_color_pixel_metal_passthrough_ganesh_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -10054,7 +10144,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -10064,7 +10154,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "expected_color_pixel_metal_passthrough_ganesh_test", + "name": "expected_color_pixel_metal_passthrough_graphite_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -10293,7 +10383,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -10304,7 +10394,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "pixel_skia_gold_gl_passthrough_graphite_test", + "name": "pixel_skia_gold_metal_passthrough_ganesh_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -10327,8 +10417,7 @@ "hard_timeout": 1800, "idempotent": false, "io_timeout": 1800, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 3 + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" }, "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" }, @@ -10340,7 +10429,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -10351,7 +10440,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "pixel_skia_gold_metal_passthrough_ganesh_test", + "name": "pixel_skia_gold_metal_passthrough_graphite_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -10423,14 +10512,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "screenshot_sync_gl_passthrough_graphite_tests", + "name": "screenshot_sync_metal_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -10460,14 +10549,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "screenshot_sync_metal_passthrough_ganesh_tests", + "name": "screenshot_sync_metal_passthrough_graphite_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -10998,14 +11087,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--jobs=4" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "context_lost_gl_passthrough_graphite_tests", + "name": "context_lost_metal_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -11037,14 +11126,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--jobs=4" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "context_lost_metal_passthrough_ganesh_tests", + "name": "context_lost_metal_passthrough_graphite_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -11123,7 +11212,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -11133,7 +11222,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "expected_color_pixel_gl_passthrough_graphite_test", + "name": "expected_color_pixel_metal_passthrough_ganesh_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -11170,7 +11259,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -11180,7 +11269,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "expected_color_pixel_metal_passthrough_ganesh_test", + "name": "expected_color_pixel_metal_passthrough_graphite_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -11421,7 +11510,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -11432,7 +11521,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "pixel_skia_gold_gl_passthrough_graphite_test", + "name": "pixel_skia_gold_metal_passthrough_ganesh_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -11457,8 +11546,7 @@ "hard_timeout": 1800, "idempotent": false, "io_timeout": 1800, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 3 + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" }, "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" }, @@ -11470,7 +11558,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -11481,7 +11569,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "pixel_skia_gold_metal_passthrough_ganesh_test", + "name": "pixel_skia_gold_metal_passthrough_graphite_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -11557,14 +11645,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "screenshot_sync_gl_passthrough_graphite_tests", + "name": "screenshot_sync_metal_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -11596,14 +11684,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "screenshot_sync_metal_passthrough_ganesh_tests", + "name": "screenshot_sync_metal_passthrough_graphite_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -12111,14 +12199,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --disable-features=SkiaGraphite", "--jobs=4" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "context_lost_gl_passthrough_graphite_tests", + "name": "context_lost_gl_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -12150,7 +12238,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -12160,7 +12248,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "expected_color_pixel_gl_passthrough_graphite_test", + "name": "expected_color_pixel_gl_passthrough_ganesh_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -12347,20 +12435,68 @@ }, { "args": [ + "pixel", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --disable-features=SkiaGraphite", + "--dont-restore-color-profile-after-test", + "--test-machine-name", + "${buildername}", + "--jobs=1", + "--git-revision=${got_revision}" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "pixel_skia_gold_gl_passthrough_ganesh_test", + "precommit_args": [ + "--gerrit-issue=${patch_issue}", + "--gerrit-patchset=${patch_set}", + "--buildbucket-id=${buildbucket_build_id}" + ], + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "containment_type": "AUTO", + "dimensions": { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "10de:0fe9", + "hidpi": "1", + "os": "Mac-11.7.9", + "pool": "chromium.tests.gpu" + }, + "expiration": 21600, + "hard_timeout": 1800, + "idempotent": false, + "io_timeout": 1800, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ "screenshot_sync", "--show-stdout", "--browser=release", "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "screenshot_sync_gl_passthrough_graphite_tests", + "name": "screenshot_sync_gl_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -12807,14 +12943,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--jobs=4" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "context_lost_gl_passthrough_graphite_tests", + "name": "context_lost_metal_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -12844,14 +12980,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--jobs=4" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "context_lost_metal_passthrough_ganesh_tests", + "name": "context_lost_metal_passthrough_graphite_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -12926,7 +13062,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -12936,7 +13072,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "expected_color_pixel_gl_passthrough_graphite_test", + "name": "expected_color_pixel_metal_passthrough_ganesh_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -12971,7 +13107,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -12981,7 +13117,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "expected_color_pixel_metal_passthrough_ganesh_test", + "name": "expected_color_pixel_metal_passthrough_graphite_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -13210,7 +13346,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -13221,7 +13357,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "pixel_skia_gold_gl_passthrough_graphite_test", + "name": "pixel_skia_gold_metal_passthrough_ganesh_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -13244,8 +13380,7 @@ "hard_timeout": 1800, "idempotent": false, "io_timeout": 1800, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 3 + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" }, "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" }, @@ -13257,7 +13392,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -13268,7 +13403,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "pixel_skia_gold_metal_passthrough_ganesh_test", + "name": "pixel_skia_gold_metal_passthrough_graphite_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -13340,14 +13475,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "screenshot_sync_gl_passthrough_graphite_tests", + "name": "screenshot_sync_metal_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -13377,14 +13512,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "screenshot_sync_metal_passthrough_ganesh_tests", + "name": "screenshot_sync_metal_passthrough_graphite_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -13891,14 +14026,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--jobs=4" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "context_lost_gl_passthrough_graphite_tests", + "name": "context_lost_metal_passthrough_graphite_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -13971,7 +14106,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -13981,7 +14116,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "expected_color_pixel_gl_passthrough_graphite_test", + "name": "expected_color_pixel_metal_passthrough_graphite_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -14165,7 +14300,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -14176,7 +14311,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "pixel_skia_gold_gl_passthrough_graphite_test", + "name": "pixel_skia_gold_metal_passthrough_graphite_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -14198,8 +14333,7 @@ "hard_timeout": 1800, "idempotent": false, "io_timeout": 1800, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 3 + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" }, "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" }, @@ -14247,14 +14381,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "screenshot_sync_gl_passthrough_graphite_tests", + "name": "screenshot_sync_metal_passthrough_graphite_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -15102,14 +15236,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --disable-features=SkiaGraphite", "--jobs=4" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "context_lost_gl_passthrough_graphite_tests", + "name": "context_lost_gl_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -15140,7 +15274,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -15150,7 +15284,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "expected_color_pixel_gl_passthrough_graphite_test", + "name": "expected_color_pixel_gl_passthrough_ganesh_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -15295,20 +15429,67 @@ }, { "args": [ + "pixel", + "--show-stdout", + "--browser=debug", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --disable-features=SkiaGraphite", + "--dont-restore-color-profile-after-test", + "--test-machine-name", + "${buildername}", + "--jobs=1", + "--git-revision=${got_revision}" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "pixel_skia_gold_gl_passthrough_ganesh_test", + "precommit_args": [ + "--gerrit-issue=${patch_issue}", + "--gerrit-patchset=${patch_set}", + "--buildbucket-id=${buildbucket_build_id}" + ], + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "containment_type": "AUTO", + "dimensions": { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "1002:67ef", + "hidpi": "1", + "os": "Mac-13.2.1", + "pool": "chromium.tests.gpu" + }, + "hard_timeout": 1800, + "idempotent": false, + "io_timeout": 1800, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ "screenshot_sync", "--show-stdout", "--browser=debug", "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "screenshot_sync_gl_passthrough_graphite_tests", + "name": "screenshot_sync_gl_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -15639,14 +15820,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--jobs=4" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "context_lost_gl_passthrough_graphite_tests", + "name": "context_lost_metal_passthrough_graphite_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -15723,7 +15904,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -15733,7 +15914,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "expected_color_pixel_gl_passthrough_graphite_test", + "name": "expected_color_pixel_metal_passthrough_graphite_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -15927,7 +16108,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -15938,7 +16119,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "pixel_skia_gold_gl_passthrough_graphite_test", + "name": "pixel_skia_gold_metal_passthrough_graphite_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -15962,8 +16143,7 @@ "hard_timeout": 1800, "idempotent": false, "io_timeout": 1800, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 3 + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" }, "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" }, @@ -16013,14 +16193,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "screenshot_sync_gl_passthrough_graphite_tests", + "name": "screenshot_sync_metal_passthrough_graphite_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -16473,14 +16653,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--jobs=4" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "context_lost_gl_passthrough_graphite_tests", + "name": "context_lost_metal_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -16511,14 +16691,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--jobs=4" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "context_lost_metal_passthrough_ganesh_tests", + "name": "context_lost_metal_passthrough_graphite_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -16595,7 +16775,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -16605,7 +16785,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "expected_color_pixel_gl_passthrough_graphite_test", + "name": "expected_color_pixel_metal_passthrough_ganesh_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -16641,7 +16821,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -16651,7 +16831,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "expected_color_pixel_metal_passthrough_ganesh_test", + "name": "expected_color_pixel_metal_passthrough_graphite_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -16886,7 +17066,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -16897,7 +17077,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "pixel_skia_gold_gl_passthrough_graphite_test", + "name": "pixel_skia_gold_metal_passthrough_ganesh_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -16921,8 +17101,7 @@ "hard_timeout": 1800, "idempotent": false, "io_timeout": 1800, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 3 + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" }, "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" }, @@ -16934,7 +17113,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -16945,7 +17124,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "pixel_skia_gold_metal_passthrough_ganesh_test", + "name": "pixel_skia_gold_metal_passthrough_graphite_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -17019,14 +17198,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "screenshot_sync_gl_passthrough_graphite_tests", + "name": "screenshot_sync_metal_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -17057,14 +17236,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "screenshot_sync_metal_passthrough_ganesh_tests", + "name": "screenshot_sync_metal_passthrough_graphite_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -17557,14 +17736,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --disable-features=SkiaGraphite", "--jobs=4" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "context_lost_gl_passthrough_graphite_tests", + "name": "context_lost_gl_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -17595,7 +17774,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -17605,7 +17784,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "expected_color_pixel_gl_passthrough_graphite_test", + "name": "expected_color_pixel_gl_passthrough_ganesh_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -17787,20 +17966,67 @@ }, { "args": [ + "pixel", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--stable-jobs", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --disable-features=SkiaGraphite", + "--dont-restore-color-profile-after-test", + "--test-machine-name", + "${buildername}", + "--jobs=1", + "--git-revision=${got_revision}" + ], + "isolate_name": "telemetry_gpu_integration_test", + "merge": { + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "pixel_skia_gold_gl_passthrough_ganesh_test", + "precommit_args": [ + "--gerrit-issue=${patch_issue}", + "--gerrit-patchset=${patch_set}", + "--buildbucket-id=${buildbucket_build_id}" + ], + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "should_retry_with_patch": false, + "swarming": { + "containment_type": "AUTO", + "dimensions": { + "cpu": "x86-64", + "display_attached": "1", + "gpu": "10de:0fe9", + "hidpi": "1", + "os": "Mac-10.14.6", + "pool": "chromium.tests.gpu" + }, + "hard_timeout": 1800, + "idempotent": false, + "io_timeout": 1800, + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" + }, + { + "args": [ "screenshot_sync", "--show-stdout", "--browser=release", "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "screenshot_sync_gl_passthrough_graphite_tests", + "name": "screenshot_sync_gl_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true
diff --git a/testing/buildbot/client.v8.fyi.json b/testing/buildbot/client.v8.fyi.json index 6f7bd6b..ff8b8d3 100644 --- a/testing/buildbot/client.v8.fyi.json +++ b/testing/buildbot/client.v8.fyi.json
@@ -1069,14 +1069,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--jobs=4" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "context_lost_gl_passthrough_graphite_tests", + "name": "context_lost_metal_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -1102,14 +1102,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--jobs=4" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "context_lost_metal_passthrough_ganesh_tests", + "name": "context_lost_metal_passthrough_graphite_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -1176,7 +1176,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -1186,7 +1186,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "expected_color_pixel_gl_passthrough_graphite_test", + "name": "expected_color_pixel_metal_passthrough_ganesh_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -1217,7 +1217,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -1227,7 +1227,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "expected_color_pixel_metal_passthrough_ganesh_test", + "name": "expected_color_pixel_metal_passthrough_graphite_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -1396,7 +1396,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -1407,7 +1407,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "pixel_skia_gold_gl_passthrough_graphite_test", + "name": "pixel_skia_gold_metal_passthrough_ganesh_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -1426,8 +1426,7 @@ "os": "Mac-13.3.1" }, "idempotent": false, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 3 + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" }, "test_id_prefix": "ninja://chrome/test:telemetry_gpu_integration_test/" }, @@ -1439,7 +1438,7 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test", "--test-machine-name", "${buildername}", @@ -1450,7 +1449,7 @@ "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "pixel_skia_gold_metal_passthrough_ganesh_test", + "name": "pixel_skia_gold_metal_passthrough_graphite_test", "precommit_args": [ "--gerrit-issue=${patch_issue}", "--gerrit-patchset=${patch_set}", @@ -1514,14 +1513,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", "--dont-restore-color-profile-after-test" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "screenshot_sync_gl_passthrough_graphite_tests", + "name": "screenshot_sync_metal_passthrough_ganesh_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -1547,14 +1546,14 @@ "--passthrough", "-v", "--stable-jobs", - "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --disable-features=SkiaGraphite", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --use-cmd-decoder=passthrough --use-gl=angle --use-angle=metal --enable-features=SkiaGraphite", "--dont-restore-color-profile-after-test" ], "isolate_name": "telemetry_gpu_integration_test", "merge": { "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "screenshot_sync_metal_passthrough_ganesh_tests", + "name": "screenshot_sync_metal_passthrough_graphite_tests", "resultdb": { "enable": true, "has_native_resultdb_integration": true
diff --git a/testing/buildbot/internal.chromeos.fyi.json b/testing/buildbot/internal.chromeos.fyi.json index edf6149c..6ba1ce3 100644 --- a/testing/buildbot/internal.chromeos.fyi.json +++ b/testing/buildbot/internal.chromeos.fyi.json
@@ -1407,7 +1407,7 @@ { "autotest_name": "tast.lacros-from-gcs", "cros_board": "strongbad", - "cros_img": "strongbad-release/R118-15574.0.0", + "cros_img": "strongbad-release/R118-15585.0.0", "name": "lacros_all_tast_tests STRONGBAD_RELEASE_LKGM", "tast_expr": "(\"group:mainline\" && \"dep:lacros\" && !informational)", "test": "lacros_all_tast_tests", @@ -1484,7 +1484,7 @@ { "autotest_name": "tast.lacros-from-gcs", "cros_board": "strongbad", - "cros_img": "strongbad-release/R118-15574.0.0", + "cros_img": "strongbad-release/R118-15585.0.0", "name": "ozone_unittests STRONGBAD_RELEASE_LKGM", "test": "ozone_unittests", "test_id_prefix": "ninja://ui/ozone:ozone_unittests/", @@ -1557,7 +1557,7 @@ { "autotest_name": "tast.lacros-from-gcs", "cros_board": "strongbad", - "cros_img": "strongbad-release/R118-15574.0.0", + "cros_img": "strongbad-release/R118-15585.0.0", "name": "viz_unittests STRONGBAD_RELEASE_LKGM", "test": "viz_unittests", "test_id_prefix": "ninja://components/viz:viz_unittests/",
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl index 5ad76eb6..fae5303 100644 --- a/testing/buildbot/test_suite_exceptions.pyl +++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -2315,13 +2315,13 @@ }, }, }, - 'context_lost_gl_passthrough_graphite_tests': { + 'context_lost_metal_passthrough_ganesh_tests': { 'remove_from': [ # crbug.com/1458020 for Mac Retina ASAN removal 'Mac FYI Retina ASAN (AMD)', ], }, - 'context_lost_metal_passthrough_ganesh_tests': { + 'context_lost_metal_passthrough_graphite_tests': { 'remove_from': [ # crbug.com/1458020 for Mac Retina ASAN removal 'Mac FYI Retina ASAN (AMD)', @@ -2522,7 +2522,7 @@ }, }, }, - 'expected_color_pixel_gl_passthrough_graphite_test': { + 'expected_color_pixel_metal_passthrough_ganesh_test': { 'remove_from': [ # crbug.com/1458020 for Mac Retina ASAN removal 'Mac FYI Retina ASAN (AMD)', @@ -2535,7 +2535,7 @@ }, }, }, - 'expected_color_pixel_metal_passthrough_ganesh_test': { + 'expected_color_pixel_metal_passthrough_graphite_test': { 'remove_from': [ # crbug.com/1458020 for Mac Retina ASAN removal 'Mac FYI Retina ASAN (AMD)', @@ -3788,58 +3788,10 @@ }, }, }, - 'pixel_skia_gold_gl_passthrough_graphite_test': { - # crbug.com/1469875 Remove when failing tests are fixed on Graphite - 'modifications': { - 'Mac FYI Experimental Release (Apple M1)': { - 'swarming': { - 'shards': 3, - }, - }, - 'Mac FYI Experimental Release (Intel)': { - 'swarming': { - 'shards': 3, - }, - }, - 'Mac FYI Experimental Retina Release (AMD)': { - 'swarming': { - 'shards': 3, - }, - }, - 'Mac FYI Release (Apple M1)': { - 'swarming': { - 'shards': 3, - }, - }, - 'Mac FYI Release (Intel)': { - 'swarming': { - 'shards': 3, - }, - }, - 'Mac FYI Retina Release (AMD)': { - 'swarming': { - 'shards': 3, - }, - }, - 'Mac FYI Retina Release (Apple M2)': { - 'swarming': { - 'shards': 3, - }, - }, - 'Mac V8 FYI Release (Intel)': { - 'swarming': { - 'shards': 3, - }, - }, - }, + 'pixel_skia_gold_metal_passthrough_ganesh_test': { 'remove_from': [ - # crbug.com/1469875 Too slow on Debug, ASAN and NVIDIA - 'Mac FYI ASAN (Intel)', - 'Mac FYI Debug (Intel)', - 'Mac FYI Experimental Retina Release (NVIDIA)', - 'Mac FYI Retina ASAN (AMD)', # Also affected by crbug.com/1458020 - 'Mac FYI Retina Debug (AMD)', - 'Mac FYI Retina Release (NVIDIA)', + # crbug.com/1458020 for Mac Retina ASAN removal + 'Mac FYI Retina ASAN (AMD)', ], 'replacements': { 'Mac V8 FYI Release (Intel)': { @@ -3849,7 +3801,7 @@ }, }, }, - 'pixel_skia_gold_metal_passthrough_ganesh_test': { + 'pixel_skia_gold_metal_passthrough_graphite_test': { 'remove_from': [ # crbug.com/1458020 for Mac Retina ASAN removal 'Mac FYI Retina ASAN (AMD)', @@ -3993,13 +3945,13 @@ }, }, }, - 'screenshot_sync_gl_passthrough_graphite_tests': { + 'screenshot_sync_metal_passthrough_ganesh_tests': { 'remove_from': [ # crbug.com/1458020 for Mac Retina ASAN removal 'Mac FYI Retina ASAN (AMD)', ], }, - 'screenshot_sync_metal_passthrough_ganesh_tests': { + 'screenshot_sync_metal_passthrough_graphite_tests': { 'remove_from': [ # crbug.com/1458020 for Mac Retina ASAN removal 'Mac FYI Retina ASAN (AMD)',
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl index ef7e1dc..fed95d7 100644 --- a/testing/buildbot/test_suites.pyl +++ b/testing/buildbot/test_suites.pyl
@@ -3146,71 +3146,6 @@ }, }, - 'gpu_gl_passthrough_graphite_telemetry_tests': { - 'context_lost_gl_passthrough_graphite': { - 'name': 'context_lost_gl_passthrough_graphite_tests', - 'telemetry_test_name': 'context_lost', - 'args': [ - '--extra-browser-args=--use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite', - '$$MAGIC_SUBSTITUTION_GPUParallelJobs', - ], - 'mixins': [ - 'has_native_resultdb_integration', - ], - }, - 'expected_color_gl_passthrough_graphite': { - 'name': 'expected_color_pixel_gl_passthrough_graphite_test', - 'telemetry_test_name': 'expected_color', - 'args': [ - '--dont-restore-color-profile-after-test', - '--test-machine-name', - '${buildername}', - '--extra-browser-args=--use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite', - ], - 'mixins': [ - 'skia_gold_test', - 'has_native_resultdb_integration', - ], - }, - 'gpu_process': { - 'name': 'gpu_process_launch_tests', - 'mixins': [ - 'has_native_resultdb_integration', - ], - }, - 'hardware_accelerated_feature': { - 'mixins': [ - 'has_native_resultdb_integration', - ], - }, - 'pixel_skia_gl_passthrough_graphite': { - 'name': 'pixel_skia_gold_gl_passthrough_graphite_test', - 'args': [ - '--dont-restore-color-profile-after-test', - '--test-machine-name', - '${buildername}', - '--extra-browser-args=--use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite', - '$$MAGIC_SUBSTITUTION_GPUParallelJobs', - ], - 'mixins': [ - 'skia_gold_test', - 'has_native_resultdb_integration', - ], - 'telemetry_test_name': 'pixel', - }, - 'screenshot_sync_gl_passthrough_graphite': { - 'name': 'screenshot_sync_gl_passthrough_graphite_tests', - 'telemetry_test_name': 'screenshot_sync', - 'args': [ - '--dont-restore-color-profile-after-test', - '--extra-browser-args=--use-cmd-decoder=passthrough --use-gl=angle --use-angle=gl --enable-features=SkiaGraphite', - ], - 'mixins': [ - 'has_native_resultdb_integration', - ], - }, - }, - 'gpu_gles2_conform_gtests': { # The gles2_conform_tests are closed-source and deliberately only # run on the FYI waterfall and the optional tryservers. @@ -6661,9 +6596,9 @@ 'gpu_webgl_conformance_validating_telemetry_tests', ], - 'gpu_common_gl_passthrough_graphite_telemetry_tests': [ + 'gpu_common_gl_passthrough_ganesh_telemetry_tests': [ 'gpu_common_and_optional_telemetry_tests', - 'gpu_gl_passthrough_graphite_telemetry_tests', + 'gpu_gl_passthrough_ganesh_telemetry_tests', 'gpu_webgl_conformance_gl_passthrough_telemetry_tests', ], @@ -6873,7 +6808,7 @@ 'gpu_fyi_mac_nvidia_release_telemetry_tests': [ 'gpu_common_and_optional_telemetry_tests', - 'gpu_gl_passthrough_graphite_telemetry_tests', + 'gpu_gl_passthrough_ganesh_telemetry_tests', 'gpu_mediapipe_passthrough_telemetry_tests', 'gpu_webcodecs_telemetry_test', 'gpu_webgl2_conformance_gl_passthrough_telemetry_tests', @@ -6899,8 +6834,8 @@ 'gpu_fyi_mac_release_telemetry_tests': [ 'gpu_gl_passthrough_ganesh_telemetry_tests', - 'gpu_gl_passthrough_graphite_telemetry_tests', 'gpu_mediapipe_passthrough_telemetry_tests', + 'gpu_metal_passthrough_graphite_telemetry_tests', 'gpu_webcodecs_telemetry_test', 'gpu_webgl2_conformance_gl_passthrough_telemetry_tests', 'gpu_webgl2_conformance_metal_passthrough_telemetry_tests', @@ -6911,9 +6846,9 @@ 'gpu_fyi_only_mac_release_telemetry_tests': [ 'gpu_common_and_optional_telemetry_tests', 'gpu_gl_passthrough_ganesh_telemetry_tests', - 'gpu_gl_passthrough_graphite_telemetry_tests', 'gpu_mediapipe_passthrough_telemetry_tests', 'gpu_metal_passthrough_ganesh_telemetry_tests', + 'gpu_metal_passthrough_graphite_telemetry_tests', 'gpu_webcodecs_telemetry_test', 'gpu_webgl2_conformance_gl_passthrough_telemetry_tests', 'gpu_webgl2_conformance_metal_passthrough_telemetry_tests',
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index 52b9ded..ab75cd9 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl
@@ -595,7 +595,7 @@ 'identifier': 'STRONGBAD_RELEASE_LKGM', 'skylab': { 'cros_board': 'strongbad', - 'cros_img': 'strongbad-release/R118-15574.0.0', + 'cros_img': 'strongbad-release/R118-15585.0.0', 'autotest_name': 'tast.lacros-from-gcs', }, },
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl index 12cdef5..8c26b409 100644 --- a/testing/buildbot/waterfalls.pyl +++ b/testing/buildbot/waterfalls.pyl
@@ -4596,7 +4596,7 @@ ], 'test_suites': { 'gtest_tests': 'gpu_fyi_mac_debug_gtests', - 'gpu_telemetry_tests': 'gpu_common_gl_passthrough_graphite_telemetry_tests', + 'gpu_telemetry_tests': 'gpu_common_gl_passthrough_ganesh_telemetry_tests', }, }, 'Mac FYI Experimental Release (Apple M1)': { @@ -4700,7 +4700,7 @@ ], 'test_suites': { 'gtest_tests': 'gpu_fyi_mac_debug_gtests', - 'gpu_telemetry_tests': 'gpu_common_gl_passthrough_graphite_telemetry_tests', + 'gpu_telemetry_tests': 'gpu_common_gl_passthrough_ganesh_telemetry_tests', }, }, 'Mac FYI Retina Release (AMD)': {
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 716e09f7..03e51830 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -5337,25 +5337,6 @@ ] } ], - "DisableRenameJourneys": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Disabled", - "disable_features": [ - "RenameJourneys" - ] - } - ] - } - ], "DisableSHA1ServerSignature": [ { "platforms": [ @@ -14481,28 +14462,6 @@ ] } ], - "SmallerInterestArea": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Smaller_500", - "params": { - "size_in_pixels": "500" - }, - "enable_features": [ - "SmallerInterestArea" - ] - } - ] - } - ], "SmartPWAInstallPromptAndroid": [ { "platforms": [ @@ -16768,6 +16727,9 @@ "DefaultANGLEVulkan", "Vulkan", "VulkanFromANGLE" + ], + "disable_features": [ + "VaapiVideoDecoder" ] } ]
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json index 9e9b0e5..4d3316e 100644 --- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json +++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -2751,6 +2751,13 @@ {} ] ], + "oof-in-oof-multicol-in-relpos-in-oof-in-multicol-in-multicol.html": [ + "0dd4479bafe6b9b55431a213e38d8bb9dd036be8", + [ + null, + {} + ] + ], "oof-nested-multicol-inside-oof.html": [ "f80225a5c8bf65cdaf8a73ef9d9eaf427240aa32", [ @@ -279161,6 +279168,16 @@ } }, "support": { + ".cache": { + "gitignore2.json": [ + "8255d56e28ea8016caa9878ae2ff41ec27918276", + [] + ], + "mtime.json": [ + "525d90ac737a92d22edaed8a2618bd68a7662c2f", + [] + ] + }, ".gitignore": [ "d93e645d547894b50149d3726de2654957b6e06f", [] @@ -287092,6 +287109,10 @@ "2ea5cc8b91d349c40df1e8a0ee03f3b4c6a2557b", [] ], + "background-003.xht.ini": [ + "8ac9f25db53285cb2e2fb9a1e9e0af37bd0f588e", + [] + ], "background-007.xht.ini": [ "fd7dd042ec4e313622fc4d8c44e044d019fc8604", [] @@ -287176,6 +287197,10 @@ "430d72e00b8ec6c54f8030b9d1e99bffd84c4fd3", [] ], + "background-101.xht.ini": [ + "b870692322a73301a25b8df934babf4be28b0ab9", + [] + ], "background-130-ref.xht": [ "31b4c6d248949caa75995cc71160a32f1151c5c1", [] @@ -289108,6 +289133,10 @@ "192db0e6f9b80b00b0157cebd450928aa72f2cfe", [] ], + "border-bottom-color-039.xht.ini": [ + "a3a4d051469b708f9c60fc9d151a5bb43e608b08", + [] + ], "border-bottom-color-042-ref.xht": [ "11bffd78f2ef34c8b338d83c69d48da548ea45f6", [] @@ -289564,6 +289593,10 @@ "c7477e621c33c8735c3f880df49ccfd6314ad6ee", [] ], + "border-left-color-024.xht.ini": [ + "0cf474d69becb04b34d2e2a127e8ae9172baa135", + [] + ], "border-left-color-026.xht.ini": [ "2615ee151e43987c95849c59f303b0ee18a3db58", [] @@ -290396,6 +290429,10 @@ "82c91e9832faff13079329906452156c5457cf1b", [] ], + "border-top-color-068.xht.ini": [ + "7b652b3d8ab01d56aa8773fa8ab7215b8233a20d", + [] + ], "border-top-color-073.xht.ini": [ "69f58934adb62f1cdfb429cb0c9ff8d5601cf7a4", [] @@ -290456,6 +290493,10 @@ "885b6b9ff3db6b1583e764fdaf7424f026bcc79e", [] ], + "border-top-color-145.xht.ini": [ + "f3b7275dee97413a4bed1fce832a0f3c8dea5686", + [] + ], "border-top-color-applies-to-001.xht.ini": [ "147286999a34c04b160063a6b475e47d75e77fff", [] @@ -292206,6 +292247,10 @@ "298be901c4d8e8027f9d3b8cdc47789cd7ab84b1", [] ], + "floats-116.xht.ini": [ + "52fa53aeca916577778d7d29b1fe5654e8ce190c", + [] + ], "floats-117.xht.ini": [ "c511ea691b0348d92a45de0fe711ae28681a98e7", [] @@ -293043,7 +293088,7 @@ [] ], "vertical-align-043.xht.ini": [ - "dc5bc13c33646fcb2e88b29ea0f8199ba18eb92f", + "58c4417e84d3076ed784e1c558a5adf54f0e724d", [] ], "vertical-align-078.xht.ini": [ @@ -293348,6 +293393,10 @@ "7e362a639669eb183e47e6fdded9607b9263b441", [] ], + "block-in-inline-insert-004-ref.xht.ini": [ + "48e7a4516a596d6fe7d982b02c52fc5e1ea6454a", + [] + ], "block-in-inline-insert-010-nosplit-ref.xht.ini": [ "7e42128496ca51ab5acb7fe23992bcbbc5eae777", [] @@ -293726,6 +293775,10 @@ "6812f827a8fe39831b0d7c62bc019cd6ee6e6845", [] ], + "inline-block-replaced-width-001.xht.ini": [ + "669b71e512be3dffe86dcb1c7ffb82e5c829314c", + [] + ], "inline-block-replaced-width-002-ref.xht": [ "a079c8e7c4ef134af40f56ef33227b2cdeae6214", [] @@ -294166,6 +294219,10 @@ "7fd94de50ebf159b073f0fc57b366c62b3af1549", [] ], + "min-height-percentage-003.xht.ini": [ + "c57ea23e0f266564ae107afe1eeaa9997a25352a", + [] + ], "min-width-002.xht.ini": [ "c10d716a496b9f8df5e821c5cee117504123afb3", [] @@ -294630,6 +294687,10 @@ "a5be3f7411d0a451529f4a61e9197e730f2ce1e4", [] ], + "absolute-non-replaced-max-height-006.xht.ini": [ + "ac3ae99955855004300d3780b76bbee42376da17", + [] + ], "absolute-non-replaced-max-height-007-ref.xht": [ "6b2f646508c4285fc446302ac41b52d745b69f32", [] @@ -295446,6 +295507,10 @@ "f34e44a24c756f529672be29103c64cdccba4942", [] ], + "left-032.xht.ini": [ + "eac92ca33c0d31a73133e77cd9edeade58d837a6", + [] + ], "left-040.xht.ini": [ "738875ff4d04eca844b8e927bd314948d7f4f2f5", [] @@ -295570,6 +295635,10 @@ "60a21bd6787d12f0e160f446c90a0c4ade93602f", [] ], + "position-applies-to-007.xht.ini": [ + "046b443ca1dd7b1d6626c1fc879359f8e702b640", + [] + ], "position-applies-to-013.xht.ini": [ "c8055561d4287b34d8c59d2e456e4769999c0182", [] @@ -296053,7 +296122,7 @@ [] ], "top-017.xht.ini": [ - "324d0a6320ef985389213200d9fb03265df1a437", + "71836e62ac49c91b247a50b92fb82ce3a061bbe9", [] ], "top-019-ref.xht": [ @@ -296112,6 +296181,10 @@ "efa584c4cc8a0540817cc6b16644085f55e8b72b", [] ], + "top-065.xht.ini": [ + "8ac6cd61fdea35857fd8ea20c97c38718bf0e802", + [] + ], "top-068.xht.ini": [ "015bea868b92da37f2ec50a7cb5e1885762aaf72", [] @@ -296164,6 +296237,10 @@ "941b834c5d479cfc09f281004ef8eeec4234e30b", [] ], + "top-112.xht.ini": [ + "f6528283526299a35d263ff2411f0ed9d0f995f6", + [] + ], "top-113-ref.xht": [ "7f7f118b2c747ad87fc3de69d0c67991ad4f1c0b", [] @@ -297822,6 +297899,10 @@ "b4c7e9baf72ccd6671f387503267e0e368938a7a", [] ], + "letter-spacing-102.xht.ini": [ + "a79b8ffa0fd55ba12f07f67f9a44e1b7da196044", + [] + ], "letter-spacing-applies-to-001.xht.ini": [ "4652742068f802ead9b3f9040509c0da8d81eb8c", [] @@ -298248,6 +298329,10 @@ "ba7d905ae5292ca531140517de23f420ce96591f", [] ], + "text-indent-overflow-003.xht.ini": [ + "2828fa46067efe1c85b63037d2bce0ce6b15cf32", + [] + ], "text-indent-percent-001-ref.xht": [ "335ed62bbbbc32f846c97f8bcb2d5ae8512c4a7c", [] @@ -300498,7 +300583,7 @@ [] ], "background-image-centered-with-border-radius.html.ini": [ - "2156125412ab77b3090fb9c90a5bc9c44512cd64", + "5f372ac183d2f9cd51a25029deb269e01f35db2f", [] ], "background-image-cors-no-reload-expected.txt": [ @@ -301089,6 +301174,14 @@ "701ab77f5260e9834db0ac4e553c66b34e4be520", [] ], + "background-size-011.html.ini": [ + "2dba9830fa1eb3da269f6529ed27187315204f7c", + [] + ], + "background-size-013.html.ini": [ + "37704ed3688c6f144fe016aa8ba3709a8dc65093", + [] + ], "background-size-014.html.ini": [ "ed6f45f3c86ca5c400c49e044240e1bfbd9f42a5", [] @@ -301627,6 +301720,10 @@ "32e0d199b81efe16a3b571a4489f912efc594bc9", [] ], + "css3-background-size-contain.html.ini": [ + "12248d5618d4b8533d560b3a63fbf8908ea6767c", + [] + ], "css3-border-image-repeat-repeat.html.ini": [ "38d49da6e42c1c855ddb90f711af09e292488d9c", [] @@ -303501,6 +303598,10 @@ "65ec4482c1679b062cb10bdbc471473413efebba", [] ], + "break-between-avoid-014.html.ini": [ + "3390de4a56ae410b6f4f5338153146bd8109bf2b", + [] + ], "break-between-force-000.html.ini": [ "6909efeb7dce6d248d78c6c8c968c7f71ea80b97", [] @@ -303591,7 +303692,7 @@ [] ], "flex-container-fragmentation-004.html.ini": [ - "fad8caeef461999f9182f2586f5f631bc1abde03", + "c4594c6c2ee6455e84c33e621c09457317f4cda2", [] ], "flex-container-fragmentation-005.html.ini": [ @@ -303634,6 +303735,10 @@ "e5b530075f79f00cbb1e82af4c3a5ec63c06ce6d", [] ], + "monolithic-overflow-003.tentative.html.ini": [ + "d441d9c37f03cc6a310b90eb792d46ff06e69352", + [] + ], "multi-line-column-flex-fragmentation-001.html.ini": [ "cb7a8d7f54b2a3a4c1f2f3bbc788ea4eaddb6ac1", [] @@ -303642,6 +303747,10 @@ "1354ed3e23c5388400707026396f5c7281f8a8db", [] ], + "multi-line-column-flex-fragmentation-003.html.ini": [ + "9e8fcdfc7070bb446b5dc2c2b857e9b77417b932", + [] + ], "multi-line-column-flex-fragmentation-005.html.ini": [ "b0b502f41292a59ddc911b24642b32e61bd031df", [] @@ -303654,6 +303763,10 @@ "112640646666400f048f5b68ffa5ed45d0fea566", [] ], + "multi-line-column-flex-fragmentation-009.html.ini": [ + "bff1d2bcef72b144e4b8fe2b28f8eef4f6a84b88", + [] + ], "multi-line-column-flex-fragmentation-012.html.ini": [ "159890012ae07e68f89dda9deb897c6b412d0723", [] @@ -303666,12 +303779,16 @@ "826aa0b6d861c5867e40ff48b395f309ec8cdde2", [] ], + "multi-line-column-flex-fragmentation-025.html.ini": [ + "537486328f130be34809e9ad0fd89d36832861b3", + [] + ], "multi-line-column-flex-fragmentation-026.html.ini": [ "98c8b51087d1608e24e2872e82730ecbf2e01073", [] ], "multi-line-column-flex-fragmentation-027.html.ini": [ - "386a95fcfa6281d647ce097c52070dd517408fde", + "d5b80346d71dc3e2fc628db1d1cf847b58e8af17", [] ], "multi-line-column-flex-fragmentation-030.html.ini": [ @@ -303715,7 +303832,7 @@ [] ], "multi-line-column-flex-fragmentation-045.html.ini": [ - "dd3f232211657d01c76ecb82a0f747d7787bb817", + "136de709722a29ad9d267d35c986d46a9d7d786a", [] ], "multi-line-column-flex-fragmentation-051.html.ini": [ @@ -303750,6 +303867,10 @@ "29fdbe12050d2bb593f09225f02be0aaf3d19b95", [] ], + "multi-line-row-flex-fragmentation-012.html.ini": [ + "94b535cc533688d6e7643db396553e0483cfffa8", + [] + ], "multi-line-row-flex-fragmentation-014.html.ini": [ "821ed9f98c16ba3401d75e39a12a40c6f80017c5", [] @@ -303774,14 +303895,34 @@ "2b9c37b00f3dc09017da55ef927291e839158655", [] ], + "multi-line-row-flex-fragmentation-028.html.ini": [ + "32e657f5cf3cb19b0b6bcaa152f76a5d9dd2b7de", + [] + ], "multi-line-row-flex-fragmentation-029.html.ini": [ "6ea8f27b07fb87d4dfafaacf1a535d4c2c4cfe72", [] ], + "multi-line-row-flex-fragmentation-030.html.ini": [ + "edd95d33dcddc9d6960a999f21c43d18dd4c600e", + [] + ], + "multi-line-row-flex-fragmentation-031.html.ini": [ + "109d995ab91f55f9ba683230c7cf33aee54c66d8", + [] + ], + "multi-line-row-flex-fragmentation-032.html.ini": [ + "c6673a93d30c8644e452744eda4080c962a5479f", + [] + ], "multi-line-row-flex-fragmentation-033.html.ini": [ "6d4920426b81f42150cb40305cbdcd0f2fd25b88", [] ], + "multi-line-row-flex-fragmentation-035.html.ini": [ + "86c887a26255e3b52bf7a3b7e324d7b595b770a3", + [] + ], "multi-line-row-flex-fragmentation-038.html.ini": [ "e18310a7a45fbcf032bf84c2b05b054320814351", [] @@ -303794,6 +303935,10 @@ "429112384e606f1862e7c4b9d69429b0680b9ea3", [] ], + "multi-line-row-flex-fragmentation-045.html.ini": [ + "735f69e07bd82f9bab721e7dfeb79ff82f9df9cf", + [] + ], "multi-line-row-flex-fragmentation-047-ref.html": [ "d669603858d938bd4b70d394188f3f3cca6e82ea", [] @@ -303878,6 +304023,10 @@ "a14e3ed016216cb98822dac51c4a07e037b5f993", [] ], + "single-line-column-flex-fragmentation-001.html.ini": [ + "5998a3477126e3cb10971132ff2668a0be630a9a", + [] + ], "single-line-column-flex-fragmentation-003.html.ini": [ "a670bcde440b95af8df0abf4d15d8455a7a6eb81", [] @@ -303894,6 +304043,18 @@ "022c2705e2f749b029bf418f1ce282af99bacf0a", [] ], + "single-line-column-flex-fragmentation-008.html.ini": [ + "d6f7f8824435c78482ad075fcfd64c5dea20f4cd", + [] + ], + "single-line-column-flex-fragmentation-009.html.ini": [ + "b4a73f3c472f3c565df4ac237495b756178e04bc", + [] + ], + "single-line-column-flex-fragmentation-010.html.ini": [ + "8dc7774d5df12f58cde746e303468e29353c6b14", + [] + ], "single-line-column-flex-fragmentation-013.html.ini": [ "d34250fc56d47cf0932b47a036d2ce3d9ff7ae04", [] @@ -303926,6 +304087,10 @@ "39ebbf7bbe5f3f16ab23cfd5a767a07a9b4ed0fb", [] ], + "single-line-column-flex-fragmentation-029.html.ini": [ + "05d9d00519ef47557dca242f0db77c529dee56f2", + [] + ], "single-line-column-flex-fragmentation-031.html.ini": [ "9ad5d6861550a020c78012a8df329c9956bf1ff1", [] @@ -303938,6 +304103,10 @@ "828285ba9bf399962a70244fa3d7a24e720ef4a4", [] ], + "single-line-column-flex-fragmentation-035.html.ini": [ + "a1157e2bcb0c989f3e6c48be684061c9a4340db8", + [] + ], "single-line-column-flex-fragmentation-037.html.ini": [ "dac3b5599f7c424e28569e961021ce9187707d0b", [] @@ -303955,7 +304124,7 @@ [] ], "single-line-column-flex-fragmentation-046.html.ini": [ - "c42b8efec4192aa9c34c1b65d635dea8e4f1e13e", + "2bb4a6e7d0056320a1a84032701014ee7f2280cd", [] ], "single-line-column-flex-fragmentation-047.html.ini": [ @@ -303982,6 +304151,10 @@ "9464ce4accba4d1c88f35f75a6fcb148b5e11315", [] ], + "single-line-row-flex-fragmentation-008.html.ini": [ + "b5c10915d1c6b5ea0c4c825f6be52b0f8be30535", + [] + ], "single-line-row-flex-fragmentation-009.html.ini": [ "a7e1ab491e88aa9c7dda7d467d181b2d2294bfe4", [] @@ -303994,6 +304167,10 @@ "8964b69ee1b3217f6d1d2f7a82ef4153692bf85e", [] ], + "single-line-row-flex-fragmentation-016.html.ini": [ + "a9be97a131185789eb89b75940c63ea7374412c8", + [] + ], "single-line-row-flex-fragmentation-019.html.ini": [ "822d111219bda07522175d91bcc28a8c8d9465a0", [] @@ -304084,7 +304261,7 @@ [] ], "float-in-self-collapsing-block-001.html.ini": [ - "f6005cb9d0b029e06824e50022406c58044bd806", + "8727e6d6f7a77dc4b60fc770434e113eb05335dd", [] ], "float-stretching-bfc-000.html.ini": [ @@ -304092,7 +304269,7 @@ [] ], "float-stretching-bfc-001.html.ini": [ - "5e6f651d7b537bd22e2110f78651869325acda67", + "9175ca38e443ba142d1943cf7791c818d2905dca", [] ], "float-with-large-margin-bottom-cross-page-001-print-ref.html": [ @@ -304160,6 +304337,10 @@ "b0abc614a09176f564e4d8910435eb7628acd6e4", [] ], + "grid-item-fragmentation-012.html.ini": [ + "3f6d141f0dffd74fa6a0c176f982b0986cf82645", + [] + ], "grid-item-fragmentation-014.html.ini": [ "4ae039052e018854ff9c1f49ac944f0de1009b33", [] @@ -304172,12 +304353,16 @@ "e11dee6ba8293b56ad2dfd2485da3d0d66d9690d", [] ], + "grid-item-fragmentation-028.html.ini": [ + "9854f574671828f97509de6bac2c31b077f63f46", + [] + ], "grid-item-fragmentation-029.html.ini": [ "c1d7eb80d8dd7207caf871b6892674f13b7eb504", [] ], "grid-item-fragmentation-030.html.ini": [ - "201ebece9898ff3044ce10530dee4048ef5f8766", + "fc7d5b613b58a5e7860fc413eebe072980758238", [] ], "grid-item-fragmentation-035.html.ini": [ @@ -304185,7 +304370,7 @@ [] ], "grid-item-fragmentation-037.html.ini": [ - "17716920a71485a1bfbfc66f005dd03039176c45", + "7c3dbc50632f2b2cbb314d8a4f160020cab323c3", [] ], "grid-item-fragmentation-039.html.ini": [ @@ -304212,6 +304397,10 @@ "f720f8ec19afd1c024e675c1665d1d7ceb69d40c", [] ], + "grid-item-infinite-expansion.html.ini": [ + "c8abd0daac7d87018fcfb4dd025386b978d284e2", + [] + ], "grid-item-oof-002.html.ini": [ "2df2f1e40c9c4f51a7881daec386251af485dfd6", [] @@ -304224,6 +304413,10 @@ "dde7175023cf459e76a7a55d4617c82320720ee0", [] ], + "monolithic-overflow-005.html.ini": [ + "1613c7fc18e62407a59153cd77289cbe3e10acd1", + [] + ], "monolithic-overflow-006.html.ini": [ "523565250f122f94465d337cf3769193b15f6d50", [] @@ -304279,6 +304472,10 @@ "7aebdbefa2fabe9e360dbe349611dfe727b686bf", [] ], + "monolithic-overflow-003.tentative.html.ini": [ + "d441d9c37f03cc6a310b90eb792d46ff06e69352", + [] + ], "monolithic-overflow-006.tentative.html.ini": [ "1105a0eb1ce57fe7b2b5d31318323105ea586d01", [] @@ -304335,6 +304532,10 @@ "8321333458316b7b1fe9df40a29abb81e585a1f0", [] ], + "out-of-flow-in-multicolumn-020.html.ini": [ + "8d111f87f96593060141ab801de9f8cfafaee34d", + [] + ], "out-of-flow-in-multicolumn-028.html.ini": [ "0dcab795fb20213f79560cc0d9c9e543956a5fc1", [] @@ -304379,6 +304580,10 @@ "99801217eb987a3c30704fb50f205a6c35987312", [] ], + "out-of-flow-in-multicolumn-048.html.ini": [ + "2fc374a5c50b2ec037e3461faef66288968a43e1", + [] + ], "out-of-flow-in-multicolumn-052.html.ini": [ "603304496e346bb85946905832663d5bb642287c", [] @@ -304419,6 +304624,18 @@ "fc7f2ab721b555555a0b193ea606847ea16c7c3e", [] ], + "out-of-flow-in-multicolumn-082.html.ini": [ + "a9436a3cd8684f00d0b474d87ffd1bd1d72230c0", + [] + ], + "out-of-flow-in-multicolumn-084.html.ini": [ + "02f43ab5d2d985eb7848723db3ef2a49fb9822de", + [] + ], + "out-of-flow-in-multicolumn-088.html.ini": [ + "13b66ea1a77dee7cd98909f7a84dbce27728ceb2", + [] + ], "out-of-flow-in-multicolumn-089.html.ini": [ "6a7ce7a9bb007e45d05c69869ec5f90a531a6c8e", [] @@ -304487,10 +304704,18 @@ "97aa006602effe5097c89691031ada8ad9704069", [] ], + "overflow-clip-011.html.ini": [ + "53f20ae158e6d3a9d3f992fc723413fe6af6ce00", + [] + ], "overflow-clip-012.html.ini": [ "f92232bdd1e25ae4d75833e9f9fd9649b3bcf4e8", [] ], + "overflow-clip-014.html.ini": [ + "b83d8db19707b912e1bfa9cf1c5faf1caa79e91e", + [] + ], "overflow-clip-017.html.ini": [ "f0fc4a50cdc386cce0399cb8c2b71dc190028bae", [] @@ -304672,6 +304897,10 @@ "21ccdf11586684d7503e6429e20d356f8a7282ce", [] ], + "break-avoidance-006.html.ini": [ + "f54d8381261e3f4d5ae7f20a0b5cef26a5068b2f", + [] + ], "break-avoidance-007.html.ini": [ "070d280bb50fc49c4ba50e7cafb7a90d4f1673ce", [] @@ -304697,7 +304926,7 @@ [] ], "monolithic-overflow-002.tentative.html.ini": [ - "48b229637c5381cb976f39dc66992f31b43d63af", + "fa4ac67e9dac85466e99f9f4a08c700d8d8907c7", [] ], "monolithic-overflow-003.tentative.html.ini": [ @@ -304766,7 +304995,7 @@ [] ], "repeated-section-in-clipped-overflow-001.tentative.html.ini": [ - "b8f90da1df512cbcefd0f188fa279fc0d09daad7", + "19e1773121c34cb0d303db0b2c2de38f792a4193", [] ], "repeated-section-in-clipped-overflow-002.tentative.html.ini": [ @@ -304839,7 +305068,7 @@ [] ], "table-cell-expansion-005.html.ini": [ - "2e234e7966c1fa9b7560ab6547fcc054dbaedc94", + "6b7dcba13180bb685d81ba281cce2ee9af511b6a", [] ], "table-cell-expansion-006.html.ini": [ @@ -304946,6 +305175,10 @@ "cf0e634d777872076e2b1d96c910ce8b69e1b2e4", [] ], + "table-rowspan-001.html.ini": [ + "19f1924ec3e94066a5d6ee6538f3cd94d131f426", + [] + ], "table-section-paint-htb-ltr-ref.html": [ "75b2078c146fe2e895d67526d8b52d39071783e6", [] @@ -304999,6 +305232,10 @@ "f8d7a98aa9553c868b10a4453e8c8c77f758de3e", [] ], + "tall-line-in-short-fragmentainer-002.html.ini": [ + "497ab25d776ad115cdd38b571a8d83bff21f5141", + [] + ], "trailing-child-margin-000.html.ini": [ "1e0f484ec15f3432989bc6939d867956f26d3f29", [] @@ -305315,6 +305552,10 @@ "28f67840548fbd1a3c2c97dfccbf97575f7e9728", [] ], + "border-left-color.xht.ini": [ + "0a280dce5b0f345dbd6ecbaa0dcf1916ceed761e", + [] + ], "border-top-color.xht.ini": [ "ae4a9e094b1a9bc53f17347f37ee05395a96903e", [] @@ -305387,6 +305628,10 @@ "8f2ab03eb228ddb6ddd5b0a9f8df877d0a5da021", [] ], + "deprecated-sameas-002.html.ini": [ + "588d180b70a8ecfcee47443eeace08da14d9664c", + [] + ], "deprecated-sameas-005.html.ini": [ "abac033318d76dd459f1d77713a03a46a2ad2859", [] @@ -305395,6 +305640,10 @@ "4ad1346c4baefb8e7ecb561ef3fac489846ecfa7", [] ], + "deprecated-sameas-012.html.ini": [ + "cad143708ab8765c72cadbbefa2c7304f295d89b", + [] + ], "deprecated-sameas-013.html.ini": [ "45732d9d8682bf93e4a0f73c3aae4c73fcfdc3f4", [] @@ -306599,6 +306848,10 @@ "8d01ca5818bcb2db00ada0b83bdf3f39e42481c5", [] ], + "contain-layout-005.html.ini": [ + "43080e06a71659b3ba9b52952ddb2742cda704d3", + [] + ], "contain-layout-007.html.ini": [ "79d1737de967e8c7791abfc70e63dc2258a28743", [] @@ -306612,7 +306865,7 @@ [] ], "contain-layout-014.html.ini": [ - "9769f6da3cabf8de605e54eb4b3c8fe446bbd13f", + "c136d4a576fd8b38084dbdf5cea1e218eb3760b7", [] ], "contain-layout-020.html.ini": [ @@ -306707,6 +306960,10 @@ "16dd2a0c4792016cccb3183a936da75f73809f59", [] ], + "contain-paint-009.html.ini": [ + "1cab18f47f38741c57346e01b65818b3d2d7da60", + [] + ], "contain-paint-011.html.ini": [ "180db13123714fa7a0334d63bae71af3e21dec58", [] @@ -306731,6 +306988,10 @@ "ebb631432d1caecc8bc41556d438f9b98436726c", [] ], + "contain-paint-change-opacity.html.ini": [ + "c3aa51ea4c248b163c710f98715f3ec4f262046b", + [] + ], "contain-paint-clip-001-ref.html": [ "629cb939e01329ae1f9613876f050777b1d5b011", [] @@ -307023,6 +307284,10 @@ "faf6228ea189df13cf9f0afbcdd5c709d9792952", [] ], + "contain-size-select-elem-004.html.ini": [ + "6b447ad94a31893cbcf57f400c7c650cb0163395", + [] + ], "contain-size-select-elem-005-ref.html": [ "e14152d63383171ca890b1a89a4819eab0669bd3", [] @@ -309425,7 +309690,7 @@ [] ], "counter-simp-chinese-formal.html.ini": [ - "cb586c3a97f2917eade56ea487eb4c4d101fe371", + "288b4ba66299856137054d11cb45bb8e752f2aa6", [] ], "css3-counter-styles-076-ref.html": [ @@ -309501,6 +309766,10 @@ "css3-counter-styles-075-ref.html": [ "275cea7159aef649ef85f589a04c42a1f0040459", [] + ], + "css3-counter-styles-075.html.ini": [ + "65b077661ab5d766aeef5fab2b0a1c70768249c3", + [] ] }, "tamil": { @@ -309753,6 +310022,10 @@ [] ] }, + "display-change-object-iframe.html.ini": [ + "8f240249efeff1040cecf8d392ae9e50fb65eb89", + [] + ], "display-contents-alignment-001-ref.html": [ "595aa7f7e5b9bb3d0c2da3afc6ae7d6ae733e241", [] @@ -310121,7 +310394,7 @@ ], "abspos": { "abspos-autopos-htb-ltr.html.ini": [ - "317d329b13ddce0f44ade8462a76ac49e851e76d", + "64d7237db336b789a9d9296b1ce5c28810c7de8b", [] ], "abspos-autopos-vlr-ltr.html.ini": [ @@ -310232,6 +310505,10 @@ "c75e35032ab9f61b75fbc61def9af0459128a044", [] ], + "position-absolute-008.html.ini": [ + "965688eab95e077b1301c0423380ebddeb56d607", + [] + ], "position-absolute-009.html.ini": [ "ac9837ae7d5859e83b0778d8e7b2291f9cd248e1", [] @@ -310563,6 +310840,10 @@ "6f64d9df076ed167edb12212a744f5e8bda5c41c", [] ], + "flex-basis-003.html.ini": [ + "2aca1f3f241eb47cf0a9caa9307887a906f7895c", + [] + ], "flex-basis-007.html.ini": [ "44db492d798085c9a81b74fb416a7905d20da17b", [] @@ -310745,6 +311026,10 @@ "18f2a4e0707dbe85eae16cbdfccc385b9f8ba18b", [] ], + "flex-minimum-width-flex-items-001.xht.ini": [ + "26ea4dba317de0391ef787e89d100504276d3daa", + [] + ], "flex-minimum-width-flex-items-005.xht.ini": [ "f57312d50aec607daae97f879822e9fd0d45c64a", [] @@ -310801,6 +311086,10 @@ "f90a9ca545ebdf81047cff180e86067599cb5ca6", [] ], + "flex-wrap-005.html.ini": [ + "d75c54f5210a62619f045261f54606c985f10f55", + [] + ], "flex-wrap-006.html.ini": [ "c11f128a11d114315c9fe623998e510e8f12b514", [] @@ -311146,7 +311435,7 @@ [] ], "flexbox-definite-sizes-005.html.ini": [ - "b958ac2ee81661c5dba2f797b38109d8c0327f24", + "a550d0d76f5a8143fd31de016266cca7a4930a90", [] ], "flexbox-dyn-resize-001-ref.html": [ @@ -311441,6 +311730,10 @@ "64501367ac3109817820a0361a58cc7470975b31", [] ], + "flexbox-min-width-auto-006.html.ini": [ + "5135e7b24a1e42f5e768875b4bf414836e4fe4d8", + [] + ], "flexbox-order-only-flexitems.html.ini": [ "07c73d386c15fa0be8d66d61559a4d8d9f5ee2b3", [] @@ -312405,6 +312698,10 @@ "88dd493afca589ed4bf50a086f9fc42d8f9cf2c7", [] ], + "flexbox_item-top-float.html.ini": [ + "e70cbdb513d0164402ac466dd60f8a182b0cc072", + [] + ], "flexbox_item-vertical-align-ref.html": [ "3f3ba32e629d5e15227a35329b7ac254f53df5c3", [] @@ -312553,6 +312850,10 @@ "a1f527de70e8289667308b9726e1c0d754a75d4b", [] ], + "flexbox_rowspan-overflow.html.ini": [ + "dd49bcce493dbdec648653947bd48ce76001c902", + [] + ], "flexbox_rowspan-ref.html": [ "27598a6874edcfb39a8137a97b9b8866c3c6f3be", [] @@ -312789,6 +313090,10 @@ "15fc9405dc6d8d69a9b43c2e0cdd6965b9e1a4ad", [] ], + "gap-012.html.ini": [ + "69f70f303ef832be1c169c5d96ddfca4cb8a05f8", + [] + ], "gap-014.html.ini": [ "d8f1cfbd924017e72a066920a00bfbd3e1d8c7ee", [] @@ -312943,6 +313248,10 @@ "row-wrap-001.html.ini": [ "8f8d19132def8acb3b733edd6276d12248662629", [] + ], + "row-wrap-002.tentative.html.ini": [ + "e7a499b14f18ac03a41cb3886c697766dbea4498", + [] ] }, "item-with-table-with-infinite-max-intrinsic-width.html.ini": [ @@ -313672,7 +313981,7 @@ [] ], "table-as-item-flex-cross-size.html.ini": [ - "427872b9a6a5b656d0f0e0bdc3f943a8de6ed5f3", + "d5be25c1af6f445a5c8004ba74d06506b248bf7e", [] ], "table-as-item-inflexible-in-column-1.html.ini": [ @@ -322892,6 +323201,10 @@ "fbc10e138236e1c881ee38c971e163999cb492b3", [] ], + "grid-baseline-align-cycles-001.html.ini": [ + "df56c153871e5b5293be60c7c037b98ee3f57304", + [] + ], "grid-baseline-justify-001.html.ini": [ "68eb98eb2a44276eb921f24e2f526e13a2c76600", [] @@ -323233,7 +323546,7 @@ [] ], "grid-item-no-aspect-ratio-stretch-4.html.ini": [ - "7c884fff180f1b1b3b4ffc07b44276b6bcf4be3e", + "42434c5f5baf1fa4fa77181524e3dddbeaa6fe78", [] ], "grid-item-no-aspect-ratio-stretch-5-ref.html": [ @@ -323571,6 +323884,10 @@ "ecffdc7816e46cf65f48121e0b5814806582f825", [] ], + "grid-self-baseline-changes-grid-area-size-009.html.ini": [ + "b132927a0562e94f13c131e4b37e7e830828bef7", + [] + ], "grid-self-baseline-changes-grid-area-size-010.html.ini": [ "d650aa4ec0e4b7b7a7fa6bb554025e016a785868", [] @@ -323938,6 +324255,10 @@ "b90f15b597d4e495c0a5dbc4f8dffe8511f10111", [] ], + "grid-item-containing-block-001.html.ini": [ + "e7e168b8cfbba8190e57021306be939259a9eab3", + [] + ], "grid-item-containing-block-003.html.ini": [ "5d801b6a68989f72992007617a8e251604f4ae80", [] @@ -324039,7 +324360,7 @@ [] ], "grid-items-percentage-paddings-013.html.ini": [ - "692c7556e06e7a7eb33d1459ffd39ad5fe5780fc", + "57c737c16012617fb284aa64a2e99fba089c218c", [] ], "grid-items-sizing-alignment-001-ref.html": [ @@ -324050,6 +324371,10 @@ "c4aa7ae7a46b60d3c367269109939dacb449b64d", [] ], + "grid-minimum-size-grid-items-015.html.ini": [ + "bf3b406c94beb223d4113994011d67edb1dba908", + [] + ], "grid-minimum-size-grid-items-016.html.ini": [ "57ae8fb20b8a700aec2b0c592229a76116fd4c87", [] @@ -324130,6 +324455,10 @@ "bc0cee2d81a4f07038089ae03bba0d743261ab4b", [] ], + "replaced-element-010.html.ini": [ + "f098f7652750d3817e3a206282ad922eb72de390", + [] + ], "replaced-element-012.html.ini": [ "ae2e9e534a5e7afbeb5b0cdcd68fc9baf7f83b8a", [] @@ -324346,12 +324675,16 @@ "5b7f97cc3243ed2bc0d39a34b9766ab48adefa0b", [] ], + "grid-as-flex-item-should-not-shrink-to-fit-005.html.ini": [ + "99109185b4ffd09018e1ae917da244b0bc9f9800", + [] + ], "grid-as-flex-item-should-not-shrink-to-fit-006.html.ini": [ "e7f68103dd86de36127ba4eb85ffae5645778e03", [] ], "grid-as-flex-item-should-not-shrink-to-fit-007.html.ini": [ - "b25a6400416703ce693b23ea1f4b95cfbdd2ca88", + "87128e58ff5e80943d3be8343bc86cced51ebcbb", [] ], "grid-intrinsic-size-dynamic-block-size.html.ini": [ @@ -330419,6 +330752,10 @@ "b28f7fbbdb4bc0d5c2e152d92a33a309de6887a8", [] ], + "abspos-autopos-contained-by-viewport-000.html.ini": [ + "d3c5d68f629c304d98a6e58d27a8a2fc03dddd6d", + [] + ], "abspos-autopos-contained-by-viewport-001.html.ini": [ "05e5e9472b90efc00a62254501aed951fd068c3d", [] @@ -330449,6 +330786,10 @@ "2ae0778d56bee499e73d0efc6912f34343070feb", [] ], + "balance-break-avoidance-000.html.ini": [ + "4c71ed9e566253b273399370da9feb1c5cd1d7e6", + [] + ], "balance-grid-container-ref.html": [ "aa0ea5595d067d1c8bfc21f604ff2d662bef155a", [] @@ -330533,6 +330874,10 @@ "f0ee4df8c9de3a77fb39b40942dbf0743312494f", [] ], + "column-count-used-001.html.ini": [ + "b366c5d71fe4c037c15d4209cb04e90abf32e689", + [] + ], "column-fill-balance-orthog-block-001.html.ini": [ "2d724458e6ef0d3731310e2581be60a2e3892d29", [] @@ -330561,6 +330906,10 @@ "4129064cb0f4161775db33206efd56c74f472938", [] ], + "float-and-block.html.ini": [ + "0559ae98ebf94970e658ab1d5df935669320e09a", + [] + ], "float-with-line-after-spanner-ref.html": [ "7c33b48f5e6077ad87a230d8ca54976e55785445", [] @@ -330869,6 +331218,10 @@ "c0e86ff17a7ca34ec81debcd4462110a5bc4751a", [] ], + "multicol-fill-balance-005.html.ini": [ + "f4d2f1debc03c2db21d9a98ac405416fca7dba12", + [] + ], "multicol-fill-balance-018.html.ini": [ "8fb58f04bdc77220f8b2b22e52ff8f2979a1d83c", [] @@ -331489,6 +331842,10 @@ "1c64a8e26e82d9213cdb5fb2832b91eb8047c32f", [] ], + "multicol-span-all-list-item-002.html.ini": [ + "d013a03e5f3cfa6fdfc36560807464b37ce6ad79", + [] + ], "multicol-span-all-margin-001-ref.xht": [ "30319f3554f7aae0b567f4676a47592eb65fc707", [] @@ -331757,6 +332114,10 @@ "2f71cfa66b552dea4072491a2784cb896b62d13c", [] ], + "remove-child-in-strict-containment-also-spanner.html.ini": [ + "d4ee5e49f52e8110fb61eba14adef246a3099e36", + [] + ], "remove-inline-with-block-beside-spanners.html.ini": [ "48a52d8370c4c4f729e2b3c3abec81fe877e852e", [] @@ -332007,6 +332368,10 @@ "table-cell-multicol-nested-001.html.ini": [ "ff1c36e4f96298dc9e660753980aa678216d1bc9", [] + ], + "table-cell-multicol-nested-002.html.ini": [ + "5b99a8fa607a7ec8312779cf6b38bdd6cca6de0a", + [] ] } }, @@ -334118,6 +334483,10 @@ "8cbb509e57459808bfc3884150338e2ccbf5dbb8", [] ], + "position-sticky-flex-item-003.html.ini": [ + "c8cb82367accd1e48753be43f92e2cf9808eac9b", + [] + ], "position-sticky-flexbox-ref.html": [ "b78c784de185918d8939075fb46eca7ad48b6fde", [] @@ -335173,6 +335542,10 @@ "14687acb841d2b85becead81a0c82b4e4b5b8e9d", [] ], + "highlight-paired-cascade-001.html.ini": [ + "132381628197799a8c3e3675b8ce2dbeb4b39eff", + [] + ], "highlight-paired-cascade-002-ref.html": [ "48eb9911a104c7b74bbafaefbe19cd23c3ce5d7f", [] @@ -336153,6 +336526,10 @@ "cd85db944e36786e5b0fe18862dfca4f7d11bf3d", [] ], + "ruby-dynamic-insertion-002.html.ini": [ + "f257d972d9420fefbe23da562fc2888cb0542f84", + [] + ], "ruby-dynamic-insertion-003-ref.html": [ "ef71525479d23fbc221529715b911f001b069899", [] @@ -336585,7 +336962,7 @@ ], "input": { "keyboard.html.ini": [ - "1c0fc1dc522c0526a7f0e3da7c7d9dda779b02c3", + "d3a1a4ae73061031d826b8d9b8705212d7fedc5f", [] ], "mouse-wheel.html.ini": [ @@ -336629,6 +337006,10 @@ "88f028fb3952b394f6ff4a9548b0b41a26bad131", [] ], + "scroll-snap-root-001.html.ini": [ + "68c48dc632133120d9de5b1644b995a2eb66682f", + [] + ], "scroll-snap-root-002-ref.html": [ "663b02b8c420593deda9634d47d44aa45a8596e2", [] @@ -336706,6 +337087,10 @@ "26b622e718c1c38110d45bf99de598dfbc2492b6", [] ], + "scroll-snap-writing-mode-000.html.ini": [ + "7bc3b8f9663ab3fa58c25762c8438a8835f13c21", + [] + ], "snap-after-initial-layout-ref.html": [ "c8009b626cb63ebcef4a211f8b61249faf36c72f", [] @@ -338384,6 +338769,10 @@ "8cfba97d38be1902084c56a5133716551459a50c", [] ], + "abspos-017.html.ini": [ + "cf45f612a6542d4dcaf72c0ccdc1427e7a5e80be", + [] + ], "abspos-021.html.ini": [ "0159511e9f60a330a7d18c24c6c0028da9f066d8", [] @@ -338536,6 +338925,10 @@ "650d8415e162a3877b7508d3217aa61338b83a96", [] ], + "grid-aspect-ratio-005.html.ini": [ + "7d2d095a968c801e1fcd244389e5af0dff8a3dae", + [] + ], "grid-aspect-ratio-006.html.ini": [ "6ddf93b6fbe88b7f0e3a4514bea04b2d29a324c8", [] @@ -338596,6 +338989,10 @@ "0dd8c18532934ce395a12a6a30782b5da3079dfe", [] ], + "intrinsic-size-006.html.ini": [ + "b3a4e32ad8ef8a49b28e6d12a01198a9790275d9", + [] + ], "intrinsic-size-007.html.ini": [ "be48afc2741a0684523c86a7a50459f55b4e3b9b", [] @@ -338642,6 +339039,10 @@ "231a067ac711abdf66a0bfa4a62b4b5b093a8b29", [] ], + "replaced-element-006.html.ini": [ + "7d6b5b39710aa87f78474c3447cfcbd90934f5e1", + [] + ], "replaced-element-007.html.ini": [ "397bca2e36deb2277a7f90392ee41b9f0755f4c5", [] @@ -338674,6 +339075,10 @@ "388c41c2b2cfe36032accf482b217706e212b654", [] ], + "replaced-element-025.html.ini": [ + "a7913e3fced2981d52e51d6b453d01384edbd8ba", + [] + ], "replaced-element-029.html.ini": [ "a175326c80bfcf723a3416ecadaa1757a8c2d14e", [] @@ -338739,6 +339144,10 @@ "zero-or-infinity-007.html.ini": [ "4cd0823416dae22835c860237a5dfbb6d526f8f9", [] + ], + "zero-or-infinity-008.html.ini": [ + "b3dcbf5af20efe363505b3e2be6ccceafc7a8400", + [] ] }, "auto-scrollbar-inside-stf-abspos-ref.html": [ @@ -338761,6 +339170,10 @@ "0810c428b56ae8ef412ef11b8e66b9aa54e1ca83", [] ], + "block-size-with-min-or-max-content-table-1a.html.ini": [ + "ceffb3bbce2f6341def3066a8267f8ade5ed0f35", + [] + ], "block-size-with-min-or-max-content-table-1b.html.ini": [ "7d2d7f935c3bd3771cd9e7398a11727a106839ae", [] @@ -339535,6 +339948,10 @@ "f8c2d794c4f0feef4968260498893fc7e3ba8e52", [] ], + "style-attr-braces-002.xht.ini": [ + "3e2ffca73f807aaba50c600f6f5ed49188fc9770", + [] + ], "style-attr-cascade-002.xht.ini": [ "0237c8cac66c42438df327e554a8684f576d74f7", [] @@ -340070,6 +340487,10 @@ "f2ed9e15dd2269fcb3d85ba25f7e2b423c9f92ea", [] ], + "percentage-sizing-of-table-cell-children-003.html.ini": [ + "e93d629fe032d7c3284110e6b039fceae6d159b5", + [] + ], "percentage-sizing-of-table-cell-children.html.ini": [ "483d2e1ba6a20ece14d6aafc746ae284917f88ff", [] @@ -340102,7 +340523,7 @@ [] ], "html-display-table.html.ini": [ - "7bc7dcaf694b52ff5f770e86eac5af95e4f2010b", + "0b4aa05ae40f106004f8dd1caa58612a991c8a78", [] ], "html-to-css-mapping-2-expected.txt": [ @@ -343730,6 +344151,10 @@ "c2583df974c053050d9a58148f8e6b1cf291d650", [] ], + "text-align-start-009.html.ini": [ + "36ef662491f1b50651026a007132a5599e0e5ec2", + [] + ], "text-align-start-010.html.ini": [ "33c20941057111335447621fd4138bd18f1802c0", [] @@ -345747,13 +346172,17 @@ [] ], "white-space-intrinsic-size-014.html.ini": [ - "f188960fa76fc7cd6f72d20e5b194ffcb4d8f7ac", + "6076bd509fb1f75b77f95f2701c3ffb975376638", [] ], "white-space-intrinsic-size-015.html.ini": [ "0b51d40f4da79d6f419ebe392937fb6265eecf94", [] ], + "white-space-intrinsic-size-016.html.ini": [ + "1174d7784ffdba6d5a5721755e03591dcc19d6e6", + [] + ], "white-space-intrinsic-size-019.html.ini": [ "442e5e3ed264564e99ead9096903a47536c14006", [] @@ -345803,7 +346232,7 @@ [] ], "white-space-pre-wrap-trailing-spaces-015.html.ini": [ - "8f3b8df46cf36f3e1f1be538376aa076cdd1f93e", + "f15265ba1a1c40b951c2daf48769114138bf2ac2", [] ], "white-space-vs-joiners-001.html.ini": [ @@ -348102,6 +348531,10 @@ "e7f1182cd2e82bb7934f8e03cf6e4fa6f51735ce", [] ], + "svg-document-styles-004.html.ini": [ + "c3052ae6f279271a198a039cee1d3fa08d26e961", + [] + ], "svg-document-styles-005.html.ini": [ "fd98c2759b955ee685c7a3e2e0f5eb8f1131b104", [] @@ -348233,6 +348666,10 @@ "f3f8abc50e4136a9651183028181894e0daa9e51", [] ], + "huge-length-tiny-scale.html.ini": [ + "1f513796b308721ad92f64107ed089133ef79368", + [] + ], "individual-transform": { "animation": { "individual-transform-combine-ref.html": [ @@ -348864,6 +349301,10 @@ "fbd4c2e864c798c995cb44332806897ea4ea77f6", [] ], + "svg-scale-011.html.ini": [ + "2e2f1366ae456727515f2fe91af7c3b768f7b1fa", + [] + ], "svg-scale-015.html.ini": [ "f14646725367394fc7830f1cc3b72c17776567ae", [] @@ -349493,6 +349934,10 @@ "svg-transform-list-separations-007.html.ini": [ "d6dcaf2912c5c98e1ecdcffb35ff1804e0decb02", [] + ], + "svg-transform-list-separations-008.html.ini": [ + "537f53bba66d14ac6295c7f479045b68f596baa6", + [] ] }, "transform-matrix-001-ref.html": [ @@ -350222,7 +350667,7 @@ [] ], "CSSTransition-effect.tentative.html.ini": [ - "d1523bf4a24806f241777b4b51a8127d28c35a18", + "033a019bc249a59e7cfb4f1f154eb6db1f16a85c", [] ], "KeyframeEffect-getKeyframes.tentative-expected.txt": [ @@ -351753,7 +352198,7 @@ ], "compute-kind-widget-generated": { "kind-of-widget-fallback-button-background-attachment-001.html.ini": [ - "89cf2024db673fea4a2a40ca43a04fd7e389343f", + "7b12d3fbd7a933c075dcd9b05ff7c1c35744432b", [] ], "kind-of-widget-fallback-button-background-clip-001.html.ini": [ @@ -351769,15 +352214,15 @@ [] ], "kind-of-widget-fallback-button-background-position-001.html.ini": [ - "005100b6937b45bd861340c478b380d8e1322ff0", + "428acbb04152630a8f4996e9d5c4ad6ecc8dc383", [] ], "kind-of-widget-fallback-button-background-size-001.html.ini": [ - "47cade4b95525818e08347869f884fc0ca536b7a", + "48ad78db578b156522d8899ab3dc6d85ade70dec", [] ], "kind-of-widget-fallback-button-border-block-end-color-001.html.ini": [ - "314266b3a288fb7e6a1bac22a3ea3c71f72884a3", + "7089c2980bfa77d388dbe28d614f7e1830bf659c", [] ], "kind-of-widget-fallback-button-border-block-end-style-001.html.ini": [ @@ -351805,7 +352250,7 @@ [] ], "kind-of-widget-fallback-button-border-bottom-right-radius-001.html.ini": [ - "758c3d0336a6e84449431603fda982e1df51c153", + "75d78e85f36b97599c5cd9f8cfdd9818917dce7f", [] ], "kind-of-widget-fallback-button-border-bottom-style-001.html.ini": [ @@ -351817,7 +352262,7 @@ [] ], "kind-of-widget-fallback-button-border-end-start-radius-001.html.ini": [ - "fc7094f33e7b1b499c41161ede1e2ceae112752a", + "feff70ab3676da527cee0e45e0e65342e73e67e5", [] ], "kind-of-widget-fallback-button-border-image-outset-001.html.ini": [ @@ -351852,6 +352297,10 @@ "0bbe6c6387ad88e83f7da0c140300fc846a467bc", [] ], + "kind-of-widget-fallback-button-border-right-color-001.html.ini": [ + "7f27366fe57e201f0e8a1045b79bfd4b8259d60b", + [] + ], "kind-of-widget-fallback-button-border-right-style-001.html.ini": [ "5b5174966989b2d8d39408227da2e713d802bc81", [] @@ -352064,6 +352513,10 @@ "46e2d7330e49354844da6e76dcb20ebfc5898ae2", [] ], + "kind-of-widget-fallback-input-button-background-clip-001.html.ini": [ + "07d9da9a8ab98142131069435f4f48b873a45c75", + [] + ], "kind-of-widget-fallback-input-button-background-image-001.html.ini": [ "c20c2aad6adf84ca95d9579de3197042e71baaa5", [] @@ -352353,7 +352806,7 @@ [] ], "kind-of-widget-fallback-input-search-background-clip-001.html.ini": [ - "13a9640d7d047db3b9d6d8fc892c661e2355c31f", + "045c8c8c458891e1fd39cd5b46a9efeae6895771", [] ], "kind-of-widget-fallback-input-search-background-image-001.html.ini": [ @@ -352409,7 +352862,7 @@ [] ], "kind-of-widget-fallback-input-search-border-bottom-width-001.html.ini": [ - "75dff5bc2c3c0e9796923a8e75d1f8fd54759e56", + "5c61ffa2df89175cfa14025ec5297bd0b6915098", [] ], "kind-of-widget-fallback-input-search-border-end-end-radius-001.html.ini": [ @@ -352573,7 +353026,7 @@ [] ], "kind-of-widget-fallback-input-search-text-border-bottom-style-001.html.ini": [ - "9274ff8b7e0640b07a07ea8bffef1a3968e1785b", + "cccc18168d13cd48cf3777ec03e116432182f14c", [] ], "kind-of-widget-fallback-input-search-text-border-end-end-radius-001.html.ini": [ @@ -352901,7 +353354,7 @@ [] ], "kind-of-widget-fallback-input-text-border-bottom-width-001.html.ini": [ - "ef5ce442a79055f95373365f32372beef5177984", + "3bc72f08f89af30a29cebd112bd60b74cc1138f4", [] ], "kind-of-widget-fallback-input-text-border-end-end-radius-001.html.ini": [ @@ -353289,7 +353742,7 @@ [] ], "kind-of-widget-fallback-textarea-border-image-slice-001.html.ini": [ - "600abb648f2dff81e2603608a8833c7d1e91bc7b", + "30b5e74017396140b27664417f0ee9bddb289bb0", [] ], "kind-of-widget-fallback-textarea-border-image-source-001.html.ini": [ @@ -353337,7 +353790,7 @@ [] ], "kind-of-widget-fallback-textarea-border-right-color-001.html.ini": [ - "5b35846f4a5ed67972c479e8d9c6e26dab220683", + "db53d5bce5e1f27cd24a8c02bed11ac63f7d16da", [] ], "kind-of-widget-fallback-textarea-border-right-style-001.html.ini": [ @@ -356585,6 +357038,10 @@ "f05fe9ba31d24a19a1277cc3058fe858d81e00c4", [] ], + "abs-pos-non-replaced-icb-vrl-020.xht.ini": [ + "e9bb6cdd7f3e268a0c4d169e408e46323ef4b89e", + [] + ], "abs-pos-non-replaced-vlr-003-ref.xht": [ "2c269fa0965e69a9efcee2d14f8889bb81c87396", [] @@ -356757,6 +357214,10 @@ "0ac184b80fddc00b38ffb930a6a48efed19e222f", [] ], + "abs-pos-non-replaced-vrl-144.xht.ini": [ + "cfa2efec497e1cf35a7fef913a95e3cb5680d5ea", + [] + ], "abs-pos-non-replaced-vrl-154.xht.ini": [ "8a944e79e1fe07ee3b698c706a348869b609c48e", [] @@ -356989,6 +357450,10 @@ "bb5c6dc95cd264f5690d5e2443f7fdebcd1e9f05", [] ], + "block-flow-direction-vlr-007.xht.ini": [ + "d831a933ec253f3a4978d205457fc56df0e07a99", + [] + ], "block-flow-direction-vlr-008.xht.ini": [ "4ea5509fb4f030d8b68f17bd41fff943fb57ba64", [] @@ -357053,6 +357518,10 @@ "3901b09849f218ab8c02605a512df083aad3d5e1", [] ], + "border-conflict-element-vlr-013.xht.ini": [ + "5e955d9ec17e3fd7ad0c6563fd74626d90edf226", + [] + ], "border-conflict-element-vrl-004.xht.ini": [ "a41bfc48b7374ad509d99b546288b71759db77a2", [] @@ -357086,7 +357555,7 @@ [] ], "caption-side-vlr-005.xht.ini": [ - "e1cf276b64ffd791ca8e222d60389604c0f92b9f", + "7f415ff332ba8cf5addf666494aef6b6cebbdcbb", [] ], "central-baseline-alignment-002-ref.xht": [ @@ -357238,7 +357707,7 @@ [] ], "float-clear-vlr-005.xht.ini": [ - "58bc9546081c4397bac156a6e84b4505e5e3867e", + "5191dfc5d12b299e038042caffd1331077c8fc21", [] ], "float-clear-vlr-007.xht.ini": [ @@ -357659,6 +358128,10 @@ "98e2db8d65254b49fdbc2e8d8fd63fb5bcbe4e7f", [] ], + "margin-collapse-vlr-015.xht.ini": [ + "9a52697348c835a050b72071e24cb1e5953749f8", + [] + ], "margin-collapse-vlr-017.xht.ini": [ "811ad08331fc0b461f260f2f5f52073be2da8cfe", [] @@ -357675,6 +358148,10 @@ "b4bdc8af7cb6b08d12c0c29d9f95d9386a0a0792", [] ], + "margin-collapse-vrl-008.xht.ini": [ + "a08fc66687c5f9c3b02497e6158df3fa2d8dad55", + [] + ], "margin-collapse-vrl-016.xht.ini": [ "618d80fb3908b155e17ddeff0a5ddc1f0397ddc9", [] @@ -357743,6 +358220,10 @@ "be32009e49d2a73beb76554d05ad802128e2908a", [] ], + "orthogonal-root-resize-icb-005.html.ini": [ + "d998f54bb14e5af09189a5e938b637c03e7221d1", + [] + ], "outline-inline-vrl-006.html.ini": [ "9fd87c7f72c4b3fedc6056e5c01802b7370c83c0", [] @@ -359021,6 +359502,10 @@ "5c7bc196d2d298c14d34c71408f95dbf1535831f", [] ], + "sizing-orthogonal-percentage-margin-008.html.ini": [ + "b2a043124b1a4af01909309a2e636d6996aae432", + [] + ], "sizing-percentages-replaced-orthogonal-001-ref.html": [ "0fd818c5a3552c3f388648456eb8fc2ba868704b", [] @@ -360294,6 +360779,10 @@ "writing-mode-vertical-rl-003-ref.htm": [ "19c334329711df0af4515614173ebd0ebe818f00", [] + ], + "writing-mode-vertical-rl-003.htm.ini": [ + "e94e49fe2869db1aa2ce97bf9d9cf7a0549a8705", + [] ] }, "cssom": { @@ -361594,7 +362083,7 @@ [] ], "drop-shadow-clipped-001.html.ini": [ - "a8fb5aa122c3bd7a4003a05df00ac874c661ef00", + "09da5871561e9ce6d6cf6914e9a2f33156682e11", [] ], "effect-reference-after-001.html.ini": [ @@ -362403,6 +362892,10 @@ "9a597d2f95dc65d9b421f4309d980f2c5bd0dd2f", [] ], + "aspect-ratio-006.html.ini": [ + "bb72473c9ac3476d0638ec37030c430a2d6e3e93", + [] + ], "dynamic-range-expected.txt": [ "2e9b7ca7874909c5096b1ff816af9b0bf7459181", [] @@ -362448,7 +362941,15 @@ [] ], "mq-invalid-media-type-002.html.ini": [ - "6e21e3377c4676443bee01bc0c9c6dc17b680b66", + "da189a0c70e890e318ddaccd4a2e62d5ffe08000", + [] + ], + "mq-negative-range-001.html.ini": [ + "22d575a9aa2eae581e287c13535ebf2bca6e2739", + [] + ], + "mq-negative-range-002.html.ini": [ + "54979a91a903f47b8041197e67beea4dcd156812", [] ], "mq-non-matching-lazy-load.tentative.html.ini": [ @@ -362464,7 +362965,7 @@ [] ], "negation-001.html.ini": [ - "e50126deb0e48c0a95ffbddc19dac4c26909a014", + "289fd3f176da2e0c4d00714ba6e3d7669d73c44c", [] ], "prefers-color-scheme-svg-image-normal-ref.html": [ @@ -363456,7 +363957,7 @@ [] ], "dir-selector-change-002.html.ini": [ - "87ac1f022ee16c02f586ea608c622cd5f3d9e940", + "333de789156e81afdadcdf107cd41250f92d087e", [] ], "dir-selector-change-003-ref.html": [ @@ -363674,6 +364175,10 @@ "e68b8834c35b14faf8441aeae6645f26015c9331", [] ], + "lang-pseudo-class-in-has-document-element.html.ini": [ + "74bb88e7113de591a3806f777d1eda2c0edbe24e", + [] + ], "lang-pseudo-class-in-has-xhtml.xhtml.ini": [ "ea5033743db70eb9a30368eed71ceb666224a9eb", [] @@ -373478,7 +373983,7 @@ [] ], "assorted.window.js.ini": [ - "a7fc3f7d0761d47d0b33b76299f3664a00e77991", + "375b7ff1db39a949921874f55f915e84ca8cc556", [] ], "resources": { @@ -373546,7 +374051,7 @@ [] ], "iframe.tentative.https.window.js.ini": [ - "cce3913ebb9864300985e88485c5329a13ca9d43", + "1592b2cc4ba615c9347e1f2156c08863ff3f9907", [] ], "iframe.tentative.https.window_include=from-private-expected.txt": [ @@ -373570,7 +374075,7 @@ [] ], "iframe.tentative.window.js.ini": [ - "4da7fef814f37a4dcfb890a99e6feea6a0a4bbc2", + "605ae0cd9716f87a339ddb06b17ed6bcc0398533", [] ], "mixed-content-fetch.tentative.https.window-expected.txt": [ @@ -379364,7 +379869,7 @@ [] ], "window-name.sub.html": [ - "5bb8ebda8f85134ac2dd02fc5862e49ec7c76b8d", + "9255ba340159ba67d08f90837cb77c0aa514a5f0", [] ], "window-opener.html": [ @@ -391441,6 +391946,10 @@ "6de01a9b3bbf19567555af2524f8950abdfb2d81", [] ], + "image-loading-lazy-slow-aspect-ratio.html.ini": [ + "10cfc0b7e780b9a1bf829b092caae2baa60188b0", + [] + ], "image-loading-lazy-slow-ref.html": [ "20fbb9b50e99b8c0505d65618880b6d2130fa909", [] @@ -392288,7 +392797,7 @@ [] ], "selectlist-form-state-restore.tentative.html.ini": [ - "976dcd0300d08c0d8c8558d6a67f101bc3b7f07a", + "ecbb6f9c54b66053cbd08fc070c402620f7b18af", [] ], "selectlist-keyboard.tentative.html.ini": [ @@ -392616,11 +393125,11 @@ ] }, "toggleEvent-expected.txt": [ - "85e15d0d9eacc028e80a383912d59bf71d03c1fe", + "67f86d46e7210496c6f8b15cb3cb9ddbf0cec164", [] ], "toggleEvent.html.ini": [ - "51333f0f492a5ef4b579d8b4c3372b12fbef8f16", + "d929b7e594c961346f4756e35d4b2a03aa12725e", [] ] }, @@ -402440,6 +402949,10 @@ "7864c0409914de319866ff86b19c8e423672fa69", [] ], + "display-2.html.ini": [ + "15dfe816bc1d4239da27f7099326df7955350524", + [] + ], "dynamic-1-ref.html": [ "5fa90e9d2fe8bd44a506a8bffa4f1adec6374dda", [] @@ -406890,6 +407403,10 @@ "753f8b53f30e6188f3ddccb9ce2cafede503ccb4", [] ], + "pointerevent_pointerId_scope.html.ini": [ + "a334efb5b8c0bfebb64d64f55f3b6e0661a1abe2", + [] + ], "pointerevent_pointercancel_touch.html.ini": [ "5acec4c0312c5d8645aa1d5179ffd24a5cee3ac9", [] @@ -417437,14 +417954,6 @@ } }, "embedded": { - "image-crossorigin.sub-expected.txt": [ - "daad42056e272f54f9c2e0a0f9ea2b6549632470", - [] - ], - "image-crossorigin.sub.html.ini": [ - "b6fb429f1ee586faab2f9d05b7dbfeab7fa4b9eb", - [] - ], "image-embedding-svg-with-near-integral-width-ref.html": [ "655d982b16ce0582f6b83e26844b2a6e2437b17b", [] @@ -417655,7 +418164,7 @@ [] ], "idlharness.window-expected.txt": [ - "bdc41a44c1f5097b392a9e389c890f68ac0e4fbb", + "352968b590cf8f8fb0ffaf5248cd1c0f481f8a63", [] ], "idlharness.window.js.ini": [ @@ -418087,7 +418596,7 @@ [] ], "marker-path-013.svg.ini": [ - "d2843a13c9f79981a24d0bdbcb1e9179fd8666d4", + "1de5c63b68c7ef2274caa38f3c0225fff31dd9f9", [] ], "marker-path-021-ref.svg": [ @@ -419819,22 +420328,118 @@ "gen": { "iframe-blank-inherit.meta": { "unset": { + "fetch.https.html.ini": [ + "22d0f21a24a89f93b3a647865a7b31624f508339", + [] + ], "iframe-tag.https.html.ini": [ "6294ebc4fc1c5dd6070039a473054b668f2656a8", [] ], "img-tag.https.html.ini": [ - "65c3af7feacf07635d8506827e15b02a10e0c478", + "47b167b52010a3d0f05ec82c9d21e7f4157fcf00", + [] + ], + "sharedworker-classic.https.html.ini": [ + "6c5ed0d00d11d90be6b13a833a733811f2f6adf9", + [] + ], + "sharedworker-import-data.https.html.ini": [ + "54430fb8d7cbe40d08df202c351b54da4168941e", + [] + ], + "sharedworker-import.https.html.ini": [ + "c14c5a9cd622c5bca0ea01def2570f6fc4e4ea7a", + [] + ], + "sharedworker-module.https.html.ini": [ + "4f462fe94b8a3dfbf218feb76d9bc1cc380bb7cb", + [] + ], + "websocket.https.html.ini": [ + "cb17ba5af7560ee808c1752edb0c0f0022349803", + [] + ], + "worker-classic.https.html.ini": [ + "24a803f6fc54a49f985ef155038261372aa227ad", + [] + ], + "worker-import-data.https.html.ini": [ + "2edf2fe23e5148dac17d349f821e55159f79219c", + [] + ], + "worker-import.https.html.ini": [ + "ccb9aadd8a0c2b75f79b6ba760c4326a17591e73", + [] + ], + "worker-module.https.html.ini": [ + "1807da1a979e787d163df1393d02268dba5f3465", + [] + ], + "worklet-animation-import-data.https.html.ini": [ + "a952c46e02d4c5cd299d0a9a551c787252b27c8b", + [] + ], + "worklet-animation.https.html.ini": [ + "1a5aedf5687a2c993af62f8aed7fd3dea0c0b365", + [] + ], + "worklet-audio-import-data.https.html.ini": [ + "7106ba01741f20437d5205637b7fc061aedd9bee", + [] + ], + "worklet-audio.https.html.ini": [ + "ffc0472835ad232466b7032f140ae7b36c5308a7", + [] + ], + "worklet-layout-import-data.https.html.ini": [ + "c2e967c07d50a5faaa4242f916e151dec09c42ee", + [] + ], + "worklet-layout.https.html.ini": [ + "6b37b1f2d80829a934d8657bd161272a789e8913", + [] + ], + "worklet-paint-import-data.https.html.ini": [ + "99e7c631dbb286f95287ef6a2de017d9f5cd8578", + [] + ], + "worklet-paint.https.html.ini": [ + "25c881d440a9945552a65406a068ee316a5758ca", + [] + ], + "xhr.https.html.ini": [ + "1d0366810de9f5a50e3144136723a37f78980271", [] ] }, "upgrade": { + "fetch.https.html.ini": [ + "22d0f21a24a89f93b3a647865a7b31624f508339", + [] + ], + "iframe-tag.https.html.ini": [ + "7a4c392bb0d5abae72b90ab034d9b22782bbaaab", + [] + ], + "img-tag.https.html.ini": [ + "075fc7cf7a479e2758bad45e5314535b9bdff527", + [] + ], "sharedworker-classic.https-expected.txt": [ "4e2784327c2db2380eef715a23b394639f133e31", [] ], "sharedworker-classic.https.html.ini": [ - "366f6a93a2657d3276e10cc9b10f146de16161fe", + "949fb52541292703e363b65687d808ac119dc492", + [] + ], + "sharedworker-import-data.https.html.ini": [ + "54430fb8d7cbe40d08df202c351b54da4168941e", + [] + ], + "sharedworker-import.https.html.ini": [ + "c14c5a9cd622c5bca0ea01def2570f6fc4e4ea7a", [] ], "sharedworker-module.https-expected.txt": [ @@ -419842,7 +420447,11 @@ [] ], "sharedworker-module.https.html.ini": [ - "1abf20f789dc0251159a9749ff457792c9608459", + "fe36f8d1bdcc8572473d3e075d57d23edfe52fc3", + [] + ], + "websocket.https.html.ini": [ + "cb17ba5af7560ee808c1752edb0c0f0022349803", [] ], "worker-classic.https-expected.txt": [ @@ -419850,7 +420459,15 @@ [] ], "worker-classic.https.html.ini": [ - "511ada70dfc52b0c67f19c605b8e454246c7135a", + "0971103700e8addc20b75a7f3b5dd3775f418427", + [] + ], + "worker-import-data.https.html.ini": [ + "2edf2fe23e5148dac17d349f821e55159f79219c", + [] + ], + "worker-import.https.html.ini": [ + "ccb9aadd8a0c2b75f79b6ba760c4326a17591e73", [] ], "worker-module.https-expected.txt": [ @@ -419858,15 +420475,43 @@ [] ], "worker-module.https.html.ini": [ - "444fe5c902158be0692f17a9e560ebc422461e30", + "4c6dcf400cb36614adb9a67f998b33a4e0ac8996", [] ], "worklet-animation-import-data.https.html.ini": [ - "848048dd5032ba9b33c6ff56d4691e1f95c77da3", + "450a53cc84563c69374eecd2dca25a399578769f", [] ], "worklet-animation.https.html.ini": [ - "0712a2bfdc748d2a19fb897d706fe951eb9f1a48", + "a9898c95ce05a3ec18268b8603ddec37d1efa9c3", + [] + ], + "worklet-audio-import-data.https.html.ini": [ + "7106ba01741f20437d5205637b7fc061aedd9bee", + [] + ], + "worklet-audio.https.html.ini": [ + "ffc0472835ad232466b7032f140ae7b36c5308a7", + [] + ], + "worklet-layout-import-data.https.html.ini": [ + "c2e967c07d50a5faaa4242f916e151dec09c42ee", + [] + ], + "worklet-layout.https.html.ini": [ + "6b37b1f2d80829a934d8657bd161272a789e8913", + [] + ], + "worklet-paint-import-data.https.html.ini": [ + "99e7c631dbb286f95287ef6a2de017d9f5cd8578", + [] + ], + "worklet-paint.https.html.ini": [ + "25c881d440a9945552a65406a068ee316a5758ca", + [] + ], + "xhr.https.html.ini": [ + "1d0366810de9f5a50e3144136723a37f78980271", [] ] } @@ -422919,7 +423564,7 @@ [] ], "full-cycle-test.https.any.js.ini": [ - "f462775ba35ef9417dc3f39b4a382b6cada0063f", + "c66c645c35531548998b2375a67f9633e20f836c", [] ], "h264.annexb": [ @@ -422963,7 +423608,7 @@ [] ], "reconfiguring-encoder.https.any.js.ini": [ - "9bce848d86f0aef22bc2a107e0e64c6c6c6873b2", + "5fc5be3ff029051a0d7d8a0b83e2eb90edd22945", [] ], "serialization.crossAgentCluster.serviceworker.js": [ @@ -423098,14 +423743,6 @@ "985da71a2b6ea4da09f38642752d10e888e2c756", [] ], - "videoFrame-construction.crossOriginSource.sub-expected.txt": [ - "2af2a825437961d91eff5529d733b2a7b786ac8d", - [] - ], - "videoFrame-construction.crossOriginSource.sub.html.ini": [ - "567c92a63704300cd645173c858c4a3f2b49e1f7", - [] - ], "videoFrame-copyTo.crossOriginIsolated.https.any.js.headers": [ "5f8621ef83660c66f0d037ea28fafefb558140f1", [] @@ -590083,7 +590720,7 @@ ] ], "toggleEvent.html": [ - "05e2c11bbd00850ea99d025a38f54f52b1144cb6", + "52c1e756b9f68bc4f1db708c055e167961235c6c", [ null, {}
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/backgrounds/background-003.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/backgrounds/background-003.xht.ini new file mode 100644 index 0000000..8ac9f25 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/backgrounds/background-003.xht.ini
@@ -0,0 +1,3 @@ +[background-003.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/backgrounds/background-101.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/backgrounds/background-101.xht.ini new file mode 100644 index 0000000..b870692 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/backgrounds/background-101.xht.ini
@@ -0,0 +1,3 @@ +[background-101.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/borders/border-bottom-color-039.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/borders/border-bottom-color-039.xht.ini new file mode 100644 index 0000000..a3a4d051 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/borders/border-bottom-color-039.xht.ini
@@ -0,0 +1,3 @@ +[border-bottom-color-039.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/borders/border-left-color-024.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/borders/border-left-color-024.xht.ini new file mode 100644 index 0000000..0cf474d6 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/borders/border-left-color-024.xht.ini
@@ -0,0 +1,3 @@ +[border-left-color-024.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/borders/border-top-color-068.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/borders/border-top-color-068.xht.ini new file mode 100644 index 0000000..7b652b3 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/borders/border-top-color-068.xht.ini
@@ -0,0 +1,3 @@ +[border-top-color-068.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/borders/border-top-color-145.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/borders/border-top-color-145.xht.ini new file mode 100644 index 0000000..f3b7275 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/borders/border-top-color-145.xht.ini
@@ -0,0 +1,3 @@ +[border-top-color-145.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/floats-clear/floats-116.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/floats-clear/floats-116.xht.ini new file mode 100644 index 0000000..52fa53ae --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/floats-clear/floats-116.xht.ini
@@ -0,0 +1,3 @@ +[floats-116.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/linebox/vertical-align-043.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/linebox/vertical-align-043.xht.ini index dc5bc13c33..58c4417e 100644 --- a/third_party/blink/web_tests/external/wpt/css/CSS2/linebox/vertical-align-043.xht.ini +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/linebox/vertical-align-043.xht.ini
@@ -1,3 +1,4 @@ [vertical-align-043.xht] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/normal-flow/block-in-inline-insert-004-ref.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/normal-flow/block-in-inline-insert-004-ref.xht.ini new file mode 100644 index 0000000..48e7a45 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/normal-flow/block-in-inline-insert-004-ref.xht.ini
@@ -0,0 +1,3 @@ +[block-in-inline-insert-004-ref.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/normal-flow/inline-block-replaced-width-001.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/normal-flow/inline-block-replaced-width-001.xht.ini new file mode 100644 index 0000000..669b71e --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/normal-flow/inline-block-replaced-width-001.xht.ini
@@ -0,0 +1,3 @@ +[inline-block-replaced-width-001.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/normal-flow/min-height-percentage-003.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/normal-flow/min-height-percentage-003.xht.ini new file mode 100644 index 0000000..c57ea23 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/normal-flow/min-height-percentage-003.xht.ini
@@ -0,0 +1,3 @@ +[min-height-percentage-003.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/absolute-non-replaced-max-height-006.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/absolute-non-replaced-max-height-006.xht.ini new file mode 100644 index 0000000..ac3ae99 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/absolute-non-replaced-max-height-006.xht.ini
@@ -0,0 +1,3 @@ +[absolute-non-replaced-max-height-006.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/left-032.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/left-032.xht.ini new file mode 100644 index 0000000..eac92ca3 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/left-032.xht.ini
@@ -0,0 +1,3 @@ +[left-032.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/position-applies-to-007.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/position-applies-to-007.xht.ini new file mode 100644 index 0000000..046b443 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/position-applies-to-007.xht.ini
@@ -0,0 +1,3 @@ +[position-applies-to-007.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/top-017.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/top-017.xht.ini index 324d0a6..71836e6 100644 --- a/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/top-017.xht.ini +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/top-017.xht.ini
@@ -1,3 +1,4 @@ [top-017.xht] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/top-065.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/top-065.xht.ini new file mode 100644 index 0000000..8ac6cd6 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/top-065.xht.ini
@@ -0,0 +1,3 @@ +[top-065.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/top-112.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/top-112.xht.ini new file mode 100644 index 0000000..f6528283 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/positioning/top-112.xht.ini
@@ -0,0 +1,3 @@ +[top-112.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/text/letter-spacing-102.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/text/letter-spacing-102.xht.ini new file mode 100644 index 0000000..a79b8ff --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/text/letter-spacing-102.xht.ini
@@ -0,0 +1,3 @@ +[letter-spacing-102.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/CSS2/text/text-indent-overflow-003.xht.ini b/third_party/blink/web_tests/external/wpt/css/CSS2/text/text-indent-overflow-003.xht.ini new file mode 100644 index 0000000..2828fa4 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/CSS2/text/text-indent-overflow-003.xht.ini
@@ -0,0 +1,3 @@ +[text-indent-overflow-003.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-image-centered-with-border-radius.html.ini b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-image-centered-with-border-radius.html.ini index 2156125..5f372ac 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-image-centered-with-border-radius.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-image-centered-with-border-radius.html.ini
@@ -1,5 +1,5 @@ [background-image-centered-with-border-radius.html] expected: - if (product == "content_shell") and (os == "win") and (port == "win11"): FAIL + if (product == "content_shell") and (os == "win"): FAIL if (product == "content_shell") and (os == "linux"): FAIL if product == "chrome": FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-size-011.html.ini b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-size-011.html.ini new file mode 100644 index 0000000..2dba9830 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-size-011.html.ini
@@ -0,0 +1,3 @@ +[background-size-011.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-size-013.html.ini b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-size-013.html.ini new file mode 100644 index 0000000..37704ed --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/background-size-013.html.ini
@@ -0,0 +1,3 @@ +[background-size-013.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-backgrounds/css3-background-size-contain.html.ini b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/css3-background-size-contain.html.ini new file mode 100644 index 0000000..12248d56 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-backgrounds/css3-background-size-contain.html.ini
@@ -0,0 +1,3 @@ +[css3-background-size-contain.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/break-between-avoid-014.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/break-between-avoid-014.html.ini new file mode 100644 index 0000000..3390de4 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/break-between-avoid-014.html.ini
@@ -0,0 +1,3 @@ +[break-between-avoid-014.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/flex-container-fragmentation-004.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/flex-container-fragmentation-004.html.ini index fad8cae..c4594c6 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/flex-container-fragmentation-004.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/flex-container-fragmentation-004.html.ini
@@ -1,3 +1,4 @@ [flex-container-fragmentation-004.html] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/monolithic-overflow-003.tentative.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/monolithic-overflow-003.tentative.html.ini new file mode 100644 index 0000000..d441d9c --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/monolithic-overflow-003.tentative.html.ini
@@ -0,0 +1,3 @@ +[monolithic-overflow-003.tentative.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-column-flex-fragmentation-003.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-column-flex-fragmentation-003.html.ini new file mode 100644 index 0000000..9e8fcdf --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-column-flex-fragmentation-003.html.ini
@@ -0,0 +1,3 @@ +[multi-line-column-flex-fragmentation-003.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-column-flex-fragmentation-009.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-column-flex-fragmentation-009.html.ini new file mode 100644 index 0000000..bff1d2b --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-column-flex-fragmentation-009.html.ini
@@ -0,0 +1,3 @@ +[multi-line-column-flex-fragmentation-009.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-column-flex-fragmentation-025.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-column-flex-fragmentation-025.html.ini new file mode 100644 index 0000000..5374863 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-column-flex-fragmentation-025.html.ini
@@ -0,0 +1,3 @@ +[multi-line-column-flex-fragmentation-025.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-column-flex-fragmentation-027.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-column-flex-fragmentation-027.html.ini index 386a95f..d5b8034 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-column-flex-fragmentation-027.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-column-flex-fragmentation-027.html.ini
@@ -1,3 +1,4 @@ [multi-line-column-flex-fragmentation-027.html] expected: if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-column-flex-fragmentation-045.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-column-flex-fragmentation-045.html.ini index dd3f232..136de70 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-column-flex-fragmentation-045.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-column-flex-fragmentation-045.html.ini
@@ -1,3 +1,4 @@ [multi-line-column-flex-fragmentation-045.html] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-012.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-012.html.ini new file mode 100644 index 0000000..94b535c --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-012.html.ini
@@ -0,0 +1,3 @@ +[multi-line-row-flex-fragmentation-012.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-028.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-028.html.ini new file mode 100644 index 0000000..32e657f5c --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-028.html.ini
@@ -0,0 +1,3 @@ +[multi-line-row-flex-fragmentation-028.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-030.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-030.html.ini new file mode 100644 index 0000000..edd95d3 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-030.html.ini
@@ -0,0 +1,3 @@ +[multi-line-row-flex-fragmentation-030.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-031.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-031.html.ini new file mode 100644 index 0000000..109d995a --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-031.html.ini
@@ -0,0 +1,3 @@ +[multi-line-row-flex-fragmentation-031.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-032.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-032.html.ini new file mode 100644 index 0000000..c6673a93 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-032.html.ini
@@ -0,0 +1,3 @@ +[multi-line-row-flex-fragmentation-032.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-035.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-035.html.ini new file mode 100644 index 0000000..86c887a --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-035.html.ini
@@ -0,0 +1,3 @@ +[multi-line-row-flex-fragmentation-035.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-045.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-045.html.ini new file mode 100644 index 0000000..735f69e0 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/multi-line-row-flex-fragmentation-045.html.ini
@@ -0,0 +1,3 @@ +[multi-line-row-flex-fragmentation-045.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-001.html.ini new file mode 100644 index 0000000..5998a34 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-001.html.ini
@@ -0,0 +1,3 @@ +[single-line-column-flex-fragmentation-001.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-008.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-008.html.ini new file mode 100644 index 0000000..d6f7f882 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-008.html.ini
@@ -0,0 +1,3 @@ +[single-line-column-flex-fragmentation-008.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-009.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-009.html.ini new file mode 100644 index 0000000..b4a73f3c --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-009.html.ini
@@ -0,0 +1,3 @@ +[single-line-column-flex-fragmentation-009.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-010.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-010.html.ini new file mode 100644 index 0000000..8dc7774d --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-010.html.ini
@@ -0,0 +1,3 @@ +[single-line-column-flex-fragmentation-010.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-029.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-029.html.ini new file mode 100644 index 0000000..05d9d00 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-029.html.ini
@@ -0,0 +1,3 @@ +[single-line-column-flex-fragmentation-029.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-035.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-035.html.ini new file mode 100644 index 0000000..a1157e2 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-035.html.ini
@@ -0,0 +1,3 @@ +[single-line-column-flex-fragmentation-035.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-046.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-046.html.ini index c42b8efe..2bb4a6e 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-046.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-column-flex-fragmentation-046.html.ini
@@ -1,3 +1,4 @@ [single-line-column-flex-fragmentation-046.html] expected: if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-row-flex-fragmentation-008.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-row-flex-fragmentation-008.html.ini new file mode 100644 index 0000000..b5c10915 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-row-flex-fragmentation-008.html.ini
@@ -0,0 +1,3 @@ +[single-line-row-flex-fragmentation-008.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-row-flex-fragmentation-016.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-row-flex-fragmentation-016.html.ini new file mode 100644 index 0000000..a9be97a --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/flexbox/single-line-row-flex-fragmentation-016.html.ini
@@ -0,0 +1,3 @@ +[single-line-row-flex-fragmentation-016.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/float-in-self-collapsing-block-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/float-in-self-collapsing-block-001.html.ini index f6005cb..8727e6d 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-break/float-in-self-collapsing-block-001.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-break/float-in-self-collapsing-block-001.html.ini
@@ -1,3 +1,4 @@ [float-in-self-collapsing-block-001.html] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/float-stretching-bfc-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/float-stretching-bfc-001.html.ini index 5e6f651..9175ca38 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-break/float-stretching-bfc-001.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-break/float-stretching-bfc-001.html.ini
@@ -1,3 +1,4 @@ [float-stretching-bfc-001.html] expected: if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/grid/grid-item-fragmentation-012.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/grid/grid-item-fragmentation-012.html.ini new file mode 100644 index 0000000..3f6d141 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/grid/grid-item-fragmentation-012.html.ini
@@ -0,0 +1,3 @@ +[grid-item-fragmentation-012.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/grid/grid-item-fragmentation-028.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/grid/grid-item-fragmentation-028.html.ini new file mode 100644 index 0000000..9854f57 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/grid/grid-item-fragmentation-028.html.ini
@@ -0,0 +1,3 @@ +[grid-item-fragmentation-028.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/grid/grid-item-fragmentation-030.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/grid/grid-item-fragmentation-030.html.ini index 201ebec..fc7d5b6 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-break/grid/grid-item-fragmentation-030.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-break/grid/grid-item-fragmentation-030.html.ini
@@ -1,3 +1,4 @@ [grid-item-fragmentation-030.html] expected: if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/grid/grid-item-fragmentation-037.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/grid/grid-item-fragmentation-037.html.ini index 1771692..7c3dbc5 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-break/grid/grid-item-fragmentation-037.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-break/grid/grid-item-fragmentation-037.html.ini
@@ -1,3 +1,4 @@ [grid-item-fragmentation-037.html] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/grid/grid-item-infinite-expansion.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/grid/grid-item-infinite-expansion.html.ini new file mode 100644 index 0000000..c8abd0da --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/grid/grid-item-infinite-expansion.html.ini
@@ -0,0 +1,3 @@ +[grid-item-infinite-expansion.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/grid/monolithic-overflow-005.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/grid/monolithic-overflow-005.html.ini new file mode 100644 index 0000000..1613c7f --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/grid/monolithic-overflow-005.html.ini
@@ -0,0 +1,3 @@ +[monolithic-overflow-005.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/monolithic-overflow-003.tentative.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/monolithic-overflow-003.tentative.html.ini new file mode 100644 index 0000000..d441d9c --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/monolithic-overflow-003.tentative.html.ini
@@ -0,0 +1,3 @@ +[monolithic-overflow-003.tentative.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-020.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-020.html.ini new file mode 100644 index 0000000..8d111f87 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-020.html.ini
@@ -0,0 +1,3 @@ +[out-of-flow-in-multicolumn-020.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-048.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-048.html.ini new file mode 100644 index 0000000..2fc374a --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-048.html.ini
@@ -0,0 +1,3 @@ +[out-of-flow-in-multicolumn-048.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-082.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-082.html.ini new file mode 100644 index 0000000..a9436a3 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-082.html.ini
@@ -0,0 +1,3 @@ +[out-of-flow-in-multicolumn-082.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-084.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-084.html.ini new file mode 100644 index 0000000..02f43ab --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-084.html.ini
@@ -0,0 +1,3 @@ +[out-of-flow-in-multicolumn-084.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-088.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-088.html.ini new file mode 100644 index 0000000..13b66ea --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/out-of-flow-in-multicolumn-088.html.ini
@@ -0,0 +1,3 @@ +[out-of-flow-in-multicolumn-088.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/overflow-clip-011.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/overflow-clip-011.html.ini new file mode 100644 index 0000000..53f20ae --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/overflow-clip-011.html.ini
@@ -0,0 +1,3 @@ +[overflow-clip-011.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/overflow-clip-014.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/overflow-clip-014.html.ini new file mode 100644 index 0000000..b83d8db --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/overflow-clip-014.html.ini
@@ -0,0 +1,3 @@ +[overflow-clip-014.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/table/break-avoidance-006.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/table/break-avoidance-006.html.ini new file mode 100644 index 0000000..f54d838 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/table/break-avoidance-006.html.ini
@@ -0,0 +1,3 @@ +[break-avoidance-006.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/table/monolithic-overflow-002.tentative.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/table/monolithic-overflow-002.tentative.html.ini index 48b2296..fa4ac67e 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-break/table/monolithic-overflow-002.tentative.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-break/table/monolithic-overflow-002.tentative.html.ini
@@ -1,4 +1,5 @@ [monolithic-overflow-002.tentative.html] expected: - if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-001.tentative.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-001.tentative.html.ini index b8f90da1..19e1773 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-001.tentative.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-001.tentative.html.ini
@@ -1,3 +1,4 @@ [repeated-section-in-clipped-overflow-001.tentative.html] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/table/table-cell-expansion-005.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/table/table-cell-expansion-005.html.ini index 2e234e7..6b7dcba 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-break/table/table-cell-expansion-005.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-break/table/table-cell-expansion-005.html.ini
@@ -1,3 +1,4 @@ [table-cell-expansion-005.html] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/table/table-rowspan-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/table/table-rowspan-001.html.ini new file mode 100644 index 0000000..19f1924 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/table/table-rowspan-001.html.ini
@@ -0,0 +1,3 @@ +[table-rowspan-001.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-break/tall-line-in-short-fragmentainer-002.html.ini b/third_party/blink/web_tests/external/wpt/css/css-break/tall-line-in-short-fragmentainer-002.html.ini new file mode 100644 index 0000000..497ab25d --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-break/tall-line-in-short-fragmentainer-002.html.ini
@@ -0,0 +1,3 @@ +[tall-line-in-short-fragmentainer-002.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color/border-left-color.xht.ini b/third_party/blink/web_tests/external/wpt/css/css-color/border-left-color.xht.ini new file mode 100644 index 0000000..0a280dc --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-color/border-left-color.xht.ini
@@ -0,0 +1,3 @@ +[border-left-color.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color/deprecated-sameas-002.html.ini b/third_party/blink/web_tests/external/wpt/css/css-color/deprecated-sameas-002.html.ini new file mode 100644 index 0000000..588d180b --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-color/deprecated-sameas-002.html.ini
@@ -0,0 +1,3 @@ +[deprecated-sameas-002.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color/deprecated-sameas-012.html.ini b/third_party/blink/web_tests/external/wpt/css/css-color/deprecated-sameas-012.html.ini new file mode 100644 index 0000000..cad1437 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-color/deprecated-sameas-012.html.ini
@@ -0,0 +1,3 @@ +[deprecated-sameas-012.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-layout-005.html.ini b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-layout-005.html.ini new file mode 100644 index 0000000..43080e0 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-layout-005.html.ini
@@ -0,0 +1,3 @@ +[contain-layout-005.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-layout-014.html.ini b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-layout-014.html.ini index 9769f6d..c136d4a5 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-layout-014.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-layout-014.html.ini
@@ -1,3 +1,4 @@ [contain-layout-014.html] expected: if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-paint-009.html.ini b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-paint-009.html.ini new file mode 100644 index 0000000..1cab18f4 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-paint-009.html.ini
@@ -0,0 +1,3 @@ +[contain-paint-009.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-paint-change-opacity.html.ini b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-paint-change-opacity.html.ini new file mode 100644 index 0000000..c3aa51e --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-paint-change-opacity.html.ini
@@ -0,0 +1,3 @@ +[contain-paint-change-opacity.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-select-elem-004.html.ini b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-select-elem-004.html.ini new file mode 100644 index 0000000..6b447ad9 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-contain/contain-size-select-elem-004.html.ini
@@ -0,0 +1,3 @@ +[contain-size-select-elem-004.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-counter-styles/simp-chinese-formal/counter-simp-chinese-formal.html.ini b/third_party/blink/web_tests/external/wpt/css/css-counter-styles/simp-chinese-formal/counter-simp-chinese-formal.html.ini index cb586c3..288b4ba6 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-counter-styles/simp-chinese-formal/counter-simp-chinese-formal.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-counter-styles/simp-chinese-formal/counter-simp-chinese-formal.html.ini
@@ -1,3 +1,4 @@ [counter-simp-chinese-formal.html] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-counter-styles/simp-chinese-informal/css3-counter-styles-075.html.ini b/third_party/blink/web_tests/external/wpt/css/css-counter-styles/simp-chinese-informal/css3-counter-styles-075.html.ini new file mode 100644 index 0000000..65b0776 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-counter-styles/simp-chinese-informal/css3-counter-styles-075.html.ini
@@ -0,0 +1,3 @@ +[css3-counter-styles-075.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-display/display-change-object-iframe.html.ini b/third_party/blink/web_tests/external/wpt/css/css-display/display-change-object-iframe.html.ini new file mode 100644 index 0000000..8f240249 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-display/display-change-object-iframe.html.ini
@@ -0,0 +1,3 @@ +[display-change-object-iframe.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/abspos-autopos-htb-ltr.html.ini b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/abspos-autopos-htb-ltr.html.ini index 317d329..64d7237 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/abspos-autopos-htb-ltr.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/abspos-autopos-htb-ltr.html.ini
@@ -1,3 +1,4 @@ [abspos-autopos-htb-ltr.html] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/position-absolute-008.html.ini b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/position-absolute-008.html.ini new file mode 100644 index 0000000..965688e --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/abspos/position-absolute-008.html.ini
@@ -0,0 +1,3 @@ +[position-absolute-008.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flex-basis-003.html.ini b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flex-basis-003.html.ini new file mode 100644 index 0000000..2aca1f3 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flex-basis-003.html.ini
@@ -0,0 +1,3 @@ +[flex-basis-003.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flex-minimum-width-flex-items-001.xht.ini b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flex-minimum-width-flex-items-001.xht.ini new file mode 100644 index 0000000..26ea4db --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flex-minimum-width-flex-items-001.xht.ini
@@ -0,0 +1,3 @@ +[flex-minimum-width-flex-items-001.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flex-wrap-005.html.ini b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flex-wrap-005.html.ini new file mode 100644 index 0000000..d75c54f --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flex-wrap-005.html.ini
@@ -0,0 +1,3 @@ +[flex-wrap-005.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-definite-sizes-005.html.ini b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-definite-sizes-005.html.ini index b958ac2e..a550d0d 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-definite-sizes-005.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-definite-sizes-005.html.ini
@@ -1,3 +1,4 @@ [flexbox-definite-sizes-005.html] expected: if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-min-width-auto-006.html.ini b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-min-width-auto-006.html.ini new file mode 100644 index 0000000..5135e7b --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox-min-width-auto-006.html.ini
@@ -0,0 +1,3 @@ +[flexbox-min-width-auto-006.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_item-top-float.html.ini b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_item-top-float.html.ini new file mode 100644 index 0000000..e70cbdb5 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_item-top-float.html.ini
@@ -0,0 +1,3 @@ +[flexbox_item-top-float.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_rowspan-overflow.html.ini b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_rowspan-overflow.html.ini new file mode 100644 index 0000000..dd49bcc --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/flexbox_rowspan-overflow.html.ini
@@ -0,0 +1,3 @@ +[flexbox_rowspan-overflow.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/gap-012.html.ini b/third_party/blink/web_tests/external/wpt/css/css-flexbox/gap-012.html.ini new file mode 100644 index 0000000..69f70f3 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/gap-012.html.ini
@@ -0,0 +1,3 @@ +[gap-012.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/intrinsic-size/row-wrap-002.tentative.html.ini b/third_party/blink/web_tests/external/wpt/css/css-flexbox/intrinsic-size/row-wrap-002.tentative.html.ini new file mode 100644 index 0000000..e7a499b14 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/intrinsic-size/row-wrap-002.tentative.html.ini
@@ -0,0 +1,3 @@ +[row-wrap-002.tentative.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/table-as-item-flex-cross-size.html.ini b/third_party/blink/web_tests/external/wpt/css/css-flexbox/table-as-item-flex-cross-size.html.ini index 427872b..d5be25c 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-flexbox/table-as-item-flex-cross-size.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/table-as-item-flex-cross-size.html.ini
@@ -1,3 +1,4 @@ [table-as-item-flex-cross-size.html] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-baseline-align-cycles-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-baseline-align-cycles-001.html.ini new file mode 100644 index 0000000..df56c15 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-baseline-align-cycles-001.html.ini
@@ -0,0 +1,3 @@ +[grid-baseline-align-cycles-001.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4.html.ini b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4.html.ini index 7c884fff..42434c5 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/grid-item-no-aspect-ratio-stretch-4.html.ini
@@ -1,4 +1,5 @@ [grid-item-no-aspect-ratio-stretch-4.html] expected: if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL if (product == "content_shell") and (os == "win") and (port == "win11"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-009.html.ini b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-009.html.ini new file mode 100644 index 0000000..b132927 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-009.html.ini
@@ -0,0 +1,3 @@ +[grid-self-baseline-changes-grid-area-size-009.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-items/grid-item-containing-block-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-items/grid-item-containing-block-001.html.ini new file mode 100644 index 0000000..e7e168b --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-items/grid-item-containing-block-001.html.ini
@@ -0,0 +1,3 @@ +[grid-item-containing-block-001.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-items/grid-items-percentage-paddings-013.html.ini b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-items/grid-items-percentage-paddings-013.html.ini index 692c755..57c737c 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-items/grid-items-percentage-paddings-013.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-items/grid-items-percentage-paddings-013.html.ini
@@ -1,3 +1,4 @@ [grid-items-percentage-paddings-013.html] expected: if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-items/grid-minimum-size-grid-items-015.html.ini b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-items/grid-minimum-size-grid-items-015.html.ini new file mode 100644 index 0000000..bf3b406c --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-items/grid-minimum-size-grid-items-015.html.ini
@@ -0,0 +1,3 @@ +[grid-minimum-size-grid-items-015.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/grid-items/replaced-element-010.html.ini b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-items/replaced-element-010.html.ini new file mode 100644 index 0000000..f098f76 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/grid-items/replaced-element-010.html.ini
@@ -0,0 +1,3 @@ +[replaced-element-010.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-005.html.ini b/third_party/blink/web_tests/external/wpt/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-005.html.ini new file mode 100644 index 0000000..9910918 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-005.html.ini
@@ -0,0 +1,3 @@ +[grid-as-flex-item-should-not-shrink-to-fit-005.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-007.html.ini b/third_party/blink/web_tests/external/wpt/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-007.html.ini index b25a6400..87128e5 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-007.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-007.html.ini
@@ -1,4 +1,5 @@ [grid-as-flex-item-should-not-shrink-to-fit-007.html] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/abspos-autopos-contained-by-viewport-000.html.ini b/third_party/blink/web_tests/external/wpt/css/css-multicol/abspos-autopos-contained-by-viewport-000.html.ini new file mode 100644 index 0000000..d3c5d68 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/abspos-autopos-contained-by-viewport-000.html.ini
@@ -0,0 +1,3 @@ +[abspos-autopos-contained-by-viewport-000.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/balance-break-avoidance-000.html.ini b/third_party/blink/web_tests/external/wpt/css/css-multicol/balance-break-avoidance-000.html.ini new file mode 100644 index 0000000..4c71ed9e --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/balance-break-avoidance-000.html.ini
@@ -0,0 +1,3 @@ +[balance-break-avoidance-000.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/column-count-used-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-multicol/column-count-used-001.html.ini new file mode 100644 index 0000000..b366c5d --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/column-count-used-001.html.ini
@@ -0,0 +1,3 @@ +[column-count-used-001.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/float-and-block.html.ini b/third_party/blink/web_tests/external/wpt/css/css-multicol/float-and-block.html.ini new file mode 100644 index 0000000..0559ae98 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/float-and-block.html.ini
@@ -0,0 +1,3 @@ +[float-and-block.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-fill-balance-005.html.ini b/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-fill-balance-005.html.ini new file mode 100644 index 0000000..f4d2f1d --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-fill-balance-005.html.ini
@@ -0,0 +1,3 @@ +[multicol-fill-balance-005.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-span-all-list-item-002.html.ini b/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-span-all-list-item-002.html.ini new file mode 100644 index 0000000..d013a03 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/multicol-span-all-list-item-002.html.ini
@@ -0,0 +1,3 @@ +[multicol-span-all-list-item-002.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/remove-child-in-strict-containment-also-spanner.html.ini b/third_party/blink/web_tests/external/wpt/css/css-multicol/remove-child-in-strict-containment-also-spanner.html.ini new file mode 100644 index 0000000..d4ee5e4 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/remove-child-in-strict-containment-also-spanner.html.ini
@@ -0,0 +1,3 @@ +[remove-child-in-strict-containment-also-spanner.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-multicol/table/table-cell-multicol-nested-002.html.ini b/third_party/blink/web_tests/external/wpt/css/css-multicol/table/table-cell-multicol-nested-002.html.ini new file mode 100644 index 0000000..5b99a8f --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-multicol/table/table-cell-multicol-nested-002.html.ini
@@ -0,0 +1,3 @@ +[table-cell-multicol-nested-002.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-position/sticky/position-sticky-flex-item-003.html.ini b/third_party/blink/web_tests/external/wpt/css/css-position/sticky/position-sticky-flex-item-003.html.ini new file mode 100644 index 0000000..c8cb823 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-position/sticky/position-sticky-flex-item-003.html.ini
@@ -0,0 +1,3 @@ +[position-sticky-flex-item-003.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-pseudo/highlight-paired-cascade-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-pseudo/highlight-paired-cascade-001.html.ini new file mode 100644 index 0000000..1323816 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-pseudo/highlight-paired-cascade-001.html.ini
@@ -0,0 +1,3 @@ +[highlight-paired-cascade-001.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ruby/ruby-dynamic-insertion-002.html.ini b/third_party/blink/web_tests/external/wpt/css/css-ruby/ruby-dynamic-insertion-002.html.ini new file mode 100644 index 0000000..f257d97 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-ruby/ruby-dynamic-insertion-002.html.ini
@@ -0,0 +1,3 @@ +[ruby-dynamic-insertion-002.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-scroll-snap/input/keyboard.html.ini b/third_party/blink/web_tests/external/wpt/css/css-scroll-snap/input/keyboard.html.ini index 1c0fc1dc5..d3a1a4a 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-scroll-snap/input/keyboard.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-scroll-snap/input/keyboard.html.ini
@@ -1,8 +1,10 @@ [keyboard.html] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13"): [TIMEOUT, OK] if (product == "content_shell") and (os == "mac") and (port == "mac12"): TIMEOUT [Snaps to bottom-left after pressing ArrowDown] expected: if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-scroll-snap/scroll-snap-root-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-scroll-snap/scroll-snap-root-001.html.ini new file mode 100644 index 0000000..68c48dc6 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-scroll-snap/scroll-snap-root-001.html.ini
@@ -0,0 +1,3 @@ +[scroll-snap-root-001.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-writing-mode-000.html.ini b/third_party/blink/web_tests/external/wpt/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-writing-mode-000.html.ini new file mode 100644 index 0000000..7bc3b8f --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-scroll-snap/snap-after-initial-layout/scroll-snap-writing-mode-000.html.ini
@@ -0,0 +1,3 @@ +[scroll-snap-writing-mode-000.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-017.html.ini b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-017.html.ini new file mode 100644 index 0000000..cf45f612 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/abspos-017.html.ini
@@ -0,0 +1,4 @@ +[abspos-017.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/grid-aspect-ratio-005.html.ini b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/grid-aspect-ratio-005.html.ini new file mode 100644 index 0000000..7d2d095 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/grid-aspect-ratio-005.html.ini
@@ -0,0 +1,3 @@ +[grid-aspect-ratio-005.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-006.html.ini b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-006.html.ini new file mode 100644 index 0000000..b3a4e32 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/intrinsic-size-006.html.ini
@@ -0,0 +1,3 @@ +[intrinsic-size-006.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-006.html.ini b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-006.html.ini new file mode 100644 index 0000000..7d6b5b3 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-006.html.ini
@@ -0,0 +1,3 @@ +[replaced-element-006.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-025.html.ini b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-025.html.ini new file mode 100644 index 0000000..a7913e3f --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/replaced-element-025.html.ini
@@ -0,0 +1,3 @@ +[replaced-element-025.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/zero-or-infinity-008.html.ini b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/zero-or-infinity-008.html.ini new file mode 100644 index 0000000..b3dcbf5 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-sizing/aspect-ratio/zero-or-infinity-008.html.ini
@@ -0,0 +1,3 @@ +[zero-or-infinity-008.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-sizing/block-size-with-min-or-max-content-table-1a.html.ini b/third_party/blink/web_tests/external/wpt/css/css-sizing/block-size-with-min-or-max-content-table-1a.html.ini new file mode 100644 index 0000000..ceffb3b --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-sizing/block-size-with-min-or-max-content-table-1a.html.ini
@@ -0,0 +1,3 @@ +[block-size-with-min-or-max-content-table-1a.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-style-attr/style-attr-braces-002.xht.ini b/third_party/blink/web_tests/external/wpt/css/css-style-attr/style-attr-braces-002.xht.ini new file mode 100644 index 0000000..3e2ffca --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-style-attr/style-attr-braces-002.xht.ini
@@ -0,0 +1,3 @@ +[style-attr-braces-002.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-003.html.ini b/third_party/blink/web_tests/external/wpt/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-003.html.ini new file mode 100644 index 0000000..e93d629 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-003.html.ini
@@ -0,0 +1,3 @@ +[percentage-sizing-of-table-cell-children-003.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-tables/html-display-table.html.ini b/third_party/blink/web_tests/external/wpt/css/css-tables/html-display-table.html.ini index 7bc7dcaf..0b4aa05a 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-tables/html-display-table.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-tables/html-display-table.html.ini
@@ -1,3 +1,4 @@ [html-display-table.html] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/text-align/text-align-start-009.html.ini b/third_party/blink/web_tests/external/wpt/css/css-text/text-align/text-align-start-009.html.ini new file mode 100644 index 0000000..36ef662 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-text/text-align/text-align-start-009.html.ini
@@ -0,0 +1,3 @@ +[text-align-start-009.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-intrinsic-size-014.html.ini b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-intrinsic-size-014.html.ini index f188960..6076bd5 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-intrinsic-size-014.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-intrinsic-size-014.html.ini
@@ -1,3 +1,4 @@ [white-space-intrinsic-size-014.html] expected: if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-intrinsic-size-016.html.ini b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-intrinsic-size-016.html.ini new file mode 100644 index 0000000..1174d7784 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-intrinsic-size-016.html.ini
@@ -0,0 +1,3 @@ +[white-space-intrinsic-size-016.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-015.html.ini b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-015.html.ini index 8f3b8df46..f15265ba 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-015.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-015.html.ini
@@ -1,4 +1,5 @@ [white-space-pre-wrap-trailing-spaces-015.html] expected: - if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-transforms/document-styles/svg-document-styles-004.html.ini b/third_party/blink/web_tests/external/wpt/css/css-transforms/document-styles/svg-document-styles-004.html.ini new file mode 100644 index 0000000..c3052ae6 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-transforms/document-styles/svg-document-styles-004.html.ini
@@ -0,0 +1,3 @@ +[svg-document-styles-004.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-transforms/huge-length-tiny-scale.html.ini b/third_party/blink/web_tests/external/wpt/css/css-transforms/huge-length-tiny-scale.html.ini new file mode 100644 index 0000000..1f51379 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-transforms/huge-length-tiny-scale.html.ini
@@ -0,0 +1,3 @@ +[huge-length-tiny-scale.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-transforms/scale/svg-scale-011.html.ini b/third_party/blink/web_tests/external/wpt/css/css-transforms/scale/svg-scale-011.html.ini new file mode 100644 index 0000000..2e2f136 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-transforms/scale/svg-scale-011.html.ini
@@ -0,0 +1,3 @@ +[svg-scale-011.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-transforms/transform-list-separation/svg-transform-list-separations-008.html.ini b/third_party/blink/web_tests/external/wpt/css/css-transforms/transform-list-separation/svg-transform-list-separations-008.html.ini new file mode 100644 index 0000000..537f53b --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-transforms/transform-list-separation/svg-transform-list-separations-008.html.ini
@@ -0,0 +1,3 @@ +[svg-transform-list-separations-008.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-transitions/CSSTransition-effect.tentative.html.ini b/third_party/blink/web_tests/external/wpt/css/css-transitions/CSSTransition-effect.tentative.html.ini index d1523bf..033a019 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-transitions/CSSTransition-effect.tentative.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-transitions/CSSTransition-effect.tentative.html.ini
@@ -1,4 +1,5 @@ [CSSTransition-effect.tentative.html] [After setting a transition's effect to null, a new transition can be started] expected: - if (product == "content_shell") and (os == "mac") and (port == "mac11"): [FAIL, PASS] + if (product == "content_shell") and (os == "mac") and (port == "mac12"): [FAIL, PASS] + if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-attachment-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-attachment-001.html.ini index 89cf202..7b12d3fb 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-attachment-001.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-attachment-001.html.ini
@@ -1,6 +1,7 @@ [kind-of-widget-fallback-button-background-attachment-001.html] expected: - if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL if (product == "content_shell") and (os == "win") and (port == "win10.20h2"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-position-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-position-001.html.ini index 005100b..428acbb 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-position-001.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-position-001.html.ini
@@ -1,3 +1,4 @@ [kind-of-widget-fallback-button-background-position-001.html] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-size-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-size-001.html.ini index 47cade4b..48ad78d 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-size-001.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-background-size-001.html.ini
@@ -1,4 +1,5 @@ [kind-of-widget-fallback-button-background-size-001.html] expected: if (product == "content_shell") and (os == "win") and (port == "win11"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL if (product == "content_shell") and (os == "linux"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-end-color-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-end-color-001.html.ini index 314266b3..7089c29 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-end-color-001.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-block-end-color-001.html.ini
@@ -1,4 +1,5 @@ [kind-of-widget-fallback-button-border-block-end-color-001.html] expected: if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL if (product == "content_shell") and (os == "linux"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-right-radius-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-right-radius-001.html.ini index 758c3d0..75d78e85 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-right-radius-001.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-bottom-right-radius-001.html.ini
@@ -1,3 +1,4 @@ [kind-of-widget-fallback-button-border-bottom-right-radius-001.html] expected: if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL + if (product == "content_shell") and (os == "linux"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-end-start-radius-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-end-start-radius-001.html.ini index fc7094f..feff70a 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-end-start-radius-001.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-end-start-radius-001.html.ini
@@ -1,6 +1,7 @@ [kind-of-widget-fallback-button-border-end-start-radius-001.html] expected: - if (product == "content_shell") and (os == "win") and (port == "win11"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL + if (product == "content_shell") and (os == "win") and (port == "win11"): FAIL + if (product == "content_shell") and (os == "linux"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-right-color-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-right-color-001.html.ini new file mode 100644 index 0000000..7f27366 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-button-border-right-color-001.html.ini
@@ -0,0 +1,3 @@ +[kind-of-widget-fallback-button-border-right-color-001.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-clip-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-clip-001.html.ini new file mode 100644 index 0000000..07d9da9 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-button-background-clip-001.html.ini
@@ -0,0 +1,3 @@ +[kind-of-widget-fallback-input-button-background-clip-001.html] + expected: + if (product == "content_shell") and (os == "linux"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-clip-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-clip-001.html.ini index 13a9640d..045c8c8c 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-clip-001.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-background-clip-001.html.ini
@@ -1,5 +1,6 @@ [kind-of-widget-fallback-input-search-background-clip-001.html] expected: - if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL if (product == "content_shell") and (os == "linux"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-width-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-width-001.html.ini index 75dff5b..5c61ffa 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-width-001.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-border-bottom-width-001.html.ini
@@ -1,4 +1,5 @@ [kind-of-widget-fallback-input-search-border-bottom-width-001.html] expected: - if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL if (product == "content_shell") and (os == "win") and (port == "win11"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL + if (product == "content_shell") and (os == "linux"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-style-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-style-001.html.ini index 9274ff8b..cccc1816 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-style-001.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-search-text-border-bottom-style-001.html.ini
@@ -1,3 +1,4 @@ [kind-of-widget-fallback-input-search-text-border-bottom-style-001.html] expected: + if (product == "content_shell") and (os == "linux"): FAIL if (product == "content_shell") and (os == "win"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-width-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-width-001.html.ini index ef5ce44..3bc72f0 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-width-001.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-input-text-border-bottom-width-001.html.ini
@@ -1,3 +1,4 @@ [kind-of-widget-fallback-input-text-border-bottom-width-001.html] expected: + if (product == "content_shell") and (os == "win") and (port == "win11"): FAIL if (product == "content_shell") and (os == "linux"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-slice-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-slice-001.html.ini index 600abb6..30b5e74 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-slice-001.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-image-slice-001.html.ini
@@ -3,3 +3,4 @@ if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL if (product == "content_shell") and (os == "win"): FAIL + if (product == "content_shell") and (os == "linux"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-right-color-001.html.ini b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-right-color-001.html.ini index 5b35846f..db53d5b 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-right-color-001.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-textarea-border-right-color-001.html.ini
@@ -1,6 +1,7 @@ [kind-of-widget-fallback-textarea-border-right-color-001.html] expected: + if (product == "content_shell") and (os == "win") and (port == "win10.20h2"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL - if (product == "content_shell") and (os == "win") and (port == "win10.20h2"): FAIL if (product == "content_shell") and (os == "linux"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/abs-pos-non-replaced-icb-vrl-020.xht.ini b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/abs-pos-non-replaced-icb-vrl-020.xht.ini new file mode 100644 index 0000000..e9bb6cd --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/abs-pos-non-replaced-icb-vrl-020.xht.ini
@@ -0,0 +1,3 @@ +[abs-pos-non-replaced-icb-vrl-020.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/abs-pos-non-replaced-vrl-144.xht.ini b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/abs-pos-non-replaced-vrl-144.xht.ini new file mode 100644 index 0000000..cfa2efe --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/abs-pos-non-replaced-vrl-144.xht.ini
@@ -0,0 +1,3 @@ +[abs-pos-non-replaced-vrl-144.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/block-flow-direction-vlr-007.xht.ini b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/block-flow-direction-vlr-007.xht.ini new file mode 100644 index 0000000..d831a93 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/block-flow-direction-vlr-007.xht.ini
@@ -0,0 +1,3 @@ +[block-flow-direction-vlr-007.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/border-conflict-element-vlr-013.xht.ini b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/border-conflict-element-vlr-013.xht.ini new file mode 100644 index 0000000..5e955d9e --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/border-conflict-element-vlr-013.xht.ini
@@ -0,0 +1,3 @@ +[border-conflict-element-vlr-013.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/caption-side-vlr-005.xht.ini b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/caption-side-vlr-005.xht.ini index e1cf276b..7f415ff3 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/caption-side-vlr-005.xht.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/caption-side-vlr-005.xht.ini
@@ -1,3 +1,4 @@ [caption-side-vlr-005.xht] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/float-clear-vlr-005.xht.ini b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/float-clear-vlr-005.xht.ini index 58bc954..5191dfc5 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/float-clear-vlr-005.xht.ini +++ b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/float-clear-vlr-005.xht.ini
@@ -1,3 +1,4 @@ [float-clear-vlr-005.xht] expected: if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/margin-collapse-vlr-015.xht.ini b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/margin-collapse-vlr-015.xht.ini new file mode 100644 index 0000000..9a52697 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/margin-collapse-vlr-015.xht.ini
@@ -0,0 +1,3 @@ +[margin-collapse-vlr-015.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/margin-collapse-vrl-008.xht.ini b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/margin-collapse-vrl-008.xht.ini new file mode 100644 index 0000000..a08fc66 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/margin-collapse-vrl-008.xht.ini
@@ -0,0 +1,3 @@ +[margin-collapse-vrl-008.xht] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/orthogonal-root-resize-icb-005.html.ini b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/orthogonal-root-resize-icb-005.html.ini new file mode 100644 index 0000000..d998f54b --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/orthogonal-root-resize-icb-005.html.ini
@@ -0,0 +1,3 @@ +[orthogonal-root-resize-icb-005.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/sizing-orthogonal-percentage-margin-008.html.ini b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/sizing-orthogonal-percentage-margin-008.html.ini new file mode 100644 index 0000000..b2a04312 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/sizing-orthogonal-percentage-margin-008.html.ini
@@ -0,0 +1,3 @@ +[sizing-orthogonal-percentage-margin-008.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/css-writing-modes/writing-mode-vertical-rl-003.htm.ini b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/writing-mode-vertical-rl-003.htm.ini new file mode 100644 index 0000000..e94e49f --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-writing-modes/writing-mode-vertical-rl-003.htm.ini
@@ -0,0 +1,3 @@ +[writing-mode-vertical-rl-003.htm] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/filter-effects/drop-shadow-clipped-001.html.ini b/third_party/blink/web_tests/external/wpt/css/filter-effects/drop-shadow-clipped-001.html.ini index a8fb5aa1..09da5871 100644 --- a/third_party/blink/web_tests/external/wpt/css/filter-effects/drop-shadow-clipped-001.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/filter-effects/drop-shadow-clipped-001.html.ini
@@ -1,3 +1,4 @@ [drop-shadow-clipped-001.html] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/mediaqueries/aspect-ratio-006.html.ini b/third_party/blink/web_tests/external/wpt/css/mediaqueries/aspect-ratio-006.html.ini new file mode 100644 index 0000000..bb72473 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/mediaqueries/aspect-ratio-006.html.ini
@@ -0,0 +1,3 @@ +[aspect-ratio-006.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/mediaqueries/mq-invalid-media-type-002.html.ini b/third_party/blink/web_tests/external/wpt/css/mediaqueries/mq-invalid-media-type-002.html.ini index 6e21e337..da189a0c 100644 --- a/third_party/blink/web_tests/external/wpt/css/mediaqueries/mq-invalid-media-type-002.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/mediaqueries/mq-invalid-media-type-002.html.ini
@@ -1,3 +1,4 @@ [mq-invalid-media-type-002.html] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/mediaqueries/mq-negative-range-001.html.ini b/third_party/blink/web_tests/external/wpt/css/mediaqueries/mq-negative-range-001.html.ini new file mode 100644 index 0000000..22d575a --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/mediaqueries/mq-negative-range-001.html.ini
@@ -0,0 +1,3 @@ +[mq-negative-range-001.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/mediaqueries/mq-negative-range-002.html.ini b/third_party/blink/web_tests/external/wpt/css/mediaqueries/mq-negative-range-002.html.ini new file mode 100644 index 0000000..54979a91 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/mediaqueries/mq-negative-range-002.html.ini
@@ -0,0 +1,3 @@ +[mq-negative-range-002.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/mediaqueries/negation-001.html.ini b/third_party/blink/web_tests/external/wpt/css/mediaqueries/negation-001.html.ini index e50126de..289fd3f 100644 --- a/third_party/blink/web_tests/external/wpt/css/mediaqueries/negation-001.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/mediaqueries/negation-001.html.ini
@@ -1,3 +1,4 @@ [negation-001.html] expected: if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/selectors/dir-selector-change-002.html.ini b/third_party/blink/web_tests/external/wpt/css/selectors/dir-selector-change-002.html.ini index 87ac1f0..333de78 100644 --- a/third_party/blink/web_tests/external/wpt/css/selectors/dir-selector-change-002.html.ini +++ b/third_party/blink/web_tests/external/wpt/css/selectors/dir-selector-change-002.html.ini
@@ -1,3 +1,4 @@ [dir-selector-change-002.html] expected: if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/css/selectors/invalidation/lang-pseudo-class-in-has-document-element.html.ini b/third_party/blink/web_tests/external/wpt/css/selectors/invalidation/lang-pseudo-class-in-has-document-element.html.ini new file mode 100644 index 0000000..74bb88e --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/selectors/invalidation/lang-pseudo-class-in-has-document-element.html.ini
@@ -0,0 +1,3 @@ +[lang-pseudo-class-in-has-document-element.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/fetch/origin/assorted.window.js.ini b/third_party/blink/web_tests/external/wpt/fetch/origin/assorted.window.js.ini index a7fc3f7..375b7ff 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/origin/assorted.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/fetch/origin/assorted.window.js.ini
@@ -1,4 +1,6 @@ [assorted.window.html] + expected: + if (product == "chrome") and not debug: CRASH [Origin header and POST cross-origin fetch no-cors mode with Referrer-Policy no-referrer] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/iframe.tentative.https.window.js.ini b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/iframe.tentative.https.window.js.ini index cce3913..1592b2c 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/iframe.tentative.https.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/iframe.tentative.https.window.js.ini
@@ -35,6 +35,8 @@ [iframe.tentative.https.window.html?include=grandparent] + expected: + if (product == "chrome") and not debug: CRASH [public to local, grandparent navigates: failure.] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/iframe.tentative.window.js.ini b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/iframe.tentative.window.js.ini index 4da7fef..605ae0c 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/iframe.tentative.window.js.ini +++ b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/iframe.tentative.window.js.ini
@@ -1,6 +1,6 @@ [iframe.tentative.window.html] expected: - if (product == "content_shell") and (os == "linux") and (flag_specific == "disable-site-isolation-trials"): [OK, TIMEOUT] + if (product == "chrome") and not debug: CRASH [private to local: failure.] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/windows/resources/window-name.sub.html b/third_party/blink/web_tests/external/wpt/html/browsers/windows/resources/window-name.sub.html index 5bb8ebd..9255ba3 100644 --- a/third_party/blink/web_tests/external/wpt/html/browsers/windows/resources/window-name.sub.html +++ b/third_party/blink/web_tests/external/wpt/html/browsers/windows/resources/window-name.sub.html
@@ -2,7 +2,7 @@ <title>popup helper</title> <script> - const search = decodeURIComponent(window.location.search.replace("?", "")); +const search = decodeURIComponent(window.location.search.replace("?", "")); const steps = search.split("|"); async function proceedTest() {
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow-aspect-ratio.html.ini b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow-aspect-ratio.html.ini new file mode 100644 index 0000000..10cfc0b --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow-aspect-ratio.html.ini
@@ -0,0 +1,3 @@ +[image-loading-lazy-slow-aspect-ratio.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html.ini b/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html.ini index 976dcd03..ecbb6f9 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html.ini
@@ -1,2 +1,4 @@ [selectlist-form-state-restore.tentative.html] - expected: ERROR + expected: + if (product == "content_shell") and (os == "win") and (port == "win10.20h2"): [TIMEOUT, ERROR] + ERROR
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-details-element/toggleEvent-expected.txt b/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-details-element/toggleEvent-expected.txt index 85e15d0d..67f86d4 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-details-element/toggleEvent-expected.txt +++ b/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-details-element/toggleEvent-expected.txt
@@ -1,13 +1,13 @@ This is a testharness.js-based test. FAIL Adding open to 'details' should fire a toggle event at the 'details' element, with 'oldState: closed' and 'newState: open' assert_equals: expected (string) "closed" but got (undefined) undefined -FAIL Removing open from 'details' should fire a toggle event at the 'details' element, with 'oldState: open' and 'newState: closed' assert_equals: Prototype of toggle event is ToggleEvent.prototype expected object "[object ToggleEvent]" but got object "[object Event]" +FAIL Adding open to 'details' and then removing open from that 'details' should fire only one toggle event at the 'details' element, with 'oldState: closed' and 'newState: closed' assert_equals: expected (string) "closed" but got (undefined) undefined FAIL Adding open to 'details' (display:none) should fire a toggle event at the 'details' element, with 'oldState: closed' and 'newState: open' assert_equals: expected (string) "closed" but got (undefined) undefined FAIL Adding open to 'details' (no children) should fire a toggle event at the 'details' element, with 'oldState: closed' and 'newState: open' assert_equals: expected (string) "closed" but got (undefined) undefined -PASS Calling open twice on 'details' fires only one toggle event, with 'oldState: closed' and 'newState: open' -FAIL Calling setAttribute('open', '') from 'details' should fire a toggle event at the 'details' element, with 'oldState: closed' and 'newState: open' assert_equals: expected (string) "closed" but got (undefined) undefined -FAIL Calling removeAttribute('open') from 'details' should fire a toggle event at the 'details' element, with 'oldState: open' and 'newState: closed' assert_equals: Prototype of toggle event is ToggleEvent.prototype expected object "[object ToggleEvent]" but got object "[object Event]" -PASS Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element -PASS Setting open=false to closed 'details' element should not fire a toggle event at the 'details' element -FAIL Adding open to 'details' (not in the document) should fire a toggle event at the 'details' element, with 'oldState: closed' and 'newState: open' assert_equals: Prototype of toggle event is ToggleEvent.prototype expected object "[object ToggleEvent]" but got object "[object Event]" +FAIL Adding open to 'details' and then removing open from that 'details' and then again adding open to that 'details' should fire only one toggle event at the 'details' element, with 'oldState: closed' and 'newState: closed' assert_equals: expected (string) "closed" but got (undefined) undefined +FAIL Adding open to 'details' using setAttribute('open', '') should fire a toggle event at the 'details' element, with 'oldState: closed' and 'newState: open' assert_equals: expected (string) "closed" but got (undefined) undefined +FAIL Adding open to 'details' and then calling removeAttribute('open') should fire only one toggle event at the 'details' element, with 'oldState: closed' and 'newState: closed' assert_equals: expected (string) "closed" but got (undefined) undefined +PASS Setting open=true on an opened 'details' element should not fire a toggle event at the 'details' element +PASS Setting open=false on a closed 'details' element should not fire a toggle event at the 'details' element +FAIL Adding open to 'details' (not in the document) should fire a toggle event at the 'details' element, with 'oldState: closed' and 'newState: open' assert_equals: expected (string) "closed" but got (undefined) undefined Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-details-element/toggleEvent.html b/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-details-element/toggleEvent.html index 05e2c11..52c1e75 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-details-element/toggleEvent.html +++ b/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-details-element/toggleEvent.html
@@ -47,14 +47,14 @@ </details> <script> var t1 = async_test("Adding open to 'details' should fire a toggle event at the 'details' element, with 'oldState: closed' and 'newState: open'"), - t2 = async_test("Removing open from 'details' should fire a toggle event at the 'details' element, with 'oldState: open' and 'newState: closed'"), + t2 = async_test("Adding open to 'details' and then removing open from that 'details' should fire only one toggle event at the 'details' element, with 'oldState: closed' and 'newState: closed'"), t3 = async_test("Adding open to 'details' (display:none) should fire a toggle event at the 'details' element, with 'oldState: closed' and 'newState: open'"), t4 = async_test("Adding open to 'details' (no children) should fire a toggle event at the 'details' element, with 'oldState: closed' and 'newState: open'"), - t6 = async_test("Calling open twice on 'details' fires only one toggle event, with 'oldState: closed' and 'newState: open'"), - t7 = async_test("Calling setAttribute('open', '') from 'details' should fire a toggle event at the 'details' element, with 'oldState: closed' and 'newState: open'"), - t8 = async_test("Calling removeAttribute('open') from 'details' should fire a toggle event at the 'details' element, with 'oldState: open' and 'newState: closed'"), - t9 = async_test("Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element"), - t10 = async_test("Setting open=false to closed 'details' element should not fire a toggle event at the 'details' element"), + t6 = async_test("Adding open to 'details' and then removing open from that 'details' and then again adding open to that 'details' should fire only one toggle event at the 'details' element, with 'oldState: closed' and 'newState: closed'"), + t7 = async_test("Adding open to 'details' using setAttribute('open', '') should fire a toggle event at the 'details' element, with 'oldState: closed' and 'newState: open'"), + t8 = async_test("Adding open to 'details' and then calling removeAttribute('open') should fire only one toggle event at the 'details' element, with 'oldState: closed' and 'newState: closed'"), + t9 = async_test("Setting open=true on an opened 'details' element should not fire a toggle event at the 'details' element"), + t10 = async_test("Setting open=false on a closed 'details' element should not fire a toggle event at the 'details' element"), details1 = document.getElementById('details1'), details2 = document.getElementById('details2'), @@ -76,13 +76,15 @@ details1.ontoggle = t1.step_func_done(function(evt) { assert_equals(evt.oldState, "closed"); - assert_equals(evt.newState, "open");+ + assert_equals(evt.newState, "open"); assert_true(details1.open); testEvent(evt) }); details1.open = true; // opens details1 details2.ontoggle = t2.step_func_done(function(evt) { + assert_equals(evt.oldState, "closed"); + assert_equals(evt.newState, "closed"); assert_false(details2.open); testEvent(evt); }); @@ -90,7 +92,7 @@ details3.ontoggle = t3.step_func_done(function(evt) { assert_equals(evt.oldState, "closed"); - assert_equals(evt.newState, "open");+ + assert_equals(evt.newState, "open"); assert_true(details3.open); testEvent(evt); }); @@ -107,6 +109,8 @@ async_test(function(t) { var details5 = document.createElement("details"); details5.ontoggle = t.step_func_done(function(evt) { + assert_equals(evt.oldState, "closed"); + assert_equals(evt.newState, "open"); assert_true(details5.open); testEvent(evt); }) @@ -119,6 +123,8 @@ if (loop) { assert_unreached("toggle event fired twice"); } else { + assert_equals(evt.oldState, "closed"); + assert_equals(evt.newState, "closed"); loop = true; } }); @@ -136,6 +142,8 @@ details7.setAttribute('open', ''); // opens details7 details8.ontoggle = t8.step_func_done(function(evt) { + assert_equals(evt.oldState, "closed"); + assert_equals(evt.newState, "closed"); assert_false(details8.open); testEvent(evt) });
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini b/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini index 51333f0..d929b7e5 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
@@ -14,22 +14,27 @@ if debug: PASS FAIL + [Adding open to 'details' and then calling removeAttribute('open') should fire only one toggle event at the 'details' element, with 'oldState: closed' and 'newState: closed'] + expected: + if debug: PASS + FAIL + + [Adding open to 'details' and then removing open from that 'details' and then again adding open to that 'details' should fire only one toggle event at the 'details' element, with 'oldState: closed' and 'newState: closed'] + expected: + if debug: PASS + FAIL + + [Adding open to 'details' and then removing open from that 'details' should fire only one toggle event at the 'details' element, with 'oldState: closed' and 'newState: closed'] + expected: + if debug: PASS + FAIL + [Adding open to 'details' should fire a toggle event at the 'details' element, with 'oldState: closed' and 'newState: open'] expected: if debug: PASS FAIL - [Calling removeAttribute('open') from 'details' should fire a toggle event at the 'details' element, with 'oldState: open' and 'newState: closed'] - expected: - if debug: PASS - FAIL - - [Calling setAttribute('open', '') from 'details' should fire a toggle event at the 'details' element, with 'oldState: closed' and 'newState: open'] - expected: - if debug: PASS - FAIL - - [Removing open from 'details' should fire a toggle event at the 'details' element, with 'oldState: open' and 'newState: closed'] + [Adding open to 'details' using setAttribute('open', '') should fire a toggle event at the 'details' element, with 'oldState: closed' and 'newState: open'] expected: if debug: PASS FAIL
diff --git a/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/display-2.html.ini b/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/display-2.html.ini new file mode 100644 index 0000000..15dfe816 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/mathml/relations/html5-tree/display-2.html.ini
@@ -0,0 +1,3 @@ +[display-2.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointerId_scope.html.ini b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointerId_scope.html.ini new file mode 100644 index 0000000..a334efb --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_pointerId_scope.html.ini
@@ -0,0 +1,3 @@ +[pointerevent_pointerId_scope.html] + expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): [TIMEOUT, OK]
diff --git a/third_party/blink/web_tests/external/wpt/svg/painting/reftests/marker-path-013.svg.ini b/third_party/blink/web_tests/external/wpt/svg/painting/reftests/marker-path-013.svg.ini index d2843a13..1de5c63b 100644 --- a/third_party/blink/web_tests/external/wpt/svg/painting/reftests/marker-path-013.svg.ini +++ b/third_party/blink/web_tests/external/wpt/svg/painting/reftests/marker-path-013.svg.ini
@@ -1,3 +1,4 @@ [marker-path-013.svg] expected: if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/fetch.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/fetch.https.html.ini new file mode 100644 index 0000000..22d0f21 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/fetch.https.html.ini
@@ -0,0 +1,3 @@ +[fetch.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/img-tag.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/img-tag.https.html.ini index 65c3af7..47b167b 100644 --- a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/img-tag.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/img-tag.https.html.ini
@@ -1,4 +1,6 @@ [img-tag.https.html] + expected: + if (product == "chrome") and not debug: CRASH [Upgrade-Insecure-Requests: Expects blocked for img-tag to cross-http-downgrade origin and downgrade redirection from https context.] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-classic.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-classic.https.html.ini new file mode 100644 index 0000000..6c5ed0d --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-classic.https.html.ini
@@ -0,0 +1,3 @@ +[sharedworker-classic.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data.https.html.ini new file mode 100644 index 0000000..54430fb --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import-data.https.html.ini
@@ -0,0 +1,3 @@ +[sharedworker-import-data.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import.https.html.ini new file mode 100644 index 0000000..c14c5a9c --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-import.https.html.ini
@@ -0,0 +1,3 @@ +[sharedworker-import.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module.https.html.ini new file mode 100644 index 0000000..4f462fe --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/sharedworker-module.https.html.ini
@@ -0,0 +1,3 @@ +[sharedworker-module.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/websocket.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/websocket.https.html.ini new file mode 100644 index 0000000..cb17ba5 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/websocket.https.html.ini
@@ -0,0 +1,3 @@ +[websocket.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worker-classic.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worker-classic.https.html.ini new file mode 100644 index 0000000..24a803f6 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worker-classic.https.html.ini
@@ -0,0 +1,3 @@ +[worker-classic.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worker-import-data.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worker-import-data.https.html.ini new file mode 100644 index 0000000..2edf2fe2 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worker-import-data.https.html.ini
@@ -0,0 +1,3 @@ +[worker-import-data.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worker-import.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worker-import.https.html.ini new file mode 100644 index 0000000..ccb9aad --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worker-import.https.html.ini
@@ -0,0 +1,3 @@ +[worker-import.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worker-module.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worker-module.https.html.ini new file mode 100644 index 0000000..1807da1 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worker-module.https.html.ini
@@ -0,0 +1,3 @@ +[worker-module.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-animation-import-data.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-animation-import-data.https.html.ini new file mode 100644 index 0000000..a952c46e --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-animation-import-data.https.html.ini
@@ -0,0 +1,3 @@ +[worklet-animation-import-data.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-animation.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-animation.https.html.ini new file mode 100644 index 0000000..1a5aedf --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-animation.https.html.ini
@@ -0,0 +1,3 @@ +[worklet-animation.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-audio-import-data.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-audio-import-data.https.html.ini new file mode 100644 index 0000000..7106ba01 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-audio-import-data.https.html.ini
@@ -0,0 +1,3 @@ +[worklet-audio-import-data.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-audio.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-audio.https.html.ini new file mode 100644 index 0000000..ffc04728 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-audio.https.html.ini
@@ -0,0 +1,3 @@ +[worklet-audio.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-layout-import-data.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-layout-import-data.https.html.ini new file mode 100644 index 0000000..c2e967c0 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-layout-import-data.https.html.ini
@@ -0,0 +1,3 @@ +[worklet-layout-import-data.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-layout.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-layout.https.html.ini new file mode 100644 index 0000000..6b37b1f2 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-layout.https.html.ini
@@ -0,0 +1,3 @@ +[worklet-layout.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-paint-import-data.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-paint-import-data.https.html.ini new file mode 100644 index 0000000..99e7c63 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-paint-import-data.https.html.ini
@@ -0,0 +1,3 @@ +[worklet-paint-import-data.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-paint.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-paint.https.html.ini new file mode 100644 index 0000000..25c881d --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/worklet-paint.https.html.ini
@@ -0,0 +1,3 @@ +[worklet-paint.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/xhr.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/xhr.https.html.ini new file mode 100644 index 0000000..1d03668 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/unset/xhr.https.html.ini
@@ -0,0 +1,3 @@ +[xhr.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/fetch.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/fetch.https.html.ini new file mode 100644 index 0000000..22d0f21 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/fetch.https.html.ini
@@ -0,0 +1,3 @@ +[fetch.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/iframe-tag.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/iframe-tag.https.html.ini new file mode 100644 index 0000000..7a4c392 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/iframe-tag.https.html.ini
@@ -0,0 +1,3 @@ +[iframe-tag.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/img-tag.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/img-tag.https.html.ini new file mode 100644 index 0000000..075fc7cf7 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/img-tag.https.html.ini
@@ -0,0 +1,3 @@ +[img-tag.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-classic.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-classic.https.html.ini index 366f6a9..949fb525 100644 --- a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-classic.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-classic.https.html.ini
@@ -1,4 +1,6 @@ [sharedworker-classic.https.html] + expected: + if (product == "chrome") and not debug: CRASH [Upgrade-Insecure-Requests: Expects allowed for sharedworker-classic to same-http-downgrade origin and downgrade redirection from https context.] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data.https.html.ini new file mode 100644 index 0000000..54430fb --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import-data.https.html.ini
@@ -0,0 +1,3 @@ +[sharedworker-import-data.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import.https.html.ini new file mode 100644 index 0000000..c14c5a9c --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-import.https.html.ini
@@ -0,0 +1,3 @@ +[sharedworker-import.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module.https.html.ini index 1abf20f..fe36f8d 100644 --- a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/sharedworker-module.https.html.ini
@@ -1,4 +1,6 @@ [sharedworker-module.https.html] + expected: + if (product == "chrome") and not debug: CRASH [Upgrade-Insecure-Requests: Expects allowed for sharedworker-module to same-http-downgrade origin and downgrade redirection from https context.] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/websocket.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/websocket.https.html.ini new file mode 100644 index 0000000..cb17ba5 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/websocket.https.html.ini
@@ -0,0 +1,3 @@ +[websocket.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-classic.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-classic.https.html.ini index 511ada7..0971103 100644 --- a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-classic.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-classic.https.html.ini
@@ -1,4 +1,6 @@ [worker-classic.https.html] + expected: + if (product == "chrome") and not debug: CRASH [Upgrade-Insecure-Requests: Expects allowed for worker-classic to same-http-downgrade origin and downgrade redirection from https context.] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-import-data.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-import-data.https.html.ini new file mode 100644 index 0000000..2edf2fe2 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-import-data.https.html.ini
@@ -0,0 +1,3 @@ +[worker-import-data.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-import.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-import.https.html.ini new file mode 100644 index 0000000..ccb9aad --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-import.https.html.ini
@@ -0,0 +1,3 @@ +[worker-import.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-module.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-module.https.html.ini index 444fe5c..4c6dcf40 100644 --- a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-module.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worker-module.https.html.ini
@@ -1,4 +1,6 @@ [worker-module.https.html] + expected: + if (product == "chrome") and not debug: CRASH [Upgrade-Insecure-Requests: Expects allowed for worker-module to same-http-downgrade origin and downgrade redirection from https context.] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-animation-import-data.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-animation-import-data.https.html.ini index 848048d..450a53c 100644 --- a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-animation-import-data.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-animation-import-data.https.html.ini
@@ -1,4 +1,6 @@ [worklet-animation-import-data.https.html] + expected: + if (product == "chrome") and not debug: CRASH [Upgrade-Insecure-Requests: Expects allowed for worklet-animation-import-data to cross-http-downgrade origin and downgrade redirection from https context.] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-animation.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-animation.https.html.ini index 0712a2bf..a9898c95c 100644 --- a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-animation.https.html.ini +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-animation.https.html.ini
@@ -1,4 +1,6 @@ [worklet-animation.https.html] + expected: + if (product == "chrome") and not debug: CRASH [Upgrade-Insecure-Requests: Expects allowed for worklet-animation to cross-http-downgrade origin and downgrade redirection from https context.] expected: FAIL
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-audio-import-data.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-audio-import-data.https.html.ini new file mode 100644 index 0000000..7106ba01 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-audio-import-data.https.html.ini
@@ -0,0 +1,3 @@ +[worklet-audio-import-data.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-audio.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-audio.https.html.ini new file mode 100644 index 0000000..ffc04728 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-audio.https.html.ini
@@ -0,0 +1,3 @@ +[worklet-audio.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-layout-import-data.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-layout-import-data.https.html.ini new file mode 100644 index 0000000..c2e967c0 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-layout-import-data.https.html.ini
@@ -0,0 +1,3 @@ +[worklet-layout-import-data.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-layout.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-layout.https.html.ini new file mode 100644 index 0000000..6b37b1f2 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-layout.https.html.ini
@@ -0,0 +1,3 @@ +[worklet-layout.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-paint-import-data.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-paint-import-data.https.html.ini new file mode 100644 index 0000000..99e7c63 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-paint-import-data.https.html.ini
@@ -0,0 +1,3 @@ +[worklet-paint-import-data.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-paint.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-paint.https.html.ini new file mode 100644 index 0000000..25c881d --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/worklet-paint.https.html.ini
@@ -0,0 +1,3 @@ +[worklet-paint.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/xhr.https.html.ini b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/xhr.https.html.ini new file mode 100644 index 0000000..1d03668 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/upgrade-insecure-requests/gen/iframe-blank-inherit.meta/upgrade/xhr.https.html.ini
@@ -0,0 +1,3 @@ +[xhr.https.html] + expected: + if (product == "chrome") and not debug: CRASH
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/full-cycle-test.https.any.js.ini b/third_party/blink/web_tests/external/wpt/webcodecs/full-cycle-test.https.any.js.ini index f462775..c66c645 100644 --- a/third_party/blink/web_tests/external/wpt/webcodecs/full-cycle-test.https.any.js.ini +++ b/third_party/blink/web_tests/external/wpt/webcodecs/full-cycle-test.https.any.js.ini
@@ -2,51 +2,37 @@ expected: if (product == "content_shell") and (os == "mac") and (port == "mac11"): ERROR if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): ERROR - if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): ERROR - if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): TIMEOUT if (product == "content_shell") and (os == "mac") and (port == "mac13"): ERROR + if (product == "content_shell") and (os == "mac") and (port == "mac12"): ERROR + if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): TIMEOUT + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): ERROR [Encoding and decoding cycle] expected: - if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL + if (product == "content_shell") and (os == "mac"): FAIL PRECONDITION_FAILED [Encoding and decoding cycle w/ stripped color space] expected: - if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL + if (product == "content_shell") and (os == "mac"): FAIL PRECONDITION_FAILED [full-cycle-test.https.any.html?h264_avc] expected: - if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): CRASH - if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): CRASH if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): TIMEOUT + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): CRASH + if (product == "content_shell") and (os == "mac") and (port == "mac12"): CRASH if (product == "content_shell") and (os == "mac") and (port == "mac13"): CRASH if (product == "content_shell") and (os == "mac") and (port == "mac11"): CRASH + if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): CRASH [Encoding and decoding cycle] expected: - if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL + if (product == "content_shell") and (os == "mac"): FAIL PRECONDITION_FAILED [Encoding and decoding cycle w/ stripped color space] expected: - if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac11"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL - if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL + if (product == "content_shell") and (os == "mac"): FAIL PRECONDITION_FAILED
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any.js.ini b/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any.js.ini index 9bce848..5fc5be3 100644 --- a/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any.js.ini +++ b/third_party/blink/web_tests/external/wpt/webcodecs/reconfiguring-encoder.https.any.js.ini
@@ -4,14 +4,16 @@ [reconfiguring-encoder.https.any.html?h264_annexb] expected: + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): ERROR + if (product == "content_shell") and (os == "mac") and (port == "mac12"): ERROR if (product == "content_shell") and (os == "mac") and (port == "mac13"): ERROR if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): ERROR - if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): ERROR [Reconfiguring encoder] expected: - if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac13"): FAIL if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12"): FAIL + if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): FAIL PRECONDITION_FAILED
diff --git a/third_party/blink/web_tests/wpt_internal/serial/serial_detachedFrame.https.window.js.ini b/third_party/blink/web_tests/wpt_internal/serial/serial_detachedFrame.https.window.js.ini index efb8ca50..17e03fb 100644 --- a/third_party/blink/web_tests/wpt_internal/serial/serial_detachedFrame.https.window.js.ini +++ b/third_party/blink/web_tests/wpt_internal/serial/serial_detachedFrame.https.window.js.ini
@@ -1,4 +1,6 @@ [serial_detachedFrame.https.window.html] + expected: + if (product == "chrome") and not debug: CRASH [adding an event listener does nothing in a detached context] expected: FAIL
diff --git a/third_party/closure_compiler/externs/accessibility_private.js b/third_party/closure_compiler/externs/accessibility_private.js index 9ffb4aa..6600830e 100644 --- a/third_party/closure_compiler/externs/accessibility_private.js +++ b/third_party/closure_compiler/externs/accessibility_private.js
@@ -342,13 +342,6 @@ /** * @enum {string} */ -chrome.accessibilityPrivate.ToastType = { - DICTATION_NO_FOCUSED_TEXT_FIELD: 'dictationNoFocusedTextField', -}; - -/** - * @enum {string} - */ chrome.accessibilityPrivate.DlcType = { TTS_BN_BD: 'ttsBnBd', TTS_CS_CZ: 'ttsCsCz', @@ -665,13 +658,6 @@ chrome.accessibilityPrivate.isLacrosPrimary = function(callback) {}; /** - * Displays an accessibility-related toast. - * @param {!chrome.accessibilityPrivate.ToastType} type The type of toast to - * show. - */ -chrome.accessibilityPrivate.showToast = function(type) {}; - -/** * Fired whenever ChromeVox should output introduction. * @type {!ChromeEvent} */
diff --git a/third_party/lzma_sdk/README.chromium b/third_party/lzma_sdk/README.chromium index 5c014ab..e13b763 100644 --- a/third_party/lzma_sdk/README.chromium +++ b/third_party/lzma_sdk/README.chromium
@@ -7,7 +7,7 @@ License File: LICENSE Security Critical: yes Shipped: yes -CPEPrefix: cpe:2.3:a:7-zip:7-zip:22.01: +CPEPrefix: cpe:2.3:a:7-zip:7-zip:22.01:*:*:*:*:*:*:* Description: This contains a part of LZMA SDK 22.01.
diff --git a/third_party/protobuf/README.chromium b/third_party/protobuf/README.chromium index 4dce89f3..d2876cb 100644 --- a/third_party/protobuf/README.chromium +++ b/third_party/protobuf/README.chromium
@@ -140,3 +140,7 @@ Imports (rebased): https://github.com/protocolbuffers/protobuf/commit/def602dd07b7eae1cac6823705975317b5607fc3 +- 0035-fix-shared-library-constants + + Fixes for component build when building with MediaPipe. AnyMetadata::PackFrom + is called which require string constants to be exported.
diff --git a/third_party/protobuf/patches/0035-fix-shared-library-constants b/third_party/protobuf/patches/0035-fix-shared-library-constants new file mode 100644 index 0000000..fd345719 --- /dev/null +++ b/third_party/protobuf/patches/0035-fix-shared-library-constants
@@ -0,0 +1,17 @@ +diff --git a/third_party/protobuf/src/google/protobuf/any.h b/third_party/protobuf/src/google/protobuf/any.h +index d688a0ca738fa..9666389a6b22f 100644 +--- a/third_party/protobuf/src/google/protobuf/any.h ++++ b/third_party/protobuf/src/google/protobuf/any.h +@@ -48,9 +48,9 @@ class Message; + + namespace internal { + +-extern const char kAnyFullTypeName[]; // "google.protobuf.Any". +-extern const char kTypeGoogleApisComPrefix[]; // "type.googleapis.com/". +-extern const char kTypeGoogleProdComPrefix[]; // "type.googleprod.com/". ++PROTOBUF_EXPORT extern const char kAnyFullTypeName[]; // "google.protobuf.Any". ++PROTOBUF_EXPORT extern const char kTypeGoogleApisComPrefix[]; // "type.googleapis.com/". ++PROTOBUF_EXPORT extern const char kTypeGoogleProdComPrefix[]; // "type.googleprod.com/". + + std::string GetTypeUrl(StringPiece message_name, + StringPiece type_url_prefix);
diff --git a/third_party/protobuf/src/google/protobuf/any.h b/third_party/protobuf/src/google/protobuf/any.h index d688a0c..9c305679 100644 --- a/third_party/protobuf/src/google/protobuf/any.h +++ b/third_party/protobuf/src/google/protobuf/any.h
@@ -48,9 +48,11 @@ namespace internal { -extern const char kAnyFullTypeName[]; // "google.protobuf.Any". -extern const char kTypeGoogleApisComPrefix[]; // "type.googleapis.com/". -extern const char kTypeGoogleProdComPrefix[]; // "type.googleprod.com/". +PROTOBUF_EXPORT extern const char kAnyFullTypeName[]; // "google.protobuf.Any". +PROTOBUF_EXPORT extern const char + kTypeGoogleApisComPrefix[]; // "type.googleapis.com/". +PROTOBUF_EXPORT extern const char + kTypeGoogleProdComPrefix[]; // "type.googleprod.com/". std::string GetTypeUrl(StringPiece message_name, StringPiece type_url_prefix);
diff --git a/third_party/sentencepiece/README.chromium b/third_party/sentencepiece/README.chromium index 2ef30e3..00973bd0 100644 --- a/third_party/sentencepiece/README.chromium +++ b/third_party/sentencepiece/README.chromium
@@ -32,6 +32,8 @@ * 0004-Remove-util-Status.patch - Swaps out the custom util::Status for absl::Status. * 0005-Fix-utf8towide.patch - Fixes file loading on Windows. +* 0006-Fix-gn-check-in-sentencepiece.patch - Removes more usage of absl flags +which was not needed and was giving "gn check" errors. In addition the python, third_party/absl, and third_party/protobuf-lite directories were removed to avoid adding a bunch of unused code which could
diff --git a/third_party/sentencepiece/patches/0006-Fix-gn-check-in-sentencepiece.patch b/third_party/sentencepiece/patches/0006-Fix-gn-check-in-sentencepiece.patch new file mode 100644 index 0000000..193eed8 --- /dev/null +++ b/third_party/sentencepiece/patches/0006-Fix-gn-check-in-sentencepiece.patch
@@ -0,0 +1,34 @@ +From 20635c0907ff1b75481855a7328393287e22d3ba Mon Sep 17 00:00:00 2001 +From: John Abd-El-Malek <jam@chromium.org> +Date: Mon, 21 Aug 2023 14:15:30 -0700 +Subject: [PATCH] Fix gn check in sentencepiece. + +--- + third_party/sentencepiece/src/src/error.cc | 11 ----------- + 1 file changed, 11 deletions(-) + +diff --git a/third_party/sentencepiece/src/src/error.cc b/third_party/sentencepiece/src/src/error.cc +index a23c462698922..91282df7c0438 100644 +--- a/third_party/sentencepiece/src/src/error.cc ++++ b/third_party/sentencepiece/src/src/error.cc +@@ -18,17 +18,6 @@ + #include "init.h" + #include "sentencepiece_processor.h" + +-#ifdef _USE_EXTERNAL_ABSL +-// Naive workaround to define minloglevel on external absl package. +-// We want to define them in other cc file. +-#include "absl/flags/flag.h" +-#include "absl/flags/parse.h" +-ABSL_FLAG(int32, +- minloglevel, +- 0, +- "Messages logged at a lower level than this don't actually."); +-#endif +- + namespace sentencepiece { + namespace error { + int gTestCounter = 0; +-- +2.39.1.windows.1 +
diff --git a/third_party/sentencepiece/src/src/error.cc b/third_party/sentencepiece/src/src/error.cc index a23c4626..91282df 100644 --- a/third_party/sentencepiece/src/src/error.cc +++ b/third_party/sentencepiece/src/src/error.cc
@@ -18,17 +18,6 @@ #include "init.h" #include "sentencepiece_processor.h" -#ifdef _USE_EXTERNAL_ABSL -// Naive workaround to define minloglevel on external absl package. -// We want to define them in other cc file. -#include "absl/flags/flag.h" -#include "absl/flags/parse.h" -ABSL_FLAG(int32, - minloglevel, - 0, - "Messages logged at a lower level than this don't actually."); -#endif - namespace sentencepiece { namespace error { int gTestCounter = 0;
diff --git a/tools/clang/plugins/FindBadRawPtrPatterns.cpp b/tools/clang/plugins/FindBadRawPtrPatterns.cpp index d9c03d6..ad4f28f 100644 --- a/tools/clang/plugins/FindBadRawPtrPatterns.cpp +++ b/tools/clang/plugins/FindBadRawPtrPatterns.cpp
@@ -172,7 +172,7 @@ assert(type_source_info->getType()->isPointerType() && "matcher should only match pointer types"); - compiler_.getDiagnostics().Report(field_decl->getEndLoc(), + compiler_.getDiagnostics().Report(field_decl->getLocation(), error_need_raw_ptr_signature_); }
diff --git a/tools/clang/plugins/RawPtrHelpers.h b/tools/clang/plugins/RawPtrHelpers.h index 9f9e2e4..1f00a70 100644 --- a/tools/clang/plugins/RawPtrHelpers.h +++ b/tools/clang/plugins/RawPtrHelpers.h
@@ -84,7 +84,8 @@ clang::TypeLoc)) { const clang::SourceManager& source_manager = Finder->getASTContext().getSourceManager(); - const auto loc = source_manager.getSpellingLoc(Node.getEndLoc()); + const auto loc = + source_manager.getSpellingLoc(getRepresentativeLocation(Node)); // Returns true if `loc` is inside either one of followings: // - "<built-in>" // - "<command line>" @@ -111,8 +112,8 @@ AST_POLYMORPHIC_SUPPORTED_TYPES(clang::Decl, clang::Stmt, clang::TypeLoc)) { - std::string filename = - GetFilename(Finder->getASTContext().getSourceManager(), Node.getEndLoc()); + std::string filename = GetFilename(Finder->getASTContext().getSourceManager(), + getRepresentativeLocation(Node)); // Blink is part of the Chromium git repo, even though it contains // "third_party" in its path. @@ -145,8 +146,8 @@ AST_POLYMORPHIC_SUPPORTED_TYPES(clang::Decl, clang::Stmt, clang::TypeLoc)) { - std::string filename = - GetFilename(Finder->getASTContext().getSourceManager(), Node.getEndLoc()); + std::string filename = GetFilename(Finder->getASTContext().getSourceManager(), + getRepresentativeLocation(Node)); return filename.find("/gen/") != std::string::npos || filename.rfind("gen/", 0) == 0; @@ -172,7 +173,7 @@ isInLocationListedInFilterFile, const FilterFile*, Filter) { - clang::SourceLocation loc = Node.getLocation(); + clang::SourceLocation loc = getRepresentativeLocation(Node); if (loc.isInvalid()) { return false; } @@ -430,13 +431,14 @@ // Matches AST nodes that were spelled within system-header-files. // Unlike clang's `isExpansionInSystemHeader`, this is based on: // - spelling location -// - Node's `getEndLoc()`, not `getBeginLoc()` +// - `getRepresentativeLocation(Node)`, not `Node.getBeginLoc()` AST_POLYMORPHIC_MATCHER(isSpellingInSystemHeader, AST_POLYMORPHIC_SUPPORTED_TYPES(clang::Decl, clang::Stmt, clang::TypeLoc)) { auto& source_manager = Finder->getASTContext().getSourceManager(); - auto spelling_loc = source_manager.getSpellingLoc(Node.getEndLoc()); + auto spelling_loc = + source_manager.getSpellingLoc(getRepresentativeLocation(Node)); if (spelling_loc.isInvalid()) { return false; }
diff --git a/tools/clang/plugins/Util.h b/tools/clang/plugins/Util.h index 01f05b6..9fa14352 100644 --- a/tools/clang/plugins/Util.h +++ b/tools/clang/plugins/Util.h
@@ -6,8 +6,11 @@ #define TOOLS_CLANG_PLUGINS_UTIL_H_ #include <string> +#include <type_traits> #include "clang/AST/DeclBase.h" +#include "clang/AST/Stmt.h" +#include "clang/AST/TypeLoc.h" #include "clang/Basic/SourceLocation.h" #include "clang/Basic/SourceManager.h" @@ -21,4 +24,36 @@ std::string GetFilename(const clang::SourceManager& instance, clang::SourceLocation location); +// Utility method to obtain a "representative" source location polymorphically. +// We sometimes use a source location to determine a code owner has legitimate +// justification not to fix the issue found out by the plugin (e.g. the issue +// being inside system headers). Among several options to obtain a location, +// this utility aims to provide the best location which represents the node's +// essential token. +inline clang::SourceLocation getRepresentativeLocation( + const clang::Stmt& node) { + // clang::Stmt has T::getBeginLoc() and T::getEndLoc(). + // As the former may refer to modifiers, we use the latter one. + return node.getEndLoc(); +} +inline clang::SourceLocation getRepresentativeLocation( + const clang::TypeLoc& node) { + // clang::TypeLoc has T::getBeginLoc() and T::getEndLoc(). + // As the former may refer to modifiers, we use the latter one. + return node.getEndLoc(); +} +inline clang::SourceLocation getRepresentativeLocation( + const clang::Decl& node) { + // Unlike other nodes, clang::Decl provides T::getLocation(). + // Usually, this provides more "representative" location. + // + // e.g. clang::FieldDecl + // int* field = nullptr; + // ^ ^ ^ + // | | getEndLoc() + // | getLocation() + // getBeginLoc() + return node.getLocation(); +} + #endif // TOOLS_CLANG_PLUGINS_UTIL_H_
diff --git a/tools/clang/plugins/tests/raw_ptr_fields_macro.cpp b/tools/clang/plugins/tests/raw_ptr_fields_macro.cpp index 9c28c7e2..aeadc99 100644 --- a/tools/clang/plugins/tests/raw_ptr_fields_macro.cpp +++ b/tools/clang/plugins/tests/raw_ptr_fields_macro.cpp
@@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// Testing normal case +#line 6 "raw_ptr_fields_macro.cpp" #define USR_INT int #define USR_INTP int* #define USR_CONST const @@ -10,10 +12,54 @@ #define USR_TYPE_WITH_SUFFIX(TYP) TYP##Suffix #define USR_SYMBOL(SYM) SYM #define USR_SYMBOL_WITH_SUFFIX(SYM) SYM##_suffix -class UsrTypSuffix; +#define USR_EQ = +#define USR_NULLPTR nullptr +// Testing isInThirdPartyLocation() +#line 19 "/src/tools/clang/plugins/tests/third_party/fake_location.cpp" +#define TP_INT int +#define TP_INTP int* +#define TP_CONST const +#define TP_ATTR [[fake_attribute]] +#define TP_INTP_FIELD() int* macro_ptr +#define TP_TYPE_WITH_SUFFIX(TYP) TYP##Suffix +#define TP_SYMBOL(SYM) SYM +#define TP_SYMBOL_WITH_SUFFIX(SYM) SYM##_suffix +#define TP_EQ = +#define TP_NULLPTR nullptr + +// Testing isInLocationListedInFilterFile() +#line 32 "/src/tools/clang/plugins/tests/internal/fake_location.cpp" +#define IG_INT int +#define IG_INTP int* +#define IG_CONST const +#define IG_ATTR [[fake_attribute]] +#define IG_INTP_FIELD() int* macro_ptr +#define IG_TYPE_WITH_SUFFIX(TYP) TYP##Suffix +#define IG_SYMBOL(SYM) SYM +#define IG_SYMBOL_WITH_SUFFIX(SYM) SYM##_suffix +#define IG_EQ = +#define IG_NULLPTR nullptr + +// Testing isInGeneratedLocation() +#line 45 "/src/tools/clang/plugins/tests/gen/fake_location.cpp" +#define GEN_INT int +#define GEN_INTP int* +#define GEN_CONST const +#define GEN_ATTR [[fake_attribute]] +#define GEN_INTP_FIELD() int* macro_ptr +#define GEN_TYPE_WITH_SUFFIX(TYP) TYP##Suffix +#define GEN_SYMBOL(SYM) SYM +#define GEN_SYMBOL_WITH_SUFFIX(SYM) SYM##_suffix +#define GEN_EQ = +#define GEN_NULLPTR nullptr + +// Testing isSpellingInSystemHeader() #include <raw_ptr_system_test.h> +#line 60 "raw_ptr_fields_macro.cpp" +class UsrTypSuffix; + // These `SYS_***` macro should be defined // in `//tools/clang/plugins/tests/system/raw_ptr_system_test.h`. struct UsrStructWithSysMacro { @@ -33,30 +79,33 @@ SYS_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; // Error: identifier is defined with macro but it is written here. int* SYS_SYMBOL(ptr6); - // OK: code owner has no control over fieldDecl. + // OK: the source location for this field declaration will be "<scratch + // space>" and the real file path cannot be detected. int* SYS_SYMBOL_WITH_SUFFIX(ptr7); + // Error: field is initialized with macro but identifier is written here. + int* ptr8 SYS_EQ nullptr; + // Error: field is initialized with macro but identifier is written here. + int* ptr9 = SYS_NULLPTR; + // OK: the source location for this field declaration will be "<scratch + // space>" and the real file path cannot be detected. + int* SYS_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; }; // These `CMD_***` macro should be defined in command line arguments. +// Same as for UsrStructWithSysMacro. struct UsrStructWithCmdMacro { - // Error. - int* ptr0; - // Error: typeLoc is macro but identifier is written here. - CMD_INT* ptr1; - // Error: typeLoc is macro but identifier is written here. - CMD_INTP ptr2; - // Error: typeLoc is macro but identifier is written here. - int* CMD_CONST ptr3; - // Error: attribute is macro but identifier is written here. - int* CMD_ATTR ptr4; - // OK: code owner has no control over fieldDecl. - CMD_INTP_FIELD(); - // Error: typeLoc is macro but identifier is written here. - CMD_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; - // Error: identifier is defined with macro but it is written here. - int* CMD_SYMBOL(ptr6); - // OK: code owner has no control over fieldDecl. - int* CMD_SYMBOL_WITH_SUFFIX(ptr7); + int* ptr0; // Error. + CMD_INT* ptr1; // Error. + CMD_INTP ptr2; // Error. + int* CMD_CONST ptr3; // Error. + int* CMD_ATTR ptr4; // Error. + CMD_INTP_FIELD(); // OK. + CMD_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; // Error. + int* CMD_SYMBOL(ptr6); // Error. + int* CMD_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 CMD_EQ nullptr; // Error. + int* ptr9 = CMD_NULLPTR; // Error. + int* CMD_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. }; struct UsrStructWithUsrMacro { @@ -79,4 +128,338 @@ // OK: the source location for this field declaration will be "<scratch // space>" and the real file path cannot be detected. int* USR_SYMBOL_WITH_SUFFIX(ptr7); + // Error: field is initialized with macro but identifier is written here. + int* ptr8 USR_EQ nullptr; + // Error: field is initialized with macro but identifier is written here. + int* ptr9 = USR_NULLPTR; + // OK: the source location for this field declaration will be "<scratch + // space>" and the real file path cannot be detected. + int* USR_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; +}; + +// Same as for UsrStructWithSysMacro. +struct UsrStructWithThirdPartyMacro { + int* ptr0; // Error. + TP_INT* ptr1; // Error. + TP_INTP ptr2; // Error. + int* TP_CONST ptr3; // Error. + int* TP_ATTR ptr4; // Error. + TP_INTP_FIELD(); // OK. + TP_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; // Error. + int* TP_SYMBOL(ptr6); // Error. + int* TP_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 TP_EQ nullptr; // Error. + int* ptr9 = TP_NULLPTR; // Error. + int* TP_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +// Same as for UsrStructWithSysMacro. +struct UsrStructWithManuallyIgnoredMacro { + int* ptr0; // Error. + IG_INT* ptr1; // Error. + IG_INTP ptr2; // Error. + int* IG_CONST ptr3; // Error. + int* IG_ATTR ptr4; // Error. + IG_INTP_FIELD(); // OK. + IG_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; // Error. + int* IG_SYMBOL(ptr6); // Error. + int* IG_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 IG_EQ nullptr; // Error. + int* ptr9 = IG_NULLPTR; // Error. + int* IG_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +// Same as for UsrStructWithSysMacro. +struct UsrStructWithGeneratedMacro { + int* ptr0; // Error. + GEN_INT* ptr1; // Error. + GEN_INTP ptr2; // Error. + int* GEN_CONST ptr3; // Error. + int* GEN_ATTR ptr4; // Error. + GEN_INTP_FIELD(); // OK. + GEN_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; // Error. + int* GEN_SYMBOL(ptr6); // Error. + int* GEN_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 GEN_EQ nullptr; // Error. + int* ptr9 = GEN_NULLPTR; // Error. + int* GEN_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +#line 188 "/src/tools/clang/plugins/tests/third_party/fake_location.cpp" +class ThirdPartyTypSuffix; + +struct ThirdPartyStructWithSysMacro { + int* ptr0; // OK. + SYS_INT* ptr1; // OK. + SYS_INTP ptr2; // OK. + int* SYS_CONST ptr3; // OK. + int* SYS_ATTR ptr4; // OK. + SYS_INTP_FIELD(); // OK. + SYS_TYPE_WITH_SUFFIX(ThirdPartyTyp) * ptr5; // OK. + int* SYS_SYMBOL(ptr6); // OK. + int* SYS_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 SYS_EQ nullptr; // OK. + int* ptr9 = SYS_NULLPTR; // OK. + int* SYS_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +struct ThirdPartyStructWithCmdMacro { + int* ptr0; // OK. + CMD_INT* ptr1; // OK. + CMD_INTP ptr2; // OK. + int* CMD_CONST ptr3; // OK. + int* CMD_ATTR ptr4; // OK. + CMD_INTP_FIELD(); // OK. + CMD_TYPE_WITH_SUFFIX(ThirdPartyTyp) * ptr5; // OK. + int* CMD_SYMBOL(ptr6); // OK. + int* CMD_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 CMD_EQ nullptr; // OK. + int* ptr9 = CMD_NULLPTR; // OK. + int* CMD_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +struct ThirdPartyStructWithUsrMacro { + int* ptr0; // OK. + USR_INT* ptr1; // OK. + USR_INTP ptr2; // OK. + int* USR_CONST ptr3; // OK. + int* USR_ATTR ptr4; // OK. + USR_INTP_FIELD(); // Error. + USR_TYPE_WITH_SUFFIX(ThirdPartyTyp) * ptr5; // OK. + int* USR_SYMBOL(ptr6); // OK. + int* USR_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 USR_EQ nullptr; // OK. + int* ptr9 = USR_NULLPTR; // OK. + int* USR_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +struct ThirdPartyStructWithThirdPartyMacro { + int* ptr0; // OK. + TP_INT* ptr1; // OK. + TP_INTP ptr2; // OK. + int* TP_CONST ptr3; // OK. + int* TP_ATTR ptr4; // OK. + TP_INTP_FIELD(); // OK. + TP_TYPE_WITH_SUFFIX(ThirdPartyTyp) * ptr5; // OK. + int* TP_SYMBOL(ptr6); // OK. + int* TP_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 TP_EQ nullptr; // OK. + int* ptr9 = TP_NULLPTR; // OK. + int* TP_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +struct ThirdPartyStructWithManuallyIgnoredMacro { + int* ptr0; // OK. + IG_INT* ptr1; // OK. + IG_INTP ptr2; // OK. + int* IG_CONST ptr3; // OK. + int* IG_ATTR ptr4; // OK. + IG_INTP_FIELD(); // OK. + IG_TYPE_WITH_SUFFIX(ThirdPartyTyp) * ptr5; // OK. + int* IG_SYMBOL(ptr6); // OK. + int* IG_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 IG_EQ nullptr; // OK. + int* ptr9 = IG_NULLPTR; // OK. + int* IG_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +struct ThirdPartyStructWithGeneratedMacro { + int* ptr0; // OK. + GEN_INT* ptr1; // OK. + GEN_INTP ptr2; // OK. + int* GEN_CONST ptr3; // OK. + int* GEN_ATTR ptr4; // OK. + GEN_INTP_FIELD(); // OK. + GEN_TYPE_WITH_SUFFIX(ThirdPartyTyp) * ptr5; // OK. + int* GEN_SYMBOL(ptr6); // OK. + int* GEN_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 GEN_EQ nullptr; // OK. + int* ptr9 = GEN_NULLPTR; // OK. + int* GEN_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +#line 281 "/src/tools/clang/plugins/tests/internal/fake_location.cpp" +class ManuallyIgnoredTypSuffix; + +struct ManuallyIgnoredStructWithSysMacro { + int* ptr0; // OK. + SYS_INT* ptr1; // OK. + SYS_INTP ptr2; // OK. + int* SYS_CONST ptr3; // OK. + int* SYS_ATTR ptr4; // OK. + SYS_INTP_FIELD(); // OK. + SYS_TYPE_WITH_SUFFIX(ManuallyIgnoredTyp) * ptr5; // OK. + int* SYS_SYMBOL(ptr6); // OK. + int* SYS_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 SYS_EQ nullptr; // OK. + int* ptr9 = SYS_NULLPTR; // OK. + int* SYS_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +struct ManuallyIgnoredStructWithCmdMacro { + int* ptr0; // OK. + CMD_INT* ptr1; // OK. + CMD_INTP ptr2; // OK. + int* CMD_CONST ptr3; // OK. + int* CMD_ATTR ptr4; // OK. + CMD_INTP_FIELD(); // OK. + CMD_TYPE_WITH_SUFFIX(ManuallyIgnoredTyp) * ptr5; // OK. + int* CMD_SYMBOL(ptr6); // OK. + int* CMD_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 CMD_EQ nullptr; // OK. + int* ptr9 = CMD_NULLPTR; // OK. + int* CMD_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +struct ManuallyIgnoredStructWithUsrMacro { + int* ptr0; // OK. + USR_INT* ptr1; // OK. + USR_INTP ptr2; // OK. + int* USR_CONST ptr3; // OK. + int* USR_ATTR ptr4; // OK. + USR_INTP_FIELD(); // Error. + USR_TYPE_WITH_SUFFIX(ManuallyIgnoredTyp) * ptr5; // OK. + int* USR_SYMBOL(ptr6); // OK. + int* USR_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 USR_EQ nullptr; // OK. + int* ptr9 = USR_NULLPTR; // OK. + int* USR_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +struct ManuallyIgnoredStructWithThirdPartyMacro { + int* ptr0; // OK. + TP_INT* ptr1; // OK. + TP_INTP ptr2; // OK. + int* TP_CONST ptr3; // OK. + int* TP_ATTR ptr4; // OK. + TP_INTP_FIELD(); // OK. + TP_TYPE_WITH_SUFFIX(ManuallyIgnoredTyp) * ptr5; // OK. + int* TP_SYMBOL(ptr6); // OK. + int* TP_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 TP_EQ nullptr; // OK. + int* ptr9 = TP_NULLPTR; // OK. + int* TP_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +struct ManuallyIgnoredStructWithManuallyIgnoredMacro { + int* ptr0; // OK. + IG_INT* ptr1; // OK. + IG_INTP ptr2; // OK. + int* IG_CONST ptr3; // OK. + int* IG_ATTR ptr4; // OK. + IG_INTP_FIELD(); // OK. + IG_TYPE_WITH_SUFFIX(ManuallyIgnoredTyp) * ptr5; // OK. + int* IG_SYMBOL(ptr6); // OK. + int* IG_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 IG_EQ nullptr; // OK. + int* ptr9 = IG_NULLPTR; // OK. + int* IG_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +struct ManuallyIgnoredStructWithGeneratedMacro { + int* ptr0; // OK. + GEN_INT* ptr1; // OK. + GEN_INTP ptr2; // OK. + int* GEN_CONST ptr3; // OK. + int* GEN_ATTR ptr4; // OK. + GEN_INTP_FIELD(); // OK. + GEN_TYPE_WITH_SUFFIX(ManuallyIgnoredTyp) * ptr5; // OK. + int* GEN_SYMBOL(ptr6); // OK. + int* GEN_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 GEN_EQ nullptr; // OK. + int* ptr9 = GEN_NULLPTR; // OK. + int* GEN_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +#line 374 "/src/tools/clang/plugins/tests/gen/fake_location.cpp" +class GeneratedTypSuffix; + +struct GeneratedStructWithSysMacro { + int* ptr0; // OK. + SYS_INT* ptr1; // OK. + SYS_INTP ptr2; // OK. + int* SYS_CONST ptr3; // OK. + int* SYS_ATTR ptr4; // OK. + SYS_INTP_FIELD(); // OK. + SYS_TYPE_WITH_SUFFIX(GeneratedTyp) * ptr5; // OK. + int* SYS_SYMBOL(ptr6); // OK. + int* SYS_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 SYS_EQ nullptr; // OK. + int* ptr9 = SYS_NULLPTR; // OK. + int* SYS_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +struct GeneratedStructWithCmdMacro { + int* ptr0; // OK. + CMD_INT* ptr1; // OK. + CMD_INTP ptr2; // OK. + int* CMD_CONST ptr3; // OK. + int* CMD_ATTR ptr4; // OK. + CMD_INTP_FIELD(); // OK. + CMD_TYPE_WITH_SUFFIX(GeneratedTyp) * ptr5; // OK. + int* CMD_SYMBOL(ptr6); // OK. + int* CMD_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 CMD_EQ nullptr; // OK. + int* ptr9 = CMD_NULLPTR; // OK. + int* CMD_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +struct GeneratedStructWithUsrMacro { + int* ptr0; // OK. + USR_INT* ptr1; // OK. + USR_INTP ptr2; // OK. + int* USR_CONST ptr3; // OK. + int* USR_ATTR ptr4; // OK. + USR_INTP_FIELD(); // Error. + USR_TYPE_WITH_SUFFIX(GeneratedTyp) * ptr5; // OK. + int* USR_SYMBOL(ptr6); // OK. + int* USR_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 USR_EQ nullptr; // OK. + int* ptr9 = USR_NULLPTR; // OK. + int* USR_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +struct GeneratedStructWithThirdPartyMacro { + int* ptr0; // OK. + TP_INT* ptr1; // OK. + TP_INTP ptr2; // OK. + int* TP_CONST ptr3; // OK. + int* TP_ATTR ptr4; // OK. + TP_INTP_FIELD(); // OK. + TP_TYPE_WITH_SUFFIX(GeneratedTyp) * ptr5; // OK. + int* TP_SYMBOL(ptr6); // OK. + int* TP_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 TP_EQ nullptr; // OK. + int* ptr9 = TP_NULLPTR; // OK. + int* TP_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +struct GeneratedStructWithManuallyIgnoredMacro { + int* ptr0; // OK. + IG_INT* ptr1; // OK. + IG_INTP ptr2; // OK. + int* IG_CONST ptr3; // OK. + int* IG_ATTR ptr4; // OK. + IG_INTP_FIELD(); // OK. + IG_TYPE_WITH_SUFFIX(GeneratedTyp) * ptr5; // OK. + int* IG_SYMBOL(ptr6); // OK. + int* IG_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 IG_EQ nullptr; // OK. + int* ptr9 = IG_NULLPTR; // OK. + int* IG_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +struct GeneratedStructWithGeneratedMacro { + int* ptr0; // OK. + GEN_INT* ptr1; // OK. + GEN_INTP ptr2; // OK. + int* GEN_CONST ptr3; // OK. + int* GEN_ATTR ptr4; // OK. + GEN_INTP_FIELD(); // OK. + GEN_TYPE_WITH_SUFFIX(GeneratedTyp) * ptr5; // OK. + int* GEN_SYMBOL(ptr6); // OK. + int* GEN_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 GEN_EQ nullptr; // OK. + int* ptr9 = GEN_NULLPTR; // OK. + int* GEN_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. };
diff --git a/tools/clang/plugins/tests/raw_ptr_fields_macro.flags b/tools/clang/plugins/tests/raw_ptr_fields_macro.flags index 8f49a10..6f010e60 100644 --- a/tools/clang/plugins/tests/raw_ptr_fields_macro.flags +++ b/tools/clang/plugins/tests/raw_ptr_fields_macro.flags
@@ -1 +1 @@ --Xclang -plugin-arg-find-bad-constructs -Xclang check-raw-ptr-fields -Xclang -plugin-arg-find-bad-constructs -Xclang raw-ptr-fix-crbug-1449812 -Wno-unknown-attributes -ferror-limit=50 -DCMD_INT=int -DCMD_INTP=int* -DCMD_CONST=const -DCMD_ATTR=[[fake_attribute]] -DCMD_INTP_FIELD()=int*macro_ptr -DCMD_TYPE_WITH_SUFFIX(TYP)=TYP##Suffix -DCMD_SYMBOL(SYM)=SYM -DCMD_SYMBOL_WITH_SUFFIX(SYM)=SYM##_suffix +-Xclang -plugin-arg-find-bad-constructs -Xclang check-raw-ptr-fields -Xclang -plugin-arg-find-bad-constructs -Xclang raw-ptr-fix-crbug-1449812 -Wno-unknown-attributes -ferror-limit=0 -DCMD_INT=int -DCMD_INTP=int* -DCMD_CONST=const -DCMD_ATTR=[[fake_attribute]] -DCMD_INTP_FIELD()=int*macro_ptr -DCMD_TYPE_WITH_SUFFIX(TYP)=TYP##Suffix -DCMD_SYMBOL(SYM)=SYM -DCMD_SYMBOL_WITH_SUFFIX(SYM)=SYM##_suffix -DCMD_EQ== -DCMD_NULLPTR=nullptr
diff --git a/tools/clang/plugins/tests/raw_ptr_fields_macro.txt b/tools/clang/plugins/tests/raw_ptr_fields_macro.txt index b8490174..dfed755 100644 --- a/tools/clang/plugins/tests/raw_ptr_fields_macro.txt +++ b/tools/clang/plugins/tests/raw_ptr_fields_macro.txt
@@ -1,77 +1,194 @@ -In file included from raw_ptr_fields_macro.cpp:15: -/src/tools/clang/plugins/tests/system/raw_ptr_system_test.h:60:3: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. +In file included from /src/tools/clang/plugins/tests/gen/fake_location.cpp:57: +/src/tools/clang/plugins/tests/system/raw_ptr_system_test.h:66:3: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. USR_INTP_FIELD(); ^ -raw_ptr_fields_macro.cpp:9:31: note: expanded from macro 'USR_INTP_FIELD' +raw_ptr_fields_macro.cpp:10:31: note: expanded from macro 'USR_INTP_FIELD' #define USR_INTP_FIELD() int* macro_ptr ^ -raw_ptr_fields_macro.cpp:21:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. +raw_ptr_fields_macro.cpp:66:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. int* ptr0; ^ -raw_ptr_fields_macro.cpp:23:12: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. +raw_ptr_fields_macro.cpp:68:12: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. SYS_INT* ptr1; ^ -raw_ptr_fields_macro.cpp:25:12: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. +raw_ptr_fields_macro.cpp:70:12: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. SYS_INTP ptr2; ^ -raw_ptr_fields_macro.cpp:27:18: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. +raw_ptr_fields_macro.cpp:72:18: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. int* SYS_CONST ptr3; ^ -raw_ptr_fields_macro.cpp:29:17: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. +raw_ptr_fields_macro.cpp:74:17: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. int* SYS_ATTR ptr4; ^ -raw_ptr_fields_macro.cpp:33:34: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. +raw_ptr_fields_macro.cpp:78:34: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. SYS_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; ^ -raw_ptr_fields_macro.cpp:35:19: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. +raw_ptr_fields_macro.cpp:80:19: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. int* SYS_SYMBOL(ptr6); ^ -raw_ptr_fields_macro.cpp:43:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. - int* ptr0; +raw_ptr_fields_macro.cpp:85:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* ptr8 SYS_EQ nullptr; ^ -raw_ptr_fields_macro.cpp:45:12: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. - CMD_INT* ptr1; +raw_ptr_fields_macro.cpp:87:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* ptr9 = SYS_NULLPTR; + ^ +raw_ptr_fields_macro.cpp:96:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* ptr0; // Error. + ^ +raw_ptr_fields_macro.cpp:97:12: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + CMD_INT* ptr1; // Error. ^ -raw_ptr_fields_macro.cpp:47:12: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. - CMD_INTP ptr2; +raw_ptr_fields_macro.cpp:98:12: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + CMD_INTP ptr2; // Error. ^ -raw_ptr_fields_macro.cpp:49:18: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. - int* CMD_CONST ptr3; +raw_ptr_fields_macro.cpp:99:18: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* CMD_CONST ptr3; // Error. ^ -raw_ptr_fields_macro.cpp:51:17: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. - int* CMD_ATTR ptr4; +raw_ptr_fields_macro.cpp:100:17: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* CMD_ATTR ptr4; // Error. ^ -raw_ptr_fields_macro.cpp:55:34: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. - CMD_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; +raw_ptr_fields_macro.cpp:102:34: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + CMD_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; // Error. ^ -raw_ptr_fields_macro.cpp:57:19: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. - int* CMD_SYMBOL(ptr6); +raw_ptr_fields_macro.cpp:103:19: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* CMD_SYMBOL(ptr6); // Error. ^ -raw_ptr_fields_macro.cpp:64:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. +raw_ptr_fields_macro.cpp:105:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* ptr8 CMD_EQ nullptr; // Error. + ^ +raw_ptr_fields_macro.cpp:106:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* ptr9 = CMD_NULLPTR; // Error. + ^ +raw_ptr_fields_macro.cpp:112:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. int* ptr0; ^ -raw_ptr_fields_macro.cpp:66:12: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. +raw_ptr_fields_macro.cpp:114:12: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. USR_INT* ptr1; ^ -raw_ptr_fields_macro.cpp:68:12: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. +raw_ptr_fields_macro.cpp:116:12: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. USR_INTP ptr2; ^ -raw_ptr_fields_macro.cpp:70:18: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. +raw_ptr_fields_macro.cpp:118:18: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. int* USR_CONST ptr3; ^ -raw_ptr_fields_macro.cpp:72:17: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. +raw_ptr_fields_macro.cpp:120:17: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. int* USR_ATTR ptr4; ^ -raw_ptr_fields_macro.cpp:74:3: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. +raw_ptr_fields_macro.cpp:122:3: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. USR_INTP_FIELD(); ^ -raw_ptr_fields_macro.cpp:9:31: note: expanded from macro 'USR_INTP_FIELD' +raw_ptr_fields_macro.cpp:10:31: note: expanded from macro 'USR_INTP_FIELD' #define USR_INTP_FIELD() int* macro_ptr ^ -raw_ptr_fields_macro.cpp:76:34: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. +raw_ptr_fields_macro.cpp:124:34: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. USR_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; ^ -raw_ptr_fields_macro.cpp:78:19: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. +raw_ptr_fields_macro.cpp:126:19: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. int* USR_SYMBOL(ptr6); ^ -23 errors generated. +raw_ptr_fields_macro.cpp:131:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* ptr8 USR_EQ nullptr; + ^ +raw_ptr_fields_macro.cpp:133:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* ptr9 = USR_NULLPTR; + ^ +raw_ptr_fields_macro.cpp:141:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* ptr0; // Error. + ^ +raw_ptr_fields_macro.cpp:142:11: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + TP_INT* ptr1; // Error. + ^ +raw_ptr_fields_macro.cpp:143:11: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + TP_INTP ptr2; // Error. + ^ +raw_ptr_fields_macro.cpp:144:17: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* TP_CONST ptr3; // Error. + ^ +raw_ptr_fields_macro.cpp:145:16: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* TP_ATTR ptr4; // Error. + ^ +raw_ptr_fields_macro.cpp:147:33: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + TP_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; // Error. + ^ +raw_ptr_fields_macro.cpp:148:18: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* TP_SYMBOL(ptr6); // Error. + ^ +raw_ptr_fields_macro.cpp:150:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* ptr8 TP_EQ nullptr; // Error. + ^ +raw_ptr_fields_macro.cpp:151:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* ptr9 = TP_NULLPTR; // Error. + ^ +raw_ptr_fields_macro.cpp:157:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* ptr0; // Error. + ^ +raw_ptr_fields_macro.cpp:158:11: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + IG_INT* ptr1; // Error. + ^ +raw_ptr_fields_macro.cpp:159:11: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + IG_INTP ptr2; // Error. + ^ +raw_ptr_fields_macro.cpp:160:17: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* IG_CONST ptr3; // Error. + ^ +raw_ptr_fields_macro.cpp:161:16: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* IG_ATTR ptr4; // Error. + ^ +raw_ptr_fields_macro.cpp:163:33: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + IG_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; // Error. + ^ +raw_ptr_fields_macro.cpp:164:18: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* IG_SYMBOL(ptr6); // Error. + ^ +raw_ptr_fields_macro.cpp:166:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* ptr8 IG_EQ nullptr; // Error. + ^ +raw_ptr_fields_macro.cpp:167:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* ptr9 = IG_NULLPTR; // Error. + ^ +raw_ptr_fields_macro.cpp:173:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* ptr0; // Error. + ^ +raw_ptr_fields_macro.cpp:174:12: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + GEN_INT* ptr1; // Error. + ^ +raw_ptr_fields_macro.cpp:175:12: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + GEN_INTP ptr2; // Error. + ^ +raw_ptr_fields_macro.cpp:176:18: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* GEN_CONST ptr3; // Error. + ^ +raw_ptr_fields_macro.cpp:177:17: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* GEN_ATTR ptr4; // Error. + ^ +raw_ptr_fields_macro.cpp:179:34: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + GEN_TYPE_WITH_SUFFIX(UsrTyp) * ptr5; // Error. + ^ +raw_ptr_fields_macro.cpp:180:19: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* GEN_SYMBOL(ptr6); // Error. + ^ +raw_ptr_fields_macro.cpp:182:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* ptr8 GEN_EQ nullptr; // Error. + ^ +raw_ptr_fields_macro.cpp:183:8: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + int* ptr9 = GEN_NULLPTR; // Error. + ^ +/src/tools/clang/plugins/tests/third_party/fake_location.cpp:226:3: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + USR_INTP_FIELD(); // Error. + ^ +raw_ptr_fields_macro.cpp:10:31: note: expanded from macro 'USR_INTP_FIELD' +#define USR_INTP_FIELD() int* macro_ptr + ^ +/src/tools/clang/plugins/tests/internal/fake_location.cpp:319:3: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + USR_INTP_FIELD(); // Error. + ^ +raw_ptr_fields_macro.cpp:10:31: note: expanded from macro 'USR_INTP_FIELD' +#define USR_INTP_FIELD() int* macro_ptr + ^ +/src/tools/clang/plugins/tests/gen/fake_location.cpp:412:3: error: [chromium-rawptr] Use raw_ptr<T> instead of a raw pointer. + USR_INTP_FIELD(); // Error. + ^ +raw_ptr_fields_macro.cpp:10:31: note: expanded from macro 'USR_INTP_FIELD' +#define USR_INTP_FIELD() int* macro_ptr + ^ +59 errors generated.
diff --git a/tools/clang/plugins/tests/system/raw_ptr_system_test.h b/tools/clang/plugins/tests/system/raw_ptr_system_test.h index 3861716..1a83b3f 100644 --- a/tools/clang/plugins/tests/system/raw_ptr_system_test.h +++ b/tools/clang/plugins/tests/system/raw_ptr_system_test.h
@@ -14,34 +14,40 @@ #define SYS_TYPE_WITH_SUFFIX(TYP) TYP##Suffix #define SYS_SYMBOL(SYM) SYM #define SYS_SYMBOL_WITH_SUFFIX(SYM) SYM##_Suffix +#define SYS_EQ = +#define SYS_NULLPTR nullptr class SysTypSuffix; // OK: code owner has no control over system header. struct SysStructWithSysMacro { - int* ptr0; - SYS_INT* ptr1; - SYS_INTP ptr2; - int* SYS_CONST ptr3; - int* SYS_ATTR ptr4; - SYS_INTP_FIELD(); - SYS_TYPE_WITH_SUFFIX(SysTyp) * ptr5; - int* SYS_SYMBOL(ptr6); - int* SYS_SYMBOL_WITH_SUFFIX(ptr7); + int* ptr0; // OK. + SYS_INT* ptr1; // OK. + SYS_INTP ptr2; // OK. + int* SYS_CONST ptr3; // OK. + int* SYS_ATTR ptr4; // OK. + SYS_INTP_FIELD(); // OK. + SYS_TYPE_WITH_SUFFIX(SysTyp) * ptr5; // OK. + int* SYS_SYMBOL(ptr6); // OK. + int* SYS_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 SYS_EQ nullptr; // OK. + int* ptr9 = SYS_NULLPTR; // OK. + int* SYS_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. }; -// These `CMD_***` macro should be defined before including this header, -// in command line arguments. -// OK: code owner has no control over system header. +// OK: code owner has no control over system header and command line. struct SysStructWithCmdMacro { - int* ptr0; - CMD_INT* ptr1; - CMD_INTP ptr2; - int* CMD_CONST ptr3; - int* CMD_ATTR ptr4; - CMD_INTP_FIELD(); - CMD_TYPE_WITH_SUFFIX(SysTyp) * ptr5; - int* CMD_SYMBOL(ptr6); - int* CMD_SYMBOL_WITH_SUFFIX(ptr7); + int* ptr0; // OK. + CMD_INT* ptr1; // OK. + CMD_INTP ptr2; // OK. + int* CMD_CONST ptr3; // OK. + int* CMD_ATTR ptr4; // OK. + CMD_INTP_FIELD(); // OK. + CMD_TYPE_WITH_SUFFIX(SysTyp) * ptr5; // OK. + int* CMD_SYMBOL(ptr6); // OK. + int* CMD_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 CMD_EQ nullptr; // OK. + int* ptr9 = CMD_NULLPTR; // OK. + int* CMD_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. }; // These `USR_***` macro should be defined before including this header, @@ -66,6 +72,61 @@ // OK: the source location for this field declaration will be "<scratch // space>" and the real file path cannot be detected. int* USR_SYMBOL_WITH_SUFFIX(ptr7); + // OK: code owner has no control over system header. + int* ptr8 USR_EQ nullptr; + // OK: code owner has no control over system header. + int* ptr9 = USR_NULLPTR; + // OK: the source location for this field declaration will be "<scratch + // space>" and the real file path cannot be detected. + int* USR_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; +}; + +// Same as for SysStructWithSysMacro. +struct SysStructWithThirdPartyMacro { + int* ptr0; // OK. + TP_INT* ptr1; // OK. + TP_INTP ptr2; // OK. + int* TP_CONST ptr3; // OK. + int* TP_ATTR ptr4; // OK. + TP_INTP_FIELD(); // OK. + TP_TYPE_WITH_SUFFIX(SysTyp) * ptr5; // OK. + int* TP_SYMBOL(ptr6); // OK. + int* TP_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 TP_EQ nullptr; // OK. + int* ptr9 = TP_NULLPTR; // OK. + int* TP_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +// Same as for SysStructWithSysMacro. +struct SysStructWithManuallyIgnoredMacro { + int* ptr0; // OK. + IG_INT* ptr1; // OK. + IG_INTP ptr2; // OK. + int* IG_CONST ptr3; // OK. + int* IG_ATTR ptr4; // OK. + IG_INTP_FIELD(); // OK. + IG_TYPE_WITH_SUFFIX(SysTyp) * ptr5; // OK. + int* IG_SYMBOL(ptr6); // OK. + int* IG_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 IG_EQ nullptr; // OK. + int* ptr9 = IG_NULLPTR; // OK. + int* IG_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. +}; + +// Same as for SysStructWithSysMacro. +struct SysStructWithGeneratedMacro { + int* ptr0; // OK. + GEN_INT* ptr1; // OK. + GEN_INTP ptr2; // OK. + int* GEN_CONST ptr3; // OK. + int* GEN_ATTR ptr4; // OK. + GEN_INTP_FIELD(); // OK. + GEN_TYPE_WITH_SUFFIX(SysTyp) * ptr5; // OK. + int* GEN_SYMBOL(ptr6); // OK. + int* GEN_SYMBOL_WITH_SUFFIX(ptr7); // OK. + int* ptr8 GEN_EQ nullptr; // OK. + int* ptr9 = GEN_NULLPTR; // OK. + int* GEN_SYMBOL_WITH_SUFFIX(ptr10) = nullptr; // OK. }; #endif // TOOLS_CLANG_PLUGINS_TESTS_SYSTEM_RAW_PTR_SYSTEM_TEST_H_
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 708649d..25941fe 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -26542,6 +26542,14 @@ <int value="9" label="Composited Not Axis Aligned - Shear Transform"/> <int value="10" label="Composited Not Axis Aligned - Rotated Transform"/> <int value="11" label="Composited Feature Disabled"/> + <int value="12" label="Composited Candidate Failed (Other)"/> + <int value="13" label="Composited Candidate Bad Blend Mode"/> + <int value="14" label="Composited Candidate Bad Quad Material"/> + <int value="15" label="Composited Candidate Bad Buffer Format"/> + <int value="16" label="Composited Candidate Has Near Filter"/> + <int value="17" label="Composited Candidate Not Shared Image"/> + <int value="18" label="Composited Candidate Bad Mask Filter"/> + <int value="19" label="Composited Candidate Has Transform Can't Clip"/> </enum> <enum name="DeleteBrowsingDataAction"> @@ -37573,7 +37581,6 @@ <int value="1817" label="USERSCRIPTS_REGISTER"/> <int value="1818" label="OS_DIAGNOSTICS_RUNBLUETOOTHSCANNINGROUTINE"/> <int value="1819" label="OS_DIAGNOSTICS_RUNBLUETOOTHPAIRINGROUTINE"/> - <int value="1820" label="ACCESSIBILITY_PRIVATE_SHOWTOAST"/> </enum> <enum name="ExtensionIconState"> @@ -63668,7 +63675,6 @@ label="LinkManagedNoticeToChromeUIManagementURL:disabled"/> <int value="-364587218" label="ResourceLoadScheduler:enabled"/> <int value="-364510698" label="MultiProfileAccountConsistency:disabled"/> - <int value="-364449609" label="RenameJourneys:enabled"/> <int value="-364325011" label="enable-files-quick-view"/> <int value="-364267715" label="disable-native-cups"/> <int value="-363885137" label="StoragePressureEvent:disabled"/> @@ -64783,7 +64789,6 @@ <int value="198386935" label="OmitCorsClientCert:enabled"/> <int value="198719062" label="WebAssemblyLazyCompilation:disabled"/> <int value="198762155" label="SharingPeerConnectionSender:enabled"/> - <int value="199237368" label="RenameJourneys:disabled"/> <int value="200347243" label="WebVRExperimentalRendering:disabled"/> <int value="201077617" label="FedCmAutoReauthnFlag:disabled"/> <int value="201203491" @@ -77755,8 +77760,6 @@ <int value="18" label="Scalable IPH Bubble"/> <int value="19" label="Video Conference Tray Camera And Microphone Use While Disabled"/> - <int value="20" label="Multitask Menu Clamshell"/> - <int value="21" label="Multitask Menu Tablet"/> </enum> <enum name="NukeProfileResult"> @@ -96199,6 +96202,7 @@ <int value="4" label="SqlBindValuesError"/> <int value="5" label="SqlQueryRunError"/> <int value="6" label="ResultTensorError"/> + <int value="7" label="Success"/> </enum> <enum name="SegmentationPlatformModelExecutionStatus"> @@ -104448,7 +104452,6 @@ <int value="41" label="Video Conference Tray Speak-On-Mute Detected"/> <int value="42" label="Copy Gif To Clipboard Action"/> <int value="44" label="Battery Saver Disabled"/> - <int value="45" label="Dictation No Focused Text Field"/> </enum> <enum name="TokenBinding.KeyMatch">
diff --git a/tools/metrics/histograms/metadata/ash/histograms.xml b/tools/metrics/histograms/metadata/ash/histograms.xml index 408269a..9b13bd82 100644 --- a/tools/metrics/histograms/metadata/ash/histograms.xml +++ b/tools/metrics/histograms/metadata/ash/histograms.xml
@@ -2259,7 +2259,7 @@ </histogram> <histogram name="Ash.Desks.AssignToAllDesksSource" - enum="DesksAssignToAllDesksSource" expires_after="2023-09-03"> + enum="DesksAssignToAllDesksSource" expires_after="2024-08-21"> <owner>zxdan@chromium.org</owner> <owner>janetmac@chromium.org</owner> <summary> @@ -6214,7 +6214,7 @@ </histogram> <histogram name="Ash.SplitView.EntryPoint.DeviceUIMode" enum="DeviceMode" - expires_after="2023-07-31"> + expires_after="2024-08-21"> <owner>xdai@chromium.org</owner> <owner>zxdan@chromium.org</owner> <owner>nupurjain@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/autofill/histograms.xml b/tools/metrics/histograms/metadata/autofill/histograms.xml index 4d620d0..3cd0dd5 100644 --- a/tools/metrics/histograms/metadata/autofill/histograms.xml +++ b/tools/metrics/histograms/metadata/autofill/histograms.xml
@@ -1386,7 +1386,7 @@ <histogram name="Autofill.CreditCardSaveFlowResult.{SaveDestination}{SaveSituation}" - enum="AutofillCreditCardSaveFlowResult" expires_after="2023-09-30"> + enum="AutofillCreditCardSaveFlowResult" expires_after="2024-07-01"> <owner>jsaul@google.com</owner> <owner>chrome-autofill-alerts@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/interstitial/histograms.xml b/tools/metrics/histograms/metadata/interstitial/histograms.xml index a42b121..bac6604 100644 --- a/tools/metrics/histograms/metadata/interstitial/histograms.xml +++ b/tools/metrics/histograms/metadata/interstitial/histograms.xml
@@ -27,7 +27,7 @@ </variants> <histogram name="interstitial.captive_portal" - enum="CaptivePortalBlockingPageEvent" expires_after="2023-09-03"> + enum="CaptivePortalBlockingPageEvent" expires_after="2024-09-03"> <owner>meacer@chromium.org</owner> <owner>michaeldo@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/network/histograms.xml b/tools/metrics/histograms/metadata/network/histograms.xml index 815d47e..9258f031 100644 --- a/tools/metrics/histograms/metadata/network/histograms.xml +++ b/tools/metrics/histograms/metadata/network/histograms.xml
@@ -3869,7 +3869,7 @@ </histogram> <histogram name="Network.VisibilityAwareResourceScheduler.Deprioritized" - units="Boolean" expires_after="2023-09-30"> + units="Boolean" expires_after="2024-01-22"> <owner>bashi@chromium.org</owner> <owner>blink-network-stack@google.com</owner> <summary>
diff --git a/tools/typescript/definitions/developer_private.d.ts b/tools/typescript/definitions/developer_private.d.ts index 43effdc..5e67292 100644 --- a/tools/typescript/definitions/developer_private.d.ts +++ b/tools/typescript/definitions/developer_private.d.ts
@@ -212,6 +212,7 @@ export interface Permissions { simplePermissions: chrome.developerPrivate.Permission[]; runtimeHostPermissions?: RuntimeHostPermissions; + canAccessSiteData: boolean; } export interface ExtensionInfo {
diff --git a/ui/color/material_ui_color_mixer.cc b/ui/color/material_ui_color_mixer.cc index 1811509..da2baee 100644 --- a/ui/color/material_ui_color_mixer.cc +++ b/ui/color/material_ui_color_mixer.cc
@@ -49,7 +49,7 @@ mixer[kColorButtonBackgroundProminentFocused] = {GetResultingPaintColor( {kColorSysStateFocus}, {kColorButtonBackgroundProminent})}; mixer[kColorButtonBorder] = {kColorSysTonalOutline}; - mixer[kColorButtonBorderDisabled] = {kColorSysStateDisabled}; + mixer[kColorButtonBorderDisabled] = {kColorSysStateDisabledContainer}; mixer[kColorButtonFeatureAttentionHighlight] = SetAlpha({kColorSysPrimary}, kAttentionHighlightAlpha); mixer[kColorButtonForeground] = {kColorSysPrimary};
diff --git a/ui/file_manager/file_manager/background/js/runtime_loaded_test_util.js b/ui/file_manager/file_manager/background/js/runtime_loaded_test_util.js index bc381edb..cd829a2a 100644 --- a/ui/file_manager/file_manager/background/js/runtime_loaded_test_util.js +++ b/ui/file_manager/file_manager/background/js/runtime_loaded_test_util.js
@@ -1059,7 +1059,7 @@ } // Prepare arguments. if (!('args' in request)) { - throw new Error('Invalid request.'); + throw new Error('Invalid request: no args provided.'); } const args = request.args.slice(); // shallow copy
diff --git a/ui/gl/gl_display_egl.mm b/ui/gl/gl_display_egl.mm index c44367c9..f55cb72 100644 --- a/ui/gl/gl_display_egl.mm +++ b/ui/gl/gl_display_egl.mm
@@ -22,7 +22,7 @@ namespace gl { struct GLDisplayEGL::ObjCStorage { - base::scoped_nsprotocol<id<MTLSharedEvent>> metal_shared_event; + base::apple::scoped_nsprotocol<id<MTLSharedEvent>> metal_shared_event; uint64_t metal_signaled_value = 0; };
diff --git a/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc b/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc index e1f4d1e..c120c04 100644 --- a/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc +++ b/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc
@@ -11,7 +11,6 @@ #include <string> #include <utility> -#include "base/containers/flat_map.h" #include "base/logging.h" #include "base/memory/raw_ptr.h" #include "base/metrics/histogram_functions.h" @@ -273,6 +272,19 @@ if (drm->device_path().value().find(event_dev_path) == std::string::npos) continue; + // Get the connector's ID and convert it to an int. + const std::string connector_id_str = + GetEventPropertyByKey("CONNECTOR", event_props); + if (connector_id_str.empty()) { + break; + } + uint32_t connector_id; + { + const bool conversion_success = + base::StringToUint(connector_id_str, &connector_id); + DCHECK(conversion_success); + } + // Get the trigger property's ID and convert to an int. const std::string trigger_prop_id_str = GetEventPropertyByKey("PROPERTY", event_props); @@ -280,15 +292,27 @@ break; uint32_t trigger_prop_id; - const bool conversion_success = - base::StringToUint(trigger_prop_id_str, &trigger_prop_id); - DCHECK(conversion_success); + { + const bool conversion_success = + base::StringToUint(trigger_prop_id_str, &trigger_prop_id); + DCHECK(conversion_success); + } + + ScopedDrmObjectPropertyPtr property_values( + drm->GetObjectProperties(connector_id, DRM_MODE_OBJECT_CONNECTOR)); + DCHECK(property_values); // Fetch the name of the property from the device. ScopedDrmPropertyPtr drm_property(drm->GetProperty(trigger_prop_id)); DCHECK(drm_property); + const std::string enum_value = + GetEnumNameForProperty(*drm_property, *property_values); + DCHECK(!enum_value.empty()); + trigger_prop_log = - "[trigger property: " + std::string(drm_property->name) + "] "; + "[CONNECTOR:" + connector_id_str + + "] trigger property: " + std::string(drm_property->name) + "=" + + enum_value + ", "; for (const char* blocked_prop : kBlockedEventsByTriggerProperty) { if (strcmp(drm_property->name, blocked_prop) == 0) { VLOG(1) << log_prefix << trigger_prop_log
diff --git a/ui/views/controls/tabbed_pane/OWNERS b/ui/views/controls/tabbed_pane/OWNERS index 80d20216..7a920ed 100644 --- a/ui/views/controls/tabbed_pane/OWNERS +++ b/ui/views/controls/tabbed_pane/OWNERS
@@ -1,2 +1 @@ ellyjones@chromium.org -msw@chromium.org
diff --git a/ui/webui/resources/cr_components/most_visited/most_visited.html b/ui/webui/resources/cr_components/most_visited/most_visited.html index fd77a89..95ae4f95 100644 --- a/ui/webui/resources/cr_components/most_visited/most_visited.html +++ b/ui/webui/resources/cr_components/most_visited/most_visited.html
@@ -174,11 +174,6 @@ width: 88px; } - :host([use-title-pill_]) .tile-title { - background-color: white; - color: var(--google-grey-800); - } - .tile-title span { font-weight: 400; overflow: hidden; @@ -196,10 +191,6 @@ white-space: initial; } - :host([use-title-pill_]) .tile-title span { - text-shadow: none; - } - .title-rtl { direction: rtl; }
diff --git a/ui/webui/resources/cr_components/most_visited/most_visited.mojom b/ui/webui/resources/cr_components/most_visited/most_visited.mojom index 351529ea..07103ef 100644 --- a/ui/webui/resources/cr_components/most_visited/most_visited.mojom +++ b/ui/webui/resources/cr_components/most_visited/most_visited.mojom
@@ -26,8 +26,6 @@ skia.mojom.SkColor background_color; // True if |background_color| is dark. bool use_white_tile_icon; - // True if the shortcuts titles should be wrapped in a pill. - bool use_title_pill; // True if the theme is dark (e.g. NTP background color is dark). bool is_dark; };
diff --git a/ui/webui/resources/cr_components/most_visited/most_visited.ts b/ui/webui/resources/cr_components/most_visited/most_visited.ts index a8797ae..914a12e 100644 --- a/ui/webui/resources/cr_components/most_visited/most_visited.ts +++ b/ui/webui/resources/cr_components/most_visited/most_visited.ts
@@ -118,15 +118,6 @@ computed: `computeUseWhiteTileIcon_(theme)`, }, - /** - * If true wraps the tile titles in white pills. - */ - useTitlePill_: { - type: Boolean, - reflectToAttribute: true, - computed: `computeUseTitlePill_(theme)`, - }, - columnCount_: { type: Number, computed: @@ -226,7 +217,6 @@ public reflowOnOverflow: boolean; public singleRow: boolean; private useWhiteTileIcon_: boolean; - private useTitlePill_: boolean; private columnCount_: number; private rowCount_: number; private customLinksEnabled_: boolean; @@ -429,10 +419,6 @@ return this.theme ? this.theme.useWhiteTileIcon : false; } - private computeUseTitlePill_(): boolean { - return this.theme ? this.theme.useTitlePill : false; - } - /** * If a pointer is over a tile rect that is different from the one being * dragged, the dragging tile is moved to the new position. The reordering