diff --git a/DEPS b/DEPS index be315bc..0203fa5 100644 --- a/DEPS +++ b/DEPS
@@ -280,11 +280,11 @@ # 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': 'fe8bac8f2251b50ce93a62d044495d36713bbbef', + 'skia_revision': '8cfeb42c62452da46fb5c6eef04a9a9c8c1d173a', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': '4551bf13781091625662a39f2b02b3b9ebe1c42b', + 'v8_revision': '41dacffe436aeb9311879cb07648f1e36609a804', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. @@ -300,7 +300,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling BoringSSL # and whatever else without interference from each other. - 'boringssl_revision': '04c19925b088e8b884080ee6bd3d771d40e3c3a9', + 'boringssl_revision': '5700c339249fd99180d9834c9cc0256e7e1cc6b9', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Fuchsia sdk # and whatever else without interference from each other. @@ -372,7 +372,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling devtools-frontend # and whatever else without interference from each other. - 'devtools_frontend_revision': '97928d6f6cccc7bd47fb2afe0d3ddeed9cc9ef2a', + 'devtools_frontend_revision': '8f96d8b673f7b4a0479955ff573fbff1e014b23e', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libprotobuf-mutator # and whatever else without interference from each other. @@ -396,7 +396,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'dawn_revision': 'a15bad593af06a881fbbbfcebf2e58c18e1cf6f1', + 'dawn_revision': '7f24ec953f266a5a1ed320d571a74ed69ae0c3ea', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -496,7 +496,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling llvm-libc # and whatever else without interference from each other. - 'llvm_libc_revision': 'b0de9011b9f34818da12b1448f40e212f611afa3', + 'llvm_libc_revision': '60b7db20ace1cb750f8e9e06e7e9c7c6585ace42', # If you change this, also update the libc++ revision in # //buildtools/deps_revisions.gni. @@ -1201,6 +1201,74 @@ ], }, + # Branded builds for testing previous interface without `install_id` support. + 'src/third_party/updater/chrome_linux64_sans_iid/cipd': { + 'dep_type': 'cipd', + 'condition': 'checkout_linux and non_git_source', + 'packages': [ + { + 'package': 'chromium/third_party/updater/chrome_linux64', + 'version': 'ytJ0UbU9gMLUMLRQlmqQpGpOy1dYswI3rOJ0ILnIFbUC', + }, + ], + }, + + 'src/third_party/updater/chrome_mac_universal_sans_iid/cipd': { + 'dep_type': 'cipd', + 'condition': 'checkout_mac', + 'packages': [ + { + 'package': 'chromium/third_party/updater/chrome_mac_universal', + 'version': 'gzutuY-G7u8n5746jgmishm8uWjUR070TXdFc23Ea7YC', + }, + ], + }, + + 'src/third_party/updater/chrome_mac_universal_prod_sans_iid/cipd': { + 'dep_type': 'cipd', + 'condition': 'checkout_mac', + 'packages': [ + { + 'package': 'chromium/third_party/updater/chrome_mac_universal_prod', + # 129.0.6651.0 + 'version': 'IrAigaqukp1GbaksroZcR3Jo0oOYKg9kzatjzNNbXKQC', + }, + ], + }, + + 'src/third_party/updater/chrome_win_arm64_sans_iid/cipd': { + 'dep_type': 'cipd', + 'condition': 'checkout_win', + 'packages': [ + { + 'package': 'chromium/third_party/updater/chrome_win_arm64', + 'version': 'OoGMyCUHah7D_AOVm4RpVoPOdkGqjFHuSMcoKTZ0rlsC', + }, + ], + }, + + 'src/third_party/updater/chrome_win_x86_sans_iid/cipd': { + 'dep_type': 'cipd', + 'condition': 'checkout_win', + 'packages': [ + { + 'package': 'chromium/third_party/updater/chrome_win_x86', + 'version': 'gqhcrVQFtXAKUu7yEISTlbrBpPaBUnQZ6FdOo5E4HLQC', + }, + ], + }, + + 'src/third_party/updater/chrome_win_x86_64_sans_iid/cipd': { + 'dep_type': 'cipd', + 'condition': 'checkout_win', + 'packages': [ + { + 'package': 'chromium/third_party/updater/chrome_win_x86_64', + 'version': 'koo1i4cAVdOK2-re2VGbx-crCcbTz9h0qumUk1hyEt0C', + }, + ], + }, + 'src/third_party/updater/chromium_linux64/cipd': { 'dep_type': 'cipd', 'condition': 'checkout_linux and non_git_source', @@ -1272,6 +1340,73 @@ ], }, + # Chromium builds for testing previous interface without `install_id` support. + 'src/third_party/updater/chromium_linux64_sans_iid/cipd': { + 'dep_type': 'cipd', + 'condition': 'checkout_linux and non_git_source', + 'packages': [ + { + 'package': 'chromium/third_party/updater/chromium_linux64', + 'version': 'OLbfeePAbqPnFqcPmkFtR-GK8dN3T3NeH2AChZwBHjgC', + }, + ], + }, + + 'src/third_party/updater/chromium_mac_amd64_sans_iid/cipd': { + 'dep_type': 'cipd', + 'condition': 'checkout_mac', + 'packages': [ + { + 'package': 'chromium/third_party/updater/chromium_mac_amd64', + 'version': 'zVv93X5XSClxTR1YejkQuBdSpye7JfPS_h6GcH1N4i4C', + }, + ], + }, + + 'src/third_party/updater/chromium_mac_arm64_sans_iid/cipd': { + 'dep_type': 'cipd', + 'condition': 'checkout_mac', + 'packages': [ + { + 'package': 'chromium/third_party/updater/chromium_mac_arm64', + 'version': 'Va20qxSst3lq4WfEZlWiwzXCpSo5XbhhuqJXyqzvhF8C', + }, + ], + }, + + 'src/third_party/updater/chromium_win_arm64_sans_iid/cipd': { + 'dep_type': 'cipd', + 'condition': 'checkout_win', + 'packages': [ + { + 'package': 'chromium/third_party/updater/chromium_win_arm64', + 'version': 'ksRzLnqewvz7P-YMX2e8mxZuDI1hgPtLNCuAXIisXhoC', + }, + ], + }, + + 'src/third_party/updater/chromium_win_x86_sans_iid/cipd': { + 'dep_type': 'cipd', + 'condition': 'checkout_win', + 'packages': [ + { + 'package': 'chromium/third_party/updater/chromium_win_x86', + 'version': 'tcFWGGE3wmwKDhT_s-9mzPiQVYxMOI1U9sRAhm1_5QcC', + }, + ], + }, + + 'src/third_party/updater/chromium_win_x86_64_sans_iid/cipd': { + 'dep_type': 'cipd', + 'condition': 'checkout_win', + 'packages': [ + { + 'package': 'chromium/third_party/updater/chromium_win_x86_64', + 'version': 'iXamEEmbStVBV_c-vEG4Xtrda8tTqSRCZ-tmE7VRHb0C', + }, + ], + }, + 'src/chrome/test/data/autofill/captured_sites/artifacts': { 'url': Var('chrome_git') + '/chrome/test/captured_sites/autofill.git' + '@' + '8c66a34eccf070d66903db5db487bc1de597e7c6', 'condition': 'checkout_chromium_autofill_test_dependencies', @@ -1304,7 +1439,7 @@ 'src/clank': { 'url': Var('chrome_git') + '/clank/internal/apps.git' + '@' + - '9538b5ce9a3291d7c7ad7bd04a9e31d15812fe28', + '8875e162d803889db7e9d5c9b6676d169db30aa1', 'condition': 'checkout_android and checkout_src_internal', }, @@ -1463,7 +1598,7 @@ 'packages': [ { 'package': 'chromium/third_party/androidx', - 'version': '7Ly5SKSpj-BSWl8ZfieWHKNKzAQFLh71VbvmMELC-8IC', + 'version': '5FPxOMviuHFLMoBhoe5SlMKIsBwoKK7JF1_OxzjvFDYC', }, ], 'condition': 'checkout_android and non_git_source', @@ -2301,7 +2436,7 @@ Var('pdfium_git') + '/pdfium.git' + '@' + Var('pdfium_revision'), 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + '16c0f5bc196947725c1f24ef519c0bdc47b6222f', + Var('android_git') + '/platform/external/perfetto.git' + '@' + 'b01e3ae88f223ecfa865f46918688481f15f0865', 'src/base/tracing/test/data': { 'bucket': 'perfetto', @@ -2669,7 +2804,7 @@ Var('chromium_git') + '/webpagereplay.git' + '@' + Var('webpagereplay_revision'), 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '14e46ed65c828d39d438d925a21b080a5a0a6190', + Var('webrtc_git') + '/src.git' + '@' + 'b91e97f9da08f882db6081fbf39c627fa94d6686', # Wuffs' canonical repository is at github.com/google/wuffs, but we use # Skia's mirror of Wuffs, the same as in upstream Skia's DEPS file. @@ -4497,7 +4632,7 @@ 'src/ios_internal': { 'url': Var('chrome_git') + '/chrome/ios_internal.git' + '@' + - '318acc714eeb02ac2fd443810f5143f4830ca6a4', + 'ba473974f6fdf62e0efae4aab100347b54ba17d2', 'condition': 'checkout_ios and checkout_src_internal', },
diff --git a/android_webview/test/data/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt b/android_webview/test/data/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt index 2c92351e..8b316e4 100644 --- a/android_webview/test/data/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt +++ b/android_webview/test/data/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt
@@ -3524,7 +3524,6 @@ getter alt getter attributionSrc getter border - getter browsingTopics getter complete getter crossOrigin getter currentSrc @@ -3554,7 +3553,6 @@ setter alt setter attributionSrc setter border - setter browsingTopics setter crossOrigin setter decoding setter fetchPriority @@ -4616,7 +4614,6 @@ getter alt getter attributionSrc getter border - getter browsingTopics getter complete getter crossOrigin getter currentSrc @@ -4646,7 +4643,6 @@ setter alt setter attributionSrc setter border - setter browsingTopics setter crossOrigin setter decoding setter fetchPriority
diff --git a/android_webview/test/data/web_tests/webexposed/global-interface-listing-expected.txt b/android_webview/test/data/web_tests/webexposed/global-interface-listing-expected.txt index b2e3cf4..e0a67c62 100644 --- a/android_webview/test/data/web_tests/webexposed/global-interface-listing-expected.txt +++ b/android_webview/test/data/web_tests/webexposed/global-interface-listing-expected.txt
@@ -3522,7 +3522,6 @@ getter alt getter attributionSrc getter border - getter browsingTopics getter complete getter crossOrigin getter currentSrc @@ -3552,7 +3551,6 @@ setter alt setter attributionSrc setter border - setter browsingTopics setter crossOrigin setter decoding setter fetchPriority @@ -4614,7 +4612,6 @@ getter alt getter attributionSrc getter border - getter browsingTopics getter complete getter crossOrigin getter currentSrc @@ -4644,7 +4641,6 @@ setter alt setter attributionSrc setter border - setter browsingTopics setter crossOrigin setter decoding setter fetchPriority
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index ec4ab277..308ea171 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -2050,8 +2050,6 @@ "system/mahi/mahi_ui_update.h", "system/mahi/mahi_utils.cc", "system/mahi/mahi_utils.h", - "system/mahi/mahi_widget_delegate.cc", - "system/mahi/mahi_widget_delegate.h", "system/mahi/refresh_banner_view.cc", "system/mahi/refresh_banner_view.h", "system/mahi/summary_outlines_elucidation_section.cc", @@ -5397,6 +5395,7 @@ "//ash", "//ash/webui/annotator:test_support", "//chromeos/ash/components/multidevice:test_support", + "//chromeos/ash/components/specialized_features", "//chromeos/ash/services/assistant/public/mojom", "//chromeos/ash/services/network_config/public/cpp:test_support", "//dbus",
diff --git a/ash/app_list/app_list_controller_impl.cc b/ash/app_list/app_list_controller_impl.cc index 4bcfc2d..3485c17 100644 --- a/ash/app_list/app_list_controller_impl.cc +++ b/ash/app_list/app_list_controller_impl.cc
@@ -74,6 +74,7 @@ #include "base/metrics/histogram_macros.h" #include "base/metrics/user_metrics.h" #include "base/trace_event/trace_event.h" +#include "chromeos/ash/services/assistant/public/cpp/assistant_browser_delegate.h" #include "chromeos/ash/services/assistant/public/cpp/assistant_enums.h" #include "chromeos/ash/services/assistant/public/cpp/features.h" #include "components/pref_registry/pref_registry_syncable.h" @@ -1797,15 +1798,15 @@ void AppListControllerImpl::UpdateSearchBoxUiVisibilities() { SearchBoxModel* search_box_model = GetSearchModel()->search_box(); search_box_model->SetShowAssistantButton(IsAssistantAllowedAndEnabled()); - // TODO(crbug.com/384781179): wire this to entry point eligibility check code - search_box_model->SetShowAssistantNewEntryPointButton( - ash::assistant::features::IsNewEntryPointEnabled()); search_box_model->SetShowSunfishButton(IsSunfishAllowedAndEnabled()); if (!client_) { return; } + client_->GetAssistantNewEntryPointEligibility(base::BindOnce( + &AppListControllerImpl::OnAssistantNewEntryPointEligibilityReady, + weak_ptr_factory_.GetWeakPtr())); client_->RecalculateWouldTriggerLauncherSearchIph(); } @@ -2074,6 +2075,11 @@ : kShellWindowId_AppListContainer; } +void AppListControllerImpl::OnAssistantNewEntryPointEligibilityReady( + bool eligible) { + GetSearchModel()->search_box()->SetShowAssistantNewEntryPointButton(eligible); +} + int AppListControllerImpl::GetPreferredBubbleWidth( aura::Window* root_window) const { DCHECK(bubble_presenter_);
diff --git a/ash/app_list/app_list_controller_impl.h b/ash/app_list/app_list_controller_impl.h index 58bc90b1..1dd6659 100644 --- a/ash/app_list/app_list_controller_impl.h +++ b/ash/app_list/app_list_controller_impl.h
@@ -437,6 +437,10 @@ // Gets the container which should contain the fullscreen launcher. int GetFullscreenLauncherContainerId() const; + // Called when eligibility of Assistant new entry point is read. The read is + // done as an async operation. + void OnAssistantNewEntryPointEligibilityReady(bool eligible); + // Whether the home launcher is // * being shown (either through an animation or a drag) // * being hidden (either through an animation or a drag)
diff --git a/ash/app_list/test_app_list_client.cc b/ash/app_list/test_app_list_client.cc index a85e037d..e1a777d 100644 --- a/ash/app_list/test_app_list_client.cc +++ b/ash/app_list/test_app_list_client.cc
@@ -13,6 +13,7 @@ #include "base/functional/bind.h" #include "base/task/sequenced_task_runner.h" #include "base/time/time.h" +#include "chromeos/ash/services/assistant/public/cpp/features.h" #include "ui/menus/simple_menu_model.h" namespace ash { @@ -154,4 +155,9 @@ return false; } +void TestAppListClient::GetAssistantNewEntryPointEligibility( + GetAssistantNewEntryPointEligibilityCallback callback) { + std::move(callback).Run(ash::assistant::features::IsNewEntryPointEnabled()); +} + } // namespace ash
diff --git a/ash/app_list/test_app_list_client.h b/ash/app_list/test_app_list_client.h index 59fc461..de78a7c 100644 --- a/ash/app_list/test_app_list_client.h +++ b/ash/app_list/test_app_list_client.h
@@ -71,6 +71,8 @@ const std::vector<std::string>& apps_below_the_fold, bool is_apps_collections_page) override; bool HasReordered() override; + void GetAssistantNewEntryPointEligibility( + GetAssistantNewEntryPointEligibilityCallback callback) override; int start_zero_state_search_count() const { return start_zero_state_search_count_;
diff --git a/ash/app_list/views/search_box_view_unittest.cc b/ash/app_list/views/search_box_view_unittest.cc index f14ec813..5d6dc258 100644 --- a/ash/app_list/views/search_box_view_unittest.cc +++ b/ash/app_list/views/search_box_view_unittest.cc
@@ -1407,6 +1407,7 @@ ->GetSearchBoxView() ->assistant_new_entry_point_button(); ASSERT_TRUE(new_entry_point_button); + ASSERT_TRUE(new_entry_point_button->GetVisible()); ui::test::EventGenerator* generator = GetEventGenerator(); if (IsTabletMode()) {
diff --git a/ash/components/arc/audio/OWNERS b/ash/components/arc/audio/OWNERS new file mode 100644 index 0000000..ed9981cc --- /dev/null +++ b/ash/components/arc/audio/OWNERS
@@ -0,0 +1,3 @@ +per-file *_mojom_traits*.*=set noparent +per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS +per-file *_mojom_traits*.*=file://chromeos/SECURITY_OWNERS
diff --git a/ash/components/arc/audio/arc_audio_bridge.cc b/ash/components/arc/audio/arc_audio_bridge.cc index 7a9db00..02bc5a43 100644 --- a/ash/components/arc/audio/arc_audio_bridge.cc +++ b/ash/components/arc/audio/arc_audio_bridge.cc
@@ -72,6 +72,9 @@ void ArcAudioBridge::OnConnectionReady() { // TODO(hidehiko): Replace with ConnectionHolder::IsConnected(). available_ = true; + + SendAudioNodesState(); + SendSpatialAudioState(); } void ArcAudioBridge::OnConnectionClosed() { @@ -94,6 +97,10 @@ } void ArcAudioBridge::OnAudioNodesChanged() { + SendAudioNodesState(); +} + +void ArcAudioBridge::SendAudioNodesState() { uint64_t output_id = cras_audio_handler_->GetPrimaryActiveOutputNode(); const ash::AudioDevice* output_device = cras_audio_handler_->GetDeviceFromId(output_id); @@ -112,6 +119,10 @@ DVLOG(1) << "HEADPHONE " << headphone_inserted << " MICROPHONE " << microphone_inserted; SendSwitchState(headphone_inserted, microphone_inserted); + + if (output_device) { + SendOutputDeviceType(output_device->type); + } } void ArcAudioBridge::OnOutputNodeVolumeChanged(uint64_t node_id, int volume) { @@ -126,6 +137,10 @@ SendVolumeState(); } +void ArcAudioBridge::OnSpatialAudioStateChanged() { + SendSpatialAudioState(); +} + void ArcAudioBridge::SendSwitchState(bool headphone_inserted, bool microphone_inserted) { uint32_t switch_state = 0; @@ -157,6 +172,32 @@ audio_instance->NotifyVolumeState(volume_, muted_); } +void ArcAudioBridge::SendSpatialAudioState() { + const bool enabled = cras_audio_handler_->GetSpatialAudioState(); + DVLOG(1) << "Send spatial audio state " << enabled; + if (!available_) { + return; + } + mojom::AudioInstance* audio_instance = ARC_GET_INSTANCE_FOR_METHOD( + arc_bridge_service_->audio(), NotifySpatialAudioState); + if (audio_instance) { + audio_instance->NotifySpatialAudioState(enabled); + } +} + +void ArcAudioBridge::SendOutputDeviceType(AudioDeviceType device_type) { + DVLOG(1) << "Send output device type " + << AudioDevice::GetTypeString(device_type); + if (!available_) { + return; + } + mojom::AudioInstance* audio_instance = ARC_GET_INSTANCE_FOR_METHOD( + arc_bridge_service_->audio(), NotifyOutputDeviceInfo); + if (audio_instance) { + audio_instance->NotifyOutputDeviceInfo(device_type); + } +} + // static void ArcAudioBridge::EnsureFactoryBuilt() { ArcAudioBridgeFactory::GetInstance();
diff --git a/ash/components/arc/audio/arc_audio_bridge.h b/ash/components/arc/audio/arc_audio_bridge.h index 8456f0a..c182ed1 100644 --- a/ash/components/arc/audio/arc_audio_bridge.h +++ b/ash/components/arc/audio/arc_audio_bridge.h
@@ -53,9 +53,13 @@ void OnAudioNodesChanged() override; void OnOutputNodeVolumeChanged(uint64_t node_id, int volume) override; void OnOutputMuteChanged(bool mute_on) override; + void OnSpatialAudioStateChanged() override; void SendSwitchState(bool headphone_inserted, bool microphone_inserted); void SendVolumeState(); + void SendAudioNodesState(); + void SendSpatialAudioState(); + void SendOutputDeviceType(ash::AudioDeviceType device_type); const raw_ptr<ArcBridgeService> arc_bridge_service_; // Owned by ArcServiceManager.
diff --git a/ash/components/arc/audio/audio_mojom_traits.cc b/ash/components/arc/audio/audio_mojom_traits.cc new file mode 100644 index 0000000..9e1a429 --- /dev/null +++ b/ash/components/arc/audio/audio_mojom_traits.cc
@@ -0,0 +1,112 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/components/arc/audio/audio_mojom_traits.h" + +#include "base/notreached.h" + +namespace mojo { + +arc::mojom::AudioDeviceType +EnumTraits<arc::mojom::AudioDeviceType, ash::AudioDeviceType>::ToMojom( + ash::AudioDeviceType audio_device_type) { + switch (audio_device_type) { + case ash::AudioDeviceType::kHeadphone: + return arc::mojom::AudioDeviceType::HEADPHONE; + case ash::AudioDeviceType::kMic: + return arc::mojom::AudioDeviceType::MIC; + case ash::AudioDeviceType::kUsb: + return arc::mojom::AudioDeviceType::USB; + case ash::AudioDeviceType::kBluetooth: + return arc::mojom::AudioDeviceType::BLUETOOTH; + case ash::AudioDeviceType::kBluetoothNbMic: + return arc::mojom::AudioDeviceType::BLUETOOTH_NB_MIC; + case ash::AudioDeviceType::kHdmi: + return arc::mojom::AudioDeviceType::HDMI; + case ash::AudioDeviceType::kInternalSpeaker: + return arc::mojom::AudioDeviceType::INTERNAL_SPEAKER; + case ash::AudioDeviceType::kInternalMic: + return arc::mojom::AudioDeviceType::INTERNAL_MIC; + case ash::AudioDeviceType::kFrontMic: + return arc::mojom::AudioDeviceType::FRONT_MIC; + case ash::AudioDeviceType::kRearMic: + return arc::mojom::AudioDeviceType::REAR_MIC; + case ash::AudioDeviceType::kKeyboardMic: + return arc::mojom::AudioDeviceType::KEYBOARD_MIC; + case ash::AudioDeviceType::kHotword: + return arc::mojom::AudioDeviceType::HOTWORD; + case ash::AudioDeviceType::kLineout: + return arc::mojom::AudioDeviceType::LINEOUT; + case ash::AudioDeviceType::kPostMixLoopback: + return arc::mojom::AudioDeviceType::POST_MIX_LOOPBACK; + case ash::AudioDeviceType::kPostDspLoopback: + return arc::mojom::AudioDeviceType::POST_DSP_LOOPBACK; + case ash::AudioDeviceType::kAlsaLoopback: + return arc::mojom::AudioDeviceType::ALSA_LOOPBACK; + case ash::AudioDeviceType::kOther: + return arc::mojom::AudioDeviceType::OTHER; + } + NOTREACHED(); +} + +bool EnumTraits<arc::mojom::AudioDeviceType, ash::AudioDeviceType>::FromMojom( + arc::mojom::AudioDeviceType input, + ash::AudioDeviceType* out) { + switch (input) { + case arc::mojom::AudioDeviceType::HEADPHONE: + *out = ash::AudioDeviceType::kHeadphone; + return true; + case arc::mojom::AudioDeviceType::MIC: + *out = ash::AudioDeviceType::kMic; + return true; + case arc::mojom::AudioDeviceType::USB: + *out = ash::AudioDeviceType::kUsb; + return true; + case arc::mojom::AudioDeviceType::BLUETOOTH: + *out = ash::AudioDeviceType::kBluetooth; + return true; + case arc::mojom::AudioDeviceType::BLUETOOTH_NB_MIC: + *out = ash::AudioDeviceType::kBluetoothNbMic; + return true; + case arc::mojom::AudioDeviceType::HDMI: + *out = ash::AudioDeviceType::kHdmi; + return true; + case arc::mojom::AudioDeviceType::INTERNAL_SPEAKER: + *out = ash::AudioDeviceType::kInternalSpeaker; + return true; + case arc::mojom::AudioDeviceType::INTERNAL_MIC: + *out = ash::AudioDeviceType::kInternalMic; + return true; + case arc::mojom::AudioDeviceType::FRONT_MIC: + *out = ash::AudioDeviceType::kFrontMic; + return true; + case arc::mojom::AudioDeviceType::REAR_MIC: + *out = ash::AudioDeviceType::kRearMic; + return true; + case arc::mojom::AudioDeviceType::KEYBOARD_MIC: + *out = ash::AudioDeviceType::kKeyboardMic; + return true; + case arc::mojom::AudioDeviceType::HOTWORD: + *out = ash::AudioDeviceType::kHotword; + return true; + case arc::mojom::AudioDeviceType::LINEOUT: + *out = ash::AudioDeviceType::kLineout; + return true; + case arc::mojom::AudioDeviceType::POST_MIX_LOOPBACK: + *out = ash::AudioDeviceType::kPostMixLoopback; + return true; + case arc::mojom::AudioDeviceType::POST_DSP_LOOPBACK: + *out = ash::AudioDeviceType::kPostDspLoopback; + return true; + case arc::mojom::AudioDeviceType::ALSA_LOOPBACK: + *out = ash::AudioDeviceType::kAlsaLoopback; + return true; + case arc::mojom::AudioDeviceType::OTHER: + *out = ash::AudioDeviceType::kOther; + return true; + } + NOTREACHED(); +} + +} // namespace mojo
diff --git a/ash/components/arc/audio/audio_mojom_traits.h b/ash/components/arc/audio/audio_mojom_traits.h new file mode 100644 index 0000000..cc5b020 --- /dev/null +++ b/ash/components/arc/audio/audio_mojom_traits.h
@@ -0,0 +1,23 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef ASH_COMPONENTS_ARC_AUDIO_AUDIO_MOJOM_TRAITS_H_ +#define ASH_COMPONENTS_ARC_AUDIO_AUDIO_MOJOM_TRAITS_H_ + +#include "ash/components/arc/mojom/audio.mojom-shared.h" +#include "chromeos/ash/components/audio/audio_device.h" + +namespace mojo { + +template <> +struct EnumTraits<arc::mojom::AudioDeviceType, ash::AudioDeviceType> { + static arc::mojom::AudioDeviceType ToMojom( + ash::AudioDeviceType audio_device_type); + static bool FromMojom(arc::mojom::AudioDeviceType input, + ash::AudioDeviceType* out); +}; + +} // namespace mojo + +#endif // ASH_COMPONENTS_ARC_AUDIO_AUDIO_MOJOM_TRAITS_H_
diff --git a/ash/components/arc/mojom/BUILD.gn b/ash/components/arc/mojom/BUILD.gn index ca4713de..520a904d5 100644 --- a/ash/components/arc/mojom/BUILD.gn +++ b/ash/components/arc/mojom/BUILD.gn
@@ -248,6 +248,16 @@ "//ash/components/arc/volume_mounter/volume_mounter_mojom_traits.cc", ] }, + { + types = [ + { + mojom = "arc.mojom.AudioDeviceType" + cpp = "::ash::AudioDeviceType" + }, + ] + traits_headers = [ "//ash/components/arc/audio/audio_mojom_traits.h" ] + traits_sources = [ "//ash/components/arc/audio/audio_mojom_traits.cc" ] + }, ] }
diff --git a/ash/components/arc/mojom/audio.mojom b/ash/components/arc/mojom/audio.mojom index c749128..c02b56f2 100644 --- a/ash/components/arc/mojom/audio.mojom +++ b/ash/components/arc/mojom/audio.mojom
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Next MinVersion: 5 +// Next MinVersion: 6 module arc.mojom; @@ -13,6 +13,28 @@ SW_MICROPHONE_INSERT = 0x04 }; +// Use same values as chromeos/ash/components/audio/audio_device.h +[Extensible] +enum AudioDeviceType { + HEADPHONE, + MIC, + USB, + BLUETOOTH, + BLUETOOTH_NB_MIC, + HDMI, + INTERNAL_SPEAKER, + INTERNAL_MIC, + FRONT_MIC, + REAR_MIC, + KEYBOARD_MIC, + HOTWORD, + LINEOUT, + POST_MIX_LOOPBACK, + POST_DSP_LOOPBACK, + ALSA_LOOPBACK, + [Default] OTHER +}; + // Next method ID:2 interface AudioHost { // Tells the host to show the volume controls. @@ -25,7 +47,7 @@ }; // Deprecated method IDs: 1 -// Next method ID: 4 +// Next method ID: 6 interface AudioInstance { // Establishes full-duplex communication with the host. [MinVersion=4] Init@3(pending_remote<AudioHost> host_remote) => (); @@ -39,4 +61,10 @@ // volume ranges from 0 to 100. // muted == true if audio is muted. [MinVersion=2] NotifyVolumeState@2(uint32 volume, bool muted); + + // Notify whether the spatial audio is currently enabled or not. + [MinVersion=5] NotifySpatialAudioState@4(bool enabled); + + // Notify the active audio output device information. + [MinVersion=5] NotifyOutputDeviceInfo@5(AudioDeviceType device_type); };
diff --git a/ash/controls/contextual_tooltip.cc b/ash/controls/contextual_tooltip.cc index 6b82ece..e046639 100644 --- a/ash/controls/contextual_tooltip.cc +++ b/ash/controls/contextual_tooltip.cc
@@ -68,6 +68,8 @@ return "sea_pen_vc_background_intro_dialog"; case TooltipType::kSeaPenWallpaperIntroDialog: return "sea_pen_wallpaper_intro_dialog"; + case TooltipType::kSeaPenFreeformIntroDialog: + return "sea_pen_freeform_intro_dialog"; } return "invalid"; } @@ -146,7 +148,9 @@ (type == TooltipType::kSeaPenVcBackgroundIntroDialog && success_count >= kSuccessLimitSeaPenVcBackgroundIntroDialog) || (type == TooltipType::kSeaPenWallpaperIntroDialog && - success_count >= kSuccessLimitSeaPenWallpaperIntroDialog)) { + success_count >= kSuccessLimitSeaPenWallpaperIntroDialog) || + (type == TooltipType::kSeaPenFreeformIntroDialog && + success_count >= kSuccessLimitSeaPenFreeformIntroDialog)) { set_recheck_delay(base::TimeDelta()); return false; }
diff --git a/ash/controls/contextual_tooltip.h b/ash/controls/contextual_tooltip.h index 7cfa961..8903ac0 100644 --- a/ash/controls/contextual_tooltip.h +++ b/ash/controls/contextual_tooltip.h
@@ -25,6 +25,7 @@ kTimeOfDayWallpaperDialog, kSeaPenVcBackgroundIntroDialog, kSeaPenWallpaperIntroDialog, + kSeaPenFreeformIntroDialog, }; // These values are persisted to logs. Entries should not be renumbered and @@ -55,6 +56,7 @@ constexpr int kSuccessLimitTimeOfDayWallpaperDialog = 1; constexpr int kSuccessLimitSeaPenVcBackgroundIntroDialog = 1; constexpr int kSuccessLimitSeaPenWallpaperIntroDialog = 1; +constexpr int kSuccessLimitSeaPenFreeformIntroDialog = 1; // Minimum time between showing contextual nudges to the user. constexpr base::TimeDelta kMinInterval = base::Days(1);
diff --git a/ash/public/cpp/BUILD.gn b/ash/public/cpp/BUILD.gn index 83c3dc0..2d47cd6a 100644 --- a/ash/public/cpp/BUILD.gn +++ b/ash/public/cpp/BUILD.gn
@@ -311,8 +311,6 @@ "scanner/scanner_feedback_info.cc", "scanner/scanner_feedback_info.h", "scanner/scanner_profile_scoped_delegate.h", - "scanner/scanner_system_state.cc", - "scanner/scanner_system_state.h", "schedule_enums.cc", "schedule_enums.h", "scoped_clipboard_history_pause.h", @@ -449,6 +447,7 @@ "//chromeos/ash/components/auth_panel/public", "//chromeos/ash/components/cryptohome", "//chromeos/ash/components/osauth/public", + "//chromeos/ash/components/specialized_features", "//chromeos/ash/services/assistant/public/cpp", "//chromeos/ash/services/bluetooth_config:in_process_bluetooth_config", "//chromeos/ash/services/cellular_setup:in_process_esim_manager",
diff --git a/ash/public/cpp/app_list/app_list_client.h b/ash/public/cpp/app_list/app_list_client.h index fde33ba6..f3f8624 100644 --- a/ash/public/cpp/app_list/app_list_client.h +++ b/ash/public/cpp/app_list/app_list_client.h
@@ -157,6 +157,15 @@ // Whether the app list was reordered locally. virtual bool HasReordered() = 0; + // Callback for reading Assistant new entry point eligibility. + using GetAssistantNewEntryPointEligibilityCallback = + base::OnceCallback<void(bool)>; + + // Read Assistant new entry point eligibility from Assistant delegate as an + // async operation. + virtual void GetAssistantNewEntryPointEligibility( + GetAssistantNewEntryPointEligibilityCallback callback) = 0; + protected: virtual ~AppListClient() = default; };
diff --git a/ash/public/cpp/holding_space/holding_space_item_unittest.cc b/ash/public/cpp/holding_space/holding_space_item_unittest.cc index 7f8c3f88..3c2e51e 100644 --- a/ash/public/cpp/holding_space/holding_space_item_unittest.cc +++ b/ash/public/cpp/holding_space/holding_space_item_unittest.cc
@@ -20,7 +20,7 @@ #include "testing/gtest/include/gtest/gtest.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/chromeos/styles/cros_tokens_color_mappings.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" namespace ash { @@ -146,8 +146,7 @@ // It should be possible to update commands to a new value. std::vector<HoldingSpaceItem::InProgressCommand> in_progress_commands; in_progress_commands.push_back(HoldingSpaceItem::InProgressCommand( - HoldingSpaceCommandId::kCancelItem, /*label_id=*/-1, - &gfx::VectorIcon::EmptyIcon(), + HoldingSpaceCommandId::kCancelItem, /*label_id=*/-1, &gfx::kNoneIcon, /*handler=*/base::DoNothing())); EXPECT_TRUE(holding_space_item->SetInProgressCommands(in_progress_commands)); EXPECT_EQ(holding_space_item->in_progress_commands(), in_progress_commands);
diff --git a/ash/public/cpp/holding_space/holding_space_model_unittest.cc b/ash/public/cpp/holding_space/holding_space_model_unittest.cc index 06504c5..b4129de 100644 --- a/ash/public/cpp/holding_space/holding_space_model_unittest.cc +++ b/ash/public/cpp/holding_space/holding_space_model_unittest.cc
@@ -27,7 +27,7 @@ #include "testing/gtest/include/gtest/gtest.h" #include "ui/chromeos/styles/cros_tokens_color_mappings.h" #include "ui/color/color_id.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" namespace ash { namespace { @@ -41,7 +41,7 @@ HoldingSpaceItem::InProgressCommand CreateInProgressCommand( HoldingSpaceCommandId command_id) { return HoldingSpaceItem::InProgressCommand(command_id, /*label_id=*/-1, - &gfx::VectorIcon::EmptyIcon(), + &gfx::kNoneIcon, /*handler=*/base::DoNothing()); }
diff --git a/ash/public/cpp/scanner/DEPS b/ash/public/cpp/scanner/DEPS new file mode 100644 index 0000000..2ba4be1 --- /dev/null +++ b/ash/public/cpp/scanner/DEPS
@@ -0,0 +1,3 @@ +include_rules = [ + "+chromeos/ash/components/specialized_features", +]
diff --git a/ash/public/cpp/scanner/scanner_profile_scoped_delegate.h b/ash/public/cpp/scanner/scanner_profile_scoped_delegate.h index e6e46ff..d4bddcd 100644 --- a/ash/public/cpp/scanner/scanner_profile_scoped_delegate.h +++ b/ash/public/cpp/scanner/scanner_profile_scoped_delegate.h
@@ -6,10 +6,10 @@ #define ASH_PUBLIC_CPP_SCANNER_SCANNER_PROFILE_SCOPED_DELEGATE_H_ #include "ash/public/cpp/ash_public_export.h" -#include "ash/public/cpp/scanner/scanner_system_state.h" #include "base/functional/callback.h" #include "base/memory/ref_counted_memory.h" #include "base/memory/scoped_refptr.h" +#include "chromeos/ash/components/specialized_features/feature_access_checker.h" #include "components/manta/proto/scanner.pb.h" #include "components/manta/scanner_provider.h" @@ -29,9 +29,10 @@ public: virtual ~ScannerProfileScopedDelegate() = default; - // Returns the current state of the system. For example, is the feature + // Returns the feature check status. For example, is the feature // disabled? If so why was it disabled. - virtual ScannerSystemState GetSystemState() const = 0; + virtual specialized_features::FeatureAccessFailureSet CheckFeatureAccess() + const = 0; // Fetches Scanner actions that are available to the user based on the // contents of `jpeg_bytes`. The actions response is returned via `callback`.
diff --git a/ash/public/cpp/scanner/scanner_system_state.cc b/ash/public/cpp/scanner/scanner_system_state.cc deleted file mode 100644 index e35fd1c..0000000 --- a/ash/public/cpp/scanner/scanner_system_state.cc +++ /dev/null
@@ -1,15 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/public/cpp/scanner/scanner_system_state.h" - -namespace ash { - -ScannerSystemState::ScannerSystemState(ScannerStatus status, - SystemChecks failed_checks) - : status(status), failed_checks(failed_checks) {} - -ScannerSystemState::~ScannerSystemState() = default; - -} // namespace ash
diff --git a/ash/public/cpp/scanner/scanner_system_state.h b/ash/public/cpp/scanner/scanner_system_state.h deleted file mode 100644 index 490e88b..0000000 --- a/ash/public/cpp/scanner/scanner_system_state.h +++ /dev/null
@@ -1,30 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_PUBLIC_CPP_SCANNER_SCANNER_SYSTEM_STATE_H_ -#define ASH_PUBLIC_CPP_SCANNER_SCANNER_SYSTEM_STATE_H_ - -#include "ash/public/cpp/ash_public_export.h" -#include "ash/public/cpp/scanner/scanner_enums.h" -#include "base/containers/enum_set.h" - -namespace ash { - -// Holds the current system state, including any failed checks. This can be -// used to derive the feature's enablement state. -struct ASH_PUBLIC_EXPORT ScannerSystemState { - using SystemChecks = base::EnumSet<ScannerSystemCheck, - ScannerSystemCheck::kMinValue, - ScannerSystemCheck::kMaxValue>; - - ScannerSystemState(ScannerStatus status, SystemChecks failed_checks); - ~ScannerSystemState(); - - ScannerStatus status; - SystemChecks failed_checks; -}; - -} // namespace ash - -#endif // ASH_PUBLIC_CPP_SCANNER_SCANNER_SYSTEM_STATE_H_
diff --git a/ash/public/cpp/system/toast_data.h b/ash/public/cpp/system/toast_data.h index 6192ca80..087d1df 100644 --- a/ash/public/cpp/system/toast_data.h +++ b/ash/public/cpp/system/toast_data.h
@@ -13,7 +13,7 @@ #include "base/functional/callback_helpers.h" #include "base/memory/raw_ptr_exclusion.h" #include "base/time/time.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" namespace ash { @@ -75,10 +75,8 @@ std::u16string button_text; // RAW_PTR_EXCLUSION: Never allocated by PartitionAlloc (always points to a // global), so there is no benefit to using a raw_ptr, only cost. - RAW_PTR_EXCLUSION const gfx::VectorIcon* button_icon = - &gfx::VectorIcon::EmptyIcon(); - RAW_PTR_EXCLUSION const gfx::VectorIcon* leading_icon = - &gfx::VectorIcon::EmptyIcon(); + RAW_PTR_EXCLUSION const gfx::VectorIcon* button_icon = &gfx::kNoneIcon; + RAW_PTR_EXCLUSION const gfx::VectorIcon* leading_icon = &gfx::kNoneIcon; base::OnceClosure expired_callback; base::TimeTicks time_created; base::TimeTicks time_start_showing;
diff --git a/ash/public/cpp/system_notification_builder.h b/ash/public/cpp/system_notification_builder.h index ef92f3970..20165c4fe5 100644 --- a/ash/public/cpp/system_notification_builder.h +++ b/ash/public/cpp/system_notification_builder.h
@@ -13,7 +13,6 @@ #include "ash/public/cpp/ash_public_export.h" #include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" -#include "ui/gfx/vector_icon_types.h" #include "ui/message_center/public/cpp/notification.h" #include "ui/message_center/public/cpp/notification_types.h" #include "ui/message_center/public/cpp/notifier_id.h" @@ -233,7 +232,7 @@ scoped_refptr<message_center::NotificationDelegate> delegate); // Set the small image shown in the notification. - // Default: VectorIcon::EmptyIcon() + // Default: kNoneIcon SystemNotificationBuilder& SetSmallImage(const gfx::VectorIcon& small_image); // Set additional optional fields. @@ -280,7 +279,7 @@ std::optional<message_center::NotifierId> notifier_id_; NotificationCatalogName catalog_name_ = NotificationCatalogName::kNone; scoped_refptr<message_center::NotificationDelegate> delegate_ = nullptr; - raw_ptr<const gfx::VectorIcon> small_image_ = &gfx::VectorIcon::EmptyIcon(); + raw_ptr<const gfx::VectorIcon> small_image_ = &gfx::kNoneIcon; message_center::RichNotificationData optional_fields_; message_center::SystemNotificationWarningLevel warning_level_ = message_center::SystemNotificationWarningLevel::NORMAL;
diff --git a/ash/public/cpp/system_notification_builder_unittest.cc b/ash/public/cpp/system_notification_builder_unittest.cc index d0ba0b9..582955f1 100644 --- a/ash/public/cpp/system_notification_builder_unittest.cc +++ b/ash/public/cpp/system_notification_builder_unittest.cc
@@ -7,7 +7,6 @@ #include "base/functional/callback_helpers.h" #include "components/vector_icons/vector_icons.h" #include "testing/gtest/include/gtest/gtest.h" -#include "ui/gfx/vector_icon_types.h" namespace ash { @@ -25,7 +24,7 @@ EXPECT_EQ(notification.display_source(), u""); EXPECT_FALSE(notification.origin_url().is_valid()); EXPECT_EQ(notification.delegate(), nullptr); - EXPECT_EQ(¬ification.vector_small_image(), &gfx::VectorIcon::EmptyIcon()); + EXPECT_EQ(¬ification.vector_small_image(), &gfx::kNoneIcon); EXPECT_EQ(notification.rich_notification_data().progress, 0); EXPECT_EQ(notification.system_notification_warning_level(), message_center::SystemNotificationWarningLevel::NORMAL);
diff --git a/ash/public/cpp/test/test_nearby_share_delegate.cc b/ash/public/cpp/test/test_nearby_share_delegate.cc index a7b9b2c..a7086fe0 100644 --- a/ash/public/cpp/test/test_nearby_share_delegate.cc +++ b/ash/public/cpp/test/test_nearby_share_delegate.cc
@@ -10,6 +10,10 @@ namespace ash { +namespace { +const gfx::VectorIcon kEmptyIcon; +} // namespace + TestNearbyShareDelegate::TestNearbyShareDelegate() = default; TestNearbyShareDelegate::~TestNearbyShareDelegate() = default; @@ -49,7 +53,7 @@ void TestNearbyShareDelegate::ShowNearbyShareSettings() const {} const gfx::VectorIcon& TestNearbyShareDelegate::GetIcon(bool on_icon) const { - return gfx::VectorIcon::EmptyIcon(); + return kEmptyIcon; } std::u16string TestNearbyShareDelegate::GetPlaceholderFeatureName() const {
diff --git a/ash/quick_insert/views/quick_insert_gif_view.cc b/ash/quick_insert/views/quick_insert_gif_view.cc index 956b47a..a446982f 100644 --- a/ash/quick_insert/views/quick_insert_gif_view.cc +++ b/ash/quick_insert/views/quick_insert_gif_view.cc
@@ -60,18 +60,6 @@ QuickInsertGifView::~QuickInsertGifView() = default; -gfx::Size QuickInsertGifView::CalculatePreferredSize( - const views::SizeBounds& available_size) const { - // Calculate the height to retain aspect ratio. - const int preferred_width = - views::ImageView::CalculatePreferredSize(available_size).width(); - const int height = original_dimensions_.width() == 0 - ? 0 - : (preferred_width * original_dimensions_.height()) / - original_dimensions_.width(); - return gfx::Size(preferred_width, height); -} - void QuickInsertGifView::OnBoundsChanged(const gfx::Rect& previous_bounds) { views::ImageView::OnBoundsChanged(previous_bounds);
diff --git a/ash/quick_insert/views/quick_insert_gif_view.h b/ash/quick_insert/views/quick_insert_gif_view.h index e60f4e64..1b913f5a 100644 --- a/ash/quick_insert/views/quick_insert_gif_view.h +++ b/ash/quick_insert/views/quick_insert_gif_view.h
@@ -44,8 +44,6 @@ ~QuickInsertGifView() override; // views::ImageViewBase: - gfx::Size CalculatePreferredSize( - const views::SizeBounds& available_size) const override; void OnBoundsChanged(const gfx::Rect& previous_bounds) override; private:
diff --git a/ash/quick_insert/views/quick_insert_image_item_grid_view.cc b/ash/quick_insert/views/quick_insert_image_item_grid_view.cc index e66be0f3..20da2ec 100644 --- a/ash/quick_insert/views/quick_insert_image_item_grid_view.cc +++ b/ash/quick_insert/views/quick_insert_image_item_grid_view.cc
@@ -68,7 +68,9 @@ QuickInsertImageItemGridView::QuickInsertImageItemGridView(int grid_width, bool has_top_margin) - : focus_search_(std::make_unique<FocusSearch>( + : column_width_( + (grid_width - kImageGridPadding - kImageGridMargin.width()) / 2), + focus_search_(std::make_unique<FocusSearch>( this, base::BindRepeating(&QuickInsertImageItemGridView::GetFocusableItems, base::Unretained(this)))) { @@ -193,6 +195,7 @@ shortest_column ->AddChildView(CreateListItemView(focusable_items_.size() + 1)) ->AddChildView(std::move(image_item)); + new_item->FitToWidth(column_width_); focusable_items_.push_back(new_item); // Update the SetSize for all items.
diff --git a/ash/quick_insert/views/quick_insert_image_item_grid_view.h b/ash/quick_insert/views/quick_insert_image_item_grid_view.h index d0d033ea..417cd41 100644 --- a/ash/quick_insert/views/quick_insert_image_item_grid_view.h +++ b/ash/quick_insert/views/quick_insert_image_item_grid_view.h
@@ -87,6 +87,7 @@ // Returns items in this grid in focus traversal order. const views::View::Views& GetFocusableItems() const; + int column_width_; views::View::Views focusable_items_; std::unique_ptr<FocusSearch> focus_search_; };
diff --git a/ash/quick_insert/views/quick_insert_image_item_view.cc b/ash/quick_insert/views/quick_insert_image_item_view.cc index ad915f1e..2e89622 100644 --- a/ash/quick_insert/views/quick_insert_image_item_view.cc +++ b/ash/quick_insert/views/quick_insert_image_item_view.cc
@@ -65,6 +65,15 @@ } } +void QuickInsertImageItemView::FitToWidth(int width) { + const gfx::Size original_dimensions = image_view_->GetImageBounds().size(); + const int height = original_dimensions.width() == 0 + ? 0 + : (width * original_dimensions.height()) / + original_dimensions.width(); + image_view_->SetImageSize(gfx::Size(width, height)); +} + BEGIN_METADATA(QuickInsertImageItemView) END_METADATA
diff --git a/ash/quick_insert/views/quick_insert_image_item_view.h b/ash/quick_insert/views/quick_insert_image_item_view.h index 7ef6ae5..20d1b66 100644 --- a/ash/quick_insert/views/quick_insert_image_item_view.h +++ b/ash/quick_insert/views/quick_insert_image_item_view.h
@@ -33,6 +33,10 @@ void SetAction(QuickInsertActionType action); + // Resizes the contained image to `width`, with the height scaled to retain + // the same aspect ratio. + void FitToWidth(int width); + views::ImageView* image_view_for_testing() const { return image_view_; } private:
diff --git a/ash/scalable_iph/scalable_iph_pixeltest.cc b/ash/scalable_iph/scalable_iph_pixeltest.cc index 11750e5..ab3e4f43 100644 --- a/ash/scalable_iph/scalable_iph_pixeltest.cc +++ b/ash/scalable_iph/scalable_iph_pixeltest.cc
@@ -9,7 +9,7 @@ #include "ash/test/pixel/ash_pixel_test_init_params.h" #include "base/test/scoped_feature_list.h" #include "chromeos/constants/chromeos_features.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/message_center/message_center.h" #include "ui/message_center/public/cpp/notification.h" #include "ui/message_center/public/cpp/notifier_id.h" @@ -66,7 +66,7 @@ u"NotificationTitle", /*message=*/u"", u"NotificationSourceName", GURL(), message_center::NotifierId(), message_center::RichNotificationData(), - /*delegate=*/nullptr, gfx::VectorIcon::EmptyIcon(), + /*delegate=*/nullptr, gfx::kNoneIcon, message_center::SystemNotificationWarningLevel::NORMAL); message_center::MessageCenter* message_center =
diff --git a/ash/scanner/DEPS b/ash/scanner/DEPS index 772490b..4bc4b5f 100644 --- a/ash/scanner/DEPS +++ b/ash/scanner/DEPS
@@ -1,4 +1,5 @@ include_rules = [ + "+chromeos/ash/components/specialized_features", "+components/drive", "+google_apis", ]
diff --git a/ash/scanner/fake_scanner_profile_scoped_delegate.cc b/ash/scanner/fake_scanner_profile_scoped_delegate.cc index de285830..cb7bba0 100644 --- a/ash/scanner/fake_scanner_profile_scoped_delegate.cc +++ b/ash/scanner/fake_scanner_profile_scoped_delegate.cc
@@ -5,13 +5,13 @@ #include "ash/scanner/fake_scanner_profile_scoped_delegate.h" #include "ash/public/cpp/scanner/scanner_enums.h" -#include "ash/public/cpp/scanner/scanner_system_state.h" #include "base/check.h" #include "base/check_op.h" #include "base/command_line.h" #include "base/functional/bind.h" #include "base/task/task_traits.h" #include "base/task/thread_pool.h" +#include "chromeos/ash/components/specialized_features/feature_access_checker.h" #include "components/drive/service/drive_service_interface.h" #include "google_apis/common/dummy_auth_service.h" #include "google_apis/common/request_sender.h" @@ -29,9 +29,8 @@ } // namespace FakeScannerProfileScopedDelegate::FakeScannerProfileScopedDelegate() { - ON_CALL(*this, GetSystemState) - .WillByDefault(Return( - ScannerSystemState(ScannerStatus::kEnabled, /*failed_checks=*/{}))); + ON_CALL(*this, CheckFeatureAccess) + .WillByDefault(Return(specialized_features::FeatureAccessFailureSet{})); } FakeScannerProfileScopedDelegate::~FakeScannerProfileScopedDelegate() = default;
diff --git a/ash/scanner/fake_scanner_profile_scoped_delegate.h b/ash/scanner/fake_scanner_profile_scoped_delegate.h index c55a517..4a0d1e1 100644 --- a/ash/scanner/fake_scanner_profile_scoped_delegate.h +++ b/ash/scanner/fake_scanner_profile_scoped_delegate.h
@@ -47,7 +47,10 @@ } // ScannerProfileScopedDelegate: - MOCK_METHOD(ScannerSystemState, GetSystemState, (), (const, override)); + MOCK_METHOD(specialized_features::FeatureAccessFailureSet, + CheckFeatureAccess, + (), + (const, override)); // Use the following as a gMock action to run `callback` synchronously when // this method is called: // base::test::RunOnceCallback<1>(scanner_output, manta_status)
diff --git a/ash/scanner/scanner_controller.cc b/ash/scanner/scanner_controller.cc index 926303e..753fe01 100644 --- a/ash/scanner/scanner_controller.cc +++ b/ash/scanner/scanner_controller.cc
@@ -112,8 +112,7 @@ return false; } - return profile_scoped_delegate->GetSystemState().status == - ScannerStatus::kEnabled; + return profile_scoped_delegate->CheckFeatureAccess().empty(); } ScannerSession* ScannerController::StartNewSession() {
diff --git a/ash/scanner/scanner_controller_unittest.cc b/ash/scanner/scanner_controller_unittest.cc index 7d99b24c..b4238f6 100644 --- a/ash/scanner/scanner_controller_unittest.cc +++ b/ash/scanner/scanner_controller_unittest.cc
@@ -12,7 +12,6 @@ #include "ash/constants/ash_features.h" #include "ash/public/cpp/scanner/scanner_delegate.h" #include "ash/public/cpp/scanner/scanner_enums.h" -#include "ash/public/cpp/scanner/scanner_system_state.h" #include "ash/public/cpp/system/toast_manager.h" #include "ash/scanner/fake_scanner_profile_scoped_delegate.h" #include "ash/scanner/scanner_action_view_model.h" @@ -21,6 +20,7 @@ #include "base/test/gmock_callback_support.h" #include "base/test/scoped_feature_list.h" #include "base/test/test_future.h" +#include "chromeos/ash/components/specialized_features/feature_access_checker.h" #include "components/manta/manta_status.h" #include "components/manta/proto/scanner.pb.h" #include "testing/gmock/include/gmock/gmock-matchers.h" @@ -60,25 +60,24 @@ base::test::ScopedFeatureList scoped_feature_list_{features::kScannerUpdate}; }; -TEST_F(ScannerControllerTest, CanStartSessionIfSystemStateEnabled) { +TEST_F(ScannerControllerTest, CanStartSessionIfFeatureChecksPass) { ScannerController* scanner_controller = Shell::Get()->scanner_controller(); ASSERT_TRUE(scanner_controller); ON_CALL(*GetFakeScannerProfileScopedDelegate(*scanner_controller), - GetSystemState) - .WillByDefault(Return( - ScannerSystemState(ScannerStatus::kEnabled, /*failed_checks=*/{}))); + CheckFeatureAccess) + .WillByDefault(Return(specialized_features::FeatureAccessFailureSet{})); EXPECT_TRUE(scanner_controller->CanStartSession()); EXPECT_TRUE(scanner_controller->StartNewSession()); } -TEST_F(ScannerControllerTest, CanNotStartSessionIfSystemStateBlocked) { +TEST_F(ScannerControllerTest, CanNotStartSessionIfFeatureChecksFail) { ScannerController* scanner_controller = Shell::Get()->scanner_controller(); ASSERT_TRUE(scanner_controller); ON_CALL(*GetFakeScannerProfileScopedDelegate(*scanner_controller), - GetSystemState) - .WillByDefault(Return( - ScannerSystemState(ScannerStatus::kBlocked, /*failed_checks=*/{}))); + CheckFeatureAccess) + .WillByDefault(Return(specialized_features::FeatureAccessFailureSet{ + specialized_features::FeatureAccessFailure::kDisabledInSettings})); EXPECT_FALSE(scanner_controller->CanStartSession()); EXPECT_FALSE(scanner_controller->StartNewSession());
diff --git a/ash/style/counter_expand_button.cc b/ash/style/counter_expand_button.cc index b715bb9..69cf4c7e 100644 --- a/ash/style/counter_expand_button.cc +++ b/ash/style/counter_expand_button.cc
@@ -20,7 +20,6 @@ #include "ui/compositor/animation_throughput_reporter.h" #include "ui/compositor/layer.h" #include "ui/gfx/animation/tween.h" -#include "ui/gfx/paint_vector_icon.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/animation/animation_builder.h" #include "ui/views/controls/highlight_path_generator.h"
diff --git a/ash/system/audio/labeled_slider_view.cc b/ash/system/audio/labeled_slider_view.cc index 7b57464..44a2764 100644 --- a/ash/system/audio/labeled_slider_view.cc +++ b/ash/system/audio/labeled_slider_view.cc
@@ -24,7 +24,6 @@ #include "ui/compositor/layer.h" #include "ui/gfx/geometry/rounded_corners_f.h" #include "ui/gfx/geometry/rrect_f.h" -#include "ui/gfx/vector_icon_types.h" #include "ui/views/controls/focus_ring.h" #include "ui/views/controls/highlight_path_generator.h" #include "ui/views/controls/label.h" @@ -133,8 +132,7 @@ // Creates and formats the device name view. device_name_view_ = detailed_view->AddScrollListCheckableItem( - this, gfx::VectorIcon::EmptyIcon(), GetAudioDeviceName(device), - device.active); + this, gfx::kNoneIcon, GetAudioDeviceName(device), device.active); ConfigureDeviceNameView(device); // Puts `unified_slider_view_` beneath `device_name_view_`.
diff --git a/ash/system/bluetooth/bluetooth_device_list_controller_impl.cc b/ash/system/bluetooth/bluetooth_device_list_controller_impl.cc index 4ef64f3b..e67f3db4 100644 --- a/ash/system/bluetooth/bluetooth_device_list_controller_impl.cc +++ b/ash/system/bluetooth/bluetooth_device_list_controller_impl.cc
@@ -9,7 +9,7 @@ #include "ash/system/bluetooth/bluetooth_device_list_item_view.h" #include "base/check.h" #include "base/memory/raw_ptr.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/view.h" namespace ash { @@ -132,7 +132,7 @@ size_t index) { if (!sub_header) { sub_header = bluetooth_detailed_view_->AddDeviceListSubHeader( - gfx::VectorIcon::EmptyIcon(), text_id); + gfx::kNoneIcon, text_id); } bluetooth_detailed_view_->device_list()->ReorderChildView(sub_header, index); return sub_header;
diff --git a/ash/system/holding_space/holding_space_tray_unittest.cc b/ash/system/holding_space/holding_space_tray_unittest.cc index f2556fa..b6ee414 100644 --- a/ash/system/holding_space/holding_space_tray_unittest.cc +++ b/ash/system/holding_space/holding_space_tray_unittest.cc
@@ -72,7 +72,6 @@ #include "ui/gfx/geometry/transform_util.h" #include "ui/gfx/paint_vector_icon.h" #include "ui/gfx/skia_util.h" -#include "ui/gfx/vector_icon_types.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/background.h" #include "ui/views/controls/image_view.h" @@ -105,7 +104,7 @@ int label_id, HoldingSpaceItem::InProgressCommand::Handler handler = base::DoNothing()) { return HoldingSpaceItem::InProgressCommand( - command_id, label_id, &gfx::VectorIcon::EmptyIcon(), std::move(handler)); + command_id, label_id, &gfx::kNoneIcon, std::move(handler)); } // A wrapper around `views::View::GetVisible()` with a null check for `view`.
diff --git a/ash/system/hotspot/hotspot_notifier.cc b/ash/system/hotspot/hotspot_notifier.cc index 8173a43..d9e214c 100644 --- a/ash/system/hotspot/hotspot_notifier.cc +++ b/ash/system/hotspot/hotspot_notifier.cc
@@ -12,7 +12,6 @@ #include "ash/strings/grit/ash_strings.h" #include "base/strings/utf_string_conversions.h" #include "ui/base/l10n/l10n_util.h" -#include "ui/gfx/vector_icon_types.h" #include "ui/message_center/message_center.h" #include "ui/message_center/public/cpp/message_center_constants.h" @@ -289,7 +288,7 @@ const bool use_hotspot_icon, scoped_refptr<message_center::NotificationDelegate> delegate) { const gfx::VectorIcon& icon = - use_hotspot_icon ? kHotspotOnIcon : gfx::VectorIcon::EmptyIcon(); + use_hotspot_icon ? kHotspotOnIcon : gfx::kNoneIcon; std::unique_ptr<message_center::Notification> notification = ash::CreateSystemNotificationPtr( message_center::NOTIFICATION_TYPE_SIMPLE, notification_id, title_id,
diff --git a/ash/system/mahi/mahi_panel_widget.cc b/ash/system/mahi/mahi_panel_widget.cc index a495bc0..93c6ea4 100644 --- a/ash/system/mahi/mahi_panel_widget.cc +++ b/ash/system/mahi/mahi_panel_widget.cc
@@ -6,14 +6,15 @@ #include <cstdint> #include <memory> +#include <utility> +#include "ash/frame/non_client_frame_view_ash.h" #include "ash/public/cpp/shell_window_ids.h" #include "ash/shell.h" #include "ash/strings/grit/ash_strings.h" #include "ash/system/mahi/mahi_constants.h" #include "ash/system/mahi/mahi_panel_view.h" #include "ash/system/mahi/mahi_ui_controller.h" -#include "ash/system/mahi/mahi_widget_delegate.h" #include "ash/system/mahi/refresh_banner_view.h" #include "ash/wm/window_properties.h" #include "ash/wm/work_area_insets.h" @@ -34,6 +35,8 @@ #include "ui/views/view_utils.h" #include "ui/views/widget/unique_widget_ptr.h" #include "ui/views/widget/widget.h" +#include "ui/views/widget/widget_delegate.h" +#include "ui/views/window/non_client_view.h" namespace ash { @@ -107,6 +110,30 @@ .Build(); } +// TODO(zoraiznaem): Investigate if MahiFrameView needs NonClientFrameViewAsh. +class MahiFrameView : public NonClientFrameViewAsh { + public: + explicit MahiFrameView(views::Widget* frame) : NonClientFrameViewAsh(frame) { + SetFrameEnabled(false); + SetShouldPaintHeader(false); + } + + MahiFrameView(const MahiFrameView&) = delete; + MahiFrameView& operator=(const MahiFrameView&) = delete; + + ~MahiFrameView() override = default; + + // views::NonClientFrameView: + gfx::Size GetMinimumSize() const override { + return gfx::Size(mahi_constants::kPanelDefaultWidth, + mahi_constants::kPanelDefaultHeight); + } + gfx::Size GetMaximumSize() const override { + return gfx::Size(mahi_constants::kPanelMaximumWidth, + mahi_constants::kPanelMaximumHeight); + } +}; + } // namespace MahiPanelWidget::MahiPanelWidget(InitParams params, @@ -149,11 +176,18 @@ // so that it can be set on the client view. Else the contents view will be // set on the widget directly as there will be no client view. if (base::FeatureList::IsEnabled(chromeos::features::kMahiPanelResizable)) { - auto delegate = std::make_unique<MahiWidgetDelegate>(); + auto delegate = std::make_unique<views::WidgetDelegate>(); + // Set to true so that the delegate deletes itself. delegate->SetOwnedByWidget(true); delegate->SetCanResize(true); delegate->SetContentsView(std::move(contents_view)); + delegate->SetNonClientFrameViewFactory( + base::BindRepeating([](views::Widget* widget) + -> std::unique_ptr<views::NonClientFrameView> { + return std::make_unique<MahiFrameView>(widget); + })); + params.delegate = delegate.release(); // If resizable, disable the resize shadow on the window border.
diff --git a/ash/system/mahi/mahi_widget_delegate.cc b/ash/system/mahi/mahi_widget_delegate.cc deleted file mode 100644 index ad2dcdd..0000000 --- a/ash/system/mahi/mahi_widget_delegate.cc +++ /dev/null
@@ -1,54 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/system/mahi/mahi_widget_delegate.h" - -#include <memory> - -#include "ash/frame/non_client_frame_view_ash.h" -#include "ash/system/mahi/mahi_constants.h" -#include "ui/chromeos/styles/cros_tokens_color_mappings.h" -#include "ui/gfx/geometry/size.h" -#include "ui/views/background.h" -#include "ui/views/widget/widget.h" -#include "ui/views/window/non_client_view.h" - -namespace ash { - -namespace { - -class MahiFrameView : public NonClientFrameViewAsh { - public: - explicit MahiFrameView(views::Widget* frame) : NonClientFrameViewAsh(frame) {} - ~MahiFrameView() override = default; - MahiFrameView(const MahiFrameView&) = delete; - MahiFrameView& operator=(const MahiFrameView&) = delete; - - // views::NonClientFrameView: - gfx::Size GetMinimumSize() const override { - return gfx::Size(mahi_constants::kPanelDefaultWidth, - mahi_constants::kPanelDefaultHeight); - } - - // views::NonClientFrameView: - gfx::Size GetMaximumSize() const override { - return gfx::Size(mahi_constants::kPanelMaximumWidth, - mahi_constants::kPanelMaximumHeight); - } -}; - -} // namespace - -MahiWidgetDelegate::MahiWidgetDelegate() = default; -MahiWidgetDelegate::~MahiWidgetDelegate() = default; - -std::unique_ptr<views::NonClientFrameView> -MahiWidgetDelegate::CreateNonClientFrameView(views::Widget* widget) { - auto frame = std::make_unique<MahiFrameView>(widget); - frame->SetFrameEnabled(false); - frame->SetShouldPaintHeader(false); - return frame; -} - -} // namespace ash
diff --git a/ash/system/mahi/mahi_widget_delegate.h b/ash/system/mahi/mahi_widget_delegate.h deleted file mode 100644 index 59ce56d..0000000 --- a/ash/system/mahi/mahi_widget_delegate.h +++ /dev/null
@@ -1,33 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_SYSTEM_MAHI_MAHI_WIDGET_DELEGATE_H_ -#define ASH_SYSTEM_MAHI_MAHI_WIDGET_DELEGATE_H_ - -#include <memory> - -#include "ash/ash_export.h" -#include "ash/frame/non_client_frame_view_ash.h" -#include "ui/views/widget/widget_delegate.h" - -namespace ash { - -// A custom widget delegate for the Mahi window. Used to inject custom -// dependencies that are instantiated in the base widget class (like the custom -// Mahi frame view). -class ASH_EXPORT MahiWidgetDelegate : public views::WidgetDelegate { - public: - MahiWidgetDelegate(); - MahiWidgetDelegate(const MahiWidgetDelegate&) = delete; - MahiWidgetDelegate& operator=(const MahiWidgetDelegate&) = delete; - ~MahiWidgetDelegate() override; - - // views::WidgetDelegate: - std::unique_ptr<views::NonClientFrameView> CreateNonClientFrameView( - views::Widget* widget) override; -}; - -} // namespace ash - -#endif // ASH_SYSTEM_MAHI_MAHI_WIDGET_DELEGATE_H_
diff --git a/ash/system/network/managed_sim_lock_notifier.cc b/ash/system/network/managed_sim_lock_notifier.cc index 0e53fd2..5cc179ee 100644 --- a/ash/system/network/managed_sim_lock_notifier.cc +++ b/ash/system/network/managed_sim_lock_notifier.cc
@@ -18,7 +18,6 @@ #include "components/onc/onc_constants.h" #include "components/session_manager/session_manager_types.h" #include "ui/base/l10n/l10n_util.h" -#include "ui/gfx/vector_icon_types.h" #include "ui/message_center/message_center.h" #include "ui/message_center/public/cpp/message_center_constants.h" @@ -195,7 +194,7 @@ message_center::RichNotificationData(), base::MakeRefCounted<message_center::ThunkNotificationDelegate>( weak_ptr_factory_.GetWeakPtr()), - /*small_image=*/gfx::VectorIcon::EmptyIcon(), + /*small_image=*/gfx::VectorIcon(), message_center::SystemNotificationWarningLevel::WARNING); notification->set_host_view_element_id( kCellularManagedSimLockNotificationElementId);
diff --git a/ash/system/notification_center/notification_grouping_controller_unittest.cc b/ash/system/notification_center/notification_grouping_controller_unittest.cc index 1907b41f..c7d5f7e8 100644 --- a/ash/system/notification_center/notification_grouping_controller_unittest.cc +++ b/ash/system/notification_center/notification_grouping_controller_unittest.cc
@@ -389,7 +389,7 @@ auto* message_center = MessageCenter::Get(); std::string id0, id1, id2; const GURL url(u"http://test-url.com/"); - const auto& icon = gfx::VectorIcon::EmptyIcon(); + const auto icon = gfx::VectorIcon(); const auto small_image = gfx::Image(); const std::u16string display_source0 = u"test_display_source0";
diff --git a/ash/system/notification_center/stacked_notification_bar.cc b/ash/system/notification_center/stacked_notification_bar.cc index d24f9387..f47320d 100644 --- a/ash/system/notification_center/stacked_notification_bar.cc +++ b/ash/system/notification_center/stacked_notification_bar.cc
@@ -25,7 +25,6 @@ #include "ui/compositor/layer_animation_sequence.h" #include "ui/compositor/layer_animator.h" #include "ui/gfx/interpolated_transform.h" -#include "ui/gfx/paint_vector_icon.h" #include "ui/message_center/message_center.h" #include "ui/message_center/vector_icons.h" #include "ui/views/accessibility/view_accessibility.h"
diff --git a/ash/system/notification_center/views/notifier_settings_view.cc b/ash/system/notification_center/views/notifier_settings_view.cc index a5cb71c..360106c4 100644 --- a/ash/system/notification_center/views/notifier_settings_view.cc +++ b/ash/system/notification_center/views/notifier_settings_view.cc
@@ -46,7 +46,6 @@ #include "ui/gfx/geometry/insets.h" #include "ui/gfx/geometry/size.h" #include "ui/gfx/image/image.h" -#include "ui/gfx/paint_vector_icon.h" #include "ui/gfx/skia_paint_util.h" #include "ui/message_center/message_center.h" #include "ui/message_center/public/cpp/message_center_constants.h"
diff --git a/ash/system/palette/palette_tool.cc b/ash/system/palette/palette_tool.cc index af45190..15a5266f 100644 --- a/ash/system/palette/palette_tool.cc +++ b/ash/system/palette/palette_tool.cc
@@ -15,7 +15,7 @@ #include "ash/system/palette/tools/laser_pointer_mode.h" #include "ash/system/palette/tools/magnifier_mode.h" #include "ash/system/palette/tools/marker_mode.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" namespace ash { @@ -43,7 +43,7 @@ } const gfx::VectorIcon& PaletteTool::GetActiveTrayIcon() const { - return gfx::VectorIcon::EmptyIcon(); + return gfx::kNoneIcon; } } // namespace ash
diff --git a/ash/system/toast/system_toast_view.h b/ash/system/toast/system_toast_view.h index 8db17a2f..d0ce70e 100644 --- a/ash/system/toast/system_toast_view.h +++ b/ash/system/toast/system_toast_view.h
@@ -9,7 +9,7 @@ #include "base/memory/raw_ptr.h" #include "ui/base/interaction/element_identifier.h" #include "ui/base/metadata/metadata_header_macros.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/layout/flex_layout_view.h" namespace views { @@ -38,13 +38,12 @@ kIconButton, }; - SystemToastView( - const std::u16string& text, - ButtonType button_type = ButtonType::kNone, - const std::u16string& button_text = std::u16string(), - const gfx::VectorIcon* button_icon = &gfx::VectorIcon::EmptyIcon(), - base::RepeatingClosure button_callback = base::DoNothing(), - const gfx::VectorIcon* leading_icon = &gfx::VectorIcon::EmptyIcon()); + SystemToastView(const std::u16string& text, + ButtonType button_type = ButtonType::kNone, + const std::u16string& button_text = std::u16string(), + const gfx::VectorIcon* button_icon = &gfx::kNoneIcon, + base::RepeatingClosure button_callback = base::DoNothing(), + const gfx::VectorIcon* leading_icon = &gfx::kNoneIcon); SystemToastView(const SystemToastView&) = delete; SystemToastView& operator=(const SystemToastView&) = delete; ~SystemToastView() override;
diff --git a/ash/system/toast/system_toast_view_pixeltest.cc b/ash/system/toast/system_toast_view_pixeltest.cc index 4151950..a283a10b 100644 --- a/ash/system/toast/system_toast_view_pixeltest.cc +++ b/ash/system/toast/system_toast_view_pixeltest.cc
@@ -12,7 +12,7 @@ #include "ash/test/pixel/ash_pixel_test_init_params.h" #include "ui/chromeos/styles/cros_tokens_color_mappings.h" #include "ui/gfx/geometry/rect.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/background.h" #include "ui/views/layout/flex_layout_view.h" #include "ui/views/view.h" @@ -77,8 +77,7 @@ GetContentsView()->AddChildView(std::make_unique<SystemToastView>( /*text=*/kTestText, SystemToastView::ButtonType::kNone, /*button_text=*/std::u16string(), - /*button_icon=*/&gfx::VectorIcon::EmptyIcon(), - /*button_callback=*/base::DoNothing(), + /*button_icon=*/&gfx::kNoneIcon, /*button_callback=*/base::DoNothing(), /*leading_icon=*/kTestIcon)); EXPECT_TRUE(GetPixelDiffer()->CompareUiComponentsOnPrimaryScreen( @@ -107,8 +106,7 @@ GetContentsView()->AddChildView(std::make_unique<SystemToastView>( /*text=*/kTestText, SystemToastView::ButtonType::kTextButton, /*button_text=*/kTestButtonText, - /*button_icon=*/&gfx::VectorIcon::EmptyIcon(), - /*button_callback=*/base::DoNothing(), + /*button_icon=*/&gfx::kNoneIcon, /*button_callback=*/base::DoNothing(), /*leading_icon=*/kTestIcon)); EXPECT_TRUE(GetPixelDiffer()->CompareUiComponentsOnPrimaryScreen( @@ -127,8 +125,7 @@ GetContentsView()->AddChildView(std::make_unique<SystemToastView>( /*text=*/kTestLongText, SystemToastView::ButtonType::kNone, /*button_text=*/std::u16string(), - /*button_icon=*/&gfx::VectorIcon::EmptyIcon(), - /*button_callback=*/base::DoNothing(), + /*button_icon=*/&gfx::kNoneIcon, /*button_callback=*/base::DoNothing(), /*leading_icon=*/kTestIcon)); EXPECT_TRUE(GetPixelDiffer()->CompareUiComponentsOnPrimaryScreen( @@ -148,8 +145,7 @@ GetContentsView()->AddChildView(std::make_unique<SystemToastView>( /*text=*/kTestLongText, SystemToastView::ButtonType::kTextButton, /*button_text=*/kTestButtonText, - /*button_icon=*/&gfx::VectorIcon::EmptyIcon(), - /*button_callback=*/base::DoNothing(), + /*button_icon=*/&gfx::kNoneIcon, /*button_callback=*/base::DoNothing(), /*leading_icon=*/kTestIcon)); EXPECT_TRUE(GetPixelDiffer()->CompareUiComponentsOnPrimaryScreen(
diff --git a/ash/system/toast/system_toast_view_unittest.cc b/ash/system/toast/system_toast_view_unittest.cc index 905524c1..995dbea 100644 --- a/ash/system/toast/system_toast_view_unittest.cc +++ b/ash/system/toast/system_toast_view_unittest.cc
@@ -14,7 +14,7 @@ #include "ash/style/icon_button.h" #include "ash/test/ash_test_base.h" #include "ui/chromeos/styles/cros_tokens_color_mappings.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/controls/button/label_button.h" #include "ui/views/controls/image_view.h" #include "ui/views/controls/label.h" @@ -73,7 +73,7 @@ widget->SetContentsView(std::make_unique<SystemToastView>( /*text=*/kTestText, SystemToastView::ButtonType::kNone, /*button_text=*/std::u16string(), - /*button_icon=*/&gfx::VectorIcon::EmptyIcon(), + /*button_icon=*/&gfx::kNoneIcon, /*button_callback=*/base::DoNothing(), /*leading_icon=*/kTestIcon)); // Test that the appropriate toast elements were created.
diff --git a/ash/system/unified/notification_counter_view.cc b/ash/system/unified/notification_counter_view.cc index 12267a561..b7dd1df1 100644 --- a/ash/system/unified/notification_counter_view.cc +++ b/ash/system/unified/notification_counter_view.cc
@@ -26,7 +26,6 @@ #include "ui/gfx/canvas.h" #include "ui/gfx/font_list.h" #include "ui/gfx/image/canvas_image_source.h" -#include "ui/gfx/paint_vector_icon.h" #include "ui/message_center/message_center.h" #include "ui/views/border.h" #include "ui/views/controls/image_view.h"
diff --git a/ash/system/unified/notification_icons_controller_unittest.cc b/ash/system/unified/notification_icons_controller_unittest.cc index 919beb35..a84a58c 100644 --- a/ash/system/unified/notification_icons_controller_unittest.cc +++ b/ash/system/unified/notification_icons_controller_unittest.cc
@@ -18,7 +18,6 @@ #include "ash/system/unified/notification_counter_view.h" #include "ash/test/ash_test_base.h" #include "ui/base/l10n/l10n_util.h" -#include "ui/gfx/vector_icon_types.h" #include "ui/message_center/message_center.h" #include "ui/message_center/public/cpp/notification.h" #include "ui/views/accessibility/view_accessibility.h" @@ -57,8 +56,8 @@ message_center::NotifierId( message_center::NotifierType::SYSTEM_COMPONENT, notifier_id, NotificationCatalogName::kTestCatalogName), - rich_notification_data, nullptr /* delegate */, - gfx::VectorIcon::EmptyIcon(), warning_level)); + rich_notification_data, nullptr /* delegate */, gfx::VectorIcon(), + warning_level)); notification_id_++; return id;
diff --git a/ash/system/video_conference/bubble/set_value_effects_view.cc b/ash/system/video_conference/bubble/set_value_effects_view.cc index c148332..9b9e6d9 100644 --- a/ash/system/video_conference/bubble/set_value_effects_view.cc +++ b/ash/system/video_conference/bubble/set_value_effects_view.cc
@@ -22,7 +22,6 @@ #include "ui/base/metadata/metadata_impl_macros.h" #include "ui/base/resource/resource_bundle.h" #include "ui/compositor/layer.h" -#include "ui/gfx/paint_vector_icon.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/controls/animated_image_view.h" #include "ui/views/controls/image_view.h"
diff --git a/ash/user_education/user_education_util_unittest.cc b/ash/user_education/user_education_util_unittest.cc index c598caf..eb50876 100644 --- a/ash/user_education/user_education_util_unittest.cc +++ b/ash/user_education/user_education_util_unittest.cc
@@ -23,7 +23,7 @@ #include "testing/gtest/include/gtest/gtest.h" #include "ui/base/interaction/element_tracker.h" #include "ui/base/mojom/ui_base_types.mojom-shared.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/metadata/view_factory.h" #include "ui/views/view.h" #include "ui/views/view_class_properties.h" @@ -79,10 +79,9 @@ // `GetHelpBubbleBodyIcon()` can be used to retrieve help bubble body icon from // extended properties. TEST_F(UserEducationUtilTest, CreateExtendedPropertiesWithBodyIcon) { - EXPECT_EQ(&GetHelpBubbleBodyIcon( - CreateExtendedProperties(gfx::VectorIcon::EmptyIcon())) - ->get(), - &gfx::VectorIcon::EmptyIcon()); + EXPECT_EQ( + &GetHelpBubbleBodyIcon(CreateExtendedProperties(gfx::kNoneIcon))->get(), + &gfx::kNoneIcon); // It is permissible to query help bubble body icon even when absent. EXPECT_EQ(GetHelpBubbleBodyIcon(HelpBubbleParams::ExtendedProperties()),
diff --git a/ash/user_education/views/help_bubble_view_ash.cc b/ash/user_education/views/help_bubble_view_ash.cc index d7ac6c5..12955f00 100644 --- a/ash/user_education/views/help_bubble_view_ash.cc +++ b/ash/user_education/views/help_bubble_view_ash.cc
@@ -48,6 +48,7 @@ #include "ui/gfx/geometry/rect_f.h" #include "ui/gfx/geometry/rounded_corners_f.h" #include "ui/gfx/geometry/skia_conversions.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/gfx/text_constants.h" #include "ui/gfx/text_utils.h" #include "ui/gfx/vector_icon_types.h" @@ -385,7 +386,7 @@ // Add the body icon (optional). constexpr int kBodyIconSize = 20; constexpr int kBodyIconBackgroundSize = 24; - if (body_icon && (body_icon != &gfx::VectorIcon::EmptyIcon())) { + if (body_icon && (body_icon != &gfx::kNoneIcon)) { icon_view_ = top_text_container->AddChildViewAt( views::Builder<views::ImageView>() .SetAccessibleName(params.body_icon_alt_text)
diff --git a/ash/user_education/views/help_bubble_view_ash_unittest.cc b/ash/user_education/views/help_bubble_view_ash_unittest.cc index 56734d0..d78c05a 100644 --- a/ash/user_education/views/help_bubble_view_ash_unittest.cc +++ b/ash/user_education/views/help_bubble_view_ash_unittest.cc
@@ -22,7 +22,7 @@ #include "ui/color/color_provider.h" #include "ui/events/base_event_utils.h" #include "ui/events/event.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/bubble/bubble_frame_view.h" #include "ui/views/controls/image_view.h" @@ -120,12 +120,12 @@ HelpBubbleViewAshBodyIconTest, ::testing::Combine( /*body_icon_from_params=*/::testing::Values( - std::make_optional(std::cref(gfx::VectorIcon::EmptyIcon())), + std::make_optional(std::cref(gfx::kNoneIcon)), std::make_optional(std::cref(vector_icons::kCelebrationIcon)), std::make_optional(std::cref(vector_icons::kHelpIcon)), std::nullopt), /*body_icon_from_extended_properties=*/::testing::Values( - std::make_optional(std::cref(gfx::VectorIcon::EmptyIcon())), + std::make_optional(std::cref(gfx::kNoneIcon)), std::make_optional(std::cref(vector_icons::kCelebrationIcon)), std::make_optional(std::cref(vector_icons::kHelpIcon)), std::nullopt))); @@ -160,7 +160,7 @@ // Cache `expected_body_icon` based on order of precedence. const gfx::VectorIcon& expected_body_icon = body_icon_from_extended_properties().value_or( - body_icon_from_params().value_or(gfx::VectorIcon::EmptyIcon())); + body_icon_from_params().value_or(gfx::kNoneIcon)); // Confirm body icon exists iff expected and is configured as expected. EXPECT_THAT( @@ -168,7 +168,7 @@ ->GetUniqueViewAs<views::ImageView>( HelpBubbleViewAsh::kBodyIconIdForTesting, views::ElementTrackerViews::GetContextForView(help_bubble_view)), - Conditional(&expected_body_icon != &gfx::VectorIcon::EmptyIcon(), + Conditional(&expected_body_icon != &gfx::kNoneIcon, Property(&views::ImageView::GetImageModel, Eq(ui::ImageModel::FromVectorIcon( expected_body_icon,
diff --git a/ash/user_education/welcome_tour/welcome_tour_controller.cc b/ash/user_education/welcome_tour/welcome_tour_controller.cc index c0439d7f..08426c85 100644 --- a/ash/user_education/welcome_tour/welcome_tour_controller.cc +++ b/ash/user_education/welcome_tour/welcome_tour_controller.cc
@@ -56,7 +56,7 @@ #include "ui/display/screen.h" #include "ui/display/tablet_state.h" #include "ui/events/base_event_utils.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/interaction/element_tracker_views.h" #include "ui/views/view.h" @@ -78,7 +78,7 @@ user_education_util::CreateExtendedProperties( ui::mojom::ModalType::kSystem), user_education_util::CreateExtendedProperties( - /*body_icon=*/gfx::VectorIcon::EmptyIcon())); + /*body_icon=*/gfx::kNoneIcon)); } user_education::HelpBubbleParams::ExtendedProperties
diff --git a/ash/user_education/welcome_tour/welcome_tour_controller_unittest.cc b/ash/user_education/welcome_tour/welcome_tour_controller_unittest.cc index 1278466..c2f85a4 100644 --- a/ash/user_education/welcome_tour/welcome_tour_controller_unittest.cc +++ b/ash/user_education/welcome_tour/welcome_tour_controller_unittest.cc
@@ -61,7 +61,6 @@ #include "ui/display/display.h" #include "ui/display/screen.h" #include "ui/events/types/event_type.h" -#include "ui/gfx/vector_icon_types.h" #include "ui/message_center/message_center.h" #include "ui/message_center/public/cpp/notification.h" #include "ui/message_center/public/cpp/notification_delegate.h" @@ -169,8 +168,7 @@ arg.next_button_callback().is_null() != has_next_button && util::GetHelpBubbleModalType(ext_props) == ui::mojom::ModalType::kSystem && - &util::GetHelpBubbleBodyIcon(ext_props)->get() == - &gfx::VectorIcon::EmptyIcon(); + &util::GetHelpBubbleBodyIcon(ext_props)->get() == &gfx::kNoneIcon; } MATCHER_P7(BubbleStep, @@ -191,8 +189,7 @@ arg.body_text_id() == body_text_id && arg.arrow() == arrow && Matches(body_text_matcher)(util::GetHelpBubbleBodyText(ext_props)) && arg.next_button_callback().is_null() != has_next_button && - &util::GetHelpBubbleBodyIcon(ext_props)->get() == - &gfx::VectorIcon::EmptyIcon() && + &util::GetHelpBubbleBodyIcon(ext_props)->get() == &gfx::kNoneIcon && util::GetHelpBubbleModalType(ext_props) == ui::mojom::ModalType::kSystem; } @@ -218,8 +215,7 @@ arg.body_text_id() == body_text_id && arg.arrow() == arrow && Matches(body_text_matcher)(util::GetHelpBubbleBodyText(ext_props)) && arg.next_button_callback().is_null() != has_next_button && - &util::GetHelpBubbleBodyIcon(ext_props)->get() == - &gfx::VectorIcon::EmptyIcon() && + &util::GetHelpBubbleBodyIcon(ext_props)->get() == &gfx::kNoneIcon && util::GetHelpBubbleModalType(ext_props) == ui::mojom::ModalType::kSystem; }
diff --git a/ash/webui/common/mojom/sea_pen.mojom b/ash/webui/common/mojom/sea_pen.mojom index 2dec49d..037659e7 100644 --- a/ash/webui/common/mojom/sea_pen.mojom +++ b/ash/webui/common/mojom/sea_pen.mojom
@@ -183,6 +183,14 @@ // Called when the user close the introduction dialog for SeaPen feature. HandleSeaPenIntroductionDialogClosed(); + // Determines whether to show the SeaPen freeform introduction dialog. + ShouldShowSeaPenFreeformIntroductionDialog() => + (bool should_show_freeform_dialog); + + // Called when the user close the introduction dialog for SeaPen freeform + // feature. + HandleSeaPenFreeformIntroductionDialogClosed(); + // Indicates whether the device is in tablet mode. IsInTabletMode() => (bool tablet_mode);
diff --git a/ash/webui/common/resources/sea_pen/sea_pen_actions.ts b/ash/webui/common/resources/sea_pen/sea_pen_actions.ts index 3152194..f84400b 100644 --- a/ash/webui/common/resources/sea_pen/sea_pen_actions.ts +++ b/ash/webui/common/resources/sea_pen/sea_pen_actions.ts
@@ -34,6 +34,8 @@ SET_SELECTED_RECENT_SEA_PEN_IMAGE = 'set_selected_recent_sea_pen_image', SET_SHOULD_SHOW_SEA_PEN_INTRODUCTION_DIALOG = 'set_should_show_sea_pen_introduction_dialog', + SET_SHOULD_SHOW_SEA_PEN_FREEFORM_INTRODUCTION_DIALOG = + 'set_should_show_sea_pen_freeform_introduction_dialog', DISMISS_SEA_PEN_ERROR_ACTION = 'dismiss_sea_pen_error', SET_SEA_PEN_FULLSCREEN_STATE = 'set_sea_pen_fullscreen_state', SET_SEA_PEN_TEXT_QUERY_HISTORY = 'set_sea_pen_text_query_history', @@ -48,6 +50,7 @@ SetSeaPenThumbnailsAction|SetRecentSeaPenImagesAction| SetRecentSeaPenImageDataAction|SetSelectedRecentSeaPenImageAction| BeginSelectSeaPenThumbnailAction|EndSelectSeaPenThumbnailAction| + SetShouldShowSeaPenFreeformIntroductionDialogAction| SetShouldShowSeaPenIntroductionDialogAction|DismissSeaPenErrorAction| SetSeaPenFullscreenStateAction|SetSeaPenTextQueryHistory; @@ -320,6 +323,26 @@ }; } +export interface SetShouldShowSeaPenFreeformIntroductionDialogAction extends + Action { + name: SeaPenActionName.SET_SHOULD_SHOW_SEA_PEN_FREEFORM_INTRODUCTION_DIALOG; + shouldShowFreeformDialog: boolean; +} + +/** + * Sets the boolean that determines whether to show the Sea Pen freeform + * introduction dialog. + */ +export function setShouldShowSeaPenFreeformIntroductionDialogAction( + shouldShowFreeformDialog: boolean): + SetShouldShowSeaPenFreeformIntroductionDialogAction { + assert(typeof shouldShowFreeformDialog === 'boolean'); + return { + name: SeaPenActionName.SET_SHOULD_SHOW_SEA_PEN_FREEFORM_INTRODUCTION_DIALOG, + shouldShowFreeformDialog, + }; +} + export interface DismissSeaPenErrorAction extends Action { name: SeaPenActionName.DISMISS_SEA_PEN_ERROR_ACTION; }
diff --git a/ash/webui/common/resources/sea_pen/sea_pen_controller.ts b/ash/webui/common/resources/sea_pen/sea_pen_controller.ts index eb66b86..fb5fef3 100644 --- a/ash/webui/common/resources/sea_pen/sea_pen_controller.ts +++ b/ash/webui/common/resources/sea_pen/sea_pen_controller.ts
@@ -262,6 +262,33 @@ seaPenAction.setShouldShowSeaPenIntroductionDialogAction(false)); } +export async function getShouldShowSeaPenFreeformIntroductionDialog( + provider: SeaPenProviderInterface, + store: SeaPenStoreInterface): Promise<void> { + const {shouldShowFreeformDialog} = + await provider.shouldShowSeaPenFreeformIntroductionDialog(); + + // Dispatch action to set the should show dialog boolean. + store.dispatch( + seaPenAction.setShouldShowSeaPenFreeformIntroductionDialogAction( + shouldShowFreeformDialog)); +} + +export async function closeSeaPenFreeformIntroductionDialog( + provider: SeaPenProviderInterface, + store: SeaPenStoreInterface): Promise<void> { + if (!store.data.shouldShowSeaPenFreeformIntroductionDialog) { + // Do nothing if the introduction dialog is already closed; + return; + } + + await provider.handleSeaPenFreeformIntroductionDialogClosed(); + + // Dispatch action to set the should show dialog boolean. + store.dispatch( + seaPenAction.setShouldShowSeaPenFreeformIntroductionDialogAction(false)); +} + /** * Check whether to show fullscreen preview while selecting a SeaPen image * as wallpaper.
diff --git a/ash/webui/common/resources/sea_pen/sea_pen_introduction_dialog_element.ts b/ash/webui/common/resources/sea_pen/sea_pen_introduction_dialog_element.ts index af347a0..da45756 100644 --- a/ash/webui/common/resources/sea_pen/sea_pen_introduction_dialog_element.ts +++ b/ash/webui/common/resources/sea_pen/sea_pen_introduction_dialog_element.ts
@@ -31,6 +31,21 @@ } } +export class SeaPenFreeformIntroductionCloseEvent extends CustomEvent<null> { + static readonly EVENT_NAME = 'sea-pen-freeform-introduction-dialog-close'; + + constructor() { + super( + SeaPenFreeformIntroductionCloseEvent.EVENT_NAME, + { + bubbles: true, + composed: true, + detail: null, + }, + ); + } +} + declare global { interface HTMLElementTagNameMap { 'sea-pen-introduction-dialog': SeaPenIntroductionDialogElement; @@ -57,7 +72,11 @@ private onClickClose_() { this.$.dialog.cancel(); - this.dispatchEvent(new SeaPenIntroductionCloseEvent()); + if (isSeaPenTextInputEnabled()) { + this.dispatchEvent(new SeaPenFreeformIntroductionCloseEvent()) + } else { + this.dispatchEvent(new SeaPenIntroductionCloseEvent()); + } } private getIntroDialogContent_() {
diff --git a/ash/webui/common/resources/sea_pen/sea_pen_reducer.ts b/ash/webui/common/resources/sea_pen/sea_pen_reducer.ts index 6b6fa3f..8e0fc13 100644 --- a/ash/webui/common/resources/sea_pen/sea_pen_reducer.ts +++ b/ash/webui/common/resources/sea_pen/sea_pen_reducer.ts
@@ -223,6 +223,16 @@ } } +function shouldShowSeaPenFreeformIntroductionDialogReducer( + state: boolean, action: SeaPenActions): boolean { + switch (action.name) { + case SeaPenActionName.SET_SHOULD_SHOW_SEA_PEN_FREEFORM_INTRODUCTION_DIALOG: + return action.shouldShowFreeformDialog; + default: + return state; + } +} + function errorReducer(state: string|null, action: SeaPenActions): string|null { switch (action.name) { case SeaPenActionName.END_SELECT_RECENT_SEA_PEN_IMAGE: @@ -269,6 +279,9 @@ currentSelected: currentSelectedReducer(state.currentSelected, action), pendingSelected: pendingSelectedReducer(state.pendingSelected, action, state), + shouldShowSeaPenFreeformIntroductionDialog: + shouldShowSeaPenFreeformIntroductionDialogReducer( + state.shouldShowSeaPenFreeformIntroductionDialog, action), shouldShowSeaPenIntroductionDialog: shouldShowSeaPenIntroductionDialogReducer( state.shouldShowSeaPenIntroductionDialog, action),
diff --git a/ash/webui/common/resources/sea_pen/sea_pen_router_element.html b/ash/webui/common/resources/sea_pen/sea_pen_router_element.html index 5113fb8..ba1e5a0 100644 --- a/ash/webui/common/resources/sea_pen/sea_pen_router_element.html +++ b/ash/webui/common/resources/sea_pen/sea_pen_router_element.html
@@ -139,9 +139,12 @@ <sea-pen-freeform></sea-pen-freeform> </template> </div> - <template is="dom-if" if="[[showSeaPenIntroductionDialog_]]" restamp> + <template is="dom-if" + if="[[shouldSeaPenIntroductionDialog_(relativePath_, showSeaPenFreeformIntroductionDialog_, showSeaPenIntroductionDialog_)]]" + restamp> <sea-pen-introduction-dialog - on-sea-pen-introduction-dialog-close="onCloseSeaPenIntroductionDialog_"> + on-sea-pen-introduction-dialog-close="onCloseSeaPenIntroductionDialog_" + on-sea-pen-freeform-introduction-dialog-close="onCloseSeaPenFreeformIntroductionDialog_"> </sea-pen-introduction-dialog> </template> <!-- Prevent the right margin from collapsing when window gets very narrow -->
diff --git a/ash/webui/common/resources/sea_pen/sea_pen_router_element.ts b/ash/webui/common/resources/sea_pen/sea_pen_router_element.ts index 66d976e..056e7b8 100644 --- a/ash/webui/common/resources/sea_pen/sea_pen_router_element.ts +++ b/ash/webui/common/resources/sea_pen/sea_pen_router_element.ts
@@ -20,7 +20,7 @@ import {QUERY, Query} from './constants.js'; import {isSeaPenEnabled, isSeaPenTextInputEnabled} from './load_time_booleans.js'; -import {cleanUpSeaPenQueryStates, closeSeaPenIntroductionDialog, getShouldShowSeaPenIntroductionDialog} from './sea_pen_controller.js'; +import {cleanUpSeaPenQueryStates, closeSeaPenFreeformIntroductionDialog, closeSeaPenIntroductionDialog, getShouldShowSeaPenFreeformIntroductionDialog, getShouldShowSeaPenIntroductionDialog} from './sea_pen_controller.js'; import {SeaPenTemplateId} from './sea_pen_generated.mojom-webui.js'; import {getSeaPenProvider} from './sea_pen_interface_provider.js'; import {logSeaPenVisited} from './sea_pen_metrics_logger.js'; @@ -28,7 +28,7 @@ import {getTemplate} from './sea_pen_router_element.html.js'; import {WithSeaPenStore} from './sea_pen_store.js'; import {SeaPenTemplateQueryElement} from './sea_pen_template_query_element.js'; -import {getTemplateIdFromString} from './sea_pen_utils.js'; +import {getTemplateIdFromString, isPersonalizationApp} from './sea_pen_utils.js'; import {maybeDoPageTransition} from './transition.js'; export enum SeaPenPaths { @@ -67,6 +67,8 @@ }, showSeaPenIntroductionDialog_: Boolean, + + showSeaPenFreeformIntroductionDialog_: Boolean, }; } @@ -81,6 +83,7 @@ private queryParams_: SeaPenQueryParams; private relativePath_: string|null; private showSeaPenIntroductionDialog_: boolean; + private showSeaPenFreeformIntroductionDialog_: boolean; override connectedCallback() { assert(isSeaPenEnabled(), 'sea pen must be enabled'); @@ -89,8 +92,12 @@ this.watch<SeaPenRouterElement['showSeaPenIntroductionDialog_']>( 'showSeaPenIntroductionDialog_', state => state.shouldShowSeaPenIntroductionDialog); + this.watch<SeaPenRouterElement['showSeaPenFreeformIntroductionDialog_']>( + 'showSeaPenFreeformIntroductionDialog_', + state => state.shouldShowSeaPenFreeformIntroductionDialog); this.updateFromStore(); this.fetchIntroductionDialogStatus(); + this.fetchFreeformIntroductionDialogStatus(); logSeaPenVisited(this.relativePath_ as SeaPenPaths); afterNextRender(this, () => SeaPenObserver.initSeaPenObserverIfNeeded()); } @@ -170,6 +177,11 @@ console.warn('SeaPenRouter unknown path', relativePath); this.goToRoute(SeaPenPaths.TEMPLATES); } + + if (!isPersonalizationApp() && relativePath === SeaPenPaths.FREEFORM) { + console.warn('Attempt to navigate to freeform on unsupported platform'); + this.goToRoute(SeaPenPaths.TEMPLATES); + } } private shouldShowTemplateQuery_( @@ -193,7 +205,22 @@ } private shouldShowSeaPenFreeform_(relativePath: string|null): boolean { - return isSeaPenTextInputEnabled() && relativePath === SeaPenPaths.FREEFORM; + return isSeaPenTextInputEnabled() && + relativePath === SeaPenPaths.FREEFORM && isPersonalizationApp(); + } + + private shouldSeaPenIntroductionDialog_( + relativePath: string|null, showSeaPenFreeformIntroDialog: boolean, + showSeaPenIntroDialog: boolean): boolean { + if (!isSeaPenTextInputEnabled() || !isPersonalizationApp()) { + return showSeaPenIntroDialog; + } + + if (relativePath === SeaPenPaths.FREEFORM) { + return showSeaPenFreeformIntroDialog; + } + // On the templates page, either of the acknowledgments is sufficient. + return showSeaPenIntroDialog && showSeaPenFreeformIntroDialog; } private onBottomContainerClicked_(): void { @@ -222,6 +249,20 @@ } } + private async fetchFreeformIntroductionDialogStatus() { + await getShouldShowSeaPenFreeformIntroductionDialog( + getSeaPenProvider(), this.getStore()); + } + + private async onCloseSeaPenFreeformIntroductionDialog_() { + await closeSeaPenFreeformIntroductionDialog( + getSeaPenProvider(), this.getStore()); + // Freeform focus goes to the text input automatically. + if (this.relativePath_ !== SeaPenPaths.FREEFORM) { + this.focusOnFirstTemplate_(); + } + } + private onRecentTemplateImageDelete_() { // focus on the first template if the deleted recent image is the only image // or the last image of recent images list.
diff --git a/ash/webui/common/resources/sea_pen/sea_pen_state.ts b/ash/webui/common/resources/sea_pen/sea_pen_state.ts index e5ddbe0..74d54933 100644 --- a/ash/webui/common/resources/sea_pen/sea_pen_state.ts +++ b/ash/webui/common/resources/sea_pen/sea_pen_state.ts
@@ -23,6 +23,7 @@ pendingSelected: SeaPenImageId|SeaPenThumbnail|null; thumbnailResponseStatusCode: MantaStatusCode|null; shouldShowSeaPenIntroductionDialog: boolean; + shouldShowSeaPenFreeformIntroductionDialog: boolean; error: string|null; textQueryHistory: TextQueryHistoryEntry[]|null; } @@ -44,6 +45,7 @@ currentSelected: null, pendingSelected: null, shouldShowSeaPenIntroductionDialog: false, + shouldShowSeaPenFreeformIntroductionDialog: false, error: null, textQueryHistory: null, };
diff --git a/ash/webui/personalization_app/test/personalization_app_mojom_banned_mocha_test_base.cc b/ash/webui/personalization_app/test/personalization_app_mojom_banned_mocha_test_base.cc index 4618b16..8350003 100644 --- a/ash/webui/personalization_app/test/personalization_app_mojom_banned_mocha_test_base.cc +++ b/ash/webui/personalization_app/test/personalization_app_mojom_banned_mocha_test_base.cc
@@ -161,6 +161,14 @@ (override)); MOCK_METHOD(void, HandleSeaPenIntroductionDialogClosed, (), (override)); MOCK_METHOD(void, + ShouldShowSeaPenFreeformIntroductionDialog, + (ShouldShowSeaPenFreeformIntroductionDialogCallback callback), + (override)); + MOCK_METHOD(void, + HandleSeaPenFreeformIntroductionDialogClosed, + (), + (override)); + MOCK_METHOD(void, IsInTabletMode, (IsInTabletModeCallback callback), (override));
diff --git a/ash/webui/projector_app/mojom/BUILD.gn b/ash/webui/projector_app/mojom/BUILD.gn index 571299f..642103c 100644 --- a/ash/webui/projector_app/mojom/BUILD.gn +++ b/ash/webui/projector_app/mojom/BUILD.gn
@@ -17,7 +17,4 @@ "//url/mojom:url_mojom_gurl", ] webui_module_path = "/$cur_dir" - - # Projector app is still using JS + Closure Compiler. - generate_webui_js_bindings = true }
diff --git a/ash/webui/projector_app/public/mojom/BUILD.gn b/ash/webui/projector_app/public/mojom/BUILD.gn index 0db7ab5..013c439 100644 --- a/ash/webui/projector_app/public/mojom/BUILD.gn +++ b/ash/webui/projector_app/public/mojom/BUILD.gn
@@ -13,8 +13,6 @@ sources = [ "projector_types.mojom" ] webui_module_path = "/$cur_dir" - # Projector app is still using JS + Closure Compiler. - generate_webui_js_bindings = true public_deps = [ "//mojo/public/mojom/base" ] cpp_typemaps = [ {
diff --git a/ash/webui/projector_app/resources/BUILD.gn b/ash/webui/projector_app/resources/BUILD.gn index 911cc069..131a8201 100644 --- a/ash/webui/projector_app/resources/BUILD.gn +++ b/ash/webui/projector_app/resources/BUILD.gn
@@ -11,7 +11,6 @@ js_type_check("closure_compile") { is_polymer3 = true deps = [ - "//ash/webui/projector_app/resources/app/untrusted:untrusted_app", "//ash/webui/projector_app/resources/common:message_types", "//ash/webui/projector_app/resources/mock:mock_app", ]
diff --git a/ash/webui/projector_app/resources/app/untrusted/BUILD.gn b/ash/webui/projector_app/resources/app/untrusted/BUILD.gn index 0de21458..a928b48 100644 --- a/ash/webui/projector_app/resources/app/untrusted/BUILD.gn +++ b/ash/webui/projector_app/resources/app/untrusted/BUILD.gn
@@ -4,27 +4,47 @@ import("//chrome/common/features.gni") import("//third_party/closure_compiler/compile_js.gni") +import("//tools/grit/preprocess_if_expr.gni") +import("//tools/typescript/webui_ts_library.gni") import("//ui/webui/resources/tools/generate_grd.gni") assert(is_chromeos_ash, "Projector is ChromeOS only") -js_library("untrusted_app") { - sources = [ - "launch.js", - "untrusted_app_comm_factory.js", - "untrusted_projector_browser_proxy.js", - ] +mojo_files = [ + "ash/webui/projector_app/mojom/untrusted_projector.mojom-webui.ts", + "ash/webui/projector_app/public/mojom/projector_types.mojom-webui.ts", +] + +preprocess_if_expr("copy_mojo_ts") { + visibility = [ ":build_ts" ] + in_folder = root_gen_dir + in_files = mojo_files deps = [ - "//ash/webui/projector_app/mojom:projector_mojo_bindings_webui_js", - "//ash/webui/projector_app/public/mojom:projector_mojo_bindings_webui_js", - "//ash/webui/projector_app/resources/common:message_types", + "//ash/webui/projector_app/mojom:projector_mojo_bindings_ts__generator", + "//ash/webui/projector_app/public/mojom:projector_mojo_bindings_ts__generator", ] - extra_deps = - [ "//ui/webui/resources/cr_components/color_change_listener:build_ts" ] - externs_list = [ - "../../common/projector_app.externs.js", - "//ash/webui/web_applications/externs/file_handling.externs.js", + out_folder = "$target_gen_dir/preprocessed" +} + +webui_ts_library("build_ts") { + root_dir = "$target_gen_dir/preprocessed" + out_dir = "$target_gen_dir/tsc" + + in_files = mojo_files + + deps = [ "//ui/webui/resources/mojo:build_ts" ] + extra_deps = [ ":copy_mojo_ts" ] +} + +generate_grd("mojom_grdp") { + grd_prefix = "projector_mojo_bindings_webui" + out_grd = "$target_gen_dir/projector_mojo_bindings_webui_resources.grdp" + deps = [ ":build_ts" ] + input_files = [ + "ash/webui/projector_app/mojom/untrusted_projector.mojom-webui.js", + "ash/webui/projector_app/public/mojom/projector_types.mojom-webui.js", ] + input_files_base_dir = rebase_path("$target_gen_dir/tsc", root_build_dir) } generate_grd("build_untrusted_grd") { @@ -48,12 +68,7 @@ grd_prefix = "ash_projector_app_untrusted" out_grd = "$target_gen_dir/${grd_prefix}_resources.grd" - deps = [ - "//ash/webui/projector_app/mojom:projector_mojo_bindings_webui_grdp", - "//ash/webui/projector_app/public/mojom:projector_mojo_bindings_webui_grdp", - ] - grdp_files = [ - "$target_gen_dir/../../../mojom/projector_mojo_bindings_webui_resources.grdp", - "$target_gen_dir/../../../public/mojom/projector_mojo_bindings_webui_resources.grdp", - ] + deps = [ ":mojom_grdp" ] + grdp_files = + [ "$target_gen_dir/projector_mojo_bindings_webui_resources.grdp" ] }
diff --git a/ash/wm/splitview/split_view_setup_view.cc b/ash/wm/splitview/split_view_setup_view.cc index b562559..782b069 100644 --- a/ash/wm/splitview/split_view_setup_view.cc +++ b/ash/wm/splitview/split_view_setup_view.cc
@@ -15,7 +15,6 @@ #include "ui/base/l10n/l10n_util.h" #include "ui/base/metadata/metadata_impl_macros.h" #include "ui/compositor/layer.h" -#include "ui/gfx/vector_icon_types.h" #include "ui/views/controls/button/label_button.h" #include "ui/views/highlight_border.h" @@ -101,9 +100,9 @@ SystemToastView::ButtonType::kTextButton, /*button_text=*/ l10n_util::GetStringUTF16(IDS_ASH_OVERVIEW_FASTER_SPLITSCREEN_TOAST_SKIP), - /*button_icon=*/&gfx::VectorIcon::EmptyIcon(), + /*button_icon=*/&gfx::kNoneIcon, /*button_callback=*/std::move(skip_callback), - /*leading_icon=*/&gfx::VectorIcon::EmptyIcon())); + /*leading_icon=*/&gfx::kNoneIcon)); auto* dismiss_button = toast->button(); dismiss_button->SetTooltipText(l10n_util::GetStringUTF16( IDS_ASH_OVERVIEW_FASTER_SPLITSCREEN_TOAST_DISMISS_WINDOW_SUGGESTIONS));
diff --git a/base/check_op.h b/base/check_op.h index 76c3d7f1..b236a95 100644 --- a/base/check_op.h +++ b/base/check_op.h
@@ -9,11 +9,12 @@ #include <string> #include <string_view> #include <type_traits> +#include <utility> #include "base/base_export.h" #include "base/check.h" +#include "base/compiler_specific.h" #include "base/dcheck_is_on.h" -#include "base/memory/raw_ptr_exclusion.h" #include "base/strings/to_string.h" #include "base/types/is_arc_pointer.h" #include "base/types/supports_ostream_operator.h" @@ -50,27 +51,28 @@ // Caller takes ownership of the result and must release it with `free`. // This would normally be defined by <ostream>, but this header tries to avoid // including <ostream> to reduce compile-time. See https://crrev.com/c/2128112. -BASE_EXPORT char* CheckOpValueStr(int v); -BASE_EXPORT char* CheckOpValueStr(unsigned v); -BASE_EXPORT char* CheckOpValueStr(long v); -BASE_EXPORT char* CheckOpValueStr(unsigned long v); -BASE_EXPORT char* CheckOpValueStr(long long v); -BASE_EXPORT char* CheckOpValueStr(unsigned long long v); -BASE_EXPORT char* CheckOpValueStr(const void* v); -BASE_EXPORT char* CheckOpValueStr(std::nullptr_t v); -BASE_EXPORT char* CheckOpValueStr(double v); +RETURNS_NONNULL BASE_EXPORT char* CheckOpValueStr(int v); +RETURNS_NONNULL BASE_EXPORT char* CheckOpValueStr(unsigned v); +RETURNS_NONNULL BASE_EXPORT char* CheckOpValueStr(long v); +RETURNS_NONNULL BASE_EXPORT char* CheckOpValueStr(unsigned long v); +RETURNS_NONNULL BASE_EXPORT char* CheckOpValueStr(long long v); +RETURNS_NONNULL BASE_EXPORT char* CheckOpValueStr(unsigned long long v); +RETURNS_NONNULL BASE_EXPORT char* CheckOpValueStr(const void* v); +RETURNS_NONNULL BASE_EXPORT char* CheckOpValueStr(std::nullptr_t v); +RETURNS_NONNULL BASE_EXPORT char* CheckOpValueStr(double v); // Although the standard defines operator<< for std::string and std::string_view // in their respective headers, libc++ requires <ostream> for them. See // https://github.com/llvm/llvm-project/issues/61070. So we define non-<ostream> // versions here too. -BASE_EXPORT char* CheckOpValueStr(const std::string& v); -BASE_EXPORT char* CheckOpValueStr(std::string_view v); -BASE_EXPORT char* CheckOpValueStr(base::basic_cstring_view<char> v); +RETURNS_NONNULL BASE_EXPORT char* CheckOpValueStr(const std::string& v); +RETURNS_NONNULL BASE_EXPORT char* CheckOpValueStr(std::string_view v); +RETURNS_NONNULL BASE_EXPORT char* CheckOpValueStr( + base::basic_cstring_view<char> v); // Convert a streamable value to string out-of-line to avoid <sstream>. -BASE_EXPORT char* StreamValToStr(const void* v, - void (*stream_func)(std::ostream&, - const void*)); +RETURNS_NONNULL BASE_EXPORT char* StreamValToStr( + const void* v, + void (*stream_func)(std::ostream&, const void*)); #ifdef __has_builtin #define SUPPORTS_BUILTIN_ADDRESSOF (__has_builtin(__builtin_addressof)) @@ -155,10 +157,8 @@ // use with CheckOpValueStr() which allocates these strings using strdup(). // Returns allocated string (with strdup) for passing into // ::logging::CheckError::(D)CheckOp methods. -// TODO(pbos): Annotate this RETURNS_NONNULL after solving compile failure. -BASE_EXPORT char* CreateCheckOpLogMessageString(const char* expr_str, - char* v1_str, - char* v2_str); +RETURNS_NONNULL BASE_EXPORT char* +CreateCheckOpLogMessageString(const char* expr_str, char* v1_str, char* v2_str); // Helper macro for binary operators. // The 'switch' is used to prevent the 'else' from being ambiguous when the @@ -170,12 +170,17 @@ switch (0) \ case 0: \ default: \ - if (char* const message_on_fail = ::logging::Check##name##Impl( \ - (val1), (val2), #val1 " " #op " " #val2); \ - !message_on_fail) \ - ; \ + if (const std::pair<char*, char*> strings_on_failure = \ + ::logging::Check##name##Impl((val1), (val2)); \ + !strings_on_failure.first) \ + [[likely]]; \ else \ - check_failure_function(message_on_fail __VA_OPT__(, ) __VA_ARGS__) + check_failure_function( \ + [](const std::pair<char*, char*>& argument_strings) { \ + return ::logging::CreateCheckOpLogMessageString( \ + #val1 " " #op " " #val2, argument_strings.first, \ + argument_strings.second); \ + }(strings_on_failure)__VA_OPT__(, ) __VA_ARGS__) #if !CHECK_WILL_STREAM() @@ -198,23 +203,21 @@ // The second overload avoids address-taking of static members for // fundamental types. -#define DEFINE_CHECK_OP_IMPL(name, op) \ - template <typename T, typename U> \ - requires(!std::is_fundamental_v<T> || !std::is_fundamental_v<U>) \ - constexpr char* Check##name##Impl(const T& v1, const U& v2, \ - const char* expr_str) { \ - if (ANALYZER_ASSUME_TRUE(v1 op v2)) [[likely]] \ - return nullptr; \ - return CreateCheckOpLogMessageString(expr_str, CheckOpValueStr(v1), \ - CheckOpValueStr(v2)); \ - } \ - template <typename T, typename U> \ - requires(std::is_fundamental_v<T> && std::is_fundamental_v<U>) \ - constexpr char* Check##name##Impl(T v1, U v2, const char* expr_str) { \ - if (ANALYZER_ASSUME_TRUE(v1 op v2)) [[likely]] \ - return nullptr; \ - return CreateCheckOpLogMessageString(expr_str, CheckOpValueStr(v1), \ - CheckOpValueStr(v2)); \ +#define DEFINE_CHECK_OP_IMPL(name, op) \ + template <typename T, typename U> \ + requires(!std::is_fundamental_v<T> || !std::is_fundamental_v<U>) \ + constexpr std::pair<char*, char*> Check##name##Impl(const T& v1, \ + const U& v2) { \ + if (ANALYZER_ASSUME_TRUE(v1 op v2)) [[likely]] \ + return {nullptr, nullptr}; \ + return {CheckOpValueStr(v1), CheckOpValueStr(v2)}; \ + } \ + template <typename T, typename U> \ + requires(std::is_fundamental_v<T> && std::is_fundamental_v<U>) \ + constexpr std::pair<char*, char*> Check##name##Impl(T v1, U v2) { \ + if (ANALYZER_ASSUME_TRUE(v1 op v2)) [[likely]] \ + return {nullptr, nullptr}; \ + return {CheckOpValueStr(v1), CheckOpValueStr(v2)}; \ } // clang-format off
diff --git a/chrome/VERSION b/chrome/VERSION index 80a921e9..ae24f5a5 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=133 MINOR=0 -BUILD=6935 +BUILD=6936 PATCH=0
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/automotivetoolbar/AutomotiveBackButtonToolbarCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/automotivetoolbar/AutomotiveBackButtonToolbarCoordinator.java index a3bb9e0..5ba24671a 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/automotivetoolbar/AutomotiveBackButtonToolbarCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/automotivetoolbar/AutomotiveBackButtonToolbarCoordinator.java
@@ -39,6 +39,7 @@ if (mIsFullscreen) { assert (mEdgeSwipeGestureDetector != null); mEdgeSwipeGestureDetector.setIsReadyForNewScroll(false); + mIsAnimationActive = true; mOnSwipeAutomotiveToolbar.startAnimation(mHideOnSwipeToolbarAnimation); } } @@ -57,6 +58,7 @@ private Animation mHideOnSwipeToolbarAnimation; private boolean mIsFullscreen; private boolean mIsVerticalToolbar; + private boolean mIsAnimationActive; interface OnSwipeCallback { /** Handles actions required after a swipe occurs. */ @@ -70,7 +72,11 @@ new OnSwipeCallback() { @Override public void handleSwipe() { - if (mIsFullscreen && mOnSwipeAutomotiveToolbar.getVisibility() == View.GONE) { + if (mIsFullscreen + && !mIsAnimationActive + && mOnSwipeAutomotiveToolbar.getVisibility() == View.GONE) { + mIsAnimationActive = true; + mOnSwipeAutomotiveToolbar.setVisibility(View.VISIBLE); mOnSwipeAutomotiveToolbar.startAnimation(mShowOnSwipeToolbarAnimation); mHandler.postDelayed(mHideToolbar, SHOW_TOOLBAR_ON_SWIPE_DURATION_MS); } @@ -79,7 +85,9 @@ @Override public void handleBackSwipe() { if (mIsFullscreen + && !mIsAnimationActive && mOnSwipeAutomotiveToolbar.getVisibility() == View.VISIBLE) { + mIsAnimationActive = true; mOnSwipeAutomotiveToolbar.startAnimation(mHideOnSwipeToolbarAnimation); mHandler.removeCallbacks(mHideToolbar); } @@ -154,14 +162,10 @@ mShowOnSwipeToolbarAnimation.setAnimationListener( new EmptyAnimationListener() { @Override - public void onAnimationStart(Animation animation) { - mOnSwipeAutomotiveToolbar.setVisibility(View.VISIBLE); - } - - @Override public void onAnimationEnd(Animation animation) { assert (mEdgeSwipeGestureDetector != null); mEdgeSwipeGestureDetector.setIsReadyForNewScroll(true); + mIsAnimationActive = false; } }); @@ -177,6 +181,7 @@ mOnSwipeAutomotiveToolbar.setVisibility(View.GONE); assert (mEdgeSwipeGestureDetector != null); mEdgeSwipeGestureDetector.setIsReadyForNewScroll(true); + mIsAnimationActive = false; } }); // TODO(https://crbug.com/376740682): Configure back press behavior for Automotive Toolbar
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutGroupTitle.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutGroupTitle.java index 1d23e94c..6118098c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutGroupTitle.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutGroupTitle.java
@@ -367,10 +367,12 @@ if (result) { // Capture and register the avatar bitmap if the group data is successfully // fetched. + View avatarView = mSharedImageTilesCoordinator.getView(); + if (LocalizationUtils.isLayoutRtl()) { + avatarView.setLayoutDirection(View.LAYOUT_DIRECTION_RTL); + } captureSharedAvatarBitmap( - mSharedImageTilesCoordinator.getView(), - registerAvatarResource, - updateGroupTitleBitmap); + avatarView, registerAvatarResource, updateGroupTitleBitmap); } }); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java index ad0a021..3a29169 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
@@ -4308,7 +4308,7 @@ } private void dragActiveClickedTabOntoStrip(float x, boolean startReorder) { - StripLayoutTab draggedTab = getSelectedStripTab(); + StripLayoutTab draggedTab = (StripLayoutTab) mReorderDelegate.getViewBeingDragged(); assert draggedTab != null; finishAnimationsAndPushTabUpdates(); @@ -4347,7 +4347,7 @@ } private void dragActiveClickedTabOutOfStrip(long time) { - StripLayoutTab draggedTab = getSelectedStripTab(); + StripLayoutTab draggedTab = (StripLayoutTab) mReorderDelegate.getViewBeingDragged(); assert draggedTab != null; int tabId = draggedTab.getTabId();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java index 6fc3d15..ff82446 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java
@@ -297,9 +297,11 @@ gt.isIncognito(), gt.isForegrounded(), gt.shouldShowReorderBackground(), + gt.shouldShowBubble(), gt.getRootId(), gt.getTint(), gt.getReorderBackgroundTint(), + gt.getBubbleTint(), gt.getPaddedX() * mDpToPx, gt.getPaddedY() * mDpToPx, gt.getPaddedWidth() * mDpToPx, @@ -309,8 +311,6 @@ gt.getCornerRadius() * mDpToPx, gt.getBottomIndicatorWidth() * mDpToPx, gt.getBottomIndicatorHeight() * mDpToPx, - gt.shouldShowBubble(), - gt.getBubbleTint(), gt.getBubbleSize() * mDpToPx, layerTitleCache); } @@ -445,9 +445,11 @@ boolean incognito, boolean foreground, boolean showReorderBackground, + boolean showBubble, int id, int tint, int reorderBackgroundTint, + int bubbleTint, float x, float y, float width, @@ -457,8 +459,6 @@ float cornerRadius, float bottomIndicatorWidth, float bottomIndicatorHeight, - boolean showBubble, - int bubbleTint, float bubbleSize, LayerTitleCache layerTitleCache);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java index bec9b49..70f3a274 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
@@ -5,6 +5,7 @@ package org.chromium.chrome.browser.tabbed_mode; import android.content.Context; +import android.graphics.Bitmap; import android.os.Build.VERSION; import android.os.Build.VERSION_CODES; import android.os.Bundle; @@ -1314,6 +1315,13 @@ public void openLearnMoreSharedTabGroupsPage(Context context, GURL gurl) { CustomTabActivity.showInfoPage(context, gurl.getSpec()); } + + @Override + public void getPreviewBitmap( + String collaborationId, int size, Callback<Bitmap> callback) { + // TODO(https://crbug.com/386833405): implement this. + callback.onResult(null); + } }; }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ViewTransitionPixelTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ViewTransitionPixelTest.java index d2654c15..903b701 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/ViewTransitionPixelTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ViewTransitionPixelTest.java
@@ -28,6 +28,7 @@ import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.Criteria; import org.chromium.base.test.util.CriteriaHelper; +import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Features.EnableFeatures; import org.chromium.base.test.util.MinAndroidSdkLevel; @@ -596,6 +597,7 @@ @Test @MediumTest @Feature({"RenderTest"}) + @DisabledTest(message = "crbug.com/387365717") public void testBrowserControlsChildSnapshotControlsPush() throws Throwable { String url = "/chrome/test/data/android/view_transition_browser_controls_child.html"; mActivityTestRule.startMainActivityWithURL(mTestServer.getURL(url));
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java index 03ef214..2c1c6f66 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperTest.java
@@ -3000,6 +3000,7 @@ public void testTabGroupDeleteDialog_DragOffStrip_NotLastTab() { // Set up resources for testing tab group delete dialog. setUpTabGroupForDialog(0, 2); + mStripLayoutHelper.setActiveClickedTabAtIndexForTesting(0); StripLayoutTab[] tabs = mStripLayoutHelper.getStripLayoutTabsForTesting(); // Start dragging tab out of group. @@ -3019,6 +3020,7 @@ // Set up resources for testing tab group delete dialog. setUpTabGroupForDialog(0, 1); + mStripLayoutHelper.setActiveClickedTabAtIndexForTesting(0); StripLayoutTab[] tabs = mStripLayoutHelper.getStripLayoutTabsForTesting(); // Start dragging tab out of group. @@ -3039,6 +3041,7 @@ // Set up resources for testing tab group delete dialog. setUpTabGroupForDialog(0, 1); + mStripLayoutHelper.setActiveClickedTabAtIndexForTesting(0); StripLayoutTab[] tabs = mStripLayoutHelper.getStripLayoutTabsForTesting(); Tab tab = mModel.getTabAt(0); @@ -3081,6 +3084,7 @@ public void testTabGroupDeleteDialog_DragOffStrip_Sync_Positive() { // Set up resources for testing tab group delete dialog. setUpTabGroupForDialog(0, 1); + mStripLayoutHelper.setActiveClickedTabAtIndexForTesting(0); StripLayoutTab[] tabs = mStripLayoutHelper.getStripLayoutTabsForTesting(); // Start dragging tab out of group. @@ -3117,6 +3121,7 @@ public void testTabGroupDeleteDialog_DragOffStrip_Sync_Negative() { // Set up resources for testing tab group delete dialog. setUpTabGroupForDialog(0, 1); + mStripLayoutHelper.setActiveClickedTabAtIndexForTesting(0); StripLayoutTab[] tabs = mStripLayoutHelper.getStripLayoutTabsForTesting(); // Start dragging tab out of group. @@ -4380,6 +4385,7 @@ // Initialize with 10 tabs. int selectedIndex = 5; initializeTest(false, false, selectedIndex, 10); + mStripLayoutHelper.setActiveClickedTabAtIndexForTesting(selectedIndex); mStripLayoutHelper.onSizeChanged( SCREEN_WIDTH, SCREEN_HEIGHT, false, TIMESTAMP, PADDING_LEFT, PADDING_RIGHT); StripLayoutTab draggedTab = @@ -4476,6 +4482,7 @@ public void testDrag2_DragActiveClickedTabOutOfStrip() { // Setup and mark the active clicked tab. initializeTest(false, false, 1, 5); + mStripLayoutHelper.setActiveClickedTabAtIndexForTesting(1); mStripLayoutHelper.onSizeChanged( SCREEN_WIDTH, SCREEN_HEIGHT, false, TIMESTAMP, PADDING_LEFT, PADDING_RIGHT);
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index a7d8f8b..263213d 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -6789,10 +6789,6 @@ kOsDesktop, FEATURE_VALUE_TYPE(tab_groups::kTabGroupSyncServiceDesktopMigration)}, - {flag_descriptions::kTabGroupsSaveUIUpdateId, - flag_descriptions::kTabGroupsSaveUIUpdateName, - flag_descriptions::kTabGroupsSaveUIUpdateDescription, kOsDesktop, - FEATURE_VALUE_TYPE(tab_groups::kTabGroupsSaveUIUpdate)}, #if !BUILDFLAG(IS_ANDROID) {flag_descriptions::kScrollableTabStripFlagId, flag_descriptions::kScrollableTabStripName,
diff --git a/chrome/browser/android/compositor/layer/group_indicator_layer.cc b/chrome/browser/android/compositor/layer/group_indicator_layer.cc index f200dac..1c7cabb 100644 --- a/chrome/browser/android/compositor/layer/group_indicator_layer.cc +++ b/chrome/browser/android/compositor/layer/group_indicator_layer.cc
@@ -62,6 +62,9 @@ corner_radius, corner_radius, corner_radius, corner_radius)); group_indicator_->SetBackgroundColor(SkColor4f::FromColor(tint)); + // Whether the current layout direction is right-to-left. + bool is_rtl = l10n_util::IsLayoutRtl(); + // Show title if needed. DecorationIconTitle* title_layer = nullptr; // Only pull if group id is valid. @@ -74,10 +77,11 @@ title_layer->SetUIResourceIds(); float title_y = (height - title_layer->size().height()) / 2.f; + float title_x = is_rtl ? title_end_padding : title_start_padding; title_layer->setBounds( gfx::Size(width - title_start_padding - title_end_padding, height)); title_layer_ = title_layer->layer(); - title_layer_->SetPosition(gfx::PointF(title_start_padding, title_y)); + title_layer_->SetPosition(gfx::PointF(title_x, title_y)); unsigned expected_children = 2; if (group_indicator_->children().size() < expected_children) { @@ -94,9 +98,8 @@ // Show notification bubble if needed. if (show_bubble) { - float bubble_x = l10n_util::IsLayoutRtl() - ? title_end_padding - : width - title_end_padding - bubble_size; + float bubble_x = + is_rtl ? title_end_padding : width - title_end_padding - bubble_size; float bubble_y = (height - bubble_size) / 2.0f; float corner_size = bubble_size / 2.0f; @@ -113,7 +116,7 @@ // Set bottom indicator properties. float bottom_indicator_x = x; float bottom_indicator_y = tab_strip_height - bottom_indicator_height; - if (l10n_util::IsLayoutRtl()) { + if (is_rtl) { bottom_indicator_x -= (bottom_indicator_width - width); } @@ -137,7 +140,7 @@ float reorder_background_x = x; float reorder_background_y = reorder_background_top_margin_; - if (l10n_util::IsLayoutRtl()) { + if (is_rtl) { reorder_background_x -= (bottom_indicator_width + reorder_background_padding_end_ - width); } else {
diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.cc b/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.cc index 07956e0..971ecfae 100644 --- a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.cc +++ b/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.cc
@@ -460,9 +460,11 @@ jboolean incognito, jboolean foreground, jboolean show_reorder_background, + jboolean show_bubble, jint id, jint tint, jint reorder_background_tint, + jint bubble_tint, jfloat x, jfloat y, jfloat width, @@ -472,8 +474,6 @@ jfloat corner_radius, jfloat bottom_indicator_width, jfloat bottom_indicator_height, - jboolean show_bubble, - jint bubble_tint, jfloat bubble_size, const JavaParamRef<jobject>& jlayer_title_cache) { LayerTitleCache* layer_title_cache =
diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.h b/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.h index 0b09d5dd..f92a17d 100644 --- a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.h +++ b/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.h
@@ -163,9 +163,11 @@ jboolean incognito, jboolean foreground, jboolean show_reorder_background, + jboolean show_bubble, jint id, jint tint, jint reorder_background_tint, + jint bubble_tint, jfloat x, jfloat y, jfloat width, @@ -175,8 +177,6 @@ jfloat corner_radius, jfloat bottom_indicator_width, jfloat bottom_indicator_height, - jboolean show_bubble, - jint bubble_tint, jfloat bubble_size, const base::android::JavaParamRef<jobject>& jlayer_title_cache);
diff --git a/chrome/browser/ash/app_list/BUILD.gn b/chrome/browser/ash/app_list/BUILD.gn index 37a739a..116d554 100644 --- a/chrome/browser/ash/app_list/BUILD.gn +++ b/chrome/browser/ash/app_list/BUILD.gn
@@ -93,6 +93,7 @@ "//chromeos/ash/components/browser_context_helper", "//chromeos/ash/components/file_manager:constants", "//chromeos/ash/components/scalable_iph", + "//chromeos/ash/services/assistant/public/cpp", "//chromeos/constants", "//components/app_constants", "//components/pref_registry", @@ -252,6 +253,7 @@ "//chrome/browser/profiles:profile", "//chrome/browser/search_engines", "//chrome/browser/ui", + "//chrome/browser/ui/ash/assistant", "//chrome/browser/ui/ash/login", "//chrome/browser/ui/ash/shelf", "//chrome/browser/ui/ash/system_web_apps",
diff --git a/chrome/browser/ash/app_list/app_context_menu.cc b/chrome/browser/ash/app_list/app_context_menu.cc index 863316a..47c5c4b 100644 --- a/chrome/browser/ash/app_list/app_context_menu.cc +++ b/chrome/browser/ash/app_list/app_context_menu.cc
@@ -21,6 +21,7 @@ #include "components/vector_icons/vector_icons.h" #include "ui/base/l10n/l10n_util.h" #include "ui/color/color_id.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/gfx/vector_icon_types.h" #include "ui/views/vector_icons.h" @@ -135,14 +136,14 @@ return views::kNewIncognitoWindowIcon; case ash::INSTALL: // Deprecated. - return gfx::VectorIcon::EmptyIcon(); + return gfx::kNoneIcon; case ash::SETTINGS: return vector_icons::kSettingsIcon; case ash::USE_LAUNCH_TYPE_REGULAR: case ash::USE_LAUNCH_TYPE_WINDOW: case ash::USE_LAUNCH_TYPE_TABBED_WINDOW: // Check items use the default icon. - return gfx::VectorIcon::EmptyIcon(); + return gfx::kNoneIcon; case ash::DEPRECATED_USE_LAUNCH_TYPE_PINNED: case ash::DEPRECATED_USE_LAUNCH_TYPE_FULLSCREEN: NOTREACHED();
diff --git a/chrome/browser/ash/app_list/app_list_client_impl.cc b/chrome/browser/ash/app_list/app_list_client_impl.cc index 57db283..5c69df0 100644 --- a/chrome/browser/ash/app_list/app_list_client_impl.cc +++ b/chrome/browser/ash/app_list/app_list_client_impl.cc
@@ -22,6 +22,7 @@ #include "ash/system/federated/federated_service_controller_impl.h" #include "base/feature_list.h" #include "base/functional/bind.h" +#include "base/location.h" #include "base/memory/raw_ref.h" #include "base/memory/weak_ptr.h" #include "base/metrics/histogram_functions.h" @@ -58,9 +59,11 @@ #include "chromeos/ash/components/browser_context_helper/browser_context_helper.h" #include "chromeos/ash/components/scalable_iph/scalable_iph.h" #include "chromeos/ash/components/scalable_iph/scalable_iph_factory.h" +#include "chromeos/ash/services/assistant/public/cpp/assistant_browser_delegate.h" #include "components/feature_engagement/public/feature_constants.h" #include "components/feature_engagement/public/tracker.h" #include "components/session_manager/core/session_manager.h" +#include "components/user_manager/user_manager.h" #include "ui/base/page_transition_types.h" #include "ui/base/window_open_disposition.h" #include "ui/display/screen.h" @@ -734,6 +737,35 @@ return current_model_updater_->ModelHasBeenReorderedInThisSession(); } +void AppListClientImpl::GetAssistantNewEntryPointEligibility( + GetAssistantNewEntryPointEligibilityCallback callback) { + if (profile_ == nullptr) { + std::move(callback).Run(false); + return; + } + + // Assistant new entry point is supported only for a primary profile. + bool is_primary_profile = user_manager::UserManager::Get()->IsPrimaryUser( + ash::BrowserContextHelper::Get()->GetUserByBrowserContext(profile_)); + if (!is_primary_profile) { + std::move(callback).Run(false); + return; + } + + ash::assistant::AssistantBrowserDelegate* delegate = + ash::assistant::AssistantBrowserDelegate::Get(); + if (!delegate) { + std::move(callback).Run(false); + return; + } + + delegate->is_new_entry_point_eligible_for_primary_profile_ready().Post( + FROM_HERE, + base::BindOnce( + &AppListClientImpl::OnAssistantNewEntryPointEligibilityReady, + weak_ptr_factory_.GetWeakPtr(), profile_, std::move(callback))); +} + std::unique_ptr<ash::ScopedIphSession> AppListClientImpl::CreateLauncherSearchIphSession() { if (profile_ == nullptr) { @@ -962,6 +994,32 @@ default_app_name.value()); } +void AppListClientImpl::OnAssistantNewEntryPointEligibilityReady( + Profile* profile, + GetAssistantNewEntryPointEligibilityCallback callback) { + // A profile might have been switched during the async call. Fail-safe if it + // has changed. + if (profile != profile_) { + std::move(callback).Run(false); + return; + } + + ash::assistant::AssistantBrowserDelegate* delegate = + ash::assistant::AssistantBrowserDelegate::Get(); + if (!delegate) { + std::move(callback).Run(false); + return; + } + + base::expected<bool, ash::assistant::AssistantBrowserDelegate::Error> + eligibility = delegate->IsNewEntryPointEligibleForPrimaryProfile(); + CHECK(eligibility.has_value()) + << "AppListClientImpl is reading a value after waiting the ready event. " + "There should be no error."; + + std::move(callback).Run(eligibility.value()); +} + std::optional<bool> AppListClientImpl::IsNewUser( const AccountId& account_id) const { // NOTE: Apps Collections in Ash is currently only supported for the primary
diff --git a/chrome/browser/ash/app_list/app_list_client_impl.h b/chrome/browser/ash/app_list/app_list_client_impl.h index 4d08b38..bedca75b8a 100644 --- a/chrome/browser/ash/app_list/app_list_client_impl.h +++ b/chrome/browser/ash/app_list/app_list_client_impl.h
@@ -124,6 +124,8 @@ const std::vector<std::string>& apps_below_the_fold, bool is_apps_collections_page) override; bool HasReordered() override; + void GetAssistantNewEntryPointEligibility( + GetAssistantNewEntryPointEligibilityCallback callback) override; // user_manager::UserManager::UserSessionStateObserver: void ActiveUserChanged(user_manager::User* active_user) override; @@ -229,6 +231,13 @@ ash::AppListLaunchedFrom launched_from, bool is_app_above_the_fold); + // Called when Assistant new entry point eligibility value is ready to read. + // `profile` is used to check if a profile has been switched during the async + // call. + void OnAssistantNewEntryPointEligibilityReady( + Profile* profile, + GetAssistantNewEntryPointEligibilityCallback callback); + // Unowned pointer to the associated profile. May change if SetProfile is // called. raw_ptr<Profile> profile_ = nullptr;
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 f9c639c..6047408 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
@@ -35,6 +35,8 @@ #include "base/test/bind.h" #include "base/test/metrics/histogram_tester.h" #include "base/test/run_until.h" +#include "base/test/scoped_feature_list.h" +#include "base/test/test_future.h" #include "build/branding_buildflags.h" #include "build/build_config.h" #include "chrome/browser/apps/app_service/app_launch_params.h" @@ -71,6 +73,7 @@ #include "chrome/browser/search_engines/template_url_service_factory.h" #include "chrome/browser/signin/identity_manager_factory.h" #include "chrome/browser/signin/identity_test_environment_profile_adaptor.h" +#include "chrome/browser/ui/ash/assistant/assistant_browser_delegate_impl.h" #include "chrome/browser/ui/ash/login/user_adding_screen.h" #include "chrome/browser/ui/ash/shelf/shelf_controller_helper.h" #include "chrome/browser/ui/ash/system_web_apps/system_web_app_ui_utils.h" @@ -79,6 +82,7 @@ #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/chrome_pages.h" #include "chrome/browser/ui/settings_window_manager_chromeos.h" +#include "chrome/browser/web_applications/test/web_app_install_test_utils.h" #include "chrome/common/chrome_features.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_switches.h" @@ -89,6 +93,8 @@ #include "chrome/test/base/testing_profile.h" #include "chrome/test/base/ui_test_utils.h" #include "chromeos/ash/components/browser_context_helper/browser_context_helper.h" +#include "chromeos/ash/services/assistant/public/cpp/assistant_browser_delegate.h" +#include "chromeos/ash/services/assistant/public/cpp/features.h" #include "components/account_id/account_id.h" #include "components/app_constants/constants.h" #include "components/browser_sync/browser_sync_switches.h" @@ -111,6 +117,7 @@ #include "ui/display/test/display_manager_test_api.h" #include "ui/menus/simple_menu_model.h" #include "ui/wm/core/window_util.h" +#include "url/gurl.h" // Browser Test for AppListClientImpl. using AppListClientImplBrowserTest = extensions::PlatformAppBrowserTest; @@ -1701,3 +1708,29 @@ EXPECT_EQ(youtube_ordinal, new_youtube_ordinal); EXPECT_EQ(calculator_ordinal, new_calculator_ordinal); } + +class AppListClientImplAssistantNewEntryPointTest + : public AppListClientImplBrowserPromiseAppTest { + private: + base::test::ScopedFeatureList scoped_feature_list_{ + ash::assistant::features::kEnableNewEntryPoint}; +}; + +IN_PROC_BROWSER_TEST_F(AppListClientImplAssistantNewEntryPointTest, Eligible) { + webapps::AppId app_id = web_app::test::InstallDummyWebApp( + profile(), "test app", GURL("https://example.com/path")); + + AssistantBrowserDelegateImpl* delegate = + static_cast<AssistantBrowserDelegateImpl*>( + ash::assistant::AssistantBrowserDelegate::Get()); + ASSERT_TRUE(delegate); + delegate->OverrideEntryPointIdForTesting(app_id); + + AppListClientImpl* client = AppListClientImpl::GetInstance(); + ASSERT_TRUE(client); + + base::test::TestFuture<bool> eligibility_future; + client->GetAssistantNewEntryPointEligibility( + eligibility_future.GetCallback()); + EXPECT_TRUE(eligibility_future.Get()); +}
diff --git a/chrome/browser/ash/arc/enterprise/OWNERS b/chrome/browser/ash/arc/enterprise/OWNERS index f9fe75b..c97e038 100644 --- a/chrome/browser/ash/arc/enterprise/OWNERS +++ b/chrome/browser/ash/arc/enterprise/OWNERS
@@ -1,4 +1,4 @@ # When making changes, also update ArcOwners in the GwsQ config: # http://google3/chrome/enterprise/gwsq/enterprise-policy-review.gwsq yaohuali@google.com -mhasank@chromium.org +jhorwich@google.com
diff --git a/chrome/browser/ash/arc/input_overlay/display_overlay_controller.cc b/chrome/browser/ash/arc/input_overlay/display_overlay_controller.cc index 084f4c32..f5b089ab7 100644 --- a/chrome/browser/ash/arc/input_overlay/display_overlay_controller.cc +++ b/chrome/browser/ash/arc/input_overlay/display_overlay_controller.cc
@@ -701,7 +701,7 @@ const ui::LocatedEvent& event) { if (auto* delete_edit_view = GetDeleteEditShortcut()) { if (const auto bounds = delete_edit_view->GetBoundsInScreen(); - !bounds.Contains(event.root_location())) { + !bounds.Contains(event.target()->GetScreenLocation(event))) { RemoveDeleteEditShortcutWidget(); } }
diff --git a/chrome/browser/ash/arc/keymint/OWNERS b/chrome/browser/ash/arc/keymint/OWNERS index ce161a4..9069967 100644 --- a/chrome/browser/ash/arc/keymint/OWNERS +++ b/chrome/browser/ash/arc/keymint/OWNERS
@@ -1,3 +1,2 @@ vraheja@chromium.org -yaohuali@chromium.org -mhasank@chromium.org \ No newline at end of file +yaohuali@chromium.org \ No newline at end of file
diff --git a/chrome/browser/ash/arc/policy/OWNERS b/chrome/browser/ash/arc/policy/OWNERS index 49f1b11c..3464d553 100644 --- a/chrome/browser/ash/arc/policy/OWNERS +++ b/chrome/browser/ash/arc/policy/OWNERS
@@ -1,2 +1,2 @@ -mhasank@chromium.org +jhorwich@google.com yaohuali@google.com \ No newline at end of file
diff --git a/chrome/browser/ash/boca/on_task/BUILD.gn b/chrome/browser/ash/boca/on_task/BUILD.gn index ff7e2745..6758ae9 100644 --- a/chrome/browser/ash/boca/on_task/BUILD.gn +++ b/chrome/browser/ash/boca/on_task/BUILD.gn
@@ -31,6 +31,7 @@ "//ash/constants", "//ash/public/cpp", "//ash/webui/boca_ui", + "//ash/webui/system_apps/public:system_web_app_type", "//base", "//chrome/browser/apps/app_service",
diff --git a/chrome/browser/ash/boca/on_task/locked_session_window_tracker_factory.cc b/chrome/browser/ash/boca/on_task/locked_session_window_tracker_factory.cc index 9a437531..ce2bf9a76 100644 --- a/chrome/browser/ash/boca/on_task/locked_session_window_tracker_factory.cc +++ b/chrome/browser/ash/boca/on_task/locked_session_window_tracker_factory.cc
@@ -49,7 +49,7 @@ auto on_task_blocklist = std::make_unique<OnTaskBlocklist>(std::move(url_blocklist_manager)); return std::make_unique<LockedSessionWindowTracker>( - std::move(on_task_blocklist)); + std::move(on_task_blocklist), context); } content::BrowserContext*
diff --git a/chrome/browser/ash/boca/on_task/on_task_locked_session_window_tracker.cc b/chrome/browser/ash/boca/on_task/on_task_locked_session_window_tracker.cc index 76a93380..e3b3c1ad 100644 --- a/chrome/browser/ash/boca/on_task/on_task_locked_session_window_tracker.cc +++ b/chrome/browser/ash/boca/on_task/on_task_locked_session_window_tracker.cc
@@ -13,20 +13,24 @@ #include "ash/public/cpp/shell_window_ids.h" #include "ash/shell.h" #include "ash/webui/boca_ui/url_constants.h" +#include "ash/webui/system_apps/public/system_web_app_type.h" #include "ash/wm/screen_pinning_controller.h" #include "base/containers/contains.h" #include "base/functional/bind.h" #include "base/strings/string_util.h" #include "base/values.h" #include "chrome/browser/platform_util.h" +#include "chrome/browser/ui/ash/system_web_apps/system_web_app_ui_utils.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/tabs/tab_strip_model_delegate.h" +#include "chromeos/ash/components/boca/boca_role_util.h" #include "chromeos/ash/components/boca/boca_window_observer.h" #include "chromeos/ash/components/boca/on_task/activity/active_tab_tracker.h" #include "chromeos/ash/components/boca/on_task/notification_constants.h" #include "chromeos/ash/components/boca/on_task/on_task_notifications_manager.h" +#include "chromeos/ash/components/browser_context_helper/browser_context_helper.h" #include "chromeos/strings/grit/chromeos_strings.h" #include "components/sessions/content/session_tab_helper.h" #include "content/public/browser/browser_thread.h" @@ -50,11 +54,23 @@ } LockedSessionWindowTracker::LockedSessionWindowTracker( - std::unique_ptr<OnTaskBlocklist> on_task_blocklist) + std::unique_ptr<OnTaskBlocklist> on_task_blocklist, + content::BrowserContext* context) : on_task_blocklist_(std::move(on_task_blocklist)), - notifications_manager_(ash::boca::OnTaskNotificationsManager::Create()) {} + is_consumer_profile_(ash::boca_util::IsConsumer( + ash::BrowserContextHelper::Get()->GetUserByBrowserContext(context))), + notifications_manager_(ash::boca::OnTaskNotificationsManager::Create()) { + // Set up window tracker to observe app instances only on consumer devices. + // This will enable us to filter out unmanaged app instances. + if (is_consumer_profile_) { + BrowserList::GetInstance()->AddObserver(this); + } +} LockedSessionWindowTracker::~LockedSessionWindowTracker() { + if (is_consumer_profile_) { + BrowserList::GetInstance()->RemoveObserver(this); + } CleanupWindowTracker(); } @@ -80,9 +96,6 @@ } browser_ = browser; browser_->tab_strip_model()->AddObserver(this); - if (!browser_list_observation_.IsObserving()) { - browser_list_observation_.Observe(BrowserList::GetInstance()); - } } void LockedSessionWindowTracker::RefreshUrlBlocklist() { @@ -100,15 +113,48 @@ void LockedSessionWindowTracker::MaybeCloseBrowser( base::WeakPtr<Browser> weak_browser_ptr) { + if (!weak_browser_ptr) { + return; + } + + // The browser window needs to be closed if: + // 1. It is a duplicate instance of the Boca SWA outside the one being + // tracked. + // 2. It is an unmanaged instance of the Boca SWA spawned through + // non-conventional means. + // 3. It is not a Boca app instance and the tracking window happens to be in + // locked fullscreen mode. + // 4. It is an oauth popup and the oauth operation has completed. + // + // The inverse checks below ensure we do not attempt to close the window if + // they do not fall under any of the scenarios outlined above. Browser* const browser = weak_browser_ptr.get(); - // If tracking browser is in locked fullscreen mode, we may need to explicitly - // close a browser when either a new window is opened from the OnTask SWA that - // is blocked, but is not closed or when an OAuth is completed, but since - // OnTask prevents windows from closing, we need to manually close that window - // when the OAuth is completed. - if (!browser || browser == browser_ || - (browser_ && !platform_util::IsBrowserLockedFullscreen(browser_)) || - (browser->is_type_app_popup() && oauth_in_progress_)) { + if (browser == browser_) { + // Same instance as the one being tracked. Skip close. + return; + } + if (!browser_ && browser->IsLockedForOnTask()) { + // New instance that has been prepared for OnTask but is not being tracked + // yet. Skip close because it is a managed instance. + return; + } + if (browser->is_type_app_popup() && oauth_in_progress_) { + // Oauth popup and oauth is still in progress. Skip close. + return; + } + + bool is_boca_app_instance = + ash::IsBrowserForSystemWebApp(browser, ash::SystemWebAppType::BOCA); + if (browser_ && !platform_util::IsBrowserLockedFullscreen(browser_) && + !is_boca_app_instance) { + // New instance that is not a Boca SWA instance and was spawned when the + // Boca SWA instance being tracked is not in locked fullscreen mode. Skip + // close. + return; + } + if (!browser_ && !is_boca_app_instance) { + // New instance that is not a Boca SWA instance and is spawned when there is + // no Boca SWA instance being tracked. Skip close for now. return; } browser->window()->Close(); @@ -158,7 +204,6 @@ void LockedSessionWindowTracker::CleanupWindowTracker() { if (browser_) { browser_->tab_strip_model()->RemoveObserver(this); - browser_list_observation_.Reset(); } if (on_task_blocklist_) { on_task_blocklist_->CleanupBlocklist();
diff --git a/chrome/browser/ash/boca/on_task/on_task_locked_session_window_tracker.h b/chrome/browser/ash/boca/on_task/on_task_locked_session_window_tracker.h index 0f37563..706764b 100644 --- a/chrome/browser/ash/boca/on_task/on_task_locked_session_window_tracker.h +++ b/chrome/browser/ash/boca/on_task/on_task_locked_session_window_tracker.h
@@ -9,19 +9,18 @@ #include "base/memory/singleton.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" -#include "base/scoped_observation.h" #include "chrome/browser/ui/browser_list_observer.h" #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" #include "chromeos/ash/components/boca/on_task/on_task_blocklist.h" #include "chromeos/ash/components/boca/on_task/on_task_notifications_manager.h" #include "components/keyed_service/core/keyed_service.h" +#include "content/public/browser/browser_context.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/navigation_handle.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents_observer.h" class Browser; -class BrowserList; namespace ash::boca { class BocaWindowObserver; @@ -43,8 +42,8 @@ public: static Browser* GetBrowserWithTab(content::WebContents* tab); - explicit LockedSessionWindowTracker( - std::unique_ptr<OnTaskBlocklist> on_task_blocklist); + LockedSessionWindowTracker(std::unique_ptr<OnTaskBlocklist> on_task_blocklist, + content::BrowserContext* context); LockedSessionWindowTracker(const LockedSessionWindowTracker&) = delete; LockedSessionWindowTracker& operator=(const LockedSessionWindowTracker&) = delete; @@ -122,11 +121,10 @@ bool can_start_navigation_throttle_ = true; bool oauth_in_progress_ = false; const std::unique_ptr<OnTaskBlocklist> on_task_blocklist_; + const bool is_consumer_profile_; std::unique_ptr<ash::boca::OnTaskNotificationsManager> notifications_manager_; raw_ptr<Browser> browser_ = nullptr; - base::ScopedObservation<BrowserList, BrowserListObserver> - browser_list_observation_{this}; base::ObserverList<ash::boca::BocaWindowObserver> observers_; base::WeakPtrFactory<LockedSessionWindowTracker> weak_pointer_factory_{this};
diff --git a/chrome/browser/ash/boca/on_task/on_task_locked_session_window_tracker_unittest.cc b/chrome/browser/ash/boca/on_task/on_task_locked_session_window_tracker_unittest.cc index 94aea998..8f8a2b558 100644 --- a/chrome/browser/ash/boca/on_task/on_task_locked_session_window_tracker_unittest.cc +++ b/chrome/browser/ash/boca/on_task/on_task_locked_session_window_tracker_unittest.cc
@@ -93,9 +93,9 @@ // browser test, right now it's very hard to tell when does tab strip update // happens. class OnTaskLockedSessionWindowTrackerTest : public BrowserWithTestWindowTest { - public: + protected: void SetUp() override { - // TODO(crbug.com/36741761):Change this to reguar mock when remigrated to + // TODO(crbug.com/36741761): Change this to regular mock when remigrated to // browser test. ON_CALL(boca_window_observer_, OnActiveTabChanged(_)) .WillByDefault(Return()); @@ -125,7 +125,7 @@ auto on_task_blocklist = std::make_unique<OnTaskBlocklist>( std::move(url_blocklist_manager)); return std::make_unique<LockedSessionWindowTracker>( - std::move(on_task_blocklist)); + std::move(on_task_blocklist), context); })); ASSERT_TRUE(base::test::RunUntil([&]() { return (LockedSessionWindowTrackerFactory::GetForBrowserContext( @@ -141,6 +141,7 @@ ash::boca::OnTaskNotificationsManager::CreateForTest( std::move(fake_notifications_delegate))); } + void TearDown() override { task_environment()->RunUntilIdle(); @@ -676,6 +677,11 @@ TEST_F(OnTaskLockedSessionWindowTrackerTest, NewBrowserWindowsDontOpenDuringLockedFullscreen) { + // Set up relevant features for browser instance observation. + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitWithFeatures( + /*enabled_features=*/{ash::features::kBoca, ash::features::kBocaConsumer}, + /*disabled_features=*/{}); CreateWindowTrackerServiceForTesting(); auto* const window_tracker = LockedSessionWindowTrackerFactory::GetForBrowserContext(profile()); @@ -717,6 +723,11 @@ } TEST_F(OnTaskLockedSessionWindowTrackerTest, NewBrowserPopupIsRegistered) { + // Set up relevant features for browser instance observation. + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitWithFeatures( + /*enabled_features=*/{ash::features::kBoca, ash::features::kBocaConsumer}, + /*disabled_features=*/{}); CreateWindowTrackerServiceForTesting(); auto* const window_tracker = LockedSessionWindowTrackerFactory::GetForBrowserContext(profile()); @@ -732,6 +743,11 @@ } TEST_F(OnTaskLockedSessionWindowTrackerTest, BrowserClose) { + // Set up relevant features for browser instance observation. + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitWithFeatures( + /*enabled_features=*/{ash::features::kBoca, ash::features::kBocaConsumer}, + /*disabled_features=*/{}); CreateWindowTrackerServiceForTesting(); auto* const window_tracker = LockedSessionWindowTrackerFactory::GetForBrowserContext(profile());
diff --git a/chrome/browser/ash/boca/on_task/on_task_system_web_app_manager_impl.cc b/chrome/browser/ash/boca/on_task/on_task_system_web_app_manager_impl.cc index 413b5e7..01d159c 100644 --- a/chrome/browser/ash/boca/on_task/on_task_system_web_app_manager_impl.cc +++ b/chrome/browser/ash/boca/on_task/on_task_system_web_app_manager_impl.cc
@@ -81,7 +81,8 @@ if (instance) { const SessionID active_window_id = instance->GetActiveSystemWebAppWindowID(); - instance->PrepareSystemWebAppWindowForOnTask(active_window_id); + instance->PrepareSystemWebAppWindowForOnTask( + active_window_id, /*close_bundle_content=*/true); } std::move(callback).Run(launch_result.state == apps::LaunchResult::State::kSuccess); @@ -209,7 +210,8 @@ } void OnTaskSystemWebAppManagerImpl::PrepareSystemWebAppWindowForOnTask( - SessionID window_id) { + SessionID window_id, + bool close_bundle_content) { Browser* const browser = GetBrowserWindowWithID(window_id); if (!browser) { return; @@ -225,16 +227,18 @@ aura::Window* const native_window = browser->window()->GetNativeWindow(); native_window->SetProperty(chromeos::kSupportsFloatedStateKey, false); - // Remove all tabs with pre-existing content. This is to de-dupe content and - // ensure that the tabs are set up for locked mode. - std::set<SessionID> tab_ids_to_remove; - for (int idx = browser->tab_strip_model()->count() - 1; idx > 0; --idx) { - content::WebContents* const tab = - browser->tab_strip_model()->GetWebContentsAt(idx); - const SessionID tab_id = sessions::SessionTabHelper::IdForTab(tab); - tab_ids_to_remove.insert(tab_id); + // Remove all tabs with pre-existing content if specified. This is to normally + // de-dupe content and ensure that the tabs are set up for locked mode. + if (close_bundle_content) { + std::set<SessionID> tab_ids_to_remove; + for (int idx = browser->tab_strip_model()->count() - 1; idx > 0; --idx) { + content::WebContents* const tab = + browser->tab_strip_model()->GetWebContentsAt(idx); + const SessionID tab_id = sessions::SessionTabHelper::IdForTab(tab); + tab_ids_to_remove.insert(tab_id); + } + RemoveTabsWithTabIds(window_id, tab_ids_to_remove); } - RemoveTabsWithTabIds(window_id, tab_ids_to_remove); } SessionID OnTaskSystemWebAppManagerImpl::GetActiveTabID() {
diff --git a/chrome/browser/ash/boca/on_task/on_task_system_web_app_manager_impl.h b/chrome/browser/ash/boca/on_task/on_task_system_web_app_manager_impl.h index 0a95606..32bad11 100644 --- a/chrome/browser/ash/boca/on_task/on_task_system_web_app_manager_impl.h +++ b/chrome/browser/ash/boca/on_task/on_task_system_web_app_manager_impl.h
@@ -46,7 +46,8 @@ void RemoveTabsWithTabIds( SessionID window_id, const std::set<SessionID>& tab_ids_to_remove) override; - void PrepareSystemWebAppWindowForOnTask(SessionID window_id) override; + void PrepareSystemWebAppWindowForOnTask(SessionID window_id, + bool close_bundle_content) override; SessionID GetActiveTabID() override; void SwitchToTab(SessionID tab_id) override;
diff --git a/chrome/browser/ash/boca/on_task/on_task_system_web_app_manager_impl_browsertest.cc b/chrome/browser/ash/boca/on_task/on_task_system_web_app_manager_impl_browsertest.cc index 46e7c82..b577993 100644 --- a/chrome/browser/ash/boca/on_task/on_task_system_web_app_manager_impl_browsertest.cc +++ b/chrome/browser/ash/boca/on_task/on_task_system_web_app_manager_impl_browsertest.cc
@@ -46,11 +46,13 @@ class LockedSessionWindowTrackerMock : public LockedSessionWindowTracker { public: explicit LockedSessionWindowTrackerMock(Profile* profile) - : LockedSessionWindowTracker(std::make_unique<OnTaskBlocklist>( - std::make_unique<policy::URLBlocklistManager>( - profile->GetPrefs(), - policy::policy_prefs::kUrlBlocklist, - policy::policy_prefs::kUrlAllowlist))) {} + : LockedSessionWindowTracker( + std::make_unique<OnTaskBlocklist>( + std::make_unique<policy::URLBlocklistManager>( + profile->GetPrefs(), + policy::policy_prefs::kUrlBlocklist, + policy::policy_prefs::kUrlAllowlist)), + profile) {} ~LockedSessionWindowTrackerMock() override = default; MOCK_METHOD(void, @@ -292,7 +294,7 @@ // Verify that the tab is cleaned up after window prep. system_web_app_manager.PrepareSystemWebAppWindowForOnTask( - boca_app_browser->session_id()); + boca_app_browser->session_id(), /*close_bundle_content=*/true); EXPECT_TRUE(boca_app_browser->IsLockedForOnTask()); views::Widget* const widget = views::Widget::GetWidgetForNativeWindow( boca_app_browser->window()->GetNativeWindow()); @@ -303,5 +305,29 @@ EXPECT_EQ(boca_app_browser->tab_strip_model()->count(), 1); } +IN_PROC_BROWSER_TEST_F(OnTaskSystemWebAppManagerImplBrowserTest, + PreparingSystemWebAppWindowAndPreservingContent) { + // Launch Boca app for testing purposes. + OnTaskSystemWebAppManagerImpl system_web_app_manager(profile()); + base::test::TestFuture<bool> launch_future; + system_web_app_manager.LaunchSystemWebAppAsync(launch_future.GetCallback()); + ASSERT_TRUE(launch_future.Get()); + Browser* const boca_app_browser = FindBocaSystemWebAppBrowser(); + ASSERT_THAT(boca_app_browser, NotNull()); + EXPECT_EQ(boca_app_browser->tab_strip_model()->count(), 1); + + // Create tab so we can verify it does not get cleaned up after window prep. + system_web_app_manager.CreateBackgroundTabWithUrl( + boca_app_browser->session_id(), GURL(kTestUrl), + LockedNavigationOptions::BLOCK_NAVIGATION); + ASSERT_EQ(boca_app_browser->tab_strip_model()->count(), 2); + + // Verify that the tab is not destroyed after window prep. + system_web_app_manager.PrepareSystemWebAppWindowForOnTask( + boca_app_browser->session_id(), /*close_bundle_content=*/false); + EXPECT_TRUE(boca_app_browser->IsLockedForOnTask()); + EXPECT_EQ(boca_app_browser->tab_strip_model()->count(), 2); +} + } // namespace } // namespace ash::boca
diff --git a/chrome/browser/ash/child_accounts/on_device_controls/app_controls_notifier.cc b/chrome/browser/ash/child_accounts/on_device_controls/app_controls_notifier.cc index d10314e..822c7527 100644 --- a/chrome/browser/ash/child_accounts/on_device_controls/app_controls_notifier.cc +++ b/chrome/browser/ash/child_accounts/on_device_controls/app_controls_notifier.cc
@@ -116,7 +116,7 @@ base::MakeRefCounted<message_center::HandleNotificationClickDelegate>( base::BindRepeating(&AppControlsNotifier::HandleClick, weak_ptr_factory_.GetWeakPtr())), - /*small_image=*/gfx::VectorIcon::EmptyIcon(), + /*small_image=*/gfx::VectorIcon(), message_center::SystemNotificationWarningLevel::NORMAL); NotificationDisplayServiceFactory::GetForProfile(profile_)->Display(
diff --git a/chrome/browser/ash/crostini/crostini_upgrade_available_notification.cc b/chrome/browser/ash/crostini/crostini_upgrade_available_notification.cc index 24ce9d138..d0f0759 100644 --- a/chrome/browser/ash/crostini/crostini_upgrade_available_notification.cc +++ b/chrome/browser/ash/crostini/crostini_upgrade_available_notification.cc
@@ -22,7 +22,6 @@ #include "components/vector_icons/vector_icons.h" #include "ui/base/l10n/l10n_util.h" #include "ui/chromeos/styles/cros_tokens_color_mappings.h" -#include "ui/gfx/paint_vector_icon.h" namespace crostini {
diff --git a/chrome/browser/ash/notifications/gnubby_notification.cc b/chrome/browser/ash/notifications/gnubby_notification.cc index 0692ff7..b3e6ce3 100644 --- a/chrome/browser/ash/notifications/gnubby_notification.cc +++ b/chrome/browser/ash/notifications/gnubby_notification.cc
@@ -14,7 +14,6 @@ #include "chrome/grit/generated_resources.h" #include "chromeos/ash/components/dbus/gnubby/gnubby_client.h" #include "ui/base/l10n/l10n_util.h" -#include "ui/gfx/paint_vector_icon.h" #include "ui/message_center/public/cpp/notification.h" #include "ui/message_center/public/cpp/notification_delegate.h" @@ -55,7 +54,7 @@ new message_center::HandleNotificationClickDelegate( base::BindRepeating(&GnubbyNotification::DismissNotification, weak_ptr_factory_.GetWeakPtr())), - gfx::VectorIcon::EmptyIcon(), colorType); + gfx::VectorIcon(), colorType); } void GnubbyNotification::ShowNotification() {
diff --git a/chrome/browser/ash/policy/remote_commands/ARC_OWNERS b/chrome/browser/ash/policy/remote_commands/ARC_OWNERS index af73c7e..d2421f80 100644 --- a/chrome/browser/ash/policy/remote_commands/ARC_OWNERS +++ b/chrome/browser/ash/policy/remote_commands/ARC_OWNERS
@@ -1,6 +1,5 @@ batoon@google.com jhorwich@chromium.org -mhasank@chromium.org preranap@google.com vraheja@chromium.org yaohuali@google.com
diff --git a/chrome/browser/ash/policy/remote_commands/device_command_reset_euicc_job.cc b/chrome/browser/ash/policy/remote_commands/device_command_reset_euicc_job.cc index 1c4d2fbb..e291b0170 100644 --- a/chrome/browser/ash/policy/remote_commands/device_command_reset_euicc_job.cc +++ b/chrome/browser/ash/policy/remote_commands/device_command_reset_euicc_job.cc
@@ -120,7 +120,7 @@ message_center::RichNotificationData(), base::MakeRefCounted<message_center::HandleNotificationClickDelegate>( base::DoNothingAs<void()>()), - /*small_image=*/gfx::VectorIcon::EmptyIcon(), + /*small_image=*/gfx::VectorIcon(), message_center::SystemNotificationWarningLevel::NORMAL); SystemNotificationHelper::GetInstance()->Display(notification); }
diff --git a/chrome/browser/ash/scalable_iph/scalable_iph_delegate_impl.cc b/chrome/browser/ash/scalable_iph/scalable_iph_delegate_impl.cc index 66217555..005f448 100644 --- a/chrome/browser/ash/scalable_iph/scalable_iph_delegate_impl.cc +++ b/chrome/browser/ash/scalable_iph/scalable_iph_delegate_impl.cc
@@ -60,7 +60,7 @@ #include "ui/base/resource/resource_bundle.h" #include "ui/gfx/image/image_skia.h" #include "ui/gfx/image/image_skia_operations.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/message_center/public/cpp/notification.h" #include "ui/message_center/public/cpp/notification_delegate.h" #include "url/gurl.h" @@ -501,7 +501,7 @@ notification_image_id.value()); } - const gfx::VectorIcon* icon = &gfx::VectorIcon::EmptyIcon(); + const gfx::VectorIcon* icon = &gfx::kNoneIcon; if (params.icon == ScalableIphDelegate::NotificationIcon::kRedeem) { icon = &chromeos::kRedeemIcon; }
diff --git a/chrome/browser/ash/scanner/BUILD.gn b/chrome/browser/ash/scanner/BUILD.gn index 6b46368..7488177 100644 --- a/chrome/browser/ash/scanner/BUILD.gn +++ b/chrome/browser/ash/scanner/BUILD.gn
@@ -14,8 +14,6 @@ "scanner_keyed_service.h", "scanner_keyed_service_factory.cc", "scanner_keyed_service_factory.h", - "scanner_system_state_provider.cc", - "scanner_system_state_provider.h", ] public_deps = [ "//chrome/browser:browser_public_dependencies" ] @@ -26,6 +24,7 @@ "//base", "//chrome/browser/profiles:profile", "//chrome/browser/ui/webui/ash/scanner_feedback_dialog", + "//chromeos/ash/components/specialized_features", "//components/drive", "//components/keyed_service/core", "//content/public/browser",
diff --git a/chrome/browser/ash/scanner/scanner_keyed_service.cc b/chrome/browser/ash/scanner/scanner_keyed_service.cc index a92e0acf..727320c 100644 --- a/chrome/browser/ash/scanner/scanner_keyed_service.cc +++ b/chrome/browser/ash/scanner/scanner_keyed_service.cc
@@ -77,6 +77,11 @@ scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, std::unique_ptr<manta::ScannerProvider> scanner_provider) : identity_manager_(identity_manager), + // TODO: crbug.com/38176766 - Add checks in this config. + access_checker_(specialized_features::FeatureAccessConfig(), + /*prefs=*/nullptr, + /*identity_manager=*/nullptr, + /*variations_service=*/nullptr), scanner_provider_(std::move(scanner_provider)) { if (identity_manager_ != nullptr) { scoped_refptr<base::SequencedTaskRunner> blocking_task_runner = @@ -107,8 +112,9 @@ ScannerKeyedService::~ScannerKeyedService() = default; -ash::ScannerSystemState ScannerKeyedService::GetSystemState() const { - return system_state_provider_.GetSystemState(); +specialized_features::FeatureAccessFailureSet +ScannerKeyedService::CheckFeatureAccess() const { + return access_checker_.Check(); } void ScannerKeyedService::FetchActionsForImage(
diff --git a/chrome/browser/ash/scanner/scanner_keyed_service.h b/chrome/browser/ash/scanner/scanner_keyed_service.h index 06e63c8..a5476e80 100644 --- a/chrome/browser/ash/scanner/scanner_keyed_service.h +++ b/chrome/browser/ash/scanner/scanner_keyed_service.h
@@ -10,8 +10,8 @@ #include "ash/public/cpp/scanner/scanner_profile_scoped_delegate.h" #include "base/functional/callback.h" #include "base/memory/scoped_refptr.h" -#include "chrome/browser/ash/scanner/scanner_system_state_provider.h" #include "chrome/browser/profiles/profile.h" +#include "chromeos/ash/components/specialized_features/feature_access_checker.h" #include "components/keyed_service/core/keyed_service.h" #include "components/manta/proto/scanner.pb.h" #include "components/manta/scanner_provider.h" @@ -21,10 +21,6 @@ class ScannerProvider; } // namespace manta -namespace ash { -struct ScannerSystemState; -} // namespace ash - namespace drive { class DriveAPIService; } @@ -53,7 +49,8 @@ ~ScannerKeyedService() override; // ash::ScannerProfileScopedDelegate: - ash::ScannerSystemState GetSystemState() const override; + specialized_features::FeatureAccessFailureSet CheckFeatureAccess() + const override; void FetchActionsForImage( scoped_refptr<base::RefCountedMemory> jpeg_bytes, manta::ScannerProvider::ScannerProtoResponseCallback callback) override; @@ -69,9 +66,9 @@ private: raw_ptr<signin::IdentityManager> identity_manager_; + specialized_features::FeatureAccessChecker access_checker_; std::unique_ptr<manta::ScannerProvider> scanner_provider_; - ScannerSystemStateProvider system_state_provider_; std::unique_ptr<drive::DriveAPIService> drive_service_; std::unique_ptr<google_apis::RequestSender> request_sender_;
diff --git a/chrome/browser/ash/scanner/scanner_system_state_provider.cc b/chrome/browser/ash/scanner/scanner_system_state_provider.cc deleted file mode 100644 index 125bca7..0000000 --- a/chrome/browser/ash/scanner/scanner_system_state_provider.cc +++ /dev/null
@@ -1,16 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/ash/scanner/scanner_system_state_provider.h" - -#include "ash/public/cpp/scanner/scanner_enums.h" -#include "ash/public/cpp/scanner/scanner_system_state.h" - -ScannerSystemStateProvider::ScannerSystemStateProvider() = default; - -ScannerSystemStateProvider::~ScannerSystemStateProvider() = default; - -ash::ScannerSystemState ScannerSystemStateProvider::GetSystemState() const { - return ash::ScannerSystemState(ash::ScannerStatus::kEnabled, {}); -}
diff --git a/chrome/browser/ash/scanner/scanner_system_state_provider.h b/chrome/browser/ash/scanner/scanner_system_state_provider.h deleted file mode 100644 index 0cf0b37b..0000000 --- a/chrome/browser/ash/scanner/scanner_system_state_provider.h +++ /dev/null
@@ -1,24 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_ASH_SCANNER_SCANNER_SYSTEM_STATE_PROVIDER_H_ -#define CHROME_BROWSER_ASH_SCANNER_SCANNER_SYSTEM_STATE_PROVIDER_H_ - -namespace ash { -struct ScannerSystemState; -} // namespace ash - -// Encapsulates all enable / disable logic required for Scanner. This includes -// a number of different checks that will require access to a valid profile -// instance. This includes the user's current consent status for Scanner, their -// preferences set, among other checks. Please see b/363103871 for more details. -class ScannerSystemStateProvider { - public: - ScannerSystemStateProvider(); - ~ScannerSystemStateProvider(); - - ash::ScannerSystemState GetSystemState() const; -}; - -#endif // CHROME_BROWSER_ASH_SCANNER_SCANNER_SYSTEM_STATE_PROVIDER_H_
diff --git a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_base.cc b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_base.cc index 9dbd882..230a7ee 100644 --- a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_base.cc +++ b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_base.cc
@@ -401,6 +401,27 @@ HandleSeaPenIntroductionDialogClosedInternal(); } +void PersonalizationAppSeaPenProviderBase:: + ShouldShowSeaPenFreeformIntroductionDialog( + ShouldShowSeaPenFreeformIntroductionDialogCallback callback) { + if (!features::IsSeaPenEnabled() && + !features::IsVcBackgroundReplaceEnabled() && + !features::IsSeaPenTextInputEnabled()) { + sea_pen_receiver_.ReportBadMessage( + "Cannot call `ShouldShowSeaPenFreeformIntroductionDialog()` without " + "Sea Pen freeform " + "feature enabled"); + return; + } + + ShouldShowSeaPenFreeformIntroductionDialogInternal(std::move(callback)); +} + +void PersonalizationAppSeaPenProviderBase:: + HandleSeaPenFreeformIntroductionDialogClosed() { + HandleSeaPenFreeformIntroductionDialogClosedInternal(); +} + void PersonalizationAppSeaPenProviderBase::IsInTabletMode( IsInTabletModeCallback callback) { std::move(callback).Run(display::Screen::GetScreen()->InTabletMode());
diff --git a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_base.h b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_base.h index 5e0fc17..c10e7c0 100644 --- a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_base.h +++ b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_base.h
@@ -95,6 +95,11 @@ void HandleSeaPenIntroductionDialogClosed() override; + void ShouldShowSeaPenFreeformIntroductionDialog( + ShouldShowSeaPenIntroductionDialogCallback callback) override; + + void HandleSeaPenFreeformIntroductionDialogClosed() override; + void IsInTabletMode(IsInTabletModeCallback callback) override; void MakeTransparent() override; @@ -125,6 +130,11 @@ virtual void HandleSeaPenIntroductionDialogClosedInternal() = 0; + virtual void ShouldShowSeaPenFreeformIntroductionDialogInternal( + ShouldShowSeaPenFreeformIntroductionDialogCallback callback) = 0; + + virtual void HandleSeaPenFreeformIntroductionDialogClosedInternal() = 0; + virtual void OnFetchWallpaperDoneInternal( const SeaPenImage& sea_pen_image, const mojom::SeaPenQueryPtr& query,
diff --git a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_impl.cc b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_impl.cc index c166f91..b2f8df7 100644 --- a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_impl.cc +++ b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_impl.cc
@@ -200,6 +200,22 @@ contextual_tooltip::TooltipType::kSeaPenWallpaperIntroDialog); } +void PersonalizationAppSeaPenProviderImpl:: + ShouldShowSeaPenFreeformIntroductionDialogInternal( + ShouldShowSeaPenFreeformIntroductionDialogCallback callback) { + std::move(callback).Run(contextual_tooltip::ShouldShowNudge( + profile_->GetPrefs(), + contextual_tooltip::TooltipType::kSeaPenFreeformIntroDialog, + /*recheck_delay=*/nullptr)); +} + +void PersonalizationAppSeaPenProviderImpl:: + HandleSeaPenFreeformIntroductionDialogClosedInternal() { + contextual_tooltip::HandleGesturePerformed( + profile_->GetPrefs(), + contextual_tooltip::TooltipType::kSeaPenFreeformIntroDialog); +} + void PersonalizationAppSeaPenProviderImpl::DeleteRecentSeaPenImage( const uint32_t id, DeleteRecentSeaPenImageCallback callback) {
diff --git a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_impl.h b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_impl.h index de32e62..5b3bbd3 100644 --- a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_impl.h +++ b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_impl.h
@@ -76,6 +76,11 @@ void HandleSeaPenIntroductionDialogClosedInternal() override; + void ShouldShowSeaPenFreeformIntroductionDialogInternal( + ShouldShowSeaPenIntroductionDialogCallback callback) override; + + void HandleSeaPenFreeformIntroductionDialogClosedInternal() override; + void OnFetchWallpaperDoneInternal( const SeaPenImage& sea_pen_image, const mojom::SeaPenQueryPtr& query,
diff --git a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_impl_unittest.cc b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_impl_unittest.cc index 7f95ddf..97eaaf6 100644 --- a/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_impl_unittest.cc +++ b/chrome/browser/ash/system_web_apps/apps/personalization_app/personalization_app_sea_pen_provider_impl_unittest.cc
@@ -935,6 +935,27 @@ EXPECT_FALSE(should_show_dialog_future.Take()); } +TEST_F(PersonalizationAppSeaPenProviderImplTest, + ShouldShowSeaPenFreeformIntroductionDialog) { + SetUpProfileForTesting(kFakeTestEmail, GetTestAccountId()); + test_wallpaper_controller()->ClearCounts(); + base::test::ScopedFeatureList features; + features.InitWithFeatures({features::kSeaPen}, {}); + + base::test::TestFuture<bool> should_show_dialog_future; + sea_pen_provider_remote()->ShouldShowSeaPenFreeformIntroductionDialog( + should_show_dialog_future.GetCallback()); + // Expects to return true before the dialog is closed. + EXPECT_TRUE(should_show_dialog_future.Take()); + + sea_pen_provider_remote()->HandleSeaPenFreeformIntroductionDialogClosed(); + + sea_pen_provider_remote()->ShouldShowSeaPenFreeformIntroductionDialog( + should_show_dialog_future.GetCallback()); + // Expects to return false after the dialog is closed. + EXPECT_FALSE(should_show_dialog_future.Take()); +} + TEST_F(PersonalizationAppSeaPenProviderImplTest, IsEligibleForSeaPen_Guest) { SetUpProfileForTesting("guest", user_manager::GuestAccountId(), user_manager::UserType::kGuest);
diff --git a/chrome/browser/ash/system_web_apps/apps/vc_background_ui/vc_background_ui_sea_pen_provider_impl.cc b/chrome/browser/ash/system_web_apps/apps/vc_background_ui/vc_background_ui_sea_pen_provider_impl.cc index ec9e359..a887abab 100644 --- a/chrome/browser/ash/system_web_apps/apps/vc_background_ui/vc_background_ui_sea_pen_provider_impl.cc +++ b/chrome/browser/ash/system_web_apps/apps/vc_background_ui/vc_background_ui_sea_pen_provider_impl.cc
@@ -147,6 +147,22 @@ contextual_tooltip::TooltipType::kSeaPenVcBackgroundIntroDialog); } +void VcBackgroundUISeaPenProviderImpl:: + ShouldShowSeaPenFreeformIntroductionDialogInternal( + ShouldShowSeaPenIntroductionDialogCallback callback) { + std::move(callback).Run(contextual_tooltip::ShouldShowNudge( + profile_->GetPrefs(), + contextual_tooltip::TooltipType::kSeaPenVcBackgroundIntroDialog, + /*recheck_delay=*/nullptr)); +} + +void VcBackgroundUISeaPenProviderImpl:: + HandleSeaPenFreeformIntroductionDialogClosedInternal() { + contextual_tooltip::HandleGesturePerformed( + profile_->GetPrefs(), + contextual_tooltip::TooltipType::kSeaPenVcBackgroundIntroDialog); +} + void VcBackgroundUISeaPenProviderImpl::DeleteRecentSeaPenImage( const uint32_t id, DeleteRecentSeaPenImageCallback callback) {
diff --git a/chrome/browser/ash/system_web_apps/apps/vc_background_ui/vc_background_ui_sea_pen_provider_impl.h b/chrome/browser/ash/system_web_apps/apps/vc_background_ui/vc_background_ui_sea_pen_provider_impl.h index 689a7c0..cdbaed2 100644 --- a/chrome/browser/ash/system_web_apps/apps/vc_background_ui/vc_background_ui_sea_pen_provider_impl.h +++ b/chrome/browser/ash/system_web_apps/apps/vc_background_ui/vc_background_ui_sea_pen_provider_impl.h
@@ -74,6 +74,11 @@ void HandleSeaPenIntroductionDialogClosedInternal() override; + void ShouldShowSeaPenFreeformIntroductionDialogInternal( + ShouldShowSeaPenIntroductionDialogCallback callback) override; + + void HandleSeaPenFreeformIntroductionDialogClosedInternal() override; + void OnFetchWallpaperDoneInternal( const SeaPenImage& sea_pen_image, const ash::personalization_app::mojom::SeaPenQueryPtr& query,
diff --git a/chrome/browser/ash/tpm/tpm_firmware_update_notification.cc b/chrome/browser/ash/tpm/tpm_firmware_update_notification.cc index 0f702a9..0e2574213 100644 --- a/chrome/browser/ash/tpm/tpm_firmware_update_notification.cc +++ b/chrome/browser/ash/tpm/tpm_firmware_update_notification.cc
@@ -23,7 +23,6 @@ #include "components/prefs/pref_service.h" #include "ui/base/l10n/l10n_util.h" #include "ui/chromeos/devicetype_utils.h" -#include "ui/gfx/vector_icon_types.h" #include "ui/message_center/public/cpp/notification.h" namespace ash { @@ -88,8 +87,7 @@ NotificationCatalogName::kTPMFirmwareUpdate), message_center::RichNotificationData(), base::MakeRefCounted<TPMFirmwareUpdateNotificationDelegate>(profile), - gfx::VectorIcon::EmptyIcon(), - message_center::SystemNotificationWarningLevel::WARNING); + gfx::kNoneIcon, message_center::SystemNotificationWarningLevel::WARNING); NotificationDisplayServiceFactory::GetForProfile(profile)->Display( NotificationHandler::Type::TRANSIENT, notification,
diff --git a/chrome/browser/ash/u2f/u2f_notification.cc b/chrome/browser/ash/u2f/u2f_notification.cc index ef7d3c5..76bb0de 100644 --- a/chrome/browser/ash/u2f/u2f_notification.cc +++ b/chrome/browser/ash/u2f/u2f_notification.cc
@@ -26,7 +26,6 @@ #include "components/strings/grit/components_strings.h" #include "third_party/cros_system_api/dbus/debugd/dbus-constants.h" #include "ui/base/l10n/l10n_util.h" -#include "ui/gfx/vector_icon_types.h" #include "ui/message_center/public/cpp/notification.h" namespace ash { @@ -115,8 +114,7 @@ base::MakeRefCounted<message_center::HandleNotificationClickDelegate>( base::BindRepeating(&U2FNotification::OnNotificationClick, weak_factory_.GetWeakPtr())), - gfx::VectorIcon::EmptyIcon(), - message_center::SystemNotificationWarningLevel::WARNING); + gfx::kNoneIcon, message_center::SystemNotificationWarningLevel::WARNING); notification.SetSystemPriority(); notification.set_pinned(false);
diff --git a/chrome/browser/ash/usb/cros_usb_detector.cc b/chrome/browser/ash/usb/cros_usb_detector.cc index 8e768bf8..1f15143 100644 --- a/chrome/browser/ash/usb/cros_usb_detector.cc +++ b/chrome/browser/ash/usb/cros_usb_detector.cc
@@ -50,7 +50,6 @@ #include "services/device/public/mojom/usb_enumeration_options.mojom.h" #include "ui/base/l10n/l10n_util.h" #include "ui/chromeos/styles/cros_tokens_color_mappings.h" -#include "ui/gfx/paint_vector_icon.h" namespace ash {
diff --git a/chrome/browser/browsing_topics/browsing_topics_service_browsertest.cc b/chrome/browser/browsing_topics/browsing_topics_service_browsertest.cc index 8bf2116..675adb3 100644 --- a/chrome/browser/browsing_topics/browsing_topics_service_browsertest.cc +++ b/chrome/browser/browsing_topics/browsing_topics_service_browsertest.cc
@@ -21,6 +21,7 @@ #include "chrome/browser/ui/browser.h" #include "chrome/test/base/mixin_based_in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" +#include "components/browsing_topics/browsing_topics_service.h" #include "components/browsing_topics/browsing_topics_service_impl.h" #include "components/browsing_topics/epoch_topics.h" #include "components/browsing_topics/test_util.h" @@ -622,105 +623,6 @@ base::CallbackListSubscription subscription_; }; -class BrowsingTopicsSubresourceRequestTest - : public BrowsingTopicsBrowserTest, - public ::testing::WithParamInterface<bool> { - public: - // If true, test the fetch option. If false, test the img attribute. - bool TestFetch() { return GetParam(); } - - std::string GetRelativePath() { - if (TestFetch()) { - return "/browsing_topics/page_with_custom_topics_header.html"; - } - - return "/browsing_topics/topics-writable-pixel.png"; - } - - std::string GetRedirectRelativePath() { - if (TestFetch()) { - return "/browsing_topics/page_with_custom_topics_header2.html"; - } - - return "/browsing_topics/topics-writable-pixel2.png"; - } - - bool ExecJsWithBrowsingTopicsTrue(GURL url) { - if (TestFetch()) { - return ExecJs( - web_contents()->GetPrimaryMainFrame(), - content::JsReplace("fetch($1, {browsingTopics: true})", url)); - } - - return ExecJs(web_contents()->GetPrimaryMainFrame(), - content::JsReplace(R"( - let img = document.createElement('img'); - img.src = $1; - img.browsingTopics = true; - img.decode() - .then(() => { - document.body.appendChild(img); - }) - )", - url.spec())); - } - - bool ExecJSWithBrowsingTopicsFalse(GURL url) { - if (TestFetch()) { - return ExecJs( - web_contents()->GetPrimaryMainFrame(), - content::JsReplace("fetch($1, {browsingTopics: false})", url)); - } - - return ExecJs(web_contents()->GetPrimaryMainFrame(), - content::JsReplace(R"( - let img = document.createElement('img'); - img.src = $1; - img.browsingTopics = false; - img.decode() - .then(() => { - document.body.appendChild(img); - }) - )", - url.spec())); - } - - bool ExecJsWithMissingBrowsingTopicsAttribute(GURL url) { - if (TestFetch()) { - return ExecJs(web_contents()->GetPrimaryMainFrame(), - content::JsReplace("fetch($1)", url)); - } - - return ExecJs(web_contents()->GetPrimaryMainFrame(), - content::JsReplace(R"( - let img = document.createElement('img'); - img.src = $1; - img.decode() - .then(() => { - document.body.appendChild(img); - }) - )", - url.spec())); - } - - int GetBrowsingTopicsApiActionType(bool observe) { - if (TestFetch()) { - if (observe) { - return 3; // kObserveViaFetchLikeApi - } - return 2; // kGetViaFetchLikeApi; - } - if (observe) { - return 7; // kObserveViaImgAttributeApi - } - return 6; // kGetViaImgAttributeApi - } -}; - -INSTANTIATE_TEST_SUITE_P(All, - BrowsingTopicsSubresourceRequestTest, - ::testing::Bool()); - IN_PROC_BROWSER_TEST_F(BrowsingTopicsBrowserTest, HasBrowsingTopicsService) { EXPECT_TRUE(browsing_topics_service()); } @@ -1261,19 +1163,24 @@ ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), new_url)); } -IN_PROC_BROWSER_TEST_P( - BrowsingTopicsSubresourceRequestTest, - SameOrigin_TopicsEligible_SendTopics_HasNoObserveResponse) { +IN_PROC_BROWSER_TEST_F( + BrowsingTopicsBrowserTest, + FetchSameOrigin_TopicsEligible_SendTopics_HasNoObserveResponse) { GURL main_frame_url = https_server_.GetURL("a.test", "/browsing_topics/empty_page.html"); ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), main_frame_url)); - GURL resource_url = https_server_.GetURL("a.test", GetRelativePath()); + GURL fetch_url = https_server_.GetURL( + "a.test", "/browsing_topics/page_with_custom_topics_header.html"); - EXPECT_TRUE(ExecJsWithBrowsingTopicsTrue(resource_url)); + EXPECT_TRUE(ExecJs( + web_contents()->GetPrimaryMainFrame(), + content::JsReplace("fetch($1, {browsingTopics: true})", fetch_url))); std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRelativePath()); + GetTopicsHeaderForRequestPath( + "/browsing_topics/page_with_custom_topics_header.html"); + EXPECT_TRUE(topics_header_value); EXPECT_EQ(*topics_header_value, kExpectedHeaderValueForSiteA); @@ -1284,22 +1191,23 @@ EXPECT_EQ(api_usage_contexts.size(), 1u); } -IN_PROC_BROWSER_TEST_P(BrowsingTopicsSubresourceRequestTest, - WithoutTopicsFlagSet) { +IN_PROC_BROWSER_TEST_F(BrowsingTopicsBrowserTest, FetchWithoutTopicsFlagSet) { GURL main_frame_url = https_server_.GetURL("b.test", "/browsing_topics/empty_page.html"); ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), main_frame_url)); - GURL resource_url = https_server_.GetURL("b.test", GetRelativePath()); + GURL fetch_url = https_server_.GetURL( + "b.test", "/browsing_topics/page_with_custom_topics_header.html"); { - // Invoke fetch() or img without the `browsingTopics` flag. This request - // isn't eligible for topics. - - EXPECT_TRUE(ExecJsWithMissingBrowsingTopicsAttribute(resource_url)); + // Invoke fetch() without the `browsingTopics` flag. This request isn't + // eligible for topics. + EXPECT_TRUE(ExecJs(web_contents()->GetPrimaryMainFrame(), + content::JsReplace("fetch($1)", fetch_url))); std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRelativePath()); + GetTopicsHeaderForRequestPath( + "/browsing_topics/page_with_custom_topics_header.html"); // Expect no topics header as the request did not specify // {browsingTopics: true}. @@ -1307,12 +1215,15 @@ } { - // Invoke fetch() or img with the `browsingTopics` flag set to false. This - // request isn't eligible for topics. - EXPECT_TRUE(ExecJSWithBrowsingTopicsFalse(resource_url)); + // Invoke fetch() with the `browsingTopics` flag set to false. This request + // isn't eligible for topics. + EXPECT_TRUE(ExecJs( + web_contents()->GetPrimaryMainFrame(), + content::JsReplace("fetch($1, {browsingTopics: false})", fetch_url))); std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRelativePath()); + GetTopicsHeaderForRequestPath( + "/browsing_topics/page_with_custom_topics_header.html"); // Expect no topics header as the request did not specify // {browsingTopics: true}. @@ -1320,21 +1231,25 @@ } } -IN_PROC_BROWSER_TEST_P( - BrowsingTopicsSubresourceRequestTest, - SameOrigin_TopicsEligible_SendNoTopic_HasNoObserveResponse) { +IN_PROC_BROWSER_TEST_F( + BrowsingTopicsBrowserTest, + FetchSameOrigin_TopicsEligible_SendNoTopic_HasNoObserveResponse) { base::HistogramTester histogram_tester; GURL main_frame_url = https_server_.GetURL("b.test", "/browsing_topics/empty_page.html"); ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), main_frame_url)); - GURL resource_url = https_server_.GetURL("b.test", GetRelativePath()); + GURL fetch_url = https_server_.GetURL( + "b.test", "/browsing_topics/page_with_custom_topics_header.html"); - EXPECT_TRUE(ExecJsWithBrowsingTopicsTrue(resource_url)); + EXPECT_TRUE(ExecJs( + web_contents()->GetPrimaryMainFrame(), + content::JsReplace("fetch($1, {browsingTopics: true})", fetch_url))); std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRelativePath()); + GetTopicsHeaderForRequestPath( + "/browsing_topics/page_with_custom_topics_header.html"); // Expect an empty header value as "b.test" did not observe the candidate // topics. @@ -1347,15 +1262,14 @@ content::GetBrowsingTopicsApiUsage(browsing_topics_site_data_manager()); EXPECT_EQ(api_usage_contexts.size(), 1u); - histogram_tester.ExpectUniqueSample( - kBrowsingTopicsApiActionTypeHistogramId, - GetBrowsingTopicsApiActionType(/*observe=*/false), - /*expected_bucket_count=*/1); + histogram_tester.ExpectUniqueSample(kBrowsingTopicsApiActionTypeHistogramId, + 2 /*kGetViaFetchLikeApi*/, + /*expected_bucket_count=*/1); } -IN_PROC_BROWSER_TEST_P( - BrowsingTopicsSubresourceRequestTest, - SameOrigin_TopicsEligible_SendNoTopic_HasObserveResponse) { +IN_PROC_BROWSER_TEST_F( + BrowsingTopicsBrowserTest, + FetchSameOrigin_TopicsEligible_SendNoTopic_HasObserveResponse) { base::HistogramTester histogram_tester; GURL main_frame_url = @@ -1368,11 +1282,15 @@ "Observe-Browsing-Topics: ?1")); replacement.emplace_back(std::make_pair("{{REDIRECT_HEADER}}", "")); - GURL resource_url = https_server_.GetURL( - "b.test", net::test_server::GetFilePathWithReplacements(GetRelativePath(), - replacement)); + GURL fetch_url = https_server_.GetURL( + "b.test", net::test_server::GetFilePathWithReplacements( + "/browsing_topics/" + "page_with_custom_topics_header.html", + replacement)); - EXPECT_TRUE(ExecJsWithBrowsingTopicsTrue(resource_url)); + EXPECT_TRUE(ExecJs( + web_contents()->GetPrimaryMainFrame(), + content::JsReplace("fetch($1, {browsingTopics: true})", fetch_url))); // A new observation should have been recorded in addition to the pre-existing // one, as the response had the `Observe-Browsing-Topics: ?1` header and the @@ -1392,19 +1310,17 @@ // Expect a "get" event and an "observe" event respectively. histogram_tester.ExpectTotalCount(kBrowsingTopicsApiActionTypeHistogramId, /*expected_count=*/2); - histogram_tester.ExpectBucketCount( - kBrowsingTopicsApiActionTypeHistogramId, - GetBrowsingTopicsApiActionType(/*observe=*/false), - /*expected_count=*/1); - histogram_tester.ExpectBucketCount( - kBrowsingTopicsApiActionTypeHistogramId, - GetBrowsingTopicsApiActionType(/*observe=*/true), - /*expected_count=*/1); + histogram_tester.ExpectBucketCount(kBrowsingTopicsApiActionTypeHistogramId, + 2 /*kGetViaFetchLikeApi*/, + /*expected_count=*/1); + histogram_tester.ExpectBucketCount(kBrowsingTopicsApiActionTypeHistogramId, + 3 /*kObserveViaFetchLikeApi*/, + /*expected_count=*/1); } -IN_PROC_BROWSER_TEST_P( - BrowsingTopicsSubresourceRequestTest, - SameOrigin_TopicsNotEligibleDueToUserSettings_HasObserveResponse) { +IN_PROC_BROWSER_TEST_F( + BrowsingTopicsBrowserTest, + FetchSameOrigin_TopicsNotEligibleDueToUserSettings_HasObserveResponse) { GURL main_frame_url = https_server_.GetURL("a.test", "/browsing_topics/empty_page.html"); ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), main_frame_url)); @@ -1415,17 +1331,22 @@ "Observe-Browsing-Topics: ?1")); replacement.emplace_back(std::make_pair("{{REDIRECT_HEADER}}", "")); - GURL resource_url = https_server_.GetURL( - "a.test", net::test_server::GetFilePathWithReplacements(GetRelativePath(), - replacement)); + GURL fetch_url = https_server_.GetURL( + "a.test", net::test_server::GetFilePathWithReplacements( + "/browsing_topics/" + "page_with_custom_topics_header.html", + replacement)); CookieSettingsFactory::GetForProfile(browser()->profile()) - ->SetCookieSetting(resource_url, CONTENT_SETTING_BLOCK); + ->SetCookieSetting(fetch_url, CONTENT_SETTING_BLOCK); - EXPECT_TRUE(ExecJsWithBrowsingTopicsTrue(resource_url)); + EXPECT_TRUE(ExecJs( + web_contents()->GetPrimaryMainFrame(), + content::JsReplace("fetch($1, {browsingTopics: true})", fetch_url))); std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRelativePath()); + GetTopicsHeaderForRequestPath( + "/browsing_topics/page_with_custom_topics_header.html"); // When the request is ineligible for topics due to user settings, an empty // list of topics will be sent in the header. @@ -1439,9 +1360,9 @@ EXPECT_EQ(api_usage_contexts.size(), 1u); } -IN_PROC_BROWSER_TEST_P( - BrowsingTopicsSubresourceRequestTest, - CrossOrigin_TopicsEligible_SendTopics_HasObserveResponse) { +IN_PROC_BROWSER_TEST_F( + BrowsingTopicsBrowserTest, + FetchCrossOrigin_TopicsEligible_SendTopics_HasObserveResponse) { GURL main_frame_url = https_server_.GetURL("b.test", "/browsing_topics/empty_page.html"); ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), main_frame_url)); @@ -1452,14 +1373,19 @@ "Observe-Browsing-Topics: ?1")); replacement.emplace_back(std::make_pair("{{REDIRECT_HEADER}}", "")); - GURL resource_url = https_server_.GetURL( - "a.test", net::test_server::GetFilePathWithReplacements(GetRelativePath(), - replacement)); + GURL fetch_url = https_server_.GetURL( + "a.test", net::test_server::GetFilePathWithReplacements( + "/browsing_topics/" + "page_with_custom_topics_header.html", + replacement)); - EXPECT_TRUE(ExecJsWithBrowsingTopicsTrue(resource_url)); + EXPECT_TRUE(ExecJs( + web_contents()->GetPrimaryMainFrame(), + content::JsReplace("fetch($1, {browsingTopics: true})", fetch_url))); std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRelativePath()); + GetTopicsHeaderForRequestPath( + "/browsing_topics/page_with_custom_topics_header.html"); EXPECT_TRUE(topics_header_value); EXPECT_EQ(*topics_header_value, kExpectedHeaderValueForSiteB); @@ -1480,31 +1406,28 @@ EXPECT_EQ(api_usage_contexts[1].hashed_context_domain, HashedDomain(1)); } -// On an insecure site (i.e. URL with http scheme), test a fetch or image -// request with the `browsingTopics` set to true. Expect it to throw an -// exception. -IN_PROC_BROWSER_TEST_P( - BrowsingTopicsSubresourceRequestTest, - CrossOrigin_TopicsNotEligibleDueToInsecureInitiatorContext) { +// On an insecure site (i.e. URL with http scheme), test fetch request with +// the `browsingTopics` set to true. Expect it to throw an exception. +IN_PROC_BROWSER_TEST_F( + BrowsingTopicsBrowserTest, + FetchCrossOrigin_TopicsNotEligibleDueToInsecureInitiatorContext) { GURL main_frame_url = embedded_test_server()->GetURL( "b.test", "/browsing_topics/empty_page.html"); ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), main_frame_url)); - GURL resource_url = https_server_.GetURL("a.test", GetRelativePath()); + GURL fetch_url = + https_server_.GetURL("a.test", "/browsing_topics/empty_page.html"); - if (TestFetch()) { - content::EvalJsResult result = EvalJs( - web_contents()->GetPrimaryMainFrame(), - content::JsReplace("fetch($1, {browsingTopics: true})", resource_url)); - EXPECT_THAT(result.error, - testing::HasSubstr("browsingTopics: Topics operations are only " - "available in secure contexts.")); - } else { - EXPECT_TRUE(ExecJsWithBrowsingTopicsTrue(resource_url)); - } + content::EvalJsResult result = EvalJs( + web_contents()->GetPrimaryMainFrame(), + content::JsReplace("fetch($1, {browsingTopics: true})", fetch_url)); + + EXPECT_THAT(result.error, + testing::HasSubstr("browsingTopics: Topics operations are only " + "available in secure contexts.")); std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRelativePath()); + GetTopicsHeaderForRequestPath("/browsing_topics/empty_page.html"); // Expect no topics header as the request was not eligible for topics due to // insecure initiator context. @@ -1513,9 +1436,9 @@ // Only allow topics from origin c.test, and test fetch requests to b.test and // c.test to verify that only c.test gets them. -IN_PROC_BROWSER_TEST_P( - BrowsingTopicsSubresourceRequestTest, - CrossOrigin_TopicsNotEligibleDueToPermissionsPolicyAgainstRequestOrigin) { +IN_PROC_BROWSER_TEST_F( + BrowsingTopicsBrowserTest, + FetchCrossOrigin_TopicsNotEligibleDueToPermissionsPolicyAgainstRequestOrigin) { base::StringPairs allowed_origin_replacement; allowed_origin_replacement.emplace_back( "{{ALLOWED_ORIGIN}}", https_server_.GetOrigin("c.test").Serialize()); @@ -1531,12 +1454,15 @@ { base::HistogramTester histogram_tester; - GURL resource_url = https_server_.GetURL("a.test", GetRelativePath()); + GURL fetch_url = + https_server_.GetURL("a.test", "/browsing_topics/empty_page.html"); - EXPECT_TRUE(ExecJsWithBrowsingTopicsTrue(resource_url)); + EXPECT_TRUE(ExecJs( + web_contents()->GetPrimaryMainFrame(), + content::JsReplace("fetch($1, {browsingTopics: true})", fetch_url))); std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRelativePath()); + GetTopicsHeaderForRequestPath("/browsing_topics/empty_page.html"); // No topics header was sent, as the permissions policy denied it. EXPECT_FALSE(topics_header_value); @@ -1551,29 +1477,31 @@ { base::HistogramTester histogram_tester; - GURL resource_url = https_server_.GetURL("c.test", GetRelativePath()); + GURL fetch_url = + https_server_.GetURL("c.test", "/browsing_topics/empty_page.html"); - EXPECT_TRUE(ExecJsWithBrowsingTopicsTrue(resource_url)); + EXPECT_TRUE(ExecJs( + web_contents()->GetPrimaryMainFrame(), + content::JsReplace("fetch($1, {browsingTopics: true})", fetch_url))); std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRelativePath()); + GetTopicsHeaderForRequestPath("/browsing_topics/empty_page.html"); EXPECT_TRUE(topics_header_value); - histogram_tester.ExpectUniqueSample( - kBrowsingTopicsApiActionTypeHistogramId, - GetBrowsingTopicsApiActionType(/*observe=*/false), - /*expected_bucket_count=*/1); + histogram_tester.ExpectUniqueSample(kBrowsingTopicsApiActionTypeHistogramId, + 2 /*kGetViaFetchLikeApi*/, + /*expected_bucket_count=*/1); } } -// On site b.test, test a fetch or image request to a.test that gets redirected -// to c.test. The topics header should be calculated for them individually (i.e. -// given that only a.test has observed the candidate topics for site b.test, the -// request to a.test should have a non-empty topics header, while the redirected -// request to c.test should have an empty topics header.) -IN_PROC_BROWSER_TEST_P(BrowsingTopicsSubresourceRequestTest, - CrossOriginWithRedirect) { +// On site b.test, test fetch request to a.test that gets redirected to c.test. +// The topics header should be calculated for them individually (i.e. given that +// only a.test has observed the candidate topics for site b.test, the request to +// a.test should have a non-empty topics header, while the redirected request to +// c.test should have an empty topics header.) +IN_PROC_BROWSER_TEST_F(BrowsingTopicsBrowserTest, + FetchCrossOriginWithRedirect) { base::HistogramTester histogram_tester; GURL main_frame_url = @@ -1589,7 +1517,9 @@ GURL redirect_url = https_server_.GetURL( "c.test", net::test_server::GetFilePathWithReplacements( - GetRedirectRelativePath(), redirect_replacement)); + "/browsing_topics/" + "page_with_custom_topics_header2.html", + redirect_replacement)); base::StringPairs replacement; replacement.emplace_back( @@ -1599,21 +1529,27 @@ replacement.emplace_back(std::make_pair("{{REDIRECT_HEADER}}", "Location: " + redirect_url.spec())); - GURL resource_url = https_server_.GetURL( - "a.test", net::test_server::GetFilePathWithReplacements(GetRelativePath(), - replacement)); + GURL fetch_url = https_server_.GetURL( + "a.test", net::test_server::GetFilePathWithReplacements( + "/browsing_topics/" + "page_with_custom_topics_header.html", + replacement)); - EXPECT_TRUE(ExecJsWithBrowsingTopicsTrue(resource_url)); + EXPECT_TRUE(ExecJs( + web_contents()->GetPrimaryMainFrame(), + content::JsReplace("fetch($1, {browsingTopics: true})", fetch_url))); { std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRelativePath()); + GetTopicsHeaderForRequestPath( + "/browsing_topics/page_with_custom_topics_header.html"); EXPECT_TRUE(topics_header_value); EXPECT_EQ(*topics_header_value, kExpectedHeaderValueForSiteB); } { std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRedirectRelativePath()); + GetTopicsHeaderForRequestPath( + "/browsing_topics/page_with_custom_topics_header2.html"); EXPECT_TRUE(topics_header_value); // An empty topics header value was sent, because "c.test" did not observe @@ -1644,24 +1580,22 @@ // and the redirect respectively. histogram_tester.ExpectTotalCount(kBrowsingTopicsApiActionTypeHistogramId, /*expected_count=*/4); - histogram_tester.ExpectBucketCount( - kBrowsingTopicsApiActionTypeHistogramId, - GetBrowsingTopicsApiActionType(/*observe=*/false), - /*expected_count=*/2); - histogram_tester.ExpectBucketCount( - kBrowsingTopicsApiActionTypeHistogramId, - GetBrowsingTopicsApiActionType(/*observe=*/true), - /*expected_count=*/2); + histogram_tester.ExpectBucketCount(kBrowsingTopicsApiActionTypeHistogramId, + 2 /*kGetViaFetchLikeApi*/, + /*expected_count=*/2); + histogram_tester.ExpectBucketCount(kBrowsingTopicsApiActionTypeHistogramId, + 3 /*kObserveViaFetchLikeApi*/, + /*expected_count=*/2); } -// On site b.test, test a fetch or image request to a.test that gets redirected -// to c.test. The topics header eligibility should be checked for them -// individually (i.e. given that the declared policy on the page only allows -// origin c.test, the request to a.test should not have the topics header, while -// the redirected request to c.test should have the topics header.) -IN_PROC_BROWSER_TEST_P( - BrowsingTopicsSubresourceRequestTest, - CrossOriginWithRedirect_InitialRequestTopicsNotEligibleDueToPermissionsPolicy) { +// On site b.test, test fetch request to a.test that gets redirected to c.test. +// The topics header eligibility should be checked for them individually (i.e. +// given that the declared policy on the page only allows origin c.test, the +// request to a.test should not have the topics header, while the redirected +// request to c.test should have the topics header.) +IN_PROC_BROWSER_TEST_F( + BrowsingTopicsBrowserTest, + FetchCrossOriginWithRedirect_InitialRequestTopicsNotEligibleDueToPermissionsPolicy) { base::StringPairs allowed_origin_replacement; allowed_origin_replacement.emplace_back( "{{ALLOWED_ORIGIN}}", https_server_.GetOrigin("c.test").Serialize()); @@ -1682,7 +1616,9 @@ GURL redirect_url = https_server_.GetURL( "c.test", net::test_server::GetFilePathWithReplacements( - GetRedirectRelativePath(), redirect_replacement)); + "/browsing_topics/" + "page_with_custom_topics_header2.html", + redirect_replacement)); base::StringPairs replacement; replacement.emplace_back( @@ -1692,22 +1628,28 @@ replacement.emplace_back(std::make_pair("{{REDIRECT_HEADER}}", "Location: " + redirect_url.spec())); - GURL resource_url = https_server_.GetURL( - "a.test", net::test_server::GetFilePathWithReplacements(GetRelativePath(), - replacement)); + GURL fetch_url = https_server_.GetURL( + "a.test", net::test_server::GetFilePathWithReplacements( + "/browsing_topics/" + "page_with_custom_topics_header.html", + replacement)); - EXPECT_TRUE(ExecJsWithBrowsingTopicsTrue(resource_url)); + EXPECT_TRUE(ExecJs( + web_contents()->GetPrimaryMainFrame(), + content::JsReplace("fetch($1, {browsingTopics: true})", fetch_url))); { std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRelativePath()); + GetTopicsHeaderForRequestPath( + "/browsing_topics/page_with_custom_topics_header.html"); // No topics header was sent, as the permissions policy denied it. EXPECT_FALSE(topics_header_value); } { std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRedirectRelativePath()); + GetTopicsHeaderForRequestPath( + "/browsing_topics/page_with_custom_topics_header2.html"); EXPECT_TRUE(topics_header_value); // An empty topics header value was sent, as "c.test" did not observe the @@ -1797,71 +1739,6 @@ } } -IN_PROC_BROWSER_TEST_F(BrowsingTopicsBrowserTest, UseCounter_Img) { - base::HistogramTester histogram_tester; - - GURL main_frame_url = - https_server_.GetURL("a.test", "/browsing_topics/empty_page.html"); - - GURL img_url = https_server_.GetURL( - "a.test", "/browsing_topics/topics-writable-pixel.png"); - - { - ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), main_frame_url)); - - // Request an image with `browsingTopics` set to false. Expect no - // `kTopicsAPIImg` use counter. - EXPECT_TRUE(ExecJs(web_contents()->GetPrimaryMainFrame(), - content::JsReplace(R"( - let img = document.createElement('img'); - img.src = $1; - img.browsingTopics = false; - img.decode() - .then(() => { - document.body.appendChild(img); - }) - )", - img_url.spec()))); - - // Navigate away to flush use counters. - ASSERT_TRUE( - ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL))); - - histogram_tester.ExpectBucketCount("Blink.UseCounter.Features", - blink::mojom::WebFeature::kTopicsAPIImg, - 0); - } - - { - ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), main_frame_url)); - - // Request an img with `browsingTopics` set to true. Expect one - // `kTopicsAPIImg` use counter. - EXPECT_TRUE(ExecJs(web_contents()->GetPrimaryMainFrame(), - content::JsReplace(R"( - let img = document.createElement('img'); - img.src = $1; - img.browsingTopics = true; - img.decode() - .then(() => { - document.body.appendChild(img); - }) - )", - img_url.spec()))); - - // Navigate away to flush use counters. - ASSERT_TRUE( - ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL))); - - histogram_tester.ExpectBucketCount("Blink.UseCounter.Features", - blink::mojom::WebFeature::kTopicsAPIImg, - 1); - histogram_tester.ExpectBucketCount("Blink.UseCounter.Features", - blink::mojom::WebFeature::kTopicsAPIAll, - 1); - } -} - // For a page that contains a static <iframe> with a "browsingtopics" // attribute, the iframe navigation request should be eligible for topics. IN_PROC_BROWSER_TEST_F(BrowsingTopicsBrowserTest, @@ -2586,24 +2463,6 @@ ~AttestationBrowsingTopicsBrowserTest() override = default; }; -class AttestationSubresourceRequestTest - : public BrowsingTopicsSubresourceRequestTest { - public: - void SetUpOnMainThread() override { - // This test suite tests Privacy Sandbox Attestations related behaviors, - // turn off the setting that makes all APIs considered attested. - BrowsingTopicsBrowserTest::SetUpOnMainThread(); - privacy_sandbox::PrivacySandboxAttestations::GetInstance() - ->SetAllPrivacySandboxAttestedForTesting(false); - } - - ~AttestationSubresourceRequestTest() override = default; -}; - -INSTANTIATE_TEST_SUITE_P(All, - AttestationSubresourceRequestTest, - ::testing::Bool()); - // Site a.test is attested for Topics, so it should receive a valid response. IN_PROC_BROWSER_TEST_F(AttestationBrowsingTopicsBrowserTest, AttestedSiteCanGetBrowsingTopicsViaDocumentAPI) { @@ -2683,8 +2542,8 @@ EXPECT_FALSE(console_observer.messages().empty()); } -IN_PROC_BROWSER_TEST_P(AttestationSubresourceRequestTest, - SameOrigin_TopicsEligible_SendTopics_SiteAttested) { +IN_PROC_BROWSER_TEST_F(AttestationBrowsingTopicsBrowserTest, + FetchSameOrigin_TopicsEligible_SendTopics_SiteAttested) { privacy_sandbox::PrivacySandboxAttestationsMap map; map.insert_or_assign( net::SchemefulSite(GURL("https://a.test")), @@ -2700,12 +2559,16 @@ https_server_.GetURL("a.test", "/browsing_topics/empty_page.html"); ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), main_frame_url)); - GURL resource_url = https_server_.GetURL("a.test", GetRelativePath()); + GURL fetch_url = https_server_.GetURL( + "a.test", "/browsing_topics/page_with_custom_topics_header.html"); - EXPECT_TRUE(ExecJsWithBrowsingTopicsTrue(resource_url)); + EXPECT_TRUE(ExecJs( + web_contents()->GetPrimaryMainFrame(), + content::JsReplace("fetch($1, {browsingTopics: true})", fetch_url))); std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRelativePath()); + GetTopicsHeaderForRequestPath( + "/browsing_topics/page_with_custom_topics_header.html"); EXPECT_TRUE(topics_header_value); EXPECT_EQ(*topics_header_value, kExpectedHeaderValueForSiteA); @@ -2713,8 +2576,8 @@ EXPECT_TRUE(console_observer.messages().empty()); } -IN_PROC_BROWSER_TEST_P(AttestationSubresourceRequestTest, - SameOrigin_TopicsEligible_SiteNotAttested) { +IN_PROC_BROWSER_TEST_F(AttestationBrowsingTopicsBrowserTest, + FetchSameOrigin_TopicsEligible_SiteNotAttested) { privacy_sandbox::PrivacySandboxAttestationsMap map; map.insert_or_assign( net::SchemefulSite(GURL("https://b.test")), @@ -2730,12 +2593,16 @@ https_server_.GetURL("a.test", "/browsing_topics/empty_page.html"); ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), main_frame_url)); - GURL resource_url = https_server_.GetURL("a.test", GetRelativePath()); + GURL fetch_url = https_server_.GetURL( + "a.test", "/browsing_topics/page_with_custom_topics_header.html"); - EXPECT_TRUE(ExecJsWithBrowsingTopicsTrue(resource_url)); + EXPECT_TRUE(ExecJs( + web_contents()->GetPrimaryMainFrame(), + content::JsReplace("fetch($1, {browsingTopics: true})", fetch_url))); std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRelativePath()); + GetTopicsHeaderForRequestPath( + "/browsing_topics/page_with_custom_topics_header.html"); EXPECT_EQ(topics_header_value, kExpectedHeaderValueForEmptyTopics); @@ -2743,8 +2610,9 @@ EXPECT_FALSE(console_observer.messages().empty()); } -IN_PROC_BROWSER_TEST_P(AttestationSubresourceRequestTest, - SameOrigin_TopicsEligible_SiteAttested_MismatchedMap) { +IN_PROC_BROWSER_TEST_F( + AttestationBrowsingTopicsBrowserTest, + FetchSameOrigin_TopicsEligible_SiteAttested_MismatchedMap) { privacy_sandbox::PrivacySandboxAttestationsMap map; map.insert_or_assign(net::SchemefulSite(GURL("https://a.test")), privacy_sandbox::PrivacySandboxAttestationsGatedAPISet{ @@ -2760,12 +2628,16 @@ https_server_.GetURL("a.test", "/browsing_topics/empty_page.html"); ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), main_frame_url)); - GURL resource_url = https_server_.GetURL("a.test", GetRelativePath()); + GURL fetch_url = https_server_.GetURL( + "a.test", "/browsing_topics/page_with_custom_topics_header.html"); - EXPECT_TRUE(ExecJsWithBrowsingTopicsTrue(resource_url)); + EXPECT_TRUE(ExecJs( + web_contents()->GetPrimaryMainFrame(), + content::JsReplace("fetch($1, {browsingTopics: true})", fetch_url))); std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRelativePath()); + GetTopicsHeaderForRequestPath( + "/browsing_topics/page_with_custom_topics_header.html"); EXPECT_EQ(topics_header_value, kExpectedHeaderValueForEmptyTopics); @@ -2775,9 +2647,9 @@ // Site a.test is attested, so when an x-origin request is made to it from // site b.test, a.test should still include a topics header. -IN_PROC_BROWSER_TEST_P( - AttestationSubresourceRequestTest, - CrossOrigin_TopicsEligible_SendTopics_HasObserveResponse_SiteAttested) { +IN_PROC_BROWSER_TEST_F( + AttestationBrowsingTopicsBrowserTest, + FetchCrossOrigin_TopicsEligible_SendTopics_HasObserveResponse_SiteAttested) { privacy_sandbox::PrivacySandboxAttestationsMap map; map.insert_or_assign( net::SchemefulSite(GURL("https://a.test")), @@ -2799,14 +2671,19 @@ "Observe-Browsing-Topics: ?1")); replacement.emplace_back(std::make_pair("{{REDIRECT_HEADER}}", "")); - GURL resource_url = https_server_.GetURL( - "a.test", net::test_server::GetFilePathWithReplacements(GetRelativePath(), - replacement)); + GURL fetch_url = https_server_.GetURL( + "a.test", net::test_server::GetFilePathWithReplacements( + "/browsing_topics/" + "page_with_custom_topics_header.html", + replacement)); - EXPECT_TRUE(ExecJsWithBrowsingTopicsTrue(resource_url)); + EXPECT_TRUE(ExecJs( + web_contents()->GetPrimaryMainFrame(), + content::JsReplace("fetch($1, {browsingTopics: true})", fetch_url))); std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRelativePath()); + GetTopicsHeaderForRequestPath( + "/browsing_topics/page_with_custom_topics_header.html"); EXPECT_TRUE(topics_header_value); EXPECT_EQ(*topics_header_value, kExpectedHeaderValueForSiteB); @@ -2831,8 +2708,8 @@ // Site a.test is not attested, so this should not generate a Topics header in a // x-origin fetch to site a.test. -IN_PROC_BROWSER_TEST_P(AttestationSubresourceRequestTest, - CrossOrigin_TopicsEligible_SiteNotAttested) { +IN_PROC_BROWSER_TEST_F(AttestationBrowsingTopicsBrowserTest, + FetchCrossOrigin_TopicsEligible_SiteNotAttested) { privacy_sandbox::PrivacySandboxAttestationsMap map; map.insert_or_assign( net::SchemefulSite(GURL("https://b.test")), @@ -2854,14 +2731,19 @@ "Observe-Browsing-Topics: ?1")); replacement.emplace_back(std::make_pair("{{REDIRECT_HEADER}}", "")); - GURL resource_url = https_server_.GetURL( - "a.test", net::test_server::GetFilePathWithReplacements(GetRelativePath(), - replacement)); + GURL fetch_url = https_server_.GetURL( + "a.test", net::test_server::GetFilePathWithReplacements( + "/browsing_topics/" + "page_with_custom_topics_header.html", + replacement)); - EXPECT_TRUE(ExecJsWithBrowsingTopicsTrue(resource_url)); + EXPECT_TRUE(ExecJs( + web_contents()->GetPrimaryMainFrame(), + content::JsReplace("fetch($1, {browsingTopics: true})", fetch_url))); std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRelativePath()); + GetTopicsHeaderForRequestPath( + "/browsing_topics/page_with_custom_topics_header.html"); EXPECT_EQ(topics_header_value, kExpectedHeaderValueForEmptyTopics); @@ -2875,11 +2757,11 @@ EXPECT_FALSE(console_observer.messages().empty()); } -// Site a.test is attested, but not for Topics, so the fetch/img request to -// a.test should not get a header. -IN_PROC_BROWSER_TEST_P( - AttestationSubresourceRequestTest, - CrossOrigin_TopicsEligible_SiteNotAttested_MismatchedMap) { +// Site a.test is attested, but not for Topics, so the fetch request to a.test +// should not get a header. +IN_PROC_BROWSER_TEST_F( + AttestationBrowsingTopicsBrowserTest, + FetchCrossOrigin_TopicsEligible_SiteNotAttested_MismatchedMap) { privacy_sandbox::PrivacySandboxAttestationsMap map; map.insert_or_assign(net::SchemefulSite(GURL("https://a.test")), privacy_sandbox::PrivacySandboxAttestationsGatedAPISet{ @@ -2901,14 +2783,19 @@ "Observe-Browsing-Topics: ?1")); replacement.emplace_back(std::make_pair("{{REDIRECT_HEADER}}", "")); - GURL resource_url = https_server_.GetURL( - "a.test", net::test_server::GetFilePathWithReplacements(GetRelativePath(), - replacement)); + GURL fetch_url = https_server_.GetURL( + "a.test", net::test_server::GetFilePathWithReplacements( + "/browsing_topics/" + "page_with_custom_topics_header.html", + replacement)); - EXPECT_TRUE(ExecJsWithBrowsingTopicsTrue(resource_url)); + EXPECT_TRUE(ExecJs( + web_contents()->GetPrimaryMainFrame(), + content::JsReplace("fetch($1, {browsingTopics: true})", fetch_url))); std::optional<std::string> topics_header_value = - GetTopicsHeaderForRequestPath(GetRelativePath()); + GetTopicsHeaderForRequestPath( + "/browsing_topics/page_with_custom_topics_header.html"); EXPECT_EQ(topics_header_value, kExpectedHeaderValueForEmptyTopics);
diff --git a/chrome/browser/command_updater.h b/chrome/browser/command_updater.h index 80308849..1d215e1 100644 --- a/chrome/browser/command_updater.h +++ b/chrome/browser/command_updater.h
@@ -38,18 +38,23 @@ // disposition. // Returns true if the command was executed (i.e. it is supported and is // enabled). - virtual bool ExecuteCommand( - int id, - base::TimeTicks time_stamp = base::TimeTicks::Now()) = 0; + virtual bool ExecuteCommand(int id, base::TimeTicks time_stamp) = 0; + bool ExecuteCommand(int id) { + return ExecuteCommand(id, base::TimeTicks::Now()); + } // Performs the action associated with this command ID using the given // disposition. // Returns true if the command was executed (i.e. it is supported and is // enabled). - virtual bool ExecuteCommandWithDisposition( - int id, - WindowOpenDisposition disposition, - base::TimeTicks time_stamp = base::TimeTicks::Now()) = 0; + virtual bool ExecuteCommandWithDisposition(int id, + WindowOpenDisposition disposition, + base::TimeTicks time_stamp) = 0; + bool ExecuteCommandWithDisposition(int id, + WindowOpenDisposition disposition) { + return ExecuteCommandWithDisposition(id, disposition, + base::TimeTicks::Now()); + } // Adds an observer to the state of a particular command. If the command does // not exist, it is created, initialized to false.
diff --git a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabGroupUtils.java b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabGroupUtils.java index 8ffbeab..b55403c1 100644 --- a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabGroupUtils.java +++ b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabGroupUtils.java
@@ -4,6 +4,7 @@ package org.chromium.chrome.browser.data_sharing; +import android.content.Context; import android.text.TextUtils; import androidx.annotation.IntDef; @@ -16,6 +17,7 @@ import org.chromium.chrome.browser.tab_group_sync.TabGroupSyncServiceFactory; import org.chromium.chrome.browser.tabmodel.TabClosureParams; import org.chromium.chrome.browser.tabmodel.TabCreator; +import org.chromium.chrome.browser.tabmodel.TabGroupTitleUtils; import org.chromium.chrome.browser.tabmodel.TabList; import org.chromium.chrome.browser.tabmodel.TabModel; import org.chromium.chrome.browser.tabmodel.TabModelUtils; @@ -269,4 +271,23 @@ } return null; } + + /** + * @param context The activity context. + * @param collaborationId The sharing ID associated with the group. + * @param tabGroupSyncService The sync service to get tab group data form. + * @return The title of the tab group. + */ + @Nullable + public static String getTabGroupTitle( + Context context, String collaborationId, TabGroupSyncService tabGroupSyncService) { + SavedTabGroup tabGroup = + getTabGroupForCollabIdFromSync(collaborationId, tabGroupSyncService); + if (tabGroup == null) { + return null; + } + return TextUtils.isEmpty(tabGroup.title) + ? TabGroupTitleUtils.getDefaultTitle(context, tabGroup.savedTabs.size()) + : tabGroup.title; + } }
diff --git a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabGroupsDelegate.java b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabGroupsDelegate.java index afe0e0db..3079b7d 100644 --- a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabGroupsDelegate.java +++ b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabGroupsDelegate.java
@@ -5,7 +5,9 @@ package org.chromium.chrome.browser.data_sharing; import android.content.Context; +import android.graphics.Bitmap; +import org.chromium.base.Callback; import org.chromium.url.GURL; /** An interface to handle actions related to tab groups. */ @@ -24,4 +26,13 @@ * @param gurl The GURL of the page to be opened in CCT. */ public void openLearnMoreSharedTabGroupsPage(Context context, GURL gurl); + + /** + * Create a preview image for the tab group to show in share sheet. + * + * @param collaborationId The collaboration ID of the tab group. + * @param size The expected size in pixels of the preview bitmap. + * @param onResult The callback to return the preview image. + */ + public void getPreviewBitmap(String collaborationId, int size, Callback<Bitmap> onResult); }
diff --git a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabManager.java b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabManager.java index 351cb47..6fe016e 100644 --- a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabManager.java +++ b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabManager.java
@@ -613,17 +613,10 @@ showShareSheet( new GroupData( result.getGroupId(), - result.getDisplayName(), + tabGroupDisplayName, /* members= */ null, - result.getAccessToken())); - - PostTask.postTask( - TaskTraits.UI_DEFAULT, - () -> { - if (onCreateFinished != null) { - onCreateFinished.onResult(true); - } - }); + result.getAccessToken()), + onCreateFinished); } @Override @@ -645,11 +638,23 @@ // activity, sessionId, convertToTabsPreviewList(existingGroup.savedTabs, 4)); } - private void showShareSheet(GroupData groupData) { + private void showShareSheet(GroupData groupData, Callback<Boolean> onShareSheetShown) { + mDataSharingTabGroupsDelegate.getPreviewBitmap( + groupData.groupToken.collaborationId, + // TODO(386833405): Expose dimen.share_preview_favicon_size. + 80, + (preview) -> { + showShareSheetWithPreview(groupData, preview, onShareSheetShown); + }); + } + + private void showShareSheetWithPreview( + GroupData groupData, Bitmap preview, Callback<Boolean> onShareSheetShown) { GURL url = mDataSharingService.getDataSharingUrl(groupData); if (url == null) { // TODO(ritikagup) : Show error dialog showing fetching URL failed. Contact owner for // new link. + Callback.runNullSafe(onShareSheetShown, false); DataSharingMetrics.recordShareActionFlowState( DataSharingMetrics.ShareActionStateAndroid.URL_CREATION_FAILED); return; @@ -658,17 +663,26 @@ DataSharingMetrics.ShareActionStateAndroid.SHARE_SHEET_SHOWN); var chromeShareExtras = new ChromeShareExtras.Builder() - .setDetailedContentType(DetailedContentType.PAGE_INFO) - .build(); - // TODO (b/358666351) : Add correct text for Share URL based on UX. - ShareParams shareParams = - new ShareParams.Builder(mWindowAndroid, groupData.displayName, url.getSpec()) - .setText("") + .setDetailedContentType(DetailedContentType.TAB_GROUP_LINK) .build(); + ShareParams.Builder shareParamsBuilder = + new ShareParams.Builder(mWindowAndroid, groupData.displayName, url.getSpec()); + + if (preview != null) { + shareParamsBuilder.setPreviewImageBitmap(preview); + } mShareDelegateSupplier .get() - .share(shareParams, chromeShareExtras, ShareDelegate.ShareOrigin.TAB_GROUP); + .share( + shareParamsBuilder.build(), + chromeShareExtras, + ShareDelegate.ShareOrigin.TAB_GROUP); + PostTask.postTask( + TaskTraits.UI_DEFAULT, + () -> { + Callback.runNullSafe(onShareSheetShown, true); + }); } /** @@ -681,6 +695,11 @@ assert mProfile != null; DataSharingUIDelegate uiDelegate = mDataSharingService.getUiDelegate(); + TabGroupSyncService tabGroupSyncService = + TabGroupSyncServiceFactory.getForProfile(mProfile); + String tabGroupName = + DataSharingTabGroupUtils.getTabGroupTitle( + activity, collaborationId, tabGroupSyncService); DataSharingStringConfig stringConfig = new DataSharingStringConfig.Builder() @@ -704,23 +723,14 @@ @Override public void onShareInviteLinkClickedWithWait( - GroupToken groupToken, Callback<Boolean> onCreateFinished) { - // TODO(ssid): Pass in the title and refactor showShareSheet to depend on - // GroupToken instead. + GroupToken groupToken, Callback<Boolean> onFinished) { showShareSheet( new GroupData( groupToken.collaborationId, - "Tab Group", + tabGroupName, /* members= */ null, - groupToken.accessToken)); - - PostTask.postTask( - TaskTraits.UI_DEFAULT, - () -> { - if (onCreateFinished != null) { - onCreateFinished.onResult(true); - } - }); + groupToken.accessToken), + onFinished); } }; DataSharingManageUiConfig manageConfig =
diff --git a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabManagerUnitTest.java b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabManagerUnitTest.java index c3171c7..bd70313 100644 --- a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabManagerUnitTest.java +++ b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabManagerUnitTest.java
@@ -24,6 +24,7 @@ import static org.chromium.ui.test.util.MockitoHelper.doCallback; import android.app.Activity; +import android.graphics.Bitmap; import android.text.TextUtils; import androidx.annotation.Nullable; @@ -58,6 +59,7 @@ import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.ui.favicon.FaviconHelper; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; +import org.chromium.components.browser_ui.share.ShareParams; import org.chromium.components.collaboration.messaging.ActivityLogItem; import org.chromium.components.collaboration.messaging.CollaborationEvent; import org.chromium.components.collaboration.messaging.MessageAttribution; @@ -154,7 +156,9 @@ @Mock private FaviconHelper mFaviconHelper; @Captor private ArgumentCaptor<Callback<Integer>> mOutcomeCallbackCaptor; + @Captor private ArgumentCaptor<Callback<Bitmap>> mTabGroupPreviewCallbackCaptor; @Captor private ArgumentCaptor<PropertyModel> mPropertyModelCaptor; + @Captor private ArgumentCaptor<ShareParams> mShareParamsCaptor; private DataSharingTabManager mDataSharingTabManager; private SavedTabGroup mSavedTabGroup; @@ -411,7 +415,18 @@ assertNotNull(uiConfig.getManageCallback()); uiConfig.getManageCallback() .onShareInviteLinkClicked(new GroupToken(COLLABORATION_ID1, ACCESS_TOKEN1)); - verify(mShareDelegate).share(any(), any(), eq(ShareDelegate.ShareOrigin.TAB_GROUP)); + + verify(mDataSharingTabGroupsDelegate) + .getPreviewBitmap( + eq(COLLABORATION_ID1), anyInt(), mTabGroupPreviewCallbackCaptor.capture()); + Bitmap preview = Bitmap.createBitmap(80, 80, Bitmap.Config.ARGB_8888); + mTabGroupPreviewCallbackCaptor.getValue().onResult(preview); + + verify(mShareDelegate) + .share( + mShareParamsCaptor.capture(), + any(), + eq(ShareDelegate.ShareOrigin.TAB_GROUP)); } @Test @@ -456,6 +471,12 @@ assertTrue(result); }); + verify(mDataSharingTabGroupsDelegate) + .getPreviewBitmap( + eq(COLLABORATION_ID1), anyInt(), mTabGroupPreviewCallbackCaptor.capture()); + Bitmap preview = Bitmap.createBitmap(80, 80, Bitmap.Config.ARGB_8888); + mTabGroupPreviewCallbackCaptor.getValue().onResult(preview); + // Verifying DataSharingService createGroup API is called. verify(mTabGroupSyncService).makeTabGroupShared(LOCAL_ID, COLLABORATION_ID1); verify(mShareDelegate).share(any(), any(), eq(ShareDelegate.ShareOrigin.TAB_GROUP));
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index ed4879a..44b98f5 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -5425,11 +5425,6 @@ "expiry_milestone": 95 }, { - "name": "ios-shared-highlighting-v2", - "owners": ["tmartino@chromium.org", "cheickcisse@google.com"], - "expiry_milestone": 109 - }, - { "name": "ios-soft-lock", "owners": [ "rubindl@chromium.org",
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 9f9df0e..699c7b4 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -3677,11 +3677,6 @@ "(tabstrip, toolbar, bookmarks bar, etc.) to allow more space for the web " "contents"; -const char kTabGroupsSaveUIUpdateId[] = "tab-groups-save-ui-update"; -const char kTabGroupsSaveUIUpdateName[] = "Tab Groups Save UI Update"; -const char kTabGroupsSaveUIUpdateDescription[] = - "Enables saved tab group pinning, everything menu and bookmarks bar change"; - const char kTabGroupSyncServiceDesktopMigrationId[] = "tab-group-sync-service-desktop-migration"; const char kTabGroupSyncServiceDesktopMigrationName[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index 8beaa2b..d3060ee 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -2117,10 +2117,6 @@ extern const char kTabGroupsSaveV2Name[]; extern const char kTabGroupsSaveV2Description[]; -extern const char kTabGroupsSaveUIUpdateId[]; -extern const char kTabGroupsSaveUIUpdateName[]; -extern const char kTabGroupsSaveUIUpdateDescription[]; - extern const char kTabGroupSyncServiceDesktopMigrationId[]; extern const char kTabGroupSyncServiceDesktopMigrationName[]; extern const char kTabGroupSyncServiceDesktopMigrationDescription[];
diff --git a/chrome/browser/glic/BUILD.gn b/chrome/browser/glic/BUILD.gn index 3667f4a..fbc99bb 100644 --- a/chrome/browser/glic/BUILD.gn +++ b/chrome/browser/glic/BUILD.gn
@@ -53,6 +53,7 @@ "//chrome/browser/ui:browser_navigator_params_headers", "//chrome/browser/ui/browser_window:browser_window", "//chrome/browser/ui/tabs:tab_strip", + "//chrome/browser/ui/user_education", "//chrome/common", "//components/favicon/content:content", "//components/guest_view/browser",
diff --git a/chrome/browser/glic/glic_tab_indicator_helper.cc b/chrome/browser/glic/glic_tab_indicator_helper.cc index 4e31ae5e..45f589a 100644 --- a/chrome/browser/glic/glic_tab_indicator_helper.cc +++ b/chrome/browser/glic/glic_tab_indicator_helper.cc
@@ -4,17 +4,120 @@ #include "chrome/browser/glic/glic_tab_indicator_helper.h" +#include <utility> + +#include "base/memory/weak_ptr.h" +#include "base/time/time.h" +#include "base/timer/timer.h" #include "chrome/browser/glic/glic_keyed_service_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser_window/public/browser_window_interface.h" #include "chrome/browser/ui/tabs/tab_change_type.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" +#include "chrome/browser/ui/user_education/browser_user_education_interface.h" +#include "components/feature_engagement/public/feature_constants.h" +#include "components/user_education/common/feature_promo/feature_promo_controller.h" +#include "components/user_education/common/feature_promo/feature_promo_result.h" +#include "components/user_education/common/user_education_features.h" #include "content/public/browser/web_contents.h" namespace glic { +namespace { + +// Use the session start grace period as a guide for how often we could check to +// see if the promo should show. As a side effect, will not attempt to show the +// promo during a grace period that occurs at browser process start. Note that +// this is typically an anti-pattern - "wait until after grace period then show" +// immediately" is not a substitute for "I'd like to show this to everyone at +// startup but can't", however in this case since we will be checking +// periodically anyway until/unless we're told the promo can't be shown, it's as +// good as any of an interval to use. +base::TimeDelta GetPromoCheckInterval() { + return user_education::features::GetSessionStartGracePeriod() + + base::Minutes(1); +} + +} // namespace + +// Provides logic of when to show the IPH promo for this feature. +// +// Current logic is "periodically, starting after the session start grace +// period". This is really not great, except that none of the alternatives were +// any better. +// +// For example, consider checking every time the active page changes. This would +// require lots of observers (tab strip selection, active web contents +// navigation) that would need to be kept updated. It would also run during +// grace and cooldown periods where the promo could not possibly be shown, and +// without additional delay logic would show the IPH - and interrupt the user - +// as soon as they landed on a new page, which could happen during e.g. +// tab-switching or clicking links (which would be very bad). +// +// A potential future upgrade is to do the above, but put showing the promo on a +// delay timer so that it schedules to show, say, ten seconds after an eligible +// page is active and ready, and any tab-switching or navigation in that window +// results in the timer being reset. For now, however, this implementation +// suffices. +class GlicTabIndicatorHelper::PromoHelper { + public: + explicit PromoHelper(GlicTabIndicatorHelper& owner) : owner_(owner) { + show_timer_.Start(FROM_HERE, GetPromoCheckInterval(), + base::BindRepeating(&PromoHelper::MaybeShowPromo, + weak_ptr_factory_.GetWeakPtr())); + } + ~PromoHelper() = default; + + private: + BrowserWindowInterface& browser() { return *owner_->browser_; } + + void MaybeShowPromo() { + // Determine that there is a valid active tab we could show the promo for. + auto* const tab = browser().GetActiveTabInterface(); + if (!tab) { + return; + } + auto* const contents = tab->GetContents(); + if (!contents || !contents->GetURL().SchemeIsHTTPOrHTTPS() || + !contents->IsDocumentOnLoadCompletedInPrimaryMainFrame()) { + return; + } + + // Attempt to show the promo. Results will be sent to `OnShowPromoResult()`. + // + // Note that under User Education Experience 2.0 this could interrupt the + // user at an inopportune time. However in 2.5 there will be much less + // chance of an interruption because promos are paused when the user is + // interacting with the browser. + user_education::FeaturePromoParams params( + feature_engagement::kIPHGlicPromoFeature); + params.show_promo_result_callback = base::BindOnce( + &PromoHelper::OnShowPromoResult, weak_ptr_factory_.GetWeakPtr()); + browser().GetUserEducationInterface()->MaybeShowFeaturePromo( + std::move(params)); + } + + void OnShowPromoResult(user_education::FeaturePromoResult result) { + // If there's no chance a promo could be shown in this browser window, stop + // trying to check. + if (result.is_blocked_this_instance()) { + show_timer_.Stop(); + } + } + + const raw_ref<GlicTabIndicatorHelper> owner_; + + // Limit how often we check to see if a promo can be shown; this prevents + // hammering the feature promo system constantly. + base::RepeatingTimer show_timer_; + + base::WeakPtrFactory<PromoHelper> weak_ptr_factory_{this}; +}; + +// Tab indicator helper implementation: + GlicTabIndicatorHelper::GlicTabIndicatorHelper(BrowserWindowInterface* browser) - : browser_(*browser) { + : browser_(*browser), promo_helper_(std::make_unique<PromoHelper>(*this)) { auto* const service = glic::GlicKeyedServiceFactory::GetGlicKeyedService( browser_->GetProfile()); SetLastFocusedTab(service->GetFocusedTab());
diff --git a/chrome/browser/glic/glic_tab_indicator_helper.h b/chrome/browser/glic/glic_tab_indicator_helper.h index 1b0a777..7780bab 100644 --- a/chrome/browser/glic/glic_tab_indicator_helper.h +++ b/chrome/browser/glic/glic_tab_indicator_helper.h
@@ -5,6 +5,8 @@ #ifndef CHROME_BROWSER_GLIC_GLIC_TAB_INDICATOR_HELPER_H_ #define CHROME_BROWSER_GLIC_GLIC_TAB_INDICATOR_HELPER_H_ +#include <memory> + #include "base/callback_list.h" #include "base/memory/raw_ref.h" #include "base/memory/weak_ptr.h" @@ -25,6 +27,8 @@ ~GlicTabIndicatorHelper(); private: + class PromoHelper; + // Sets the last focused tab to `contents`. void SetLastFocusedTab(const content::WebContents* contents); @@ -37,6 +41,7 @@ const raw_ref<BrowserWindowInterface> browser_; base::WeakPtr<const content::WebContents> last_focused_tab_; base::CallbackListSubscription change_subscription_; + const std::unique_ptr<PromoHelper> promo_helper_; }; } // namespace glic
diff --git a/chrome/browser/nearby_sharing/nearby_share_delegate_impl.cc b/chrome/browser/nearby_sharing/nearby_share_delegate_impl.cc index 821c1c77..df240f3c 100644 --- a/chrome/browser/nearby_sharing/nearby_share_delegate_impl.cc +++ b/chrome/browser/nearby_sharing/nearby_share_delegate_impl.cc
@@ -38,6 +38,8 @@ base::Time::Now().ToDeltaSinceWindowsEpoch().InMicroseconds()); } +const gfx::VectorIcon kEmptyIcon; + } // namespace NearbyShareDelegateImpl::NearbyShareDelegateImpl( @@ -243,7 +245,7 @@ return on_icon ? kNearbyShareInternalIcon : kNearbyShareInternalOffIcon; } #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING) - return gfx::VectorIcon::EmptyIcon(); + return kEmptyIcon; } std::u16string NearbyShareDelegateImpl::GetPlaceholderFeatureName() const {
diff --git a/chrome/browser/new_tab_page/modules/file_suggestion/drive_service.cc b/chrome/browser/new_tab_page/modules/file_suggestion/drive_service.cc index d16db6aa..9c12e0ea 100644 --- a/chrome/browser/new_tab_page/modules/file_suggestion/drive_service.cc +++ b/chrome/browser/new_tab_page/modules/file_suggestion/drive_service.cc
@@ -226,6 +226,9 @@ } ] })"; + +const char kBaseFileIconUrl[] = + "https://drive-thirdparty.googleusercontent.com/32/type/"; } // namespace // static @@ -489,7 +492,7 @@ } auto mojo_drive_doc = file_suggestion::mojom::File::New(); mojo_drive_doc->title = *title; - mojo_drive_doc->mime_type = *mime_type; + mojo_drive_doc->icon_url = GURL(kBaseFileIconUrl + *mime_type); mojo_drive_doc->justification_text = justification_text; mojo_drive_doc->id = *id; mojo_drive_doc->item_url = GURL(*item_url);
diff --git a/chrome/browser/new_tab_page/modules/file_suggestion/drive_service_unittest.cc b/chrome/browser/new_tab_page/modules/file_suggestion/drive_service_unittest.cc index b1b9c10a3..fb9c0c1 100644 --- a/chrome/browser/new_tab_page/modules/file_suggestion/drive_service_unittest.cc +++ b/chrome/browser/new_tab_page/modules/file_suggestion/drive_service_unittest.cc
@@ -25,6 +25,18 @@ #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" #include "services/network/test/test_url_loader_factory.h" +namespace { + +const char kSpreadsheetFileIconUrl[] = + "https://drive-thirdparty.googleusercontent.com/32/type/application/" + "vnd.google-apps.spreadsheet"; + +const char kDocFileIconUrl[] = + "https://drive-thirdparty.googleusercontent.com/32/type/application/" + "vnd.google-apps.document"; + +} // namespace + class DriveServiceTest : public testing::Test { public: DriveServiceTest() @@ -146,14 +158,12 @@ EXPECT_EQ(2u, actual_documents.size()); EXPECT_EQ("Foo foo", actual_documents.at(0)->title); - EXPECT_EQ("application/vnd.google-apps.spreadsheet", - actual_documents.at(0)->mime_type); + EXPECT_EQ(kSpreadsheetFileIconUrl, actual_documents.at(0)->icon_url.spec()); EXPECT_EQ("Foo foo", actual_documents.at(0)->justification_text); EXPECT_EQ("https://google.com/foo", actual_documents.at(0)->item_url.spec()); EXPECT_EQ("Bar", actual_documents.at(1)->title); EXPECT_EQ("123", actual_documents.at(1)->id); - EXPECT_EQ("application/vnd.google-apps.document", - actual_documents.at(1)->mime_type); + EXPECT_EQ(kDocFileIconUrl, actual_documents.at(1)->icon_url.spec()); EXPECT_EQ("Foo bar foo bar", actual_documents.at(1)->justification_text); EXPECT_EQ("https://google.com/bar", actual_documents.at(1)->item_url.spec()); ASSERT_EQ(1, histogram_tester_.GetBucketCount( @@ -251,23 +261,19 @@ EXPECT_EQ(1u, response3.size()); EXPECT_EQ(1u, response4.size()); EXPECT_EQ("Foo foo", response1.at(0)->title); - EXPECT_EQ("application/vnd.google-apps.spreadsheet", - response1.at(0)->mime_type); + EXPECT_EQ(kSpreadsheetFileIconUrl, response1.at(0)->icon_url.spec()); EXPECT_EQ("Foo foo", response1.at(0)->justification_text); EXPECT_EQ("234", response1.at(0)->id); EXPECT_EQ("Foo foo", response2.at(0)->title); - EXPECT_EQ("application/vnd.google-apps.spreadsheet", - response2.at(0)->mime_type); + EXPECT_EQ(kSpreadsheetFileIconUrl, response2.at(0)->icon_url.spec()); EXPECT_EQ("Foo foo", response2.at(0)->justification_text); EXPECT_EQ("234", response2.at(0)->id); EXPECT_EQ("Foo foo", response3.at(0)->title); - EXPECT_EQ("application/vnd.google-apps.spreadsheet", - response3.at(0)->mime_type); + EXPECT_EQ(kSpreadsheetFileIconUrl, response3.at(0)->icon_url.spec()); EXPECT_EQ("Foo foo", response3.at(0)->justification_text); EXPECT_EQ("234", response3.at(0)->id); EXPECT_EQ("Foo foo", response4.at(0)->title); - EXPECT_EQ("application/vnd.google-apps.spreadsheet", - response4.at(0)->mime_type); + EXPECT_EQ(kSpreadsheetFileIconUrl, response4.at(0)->icon_url.spec()); EXPECT_EQ("Foo foo", response4.at(0)->justification_text); EXPECT_EQ("234", response4.at(0)->id); ASSERT_EQ(1, histogram_tester_.GetBucketCount(
diff --git a/chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion.mojom b/chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion.mojom index 558749f..4bde1f2 100644 --- a/chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion.mojom +++ b/chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion.mojom
@@ -12,8 +12,8 @@ string id; // Information on why the File Item was returned. string justification_text; - // The mime type of the File Item. - string mime_type; + // The URL to the file icon. + url.mojom.Url icon_url; // The name of the File Item. string title; // The URL to navigate to the File Item.
diff --git a/chrome/browser/new_tab_page/modules/v2/calendar/outlook_calendar_page_handler.cc b/chrome/browser/new_tab_page/modules/v2/calendar/outlook_calendar_page_handler.cc index 4d0612b..d239bc4 100644 --- a/chrome/browser/new_tab_page/modules/v2/calendar/outlook_calendar_page_handler.cc +++ b/chrome/browser/new_tab_page/modules/v2/calendar/outlook_calendar_page_handler.cc
@@ -11,10 +11,14 @@ #include "base/strings/utf_string_conversions.h" #include "chrome/browser/new_tab_page/modules/v2/calendar/calendar_data.mojom.h" #include "chrome/browser/new_tab_page/modules/v2/calendar/calendar_fake_data_helper.h" +#include "chrome/common/pref_names.h" #include "components/search/ntp_features.h" #include "net/base/mime_util.h" +#include "net/http/http_response_headers.h" +#include "net/http/http_util.h" #include "net/traffic_annotation/network_traffic_annotation.h" #include "services/network/public/cpp/resource_request.h" +#include "services/network/public/mojom/url_response_head.mojom.h" namespace { @@ -115,11 +119,19 @@ } // namespace +// static +void OutlookCalendarPageHandler::RegisterProfilePrefs( + PrefRegistrySimple* registry) { + registry->RegisterTimePref(prefs::kNtpOutlookCalendarRetryAfterTime, + base::Time()); +} + OutlookCalendarPageHandler::OutlookCalendarPageHandler( mojo::PendingReceiver<ntp::calendar::mojom::OutlookCalendarPageHandler> handler, Profile* profile) : handler_(this, std::move(handler)), + pref_service_(profile->GetPrefs()), url_loader_factory_(profile->GetURLLoaderFactory()) {} OutlookCalendarPageHandler::~OutlookCalendarPageHandler() = default; @@ -137,6 +149,17 @@ } void OutlookCalendarPageHandler::MakeRequest(GetEventsCallback callback) { + // Do not attempt to get calendar events when a throttling error must be + // waited out. + base::Time retry_after_time = + pref_service_->GetTime(prefs::kNtpOutlookCalendarRetryAfterTime); + if (retry_after_time != base::Time() && + base::Time::Now() < retry_after_time) { + std::move(callback).Run( + std::vector<ntp::calendar::mojom::CalendarEventPtr>()); + return; + } + auto resource_request = std::make_unique<network::ResourceRequest>(); resource_request->method = "GET"; resource_request->url = GURL(kRequestUrl); @@ -160,9 +183,19 @@ void OutlookCalendarPageHandler::OnJsonReceived( GetEventsCallback callback, std::unique_ptr<std::string> response_body) { - // TODO(376516070): Attempt to retrieve "Retry-After" header for throttling - // errors. const int net_error = url_loader_->NetError(); + + // Check for throttling errors. + auto* response_info = url_loader_->ResponseInfo(); + if (net_error != net::OK && response_info && response_info->headers) { + int64_t wait_time = + response_info->headers->GetInt64HeaderValue("Retry-After"); + if (wait_time != -1) { + pref_service_->SetTime(prefs::kNtpOutlookCalendarRetryAfterTime, + base::Time::Now() + base::Seconds(wait_time)); + } + } + url_loader_.reset(); if (net_error == net::OK && response_body) {
diff --git a/chrome/browser/new_tab_page/modules/v2/calendar/outlook_calendar_page_handler.h b/chrome/browser/new_tab_page/modules/v2/calendar/outlook_calendar_page_handler.h index 041964be..46315f4 100644 --- a/chrome/browser/new_tab_page/modules/v2/calendar/outlook_calendar_page_handler.h +++ b/chrome/browser/new_tab_page/modules/v2/calendar/outlook_calendar_page_handler.h
@@ -7,14 +7,19 @@ #include <string> +#include "base/memory/raw_ptr.h" #include "chrome/browser/new_tab_page/modules/v2/calendar/outlook_calendar.mojom.h" #include "chrome/browser/profiles/profile.h" +#include "components/prefs/pref_registry_simple.h" +#include "components/prefs/pref_service.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/receiver.h" #include "services/data_decoder/public/cpp/data_decoder.h" #include "services/network/public/cpp/shared_url_loader_factory.h" #include "services/network/public/cpp/simple_url_loader.h" +class PrefRegistrySimple; +class PrefService; class Profile; class OutlookCalendarPageHandler @@ -26,6 +31,8 @@ Profile* profile); ~OutlookCalendarPageHandler() override; + static void RegisterProfilePrefs(PrefRegistrySimple* registry); + // ntp::calendar::mojom::OutlookCalendarPageHandler void GetEvents(GetEventsCallback callback) override; @@ -35,7 +42,9 @@ std::unique_ptr<std::string> response_body); void OnJsonParsed(GetEventsCallback callback, data_decoder::DataDecoder::ValueOrError result); + mojo::Receiver<ntp::calendar::mojom::OutlookCalendarPageHandler> handler_; + raw_ptr<PrefService> pref_service_; std::unique_ptr<network::SimpleURLLoader> url_loader_; scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_; base::WeakPtrFactory<OutlookCalendarPageHandler> weak_factory_{this};
diff --git a/chrome/browser/new_tab_page/modules/v2/calendar/outlook_calendar_page_handler_unittest.cc b/chrome/browser/new_tab_page/modules/v2/calendar/outlook_calendar_page_handler_unittest.cc index 2919a36..d5dcde4e 100644 --- a/chrome/browser/new_tab_page/modules/v2/calendar/outlook_calendar_page_handler_unittest.cc +++ b/chrome/browser/new_tab_page/modules/v2/calendar/outlook_calendar_page_handler_unittest.cc
@@ -12,11 +12,14 @@ #include "base/test/test_future.h" #include "chrome/browser/new_tab_page/modules/v2/calendar/calendar_data.mojom.h" #include "chrome/browser/new_tab_page/modules/v2/calendar/calendar_fake_data_helper.h" +#include "chrome/common/pref_names.h" #include "chrome/test/base/testing_profile.h" +#include "components/prefs/pref_service.h" #include "components/search/ntp_features.h" #include "content/public/test/browser_task_environment.h" #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" #include "services/network/test/test_url_loader_factory.h" +#include "services/network/test/test_utils.h" #include "testing/gtest/include/gtest/gtest.h" namespace { @@ -56,14 +59,14 @@ base::test::ScopedFeatureList& feature_list() { return feature_list_; } protected: - network::TestURLLoaderFactory test_url_loader_factory_; - - private: content::BrowserTaskEnvironment task_environment_{ base::test::TaskEnvironment::TimeSource::MOCK_TIME, base::test::TaskEnvironment::MainThreadType::IO}; - base::test::ScopedFeatureList feature_list_; std::unique_ptr<TestingProfile> profile_; + network::TestURLLoaderFactory test_url_loader_factory_; + + private: + base::test::ScopedFeatureList feature_list_; }; TEST_F(OutlookCalendarPageHandlerTest, GetFakeEvents) { @@ -607,3 +610,72 @@ GURL(kBaseAttachmentResourceUrl + id_paths[i])); } } + +// Verifies that a "Retry-After" header is parsed and the earliest next retry +// is persisted in prefs. +TEST_F(OutlookCalendarPageHandlerTest, HandleThrottlingError) { + std::unique_ptr<OutlookCalendarPageHandler> handler = CreateHandler(); + base::test::TestFuture<std::vector<ntp::calendar::mojom::CalendarEventPtr>> + future; + + EXPECT_EQ( + profile_->GetPrefs()->GetTime(prefs::kNtpOutlookCalendarRetryAfterTime), + base::Time()); + + handler->GetEvents(future.GetCallback()); + + auto head = network::CreateURLResponseHead(net::HTTP_TOO_MANY_REQUESTS); + head->mime_type = "application/json"; + head->headers->AddHeader("Retry-After", "10"); + network::URLLoaderCompletionStatus status; + std::string response = R"({ + "error": { + "code": "TooManyRequests", + "innerError": { + "code": "429", + "date": "2024-12-02T12:51:51", + "message": "Please retry after", + "request-id": "123-456-789-123-abcdefg", + "status": "429" + }, + "message": "Please retry again later." + }})"; + + test_url_loader_factory_.AddResponse(GURL(kRequestUrl), std::move(head), + response, status); + + EXPECT_EQ(future.Get().size(), 0u); + + EXPECT_EQ( + profile_->GetPrefs()->GetTime(prefs::kNtpOutlookCalendarRetryAfterTime), + base::Time::Now() + base::Seconds(10)); +} + +// Verifies that requests aren't made if there is a retry timeout that should be +// waited out. +TEST_F(OutlookCalendarPageHandlerTest, MakeRequestAfterRetryTimeout) { + std::unique_ptr<OutlookCalendarPageHandler> handler = CreateHandler(); + base::test::TestFuture<std::vector<ntp::calendar::mojom::CalendarEventPtr>> + future; + + profile_->GetPrefs()->SetTime(prefs::kNtpOutlookCalendarRetryAfterTime, + base::Time::Now() + base::Seconds(10)); + + handler->GetEvents(future.GetCallback()); + EXPECT_EQ(test_url_loader_factory_.NumPending(), 0); + EXPECT_EQ(future.Get().size(), 0u); + + future.Clear(); + handler.reset(); + + task_environment_.FastForwardBy(base::Seconds(15)); + handler = CreateHandler(); + + handler->GetEvents(future.GetCallback()); + EXPECT_EQ(test_url_loader_factory_.NumPending(), 1); + + test_url_loader_factory_.SimulateResponseForPendingRequest( + kRequestUrl, *calendar::calendar_fake_data_helper::GetFakeJsonResponse()); + + EXPECT_EQ(future.Get().size(), 3u); +}
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc index edbfb77e..48d8f86 100644 --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc
@@ -279,6 +279,7 @@ #include "chrome/browser/new_tab_page/modules/safe_browsing/safe_browsing_handler.h" #include "chrome/browser/new_tab_page/modules/v2/authentication/microsoft_auth_page_handler.h" #include "chrome/browser/new_tab_page/modules/v2/calendar/google_calendar_page_handler.h" +#include "chrome/browser/new_tab_page/modules/v2/calendar/outlook_calendar_page_handler.h" #include "chrome/browser/new_tab_page/modules/v2/most_relevant_tab_resumption/most_relevant_tab_resumption_page_handler.h" #include "chrome/browser/new_tab_page/promos/promo_service.h" #include "chrome/browser/policy/developer_tools_policy_handler.h" @@ -2202,6 +2203,7 @@ NewTabPageUI::RegisterProfilePrefs(registry); ntp::SafeBrowsingHandler::RegisterProfilePrefs(registry); ntp_tiles::CustomLinksManagerImpl::RegisterProfilePrefs(registry); + OutlookCalendarPageHandler::RegisterProfilePrefs(registry); PinnedTabCodec::RegisterProfilePrefs(registry); policy::DeveloperToolsPolicyHandler::RegisterProfilePrefs(registry); promos_utils::RegisterProfilePrefs(registry);
diff --git a/chrome/browser/resources/chromeos/arc_support/OWNERS b/chrome/browser/resources/chromeos/arc_support/OWNERS index 580dfdd4..b6123d41 100644 --- a/chrome/browser/resources/chromeos/arc_support/OWNERS +++ b/chrome/browser/resources/chromeos/arc_support/OWNERS
@@ -1,4 +1,4 @@ lgcheng@google.com -mhasank@chromium.org +jhorwich@google.com per-file recommend_app_list_view.*=rrsilva@google.com
diff --git a/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/drive_module.html b/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/drive_module.html index 4ec11700..35b3547d 100644 --- a/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/drive_module.html +++ b/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/drive_module.html
@@ -11,8 +11,7 @@ </ntp-module-header-v2> <ntp-file-suggestion id="fileSuggestion" module-name="Drive" - .files="${this.files}" - .imageSourceBaseUrl="${this.imageSourceBaseUrl_}"> + .files="${this.files}"> </ntp-file-suggestion> ${this.showInfoDialog_ ? html` <ntp-info-dialog show-on-attach
diff --git a/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/drive_module.ts b/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/drive_module.ts index 83b2a3e0..8db6c92 100644 --- a/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/drive_module.ts +++ b/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/drive_module.ts
@@ -17,9 +17,6 @@ import {FileProxy} from './file_module_proxy.js'; import type {FileSuggestionElement} from './file_suggestion.js'; -const DRIVE_ICON_BASE_URL: string = - 'https://drive-thirdparty.googleusercontent.com/32/type/'; - export interface DriveModuleElement { $: { fileSuggestion: FileSuggestionElement, @@ -45,13 +42,11 @@ static override get properties() { return { files: {type: Array}, - imageSourceBaseUrl_: {type: String}, showInfoDialog_: {type: Boolean}, }; } files: File[] = []; - protected imageSourceBaseUrl_: string = DRIVE_ICON_BASE_URL; protected showInfoDialog_: boolean = false; protected getMenuItemGroups_(): MenuItem[][] {
diff --git a/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/file_suggestion.html b/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/file_suggestion.html index 7d7162c..8539ddc 100644 --- a/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/file_suggestion.html +++ b/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/file_suggestion.html
@@ -7,7 +7,7 @@ <img is="cr-auto-img" class="file-icon" draggable="false" - .autoSrc="${this.getImageSrc_(item)}"> + .autoSrc="${item.iconUrl.url}"> </icon-container> <div class="file-info"> <div class="file-title">${item.title}</div>
diff --git a/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/file_suggestion.ts b/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/file_suggestion.ts index 06b2bad..bac1c06e 100644 --- a/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/file_suggestion.ts +++ b/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/file_suggestion.ts
@@ -35,19 +35,13 @@ static override get properties() { return { files: {type: Array}, - imageSourceBaseUrl: {type: String}, moduleName: {type: String}, }; } files: File[] = []; - imageSourceBaseUrl: string; moduleName: string; - protected getImageSrc_(file: File): string { - return this.imageSourceBaseUrl + file.mimeType; - } - protected onFileClick_(e: Event) { const clickFileEvent = new Event('usage', {composed: true, bubbles: true}); this.dispatchEvent(clickFileEvent);
diff --git a/chrome/browser/resources/tab_search/declutter/declutter_page.html.ts b/chrome/browser/resources/tab_search/declutter/declutter_page.html.ts index dcd7fc8..20d3b83b 100644 --- a/chrome/browser/resources/tab_search/declutter/declutter_page.html.ts +++ b/chrome/browser/resources/tab_search/declutter/declutter_page.html.ts
@@ -40,7 +40,8 @@ `} </div> ${ - this.staleTabDatas_.length === 0 ? + (this.staleTabDatas_.length === 0 && + this.duplicateTabDatas_.length === 0) ? html` <div class="empty-content"> <div class="empty-title">$i18n{declutterEmptyTitle}</div>
diff --git a/chrome/browser/resources/tab_search/declutter/declutter_page.ts b/chrome/browser/resources/tab_search/declutter/declutter_page.ts index 6faeee7..125faf06 100644 --- a/chrome/browser/resources/tab_search/declutter/declutter_page.ts +++ b/chrome/browser/resources/tab_search/declutter/declutter_page.ts
@@ -272,9 +272,11 @@ this.duplicateTabDatas_ = []; for (const url in tabs) { const urlTabs = tabs[url]!; - if (urlTabs.length > 0) { + // `tabs` include all the tabs with the url. The duplicate tab count + // should be one less than the count of `tabs`. + const duplicateCount = urlTabs.length - 1; + if (duplicateCount > 0) { const tabData: TabData = this.tabDataFromTab_(urlTabs[0]!); - const duplicateCount = urlTabs.length - 1; if (duplicateCount === 1) { tabData.tab.title = loadTimeData.getStringF('duplicateItemTitleSingle', url);
diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeShareExtras.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeShareExtras.java index d38a4b6..8080cbf 100644 --- a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeShareExtras.java +++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeShareExtras.java
@@ -30,6 +30,7 @@ DetailedContentType.SCREENSHOT, DetailedContentType.WEB_SHARE, DetailedContentType.PAGE_INFO, + DetailedContentType.TAB_GROUP_LINK, }) public @interface DetailedContentType { int NOT_SPECIFIED = 0; @@ -39,6 +40,7 @@ int SCREENSHOT = 4; int WEB_SHARE = 5; int PAGE_INFO = 6; + int TAB_GROUP_LINK = 7; } /** Whether to save the chosen activity for future direct sharing. */
diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/android_share_sheet/AndroidShareSheetController.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/android_share_sheet/AndroidShareSheetController.java index 03f7c83c..6d0a7b9 100644 --- a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/android_share_sheet/AndroidShareSheetController.java +++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/android_share_sheet/AndroidShareSheetController.java
@@ -189,12 +189,16 @@ return; } - long iconPrepStartTime = SystemClock.elapsedRealtime(); ChromeCustomShareAction.Provider finalProvider = provider; - preparePreviewFavicon( - activity, - profile, - params.getUrl(), + + if (params.getPreviewImageUri() != null) { + ShareHelper.shareWithSystemShareSheetUi( + params, profile, chromeShareExtras.saveLastUsed(), finalProvider); + return; + } + + long iconPrepStartTime = SystemClock.elapsedRealtime(); + Callback<Uri> shareWithPreviewUri = (uri) -> { RecordHistogram.recordTimesHistogram( "Sharing.PreparePreviewFaviconDuration", @@ -202,7 +206,14 @@ params.setPreviewImageUri(uri); ShareHelper.shareWithSystemShareSheetUi( params, profile, chromeShareExtras.saveLastUsed(), finalProvider); - }); + }; + + if (params.getPreviewImageBitmap() != null) { + getUriForPreviewImage(params.getPreviewImageBitmap(), shareWithPreviewUri); + return; + } + + preparePreviewFavicon(activity, profile, params.getUrl(), shareWithPreviewUri); } /** @@ -210,7 +221,7 @@ * * @param params The original {@link ShareParams} for sharing the highlight text. * @param chromeShareExtras The original {@link ChromeShareExtras} for sharing the highlight - * text. + * text. * @return Whether this share is process through a {@link LinkToTextCoordinator}. */ private boolean processShareWithLinkToText( @@ -261,6 +272,10 @@ FaviconUtils.createGenericFaviconBitmap( context, size, context.getColor(R.color.modern_white)); } + getUriForPreviewImage(bitmap, onImageUriAvailable); + } + + private static void getUriForPreviewImage(Bitmap bitmap, Callback<Uri> onImageUriAvailable) { String fileName = String.valueOf(System.currentTimeMillis()); ShareImageFileUtils.generateTemporaryUriFromBitmap(fileName, bitmap, onImageUriAvailable); }
diff --git a/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/android_share_sheet/AndroidShareSheetControllerUnitTest.java b/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/android_share_sheet/AndroidShareSheetControllerUnitTest.java index 80a8268..f4f39744 100644 --- a/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/android_share_sheet/AndroidShareSheetControllerUnitTest.java +++ b/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/android_share_sheet/AndroidShareSheetControllerUnitTest.java
@@ -517,6 +517,55 @@ } @Test + public void shareUrlWithPreviewImage() { + HistogramWatcher watcher = + HistogramWatcher.newSingleRecordWatcher("Sharing.PreparePreviewFaviconDuration"); + + Bitmap testBitmap = Bitmap.createBitmap(80, 80, Bitmap.Config.ARGB_8888); + ShadowShareImageFileUtils.sExpectedWebBitmap = testBitmap; + + ShareParams params = + new ShareParams.Builder(mWindow, "title", JUnitTestGURLs.EXAMPLE_URL.getSpec()) + .setBypassFixingDomDistillerUrl(true) + .setPreviewImageBitmap(testBitmap) + .build(); + ChromeShareExtras chromeShareExtras = new ChromeShareExtras.Builder().build(); + mController.showShareSheet(params, chromeShareExtras, 1L); + + Intent intent = Shadows.shadowOf((Activity) mActivity).peekNextStartedActivity(); + Assert.assertNotNull("Preview clip data should not be null.", intent.getClipData()); + Assert.assertEquals( + "Image preview Uri is null.", + TEST_WEB_FAVICON_PREVIEW_URI, + intent.getClipData().getItemAt(0).getUri()); + watcher.assertExpected(); + + ShadowShareImageFileUtils.sExpectedWebBitmap = null; + } + + @Test + public void shareUrlWithPreviewImageUri() { + Bitmap testBitmap = Bitmap.createBitmap(80, 80, Bitmap.Config.ARGB_8888); + // This testBitmap is unused since preview URI was set. + ShadowShareImageFileUtils.sExpectedWebBitmap = null; + Uri testUri = Uri.parse("content://test.web.favicon.preview.shareUrlWithPreviewImageUri"); + + ShareParams params = + new ShareParams.Builder(mWindow, "title", JUnitTestGURLs.EXAMPLE_URL.getSpec()) + .setBypassFixingDomDistillerUrl(true) + .setPreviewImageBitmap(testBitmap) + .setPreviewImageUri(testUri) + .build(); + ChromeShareExtras chromeShareExtras = new ChromeShareExtras.Builder().build(); + mController.showShareSheet(params, chromeShareExtras, 1L); + + Intent intent = Shadows.shadowOf((Activity) mActivity).peekNextStartedActivity(); + Assert.assertNotNull("Preview clip data should not be null.", intent.getClipData()); + Assert.assertEquals( + "Image preview Uri is null.", testUri, intent.getClipData().getItemAt(0).getUri()); + } + + @Test public void shareTextWithPreviewFavicon() { HistogramWatcher watcher = HistogramWatcher.newSingleRecordWatcher("Sharing.PreparePreviewFaviconDuration");
diff --git a/chrome/browser/sync/test/integration/single_client_saved_tab_groups_sync_test.cc b/chrome/browser/sync/test/integration/single_client_saved_tab_groups_sync_test.cc index 2383951cc..dc131c7d29 100644 --- a/chrome/browser/sync/test/integration/single_client_saved_tab_groups_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_saved_tab_groups_sync_test.cc
@@ -47,25 +47,15 @@ return pb_specific; } -class SingleClientSavedTabGroupsSyncTest - : public SyncTest, - public ::testing::WithParamInterface<bool> { +class SingleClientSavedTabGroupsSyncTest : public SyncTest { public: - SingleClientSavedTabGroupsSyncTest() : SyncTest(SINGLE_CLIENT) { - if (IsV2UIEnabled()) { - features_.InitWithFeatures({tab_groups::kTabGroupsSaveUIUpdate}, {}); - } else { - features_.InitWithFeatures({}, {tab_groups::kTabGroupsSaveUIUpdate}); - } - } + SingleClientSavedTabGroupsSyncTest() : SyncTest(SINGLE_CLIENT) {} ~SingleClientSavedTabGroupsSyncTest() override = default; SingleClientSavedTabGroupsSyncTest( const SingleClientSavedTabGroupsSyncTest&) = delete; SingleClientSavedTabGroupsSyncTest& operator=( const SingleClientSavedTabGroupsSyncTest&) = delete; - bool IsV2UIEnabled() const { return GetParam(); } - void AddDataToFakeServer(const sync_pb::SavedTabGroupSpecifics& specifics) { sync_pb::EntitySpecifics group_entity_specifics; sync_pb::SavedTabGroupSpecifics* group_specifics = @@ -137,7 +127,7 @@ }; // Save a group with two tabs and validate they are added to the model. -IN_PROC_BROWSER_TEST_P(SingleClientSavedTabGroupsSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientSavedTabGroupsSyncTest, DownloadsGroupAndTabs) { SavedTabGroup group1(u"Group 1", tab_groups::TabGroupColorId::kGrey, {}, /*position=*/0); @@ -172,7 +162,7 @@ } // Save a group with no tabs and validate it is added to the model. -IN_PROC_BROWSER_TEST_P(SingleClientSavedTabGroupsSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientSavedTabGroupsSyncTest, DownloadsGroupWithNoTabs) { SavedTabGroup group1(u"Group 1", tab_groups::TabGroupColorId::kGrey, {}, /*position=*/0); @@ -204,7 +194,7 @@ } // Save a tab with no group and validate it is added to the model. -IN_PROC_BROWSER_TEST_P(SingleClientSavedTabGroupsSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientSavedTabGroupsSyncTest, DownloadsTabWithNoGroup) { SavedTabGroup group1(u"Group 1", tab_groups::TabGroupColorId::kGrey, {}, /*position=*/0); @@ -235,7 +225,7 @@ } // Add a tab to an existing group. -IN_PROC_BROWSER_TEST_P(SingleClientSavedTabGroupsSyncTest, AddToExistingGroup) { +IN_PROC_BROWSER_TEST_F(SingleClientSavedTabGroupsSyncTest, AddToExistingGroup) { SavedTabGroup group1(u"Group 1", tab_groups::TabGroupColorId::kGrey, {}, /*position=*/0); SavedTabGroupTab tab1(GURL("about:blank"), u"about:blank", @@ -277,7 +267,7 @@ } // Remove one tab from a group with two tabs. -IN_PROC_BROWSER_TEST_P(SingleClientSavedTabGroupsSyncTest, RemoveTabFromGroup) { +IN_PROC_BROWSER_TEST_F(SingleClientSavedTabGroupsSyncTest, RemoveTabFromGroup) { SavedTabGroup group1(u"Group 1", tab_groups::TabGroupColorId::kGrey, {}, /*position=*/0); SavedTabGroupTab tab1(GURL("about:blank"), u"about:blank", @@ -319,7 +309,7 @@ } // Remove a saved group from the model. -IN_PROC_BROWSER_TEST_P(SingleClientSavedTabGroupsSyncTest, RemoveGroup) { +IN_PROC_BROWSER_TEST_F(SingleClientSavedTabGroupsSyncTest, RemoveGroup) { SavedTabGroup group1(u"Group 1", tab_groups::TabGroupColorId::kGrey, {}, /*position=*/0); SavedTabGroupTab tab1(GURL("about:blank"), u"about:blank", @@ -371,7 +361,7 @@ } // Update the metadata of a saved group already in the model. -IN_PROC_BROWSER_TEST_P(SingleClientSavedTabGroupsSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientSavedTabGroupsSyncTest, UpdateGroupMetadata) { SavedTabGroup group1(u"Group 1", tab_groups::TabGroupColorId::kGrey, /*urls=*/{}, @@ -406,7 +396,7 @@ } // Update the URL and title of a saved tab already in the model. -IN_PROC_BROWSER_TEST_P(SingleClientSavedTabGroupsSyncTest, UpdatedTabData) { +IN_PROC_BROWSER_TEST_F(SingleClientSavedTabGroupsSyncTest, UpdatedTabData) { SavedTabGroup group1(u"Group 1", tab_groups::TabGroupColorId::kGrey, /*urls=*/{}, /*position=*/0); @@ -441,7 +431,7 @@ } // Reorder groups already saved in the model. -IN_PROC_BROWSER_TEST_P(SingleClientSavedTabGroupsSyncTest, ReorderGroups) { +IN_PROC_BROWSER_TEST_F(SingleClientSavedTabGroupsSyncTest, ReorderGroups) { SavedTabGroup group1(u"Group 1", tab_groups::TabGroupColorId::kGrey, /*urls=*/{}, /*position=*/0); @@ -486,7 +476,7 @@ } // Reorder tabs in a group. -IN_PROC_BROWSER_TEST_P(SingleClientSavedTabGroupsSyncTest, ReorderTabs) { +IN_PROC_BROWSER_TEST_F(SingleClientSavedTabGroupsSyncTest, ReorderTabs) { SavedTabGroup group1(u"Group 1", tab_groups::TabGroupColorId::kGrey, {}, 0); SavedTabGroupTab tab1(GURL("about:blank"), u"about:blank", group1.saved_guid(), /*position=*/0); @@ -528,48 +518,8 @@ .Wait()); } -IN_PROC_BROWSER_TEST_P(SingleClientSavedTabGroupsSyncTest, - V1BrowserWithV2Proto) { - if (IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V2"; - } - - auto guid1 = base::Uuid::GenerateRandomV4(); - AddDataToFakeServer(CreateSavedTabGroupSpecific(guid1, /*ui_v2=*/true, 0)); - SavedTabGroupTab tab1(GURL("about:blank"), u"about:blank", guid1, - /*position=*/0); - AddTabToFakeServer(tab1); - - ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; - TabGroupSyncService* service = GetService(); - - // Verify guid1 is added to the model. - ASSERT_TRUE(tab_groups::SavedTabOrGroupExistsChecker(service, guid1).Wait()); - - // Verify guid1 has position even the position in the proto is - // not set. - EXPECT_EQ(0, service->GetGroup(guid1)->position()); - - auto guid2 = base::Uuid::GenerateRandomV4(); - AddDataToFakeServer(CreateSavedTabGroupSpecific(guid2, /*ui_v2=*/true, 1)); - SavedTabGroupTab tab2(GURL("about:blank"), u"about:blank", guid2, - /*position=*/0); - AddTabToFakeServer(tab2); - - // Verify guid2 is added to the model. - ASSERT_TRUE(tab_groups::SavedTabOrGroupExistsChecker(service, guid2).Wait()); - - // Verify guid2 has position even the position in the proto is - // not set. - EXPECT_EQ(0, service->GetGroup(guid2)->position()); -} - -IN_PROC_BROWSER_TEST_P(SingleClientSavedTabGroupsSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientSavedTabGroupsSyncTest, V2BrowserWithV1Proto) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - auto guid1 = base::Uuid::GenerateRandomV4(); AddDataToFakeServer(CreateSavedTabGroupSpecific(guid1, /*ui_v2=*/false, 0)); SavedTabGroupTab tab1(GURL("about:blank"), u"about:blank", guid1, @@ -598,10 +548,6 @@ EXPECT_EQ(std::nullopt, service->GetGroup(guid2)->position()); } -INSTANTIATE_TEST_SUITE_P(SavedTabGroup, - SingleClientSavedTabGroupsSyncTest, - testing::Bool()); - // On ChromeOS, Sync-the-feature gets started automatically once a primary // account is signed in and the transport mode is not a thing. #if !BUILDFLAG(IS_CHROMEOS_ASH) @@ -622,7 +568,7 @@ // Save a group with two tabs and validate they are added to the model for a // user that signs in without turning sync-the-feature on. It also verifies that // the downloaded data goes away upon signout. -IN_PROC_BROWSER_TEST_P(SingleClientSavedTabGroupsSyncTestWithTransportMode, +IN_PROC_BROWSER_TEST_F(SingleClientSavedTabGroupsSyncTestWithTransportMode, DownloadsGroupAndTabsInTransportMode) { SavedTabGroup group1(u"Group 1", tab_groups::TabGroupColorId::kGrey, {}, /*position=*/0); @@ -690,10 +636,6 @@ .Wait()); } -INSTANTIATE_TEST_SUITE_P(SavedTabGroup, - SingleClientSavedTabGroupsSyncTestWithTransportMode, - testing::Bool()); - #endif // !BUILDFLAG(IS_CHROMEOS_ASH) } // namespace
diff --git a/chrome/browser/sync/test/integration/single_client_shared_tab_group_data_sync_test.cc b/chrome/browser/sync/test/integration/single_client_shared_tab_group_data_sync_test.cc index d5e7a62..64f991e 100644 --- a/chrome/browser/sync/test/integration/single_client_shared_tab_group_data_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_shared_tab_group_data_sync_test.cc
@@ -99,7 +99,7 @@ SingleClientSharedTabGroupDataSyncTest() : SyncTest(SINGLE_CLIENT) { feature_overrides_.InitWithFeatures( {data_sharing::features::kDataSharingFeature, - tab_groups::kTabGroupsSaveUIUpdate, tab_groups::kTabGroupsSaveV2, + tab_groups::kTabGroupsSaveV2, tab_groups::kTabGroupSyncServiceDesktopMigration}, {}); }
diff --git a/chrome/browser/sync/test/integration/two_client_shared_tab_group_data_sync_test.cc b/chrome/browser/sync/test/integration/two_client_shared_tab_group_data_sync_test.cc index 8f174840..ba105a4 100644 --- a/chrome/browser/sync/test/integration/two_client_shared_tab_group_data_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_shared_tab_group_data_sync_test.cc
@@ -33,7 +33,7 @@ TwoClientSharedTabGroupDataSyncTest() : SyncTest(TWO_CLIENT) { feature_overrides_.InitWithFeatures( {data_sharing::features::kDataSharingFeature, - tab_groups::kTabGroupsSaveUIUpdate, tab_groups::kTabGroupsSaveV2, + tab_groups::kTabGroupsSaveV2, tab_groups::kTabGroupSyncServiceDesktopMigration}, {}); }
diff --git a/chrome/browser/sync/test/integration/two_client_web_apps_integration_test_cros.cc b/chrome/browser/sync/test/integration/two_client_web_apps_integration_test_cros.cc index 17f28324..355d6fb5 100644 --- a/chrome/browser/sync/test/integration/two_client_web_apps_integration_test_cros.cc +++ b/chrome/browser/sync/test/integration/two_client_web_apps_integration_test_cros.cc
@@ -63,51 +63,6 @@ IN_PROC_BROWSER_TEST_F( WebAppIntegration, - WAI_29StandaloneWindowed_79StandaloneStandaloneOriginal_24_12Standalone_7Standalone_112StandaloneNotShown_40Client2_7Standalone_12Standalone_10Standalone_15Standalone_40Client1_15Standalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.SwitchProfileClients(ProfileClient::kClient2); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.UninstallFromList(Site::kStandalone); - helper_.CheckAppNotInList(Site::kStandalone); - helper_.SwitchProfileClients(ProfileClient::kClient1); - helper_.CheckAppNotInList(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_29StandaloneWindowed_79StandaloneStandaloneOriginal_24_12Standalone_7Standalone_112StandaloneNotShown_40Client2_7Standalone_12Standalone_37Standalone_17_20) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.SwitchProfileClients(ProfileClient::kClient2); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.NavigateBrowser(Site::kStandalone); - helper_.CheckInstallIconNotShown(); - helper_.CheckLaunchIconShown(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, WAI_29StandaloneBrowser_79StandaloneStandaloneOriginal_11Standalone_7Standalone_40Client2_7Standalone_11Standalone_34Standalone_22One_163Standalone) { // Test contents are generated by script. Please do not modify! // See `docs/webapps/why-is-this-test-failing.md` or @@ -171,30 +126,6 @@ IN_PROC_BROWSER_TEST_F( WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_SwitchProfileClientsClient2_SyncTurnOff_SyncTurnOn) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.SwitchProfileClients(ProfileClient::kClient2); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.SyncTurnOff(); - helper_.CheckAppNotInList(Site::kStandalone); - helper_.SyncTurnOn(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, WAI_CreateShortcutStandaloneBrowser_SwitchProfileClientsClient2_SyncTurnOff_SyncTurnOn) { // Test contents are generated by script. Please do not modify! // See `docs/webapps/why-is-this-test-failing.md` or @@ -311,5 +242,74 @@ helper_.CheckAppNotInList(Site::kStandalone); } +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_SwitchProfileClientsClient2_UninstallFromListStandalone_SwitchProfileClientsClient1) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchProfileClients(ProfileClient::kClient2); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.UninstallFromList(Site::kStandalone); + helper_.CheckAppNotInList(Site::kStandalone); + helper_.SwitchProfileClients(ProfileClient::kClient1); + helper_.CheckAppNotInList(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_SwitchProfileClientsClient2_NavigateBrowserStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchProfileClients(ProfileClient::kClient2); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.NavigateBrowser(Site::kStandalone); + helper_.CheckInstallIconNotShown(); + helper_.CheckLaunchIconShown(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_SwitchProfileClientsClient2_SyncTurnOff_SyncTurnOn) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchProfileClients(ProfileClient::kClient2); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.SyncTurnOff(); + helper_.CheckAppNotInList(Site::kStandalone); + helper_.SyncTurnOn(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); +} + } // namespace } // namespace web_app::integration_tests
diff --git a/chrome/browser/sync/test/integration/two_client_web_apps_integration_test_mac.cc b/chrome/browser/sync/test/integration/two_client_web_apps_integration_test_mac.cc index 949387d3..354564e 100644 --- a/chrome/browser/sync/test/integration/two_client_web_apps_integration_test_mac.cc +++ b/chrome/browser/sync/test/integration/two_client_web_apps_integration_test_mac.cc
@@ -42,27 +42,6 @@ IN_PROC_BROWSER_TEST_F( WebAppIntegration, - WAI_31Standalone_79StandaloneStandaloneOriginal_24_12Standalone_7Standalone_112StandaloneNotShown_28_40Client2_46Standalone_1Standalone_24) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.InstallOmniboxIcon(InstallableSite::kStandalone); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.ClosePwa(); - helper_.SwitchProfileClients(ProfileClient::kClient2); - helper_.InstallLocally(Site::kStandalone); - helper_.LaunchFromPlatformShortcut(Site::kStandalone); - helper_.CheckWindowCreated(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, WAI_InstallMenuStandalone_SwitchProfileClientsClient2_InstallLocallyStandalone_LaunchFromPlatformShortcutStandalone) { // Test contents are generated by script. Please do not modify! // See `docs/webapps/why-is-this-test-failing.md` or @@ -105,5 +84,28 @@ helper_.CheckWindowCreated(); } +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_InstallOmniboxIconStandalone_ClosePwa_SwitchProfileClientsClient2_InstallLocallyStandalone_LaunchFromPlatformShortcutStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ClosePwa(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.SwitchProfileClients(ProfileClient::kClient2); + helper_.InstallLocally(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckWindowCreated(); +} + } // namespace } // namespace web_app::integration_tests
diff --git a/chrome/browser/sync/test/integration/two_client_web_apps_integration_test_mac_win_linux.cc b/chrome/browser/sync/test/integration/two_client_web_apps_integration_test_mac_win_linux.cc index 50f88e8..6f00edbf 100644 --- a/chrome/browser/sync/test/integration/two_client_web_apps_integration_test_mac_win_linux.cc +++ b/chrome/browser/sync/test/integration/two_client_web_apps_integration_test_mac_win_linux.cc
@@ -358,27 +358,6 @@ IN_PROC_BROWSER_TEST_F( WebAppIntegration, - WAI_InstallOmniboxIconStandalone_SwitchProfileClientsClient2_LaunchFromChromeAppsStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.InstallOmniboxIcon(InstallableSite::kStandalone); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.SwitchProfileClients(ProfileClient::kClient2); - helper_.CheckAppInListNotLocallyInstalled(Site::kStandalone); - helper_.LaunchFromChromeApps(Site::kStandalone); - helper_.CheckTabNotCreated(); - helper_.CheckSiteLoadedInTab(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, WAI_InstallMenuStandalone_SwitchProfileClientsClient2_SwitchProfileClientsClient1_SyncTurnOff_UninstallFromListStandalone_SwitchProfileClientsClient2) { // Test contents are generated by script. Please do not modify! // See `docs/webapps/why-is-this-test-failing.md` or @@ -564,27 +543,6 @@ IN_PROC_BROWSER_TEST_F( WebAppIntegration, - WAI_InstallMenuStandalone_SwitchProfileClientsClient2_LaunchFromChromeAppsStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.InstallMenuOption(Site::kStandalone); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.SwitchProfileClients(ProfileClient::kClient2); - helper_.CheckAppInListNotLocallyInstalled(Site::kStandalone); - helper_.LaunchFromChromeApps(Site::kStandalone); - helper_.CheckTabNotCreated(); - helper_.CheckSiteLoadedInTab(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, WAI_InstallMenuStandalone_SwitchProfileClientsClient2_UninstallFromListStandalone_SwitchProfileClientsClient1) { // Test contents are generated by script. Please do not modify! // See `docs/webapps/why-is-this-test-failing.md` or @@ -757,5 +715,47 @@ helper_.CheckAppNotInList(Site::kStandalone); } +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_InstallOmniboxIconStandalone_SwitchProfileClientsClient2_LaunchFromChromeAppsStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchProfileClients(ProfileClient::kClient2); + helper_.CheckAppInListNotLocallyInstalled(Site::kStandalone); + helper_.LaunchFromChromeApps(Site::kStandalone); + helper_.CheckTabNotCreated(); + helper_.CheckSiteLoadedInTab(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_InstallMenuStandalone_SwitchProfileClientsClient2_LaunchFromChromeAppsStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.InstallMenuOption(Site::kStandalone); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchProfileClients(ProfileClient::kClient2); + helper_.CheckAppInListNotLocallyInstalled(Site::kStandalone); + helper_.LaunchFromChromeApps(Site::kStandalone); + helper_.CheckTabNotCreated(); + helper_.CheckSiteLoadedInTab(Site::kStandalone); +} + } // namespace } // namespace web_app::integration_tests
diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml b/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml index 8737a8e..c16bbdc 100644 --- a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml +++ b/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml
@@ -23,7 +23,7 @@ android:visibility="gone" app:menuVerticalOverlapAnchor="false" app:menuMaxWidth="@dimen/home_button_list_menu_width" - app:menuPositionedAtEnd="false" + app:menuPositionedAtStart="true" app:tint="@color/default_icon_color_tint_list" /> <org.chromium.chrome.browser.omnibox.LocationBarPhone
diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xml b/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xml index 1056313..881c37a 100644 --- a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xml +++ b/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xml
@@ -32,7 +32,7 @@ android:contentDescription="@string/accessibility_toolbar_btn_home" android:visibility="gone" app:menuMaxWidth="@dimen/home_button_list_menu_width" - app:menuPositionedAtEnd="false" + app:menuPositionedAtStart="true" app:menuVerticalOverlapAnchor="false" app:tint="@color/default_icon_color_tint_list" />
diff --git a/chrome/browser/ui/ash/assistant/assistant_browser_delegate_impl.cc b/chrome/browser/ui/ash/assistant/assistant_browser_delegate_impl.cc index d6773778..42b414f 100644 --- a/chrome/browser/ui/ash/assistant/assistant_browser_delegate_impl.cc +++ b/chrome/browser/ui/ash/assistant/assistant_browser_delegate_impl.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/ui/ash/assistant/assistant_browser_delegate_impl.h" +#include <string> #include <utility> #include "ash/constants/ash_features.h" @@ -14,7 +15,12 @@ #include "ash/public/cpp/new_window_delegate.h" #include "base/check_is_test.h" #include "base/command_line.h" +#include "base/containers/fixed_flat_set.h" +#include "base/functional/bind.h" +#include "base/location.h" #include "base/strings/string_util.h" +#include "base/types/expected.h" +#include "base/types/expected_macros.h" #include "chrome/browser/apps/app_service/app_launch_params.h" #include "chrome/browser/apps/app_service/app_service_proxy_ash.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" @@ -22,16 +28,19 @@ #include "chrome/browser/ash/crosapi/browser_util.h" #include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/lifetime/termination_notification.h" +#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/signin/identity_manager_factory.h" #include "chrome/browser/ui/ash/assistant/assistant_setup.h" #include "chrome/browser/ui/ash/assistant/device_actions_delegate_impl.h" #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/views/frame/browser_view.h" +#include "chrome/browser/web_applications/web_app.h" #include "chrome/browser/web_applications/web_app_helpers.h" #include "chrome/browser/web_applications/web_app_provider.h" #include "chrome/browser/web_applications/web_app_registrar.h" #include "chrome/common/webui_url_constants.h" +#include "chromeos/ash/services/assistant/public/cpp/assistant_browser_delegate.h" #include "chromeos/ash/services/assistant/public/cpp/assistant_service.h" #include "chromeos/ash/services/assistant/public/cpp/features.h" #include "chromeos/ash/services/assistant/public/mojom/assistant_audio_decoder.mojom.h" @@ -51,6 +60,18 @@ #include "chromeos/ash/services/libassistant/public/mojom/service.mojom.h" #endif // BUILDFLAG(ENABLE_CROS_LIBASSISTANT) +namespace { + +Profile* GetActiveUserProfile() { + user_manager::User* active_user = + user_manager::UserManager::Get()->GetActiveUser(); + CHECK(active_user); + + return ash::ProfileHelper::Get()->GetProfileByUser(active_user); +} + +} // namespace + AssistantBrowserDelegateImpl::AssistantBrowserDelegateImpl() { auto* session_manager = session_manager::SessionManager::Get(); // AssistantBrowserDelegateImpl must be created before any user session is @@ -116,6 +137,39 @@ ash::assistant::AssistantService::Get()->Shutdown(); } +void AssistantBrowserDelegateImpl::InitializeNewEntryPointFor( + Profile* profile) { + CHECK(profile); + + web_app::WebAppProvider* provider = + web_app::WebAppProvider::GetForWebApps(profile); + if (!provider) { + // `WebAppProvider` is not available if `GetBrowserContextForWebApps` in + // `web_app_utils.cc` returns nullptr, e.g., guest session. This is + // non-recoverable, i.e., no need to wait and/or re-try. + return; + } + + if (profile_for_new_entry_point_) { + CHECK_EQ(profile_for_new_entry_point_, profile) + << "profile_for_new_entry_point_ is already initialized with a " + "different profile. There should be only a single primary profile."; + return; + } + + // Profile is set only if `WebAppProvider` is available for the profile. + profile_for_new_entry_point_ = profile; + + // Assistant new entry point is loaded to `WebAppProvider` as an async + // operation. We have to wait for the async load before checking if Assistant + // new entry point is installed on a device/profile. + provider->on_external_managers_synchronized().Post( + FROM_HERE, + base::BindOnce( + &AssistantBrowserDelegateImpl::OnExternalManagersSynchronized, + weak_ptr_factory_.GetWeakPtr())); +} + void AssistantBrowserDelegateImpl::OnAssistantStatusChanged( ash::assistant::AssistantStatus new_status) { ash::AssistantState::Get()->NotifyStatusChanged(new_status); @@ -182,49 +236,91 @@ ash::NewWindowDelegate::Disposition::kNewForegroundTab); } +base::expected<const web_app::WebApp*, + ash::assistant::AssistantBrowserDelegate::Error> +AssistantBrowserDelegateImpl::ResolveNewEntryPointIfEligible() { + if (!profile_for_new_entry_point_) { + return base::unexpected( + ash::assistant::AssistantBrowserDelegate::Error::kProfileNotReady); + } + + if (!on_is_new_entry_point_eligible_ready_.is_signaled()) { + return base::unexpected(ash::assistant::AssistantBrowserDelegate::Error:: + kWebAppProviderNotReadyToRead); + } + + if (!ash::assistant::features::IsNewEntryPointEnabled()) { + return base::unexpected(ash::assistant::AssistantBrowserDelegate::Error:: + kNewEntryPointNotEnabled); + } + + web_app::WebAppProvider* provider = + web_app::WebAppProvider::GetForWebApps(profile_for_new_entry_point_); + CHECK(provider) << "WebAppProvider must be available if " + "on_is_new_entry_point_eligible_ready_ is signaled"; + + std::string app_id = entry_point_id_for_testing_.empty() + ? chromeos::assistant::kEntryPointId + : entry_point_id_for_testing_; + const web_app::WebApp* web_app = + provider->registrar_unsafe().GetAppById(app_id); + if (!web_app) { + return base::unexpected(ash::assistant::AssistantBrowserDelegate::Error:: + kNewEntryPointNotFound); + } + + return web_app; +} + +void AssistantBrowserDelegateImpl::OnExternalManagersSynchronized() { + on_is_new_entry_point_eligible_ready_.Signal(); +} + +base::expected<bool, ash::assistant::AssistantBrowserDelegate::Error> +AssistantBrowserDelegateImpl::IsNewEntryPointEligibleForPrimaryProfile() { + // TODO(crbug.com/382561528): add metrics for has_value and error. + base::expected<const web_app::WebApp*, + ash::assistant::AssistantBrowserDelegate::Error> + maybe_web_app = ResolveNewEntryPointIfEligible(); + if (maybe_web_app.has_value()) { + return true; + } + + auto non_transient_error = + base::MakeFixedFlatSet<ash::assistant::AssistantBrowserDelegate::Error>( + {ash::assistant::AssistantBrowserDelegate::Error:: + kNewEntryPointNotEnabled, + ash::assistant::AssistantBrowserDelegate::Error:: + kNewEntryPointNotFound}); + if (non_transient_error.contains(maybe_web_app.error())) { + return false; + } + + return base::unexpected(maybe_web_app.error()); +} + void AssistantBrowserDelegateImpl::OpenNewEntryPoint() { - if (!user_manager::UserManager::Get()->IsUserLoggedIn()) { - return; - } - - auto entry_point_id = entry_point_id_for_testing_.empty() - ? chromeos::assistant::kEntryPointId - : entry_point_id_for_testing_; - - // Get the current active user profile. This is different from `profile_` - // which is only initialized when Assistant is allowed. - user_manager::User* active_user = - user_manager::UserManager::Get()->GetActiveUser(); - CHECK(active_user); - - auto* profile = ash::ProfileHelper::Get()->GetProfileByUser(active_user); - - auto* provider = web_app::WebAppProvider::GetForWebApps(profile); - if (!provider) { - return; - } - auto* app = provider->registrar_unsafe().GetAppById(entry_point_id); - if (!app) { - return; - } + ASSIGN_OR_RETURN(const web_app::WebApp* web_app, + ResolveNewEntryPointIfEligible(), [](auto) {}); + CHECK(profile_for_new_entry_point_); // Check if the app is already running. If it is, bring the window to front. for (Browser* browser : BrowserList::GetInstance()->OrderedByActivation()) { if ((browser->is_type_app() || browser->is_type_app_popup()) && - entry_point_id == + web_app->app_id() == web_app::GetAppIdFromApplicationName(browser->app_name()) && - profile == browser->profile()) { + profile_for_new_entry_point_ == browser->profile()) { browser->window()->Show(); return; } } - apps::AppServiceProxyFactory::GetForProfile(profile)->LaunchAppWithParams( - apps::AppLaunchParams(entry_point_id, - apps::LaunchContainer::kLaunchContainerWindow, - WindowOpenDisposition::NEW_WINDOW, - // TODO(xiaohuic): maybe add new source - apps::LaunchSource::kUnknown)); + apps::AppServiceProxyFactory::GetForProfile(profile_for_new_entry_point_) + ->LaunchAppWithParams(apps::AppLaunchParams( + web_app->app_id(), apps::LaunchContainer::kLaunchContainerWindow, + WindowOpenDisposition::NEW_WINDOW, + // TODO(xiaohuic): maybe add new source + apps::LaunchSource::kUnknown)); } #if BUILDFLAG(ENABLE_CROS_LIBASSISTANT) @@ -263,6 +359,10 @@ } void AssistantBrowserDelegateImpl::OnUserSessionStarted(bool is_primary_user) { + if (is_primary_user) { + InitializeNewEntryPointFor(GetActiveUserProfile()); + } + if (ash::features::IsOobeSkipAssistantEnabled()) { return; }
diff --git a/chrome/browser/ui/ash/assistant/assistant_browser_delegate_impl.h b/chrome/browser/ui/ash/assistant/assistant_browser_delegate_impl.h index d44f116..df1a9fa 100644 --- a/chrome/browser/ui/ash/assistant/assistant_browser_delegate_impl.h +++ b/chrome/browser/ui/ash/assistant/assistant_browser_delegate_impl.h
@@ -12,7 +12,9 @@ #include "base/callback_list.h" #include "base/memory/raw_ptr.h" #include "base/scoped_observation.h" +#include "base/types/expected.h" #include "chrome/browser/ui/ash/assistant/device_actions.h" +#include "chrome/browser/web_applications/web_app.h" #include "chromeos/ash/components/assistant/buildflags.h" #include "chromeos/ash/services/assistant/public/cpp/assistant_browser_delegate.h" #include "chromeos/ash/services/assistant/service.h" @@ -66,6 +68,8 @@ mojo::PendingReceiver<chromeos::network_config::mojom::CrosNetworkConfig> receiver) override; void OpenUrl(GURL url) override; + base::expected<bool, AssistantBrowserDelegate::Error> + IsNewEntryPointEligibleForPrimaryProfile() override; void OpenNewEntryPoint() override; #if BUILDFLAG(ENABLE_CROS_LIBASSISTANT) void RequestLibassistantService( @@ -76,6 +80,14 @@ void OverrideEntryPointIdForTesting(const std::string& test_entry_point_id); private: + // Resolves new entry point if a device or a profile is eligible. Note that + // it's guaranteed that the value is non-nullptr if provided. + base::expected<const web_app::WebApp*, + ash::assistant::AssistantBrowserDelegate::Error> + ResolveNewEntryPointIfEligible(); + + void OnExternalManagersSynchronized(); + void MaybeInit(Profile* profile); // signin::IdentityManager::Observer: // Retry to initiate Assistant service when account info has been updated. @@ -96,6 +108,10 @@ // Called when the application is terminating void OnAppTerminating(); + // Initializes new entry point for a passed primary profile. Note that + // Assistant new entry point is eligible only for a primary profile. + void InitializeNewEntryPointFor(Profile* primary_profile); + std::unique_ptr<DeviceActions> device_actions_; std::unique_ptr<ash::assistant::Service> service_; std::unique_ptr<AssistantSetup> assistant_setup_; @@ -108,10 +124,17 @@ raw_ptr<Profile> profile_ = nullptr; raw_ptr<signin::IdentityManager> identity_manager_ = nullptr; + // Stores a profile for Assistant new entry point. Note that + // `AssistantBrowserDelegateImpl::profile_` is only initialized when Assistant + // is allowed. + raw_ptr<Profile> profile_for_new_entry_point_ = nullptr; + std::string entry_point_id_for_testing_; base::ScopedObservation<ash::AssistantStateBase, ash::AssistantStateObserver> assistant_state_observation_{this}; + + base::WeakPtrFactory<AssistantBrowserDelegateImpl> weak_ptr_factory_{this}; }; #endif // CHROME_BROWSER_UI_ASH_ASSISTANT_ASSISTANT_BROWSER_DELEGATE_IMPL_H_
diff --git a/chrome/browser/ui/ash/assistant/assistant_browser_delegate_impl_unittest.cc b/chrome/browser/ui/ash/assistant/assistant_browser_delegate_impl_unittest.cc index 90cde36..cbdcc602 100644 --- a/chrome/browser/ui/ash/assistant/assistant_browser_delegate_impl_unittest.cc +++ b/chrome/browser/ui/ash/assistant/assistant_browser_delegate_impl_unittest.cc
@@ -11,6 +11,7 @@ #include "base/functional/bind.h" #include "base/run_loop.h" +#include "base/test/scoped_feature_list.h" #include "base/test/test_future.h" #include "chrome/browser/ash/login/users/fake_chrome_user_manager.h" #include "chrome/browser/ash/profiles/profile_helper.h" @@ -22,7 +23,10 @@ #include "chrome/browser/web_applications/web_app_helpers.h" #include "chrome/test/base/chrome_ash_test_base.h" #include "chrome/test/base/testing_profile.h" +#include "chromeos/ash/services/assistant/public/cpp/features.h" #include "chromeos/services/assistant/public/shared/constants.h" +#include "components/session_manager/core/session_manager.h" +#include "components/user_manager/fake_user_manager.h" #include "components/user_manager/scoped_user_manager.h" #include "components/user_manager/user_manager.h" #include "services/data_decoder/public/cpp/test_support/in_process_data_decoder.h" @@ -42,6 +46,8 @@ void SetUp() override { ChromeAshTestBase::SetUp(); + delegate_.emplace(); + TestingProfile::Builder profile_builder; profile_ = profile_builder.Build(); auto account_id = AccountId::FromUserEmail(profile_->GetProfileUserName()); @@ -53,11 +59,17 @@ ash::ProfileHelper::Get()->SetUserToProfileMappingForTesting( user, profile_.get()); + session_manager::SessionManager* session_manager = + session_manager::SessionManager::Get(); + session_manager->CreateSession( + account_id, + user_manager::FakeUserManager::GetFakeUsernameHash(account_id), + /*is_child=*/false); + session_manager->SessionStarted(); + web_app::FakeWebAppProvider::Get(profile_.get()) ->SetDatabaseFactory( std::make_unique<web_app::FakeWebAppDatabaseFactory>()); - - delegate_.emplace(); } protected: @@ -72,10 +84,28 @@ fake_provider().GetDatabaseFactory()); } - std::optional<AssistantBrowserDelegateImpl> delegate_; + void InstallNewEntryPointApp() { + const GURL start_url = GURL("https://example.com/path"); + const webapps::AppId app_id = + web_app::GenerateAppId(/*manifest_id_path=*/std::nullopt, start_url); + auto web_app = std::make_unique<web_app::WebApp>(app_id); + web_app->SetStartUrl(start_url); + web_app->SetName("test app"); + web_app->AddSource(web_app::WebAppManagement::kSystem); + web_app->SetDisplayMode(web_app::DisplayMode::kStandalone); + web_app->SetUserDisplayMode(web_app::mojom::UserDisplayMode::kStandalone); + + web_app::Registry registry; + registry[app_id] = std::move(web_app); + database_factory().WriteRegistry(registry); + + delegate_->OverrideEntryPointIdForTesting(app_id); + } + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> fake_user_manager_; std::unique_ptr<TestingProfile> profile_; + std::optional<AssistantBrowserDelegateImpl> delegate_; base::test::TestFuture<apps::AppLaunchParams, web_app::LaunchWebAppWindowSetting> @@ -83,23 +113,10 @@ }; TEST_F(AssistantBrowserDelegateImplTest, NewEntryPointOpensApp) { - // Install the new entry point app. - const GURL start_url = GURL("https://example.com/path"); - const webapps::AppId app_id = - web_app::GenerateAppId(/*manifest_id_path=*/std::nullopt, start_url); - auto web_app = std::make_unique<web_app::WebApp>(app_id); - web_app->SetStartUrl(start_url); - web_app->SetName("test app"); - web_app->AddSource(web_app::WebAppManagement::kSystem); - web_app->SetDisplayMode(web_app::DisplayMode::kStandalone); - web_app->SetUserDisplayMode(web_app::mojom::UserDisplayMode::kStandalone); + base::test::ScopedFeatureList scoped_feature_list( + ash::assistant::features::kEnableNewEntryPoint); - web_app::Registry registry; - registry[app_id] = std::move(web_app); - database_factory().WriteRegistry(registry); - - delegate_->OverrideEntryPointIdForTesting(app_id); - + InstallNewEntryPointApp(); web_app::test::AwaitStartWebAppProviderAndSubsystems(profile()); auto* provider = web_app::WebAppProvider::GetForWebApps(profile()); @@ -114,7 +131,35 @@ << "New entry point should launch, but didn't."; } +TEST_F(AssistantBrowserDelegateImplTest, EligibleToNewEntryPoint) { + base::test::ScopedFeatureList scoped_feature_list( + ash::assistant::features::kEnableNewEntryPoint); + + InstallNewEntryPointApp(); + web_app::test::AwaitStartWebAppProviderAndSubsystems(profile()); + + ASSERT_TRUE( + delegate_->IsNewEntryPointEligibleForPrimaryProfile().has_value()); + EXPECT_TRUE(delegate_->IsNewEntryPointEligibleForPrimaryProfile().value()); +} + +TEST_F(AssistantBrowserDelegateImplTest, NotEligibleBecauseOfFlagOff) { + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitAndDisableFeature( + ash::assistant::features::kEnableNewEntryPoint); + + InstallNewEntryPointApp(); + web_app::test::AwaitStartWebAppProviderAndSubsystems(profile()); + + ASSERT_TRUE( + delegate_->IsNewEntryPointEligibleForPrimaryProfile().has_value()); + EXPECT_FALSE(delegate_->IsNewEntryPointEligibleForPrimaryProfile().value()); +} + TEST_F(AssistantBrowserDelegateImplTest, NewEntryPointDoNotOpenIfNotInstalled) { + base::test::ScopedFeatureList scoped_feature_list( + ash::assistant::features::kEnableNewEntryPoint); + web_app::test::AwaitStartWebAppProviderAndSubsystems(profile()); auto* provider = web_app::WebAppProvider::GetForWebApps(profile()); @@ -131,3 +176,14 @@ ASSERT_FALSE(app_launch_future_.IsReady()) << "New entry point should not launch, but somehow it did."; } + +TEST_F(AssistantBrowserDelegateImplTest, NotEligibleBecauseOfNoEntryPointApp) { + base::test::ScopedFeatureList scoped_feature_list( + ash::assistant::features::kEnableNewEntryPoint); + + web_app::test::AwaitStartWebAppProviderAndSubsystems(profile()); + + EXPECT_TRUE( + delegate_->IsNewEntryPointEligibleForPrimaryProfile().has_value()); + EXPECT_FALSE(delegate_->IsNewEntryPointEligibleForPrimaryProfile().value()); +}
diff --git a/chrome/browser/ui/ash/network/network_state_notifier.cc b/chrome/browser/ui/ash/network/network_state_notifier.cc index 51d7e8c..e7edecb 100644 --- a/chrome/browser/ui/ash/network/network_state_notifier.cc +++ b/chrome/browser/ui/ash/network/network_state_notifier.cc
@@ -30,7 +30,6 @@ #include "ui/chromeos/devicetype_utils.h" #include "ui/chromeos/shill_error.h" #include "ui/chromeos/strings/grit/ui_chromeos_strings.h" -#include "ui/gfx/vector_icon_types.h" #include "ui/message_center/public/cpp/notification.h" namespace ash { @@ -658,8 +657,7 @@ new message_center::HandleNotificationClickDelegate( base::BindRepeating(&NetworkStateNotifier::ShowMobileDataSubpage, weak_ptr_factory_.GetWeakPtr())), - gfx::VectorIcon::EmptyIcon(), - message_center::SystemNotificationWarningLevel::NORMAL); + gfx::kNoneIcon, message_center::SystemNotificationWarningLevel::NORMAL); SystemNotificationHelper::GetInstance()->Display(notification); }
diff --git a/chrome/browser/ui/ash/shelf/shelf_context_menu.cc b/chrome/browser/ui/ash/shelf/shelf_context_menu.cc index e09db91b..6146ea2 100644 --- a/chrome/browser/ui/ash/shelf/shelf_context_menu.cc +++ b/chrome/browser/ui/ash/shelf/shelf_context_menu.cc
@@ -36,7 +36,7 @@ #include "ui/color/color_id.h" #include "ui/display/screen.h" #include "ui/display/types/display_constants.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/vector_icons.h" namespace { @@ -232,7 +232,7 @@ case ash::USE_LAUNCH_TYPE_WINDOW: case ash::USE_LAUNCH_TYPE_TABBED_WINDOW: // Check items use a default icon in touchable and default context menus. - return gfx::VectorIcon::EmptyIcon(); + return gfx::kNoneIcon; case ash::DEPRECATED_USE_LAUNCH_TYPE_PINNED: case ash::DEPRECATED_USE_LAUNCH_TYPE_FULLSCREEN: NOTREACHED(); @@ -249,7 +249,7 @@ return views::kLinuxLowDensityIcon; case ash::SWAP_WITH_NEXT: case ash::SWAP_WITH_PREVIOUS: - return gfx::VectorIcon::EmptyIcon(); + return gfx::kNoneIcon; case ash::LAUNCH_APP_SHORTCUT_FIRST: case ash::LAUNCH_APP_SHORTCUT_LAST: case ash::COMMAND_ID_COUNT:
diff --git a/chrome/browser/ui/ash/wm/tab_cluster_ui_client.cc b/chrome/browser/ui/ash/wm/tab_cluster_ui_client.cc index bb33e3b..e931bee 100644 --- a/chrome/browser/ui/ash/wm/tab_cluster_ui_client.cc +++ b/chrome/browser/ui/ash/wm/tab_cluster_ui_client.cc
@@ -23,7 +23,7 @@ info.source = web_contents->GetVisibleURL().possibly_invalid_spec(); info.browser_window = chrome::FindBrowserWithTab(web_contents)->window()->GetNativeWindow(); - info.is_loading = web_contents->IsLoading(); + info.is_loading = web_contents->ShouldShowLoadingUI(); return info; } @@ -103,7 +103,7 @@ // If there is only loading progress change, we only update item when the // state changes between loading and loaded. if (change_type == TabChangeType::kLoadingOnly && - item->current_info().is_loading == contents->IsLoading()) { + item->current_info().is_loading == contents->ShouldShowLoadingUI()) { return; } item->Init(GenerateTabItemInfo(contents));
diff --git a/chrome/browser/ui/aura/accessibility/automation_manager_aura_browsertest.cc b/chrome/browser/ui/aura/accessibility/automation_manager_aura_browsertest.cc index 7309f0a2..3af64ced 100644 --- a/chrome/browser/ui/aura/accessibility/automation_manager_aura_browsertest.cc +++ b/chrome/browser/ui/aura/accessibility/automation_manager_aura_browsertest.cc
@@ -117,8 +117,8 @@ } bool WasNodeIdFocused(int node_id) { - for (size_t i = 0; i < focused_node_ids_.size(); i++) { - if (node_id == focused_node_ids_[i]) { + for (int focused_node_id : focused_node_ids_) { + if (node_id == focused_node_id) { return true; } } @@ -171,10 +171,10 @@ const ui::AXTreeID& tree_id, const ui::AXScrollChange& details) override {} void DispatchTreeDestroyedEvent(ui::AXTreeID tree_id) override {} - void DispatchActionResult( - const ui::AXActionData& data, - bool result, - content::BrowserContext* browser_context = nullptr) override {} + void DispatchActionResult(const ui::AXActionData& data, + bool result, + content::BrowserContext* browser_context) override { + } void DispatchGetTextLocationDataResult( const ui::AXActionData& data, const std::optional<gfx::Rect>& rect) override {} @@ -235,9 +235,9 @@ tree->SerializeNode(web_hosts[0], &node_data); EXPECT_EQ(ax::mojom::Role::kWebView, node_data.role); } else { - for (size_t i = 0; i < web_hosts.size(); i++) { + for (auto& web_host : web_hosts) { ui::AXNodeData node_data; - tree->SerializeNode(web_hosts[i], &node_data); + tree->SerializeNode(web_host, &node_data); } } }
diff --git a/chrome/browser/ui/autofill/address_bubbles_controller_interactive_uitest.cc b/chrome/browser/ui/autofill/address_bubbles_controller_interactive_uitest.cc index 27f895e..9622bef 100644 --- a/chrome/browser/ui/autofill/address_bubbles_controller_interactive_uitest.cc +++ b/chrome/browser/ui/autofill/address_bubbles_controller_interactive_uitest.cc
@@ -69,7 +69,7 @@ void TriggerBubble() override { autofill_client()->ConfirmSaveAddressProfile( test::GetFullProfile(), nullptr, - /*options=*/{}, + /*is_migration_to_account=*/{}, base::BindOnce(&SaveAddressProfileTest::OnUserDecision, base::Unretained(this))); } @@ -160,7 +160,7 @@ void TriggerBubble() override { autofill_client()->ConfirmSaveAddressProfile( test::GetFullProfile(), &original_profile_, - /*options=*/{}, + /*is_migration_to_account=*/{}, base::BindOnce(&UpdateAddressProfileTest::OnUserDecision, base::Unretained(this))); } @@ -201,7 +201,7 @@ .set_record_type(AutofillProfile::RecordType::kAccount); autofill_client()->ConfirmSaveAddressProfile( test::GetFullProfile(), &original_profile_, - /*options=*/{}, + /*is_migration_to_account=*/{}, base::BindOnce(&UpdateAccountAddressProfileTest::OnUserDecision, base::Unretained(this))); }
diff --git a/chrome/browser/ui/autofill/address_bubbles_controller_unittest.cc b/chrome/browser/ui/autofill/address_bubbles_controller_unittest.cc index 5cf78cb..016b590 100644 --- a/chrome/browser/ui/autofill/address_bubbles_controller_unittest.cc +++ b/chrome/browser/ui/autofill/address_bubbles_controller_unittest.cc
@@ -58,7 +58,7 @@ base::MockCallback<AutofillClient::AddressProfileSavePromptCallback> callback; AddressBubblesController::SetUpAndShowSaveOrUpdateAddressBubble( web_contents(), profile, /*original_profile=*/nullptr, - /*options=*/{}, callback.Get()); + /*is_migration_to_account=*/{}, callback.Get()); EXPECT_CALL(callback, Run(AutofillClient::AddressPromptUserDecision::kAccepted, @@ -72,7 +72,7 @@ base::MockCallback<AutofillClient::AddressProfileSavePromptCallback> callback; AddressBubblesController::SetUpAndShowSaveOrUpdateAddressBubble( web_contents(), profile, /*original_profile=*/nullptr, - /*options=*/{}, callback.Get()); + /*is_migration_to_account=*/{}, callback.Get()); EXPECT_CALL(callback, Run(AutofillClient::AddressPromptUserDecision::kDeclined, @@ -89,7 +89,7 @@ base::MockCallback<AutofillClient::AddressProfileSavePromptCallback> callback; AddressBubblesController::SetUpAndShowSaveOrUpdateAddressBubble( web_contents(), profile, /*original_profile=*/nullptr, - /*options=*/{}, callback.Get()); + /*is_migration_to_account=*/{}, callback.Get()); TabStripModel* tab_strip_model = browser()->tab_strip_model(); // There is only now tab open, so the active web contents, are the @@ -117,7 +117,7 @@ AutofillProfile profile = test::GetFullProfile(); AddressBubblesController::SetUpAndShowSaveOrUpdateAddressBubble( web_contents(), profile, /*original_profile=*/nullptr, - /*options=*/{}, + /*is_migration_to_account=*/{}, /*callback=*/base::DoNothing()); // Bubble is visible and active @@ -134,7 +134,7 @@ AddressBubblesController::SetUpAndShowSaveOrUpdateAddressBubble( web_contents(), profile, /*original_profile=*/nullptr, - /*options=*/{}, + /*is_migration_to_account=*/{}, /*callback=*/base::DoNothing()); // Second prompt should be auto declined. @@ -144,7 +144,7 @@ Property(&profile_ref::has_value, false))); AddressBubblesController::SetUpAndShowSaveOrUpdateAddressBubble( web_contents(), profile, /*original_profile=*/nullptr, - /*options=*/{}, callback.Get()); + /*is_migration_to_account=*/{}, callback.Get()); } // This is testing that when a second prompt comes while another prompt is in @@ -157,7 +157,7 @@ base::MockCallback<AutofillClient::AddressProfileSavePromptCallback> callback; AddressBubblesController::SetUpAndShowSaveOrUpdateAddressBubble( web_contents(), profile, /*original_profile=*/nullptr, - /*options=*/{}, callback.Get()); + /*is_migration_to_account=*/{}, callback.Get()); controller()->OnBubbleClosed(); // When second prompt comes, the first one will be ignored. @@ -165,7 +165,7 @@ Property(&profile_ref::has_value, false))); AddressBubblesController::SetUpAndShowSaveOrUpdateAddressBubble( web_contents(), profile, /*original_profile=*/nullptr, - /*options=*/{}, + /*is_migration_to_account=*/{}, /*callback=*/base::DoNothing()); }
diff --git a/chrome/browser/ui/autofill/autofill_context_menu_manager_browsertest.cc b/chrome/browser/ui/autofill/autofill_context_menu_manager_browsertest.cc index fb58349..c2ef14f 100644 --- a/chrome/browser/ui/autofill/autofill_context_menu_manager_browsertest.cc +++ b/chrome/browser/ui/autofill/autofill_context_menu_manager_browsertest.cc
@@ -538,10 +538,7 @@ UpdateSyncStatus(/*sync_enabled=*/true); autofill_context_menu_manager()->AppendItems(); EXPECT_THAT(menu_model(), - OnlyPasswordsFallbackAdded( - /*has_passwords_saved=*/false, - /*is_password_generation_enabled_for_current_field=*/true, - /*is_passkey_from_another_device_available=*/GetParam())); + OnlyPasswordsFallbackAdded(false, true, GetParam())); } IN_PROC_BROWSER_TEST_P( @@ -550,10 +547,7 @@ UpdateSyncStatus(/*sync_enabled=*/false); autofill_context_menu_manager()->AppendItems(); EXPECT_THAT(menu_model(), - OnlyPasswordsFallbackAdded( - /*has_passwords_saved=*/false, - /*is_password_generation_enabled_for_current_field=*/false, - /*is_passkey_from_another_device_available=*/GetParam())); + OnlyPasswordsFallbackAdded(false, false, GetParam())); } IN_PROC_BROWSER_TEST_P( @@ -583,11 +577,7 @@ blink::mojom::FormControlType::kInputText)); autofill_context_menu_manager()->AppendItems(); - EXPECT_THAT(menu_model(), - OnlyPasswordsFallbackAdded( - /*has_passwords_saved=*/false, - /*is_password_generation_enabled_for_current_field=*/false, - /*is_passkey_from_another_device_available=*/false)); + EXPECT_THAT(menu_model(), OnlyPasswordsFallbackAdded(false, false, false)); } IN_PROC_BROWSER_TEST_P(PasswordManualFallbackTest, @@ -801,11 +791,8 @@ AddPasswordToStore(); autofill_context_menu_manager()->AppendItems(); - EXPECT_THAT(menu_model(), - OnlyPasswordsFallbackAdded( - /*has_passwords_saved=*/has_autofillable_credentials(), - /*is_password_generation_enabled_for_current_field=*/true, - /*is_passkey_from_another_device_available=*/false)); + EXPECT_THAT(menu_model(), OnlyPasswordsFallbackAdded( + has_autofillable_credentials(), true, false)); } IN_PROC_BROWSER_TEST_P( @@ -815,11 +802,8 @@ AddPasswordToStore(); autofill_context_menu_manager()->AppendItems(); - EXPECT_THAT(menu_model(), - OnlyPasswordsFallbackAdded( - /*has_passwords_saved=*/has_autofillable_credentials(), - /*is_password_generation_enabled_for_current_field=*/false, - /*is_passkey_from_another_device_available=*/false)); + EXPECT_THAT(menu_model(), OnlyPasswordsFallbackAdded( + has_autofillable_credentials(), false, false)); } IN_PROC_BROWSER_TEST_P( @@ -835,11 +819,8 @@ blink::mojom::FormControlType::kInputText)); autofill_context_menu_manager()->AppendItems(); - EXPECT_THAT(menu_model(), - OnlyPasswordsFallbackAdded( - /*has_passwords_saved=*/has_autofillable_credentials(), - /*is_password_generation_enabled_for_current_field=*/false, - /*is_passkey_from_another_device_available=*/false)); + EXPECT_THAT(menu_model(), OnlyPasswordsFallbackAdded( + has_autofillable_credentials(), false, false)); } INSTANTIATE_TEST_SUITE_P(
diff --git a/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc b/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc index 7e676e01..ba2a37c9 100644 --- a/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc +++ b/chrome/browser/ui/autofill/autofill_popup_controller_impl.cc
@@ -82,8 +82,7 @@ SuggestionFiltrationResult result; std::u16string filter_lowercased = base::i18n::ToLower(*filter); - for (size_t i = 0; i < suggestions.size(); ++i) { - const Suggestion& suggestion = suggestions[i]; + for (const Suggestion& suggestion : suggestions) { if (suggestion.filtration_policy == Suggestion::FiltrationPolicy::kPresentOnlyWithoutFilter) { continue;
diff --git a/chrome/browser/ui/autofill/chrome_autofill_client_unittest.cc b/chrome/browser/ui/autofill/chrome_autofill_client_unittest.cc index fb9c6b0..ff3bb9f 100644 --- a/chrome/browser/ui/autofill/chrome_autofill_client_unittest.cc +++ b/chrome/browser/ui/autofill/chrome_autofill_client_unittest.cc
@@ -144,7 +144,8 @@ auto save_card_bubble_controller = std::make_unique<MockSaveCardBubbleController>(web_contents()); - web_contents()->SetUserData(save_card_bubble_controller->UserDataKey(), + const auto* user_data_key = save_card_bubble_controller->UserDataKey(); + web_contents()->SetUserData(user_data_key, std::move(save_card_bubble_controller)); #endif } @@ -231,7 +232,7 @@ {AutofillManagerEvent::kFormsSeen}); autofill_driver->renderer_events().FormsSeen(/*updated_forms=*/{form}, /*removed_forms=*/{}); - ASSERT_TRUE(waiter.Wait(/*num_awaiting_calls=*/1)); + ASSERT_TRUE(waiter.Wait(/*num_expected_relevant_events=*/1)); } const auto expected = PasswordFormClassification{ @@ -288,7 +289,7 @@ /*removed_forms=*/{}); child_driver->renderer_events().FormsSeen(/*updated_forms=*/{child_form}, /*removed_forms=*/{}); - ASSERT_TRUE(waiter.Wait(/*num_awaiting_calls=*/2)); + ASSERT_TRUE(waiter.Wait(/*num_expected_relevant_events=*/2)); } // The form fields in the main frame do not form a valid password form.
diff --git a/chrome/browser/ui/autofill/payments/chrome_payments_autofill_client.cc b/chrome/browser/ui/autofill/payments/chrome_payments_autofill_client.cc index 4e0e6f1..e3d3ed4 100644 --- a/chrome/browser/ui/autofill/payments/chrome_payments_autofill_client.cc +++ b/chrome/browser/ui/autofill/payments/chrome_payments_autofill_client.cc
@@ -990,7 +990,7 @@ std::u16string ChromePaymentsAutofillClient::GetAccountHolderName() const { if (!web_contents()) { - return nullptr; + return std::u16string(); } Profile* profile = Profile::FromBrowserContext(web_contents()->GetBrowserContext());
diff --git a/chrome/browser/ui/autofill/payments/chrome_payments_autofill_client_unittest.cc b/chrome/browser/ui/autofill/payments/chrome_payments_autofill_client_unittest.cc index 7c3f3b212..aef05507 100644 --- a/chrome/browser/ui/autofill/payments/chrome_payments_autofill_client_unittest.cc +++ b/chrome/browser/ui/autofill/payments/chrome_payments_autofill_client_unittest.cc
@@ -149,13 +149,15 @@ ChromeAutofillClient::CreateForWebContents(web_contents()); auto mock_virtual_card_bubble_controller = std::make_unique<MockVirtualCardEnrollBubbleController>(web_contents()); - web_contents()->SetUserData( - mock_virtual_card_bubble_controller->UserDataKey(), - std::move(mock_virtual_card_bubble_controller)); + const auto* user_data_key = + mock_virtual_card_bubble_controller->UserDataKey(); + web_contents()->SetUserData(user_data_key, + std::move(mock_virtual_card_bubble_controller)); #if !BUILDFLAG(IS_ANDROID) auto mock_save_card_bubble_controller = std::make_unique<MockSaveCardBubbleController>(web_contents()); - web_contents()->SetUserData(mock_save_card_bubble_controller->UserDataKey(), + user_data_key = mock_save_card_bubble_controller->UserDataKey(); + web_contents()->SetUserData(user_data_key, std::move(mock_save_card_bubble_controller)); #endif }
diff --git a/chrome/browser/ui/autofill/payments/virtual_card_enroll_bubble_controller_impl.h b/chrome/browser/ui/autofill/payments/virtual_card_enroll_bubble_controller_impl.h index 8a8ed37..398af7c 100644 --- a/chrome/browser/ui/autofill/payments/virtual_card_enroll_bubble_controller_impl.h +++ b/chrome/browser/ui/autofill/payments/virtual_card_enroll_bubble_controller_impl.h
@@ -67,7 +67,7 @@ bool IsEnrollmentComplete() const override; #endif - void OnAcceptButton(bool did_switch_to_loading_state = false) override; + void OnAcceptButton(bool did_switch_to_loading_state) override; void OnDeclineButton() override; void OnLinkClicked(VirtualCardEnrollmentLinkType link_type, const GURL& url) override;
diff --git a/chrome/browser/ui/autofill/risk_util.cc b/chrome/browser/ui/autofill/risk_util.cc index 54bace1..abfe45b 100644 --- a/chrome/browser/ui/autofill/risk_util.cc +++ b/chrome/browser/ui/autofill/risk_util.cc
@@ -36,9 +36,7 @@ #include "ui/base/base_window.h" #endif -namespace autofill { - -namespace risk_util { +namespace autofill::risk_util { namespace { @@ -111,6 +109,4 @@ base::BindOnce(PassRiskData, std::move(callback))); } -} // namespace risk_util - -} // namespace autofill +} // namespace autofill::risk_util
diff --git a/chrome/browser/ui/blocked_content/popup_opener_tab_helper_unittest.cc b/chrome/browser/ui/blocked_content/popup_opener_tab_helper_unittest.cc index 50980cb..acf2419e 100644 --- a/chrome/browser/ui/blocked_content/popup_opener_tab_helper_unittest.cc +++ b/chrome/browser/ui/blocked_content/popup_opener_tab_helper_unittest.cc
@@ -50,7 +50,7 @@ class PopupOpenerTabHelperTest : public ChromeRenderViewHostTestHarness { public: - PopupOpenerTabHelperTest() : ChromeRenderViewHostTestHarness() {} + PopupOpenerTabHelperTest() = default; PopupOpenerTabHelperTest(const PopupOpenerTabHelperTest&) = delete; PopupOpenerTabHelperTest& operator=(const PopupOpenerTabHelperTest&) = delete;
diff --git a/chrome/browser/ui/bookmarks/bookmark_context_menu_controller_unittest.cc b/chrome/browser/ui/bookmarks/bookmark_context_menu_controller_unittest.cc index e4f5545..ef8490c 100644 --- a/chrome/browser/ui/bookmarks/bookmark_context_menu_controller_unittest.cc +++ b/chrome/browser/ui/bookmarks/bookmark_context_menu_controller_unittest.cc
@@ -59,9 +59,7 @@ public: BookmarkContextMenuControllerTest() : model_(nullptr) { feature_list_.InitWithFeatures( - {tab_groups::kTabGroupsSaveUIUpdate, - syncer::kSyncEnableBookmarksInTransportMode}, - {}); + {syncer::kSyncEnableBookmarksInTransportMode}, {}); } void SetUp() override {
diff --git a/chrome/browser/ui/bookmarks/bookmark_utils_desktop.cc b/chrome/browser/ui/bookmarks/bookmark_utils_desktop.cc index 1e8f0597..9dd663e 100644 --- a/chrome/browser/ui/bookmarks/bookmark_utils_desktop.cc +++ b/chrome/browser/ui/bookmarks/bookmark_utils_desktop.cc
@@ -171,11 +171,9 @@ initial_disposition == WindowOpenDisposition::OFF_THE_RECORD; } - for (std::vector<UrlAndId>::const_iterator url_and_id_it = - bookmark_urls.begin(); - url_and_id_it != bookmark_urls.end(); ++url_and_id_it) { + for (const auto& bookmark_url : bookmark_urls) { const bool url_allowed_in_incognito = - IsURLAllowedInIncognito(url_and_id_it->url); + IsURLAllowedInIncognito(bookmark_url.url); // Set the browser from which the URL will be opened. If neither // `incognito_browser` nor `regular_browser` is set we use the original @@ -194,7 +192,7 @@ if (browser_to_use) { profile = browser_to_use->profile(); } - NavigateParams params(profile, url_and_id_it->url, + NavigateParams params(profile, bookmark_url.url, ui::PAGE_TRANSITION_AUTO_BOOKMARK); params.disposition = disposition; params.browser = browser_to_use; @@ -216,11 +214,11 @@ ->SetLaunchAction(launch_action.value(), disposition); } - if (url_and_id_it->id != -1) { + if (bookmark_url.id != -1) { ChromeNavigationUIData* ui_data = static_cast<ChromeNavigationUIData*>(handle->GetNavigationUIData()); if (ui_data) { - ui_data->set_bookmark_id(url_and_id_it->id); + ui_data->set_bookmark_id(bookmark_url.id); } }
diff --git a/chrome/browser/ui/bookmarks/recently_used_folders_combo_model_unittest.cc b/chrome/browser/ui/bookmarks/recently_used_folders_combo_model_unittest.cc index fac4248..17d3cc2c 100644 --- a/chrome/browser/ui/bookmarks/recently_used_folders_combo_model_unittest.cc +++ b/chrome/browser/ui/bookmarks/recently_used_folders_combo_model_unittest.cc
@@ -22,7 +22,7 @@ // OnComboboxModelChanged() is invoked. class TestComboboxModelObserver : public ui::ComboboxModelObserver { public: - TestComboboxModelObserver() : changed_(false) {} + TestComboboxModelObserver() = default; TestComboboxModelObserver(const TestComboboxModelObserver&) = delete; TestComboboxModelObserver& operator=(const TestComboboxModelObserver&) = @@ -45,7 +45,7 @@ void OnComboboxModelDestroying(ui::ComboboxModel* model) override {} private: - bool changed_; + bool changed_ = false; }; class RecentlyUsedFoldersComboModelTest : public testing::Test {
diff --git a/chrome/browser/ui/browser_browsertest.cc b/chrome/browser/ui/browser_browsertest.cc index a5f8d67..c04d1f7c 100644 --- a/chrome/browser/ui/browser_browsertest.cc +++ b/chrome/browser/ui/browser_browsertest.cc
@@ -1520,9 +1520,9 @@ Browser::CreateParams(Browser::TYPE_PICTURE_IN_PICTURE, browser()->profile(), true), }); - for (size_t i = 0; i < std::size(params); ++i) { - params[i].initial_show_state = ui::mojom::WindowShowState::kMaximized; - AddBlankTabAndShow(Browser::Create(params[i])); + for (auto& param : params) { + param.initial_show_state = ui::mojom::WindowShowState::kMaximized; + AddBlankTabAndShow(Browser::Create(param)); } } @@ -1546,9 +1546,9 @@ Browser::CreateParams(Browser::TYPE_PICTURE_IN_PICTURE, browser()->profile(), true), }); - for (size_t i = 0; i < std::size(params); ++i) { - params[i].initial_show_state = ui::mojom::WindowShowState::kMinimized; - AddBlankTabAndShow(Browser::Create(params[i])); + for (auto& param : params) { + param.initial_show_state = ui::mojom::WindowShowState::kMinimized; + AddBlankTabAndShow(Browser::Create(param)); } }
diff --git a/chrome/browser/ui/browser_close_unittest.cc b/chrome/browser/ui/browser_close_unittest.cc index 842acd3..5b69de629 100644 --- a/chrome/browser/ui/browser_close_unittest.cc +++ b/chrome/browser/ui/browser_close_unittest.cc
@@ -28,7 +28,7 @@ class TestingDownloadCoreService : public DownloadCoreService { public: - TestingDownloadCoreService() : download_count_(0) {} + TestingDownloadCoreService() = default; TestingDownloadCoreService(const TestingDownloadCoreService&) = delete; TestingDownloadCoreService& operator=(const TestingDownloadCoreService&) = @@ -86,7 +86,7 @@ void Shutdown() override {} private: - int download_count_; + int download_count_ = 0; }; static std::unique_ptr<KeyedService> CreateTestingDownloadCoreService( @@ -96,8 +96,7 @@ class BrowserCloseTest : public testing::Test { public: - BrowserCloseTest() - : profile_manager_(TestingBrowserProcess::GetGlobal()), name_index_(0) { + BrowserCloseTest() : profile_manager_(TestingBrowserProcess::GetGlobal()) { base::CommandLine::ForCurrentProcess()->AppendSwitch(switches::kNoFirstRun); } @@ -202,7 +201,7 @@ content::BrowserTaskEnvironment task_environment_; TestingProfileManager profile_manager_; - int name_index_; + int name_index_ = 0; }; // Last window close (incognito window) will trigger warning.
diff --git a/chrome/browser/ui/browser_command_controller.h b/chrome/browser/ui/browser_command_controller.h index 6933afe4a..9aa837ec 100644 --- a/chrome/browser/ui/browser_command_controller.h +++ b/chrome/browser/ui/browser_command_controller.h
@@ -75,13 +75,12 @@ // Overriden from CommandUpdater: bool SupportsCommand(int id) const override; bool IsCommandEnabled(int id) const override; - bool ExecuteCommand( - int id, - base::TimeTicks time_stamp = base::TimeTicks::Now()) override; - bool ExecuteCommandWithDisposition( - int id, - WindowOpenDisposition disposition, - base::TimeTicks time_stamp = base::TimeTicks::Now()) override; + using CommandUpdater::ExecuteCommand; + bool ExecuteCommand(int id, base::TimeTicks time_stamp) override; + using CommandUpdater::ExecuteCommandWithDisposition; + bool ExecuteCommandWithDisposition(int id, + WindowOpenDisposition disposition, + base::TimeTicks time_stamp) override; void AddCommandObserver(int id, CommandObserver* observer) override; void RemoveCommandObserver(int id, CommandObserver* observer) override; void RemoveCommandObserver(CommandObserver* observer) override;
diff --git a/chrome/browser/ui/browser_command_controller_unittest.cc b/chrome/browser/ui/browser_command_controller_unittest.cc index 20be64b..f35bacb7 100644 --- a/chrome/browser/ui/browser_command_controller_unittest.cc +++ b/chrome/browser/ui/browser_command_controller_unittest.cc
@@ -277,11 +277,9 @@ class FullscreenTestBrowserWindow : public TestBrowserWindow, ExclusiveAccessContext { public: - FullscreenTestBrowserWindow( + explicit FullscreenTestBrowserWindow( BrowserCommandControllerFullscreenTest* test_browser) - : fullscreen_(false), - toolbar_showing_(false), - test_browser_(test_browser) {} + : test_browser_(test_browser) {} FullscreenTestBrowserWindow(const FullscreenTestBrowserWindow&) = delete; FullscreenTestBrowserWindow& operator=(const FullscreenTestBrowserWindow&) = @@ -317,8 +315,8 @@ void set_toolbar_showing(bool showing) { toolbar_showing_ = showing; } private: - bool fullscreen_; - bool toolbar_showing_; + bool fullscreen_ = false; + bool toolbar_showing_ = false; raw_ptr<BrowserCommandControllerFullscreenTest> test_browser_; }; @@ -408,13 +406,13 @@ blink::WebInputEvent::Type::kUndefined, 0, blink::WebInputEvent::GetStaticTimeStampForTests()); // Defaults for a tabbed browser. - for (size_t i = 0; i < std::size(commands); i++) { - SCOPED_TRACE(commands[i].command_id); - EXPECT_EQ(chrome::IsCommandEnabled(browser(), commands[i].command_id), - commands[i].enabled_in_tab); + for (auto& command : commands) { + SCOPED_TRACE(command.command_id); + EXPECT_EQ(chrome::IsCommandEnabled(browser(), command.command_id), + command.enabled_in_tab); EXPECT_EQ(browser()->command_controller()->IsReservedCommandOrKey( - commands[i].command_id, key_event), - commands[i].reserved_in_tab); + command.command_id, key_event), + command.reserved_in_tab); } // Simulate going fullscreen. @@ -425,13 +423,13 @@ // By default, in fullscreen mode, the toolbar should be hidden; and all // platforms behave similarly. EXPECT_FALSE(window()->IsToolbarShowing()); - for (size_t i = 0; i < std::size(commands); i++) { - SCOPED_TRACE(commands[i].command_id); - EXPECT_EQ(chrome::IsCommandEnabled(browser(), commands[i].command_id), - commands[i].enabled_in_fullscreen); + for (auto& command : commands) { + SCOPED_TRACE(command.command_id); + EXPECT_EQ(chrome::IsCommandEnabled(browser(), command.command_id), + command.enabled_in_fullscreen); EXPECT_EQ(browser()->command_controller()->IsReservedCommandOrKey( - commands[i].command_id, key_event), - commands[i].reserved_in_fullscreen); + command.command_id, key_event), + command.reserved_in_fullscreen); } #if BUILDFLAG(IS_MAC) @@ -459,13 +457,13 @@ ASSERT_FALSE(browser()->window()->IsFullscreen()); browser()->command_controller()->FullscreenStateChanged(); - for (size_t i = 0; i < std::size(commands); i++) { - SCOPED_TRACE(commands[i].command_id); - EXPECT_EQ(chrome::IsCommandEnabled(browser(), commands[i].command_id), - commands[i].enabled_in_tab); + for (auto& command : commands) { + SCOPED_TRACE(command.command_id); + EXPECT_EQ(chrome::IsCommandEnabled(browser(), command.command_id), + command.enabled_in_tab); EXPECT_EQ(browser()->command_controller()->IsReservedCommandOrKey( - commands[i].command_id, key_event), - commands[i].reserved_in_tab); + command.command_id, key_event), + command.reserved_in_tab); } // Guest Profiles disallow some options.
diff --git a/chrome/browser/ui/browser_finder.cc b/chrome/browser/ui/browser_finder.cc index 220614c..cc5e5fbd 100644 --- a/chrome/browser/ui/browser_finder.cc +++ b/chrome/browser/ui/browser_finder.cc
@@ -221,9 +221,8 @@ BrowserList* browser_list_impl = BrowserList::GetInstance(); size_t count = 0; if (browser_list_impl) { - for (auto i = browser_list_impl->begin(); i != browser_list_impl->end(); - ++i) { - if (BrowserMatches(*i, profile, Browser::FEATURE_NONE, match_types, + for (const auto& i : *browser_list_impl) { + if (BrowserMatches(i, profile, Browser::FEATURE_NONE, match_types, display_id)) { count++; }
diff --git a/chrome/browser/ui/browser_instant_controller_unittest.cc b/chrome/browser/ui/browser_instant_controller_unittest.cc index 6fc266e..c2980c5 100644 --- a/chrome/browser/ui/browser_instant_controller_unittest.cc +++ b/chrome/browser/ui/browser_instant_controller_unittest.cc
@@ -69,8 +69,7 @@ : WebContentsObserver(contents), contents_(contents), did_start_observer_(contents), - url_(contents->GetURL()), - num_reloads_(0) {} + url_(contents->GetURL()) {} void DidStartNavigation(content::NavigationHandle* navigation) override { if (navigation->GetReloadType() == content::ReloadType::NONE) { @@ -103,7 +102,7 @@ content::DidStartNavigationObserver did_start_observer_; const raw_ref<const GURL> url_; GURL current_url_; - int num_reloads_; + int num_reloads_ = 0; }; TEST_F(BrowserInstantControllerTest, DefaultSearchProviderChanged) {
diff --git a/chrome/browser/ui/browser_list.cc b/chrome/browser/ui/browser_list.cc index 15baaac..28964a41 100644 --- a/chrome/browser/ui/browser_list.cc +++ b/chrome/browser/ui/browser_list.cc
@@ -170,9 +170,8 @@ } } - for (BrowserVector::const_iterator it = browsers_to_close.begin(); - it != browsers_to_close.end(); ++it) { - (*it)->window()->Close(); + for (const auto& it : browsers_to_close) { + it->window()->Close(); } }
diff --git a/chrome/browser/ui/browser_tab_strip_model_delegate_browsertest.cc b/chrome/browser/ui/browser_tab_strip_model_delegate_browsertest.cc index bfd8a9a..3f0defc7e 100644 --- a/chrome/browser/ui/browser_tab_strip_model_delegate_browsertest.cc +++ b/chrome/browser/ui/browser_tab_strip_model_delegate_browsertest.cc
@@ -227,7 +227,6 @@ BrowserTabStripModelDelegateVariantTest() { std::vector<base::test::FeatureRef> saved_tab_group_features = { tab_groups::kTabGroupsSaveV2, - tab_groups::kTabGroupsSaveUIUpdate, }; if (IsSavedTabGroupsV2()) { feature_list_.InitWithFeatures(saved_tab_group_features, {});
diff --git a/chrome/browser/ui/browser_unittest.cc b/chrome/browser/ui/browser_unittest.cc index 3e587308..0a95579 100644 --- a/chrome/browser/ui/browser_unittest.cc +++ b/chrome/browser/ui/browser_unittest.cc
@@ -322,8 +322,7 @@ private: class BookmarkBarStateTestBrowserWindow : public TestBrowserWindow { public: - BookmarkBarStateTestBrowserWindow() - : browser_(nullptr), bookmark_bar_state_(BookmarkBar::HIDDEN) {} + BookmarkBarStateTestBrowserWindow() : browser_(nullptr) {} BookmarkBarStateTestBrowserWindow( const BookmarkBarStateTestBrowserWindow&) = delete; @@ -356,7 +355,7 @@ } raw_ptr<Browser, DanglingUntriaged> browser_; // Weak ptr. - BookmarkBar::State bookmark_bar_state_; + BookmarkBar::State bookmark_bar_state_ = BookmarkBar::HIDDEN; }; };
diff --git a/chrome/browser/ui/browser_window.h b/chrome/browser/ui/browser_window.h index 04680e4..401c83c9 100644 --- a/chrome/browser/ui/browser_window.h +++ b/chrome/browser/ui/browser_window.h
@@ -599,6 +599,12 @@ virtual void CreateTabSearchBubble( tab_search::mojom::TabSearchSection section, tab_search::mojom::TabOrganizationFeature organization_feature) = 0; + void CreateTabSearchBubble(tab_search::mojom::TabSearchSection section = + tab_search::mojom::TabSearchSection::kSearch) { + CreateTabSearchBubble(section, + tab_search::mojom::TabOrganizationFeature::kNone); + } + // Closes the tab search bubble if open for the given browser instance. virtual void CloseTabSearchBubble() = 0;
diff --git a/chrome/browser/ui/browser_window_state_unittest.cc b/chrome/browser/ui/browser_window_state_unittest.cc index c4efcdd..c82f39b 100644 --- a/chrome/browser/ui/browser_window_state_unittest.cc +++ b/chrome/browser/ui/browser_window_state_unittest.cc
@@ -11,9 +11,7 @@ #include "ui/base/ui_base_types.h" #include "ui/gfx/geometry/rect.h" -namespace chrome { - -namespace internal { +namespace chrome::internal { namespace { @@ -86,6 +84,4 @@ EXPECT_EQ(show_state_, ui::mojom::WindowShowState::kNormal); } -} // namespace internal - -} // namespace chrome +} // namespace chrome::internal
diff --git a/chrome/browser/ui/chrome_select_file_policy_unittest.cc b/chrome/browser/ui/chrome_select_file_policy_unittest.cc index f26a8dd..bc409b0 100644 --- a/chrome/browser/ui/chrome_select_file_policy_unittest.cc +++ b/chrome/browser/ui/chrome_select_file_policy_unittest.cc
@@ -31,7 +31,7 @@ class FileSelectionUser : public ui::SelectFileDialog::Listener { public: - FileSelectionUser() : file_selection_initialisation_in_progress(false) {} + FileSelectionUser() = default; ~FileSelectionUser() override { if (select_file_dialog_.get()) { @@ -69,7 +69,7 @@ private: scoped_refptr<ui::SelectFileDialog> select_file_dialog_; - bool file_selection_initialisation_in_progress; + bool file_selection_initialisation_in_progress = false; }; } // namespace
diff --git a/chrome/browser/ui/commerce/product_specifications_entry_point_controller.cc b/chrome/browser/ui/commerce/product_specifications_entry_point_controller.cc index bc254ce..4865d8f 100644 --- a/chrome/browser/ui/commerce/product_specifications_entry_point_controller.cc +++ b/chrome/browser/ui/commerce/product_specifications_entry_point_controller.cc
@@ -437,7 +437,7 @@ "Commerce.Compare.CandidateClusterSizeWhenShown", entry_point_info->similar_candidate_products.size()); for (auto& observer : observers_) { - observer.ShowEntryPointWithTitle(std::move(title)); + observer.ShowEntryPointWithTitle(title); } }
diff --git a/chrome/browser/ui/commerce/product_specifications_page_action_controller_unittest.cc b/chrome/browser/ui/commerce/product_specifications_page_action_controller_unittest.cc index 1ec0d8a..3613068 100644 --- a/chrome/browser/ui/commerce/product_specifications_page_action_controller_unittest.cc +++ b/chrome/browser/ui/commerce/product_specifications_page_action_controller_unittest.cc
@@ -151,7 +151,7 @@ // Create a set with the max number of URLs. std::vector<GURL> urls; for (size_t i = 0; i < kMaxTableSize; ++i) { - urls.push_back(GURL(base::StringPrintf("http://example.com/%d", i))); + urls.emplace_back(base::StringPrintf("http://example.com/%d", i)); } ProductSpecificationsSet set = ProductSpecificationsSet( base::Uuid::GenerateRandomV4().AsLowercaseString(), 0, 0, urls, "set1"); @@ -409,14 +409,14 @@ // Create a set with close to max size. std::vector<GURL> urls; for (size_t i = 0; i < kMaxTableSize - 1; ++i) { - urls.push_back(GURL(base::StringPrintf("http://example.com/%d", i))); + urls.emplace_back(base::StringPrintf("http://example.com/%d", i)); } ProductSpecificationsSet set1 = ProductSpecificationsSet( product_group->uuid.AsLowercaseString(), 0, 0, urls, "set"); // The "updated" set has max size. - urls.push_back(GURL(kTestUrl2)); + urls.emplace_back(kTestUrl2); ProductSpecificationsSet set2 = ProductSpecificationsSet( product_group->uuid.AsLowercaseString(), 0, 0, urls, "set");
diff --git a/chrome/browser/ui/content_settings/content_setting_image_model.cc b/chrome/browser/ui/content_settings/content_setting_image_model.cc index fe73a32..020817f 100644 --- a/chrome/browser/ui/content_settings/content_setting_image_model.cc +++ b/chrome/browser/ui/content_settings/content_setting_image_model.cc
@@ -369,7 +369,7 @@ bool blocked, raw_ptr<const gfx::VectorIcon>* icon, raw_ptr<const gfx::VectorIcon>* badge) { - *badge = &gfx::VectorIcon::EmptyIcon(); + *badge = &gfx::kNoneIcon; GetIconChromeRefresh(type, blocked, icon); } @@ -509,7 +509,7 @@ void ContentSettingImageModel::SetFramebustBlockedIcon() { icon_ = &kOpenInNewOffChromeRefreshIcon; - icon_badge_ = &gfx::VectorIcon::EmptyIcon(); + icon_badge_ = &gfx::kNoneIcon; } // Generic blocked content settings -------------------------------------------- @@ -1222,8 +1222,8 @@ ContentSettingImageModel::ContentSettingImageModel( ImageType image_type, bool image_type_should_notify_accessibility) - : icon_(&gfx::VectorIcon::EmptyIcon()), - icon_badge_(&gfx::VectorIcon::EmptyIcon()), + : icon_(&gfx::kNoneIcon), + icon_badge_(&gfx::kNoneIcon), image_type_(image_type), image_type_should_notify_accessibility_( image_type_should_notify_accessibility) {}
diff --git a/chrome/browser/ui/content_settings/content_setting_media_image_model_unittest.mm b/chrome/browser/ui/content_settings/content_setting_media_image_model_unittest.mm index 8e206ba..0f6c315c 100644 --- a/chrome/browser/ui/content_settings/content_setting_media_image_model_unittest.mm +++ b/chrome/browser/ui/content_settings/content_setting_media_image_model_unittest.mm
@@ -25,6 +25,7 @@ #include "testing/gtest/include/gtest/gtest.h" #include "ui/base/l10n/l10n_util.h" #include "ui/gfx/color_palette.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/gfx/vector_icon_types.h" namespace gfx { @@ -93,17 +94,16 @@ kTestOrigin, {PageSpecificContentSettings::kCameraAccessed}); auth_wrapper.SetMockMediaPermissionStatus(AVAuthorizationStatusAuthorized); content_setting_image_model->Update(web_contents()); - ExpectImageModelState(*content_setting_image_model, /*is_visible=*/true, - /*has_icon=*/true, - l10n_util::GetStringUTF16(IDS_CAMERA_ACCESSED), 0, - &gfx::VectorIcon::EmptyIcon()); + ExpectImageModelState( + *content_setting_image_model, /*is_visible=*/true, /*has_icon=*/true, + l10n_util::GetStringUTF16(IDS_CAMERA_ACCESSED), 0, &gfx::kNoneIcon); auth_wrapper.SetMockMediaPermissionStatus(AVAuthorizationStatusDenied); content_setting_image_model->Update(web_contents()); ExpectImageModelState( *content_setting_image_model, /*is_visible=*/true, /*has_icon=*/true, l10n_util::GetStringUTF16(IDS_CAMERA_TURNED_OFF_IN_MACOS), - IDS_CAMERA_TURNED_OFF, &gfx::VectorIcon::EmptyIcon()); + IDS_CAMERA_TURNED_OFF, &gfx::kNoneIcon); auth_wrapper.SetMockMediaPermissionStatus( AVAuthorizationStatusNotDetermined); content_setting_image_model->Update(web_contents()); @@ -116,17 +116,16 @@ kTestOrigin, {PageSpecificContentSettings::kMicrophoneAccessed}); auth_wrapper.SetMockMediaPermissionStatus(AVAuthorizationStatusAuthorized); content_setting_image_model->Update(web_contents()); - ExpectImageModelState(*content_setting_image_model, /*is_visible=*/true, - /*has_icon=*/true, - l10n_util::GetStringUTF16(IDS_MICROPHONE_ACCESSED), 0, - &gfx::VectorIcon::EmptyIcon()); + ExpectImageModelState( + *content_setting_image_model, /*is_visible=*/true, /*has_icon=*/true, + l10n_util::GetStringUTF16(IDS_MICROPHONE_ACCESSED), 0, &gfx::kNoneIcon); auth_wrapper.SetMockMediaPermissionStatus(AVAuthorizationStatusDenied); content_setting_image_model->Update(web_contents()); ExpectImageModelState( *content_setting_image_model, /*is_visible=*/true, /*has_icon=*/true, l10n_util::GetStringUTF16(IDS_MIC_TURNED_OFF_IN_MACOS), - IDS_MIC_TURNED_OFF, &gfx::VectorIcon::EmptyIcon()); + IDS_MIC_TURNED_OFF, &gfx::kNoneIcon); auth_wrapper.SetMockMediaPermissionStatus( AVAuthorizationStatusNotDetermined); content_setting_image_model->Update(web_contents()); @@ -144,14 +143,14 @@ ExpectImageModelState( *content_setting_image_model, /*is_visible=*/true, /*has_icon=*/true, l10n_util::GetStringUTF16(IDS_MICROPHONE_CAMERA_ALLOWED), 0, - &gfx::VectorIcon::EmptyIcon()); + &gfx::kNoneIcon); auth_wrapper.SetMockMediaPermissionStatus(AVAuthorizationStatusDenied); auth_wrapper.SetMockMediaPermissionStatus(AVAuthorizationStatusDenied); content_setting_image_model->Update(web_contents()); ExpectImageModelState( *content_setting_image_model, /*is_visible=*/true, /*has_icon=*/true, l10n_util::GetStringUTF16(IDS_CAMERA_MIC_TURNED_OFF_IN_MACOS), - IDS_CAMERA_TURNED_OFF, &gfx::VectorIcon::EmptyIcon()); + IDS_CAMERA_TURNED_OFF, &gfx::kNoneIcon); auth_wrapper.SetMockMediaPermissionStatus( AVAuthorizationStatusNotDetermined); auth_wrapper.SetMockMediaPermissionStatus( @@ -178,7 +177,7 @@ /*is_visible=*/true, /*has_icon=*/true, l10n_util::GetStringUTF16(IDS_CAMERA_BLOCKED), 0, - &gfx::VectorIcon::EmptyIcon()); + &gfx::kNoneIcon); } // Microphone blocked per site. @@ -191,7 +190,7 @@ /*is_visible=*/true, /*has_icon=*/true, l10n_util::GetStringUTF16(IDS_MICROPHONE_BLOCKED), - 0, &gfx::VectorIcon::EmptyIcon()); + 0, &gfx::kNoneIcon); } // Microphone & camera blocked per site @@ -206,7 +205,7 @@ *content_setting_image_model, /*is_visible=*/true, /*has_icon=*/true, l10n_util::GetStringUTF16(IDS_MICROPHONE_CAMERA_BLOCKED), 0, - &gfx::VectorIcon::EmptyIcon()); + &gfx::kNoneIcon); } } }
diff --git a/chrome/browser/ui/cookie_controls/cookie_controls_controller_unittest.cc b/chrome/browser/ui/cookie_controls/cookie_controls_controller_unittest.cc index 4c878fe..d02acd7 100644 --- a/chrome/browser/ui/cookie_controls/cookie_controls_controller_unittest.cc +++ b/chrome/browser/ui/cookie_controls/cookie_controls_controller_unittest.cc
@@ -293,12 +293,12 @@ page_specific_content_settings()->OnBrowsingDataAccessed( CreateUnpartitionedStorageKey(GURL("https://thirdparty.com")), BrowsingDataModel::StorageType::kQuotaStorage, - /*blocked_by_policy=*/false); + /*blocked=*/false); testing::Mock::VerifyAndClearExpectations(mock()); page_specific_content_settings()->OnBrowsingDataAccessed( CreateUnpartitionedStorageKey(GURL("https://anotherthirdparty.com")), BrowsingDataModel::StorageType::kQuotaStorage, - /*blocked_by_policy=*/true); + /*blocked=*/true); // Enabling third-party cookies records metrics. EXPECT_CALL(*mock(), OnStatusChanged( @@ -724,7 +724,7 @@ CreateUnpartitionedStorageKey(GURL("https://thirdparty.com")), BrowsingDataModel::StorageType::kQuotaStorage, - /*blocked_by_policy=*/false); + /*blocked=*/false); testing::Mock::VerifyAndClearExpectations(mock()); // Reload the page and simulate accessing storage on page load. @@ -736,7 +736,7 @@ page_specific_content_settings()->OnBrowsingDataAccessed( CreateUnpartitionedStorageKey(GURL("https://thirdparty.com")), BrowsingDataModel::StorageType::kQuotaStorage, - /*blocked_by_policy=*/false); + /*blocked=*/false); testing::Mock::VerifyAndClearExpectations(mock()); // After the second reload and accessing storage, UB should highlight. @@ -749,7 +749,7 @@ page_specific_content_settings()->OnBrowsingDataAccessed( CreateUnpartitionedStorageKey(GURL("https://thirdparty.com")), BrowsingDataModel::StorageType::kQuotaStorage, - /*blocked_by_policy=*/false); + /*blocked=*/false); cookie_controls()->OnEntryPointAnimated(); testing::Mock::VerifyAndClearExpectations(mock()); @@ -881,7 +881,7 @@ page_specific_content_settings()->OnBrowsingDataAccessed( CreateUnpartitionedStorageKey(GURL("https://thirdparty.com")), BrowsingDataModel::StorageType::kQuotaStorage, - /*blocked_by_policy=*/false); + /*blocked=*/false); testing::Mock::VerifyAndClearExpectations(mock()); // Reload the page and simulate accessing storage on page load. @@ -893,7 +893,7 @@ page_specific_content_settings()->OnBrowsingDataAccessed( CreateUnpartitionedStorageKey(GURL("https://thirdparty.com")), BrowsingDataModel::StorageType::kQuotaStorage, - /*blocked_by_policy=*/false); + /*blocked=*/false); testing::Mock::VerifyAndClearExpectations(mock()); // After the second reload and accessing storage, UB should be highlighted. @@ -905,7 +905,7 @@ page_specific_content_settings()->OnBrowsingDataAccessed( CreateUnpartitionedStorageKey(GURL("https://thirdparty.com")), BrowsingDataModel::StorageType::kQuotaStorage, - /*blocked_by_policy=*/false); + /*blocked=*/false); testing::Mock::VerifyAndClearExpectations(mock()); // Enabling third-party cookies records metrics. @@ -965,7 +965,7 @@ CreateUnpartitionedStorageKey(GURL("https://thirdparty.com")), BrowsingDataModel::StorageType::kQuotaStorage, - /*blocked_by_policy=*/false); + /*blocked=*/false); testing::Mock::VerifyAndClearExpectations(mock()); // Reload the page and simulate accessing storage on page load. @@ -977,7 +977,7 @@ page_specific_content_settings()->OnBrowsingDataAccessed( CreateUnpartitionedStorageKey(GURL("https://thirdparty.com")), BrowsingDataModel::StorageType::kQuotaStorage, - /*blocked_by_policy=*/false); + /*blocked=*/false); testing::Mock::VerifyAndClearExpectations(mock()); // Wait for 30 seconds. @@ -992,7 +992,7 @@ page_specific_content_settings()->OnBrowsingDataAccessed( CreateUnpartitionedStorageKey(GURL("https://thirdparty.com")), BrowsingDataModel::StorageType::kQuotaStorage, - /*blocked_by_policy=*/false); + /*blocked=*/false); testing::Mock::VerifyAndClearExpectations(mock()); // Enabling third-party cookies records metrics. @@ -1063,7 +1063,7 @@ CreateUnpartitionedStorageKey(GURL("https://thirdparty.com")), BrowsingDataModel::StorageType::kQuotaStorage, - /*blocked_by_policy=*/false); + /*blocked=*/false); cookie_controls()->OnEntryPointAnimated(); testing::Mock::VerifyAndClearExpectations(mock()); @@ -1102,7 +1102,7 @@ CreateUnpartitionedStorageKey(GURL("https://anotherthirdparty.com")), BrowsingDataModel::StorageType::kQuotaStorage, - /*blocked_by_policy=*/false); + /*blocked=*/false); testing::Mock::VerifyAndClearExpectations(mock()); // Revisiting high site engagement site doesn't highlight UB @@ -1115,7 +1115,7 @@ page_specific_content_settings()->OnBrowsingDataAccessed( CreateUnpartitionedStorageKey(GURL("https://thirdparty.com")), BrowsingDataModel::StorageType::kQuotaStorage, - /*blocked_by_policy=*/false); + /*blocked=*/false); testing::Mock::VerifyAndClearExpectations(mock()); } @@ -1162,7 +1162,7 @@ CreateUnpartitionedStorageKey(GURL("https://thirdparty.com")), BrowsingDataModel::StorageType::kQuotaStorage, - /*blocked_by_policy=*/false); + /*blocked=*/false); testing::Mock::VerifyAndClearExpectations(mock()); // Enabling third-party cookies records metrics. @@ -1454,7 +1454,7 @@ page_specific_content_settings()->OnBrowsingDataAccessed( CreateUnpartitionedStorageKey(GURL("https://thirdparty.com")), BrowsingDataModel::StorageType::kQuotaStorage, - /*blocked_by_policy=*/true); + /*blocked=*/true); EXPECT_CALL(*mock(), OnStatusChanged( @@ -1504,7 +1504,7 @@ page_specific_content_settings()->OnBrowsingDataAccessed( CreateUnpartitionedStorageKey(GURL("https://thirdparty.com")), BrowsingDataModel::StorageType::kQuotaStorage, - /*blocked_by_policy=*/true); + /*blocked=*/true); EXPECT_CALL(*mock(), OnStatusChanged( /*controls_visible=*/true, /*protections_on=*/true, @@ -1527,7 +1527,7 @@ page_specific_content_settings()->OnBrowsingDataAccessed( CreateUnpartitionedStorageKey(GURL("https://thirdparty.com")), BrowsingDataModel::StorageType::kQuotaStorage, - /*blocked_by_policy=*/true); + /*blocked=*/true); EXPECT_CALL(*mock(), OnStatusChanged( /*controls_visible=*/true, /*protections_on=*/true,
diff --git a/chrome/browser/ui/crypto_module_password_dialog_nss.cc b/chrome/browser/ui/crypto_module_password_dialog_nss.cc index 13914c3..df20e48 100644 --- a/chrome/browser/ui/crypto_module_password_dialog_nss.cc +++ b/chrome/browser/ui/crypto_module_password_dialog_nss.cc
@@ -37,13 +37,13 @@ void GotPassword(const std::string& password); void Done(); - size_t current_; + size_t current_ = 0; std::vector<crypto::ScopedPK11Slot> modules_; CryptoModulePasswordReason reason_; net::HostPortPair server_; gfx::NativeWindow parent_; base::OnceClosure callback_; - PRBool retry_; + PRBool retry_ = PR_FALSE; }; SlotUnlocker::SlotUnlocker(std::vector<crypto::ScopedPK11Slot> modules, @@ -51,13 +51,11 @@ const net::HostPortPair& server, gfx::NativeWindow parent, base::OnceClosure callback) - : current_(0), - modules_(std::move(modules)), + : modules_(std::move(modules)), reason_(reason), server_(server), parent_(parent), - callback_(std::move(callback)), - retry_(PR_FALSE) { + callback_(std::move(callback)) { DCHECK_CURRENTLY_ON(BrowserThread::UI); }
diff --git a/chrome/browser/ui/download/download_bubble_contents_view_info.cc b/chrome/browser/ui/download/download_bubble_contents_view_info.cc index 4259e74..ea8572ae 100644 --- a/chrome/browser/ui/download/download_bubble_contents_view_info.cc +++ b/chrome/browser/ui/download/download_bubble_contents_view_info.cc
@@ -8,7 +8,7 @@ DownloadBubbleContentsViewInfo::DownloadBubbleContentsViewInfo( std::vector<DownloadUIModel::DownloadUIModelPtr> models) - : row_list_view_info_(std::move(models)), security_view_info_() {} + : row_list_view_info_(std::move(models)) {} DownloadBubbleContentsViewInfo::~DownloadBubbleContentsViewInfo() = default;
diff --git a/chrome/browser/ui/exclusive_access/fullscreen_controller_state_test.cc b/chrome/browser/ui/exclusive_access/fullscreen_controller_state_test.cc index e6d29f4..48c4caa9 100644 --- a/chrome/browser/ui/exclusive_access/fullscreen_controller_state_test.cc +++ b/chrome/browser/ui/exclusive_access/fullscreen_controller_state_test.cc
@@ -122,11 +122,11 @@ sizeof(transition_table_data)); // Verify that transition_table_ has been completely defined. - for (int source = 0; source < NUM_STATES; ++source) { - for (int event = 0; event < NUM_EVENTS; ++event) { - EXPECT_NE(transition_table_[source][event], STATE_INVALID); - EXPECT_GE(transition_table_[source][event], 0); - EXPECT_LT(transition_table_[source][event], NUM_STATES); + for (auto& source : transition_table_) { + for (auto& state : source) { + EXPECT_NE(state, STATE_INVALID); + EXPECT_GE(state, 0); + EXPECT_LT(state, NUM_STATES); } }
diff --git a/chrome/browser/ui/exclusive_access/fullscreen_controller_state_unittest.cc b/chrome/browser/ui/exclusive_access/fullscreen_controller_state_unittest.cc index b72c269..c2992c2 100644 --- a/chrome/browser/ui/exclusive_access/fullscreen_controller_state_unittest.cc +++ b/chrome/browser/ui/exclusive_access/fullscreen_controller_state_unittest.cc
@@ -79,12 +79,12 @@ // of updating the current fullscreen state to the passed in state. bool IsTransitionReentrant(bool new_fullscreen); - WindowState state_; + WindowState state_ = NORMAL; raw_ptr<Browser, DanglingUntriaged> browser_; }; FullscreenControllerTestWindow::FullscreenControllerTestWindow() - : state_(NORMAL), browser_(nullptr) {} + : browser_(nullptr) {} void FullscreenControllerTestWindow::EnterFullscreen( const GURL& url,
diff --git a/chrome/browser/ui/extensions/installation_error_infobar_delegate.cc b/chrome/browser/ui/extensions/installation_error_infobar_delegate.cc index b2ba2208..3786338 100644 --- a/chrome/browser/ui/extensions/installation_error_infobar_delegate.cc +++ b/chrome/browser/ui/extensions/installation_error_infobar_delegate.cc
@@ -21,7 +21,7 @@ InstallationErrorInfoBarDelegate::InstallationErrorInfoBarDelegate( const extensions::CrxInstallError& error) - : ConfirmInfoBarDelegate(), error_(error) {} + : error_(error) {} InstallationErrorInfoBarDelegate::~InstallationErrorInfoBarDelegate() = default;
diff --git a/chrome/browser/ui/find_bar/find_bar_host_browsertest.cc b/chrome/browser/ui/find_bar/find_bar_host_browsertest.cc index 1f7c0c8..e742ea8 100644 --- a/chrome/browser/ui/find_bar/find_bar_host_browsertest.cc +++ b/chrome/browser/ui/find_bar/find_bar_host_browsertest.cc
@@ -319,8 +319,8 @@ WebContents* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); - for (size_t i = 0; i < urls.size(); ++i) { - ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), urls[i])); + for (const auto& url : urls) { + ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), url)); EXPECT_EQ(1, FindInPageASCII(web_contents, "cat", kFwd, kIgnoreCase, nullptr)); EXPECT_EQ(0,
diff --git a/chrome/browser/ui/global_error/global_error_service_browsertest.cc b/chrome/browser/ui/global_error/global_error_service_browsertest.cc index 0dc0d52..457723f 100644 --- a/chrome/browser/ui/global_error/global_error_service_browsertest.cc +++ b/chrome/browser/ui/global_error/global_error_service_browsertest.cc
@@ -22,7 +22,7 @@ // An error that has a bubble view. class BubbleViewError final : public GlobalErrorWithStandardBubble { public: - BubbleViewError() : bubble_view_close_count_(0) {} + BubbleViewError() = default; BubbleViewError(const BubbleViewError&) = delete; BubbleViewError& operator=(const BubbleViewError&) = delete; @@ -58,7 +58,7 @@ } private: - int bubble_view_close_count_; + int bubble_view_close_count_ = 0; base::WeakPtrFactory<BubbleViewError> weak_ptr_factory_{this}; };
diff --git a/chrome/browser/ui/global_media_controls/cast_media_notification_item_unittest.cc b/chrome/browser/ui/global_media_controls/cast_media_notification_item_unittest.cc index 92e6c9af..ddbd096 100644 --- a/chrome/browser/ui/global_media_controls/cast_media_notification_item_unittest.cc +++ b/chrome/browser/ui/global_media_controls/cast_media_notification_item_unittest.cc
@@ -71,7 +71,7 @@ class MockSessionController : public CastMediaSessionController { public: - MockSessionController( + explicit MockSessionController( mojo::Remote<media_router::mojom::MediaController> remote) : CastMediaSessionController(std::move(remote)) {}
diff --git a/chrome/browser/ui/hats/hats_service.h b/chrome/browser/ui/hats/hats_service.h index adacd36..ce817b32 100644 --- a/chrome/browser/ui/hats/hats_service.h +++ b/chrome/browser/ui/hats/hats_service.h
@@ -88,10 +88,17 @@ // associated with the survey response. virtual void LaunchSurvey( const std::string& trigger, - base::OnceClosure success_callback = base::DoNothing(), - base::OnceClosure failure_callback = base::DoNothing(), - const SurveyBitsData& product_specific_bits_data = {}, - const SurveyStringData& product_specific_string_data = {}) = 0; + base::OnceClosure success_callback, + base::OnceClosure failure_callback, + const SurveyBitsData& product_specific_bits_data, + const SurveyStringData& product_specific_string_data) = 0; + void LaunchSurvey(const std::string& trigger, + base::OnceClosure success_callback = base::DoNothing(), + base::OnceClosure failure_callback = base::DoNothing(), + const SurveyBitsData& product_specific_bits_data = {}) { + LaunchSurvey(trigger, std::move(success_callback), + std::move(failure_callback), product_specific_bits_data, {}); + } // Launches survey (with id |trigger|) with a timeout |timeout_ms| if // appropriate. @@ -106,10 +113,23 @@ content::WebContents* web_contents, const SurveyBitsData& product_specific_bits_data, const SurveyStringData& product_specific_string_data, + base::OnceClosure success_callback, + base::OnceClosure failure_callback, + const std::optional<std::string>& supplied_trigger_id, + const SurveyOptions& survey_options) = 0; + void LaunchSurveyForWebContents( + const std::string& trigger, + content::WebContents* web_contents, + const SurveyBitsData& product_specific_bits_data, + const SurveyStringData& product_specific_string_data, base::OnceClosure success_callback = base::DoNothing(), base::OnceClosure failure_callback = base::DoNothing(), - const std::optional<std::string>& supplied_trigger_id = std::nullopt, - const SurveyOptions& survey_options = SurveyOptions()) = 0; + const std::optional<std::string>& supplied_trigger_id = std::nullopt) { + LaunchSurveyForWebContents( + trigger, web_contents, product_specific_bits_data, + product_specific_string_data, std::move(success_callback), + std::move(failure_callback), supplied_trigger_id, SurveyOptions()); + } // Launches survey (with id |trigger|) with a timeout |timeout_ms| if // appropriate. @@ -120,8 +140,15 @@ virtual bool LaunchDelayedSurvey( const std::string& trigger, int timeout_ms, - const SurveyBitsData& product_specific_bits_data = {}, - const SurveyStringData& product_specific_string_data = {}) = 0; + const SurveyBitsData& product_specific_bits_data, + const SurveyStringData& product_specific_string_data) = 0; + bool LaunchDelayedSurvey( + const std::string& trigger, + int timeout_ms, + const SurveyBitsData& product_specific_bits_data = {}) { + return LaunchDelayedSurvey(trigger, timeout_ms, product_specific_bits_data, + {}); + } // Launches survey (with id |trigger|) with a timeout |timeout_ms| for tab // |web_contents| if appropriate. |web_contents| required to be non-nullptr. @@ -137,13 +164,29 @@ const std::string& trigger, content::WebContents* web_contents, int timeout_ms, + const SurveyBitsData& product_specific_bits_data, + const SurveyStringData& product_specific_string_data, + NavigationBehaviour navigation_behaviour, + base::OnceClosure success_callback, + base::OnceClosure failure_callback, + const std::optional<std::string>& supplied_trigger_id, + const SurveyOptions& survey_options) = 0; + bool LaunchDelayedSurveyForWebContents( + const std::string& trigger, + content::WebContents* web_contents, + int timeout_ms, const SurveyBitsData& product_specific_bits_data = {}, const SurveyStringData& product_specific_string_data = {}, NavigationBehaviour navigation_behaviour = NavigationBehaviour::ALLOW_ANY, base::OnceClosure success_callback = base::DoNothing(), base::OnceClosure failure_callback = base::DoNothing(), - const std::optional<std::string>& supplied_trigger_id = std::nullopt, - const SurveyOptions& survey_options = SurveyOptions()) = 0; + const std::optional<std::string>& supplied_trigger_id = std::nullopt) { + return LaunchDelayedSurveyForWebContents( + trigger, web_contents, timeout_ms, product_specific_bits_data, + product_specific_string_data, navigation_behaviour, + std::move(success_callback), std::move(failure_callback), + supplied_trigger_id, SurveyOptions()); + } // Whether the user is eligible for any survey (of the type |user_prompted| // or not) to be shown. A return value of false is always a true-negative,
diff --git a/chrome/browser/ui/hats/hats_service_browsertest.cc b/chrome/browser/ui/hats/hats_service_browsertest.cc index a7bcee5..4727501 100644 --- a/chrome/browser/ui/hats/hats_service_browsertest.cc +++ b/chrome/browser/ui/hats/hats_service_browsertest.cc
@@ -95,6 +95,11 @@ }; class HatsServiceBrowserTestBase : public policy::PolicyTest { + public: + HatsServiceBrowserTestBase(const HatsServiceBrowserTestBase&) = delete; + HatsServiceBrowserTestBase& operator=(const HatsServiceBrowserTestBase&) = + delete; + protected: explicit HatsServiceBrowserTestBase( std::vector<base::test::FeatureRefAndParams> enabled_features) @@ -103,11 +108,6 @@ } HatsServiceBrowserTestBase() = default; - - HatsServiceBrowserTestBase(const HatsServiceBrowserTestBase&) = delete; - HatsServiceBrowserTestBase& operator=(const HatsServiceBrowserTestBase&) = - delete; - ~HatsServiceBrowserTestBase() override = default; Profile* profile() { return chrome_test_utils::GetProfile(this); }
diff --git a/chrome/browser/ui/hats/hats_service_desktop.cc b/chrome/browser/ui/hats/hats_service_desktop.cc index 3c2a66f..dd66b37 100644 --- a/chrome/browser/ui/hats/hats_service_desktop.cc +++ b/chrome/browser/ui/hats/hats_service_desktop.cc
@@ -163,7 +163,7 @@ hats_service_->LaunchSurveyForWebContents( trigger_, web_contents(), product_specific_bits_data_, product_specific_string_data_, std::move(success_callback_), - std::move(failure_callback_), supplied_trigger_id_); + std::move(failure_callback_), supplied_trigger_id_, SurveyOptions()); hats_service_->RemoveTask(*this); } } @@ -257,12 +257,15 @@ int timeout_ms, const SurveyBitsData& product_specific_bits_data, const SurveyStringData& product_specific_string_data) { + void (HatsServiceDesktop::*launch_survey)( + const std::string&, base::OnceClosure, base::OnceClosure, + const SurveyBitsData&, const SurveyStringData&) = + &HatsServiceDesktop::LaunchSurvey; return base::SequencedTaskRunner::GetCurrentDefault()->PostDelayedTask( FROM_HERE, - base::BindOnce(&HatsServiceDesktop::LaunchSurvey, - weak_ptr_factory_.GetWeakPtr(), trigger, base::DoNothing(), - base::DoNothing(), product_specific_bits_data, - product_specific_string_data), + base::BindOnce(launch_survey, weak_ptr_factory_.GetWeakPtr(), trigger, + base::DoNothing(), base::DoNothing(), + product_specific_bits_data, product_specific_string_data), base::Milliseconds(timeout_ms)); }
diff --git a/chrome/browser/ui/hats/hats_service_desktop.h b/chrome/browser/ui/hats/hats_service_desktop.h index 93b5410..1fa904a 100644 --- a/chrome/browser/ui/hats/hats_service_desktop.h +++ b/chrome/browser/ui/hats/hats_service_desktop.h
@@ -117,40 +117,44 @@ static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); + using HatsService::LaunchSurvey; void LaunchSurvey( const std::string& trigger, - base::OnceClosure success_callback = base::DoNothing(), - base::OnceClosure failure_callback = base::DoNothing(), - const SurveyBitsData& product_specific_bits_data = {}, - const SurveyStringData& product_specific_string_data = {}) override; + base::OnceClosure success_callback, + base::OnceClosure failure_callback, + const SurveyBitsData& product_specific_bits_data, + const SurveyStringData& product_specific_string_data) override; + using HatsService::LaunchSurveyForWebContents; void LaunchSurveyForWebContents( const std::string& trigger, content::WebContents* web_contents, const SurveyBitsData& product_specific_bits_data, const SurveyStringData& product_specific_string_data, - base::OnceClosure success_callback = base::DoNothing(), - base::OnceClosure failure_callback = base::DoNothing(), - const std::optional<std::string>& supplied_trigger_id = std::nullopt, - const SurveyOptions& survey_options = SurveyOptions()) override; + base::OnceClosure success_callback, + base::OnceClosure failure_callback, + const std::optional<std::string>& supplied_trigger_id, + const SurveyOptions& survey_options) override; + using HatsService::LaunchDelayedSurvey; bool LaunchDelayedSurvey( const std::string& trigger, int timeout_ms, - const SurveyBitsData& product_specific_bits_data = {}, - const SurveyStringData& product_specific_string_data = {}) override; + const SurveyBitsData& product_specific_bits_data, + const SurveyStringData& product_specific_string_data) override; + using HatsService::LaunchDelayedSurveyForWebContents; bool LaunchDelayedSurveyForWebContents( const std::string& trigger, content::WebContents* web_contents, int timeout_ms, - const SurveyBitsData& product_specific_bits_data = {}, - const SurveyStringData& product_specific_string_data = {}, - NavigationBehaviour navigation_behaviour = NavigationBehaviour::ALLOW_ANY, - base::OnceClosure success_callback = base::DoNothing(), - base::OnceClosure failure_callback = base::DoNothing(), - const std::optional<std::string>& supplied_trigger_id = std::nullopt, - const SurveyOptions& survey_options = SurveyOptions()) override; + const SurveyBitsData& product_specific_bits_data, + const SurveyStringData& product_specific_string_data, + NavigationBehaviour navigation_behaviour, + base::OnceClosure success_callback, + base::OnceClosure failure_callback, + const std::optional<std::string>& supplied_trigger_id, + const SurveyOptions& survey_options) override; void SetSurveyMetadataForTesting(const HatsService::SurveyMetadata& metadata); void GetSurveyMetadataForTesting(HatsService::SurveyMetadata* metadata) const;
diff --git a/chrome/browser/ui/lens/lens_overlay_controller_browsertest.cc b/chrome/browser/ui/lens/lens_overlay_controller_browsertest.cc index 6c989d8..33a633e 100644 --- a/chrome/browser/ui/lens/lens_overlay_controller_browsertest.cc +++ b/chrome/browser/ui/lens/lens_overlay_controller_browsertest.cc
@@ -4234,7 +4234,7 @@ std::vector<base::test::FeatureRef> GetDisabledFeatures() const override { auto disabled = PDFExtensionTestBase::GetDisabledFeatures(); - disabled.push_back({lens::features::kLensOverlayContextualSearchbox}); + disabled.emplace_back(lens::features::kLensOverlayContextualSearchbox); return disabled; }
diff --git a/chrome/browser/ui/lens/lens_overlay_query_controller.h b/chrome/browser/ui/lens/lens_overlay_query_controller.h index c9b1d561..252ac5d 100644 --- a/chrome/browser/ui/lens/lens_overlay_query_controller.h +++ b/chrome/browser/ui/lens/lens_overlay_query_controller.h
@@ -179,8 +179,7 @@ const base::TimeDelta& timeout, const std::vector<std::string>& request_headers, const std::vector<std::string>& cors_exempt_headers, - const UploadProgressCallback upload_progress_callback = - base::NullCallback()); + const UploadProgressCallback upload_progress_callback); // Sends a latency Gen204 ping if enabled, calculating the latency duration // from the start time ticks and base::TimeTicks::Now().
diff --git a/chrome/browser/ui/media_router/media_router_ui.cc b/chrome/browser/ui/media_router/media_router_ui.cc index f57ce1dd..0ee26f0 100644 --- a/chrome/browser/ui/media_router/media_router_ui.cc +++ b/chrome/browser/ui/media_router/media_router_ui.cc
@@ -337,7 +337,7 @@ void MediaRouterUI::LogMediaSinkStatus() { std::vector<std::string> sink_ids; for (const auto& sink : GetEnabledSinks()) { - sink_ids.push_back(std::string(log_util::TruncateId(sink.sink.id()))); + sink_ids.emplace_back(log_util::TruncateId(sink.sink.id())); } logger_->LogInfo(
diff --git a/chrome/browser/ui/media_router/query_result_manager.cc b/chrome/browser/ui/media_router/query_result_manager.cc index 1821599..58841e9 100644 --- a/chrome/browser/ui/media_router/query_result_manager.cc +++ b/chrome/browser/ui/media_router/query_result_manager.cc
@@ -174,7 +174,7 @@ } for (const auto& sink : all_sinks_) { if (!base::Contains(sinks_with_sources_, sink.id())) { - sinks.push_back(MediaSinkWithCastModes(sink)); + sinks.emplace_back(sink); } }
diff --git a/chrome/browser/ui/media_router/query_result_manager_unittest.cc b/chrome/browser/ui/media_router/query_result_manager_unittest.cc index deb678f6..363ee701 100644 --- a/chrome/browser/ui/media_router/query_result_manager_unittest.cc +++ b/chrome/browser/ui/media_router/query_result_manager_unittest.cc
@@ -42,8 +42,7 @@ class QueryResultManagerTest : public ::testing::Test { public: - QueryResultManagerTest() - : mock_router_(), query_result_manager_(&mock_router_) {} + QueryResultManagerTest() : query_result_manager_(&mock_router_) {} QueryResultManagerTest(const QueryResultManagerTest&) = delete; QueryResultManagerTest& operator=(const QueryResultManagerTest&) = delete;
diff --git a/chrome/browser/ui/omnibox/alternate_nav_infobar_delegate.cc b/chrome/browser/ui/omnibox/alternate_nav_infobar_delegate.cc index 52f90fe..b8573ba 100644 --- a/chrome/browser/ui/omnibox/alternate_nav_infobar_delegate.cc +++ b/chrome/browser/ui/omnibox/alternate_nav_infobar_delegate.cc
@@ -99,8 +99,7 @@ std::unique_ptr<AutocompleteMatch> match, const GURL& destination_url, const GURL& original_url) - : infobars::InfoBarDelegate(), - profile_(profile), + : profile_(profile), text_(text), match_(std::move(match)), destination_url_(destination_url),
diff --git a/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer_unittest.cc b/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer_unittest.cc index 587db02..863d6cb 100644 --- a/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer_unittest.cc +++ b/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer_unittest.cc
@@ -272,7 +272,7 @@ redir_info.status_code = net::HTTP_MOVED_PERMANENTLY; auto redir_head = network::CreateURLResponseHead(net::HTTP_MOVED_PERMANENTLY); - redirects.push_back({redir_info, std::move(redir_head)}); + redirects.emplace_back(redir_info, std::move(redir_head)); } // Fill in final response.
diff --git a/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc b/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc index a735a1f1..5c304df6 100644 --- a/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc +++ b/chrome/browser/ui/omnibox/omnibox_view_browsertest.cc
@@ -308,10 +308,9 @@ // Remove built-in template urls, like google.com, bing.com etc., as they // may appear as autocomplete suggests and interfere with our tests. TemplateURLService::TemplateURLVector urls = model->GetTemplateURLs(); - for (TemplateURLService::TemplateURLVector::const_iterator i = urls.begin(); - i != urls.end(); ++i) { - if ((*i)->prepopulate_id() != 0) { - model->Remove(*i); + for (const auto& url : urls) { + if (url->prepopulate_id() != 0) { + model->Remove(url); } } } @@ -360,8 +359,8 @@ } void SetupHostResolver() { - for (size_t i = 0; i < std::size(kBlockedHostnames); ++i) { - host_resolver()->AddSimulatedFailure(kBlockedHostnames[i]); + for (auto* kBlockedHostname : kBlockedHostnames) { + host_resolver()->AddSimulatedFailure(kBlockedHostname); } }
diff --git a/chrome/browser/ui/passwords/manage_passwords_state_unittest.cc b/chrome/browser/ui/passwords/manage_passwords_state_unittest.cc index 7b50fe3..9e02594 100644 --- a/chrome/browser/ui/passwords/manage_passwords_state_unittest.cc +++ b/chrome/browser/ui/passwords/manage_passwords_state_unittest.cc
@@ -195,7 +195,7 @@ // Remove and Add form. list[0] = PasswordStoreChange(PasswordStoreChange::REMOVE, form); form.username_value = u"user15"; - list.push_back(PasswordStoreChange(PasswordStoreChange::ADD, form)); + list.emplace_back(PasswordStoreChange::ADD, form); EXPECT_CALL(mock_client_, UpdateFormManagers()).Times(0); passwords_data().ProcessLoginsChanged(list); EXPECT_EQ(state, passwords_data().state()); @@ -237,7 +237,7 @@ blocked_form.blocked_by_user = true; blocked_form.url = origin.GetURL(); PasswordStoreChangeList list; - list.push_back(PasswordStoreChange(PasswordStoreChange::ADD, blocked_form)); + list.emplace_back(PasswordStoreChange::ADD, blocked_form); passwords_data().ProcessLoginsChanged(list); EXPECT_EQ(forms, GetRawPointers(passwords_data().GetCurrentForms())); EXPECT_EQ(state, passwords_data().state());
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc b/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc index ff0e7b2..fec856df 100644 --- a/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc +++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
@@ -1219,23 +1219,28 @@ } TEST_F(ManagePasswordsUIControllerTest, OpenBubbleTwice) { - // Open the autosignin bubble. - std::vector<std::unique_ptr<PasswordForm>> local_credentials; - local_credentials.emplace_back(new PasswordForm(test_local_form())); - controller()->OnAutoSignin(std::move(local_credentials), - url::Origin::Create(test_local_form().url)); + { + // Open the autosignin bubble. + std::vector<std::unique_ptr<PasswordForm>> local_credentials; + local_credentials.emplace_back(new PasswordForm(test_local_form())); + controller()->OnAutoSignin(std::move(local_credentials), + url::Origin::Create(test_local_form().url)); + } EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, controller()->GetState()); // The delegate used by the bubble for communicating with the controller. base::WeakPtr<PasswordsModelDelegate> proxy_delegate = controller()->GetModelDelegateProxy(); - // Open the bubble again. - local_credentials.emplace_back(new PasswordForm(test_local_form())); - controller()->OnAutoSignin(std::move(local_credentials), - url::Origin::Create(test_local_form().url)); + { + // Open the bubble again. + std::vector<std::unique_ptr<PasswordForm>> local_credentials; + local_credentials.emplace_back(new PasswordForm(test_local_form())); + controller()->OnAutoSignin(std::move(local_credentials), + url::Origin::Create(test_local_form().url)); + } EXPECT_EQ(password_manager::ui::AUTO_SIGNIN_STATE, controller()->GetState()); - // Check the delegate is destroyed. Thus, the first bubble has no way to mess - // up with the controller's state. + // Check the delegate is destroyed. Thus, the first bubble has no way to + // mess up with the controller's state. EXPECT_FALSE(proxy_delegate); }
diff --git a/chrome/browser/ui/prefs/prefs_tab_helper.cc b/chrome/browser/ui/prefs/prefs_tab_helper.cc index 5dc5362..03955bb 100644 --- a/chrome/browser/ui/prefs/prefs_tab_helper.cc +++ b/chrome/browser/ui/prefs/prefs_tab_helper.cc
@@ -111,8 +111,7 @@ }; // clang-format on - for (size_t i = 0; i < std::size(kFontFamilyMap); ++i) { - const char* pref_name = kFontFamilyMap[i]; + for (const char* const pref_name : kFontFamilyMap) { if (fonts_with_defaults.find(pref_name) == fonts_with_defaults.end()) { // We haven't already set a default value for this font preference, so set // an empty string as the default. @@ -216,8 +215,6 @@ #endif }; -const size_t kFontDefaultsLength = std::size(kFontDefaults); - // Returns the script of the font pref |pref_name|. For example, suppose // |pref_name| is "webkit.webprefs.fonts.serif.Hant". Since the script code for // the script name "Hant" is USCRIPT_TRADITIONAL_HAN, the function returns @@ -407,9 +404,7 @@ // Register font prefs that have defaults. std::set<std::string> fonts_with_defaults; UScriptCode browser_script = GetScriptOfBrowserLocale(locale); - for (size_t i = 0; i < kFontDefaultsLength; ++i) { - FontDefault pref = kFontDefaults[i]; - + for (FontDefault pref : kFontDefaults) { #if BUILDFLAG(IS_WIN) if (pref.pref_name == prefs::kWebKitFixedFontFamily) { if (ShouldUseAlternateDefaultFixedFont(
diff --git a/chrome/browser/ui/profiles/profile_colors_util_unittest.cc b/chrome/browser/ui/profiles/profile_colors_util_unittest.cc index a695a7b..9b2e6a4 100644 --- a/chrome/browser/ui/profiles/profile_colors_util_unittest.cc +++ b/chrome/browser/ui/profiles/profile_colors_util_unittest.cc
@@ -166,26 +166,26 @@ // Get two variants of red color: put slightly transparent red (a) on white // and (b) on black. These should have enough similar lightness. SkColor lighter = color_utils::GetResultingPaintColor( - /*fg=*/SkColorSetA(SK_ColorRED, 200u), - /*bg=*/SK_ColorWHITE); + /*foreground=*/SkColorSetA(SK_ColorRED, 200u), + /*background=*/SK_ColorWHITE); color_utils::HSL lighter_hsl; color_utils::SkColorToHSL(lighter, &lighter_hsl); SkColor darker = color_utils::GetResultingPaintColor( - /*fg=*/SkColorSetA(SK_ColorRED, 200u), - /*bg=*/SK_ColorBLACK); + /*foreground=*/SkColorSetA(SK_ColorRED, 200u), + /*background=*/SK_ColorBLACK); EXPECT_TRUE(IsLightForAutoselection(darker, lighter_hsl.l)); // Repeat the same with more difference to get the opposite outcome. SkColor very_light = color_utils::GetResultingPaintColor( - /*fg=*/SkColorSetA(SK_ColorRED, 100u), - /*bg=*/SK_ColorWHITE); + /*foreground=*/SkColorSetA(SK_ColorRED, 100u), + /*background=*/SK_ColorWHITE); color_utils::HSL very_light_hsl; color_utils::SkColorToHSL(very_light, &very_light_hsl); SkColor very_dark = color_utils::GetResultingPaintColor( - /*fg=*/SkColorSetA(SK_ColorRED, 100u), - /*bg=*/SK_ColorBLACK); + /*foreground=*/SkColorSetA(SK_ColorRED, 100u), + /*background=*/SK_ColorBLACK); EXPECT_FALSE(IsLightForAutoselection(very_dark, very_light_hsl.l)); }
diff --git a/chrome/browser/ui/safety_hub/password_status_check_service.cc b/chrome/browser/ui/safety_hub/password_status_check_service.cc index 6fcc432..e89eaf4 100644 --- a/chrome/browser/ui/safety_hub/password_status_check_service.cc +++ b/chrome/browser/ui/safety_hub/password_status_check_service.cc
@@ -154,15 +154,15 @@ // If the weight for any day is different than the previous one, a new check // time should be found. auto map = GetDayPrefWeightMap(); - for (auto day = map.begin(); day != map.end(); day++) { - std::optional<int> old_weight_val = check_schedule_dict.FindInt(day->first); + for (auto& day : map) { + std::optional<int> old_weight_val = check_schedule_dict.FindInt(day.first); // When the first time the weights are introduced, the old weight values // will be non-set. In this case, schedule time should reset. if (!old_weight_val.has_value()) { return true; } - int new_weight = day->second; + int new_weight = day.second; if (old_weight_val.value() != new_weight) { return true; } @@ -684,8 +684,8 @@ base::TimeDeltaToValue(check_interval)); // Save current weights for days on prefs. auto map = GetDayPrefWeightMap(); - for (auto day = map.begin(); day != map.end(); day++) { - dict.Set(day->first, base::Value(day->second)); + for (auto& day : map) { + dict.Set(day.first, base::Value(day.second)); } profile_->GetPrefs()->SetDict(
diff --git a/chrome/browser/ui/safety_hub/unused_site_permissions_service_unittest.cc b/chrome/browser/ui/safety_hub/unused_site_permissions_service_unittest.cc index f399f5f..a387a54f 100644 --- a/chrome/browser/ui/safety_hub/unused_site_permissions_service_unittest.cc +++ b/chrome/browser/ui/safety_hub/unused_site_permissions_service_unittest.cc
@@ -843,8 +843,8 @@ } if (ShouldSetupAbusiveNotificationSites()) { ExpectRevokedAbusiveNotificationPermissionSize(1U); - ExpectCleanedUpAbusiveNotificationSettingValues( - url2, /*ignore_future_revocation=*/true); + ExpectCleanedUpAbusiveNotificationSettingValues(url2, + /*is_regranted=*/true); ExpectRevokedAbusiveNotificationSettingValues(url3); } @@ -855,10 +855,10 @@ } if (ShouldSetupAbusiveNotificationSites()) { ExpectRevokedAbusiveNotificationPermissionSize(0U); - ExpectCleanedUpAbusiveNotificationSettingValues( - url2, /*ignore_future_revocation=*/true); - ExpectCleanedUpAbusiveNotificationSettingValues( - url3, /*ignore_future_revocation=*/true); + ExpectCleanedUpAbusiveNotificationSettingValues(url2, + /*is_regranted=*/true); + ExpectCleanedUpAbusiveNotificationSettingValues(url3, + /*is_regranted=*/true); } // Undoing the changes should add `url1` back to the list of revoked @@ -874,10 +874,10 @@ } if (ShouldSetupAbusiveNotificationSites()) { ExpectRevokedAbusiveNotificationPermissionSize(0U); - ExpectCleanedUpAbusiveNotificationSettingValues( - url2, /*ignore_future_revocation=*/true); - ExpectCleanedUpAbusiveNotificationSettingValues( - url3, /*ignore_future_revocation=*/true); + ExpectCleanedUpAbusiveNotificationSettingValues(url2, + /*is_regranted=*/true); + ExpectCleanedUpAbusiveNotificationSettingValues(url3, + /*is_regranted=*/true); } // Undoing `url2` adds it back to the revoked permissions lists. @@ -893,8 +893,8 @@ if (ShouldSetupAbusiveNotificationSites()) { ExpectRevokedAbusiveNotificationPermissionSize(1U); ExpectRevokedAbusiveNotificationSettingValues(url2); - ExpectCleanedUpAbusiveNotificationSettingValues( - url3, /*ignore_future_revocation=*/true); + ExpectCleanedUpAbusiveNotificationSettingValues(url3, + /*is_regranted=*/true); } // Undoing `url3` adds it back to the revoked abusive notification permissions @@ -954,10 +954,10 @@ } if (ShouldSetupAbusiveNotificationSites()) { ExpectRevokedAbusiveNotificationPermissionSize(0U); - ExpectCleanedUpAbusiveNotificationSettingValues( - url2, /*ignore_future_revocation=*/true); - ExpectCleanedUpAbusiveNotificationSettingValues( - url3, /*ignore_future_revocation=*/true); + ExpectCleanedUpAbusiveNotificationSettingValues(url2, + /*is_regranted=*/true); + ExpectCleanedUpAbusiveNotificationSettingValues(url3, + /*is_regranted=*/true); } clock()->Advance(base::Days(70)); @@ -1122,8 +1122,8 @@ } if (ShouldSetupAbusiveNotificationSites()) { ExpectRevokedAbusiveNotificationPermissionSize(1U); - ExpectCleanedUpAbusiveNotificationSettingValues( - url2, /*ignore_future_revocation=*/true); + ExpectCleanedUpAbusiveNotificationSettingValues(url2, + /*is_regranted=*/true); ExpectRevokedAbusiveNotificationSettingValues(url3); } @@ -1136,8 +1136,8 @@ } if (ShouldSetupAbusiveNotificationSites()) { ExpectRevokedAbusiveNotificationPermissionSize(0U); - ExpectCleanedUpAbusiveNotificationSettingValues( - url3, /*ignore_future_revocation=*/false); + ExpectCleanedUpAbusiveNotificationSettingValues(url3, + /*is_regranted=*/false); } // Grant the revoked chooser permissions again from url5, and check that
diff --git a/chrome/browser/ui/search/ntp_user_data_logger_unittest.cc b/chrome/browser/ui/search/ntp_user_data_logger_unittest.cc index 987299ad..85010aae 100644 --- a/chrome/browser/ui/search/ntp_user_data_logger_unittest.cc +++ b/chrome/browser/ui/search/ntp_user_data_logger_unittest.cc
@@ -60,7 +60,7 @@ std::vector<base::Bucket> FillImpressions(int numImpressions, int count) { std::vector<base::Bucket> impressions; for (int i = 0; i < numImpressions; ++i) { - impressions.push_back(Bucket(i, count)); + impressions.emplace_back(i, count); } return impressions; }
diff --git a/chrome/browser/ui/signin/cookie_clear_on_exit_migration_notice_browsertest.cc b/chrome/browser/ui/signin/cookie_clear_on_exit_migration_notice_browsertest.cc index ec2e3c6..59c8277 100644 --- a/chrome/browser/ui/signin/cookie_clear_on_exit_migration_notice_browsertest.cc +++ b/chrome/browser/ui/signin/cookie_clear_on_exit_migration_notice_browsertest.cc
@@ -97,7 +97,7 @@ class CookieClearOnExitMigrationNoticeBrowserTest : public SigninBrowserTestBase { public: - CookieClearOnExitMigrationNoticeBrowserTest() : SigninBrowserTestBase() { + CookieClearOnExitMigrationNoticeBrowserTest() { feature_list_.InitWithFeatureState( switches::kExplicitBrowserSigninUIOnDesktop, /*enabled=*/!content::IsPreTest());
diff --git a/chrome/browser/ui/signin/dice_web_signin_interceptor_delegate.h b/chrome/browser/ui/signin/dice_web_signin_interceptor_delegate.h index 5b3d9e8..9e396d19 100644 --- a/chrome/browser/ui/signin/dice_web_signin_interceptor_delegate.h +++ b/chrome/browser/ui/signin/dice_web_signin_interceptor_delegate.h
@@ -36,7 +36,7 @@ const BubbleParameters& bubble_parameters, signin::SigninChoiceWithConfirmAndRetryCallback callback, base::OnceClosure dialog_closed_closure, - base::RepeatingClosure retry_callback = base::DoNothing()) override; + base::RepeatingClosure retry_callback) override; void ShowFirstRunExperienceInNewProfile( Browser* browser, const CoreAccountId& account_id,
diff --git a/chrome/browser/ui/simple_message_box_internal.cc b/chrome/browser/ui/simple_message_box_internal.cc index cd5aae1..53bdf0f 100644 --- a/chrome/browser/ui/simple_message_box_internal.cc +++ b/chrome/browser/ui/simple_message_box_internal.cc
@@ -4,10 +4,8 @@ #include "chrome/browser/ui/simple_message_box_internal.h" -namespace chrome { -namespace internal { +namespace chrome::internal { bool g_should_skip_message_box_for_test = false; -} // namespace internal -} // namespace chrome +} // namespace chrome::internal
diff --git a/chrome/browser/ui/startup/default_browser_prompt/default_browser_prompt_manager_unittest.cc b/chrome/browser/ui/startup/default_browser_prompt/default_browser_prompt_manager_unittest.cc index 0da7aff..3496f78 100644 --- a/chrome/browser/ui/startup/default_browser_prompt/default_browser_prompt_manager_unittest.cc +++ b/chrome/browser/ui/startup/default_browser_prompt/default_browser_prompt_manager_unittest.cc
@@ -193,7 +193,7 @@ TestShouldShowInfoBarPrompt( /*last_declined_time_delta=*/base::Days(1) + base::Microseconds(1), /*declined_count=*/12345, - /*expected=*/true); + /*expect_infobar_exists=*/true); // Never show the prompt if max prompt count is zero. EnableDefaultBrowserPromptRefreshFeatureWithParams( @@ -203,7 +203,7 @@ TestShouldShowInfoBarPrompt( /*last_declined_time_delta=*/std::nullopt, /*declined_count=*/std::nullopt, - /*expected=*/false); + /*expect_infobar_exists=*/false); // If max prompt count is 1, only show the prompt if declined count is unset. EnableDefaultBrowserPromptRefreshFeatureWithParams( @@ -213,11 +213,11 @@ TestShouldShowInfoBarPrompt( /*last_declined_time_delta=*/std::nullopt, /*declined_count=*/std::nullopt, - /*expected=*/true); + /*expect_infobar_exists=*/true); TestShouldShowInfoBarPrompt( /*last_declined_time_delta=*/base::Days(1) + base::Microseconds(1), /*declined_count=*/1, - /*expected=*/false); + /*expect_infobar_exists=*/false); // Show if the declined count is less than the max prompt count. EnableDefaultBrowserPromptRefreshFeatureWithParams( @@ -227,11 +227,11 @@ TestShouldShowInfoBarPrompt( /*last_declined_time_delta=*/base::Days(1) + base::Microseconds(1), /*declined_count=*/4, - /*expected=*/true); + /*expect_infobar_exists=*/true); TestShouldShowInfoBarPrompt( /*last_declined_time_delta=*/base::Days(1) + base::Microseconds(1), /*declined_count=*/5, - /*expected=*/false); + /*expect_infobar_exists=*/false); } TEST_F(DefaultBrowserPromptManagerTest, InfoBarRepromptDuration) { @@ -246,11 +246,11 @@ TestShouldShowInfoBarPrompt( /*last_declined_time_delta=*/base::Days(1), /*declined_count=*/1, - /*expected=*/false); + /*expect_infobar_exists=*/false); TestShouldShowInfoBarPrompt( /*last_declined_time_delta=*/base::Days(1) + base::Microseconds(1), /*declined_count=*/1, - /*expected=*/true); + /*expect_infobar_exists=*/true); // If the user has declined the prompt multiple times, the next reprompt // duration should be multiplied by the reprompt multiplier for each @@ -264,22 +264,22 @@ TestShouldShowInfoBarPrompt( /*last_declined_time_delta=*/base::Days(2), /*declined_count=*/2, - /*expected=*/false); + /*expect_infobar_exists=*/false); TestShouldShowInfoBarPrompt( /*last_declined_time_delta=*/base::Days(2) + base::Microseconds(1), /*declined_count=*/2, - /*expected=*/true); + /*expect_infobar_exists=*/true); // After the prompt has been declined a third time, only show the prompt // (1 day) * (2^2) = 4 days after it was last declined. TestShouldShowInfoBarPrompt( /*last_declined_time_delta=*/base::Days(4), /*declined_count=*/3, - /*expected=*/false); + /*expect_infobar_exists=*/false); TestShouldShowInfoBarPrompt( /*last_declined_time_delta=*/base::Days(4) + base::Microseconds(1), /*declined_count=*/3, - /*expected=*/true); + /*expect_infobar_exists=*/true); } TEST_F(DefaultBrowserPromptManagerTest, PromptHiddenWhenFeatureParamDisabled) { @@ -292,7 +292,7 @@ TestShouldShowInfoBarPrompt( /*last_declined_time_delta=*/std::nullopt, /*declined_count=*/std::nullopt, - /*expected=*/false); + /*expect_infobar_exists=*/false); } TEST_F(DefaultBrowserPromptManagerTest, AppMenuFeatureParamFalse) {
diff --git a/chrome/browser/ui/startup/google_api_keys_infobar_delegate.cc b/chrome/browser/ui/startup/google_api_keys_infobar_delegate.cc index c51929f..78ba37b 100644 --- a/chrome/browser/ui/startup/google_api_keys_infobar_delegate.cc +++ b/chrome/browser/ui/startup/google_api_keys_infobar_delegate.cc
@@ -22,8 +22,7 @@ new GoogleApiKeysInfoBarDelegate()))); } -GoogleApiKeysInfoBarDelegate::GoogleApiKeysInfoBarDelegate() - : ConfirmInfoBarDelegate() {} +GoogleApiKeysInfoBarDelegate::GoogleApiKeysInfoBarDelegate() = default; infobars::InfoBarDelegate::InfoBarIdentifier GoogleApiKeysInfoBarDelegate::GetIdentifier() const {
diff --git a/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc b/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc index fd9ef96c..2db6a48 100644 --- a/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc +++ b/chrome/browser/ui/startup/startup_browser_creator_browsertest.cc
@@ -317,7 +317,7 @@ // explicit profile given. IN_PROC_BROWSER_TEST_F(StartupBrowserCreatorTest, OpenURLsPopup) { std::vector<GURL> urls; - urls.push_back(GURL("http://localhost")); + urls.emplace_back("http://localhost"); // Note that in our testing we do not ever query the BrowserList for the "last // active" browser. That's because the browsers are set as "active" by @@ -2952,7 +2952,7 @@ protocol_handler.protocol = "web+test"; apps::FileHandler file_handler; file_handler.action = GURL(std::string(kStartUrl) + "/file_handler"); - file_handler.accept.push_back({}); + file_handler.accept.emplace_back(); file_handler.accept.back().mime_type = "text/plain"; file_handler.accept.back().file_extensions = {".txt"}; webapps::AppId app_id =
diff --git a/chrome/browser/ui/startup/web_app_info_recorder_utils.cc b/chrome/browser/ui/startup/web_app_info_recorder_utils.cc index 4dfeedc7..271e1de 100644 --- a/chrome/browser/ui/startup/web_app_info_recorder_utils.cc +++ b/chrome/browser/ui/startup/web_app_info_recorder_utils.cc
@@ -37,8 +37,7 @@ #include "components/keep_alive_registry/keep_alive_types.h" #include "components/keep_alive_registry/scoped_keep_alive.h" -namespace chrome { -namespace startup { +namespace chrome::startup { namespace { @@ -215,5 +214,4 @@ GetWebApps::Start(output_file, profile_base_name); } -} // namespace startup -} // namespace chrome +} // namespace chrome::startup
diff --git a/chrome/browser/ui/startup/web_app_startup_utils.cc b/chrome/browser/ui/startup/web_app_startup_utils.cc index 2e9b1ef..9d0ac224 100644 --- a/chrome/browser/ui/startup/web_app_startup_utils.cc +++ b/chrome/browser/ui/startup/web_app_startup_utils.cc
@@ -59,8 +59,7 @@ #include "third_party/blink/public/common/security/protocol_handler_security_level.h" #include "url/gurl.h" -namespace web_app { -namespace startup { +namespace web_app::startup { namespace { @@ -450,5 +449,4 @@ GetBrowserShutdownCompleteCallback() = std::move(callback); } -} // namespace startup -} // namespace web_app +} // namespace web_app::startup
diff --git a/chrome/browser/ui/tab_contents/chrome_web_contents_view_handle_drop.cc b/chrome/browser/ui/tab_contents/chrome_web_contents_view_handle_drop.cc index 99b224de..e8e2dd07 100644 --- a/chrome/browser/ui/tab_contents/chrome_web_contents_view_handle_drop.cc +++ b/chrome/browser/ui/tab_contents/chrome_web_contents_view_handle_drop.cc
@@ -20,6 +20,7 @@ #include "content/public/browser/web_contents_observer.h" #include "content/public/browser/web_contents_view_delegate.h" #include "content/public/common/drop_data.h" +#include "third_party/abseil-cpp/absl/cleanup/cleanup.h" #include "ui/base/clipboard/file_info.h" namespace { @@ -140,6 +141,11 @@ content::WebContents* web_contents, content::DropData drop_data, content::WebContentsViewDelegate::DropCompletionCallback callback) { + CHECK(callback); + absl::Cleanup cleanup = [&] { + std::move(callback).Run(std::move(drop_data)); + }; + enterprise_connectors::ContentAnalysisDelegate::Data data; Profile* profile = Profile::FromBrowserContext(web_contents->GetBrowserContext()); @@ -152,13 +158,11 @@ // If the enterprise policy is not enabled, make sure that the renderer // never forces a default action. drop_data.document_is_handling_drag = true; - std::move(callback).Run(std::move(drop_data)); return; } // If the page will not handle the drop, no need to perform content analysis. if (!drop_data.document_is_handling_drag) { - std::move(callback).Run(std::move(drop_data)); return; } @@ -180,6 +184,7 @@ base::DoNothing(); if (data.settings.block_until_verdict == enterprise_connectors::BlockUntilVerdict::kBlock) { + std::move(cleanup).Cancel(); scan_callback = std::move(callback); } @@ -200,8 +205,4 @@ &HandleDropScanData::ScanData, handle_drop_scan_data->GetWeakPtr(), std::move(files_scan_data))); } - - if (!callback.is_null()) { - std::move(callback).Run(std::move(drop_data)); - } }
diff --git a/chrome/browser/ui/tabs/existing_window_sub_menu_model_unittest.cc b/chrome/browser/ui/tabs/existing_window_sub_menu_model_unittest.cc index a6f0427..516db20 100644 --- a/chrome/browser/ui/tabs/existing_window_sub_menu_model_unittest.cc +++ b/chrome/browser/ui/tabs/existing_window_sub_menu_model_unittest.cc
@@ -76,7 +76,7 @@ class ExistingWindowSubMenuModelTest : public BrowserWithTestWindowTest { public: - ExistingWindowSubMenuModelTest() : BrowserWithTestWindowTest() {} + ExistingWindowSubMenuModelTest() = default; protected: std::unique_ptr<Browser> CreateTestBrowser(bool incognito, bool popup);
diff --git a/chrome/browser/ui/tabs/recent_tabs_builder_test_helper.cc b/chrome/browser/ui/tabs/recent_tabs_builder_test_helper.cc index d00f1b2..ae52642a2 100644 --- a/chrome/browser/ui/tabs/recent_tabs_builder_test_helper.cc +++ b/chrome/browser/ui/tabs/recent_tabs_builder_test_helper.cc
@@ -249,8 +249,8 @@ sort(tabs.begin(), tabs.end(), SortTabTimesByRecency); std::vector<std::u16string> titles; - for (size_t i = 0; i < tabs.size(); ++i) { - titles.push_back(tabs[i].title); + for (auto& tab : tabs) { + titles.push_back(tab.title); } return titles; }
diff --git a/chrome/browser/ui/tabs/recent_tabs_sub_menu_model_browsertest.cc b/chrome/browser/ui/tabs/recent_tabs_sub_menu_model_browsertest.cc index c2e5b8a..ae89ed5 100644 --- a/chrome/browser/ui/tabs/recent_tabs_sub_menu_model_browsertest.cc +++ b/chrome/browser/ui/tabs/recent_tabs_sub_menu_model_browsertest.cc
@@ -64,7 +64,7 @@ class TestRecentTabsMenuModelDelegate : public ui::MenuModelDelegate { public: explicit TestRecentTabsMenuModelDelegate(ui::MenuModel* model) - : model_(model), got_changes_(false) { + : model_(model) { model_->SetMenuModelDelegate(this); } @@ -87,7 +87,7 @@ private: raw_ptr<ui::MenuModel> model_; - bool got_changes_; + bool got_changes_ = false; }; struct ModelData {
diff --git a/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_controller.h b/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_controller.h index c96a1f5..d9c07fd 100644 --- a/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_controller.h +++ b/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_controller.h
@@ -15,6 +15,7 @@ // The API for performing updates to the SavedTabGroup feature. class SavedTabGroupController { + public: // Opens a Saved Tab Group in a specified browser and sets all of the required // state in the SavedTabGroupService. Returns the local group id that was // opened. If no group was opened, return nullopt. @@ -28,7 +29,10 @@ // true, add to the front of the tab group list and pin it, otherwise add to // the back. Returns the id of the saved group. virtual base::Uuid SaveGroup(const tab_groups::TabGroupId& group_id, - bool is_pinned = false) = 0; + bool is_pinned) = 0; + base::Uuid SaveGroup(const tab_groups::TabGroupId& group_id) { + return SaveGroup(group_id, false); + } // Unsaves a group. Finds the group_id in the list of saved tab groups and // removes it. Stops Listening to all tabs.
diff --git a/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_keyed_service.h b/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_keyed_service.h index ed7832f..b022a37 100644 --- a/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_keyed_service.h +++ b/chrome/browser/ui/tabs/saved_tab_groups/saved_tab_group_keyed_service.h
@@ -64,8 +64,9 @@ Browser* browser, const base::Uuid saved_group_guid, tab_groups::OpeningSource opening_source) override; + using SavedTabGroupController::SaveGroup; base::Uuid SaveGroup(const tab_groups::TabGroupId& group_id, - bool is_pinned = false) override; + bool is_pinned) override; void UnsaveGroup(const tab_groups::TabGroupId& group_id, ClosingSource closing_source) override; void PauseTrackingLocalTabGroup(
diff --git a/chrome/browser/ui/tabs/saved_tab_groups/tab_group_sync_delegate_browsertest.cc b/chrome/browser/ui/tabs/saved_tab_groups/tab_group_sync_delegate_browsertest.cc index cb0ca0c..878a992 100644 --- a/chrome/browser/ui/tabs/saved_tab_groups/tab_group_sync_delegate_browsertest.cc +++ b/chrome/browser/ui/tabs/saved_tab_groups/tab_group_sync_delegate_browsertest.cc
@@ -50,6 +50,7 @@ using testing::NotNull; +// THIS TEST MIGHT NEED TO BE DELETED class TabGroupSyncDelegateBrowserTest : public InProcessBrowserTest, public TabGroupSyncService::Observer { public: @@ -57,7 +58,7 @@ features_.InitWithFeatures( {tab_groups::kTabGroupsSaveV2, tab_groups::kTabGroupSyncServiceDesktopMigration}, - {tab_groups::kTabGroupsSaveUIUpdate}); + {}); } void OnWillBeDestroyed() override { @@ -306,6 +307,10 @@ GURL("http://www.google.com/1")); } +// SaveTabGroup with position set is always placed before the one without +// position set. If both have position set, the one with lower position number +// should place before. If both positions are the same or both are not set, the +// one with more recent update time should place before. // Regression test. See crbug.com/370013915. IN_PROC_BROWSER_TEST_F( TabGroupSyncDelegateBrowserTest, @@ -323,38 +328,56 @@ EXPECT_TRUE( browser()->tab_strip_model()->group_model()->ContainsTabGroup(local_id)); WaitUntilCallbackReceived(); - std::optional<SavedTabGroup> group_1 = service->GetGroup(local_id); - EXPECT_TRUE(group_1); + + // The first group is automatically set to 0. it should be first in the list. + std::optional<SavedTabGroup> locally_created_group_at_0 = + service->GetGroup(local_id); + ASSERT_TRUE(locally_created_group_at_0); + ASSERT_EQ(0, locally_created_group_at_0->position()); EXPECT_EQ(2u, saved_tab_group_bar->children().size()); - SavedTabGroup group_2(u"Group 2", tab_groups::TabGroupColorId::kPink, {}, 2); + // const std::u16string& title, + // const tab_groups::TabGroupColorId& color, + // const std::vector<SavedTabGroupTab>& urls, + // std::optional<size_t> position = std::nullopt, + SavedTabGroup group_with_position_set_2( + u"Group 2", // title + tab_groups::TabGroupColorId::kPink, // color + {}, // urls + 2 // position + ); SavedTabGroupTab tab2(GURL("about:blank"), u"about:blank", - group_2.saved_guid(), + group_with_position_set_2.saved_guid(), /*position=*/0); - group_2.AddTabLocally(tab2); + group_with_position_set_2.AddTabLocally(tab2); - SavedTabGroup group_3(u"Group 3", tab_groups::TabGroupColorId::kGreen, {}, - 10); + SavedTabGroup group_with_position_set_10( + u"Group 3", tab_groups::TabGroupColorId::kGreen, {}, 10); SavedTabGroupTab tab3(GURL("about:blank"), u"about:blank", - group_3.saved_guid(), + group_with_position_set_10.saved_guid(), /*position=*/0); - group_3.AddTabLocally(tab3); + group_with_position_set_10.AddTabLocally(tab3); - const base::Uuid sync_id_1 = group_1->saved_guid(); - const base::Uuid sync_id_2 = group_2.saved_guid(); - const base::Uuid sync_id_3 = group_3.saved_guid(); + const base::Uuid sync_id_1 = locally_created_group_at_0->saved_guid(); + const base::Uuid sync_id_2 = group_with_position_set_2.saved_guid(); + const base::Uuid sync_id_3 = group_with_position_set_10.saved_guid(); // FromSync calls are asynchronous, so wait for the task to complete. - model_->AddedFromSync(std::move(group_3)); + model_->AddedFromSync(std::move(group_with_position_set_10)); EXPECT_TRUE(base::test::RunUntil( [&]() { return service->GetGroup(sync_id_3).has_value(); })); EXPECT_EQ(3u, saved_tab_group_bar->children().size()); - model_->AddedFromSync(std::move(group_2)); + model_->AddedFromSync(std::move(group_with_position_set_2)); EXPECT_TRUE(base::test::RunUntil( [&]() { return service->GetGroup(sync_id_2).has_value(); })); EXPECT_EQ(4u, saved_tab_group_bar->children().size()); + // Make sure positions werent updated. + ASSERT_EQ(service->GetGroup(sync_id_1).value().position(), 0); + ASSERT_EQ(service->GetGroup(sync_id_2).value().position(), 2); + ASSERT_EQ(service->GetGroup(sync_id_3).value().position(), 10); + // Verify the ordering is group 1, group 2, group 3 EXPECT_TRUE(views::IsViewClass<SavedTabGroupButton>( saved_tab_group_bar->children()[0]));
diff --git a/chrome/browser/ui/tabs/saved_tab_groups/tab_group_sync_navigation_browser_test.cc b/chrome/browser/ui/tabs/saved_tab_groups/tab_group_sync_navigation_browser_test.cc index 433eec9..d1653f5 100644 --- a/chrome/browser/ui/tabs/saved_tab_groups/tab_group_sync_navigation_browser_test.cc +++ b/chrome/browser/ui/tabs/saved_tab_groups/tab_group_sync_navigation_browser_test.cc
@@ -100,7 +100,6 @@ std::vector<base::test::FeatureRef> disabled_features; enabled_features.push_back(tab_groups::kTabGroupsSaveV2); - enabled_features.push_back(tab_groups::kTabGroupsSaveUIUpdate); enabled_features.push_back( tab_groups::kTabGroupSyncServiceDesktopMigration);
diff --git a/chrome/browser/ui/tabs/saved_tab_groups/tab_group_sync_service_proxy_unittest.cc b/chrome/browser/ui/tabs/saved_tab_groups/tab_group_sync_service_proxy_unittest.cc index cd20466..887918eb 100644 --- a/chrome/browser/ui/tabs/saved_tab_groups/tab_group_sync_service_proxy_unittest.cc +++ b/chrome/browser/ui/tabs/saved_tab_groups/tab_group_sync_service_proxy_unittest.cc
@@ -35,7 +35,6 @@ std::vector<base::test::FeatureRef> disabled_features; enabled_features.push_back(tab_groups::kTabGroupsSaveV2); - enabled_features.push_back(tab_groups::kTabGroupsSaveUIUpdate); if (IsMigrationEnabled()) { enabled_features.push_back( @@ -45,7 +44,7 @@ feature_list_.InitWithFeatures(enabled_features, disabled_features); } - ~TabGroupSyncServiceProxyUnitTest() = default; + ~TabGroupSyncServiceProxyUnitTest() override = default; TabGroupSyncServiceProxyUnitTest(const TabGroupSyncServiceProxyUnitTest&) = delete; TabGroupSyncServiceProxyUnitTest& operator=(
diff --git a/chrome/browser/ui/tabs/tab_group_model.cc b/chrome/browser/ui/tabs/tab_group_model.cc index de50384..37a79a45 100644 --- a/chrome/browser/ui/tabs/tab_group_model.cc +++ b/chrome/browser/ui/tabs/tab_group_model.cc
@@ -52,7 +52,7 @@ void TabGroupModel::RemoveTabGroup(const tab_groups::TabGroupId& id) { CHECK(ContainsTabGroup(id)); - group_ids_.erase(base::ranges::remove(group_ids_, id)); + std::erase(group_ids_, id); groups_.erase(id); }
diff --git a/chrome/browser/ui/tabs/tab_strip_model.cc b/chrome/browser/ui/tabs/tab_strip_model.cc index aa8e789..3faa47e6 100644 --- a/chrome/browser/ui/tabs/tab_strip_model.cc +++ b/chrome/browser/ui/tabs/tab_strip_model.cc
@@ -2578,8 +2578,8 @@ DCHECK([&]() { for (int i = 0; i < GetTabCount(); ++i) { - tabs::TabInterface* tab = GetTabAtIndex(i); - if (tab->GetGroup().has_value() && tab->GetGroup().value() == new_group) { + const tabs::TabInterface* const tab = GetTabAtIndex(i); + if (tab->GetGroup() == new_group) { return false; } } @@ -3168,7 +3168,7 @@ // themselves. DCHECK([&]() { for (int i = 0; i < GetTabCount(); ++i) { - tabs::TabModel* tab = GetTabModelAtIndex(i); + const tabs::TabModel* const tab = GetTabModelAtIndex(i); if (tab->opener() == old_tab || tab->opener() == tab) { return false; }
diff --git a/chrome/browser/ui/tabs/tab_strip_model_unittest.cc b/chrome/browser/ui/tabs/tab_strip_model_unittest.cc index c2c65ec..95d8d10 100644 --- a/chrome/browser/ui/tabs/tab_strip_model_unittest.cc +++ b/chrome/browser/ui/tabs/tab_strip_model_unittest.cc
@@ -224,7 +224,7 @@ void PushDeactivateState(WebContents* contents, const ui::ListSelectionModel& old_model) { - states_.push_back(State(contents, old_model.active(), DEACTIVATE)); + states_.emplace_back(contents, old_model.active(), DEACTIVATE); } void PushSelectState(content::WebContents* new_contents, @@ -250,11 +250,11 @@ } void PushCloseState(WebContents* contents, int index) { - states_.push_back(State(contents, index, CLOSE)); + states_.emplace_back(contents, index, CLOSE); } void PushDetachState(WebContents* contents, int index, bool was_active) { - states_.push_back(State(contents, index, DETACH)); + states_.emplace_back(contents, index, DETACH); } void PushReplaceState(WebContents* old_contents,
diff --git a/chrome/browser/ui/toolbar/app_menu_icon_controller_unittest.cc b/chrome/browser/ui/toolbar/app_menu_icon_controller_unittest.cc index de48c010d..2c8a2f66 100644 --- a/chrome/browser/ui/toolbar/app_menu_icon_controller_unittest.cc +++ b/chrome/browser/ui/toolbar/app_menu_icon_controller_unittest.cc
@@ -76,18 +76,19 @@ // builds, there does not appear to be an easy way to run the test as if it were // a different channel. class AppMenuIconControllerTest : public ::testing::TestWithParam<int> { - protected: - AppMenuIconControllerTest() -#if BUILDFLAG(IS_WIN) - : install_details_(false, GetParam()) -#endif - { - } - + public: AppMenuIconControllerTest(const AppMenuIconControllerTest&) = delete; AppMenuIconControllerTest& operator=(const AppMenuIconControllerTest&) = delete; + protected: + AppMenuIconControllerTest() +#if BUILDFLAG(IS_WIN) + : install_details_(false, GetParam()){} +#else + = default; +#endif + UpgradeDetector* upgrade_detector() { return &upgrade_detector_; } Profile* profile() { return &profile_; }
diff --git a/chrome/browser/ui/toolbar/app_menu_model_unittest.cc b/chrome/browser/ui/toolbar/app_menu_model_unittest.cc index f154907f..d5da7e9e 100644 --- a/chrome/browser/ui/toolbar/app_menu_model_unittest.cc +++ b/chrome/browser/ui/toolbar/app_menu_model_unittest.cc
@@ -70,8 +70,7 @@ // Error class has a menu item. class MenuError : public GlobalError { public: - explicit MenuError(int command_id) - : command_id_(command_id), execute_count_(0) {} + explicit MenuError(int command_id) : command_id_(command_id) {} MenuError(const MenuError&) = delete; MenuError& operator=(const MenuError&) = delete; @@ -90,7 +89,7 @@ private: int command_id_; - int execute_count_; + int execute_count_ = 0; }; class FakeIconDelegate : public AppMenuIconController::Delegate { @@ -155,10 +154,7 @@ TestAppMenuModel(ui::AcceleratorProvider* provider, Browser* browser, AppMenuIconController* app_menu_icon_controller) - : AppMenuModel(provider, browser, app_menu_icon_controller), - execute_count_(0), - checked_count_(0), - enable_count_(0) {} + : AppMenuModel(provider, browser, app_menu_icon_controller) {} // Testing overrides to ui::SimpleMenuModel::Delegate: bool IsCommandIdChecked(int command_id) const override { @@ -178,20 +174,20 @@ ++execute_count_; } - int execute_count_; - mutable int checked_count_; - mutable int enable_count_; + int execute_count_ = 0; + mutable int checked_count_ = 0; + mutable int enable_count_ = 0; }; class TestLogMetricsAppMenuModel : public AppMenuModel { public: TestLogMetricsAppMenuModel(ui::AcceleratorProvider* provider, Browser* browser) - : AppMenuModel(provider, browser), log_metrics_count_(0) {} + : AppMenuModel(provider, browser) {} void LogMenuAction(AppMenuAction action_id) override { log_metrics_count_++; } - int log_metrics_count_; + int log_metrics_count_ = 0; }; TEST_F(AppMenuModelTest, Basics) {
diff --git a/chrome/browser/ui/toolbar/back_forward_menu_model_unittest.cc b/chrome/browser/ui/toolbar/back_forward_menu_model_unittest.cc index 3c08e907..82c1322 100644 --- a/chrome/browser/ui/toolbar/back_forward_menu_model_unittest.cc +++ b/chrome/browser/ui/toolbar/back_forward_menu_model_unittest.cc
@@ -43,9 +43,7 @@ class TestBackForwardMenuDelegate : public ui::MenuModelDelegate { public: explicit TestBackForwardMenuDelegate(base::OnceClosure quit_closure) - : was_icon_changed_called_(false), - was_menu_model_changed_called_(false), - quit_closure_(std::move(quit_closure)) {} + : quit_closure_(std::move(quit_closure)) {} TestBackForwardMenuDelegate(const TestBackForwardMenuDelegate&) = delete; TestBackForwardMenuDelegate& operator=(const TestBackForwardMenuDelegate&) = @@ -67,8 +65,8 @@ } private: - bool was_icon_changed_called_; - bool was_menu_model_changed_called_; + bool was_icon_changed_called_ = false; + bool was_menu_model_changed_called_ = false; base::OnceClosure quit_closure_; };
diff --git a/chrome/browser/ui/toolbar/toolbar_actions_model_unittest.cc b/chrome/browser/ui/toolbar/toolbar_actions_model_unittest.cc index 19d064c..0f5b920 100644 --- a/chrome/browser/ui/toolbar/toolbar_actions_model_unittest.cc +++ b/chrome/browser/ui/toolbar/toolbar_actions_model_unittest.cc
@@ -99,19 +99,16 @@ const raw_ptr<ToolbarActionsModel> model_; - size_t inserted_count_; - size_t removed_count_; - size_t initialized_count_; + size_t inserted_count_ = 0; + size_t removed_count_ = 0; + size_t initialized_count_ = 0; std::vector<ToolbarActionsModel::ActionId> last_pinned_action_ids_; }; ToolbarActionsModelTestObserver::ToolbarActionsModelTestObserver( ToolbarActionsModel* model) - : model_(model), - inserted_count_(0), - removed_count_(0), - initialized_count_(0) { + : model_(model) { model_->AddObserver(this); } @@ -323,10 +320,10 @@ testing::AssertionResult ToolbarActionsModelUnitTest::AddAndVerifyExtensions( const extensions::ExtensionList& extensions) { - for (auto iter = extensions.begin(); iter != extensions.end(); ++iter) { - if (!AddExtension(*iter)) { + for (const auto& extension : extensions) { + if (!AddExtension(extension)) { return testing::AssertionFailure() - << "Failed to install extension: " << (*iter)->name(); + << "Failed to install extension: " << extension->name(); } } return testing::AssertionSuccess();
diff --git a/chrome/browser/ui/unload_controller.cc b/chrome/browser/ui/unload_controller.cc index 8d70e55..4d226153 100644 --- a/chrome/browser/ui/unload_controller.cc +++ b/chrome/browser/ui/unload_controller.cc
@@ -278,9 +278,8 @@ // case some of this code might not have an effect, but it's still useful to, // for example, call the notification(s). tabs_needing_before_unload_fired_.clear(); - for (auto it = tabs_needing_unload_fired_.begin(); - it != tabs_needing_unload_fired_.end(); ++it) { - DevToolsWindow::OnPageCloseCanceled(*it); + for (const auto& it : tabs_needing_unload_fired_) { + DevToolsWindow::OnPageCloseCanceled(it); } tabs_needing_unload_fired_.clear(); if (is_calling_before_unload_handlers()) {
diff --git a/chrome/browser/ui/views/accessibility/caption_bubble_session_observer_views.cc b/chrome/browser/ui/views/accessibility/caption_bubble_session_observer_views.cc index a36f2e5a..204f663 100644 --- a/chrome/browser/ui/views/accessibility/caption_bubble_session_observer_views.cc +++ b/chrome/browser/ui/views/accessibility/caption_bubble_session_observer_views.cc
@@ -16,8 +16,7 @@ CaptionBubbleSessionObserverViews::CaptionBubbleSessionObserverViews( content::WebContents* web_contents) - : CaptionBubbleSessionObserver(), - content::WebContentsObserver(web_contents), + : content::WebContentsObserver(web_contents), web_contents_id_(web_contents->GetBrowserContext()->UniqueId()) {} CaptionBubbleSessionObserverViews::~CaptionBubbleSessionObserverViews() =
diff --git a/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_panel.cc b/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_panel.cc index 11244b43..a5eb80f 100644 --- a/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_panel.cc +++ b/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_panel.cc
@@ -253,10 +253,9 @@ if (service) { std::vector<extensions::SavedFileEntry> retained_file_entries = service->GetAllFileEntries(app_->id()); - for (std::vector<extensions::SavedFileEntry>::const_iterator it = - retained_file_entries.begin(); - it != retained_file_entries.end(); ++it) { - retained_file_paths.push_back(it->path.LossyDisplayName()); + for (const auto& retained_file_entrie : retained_file_entries) { + retained_file_paths.push_back( + retained_file_entrie.path.LossyDisplayName()); } } }
diff --git a/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc b/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc index bf24ab5d..182c636 100644 --- a/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc +++ b/chrome/browser/ui/views/apps/chrome_native_app_window_views.cc
@@ -198,15 +198,14 @@ CHECK(!is_kiosk_app_mode || zoom::ZoomController::FromWebContents(web_view()->GetWebContents())); - for (auto iter = accelerator_table.begin(); iter != accelerator_table.end(); - ++iter) { + for (const auto& iter : accelerator_table) { if (is_kiosk_app_mode && - !IsCommandAllowedInAppMode(iter->second, /* is_popup */ false)) { + !IsCommandAllowedInAppMode(iter.second, /* is_popup */ false)) { continue; } focus_manager->RegisterAccelerator( - iter->first, ui::AcceleratorManager::kNormalPriority, this); + iter.first, ui::AcceleratorManager::kNormalPriority, this); } }
diff --git a/chrome/browser/ui/views/autofill/payments/local_card_migration_icon_view.cc b/chrome/browser/ui/views/autofill/payments/local_card_migration_icon_view.cc index f10e7333..a79f678 100644 --- a/chrome/browser/ui/views/autofill/payments/local_card_migration_icon_view.cc +++ b/chrome/browser/ui/views/autofill/payments/local_card_migration_icon_view.cc
@@ -18,7 +18,7 @@ #include "components/vector_icons/vector_icons.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/metadata/metadata_impl_macros.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/animation/ink_drop.h" @@ -132,7 +132,7 @@ LocalCardMigrationFlowStep::MIGRATION_FAILED) { return vector_icons::kBlockedBadgeIcon; } - return gfx::VectorIcon::EmptyIcon(); + return gfx::kNoneIcon; } ManageMigrationUiController* LocalCardMigrationIconView::GetController() const {
diff --git a/chrome/browser/ui/views/autofill/payments/save_card_bubble_views_browsertest.cc b/chrome/browser/ui/views/autofill/payments/save_card_bubble_views_browsertest.cc index c66a671..eda2f65 100644 --- a/chrome/browser/ui/views/autofill/payments/save_card_bubble_views_browsertest.cc +++ b/chrome/browser/ui/views/autofill/payments/save_card_bubble_views_browsertest.cc
@@ -1851,7 +1851,7 @@ // Ensure that a strike was added. histogram_tester.ExpectUniqueSample( "Autofill.StrikeDatabase.NthStrikeAdded.CreditCardSave", - /*sample=*/(1), /*count=*/1); + /*sample=*/(1), /*expected_bucket_count=*/1); } // Tests the local save bubble. Ensures that clicking the [X] button @@ -1893,7 +1893,7 @@ // Ensure that a strike was added. histogram_tester.ExpectUniqueSample( "Autofill.StrikeDatabase.NthStrikeAdded.CreditCardSave", - /*sample=*/(1), /*count=*/1); + /*sample=*/(1), /*expected_bucket_count=*/1); } // Tests the upload save bubble. Ensures that clicking the [X] button @@ -1942,7 +1942,7 @@ // The sample logged is the Nth strike added, or (i+1). histogram_tester.ExpectUniqueSample( "Autofill.StrikeDatabase.NthStrikeAdded.CreditCardSave", - /*sample=*/(i + 1), /*count=*/1); + /*sample=*/(i + 1), /*expected_bucket_count=*/1); } base::HistogramTester histogram_tester; @@ -2009,7 +2009,7 @@ // The sample logged is the Nth strike added, or (i+1). histogram_tester.ExpectUniqueSample( "Autofill.StrikeDatabase.NthStrikeAdded.CreditCardSave", - /*sample=*/(i + 1), /*count=*/1); + /*sample=*/(i + 1), /*expected_bucket_count=*/1); } base::HistogramTester histogram_tester;
diff --git a/chrome/browser/ui/views/autofill/popup/autofill_ai/popup_row_autofill_ai_feedback_view_unittest.cc b/chrome/browser/ui/views/autofill/popup/autofill_ai/popup_row_autofill_ai_feedback_view_unittest.cc index 418b149..2f4c9213 100644 --- a/chrome/browser/ui/views/autofill/popup/autofill_ai/popup_row_autofill_ai_feedback_view_unittest.cc +++ b/chrome/browser/ui/views/autofill/popup/autofill_ai/popup_row_autofill_ai_feedback_view_unittest.cc
@@ -134,7 +134,7 @@ // Assert thumbs up button callback is run when clicked. EXPECT_CALL(controller(), PerformButtonActionForSuggestion( - /*line_number=*/0, + /*index=*/0, VariantWith<AutofillAiSuggestionButtonAction>( AutofillAiSuggestionButtonAction::kThumbsUpClicked))); // In test env we have to manually set the bounds when a view becomes visible. @@ -152,7 +152,7 @@ // Assert thumbs down button callback is run when clicked. EXPECT_CALL(controller(), PerformButtonActionForSuggestion( - /*line_number=*/0, + /*index=*/0, VariantWith<AutofillAiSuggestionButtonAction>( AutofillAiSuggestionButtonAction::kThumbsDownClicked))); generator().MoveMouseTo( @@ -190,7 +190,7 @@ EXPECT_CALL(controller(), PerformButtonActionForSuggestion( - /*line_number=*/0, + /*index=*/0, VariantWith<AutofillAiSuggestionButtonAction>( AutofillAiSuggestionButtonAction::kLearnMoreClicked)));
diff --git a/chrome/browser/ui/views/autofill/popup/lazy_loading_image_view.cc b/chrome/browser/ui/views/autofill/popup/lazy_loading_image_view.cc index 5a2a8c37..63dcaa9 100644 --- a/chrome/browser/ui/views/autofill/popup/lazy_loading_image_view.cc +++ b/chrome/browser/ui/views/autofill/popup/lazy_loading_image_view.cc
@@ -25,7 +25,7 @@ LazyLoadingImageView::~LazyLoadingImageView() = default; void LazyLoadingImageView::OnLoadSuccess(const gfx::Image& image) { - image_->SetImage(image.AsImageSkia()); + image_->SetImage(ui::ImageModel::FromImage(image)); } void LazyLoadingImageView::OnPaint(gfx::Canvas* canvas) {
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc index da47ec7..8610044 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc +++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view_test.cc
@@ -158,17 +158,16 @@ // Waits for a dialog to terminate. class DialogCloseWaiter : public views::WidgetObserver { public: - explicit DialogCloseWaiter(views::Widget* dialog) : dialog_closed_(false) { + explicit DialogCloseWaiter(views::Widget* dialog) { dialog->AddObserver(this); } DialogCloseWaiter(const DialogCloseWaiter&) = delete; DialogCloseWaiter& operator=(const DialogCloseWaiter&) = delete; - ~DialogCloseWaiter() override { - // It is not necessary to remove |this| from the dialog's observer, since - // the dialog is destroyed before this waiter. - } + // It is not necessary to remove |this| from the dialog's observer, since the + // dialog is destroyed before this waiter. + ~DialogCloseWaiter() override = default; void WaitForDialogClose() { if (dialog_closed_) { @@ -188,15 +187,14 @@ } } - bool dialog_closed_; + bool dialog_closed_ = false; base::RepeatingClosure quit_closure_; }; // Waits for a views::Widget to receive a Tab key. class TabKeyWaiter : public ui::EventHandler { public: - explicit TabKeyWaiter(views::Widget* widget) - : widget_(widget), received_tab_(false) { + explicit TabKeyWaiter(views::Widget* widget) : widget_(widget) { widget_->GetNativeWindow()->AddPreTargetHandler(this); } @@ -229,7 +227,7 @@ } raw_ptr<views::Widget> widget_; - bool received_tab_; + bool received_tab_ = false; base::RepeatingClosure quit_closure_; }; @@ -1522,8 +1520,7 @@ class BookmarkBarViewTest15 : public BookmarkBarViewEventTestBase { public: BookmarkBarViewTest15() - : deleted_menu_id_(0), - observer_(CreateEventTask(this, &BookmarkBarViewTest15::Step3)) {} + : observer_(CreateEventTask(this, &BookmarkBarViewTest15::Step3)) {} protected: void DoTestOnMessageLoop() override { @@ -1574,7 +1571,7 @@ Done(); } - int deleted_menu_id_; + int deleted_menu_id_ = 0; BookmarkContextMenuNotificationObserver observer_; };
diff --git a/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_bar.cc b/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_bar.cc index 97e854f..be2a152 100644 --- a/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_bar.cc +++ b/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_bar.cc
@@ -650,7 +650,7 @@ RemoveChildViewT(button); } - InvalidateLayout(); + SavedTabGroupReordered(); } void SavedTabGroupBar::SavedTabGroupReordered() {
diff --git a/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_bar_browsertest.cc b/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_bar_browsertest.cc index 48f9820..704c24f 100644 --- a/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_bar_browsertest.cc +++ b/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_bar_browsertest.cc
@@ -44,7 +44,7 @@ if (GetParam()) { features_.InitWithFeatures( {tab_groups::kTabGroupSyncServiceDesktopMigration, - tab_groups::kTabGroupsSaveUIUpdate, tab_groups::kTabGroupsSaveV2}, + tab_groups::kTabGroupsSaveV2}, {}); } else { features_.InitWithFeatures(
diff --git a/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_bar_unittest.cc b/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_bar_unittest.cc index c77c3898..ca9a8a0 100644 --- a/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_bar_unittest.cc +++ b/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_bar_unittest.cc
@@ -53,23 +53,13 @@ const tab_groups::TabGroupColorId kNewColor = tab_groups::TabGroupColorId::kRed; } // anonymous namespace -class SavedTabGroupBarUnitTest : public TestWithBrowserView, - public ::testing::WithParamInterface<bool> { +class SavedTabGroupBarUnitTest : public TestWithBrowserView { public: SavedTabGroupBarUnitTest() { - if (IsV2UIEnabled()) { - feature_list_.InitWithFeatures( - /*enabled_features=*/{tab_groups::kTabGroupsSaveUIUpdate, - data_sharing::features::kDataSharingFeature}, - {}); - } else { - feature_list_.InitWithFeatures( - /*enabled_features=*/{data_sharing::features::kDataSharingFeature}, - {tab_groups::kTabGroupsSaveUIUpdate}); - } + feature_list_.InitWithFeatures( + /*enabled_features=*/{data_sharing::features::kDataSharingFeature}, {}); } - bool IsV2UIEnabled() const { return GetParam(); } SavedTabGroupBar* saved_tab_group_bar() { return saved_tab_group_bar_.get(); } TabGroupSyncService* service() { return tab_groups::SavedTabGroupUtils::GetServiceForProfile( @@ -228,54 +218,7 @@ std::unique_ptr<STGEverythingMenu> everything_menu_; }; -TEST_P(STGEverythingMenuUnitTest, TabGroupItemsSortedByCreationTime) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - - // Only the "Create new tab group" is added. - EXPECT_EQ(menu_model()->GetItemCount(), 1u); - - // Add three test groups. - const std::u16string title_1 = u"test_title_1"; - const std::u16string title_2 = u"test_title_2"; - const std::u16string title_3 = u"test_title_3"; - - SavedTabGroup group_1 = - tab_groups::SavedTabGroupUtils::CreateSavedTabGroupFromLocalId( - CreateNewGroupInBrowser()); - SavedTabGroup group_2 = - tab_groups::SavedTabGroupUtils::CreateSavedTabGroupFromLocalId( - CreateNewGroupInBrowser()); - SavedTabGroup group_3 = - tab_groups::SavedTabGroupUtils::CreateSavedTabGroupFromLocalId( - CreateNewGroupInBrowser()); - - EnforceGroupSaved(group_1); - EnforceGroupSaved(group_2); - EnforceGroupSaved(group_3); - - // update the titles - UpdateTitle(group_1, title_1); - UpdateTitle(group_2, title_2); - UpdateTitle(group_3, title_3); - - // A separator is also added. - auto model = menu_model(); - EXPECT_EQ(model->GetItemCount(), 5u); - - // The three added tab group items starts from model index 2. They are sorted - // by most recent created first. - EXPECT_EQ(model->GetLabelAt(2), title_3); - EXPECT_EQ(model->GetLabelAt(3), title_2); - EXPECT_EQ(model->GetLabelAt(4), title_1); -} - -TEST_P(SavedTabGroupBarUnitTest, AddsButtonFromModelAdd) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - +TEST_F(SavedTabGroupBarUnitTest, AddsButtonFromModelAdd) { // There's always an overflow button in the saved tab group bar. EXPECT_EQ(1u, saved_tab_group_bar()->children().size()); @@ -292,12 +235,11 @@ } } -TEST_P(SavedTabGroupBarUnitTest, EverthingButtonAlwaysVisibleForV2) { +TEST_F(SavedTabGroupBarUnitTest, EverthingButtonAlwaysVisibleForV2) { // Verify the initial count of saved tab group buttons. EXPECT_EQ(1u, saved_tab_group_bar()->children().size()); const views::View* overflow_button = saved_tab_group_bar()->children()[0]; - if (IsV2UIEnabled()) { // Everything button shows by default. saved_tab_group_bar()->SetBounds( 0, 2, saved_tab_group_bar()->CalculatePreferredWidthRestrictedBy(400), @@ -320,124 +262,9 @@ 0, 2, saved_tab_group_bar()->CalculatePreferredWidthRestrictedBy(400), 2); EXPECT_TRUE(overflow_button->GetVisible()); - } else { - saved_tab_group_bar()->SetBounds( - 0, 2, saved_tab_group_bar()->CalculatePreferredWidthRestrictedBy(400), - 2); - EXPECT_FALSE(overflow_button->GetVisible()); - } } -TEST_P(SavedTabGroupBarUnitTest, OverflowMenuVisibleWhenFifthButtonAdded) { - if (IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V2"; - } - - // The first view should be an invisible overflow menu. - ASSERT_EQ(1u, saved_tab_group_bar()->children().size()); - - const views::View* overflow_button = saved_tab_group_bar()->children()[0]; - EXPECT_FALSE(overflow_button->GetVisible()); - - // Verify the overflow button is still hidden. - Add4GroupsFromLocal(); - EXPECT_FALSE(overflow_button->GetVisible()); - EXPECT_EQ(5u, saved_tab_group_bar()->children().size()); - - // Verify that the overflow button is visible when a 5th button is added and - // that the 5th button is not visible. - EnforceGroupSaved(SavedTabGroupUtils::CreateSavedTabGroupFromLocalId( - CreateNewGroupInBrowser())); - - // Layout the buttons. - saved_tab_group_bar()->SetBounds( - 0, 2, saved_tab_group_bar()->CalculatePreferredWidthRestrictedBy(400), 2); - - EXPECT_TRUE(overflow_button->GetVisible()); - EXPECT_FALSE(saved_tab_group_bar()->children()[4]->GetVisible()); - EXPECT_EQ(6u, saved_tab_group_bar()->children().size()); -} - -// Verifies that when a 5th saved group is removed, the overflow menu is not -// visible. -TEST_P(SavedTabGroupBarUnitTest, OverflowMenuHiddenWhenFifthButtonRemoved) { - if (IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V2"; - } - - // The first view should be an invisible overflow menu. - ASSERT_EQ(1u, saved_tab_group_bar()->children().size()); - - const views::View* overflow_button = saved_tab_group_bar()->children()[0]; - EXPECT_FALSE(overflow_button->GetVisible()); - - // Verify that the overflow button is visible when a 5th button is added and - // that the 5th button is not visible. - Add4GroupsFromLocal(); - - const base::Uuid& sync_id = - EnforceGroupSaved(SavedTabGroupUtils::CreateSavedTabGroupFromLocalId( - CreateNewGroupInBrowser())); - - // Layout the buttons. - saved_tab_group_bar()->SetBounds( - 0, 2, saved_tab_group_bar()->CalculatePreferredWidthRestrictedBy(400), 2); - - EXPECT_TRUE(overflow_button->GetVisible()); - EXPECT_FALSE(saved_tab_group_bar()->children()[4]->GetVisible()); - EXPECT_EQ(6u, saved_tab_group_bar()->children().size()); - - service()->RemoveGroup(sync_id); - - // Layout the buttons. - saved_tab_group_bar()->SetBounds( - 0, 2, saved_tab_group_bar()->CalculatePreferredWidthRestrictedBy(400), 2); - - EXPECT_FALSE(overflow_button->GetVisible()); - EXPECT_EQ(5u, saved_tab_group_bar()->children().size()); -} - -// Verifies that when a 5th saved group is added and the first group is removed, -// the overflow menu is not visible and the 5th button is visible. -TEST_P(SavedTabGroupBarUnitTest, OverflowMenuHiddenWhenFirstButtonRemoved) { - if (IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V2"; - } - - // The first view should be an invisible overflow menu. - ASSERT_EQ(1u, saved_tab_group_bar()->children().size()); - - const views::View* overflow_button = saved_tab_group_bar()->children()[0]; - EXPECT_FALSE(overflow_button->GetVisible()); - - // Verify that the overflow button is visible when a 5th button is added and - // that the 5th button is not visible. - Add4GroupsFromLocal(); - - const base::Uuid& sync_id = - EnforceGroupSaved(SavedTabGroupUtils::CreateSavedTabGroupFromLocalId( - CreateNewGroupInBrowser())); - - // Layout the buttons. - saved_tab_group_bar()->SetBounds( - 0, 2, saved_tab_group_bar()->CalculatePreferredWidthRestrictedBy(400), 2); - - EXPECT_TRUE(overflow_button->GetVisible()); - EXPECT_FALSE(saved_tab_group_bar()->children()[4]->GetVisible()); - EXPECT_EQ(6u, saved_tab_group_bar()->children().size()); - - service()->RemoveGroup(sync_id); - - // Layout the buttons. - saved_tab_group_bar()->SetBounds( - 0, 2, saved_tab_group_bar()->CalculatePreferredWidthRestrictedBy(400), 2); - - EXPECT_FALSE(overflow_button->GetVisible()); - EXPECT_TRUE(saved_tab_group_bar()->children()[3]->GetVisible()); - EXPECT_EQ(5u, saved_tab_group_bar()->children().size()); -} - -TEST_P(SavedTabGroupBarUnitTest, BarsWithSameModelsHaveSameButtons) { +TEST_F(SavedTabGroupBarUnitTest, BarsWithSameModelsHaveSameButtons) { EnforceGroupSaved(SavedTabGroupUtils::CreateSavedTabGroupFromLocalId( CreateNewGroupInBrowser())); @@ -449,7 +276,7 @@ another_tab_group_bar_on_same_model.children().size()); } -TEST_P(SavedTabGroupBarUnitTest, RemoveButtonFromModelRemove) { +TEST_F(SavedTabGroupBarUnitTest, RemoveButtonFromModelRemove) { AddTabToBrowser(browser(), TabStripModel::kNoTab); { // Remove the group and expect no buttons except the overflow menu. const base::Uuid sync_id = @@ -476,11 +303,7 @@ EXPECT_EQ(1u, saved_tab_group_bar()->children().size()); } -TEST_P(SavedTabGroupBarUnitTest, UpdatedVisualDataMakesChangeToSpecificView) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - +TEST_F(SavedTabGroupBarUnitTest, UpdatedVisualDataMakesChangeToSpecificView) { auto pinned_local_id = LocalIDFromSyncID(AddGroupFromLocal()); auto unpinned_sync_id = AddGroupFromLocal(); @@ -501,29 +324,18 @@ SavedTabGroupButton* new_button_2 = views::AsViewClass<SavedTabGroupButton>( saved_tab_group_bar()->children()[1]); - if (IsV2UIEnabled()) { ASSERT_TRUE(!!new_button_1); ASSERT_FALSE(!!new_button_2); EXPECT_EQ(new_button_1->GetText(), kNewTitle); EXPECT_EQ(new_button_1->tab_group_color_id(), kNewColor); - } else { - ASSERT_TRUE(!!new_button_1); - ASSERT_TRUE(!!new_button_2); - - EXPECT_EQ(new_button_1->GetText(), kNewTitle); - EXPECT_EQ(new_button_1->tab_group_color_id(), kNewColor); - EXPECT_EQ(new_button_2->GetText(), kNewTitle); - EXPECT_EQ(new_button_2->tab_group_color_id(), kNewColor); - } } -TEST_P(SavedTabGroupBarUnitTest, MoveButtonFromModelMove) { +TEST_F(SavedTabGroupBarUnitTest, MoveButtonFromModelMove) { const base::Uuid sync_id_1 = AddGroupFromLocal(); const base::Uuid sync_id_2 = AddGroupFromLocal(); const base::Uuid sync_id_3 = AddGroupFromLocal(); - if (IsV2UIEnabled()) { ASSERT_THAT(GetButtonGUIDs(), testing::ElementsAre(sync_id_3, sync_id_2, sync_id_1)); service()->UpdateGroupPosition(sync_id_2, std::nullopt, 2); @@ -535,122 +347,10 @@ service()->UpdateGroupPosition(sync_id_2, std::nullopt, 1); EXPECT_THAT(GetButtonGUIDs(), testing::ElementsAre(sync_id_3, sync_id_2, sync_id_1)); - } else { - ASSERT_THAT(GetButtonGUIDs(), - testing::ElementsAre(sync_id_1, sync_id_2, sync_id_3)); - service()->UpdateGroupPosition(sync_id_2, std::nullopt, 2); - EXPECT_THAT(GetButtonGUIDs(), - testing::ElementsAre(sync_id_1, sync_id_3, sync_id_2)); - service()->UpdateGroupPosition(sync_id_2, std::nullopt, 0); - EXPECT_THAT(GetButtonGUIDs(), - testing::ElementsAre(sync_id_2, sync_id_1, sync_id_3)); - service()->UpdateGroupPosition(sync_id_2, std::nullopt, 1); - EXPECT_THAT(GetButtonGUIDs(), - testing::ElementsAre(sync_id_1, sync_id_2, sync_id_3)); - } -} - -// If the restriction is exactly the expected size all should be visible -TEST_P(SavedTabGroupBarUnitTest, CalculatePreferredWidthRestrictedByExactSize) { - if (IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - - Add4GroupsFromLocal(); - - int exact_width = GetWidthOfButtonsAndPadding(); - int calculated_width = - saved_tab_group_bar()->CalculatePreferredWidthRestrictedBy(exact_width); - EXPECT_EQ(exact_width, calculated_width); - - // After 4 buttons have been added (excluding the invisible overflow), all - // subsequent buttons will be hidden. Instead an overflow menu will appear - // which will house the hidden buttons. - EnforceGroupSaved(SavedTabGroupUtils::CreateSavedTabGroupFromLocalId( - CreateNewGroupInBrowser())); - - // Layout the buttons. - saved_tab_group_bar()->SetBounds( - 0, 2, saved_tab_group_bar()->CalculatePreferredWidthRestrictedBy(400), 2); - - // Update the `new_width` to take the buttons into account. - int new_width = GetWidthOfButtonsAndPadding(); - calculated_width = - saved_tab_group_bar()->CalculatePreferredWidthRestrictedBy(new_width); - - EXPECT_LT(exact_width, new_width); - EXPECT_EQ(new_width, calculated_width); -} - -// If the restriction is more than the expected size all should be visible -TEST_P(SavedTabGroupBarUnitTest, - CalculatePreferredWidthRestrictedByLargerSize) { - if (IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - - Add4GroupsFromLocal(); - int exact_width = GetWidthOfButtonsAndPadding(); - - EXPECT_EQ(exact_width, - saved_tab_group_bar()->CalculatePreferredWidthRestrictedBy( - exact_width + 1)); - - // After 4 buttons have been added (excluding the invisible overflow), all - // subsequent buttons will be hidden. Instead an overflow menu will appear - // which will house the hidden buttons. - EnforceGroupSaved(SavedTabGroupUtils::CreateSavedTabGroupFromLocalId( - CreateNewGroupInBrowser())); - - // Layout the buttons. - saved_tab_group_bar()->SetBounds( - 0, 2, saved_tab_group_bar()->CalculatePreferredWidthRestrictedBy(400), 2); - int new_width = GetWidthOfButtonsAndPadding(); - int actual_width = - saved_tab_group_bar()->CalculatePreferredWidthRestrictedBy(new_width + 1); - - EXPECT_LT(exact_width, new_width); - EXPECT_EQ(new_width, actual_width); -} - -// If the restriction is 1 less than the size the last button should not be -// visible, and second to last should be visible. -TEST_P(SavedTabGroupBarUnitTest, - CalculatePreferredWidthRestrictedBySmallerSize) { - if (IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - - Add4GroupsFromLocal(); - int exact_width = GetWidthOfButtonsAndPadding(); - - EXPECT_GT(exact_width, - saved_tab_group_bar()->CalculatePreferredWidthRestrictedBy( - exact_width - 1)); - - // After 4 buttons have been added (excluding the invisible overflow), all - // subsequent buttons will be hidden. Instead an overflow menu will appear - // which will house the hidden buttons. - EnforceGroupSaved(SavedTabGroupUtils::CreateSavedTabGroupFromLocalId( - CreateNewGroupInBrowser())); - - // Layout the buttons. - saved_tab_group_bar()->SetBounds( - 0, 2, saved_tab_group_bar()->CalculatePreferredWidthRestrictedBy(400), 2); - int new_width = GetWidthOfButtonsAndPadding(); - int actual_width = - saved_tab_group_bar()->CalculatePreferredWidthRestrictedBy(new_width - 1); - - EXPECT_LT(exact_width, new_width); - EXPECT_GT(new_width, actual_width); } // Verify add pinned tab group will add a button. -TEST_P(SavedTabGroupBarUnitTest, AddPinnedTabGroupButton) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - +TEST_F(SavedTabGroupBarUnitTest, AddPinnedTabGroupButton) { EXPECT_EQ(1u, saved_tab_group_bar()->children().size()); EnforceGroupSaved(SavedTabGroupUtils::CreateSavedTabGroupFromLocalId( @@ -662,11 +362,7 @@ } // Verify pin an existing tab group will add a button. -TEST_P(SavedTabGroupBarUnitTest, PinTabGroupAddButton) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - +TEST_F(SavedTabGroupBarUnitTest, PinTabGroupAddButton) { EXPECT_EQ(1u, saved_tab_group_bar()->children().size()); auto sync_id = AddGroupFromSync(); @@ -680,10 +376,7 @@ saved_tab_group_bar()->children()[0])); } -TEST_P(SavedTabGroupBarUnitTest, AccessibleName) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } +TEST_F(SavedTabGroupBarUnitTest, AccessibleName) { EnforceGroupSaved(SavedTabGroupUtils::CreateSavedTabGroupFromLocalId( CreateNewGroupInBrowser())); SavedTabGroupButton* saved_tab_group_button = @@ -707,10 +400,7 @@ data.GetString16Attribute(ax::mojom::StringAttribute::kName)); } -TEST_P(SavedTabGroupBarUnitTest, TooltipText) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } +TEST_F(SavedTabGroupBarUnitTest, TooltipText) { AddGroupFromLocal(); SavedTabGroupButton* saved_tab_group_button = views::AsViewClass<SavedTabGroupButton>( @@ -746,11 +436,7 @@ } // Verify unpin an existing tab group will remove a button. -TEST_P(SavedTabGroupBarUnitTest, UnpinTabGroupRemoveButton) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - +TEST_F(SavedTabGroupBarUnitTest, UnpinTabGroupRemoveButton) { EXPECT_EQ(1u, saved_tab_group_bar()->children().size()); const base::Uuid& sync_id = @@ -763,11 +449,7 @@ EXPECT_EQ(1u, saved_tab_group_bar()->children().size()); } -TEST_P(SavedTabGroupBarUnitTest, PinAndUnpinMultipleTabGroups) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - +TEST_F(SavedTabGroupBarUnitTest, PinAndUnpinMultipleTabGroups) { EXPECT_EQ(1u, saved_tab_group_bar()->children().size()); base::Uuid sync_id_1 = AddGroupFromLocal(); @@ -813,11 +495,7 @@ EXPECT_EQ(1u, saved_tab_group_bar()->children().size()); } -TEST_P(SavedTabGroupBarUnitTest, OnlyShowEverthingButtonForV2) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - +TEST_F(SavedTabGroupBarUnitTest, OnlyShowEverthingButtonForV2) { EXPECT_EQ(1u, saved_tab_group_bar()->children().size()); AddGroupFromLocal(); @@ -834,7 +512,7 @@ EXPECT_TRUE(saved_tab_group_bar()->children()[0]->GetVisible()); } -TEST_P(SavedTabGroupBarUnitTest, AccessibleProperties) { +TEST_F(SavedTabGroupBarUnitTest, AccessibleProperties) { ui::AXNodeData data; saved_tab_group_bar()->GetViewAccessibility().GetAccessibleNodeData(&data); @@ -843,11 +521,7 @@ data.GetString16Attribute(ax::mojom::StringAttribute::kName)); } -TEST_P(SavedTabGroupBarUnitTest, GroupWithNoTabsDoesntShow) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - +TEST_F(SavedTabGroupBarUnitTest, GroupWithNoTabsDoesntShow) { EXPECT_EQ(1u, saved_tab_group_bar()->children().size()); SavedTabGroup empty_pinned_group(u"Test Title", @@ -861,12 +535,4 @@ EXPECT_EQ(1u, saved_tab_group_bar()->children().size()); } -INSTANTIATE_TEST_SUITE_P(SavedTabGroupBar, - SavedTabGroupBarUnitTest, - testing::Bool()); - -INSTANTIATE_TEST_SUITE_P(SavedTabGroupEverythingMenu, - STGEverythingMenuUnitTest, - testing::Bool()); - } // namespace tab_groups
diff --git a/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_interactive_uitest.cc b/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_interactive_uitest.cc index f67b0a2..b94b1b51 100644 --- a/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_interactive_uitest.cc +++ b/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_interactive_uitest.cc
@@ -111,22 +111,21 @@ ~SavedTabGroupInteractiveTest() override = default; void SetUp() override { - if (IsV2UIEnabled()) { + if (IsMigrationEnabled()) { scoped_feature_list_.InitWithFeatures( - {tab_groups::kTabGroupsSaveUIUpdate, tab_groups::kTabGroupsSaveV2, + {tab_groups::kTabGroupsSaveV2, tab_groups::kTabGroupSyncServiceDesktopMigration}, {}); } else { scoped_feature_list_.InitWithFeatures( {tab_groups::kTabGroupsSaveV2}, - {tab_groups::kTabGroupsSaveUIUpdate, - tab_groups::kTabGroupSyncServiceDesktopMigration}); + {tab_groups::kTabGroupSyncServiceDesktopMigration}); } SavedTabGroupInteractiveTestBase::SetUp(); } - bool IsV2UIEnabled() const { return GetParam(); } + bool IsMigrationEnabled() const { return GetParam(); } MultiStep HoverTabAt(int index) { const char kTabToHover[] = "Tab to hover"; @@ -200,10 +199,8 @@ }); } - auto CheckEverythingButtonVisibility(bool is_v2_enabled) { - return is_v2_enabled - ? EnsurePresent(kSavedTabGroupOverflowButtonElementId) - : EnsureNotPresent(kSavedTabGroupOverflowButtonElementId); + auto CheckEverythingButtonVisibility() { + return EnsurePresent(kSavedTabGroupOverflowButtonElementId); } std::unique_ptr<content::WebContents> CreateWebContents() { @@ -228,7 +225,7 @@ ~SavedTabGroupInteractiveTestV1() override = default; void SetUp() override { - if (IsV2UIEnabled()) { + if (IsMigrationEnabled()) { scoped_feature_list_.InitWithFeatures( {tab_groups::kTabGroupSyncServiceDesktopMigration}, {tab_groups::kTabGroupsSaveV2}); @@ -241,7 +238,7 @@ SavedTabGroupInteractiveTestBase::SetUp(); } - bool IsV2UIEnabled() const { return GetParam(); } + bool IsMigrationEnabled() const { return GetParam(); } MultiStep SaveGroupLeaveEditorBubbleOpen(tab_groups::TabGroupId group_id) { return Steps(EnsureNotPresent(kTabGroupEditorBubbleId), @@ -392,10 +389,6 @@ } IN_PROC_BROWSER_TEST_P(SavedTabGroupInteractiveTest, UnpinGroupFromButtonMenu) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - // Add 1 tab into the browser. And verify there are 2 tabs (The tab when you // open the browser and the added one). ASSERT_TRUE( @@ -435,10 +428,6 @@ IN_PROC_BROWSER_TEST_P(SavedTabGroupInteractiveTest, ContextMenuShowForEverythingMenuTabGroupItem) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - ASSERT_TRUE( AddTabAtIndex(0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED)); ASSERT_EQ(2, browser()->tab_strip_model()->count()); @@ -466,10 +455,6 @@ IN_PROC_BROWSER_TEST_P(SavedTabGroupInteractiveTest, SubmenuShowForAppMenuTabGroups) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - ASSERT_TRUE( AddTabAtIndex(0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED)); ASSERT_EQ(2, browser()->tab_strip_model()->count()); @@ -492,10 +477,6 @@ IN_PROC_BROWSER_TEST_P(SavedTabGroupInteractiveTest, OpenGroupFromAppMenuTabGroupSubmenu) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - ASSERT_TRUE( AddTabAtIndex(0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED)); ASSERT_TRUE( @@ -545,10 +526,6 @@ #endif // BUILDFLAG(IS_MAC) IN_PROC_BROWSER_TEST_P(SavedTabGroupInteractiveTest, MAYBE_MoveGroupToNewWindowFromAppMenuTabGroupSubmenu) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - // Add 1 tab into the browser. And verify there are 2 tabs (The tab when you // open the browser and the added one). ASSERT_TRUE( @@ -578,10 +555,6 @@ IN_PROC_BROWSER_TEST_P(SavedTabGroupInteractiveTest, UnpinGroupFromAppMenuTabGroupSubmenu) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - ASSERT_TRUE( AddTabAtIndex(0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED)); ASSERT_EQ(2, browser()->tab_strip_model()->count()); @@ -614,10 +587,6 @@ #endif // BUILDFLAG(IS_MAC) IN_PROC_BROWSER_TEST_P(SavedTabGroupInteractiveTest, MAYBE_DeleteGroupFromAppMenuTabGroupSubmenu) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - // Add 1 tab into the browser. And verify there are 2 tabs (The tab when you // open the browser and the added one). ASSERT_TRUE( @@ -662,10 +631,6 @@ #endif // BUILDFLAG(IS_MAC) IN_PROC_BROWSER_TEST_P(SavedTabGroupInteractiveTest, MAYBE_OpenTabFromAppMenuTabGroupSubmenu) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - // Add 1 tab into the browser. And verify there are 2 tabs (The tab when you // open the browser and the added one). GURL test_url(chrome::kChromeUINewTabURL); @@ -901,14 +866,9 @@ IN_PROC_BROWSER_TEST_P(SavedTabGroupInteractiveTest, CreateNewTabGroupFromEverythingMenu) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - const bool is_v2_ui_enabled = IsV2UIEnabled(); - RunTestSequence( FinishTabstripAnimations(), ShowBookmarksBar(), - CheckEverythingButtonVisibility(is_v2_ui_enabled), + CheckEverythingButtonVisibility(), CheckResult([&]() { return browser()->tab_strip_model()->count(); }, 1), EnsureNotPresent(kTabGroupEditorBubbleId), PressButton(kSavedTabGroupOverflowButtonElementId), @@ -932,10 +892,6 @@ IN_PROC_BROWSER_TEST_P(SavedTabGroupInteractiveTest, OpenSavedGroupFromEverythingMenu) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - ASSERT_TRUE( AddTabAtIndex(0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED)); ASSERT_TRUE( @@ -972,14 +928,9 @@ IN_PROC_BROWSER_TEST_P(SavedTabGroupInteractiveTest, CreateNewTabGroupFromAppMenuSubmenu) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - const bool is_v2_ui_enabled = IsV2UIEnabled(); - RunTestSequence( FinishTabstripAnimations(), ShowBookmarksBar(), - CheckEverythingButtonVisibility(is_v2_ui_enabled), + CheckEverythingButtonVisibility(), CheckResult([&]() { return browser()->tab_strip_model()->count(); }, 1), EnsureNotPresent(kTabGroupEditorBubbleId), PressButton(kToolbarAppMenuButtonElementId), @@ -1011,11 +962,10 @@ IN_PROC_BROWSER_TEST_P(SavedTabGroupInteractiveTest, MAYBE_EverythingButtonAlwaysShowsForV2) { browser()->tab_strip_model()->AddToNewGroup({0}); - const bool is_v2_ui_enabled = IsV2UIEnabled(); RunTestSequence( FinishTabstripAnimations(), ShowBookmarksBar(), - CheckEverythingButtonVisibility(is_v2_ui_enabled), + CheckEverythingButtonVisibility(), // Press the enter/return key on the button to open the context menu. WithElement(kSavedTabGroupButtonElementId, [](ui::TrackedElement* el) { @@ -1038,80 +988,7 @@ }), // Ensure the button is no longer present. EnsureNotPresent(kSavedTabGroupButtonElementId), - CheckEverythingButtonVisibility(is_v2_ui_enabled)); -} - -IN_PROC_BROWSER_TEST_P(SavedTabGroupInteractiveTest, - FiveSavedGroupsShowsOverflowMenuButton) { - if (IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V2"; - } - // Add 4 additional tabs to the browser. - ASSERT_TRUE( - AddTabAtIndex(0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED)); - ASSERT_TRUE( - AddTabAtIndex(0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED)); - ASSERT_TRUE( - AddTabAtIndex(0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED)); - ASSERT_TRUE( - AddTabAtIndex(0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED)); - ASSERT_EQ(5, browser()->tab_strip_model()->count()); - - // Add each tab to a separate group. - browser()->tab_strip_model()->AddToNewGroup({0}); - browser()->tab_strip_model()->AddToNewGroup({1}); - browser()->tab_strip_model()->AddToNewGroup({2}); - browser()->tab_strip_model()->AddToNewGroup({3}); - browser()->tab_strip_model()->AddToNewGroup({4}); - - RunTestSequence( - // Show the bookmarks bar where the buttons will be displayed. - FinishTabstripAnimations(), ShowBookmarksBar(), - // Ensure the buttons are in the bookmarks bar. - EnsurePresent(kSavedTabGroupButtonElementId), - // Verify the overflow button is shown. - EnsurePresent(kSavedTabGroupOverflowButtonElementId), - FinishTabstripAnimations(), - - // Verify there is only 1 button in the overflow menu - PressButton(kSavedTabGroupOverflowButtonElementId), - WaitForShow(kSavedTabGroupOverflowMenuId, true), - CheckView(kSavedTabGroupOverflowMenuId, - [](views::View* el) { return el->children().size() == 1u; }), - // Hide the overflow menu. - SendAccelerator( - kSavedTabGroupOverflowMenuId, - ui::Accelerator(ui::KeyboardCode::VKEY_ESCAPE, ui::EF_NONE)), - WaitForHide(kSavedTabGroupOverflowMenuId)); -} - -IN_PROC_BROWSER_TEST_P(SavedTabGroupInteractiveTest, - FourSavedGroupsNoOverflowMenuButton) { - if (IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V2"; - } - // Add 4 additional tabs to the browser. - ASSERT_TRUE( - AddTabAtIndex(0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED)); - ASSERT_TRUE( - AddTabAtIndex(0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED)); - ASSERT_TRUE( - AddTabAtIndex(0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED)); - ASSERT_EQ(4, browser()->tab_strip_model()->count()); - - // Add each tab to a separate group. - browser()->tab_strip_model()->AddToNewGroup({0}); - browser()->tab_strip_model()->AddToNewGroup({1}); - browser()->tab_strip_model()->AddToNewGroup({2}); - browser()->tab_strip_model()->AddToNewGroup({3}); - - RunTestSequence( - // Show the bookmarks bar where the buttons will be displayed. - FinishTabstripAnimations(), ShowBookmarksBar(), - // Ensure the buttons are in the bookmarks bar. - EnsurePresent(kSavedTabGroupButtonElementId), - // Verify the overflow button is shown. - EnsureNotPresent(kSavedTabGroupOverflowButtonElementId)); + CheckEverythingButtonVisibility()); } // TODO(crbug.com/40264110): Re-enable this test once it doesn't get stuck in @@ -1156,69 +1033,14 @@ } IN_PROC_BROWSER_TEST_P(SavedTabGroupInteractiveTest, - OverflowMenuClosesWhenNoMoreButtons) { - if (IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V2"; - } - - // Add 5 additional tabs to the browser. - ASSERT_TRUE( - AddTabAtIndex(0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED)); - ASSERT_TRUE( - AddTabAtIndex(0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED)); - ASSERT_TRUE( - AddTabAtIndex(0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED)); - ASSERT_TRUE( - AddTabAtIndex(0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED)); - ASSERT_EQ(5, browser()->tab_strip_model()->count()); - - // Add each tab to a separate group. - browser()->tab_strip_model()->AddToNewGroup({0}); - browser()->tab_strip_model()->AddToNewGroup({1}); - browser()->tab_strip_model()->AddToNewGroup({2}); - browser()->tab_strip_model()->AddToNewGroup({3}); - const tab_groups::TabGroupId group_5 = - browser()->tab_strip_model()->AddToNewGroup({4}); - - RunTestSequence( - // Show the bookmarks bar where the buttons will be displayed. - FinishTabstripAnimations(), ShowBookmarksBar(), - // Ensure the buttons and the overflow menu are visible. - EnsurePresent(kSavedTabGroupButtonElementId), - EnsurePresent(kSavedTabGroupOverflowButtonElementId), - - // Show the overflow menu. - PressButton(kSavedTabGroupOverflowButtonElementId), - WaitForShow(kSavedTabGroupOverflowMenuId, true), Do([=, this]() { - BrowserView::GetBrowserViewForBrowser(browser()) - ->GetWidget() - ->LayoutRootViewIfNecessary(); - }), - - // Verify the overflow menu expands if another group is added. - UnsaveGroupViaModel(group_5), Do([=, this]() { - BrowserView::GetBrowserViewForBrowser(browser()) - ->GetWidget() - ->LayoutRootViewIfNecessary(); - }), - - // Ensure the menu is no longer visible / present. - WaitForHide(kSavedTabGroupOverflowMenuId), - EnsureNotPresent(kSavedTabGroupOverflowMenuId)); -} - -IN_PROC_BROWSER_TEST_P(SavedTabGroupInteractiveTest, EverythingMenuDoesntDisplayEmptyGroups) { // The everything menu is only enabled in V2. - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } RunTestSequence( // Create an empty group FinishTabstripAnimations(), ShowBookmarksBar(), CreateEmptySavedGroup(), // Open the everything menu and expect the group to not show up. - CheckEverythingButtonVisibility(IsV2UIEnabled()), + CheckEverythingButtonVisibility(), PressButton(kSavedTabGroupOverflowButtonElementId), WaitForShow(STGEverythingMenu::kCreateNewTabGroup), EnsureNotPresent(STGEverythingMenu::kTabGroup)); @@ -1227,9 +1049,6 @@ IN_PROC_BROWSER_TEST_P(SavedTabGroupInteractiveTest, AppMenuDoesntDisplayEmptyGroups) { // The everything menu is only enabled in V2. - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } RunTestSequence( // Create an empty group
diff --git a/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_iph_promo_test.cc b/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_iph_promo_test.cc index 103d4d5a..c9309892 100644 --- a/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_iph_promo_test.cc +++ b/chrome/browser/ui/views/bookmarks/saved_tab_groups/saved_tab_group_iph_promo_test.cc
@@ -29,12 +29,10 @@ if (GetParam()) { feature_list_.InitWithFeatures( {{tab_groups::kTabGroupSyncServiceDesktopMigration, - tab_groups::kTabGroupsSaveV2, tab_groups::kTabGroupsSaveUIUpdate}}, + tab_groups::kTabGroupsSaveV2}}, {}); } else { - feature_list_.InitWithFeatures( - {{tab_groups::kTabGroupsSaveV2, tab_groups::kTabGroupsSaveUIUpdate}}, - {}); + feature_list_.InitWithFeatures({{tab_groups::kTabGroupsSaveV2}}, {}); } }
diff --git a/chrome/browser/ui/views/bookmarks/saved_tab_groups/shared_tab_group_interactive_uitest.cc b/chrome/browser/ui/views/bookmarks/saved_tab_groups/shared_tab_group_interactive_uitest.cc index e0b8005..19f1c1c 100644 --- a/chrome/browser/ui/views/bookmarks/saved_tab_groups/shared_tab_group_interactive_uitest.cc +++ b/chrome/browser/ui/views/bookmarks/saved_tab_groups/shared_tab_group_interactive_uitest.cc
@@ -38,7 +38,7 @@ void SetUp() override { scoped_feature_list_.InitWithFeatures( - {tab_groups::kTabGroupsSaveUIUpdate, tab_groups::kTabGroupsSaveV2, + {tab_groups::kTabGroupsSaveV2, tab_groups::kTabGroupSyncServiceDesktopMigration, data_sharing::features::kDataSharingFeature}, {});
diff --git a/chrome/browser/ui/views/bubble/webui_bubble_dialog_view_unittest.cc b/chrome/browser/ui/views/bubble/webui_bubble_dialog_view_unittest.cc index ed78c2b..1bfab19 100644 --- a/chrome/browser/ui/views/bubble/webui_bubble_dialog_view_unittest.cc +++ b/chrome/browser/ui/views/bubble/webui_bubble_dialog_view_unittest.cc
@@ -42,8 +42,7 @@ }; } // namespace -namespace views { -namespace test { +namespace views::test { class WebUIBubbleDialogViewTest : public ChromeViewsTestBase, public testing::WithParamInterface<bool> { @@ -241,5 +240,4 @@ : "DraggableRegionsDisabled"; }); -} // namespace test -} // namespace views +} // namespace views::test
diff --git a/chrome/browser/ui/views/certificate_selector.cc b/chrome/browser/ui/views/certificate_selector.cc index 3a8ddeed..8fa0dea 100644 --- a/chrome/browser/ui/views/certificate_selector.cc +++ b/chrome/browser/ui/views/certificate_selector.cc
@@ -216,16 +216,16 @@ AddChildView(std::move(text_label)); std::vector<ui::TableColumn> columns; - columns.push_back(ui::TableColumn(IDS_CERT_SELECTOR_SUBJECT_COLUMN, - ui::TableColumn::LEFT, -1, 0.4f)); - columns.push_back(ui::TableColumn(IDS_CERT_SELECTOR_ISSUER_COLUMN, - ui::TableColumn::LEFT, -1, 0.2f)); + columns.emplace_back(IDS_CERT_SELECTOR_SUBJECT_COLUMN, ui::TableColumn::LEFT, + -1, 0.4f); + columns.emplace_back(IDS_CERT_SELECTOR_ISSUER_COLUMN, ui::TableColumn::LEFT, + -1, 0.2f); if (show_provider_column_) { - columns.push_back(ui::TableColumn(IDS_CERT_SELECTOR_PROVIDER_COLUMN, - ui::TableColumn::LEFT, -1, 0.4f)); + columns.emplace_back(IDS_CERT_SELECTOR_PROVIDER_COLUMN, + ui::TableColumn::LEFT, -1, 0.4f); } - columns.push_back(ui::TableColumn(IDS_CERT_SELECTOR_SERIAL_COLUMN, - ui::TableColumn::LEFT, -1, 0.2f)); + columns.emplace_back(IDS_CERT_SELECTOR_SERIAL_COLUMN, ui::TableColumn::LEFT, + -1, 0.2f); for (auto& column : columns) { column.sortable = true; }
diff --git a/chrome/browser/ui/views/commerce/product_specifications_button_browsertest.cc b/chrome/browser/ui/views/commerce/product_specifications_button_browsertest.cc index f7d9a25..d6d54dd 100644 --- a/chrome/browser/ui/views/commerce/product_specifications_button_browsertest.cc +++ b/chrome/browser/ui/views/commerce/product_specifications_button_browsertest.cc
@@ -83,7 +83,7 @@ ProductSpecificationsButton* product_specifications_button() { return browser_view() ->tab_strip_region_view() - ->product_specifications_button(); + ->GetProductSpecificationsButton(); } MockProductSpecificationsEntryPointController* controller() {
diff --git a/chrome/browser/ui/views/compose/compose_dialog_view.cc b/chrome/browser/ui/views/compose/compose_dialog_view.cc index 11cb416..2eb8f52 100644 --- a/chrome/browser/ui/views/compose/compose_dialog_view.cc +++ b/chrome/browser/ui/views/compose/compose_dialog_view.cc
@@ -208,8 +208,8 @@ } } - for (size_t index = 0; index < command_ids.size(); index++) { - menu->RemoveMenuItem(command_ids[index]); + for (int command_id : command_ids) { + menu->RemoveMenuItem(command_id); } menu->RemoveAdjacentSeparators();
diff --git a/chrome/browser/ui/views/content_setting_bubble_contents.cc b/chrome/browser/ui/views/content_setting_bubble_contents.cc index 98e4295..58cee3c 100644 --- a/chrome/browser/ui/views/content_setting_bubble_contents.cc +++ b/chrome/browser/ui/views/content_setting_bubble_contents.cc
@@ -35,7 +35,7 @@ #include "ui/color/color_provider.h" #include "ui/gfx/geometry/insets.h" #include "ui/gfx/geometry/size.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/controls/button/image_button.h" #include "ui/views/controls/button/image_button_factory.h" #include "ui/views/controls/button/radio_button.h" @@ -154,7 +154,7 @@ *item.image, ui::kColorLabelForeground, GetLayoutConstant(LOCATION_BAR_ICON_SIZE), item.has_blocked_badge ? &vector_icons::kBlockedBadgeIcon - : &gfx::VectorIcon::EmptyIcon())); + : &gfx::kNoneIcon)); } std::unique_ptr<views::View> item_contents;
diff --git a/chrome/browser/ui/views/data_sharing/data_sharing_chrome_native_interactive_uitest.cc b/chrome/browser/ui/views/data_sharing/data_sharing_chrome_native_interactive_uitest.cc index 4600b8e0..16ea476d 100644 --- a/chrome/browser/ui/views/data_sharing/data_sharing_chrome_native_interactive_uitest.cc +++ b/chrome/browser/ui/views/data_sharing/data_sharing_chrome_native_interactive_uitest.cc
@@ -53,7 +53,7 @@ void SetUp() override { scoped_feature_list_.InitWithFeatures( {data_sharing::features::kDataSharingFeature, - tab_groups::kTabGroupsSaveUIUpdate, tab_groups::kTabGroupsSaveV2, + tab_groups::kTabGroupsSaveV2, tab_groups::kTabGroupSyncServiceDesktopMigration}, {}); ASSERT_TRUE(embedded_test_server()->InitializeAndListen());
diff --git a/chrome/browser/ui/views/data_sharing/data_sharing_live_browsertest.cc b/chrome/browser/ui/views/data_sharing/data_sharing_live_browsertest.cc index 5e19fe1..9dd1ad7e 100644 --- a/chrome/browser/ui/views/data_sharing/data_sharing_live_browsertest.cc +++ b/chrome/browser/ui/views/data_sharing/data_sharing_live_browsertest.cc
@@ -102,7 +102,7 @@ void SetUp() override { scoped_feature_list_.InitWithFeatures( {data_sharing::features::kDataSharingFeature, - tab_groups::kTabGroupsSaveUIUpdate, tab_groups::kTabGroupsSaveV2, + tab_groups::kTabGroupsSaveV2, tab_groups::kTabGroupSyncServiceDesktopMigration}, {}); constexpr char SYNC_URL[] =
diff --git a/chrome/browser/ui/views/desktop_capture/desktop_media_permission_pane_view_mac.mm b/chrome/browser/ui/views/desktop_capture/desktop_media_permission_pane_view_mac.mm index b22f6857..f7228d4 100644 --- a/chrome/browser/ui/views/desktop_capture/desktop_media_permission_pane_view_mac.mm +++ b/chrome/browser/ui/views/desktop_capture/desktop_media_permission_pane_view_mac.mm
@@ -97,7 +97,8 @@ views::ImageView* logo_image_view = animation_container->AddChildView(std::make_unique<views::ImageView>()); - logo_image_view->SetImage(gfx::ImageSkiaFromNSImage(app_icon)); + logo_image_view->SetImage( + ui::ImageModel::FromImageSkia(gfx::ImageSkiaFromNSImage(app_icon))); logo_image_view->SetImageSize(gfx::Size(55, 55)); // Adds a margin on the left side of the logo to balance the right margin that // is included in the toggle animation. This visually centers the content of
diff --git a/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views_unittest.cc b/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views_unittest.cc index 8cc8dd4..2cf81aa 100644 --- a/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views_unittest.cc +++ b/chrome/browser/ui/views/desktop_capture/desktop_media_picker_views_unittest.cc
@@ -680,7 +680,8 @@ public: DesktopMediaPickerViewsSystemAudioTest() : DesktopMediaPickerViewsTestBase( - GetSourceTypes(/*PreferCurrentTab=*/false, /*NewOrder=*/false)) {} + GetSourceTypes(/*prefer_current_tab=*/false, /*new_order=*/false)) { + } ~DesktopMediaPickerViewsSystemAudioTest() override = default; void MaybeCreatePickerViews() override { @@ -942,7 +943,7 @@ public: DesktopMediaPickerDoubleClickTest() : DesktopMediaPickerViewsTestBase( - GetSourceTypes(/*PreferCurrentTab=*/false, /*NewOrder=*/true)) {} + GetSourceTypes(/*prefer_current_tab=*/false, /*new_order=*/true)) {} }; INSTANTIATE_TEST_SUITE_P(
diff --git a/chrome/browser/ui/views/desktop_capture/desktop_media_source_view.cc b/chrome/browser/ui/views/desktop_capture/desktop_media_source_view.cc index 5a13010..ce3a10b 100644 --- a/chrome/browser/ui/views/desktop_capture/desktop_media_source_view.cc +++ b/chrome/browser/ui/views/desktop_capture/desktop_media_source_view.cc
@@ -94,11 +94,11 @@ // Unselect all other sources. Views neighbours; parent()->GetViewsInGroup(GetGroup(), &neighbours); - for (auto i(neighbours.begin()); i != neighbours.end(); ++i) { - if (*i != this) { - DCHECK(views::IsViewClass<DesktopMediaSourceView>(*i)); + for (auto& neighbour : neighbours) { + if (neighbour != this) { + DCHECK(views::IsViewClass<DesktopMediaSourceView>(neighbour)); DesktopMediaSourceView* source_view = - static_cast<DesktopMediaSourceView*>(*i); + static_cast<DesktopMediaSourceView*>(neighbour); source_view->SetSelected(false); } } @@ -145,10 +145,10 @@ return nullptr; } - for (auto i(neighbours.begin()); i != neighbours.end(); ++i) { - DCHECK(views::IsViewClass<DesktopMediaSourceView>(*i)); + for (auto& neighbour : neighbours) { + DCHECK(views::IsViewClass<DesktopMediaSourceView>(neighbour)); DesktopMediaSourceView* source_view = - static_cast<DesktopMediaSourceView*>(*i); + static_cast<DesktopMediaSourceView*>(neighbour); if (source_view->selected_) { return source_view; }
diff --git a/chrome/browser/ui/views/desktop_capture/desktop_media_tab_list.cc b/chrome/browser/ui/views/desktop_capture/desktop_media_tab_list.cc index 568db1e4..a8b1480 100644 --- a/chrome/browser/ui/views/desktop_capture/desktop_media_tab_list.cc +++ b/chrome/browser/ui/views/desktop_capture/desktop_media_tab_list.cc
@@ -69,6 +69,9 @@ DesktopMediaListController* controller, base::RepeatingCallback<void(size_t)> preview_updated_callback); + TabListModel(const TabListModel&) = delete; + TabListModel operator=(const TabListModel&) = delete; + // ui::TableModel: size_t RowCount() override; std::u16string GetText(size_t row, int column) override; @@ -85,9 +88,6 @@ void OnDelegatedSourceListSelection() override; private: - TabListModel(const TabListModel&) = delete; - TabListModel operator=(const TabListModel&) = delete; - raw_ptr<DesktopMediaListController, DanglingUntriaged> controller_; raw_ptr<ui::TableModelObserver> observer_ = nullptr; base::RepeatingCallback<void(size_t)> preview_updated_callback_; @@ -166,13 +166,13 @@ TabListViewObserver(DesktopMediaListController* controller, base::RepeatingClosure selection_changed_callback); + TabListViewObserver(const TabListViewObserver&) = delete; + TabListViewObserver operator=(const TabListViewObserver&) = delete; + void OnSelectionChanged() override; void OnKeyDown(ui::KeyboardCode virtual_keycode) override; private: - TabListViewObserver(const TabListViewObserver&) = delete; - TabListViewObserver operator=(const TabListViewObserver&) = delete; - const raw_ptr<DesktopMediaListController, DanglingUntriaged> controller_; base::RepeatingClosure selection_changed_callback_; };
diff --git a/chrome/browser/ui/views/device_chooser_browsertest.cc b/chrome/browser/ui/views/device_chooser_browsertest.cc index 5c275edb..918db67 100644 --- a/chrome/browser/ui/views/device_chooser_browsertest.cc +++ b/chrome/browser/ui/views/device_chooser_browsertest.cc
@@ -88,9 +88,7 @@ // page or extension. class BluetoothChooserBrowserTest : public DialogBrowserTest { public: - BluetoothChooserBrowserTest() - : status_(permissions::FakeBluetoothChooserController::BluetoothStatus:: - UNAVAILABLE) {} + BluetoothChooserBrowserTest() = default; BluetoothChooserBrowserTest(const BluetoothChooserBrowserTest&) = delete; BluetoothChooserBrowserTest& operator=(const BluetoothChooserBrowserTest&) = @@ -156,7 +154,8 @@ } private: - permissions::FakeBluetoothChooserController::BluetoothStatus status_; + permissions::FakeBluetoothChooserController::BluetoothStatus status_ = + permissions::FakeBluetoothChooserController::BluetoothStatus::UNAVAILABLE; std::vector<permissions::FakeBluetoothChooserController::FakeDevice> devices_; };
diff --git a/chrome/browser/ui/views/download/bubble/download_dialog_view.cc b/chrome/browser/ui/views/download/bubble/download_dialog_view.cc index 21b057f..609a7f7 100644 --- a/chrome/browser/ui/views/download/bubble/download_dialog_view.cc +++ b/chrome/browser/ui/views/download/bubble/download_dialog_view.cc
@@ -59,7 +59,7 @@ base::RepeatingClosure show_all_downloads_callback) : RichHoverButton( std::move(show_all_downloads_callback), - /*main_image_icon=*/ui::ImageModel(), + /*icon=*/ui::ImageModel(), l10n_util::GetStringUTF16(IDS_DOWNLOAD_BUBBLE_FOOTER_LABEL), /*subtitle_text=*/std::u16string(), ui::ImageModel::FromVectorIcon(
diff --git a/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc b/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc index 21dfde0..9f86d73 100644 --- a/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc +++ b/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc
@@ -328,9 +328,7 @@ // Starts monitoring |web_contents| for a start of a drag-and-drop. explicit DragStartWaiter(content::WebContents* web_contents) : web_contents_(web_contents), - message_loop_runner_(new content::MessageLoopRunner), - suppress_passing_of_start_drag_further_(false), - drag_started_(false) { + message_loop_runner_(new content::MessageLoopRunner) { DCHECK(web_contents_); // Intercept calls to the old DragDropClient. @@ -476,10 +474,10 @@ scoped_refptr<content::MessageLoopRunner> message_loop_runner_; raw_ptr<aura::client::DragDropClient> old_client_; base::OnceClosure callback_to_run_inside_drag_and_drop_message_loop_; - bool suppress_passing_of_start_drag_further_; + bool suppress_passing_of_start_drag_further_ = false; // Data captured during the first intercepted StartDragAndDrop call. - bool drag_started_; + bool drag_started_ = false; std::optional<url::Origin> source_origin_; std::string text_; std::string html_; @@ -809,13 +807,13 @@ const std::string& filename) { AssertTestPageIsLoaded(); base::StringPairs replacement_text; - replacement_text.push_back( - std::make_pair("REPLACE_WITH_HOST_AND_PORT", - base::StringPrintf("%s:%d", image_origin.c_str(), - https_test_server()->port()))); - replacement_text.push_back(std::make_pair( + replacement_text.emplace_back( + "REPLACE_WITH_HOST_AND_PORT", + base::StringPrintf("%s:%d", image_origin.c_str(), + https_test_server()->port())); + replacement_text.emplace_back( "REPLACE_WITH_CROSSORIGIN", - std::string(image_crossorigin_attr ? "crossorigin" : ""))); + std::string(image_crossorigin_attr ? "crossorigin" : "")); std::string path = net::test_server::GetFilePathWithReplacements( filename, replacement_text); return NavigateNamedFrame("left", frame_origin, path); @@ -1267,8 +1265,8 @@ base::FilePath(), base::FilePath().AppendASCII("title1.html")); base::FilePath dragged_file_2 = ui_test_utils::GetTestFilePath( base::FilePath(), base::FilePath().AppendASCII("title2.html")); - file_infos.push_back(ui::FileInfo(dragged_file_1, dragged_file_1.BaseName())); - file_infos.push_back(ui::FileInfo(dragged_file_2, dragged_file_2.BaseName())); + file_infos.emplace_back(dragged_file_1, dragged_file_1.BaseName()); + file_infos.emplace_back(dragged_file_2, dragged_file_2.BaseName()); ASSERT_TRUE(SimulateDragEnterToRightFrame(file_infos)); const int expected_new_tab_count = 2;
diff --git a/chrome/browser/ui/views/extensions/extension_install_dialog_view_browsertest.cc b/chrome/browser/ui/views/extensions/extension_install_dialog_view_browsertest.cc index f14a11c..cf92f73 100644 --- a/chrome/browser/ui/views/extensions/extension_install_dialog_view_browsertest.cc +++ b/chrome/browser/ui/views/extensions/extension_install_dialog_view_browsertest.cc
@@ -169,8 +169,7 @@ std::u16string permission_string(u"Test"); PermissionMessages permissions; for (int i = 0; i < 20; i++) { - permissions.push_back( - PermissionMessage(permission_string, PermissionIDSet())); + permissions.emplace_back(permission_string, PermissionIDSet()); } std::unique_ptr<ExtensionInstallPrompt::Prompt> prompt = CreatePrompt(ExtensionInstallPrompt::PERMISSIONS_PROMPT); @@ -191,8 +190,7 @@ std::u16string permission_string( u"Read and modify your data on *.facebook.com"); PermissionMessages permissions; - permissions.push_back( - PermissionMessage(permission_string, PermissionIDSet())); + permissions.emplace_back(permission_string, PermissionIDSet()); std::unique_ptr<ExtensionInstallPrompt::Prompt> prompt = CreatePrompt(ExtensionInstallPrompt::PERMISSIONS_PROMPT); prompt->AddPermissionMessages(permissions); @@ -472,16 +470,16 @@ } void AddPermission(std::string permission) { - permission_messages_.push_back( - PermissionMessage(base::ASCIIToUTF16(permission), PermissionIDSet())); + permission_messages_.emplace_back(base::ASCIIToUTF16(permission), + PermissionIDSet()); } void AddPermissionWithDetails( std::string main_permission, std::vector<std::u16string> detailed_permissions) { - permission_messages_.push_back( - PermissionMessage(base::ASCIIToUTF16(main_permission), - PermissionIDSet(), std::move(detailed_permissions))); + permission_messages_.emplace_back(base::ASCIIToUTF16(main_permission), + PermissionIDSet(), + std::move(detailed_permissions)); } private: @@ -782,8 +780,7 @@ ExtensionInstallDialogView* CreateAndShowRequestPrompt( ExtensionInstallPromptTestHelper* helper) { PermissionMessages permissions; - permissions.push_back( - PermissionMessage(u"Permission message", PermissionIDSet())); + permissions.emplace_back(u"Permission message", PermissionIDSet()); std::unique_ptr<ExtensionInstallPrompt::Prompt> prompt = CreatePrompt(ExtensionInstallPrompt::EXTENSION_REQUEST_PROMPT); prompt->AddPermissionMessages(permissions);
diff --git a/chrome/browser/ui/views/extensions/extension_popup.cc b/chrome/browser/ui/views/extensions/extension_popup.cc index a38995b..38a8c8df 100644 --- a/chrome/browser/ui/views/extensions/extension_popup.cc +++ b/chrome/browser/ui/views/extensions/extension_popup.cc
@@ -55,7 +55,7 @@ // for this object's lifetime. class ExtensionPopup::ScopedDevToolsAgentHostObservation { public: - ScopedDevToolsAgentHostObservation( + explicit ScopedDevToolsAgentHostObservation( content::DevToolsAgentHostObserver* observer) : observer_(observer) { content::DevToolsAgentHost::AddObserver(observer_);
diff --git a/chrome/browser/ui/views/extensions/extensions_menu_main_page_view_unittest.cc b/chrome/browser/ui/views/extensions/extensions_menu_main_page_view_unittest.cc index b3957ff..dfd3bf9 100644 --- a/chrome/browser/ui/views/extensions/extensions_menu_main_page_view_unittest.cc +++ b/chrome/browser/ui/views/extensions/extensions_menu_main_page_view_unittest.cc
@@ -37,7 +37,6 @@ #include "extensions/test/test_extension_dir.h" #include "testing/gmock/include/gmock/gmock.h" #include "ui/gfx/image/image_unittest_util.h" -#include "ui/gfx/paint_vector_icon.h" #include "ui/views/controls/styled_label.h" #include "ui/views/vector_icons.h" #include "ui/views/view_utils.h"
diff --git a/chrome/browser/ui/views/extensions/extensions_menu_view_controller.cc b/chrome/browser/ui/views/extensions/extensions_menu_view_controller.cc index 6f9bbd74..f9c8f54 100644 --- a/chrome/browser/ui/views/extensions/extensions_menu_view_controller.cc +++ b/chrome/browser/ui/views/extensions/extensions_menu_view_controller.cc
@@ -314,10 +314,9 @@ PermissionsManager::Get(browser_->profile())); } -ExtensionsMenuViewController::~ExtensionsMenuViewController() { - // Note: No need to call TabStripModel::RemoveObserver(), because it's handled - // directly within TabStripModelObserver::~TabStripModelObserver(). -} +// Note: No need to call TabStripModel::RemoveObserver(), because it's handled +// directly within TabStripModelObserver::~TabStripModelObserver(). +ExtensionsMenuViewController::~ExtensionsMenuViewController() = default; void ExtensionsMenuViewController::OpenMainPage() { auto main_page = std::make_unique<ExtensionsMenuMainPageView>(browser_, this);
diff --git a/chrome/browser/ui/views/extensions/media_galleries_dialog_views_unittest.cc b/chrome/browser/ui/views/extensions/media_galleries_dialog_views_unittest.cc index 2ea2362a..9e26f5a 100644 --- a/chrome/browser/ui/views/extensions/media_galleries_dialog_views_unittest.cc +++ b/chrome/browser/ui/views/extensions/media_galleries_dialog_views_unittest.cc
@@ -50,7 +50,7 @@ void SetUp() override { ChromeViewsTestBase::SetUp(); std::vector<std::u16string> headers; - headers.push_back(std::u16string()); + headers.emplace_back(); headers.push_back(u"header2"); ON_CALL(controller_, GetSectionHeaders()).WillByDefault(Return(headers)); EXPECT_CALL(controller_, GetSectionEntries(_)).Times(AnyNumber()); @@ -95,10 +95,8 @@ // permissions in the registry. TEST_F(MediaGalleriesDialogTest, InitializeCheckboxes) { MediaGalleriesDialogController::Entries attached_permissions; - attached_permissions.push_back( - MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(1), true)); - attached_permissions.push_back( - MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(2), false)); + attached_permissions.emplace_back(MakePrefInfoForTesting(1), true); + attached_permissions.emplace_back(MakePrefInfoForTesting(2), false); EXPECT_CALL(*controller(), GetSectionEntries(0)) .WillRepeatedly(Return(attached_permissions)); @@ -116,8 +114,7 @@ TEST_F(MediaGalleriesDialogTest, ToggleCheckboxes) { // Setup necessary for the expectations in CreateParams() above to pass. MediaGalleriesDialogController::Entries attached_permissions; - attached_permissions.push_back( - MediaGalleriesDialogController::Entry(MakePrefInfoForTesting(1), true)); + attached_permissions.emplace_back(MakePrefInfoForTesting(1), true); EXPECT_CALL(*controller(), GetSectionEntries(0)) .WillRepeatedly(Return(attached_permissions)); @@ -147,19 +144,16 @@ EXPECT_TRUE(dialog.checkbox_map_.empty()); MediaGalleryPrefInfo gallery1 = MakePrefInfoForTesting(1); - attached_permissions.push_back( - MediaGalleriesDialogController::Entry(gallery1, true)); + attached_permissions.emplace_back(gallery1, true); dialog.UpdateGalleries(); EXPECT_EQ(1U, dialog.checkbox_map_.size()); MediaGalleryPrefInfo gallery2 = MakePrefInfoForTesting(2); - attached_permissions.push_back( - MediaGalleriesDialogController::Entry(gallery2, true)); + attached_permissions.emplace_back(gallery2, true); dialog.UpdateGalleries(); EXPECT_EQ(2U, dialog.checkbox_map_.size()); - attached_permissions.push_back( - MediaGalleriesDialogController::Entry(gallery2, false)); + attached_permissions.emplace_back(gallery2, false); dialog.UpdateGalleries(); EXPECT_EQ(2U, dialog.checkbox_map_.size()); } @@ -174,14 +168,12 @@ EXPECT_TRUE(dialog.checkbox_map_.empty()); MediaGalleryPrefInfo gallery1 = MakePrefInfoForTesting(1); - attached_permissions.push_back( - MediaGalleriesDialogController::Entry(gallery1, true)); + attached_permissions.emplace_back(gallery1, true); dialog.UpdateGalleries(); EXPECT_EQ(1U, dialog.checkbox_map_.size()); MediaGalleryPrefInfo gallery2 = MakePrefInfoForTesting(2); - attached_permissions.push_back( - MediaGalleriesDialogController::Entry(gallery2, true)); + attached_permissions.emplace_back(gallery2, true); dialog.UpdateGalleries(); EXPECT_EQ(2U, dialog.checkbox_map_.size());
diff --git a/chrome/browser/ui/views/first_run_dialog.cc b/chrome/browser/ui/views/first_run_dialog.cc index 6ffd27e..3497ef9 100644 --- a/chrome/browser/ui/views/first_run_dialog.cc +++ b/chrome/browser/ui/views/first_run_dialog.cc
@@ -70,7 +70,7 @@ base::RepeatingClosure quit_runloop) { FirstRunDialog* dialog = new FirstRunDialog(std::move(learn_more_callback), std::move(quit_runloop)); - views::DialogDelegate::CreateDialogWidget(dialog, NULL, NULL)->Show(); + views::DialogDelegate::CreateDialogWidget(dialog, nullptr, nullptr)->Show(); } FirstRunDialog::FirstRunDialog(base::RepeatingClosure learn_more_callback,
diff --git a/chrome/browser/ui/views/frame/browser_root_view_browsertest.cc b/chrome/browser/ui/views/frame/browser_root_view_browsertest.cc index 0d8f092..5660bbe9 100644 --- a/chrome/browser/ui/views/frame/browser_root_view_browsertest.cc +++ b/chrome/browser/ui/views/frame/browser_root_view_browsertest.cc
@@ -268,7 +268,7 @@ BrowserRootView::DropIndex::RelativeToIndex relative_to_index) { std::vector<GURL> urls; for (const auto& url_string : url_strings) { - urls.push_back(GURL(url_string)); + urls.emplace_back(url_string); } std::unique_ptr<BrowserRootView::DropInfo> drop_info; drop_info = std::make_unique<BrowserRootView::DropInfo>();
diff --git a/chrome/browser/ui/views/frame/browser_view.h b/chrome/browser/ui/views/frame/browser_view.h index 2cbb3f4c..121c651 100644 --- a/chrome/browser/ui/views/frame/browser_view.h +++ b/chrome/browser/ui/views/frame/browser_view.h
@@ -814,12 +814,10 @@ std::vector<views::NativeViewHost*> GetNativeViewHostsForTopControlsSlide() const; + using BrowserWindow::CreateTabSearchBubble; void CreateTabSearchBubble( - tab_search::mojom::TabSearchSection section = - tab_search::mojom::TabSearchSection::kSearch, - tab_search::mojom::TabOrganizationFeature organization_feature = - tab_search::mojom::TabOrganizationFeature::kNone) override; - // Closes the tab search bubble if open for the given browser instance. + tab_search::mojom::TabSearchSection section, + tab_search::mojom::TabOrganizationFeature organization_feature) override; void CloseTabSearchBubble() override; #if !BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/chrome/browser/ui/views/frame/browser_view_browsertest.cc b/chrome/browser/ui/views/frame/browser_view_browsertest.cc index 4bcf652..940a52a 100644 --- a/chrome/browser/ui/views/frame/browser_view_browsertest.cc +++ b/chrome/browser/ui/views/frame/browser_view_browsertest.cc
@@ -273,7 +273,7 @@ class BookmarkBarViewObserverImpl : public BookmarkBarViewObserver { public: - BookmarkBarViewObserverImpl() : change_count_(0) {} + BookmarkBarViewObserverImpl() = default; BookmarkBarViewObserverImpl(const BookmarkBarViewObserverImpl&) = delete; BookmarkBarViewObserverImpl& operator=(const BookmarkBarViewObserverImpl&) =
diff --git a/chrome/browser/ui/views/frame/dbus_appmenu.cc b/chrome/browser/ui/views/frame/dbus_appmenu.cc index 3d74204..6872896 100644 --- a/chrome/browser/ui/views/frame/dbus_appmenu.cc +++ b/chrome/browser/ui/views/frame/dbus_appmenu.cc
@@ -159,7 +159,7 @@ std::vector<std::pair<ui::MenuModel*, size_t>>* menu_items) { for (size_t i = 0; i < menu->GetItemCount(); ++i) { if (menu->GetCommandIdAt(i) == command) { - menu_items->push_back({menu, i}); + menu_items->emplace_back(menu, i); } if (menu->GetTypeAt(i) == ui::SimpleMenuModel::ItemType::TYPE_SUBMENU) { FindMenuItemsForCommandAux(menu->GetSubmenuModelAt(i), command,
diff --git a/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_unittest.cc b/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_unittest.cc index 2475e56..b8bc3a62 100644 --- a/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_unittest.cc +++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_unittest.cc
@@ -42,7 +42,7 @@ class TestLayoutDelegate : public OpaqueBrowserFrameViewLayoutDelegate { public: - TestLayoutDelegate() : show_caption_buttons_(true), maximized_(false) {} + TestLayoutDelegate() = default; TestLayoutDelegate(const TestLayoutDelegate&) = delete; TestLayoutDelegate& operator=(const TestLayoutDelegate&) = delete; @@ -96,8 +96,8 @@ private: std::u16string window_title_; - bool show_caption_buttons_; - bool maximized_; + bool show_caption_buttons_ = true; + bool maximized_ = false; }; } // namespace
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 ef08244f..5aab805 100644 --- a/chrome/browser/ui/views/frame/tab_strip_region_view.cc +++ b/chrome/browser/ui/views/frame/tab_strip_region_view.cc
@@ -144,16 +144,7 @@ tab_search_container->SetProperty(views::kCrossAxisAlignmentKey, views::LayoutAlignment::kCenter); } - if (base::FeatureList::IsEnabled(commerce::kProductSpecifications)) { - product_specifications_button = - std::make_unique<ProductSpecificationsButton>( - tab_strip_->controller(), browser->GetTabStripModel(), - browser->GetFeatures() - .product_specifications_entry_point_controller(), - render_tab_search_before_tab_strip_, this); - product_specifications_button->SetProperty( - views::kCrossAxisAlignmentKey, views::LayoutAlignment::kCenter); - } + if (features::IsTabstripComboButtonEnabled()) { tab_strip_action_container = std::make_unique<TabStripActionContainer>( tab_strip_->controller(), this, @@ -163,6 +154,15 @@ tab_strip_action_container->SetProperty( views::kMarginsKey, gfx::Insets::TLBR(0, 0, 0, GetLayoutConstant(TAB_STRIP_PADDING))); + } else if (base::FeatureList::IsEnabled(commerce::kProductSpecifications)) { + product_specifications_button = + std::make_unique<ProductSpecificationsButton>( + tab_strip_->controller(), browser->GetTabStripModel(), + browser->GetFeatures() + .product_specifications_entry_point_controller(), + render_tab_search_before_tab_strip_, this); + product_specifications_button->SetProperty( + views::kCrossAxisAlignmentKey, views::LayoutAlignment::kCenter); } } @@ -377,6 +377,14 @@ return nullptr; } +ProductSpecificationsButton* +TabStripRegionView::GetProductSpecificationsButton() { + if (tab_strip_action_container_) { + return tab_strip_action_container_->GetProductSpecificationsButton(); + } + return product_specifications_button_; +} + TabSearchContainer* TabStripRegionView::GetTabSearchContainer() { if (features::IsTabstripComboButtonEnabled()) { return tab_strip_combo_button_->tab_search_container();
diff --git a/chrome/browser/ui/views/frame/tab_strip_region_view.h b/chrome/browser/ui/views/frame/tab_strip_region_view.h index 5c28640d8..adc8e335 100644 --- a/chrome/browser/ui/views/frame/tab_strip_region_view.h +++ b/chrome/browser/ui/views/frame/tab_strip_region_view.h
@@ -69,9 +69,7 @@ return tab_strip_combo_button_; } - ProductSpecificationsButton* product_specifications_button() { - return product_specifications_button_; - } + ProductSpecificationsButton* GetProductSpecificationsButton(); glic::GlicButton* GetGlicButton();
diff --git a/chrome/browser/ui/views/frame/web_contents_close_handler_unittest.cc b/chrome/browser/ui/views/frame/web_contents_close_handler_unittest.cc index fe7ade8..634fe3f 100644 --- a/chrome/browser/ui/views/frame/web_contents_close_handler_unittest.cc +++ b/chrome/browser/ui/views/frame/web_contents_close_handler_unittest.cc
@@ -13,9 +13,7 @@ public: MockWebContentsCloseHandlerDelegate() : task_environment_( - base::test::SingleThreadTaskEnvironment::MainThreadType::UI), - got_clone_(false), - got_destroy_(false) {} + base::test::SingleThreadTaskEnvironment::MainThreadType::UI) {} MockWebContentsCloseHandlerDelegate( const MockWebContentsCloseHandlerDelegate&) = delete; @@ -38,8 +36,8 @@ private: base::test::SingleThreadTaskEnvironment task_environment_; - bool got_clone_; - bool got_destroy_; + bool got_clone_ = false; + bool got_destroy_ = false; }; // -----------------------------------------------------------------------------
diff --git a/chrome/browser/ui/views/glic/border/BUILD.gn b/chrome/browser/ui/views/glic/border/BUILD.gn index 55cb49f..65114e4 100644 --- a/chrome/browser/ui/views/glic/border/BUILD.gn +++ b/chrome/browser/ui/views/glic/border/BUILD.gn
@@ -1,15 +1,11 @@ -# Copyright 2024 The Chromium Authors -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -source_set("interactive_ui_tests") { +source_set("browser_tests") { testonly = true defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] sources = [ "border_view_browsertest.cc" ] deps = [ "//chrome/browser", + "//chrome/browser:browser_process", "//chrome/browser/ui", - "//chrome/common", "//chrome/test:test_support", "//content/test:test_support", ]
diff --git a/chrome/browser/ui/views/glic/border/border_view.cc b/chrome/browser/ui/views/glic/border/border_view.cc index d4e5907..ae9f53b3 100644 --- a/chrome/browser/ui/views/glic/border/border_view.cc +++ b/chrome/browser/ui/views/glic/border/border_view.cc
@@ -50,20 +50,14 @@ void BorderView::OnPaint(gfx::Canvas* canvas) { // TODO(baranerf): Modify this to a variable width when adding animation. - // - // Note: | | | - // |<-- 5px -->|<-- 5px -->| - // | outside | visible | - // - // So only half of the width are inside the visible viewport. - constexpr static int kBorderWidth = 10; + constexpr static int kBorderWidth = 5; views::View::OnPaint(canvas); cc::PaintFlags flags; flags.setStyle(cc::PaintFlags::kStroke_Style); flags.setColor(GetColorProvider()->GetColor(ui::kColorSysPrimary)); flags.setStrokeWidth(kBorderWidth); - canvas->DrawRect(gfx::RectF(GetContentsBounds()), flags); + canvas->DrawRect(GetContentsBounds(), flags); } void BorderView::OnChildViewAdded(views::View* observed_view,
diff --git a/chrome/browser/ui/views/glic/border/border_view_browsertest.cc b/chrome/browser/ui/views/glic/border/border_view_browsertest.cc index b513340..20006977 100644 --- a/chrome/browser/ui/views/glic/border/border_view_browsertest.cc +++ b/chrome/browser/ui/views/glic/border/border_view_browsertest.cc
@@ -4,23 +4,15 @@ #include "chrome/browser/ui/views/glic/border/border_view.h" -#include "base/test/bind.h" -#include "base/test/test_future.h" -#include "cc/test/pixel_test_utils.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/test/base/in_process_browser_test.h" -#include "components/viz/common/frame_timing_details.h" #include "content/public/test/browser_test.h" #include "content/public/test/test_utils.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/base/metadata/metadata_header_macros.h" #include "ui/base/metadata/metadata_impl_macros.h" -#include "ui/compositor/compositor.h" -#include "ui/compositor/layer.h" -#include "ui/gfx/native_widget_types.h" -#include "ui/snapshot/snapshot.h" namespace glic { @@ -147,153 +139,4 @@ return info.param ? "CompetingSibling" : "RegularSibling"; }); -namespace { - -class BorderViewPixelTest : public InProcessBrowserTest { - public: - BorderViewPixelTest() = default; - ~BorderViewPixelTest() override = default; - - void SetUp() override { - EnablePixelOutput(); - InProcessBrowserTest::SetUp(); - } - - static SkBitmap ConstructExpectedBitmap(const gfx::Size& size, - SkColor border_color, - SkColor center_color, - int border_width) { - SkBitmap bitmap; - SkImageInfo info = - SkImageInfo::Make(size.width(), size.height(), kRGBA_8888_SkColorType, - kUnpremul_SkAlphaType); - bitmap.allocPixels(info); - bitmap.eraseColor(center_color); - SkCanvas canvas(bitmap, SkSurfaceProps{}); - SkPaint border; - border.setColor(border_color); - border.setStyle(SkPaint::Style::kStroke_Style); - border.setStrokeWidth(border_width); - canvas.drawRect(SkRect::MakeXYWH(0, 0, size.width(), size.height()), - border); - return bitmap; - } - - // TODO(crbug.com/386220498): Look into the feasibility of Skia gold tests. - static void ExpectTwoBitmapsAreEqual(const SkBitmap& actual, - const SkBitmap& expected, - int bottom_rows_to_exclude) { - ASSERT_EQ(actual.dimensions(), expected.dimensions()) - << actual.dimensions().width() << "x" << actual.dimensions().height() - << " vs " << expected.dimensions().width() << "x" - << expected.dimensions().height(); - - int num_pixel_mismatch = 0; - gfx::Rect err_bounding_box; - - for (int r = 0; r < actual.height() - bottom_rows_to_exclude; ++r) { - for (int c = 0; c < actual.width(); ++c) { - if (actual.getColor(c, r) != expected.getColor(c, r)) { - ++num_pixel_mismatch; - err_bounding_box.Union(gfx::Rect(c, r, 1, 1)); - } - } - } - if (num_pixel_mismatch != 0) { - EXPECT_TRUE(false) << "Number of pixel mismatches: " << num_pixel_mismatch - << "; error bounding box: " - << err_bounding_box.ToString() << "; actual bitmap " - << cc::GetPNGDataUrl(actual); - } - } - - static void WaitForCompositorFlush(content::WebContents* web_contents) { - ForceNewCompositorFrameFromBrowser(web_contents); - WaitForBrowserCompositorFramePresented(web_contents); - } -}; -} // namespace - -IN_PROC_BROWSER_TEST_F(BorderViewPixelTest, Basic) { - // TODO(crbug.com/385828490): We should exercise the proper closing flow. - // Currently the BookmarkModel has a dangling observer during destruction, if - // the glic UI is toggled. - auto* border = - browser()->window()->AsBrowserView()->contents_web_view()->glic_border(); - - ASSERT_EQ(browser()->tab_strip_model()->GetTabCount(), 1); - auto* web_contents = - browser()->tab_strip_model()->GetTabAtIndex(0)->GetContents(); - - { - SCOPED_TRACE("Start animation"); - border->StartAnimation(); - // Makes sure the pixels are on the screen. - WaitForCompositorFlush(web_contents); - } - - auto* browser_view = browser()->window()->AsBrowserView(); - - gfx::Rect capture_rect = web_contents->GetViewBounds(); - const auto& browser_view_screen_bounds = browser_view->GetBoundsInScreen(); - const auto& browser_view_bounds = browser_view->bounds(); - // TODO(liuwilliam): We should only use the screen coordinates, instead mixing - // screen and view coords. Currently the WebContents's screen coordinates are - // not exposed (see `ui::NativeViewHost`). - // - // Example: - // web_contents->GetViewBounds() 14,97 1042x689 - // browser_view->GetBoundsInScreen() 14,10 1042x776 - // browser_view->bounds() 4,0 1042x776 - // capture_rect 4,87 1042x689 - capture_rect.Offset(-browser_view_screen_bounds.OffsetFromOrigin()); - capture_rect.Offset(browser_view_bounds.OffsetFromOrigin()); - - int bottom_rows_to_exclude = 0; -#if BUILDFLAG(IS_MAC) - // Exclude the bottom 15 rows from the comparison because the rounded bottom - // corners. - bottom_rows_to_exclude = 15; -#endif - - gfx::NativeWindow native_window = browser()->window()->GetNativeWindow(); - - { - SCOPED_TRACE("Assert border"); - base::test::TestFuture<gfx::Image> result; - ui::GrabWindowSnapshot(native_window, capture_rect, result.GetCallback()); - // Makes sure our CopyOutputRequest is served. We won't get the results back - // if Viz doesn't activate a frame. - WaitForCompositorFlush(web_contents); - - SkBitmap expected = ConstructExpectedBitmap( - capture_rect.size(), - /*border_color=*/ - browser()->GetBrowserView().GetColorProvider()->GetColor( - ui::kColorSysPrimary), - /*center_color=*/SkColors::kWhite.toSkColor(), /*border_width=*/10); - ExpectTwoBitmapsAreEqual(result.Get().AsBitmap(), expected, - bottom_rows_to_exclude); - } - { - SCOPED_TRACE("Cancel animation"); - // TODO(crbug.com/385828490): Ditto. - border->CancelAnimation(); - WaitForCompositorFlush(web_contents); - } - { - SCOPED_TRACE("Assert no border"); - base::test::TestFuture<gfx::Image> result; - ui::GrabWindowSnapshot(native_window, capture_rect, result.GetCallback()); - WaitForCompositorFlush(web_contents); - - SkBitmap expected = ConstructExpectedBitmap( - capture_rect.size(), - /*border_color=*/SkColors::kWhite.toSkColor(), - /*center_color=*/SkColors::kWhite.toSkColor(), /*border_width=*/10); - ExpectTwoBitmapsAreEqual(result.Get().AsBitmap(), expected, - bottom_rows_to_exclude); - } -} - } // namespace glic
diff --git a/chrome/browser/ui/views/glic/glic_view.cc b/chrome/browser/ui/views/glic/glic_view.cc index 53fbae92..fa36c95 100644 --- a/chrome/browser/ui/views/glic/glic_view.cc +++ b/chrome/browser/ui/views/glic/glic_view.cc
@@ -44,6 +44,9 @@ views::Widget::InitParams::TYPE_WINDOW_FRAMELESS); params.opacity = views::Widget::InitParams::WindowOpacity::kTranslucent; params.remove_standard_frame = true; +#if BUILDFLAG(IS_WIN) + params.dont_show_in_taskbar = true; +#endif params.shadow_type = views::Widget::InitParams::ShadowType::kNone; params.bounds = initial_bounds;
diff --git a/chrome/browser/ui/views/location_bar/custom_tab_bar_view_browsertest.cc b/chrome/browser/ui/views/location_bar/custom_tab_bar_view_browsertest.cc index c200749..dcc65e2 100644 --- a/chrome/browser/ui/views/location_bar/custom_tab_bar_view_browsertest.cc +++ b/chrome/browser/ui/views/location_bar/custom_tab_bar_view_browsertest.cc
@@ -156,7 +156,7 @@ class UrlHidingWebContentsObserver : public content::WebContentsObserver { public: explicit UrlHidingWebContentsObserver(content::WebContents* contents) - : content::WebContentsObserver(contents), install_interstitial_(true) {} + : content::WebContentsObserver(contents) {} void DidFinishNavigation(content::NavigationHandle* handle) override { if (!install_interstitial_) { @@ -172,7 +172,7 @@ void StopBlocking() { install_interstitial_ = false; } private: - bool install_interstitial_; + bool install_interstitial_ = true; }; } // namespace @@ -709,8 +709,9 @@ content::WebContents* web_contents = app_browser_->tab_strip_model()->GetActiveWebContents(); - content::TestNavigationObserver nav_observer(web_contents, - /*number_of_navigations=*/1); + content::TestNavigationObserver nav_observer( + web_contents, + /*expected_number_of_navigations=*/1); std::string script = "window.open(" " URL.createObjectURL("
diff --git a/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc b/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc index 09eedc8..7f95282 100644 --- a/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc +++ b/chrome/browser/ui/views/location_bar/icon_label_bubble_view.cc
@@ -504,7 +504,7 @@ // Subclasses override `ShouldShowLabelAfterAnimation` for custom behavior. // Default behavior is when we do not show separator, the label should // collapse. - ResetSlideAnimation(/*show_label=*/ShouldShowLabelAfterAnimation()); + ResetSlideAnimation(/*show=*/ShouldShowLabelAfterAnimation()); PreferredSizeChanged(); }
diff --git a/chrome/browser/ui/views/location_bar/location_bar_layout.cc b/chrome/browser/ui/views/location_bar/location_bar_layout.cc index 1bd87db7..9f5a9dd7 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_layout.cc +++ b/chrome/browser/ui/views/location_bar/location_bar_layout.cc
@@ -47,7 +47,7 @@ raw_ptr<views::View> view; // The width computed by the layout process. - double computed_width; + double computed_width = 0; }; DecorationInfo::DecorationInfo(int y, @@ -63,8 +63,7 @@ max_fraction(max_fraction), intra_item_padding(intra_item_padding), edge_item_padding(edge_item_padding), - view(view), - computed_width(0) { + view(view) { DCHECK((max_fraction == 0.0) || (!auto_collapse && (max_fraction > 0.0))); }
diff --git a/chrome/browser/ui/views/location_bar/omnibox_chip_button.cc b/chrome/browser/ui/views/location_bar/omnibox_chip_button.cc index 4c88245e..6dc55d5 100644 --- a/chrome/browser/ui/views/location_bar/omnibox_chip_button.cc +++ b/chrome/browser/ui/views/location_bar/omnibox_chip_button.cc
@@ -21,7 +21,7 @@ #include "ui/color/color_id.h" #include "ui/color/color_provider.h" #include "ui/gfx/color_utils.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/background.h" #include "ui/views/controls/highlight_path_generator.h" #include "ui/views/interaction/element_tracker_views.h" @@ -166,7 +166,7 @@ return const_cast<decltype(*icon_)>(*icon_); } - return gfx::VectorIcon::EmptyIcon(); + return gfx::kNoneIcon; } ui::ColorId OmniboxChipButton::GetForegroundColorId() const {
diff --git a/chrome/browser/ui/views/location_bar/omnibox_chip_button.h b/chrome/browser/ui/views/location_bar/omnibox_chip_button.h index 2d0862f..d4a5609 100644 --- a/chrome/browser/ui/views/location_bar/omnibox_chip_button.h +++ b/chrome/browser/ui/views/location_bar/omnibox_chip_button.h
@@ -11,6 +11,7 @@ #include "ui/base/metadata/metadata_header_macros.h" #include "ui/base/models/image_model.h" #include "ui/gfx/animation/slide_animation.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/gfx/vector_icon_types.h" #include "ui/views/controls/button/md_text_button.h" @@ -96,7 +97,7 @@ // without text. bool fully_collapsed_ = false; - raw_ptr<const gfx::VectorIcon> icon_ = &gfx::VectorIcon::EmptyIcon(); + raw_ptr<const gfx::VectorIcon> icon_ = &gfx::kNoneIcon; base::ObserverList<Observer> observers_; };
diff --git a/chrome/browser/ui/views/media_preview/camera_preview/video_stream_coordinator_unittest.cc b/chrome/browser/ui/views/media_preview/camera_preview/video_stream_coordinator_unittest.cc index a0dc9ad..22d1652 100644 --- a/chrome/browser/ui/views/media_preview/camera_preview/video_stream_coordinator_unittest.cc +++ b/chrome/browser/ui/views/media_preview/camera_preview/video_stream_coordinator_unittest.cc
@@ -138,27 +138,27 @@ kErrorFakeDeviceIntentionallyEmittingErrorEvent; // any random error. SendAndWaitForError(error); histogram_tester_.ExpectUniqueSample(kCapturedErrors, - /*bucket_index=*/error, 1); + /*sample=*/error, 1); coordinator_->Stop(); EXPECT_TRUE(fake_video_source_.WaitForPushSubscriptionClosed()); histogram_tester_.ExpectUniqueSample(kVideoDelay, - /*bucket_min_value=*/50, 1); + /*sample=*/50, 1); // The selected pixel height is 720, so it will be logged in the 675 bucket. histogram_tester_.ExpectUniqueSample(kPixelHeight, - /*bucket_min_value=*/675, 1); + /*sample=*/675, 1); histogram_tester_.ExpectUniqueSample(kExpectedFPS, - /*bucket_min_value=*/30, 1); + /*sample=*/30, 1); histogram_tester_.ExpectUniqueSample(kActualFPS, - /*bucket_min_value=*/18, 1); + /*sample=*/18, 1); histogram_tester_.ExpectUniqueSample(kRenderedPercent, - /*bucket_min_value=*/50, 1); + /*sample=*/50, 1); coordinator_.reset(); histogram_tester_.ExpectUniqueSample(kTotalVisibleDuration, - /*bucket_min_value=*/750, 1); + /*sample=*/750, 1); histogram_tester_.ExpectTotalCount(kTimeToActionWithoutPreview, 0); } @@ -181,7 +181,7 @@ kVideoCaptureControllerUnsupportedPixelFormat; // any random error. SendAndWaitForError(error); histogram_tester_.ExpectUniqueSample(kCapturedErrors, - /*bucket_index=*/error, 1); + /*sample=*/error, 1); fake_video_source_.SendError(error); coordinator_->Stop(); @@ -194,18 +194,18 @@ // The selected pixel height is 720, so it will be logged in the 675 bucket. histogram_tester_.ExpectUniqueSample(kPixelHeight, - /*bucket_min_value=*/675, 1); + /*sample=*/675, 1); histogram_tester_.ExpectUniqueSample(kExpectedFPS, - /*bucket_min_value=*/30, 1); + /*sample=*/30, 1); histogram_tester_.ExpectTotalCount(kActualFPS, 0); histogram_tester_.ExpectTotalCount(kRenderedPercent, 0); coordinator_.reset(); histogram_tester_.ExpectUniqueSample(kTotalVisibleDuration, - /*bucket_min_value=*/0, 1); + /*sample=*/0, 1); histogram_tester_.ExpectUniqueSample(kTimeToActionWithoutPreview, - /*bucket_min_value=*/125, 1); + /*sample=*/125, 1); } TEST_F(VideoStreamCoordinatorTest,
diff --git a/chrome/browser/ui/views/media_router/presentation_receiver_window_view_browsertest.cc b/chrome/browser/ui/views/media_router/presentation_receiver_window_view_browsertest.cc index 5ae6c87d..4a284597 100644 --- a/chrome/browser/ui/views/media_router/presentation_receiver_window_view_browsertest.cc +++ b/chrome/browser/ui/views/media_router/presentation_receiver_window_view_browsertest.cc
@@ -69,14 +69,15 @@ }; class PresentationReceiverWindowViewBrowserTest : public InProcessBrowserTest { - protected: - PresentationReceiverWindowViewBrowserTest() = default; - + public: PresentationReceiverWindowViewBrowserTest( const PresentationReceiverWindowViewBrowserTest&) = delete; PresentationReceiverWindowViewBrowserTest& operator=( const PresentationReceiverWindowViewBrowserTest&) = delete; + protected: + PresentationReceiverWindowViewBrowserTest() = default; + PresentationReceiverWindowView* CreateReceiverWindowView( PresentationReceiverWindowDelegate* delegate, const gfx::Rect& bounds) {
diff --git a/chrome/browser/ui/views/media_router/web_contents_display_observer_view_unittest.cc b/chrome/browser/ui/views/media_router/web_contents_display_observer_view_unittest.cc index de539ee..a513e9c 100644 --- a/chrome/browser/ui/views/media_router/web_contents_display_observer_view_unittest.cc +++ b/chrome/browser/ui/views/media_router/web_contents_display_observer_view_unittest.cc
@@ -46,8 +46,7 @@ class WebContentsDisplayObserverViewTest : public ChromeRenderViewHostTestHarness { public: - WebContentsDisplayObserverViewTest() - : ChromeRenderViewHostTestHarness(), display1_(101), display2_(102) {} + WebContentsDisplayObserverViewTest() : display1_(101), display2_(102) {} void SetUp() override { ChromeRenderViewHostTestHarness::SetUp();
diff --git a/chrome/browser/ui/views/menu_interactive_uitest.cc b/chrome/browser/ui/views/menu_interactive_uitest.cc index 05293d9..29c1195 100644 --- a/chrome/browser/ui/views/menu_interactive_uitest.cc +++ b/chrome/browser/ui/views/menu_interactive_uitest.cc
@@ -40,8 +40,7 @@ #include "base/win/windows_version.h" #endif -namespace views { -namespace test { +namespace views::test { namespace { @@ -271,5 +270,4 @@ } #endif // BUILDFLAG(IS_WIN) -} // namespace test -} // namespace views +} // namespace views::test
diff --git a/chrome/browser/ui/views/omnibox/omnibox_popup_view_views_browsertest.cc b/chrome/browser/ui/views/omnibox/omnibox_popup_view_views_browsertest.cc index f24ac63..503c997 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_popup_view_views_browsertest.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_popup_view_views_browsertest.cc
@@ -586,8 +586,7 @@ AutocompleteMatch match(nullptr, 500, false, AutocompleteMatchType::HISTORY_TITLE); match.contents = match_url; - match.contents_class.push_back( - ACMatchClassification(0, ACMatchClassification::URL)); + match.contents_class.emplace_back(0, ACMatchClassification::URL); match.destination_url = GURL(match_url); match.description = u"Foobar"; match.allowed_to_be_default_match = true;
diff --git a/chrome/browser/ui/views/omnibox/omnibox_result_view_unittest.cc b/chrome/browser/ui/views/omnibox/omnibox_result_view_unittest.cc index 5a175b5..7262a14d 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_result_view_unittest.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_result_view_unittest.cc
@@ -273,8 +273,7 @@ AutocompleteMatch match(nullptr, 500, false, AutocompleteMatchType::HISTORY_TITLE); match.contents = match_url; - match.contents_class.push_back( - ACMatchClassification(0, ACMatchClassification::URL)); + match.contents_class.emplace_back(0, ACMatchClassification::URL); match.destination_url = GURL(match_url); match.description = u"Google"; match.allowed_to_be_default_match = true;
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc index d7ce37a..29a661b 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc
@@ -521,8 +521,7 @@ AutocompleteMatch match(nullptr, 500, false, AutocompleteMatchType::HISTORY_TITLE); match.contents = u"http://autocomplete-result/"; - match.contents_class.push_back( - ACMatchClassification(0, ACMatchClassification::URL)); + match.contents_class.emplace_back(0, ACMatchClassification::URL); match.destination_url = GURL("http://autocomplete-result/"); match.allowed_to_be_default_match = true; matches.push_back(match); @@ -568,8 +567,7 @@ AutocompleteMatch match(nullptr, 500, false, AutocompleteMatchType::HISTORY_TITLE); match.contents = u"http://autocomplete-result/"; - match.contents_class.push_back( - ACMatchClassification(0, ACMatchClassification::URL)); + match.contents_class.emplace_back(0, ACMatchClassification::URL); match.destination_url = GURL("http://autocomplete-result/"); match.allowed_to_be_default_match = true; matches.push_back(match); @@ -665,8 +663,7 @@ AutocompleteMatch match(nullptr, 500, false, AutocompleteMatchType::HISTORY_TITLE); match.contents = match_url; - match.contents_class.push_back( - ACMatchClassification(0, ACMatchClassification::URL)); + match.contents_class.emplace_back(0, ACMatchClassification::URL); match.destination_url = GURL(match_url); match.description = u"Google"; match.description_class = {{0, 0}}; @@ -757,8 +754,7 @@ AutocompleteMatch match(nullptr, 500, false, AutocompleteMatchType::HISTORY_TITLE); match.contents = match_url; - match.contents_class.push_back( - ACMatchClassification(0, ACMatchClassification::URL)); + match.contents_class.emplace_back(0, ACMatchClassification::URL); match.destination_url = GURL(match_url); match.description = u"Google"; match.allowed_to_be_default_match = true;
diff --git a/chrome/browser/ui/views/page_action/page_action_icon_view.cc b/chrome/browser/ui/views/page_action/page_action_icon_view.cc index bdd666f7..0d9e3cf6 100644 --- a/chrome/browser/ui/views/page_action/page_action_icon_view.cc +++ b/chrome/browser/ui/views/page_action/page_action_icon_view.cc
@@ -22,7 +22,6 @@ #include "ui/events/event.h" #include "ui/gfx/color_utils.h" #include "ui/gfx/paint_vector_icon.h" -#include "ui/gfx/vector_icon_types.h" #include "ui/native_theme/native_theme.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/animation/flood_fill_ink_drop_ripple.h" @@ -214,7 +213,7 @@ } const gfx::VectorIcon& PageActionIconView::GetVectorIconBadge() const { - return gfx::VectorIcon::EmptyIcon(); + return gfx::kNoneIcon; } ui::ImageModel PageActionIconView::GetSizedIconImage(int size) const { @@ -258,7 +257,7 @@ // Currently no page action icon should be visible during user input. // A future subclass may need a hook here if that changes. if (delegate_->ShouldHidePageActionIcons()) { - ResetSlideAnimation(/*show_label=*/false); + ResetSlideAnimation(/*show=*/false); SetVisible(false); } else { UpdateImpl();
diff --git a/chrome/browser/ui/views/page_action/page_action_icon_view_unittest.cc b/chrome/browser/ui/views/page_action/page_action_icon_view_unittest.cc index acc65ae..4af23ecd 100644 --- a/chrome/browser/ui/views/page_action/page_action_icon_view_unittest.cc +++ b/chrome/browser/ui/views/page_action/page_action_icon_view_unittest.cc
@@ -11,7 +11,7 @@ #include "third_party/skia/include/core/SkBitmap.h" #include "ui/events/test/event_generator.h" #include "ui/gfx/color_palette.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/controls/button/button.h" #include "ui/views/widget/widget_utils.h" @@ -96,7 +96,7 @@ // PageActionIconView: void OnExecuting(ExecuteSource execute_source) override {} const gfx::VectorIcon& GetVectorIcon() const override { - return gfx::VectorIcon::EmptyIcon(); + return gfx::kNoneIcon; } void UpdateImpl() override {}
diff --git a/chrome/browser/ui/views/page_action/pwa_install_view_browsertest.cc b/chrome/browser/ui/views/page_action/pwa_install_view_browsertest.cc index 5126c10..38303ae 100644 --- a/chrome/browser/ui/views/page_action/pwa_install_view_browsertest.cc +++ b/chrome/browser/ui/views/page_action/pwa_install_view_browsertest.cc
@@ -337,9 +337,9 @@ std::vector<base::Bucket> expected_buckets; if (expected_count > 0) { - expected_buckets.push_back( - {static_cast<int>(webapps::WebappInstallSource::OMNIBOX_INSTALL_ICON), - expected_count}); + expected_buckets.emplace_back( + static_cast<int>(webapps::WebappInstallSource::OMNIBOX_INSTALL_ICON), + expected_count); } EXPECT_EQ(histogram_tester.GetAllSamples("Webapp.Install.InstallBounce"), expected_buckets);
diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrome/browser/ui/views/page_info/page_info_view_factory.cc index e7a53e45..6a778d3 100644 --- a/chrome/browser/ui/views/page_info/page_info_view_factory.cc +++ b/chrome/browser/ui/views/page_info/page_info_view_factory.cc
@@ -37,7 +37,7 @@ #include "components/vector_icons/vector_icons.h" #include "ui/base/l10n/l10n_util.h" #include "ui/color/color_id.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/bubble/bubble_frame_view.h" #include "ui/views/controls/button/image_button.h" #include "ui/views/controls/button/image_button_factory.h" @@ -464,7 +464,7 @@ return ui::ImageModel::FromVectorIcon(*icon, ui::kColorIcon, GetIconSize()); } - icon = &gfx::VectorIcon::EmptyIcon(); + icon = &gfx::kNoneIcon; switch (info.type) { case ContentSettingsType::COOKIES: icon = &vector_icons::kDatabaseIcon; @@ -594,7 +594,7 @@ // is not currently conncted to the system. // TODO(crbug.com/40672237): Check the connected status of devices and // change the icon to one that reflects that status. - const gfx::VectorIcon* icon = &gfx::VectorIcon::EmptyIcon(); + const gfx::VectorIcon* icon = &gfx::kNoneIcon; switch (object.ui_info->content_settings_type) { case ContentSettingsType::USB_CHOOSER_DATA: icon = &vector_icons::kUsbIcon;
diff --git a/chrome/browser/ui/views/passwords/move_to_account_store_bubble_view.cc b/chrome/browser/ui/views/passwords/move_to_account_store_bubble_view.cc index 0270c73..5f047e7 100644 --- a/chrome/browser/ui/views/passwords/move_to_account_store_bubble_view.cc +++ b/chrome/browser/ui/views/passwords/move_to_account_store_bubble_view.cc
@@ -259,7 +259,7 @@ views::View* anchor_view) : PasswordBubbleViewBase(web_contents, anchor_view, - /*auto_dismissable=*/false), + /*easily_dismissable=*/false), controller_(PasswordsModelDelegateFromWebContents(web_contents)) { SetLayoutManager(std::make_unique<views::FlexLayout>()) ->SetOrientation(views::LayoutOrientation::kVertical)
diff --git a/chrome/browser/ui/views/passwords/post_save_compromised_bubble_view.cc b/chrome/browser/ui/views/passwords/post_save_compromised_bubble_view.cc index a65914fb..f101e251 100644 --- a/chrome/browser/ui/views/passwords/post_save_compromised_bubble_view.cc +++ b/chrome/browser/ui/views/passwords/post_save_compromised_bubble_view.cc
@@ -22,7 +22,7 @@ views::View* anchor_view) : PasswordBubbleViewBase(web_contents, anchor_view, - /*auto_dismissable=*/false), + /*easily_dismissable=*/false), controller_(PasswordsModelDelegateFromWebContents(web_contents)) { SetLayoutManager(std::make_unique<views::FillLayout>());
diff --git a/chrome/browser/ui/views/payments/contact_info_editor_view_controller.cc b/chrome/browser/ui/views/payments/contact_info_editor_view_controller.cc index 4d83829..01a26f0 100644 --- a/chrome/browser/ui/views/payments/contact_info_editor_view_controller.cc +++ b/chrome/browser/ui/views/payments/contact_info_editor_view_controller.cc
@@ -60,23 +60,23 @@ } if (spec()->request_payer_name()) { - fields.push_back(EditorField( + fields.emplace_back( autofill::NAME_FULL, l10n_util::GetStringUTF16(IDS_PAYMENTS_NAME_FIELD_IN_CONTACT_DETAILS), - EditorField::LengthHint::HINT_SHORT, /*required=*/true)); + EditorField::LengthHint::HINT_SHORT, /*required=*/true); } if (spec()->request_payer_phone()) { - fields.push_back(EditorField( + fields.emplace_back( autofill::PHONE_HOME_WHOLE_NUMBER, l10n_util::GetStringUTF16(IDS_PAYMENTS_PHONE_FIELD_IN_CONTACT_DETAILS), EditorField::LengthHint::HINT_SHORT, /*required=*/true, - EditorField::ControlType::TEXTFIELD_NUMBER)); + EditorField::ControlType::TEXTFIELD_NUMBER); } if (spec()->request_payer_email()) { - fields.push_back(EditorField( + fields.emplace_back( autofill::EMAIL_ADDRESS, l10n_util::GetStringUTF16(IDS_PAYMENTS_EMAIL_FIELD_IN_CONTACT_DETAILS), - EditorField::LengthHint::HINT_SHORT, /*required=*/true)); + EditorField::LengthHint::HINT_SHORT, /*required=*/true); } return fields; }
diff --git a/chrome/browser/ui/views/payments/credit_card_editor_view_controller_browsertest.cc b/chrome/browser/ui/views/payments/credit_card_editor_view_controller_browsertest.cc index 35696a27..69e28cc 100644 --- a/chrome/browser/ui/views/payments/credit_card_editor_view_controller_browsertest.cc +++ b/chrome/browser/ui/views/payments/credit_card_editor_view_controller_browsertest.cc
@@ -494,7 +494,7 @@ OpenPaymentMethodScreen(); ResetEventWaiter(DialogEvent::CREDIT_CARD_EDITOR_OPENED); - ClickOnChildInListViewAndWait(/*child_index=*/0, /*num_children=*/1, + ClickOnChildInListViewAndWait(/*child_index=*/0, /*total_num_children=*/1, DialogViewID::PAYMENT_METHOD_SHEET_LIST_VIEW); // Proper error shown. @@ -556,7 +556,7 @@ OpenPaymentMethodScreen(); ResetEventWaiter(DialogEvent::CREDIT_CARD_EDITOR_OPENED); - ClickOnChildInListViewAndWait(/*child_index=*/0, /*num_children=*/1, + ClickOnChildInListViewAndWait(/*child_index=*/0, /*total_num_children=*/1, DialogViewID::PAYMENT_METHOD_SHEET_LIST_VIEW); // Proper error shown. @@ -621,7 +621,7 @@ OpenPaymentMethodScreen(); ResetEventWaiter(DialogEvent::CREDIT_CARD_EDITOR_OPENED); - ClickOnChildInListViewAndWait(/*child_index=*/0, /*num_children=*/1, + ClickOnChildInListViewAndWait(/*child_index=*/0, /*total_num_children=*/1, DialogViewID::PAYMENT_METHOD_SHEET_LIST_VIEW); // Change the name. SetEditorTextfieldValue(u"Bob the second", autofill::CREDIT_CARD_NAME_FULL); @@ -668,7 +668,7 @@ OpenPaymentMethodScreen(); ResetEventWaiter(DialogEvent::CREDIT_CARD_EDITOR_OPENED); - ClickOnChildInListViewAndWait(/*child_index=*/0, /*num_children=*/1, + ClickOnChildInListViewAndWait(/*child_index=*/0, /*total_num_children=*/1, DialogViewID::PAYMENT_METHOD_SHEET_LIST_VIEW); // Billing address combobox must be disabled since there are no saved address. views::View* billing_address_combobox = dialog_view()->GetViewByID( @@ -681,8 +681,8 @@ SetRegionDataLoader(&test_region_data_loader_); test_region_data_loader_.set_synchronous_callback(true); std::vector<std::pair<std::string, std::string>> regions1; - regions1.push_back(std::make_pair("AL", "Alabama")); - regions1.push_back(std::make_pair("CA", "California")); + regions1.emplace_back("AL", "Alabama"); + regions1.emplace_back("CA", "California"); test_region_data_loader_.SetRegionData(regions1); // Click to open the address editor
diff --git a/chrome/browser/ui/views/payments/payment_request_sheet_controller.cc b/chrome/browser/ui/views/payments/payment_request_sheet_controller.cc index 357e446..71498a66 100644 --- a/chrome/browser/ui/views/payments/payment_request_sheet_controller.cc +++ b/chrome/browser/ui/views/payments/payment_request_sheet_controller.cc
@@ -36,9 +36,7 @@ #include "ui/views/metadata/view_factory.h" #include "ui/views/painter.h" -namespace payments { - -namespace internal { +namespace payments::internal { // This class is the actual sheet that gets pushed on the view_stack_. It // implements views::FocusTraversable to trap focus within its hierarchy. This @@ -268,9 +266,7 @@ BEGIN_METADATA(PaymentRequestBackArrowButton) END_METADATA -} // namespace internal - -} // namespace payments +} // namespace payments::internal DEFINE_VIEW_BUILDER(, payments::internal::SheetView)
diff --git a/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc b/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc index 6534a10..ed5629d2 100644 --- a/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc +++ b/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc
@@ -398,14 +398,13 @@ model = &local_model; } - for (size_t i = 0; i < model->countries().size(); ++i) { - autofill::AutofillCountry* country(model->countries()[i].get()); + for (const auto& i : model->countries()) { + autofill::AutofillCountry* country(i.get()); if (country) { - countries_.push_back( - std::make_pair(country->country_code(), country->name())); + countries_.emplace_back(country->country_code(), country->name()); } else { // Separator, kept to make sure the size of the vector stays the same. - countries_.push_back(std::make_pair("", u"")); + countries_.emplace_back("", u""); } } // If there is a profile to edit, make sure to use its country for the initial
diff --git a/chrome/browser/ui/views/payments/shipping_address_editor_view_controller_browsertest.cc b/chrome/browser/ui/views/payments/shipping_address_editor_view_controller_browsertest.cc index 71f6807b..d7b0837 100644 --- a/chrome/browser/ui/views/payments/shipping_address_editor_view_controller_browsertest.cc +++ b/chrome/browser/ui/views/payments/shipping_address_editor_view_controller_browsertest.cc
@@ -315,7 +315,7 @@ OpenShippingAddressEditorScreen(); // Complete the async fetch of region data. std::vector<std::pair<std::string, std::string>> regions; - regions.push_back(std::make_pair(kAnyStateCode, kAnyState)); + regions.emplace_back(kAnyStateCode, kAnyState); test_region_data_loader_.SendAsynchronousData(regions); SetCommonFields(); @@ -366,7 +366,7 @@ test_region_data_loader_.set_synchronous_callback(false); OpenShippingAddressEditorScreen(); std::vector<std::pair<std::string, std::string>> regions1; - regions1.push_back(std::make_pair("1a", "region1a")); + regions1.emplace_back("1a", "region1a"); test_region_data_loader_.SendAsynchronousData(regions1); SetCommonFields(); @@ -384,8 +384,8 @@ bool use_regions1 = true; std::vector<std::pair<std::string, std::string>> regions2; - regions2.push_back(std::make_pair("2a", "region2a")); - regions2.push_back(std::make_pair("2b", "region2b")); + regions2.emplace_back("2a", "region2a"); + regions2.emplace_back("2b", "region2b"); std::set<autofill::FieldType> unset_types; for (size_t country_index = 10; country_index < num_countries; country_index += num_countries / 10) { @@ -573,7 +573,7 @@ OpenShippingAddressSectionScreen(); ResetEventWaiter(DialogEvent::SHIPPING_ADDRESS_EDITOR_OPENED); - ClickOnChildInListViewAndWait(/*child_index=*/0, /*num_children=*/1, + ClickOnChildInListViewAndWait(/*child_index=*/0, /*total_num_children=*/1, DialogViewID::SHIPPING_ADDRESS_SHEET_LIST_VIEW); EXPECT_EQ(kNameFull, GetEditorTextfieldValue(autofill::NAME_FULL)); @@ -672,7 +672,7 @@ test_region_data_loader_.set_synchronous_callback(true); OpenShippingAddressSectionScreen(); ResetEventWaiter(DialogEvent::SHIPPING_ADDRESS_EDITOR_OPENED); - ClickOnChildInListViewAndWait(/*child_index=*/0, /*num_children=*/1, + ClickOnChildInListViewAndWait(/*child_index=*/0, /*total_num_children=*/1, DialogViewID::SHIPPING_ADDRESS_SHEET_LIST_VIEW); views::Textfield* textfield = @@ -697,8 +697,8 @@ SetRegionDataLoader(&test_region_data_loader_); test_region_data_loader_.set_synchronous_callback(true); std::vector<std::pair<std::string, std::string>> regions1; - regions1.push_back(std::make_pair("AL", "Alabama")); - regions1.push_back(std::make_pair("CA", "California")); + regions1.emplace_back("AL", "Alabama"); + regions1.emplace_back("CA", "California"); test_region_data_loader_.SetRegionData(regions1); OpenShippingAddressEditorScreen(); @@ -761,8 +761,8 @@ SetRegionDataLoader(&test_region_data_loader_); test_region_data_loader_.set_synchronous_callback(true); std::vector<std::pair<std::string, std::string>> regions; - regions.push_back(std::make_pair("AK", "Alaska")); - regions.push_back(std::make_pair("CA", "California")); + regions.emplace_back("AK", "Alaska"); + regions.emplace_back("CA", "California"); test_region_data_loader_.SetRegionData(regions); OpenShippingAddressSectionScreen(); @@ -907,11 +907,11 @@ static_cast<views::Label*>(error_label)->GetText()); ResetEventWaiter(DialogEvent::SHIPPING_ADDRESS_EDITOR_OPENED); - ClickOnChildInListViewAndWait(/*child_index=*/0, /*num_children=*/1, + ClickOnChildInListViewAndWait(/*child_index=*/0, /*total_num_children=*/1, DialogViewID::SHIPPING_ADDRESS_SHEET_LIST_VIEW); std::vector<std::pair<std::string, std::string>> regions1; - regions1.push_back(std::make_pair("AL", "Alabama")); - regions1.push_back(std::make_pair("CA", "California")); + regions1.emplace_back("AL", "Alabama"); + regions1.emplace_back("CA", "California"); test_region_data_loader_.SendAsynchronousData(regions1); // Expect that the country is set correctly. EXPECT_EQ(u"United States", GetComboboxValue(autofill::ADDRESS_HOME_COUNTRY)); @@ -977,11 +977,11 @@ static_cast<views::Label*>(error_label)->GetText()); ResetEventWaiter(DialogEvent::SHIPPING_ADDRESS_EDITOR_OPENED); - ClickOnChildInListViewAndWait(/*child_index=*/0, /*num_children=*/1, + ClickOnChildInListViewAndWait(/*child_index=*/0, /*total_num_children=*/1, DialogViewID::SHIPPING_ADDRESS_SHEET_LIST_VIEW); std::vector<std::pair<std::string, std::string>> regions1; - regions1.push_back(std::make_pair("AL", "Alabama")); - regions1.push_back(std::make_pair("CA", "California")); + regions1.emplace_back("AL", "Alabama"); + regions1.emplace_back("CA", "California"); test_region_data_loader_.SendAsynchronousData(regions1); // Expect that the default country was selected. @@ -1024,11 +1024,11 @@ static_cast<views::Label*>(error_label)->GetText()); ResetEventWaiter(DialogEvent::SHIPPING_ADDRESS_EDITOR_OPENED); - ClickOnChildInListViewAndWait(/*child_index=*/0, /*num_children=*/1, + ClickOnChildInListViewAndWait(/*child_index=*/0, /*total_num_children=*/1, DialogViewID::SHIPPING_ADDRESS_SHEET_LIST_VIEW); std::vector<std::pair<std::string, std::string>> regions1; - regions1.push_back(std::make_pair("AL", "Alabama")); - regions1.push_back(std::make_pair("CA", "California")); + regions1.emplace_back("AL", "Alabama"); + regions1.emplace_back("CA", "California"); test_region_data_loader_.SendAsynchronousData(regions1); // Expect that the default country was selected. @@ -1061,8 +1061,8 @@ test_region_data_loader_.set_synchronous_callback(true); std::vector<std::pair<std::string, std::string>> regions; - regions.push_back(std::make_pair("AL", "Alabama")); - regions.push_back(std::make_pair("CA", "California")); + regions.emplace_back("AL", "Alabama"); + regions.emplace_back("CA", "California"); test_region_data_loader_.SetRegionData(regions); OpenShippingAddressSectionScreen(); @@ -1076,7 +1076,7 @@ static_cast<views::Label*>(error_label)->GetText()); ResetEventWaiter(DialogEvent::SHIPPING_ADDRESS_EDITOR_OPENED); - ClickOnChildInListViewAndWait(/*child_index=*/0, /*num_children=*/1, + ClickOnChildInListViewAndWait(/*child_index=*/0, /*total_num_children=*/1, DialogViewID::SHIPPING_ADDRESS_SHEET_LIST_VIEW); // Expect that the default country was selected. @@ -1120,13 +1120,13 @@ static_cast<views::Label*>(error_label)->GetText()); ResetEventWaiter(DialogEvent::SHIPPING_ADDRESS_EDITOR_OPENED); - ClickOnChildInListViewAndWait(/*child_index=*/0, /*num_children=*/1, + ClickOnChildInListViewAndWait(/*child_index=*/0, /*total_num_children=*/1, DialogViewID::SHIPPING_ADDRESS_SHEET_LIST_VIEW); // Send the region data. std::vector<std::pair<std::string, std::string>> regions; - regions.push_back(std::make_pair("AL", "Alabama")); - regions.push_back(std::make_pair("CA", "California")); + regions.emplace_back("AL", "Alabama"); + regions.emplace_back("CA", "California"); test_region_data_loader_.SendAsynchronousData(regions); // Expect that the default country was selected. @@ -1157,13 +1157,13 @@ test_region_data_loader_.set_synchronous_callback(true); std::vector<std::pair<std::string, std::string>> regions; - regions.push_back(std::make_pair("AL", "Alabama")); - regions.push_back(std::make_pair("CA", "California")); + regions.emplace_back("AL", "Alabama"); + regions.emplace_back("CA", "California"); test_region_data_loader_.SetRegionData(regions); OpenShippingAddressSectionScreen(); ResetEventWaiter(DialogEvent::SHIPPING_ADDRESS_EDITOR_OPENED); - ClickOnChildInListViewAndWait(/*child_index=*/0, /*num_children=*/1, + ClickOnChildInListViewAndWait(/*child_index=*/0, /*total_num_children=*/1, DialogViewID::SHIPPING_ADDRESS_SHEET_LIST_VIEW); // Expect that the state was selected. @@ -1186,13 +1186,13 @@ test_region_data_loader_.set_synchronous_callback(true); std::vector<std::pair<std::string, std::string>> regions; - regions.push_back(std::make_pair("AL", "Alabama")); - regions.push_back(std::make_pair("CA", "California")); + regions.emplace_back("AL", "Alabama"); + regions.emplace_back("CA", "California"); test_region_data_loader_.SetRegionData(regions); OpenShippingAddressSectionScreen(); ResetEventWaiter(DialogEvent::SHIPPING_ADDRESS_EDITOR_OPENED); - ClickOnChildInListViewAndWait(/*child_index=*/0, /*num_children=*/1, + ClickOnChildInListViewAndWait(/*child_index=*/0, /*total_num_children=*/1, DialogViewID::SHIPPING_ADDRESS_SHEET_LIST_VIEW); // Expect that the state was selected. @@ -1212,7 +1212,7 @@ OpenShippingAddressSectionScreen(); ResetEventWaiter(DialogEvent::SHIPPING_ADDRESS_EDITOR_OPENED); - ClickOnChildInListViewAndWait(/*child_index=*/0, /*num_children=*/1, + ClickOnChildInListViewAndWait(/*child_index=*/0, /*total_num_children=*/1, DialogViewID::SHIPPING_ADDRESS_SHEET_LIST_VIEW); ClickOnBackArrow(); @@ -1377,7 +1377,7 @@ DialogEvent::PROCESSING_SPINNER_HIDDEN, DialogEvent::SPEC_DONE_UPDATING, DialogEvent::SHIPPING_ADDRESS_EDITOR_OPENED}); - ClickOnChildInListViewAndWait(/*child_index=*/0, /*num_children=*/1, + ClickOnChildInListViewAndWait(/*child_index=*/0, /*total_num_children=*/1, DialogViewID::SHIPPING_ADDRESS_SHEET_LIST_VIEW); ASSERT_TRUE(WaitForObservedEvent());
diff --git a/chrome/browser/ui/views/payments/view_stack_unittest.cc b/chrome/browser/ui/views/payments/view_stack_unittest.cc index 3ca6ec8..bbf63b1 100644 --- a/chrome/browser/ui/views/payments/view_stack_unittest.cc +++ b/chrome/browser/ui/views/payments/view_stack_unittest.cc
@@ -15,14 +15,14 @@ public: class Observer { public: - Observer() : view_deleted_(false) {} + Observer() = default; void OnViewBeingDeleted() { view_deleted_ = true; } bool view_deleted() { return view_deleted_; } private: - bool view_deleted_; + bool view_deleted_ = false; }; TestStackView() = default;
diff --git a/chrome/browser/ui/views/permissions/chip/permission_chip_view.cc b/chrome/browser/ui/views/permissions/chip/permission_chip_view.cc index f421295..79a4efb 100644 --- a/chrome/browser/ui/views/permissions/chip/permission_chip_view.cc +++ b/chrome/browser/ui/views/permissions/chip/permission_chip_view.cc
@@ -24,7 +24,7 @@ #include "ui/color/color_id.h" #include "ui/color/color_provider.h" #include "ui/gfx/color_utils.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/background.h" #include "ui/views/controls/highlight_path_generator.h" #include "ui/views/painter.h" @@ -203,7 +203,7 @@ return const_cast<decltype(*icon_)>(*icon_); } - return gfx::VectorIcon::EmptyIcon(); + return gfx::kNoneIcon; } SkColor PermissionChipView::GetForegroundColor() const {
diff --git a/chrome/browser/ui/views/permissions/chip/permission_chip_view.h b/chrome/browser/ui/views/permissions/chip/permission_chip_view.h index 97ed525..3a0cb70 100644 --- a/chrome/browser/ui/views/permissions/chip/permission_chip_view.h +++ b/chrome/browser/ui/views/permissions/chip/permission_chip_view.h
@@ -15,6 +15,7 @@ #include "ui/base/metadata/metadata_header_macros.h" #include "ui/base/models/image_model.h" #include "ui/gfx/animation/slide_animation.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/gfx/vector_icon_types.h" #include "ui/views/controls/button/md_text_button.h" #include "ui/views/view_tracker.h" @@ -152,7 +153,7 @@ bool fully_collapsed_ = false; bool is_divider_visible_ = false; - raw_ptr<const gfx::VectorIcon> icon_ = &gfx::VectorIcon::EmptyIcon(); + raw_ptr<const gfx::VectorIcon> icon_ = &gfx::kNoneIcon; base::ObserverList<Observer> observers_; };
diff --git a/chrome/browser/ui/views/permissions/embedded_permission_prompt_base_view.cc b/chrome/browser/ui/views/permissions/embedded_permission_prompt_base_view.cc index fd3b61d..ae1fb8b 100644 --- a/chrome/browser/ui/views/permissions/embedded_permission_prompt_base_view.cc +++ b/chrome/browser/ui/views/permissions/embedded_permission_prompt_base_view.cc
@@ -25,7 +25,7 @@ #include "ui/base/ui_base_features.h" #include "ui/display/screen.h" #include "ui/gfx/geometry/rect.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/bubble/bubble_frame_view.h" #include "ui/views/controls/button/md_text_button.h" #include "ui/views/controls/label.h" @@ -137,7 +137,7 @@ } const gfx::VectorIcon& EmbeddedPermissionPromptBaseView::GetIcon() const { - return gfx::VectorIcon::EmptyIcon(); + return gfx::kNoneIcon; } bool EmbeddedPermissionPromptBaseView::ShowLoadingIcon() const {
diff --git a/chrome/browser/ui/views/permissions/midi_permissions_flow_interactive_uitest.cc b/chrome/browser/ui/views/permissions/midi_permissions_flow_interactive_uitest.cc index 24c9f0e..e28a59c 100644 --- a/chrome/browser/ui/views/permissions/midi_permissions_flow_interactive_uitest.cc +++ b/chrome/browser/ui/views/permissions/midi_permissions_flow_interactive_uitest.cc
@@ -25,7 +25,7 @@ #include "net/dns/mock_host_resolver.h" #include "third_party/blink/public/common/features.h" #include "ui/base/l10n/l10n_util.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/interaction/interaction_test_util_views.h" #include "ui/views/interaction/interactive_views_test.h" #include "ui/views/view_utils.h" @@ -171,7 +171,7 @@ EXPECT_EQ(element_view->get_icon_for_testing(), &vector_icons::kMidiOffChromeRefreshIcon); EXPECT_EQ(element_view->get_icon_badge_for_testing(), - &gfx::VectorIcon::EmptyIcon()); + &gfx::kNoneIcon); EXPECT_EQ(element_view->get_tooltip_text_for_testing(), l10n_util::GetStringUTF16( IDS_BLOCKED_MIDI_SYSEX_MESSAGE)); @@ -191,7 +191,7 @@ EXPECT_EQ(element_view->get_icon_for_testing(), &vector_icons::kMidiChromeRefreshIcon); EXPECT_EQ(element_view->get_icon_badge_for_testing(), - &gfx::VectorIcon::EmptyIcon()); + &gfx::kNoneIcon); EXPECT_EQ(element_view->get_tooltip_text_for_testing(), l10n_util::GetStringUTF16( IDS_ALLOWED_MIDI_SYSEX_MESSAGE));
diff --git a/chrome/browser/ui/views/permissions/permission_indicators_interactive_uitest.cc b/chrome/browser/ui/views/permissions/permission_indicators_interactive_uitest.cc index 0562e64..6134a56 100644 --- a/chrome/browser/ui/views/permissions/permission_indicators_interactive_uitest.cc +++ b/chrome/browser/ui/views/permissions/permission_indicators_interactive_uitest.cc
@@ -17,7 +17,7 @@ #include "content/public/test/browser_test_utils.h" #include "net/dns/mock_host_resolver.h" #include "ui/base/ui_base_features.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/interaction/interaction_test_util_views.h" namespace { @@ -120,7 +120,7 @@ CheckViewProperty( ContentSettingImageView::kMediaActivityIndicatorElementId, &ContentSettingImageView::get_icon_badge_for_testing, - &gfx::VectorIcon::EmptyIcon()), + &gfx::kNoneIcon), ExecuteJs(kWebContentsElementId, "stopCamera"), WaitForHide(ContentSettingImageView::kMediaActivityIndicatorElementId)); } @@ -146,7 +146,7 @@ CheckViewProperty( ContentSettingImageView::kMediaActivityIndicatorElementId, &ContentSettingImageView::get_icon_badge_for_testing, - &gfx::VectorIcon::EmptyIcon()), + &gfx::kNoneIcon), ExecuteJs(kWebContentsElementId, "requestCamera"), // `getUserMedia` is async, so wait until media stream is opened. WaitForStateChange(kWebContentsElementId, GetCameraStreamStateChange()), @@ -159,7 +159,7 @@ CheckViewProperty( ContentSettingImageView::kMediaActivityIndicatorElementId, &ContentSettingImageView::get_icon_badge_for_testing, - &gfx::VectorIcon::EmptyIcon()), + &gfx::kNoneIcon), ExecuteJs(kWebContentsElementId, "stopCamera"), ExecuteJs(kWebContentsElementId, "stopMic"), WaitForHide(ContentSettingImageView::kMediaActivityIndicatorElementId));
diff --git a/chrome/browser/ui/views/profiles/incognito_menu_view.cc b/chrome/browser/ui/views/profiles/incognito_menu_view.cc index 00510c9..3216e0a 100644 --- a/chrome/browser/ui/views/profiles/incognito_menu_view.cc +++ b/chrome/browser/ui/views/profiles/incognito_menu_view.cc
@@ -52,8 +52,8 @@ SetProfileIdentityInfo( /*profile_name=*/std::u16string(), - /*background_color=*/SK_ColorTRANSPARENT, - /*edit_button=*/std::nullopt, + /*profile_background_color=*/SK_ColorTRANSPARENT, + /*edit_button_params=*/std::nullopt, ui::ImageModel::FromVectorIcon(kIncognitoProfileIcon, ui::kColorAvatarIconIncognito), ui::ImageModel(),
diff --git a/chrome/browser/ui/views/profiles/profile_menu_view.cc b/chrome/browser/ui/views/profiles/profile_menu_view.cc index 5a27590..d14a327 100644 --- a/chrome/browser/ui/views/profiles/profile_menu_view.cc +++ b/chrome/browser/ui/views/profiles/profile_menu_view.cc
@@ -87,7 +87,6 @@ #include "ui/gfx/image/canvas_image_source.h" #include "ui/gfx/image/image.h" #include "ui/gfx/image/image_skia_operations.h" -#include "ui/gfx/paint_vector_icon.h" #include "ui/strings/grit/ui_strings.h" #include "ui/views/accessibility/view_accessibility.h" @@ -658,8 +657,8 @@ SetProfileIdentityInfo( /*profile_name=*/std::u16string(), - /*background_color=*/SK_ColorTRANSPARENT, - /*edit_button=*/std::nullopt, profiles::GetGuestAvatar(), + /*profile_background_color=*/SK_ColorTRANSPARENT, + /*edit_button_params=*/std::nullopt, profiles::GetGuestAvatar(), ui::ImageModel(), menu_title_, menu_subtitle_, management_label, &kGuestMenuArtIcon);
diff --git a/chrome/browser/ui/views/profiles/profile_menu_view_base.cc b/chrome/browser/ui/views/profiles/profile_menu_view_base.cc index b658386..5383396d 100644 --- a/chrome/browser/ui/views/profiles/profile_menu_view_base.cc +++ b/chrome/browser/ui/views/profiles/profile_menu_view_base.cc
@@ -50,7 +50,6 @@ #include "ui/gfx/canvas.h" #include "ui/gfx/image/canvas_image_source.h" #include "ui/gfx/image/image_skia_operations.h" -#include "ui/gfx/paint_vector_icon.h" #include "ui/gfx/vector_icon_types.h" #include "ui/strings/grit/ui_strings.h" #include "ui/views/accessibility/view_accessibility.h" @@ -1043,7 +1042,7 @@ views::BoxLayout::Orientation::kVertical)); } - if (&icon == &gfx::VectorIcon::EmptyIcon()) { + if (&icon == &gfx::kNoneIcon) { features_container_->AddChildView(std::make_unique<HoverButton>( base::BindRepeating(&ProfileMenuViewBase::ButtonPressed, base::Unretained(this), std::move(action)),
diff --git a/chrome/browser/ui/views/profiles/profile_menu_view_base.h b/chrome/browser/ui/views/profiles/profile_menu_view_base.h index 0a9d1f86c..535f051c 100644 --- a/chrome/browser/ui/views/profiles/profile_menu_view_base.h +++ b/chrome/browser/ui/views/profiles/profile_menu_view_base.h
@@ -24,7 +24,7 @@ #include "ui/base/metadata/metadata_impl_macros.h" #include "ui/base/models/image_model.h" #include "ui/color/color_id.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/bubble/bubble_dialog_delegate_view.h" #include "ui/views/layout/box_layout.h" #include "ui/views/layout/flex_layout_view.h" @@ -191,11 +191,10 @@ void AddShortcutFeatureButton(const gfx::VectorIcon& icon, const std::u16string& text, base::RepeatingClosure action); - void AddFeatureButton( - const std::u16string& text, - base::RepeatingClosure action, - const gfx::VectorIcon& icon = gfx::VectorIcon::EmptyIcon(), - float icon_to_image_ratio = 1.0f); + void AddFeatureButton(const std::u16string& text, + base::RepeatingClosure action, + const gfx::VectorIcon& icon = gfx::kNoneIcon, + float icon_to_image_ratio = 1.0f); void SetProfileManagementHeading(const std::u16string& heading); void AddAvailableProfile(const ui::ImageModel& image_model, const std::u16string& name,
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view.h b/chrome/browser/ui/views/profiles/profile_picker_view.h index 2a094f8..695e2f0 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_view.h +++ b/chrome/browser/ui/views/profiles/profile_picker_view.h
@@ -62,12 +62,10 @@ // ProfilePickerWebContentsHost: void ShowScreen(content::WebContents* contents, const GURL& url, - base::OnceClosure navigation_finished_closure = - base::OnceClosure()) override; + base::OnceClosure navigation_finished_closure) override; void ShowScreenInPickerContents( const GURL& url, - base::OnceClosure navigation_finished_closure = - base::OnceClosure()) override; + base::OnceClosure navigation_finished_closure) override; bool ShouldUseDarkColors() const override; content::WebContents* GetPickerContents() const override; web_modal::WebContentsModalDialogHost* GetWebContentsModalDialogHost()
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc b/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc index f21ef710..1aac58a 100644 --- a/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc +++ b/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc
@@ -2234,7 +2234,7 @@ AccountInfo child_account_info = FinishDiceSignIn(child_profile, "child@gmail.com", "child", - kNoHostedDomainFound, /*is_supervised=*/true); + kNoHostedDomainFound, /*is_supervised_profile=*/true); ASSERT_TRUE(child_profile); OpenProfilePicker();
diff --git a/chrome/browser/ui/views/promos/ios_promo_bubble.cc b/chrome/browser/ui/views/promos/ios_promo_bubble.cc index ed13f670..58abc14 100644 --- a/chrome/browser/ui/views/promos/ios_promo_bubble.cc +++ b/chrome/browser/ui/views/promos/ios_promo_bubble.cc
@@ -236,7 +236,7 @@ // can't result in input-too-long error or other errors). CHECK(qr_image.has_value()); - image_view->SetImage(qr_image.value()); + image_view->SetImage(ui::ImageModel::FromImageSkia(qr_image.value())); return built_footer_view; }
diff --git a/chrome/browser/ui/views/relaunch_notification/relaunch_notification_controller_unittest.cc b/chrome/browser/ui/views/relaunch_notification/relaunch_notification_controller_unittest.cc index a66cece..cd554f7 100644 --- a/chrome/browser/ui/views/relaunch_notification/relaunch_notification_controller_unittest.cc +++ b/chrome/browser/ui/views/relaunch_notification/relaunch_notification_controller_unittest.cc
@@ -1126,7 +1126,7 @@ class RelaunchNotificationControllerPlatformImplTest : public TestWithBrowserView { protected: - RelaunchNotificationControllerPlatformImplTest() : TestWithBrowserView() {} + RelaunchNotificationControllerPlatformImplTest() = default; void SetUp() override { TestWithBrowserView::SetUp();
diff --git a/chrome/browser/ui/views/safe_browsing/password_reuse_modal_warning_dialog_browsertest.cc b/chrome/browser/ui/views/safe_browsing/password_reuse_modal_warning_dialog_browsertest.cc index 74a991e7..38d81a1 100644 --- a/chrome/browser/ui/views/safe_browsing/password_reuse_modal_warning_dialog_browsertest.cc +++ b/chrome/browser/ui/views/safe_browsing/password_reuse_modal_warning_dialog_browsertest.cc
@@ -23,8 +23,7 @@ class PasswordReuseModalWarningTest : public DialogBrowserTest { public: - PasswordReuseModalWarningTest() - : dialog_(nullptr), latest_user_action_(WarningAction::SHOWN) {} + PasswordReuseModalWarningTest() : dialog_(nullptr) {} PasswordReuseModalWarningTest(const PasswordReuseModalWarningTest&) = delete; PasswordReuseModalWarningTest& operator=( @@ -60,7 +59,7 @@ protected: raw_ptr<PasswordReuseModalWarningDialog, AcrossTasksDanglingUntriaged> dialog_; - WarningAction latest_user_action_; + WarningAction latest_user_action_ = WarningAction::SHOWN; }; IN_PROC_BROWSER_TEST_F(PasswordReuseModalWarningTest, InvokeUi_default) {
diff --git a/chrome/browser/ui/views/select_audio_output/select_audio_output_dialog.cc b/chrome/browser/ui/views/select_audio_output/select_audio_output_dialog.cc index 313151a..29da4b8 100644 --- a/chrome/browser/ui/views/select_audio_output/select_audio_output_dialog.cc +++ b/chrome/browser/ui/views/select_audio_output/select_audio_output_dialog.cc
@@ -88,7 +88,7 @@ GetWidget()->Close(); } -SelectAudioOutputDialog::~SelectAudioOutputDialog() {} +SelectAudioOutputDialog::~SelectAudioOutputDialog() = default; void SelectAudioOutputDialog::OnCancel() { OnDeviceSelected(
diff --git a/chrome/browser/ui/views/sharing/sharing_dialog_view_unittest.cc b/chrome/browser/ui/views/sharing/sharing_dialog_view_unittest.cc index 3bc60fa..427db677 100644 --- a/chrome/browser/ui/views/sharing/sharing_dialog_view_unittest.cc +++ b/chrome/browser/ui/views/sharing/sharing_dialog_view_unittest.cc
@@ -66,12 +66,12 @@ std::vector<SharingTargetDeviceInfo> CreateDevices(int count) { std::vector<SharingTargetDeviceInfo> devices; for (int i = 0; i < count; ++i) { - devices.push_back(SharingTargetDeviceInfo( - "guid_" + base::NumberToString(i), "name_" + base::NumberToString(i), - SharingDevicePlatform::kUnknown, - /*pulse_interval=*/base::TimeDelta(), - syncer::DeviceInfo::FormFactor::kUnknown, - /*last_updated_timestamp=*/base::Time())); + devices.emplace_back("guid_" + base::NumberToString(i), + "name_" + base::NumberToString(i), + SharingDevicePlatform::kUnknown, + /*pulse_interval=*/base::TimeDelta(), + syncer::DeviceInfo::FormFactor::kUnknown, + /*last_updated_timestamp=*/base::Time()); } return devices; }
diff --git a/chrome/browser/ui/views/sharing/sharing_icon_view.cc b/chrome/browser/ui/views/sharing/sharing_icon_view.cc index 596828d..be5fc76 100644 --- a/chrome/browser/ui/views/sharing/sharing_icon_view.cc +++ b/chrome/browser/ui/views/sharing/sharing_icon_view.cc
@@ -11,8 +11,8 @@ #include "ui/base/l10n/l10n_util.h" #include "ui/base/metadata/metadata_impl_macros.h" #include "ui/compositor/layer.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/gfx/scoped_canvas.h" -#include "ui/gfx/vector_icon_types.h" #include "ui/strings/grit/ui_strings.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/animation/ink_drop.h" @@ -160,8 +160,7 @@ } const gfx::VectorIcon& SharingIconView::GetVectorIconBadge() const { - return should_show_error_ ? vector_icons::kBlockedBadgeIcon - : gfx::VectorIcon::EmptyIcon(); + return should_show_error_ ? vector_icons::kBlockedBadgeIcon : gfx::kNoneIcon; } void SharingIconView::OnExecuting( @@ -174,8 +173,7 @@ const gfx::VectorIcon& SharingIconView::GetVectorIcon() const { auto* controller = GetController(); - return controller ? controller->GetVectorIcon() - : gfx::VectorIcon::EmptyIcon(); + return controller ? controller->GetVectorIcon() : gfx::kNoneIcon; } void SharingIconView::SetAccessibleIsIgnoredIfNeeded() {
diff --git a/chrome/browser/ui/views/sharing/sharing_icon_view_unittest.cc b/chrome/browser/ui/views/sharing/sharing_icon_view_unittest.cc index ec19ad0..32d1a6cc 100644 --- a/chrome/browser/ui/views/sharing/sharing_icon_view_unittest.cc +++ b/chrome/browser/ui/views/sharing/sharing_icon_view_unittest.cc
@@ -18,7 +18,7 @@ #include "third_party/skia/include/core/SkBitmap.h" #include "ui/events/test/event_generator.h" #include "ui/gfx/color_palette.h" -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/controls/button/button.h" #include "ui/views/widget/widget_utils.h" @@ -85,7 +85,7 @@ // PageActionIconView: void OnExecuting(ExecuteSource execute_source) override {} const gfx::VectorIcon& GetVectorIcon() const override { - return gfx::VectorIcon::EmptyIcon(); + return gfx::kNoneIcon; } void UpdateImpl() override {} };
diff --git a/chrome/browser/ui/views/sharing_hub/sharing_hub_bubble_view_impl_unittest.cc b/chrome/browser/ui/views/sharing_hub/sharing_hub_bubble_view_impl_unittest.cc index 6bcf4ee..ab9cf22a 100644 --- a/chrome/browser/ui/views/sharing_hub/sharing_hub_bubble_view_impl_unittest.cc +++ b/chrome/browser/ui/views/sharing_hub/sharing_hub_bubble_view_impl_unittest.cc
@@ -79,10 +79,12 @@ return widget->GetFocusManager()->GetFocusedView(); } +const gfx::VectorIcon kEmptyIcon; + const std::vector<sharing_hub::SharingHubAction> kFirstPartyActions = { - {0, u"Feed to Dino", &gfx::VectorIcon::EmptyIcon(), "feed-to-dino", 0}, - {1, u"Reverse Star", &gfx::VectorIcon::EmptyIcon(), "reverse-star", 0}, - {2, u"Pastelify", &gfx::VectorIcon::EmptyIcon(), "pastelify", 0}, + {0, u"Feed to Dino", &kEmptyIcon, "feed-to-dino", 0}, + {1, u"Reverse Star", &kEmptyIcon, "reverse-star", 0}, + {2, u"Pastelify", &kEmptyIcon, "pastelify", 0}, }; } // namespace
diff --git a/chrome/browser/ui/views/side_panel/read_anything/read_anything_side_panel_controller.cc b/chrome/browser/ui/views/side_panel/read_anything/read_anything_side_panel_controller.cc index b18701b..1a63cac 100644 --- a/chrome/browser/ui/views/side_panel/read_anything/read_anything_side_panel_controller.cc +++ b/chrome/browser/ui/views/side_panel/read_anything/read_anything_side_panel_controller.cc
@@ -196,7 +196,7 @@ } if (coordinator->IsSidePanelEntryShowing( SidePanelEntry::Key(SidePanelEntry::Id::kReadAnything))) { - coordinator->Close(/*suppress_animation=*/true); + coordinator->Close(/*suppress_animations=*/true); } }
diff --git a/chrome/browser/ui/views/side_panel/side_panel_coordinator.h b/chrome/browser/ui/views/side_panel/side_panel_coordinator.h index 1025947..14820d9 100644 --- a/chrome/browser/ui/views/side_panel/side_panel_coordinator.h +++ b/chrome/browser/ui/views/side_panel/side_panel_coordinator.h
@@ -73,12 +73,13 @@ SidePanelRegistry* GetWindowRegistry(); // SidePanelUI: - void Show(SidePanelEntry::Id entry_id, - std::optional<SidePanelUtil::SidePanelOpenTrigger> open_trigger = - std::nullopt) override; - void Show(SidePanelEntry::Key entry_key, - std::optional<SidePanelUtil::SidePanelOpenTrigger> open_trigger = - std::nullopt) override; + using SidePanelUI::Show; + void Show( + SidePanelEntry::Id entry_id, + std::optional<SidePanelUtil::SidePanelOpenTrigger> open_trigger) override; + void Show( + SidePanelEntry::Key entry_key, + std::optional<SidePanelUtil::SidePanelOpenTrigger> open_trigger) override; void Close() override; void Toggle(SidePanelEntryKey key, SidePanelUtil::SidePanelOpenTrigger open_trigger) override;
diff --git a/chrome/browser/ui/views/side_panel/side_panel_ui.h b/chrome/browser/ui/views/side_panel/side_panel_ui.h index eafcf12..691f1a7 100644 --- a/chrome/browser/ui/views/side_panel/side_panel_ui.h +++ b/chrome/browser/ui/views/side_panel/side_panel_ui.h
@@ -18,14 +18,14 @@ class SidePanelUI { public: // Open side panel with entry_id. - virtual void Show( - SidePanelEntryId entry_id, - std::optional<SidePanelOpenTrigger> open_trigger = std::nullopt) = 0; + virtual void Show(SidePanelEntryId entry_id, + std::optional<SidePanelOpenTrigger> open_trigger) = 0; + void Show(SidePanelEntryId entry_id) { Show(entry_id, std::nullopt); } // Open side panel with entry key. - virtual void Show( - SidePanelEntryKey entry_key, - std::optional<SidePanelOpenTrigger> open_trigger = std::nullopt) = 0; + virtual void Show(SidePanelEntryKey entry_key, + std::optional<SidePanelOpenTrigger> open_trigger) = 0; + void Show(SidePanelEntryKey entry_key) { Show(entry_key, std::nullopt); } // Close the side panel. virtual void Close() = 0;
diff --git a/chrome/browser/ui/views/site_data/related_app_row_view.cc b/chrome/browser/ui/views/site_data/related_app_row_view.cc index 463e35a..5e921a9e 100644 --- a/chrome/browser/ui/views/site_data/related_app_row_view.cc +++ b/chrome/browser/ui/views/site_data/related_app_row_view.cc
@@ -102,7 +102,7 @@ auto* app_icon_image = AddChildView(std::make_unique<NonAccessibleImageView>()); app_icon_image->SetImage( - ui::ImageModel::FromImageSkia(icon_manager.GetFaviconImageSkia(app_id))); + ui::ImageModel::FromImageSkia(icon_manager.GetFaviconImageSkia(app_id_))); auto* app_name_label = AddChildView(std::make_unique<views::Label>( base::UTF8ToUTF16(registrar.GetAppShortName(app_id_))));
diff --git a/chrome/browser/ui/views/supervised_user/parent_permission_dialog_view.cc b/chrome/browser/ui/views/supervised_user/parent_permission_dialog_view.cc index 91e00b4..fee1866 100644 --- a/chrome/browser/ui/views/supervised_user/parent_permission_dialog_view.cc +++ b/chrome/browser/ui/views/supervised_user/parent_permission_dialog_view.cc
@@ -346,7 +346,7 @@ struct ParentPermissionDialogView::Params { Params(); - explicit Params(const Params& params); + Params(const Params& params); ~Params(); // The icon to be displayed. Usage depends on whether extension is set. @@ -877,7 +877,7 @@ public ParentPermissionDialogView::Observer { public: // Constructor for a generic ParentPermissionDialogImpl - ParentPermissionDialogImpl( + explicit ParentPermissionDialogImpl( std::unique_ptr<ParentPermissionDialogView::Params> params); ~ParentPermissionDialogImpl() override;
diff --git a/chrome/browser/ui/views/tab_sharing/tab_sharing_ui_views.cc b/chrome/browser/ui/views/tab_sharing/tab_sharing_ui_views.cc index ce500c7c..7bf4136 100644 --- a/chrome/browser/ui/views/tab_sharing/tab_sharing_ui_views.cc +++ b/chrome/browser/ui/views/tab_sharing/tab_sharing_ui_views.cc
@@ -565,8 +565,7 @@ ->GetMediaStreamCaptureIndicator() ->RegisterMediaStream(shared_tab_, devices); tab_capture_indicator_ui_->OnStarted( - /*stop_callback=*/base::DoNothing(), - content::MediaStreamUI::SourceCallback(), + /*stop=*/base::DoNothing(), content::MediaStreamUI::SourceCallback(), /*label=*/std::string(), /*screen_capture_ids=*/{}, content::MediaStreamUI::StateChangeCallback()); }
diff --git a/chrome/browser/ui/views/tab_sharing/tab_sharing_ui_views_browsertest.cc b/chrome/browser/ui/views/tab_sharing/tab_sharing_ui_views_browsertest.cc index a1a8a75..bcfbd1f 100644 --- a/chrome/browser/ui/views/tab_sharing/tab_sharing_ui_views_browsertest.cc +++ b/chrome/browser/ui/views/tab_sharing/tab_sharing_ui_views_browsertest.cc
@@ -994,7 +994,7 @@ // Start a capture in the normal-mode capture. CreateUIsAndStartSharing(main_browser, /*capturing_tab=*/0, - /*captured_tab=*/1); + /*captured_tab_first=*/1); // Expectation #1: The capture infobar is created in the profile // where capture is happening. @@ -1017,7 +1017,7 @@ // Start a capture in the normal-mode capture. CreateUIsAndStartSharing(main_browser, /*capturing_tab=*/0, - /*captured_tab=*/1); + /*captured_tab_first=*/1); // Create a guest-mode browser. Browser* const guest_browser = CreateGuestBrowser(); @@ -1050,7 +1050,7 @@ // Start a capture in the guest-mode browser. CreateUIsAndStartSharing(guest_browser, /*capturing_tab=*/0, - /*captured_tab=*/1); + /*captured_tab_first=*/1); // Expectation #1: The capture infobar is created in the profile // where capture is happening. @@ -1073,7 +1073,7 @@ // Start a capture in the guest-mode browser. CreateUIsAndStartSharing(guest_browser, /*capturing_tab=*/0, - /*captured_tab=*/1); + /*captured_tab_first=*/1); // Create a normal-mode browser. Browser* const main_browser = CreateBrowser(browser()->profile()); @@ -1100,7 +1100,7 @@ // Start a capture in the guest-mode browser. CreateUIsAndStartSharing(guest_browser, /*capturing_tab=*/0, - /*captured_tab=*/1); + /*captured_tab_first=*/1); // Sanity - existing tabs have an infobar. ASSERT_EQ(GetInfoBarManager(guest_browser, /*tab=*/0)->infobars().size(), 1u);
diff --git a/chrome/browser/ui/views/tabs/alert_indicator_button.cc b/chrome/browser/ui/views/tabs/alert_indicator_button.cc index faf029d5..8ba173a 100644 --- a/chrome/browser/ui/views/tabs/alert_indicator_button.cc +++ b/chrome/browser/ui/views/tabs/alert_indicator_button.cc
@@ -56,15 +56,13 @@ gfx::MultiAnimation::Parts parts; for (size_t i = 0; i < kFadeInFadeOutCycles; ++i) { // Fade-in: - parts.push_back(gfx::MultiAnimation::Part(kIndicatorFadeInDuration, - gfx::Tween::EASE_IN)); + parts.emplace_back(kIndicatorFadeInDuration, gfx::Tween::EASE_IN); // Fade-out (from 1 to 0): - parts.push_back(gfx::MultiAnimation::Part(kIndicatorFadeOutDuration, - gfx::Tween::EASE_IN, 1.0, 0.0)); + parts.emplace_back(kIndicatorFadeOutDuration, gfx::Tween::EASE_IN, 1.0, + 0.0); } // Finish by fading in to show the indicator. - parts.push_back( - gfx::MultiAnimation::Part(kIndicatorFadeInDuration, gfx::Tween::EASE_IN)); + parts.emplace_back(kIndicatorFadeInDuration, gfx::Tween::EASE_IN); auto animation = std::make_unique<gfx::MultiAnimation>(parts, kIndicatorFrameInterval); @@ -356,11 +354,11 @@ kIndicatorFadeOutDuration); fadeout_animation_duration_for_testing_ = delay; - parts.push_back(gfx::MultiAnimation::Part(delay, gfx::Tween::EASE_IN)); + parts.emplace_back(delay, gfx::Tween::EASE_IN); } else { - parts.push_back(gfx::MultiAnimation::Part( + parts.emplace_back( is_for_fade_in ? kIndicatorFadeInDuration : kIndicatorFadeOutDuration, - gfx::Tween::EASE_IN)); + gfx::Tween::EASE_IN); } auto animation =
diff --git a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.h b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.h index 7a86b99f..ca531bbb 100644 --- a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.h +++ b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.h
@@ -87,8 +87,9 @@ void RemoveTabFromGroup(int model_index) override; void MoveTab(int start_index, int final_index) override; void MoveGroup(const tab_groups::TabGroupId& group, int final_index) override; + using TabStripController::ToggleTabGroupCollapsedState; void ToggleTabGroupCollapsedState( - const tab_groups::TabGroupId group, + tab_groups::TabGroupId group, ToggleTabGroupCollapsedStateOrigin origin) override; void ShowContextMenuForTab(Tab* tab, const gfx::Point& p,
diff --git a/chrome/browser/ui/views/tabs/fake_tab_slot_controller.h b/chrome/browser/ui/views/tabs/fake_tab_slot_controller.h index d5f652b..3510ce2 100644 --- a/chrome/browser/ui/views/tabs/fake_tab_slot_controller.h +++ b/chrome/browser/ui/views/tabs/fake_tab_slot_controller.h
@@ -45,8 +45,7 @@ void MoveTabLast(Tab* tab) override {} void ToggleTabGroupCollapsedState( const tab_groups::TabGroupId group, - ToggleTabGroupCollapsedStateOrigin origin = - ToggleTabGroupCollapsedStateOrigin::kMenuAction) override; + ToggleTabGroupCollapsedStateOrigin origin) override; void NotifyTabstripBubbleOpened() override {} void NotifyTabstripBubbleClosed() override {}
diff --git a/chrome/browser/ui/views/tabs/glic_button.cc b/chrome/browser/ui/views/tabs/glic_button.cc index 866e5cfe..629fa12 100644 --- a/chrome/browser/ui/views/tabs/glic_button.cc +++ b/chrome/browser/ui/views/tabs/glic_button.cc
@@ -7,7 +7,9 @@ #include "base/functional/bind.h" #include "chrome/app/vector_icons/vector_icons.h" #include "chrome/browser/ui/browser_element_identifiers.h" +#include "chrome/browser/ui/browser_window/public/browser_window_interface.h" #include "chrome/browser/ui/color/chrome_color_id.h" +#include "chrome/browser/ui/user_education/browser_user_education_interface.h" #include "chrome/browser/ui/views/tabs/tab_strip_control_button.h" #include "chrome/browser/ui/views/tabs/tab_strip_controller.h" #include "chrome/common/buildflags.h" @@ -50,6 +52,15 @@ GlicButton::~GlicButton() = default; void GlicButton::LaunchUI() { + // Indicate that the glic button was pressed so that we can either close the + // IPH promo (if present) or note that it has already been used to prevent + // unnecessarily displaying the promo. + tab_strip_controller_->GetBrowserWindowInterface() + ->GetUserEducationInterface() + ->NotifyFeaturePromoFeatureUsed( + feature_engagement::kIPHGlicPromoFeature, + FeaturePromoFeatureUsedAction::kClosePromoIfPresent); + #if BUILDFLAG(ENABLE_GLIC) glic::GlicKeyedServiceFactory::GetGlicKeyedService( tab_strip_controller_->GetProfile())
diff --git a/chrome/browser/ui/views/tabs/tab_group_editor_bubble_view_browsertest.cc b/chrome/browser/ui/views/tabs/tab_group_editor_bubble_view_browsertest.cc index 85b8c4e..f631337 100644 --- a/chrome/browser/ui/views/tabs/tab_group_editor_bubble_view_browsertest.cc +++ b/chrome/browser/ui/views/tabs/tab_group_editor_bubble_view_browsertest.cc
@@ -135,50 +135,6 @@ histogram_tester.ExpectTotalCount("TabGroups.TabGroupBubble.TabCount", 0); } -class TabGroupEditorBubbleViewDialogV2DisabledBrowserTest - : public TabGroupEditorBubbleViewDialogBrowserTest { - public: - TabGroupEditorBubbleViewDialogV2DisabledBrowserTest() { - scoped_feature_list_.InitWithFeatures( - {}, {tab_groups::kTabGroupsSaveUIUpdate, tab_groups::kTabGroupsSaveV2}); - } - - private: - base::test::ScopedFeatureList scoped_feature_list_; -}; - -// Verify that when a group that holds all of the tabs in a window is closing -// does not close the browser. Instead it should create a new tab. -IN_PROC_BROWSER_TEST_F(TabGroupEditorBubbleViewDialogV2DisabledBrowserTest, - ClosingLastGroupInBrowserSpawnsNewTab) { - ShowUi("SetUp"); - - TabGroupModel* group_model = browser()->tab_strip_model()->group_model(); - std::vector<tab_groups::TabGroupId> group_list = group_model->ListTabGroups(); - ASSERT_EQ(1u, group_list.size()); - ASSERT_EQ(1u, group_model->GetTabGroup(group_list[0])->ListTabs().length()); - - BrowserView* browser_view = static_cast<BrowserView*>(browser()->window()); - TabGroupHeader* header = - browser_view->tabstrip()->group_header(group_list[0]); - views::Widget* editor_bubble = GetEditorBubbleWidget(header); - ASSERT_NE(nullptr, editor_bubble); - - views::Button* const close_group_button = - views::Button::AsButton(editor_bubble->GetContentsView()->GetViewByID( - TabGroupEditorBubbleView::TAB_GROUP_HEADER_CXMENU_CLOSE_GROUP)); - EXPECT_NE(nullptr, close_group_button); - - ui::MouseEvent released_event(ui::EventType::kMouseReleased, gfx::PointF(), - gfx::PointF(), base::TimeTicks(), 0, 0); - views::test::ButtonTestApi(close_group_button).NotifyClick(released_event); - - EXPECT_EQ(0u, group_model->ListTabGroups().size()); - EXPECT_FALSE(group_model->ContainsTabGroup(group_list[0])); - EXPECT_EQ(1, browser()->tab_strip_model()->count()); - EXPECT_FALSE(browser()->IsAttemptingToCloseBrowser()); -} - IN_PROC_BROWSER_TEST_F(TabGroupEditorBubbleViewDialogBrowserTest, MoveGroupToNewWindow) { // Add a tab so theres more than just the group in the tabstrip @@ -278,8 +234,7 @@ : public TabGroupEditorBubbleViewDialogBrowserTest { public: TabGroupEditorBubbleViewDialogBrowserTestWithSavedGroupV2() { - scoped_feature_list_.InitWithFeatures( - {tab_groups::kTabGroupsSaveUIUpdate, tab_groups::kTabGroupsSaveV2}, {}); + scoped_feature_list_.InitWithFeatures({tab_groups::kTabGroupsSaveV2}, {}); } private:
diff --git a/chrome/browser/ui/views/tabs/tab_slot_controller.h b/chrome/browser/ui/views/tabs/tab_slot_controller.h index 9b60045..79b75cf4 100644 --- a/chrome/browser/ui/views/tabs/tab_slot_controller.h +++ b/chrome/browser/ui/views/tabs/tab_slot_controller.h
@@ -11,6 +11,7 @@ #include "build/build_config.h" #include "chrome/browser/ui/tabs/tab_types.h" #include "chrome/browser/ui/views/tabs/tab_strip_types.h" +#include "components/tab_groups/tab_group_id.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/base/mojom/menu_source_type.mojom-forward.h" @@ -95,9 +96,12 @@ // Switches the collapsed state of a tab group. Returns false if the state was // not successfully switched. virtual void ToggleTabGroupCollapsedState( - const tab_groups::TabGroupId group, - ToggleTabGroupCollapsedStateOrigin origin = - ToggleTabGroupCollapsedStateOrigin::kMenuAction) = 0; + tab_groups::TabGroupId group, + ToggleTabGroupCollapsedStateOrigin origin) = 0; + void ToggleTabGroupCollapsedState(tab_groups::TabGroupId group) { + ToggleTabGroupCollapsedState( + group, ToggleTabGroupCollapsedStateOrigin::kMenuAction); + } // Notify this controller of a bubble opening/closing in the tabstrip. virtual void NotifyTabstripBubbleOpened() = 0;
diff --git a/chrome/browser/ui/views/tabs/tab_strip.h b/chrome/browser/ui/views/tabs/tab_strip.h index 8191de2..8b48841 100644 --- a/chrome/browser/ui/views/tabs/tab_strip.h +++ b/chrome/browser/ui/views/tabs/tab_strip.h
@@ -274,10 +274,10 @@ void ShiftTabPrevious(Tab* tab) override; void MoveTabFirst(Tab* tab) override; void MoveTabLast(Tab* tab) override; + using TabSlotController::ToggleTabGroupCollapsedState; void ToggleTabGroupCollapsedState( const tab_groups::TabGroupId group, - ToggleTabGroupCollapsedStateOrigin origin = - ToggleTabGroupCollapsedStateOrigin::kMenuAction) override; + ToggleTabGroupCollapsedStateOrigin origin) override; void NotifyTabstripBubbleOpened() override; void NotifyTabstripBubbleClosed() override; void ShowContextMenuForTab(Tab* tab,
diff --git a/chrome/browser/ui/views/tabs/tab_strip_action_container.cc b/chrome/browser/ui/views/tabs/tab_strip_action_container.cc index 4b844d8..9fb43757 100644 --- a/chrome/browser/ui/views/tabs/tab_strip_action_container.cc +++ b/chrome/browser/ui/views/tabs/tab_strip_action_container.cc
@@ -18,10 +18,12 @@ #include "chrome/browser/ui/tabs/organization/tab_organization_service_factory.h" #include "chrome/browser/ui/tabs/organization/tab_organization_utils.h" #include "chrome/browser/ui/ui_features.h" +#include "chrome/browser/ui/views/commerce/product_specifications_button.h" #include "chrome/browser/ui/views/tabs/tab_strip_nudge_button.h" #include "chrome/browser/ui/webui/tab_search/tab_search.mojom.h" #include "chrome/common/chrome_features.h" #include "chrome/grit/generated_resources.h" +#include "components/commerce/core/commerce_feature_list.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/metadata/metadata_impl_macros.h" #include "ui/gfx/animation/tween.h" @@ -215,6 +217,22 @@ SetupButtonProperties(auto_tab_group_button_); browser_ = tab_strip_controller->GetBrowser(); + BrowserWindowInterface* browser_window_interface = + tab_strip_controller->GetBrowserWindowInterface(); + if (base::FeatureList::IsEnabled(commerce::kProductSpecifications)) { + std::unique_ptr<ProductSpecificationsButton> product_specifications_button; + product_specifications_button = + std::make_unique<ProductSpecificationsButton>( + tab_strip_controller, browser_window_interface->GetTabStripModel(), + browser_window_interface->GetFeatures() + .product_specifications_entry_point_controller(), + /*render_tab_search_before_tab_strip_*/ false, this); + product_specifications_button->SetProperty(views::kCrossAxisAlignmentKey, + views::LayoutAlignment::kCenter); + + product_specifications_button_ = + AddChildView(std::move(product_specifications_button)); + } #if BUILDFLAG(ENABLE_GLIC) if (GlicEnabling::IsEnabledForProfile(tab_strip_controller->GetProfile())) {
diff --git a/chrome/browser/ui/views/tabs/tab_strip_action_container.h b/chrome/browser/ui/views/tabs/tab_strip_action_container.h index 3975e8bc..55c7fb0 100644 --- a/chrome/browser/ui/views/tabs/tab_strip_action_container.h +++ b/chrome/browser/ui/views/tabs/tab_strip_action_container.h
@@ -20,6 +20,7 @@ namespace glic { class GlicButton; } +class ProductSpecificationsButton; class TabStripActionContainer : public views::View, public TabDeclutterObserver, @@ -95,6 +96,9 @@ glic::GlicButton* GetGlicButton() { return glic_button_; } #endif // BUILDFLAG(ENABLE_GLIC) + ProductSpecificationsButton* GetProductSpecificationsButton() { + return product_specifications_button_; + } // TabOrganizationObserver void OnToggleActionUIState(const Browser* browser, bool should_show) override; @@ -151,6 +155,9 @@ TabStripController* tab_strip_controller); void SetupButtonProperties(TabStripNudgeButton* button); + // TODO(crbug.com/387356481) make ProductSpecificationsButton a subclass of + // TabStripNudgeButton + raw_ptr<ProductSpecificationsButton> product_specifications_button_ = nullptr; // The button currently holding the lock to be shown/hidden. raw_ptr<TabStripNudgeButton> locked_expansion_button_ = nullptr; raw_ptr<TabStripNudgeButton> tab_declutter_button_ = nullptr;
diff --git a/chrome/browser/ui/views/tabs/tab_strip_action_container_unittest.cc b/chrome/browser/ui/views/tabs/tab_strip_action_container_unittest.cc index c11de3f..4722dea 100644 --- a/chrome/browser/ui/views/tabs/tab_strip_action_container_unittest.cc +++ b/chrome/browser/ui/views/tabs/tab_strip_action_container_unittest.cc
@@ -7,15 +7,19 @@ #include <memory> #include "base/test/scoped_feature_list.h" +#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window/test/mock_browser_window_interface.h" #include "chrome/browser/ui/tabs/test_tab_strip_model_delegate.h" +#include "chrome/browser/ui/views/commerce/product_specifications_button.h" #include "chrome/browser/ui/views/frame/tab_strip_region_view.h" #include "chrome/browser/ui/views/tabs/fake_base_tab_strip_controller.h" #include "chrome/browser/ui/views/tabs/glic_button.h" #include "chrome/browser/ui/views/tabs/tab_strip_nudge_button.h" #include "chrome/common/chrome_features.h" +#include "chrome/test/base/test_browser_window.h" #include "chrome/test/base/testing_profile.h" #include "chrome/test/views/chrome_views_test_base.h" +#include "components/commerce/core/commerce_feature_list.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/gfx/animation/animation_test_api.h" #include "ui/views/test/views_test_utils.h" @@ -33,14 +37,26 @@ return profile_.get(); } - + void Setup() { + browser_window_ = std::make_unique<TestBrowserWindow>(); + Browser::CreateParams params(profile_.get(), /*user_gesture*/ true); + params.type = Browser::TYPE_NORMAL; + params.window = browser_window_.get(); + browser_ = std::unique_ptr<Browser>(Browser::Create(params)); + } void ShouldUseOtrProfile(bool use_otr_profile) { use_otr_profile_ = use_otr_profile; } + BrowserWindowInterface* GetBrowserWindowInterface() override { + return browser_.get(); + } + private: bool use_otr_profile_ = false; std::unique_ptr<TestingProfile> profile_ = std::make_unique<TestingProfile>(); + std::unique_ptr<TestBrowserWindow> browser_window_; + std::unique_ptr<Browser> browser_; }; class TabStripActionContainerTest : public ChromeViewsTestBase { @@ -66,6 +82,7 @@ void BuildGlicContainer(bool use_otr_profile) { controller_ = std::make_unique<FakeGlicTabStripController>(); + controller_->Setup(); controller_->ShouldUseOtrProfile(use_otr_profile); tab_strip_ = std::make_unique<TabStrip>(std::move(controller_)); @@ -132,3 +149,27 @@ tab_strip_action_container_->children()[2]); #endif // BUILDFLAG(ENABLE_GLIC) } + +TEST_F(TabStripActionContainerTest, OrdersButtonsCorrectlyWithProduct) { + scoped_feature_list_.Reset(); + scoped_feature_list_.InitWithFeatures( + {features::kGlic, features::kTabstripComboButton, + commerce::kProductSpecifications}, + {}); + + BuildGlicContainer(/*use_otr_profile=*/false); + + ASSERT_EQ(tab_strip_action_container_->tab_declutter_button(), + tab_strip_action_container_->children()[0]); + + ASSERT_EQ(tab_strip_action_container_->auto_tab_group_button(), + tab_strip_action_container_->children()[1]); + + ASSERT_EQ(tab_strip_action_container_->GetProductSpecificationsButton(), + tab_strip_action_container_->children()[2]); + +#if BUILDFLAG(ENABLE_GLIC) + ASSERT_EQ(tab_strip_action_container_->GetGlicButton(), + tab_strip_action_container_->children()[3]); +#endif // BUILDFLAG(ENABLE_GLIC) +}
diff --git a/chrome/browser/ui/views/tabs/tab_strip_combo_button.cc b/chrome/browser/ui/views/tabs/tab_strip_combo_button.cc index 61fde4f7..a1e3d3a 100644 --- a/chrome/browser/ui/views/tabs/tab_strip_combo_button.cc +++ b/chrome/browser/ui/views/tabs/tab_strip_combo_button.cc
@@ -130,7 +130,7 @@ SetNotifyEnterExitOnChild(true); } -TabStripComboButton::~TabStripComboButton() {} +TabStripComboButton::~TabStripComboButton() = default; void TabStripComboButton::OnNewTabButtonStateChanged() { if (new_tab_button_->GetState() == views::Button::STATE_PRESSED) {
diff --git a/chrome/browser/ui/views/tabs/tab_strip_control_button.cc b/chrome/browser/ui/views/tabs/tab_strip_control_button.cc index f8544a9..de812ac 100644 --- a/chrome/browser/ui/views/tabs/tab_strip_control_button.cc +++ b/chrome/browser/ui/views/tabs/tab_strip_control_button.cc
@@ -59,6 +59,7 @@ const int TabStripControlButton::kIconSize = 16; const gfx::Size TabStripControlButton::kButtonSize{28, 28}; +const gfx::VectorIcon kEmptyIcon; TabStripControlButton::TabStripControlButton( TabStripController* tab_strip_controller, @@ -81,7 +82,7 @@ Edge animated_flat_edge) : TabStripControlButton(tab_strip_controller, std::move(callback), - gfx::VectorIcon::EmptyIcon(), + kEmptyIcon, text, fixed_flat_edge, animated_flat_edge) {}
diff --git a/chrome/browser/ui/views/tabs/tab_strip_controller.h b/chrome/browser/ui/views/tabs/tab_strip_controller.h index 43b3916..e19ac76b 100644 --- a/chrome/browser/ui/views/tabs/tab_strip_controller.h +++ b/chrome/browser/ui/views/tabs/tab_strip_controller.h
@@ -12,6 +12,7 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h" #include "chrome/browser/ui/views/tabs/tab_strip_types.h" +#include "components/tab_groups/tab_group_id.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/base/mojom/menu_source_type.mojom-forward.h" #include "ui/gfx/range/range.h" @@ -121,9 +122,12 @@ // touch/gesture control, etc). Tests will default to `kMenuAction` unless // specified otherwise. virtual void ToggleTabGroupCollapsedState( - const tab_groups::TabGroupId group, - ToggleTabGroupCollapsedStateOrigin origin = - ToggleTabGroupCollapsedStateOrigin::kMenuAction) = 0; + tab_groups::TabGroupId group, + ToggleTabGroupCollapsedStateOrigin origin) = 0; + void ToggleTabGroupCollapsedState(tab_groups::TabGroupId group) { + ToggleTabGroupCollapsedState( + group, ToggleTabGroupCollapsedStateOrigin::kMenuAction); + } // Shows a context menu for the tab at the specified point in screen coords. virtual void ShowContextMenuForTab(Tab* tab,
diff --git a/chrome/browser/ui/views/tabs/tab_style_views.cc b/chrome/browser/ui/views/tabs/tab_style_views.cc index c6957ab1..95807b1 100644 --- a/chrome/browser/ui/views/tabs/tab_style_views.cc +++ b/chrome/browser/ui/views/tabs/tab_style_views.cc
@@ -106,7 +106,7 @@ // tab. Only active tabs may have a stroke, and not in all cases. If there // is no stroke, returns 0. If |should_paint_as_active| is true, the tab is // treated as an active tab regardless of its true current state. - virtual int GetStrokeThickness(bool should_paint_as_active = false) const; + virtual int GetStrokeThickness(bool should_paint_as_active) const; virtual bool ShouldPaintTabBackgroundColor( TabStyle::TabSelectionState selection_state, @@ -483,7 +483,7 @@ } gfx::Insets TabStyleViewsImpl::GetContentsInsets() const { - const int stroke_thickness = GetStrokeThickness(); + const int stroke_thickness = GetStrokeThickness(false); gfx::Insets base_style_insets = tab_style()->GetContentsInsets(); return gfx::Insets::TLBR( stroke_thickness, 0, @@ -667,7 +667,7 @@ original_bounds.x(), original_bounds.y(), original_bounds.width(), original_bounds.height() - GetLayoutConstant(TABSTRIP_TOOLBAR_OVERLAP)); const gfx::RectF aligned_bounds = - ScaleAndAlignBounds(visible_bounds, scale, GetStrokeThickness()); + ScaleAndAlignBounds(visible_bounds, scale, GetStrokeThickness(false)); const int corner_radius = tab_style()->GetBottomCornerRadius() * scale; gfx::SizeF separator_size(tab_style()->GetSeparatorSize()); separator_size.Scale(scale);
diff --git a/chrome/browser/ui/views/task_manager_view.cc b/chrome/browser/ui/views/task_manager_view.cc index 5d9cf4d..1006f5f 100644 --- a/chrome/browser/ui/views/task_manager_view.cc +++ b/chrome/browser/ui/views/task_manager_view.cc
@@ -605,8 +605,8 @@ // Create the table columns. for (size_t i = 0; i < kColumnsSize; ++i) { const auto& col_data = kColumns[i]; - columns_.push_back(ui::TableColumn(col_data.id, col_data.align, - col_data.width, col_data.percent)); + columns_.emplace_back(col_data.id, col_data.align, col_data.width, + col_data.percent); columns_.back().sortable = col_data.sortable; columns_.back().initial_sort_is_ascending = col_data.initial_sort_is_ascending;
diff --git a/chrome/browser/ui/views/toolbar/chrome_labs/chrome_labs_unittest.cc b/chrome/browser/ui/views/toolbar/chrome_labs/chrome_labs_unittest.cc index e1ca54fb..f485af1 100644 --- a/chrome/browser/ui/views/toolbar/chrome_labs/chrome_labs_unittest.cc +++ b/chrome/browser/ui/views/toolbar/chrome_labs/chrome_labs_unittest.cc
@@ -75,20 +75,20 @@ std::vector<LabInfo> TestLabInfo() { std::vector<LabInfo> test_feature_info; - test_feature_info.emplace_back(LabInfo(kFirstTestFeatureId, u"", u"", "", - version_info::Channel::STABLE)); + test_feature_info.emplace_back(kFirstTestFeatureId, u"", u"", "", + version_info::Channel::STABLE); std::vector<std::u16string> variation_descriptions = {u"Description"}; - test_feature_info.emplace_back(LabInfo(kTestFeatureWithVariationId, u"", u"", - "", version_info::Channel::STABLE, - variation_descriptions)); + test_feature_info.emplace_back(kTestFeatureWithVariationId, u"", u"", "", + version_info::Channel::STABLE, + variation_descriptions); - test_feature_info.emplace_back(LabInfo(kThirdTestFeatureId, u"", u"", "", - version_info::Channel::STABLE)); + test_feature_info.emplace_back(kThirdTestFeatureId, u"", u"", "", + version_info::Channel::STABLE); - test_feature_info.emplace_back(LabInfo(kExpiredFlagTestFeatureId, u"", u"", - "", version_info::Channel::STABLE)); + test_feature_info.emplace_back(kExpiredFlagTestFeatureId, u"", u"", "", + version_info::Channel::STABLE); return test_feature_info; }
diff --git a/chrome/browser/ui/views/toolbar/pinned_action_toolbar_button.cc b/chrome/browser/ui/views/toolbar/pinned_action_toolbar_button.cc index f478b657..c2476adf 100644 --- a/chrome/browser/ui/views/toolbar/pinned_action_toolbar_button.cc +++ b/chrome/browser/ui/views/toolbar/pinned_action_toolbar_button.cc
@@ -32,13 +32,16 @@ #include "ui/color/color_id.h" #include "ui/gfx/canvas.h" #include "ui/gfx/geometry/insets.h" -#include "ui/gfx/vector_icon_types.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/controls/button/button.h" #include "ui/views/controls/button/button_controller.h" #include "ui/views/view_class_properties.h" #include "ui/views/view_utils.h" +namespace { +const gfx::VectorIcon kEmptyIcon; +} // namespace + DEFINE_UI_CLASS_PROPERTY_TYPE(PinnedToolbarActionFlexPriority) DEFINE_UI_CLASS_PROPERTY_KEY( std::underlying_type_t<PinnedToolbarActionFlexPriority>, @@ -453,7 +456,7 @@ if (image_model.IsVectorIcon()) { action_view_->SetVectorIcon(action_view_->IsIconVisible() ? *image_model.GetVectorIcon().vector_icon() - : gfx::VectorIcon::EmptyIcon()); + : kEmptyIcon); } else { action_view_->SetImageModel( views::Button::STATE_NORMAL,
diff --git a/chrome/browser/ui/views/toolbar/pinned_toolbar_actions_container_layout.cc b/chrome/browser/ui/views/toolbar/pinned_toolbar_actions_container_layout.cc index 0c02f69b..1ae2a20 100644 --- a/chrome/browser/ui/views/toolbar/pinned_toolbar_actions_container_layout.cc +++ b/chrome/browser/ui/views/toolbar/pinned_toolbar_actions_container_layout.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/ui/views/toolbar/pinned_toolbar_actions_container_layout.h" +#include "base/containers/adapters.h" #include "chrome/browser/ui/layout_constants.h" #include "chrome/browser/ui/views/toolbar/pinned_action_toolbar_button.h" #include "ui/gfx/geometry/rect.h" @@ -77,25 +78,24 @@ size_t index = host_view()->children().size() - 1; size_t divider_index = 0; int divider_width = 0; - for (auto i = host_view()->children().rbegin(); - i != host_view()->children().rend(); i++) { - if (!IsChildIncludedInLayout(*i)) { + for (const auto& i : base::Reversed(host_view()->children())) { + if (!IsChildIncludedInLayout(i)) { index--; continue; } // If the next child is the divider, skip it. It only is included in the // layout if one of the following children is visible. - if (!views::Button::AsButton(*i)) { + if (!views::Button::AsButton(i)) { divider_index = index; - divider_width = (*i)->GetPreferredSize().width() + - (*i)->GetProperty(views::kMarginsKey)->width(); + divider_width = i->GetPreferredSize().width() + + i->GetProperty(views::kMarginsKey)->width(); index--; continue; } // Get the preferred size and include the divider width if this view is // causing the divider to need to be shown. - const int margin_width = (*i)->GetProperty(views::kMarginsKey)->width(); - gfx::Size preferred_size = (*i)->GetPreferredSize(); + const int margin_width = i->GetProperty(views::kMarginsKey)->width(); + gfx::Size preferred_size = i->GetPreferredSize(); preferred_size.Enlarge(margin_width, 0); if (divider_index > index && !divider_space_preallocated) { preferred_size.Enlarge(divider_width, 0); @@ -103,7 +103,7 @@ const PinnedToolbarActionFlexPriority priority = static_cast<PinnedToolbarActionFlexPriority>( - (*i)->GetProperty(kToolbarButtonFlexPriorityKey)); + i->GetProperty(kToolbarButtonFlexPriorityKey)); const bool has_preallocated_space_in_layout = priority == PinnedToolbarActionFlexPriority::kHigh || (fits_all_medium_priority &&
diff --git a/chrome/browser/ui/views/toolbar/toolbar_action_view_unittest.cc b/chrome/browser/ui/views/toolbar/toolbar_action_view_unittest.cc index 6ca83851..d041096 100644 --- a/chrome/browser/ui/views/toolbar/toolbar_action_view_unittest.cc +++ b/chrome/browser/ui/views/toolbar/toolbar_action_view_unittest.cc
@@ -70,8 +70,7 @@ class OpenMenuListener : public views::ContextMenuController { public: - explicit OpenMenuListener(views::View* view) - : view_(view), opened_menu_(false) { + explicit OpenMenuListener(views::View* view) : view_(view) { view_->set_context_menu_controller(this); } OpenMenuListener(const OpenMenuListener&) = delete; @@ -90,7 +89,7 @@ private: raw_ptr<views::View> view_; - bool opened_menu_; + bool opened_menu_ = false; }; } // namespace
diff --git a/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views_unittest.cc b/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views_unittest.cc index f141b9d..adc3e2c 100644 --- a/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views_unittest.cc +++ b/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views_unittest.cc
@@ -41,12 +41,14 @@ } // namespace class ToolbarActionsBarBubbleViewsTest : public ChromeViewsTestBase { - protected: - ToolbarActionsBarBubbleViewsTest() = default; + public: ToolbarActionsBarBubbleViewsTest(const ToolbarActionsBarBubbleViewsTest&) = delete; ToolbarActionsBarBubbleViewsTest& operator=( const ToolbarActionsBarBubbleViewsTest&) = delete; + + protected: + ToolbarActionsBarBubbleViewsTest() = default; ~ToolbarActionsBarBubbleViewsTest() override = default; void TearDown() override {
diff --git a/chrome/browser/ui/views/toolbar/toolbar_controller.cc b/chrome/browser/ui/views/toolbar/toolbar_controller.cc index 7f7e1137..673eb77 100644 --- a/chrome/browser/ui/views/toolbar/toolbar_controller.cc +++ b/chrome/browser/ui/views/toolbar/toolbar_controller.cc
@@ -9,6 +9,7 @@ #include <string_view> #include <vector> +#include "base/containers/adapters.h" #include "base/functional/overloaded.h" #include "base/metrics/user_metrics.h" #include "base/metrics/user_metrics_action.h" @@ -29,7 +30,6 @@ #include "components/vector_icons/vector_icons.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/mojom/menu_source_type.mojom.h" -#include "ui/gfx/paint_vector_icon.h" #include "ui/menus/simple_menu_model.h" #include "ui/views/controls/menu/menu_item_view.h" #include "ui/views/controls/menu/menu_model_adapter.h" @@ -54,9 +54,8 @@ // Loop in reverse order to ensure the first element gets the largest flex // order and overflows the first. - for (auto it = elements_in_overflow_order.rbegin(); - it != elements_in_overflow_order.rend(); ++it) { - id_to_order_map[*it] = element_flex_order_start++; + for (auto it : base::Reversed(elements_in_overflow_order)) { + id_to_order_map[it] = element_flex_order_start++; } return id_to_order_map; @@ -748,11 +747,9 @@ ui::VectorIconModel vector_icon_model = pinned_icon_image.GetVectorIcon(); - menu_item->icon_view()->SetImage(gfx::CreateVectorIcon( - *vector_icon_model.vector_icon(), - ui::SimpleMenuModel::kDefaultIconSize, - menu_item->icon_view()->GetColorProvider()->GetColor( - kColorToolbarActionItemEngaged))); + menu_item->icon_view()->SetImage(ui::ImageModel::FromVectorIcon( + *vector_icon_model.vector_icon(), kColorToolbarActionItemEngaged, + ui::SimpleMenuModel::kDefaultIconSize)); } status_indicator->Show(); } @@ -802,11 +799,9 @@ if (!pinned_icon_image.IsEmpty() && pinned_icon_image.IsVectorIcon()) { ui::VectorIconModel vector_icon_model = pinned_icon_image.GetVectorIcon(); - menu_item->icon_view()->SetImage(gfx::CreateVectorIcon( - *vector_icon_model.vector_icon(), - ui::SimpleMenuModel::kDefaultIconSize, - menu_item->icon_view()->GetColorProvider()->GetColor( - kColorToolbarActionItemEngaged))); + menu_item->icon_view()->SetImage(ui::ImageModel::FromVectorIcon( + *vector_icon_model.vector_icon(), kColorToolbarActionItemEngaged, + ui::SimpleMenuModel::kDefaultIconSize)); } status_indicator->Show(); } else { @@ -814,11 +809,9 @@ if (!pinned_icon_image.IsEmpty() && pinned_icon_image.IsVectorIcon()) { ui::VectorIconModel vector_icon_model = pinned_icon_image.GetVectorIcon(); - menu_item->icon_view()->SetImage(gfx::CreateVectorIcon( - *vector_icon_model.vector_icon(), - ui::SimpleMenuModel::kDefaultIconSize, - menu_item->icon_view()->GetColorProvider()->GetColor( - vector_icon_model.color_id()))); + menu_item->icon_view()->SetImage(ui::ImageModel::FromVectorIcon( + *vector_icon_model.vector_icon(), vector_icon_model.color_id(), + ui::SimpleMenuModel::kDefaultIconSize)); } status_indicator->Hide(); }
diff --git a/chrome/browser/ui/views/translate/translate_bubble_test_utils_views.cc b/chrome/browser/ui/views/translate/translate_bubble_test_utils_views.cc index 9dad5ada..f10a4a3 100644 --- a/chrome/browser/ui/views/translate/translate_bubble_test_utils_views.cc +++ b/chrome/browser/ui/views/translate/translate_bubble_test_utils_views.cc
@@ -12,9 +12,7 @@ #include "ui/views/controls/button/label_button.h" #include "ui/views/controls/combobox/combobox.h" -namespace translate { - -namespace test_utils { +namespace translate::test_utils { TranslateBubbleView* GetTranslateBubble(Browser* browser) { return TranslateBubbleController::FromWebContents( @@ -82,6 +80,4 @@ bubble->TargetLanguageChanged(); } -} // namespace test_utils - -} // namespace translate +} // namespace translate::test_utils
diff --git a/chrome/browser/ui/views/translate/translate_bubble_view_unittest.cc b/chrome/browser/ui/views/translate/translate_bubble_view_unittest.cc index 14c69d78..7ab6400 100644 --- a/chrome/browser/ui/views/translate/translate_bubble_view_unittest.cc +++ b/chrome/browser/ui/views/translate/translate_bubble_view_unittest.cc
@@ -34,22 +34,8 @@ class MockTranslateBubbleModel : public TranslateBubbleModel { public: - explicit MockTranslateBubbleModel(TranslateBubbleModel::ViewState view_state) - : error_type_(translate::TranslateErrors::NONE), - source_language_index_(1), - target_language_index_(2), - never_translate_language_(false), - never_translate_site_(false), - should_show_always_translate_sortcut_(false), - should_always_translate_(false), - always_translate_checked_(false), - set_always_translate_called_count_(0), - translate_called_(false), - revert_translation_called_(false), - translation_declined_(false), - source_language_index_on_translation_(-1), - target_language_index_on_translation_(-1), - can_add_site_to_never_prompt_list(true) { + explicit MockTranslateBubbleModel( + TranslateBubbleModel::ViewState view_state) { DCHECK_NE(VIEW_STATE_SOURCE_LANGUAGE, view_state); DCHECK_NE(VIEW_STATE_TARGET_LANGUAGE, view_state); current_view_state_ = view_state; @@ -163,21 +149,21 @@ void ReportUIChange(bool is_ui_shown) override {} ViewState current_view_state_; - translate::TranslateErrors error_type_; - int source_language_index_; - int target_language_index_; - bool never_translate_language_; - bool never_translate_site_; - bool should_show_always_translate_sortcut_; - bool should_always_translate_; - bool always_translate_checked_; - int set_always_translate_called_count_; - bool translate_called_; - bool revert_translation_called_; - bool translation_declined_; - int source_language_index_on_translation_; - int target_language_index_on_translation_; - bool can_add_site_to_never_prompt_list; + translate::TranslateErrors error_type_ = translate::TranslateErrors::NONE; + int source_language_index_ = 1; + int target_language_index_ = 2; + bool never_translate_language_ = false; + bool never_translate_site_ = false; + bool should_show_always_translate_sortcut_ = false; + bool should_always_translate_ = false; + bool always_translate_checked_ = false; + int set_always_translate_called_count_ = 0; + bool translate_called_ = false; + bool revert_translation_called_ = false; + bool translation_declined_ = false; + int source_language_index_on_translation_ = -1; + int target_language_index_on_translation_ = -1; + bool can_add_site_to_never_prompt_list = true; }; } // namespace
diff --git a/chrome/browser/ui/views/user_education/browser_user_education_service.cc b/chrome/browser/ui/views/user_education/browser_user_education_service.cc index 5ee53b9..9e58903 100644 --- a/chrome/browser/ui/views/user_education/browser_user_education_service.cc +++ b/chrome/browser/ui/views/user_education/browser_user_education_service.cc
@@ -581,7 +581,9 @@ })) .SetBubbleArrow(HelpBubbleArrow::kTopRight) .SetBubbleTitleText(IDS_GLIC_PROMO_TITLE) - .SetMetadata(133, "dfried@chromium.org", "Trigger TBD"))); + .SetMetadata( + 133, "dfried@chromium.org", + "Attempts to trigger when the user is on a supported page."))); // kIPHGMCCastStartStopFeature: registry.RegisterFeature(FeaturePromoSpecification::CreateForLegacyPromo(
diff --git a/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20_unittest.cc b/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20_unittest.cc index 70e3a5b..fca6cdf 100644 --- a/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20_unittest.cc +++ b/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20_unittest.cc
@@ -1124,7 +1124,7 @@ EXPECT_TRUE(promo_handle); FeaturePromoHandle promo_handle2(std::move(promo_handle)); EXPECT_TRUE(promo_handle2); - EXPECT_FALSE(promo_handle); + EXPECT_FALSE(promo_handle); // NOLINT EXPECT_CALL(*mock_tracker_, Dismissed(Ref(kTestIPHFeature))).Times(1); promo_handle2.Release(); EXPECT_CALL(*mock_tracker_, Dismissed).Times(0); @@ -1147,7 +1147,7 @@ FeaturePromoHandle promo_handle2; promo_handle2 = std::move(promo_handle); EXPECT_TRUE(promo_handle2); - EXPECT_FALSE(promo_handle); + EXPECT_FALSE(promo_handle); // NOLINT EXPECT_CALL(*mock_tracker_, Dismissed(Ref(kTestIPHFeature))).Times(1); promo_handle2.Release(); EXPECT_CALL(*mock_tracker_, Dismissed).Times(0);
diff --git a/chrome/browser/ui/views/web_apps/deprecated_apps_dialog_view.cc b/chrome/browser/ui/views/web_apps/deprecated_apps_dialog_view.cc index 951604b..481fe77a 100644 --- a/chrome/browser/ui/views/web_apps/deprecated_apps_dialog_view.cc +++ b/chrome/browser/ui/views/web_apps/deprecated_apps_dialog_view.cc
@@ -225,7 +225,7 @@ // Set up the table view. std::vector<ui::TableColumn> columns; - columns.emplace_back(ui::TableColumn()); + columns.emplace_back(); auto table = std::make_unique<views::TableView>( deprecated_apps_table_model_.get(), columns,
diff --git a/chrome/browser/ui/views/web_apps/force_installed_deprecated_apps_dialog_view_browsertest.cc b/chrome/browser/ui/views/web_apps/force_installed_deprecated_apps_dialog_view_browsertest.cc index a648d20..b02530f 100644 --- a/chrome/browser/ui/views/web_apps/force_installed_deprecated_apps_dialog_view_browsertest.cc +++ b/chrome/browser/ui/views/web_apps/force_installed_deprecated_apps_dialog_view_browsertest.cc
@@ -84,7 +84,7 @@ base::test::ScopedFeatureList feature_list_; extensions::TestManagementPolicyProvider policy_provider_{ extensions::TestManagementPolicyProvider::MUST_REMAIN_INSTALLED}; - content::TestWebUI test_web_ui_{}; + content::TestWebUI test_web_ui_; }; IN_PROC_BROWSER_TEST_F(ForceInstalledDeprecatedAppsDialogViewBrowserTest,
diff --git a/chrome/browser/ui/views/web_apps/isolated_web_apps/isolated_web_app_installer_view_impl.cc b/chrome/browser/ui/views/web_apps/isolated_web_apps/isolated_web_app_installer_view_impl.cc index 74b74d1a..7ac551b9 100644 --- a/chrome/browser/ui/views/web_apps/isolated_web_apps/isolated_web_app_installer_view_impl.cc +++ b/chrome/browser/ui/views/web_apps/isolated_web_apps/isolated_web_app_installer_view_impl.cc
@@ -109,10 +109,9 @@ // functions that need a string, but want to accept either ids or raw strings. class ToU16String { public: - // NOLINTNEXTLINE(runtime/explicit) + // NOLINTNEXTLINE ToU16String(int string_id) : string_(l10n_util::GetStringUTF16(string_id)) {} - - // NOLINTNEXTLINE(runtime/explicit) + // NOLINTNEXTLINE ToU16String(const std::u16string& string) : string_(string) {} const std::u16string& get() const { return string_; }
diff --git a/chrome/browser/ui/views/web_apps/protocol_handler_launch_dialog_browsertest.cc b/chrome/browser/ui/views/web_apps/protocol_handler_launch_dialog_browsertest.cc index ea73f04..58503453 100644 --- a/chrome/browser/ui/views/web_apps/protocol_handler_launch_dialog_browsertest.cc +++ b/chrome/browser/ui/views/web_apps/protocol_handler_launch_dialog_browsertest.cc
@@ -72,8 +72,8 @@ WebAppProtocolHandlerIntentPickerDialog_EscapeDoesNotRememberPreference) { ProtocolHandlerLaunchDialogView::SetDefaultRememberSelectionForTesting(true); ShowDialogAndCloseWithReason(views::Widget::ClosedReason::kEscKeyPressed, - /*allowed=*/false, - /*remember_user_choice=*/false); + /*expected_allowed=*/false, + /*expected_remember_user_choice=*/false); } IN_PROC_BROWSER_TEST_F(ProtocolHandlerLaunchDialogBrowserTest, @@ -81,8 +81,8 @@ ProtocolHandlerLaunchDialogView::SetDefaultRememberSelectionForTesting(true); ShowDialogAndCloseWithReason( views::Widget::ClosedReason::kCancelButtonClicked, - /*allowed=*/false, - /*remember_user_choice=*/true); + /*expected_allowed=*/false, + /*expected_remember_user_choice=*/true); } IN_PROC_BROWSER_TEST_F( @@ -90,8 +90,8 @@ ProtocolHandlerIntentPickerDialog_DisallowDoNotRemember) { ShowDialogAndCloseWithReason( views::Widget::ClosedReason::kCancelButtonClicked, - /*allowed=*/false, - /*remember_user_choice=*/false); + /*expected_allowed=*/false, + /*expected_remember_user_choice=*/false); } IN_PROC_BROWSER_TEST_F(ProtocolHandlerLaunchDialogBrowserTest, @@ -99,16 +99,16 @@ ProtocolHandlerLaunchDialogView::SetDefaultRememberSelectionForTesting(true); ShowDialogAndCloseWithReason( views::Widget::ClosedReason::kAcceptButtonClicked, - /*allowed=*/true, - /*remember_user_choice=*/true); + /*expected_allowed=*/true, + /*expected_remember_user_choice=*/true); } IN_PROC_BROWSER_TEST_F(ProtocolHandlerLaunchDialogBrowserTest, ProtocolHandlerIntentPickerDialog_AcceptDoNotRemember) { ShowDialogAndCloseWithReason( views::Widget::ClosedReason::kAcceptButtonClicked, - /*allowed=*/true, - /*remember_user_choice=*/false); + /*expected_allowed=*/true, + /*expected_remember_user_choice=*/false); } class WebAppProtocolHandlerIntentPickerDialogInteractiveBrowserTest
diff --git a/chrome/browser/ui/views/web_apps/simple_install_dialog_bubble_view_browsertest.cc b/chrome/browser/ui/views/web_apps/simple_install_dialog_bubble_view_browsertest.cc index 1a3cdbfc..18a6b76 100644 --- a/chrome/browser/ui/views/web_apps/simple_install_dialog_bubble_view_browsertest.cc +++ b/chrome/browser/ui/views/web_apps/simple_install_dialog_bubble_view_browsertest.cc
@@ -195,7 +195,7 @@ ->GetBrowserContext()) ->GetPrefs(); webapps::AppId app_id = - GenerateAppId(/*manifest_id=*/std::nullopt, start_url); + GenerateAppId(/*manifest_id_path=*/std::nullopt, start_url); EXPECT_EQ(GetIntWebAppPref(pref_service, app_id, kIphPrefNames.not_accepted_count_name) @@ -218,7 +218,7 @@ auto app_info = GetAppInfo(); GURL start_url = app_info->start_url(); webapps::AppId app_id = - GenerateAppId(/*manifest_id=*/std::nullopt, start_url); + GenerateAppId(/*manifest_id_path=*/std::nullopt, start_url); PrefService* pref_service = Profile::FromBrowserContext(browser() ->tab_strip_model()
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc index 68e89d4..7ba5f87 100644 --- a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc +++ b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc
@@ -17,13 +17,13 @@ // Manual tests: IN_PROC_BROWSER_TEST_F(WebAppIntegration, EnterAndExitFullScreenApp) { - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kStandalone); helper_.EnterFullScreenApp(); helper_.ExitFullScreenApp(); } IN_PROC_BROWSER_TEST_F(WebAppIntegration, UninstallFromList) { - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kStandalone); helper_.UninstallFromList(Site::kStandalone); helper_.CheckAppNotInList(Site::kStandalone); } @@ -90,14 +90,14 @@ } IN_PROC_BROWSER_TEST_F(WebAppIntegration, LaunchFromMenuOption) { - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kStandalone); helper_.CheckWindowCreated(); helper_.LaunchFromMenuOption(Site::kStandalone); helper_.CheckWindowCreated(); } IN_PROC_BROWSER_TEST_F(WebAppIntegration, OpenInChrome) { - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kStandalone); helper_.CheckWindowCreated(); helper_.OpenInChrome(); helper_.CheckTabCreated(Number::kOne); @@ -110,7 +110,7 @@ #define MAYBE_ManifestUpdateDisplayBrowser ManifestUpdateDisplayBrowser #endif IN_PROC_BROWSER_TEST_F(WebAppIntegration, MAYBE_ManifestUpdateDisplayBrowser) { - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kStandalone); helper_.CheckWindowCreated(); helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kBrowser); helper_.AwaitManifestUpdate(Site::kStandalone); @@ -122,7 +122,7 @@ IN_PROC_BROWSER_TEST_F(WebAppIntegration, ManifestUpdateDisplayOverrideWindowControlsOverlay) { - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kStandalone); helper_.CheckWindowCreated(); helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, IsShown::kNotShown); @@ -135,13 +135,13 @@ IN_PROC_BROWSER_TEST_F(WebAppIntegration, WindowControlsOverlayNotEnabledWithoutWCOManifest) { - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kStandalone); helper_.CheckWindowCreated(); helper_.CheckWindowControlsOverlay(Site::kStandalone, IsOn::kOff); } IN_PROC_BROWSER_TEST_F(WebAppIntegration, ToggleWindowControlsOverlay) { - helper_.CreateShortcut(Site::kWco, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kWco); helper_.CheckWindowCreated(); helper_.CheckWindowControlsOverlayToggle(Site::kWco, IsShown::kShown); helper_.CheckWindowControlsOverlay(Site::kWco, IsOn::kOff); @@ -152,7 +152,7 @@ IN_PROC_BROWSER_TEST_F(WebAppIntegration, WindowControlsOverlayStatePreservesBetweenLaunches) { - helper_.CreateShortcut(Site::kWco, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kWco); helper_.CheckWindowCreated(); helper_.CheckWindowControlsOverlayToggle(Site::kWco, IsShown::kShown); helper_.CheckWindowControlsOverlay(Site::kWco, IsOn::kOff); @@ -215,22 +215,28 @@ } IN_PROC_BROWSER_TEST_F(WebAppIntegration, CheckBrowserNavigation) { - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); + helper_.InstallMenuOption(Site::kStandalone); + helper_.SetOpenInTabFromAppSettings(Site::kStandalone); + helper_.LaunchFromChromeApps(Site::kStandalone); helper_.CheckBrowserNavigation(Site::kStandalone); } IN_PROC_BROWSER_TEST_F(WebAppIntegration, CheckBrowserNavigationFails) { -#if !BUILDFLAG(IS_CHROMEOS) - if (base::FeatureList::IsEnabled(features::kShortcutsNotApps)) { - GTEST_SKIP() - << "Explicit skip to prevent EXPECT_NONFATAL_FAILURE to be triggered"; - } -#endif // !BUILDFLAG(IS_CHROMEOS) - helper_.CreateShortcut(Site::kStandaloneNestedA, WindowOptions::kBrowser); + helper_.InstallMenuOption(Site::kStandaloneNestedA); + helper_.SetOpenInTabFromAppSettings(Site::kStandaloneNestedA); + helper_.LaunchFromChromeApps(Site::kStandaloneNestedA); EXPECT_NONFATAL_FAILURE(helper_.CheckBrowserNavigation(Site::kStandalone), "webapps_integration/standalone/foo/basic.html"); } +IN_PROC_BROWSER_TEST_F(WebAppIntegration, AppLaunchedInTab) { + helper_.InstallMenuOption(Site::kStandalone); + helper_.SetOpenInTabFromAppSettings(Site::kStandalone); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.LaunchFromChromeApps(Site::kStandalone); + helper_.CheckAppLoadedInTab(Site::kStandalone); +} + IN_PROC_BROWSER_TEST_F(WebAppIntegration, CheckSubAppInstallation) { helper_.InstallIsolatedApp(Site::kHasSubApps); helper_.CheckNoSubApps(Site::kHasSubApps); @@ -246,7 +252,7 @@ } IN_PROC_BROWSER_TEST_F(WebAppIntegration, NewAppTab) { - helper_.CreateShortcut(Site::kTabbed, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kTabbed); helper_.CheckAppNavigation(Site::kTabbed); helper_.NewAppTab(Site::kTabbed); helper_.CheckAppTabCreated(); @@ -2663,6 +2669,16 @@ helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneUpdated); } +IN_PROC_BROWSER_TEST_F(WebAppIntegration, + WAI_InstallMenuOptionChromeUrlWindowed) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.InstallMenuOption(Site::kChromeUrl); + helper_.CheckWindowCreated(); +} + IN_PROC_BROWSER_TEST_F( WebAppIntegration, WAI_InstallOmniboxIconStandalone_NavigateBrowserStandaloneNestedA) {
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_cros.cc b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_cros.cc index c34d05ee..bfd376b8 100644 --- a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_cros.cc +++ b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_cros.cc
@@ -5,12 +5,33 @@ #include "build/build_config.h" #include "chrome/browser/ui/views/web_apps/web_app_integration_test_driver.h" #include "content/public/test/browser_test.h" +#include "testing/gtest/include/gtest/gtest-spi.h" namespace web_app::integration_tests { namespace { using WebAppIntegration = WebAppIntegrationTest; +IN_PROC_BROWSER_TEST_F(WebAppIntegration, + CheckBrowserNavigationCreateShortcut) { + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); + helper_.CheckBrowserNavigation(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F(WebAppIntegration, + CheckBrowserNavigationFailsCreateShortcut) { + helper_.CreateShortcut(Site::kStandaloneNestedA, WindowOptions::kBrowser); + EXPECT_NONFATAL_FAILURE(helper_.CheckBrowserNavigation(Site::kStandalone), + "webapps_integration/standalone/foo/basic.html"); +} + +IN_PROC_BROWSER_TEST_F(WebAppIntegration, AppLaunchedInTabCreateShortcut) { + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.LaunchFromChromeApps(Site::kStandalone); + helper_.CheckAppLoadedInTab(Site::kStandalone); +} + // Generated tests: IN_PROC_BROWSER_TEST_F( @@ -61,81 +82,6 @@ IN_PROC_BROWSER_TEST_F( WebAppIntegration, - WAI_31Standalone_79StandaloneStandaloneOriginal_24_12Standalone_7Standalone_112StandaloneNotShown_149Standalone_11Standalone_34Standalone_22One_163Standalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Sheriffs: Disabling this test is supported. - helper_.InstallOmniboxIcon(InstallableSite::kStandalone); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.SetOpenInTabFromAppSettings(Site::kStandalone); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.LaunchFromChromeApps(Site::kStandalone); - helper_.CheckTabCreated(Number::kOne); - helper_.CheckAppLoadedInTab(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_32StandaloneWithShortcutWindowedWebApp_79StandaloneStandaloneOriginal_12Standalone_7Standalone_149Standalone_34Standalone_22One_163Standalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Sheriffs: Disabling this test is supported. - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, - WindowOptions::kWindowed, InstallMode::kWebApp); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.SetOpenInTabFromAppSettings(Site::kStandalone); - helper_.LaunchFromChromeApps(Site::kStandalone); - helper_.CheckTabCreated(Number::kOne); - helper_.CheckAppLoadedInTab(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_32StandaloneNoShortcutWindowedWebApp_79StandaloneStandaloneOriginal_12Standalone_149Standalone_34Standalone_22One_163Standalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Sheriffs: Disabling this test is supported. - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, - WindowOptions::kWindowed, InstallMode::kWebApp); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.SetOpenInTabFromAppSettings(Site::kStandalone); - helper_.LaunchFromChromeApps(Site::kStandalone); - helper_.CheckTabCreated(Number::kOne); - helper_.CheckAppLoadedInTab(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_29StandaloneWindowed_79StandaloneStandaloneOriginal_24_12Standalone_7Standalone_112StandaloneNotShown_28_12Standalone_7Standalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Sheriffs: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.ClosePwa(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, WAI_32StandaloneWithShortcutWindowedWebApp_79StandaloneStandaloneOriginal_12Standalone_7Standalone_88StandaloneStandaloneUpdatedSkipDialog_117Standalone) { // Test contents are generated by script. Please do not modify! // See `docs/webapps/why-is-this-test-failing.md` or @@ -169,84 +115,6 @@ IN_PROC_BROWSER_TEST_F( WebAppIntegration, - WAI_29StandaloneWindowed_79StandaloneStandaloneOriginal_24_12Standalone_7Standalone_112StandaloneNotShown_149Standalone_11Standalone_34Standalone_22One_163Standalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Sheriffs: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.SetOpenInTabFromAppSettings(Site::kStandalone); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.LaunchFromChromeApps(Site::kStandalone); - helper_.CheckTabCreated(Number::kOne); - helper_.CheckAppLoadedInTab(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_29StandaloneBrowser_79StandaloneStandaloneOriginal_11Standalone_7Standalone_32StandaloneWithShortcutWindowedWebApp_7Standalone_11Standalone_34Standalone_22One_163Standalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Sheriffs: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, - WindowOptions::kWindowed, InstallMode::kWebApp); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.LaunchFromChromeApps(Site::kStandalone); - helper_.CheckTabCreated(Number::kOne); - helper_.CheckAppLoadedInTab(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_29StandaloneBrowser_79StandaloneStandaloneOriginal_11Standalone_7Standalone_32StandaloneNoShortcutWindowedWebApp_7Standalone_11Standalone_34Standalone_22One_163Standalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Sheriffs: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, - WindowOptions::kWindowed, InstallMode::kWebApp); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.LaunchFromChromeApps(Site::kStandalone); - helper_.CheckTabCreated(Number::kOne); - helper_.CheckAppLoadedInTab(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_29WcoWindowed_112WcoShown_114Wco_113WcoOn_112WcoShown_115Wco_113WcoOff_112WcoShown) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Sheriffs: Disabling this test is supported. - helper_.CreateShortcut(Site::kWco, WindowOptions::kWindowed); - helper_.CheckWindowControlsOverlayToggle(Site::kWco, IsShown::kShown); - helper_.EnableWindowControlsOverlay(Site::kWco); - helper_.CheckWindowControlsOverlay(Site::kWco, IsOn::kOn); - helper_.CheckWindowControlsOverlayToggle(Site::kWco, IsShown::kShown); - helper_.DisableWindowControlsOverlay(Site::kWco); - helper_.CheckWindowControlsOverlay(Site::kWco, IsOn::kOff); - helper_.CheckWindowControlsOverlayToggle(Site::kWco, IsShown::kShown); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, WAI_29WcoWindowed_112WcoShown_114Wco_113WcoOn_112WcoShown_69Wco_113WcoOn) { // Test contents are generated by script. Please do not modify! // See `docs/webapps/why-is-this-test-failing.md` or @@ -1090,45 +958,6 @@ IN_PROC_BROWSER_TEST_F( WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_NavigateBrowserStandaloneNestedA) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.NavigateBrowser(Site::kStandaloneNestedA); - helper_.CheckInstallIconShown(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_InstallMenuStandalone_SetOpenInTabFromAppSettingsStandalone_LaunchFromChromeAppsStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.InstallMenuOption(Site::kStandalone); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.SetOpenInTabFromAppSettings(Site::kStandalone); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.LaunchFromChromeApps(Site::kStandalone); - helper_.CheckTabCreated(Number::kOne); - helper_.CheckAppLoadedInTab(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, WAI_InstallMenuWco_EnableWindowControlsOverlayWco_DisableWindowControlsOverlayWco) { // Test contents are generated by script. Please do not modify! // See `docs/webapps/why-is-this-test-failing.md` or @@ -1271,682 +1100,6 @@ IN_PROC_BROWSER_TEST_F( WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_NavigatePwaStandaloneMinimalUi_CloseCustomToolbar) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.NavigatePwa(Site::kStandalone, Site::kMinimalUi); - helper_.CheckCustomToolbar(); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CloseCustomToolbar(); - helper_.CheckAppNavigationIsStartUrl(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_NavigatePwaStandaloneMinimalUi_OpenInChrome) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.NavigatePwa(Site::kStandalone, Site::kMinimalUi); - helper_.CheckCustomToolbar(); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.OpenInChrome(); - helper_.CheckTabCreated(Number::kOne); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_NavigateBrowserStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.NavigateBrowser(Site::kStandalone); - helper_.CheckInstallIconNotShown(); - helper_.CheckLaunchIconShown(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_UninstallFromListStandalone_NavigateBrowserStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.UninstallFromList(Site::kStandalone); - helper_.CheckAppNotInList(Site::kStandalone); - helper_.NavigateBrowser(Site::kStandalone); - helper_.CheckInstallIconShown(); - helper_.CheckLaunchIconNotShown(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_LaunchFromMenuOptionStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.LaunchFromMenuOption(Site::kStandalone); - helper_.CheckWindowCreated(); - helper_.CheckWindowDisplayStandalone(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_LaunchFromLaunchIconStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.LaunchFromLaunchIcon(Site::kStandalone); - helper_.CheckWindowCreated(); - helper_.CheckWindowDisplayStandalone(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_LaunchFromChromeAppsStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.LaunchFromChromeApps(Site::kStandalone); - helper_.CheckWindowCreated(); - helper_.CheckWindowDisplayStandalone(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_SetOpenInTabFromAppSettingsStandalone_NavigateBrowserStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.SetOpenInTabFromAppSettings(Site::kStandalone); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.NavigateBrowser(Site::kStandalone); - helper_.CheckInstallIconShown(); -} - -IN_PROC_BROWSER_TEST_F(WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_OpenInChrome) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.OpenInChrome(); - helper_.CheckTabCreated(Number::kOne); - helper_.CheckAppLoadedInTab(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneNoShortcutWindowedWebApp_UninstallPolicyAppStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, - WindowOptions::kWindowed, InstallMode::kWebApp); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.UninstallPolicyApp(Site::kStandalone); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneNoShortcutBrowserWebApp_NavigateBrowserStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, - WindowOptions::kBrowser, InstallMode::kWebApp); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.NavigateBrowser(Site::kStandalone); - helper_.CheckLaunchIconShown(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneNoShortcutBrowserWebApp_LaunchFromMenuOptionStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, - WindowOptions::kBrowser, InstallMode::kWebApp); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.LaunchFromMenuOption(Site::kStandalone); - helper_.CheckWindowCreated(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneNoShortcutBrowserWebApp_LaunchFromLaunchIconStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, - WindowOptions::kBrowser, InstallMode::kWebApp); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.LaunchFromLaunchIcon(Site::kStandalone); - helper_.CheckWindowCreated(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneNoShortcutBrowserWebApp_LaunchFromChromeAppsStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, - WindowOptions::kBrowser, InstallMode::kWebApp); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.LaunchFromChromeApps(Site::kStandalone); - helper_.CheckWindowCreated(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneNoShortcutBrowserWebApp_UninstallPolicyAppStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, - WindowOptions::kBrowser, InstallMode::kWebApp); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.UninstallPolicyApp(Site::kStandalone); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneWithShortcutBrowserWebApp_NavigateBrowserStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, - WindowOptions::kBrowser, InstallMode::kWebApp); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.NavigateBrowser(Site::kStandalone); - helper_.CheckLaunchIconShown(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneWithShortcutBrowserWebApp_LaunchFromMenuOptionStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, - WindowOptions::kBrowser, InstallMode::kWebApp); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.LaunchFromMenuOption(Site::kStandalone); - helper_.CheckWindowCreated(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneWithShortcutBrowserWebApp_LaunchFromLaunchIconStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, - WindowOptions::kBrowser, InstallMode::kWebApp); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.LaunchFromLaunchIcon(Site::kStandalone); - helper_.CheckWindowCreated(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneWithShortcutBrowserWebApp_LaunchFromChromeAppsStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, - WindowOptions::kBrowser, InstallMode::kWebApp); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.LaunchFromChromeApps(Site::kStandalone); - helper_.CheckWindowCreated(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneWithShortcutBrowserWebApp_UninstallPolicyAppStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, - WindowOptions::kBrowser, InstallMode::kWebApp); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.UninstallPolicyApp(Site::kStandalone); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneWithShortcutWindowedWebApp_UninstallPolicyAppStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, - WindowOptions::kWindowed, InstallMode::kWebApp); - helper_.UninstallPolicyApp(Site::kStandalone); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_ManifestUpdateDisplayStandaloneBrowser_AwaitManifestUpdateStandalone_LaunchFromMenuOptionStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kBrowser); - helper_.AwaitManifestUpdate(Site::kStandalone); - helper_.LaunchFromMenuOption(Site::kStandalone); - helper_.CheckWindowCreated(); - helper_.CheckTabNotCreated(); - helper_.CheckWindowDisplayMinimal(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_ManifestUpdateDisplayStandaloneBrowser_AwaitManifestUpdateStandalone_LaunchFromLaunchIconStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kBrowser); - helper_.AwaitManifestUpdate(Site::kStandalone); - helper_.LaunchFromLaunchIcon(Site::kStandalone); - helper_.CheckWindowCreated(); - helper_.CheckTabNotCreated(); - helper_.CheckWindowDisplayMinimal(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_ManifestUpdateDisplayStandaloneBrowser_AwaitManifestUpdateStandalone_LaunchFromChromeAppsStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kBrowser); - helper_.AwaitManifestUpdate(Site::kStandalone); - helper_.LaunchFromChromeApps(Site::kStandalone); - helper_.CheckWindowCreated(); - helper_.CheckTabNotCreated(); - helper_.CheckWindowDisplayMinimal(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_ManifestUpdateDisplayStandaloneMinimalUi_AwaitManifestUpdateStandalone_LaunchFromMenuOptionStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kMinimalUi); - helper_.AwaitManifestUpdate(Site::kStandalone); - helper_.LaunchFromMenuOption(Site::kStandalone); - helper_.CheckWindowCreated(); - helper_.CheckTabNotCreated(); - helper_.CheckWindowDisplayMinimal(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_ManifestUpdateDisplayStandaloneMinimalUi_AwaitManifestUpdateStandalone_LaunchFromLaunchIconStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kMinimalUi); - helper_.AwaitManifestUpdate(Site::kStandalone); - helper_.LaunchFromLaunchIcon(Site::kStandalone); - helper_.CheckWindowCreated(); - helper_.CheckTabNotCreated(); - helper_.CheckWindowDisplayMinimal(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_ManifestUpdateDisplayStandaloneMinimalUi_AwaitManifestUpdateStandalone_LaunchFromChromeAppsStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kMinimalUi); - helper_.AwaitManifestUpdate(Site::kStandalone); - helper_.LaunchFromChromeApps(Site::kStandalone); - helper_.CheckWindowCreated(); - helper_.CheckTabNotCreated(); - helper_.CheckWindowDisplayMinimal(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_ManifestUpdateDisplayStandaloneTabbed_MaybeClosePwa_AwaitManifestUpdateStandalone_LaunchFromMenuOptionStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kTabbed); - helper_.MaybeClosePwa(); - helper_.AwaitManifestUpdate(Site::kStandalone); - helper_.LaunchFromMenuOption(Site::kStandalone); - helper_.CheckWindowCreated(); - helper_.CheckTabNotCreated(); - helper_.CheckWindowDisplayTabbed(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_ManifestUpdateDisplayStandaloneTabbed_MaybeClosePwa_AwaitManifestUpdateStandalone_LaunchFromLaunchIconStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kTabbed); - helper_.MaybeClosePwa(); - helper_.AwaitManifestUpdate(Site::kStandalone); - helper_.LaunchFromLaunchIcon(Site::kStandalone); - helper_.CheckWindowCreated(); - helper_.CheckTabNotCreated(); - helper_.CheckWindowDisplayTabbed(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_ManifestUpdateDisplayStandaloneTabbed_MaybeClosePwa_AwaitManifestUpdateStandalone_LaunchFromChromeAppsStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kTabbed); - helper_.MaybeClosePwa(); - helper_.AwaitManifestUpdate(Site::kStandalone); - helper_.LaunchFromChromeApps(Site::kStandalone); - helper_.CheckWindowCreated(); - helper_.CheckTabNotCreated(); - helper_.CheckWindowDisplayTabbed(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_NavigateBrowserMinimalUi) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.NavigateBrowser(Site::kMinimalUi); - helper_.CheckInstallIconShown(); - helper_.CheckLaunchIconNotShown(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneWindowed_SwitchIncognitoProfile_NavigateBrowserStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.SwitchIncognitoProfile(); - helper_.NavigateBrowser(Site::kStandalone); - helper_.CheckLaunchIconNotShown(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, WAI_CreateShortcutStandaloneBrowser_NavigateBrowserStandalone) { // Test contents are generated by script. Please do not modify! // See `docs/webapps/why-is-this-test-failing.md` or @@ -2050,84 +1203,6 @@ IN_PROC_BROWSER_TEST_F( WebAppIntegration, - WAI_CreateShortcutStandaloneBrowser_InstallPolicyAppStandaloneWithShortcutWindowedWebApp_NavigateBrowserStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, - WindowOptions::kWindowed, InstallMode::kWebApp); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.NavigateBrowser(Site::kStandalone); - helper_.CheckInstallIconShown(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneBrowser_InstallPolicyAppStandaloneWithShortcutWindowedWebApp_UninstallPolicyAppStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, - WindowOptions::kWindowed, InstallMode::kWebApp); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.UninstallPolicyApp(Site::kStandalone); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneBrowser_InstallPolicyAppStandaloneNoShortcutWindowedWebApp_NavigateBrowserStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, - WindowOptions::kWindowed, InstallMode::kWebApp); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.NavigateBrowser(Site::kStandalone); - helper_.CheckInstallIconShown(); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_CreateShortcutStandaloneBrowser_InstallPolicyAppStandaloneNoShortcutWindowedWebApp_UninstallPolicyAppStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, - WindowOptions::kWindowed, InstallMode::kWebApp); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.UninstallPolicyApp(Site::kStandalone); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, WAI_CreateShortcutStandaloneBrowser_InstallPolicyAppStandaloneWithShortcutBrowserWebApp_UninstallPolicyAppStandalone) { // Test contents are generated by script. Please do not modify! // See `docs/webapps/why-is-this-test-failing.md` or @@ -2572,5 +1647,919 @@ helper_.CheckLaunchIconNotShown(); } +IN_PROC_BROWSER_TEST_F(WebAppIntegration, + WAI_InstallOmniboxIconStandalone_ClosePwa) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ClosePwa(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_InstallPolicyAppStandaloneWithShortcutWindowedWebApp_SetOpenInTabFromAppSettingsStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, + WindowOptions::kWindowed, InstallMode::kWebApp); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.SetOpenInTabFromAppSettings(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_InstallPolicyAppStandaloneNoShortcutWindowedWebApp_SetOpenInTabFromAppSettingsStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, + WindowOptions::kWindowed, InstallMode::kWebApp); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.SetOpenInTabFromAppSettings(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F(WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_ClosePwa) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ClosePwa(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_NavigatePwaStandaloneMinimalUi_CloseCustomToolbar) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.NavigatePwa(Site::kStandalone, Site::kMinimalUi); + helper_.CheckCustomToolbar(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CloseCustomToolbar(); + helper_.CheckAppNavigationIsStartUrl(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_NavigatePwaStandaloneMinimalUi_OpenInChrome) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.NavigatePwa(Site::kStandalone, Site::kMinimalUi); + helper_.CheckCustomToolbar(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.OpenInChrome(); + helper_.CheckTabCreated(Number::kOne); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_NavigateBrowserStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.NavigateBrowser(Site::kStandalone); + helper_.CheckInstallIconNotShown(); + helper_.CheckLaunchIconShown(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_UninstallFromListStandalone_NavigateBrowserStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.UninstallFromList(Site::kStandalone); + helper_.CheckAppNotInList(Site::kStandalone); + helper_.NavigateBrowser(Site::kStandalone); + helper_.CheckInstallIconShown(); + helper_.CheckLaunchIconNotShown(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_LaunchFromMenuOptionStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.LaunchFromMenuOption(Site::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckWindowDisplayStandalone(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_LaunchFromLaunchIconStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.LaunchFromLaunchIcon(Site::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckWindowDisplayStandalone(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_LaunchFromChromeAppsStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.LaunchFromChromeApps(Site::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckWindowDisplayStandalone(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_SetOpenInTabFromAppSettingsStandalone_LaunchFromChromeAppsStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SetOpenInTabFromAppSettings(Site::kStandalone); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.LaunchFromChromeApps(Site::kStandalone); + helper_.CheckTabCreated(Number::kOne); + helper_.CheckAppLoadedInTab(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_SetOpenInTabFromAppSettingsStandalone_NavigateBrowserStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SetOpenInTabFromAppSettings(Site::kStandalone); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.NavigateBrowser(Site::kStandalone); + helper_.CheckInstallIconShown(); +} + +IN_PROC_BROWSER_TEST_F(WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_OpenInChrome) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.OpenInChrome(); + helper_.CheckTabCreated(Number::kOne); + helper_.CheckAppLoadedInTab(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneNoShortcutWindowedWebApp_UninstallPolicyAppStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, + WindowOptions::kWindowed, InstallMode::kWebApp); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.UninstallPolicyApp(Site::kStandalone); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneNoShortcutBrowserWebApp_NavigateBrowserStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, + WindowOptions::kBrowser, InstallMode::kWebApp); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.NavigateBrowser(Site::kStandalone); + helper_.CheckLaunchIconShown(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneNoShortcutBrowserWebApp_LaunchFromMenuOptionStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, + WindowOptions::kBrowser, InstallMode::kWebApp); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.LaunchFromMenuOption(Site::kStandalone); + helper_.CheckWindowCreated(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneNoShortcutBrowserWebApp_LaunchFromLaunchIconStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, + WindowOptions::kBrowser, InstallMode::kWebApp); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.LaunchFromLaunchIcon(Site::kStandalone); + helper_.CheckWindowCreated(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneNoShortcutBrowserWebApp_LaunchFromChromeAppsStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, + WindowOptions::kBrowser, InstallMode::kWebApp); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.LaunchFromChromeApps(Site::kStandalone); + helper_.CheckWindowCreated(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneNoShortcutBrowserWebApp_UninstallPolicyAppStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, + WindowOptions::kBrowser, InstallMode::kWebApp); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.UninstallPolicyApp(Site::kStandalone); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneWithShortcutBrowserWebApp_NavigateBrowserStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, + WindowOptions::kBrowser, InstallMode::kWebApp); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.NavigateBrowser(Site::kStandalone); + helper_.CheckLaunchIconShown(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneWithShortcutBrowserWebApp_LaunchFromMenuOptionStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, + WindowOptions::kBrowser, InstallMode::kWebApp); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.LaunchFromMenuOption(Site::kStandalone); + helper_.CheckWindowCreated(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneWithShortcutBrowserWebApp_LaunchFromLaunchIconStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, + WindowOptions::kBrowser, InstallMode::kWebApp); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.LaunchFromLaunchIcon(Site::kStandalone); + helper_.CheckWindowCreated(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneWithShortcutBrowserWebApp_LaunchFromChromeAppsStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, + WindowOptions::kBrowser, InstallMode::kWebApp); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.LaunchFromChromeApps(Site::kStandalone); + helper_.CheckWindowCreated(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneWithShortcutBrowserWebApp_UninstallPolicyAppStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, + WindowOptions::kBrowser, InstallMode::kWebApp); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.UninstallPolicyApp(Site::kStandalone); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_InstallPolicyAppStandaloneWithShortcutWindowedWebApp_UninstallPolicyAppStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, + WindowOptions::kWindowed, InstallMode::kWebApp); + helper_.UninstallPolicyApp(Site::kStandalone); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_ManifestUpdateDisplayStandaloneBrowser_AwaitManifestUpdateStandalone_LaunchFromMenuOptionStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kBrowser); + helper_.AwaitManifestUpdate(Site::kStandalone); + helper_.LaunchFromMenuOption(Site::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckTabNotCreated(); + helper_.CheckWindowDisplayMinimal(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_ManifestUpdateDisplayStandaloneBrowser_AwaitManifestUpdateStandalone_LaunchFromLaunchIconStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kBrowser); + helper_.AwaitManifestUpdate(Site::kStandalone); + helper_.LaunchFromLaunchIcon(Site::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckTabNotCreated(); + helper_.CheckWindowDisplayMinimal(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_ManifestUpdateDisplayStandaloneBrowser_AwaitManifestUpdateStandalone_LaunchFromChromeAppsStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kBrowser); + helper_.AwaitManifestUpdate(Site::kStandalone); + helper_.LaunchFromChromeApps(Site::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckTabNotCreated(); + helper_.CheckWindowDisplayMinimal(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_ManifestUpdateDisplayStandaloneMinimalUi_AwaitManifestUpdateStandalone_LaunchFromMenuOptionStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kMinimalUi); + helper_.AwaitManifestUpdate(Site::kStandalone); + helper_.LaunchFromMenuOption(Site::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckTabNotCreated(); + helper_.CheckWindowDisplayMinimal(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_ManifestUpdateDisplayStandaloneMinimalUi_AwaitManifestUpdateStandalone_LaunchFromLaunchIconStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kMinimalUi); + helper_.AwaitManifestUpdate(Site::kStandalone); + helper_.LaunchFromLaunchIcon(Site::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckTabNotCreated(); + helper_.CheckWindowDisplayMinimal(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_ManifestUpdateDisplayStandaloneMinimalUi_AwaitManifestUpdateStandalone_LaunchFromChromeAppsStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kMinimalUi); + helper_.AwaitManifestUpdate(Site::kStandalone); + helper_.LaunchFromChromeApps(Site::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckTabNotCreated(); + helper_.CheckWindowDisplayMinimal(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_ManifestUpdateDisplayStandaloneTabbed_MaybeClosePwa_AwaitManifestUpdateStandalone_LaunchFromMenuOptionStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kTabbed); + helper_.MaybeClosePwa(); + helper_.AwaitManifestUpdate(Site::kStandalone); + helper_.LaunchFromMenuOption(Site::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckTabNotCreated(); + helper_.CheckWindowDisplayTabbed(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_ManifestUpdateDisplayStandaloneTabbed_MaybeClosePwa_AwaitManifestUpdateStandalone_LaunchFromLaunchIconStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kTabbed); + helper_.MaybeClosePwa(); + helper_.AwaitManifestUpdate(Site::kStandalone); + helper_.LaunchFromLaunchIcon(Site::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckTabNotCreated(); + helper_.CheckWindowDisplayTabbed(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_ManifestUpdateDisplayStandaloneTabbed_MaybeClosePwa_AwaitManifestUpdateStandalone_LaunchFromChromeAppsStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ManifestUpdateDisplay(Site::kStandalone, Display::kTabbed); + helper_.MaybeClosePwa(); + helper_.AwaitManifestUpdate(Site::kStandalone); + helper_.LaunchFromChromeApps(Site::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckTabNotCreated(); + helper_.CheckWindowDisplayTabbed(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_NavigateBrowserStandaloneNestedA) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.NavigateBrowser(Site::kStandaloneNestedA); + helper_.CheckInstallIconShown(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_NavigateBrowserMinimalUi) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.NavigateBrowser(Site::kMinimalUi); + helper_.CheckInstallIconShown(); + helper_.CheckLaunchIconNotShown(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneWindowed_SwitchIncognitoProfile_NavigateBrowserStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchIncognitoProfile(); + helper_.NavigateBrowser(Site::kStandalone); + helper_.CheckLaunchIconNotShown(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneBrowser_InstallPolicyAppStandaloneWithShortcutWindowedWebApp_NavigateBrowserStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, + WindowOptions::kWindowed, InstallMode::kWebApp); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.NavigateBrowser(Site::kStandalone); + helper_.CheckInstallIconShown(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneBrowser_InstallPolicyAppStandaloneWithShortcutWindowedWebApp_LaunchFromChromeAppsStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, + WindowOptions::kWindowed, InstallMode::kWebApp); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.LaunchFromChromeApps(Site::kStandalone); + helper_.CheckTabCreated(Number::kOne); + helper_.CheckAppLoadedInTab(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneBrowser_InstallPolicyAppStandaloneWithShortcutWindowedWebApp_UninstallPolicyAppStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, + WindowOptions::kWindowed, InstallMode::kWebApp); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.UninstallPolicyApp(Site::kStandalone); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneBrowser_InstallPolicyAppStandaloneNoShortcutWindowedWebApp_NavigateBrowserStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, + WindowOptions::kWindowed, InstallMode::kWebApp); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.NavigateBrowser(Site::kStandalone); + helper_.CheckInstallIconShown(); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneBrowser_InstallPolicyAppStandaloneNoShortcutWindowedWebApp_LaunchFromChromeAppsStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, + WindowOptions::kWindowed, InstallMode::kWebApp); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.LaunchFromChromeApps(Site::kStandalone); + helper_.CheckTabCreated(Number::kOne); + helper_.CheckAppLoadedInTab(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutStandaloneBrowser_InstallPolicyAppStandaloneNoShortcutWindowedWebApp_UninstallPolicyAppStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, + WindowOptions::kWindowed, InstallMode::kWebApp); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.UninstallPolicyApp(Site::kStandalone); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_CreateShortcutWcoWindowed_EnableWindowControlsOverlayWco_DisableWindowControlsOverlayWco) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.CreateShortcut(Site::kWco, WindowOptions::kWindowed); + helper_.CheckWindowControlsOverlayToggle(Site::kWco, IsShown::kShown); + helper_.EnableWindowControlsOverlay(Site::kWco); + helper_.CheckWindowControlsOverlay(Site::kWco, IsOn::kOn); + helper_.CheckWindowControlsOverlayToggle(Site::kWco, IsShown::kShown); + helper_.DisableWindowControlsOverlay(Site::kWco); + helper_.CheckWindowControlsOverlay(Site::kWco, IsOn::kOff); +} + } // namespace } // namespace web_app::integration_tests
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_mac.cc b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_mac.cc index d802f43..03c1785 100644 --- a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_mac.cc +++ b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_mac.cc
@@ -19,7 +19,7 @@ // Manual tests: IN_PROC_BROWSER_TEST_F(WebAppIntegration, LaunchFromAppShimFallback) { - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kStandalone); helper_.CheckWindowCreated(); // Currently LaunchFromAppShimFallback doesn't quite match how a regular PWA // launch is supposed to behave on Mac (i.e. it opens a window even if there @@ -34,7 +34,7 @@ IN_PROC_BROWSER_TEST_F(WebAppIntegration, LaunchFromAppShimFallbackSecondaryProfile) { helper_.SwitchActiveProfile(ProfileName::kProfile2); - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kStandalone); helper_.CheckWindowCreated(); helper_.ClosePwa(); @@ -51,7 +51,7 @@ IN_PROC_BROWSER_TEST_F(WebAppIntegration, CorruptAppShim) { // Install and close the PWA. - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kStandalone); helper_.CheckWindowCreated(); helper_.ClosePwa(); // Now mess up the shortcut. @@ -90,7 +90,7 @@ } IN_PROC_BROWSER_TEST_F(WebAppIntegration, QuitAppShim) { - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kStandalone); helper_.CheckWindowCreated(); helper_.QuitAppShim(Site::kStandalone); helper_.CheckWindowClosed(); @@ -176,71 +176,6 @@ IN_PROC_BROWSER_TEST_F( WebAppIntegration, - WAI_31Standalone_79StandaloneStandaloneOriginal_24_12Standalone_7Standalone_112StandaloneNotShown_28_149Standalone_1Standalone_22One_163Standalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Sheriffs: Disabling this test is supported. - helper_.InstallOmniboxIcon(InstallableSite::kStandalone); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.ClosePwa(); - helper_.SetOpenInTabFromAppSettings(Site::kStandalone); - helper_.LaunchFromPlatformShortcut(Site::kStandalone); - helper_.CheckTabCreated(Number::kOne); - helper_.CheckAppLoadedInTab(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_31Standalone_79StandaloneStandaloneOriginal_24_12Standalone_7Standalone_112StandaloneNotShown_28_147Standalone_1Standalone_22One_163Standalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Sheriffs: Disabling this test is supported. - helper_.InstallOmniboxIcon(InstallableSite::kStandalone); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.ClosePwa(); - helper_.SetOpenInTabFromAppHome(Site::kStandalone); - helper_.LaunchFromPlatformShortcut(Site::kStandalone); - helper_.CheckTabCreated(Number::kOne); - helper_.CheckAppLoadedInTab(Site::kStandalone); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, - WAI_31Standalone_79StandaloneStandaloneOriginal_24_12Standalone_7Standalone_112StandaloneNotShown_28_160Profile2_31Standalone_164Standalone_1Standalone_165StandaloneOneProfile2) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Sheriffs: Disabling this test is supported. - helper_.InstallOmniboxIcon(InstallableSite::kStandalone); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.ClosePwa(); - helper_.SwitchActiveProfile(ProfileName::kProfile2); - helper_.InstallOmniboxIcon(InstallableSite::kStandalone); - helper_.QuitAppShim(Site::kStandalone); - helper_.LaunchFromPlatformShortcut(Site::kStandalone); - helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, - ProfileName::kProfile2); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, WAI_31Standalone_79StandaloneStandaloneOriginal_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_31Standalone_164Standalone_1Standalone_165StandaloneOneDefault_165StandaloneOneProfile2) { // Test contents are generated by script. Please do not modify! // See `docs/webapps/why-is-this-test-failing.md` or @@ -749,29 +684,6 @@ IN_PROC_BROWSER_TEST_F( WebAppIntegration, - WAI_InstallOmniboxIconStandalone_ClosePwa_SwitchProfileProfile2_InstallMenuStandalone_QuitAppShimStandalone_LaunchFromPlatformShortcutStandalone) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Gardeners: Disabling this test is supported. - helper_.InstallOmniboxIcon(InstallableSite::kStandalone); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.ClosePwa(); - helper_.SwitchActiveProfile(ProfileName::kProfile2); - helper_.InstallMenuOption(Site::kStandalone); - helper_.QuitAppShim(Site::kStandalone); - helper_.LaunchFromPlatformShortcut(Site::kStandalone); - helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, - ProfileName::kProfile2); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, WAI_InstallOmniboxIconStandalone_SwitchProfileProfile2_InstallMenuStandalone_QuitAppShimStandalone_LaunchFromPlatformShortcutStandalone) { // Test contents are generated by script. Please do not modify! // See `docs/webapps/why-is-this-test-failing.md` or @@ -1366,5 +1278,101 @@ helper_.CheckWindowNotCreated(); } +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_InstallOmniboxIconStandalone_ClosePwa_SetOpenInTabFromAppSettingsStandalone_LaunchFromPlatformShortcutStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ClosePwa(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.SetOpenInTabFromAppSettings(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckTabCreated(Number::kOne); + helper_.CheckAppLoadedInTab(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_InstallOmniboxIconStandalone_ClosePwa_SetOpenInTabFromAppHomeStandalone_LaunchFromPlatformShortcutStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ClosePwa(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.SetOpenInTabFromAppHome(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckTabCreated(Number::kOne); + helper_.CheckAppLoadedInTab(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_InstallOmniboxIconStandalone_ClosePwa_SwitchProfileProfile2_InstallOmniboxIconStandalone_QuitAppShimStandalone_LaunchFromPlatformShortcutStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ClosePwa(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_InstallOmniboxIconStandalone_ClosePwa_SwitchProfileProfile2_InstallMenuStandalone_QuitAppShimStandalone_LaunchFromPlatformShortcutStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ClosePwa(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallMenuOption(Site::kStandalone); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + } // namespace } // namespace web_app::integration_tests
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_mac_win_linux.cc b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_mac_win_linux.cc index 22ef929..27eda4d 100644 --- a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_mac_win_linux.cc +++ b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_mac_win_linux.cc
@@ -14,14 +14,14 @@ IN_PROC_BROWSER_TEST_F(WebAppIntegrationTest, CheckWindowControlsOverlayToggleIcon) { - helper_.CreateShortcut(Site::kWco, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kWco); helper_.CheckWindowControlsOverlayToggleIcon(IsShown::kShown); helper_.EnterFullScreenApp(); helper_.CheckWindowControlsOverlayToggleIcon(IsShown::kNotShown); } IN_PROC_BROWSER_TEST_F(WebAppIntegrationTest, LaunchFromPlatformShortcut) { - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kStandalone); helper_.CheckWindowCreated(); helper_.ClosePwa(); helper_.LaunchFromPlatformShortcut(Site::kStandalone); @@ -31,7 +31,7 @@ IN_PROC_BROWSER_TEST_F(WebAppIntegration, CheckPlatformShortcutAndIcon) { helper_.CheckPlatformShortcutNotExists(Site::kStandalone); helper_.CheckPlatformShortcutNotExists(Site::kMinimalUi); - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kStandalone); helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); helper_.CheckPlatformShortcutNotExists(Site::kMinimalUi); } @@ -53,7 +53,7 @@ } IN_PROC_BROWSER_TEST_F(WebAppIntegration, CheckCreateShortcuts) { - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kStandalone); helper_.DeletePlatformShortcut(Site::kStandalone); helper_.CheckPlatformShortcutNotExists(Site::kStandalone); helper_.CreateShortcutsFromList(Site::kStandalone); @@ -137,13 +137,6 @@ helper_.CheckPwaWindowCreated(Site::kFileHandler, Number::kTwo); } -IN_PROC_BROWSER_TEST_F(WebAppIntegration, AppLaunchedInTab) { - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); - helper_.CheckAppInListTabbed(Site::kStandalone); - helper_.LaunchFromChromeApps(Site::kStandalone); - helper_.CheckAppLoadedInTab(Site::kStandalone); -} - IN_PROC_BROWSER_TEST_F(WebAppIntegration, PreinstalledWebAppCreateShortcutFlow) { helper_.InstallPreinstalledApp(Site::kStandalone); @@ -3329,28 +3322,6 @@ IN_PROC_BROWSER_TEST_F( WebAppIntegration, - WAI_31Standalone_79StandaloneStandaloneOriginal_24_12Standalone_7Standalone_112StandaloneNotShown_88StandaloneStandaloneUpdatedCancelUninstallAndAcceptUpdate_117Standalone_1Standalone_79StandaloneStandaloneUpdated) { - // Test contents are generated by script. Please do not modify! - // See `docs/webapps/why-is-this-test-failing.md` or - // `docs/webapps/integration-testing-framework` for more info. - // Sheriffs: Disabling this test is supported. - helper_.InstallOmniboxIcon(InstallableSite::kStandalone); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); - helper_.CheckWindowCreated(); - helper_.CheckAppInListWindowed(Site::kStandalone); - helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); - helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, - IsShown::kNotShown); - helper_.ManifestUpdateTitle( - Site::kStandalone, Title::kStandaloneUpdated, - UpdateDialogResponse::kCancelUninstallAndAcceptUpdate); - helper_.AwaitManifestUpdate(Site::kStandalone); - helper_.LaunchFromPlatformShortcut(Site::kStandalone); - helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneUpdated); -} - -IN_PROC_BROWSER_TEST_F( - WebAppIntegration, WAI_31Wco_112WcoShown_170Shown_114Wco_113WcoOn_112WcoShown_115Wco_113WcoOff_112WcoShown) { // Test contents are generated by script. Please do not modify! // See `docs/webapps/why-is-this-test-failing.md` or @@ -5709,5 +5680,69 @@ helper_.CheckSiteNotHandlesFile(Site::kFileHandler, FileExtension::kBar); } +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_InstallOmniboxIconStandalone_ManifestUpdateTitleStandaloneStandaloneUpdatedCancelUninstallAndAcceptUpdate_AwaitManifestUpdateStandalone_LaunchFromPlatformShortcutStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ManifestUpdateTitle( + Site::kStandalone, Title::kStandaloneUpdated, + UpdateDialogResponse::kCancelUninstallAndAcceptUpdate); + helper_.AwaitManifestUpdate(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneUpdated); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_InstallPolicyAppStandaloneWithShortcutBrowserWebApp_DeletePlatformShortcutStandalone_CreateShortcutsFromListStandalone_LaunchFromPlatformShortcutStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, + WindowOptions::kBrowser, InstallMode::kWebApp); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.DeletePlatformShortcut(Site::kStandalone); + helper_.CreateShortcutsFromList(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckTabCreated(Number::kOne); + helper_.CheckAppLoadedInTab(Site::kStandalone); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_InstallOmniboxIconStandalone_ClosePwa_LaunchFromPlatformShortcutStandalone) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Gardeners: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckAppTitle(Site::kStandalone, Title::kStandaloneOriginal); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ClosePwa(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); + helper_.CheckLaunchIconNotShown(); +} + } // namespace } // namespace web_app::integration_tests
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_win.cc b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_win.cc index 07abf43..c236635 100644 --- a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_win.cc +++ b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_win.cc
@@ -14,7 +14,7 @@ // Manual tests: IN_PROC_BROWSER_TEST_F(WebAppIntegration, UninstallFromOs) { - helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.InstallMenuOption(Site::kStandalone); helper_.UninstallFromOs(Site::kStandalone); helper_.CheckAppNotInList(Site::kStandalone); }
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc b/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc index 97071b3..8bdfd03 100644 --- a/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc +++ b/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc
@@ -1227,19 +1227,11 @@ AfterStateChangeAction(); } +#if BUILDFLAG(IS_CHROMEOS) void WebAppIntegrationTestDriver::CreateShortcut(Site site, WindowOptions options) { bool open_in_window = options == WindowOptions::kWindowed; -#if !BUILDFLAG(IS_CHROMEOS) - // TODO(crbug.com/344912771): Remove tests that use the current create - // shortcut flow once ShortcutsNotApps is launched to 100% Stable. - if (base::FeatureList::IsEnabled(features::kShortcutsNotApps)) { - GTEST_SKIP() - << "Shortcuts are no longer web apps if kShortcutsNotApps is enabled"; - } -#endif - if (!BeforeStateChangeAction(__FUNCTION__)) { return; } @@ -1262,6 +1254,7 @@ apps::AppReadinessWaiter(profile(), active_app_id_).Await(); AfterStateChangeAction(); } +#endif // BUILDFLAG(IS_CHROMEOS) void WebAppIntegrationTestDriver::InstallMenuOption(Site site) { if (!BeforeStateChangeAction(__FUNCTION__)) { @@ -3137,14 +3130,6 @@ } void WebAppIntegrationTestDriver::CheckCreateShortcutNotShown() { -#if !BUILDFLAG(IS_CHROMEOS) - // TODO(crbug.com/344912771): Remove tests that use the current create - // shortcut flow once ShortcutsNotApps is launched to 100% Stable. - if (base::FeatureList::IsEnabled(features::kShortcutsNotApps)) { - GTEST_SKIP() - << "Shortcuts are no longer web apps if kShortcutsNotApps is enabled"; - } -#endif // !BUILDFLAG(IS_CHROMEOS) if (!BeforeStateCheckAction(__FUNCTION__)) { return; } @@ -3153,14 +3138,6 @@ } void WebAppIntegrationTestDriver::CheckCreateShortcutShown() { -#if !BUILDFLAG(IS_CHROMEOS) - // TODO(crbug.com/344912771): Remove tests that use the current create - // shortcut flow once ShortcutsNotApps is launched to 100% Stable. - if (base::FeatureList::IsEnabled(features::kShortcutsNotApps)) { - GTEST_SKIP() - << "Shortcuts are no longer web apps if kShortcutsNotApps is enabled"; - } -#endif // !BUILDFLAG(IS_CHROMEOS) if (!BeforeStateCheckAction(__FUNCTION__)) { return; }
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.h b/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.h index 1a216b9..396ebeb6 100644 --- a/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.h +++ b/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.h
@@ -275,7 +275,9 @@ void EnableFileHandling(Site site); void DisableWindowControlsOverlay(Site site); void EnableWindowControlsOverlay(Site site); +#if BUILDFLAG(IS_CHROMEOS) void CreateShortcut(Site site, WindowOptions window_options); +#endif // BUILDFLAG(IS_CHROMEOS) void InstallMenuOption(Site site); void InstallLocally(Site site); void InstallOmniboxIcon(InstallableSite site);
diff --git a/chrome/browser/ui/views/webauthn/authenticator_gpm_account_info_view.cc b/chrome/browser/ui/views/webauthn/authenticator_gpm_account_info_view.cc index 20fa899..2dcee021 100644 --- a/chrome/browser/ui/views/webauthn/authenticator_gpm_account_info_view.cc +++ b/chrome/browser/ui/views/webauthn/authenticator_gpm_account_info_view.cc
@@ -38,7 +38,8 @@ layout->set_between_child_spacing(kBetweenChildSpacing); auto image_view = std::make_unique<views::ImageView>(); - image_view->SetImage(sheet_model->GetGpmAccountImage().AsImageSkia()); + image_view->SetImage( + ui::ImageModel::FromImage(sheet_model->GetGpmAccountImage())); AddChildView(std::move(image_view)); auto label_column = std::make_unique<views::BoxLayoutView>();
diff --git a/chrome/browser/ui/views/webauthn/pin_textfield.cc b/chrome/browser/ui/views/webauthn/pin_textfield.cc index 6758604..003875f 100644 --- a/chrome/browser/ui/views/webauthn/pin_textfield.cc +++ b/chrome/browser/ui/views/webauthn/pin_textfield.cc
@@ -45,7 +45,7 @@ } // namespace PinTextfield::PinTextfield(int pin_digits_amount) - : views::Textfield(), pin_digits_count_(pin_digits_amount) { + : pin_digits_count_(pin_digits_amount) { CHECK_GE(pin_digits_count_, 0); SetCursorEnabled(false);
diff --git a/chrome/browser/ui/views/webid/account_selection_bubble_view_unittest.cc b/chrome/browser/ui/views/webid/account_selection_bubble_view_unittest.cc index a10d617a..98a30d27 100644 --- a/chrome/browser/ui/views/webid/account_selection_bubble_view_unittest.cc +++ b/chrome/browser/ui/views/webid/account_selection_bubble_view_unittest.cc
@@ -58,7 +58,7 @@ class FakeTabInterface : public tabs::MockTabInterface { public: - virtual ~FakeTabInterface() = default; + ~FakeTabInterface() override = default; explicit FakeTabInterface(content::WebContents* contents) : contents_(contents) {} content::WebContents* GetContents() const override { return contents_; }
diff --git a/chrome/browser/ui/views/webid/account_selection_modal_view.cc b/chrome/browser/ui/views/webid/account_selection_modal_view.cc index 0f6c320..25d1a07 100644 --- a/chrome/browser/ui/views/webid/account_selection_modal_view.cc +++ b/chrome/browser/ui/views/webid/account_selection_modal_view.cc
@@ -93,11 +93,9 @@ CHECK(web_contents_); const bool is_dark_mode = color_utils::IsDark( web_contents_->GetColorProvider().GetColor(ui::kColorDialogBackground)); - gfx::ImageSkia* background = - ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed( - is_dark_mode ? IDR_WEBID_MODAL_ICON_BACKGROUND_DARK - : IDR_WEBID_MODAL_ICON_BACKGROUND_LIGHT); - SetImage(*background); + SetImage(ui::ImageModel::FromResourceId( + is_dark_mode ? IDR_WEBID_MODAL_ICON_BACKGROUND_DARK + : IDR_WEBID_MODAL_ICON_BACKGROUND_LIGHT)); } void OnThemeChanged() override {
diff --git a/chrome/browser/ui/views/webid/fedcm_account_selection_view_desktop_unittest.cc b/chrome/browser/ui/views/webid/fedcm_account_selection_view_desktop_unittest.cc index 5d2d996..796b885 100644 --- a/chrome/browser/ui/views/webid/fedcm_account_selection_view_desktop_unittest.cc +++ b/chrome/browser/ui/views/webid/fedcm_account_selection_view_desktop_unittest.cc
@@ -51,7 +51,7 @@ /*rp_for_display=*/std::u16string()) { // This matches behavior of the production code, which implicitly passes // ownership of the view to the widget via DialogDelegate superclass. - SetOwnedByWidget(/*owned=*/true); + SetOwnedByWidget(/*delete_self=*/true); } enum class SheetType { kAccountPicker,
diff --git a/chrome/browser/ui/views/webid/fedcm_modal_dialog_view_unittest.cc b/chrome/browser/ui/views/webid/fedcm_modal_dialog_view_unittest.cc index 4b80c78..b99d9a2 100644 --- a/chrome/browser/ui/views/webid/fedcm_modal_dialog_view_unittest.cc +++ b/chrome/browser/ui/views/webid/fedcm_modal_dialog_view_unittest.cc
@@ -86,7 +86,7 @@ histogram_tester_->ExpectTotalCount( "Blink.FedCm.IdpSigninStatus.ShowPopupWindowResult", 0); content::WebContents* web_contents = popup_window_view->ShowPopupWindow( - GURL(u"https://example.com"), /*should_notify_on_user_close=*/true); + GURL(u"https://example.com"), /*user_close_cancels_flow=*/true); EXPECT_EQ(1, delegate.opened()); ASSERT_TRUE(web_contents); @@ -106,7 +106,7 @@ histogram_tester_->ExpectTotalCount( "Blink.FedCm.IdpSigninStatus.ShowPopupWindowResult", 0); content::WebContents* web_contents = popup_window_view->ShowPopupWindow( - GURL(u"invalid"), /*should_notify_on_user_close=*/true); + GURL(u"invalid"), /*user_close_cancels_flow=*/true); EXPECT_EQ(0, delegate.opened()); ASSERT_FALSE(web_contents); @@ -132,7 +132,7 @@ histogram_tester_->ExpectTotalCount( "Blink.FedCm.IdpSigninStatus.ShowPopupWindowResult", 0); content::WebContents* web_contents = popup_window_view->ShowPopupWindow( - GURL(u"https://example.com"), /*should_notify_on_user_close=*/true); + GURL(u"https://example.com"), /*user_close_cancels_flow=*/true); EXPECT_EQ(0, delegate.opened()); ASSERT_FALSE(web_contents); @@ -151,7 +151,7 @@ std::make_unique<FedCmModalDialogView>(web_contents(), /*observer=*/nullptr); content::WebContents* web_contents = popup_window->ShowPopupWindow( - GURL(u"https://example.com"), /*should_notify_on_user_close=*/true); + GURL(u"https://example.com"), /*user_close_cancels_flow=*/true); EXPECT_EQ(1, delegate.opened()); ASSERT_TRUE(web_contents); @@ -177,7 +177,7 @@ std::make_unique<FedCmModalDialogView>(web_contents(), /*observer=*/nullptr); content::WebContents* web_contents = popup_window->ShowPopupWindow( - GURL(u"https://example.com"), /*should_notify_on_user_close=*/true); + GURL(u"https://example.com"), /*user_close_cancels_flow=*/true); EXPECT_EQ(1, delegate.opened()); ASSERT_TRUE(web_contents); @@ -207,7 +207,7 @@ popup_window_view->SetCustomYPosition(custom_y_position); content::WebContents* web_contents = popup_window_view->ShowPopupWindow( - GURL(u"https://example.com"), /*should_notify_on_user_close=*/true); + GURL(u"https://example.com"), /*user_close_cancels_flow=*/true); EXPECT_EQ(1, delegate.opened()); ASSERT_TRUE(web_contents); @@ -226,7 +226,7 @@ /*observer=*/nullptr); popup_window->SetActiveModeSheetType(AccountSelectionView::LOADING); popup_window->ShowPopupWindow(GURL(u"https://example.com"), - /*should_notify_on_user_close=*/true); + /*user_close_cancels_flow=*/true); }); auto CheckForSampleAndReset( @@ -282,7 +282,7 @@ popup_window->SetActiveModeSheetType( AccountSelectionView::ACCOUNT_SELECTION); popup_window->ShowPopupWindow(GURL(u"https://example.com"), - /*should_notify_on_user_close=*/true); + /*user_close_cancels_flow=*/true); }); auto CheckForSampleAndReset(
diff --git a/chrome/browser/ui/views/webview_accessibility_browsertest.cc b/chrome/browser/ui/views/webview_accessibility_browsertest.cc index 0cd8c40..bc288e0c 100644 --- a/chrome/browser/ui/views/webview_accessibility_browsertest.cc +++ b/chrome/browser/ui/views/webview_accessibility_browsertest.cc
@@ -33,7 +33,7 @@ int count = 0; if (node->GetRole() == ax::mojom::Role::kButton) { bool offscreen = false; - tree->GetTreeBounds(node, &offscreen, /* clip = */ true); + tree->GetTreeBounds(node, &offscreen, /*clip_bounds=*/true); if (offscreen) { count++; }
diff --git a/chrome/browser/ui/web_applications/web_app_browsertest.cc b/chrome/browser/ui/web_applications/web_app_browsertest.cc index b41959a7..3d36d1f 100644 --- a/chrome/browser/ui/web_applications/web_app_browsertest.cc +++ b/chrome/browser/ui/web_applications/web_app_browsertest.cc
@@ -2239,7 +2239,7 @@ auto* app = provider->registrar_unsafe().GetAppById(app_id); EXPECT_EQ(web_app::GenerateAppId( - /*manifest_id=*/std::nullopt, + /*manifest_id_path=*/std::nullopt, provider->registrar_unsafe().GetAppStartUrl(app_id)), app_id); EXPECT_EQ(app->start_url(), app->manifest_id()); @@ -2256,9 +2256,9 @@ auto* app = provider->registrar_unsafe().GetAppById(app_id); EXPECT_EQ(web_app::GenerateAppIdFromManifestId(app->manifest_id()), app_id); - EXPECT_NE( - web_app::GenerateAppId(/*manifest_id=*/std::nullopt, app->start_url()), - app_id); + EXPECT_NE(web_app::GenerateAppId(/*manifest_id_path=*/std::nullopt, + app->start_url()), + app_id); } #if !BUILDFLAG(IS_CHROMEOS)
diff --git a/chrome/browser/ui/web_applications/web_app_launch_utils.cc b/chrome/browser/ui/web_applications/web_app_launch_utils.cc index e67fe6c..798ed05 100644 --- a/chrome/browser/ui/web_applications/web_app_launch_utils.cc +++ b/chrome/browser/ui/web_applications/web_app_launch_utils.cc
@@ -1634,7 +1634,7 @@ if (controlling_app_id) { client_mode_and_browser = GetEffectiveClientModeAndBrowserForCapturing( *profile, *controlling_app_id, source_contents_app_id, - /*ignore_browser_tabs=*/false, + /*ignore_browser_tabs_for_standalone_apps=*/false, /*navigate_params_requested_browser=*/params.browser); debug_data.Set( "effective_client_mode",
diff --git a/chrome/browser/ui/webui/ash/notification_tester/notification_tester_handler.cc b/chrome/browser/ui/webui/ash/notification_tester/notification_tester_handler.cc index d4b1de1..488e5ae 100644 --- a/chrome/browser/ui/webui/ash/notification_tester/notification_tester_handler.cc +++ b/chrome/browser/ui/webui/ash/notification_tester/notification_tester_handler.cc
@@ -175,7 +175,7 @@ return kSmartphoneIcon; } - return gfx::VectorIcon::EmptyIcon(); + return gfx::kNoneIcon; } std::vector<message_center::ButtonInfo>
diff --git a/chrome/browser/ui/webui/browser_command/browser_command_handler_unittest.cc b/chrome/browser/ui/webui/browser_command/browser_command_handler_unittest.cc index 1f675f8..f944cdad 100644 --- a/chrome/browser/ui/webui/browser_command/browser_command_handler_unittest.cc +++ b/chrome/browser/ui/webui/browser_command/browser_command_handler_unittest.cc
@@ -169,12 +169,11 @@ return std::u16string(); } - void StartTutorial( - user_education::TutorialIdentifier id, - ui::ElementContext context, - base::OnceClosure completed_callback = base::DoNothing(), - base::OnceClosure aborted_callback = base::DoNothing(), - base::RepeatingClosure restart_callback = base::DoNothing()) override { + void StartTutorial(user_education::TutorialIdentifier id, + ui::ElementContext context, + base::OnceClosure completed_callback, + base::OnceClosure aborted_callback, + base::RepeatingClosure restart_callback) override { running_id_ = id; }
diff --git a/chrome/browser/ui/webui/certificate_manager/client_cert_sources.cc b/chrome/browser/ui/webui/certificate_manager/client_cert_sources.cc index adb963ce..8d7cd306 100644 --- a/chrome/browser/ui/webui/certificate_manager/client_cert_sources.cc +++ b/chrome/browser/ui/webui/certificate_manager/client_cert_sources.cc
@@ -668,7 +668,7 @@ base::FilePath(), &file_type_info, 1, // 1-based index for |file_type_info.extensions| to specify default. FILE_PATH_LITERAL("p12"), web_contents->GetTopLevelNativeWindow(), - /*params=*/nullptr); + /*caller=*/nullptr); } // ui::SelectFileDialog::Listener
diff --git a/chrome/browser/ui/webui/certificate_viewer/certificate_viewer_ui.cc b/chrome/browser/ui/webui/certificate_viewer/certificate_viewer_ui.cc index 699cbf4..aa58e2a 100644 --- a/chrome/browser/ui/webui/certificate_viewer/certificate_viewer_ui.cc +++ b/chrome/browser/ui/webui/certificate_viewer/certificate_viewer_ui.cc
@@ -76,4 +76,4 @@ chrome::kChromeUICertificateViewerHost); } -CertificateViewerUI::~CertificateViewerUI() {} +CertificateViewerUI::~CertificateViewerUI() = default;
diff --git a/chrome/browser/ui/webui/certificate_viewer/certificate_viewer_webui.cc b/chrome/browser/ui/webui/certificate_viewer/certificate_viewer_webui.cc index 767c4824..651c530 100644 --- a/chrome/browser/ui/webui/certificate_viewer/certificate_viewer_webui.cc +++ b/chrome/browser/ui/webui/certificate_viewer/certificate_viewer_webui.cc
@@ -517,7 +517,7 @@ cert_metadata_(std::move(cert_metadata)), modifications_callback_(std::move(modifications_callback)) {} -CertificateViewerDialogHandler::~CertificateViewerDialogHandler() {} +CertificateViewerDialogHandler::~CertificateViewerDialogHandler() = default; void CertificateViewerDialogHandler::RegisterMessages() { web_ui()->RegisterMessageCallback(
diff --git a/chrome/browser/ui/webui/chrome_urls/chrome_urls_handler.cc b/chrome/browser/ui/webui/chrome_urls/chrome_urls_handler.cc index 9472c6d1..25397c5 100644 --- a/chrome/browser/ui/webui/chrome_urls/chrome_urls_handler.cc +++ b/chrome/browser/ui/webui/chrome_urls/chrome_urls_handler.cc
@@ -101,7 +101,7 @@ chrome_urls::mojom::ChromeUrlsData::New()); result->webui_urls = std::move(webui_urls); for (base::cstring_view url : chrome::ChromeDebugURLs()) { - result->command_urls.push_back(GURL(url)); + result->command_urls.emplace_back(url); } PrefService* local_state = g_browser_process->local_state();
diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc index e66f2c1..aa9c8b2 100644 --- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc +++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
@@ -307,8 +307,7 @@ // |gfx::kFaviconSize| x |gfx::kFaviconSize| DIP. int candidate_edge_size = static_cast<int>(gfx::kFaviconSize * scale + 0.5f); - candidate_sizes.push_back( - gfx::Size(candidate_edge_size, candidate_edge_size)); + candidate_sizes.emplace_back(candidate_edge_size, candidate_edge_size); } std::vector<size_t> selected_indices; SelectFaviconFrameIndices(candidate_sizes, desired_sizes_in_pixel,
diff --git a/chrome/browser/ui/webui/commerce/price_tracking_handler.cc b/chrome/browser/ui/webui/commerce/price_tracking_handler.cc index 28461dd1..b2dbebf2 100644 --- a/chrome/browser/ui/webui/commerce/price_tracking_handler.cc +++ b/chrome/browser/ui/webui/commerce/price_tracking_handler.cc
@@ -178,13 +178,13 @@ void PriceTrackingHandler::GetParentBookmarkFolderNameForCurrentUrl( GetParentBookmarkFolderNameForCurrentUrlCallback callback) { auto current_url = GetCurrentTabUrl(); - if (!current_url.has_value()) { + if (current_url.has_value()) { + std::move(callback).Run( + commerce::GetBookmarkParentName(bookmark_model_, current_url.value()) + .value_or(std::u16string())); + } else { std::move(callback).Run(std::u16string()); } - - std::move(callback).Run( - commerce::GetBookmarkParentName(bookmark_model_, current_url.value()) - .value_or(std::u16string())); } void PriceTrackingHandler::ShowBookmarkEditorForCurrentUrl() {
diff --git a/chrome/browser/ui/webui/components/components_handler_unittest.cc b/chrome/browser/ui/webui/components/components_handler_unittest.cc index da16eba..8a923cb4 100644 --- a/chrome/browser/ui/webui/components/components_handler_unittest.cc +++ b/chrome/browser/ui/webui/components/components_handler_unittest.cc
@@ -10,7 +10,7 @@ class TestComponentsHandler : public ComponentsHandler { public: - TestComponentsHandler( + explicit TestComponentsHandler( component_updater::ComponentUpdateService* component_update_service) : ComponentsHandler(component_update_service) { set_web_ui(&test_web_ui_);
diff --git a/chrome/browser/ui/webui/cr_components/history_embeddings/history_embeddings_handler_unittest.cc b/chrome/browser/ui/webui/cr_components/history_embeddings/history_embeddings_handler_unittest.cc index 8e7ac66..1569ac5a 100644 --- a/chrome/browser/ui/webui/cr_components/history_embeddings/history_embeddings_handler_unittest.cc +++ b/chrome/browser/ui/webui/cr_components/history_embeddings/history_embeddings_handler_unittest.cc
@@ -69,7 +69,7 @@ BuildServiceInstanceForBrowserContextForTesting( browser_context, std::make_unique<history_embeddings::MockEmbedder>(), /*answerer=*/nullptr, - /*intent_classfier=*/nullptr); + /*intent_classifier=*/nullptr); } std::unique_ptr<KeyedService> BuildTestPageContentAnnotationsService(
diff --git a/chrome/browser/ui/webui/cr_components/history_embeddings/history_embeddings_interactive_uitest.cc b/chrome/browser/ui/webui/cr_components/history_embeddings/history_embeddings_interactive_uitest.cc index 459c7809..757cd36 100644 --- a/chrome/browser/ui/webui/cr_components/history_embeddings/history_embeddings_interactive_uitest.cc +++ b/chrome/browser/ui/webui/cr_components/history_embeddings/history_embeddings_interactive_uitest.cc
@@ -50,7 +50,7 @@ return HistoryEmbeddingsServiceFactory:: BuildServiceInstanceForBrowserContextForTesting( context, std::make_unique<history_embeddings::MockEmbedder>(), - /*answerer=*/nullptr, /*intent_classfier=*/nullptr); + /*answerer=*/nullptr, /*intent_classifier=*/nullptr); })); InteractiveBrowserTest::SetUpOnMainThread();
diff --git a/chrome/browser/ui/webui/crashes/crashes_ui.cc b/chrome/browser/ui/webui/crashes/crashes_ui.cc index 9891f87..8f6d5da9 100644 --- a/chrome/browser/ui/webui/crashes/crashes_ui.cc +++ b/chrome/browser/ui/webui/crashes/crashes_ui.cc
@@ -107,12 +107,11 @@ void HandleRequestSingleCrashUpload(const base::Value::List& args); scoped_refptr<UploadList> upload_list_; - bool list_available_; - bool first_load_; + bool list_available_ = false; + bool first_load_ = true; }; -CrashesDOMHandler::CrashesDOMHandler() - : list_available_(false), first_load_(true) { +CrashesDOMHandler::CrashesDOMHandler() { upload_list_ = CreateCrashUploadList(); }
diff --git a/chrome/browser/ui/webui/data_sharing/data_sharing_page_handler_unittest.cc b/chrome/browser/ui/webui/data_sharing/data_sharing_page_handler_unittest.cc index 6d9c113fb..945743e 100644 --- a/chrome/browser/ui/webui/data_sharing/data_sharing_page_handler_unittest.cc +++ b/chrome/browser/ui/webui/data_sharing/data_sharing_page_handler_unittest.cc
@@ -64,7 +64,7 @@ void SetUp() override { scoped_feature_list_.InitWithFeatures( {data_sharing::features::kDataSharingFeature, - tab_groups::kTabGroupsSaveUIUpdate, tab_groups::kTabGroupsSaveV2, + tab_groups::kTabGroupsSaveV2, tab_groups::kTabGroupSyncServiceDesktopMigration}, {}); BrowserWithTestWindowTest::SetUp();
diff --git a/chrome/browser/ui/webui/history/browsing_history_handler.cc b/chrome/browser/ui/webui/history/browsing_history_handler.cc index c7eeaa4..a561a7a 100644 --- a/chrome/browser/ui/webui/history/browsing_history_handler.cc +++ b/chrome/browser/ui/webui/history/browsing_history_handler.cc
@@ -463,15 +463,15 @@ const base::Value& items = args[1]; const base::Value::List& list = items.GetList(); items_to_remove.reserve(list.size()); - for (size_t i = 0; i < list.size(); ++i) { + for (const auto& i : list) { // Each argument is a dictionary with properties "url" and "timestamps". - if (!list[i].is_dict()) { + if (!i.is_dict()) { NOTREACHED() << "Unable to extract arguments"; } - const std::string* url_ptr = list[i].GetDict().FindString("url"); + const std::string* url_ptr = i.GetDict().FindString("url"); const base::Value::List* timestamps_ptr = - list[i].GetDict().FindList("timestamps"); + i.GetDict().FindList("timestamps"); if (!url_ptr || !timestamps_ptr) { NOTREACHED() << "Unable to extract arguments"; }
diff --git a/chrome/browser/ui/webui/history_clusters/history_clusters_handler.h b/chrome/browser/ui/webui/history_clusters/history_clusters_handler.h index ccaf3ccf..3361c41 100644 --- a/chrome/browser/ui/webui/history_clusters/history_clusters_handler.h +++ b/chrome/browser/ui/webui/history_clusters/history_clusters_handler.h
@@ -118,7 +118,7 @@ HideVisitsCallback callback) override; void OpenVisitUrlsInTabGroup( std::vector<mojom::URLVisitPtr> visits, - const std::optional<std::string>& tab_group_name = std::nullopt) override; + const std::optional<std::string>& tab_group_name) override; void RecordVisitAction(mojom::VisitAction visit_action, uint32_t visit_index, mojom::VisitType visit_type) override;
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 fab6ae63..e195476 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
@@ -101,7 +101,7 @@ visit2->normalized_url = GURL("https://bar"); visits.push_back(std::move(visit2)); - handler_->OpenVisitUrlsInTabGroup(std::move(visits)); + handler_->OpenVisitUrlsInTabGroup(std::move(visits), std::nullopt); ASSERT_EQ(3, tab_strip_model->GetTabCount()); ASSERT_EQ(tab_strip_model->GetTabGroupForTab(1).value(), @@ -127,7 +127,7 @@ } // Verify that we open 32 at maximum. Including the NTP, that's 33 total. - handler_->OpenVisitUrlsInTabGroup(std::move(visits)); + handler_->OpenVisitUrlsInTabGroup(std::move(visits), std::nullopt); ASSERT_EQ(33, tab_strip_model->GetTabCount()); }
diff --git a/chrome/browser/ui/webui/interstitials/interstitial_ui.cc b/chrome/browser/ui/webui/interstitials/interstitial_ui.cc index a58c87f..8232c7c 100644 --- a/chrome/browser/ui/webui/interstitials/interstitial_ui.cc +++ b/chrome/browser/ui/webui/interstitials/interstitial_ui.cc
@@ -697,6 +697,7 @@ return supervised_user::BuildErrorPageHtml( allow_access_requests, profile_image_url, profile_image_url2, custodian, custodian_email, second_custodian, second_custodian_email, reason, - g_browser_process->GetApplicationLocale(), /*already_sent_request=*/false, + g_browser_process->GetApplicationLocale(), + /*already_sent_remote_request=*/false, /*is_main_frame=*/true); }
diff --git a/chrome/browser/ui/webui/predictors/predictors_handler.cc b/chrome/browser/ui/webui/predictors/predictors_handler.cc index f0a351f3..95e4b16 100644 --- a/chrome/browser/ui/webui/predictors/predictors_handler.cc +++ b/chrome/browser/ui/webui/predictors/predictors_handler.cc
@@ -29,7 +29,7 @@ predictors::LoadingPredictorFactory::GetForProfile(profile); } -PredictorsHandler::~PredictorsHandler() {} +PredictorsHandler::~PredictorsHandler() = default; void PredictorsHandler::RegisterMessages() { web_ui()->RegisterMessageCallback(
diff --git a/chrome/browser/ui/webui/print_preview/local_printer_handler_default_unittest.cc b/chrome/browser/ui/webui/print_preview/local_printer_handler_default_unittest.cc index b1c5c6e..6793a07e 100644 --- a/chrome/browser/ui/webui/print_preview/local_printer_handler_default_unittest.cc +++ b/chrome/browser/ui/webui/print_preview/local_printer_handler_default_unittest.cc
@@ -306,8 +306,8 @@ bool is_default, bool requires_elevated_permissions) { auto caps = std::make_unique<PrinterSemanticCapsAndDefaults>(); - caps->papers.emplace_back(PrinterSemanticCapsAndDefaults::Paper{ - "bar", "vendor", gfx::Size(600, 600), gfx::Rect(0, 0, 600, 600)}); + caps->papers.emplace_back("bar", "vendor", gfx::Size(600, 600), + gfx::Rect(0, 0, 600, 600)); auto basic_info = std::make_unique<PrinterBasicInfo>( id, display_name, description, /*printer_status=*/0, is_default, PrinterBasicInfoOptions{});
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc index f8e1b28..53ca206 100644 --- a/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc +++ b/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc
@@ -331,8 +331,7 @@ public: TestPrintPreviewHandler(std::unique_ptr<PrinterHandler> printer_handler, content::WebContents* initiator) - : bad_messages_(0), - test_printer_handler_(std::move(printer_handler)), + : test_printer_handler_(std::move(printer_handler)), initiator_(initiator) {} TestPrintPreviewHandler(const TestPrintPreviewHandler&) = delete; TestPrintPreviewHandler& operator=(const TestPrintPreviewHandler&) = delete; @@ -359,7 +358,7 @@ int bad_messages() { return bad_messages_; } private: - int bad_messages_; + int bad_messages_ = 0; base::flat_set<mojom::PrinterType> called_for_type_; std::unique_ptr<PrinterHandler> test_printer_handler_; const raw_ptr<content::WebContents, DanglingUntriaged> initiator_;
diff --git a/chrome/browser/ui/webui/settings/people_handler.cc b/chrome/browser/ui/webui/settings/people_handler.cc index 26a398a..f26ee55 100644 --- a/chrome/browser/ui/webui/settings/people_handler.cc +++ b/chrome/browser/ui/webui/settings/people_handler.cc
@@ -134,7 +134,7 @@ SyncConfigInfo(); ~SyncConfigInfo(); - bool sync_everything; + bool sync_everything = false; syncer::UserSelectableTypeSet selected_types; }; @@ -142,7 +142,7 @@ return current_url == chrome::GetSettingsUrl(chrome::kSyncSetupSubPage); } -SyncConfigInfo::SyncConfigInfo() : sync_everything(false) {} +SyncConfigInfo::SyncConfigInfo() = default; SyncConfigInfo::~SyncConfigInfo() = default;
diff --git a/chrome/browser/ui/webui/settings/people_handler_unittest.cc b/chrome/browser/ui/webui/settings/people_handler_unittest.cc index 30e61a8a..abcdb2d 100644 --- a/chrome/browser/ui/webui/settings/people_handler_unittest.cc +++ b/chrome/browser/ui/webui/settings/people_handler_unittest.cc
@@ -1782,7 +1782,7 @@ CreatePeopleHandler(); base::Value::List args; - args.Append(/*delete_profile=*/false); + args.Append(/*value=*/false); EXPECT_DEATH(SimulateSignout(args), ".*"); } @@ -1796,7 +1796,7 @@ CreatePeopleHandler(); base::Value::List args; - args.Append(/*delete_profile=*/false); + args.Append(/*value=*/false); EXPECT_DEATH(SimulateSignout(args), ".*"); } #endif // DCHECK_IS_ON() @@ -1815,7 +1815,7 @@ CreatePeopleHandler(); base::Value::List args; - args.Append(/*delete_profile=*/false); + args.Append(/*value=*/false); SimulateSignout(args); EXPECT_FALSE(identity_manager()->HasPrimaryAccount(ConsentLevel::kSync)); @@ -1838,7 +1838,7 @@ CreatePeopleHandler(); base::Value::List args; - args.Append(/*delete_profile=*/false); + args.Append(/*value=*/false); SimulateSignout(args); #if BUILDFLAG(ENABLE_DICE_SUPPORT) EXPECT_EQ(web_contents()->GetVisibleURL(), @@ -1866,7 +1866,7 @@ EXPECT_TRUE(chrome::FindBrowserWithTab(web_ui()->GetWebContents())); base::Value::List args; - args.Append(/*delete_profile=*/false); + args.Append(/*value=*/false); SimulateSignout(args); #if BUILDFLAG(ENABLE_DICE_SUPPORT) @@ -1900,7 +1900,7 @@ CreatePeopleHandler(); base::Value::List args; - args.Append(/*delete_profile=*/false); + args.Append(/*value=*/false); SimulateSignout(args); EXPECT_EQ(web_contents()->GetVisibleURL(), GaiaUrls::GetInstance()->LogOutURLWithContinueURL(GURL()));
diff --git a/chrome/browser/ui/webui/settings/protocol_handlers_handler.cc b/chrome/browser/ui/webui/settings/protocol_handlers_handler.cc index 06e8a80..5092c4b 100644 --- a/chrome/browser/ui/webui/settings/protocol_handlers_handler.cc +++ b/chrome/browser/ui/webui/settings/protocol_handlers_handler.cc
@@ -184,9 +184,8 @@ registry->GetRegisteredProtocols(&protocols); base::Value::List handlers; - for (auto protocol = protocols.begin(); protocol != protocols.end(); - protocol++) { - handlers.Append(GetHandlersForProtocol(*protocol)); + for (auto& protocol : protocols) { + handlers.Append(GetHandlersForProtocol(protocol)); } FireWebUIListener("setProtocolHandlers", handlers);
diff --git a/chrome/browser/ui/webui/settings/recent_site_settings_helper.cc b/chrome/browser/ui/webui/settings/recent_site_settings_helper.cc index 7001012..79ced73e 100644 --- a/chrome/browser/ui/webui/settings/recent_site_settings_helper.cc +++ b/chrome/browser/ui/webui/settings/recent_site_settings_helper.cc
@@ -109,8 +109,7 @@ } // namespace TimestampedSetting::TimestampedSetting() - : timestamp(base::Time()), - content_type(ContentSettingsType::DEFAULT), + : content_type(ContentSettingsType::DEFAULT), content_setting(ContentSetting::CONTENT_SETTING_DEFAULT), setting_source(site_settings::SiteSettingSource::kDefault) {} TimestampedSetting::TimestampedSetting(const TimestampedSetting& other) = @@ -126,10 +125,7 @@ setting_source(setting_source) {} TimestampedSetting::~TimestampedSetting() = default; -RecentSitePermissions::RecentSitePermissions() - : origin(GURL()), - incognito(false), - settings(std::vector<TimestampedSetting>()) {} +RecentSitePermissions::RecentSitePermissions() : incognito(false) {} RecentSitePermissions::RecentSitePermissions( const RecentSitePermissions& other) = default; RecentSitePermissions::RecentSitePermissions(RecentSitePermissions&& other) =
diff --git a/chrome/browser/ui/webui/settings/safety_hub_handler.cc b/chrome/browser/ui/webui/settings/safety_hub_handler.cc index b7a699ac..6e98704 100644 --- a/chrome/browser/ui/webui/settings/safety_hub_handler.cc +++ b/chrome/browser/ui/webui/settings/safety_hub_handler.cc
@@ -107,9 +107,9 @@ &permissions_data.constraints}}; if (base::FeatureList::IsEnabled( safe_browsing::kSafetyHubAbusiveNotificationRevocation)) { - keys.push_back({safety_hub::kAbusiveRevocationExpirationKey, - safety_hub::kAbusiveRevocationLifetimeKey, - &permissions_data.abusive_revocation_constraints}); + keys.emplace_back(safety_hub::kAbusiveRevocationExpirationKey, + safety_hub::kAbusiveRevocationLifetimeKey, + &permissions_data.abusive_revocation_constraints); } for (const auto& [expiration_key, lifetime_key, constraints] : keys) { const base::Value* js_expiration =
diff --git a/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc b/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc index 28d45ef0..1392c6e 100644 --- a/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc +++ b/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc
@@ -2048,11 +2048,11 @@ TEST_F(SiteSettingsHandlerTest, InstalledApps) { GURL start_url("http://abc.example.com/path"); - RegisterWebApp( - profile(), - MakeApp(web_app::GenerateAppId(/*manifest_id=*/std::nullopt, start_url), - apps::AppType::kWeb, start_url.spec(), apps::Readiness::kReady, - apps::InstallReason::kSync)); + RegisterWebApp(profile(), + MakeApp(web_app::GenerateAppId( + /*manifest_id_path=*/std::nullopt, start_url), + apps::AppType::kWeb, start_url.spec(), + apps::Readiness::kReady, apps::InstallReason::kSync)); SetupModel(); @@ -6641,7 +6641,7 @@ handler()->ServicePendingRequests(); ValidateUsageInfo( - /*expected_usage_host=*/iwa_url, /*expected_usage_string=*/"1,000 B", + /*expected_usage_origin=*/iwa_url, /*expected_usage_string=*/"1,000 B", /*expected_cookie_string=*/"", /*expected_rws_member_count_string=*/"", /*expected_rws_policy=*/false); }
diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/browser/ui/webui/settings/site_settings_helper.cc index 42cae3d..dac2350 100644 --- a/chrome/browser/ui/webui/settings/site_settings_helper.cc +++ b/chrome/browser/ui/webui/settings/site_settings_helper.cc
@@ -495,9 +495,9 @@ } // namespace bool HasRegisteredGroupName(ContentSettingsType type) { - for (size_t i = 0; i < std::size(kContentSettingsTypeGroupNames); ++i) { - if (type == kContentSettingsTypeGroupNames[i].type && - kContentSettingsTypeGroupNames[i].name) { + for (auto kContentSettingsTypeGroupName : kContentSettingsTypeGroupNames) { + if (type == kContentSettingsTypeGroupName.type && + kContentSettingsTypeGroupName.name) { return true; } } @@ -1112,12 +1112,12 @@ for (const auto& secondary_setting : one_settings) { const SiteExceptionInfo& site_exception_info = secondary_setting.second; const auto& [secondary_pattern, is_incognito] = secondary_setting.first; - this_provider_exceptions.push_back(GetExceptionForPage( - type, profile, primary_pattern, secondary_pattern, - std::move(display_name), site_exception_info.content_setting, - ProviderTypeToSiteSettingsSource(source), - site_exception_info.expiration, is_incognito, - site_exception_info.is_embargoed)); + this_provider_exceptions.push_back( + GetExceptionForPage(type, profile, primary_pattern, secondary_pattern, + display_name, site_exception_info.content_setting, + ProviderTypeToSiteSettingsSource(source), + site_exception_info.expiration, is_incognito, + site_exception_info.is_embargoed)); } }
diff --git a/chrome/browser/ui/webui/settings/site_settings_helper_unittest.cc b/chrome/browser/ui/webui/settings/site_settings_helper_unittest.cc index 8ef12a1..6fa6deb 100644 --- a/chrome/browser/ui/webui/settings/site_settings_helper_unittest.cc +++ b/chrome/browser/ui/webui/settings/site_settings_helper_unittest.cc
@@ -941,8 +941,8 @@ /*chooser_exception_details=*/exception_details, /*profile=*/nullptr); ExpectValidChooserExceptionObject( - exception, /*chooser_type=*/kUsbChooserGroupName, - /*display_name=*/kObjectName, chooser_object); + exception, /*expected_chooser_type=*/kUsbChooserGroupName, + /*expected_display_name=*/kObjectName, chooser_object); const auto& sites_list = exception.Find(kSites)->GetList(); ExpectValidSiteExceptionObject( @@ -998,10 +998,10 @@ /*chooser_type=*/kUsbChooserGroupName, /*chooser_exception_details=*/exception_details, /*profile=*/nullptr); - ExpectValidChooserExceptionObject(exception, - /*chooser_type=*/kUsbChooserGroupName, - /*display_name=*/kObjectName, - chooser_object); + ExpectValidChooserExceptionObject( + exception, + /*expected_chooser_type=*/kUsbChooserGroupName, + /*expected_display_name=*/kObjectName, chooser_object); // The set sorts the sites by origin, but the CreateChooserExceptionObject // method sorts the sites further by the source. Therefore, policy granted @@ -1599,8 +1599,8 @@ /*chooser_exception_details=*/exception_details, /*profile=*/profile()); ExpectValidChooserExceptionObject( - exception, /*chooser_type=*/kUsbChooserGroupName, - /*display_name=*/kObjectName, chooser_object); + exception, /*expected_chooser_type=*/kUsbChooserGroupName, + /*expected_display_name=*/kObjectName, chooser_object); const auto& sites_list = exception.Find(kSites)->GetList(); ExpectValidSiteExceptionObject(
diff --git a/chrome/browser/ui/webui/signin/login_ui_service_unittest.cc b/chrome/browser/ui/webui/signin/login_ui_service_unittest.cc index aa2a4b84d..089ef16 100644 --- a/chrome/browser/ui/webui/signin/login_ui_service_unittest.cc +++ b/chrome/browser/ui/webui/signin/login_ui_service_unittest.cc
@@ -62,7 +62,7 @@ class TestLoginUI : public LoginUIService::LoginUI { public: - TestLoginUI() {} + TestLoginUI() = default; TestLoginUI(const TestLoginUI&) = delete; TestLoginUI& operator=(const TestLoginUI&) = delete;
diff --git a/chrome/browser/ui/webui/signin/login_ui_test_utils.cc b/chrome/browser/ui/webui/signin/login_ui_test_utils.cc index cf0c6af6..a200a48 100644 --- a/chrome/browser/ui/webui/signin/login_ui_test_utils.cc +++ b/chrome/browser/ui/webui/signin/login_ui_test_utils.cc
@@ -54,7 +54,7 @@ // success or failure notification is fired. class SignInObserver : public signin::IdentityManager::Observer { public: - SignInObserver() : seen_(false), running_(false), signed_in_(false) {} + SignInObserver() = default; // Returns whether a GoogleSigninSucceeded event has happened. bool DidSignIn() { return signed_in_; } @@ -110,11 +110,11 @@ private: // Bool to mark an observed event as seen prior to calling Wait(), used to // prevent the observer from blocking. - bool seen_; + bool seen_ = false; // True is the message loop runner is running. - bool running_; + bool running_ = false; // True if a GoogleSigninSucceeded event has been observed. - bool signed_in_; + bool signed_in_ = false; scoped_refptr<MessageLoopRunner> message_loop_runner_; };
diff --git a/chrome/browser/ui/webui/signin/sync_confirmation_handler_unittest.cc b/chrome/browser/ui/webui/signin/sync_confirmation_handler_unittest.cc index 843eaf08..4d969e1 100644 --- a/chrome/browser/ui/webui/signin/sync_confirmation_handler_unittest.cc +++ b/chrome/browser/ui/webui/signin/sync_confirmation_handler_unittest.cc
@@ -94,9 +94,7 @@ SyncConfirmationHandlerTest() : BrowserWithTestWindowTest( base::test::TaskEnvironment::TimeSource::MOCK_TIME), - did_user_explicitly_interact_(false), - on_sync_confirmation_ui_closed_called_(false), - sync_confirmation_ui_closed_result_(LoginUIService::ABORT_SYNC), + web_ui_(new content::TestWebUI) {} SyncConfirmationHandlerTest(const SyncConfirmationHandlerTest&) = delete; @@ -219,10 +217,10 @@ } protected: - bool did_user_explicitly_interact_; - bool on_sync_confirmation_ui_closed_called_; + bool did_user_explicitly_interact_ = false; + bool on_sync_confirmation_ui_closed_called_ = false; LoginUIService::SyncConfirmationUIClosedResult - sync_confirmation_ui_closed_result_; + sync_confirmation_ui_closed_result_ = LoginUIService::ABORT_SYNC; // Holds information for the account currently logged in. AccountInfo account_info_; base::HistogramTester histogram_tester_;
diff --git a/chrome/browser/ui/webui/support_tool/support_tool_ui.cc b/chrome/browser/ui/webui/support_tool/support_tool_ui.cc index 9a4d871..96a26a19 100644 --- a/chrome/browser/ui/webui/support_tool/support_tool_ui.cc +++ b/chrome/browser/ui/webui/support_tool/support_tool_ui.cc
@@ -413,7 +413,7 @@ /*file_types=*/&file_types, /*file_type_index=*/0, /*default_extension=*/base::FilePath::StringType(), owning_window, - /*params=*/nullptr); + /*caller=*/nullptr); } void SupportToolMessageHandler::FileSelected(const ui::SelectedFileInfo& file,
diff --git a/chrome/browser/ui/webui/tab_search/tab_search_page_handler.cc b/chrome/browser/ui/webui/tab_search/tab_search_page_handler.cc index 9c5d7e75..082256e 100644 --- a/chrome/browser/ui/webui/tab_search/tab_search_page_handler.cc +++ b/chrome/browser/ui/webui/tab_search/tab_search_page_handler.cc
@@ -427,7 +427,8 @@ tab_declutter_controller_->ExcludeFromDuplicateTabs(url.GetWithoutRef()); - auto tabs = duplicate_tabs_[url.GetWithoutRef()]; + std::vector<tabs::TabInterface*> tabs = duplicate_tabs_[url.GetWithoutRef()]; + for (tabs::TabInterface* tab : tabs) { RemoveDuplicateTab(tab); } @@ -506,7 +507,7 @@ web_contents, base::BindRepeating( [](TabSearchPageHandler* handler, tabs::TabInterface* tab) { - handler->RemoveDuplicateTab(tab, true); + handler->RemoveDuplicateTab(tab); handler->page_->UnusedTabsChanged(handler->GetMojoUnusedTabs()); }, base::Unretained(this), tab)); @@ -538,41 +539,34 @@ inactive_tab_subscriptions_map_.erase(tab); } -void TabSearchPageHandler::RemoveDuplicateTab(tabs::TabInterface* tab, - bool url_changed) { +void TabSearchPageHandler::RemoveDuplicateTab(tabs::TabInterface* tab) { CHECK(tab); - CHECK(duplicate_tab_subscriptions_map_.find(tab) != - duplicate_tab_subscriptions_map_.end()); - GURL tab_url; + for (auto& [duplicate_url, duplicate_tab_list] : duplicate_tabs_) { + auto found_it = base::ranges::find(duplicate_tab_list, tab); + if (found_it != duplicate_tab_list.end()) { + // Remove the specific tab from `duplicate_tabs_` and subscription maps. + duplicate_tab_list.erase(found_it); + duplicate_tab_subscriptions_map_.erase(tab); + duplicate_tab_webcontents_observers_.erase(tab); - if (url_changed) { - for (const auto& [url, tabs] : duplicate_tabs_) { - if (std::find(tabs.begin(), tabs.end(), tab) != tabs.end()) { - tab_url = url; - break; + // If there is only one more element remove it as having one entry is + // equivalent to having no duplicate items. + if (duplicate_tab_list.size() == 1) { + tabs::TabInterface* last_tab = duplicate_tab_list.front(); + duplicate_tab_subscriptions_map_.erase(last_tab); + duplicate_tab_webcontents_observers_.erase(last_tab); + duplicate_tab_list.clear(); } + + // If the list is now empty, remove it from `duplicate_tabs_`. + if (duplicate_tab_list.empty()) { + duplicate_tabs_.erase(duplicate_url); + } + + return; } - } else { - tab_url = tab->GetContents()->GetLastCommittedURL().GetWithoutRef(); - CHECK(duplicate_tabs_.find(tab_url) != duplicate_tabs_.end()); } - - CHECK(tab_url.is_valid()); - - auto& tabs = duplicate_tabs_[tab_url]; - auto tab_iter = std::find(tabs.begin(), tabs.end(), tab); - - CHECK(tab_iter != tabs.end()); - tabs.erase(tab_iter); - - if (tabs.empty()) { - duplicate_tabs_.erase(tab_url); - } - - // Unregister the subscriptions for this TabInterface - duplicate_tab_subscriptions_map_.erase(tab); - duplicate_tab_webcontents_observers_.erase(tab); } void TabSearchPageHandler::BrowserWindowInterfaceChanged() {
diff --git a/chrome/browser/ui/webui/tab_search/tab_search_page_handler.h b/chrome/browser/ui/webui/tab_search/tab_search_page_handler.h index 76f326c..7c90522 100644 --- a/chrome/browser/ui/webui/tab_search/tab_search_page_handler.h +++ b/chrome/browser/ui/webui/tab_search/tab_search_page_handler.h
@@ -306,7 +306,13 @@ UnusedTabType type); void RemoveStaleTab(tabs::TabInterface* tab); - void RemoveDuplicateTab(tabs::TabInterface* tab, bool url_changed = false); + + // Removes a tab from the duplicate tab list, along with its associated + // subscriptions and observations. If the duplicate list for the tab's URL + // contains only one remaining tab after removal, that tab is also removed, + // and the list is erased from the map. If the tab is not found, the method + // exits without performing any action. + void RemoveDuplicateTab(tabs::TabInterface* tab); // Called when the browser window context for this WebUI has changed. void BrowserWindowInterfaceChanged();
diff --git a/chrome/browser/ui/webui/theme_source.cc b/chrome/browser/ui/webui/theme_source.cc index c3e9480e..5f6d0caf 100644 --- a/chrome/browser/ui/webui/theme_source.cc +++ b/chrome/browser/ui/webui/theme_source.cc
@@ -249,12 +249,12 @@ std::optional<std::vector<uint8_t>> result = gfx::PNGCodec::EncodeBGRASkBitmap(rep.GetBitmap(), /*discard_transparency=*/false); - if (!result) { + if (result) { + std::move(callback).Run( + base::MakeRefCounted<base::RefCountedBytes>(std::move(result.value()))); + } else { std::move(callback).Run(base::MakeRefCounted<base::RefCountedBytes>()); } - - std::move(callback).Run( - base::MakeRefCounted<base::RefCountedBytes>(std::move(result.value()))); } void ThemeSource::SendColorsCss(
diff --git a/chrome/browser/ui/webui/theme_source_unittest.cc b/chrome/browser/ui/webui/theme_source_unittest.cc index d2ca8f2b..6f40c27 100644 --- a/chrome/browser/ui/webui/theme_source_unittest.cc +++ b/chrome/browser/ui/webui/theme_source_unittest.cc
@@ -26,7 +26,7 @@ class WebUISourcesTest : public testing::Test { public: - WebUISourcesTest() : result_data_size_(0) {} + WebUISourcesTest() = default; TestingProfile* profile() const { return profile_.get(); } ThemeSource* theme_source() const { return theme_source_.get(); } @@ -41,7 +41,7 @@ base::Unretained(this))); } - size_t result_data_size_; + size_t result_data_size_ = 0; private: void SetUp() override {
diff --git a/chrome/browser/ui/webui/user_education_internals/user_education_internals_page_handler_impl.cc b/chrome/browser/ui/webui/user_education_internals/user_education_internals_page_handler_impl.cc index a7bf88c..98984d3 100644 --- a/chrome/browser/ui/webui/user_education_internals/user_education_internals_page_handler_impl.cc +++ b/chrome/browser/ui/webui/user_education_internals/user_education_internals_page_handler_impl.cc
@@ -662,6 +662,7 @@ feature_engagement::TrackerFactory::GetForBrowserContext(profile_); if (!tracker || !tracker->IsInitialized()) { std::move(callback).Run(std::string("Feature Engagement not ready.")); + return; } auto* const storage_service = GetStorageService(profile_);
diff --git a/chrome/browser/ui/webui/version/version_ui.cc b/chrome/browser/ui/webui/version/version_ui.cc index 57ccd5e9d..e464e50 100644 --- a/chrome/browser/ui/webui/version/version_ui.cc +++ b/chrome/browser/ui/webui/version/version_ui.cc
@@ -269,8 +269,8 @@ std::string command_line; typedef std::vector<std::string> ArgvList; const ArgvList& argv = base::CommandLine::ForCurrentProcess()->argv(); - for (auto iter = argv.begin(); iter != argv.end(); iter++) { - command_line += " " + *iter; + for (const auto& iter : argv) { + command_line += " " + iter; } // TODO(viettrungluu): |command_line| could really have any encoding, whereas // below we assumes it's UTF-8.
diff --git a/chrome/build/android-arm32.pgo.txt b/chrome/build/android-arm32.pgo.txt index 7eaf475..4cb21d2 100644 --- a/chrome/build/android-arm32.pgo.txt +++ b/chrome/build/android-arm32.pgo.txt
@@ -1 +1 @@ -chrome-android32-main-1735840793-31caf47e5a38cba6737b8c405842713bb00c66bf-797b874f30e5951ec0056a2284e7c29e852ccfcf.profdata +chrome-android32-main-1735862258-8444d10d2d642090d10ed51ce92537f24e010ab7-0af7085e84f0433b925b1524f298f4791ecf7405.profdata
diff --git a/chrome/build/android-arm64.pgo.txt b/chrome/build/android-arm64.pgo.txt index 14230a8..b0caab6a 100644 --- a/chrome/build/android-arm64.pgo.txt +++ b/chrome/build/android-arm64.pgo.txt
@@ -1 +1 @@ -chrome-android64-main-1735848304-2abed4a07638002a7bab58ee73b22c9e4c99b0e1-e783032573ca03d90480f52ba1840407ca2e4d50.profdata +chrome-android64-main-1735880505-56896fb8311bf7687e262eb38b4ec93726ad9d9e-42eedcc0a761a80230f97914bf5a3f800b7e2b22.profdata
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index 61ea445..f3e6c20 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-main-1735840793-f776ebef82098951020cf05169fcd31e19ad9bb0-797b874f30e5951ec0056a2284e7c29e852ccfcf.profdata +chrome-linux-main-1735862258-ad57545b165f75bd581c82c15dbb95c73c8e4b62-0af7085e84f0433b925b1524f298f4791ecf7405.profdata
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt index 73b61a9..1f51a8f 100644 --- a/chrome/build/mac-arm.pgo.txt +++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@ -chrome-mac-arm-main-1735840793-f28c63861fb85bee3484ed2849ced46bb0a76ecb-797b874f30e5951ec0056a2284e7c29e852ccfcf.profdata +chrome-mac-arm-main-1735862258-55d113aee614b1ccd198ba10bd6aa71c270c312e-0af7085e84f0433b925b1524f298f4791ecf7405.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index ff6a8a9..7b058ac 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-main-1735840793-a8f137e9775199315ed5d5235c5b0f5a1d91375b-797b874f30e5951ec0056a2284e7c29e852ccfcf.profdata +chrome-mac-main-1735862258-b686787520184bd5b2f8296186f929cdb306ecd1-0af7085e84f0433b925b1524f298f4791ecf7405.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index 41ee12a3..059401fa 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-main-1735818720-7c93113697fabce4ae0f495196730c619850546e-5bf4d88ca251c22931064af72a88452bb3918d1d.profdata +chrome-win32-main-1735862258-a7a0e3998d7da7f37dafb10ed09a09452e21bcb9-0af7085e84f0433b925b1524f298f4791ecf7405.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index f5621104..2414cdd7 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-main-1735818720-2b42f684703e98b591fc7a11a0cafca855bc5911-5bf4d88ca251c22931064af72a88452bb3918d1d.profdata +chrome-win64-main-1735862258-ce4ff1c0dc0a3c68423849b645eb3e3da9420adb-0af7085e84f0433b925b1524f298f4791ecf7405.profdata
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h index 810923c..0597746 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h
@@ -2394,6 +2394,10 @@ // Dictionary of number of times the user has interacted with a module. inline constexpr char kNtpModulesInteractedCountDict[] = "NewTabPage.ModulesInteractedCountDict"; +// The next time a user's Outlook calendar data can be requested after hitting a +// throttling error. +inline constexpr char kNtpOutlookCalendarRetryAfterTime[] = + "NewTabPage.OutlookCalendar.RetryAfterTime"; // Whether NTP Outlook Calendar module is visible. inline constexpr char kNtpOutlookModuleVisible[] = "NewTabPage.OutlookModuleVisible";
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 955387d5..5ed331ab 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -2471,6 +2471,9 @@ "//chrome/browser/glic/launcher:browser_tests", ] } + if (enable_glic) { + deps += [ "//chrome/browser/ui/views/glic/border:browser_tests" ] + } allow_circular_includes_from = [ "//chrome/browser/optimization_guide:browser_tests" ] @@ -10810,10 +10813,6 @@ "//ui/web_dialogs:test_support", ] - if (enable_glic) { - deps += [ "//chrome/browser/ui/views/glic/border:interactive_ui_tests" ] - } - if (!is_chrome_for_testing) { deps += [ "//chrome/browser/search_engine_choice",
diff --git a/chrome/test/data/browsing_topics/topics-writable-pixel.png b/chrome/test/data/browsing_topics/topics-writable-pixel.png deleted file mode 100644 index 818c71d..0000000 --- a/chrome/test/data/browsing_topics/topics-writable-pixel.png +++ /dev/null Binary files differ
diff --git a/chrome/test/data/browsing_topics/topics-writable-pixel.png.mock-http-headers b/chrome/test/data/browsing_topics/topics-writable-pixel.png.mock-http-headers deleted file mode 100644 index 90c64ce3..0000000 --- a/chrome/test/data/browsing_topics/topics-writable-pixel.png.mock-http-headers +++ /dev/null
@@ -1,4 +0,0 @@ -HTTP/1.1 {{STATUS}} -Access-Control-Allow-Origin: * -{{OBSERVE_BROWSING_TOPICS_HEADER}} -{{REDIRECT_HEADER}}
diff --git a/chrome/test/data/browsing_topics/topics-writable-pixel2.png b/chrome/test/data/browsing_topics/topics-writable-pixel2.png deleted file mode 100644 index 818c71d..0000000 --- a/chrome/test/data/browsing_topics/topics-writable-pixel2.png +++ /dev/null Binary files differ
diff --git a/chrome/test/data/browsing_topics/topics-writable-pixel2.png.mock-http-headers b/chrome/test/data/browsing_topics/topics-writable-pixel2.png.mock-http-headers deleted file mode 100644 index 90c64ce3..0000000 --- a/chrome/test/data/browsing_topics/topics-writable-pixel2.png.mock-http-headers +++ /dev/null
@@ -1,4 +0,0 @@ -HTTP/1.1 {{STATUS}} -Access-Control-Allow-Origin: * -{{OBSERVE_BROWSING_TOPICS_HEADER}} -{{REDIRECT_HEADER}}
diff --git a/chrome/test/data/extensions/api_test/content_scripts/large_scripts/worker.js b/chrome/test/data/extensions/api_test/content_scripts/large_scripts/worker.js index 1123c105..8881193 100644 --- a/chrome/test/data/extensions/api_test/content_scripts/large_scripts/worker.js +++ b/chrome/test/data/extensions/api_test/content_scripts/large_scripts/worker.js
@@ -2,14 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import {openTab} from '/_test_resources/test_util/tabs_util.js'; - -function getInjectedElementIds() { - let childIds = []; - for (const child of document.body.children) - childIds.push(child.id); - return childIds.sort(); -}; +import {getInjectedElementIds, openTab} from '/_test_resources/test_util/tabs_util.js'; chrome.test.runTests([ async function checkContentScriptInjectionResults() { @@ -26,14 +19,10 @@ const title = await getTitleForTab(tab.id); chrome.test.assertEq('I CHANGED TITLE!!!', title); - let results = await chrome.scripting.executeScript( - {target: {tabId: tab.id}, func: getInjectedElementIds}); - // Only inject_element_1.js and change_title.js should be loaded/injected as // big.js exceeds the individual script size limit, and loading // inject_element_2.js would exceed the extension's total script size limit. - chrome.test.assertEq(1, results.length); - chrome.test.assertEq(['injected'], results[0].result); + chrome.test.assertEq(['injected'], await getInjectedElementIds(tab.id)); chrome.test.succeed(); },
diff --git a/chrome/test/data/extensions/api_test/scripting/css_injection/manifest.json b/chrome/test/data/extensions/api_test/scripting/css_injection/manifest.json index 4cb9f68..400d8d8 100644 --- a/chrome/test/data/extensions/api_test/scripting/css_injection/manifest.json +++ b/chrome/test/data/extensions/api_test/scripting/css_injection/manifest.json
@@ -3,7 +3,10 @@ "manifest_version": 3, "version": "0.1", "permissions": ["scripting", "tabs", "webNavigation"], - "background": {"service_worker": "worker.js"}, + "background": { + "service_worker": "worker.js", + "type": "module" + }, "host_permissions": [ "http://example.com/*", "http://subframes.example/*",
diff --git a/chrome/test/data/extensions/api_test/scripting/css_injection/worker.js b/chrome/test/data/extensions/api_test/scripting/css_injection/worker.js index e3a516e..0b6cdd6 100644 --- a/chrome/test/data/extensions/api_test/scripting/css_injection/worker.js +++ b/chrome/test/data/extensions/api_test/scripting/css_injection/worker.js
@@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import {getSingleTab} from '/_test_resources/test_util/tabs_util.js'; + const CSS_GREEN = 'body { background-color: green !important }'; const GREEN = 'rgb(0, 128, 0)'; const CSS_RED = 'body { background-color: red !important }'; @@ -17,12 +19,6 @@ return hostname + ' ' + getComputedStyle(document.body).backgroundColor; } -async function getSingleTab(query) { - const tabs = await chrome.tabs.query(query); - chrome.test.assertEq(1, tabs.length); - return tabs[0]; -} - async function getBodyColorsForTab(tabId) { const results = await chrome.scripting.executeScript({ target: {
diff --git a/chrome/test/data/extensions/api_test/scripting/dynamic_scripts_size_limits/worker.js b/chrome/test/data/extensions/api_test/scripting/dynamic_scripts_size_limits/worker.js index ffc2848..89d42e0 100644 --- a/chrome/test/data/extensions/api_test/scripting/dynamic_scripts_size_limits/worker.js +++ b/chrome/test/data/extensions/api_test/scripting/dynamic_scripts_size_limits/worker.js
@@ -2,14 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import {openTab} from '/_test_resources/test_util/tabs_util.js'; - -function getInjectedElementIds() { - let childIds = []; - for (const child of document.body.children) - childIds.push(child.id); - return childIds.sort(); -}; +import {getInjectedElementIds, openTab} from '/_test_resources/test_util/tabs_util.js'; function getFileTooLargeError(fileName) { return `Error: Scripts could not be loaded because '${fileName}' exceeds ` + @@ -97,12 +90,10 @@ const config = await chrome.test.getConfig(); const url = `http://example.com:${config.testServer.port}/simple.html`; let tab = await openTab(url); - let results = await chrome.scripting.executeScript( - {target: {tabId: tab.id}, func: getInjectedElementIds}); - chrome.test.assertEq(1, results.length); chrome.test.assertEq( - ['dynamic-1', 'dynamic-2', 'manifest'], results[0].result); + ['dynamic-1', 'dynamic-2', 'manifest'], + await getInjectedElementIds(tab.id)); const registeredScripts = await chrome.scripting.getRegisteredContentScripts(); chrome.test.assertEq(1, registeredScripts.length);
diff --git a/chrome/test/data/extensions/api_test/scripting/dynamic_user_scripts/worker.js b/chrome/test/data/extensions/api_test/scripting/dynamic_user_scripts/worker.js index 58d638c..3733eda 100644 --- a/chrome/test/data/extensions/api_test/scripting/dynamic_user_scripts/worker.js +++ b/chrome/test/data/extensions/api_test/scripting/dynamic_user_scripts/worker.js
@@ -2,14 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import {openTab} from '/_test_resources/test_util/tabs_util.js'; - -function getInjectedElementIds() { - let childIds = []; - for (const child of document.body.children) - childIds.push(child.id); - return childIds.sort(); -}; +import {getInjectedElementIds, openTab} from '/_test_resources/test_util/tabs_util.js'; chrome.test.runTests([ // Test that unregisterContentScripts unregisters only content scripts and @@ -39,13 +32,11 @@ const config = await chrome.test.getConfig(); const url = `http://hostperms.com:${config.testServer.port}/simple.html`; let tab = await openTab(url); - let results = await chrome.scripting.executeScript( - {target: {tabId: tab.id}, func: getInjectedElementIds}); // Both content and user scripts should be injected. - chrome.test.assertEq(1, results.length); chrome.test.assertEq( - ['injected_content_script', 'injected_user_script'], results[0].result); + ['injected_content_script', 'injected_user_script'], + await getInjectedElementIds(tab.id)); // Try to unregister user script's id using the scripting API. It should // fail because it's not a content script. @@ -62,11 +53,9 @@ // Re-navigate to the requested url, and verify both scripts are injected. tab = await openTab(url); - results = await chrome.scripting.executeScript( - {target: {tabId: tab.id}, func: getInjectedElementIds}); - chrome.test.assertEq(1, results.length); chrome.test.assertEq( - ['injected_content_script', 'injected_user_script'], results[0].result); + ['injected_content_script', 'injected_user_script'], + await getInjectedElementIds(tab.id)); // Unregister all content scripts using the scripting API. await chrome.scripting.unregisterContentScripts(); @@ -81,10 +70,8 @@ // Re-navigate to the requested url, and verify only the user script is // injected. tab = await openTab(url); - results = await chrome.scripting.executeScript( - {target: {tabId: tab.id}, func: getInjectedElementIds}); - chrome.test.assertEq(1, results.length); - chrome.test.assertEq(['injected_user_script'], results[0].result); + chrome.test.assertEq( + ['injected_user_script'], await getInjectedElementIds(tab.id)); chrome.test.succeed(); },
diff --git a/chrome/test/data/extensions/api_test/scripting/execute_script_size_limit/worker.js b/chrome/test/data/extensions/api_test/scripting/execute_script_size_limit/worker.js index 10de512..add8ff5 100644 --- a/chrome/test/data/extensions/api_test/scripting/execute_script_size_limit/worker.js +++ b/chrome/test/data/extensions/api_test/scripting/execute_script_size_limit/worker.js
@@ -2,14 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import {openTab} from '/_test_resources/test_util/tabs_util.js'; - -function getInjectedElementIds() { - let childIds = []; - for (const child of document.body.children) - childIds.push(child.id); - return childIds.sort(); -}; +import {getInjectedElementIds, openTab} from '/_test_resources/test_util/tabs_util.js'; function getFileTooLargeError(fileName) { return `Error: Could not load file: '${fileName}'. Resource size exceeded.`; @@ -29,10 +22,7 @@ {target: {tabId: tab.id}, files: ['big.js']}), getFileTooLargeError('big.js')); - let results = await chrome.scripting.executeScript( - {target: {tabId: tab.id}, func: getInjectedElementIds}); - chrome.test.assertEq(1, results.length); - chrome.test.assertEq(['small'], results[0].result); + chrome.test.assertEq(['small'], await getInjectedElementIds(tab.id)); chrome.test.succeed(); }, @@ -52,10 +42,7 @@ // If an executeScript() call exceeds the script size limit, the call should // be a no-op. - let results = await chrome.scripting.executeScript( - {target: {tabId: tab.id}, func: getInjectedElementIds}); - chrome.test.assertEq(1, results.length); - chrome.test.assertEq(['medium'], results[0].result); + chrome.test.assertEq(['medium'], await getInjectedElementIds(tab.id)); chrome.test.succeed(); },
diff --git a/chrome/test/data/extensions/api_test/scripting/main_frame/manifest.json b/chrome/test/data/extensions/api_test/scripting/main_frame/manifest.json index 72e793a7..dfc55ef5 100644 --- a/chrome/test/data/extensions/api_test/scripting/main_frame/manifest.json +++ b/chrome/test/data/extensions/api_test/scripting/main_frame/manifest.json
@@ -3,6 +3,9 @@ "manifest_version": 3, "version": "0.1", "permissions": ["scripting", "tabs"], - "background": {"service_worker": "worker.js"}, + "background": { + "service_worker": "worker.js", + "type": "module" + }, "host_permissions": ["http://example.com/*"] }
diff --git a/chrome/test/data/extensions/api_test/scripting/main_frame/worker.js b/chrome/test/data/extensions/api_test/scripting/main_frame/worker.js index 11eb286..e1024c6 100644 --- a/chrome/test/data/extensions/api_test/scripting/main_frame/worker.js +++ b/chrome/test/data/extensions/api_test/scripting/main_frame/worker.js
@@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import {getSingleTab} from '/_test_resources/test_util/tabs_util.js'; + const NEW_TITLE_FROM_FUNCTION = 'Hello, world!'; const NEW_TITLE_FROM_FILE = 'Goodnight'; @@ -35,14 +37,6 @@ }; } -async function getSingleTab(query) { - const tabs = await new Promise(resolve => { - chrome.tabs.query(query, resolve); - }); - chrome.test.assertEq(1, tabs.length); - return tabs[0]; -} - chrome.test.runTests([ async function changeTitleFromFunction() { const query = {url: 'http://example.com/*'};
diff --git a/chrome/test/data/extensions/api_test/scripting/nested_web_contents/manifest.json b/chrome/test/data/extensions/api_test/scripting/nested_web_contents/manifest.json index 1ee28c4..4b32740 100644 --- a/chrome/test/data/extensions/api_test/scripting/nested_web_contents/manifest.json +++ b/chrome/test/data/extensions/api_test/scripting/nested_web_contents/manifest.json
@@ -3,6 +3,9 @@ "manifest_version": 3, "version": "0.1", "permissions": ["scripting", "tabs", "webNavigation"], - "background": {"service_worker": "worker.js"}, + "background": { + "service_worker": "worker.js", + "type": "module" + }, "host_permissions": ["http://a.com/*", "http://b.com/*"] }
diff --git a/chrome/test/data/extensions/api_test/scripting/nested_web_contents/worker.js b/chrome/test/data/extensions/api_test/scripting/nested_web_contents/worker.js index 935cce0..aee49d190 100644 --- a/chrome/test/data/extensions/api_test/scripting/nested_web_contents/worker.js +++ b/chrome/test/data/extensions/api_test/scripting/nested_web_contents/worker.js
@@ -2,17 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import {getSingleTab} from '/_test_resources/test_util/tabs_util.js'; + function injectedFunction() { return location.pathname; } -// Returns the single tab matching the given `query`. -async function getSingleTab(query) { - const tabs = await chrome.tabs.query(query); - chrome.test.assertEq(1, tabs.length); - return tabs[0]; -} - chrome.test.runTests([ async function nestedWebContents() { const query = {url: 'http://a.com/*'};
diff --git a/chrome/test/data/extensions/api_test/scripting/pdf/manifest.json b/chrome/test/data/extensions/api_test/scripting/pdf/manifest.json index 8e627aa..23560edd 100644 --- a/chrome/test/data/extensions/api_test/scripting/pdf/manifest.json +++ b/chrome/test/data/extensions/api_test/scripting/pdf/manifest.json
@@ -3,6 +3,9 @@ "manifest_version": 3, "version": "0.1", "permissions": ["scripting", "tabs", "webNavigation"], - "background": {"service_worker": "worker.js"}, + "background": { + "service_worker": "worker.js", + "type": "module" + }, "host_permissions": ["http://a.com/*"] }
diff --git a/chrome/test/data/extensions/api_test/scripting/pdf/worker.js b/chrome/test/data/extensions/api_test/scripting/pdf/worker.js index f9da746..fa7ced3 100644 --- a/chrome/test/data/extensions/api_test/scripting/pdf/worker.js +++ b/chrome/test/data/extensions/api_test/scripting/pdf/worker.js
@@ -2,17 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import {getSingleTab} from '/_test_resources/test_util/tabs_util.js'; + function injectedFunction() { return location.pathname; } -// Returns the single tab matching the given `query`. -async function getSingleTab(query) { - const tabs = await chrome.tabs.query(query); - chrome.test.assertEq(1, tabs.length); - return tabs[0]; -} - chrome.test.runTests([ async function injectingInPdfContentFramesIsDisallowed() { const query = {url: 'http://a.com/*'};
diff --git a/chrome/test/data/extensions/api_test/scripting/persistent_dynamic_scripts/worker.js b/chrome/test/data/extensions/api_test/scripting/persistent_dynamic_scripts/worker.js index 8bb0a18..21f240fe 100644 --- a/chrome/test/data/extensions/api_test/scripting/persistent_dynamic_scripts/worker.js +++ b/chrome/test/data/extensions/api_test/scripting/persistent_dynamic_scripts/worker.js
@@ -2,17 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import {openTab} from '/_test_resources/test_util/tabs_util.js'; - -async function getInjectedElementIds() { - // We use a setTimeout to ensure any other scripts also injected at - // `document_idle` have a chance to run. - await new Promise(resolve => { setTimeout(resolve, 0); }); - let childIds = []; - for (const child of document.body.children) - childIds.push(child.id); - return childIds.sort(); -}; +import {getInjectedElementIds, openTab} from '/_test_resources/test_util/tabs_util.js'; // For the first session, register one persistent script and one session script. async function runFirstSession() { @@ -54,12 +44,9 @@ const url = `http://hostperms.com:${config.testServer.port}/simple.html`; let tab = await openTab(url); - let results = await chrome.scripting.executeScript( - {target: {tabId: tab.id}, func: getInjectedElementIds}); - - chrome.test.assertEq(1, results.length); - chrome.test.assertEq(['injected', 'injected_2', 'injected_3'], - results[0].result); + chrome.test.assertEq( + ['injected', 'injected_2', 'injected_3'], + await getInjectedElementIds(tab.id)); chrome.test.succeed(); } @@ -101,11 +88,8 @@ const url = `http://hostperms.com:${config.testServer.port}/simple.html`; let tab = await openTab(url); - let results = await chrome.scripting.executeScript( - {target: {tabId: tab.id}, func: getInjectedElementIds}); - - chrome.test.assertEq(1, results.length); - chrome.test.assertEq(['injected', 'injected_2'], results[0].result); + chrome.test.assertEq( + ['injected', 'injected_2'], await getInjectedElementIds(tab.id)); await chrome.scripting.unregisterContentScripts(); @@ -161,11 +145,7 @@ const config = await chrome.test.getConfig(); const url = `http://hostperms.com:${config.testServer.port}/simple.html`; let tab = await openTab(url); - let results = await chrome.scripting.executeScript( - {target: {tabId: tab.id}, func: getInjectedElementIds}); - - chrome.test.assertEq(1, results.length); - chrome.test.assertEq(['injected_3'], results[0].result); + chrome.test.assertEq(['injected_3'], await getInjectedElementIds(tab.id)); chrome.test.succeed(); }
diff --git a/chrome/test/data/extensions/api_test/scripting/sub_frames/manifest.json b/chrome/test/data/extensions/api_test/scripting/sub_frames/manifest.json index 1ee28c4..4b32740 100644 --- a/chrome/test/data/extensions/api_test/scripting/sub_frames/manifest.json +++ b/chrome/test/data/extensions/api_test/scripting/sub_frames/manifest.json
@@ -3,6 +3,9 @@ "manifest_version": 3, "version": "0.1", "permissions": ["scripting", "tabs", "webNavigation"], - "background": {"service_worker": "worker.js"}, + "background": { + "service_worker": "worker.js", + "type": "module" + }, "host_permissions": ["http://a.com/*", "http://b.com/*"] }
diff --git a/chrome/test/data/extensions/api_test/scripting/sub_frames/worker.js b/chrome/test/data/extensions/api_test/scripting/sub_frames/worker.js index be9b6a6..94459d7 100644 --- a/chrome/test/data/extensions/api_test/scripting/sub_frames/worker.js +++ b/chrome/test/data/extensions/api_test/scripting/sub_frames/worker.js
@@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import {getSingleTab} from '/_test_resources/test_util/tabs_util.js'; + function injectedFunction() { return location.href; } @@ -14,13 +16,6 @@ 'to access this host.'; } -// Returns the single tab matching the given `query`. -async function getSingleTab(query) { - const tabs = await chrome.tabs.query(query); - chrome.test.assertEq(1, tabs.length); - return tabs[0]; -} - // Returns all frames in the given tab. async function getFramesInTab(tabId) { const frames = await chrome.webNavigation.getAllFrames({tabId: tabId});
diff --git a/chrome/test/data/extensions/api_test/user_scripts/update/worker.js b/chrome/test/data/extensions/api_test/user_scripts/update/worker.js index 3bedcb8..8611538 100644 --- a/chrome/test/data/extensions/api_test/user_scripts/update/worker.js +++ b/chrome/test/data/extensions/api_test/user_scripts/update/worker.js
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import {openTab} from '/_test_resources/test_util/tabs_util.js'; +import {getInjectedElementIds, openTab} from '/_test_resources/test_util/tabs_util.js'; // Navigates to an url requested by the extension and returns the opened tab. async function navigateToRequestedUrl() { @@ -12,21 +12,6 @@ return tab; } -// Returns the injected element ids in `tabId`. -async function getInjectedElementIds(tabId) { - let injectedElements = await chrome.scripting.executeScript({ - target: {tabId: tabId}, - func: () => { - let childIds = []; - for (const child of document.body.children) - childIds.push(child.id); - return childIds.sort(); - } - }); - chrome.test.assertEq(1, injectedElements.length); - return injectedElements[0].result; -}; - chrome.test.runTests([ // Test that an error is returned when any of the script IDs specified in // userScripts.update do not match any registered user script, and that
diff --git a/chrome/test/data/extensions/test_util/tabs_util.js b/chrome/test/data/extensions/test_util/tabs_util.js index 169f40f..0d41ae0 100644 --- a/chrome/test/data/extensions/test_util/tabs_util.js +++ b/chrome/test/data/extensions/test_util/tabs_util.js
@@ -42,6 +42,17 @@ } /** + * Returns the single tab matching the given `query`. + * @param {Object} query + * @return {chrome.tabs.Tab} + */ +export async function getSingleTab(query) { + const tabs = await chrome.tabs.query(query); + chrome.test.assertEq(1, tabs.length); + return tabs[0]; +} + +/** * Returns the injected element ids in `tabId`. * @param {string} tabId * @return {string[]}
diff --git a/chrome/test/data/webui/chromeos/personalization_app/sea_pen_controller_test.ts b/chrome/test/data/webui/chromeos/personalization_app/sea_pen_controller_test.ts index d28bafb3..5463860 100644 --- a/chrome/test/data/webui/chromeos/personalization_app/sea_pen_controller_test.ts +++ b/chrome/test/data/webui/chromeos/personalization_app/sea_pen_controller_test.ts
@@ -97,6 +97,7 @@ pendingSelected: null, currentSelected: null, shouldShowSeaPenIntroductionDialog: false, + shouldShowSeaPenFreeformIntroductionDialog: false, error: null, textQueryHistory: null, }), @@ -118,6 +119,7 @@ pendingSelected: null, currentSelected: null, shouldShowSeaPenIntroductionDialog: false, + shouldShowSeaPenFreeformIntroductionDialog: false, error: null, textQueryHistory: null, }), @@ -139,6 +141,7 @@ pendingSelected: null, currentSelected: null, shouldShowSeaPenIntroductionDialog: false, + shouldShowSeaPenFreeformIntroductionDialog: false, error: null, textQueryHistory: null, }), @@ -160,6 +163,7 @@ pendingSelected: null, currentSelected: null, shouldShowSeaPenIntroductionDialog: false, + shouldShowSeaPenFreeformIntroductionDialog: false, error: null, textQueryHistory: null, }),
diff --git a/chrome/test/data/webui/chromeos/personalization_app/sea_pen_router_element_test.ts b/chrome/test/data/webui/chromeos/personalization_app/sea_pen_router_element_test.ts index 88e49a6..63dfe21 100644 --- a/chrome/test/data/webui/chromeos/personalization_app/sea_pen_router_element_test.ts +++ b/chrome/test/data/webui/chromeos/personalization_app/sea_pen_router_element_test.ts
@@ -364,6 +364,157 @@ 'path remains the same'); }); + test( + 'shows introduction dialog for freeform if user never accepted any terms', + async () => { + loadTimeData.overrideValues({isSeaPenTextInputEnabled: true}); + personalizationStore.setReducersEnabled(true); + routerElement = initElement(SeaPenRouterElement, { + basePath: '/base', + }); + routerElement.goToRoute(SeaPenPaths.FREEFORM); + await waitAfterNextRender(routerElement); + + await seaPenProvider.whenCalled( + 'shouldShowSeaPenFreeformIntroductionDialog'); + await seaPenProvider.whenCalled('shouldShowSeaPenIntroductionDialog'); + await waitAfterNextRender(routerElement); + + let seaPenIntroDialog = routerElement.shadowRoot!.querySelector( + SeaPenIntroductionDialogElement.is); + assertTrue( + !!seaPenIntroDialog, 'SeaPen introduction dialog is displayed'); + + await clickSeaPenIntroDialogCloseButton(); + + seaPenIntroDialog = routerElement.shadowRoot!.querySelector( + SeaPenIntroductionDialogElement.is); + assertFalse( + !!seaPenIntroDialog, 'Sea Pen introduction dialog is closed'); + + assertTrue( + window.location.href.endsWith(SeaPenPaths.FREEFORM), + 'remains in the same Freeform page'); + }); + + test( + 'shows introduction dialog for templates if user never accepted terms', + async () => { + loadTimeData.overrideValues({isSeaPenTextInputEnabled: true}); + personalizationStore.setReducersEnabled(true); + routerElement = initElement(SeaPenRouterElement, { + basePath: '/base', + }); + routerElement.goToRoute(SeaPenPaths.TEMPLATES); + await waitAfterNextRender(routerElement); + + await seaPenProvider.whenCalled( + 'shouldShowSeaPenFreeformIntroductionDialog'); + await seaPenProvider.whenCalled('shouldShowSeaPenIntroductionDialog'); + await waitAfterNextRender(routerElement); + + let seaPenIntroDialog = routerElement.shadowRoot!.querySelector( + SeaPenIntroductionDialogElement.is); + assertTrue( + !!seaPenIntroDialog, 'SeaPen introduction dialog is displayed'); + + await clickSeaPenIntroDialogCloseButton(); + + seaPenIntroDialog = routerElement.shadowRoot!.querySelector( + SeaPenIntroductionDialogElement.is); + assertFalse( + !!seaPenIntroDialog, 'Sea Pen introduction dialog is closed'); + + assertEquals( + '/base', + routerElement.shadowRoot?.querySelector('iron-location')?.path, + 'path remains the same'); + }); + + test( + 'does not show dialog for templates if user has accepted sea pen terms', + async () => { + loadTimeData.overrideValues({isSeaPenTextInputEnabled: true}); + personalizationStore.setReducersEnabled(true); + routerElement = initElement(SeaPenRouterElement, { + basePath: '/base', + }); + routerElement.goToRoute(SeaPenPaths.TEMPLATES); + await seaPenProvider.whenCalled( + 'shouldShowSeaPenFreeformIntroductionDialog'); + await seaPenProvider.whenCalled('shouldShowSeaPenIntroductionDialog'); + + personalizationStore.data.wallpaper.seaPen + .shouldShowSeaPenIntroductionDialog = false; + personalizationStore.notifyObservers(); + await waitAfterNextRender(routerElement); + + const seaPenIntroDialog = routerElement.shadowRoot!.querySelector( + SeaPenIntroductionDialogElement.is); + assertFalse( + !!seaPenIntroDialog, 'SeaPen introduction dialog is displayed'); + }); + + test( + 'does not show dialog for templates if user has accepted freeform terms', + async () => { + loadTimeData.overrideValues({isSeaPenTextInputEnabled: true}); + personalizationStore.setReducersEnabled(true); + routerElement = initElement(SeaPenRouterElement, { + basePath: '/base', + }); + routerElement.goToRoute(SeaPenPaths.TEMPLATES); + await seaPenProvider.whenCalled( + 'shouldShowSeaPenFreeformIntroductionDialog'); + await seaPenProvider.whenCalled('shouldShowSeaPenIntroductionDialog'); + + personalizationStore.data.wallpaper.seaPen + .shouldShowSeaPenFreeformIntroductionDialog = false; + personalizationStore.notifyObservers(); + await waitAfterNextRender(routerElement); + + const seaPenIntroDialog = routerElement.shadowRoot!.querySelector( + SeaPenIntroductionDialogElement.is); + assertFalse( + !!seaPenIntroDialog, 'SeaPen introduction dialog is displayed'); + }); + + test( + 'shows intro dialog for freeform if user has accepted sea pen terms', + async () => { + loadTimeData.overrideValues({isSeaPenTextInputEnabled: true}); + personalizationStore.setReducersEnabled(true); + routerElement = initElement(SeaPenRouterElement, { + basePath: '/base', + }); + routerElement.goToRoute(SeaPenPaths.FREEFORM); + await waitAfterNextRender(routerElement); + await seaPenProvider.whenCalled( + 'shouldShowSeaPenFreeformIntroductionDialog'); + await seaPenProvider.whenCalled('shouldShowSeaPenIntroductionDialog'); + + personalizationStore.data.wallpaper.seaPen + .shouldShowSeaPenIntroductionDialog = false; + personalizationStore.notifyObservers(); + await waitAfterNextRender(routerElement); + + let seaPenIntroDialog = routerElement.shadowRoot!.querySelector( + SeaPenIntroductionDialogElement.is); + assertTrue( + !!seaPenIntroDialog, 'SeaPen introduction dialog is displayed'); + + await clickSeaPenIntroDialogCloseButton(); + + seaPenIntroDialog = routerElement.shadowRoot!.querySelector( + SeaPenIntroductionDialogElement.is); + assertFalse( + !!seaPenIntroDialog, 'Sea Pen introduction dialog is closed'); + + assertTrue( + window.location.href.endsWith(SeaPenPaths.FREEFORM), + 'remains in the same Freeform page'); + }); + test('supports transition animation', async () => { const routerElement = initElement(SeaPenRouterElement, {basePath: '/base'}); setTransitionsEnabled(true);
diff --git a/chrome/test/data/webui/chromeos/personalization_app/test_sea_pen_interface_provider.ts b/chrome/test/data/webui/chromeos/personalization_app/test_sea_pen_interface_provider.ts index 80a6f69..f6dcb74 100644 --- a/chrome/test/data/webui/chromeos/personalization_app/test_sea_pen_interface_provider.ts +++ b/chrome/test/data/webui/chromeos/personalization_app/test_sea_pen_interface_provider.ts
@@ -100,6 +100,8 @@ shouldShowSeaPenIntroductionDialogResponse = true; + shouldShowSeaPenFreeformIntroductionDialogResponse = true; + isInTabletModeResponse = false; constructor() { @@ -113,6 +115,8 @@ 'deleteRecentSeaPenImage', 'shouldShowSeaPenIntroductionDialog', 'handleSeaPenIntroductionDialogClosed', + 'shouldShowSeaPenFreeformIntroductionDialog', + 'handleSeaPenFreeformIntroductionDialogClosed', 'isInTabletMode', 'makeTransparent', ]); @@ -161,7 +165,7 @@ deleteRecentSeaPenImage(id: SeaPenImageId) { assertTrue( - isSeaPenImageId(id), `id must be SeaPenImageId but received: ${id}`); + isSeaPenImageId(id), `id must rbe SeaPenImageId but received: ${id}`); this.methodCalled('deleteRecentSeaPenImage', id); this.recentImageIds = this.recentImageIds.filter(x => x !== id); return Promise.resolve({success: true}); @@ -183,6 +187,19 @@ this.shouldShowSeaPenIntroductionDialogResponse = false; } + shouldShowSeaPenFreeformIntroductionDialog() { + this.methodCalled('shouldShowSeaPenFreeformIntroductionDialog'); + return Promise.resolve({ + shouldShowFreeformDialog: + this.shouldShowSeaPenFreeformIntroductionDialogResponse + }); + } + + handleSeaPenFreeformIntroductionDialogClosed() { + this.methodCalled('handleSeaPenFreeformIntroductionDialogClosed'); + this.shouldShowSeaPenFreeformIntroductionDialogResponse = false; + } + isInTabletMode() { this.methodCalled('isInTabletMode'); return Promise.resolve({tabletMode: this.isInTabletModeResponse});
diff --git a/chrome/test/data/webui/chromeos/vc_background_ui/vc_background_ui_test.ts b/chrome/test/data/webui/chromeos/vc_background_ui/vc_background_ui_test.ts index 94ef635..03e3e744 100644 --- a/chrome/test/data/webui/chromeos/vc_background_ui/vc_background_ui_test.ts +++ b/chrome/test/data/webui/chromeos/vc_background_ui/vc_background_ui_test.ts
@@ -4,13 +4,11 @@ import 'chrome://resources/ash/common/cr_elements/cr_action_menu/cr_action_menu.js'; -import {CrInputElement} from 'chrome://resources/ash/common/cr_elements/cr_input/cr_input.js'; import {WallpaperGridItemElement} from 'chrome://resources/ash/common/personalization/wallpaper_grid_item_element.js'; import {getSeaPenTemplates} from 'chrome://resources/ash/common/sea_pen/constants.js'; import {SeaPenPaths, SeaPenRouterElement} from 'chrome://resources/ash/common/sea_pen/sea_pen_router_element.js'; import {SeaPenTemplateQueryElement} from 'chrome://resources/ash/common/sea_pen/sea_pen_template_query_element.js'; import {setTransitionsEnabled} from 'chrome://resources/ash/common/sea_pen/transition.js'; -import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; import {VcBackgroundApp} from 'chrome://vc-background/js/vc_background_app.js'; import {VcBackgroundBreadcrumbElement} from 'chrome://vc-background/js/vc_background_breadcrumb_element.js'; import {assertArrayEquals, assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js'; @@ -163,38 +161,6 @@ ]); }); - test('verifies breadcrumbs when routing to Freeform subpages', async () => { - loadTimeData.overrideValues({isSeaPenTextInputEnabled: true}); - const seaPenRouter = getSeaPenRouter(); - seaPenRouter.goToRoute(SeaPenPaths.FREEFORM); - await waitAfterNextRender(seaPenRouter); - - assertEquals( - 'chrome://vc-background/freeform', window.location.href, - 'routed to Freeform page'); - assertTrue(!!getVcBackgroundBreadcrumbs(), 'breadcrumb should display'); - assertArrayEquals(getVcBackgroundBreadcrumbsText(), ['AI Prompting']); - - // Search for a freeform query. - const seaPenInputQuery = - seaPenRouter.shadowRoot?.querySelector<HTMLElement>( - 'sea-pen-input-query'); - assertTrue(!!seaPenInputQuery, 'input query element exists'); - const inputElement = - seaPenInputQuery.shadowRoot?.querySelector<CrInputElement>( - '#queryInput'); - assertTrue(!!inputElement, 'freeform input displays'); - inputElement!.value = 'a cool castle'; - seaPenInputQuery.shadowRoot?.getElementById('searchButton')!.click(); - - assertEquals( - 'chrome://vc-background/freeform', window.location.href, - 'should stay in the same Freeform page'); - - // Breadcrumbs remain the same for Freeform page. - assertArrayEquals(getVcBackgroundBreadcrumbsText(), ['AI Prompting']); - }); - test('allows changing templates via breadcrumbs dropdown menu', async () => { // Navigate directly to a results page with template in breadcrumbs. const seaPenRouter = getSeaPenRouter();
diff --git a/chrome/test/data/webui/cr_components/history_embeddings/BUILD.gn b/chrome/test/data/webui/cr_components/history_embeddings/BUILD.gn index 48e2592..5438925 100644 --- a/chrome/test/data/webui/cr_components/history_embeddings/BUILD.gn +++ b/chrome/test/data/webui/cr_components/history_embeddings/BUILD.gn
@@ -15,6 +15,7 @@ ts_deps = [ "//ui/webui/resources/cr_components/history_embeddings:build_ts", + "//ui/webui/resources/cr_components/page_image_service:build_ts", "//ui/webui/resources/cr_elements:build_ts", "//ui/webui/resources/js:build_ts", ]
diff --git a/chrome/test/data/webui/cr_components/history_embeddings/history_embeddings_test.ts b/chrome/test/data/webui/cr_components/history_embeddings/history_embeddings_test.ts index 91a7c5f..44c2821 100644 --- a/chrome/test/data/webui/cr_components/history_embeddings/history_embeddings_test.ts +++ b/chrome/test/data/webui/cr_components/history_embeddings/history_embeddings_test.ts
@@ -916,7 +916,7 @@ } const favicons = element.shadowRoot!.querySelectorAll<HTMLElement>( - '.result-item .favicon'); + '.result-url-and-favicon .favicon'); assertEquals(2, favicons.length); assertEquals( getFaviconForPageURL(mockResults[0]!.url.url, true),
diff --git a/chrome/test/data/webui/cr_components/history_embeddings/result_image_test.ts b/chrome/test/data/webui/cr_components/history_embeddings/result_image_test.ts index 3d8ede93..3e40d88d 100644 --- a/chrome/test/data/webui/cr_components/history_embeddings/result_image_test.ts +++ b/chrome/test/data/webui/cr_components/history_embeddings/result_image_test.ts
@@ -2,16 +2,44 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import 'chrome://history/strings.m.js'; import 'chrome://resources/cr_components/history_embeddings/result_image.js'; +import type {SearchResultItem} from 'chrome://resources/cr_components/history_embeddings/history_embeddings.mojom-webui.js'; import type {HistoryEmbeddingsResultImageElement} from 'chrome://resources/cr_components/history_embeddings/result_image.js'; -import {assertTrue} from 'chrome://webui-test/chai_assert.js'; +import {PageImageServiceBrowserProxy} from 'chrome://resources/cr_components/page_image_service/browser_proxy.js'; +import {ClientId as PageImageServiceClientId, PageImageServiceHandlerRemote} from 'chrome://resources/cr_components/page_image_service/page_image_service.mojom-webui.js'; +import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; +import {assertDeepEquals, assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js'; +import {TestMock} from 'chrome://webui-test/test_mock.js'; suite('cr-history-embeddings-result-image', () => { let element: HistoryEmbeddingsResultImageElement; + let imageServiceHandler: TestMock<PageImageServiceHandlerRemote>& + PageImageServiceHandlerRemote; + + function generateResult(): SearchResultItem { + return { + title: 'Google', + url: {url: 'http://google.com'}, + urlForDisplay: 'google.com', + relativeTime: '2 hours ago', + shortDateTime: 'Sept 2, 2022', + sourcePassage: 'Google description', + lastUrlVisitTimestamp: 1000, + answerData: null, + isUrlKnownToSync: false, + }; + } setup(() => { document.body.innerHTML = window.trustedTypes!.emptyHTML; + + imageServiceHandler = TestMock.fromClass(PageImageServiceHandlerRemote); + PageImageServiceBrowserProxy.setInstance( + new PageImageServiceBrowserProxy(imageServiceHandler)); + + loadTimeData.overrideValues({enableHistoryEmbeddingsImages: true}); element = document.createElement('cr-history-embeddings-result-image'); document.body.appendChild(element); }); @@ -20,4 +48,57 @@ const svg = element.shadowRoot!.querySelector('svg'); assertTrue(!!svg); }); + + test('RequestsImagesIfKnownToSync', async () => { + // By default, results are not known to sync so they should not request + // images. + element.searchResult = generateResult(); + await element.updateComplete; + assertEquals(0, imageServiceHandler.getCallCount('getPageImageUrl')); + + // Set a new result that is known to sync and verify that an image is + // requested with the correct arguments. + element.searchResult = + Object.assign(generateResult(), {isUrlKnownToSync: true}); + await element.updateComplete; + const requestArgs = await imageServiceHandler.whenCalled('getPageImageUrl'); + assertEquals(1, imageServiceHandler.getCallCount('getPageImageUrl')); + assertEquals(PageImageServiceClientId.Journeys, requestArgs[0]); + assertDeepEquals({url: 'http://google.com'}, requestArgs[1]); + assertDeepEquals( + {suggestImages: true, optimizationGuideImages: true}, requestArgs[2]); + }); + + test('ShowsImages', async () => { + // Make the handler return an invalid response and verify that the image + // is not set and is hidden. + imageServiceHandler.setResultFor( + 'getPageImageUrl', Promise.resolve({result: undefined})); + element.searchResult = + Object.assign(generateResult(), {isUrlKnownToSync: true}); + await element.updateComplete; + await imageServiceHandler.whenCalled('getPageImageUrl'); + + let imageElement = element.shadowRoot!.querySelector('#image')!; + assertTrue(imageElement.hasAttribute('hidden')); + assertFalse(element.hasAttribute('has-image')); + + // Make the handler now return a valid image URL. + imageServiceHandler.reset(); + const imageUrl = 'https://some-server/some-image.png'; + imageServiceHandler.setResultFor( + 'getPageImageUrl', + Promise.resolve({result: {imageUrl: {url: imageUrl}}})); + element.searchResult = + Object.assign(generateResult(), {isUrlKnownToSync: true}); + await element.updateComplete; + await imageServiceHandler.whenCalled('getPageImageUrl'); + await element.updateComplete; + + // Verify images are shown and set to the correct url. + imageElement = element.shadowRoot!.querySelector('#image')!; + assertFalse(imageElement.hasAttribute('hidden')); + assertEquals(imageUrl, imageElement.getAttribute('auto-src')); + assertTrue(element.hasAttribute('has-image')); + }); });
diff --git a/chrome/test/data/webui/new_tab_page/modules/v2/file_suggestion/drive_module_test.ts b/chrome/test/data/webui/new_tab_page/modules/v2/file_suggestion/drive_module_test.ts index ec2556a..b094f282 100644 --- a/chrome/test/data/webui/new_tab_page/modules/v2/file_suggestion/drive_module_test.ts +++ b/chrome/test/data/webui/new_tab_page/modules/v2/file_suggestion/drive_module_test.ts
@@ -15,6 +15,7 @@ suite('DriveModuleV2', () => { let handler: TestMock<DriveSuggestionHandlerRemote>; + const iconUrl = 'https://example.com/application/vnd.google-apps.spreadsheet'; setup(() => { document.body.innerHTML = window.trustedTypes!.emptyHTML; @@ -29,42 +30,42 @@ justificationText: 'Edited last week', title: 'Foo', id: '123', - mimeType: 'application/vnd.google-apps.spreadsheet', + iconUrl: {url: iconUrl}, itemUrl: {url: 'https://foo.com'}, }, { justificationText: 'Edited yesterday', title: 'Bar', id: '132', - mimeType: 'application/vnd.google-apps.document', + iconUrl: {url: iconUrl}, itemUrl: {url: 'https://bar.com'}, }, { justificationText: 'Created today', title: 'Baz', id: '213', - mimeType: 'application/vnd.google-apps.presentation', + iconUrl: {url: iconUrl}, itemUrl: {url: 'https://baz.com'}, }, { justificationText: 'Created yesterday', title: 'Qux', id: '231', - mimeType: 'application/vnd.google-apps.presentation', + iconUrl: {url: iconUrl}, itemUrl: {url: 'https://qux.com'}, }, { justificationText: 'Edited last week', title: 'FooBar', id: '312', - mimeType: 'application/vnd.google-apps.spreadsheet', + iconUrl: {url: iconUrl}, itemUrl: {url: 'https://foo.com'}, }, { justificationText: 'Edited yesterday', title: 'BazQux', id: '321', - mimeType: 'application/vnd.google-apps.document', + iconUrl: {url: iconUrl}, itemUrl: {url: 'https://bar.com'}, }, ], @@ -100,7 +101,7 @@ justificationText: 'Edited yesterday', title: 'Abc', id: '012', - mimeType: 'application/vnd.google-apps.presentation', + iconUrl: {url: iconUrl}, itemUrl: {url: 'https://abc.com'}, }, ], @@ -134,7 +135,7 @@ justificationText: 'Edited yesterday', title: 'Abc', id: '012', - mimeType: 'application/vnd.google-apps.presentation', + iconUrl: {url: iconUrl}, itemUrl: {url: 'https://abc.com'}, }, ], @@ -167,7 +168,7 @@ justificationText: '', title: '', id: '', - mimeType: '', + iconUrl: {url: ''}, itemUrl: {url: ''}, }, ], @@ -209,7 +210,7 @@ justificationText: 'Edited yesterday', title: 'Abc', id: '012', - mimeType: 'application/vnd.google-apps.presentation', + iconUrl: {url: iconUrl}, itemUrl: {url: 'https://abc.com'}, }, ],
diff --git a/chrome/test/data/webui/new_tab_page/modules/v2/file_suggestion/file_suggestion_test.ts b/chrome/test/data/webui/new_tab_page/modules/v2/file_suggestion/file_suggestion_test.ts index 60a4f3b..2edb5066 100644 --- a/chrome/test/data/webui/new_tab_page/modules/v2/file_suggestion/file_suggestion_test.ts +++ b/chrome/test/data/webui/new_tab_page/modules/v2/file_suggestion/file_suggestion_test.ts
@@ -25,7 +25,7 @@ justificationText: `Edited ${i} days ago`, title: `${i} title`, id: `${i} id`, - mimeType: `application/vnd.google-apps.${i}`, + iconUrl: {url: `https://example.com/application/vnd.google-apps.${i}`}, itemUrl: {url: 'https://${i}.com'}, }); } @@ -34,7 +34,6 @@ test('files render correctly', async () => { const numFiles = 2; - fileSuggestion.imageSourceBaseUrl = 'https://example.com/'; fileSuggestion.files = createFiles(numFiles); await microtasksFinished();
diff --git a/chrome/test/webapps/coverage/coverage_cros.tsv b/chrome/test/webapps/coverage/coverage_cros.tsv index c4e8893..ca35107 100644 --- a/chrome/test/webapps/coverage/coverage_cros.tsv +++ b/chrome/test/webapps/coverage/coverage_cros.tsv
@@ -1,5 +1,5 @@ # This is a generated file. -# Full coverage: 57%, with partial coverage: 76% +# Full coverage: 57%, with partial coverage: 75% install_omnibox_icon_Standalone🌕 launch_from_menu_option_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_omnibox_icon_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_omnibox_icon_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_app_title_Standalone_StandaloneOriginal🌕 @@ -30,27 +30,21 @@ install_menu_option_Standalone🌕 manifest_update_icon_Standalone_AcceptUpdate🌕 await_manifest_update_Standalone🌕 check_app_icon_Standalone_Red🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 manifest_update_title_Standalone_StandaloneUpdated_SkipDialog🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_app_title_Standalone_StandaloneUpdated🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 manifest_update_title_Standalone_StandaloneUpdated_SkipDialog🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_app_title_Standalone_StandaloneUpdated🌑 -create_shortcut_Standalone_Windowed🌕 set_app_badge_Standalone🌑 clear_app_badge_Standalone🌑 check_app_badge_empty_Standalone🌑 install_omnibox_icon_Standalone🌕 set_app_badge_Standalone🌑 clear_app_badge_Standalone🌑 check_app_badge_empty_Standalone🌑 install_menu_option_Standalone🌕 set_app_badge_Standalone🌑 clear_app_badge_Standalone🌑 check_app_badge_empty_Standalone🌑 -create_shortcut_Standalone_Windowed🌕 set_app_badge_Standalone🌑 check_app_badge_has_value_Standalone🌑 install_omnibox_icon_Standalone🌕 set_app_badge_Standalone🌑 check_app_badge_has_value_Standalone🌑 install_menu_option_Standalone🌕 set_app_badge_Standalone🌑 check_app_badge_has_value_Standalone🌑 navigate_browser_Standalone🌕 set_app_badge_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌕 navigate_pwa_Standalone_MinimalUi🌕 close_custom_toolbar🌕 check_app_navigation_is_start_url🌕 install_omnibox_icon_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 close_custom_toolbar🌕 check_app_navigation_is_start_url🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_pwa_Standalone_MinimalUi🌕 close_custom_toolbar🌕 check_app_navigation_is_start_url🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_pwa_Standalone_MinimalUi🌕 close_custom_toolbar🌕 check_app_navigation_is_start_url🌕 install_menu_option_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 close_custom_toolbar🌕 check_app_navigation_is_start_url🌕 -create_shortcut_Standalone_Windowed🌕 navigate_pwa_Standalone_MinimalUi🌕 check_custom_toolbar🌕 install_omnibox_icon_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 check_custom_toolbar🌕 install_menu_option_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 check_custom_toolbar🌕 navigate_browser_Standalone🌕 check_app_not_in_list_Standalone🌓 navigate_browser_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 navigate_browser_NotPromotable🌕 check_app_not_in_list_Standalone🌓 navigate_browser_NotPromotable🌕 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌕 check_app_title_Standalone_StandaloneOriginal🌕 -create_shortcut_Standalone_Browser🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_omnibox_icon_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 check_app_title_Standalone_StandaloneOriginal🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_title_Standalone_StandaloneOriginal🌕 @@ -62,188 +56,139 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_title_Standalone_StandaloneOriginal🌕 install_menu_option_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_omnibox_icon_Screenshots🌕 -create_shortcut_Standalone_Windowed🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_not_exists_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_not_exists_Standalone🌑 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_not_exists_NotPromotable🌑 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_Standalone_Browser🌕 check_app_in_list_tabbed_Standalone🌓 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_in_list_tabbed_Standalone🌓 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_in_list_tabbed_Standalone🌓 -create_shortcut_Standalone_Browser🌕 navigate_browser_Standalone🌕 check_create_shortcut_shown🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_create_shortcut_shown🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_create_shortcut_shown🌑 -create_shortcut_Standalone_Browser🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Browser🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 -create_shortcut_NotPromotable_Browser🌕 check_app_in_list_tabbed_NotPromotable🌓 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 check_app_in_list_tabbed_NotPromotable🌓 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 check_app_in_list_tabbed_NotPromotable🌓 -create_shortcut_NotPromotable_Browser🌕 navigate_browser_NotPromotable🌕 check_create_shortcut_shown🌑 -install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_create_shortcut_shown🌑 -install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_create_shortcut_shown🌑 -create_shortcut_NotPromotable_Browser🌕 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 +install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 +install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 -create_shortcut_NotPromotable_Browser🌕 navigate_browser_NotPromotable🌕 check_launch_icon_not_shown🌕 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_launch_icon_not_shown🌕 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_launch_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌕 check_app_in_list_windowed_Standalone🌓 install_omnibox_icon_Standalone🌕 check_app_in_list_windowed_Standalone🌓 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_Standalone🌓 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_Standalone🌓 install_menu_option_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -create_shortcut_Standalone_Windowed🌕 navigate_browser_Standalone🌕 check_create_shortcut_not_shown🌑 install_omnibox_icon_Standalone🌕 navigate_browser_Standalone🌕 check_create_shortcut_not_shown🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_create_shortcut_not_shown🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_create_shortcut_not_shown🌑 install_menu_option_Standalone🌕 navigate_browser_Standalone🌕 check_create_shortcut_not_shown🌑 -create_shortcut_Standalone_Windowed🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_omnibox_icon_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_menu_option_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_omnibox_icon_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_menu_option_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -create_shortcut_MinimalUi_Windowed🌕 navigate_browser_MinimalUi🌕 check_launch_icon_shown🌕 install_omnibox_icon_MinimalUi🌕 navigate_browser_MinimalUi🌕 check_launch_icon_shown🌕 install_policy_app_MinimalUi_WithShortcut_Windowed_WebApp🌓 navigate_browser_MinimalUi🌕 check_launch_icon_shown🌕 install_policy_app_MinimalUi_NoShortcut_Windowed_WebApp🌓 navigate_browser_MinimalUi🌕 check_launch_icon_shown🌕 install_menu_option_MinimalUi🌕 navigate_browser_MinimalUi🌕 check_launch_icon_shown🌕 -create_shortcut_Tabbed_Windowed🌕 check_app_in_list_windowed_Tabbed🌓 install_omnibox_icon_Tabbed🌕 check_app_in_list_windowed_Tabbed🌓 install_policy_app_Tabbed_WithShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_Tabbed🌓 install_policy_app_Tabbed_NoShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_Tabbed🌓 install_menu_option_Tabbed🌕 check_app_in_list_windowed_Tabbed🌓 -create_shortcut_Tabbed_Windowed🌕 navigate_browser_Tabbed🌕 check_launch_icon_shown🌕 check_install_icon_not_shown🌕 install_omnibox_icon_Tabbed🌕 navigate_browser_Tabbed🌕 check_launch_icon_shown🌕 check_install_icon_not_shown🌕 install_policy_app_Tabbed_WithShortcut_Windowed_WebApp🌓 navigate_browser_Tabbed🌕 check_launch_icon_shown🌕 check_install_icon_not_shown🌕 install_policy_app_Tabbed_NoShortcut_Windowed_WebApp🌓 navigate_browser_Tabbed🌕 check_launch_icon_shown🌕 check_install_icon_not_shown🌕 install_menu_option_Tabbed🌕 navigate_browser_Tabbed🌕 check_launch_icon_shown🌕 check_install_icon_not_shown🌕 -create_shortcut_NotPromotable_Windowed🌕 check_app_in_list_windowed_NotPromotable🌓 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_NotPromotable🌓 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_NotPromotable🌓 install_menu_option_NotPromotable🌕 check_app_in_list_windowed_NotPromotable🌓 -create_shortcut_NotPromotable_Windowed🌕 navigate_browser_NotPromotable🌕 check_create_shortcut_not_shown🌑 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_create_shortcut_not_shown🌑 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_create_shortcut_not_shown🌑 install_menu_option_NotPromotable🌕 navigate_browser_NotPromotable🌕 check_create_shortcut_not_shown🌑 -create_shortcut_NotPromotable_Windowed🌕 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 install_menu_option_NotPromotable🌕 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 -create_shortcut_NotPromotable_Windowed🌕 navigate_browser_NotPromotable🌕 check_launch_icon_shown🌕 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_launch_icon_shown🌕 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_launch_icon_shown🌕 install_menu_option_NotPromotable🌕 navigate_browser_NotPromotable🌕 check_launch_icon_shown🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Browser🌕 check_platform_shortcut_and_icon_Standalone🌓 install_omnibox_icon_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_NotPromotable🌓 -install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_NotPromotable🌓 -create_shortcut_NotPromotable_Windowed🌕 check_platform_shortcut_and_icon_NotPromotable🌓 -create_shortcut_NotPromotable_Browser🌕 check_platform_shortcut_and_icon_NotPromotable🌓 -install_menu_option_NotPromotable🌕 check_platform_shortcut_and_icon_NotPromotable🌓 -create_shortcut_Standalone_Browser🌕 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 -create_shortcut_Standalone_Browser🌕 launch_from_platform_shortcut_Standalone🌑 install_omnibox_icon_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 +install_omnibox_icon_Standalone🌕 check_window_created🌕 +install_omnibox_icon_Standalone🌕 close_pwa🌕 check_app_in_list_windowed_Standalone🌓 check_platform_shortcut_and_icon_Standalone🌓 +install_omnibox_icon_Standalone🌕 close_pwa🌕 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 check_launch_icon_not_shown🌑 +install_menu_option_ChromeUrl🌕 check_window_created🌕 create_shortcut_Standalone_Windowed🌕 check_window_created🌕 create_shortcut_Standalone_Windowed🌕 close_pwa🌕 check_app_in_list_windowed_Standalone🌓 check_platform_shortcut_and_icon_Standalone🌓 create_shortcut_Standalone_Windowed🌕 close_pwa🌕 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 check_launch_icon_not_shown🌑 -install_menu_option_ChromeUrl🌕 check_window_created🌕 create_shortcut_ChromeUrl_Windowed🌕 check_window_created🌕 +create_shortcut_Standalone_Windowed🌕 set_app_badge_Standalone🌑 clear_app_badge_Standalone🌑 check_app_badge_empty_Standalone🌑 +create_shortcut_Standalone_Windowed🌕 set_app_badge_Standalone🌑 check_app_badge_has_value_Standalone🌑 +create_shortcut_Standalone_Windowed🌕 navigate_pwa_Standalone_MinimalUi🌕 close_custom_toolbar🌕 check_app_navigation_is_start_url🌕 +create_shortcut_Standalone_Windowed🌕 navigate_pwa_Standalone_MinimalUi🌕 check_custom_toolbar🌕 +create_shortcut_Standalone_Windowed🌕 check_app_title_Standalone_StandaloneOriginal🌕 +create_shortcut_Standalone_Browser🌕 check_app_title_Standalone_StandaloneOriginal🌕 +create_shortcut_Standalone_Windowed🌕 check_window_created🌕 +create_shortcut_Standalone_Browser🌕 check_app_in_list_tabbed_Standalone🌓 +create_shortcut_Standalone_Browser🌕 navigate_browser_Standalone🌕 check_create_shortcut_shown🌑 +create_shortcut_Standalone_Browser🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 +create_shortcut_Standalone_Browser🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 +create_shortcut_NotPromotable_Browser🌕 check_app_in_list_tabbed_NotPromotable🌓 +create_shortcut_NotPromotable_Browser🌕 navigate_browser_NotPromotable🌕 +create_shortcut_NotPromotable_Browser🌕 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 +create_shortcut_NotPromotable_Browser🌕 navigate_browser_NotPromotable🌕 check_launch_icon_not_shown🌕 +create_shortcut_Standalone_Windowed🌕 check_app_in_list_windowed_Standalone🌓 +create_shortcut_Standalone_Windowed🌕 navigate_browser_Standalone🌕 check_create_shortcut_not_shown🌑 +create_shortcut_Standalone_Windowed🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 +create_shortcut_Standalone_Windowed🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 +create_shortcut_MinimalUi_Windowed🌕 navigate_browser_MinimalUi🌕 check_launch_icon_shown🌕 +create_shortcut_Tabbed_Windowed🌕 check_app_in_list_windowed_Tabbed🌓 +create_shortcut_Tabbed_Windowed🌕 navigate_browser_Tabbed🌕 check_launch_icon_shown🌕 check_install_icon_not_shown🌕 +create_shortcut_NotPromotable_Windowed🌕 check_app_in_list_windowed_NotPromotable🌓 +create_shortcut_NotPromotable_Windowed🌕 navigate_browser_NotPromotable🌕 check_create_shortcut_not_shown🌑 +create_shortcut_NotPromotable_Windowed🌕 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 +create_shortcut_NotPromotable_Windowed🌕 navigate_browser_NotPromotable🌕 check_launch_icon_shown🌕 +create_shortcut_Standalone_Windowed🌕 check_platform_shortcut_and_icon_Standalone🌓 +create_shortcut_Standalone_Browser🌕 check_platform_shortcut_and_icon_Standalone🌓 +install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_NotPromotable🌓 +install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_NotPromotable🌓 +install_menu_option_NotPromotable🌕 check_platform_shortcut_and_icon_NotPromotable🌓 +create_shortcut_NotPromotable_Windowed🌕 check_platform_shortcut_and_icon_NotPromotable🌓 +create_shortcut_NotPromotable_Browser🌕 check_platform_shortcut_and_icon_NotPromotable🌓 +create_shortcut_Standalone_Browser🌕 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 +create_shortcut_Standalone_Browser🌕 launch_from_platform_shortcut_Standalone🌑 install_omnibox_icon_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 create_shortcut_Standalone_Browser🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌓 create_shortcut_Standalone_Browser🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 create_shortcut_Standalone_Browser🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 create_shortcut_Standalone_Browser🌕 uninstall_from_list_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 create_shortcut_Standalone_Windowed🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌓 -install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌓 -install_menu_option_Standalone🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌓 create_shortcut_Standalone_Windowed🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 -install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 -install_menu_option_Standalone🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 create_shortcut_Standalone_Windowed🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 -install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 -install_menu_option_Standalone🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 create_shortcut_Standalone_Windowed🌕 uninstall_from_list_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 -install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 -install_menu_option_Standalone🌕 uninstall_from_list_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 +create_shortcut_Standalone_Windowed🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌓 +create_shortcut_Standalone_Windowed🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 +create_shortcut_Standalone_Windowed🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 +create_shortcut_Standalone_Windowed🌕 uninstall_from_list_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 create_shortcut_NotPromotable_Browser🌕 uninstall_from_list_NotPromotable🌕 check_app_not_in_list_Standalone🌓 create_shortcut_NotPromotable_Browser🌕 uninstall_from_list_NotPromotable🌕 check_platform_shortcut_not_exists_NotPromotable🌑 create_shortcut_NotPromotable_Windowed🌕 uninstall_from_list_NotPromotable🌕 check_app_not_in_list_Standalone🌓 -install_menu_option_NotPromotable🌕 uninstall_from_list_NotPromotable🌕 check_app_not_in_list_Standalone🌓 create_shortcut_NotPromotable_Windowed🌕 uninstall_from_list_NotPromotable🌕 check_platform_shortcut_not_exists_NotPromotable🌑 -install_menu_option_NotPromotable🌕 uninstall_from_list_NotPromotable🌕 check_platform_shortcut_not_exists_NotPromotable🌑 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌓 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌓 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌓 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌓 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌓 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌓 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌓 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌓 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 create_shortcut_Standalone_Windowed🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 create_shortcut_Standalone_Windowed🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 create_shortcut_Standalone_Windowed🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 -install_omnibox_icon_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 -install_omnibox_icon_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 -install_omnibox_icon_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 -install_menu_option_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 -install_menu_option_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 -install_menu_option_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 create_shortcut_Standalone_Windowed🌕 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -install_omnibox_icon_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -install_menu_option_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 create_shortcut_Standalone_Windowed🌕 launch_from_menu_option_Standalone🌕 check_window_display_standalone🌕 create_shortcut_Standalone_Windowed🌕 launch_from_launch_icon_Standalone🌕 check_window_display_standalone🌕 create_shortcut_Standalone_Windowed🌕 launch_from_chrome_apps_Standalone🌓 check_window_display_standalone🌕 create_shortcut_Standalone_Windowed🌕 launch_from_platform_shortcut_Standalone🌑 check_window_display_standalone🌑 -install_omnibox_icon_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_display_standalone🌕 -install_omnibox_icon_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_display_standalone🌕 -install_omnibox_icon_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_display_standalone🌕 -install_omnibox_icon_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_display_standalone🌑 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_display_standalone🌕 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_display_standalone🌕 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_display_standalone🌕 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_display_standalone🌑 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_display_standalone🌕 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_display_standalone🌕 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_display_standalone🌕 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_display_standalone🌑 -install_menu_option_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_display_standalone🌕 -install_menu_option_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_display_standalone🌕 -install_menu_option_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_display_standalone🌕 -install_menu_option_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_display_standalone🌑 create_shortcut_Standalone_Browser🌕 set_open_in_window_from_app_settings_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 create_shortcut_Standalone_Browser🌕 set_open_in_window_from_app_settings_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 create_shortcut_Standalone_Browser🌕 set_open_in_window_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 @@ -252,250 +197,77 @@ create_shortcut_Standalone_Browser🌕 set_open_in_window_from_app_home_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 create_shortcut_Standalone_Browser🌕 set_open_in_window_from_app_home_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 create_shortcut_Standalone_Browser🌕 set_open_in_window_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 create_shortcut_Standalone_Windowed🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌓 create_shortcut_Standalone_Windowed🌕 set_open_in_tab_from_app_home_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌓 -install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌓 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌓 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -install_menu_option_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌓 -install_menu_option_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 create_shortcut_Standalone_Windowed🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 create_shortcut_Standalone_Windowed🌕 set_open_in_tab_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -install_menu_option_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -install_menu_option_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 create_shortcut_NotPromotable_Browser🌕 launch_from_platform_shortcut_NotPromotable🌑 check_tab_created_One🌑 check_app_loaded_in_tab_NotPromotable🌑 -install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌑 check_tab_created_One🌑 check_app_loaded_in_tab_NotPromotable🌑 -install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌑 check_tab_created_One🌑 check_app_loaded_in_tab_NotPromotable🌑 create_shortcut_NotPromotable_Browser🌕 launch_from_chrome_apps_NotPromotable🌓 check_tab_created_One🌕 check_app_loaded_in_tab_NotPromotable🌓 -install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 launch_from_chrome_apps_NotPromotable🌓 check_tab_created_One🌕 check_app_loaded_in_tab_NotPromotable🌓 -install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 launch_from_chrome_apps_NotPromotable🌓 check_tab_created_One🌕 check_app_loaded_in_tab_NotPromotable🌓 create_shortcut_MinimalUi_Windowed🌕 launch_from_menu_option_MinimalUi🌕 check_window_display_minimal🌕 create_shortcut_MinimalUi_Windowed🌕 launch_from_launch_icon_MinimalUi🌕 check_window_display_minimal🌕 create_shortcut_MinimalUi_Windowed🌕 launch_from_chrome_apps_MinimalUi🌓 check_window_display_minimal🌕 create_shortcut_MinimalUi_Windowed🌕 launch_from_platform_shortcut_MinimalUi🌑 check_window_display_minimal🌑 -install_omnibox_icon_MinimalUi🌕 launch_from_menu_option_MinimalUi🌕 check_window_display_minimal🌕 -install_omnibox_icon_MinimalUi🌕 launch_from_launch_icon_MinimalUi🌕 check_window_display_minimal🌕 -install_omnibox_icon_MinimalUi🌕 launch_from_chrome_apps_MinimalUi🌓 check_window_display_minimal🌕 -install_omnibox_icon_MinimalUi🌕 launch_from_platform_shortcut_MinimalUi🌑 check_window_display_minimal🌑 -install_policy_app_MinimalUi_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_MinimalUi🌕 check_window_display_minimal🌕 -install_policy_app_MinimalUi_WithShortcut_Windowed_WebApp🌓 launch_from_launch_icon_MinimalUi🌕 check_window_display_minimal🌕 -install_policy_app_MinimalUi_WithShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_MinimalUi🌓 check_window_display_minimal🌕 -install_policy_app_MinimalUi_WithShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_MinimalUi🌑 check_window_display_minimal🌑 -install_policy_app_MinimalUi_NoShortcut_Windowed_WebApp🌓 launch_from_menu_option_MinimalUi🌕 check_window_display_minimal🌕 -install_policy_app_MinimalUi_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_MinimalUi🌕 check_window_display_minimal🌕 -install_policy_app_MinimalUi_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_MinimalUi🌓 check_window_display_minimal🌕 -install_policy_app_MinimalUi_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_MinimalUi🌑 check_window_display_minimal🌑 -install_menu_option_MinimalUi🌕 launch_from_menu_option_MinimalUi🌕 check_window_display_minimal🌕 -install_menu_option_MinimalUi🌕 launch_from_launch_icon_MinimalUi🌕 check_window_display_minimal🌕 -install_menu_option_MinimalUi🌕 launch_from_chrome_apps_MinimalUi🌓 check_window_display_minimal🌕 -install_menu_option_MinimalUi🌕 launch_from_platform_shortcut_MinimalUi🌑 check_window_display_minimal🌑 create_shortcut_Tabbed_Windowed🌕 maybe_close_pwa🌕 launch_from_menu_option_Tabbed🌕 check_window_display_tabbed🌕 create_shortcut_Tabbed_Windowed🌕 maybe_close_pwa🌕 launch_from_launch_icon_Tabbed🌕 check_window_display_tabbed🌕 create_shortcut_Tabbed_Windowed🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Tabbed🌓 check_window_display_tabbed🌕 create_shortcut_Tabbed_Windowed🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Tabbed🌑 check_window_display_tabbed🌑 -install_omnibox_icon_Tabbed🌕 maybe_close_pwa🌕 launch_from_menu_option_Tabbed🌕 check_window_display_tabbed🌕 -install_omnibox_icon_Tabbed🌕 maybe_close_pwa🌕 launch_from_launch_icon_Tabbed🌕 check_window_display_tabbed🌕 -install_omnibox_icon_Tabbed🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Tabbed🌓 check_window_display_tabbed🌕 -install_omnibox_icon_Tabbed🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Tabbed🌑 check_window_display_tabbed🌑 -install_policy_app_Tabbed_WithShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 launch_from_menu_option_Tabbed🌕 check_window_display_tabbed🌕 -install_policy_app_Tabbed_WithShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 launch_from_launch_icon_Tabbed🌕 check_window_display_tabbed🌕 -install_policy_app_Tabbed_WithShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 launch_from_chrome_apps_Tabbed🌓 check_window_display_tabbed🌕 -install_policy_app_Tabbed_WithShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 launch_from_platform_shortcut_Tabbed🌑 check_window_display_tabbed🌑 -install_policy_app_Tabbed_NoShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 launch_from_menu_option_Tabbed🌕 check_window_display_tabbed🌕 -install_policy_app_Tabbed_NoShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 launch_from_launch_icon_Tabbed🌕 check_window_display_tabbed🌕 -install_policy_app_Tabbed_NoShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 launch_from_chrome_apps_Tabbed🌓 check_window_display_tabbed🌕 -install_policy_app_Tabbed_NoShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 launch_from_platform_shortcut_Tabbed🌑 check_window_display_tabbed🌑 -install_menu_option_Tabbed🌕 maybe_close_pwa🌕 launch_from_menu_option_Tabbed🌕 check_window_display_tabbed🌕 -install_menu_option_Tabbed🌕 maybe_close_pwa🌕 launch_from_launch_icon_Tabbed🌕 check_window_display_tabbed🌕 -install_menu_option_Tabbed🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Tabbed🌓 check_window_display_tabbed🌕 -install_menu_option_Tabbed🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Tabbed🌑 check_window_display_tabbed🌑 create_shortcut_NotPromotable_Windowed🌕 launch_from_menu_option_NotPromotable🌕 check_window_created🌕 create_shortcut_NotPromotable_Windowed🌕 launch_from_launch_icon_NotPromotable🌕 check_window_created🌕 create_shortcut_NotPromotable_Windowed🌕 launch_from_chrome_apps_NotPromotable🌓 check_window_created🌕 -install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_NotPromotable🌕 check_window_created🌕 -install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_launch_icon_NotPromotable🌕 check_window_created🌕 -install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_NotPromotable🌓 check_window_created🌕 -install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 launch_from_menu_option_NotPromotable🌕 check_window_created🌕 -install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_NotPromotable🌕 check_window_created🌕 -install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_NotPromotable🌓 check_window_created🌕 -install_menu_option_NotPromotable🌕 launch_from_menu_option_NotPromotable🌕 check_window_created🌕 -install_menu_option_NotPromotable🌕 launch_from_launch_icon_NotPromotable🌕 check_window_created🌕 -install_menu_option_NotPromotable🌕 launch_from_chrome_apps_NotPromotable🌓 check_window_created🌕 create_shortcut_NotPromotable_Windowed🌕 launch_from_platform_shortcut_NotPromotable🌑 check_window_created🌑 -install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌑 check_window_created🌑 -install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌑 check_window_created🌑 -install_menu_option_NotPromotable🌕 launch_from_platform_shortcut_NotPromotable🌑 check_window_created🌑 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 create_shortcuts_from_list_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcuts_from_list_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 create_shortcut_Standalone_Windowed🌕 delete_profile🌑 check_app_list_empty🌑 create_shortcut_Standalone_Browser🌕 delete_profile🌑 check_app_list_empty🌑 -install_omnibox_icon_Standalone🌕 delete_profile🌑 check_app_list_empty🌑 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 -install_menu_option_Standalone🌕 delete_profile🌑 check_app_list_empty🌑 create_shortcut_Standalone_Windowed🌕 delete_profile🌑 check_app_not_in_list_Standalone🌑 create_shortcut_Standalone_Browser🌕 delete_profile🌑 check_app_not_in_list_Standalone🌑 -install_omnibox_icon_Standalone🌕 delete_profile🌑 check_app_not_in_list_Standalone🌑 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 -install_menu_option_Standalone🌕 delete_profile🌑 check_app_not_in_list_Standalone🌑 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 create_shortcut_Standalone_Windowed🌕 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 create_shortcut_Standalone_Browser🌕 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 -install_omnibox_icon_Standalone🌕 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 -install_menu_option_Standalone🌕 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 create_shortcut_Standalone_Browser🌕 delete_platform_shortcut_Standalone🌑 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 create_shortcut_Standalone_Windowed🌕 delete_platform_shortcut_Standalone🌑 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -install_omnibox_icon_Standalone🌕 delete_platform_shortcut_Standalone🌑 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_platform_shortcut_Standalone🌑 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -install_menu_option_Standalone🌕 delete_platform_shortcut_Standalone🌑 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 create_shortcut_Standalone_Windowed🌕 open_in_chrome🌕 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌓 -install_omnibox_icon_Standalone🌕 open_in_chrome🌕 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌓 -install_menu_option_Standalone🌕 open_in_chrome🌕 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌓 create_shortcut_Standalone_Windowed🌕 navigate_pwa_Standalone_MinimalUi🌕 open_in_chrome🌕 check_tab_created_One🌕 -install_omnibox_icon_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 open_in_chrome🌕 check_tab_created_One🌕 -install_menu_option_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 open_in_chrome🌕 check_tab_created_One🌕 create_shortcut_Standalone_Browser🌕 switch_profile_clients_Client2🌕 launch_from_chrome_apps_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌓 create_shortcut_Standalone_Windowed🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌓 create_shortcut_Standalone_Browser🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌓 -install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌓 -install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌓 create_shortcut_Standalone_Windowed🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 switch_profile_clients_Client1🌕 check_app_not_in_list_Standalone🌓 create_shortcut_Standalone_Browser🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 switch_profile_clients_Client1🌕 check_app_not_in_list_Standalone🌓 -install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 switch_profile_clients_Client1🌕 check_app_not_in_list_Standalone🌓 -install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 switch_profile_clients_Client1🌕 check_app_not_in_list_Standalone🌓 create_shortcut_Standalone_Windowed🌕 switch_profile_clients_Client2🌕 check_platform_shortcut_and_icon_Standalone🌓 create_shortcut_Standalone_Browser🌕 switch_profile_clients_Client2🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 check_platform_shortcut_and_icon_Standalone🌓 create_shortcut_Standalone_Browser🌕 switch_profile_clients_Client2🌕 check_app_in_list_tabbed_Standalone🌓 create_shortcut_Standalone_Windowed🌕 switch_profile_clients_Client2🌕 check_app_in_list_windowed_Standalone🌓 -install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 check_app_in_list_windowed_Standalone🌓 -install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 check_app_in_list_windowed_Standalone🌓 create_shortcut_Standalone_Windowed🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 -install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 -install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 create_shortcut_Standalone_Windowed🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 sync_turn_off🌕 create_shortcut_Standalone_Windowed🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌓 sync_turn_off🌕 create_shortcut_Standalone_Browser🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌓 -sync_turn_off🌕 install_omnibox_icon_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌓 -sync_turn_off🌕 install_menu_option_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌓 create_shortcut_Standalone_Browser🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌓 sync_turn_on🌕 check_app_in_list_tabbed_Standalone🌓 create_shortcut_Standalone_Browser🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌓 sync_turn_on🌕 check_platform_shortcut_and_icon_Standalone🌓 create_shortcut_Standalone_Windowed🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌓 sync_turn_on🌕 check_app_in_list_windowed_Standalone🌓 -install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌓 sync_turn_on🌕 check_app_in_list_windowed_Standalone🌓 -install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌓 sync_turn_on🌕 check_app_in_list_windowed_Standalone🌓 create_shortcut_Standalone_Windowed🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌓 sync_turn_on🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌓 sync_turn_on🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌓 sync_turn_on🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Browser🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Browser🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 -install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 -install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌓 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌓 -install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌓 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌓 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌓 -install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌓 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 create_shortcut_Standalone_Browser🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 check_app_in_list_tabbed_Standalone🌓 create_shortcut_Standalone_Browser🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_app_in_list_tabbed_Standalone🌓 create_shortcut_Standalone_Browser🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_install_icon_shown🌕 create_shortcut_Standalone_Browser🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_install_icon_shown🌕 +create_shortcut_Standalone_Browser🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 +create_shortcut_Standalone_Browser🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 -install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 -install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 -install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 -install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 -install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 -install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌕 check_app_in_list_windowed_Standalone🌓 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_app_in_list_windowed_Standalone🌓 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌕 check_app_in_list_windowed_Standalone🌓 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_app_in_list_windowed_Standalone🌓 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌕 check_window_created🌕 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_window_created🌕 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌕 check_window_created🌕 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_window_created🌕 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_window_created🌕 create_shortcut_Standalone_Browser🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 create_shortcut_Standalone_Browser🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 create_shortcut_Standalone_Browser🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌓 @@ -517,63 +289,431 @@ create_shortcut_Standalone_Browser🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 create_shortcut_Standalone_Browser🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +create_shortcut_Standalone_Windowed🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_color_correct_Standalone🌑 +create_shortcut_Standalone_Windowed🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_color_correct_Standalone🌑 +create_shortcut_Standalone_Windowed🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_color_correct_Standalone🌑 +create_shortcut_Standalone_Windowed🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_color_correct_Standalone🌑 +create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 +create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 +create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 +create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 +create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 +create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 +create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 +create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 +create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 +create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 +create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_menu_option_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 +create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_launch_icon_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 +create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_chrome_apps_StandaloneNestedA🌓 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 +create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_platform_shortcut_StandaloneNestedA🌑 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌑 check_no_toolbar🌑 +create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_install_icon_not_shown🌕 +create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_launch_icon_shown🌕 +create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 +create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_launch_icon_shown🌕 +create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 +create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 +create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 +create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_tabbed🌑 +create_shortcut_StandaloneNestedA_Windowed🌕 navigate_browser_NotInstalled🌕 check_install_icon_shown🌕 +create_shortcut_StandaloneNestedA_Windowed🌕 navigate_browser_NotInstalled🌕 check_launch_icon_not_shown🌕 +create_shortcut_Standalone_Windowed🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_shown🌕 +create_shortcut_Standalone_Windowed🌕 navigate_browser_MinimalUi🌕 check_install_icon_shown🌕 +create_shortcut_Standalone_Windowed🌕 navigate_browser_MinimalUi🌕 check_launch_icon_not_shown🌕 +create_shortcut_Standalone_Windowed🌕 navigate_pwa_Standalone_MinimalUi🌕 check_app_title_Standalone_StandaloneOriginal🌕 +create_shortcut_Standalone_Windowed🌕 switch_incognito_profile🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 +create_shortcut_Standalone_Windowed🌕 set_open_in_tab_from_app_settings_Standalone🌕 check_app_in_list_tabbed_Standalone🌓 +create_shortcut_Standalone_Windowed🌕 set_open_in_tab_from_app_home_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 +create_shortcut_Standalone_Windowed🌕 set_open_in_tab_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 +create_shortcut_Standalone_Windowed🌕 set_open_in_tab_from_app_home_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 +create_shortcut_Standalone_Browser🌕 set_open_in_window_from_app_settings_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +create_shortcut_Standalone_Browser🌕 set_open_in_window_from_app_home_Standalone🌑 check_app_in_list_windowed_Standalone🌑 +create_shortcut_Standalone_Browser🌕 set_open_in_window_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 +create_shortcut_Standalone_Browser🌕 set_open_in_window_from_app_home_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_not_shown🌑 +create_shortcut_Standalone_Browser🌕 set_open_in_window_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 +create_shortcut_Standalone_Browser🌕 set_open_in_window_from_app_home_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 +create_shortcut_Wco_Windowed🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 +create_shortcut_Standalone_Windowed🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 +create_shortcut_Wco_Windowed🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 +create_shortcut_Wco_Windowed🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 +create_shortcut_Wco_Windowed🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 +create_shortcut_Wco_Windowed🌕 enable_window_controls_overlay_Wco🌕 launch_from_menu_option_Wco🌕 check_window_controls_overlay_Wco_On🌕 +create_shortcut_Wco_Windowed🌕 enable_window_controls_overlay_Wco🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_On🌕 +create_shortcut_Wco_Windowed🌕 enable_window_controls_overlay_Wco🌕 launch_from_chrome_apps_Wco🌓 check_window_controls_overlay_Wco_On🌕 +create_shortcut_Wco_Windowed🌕 enable_window_controls_overlay_Wco🌕 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_Wco_On🌑 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_MinimalUi_On🌑 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 +create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 +create_shortcut_Wco_Windowed🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_menu_option_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 +create_shortcut_Wco_Windowed🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 +create_shortcut_Wco_Windowed🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌓 check_window_controls_overlay_toggle_Wco_NotShown🌕 +create_shortcut_Wco_Windowed🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_toggle_Wco_NotShown🌑 +create_shortcut_Wco_Windowed🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_menu_option_Wco🌕 check_window_controls_overlay_Wco_Off🌕 +create_shortcut_Wco_Windowed🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_Off🌕 +create_shortcut_Wco_Windowed🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌓 check_window_controls_overlay_Wco_Off🌕 +create_shortcut_Wco_Windowed🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_Wco_Off🌑 +create_shortcut_Wco_Windowed🌕 check_window_controls_overlay_toggle_icon_Shown🌑 +create_shortcut_Wco_Windowed🌕 enter_full_screen_app🌕 check_window_controls_overlay_toggle_icon_NotShown🌑 +create_shortcut_Wco_Windowed🌕 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌑 +create_shortcut_FileHandler_Windowed🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 +create_shortcut_FileHandler_Browser🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 +create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 +create_shortcut_FileHandler_Browser🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 +create_shortcut_FileHandler_Windowed🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 +create_shortcut_FileHandler_Windowed🌕 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 +create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 +create_shortcut_FileHandler_Browser🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 +create_shortcut_FileHandler_Windowed🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 +create_shortcut_FileHandler_Windowed🌕 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 +create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 +create_shortcut_FileHandler_Browser🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 +create_shortcut_FileHandler_Windowed🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 +create_shortcut_FileHandler_Windowed🌕 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 +create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 +create_shortcut_FileHandler_Browser🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 +create_shortcut_FileHandler_Windowed🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 +create_shortcut_FileHandler_Windowed🌕 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 +create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 +create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 +create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneBarFile🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 +create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 +create_shortcut_FileHandler_Browser🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 +create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 +create_shortcut_FileHandler_Browser🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 +create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 +create_shortcut_FileHandler_Browser🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 +create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_not_handles_file_FileHandler_Foo🌑 check_site_not_handles_file_FileHandler_Bar🌑 +create_shortcut_FileHandler_Browser🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_not_handles_file_FileHandler_Foo🌑 check_site_not_handles_file_FileHandler_Bar🌑 +create_shortcut_FileHandler_Windowed🌕 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 +create_shortcut_FileHandler_Browser🌕 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 +create_shortcut_FileHandler_Windowed🌕 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 +create_shortcut_FileHandler_Browser🌕 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 +install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌓 +install_omnibox_icon_Standalone🌕 uninstall_from_menu_Standalone🌑 check_app_not_in_list_Standalone🌑 +install_omnibox_icon_Standalone🌕 uninstall_from_os_Standalone🌑 check_app_not_in_list_Standalone🌑 +install_omnibox_icon_Standalone🌕 uninstall_from_app_settings_Standalone🌑 check_app_not_in_list_Standalone🌑 +install_menu_option_Standalone🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌓 +install_menu_option_Standalone🌕 uninstall_from_menu_Standalone🌑 check_app_not_in_list_Standalone🌑 +install_menu_option_Standalone🌕 uninstall_from_os_Standalone🌑 check_app_not_in_list_Standalone🌑 +install_menu_option_Standalone🌕 uninstall_from_app_settings_Standalone🌑 check_app_not_in_list_Standalone🌑 +install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 +install_omnibox_icon_Standalone🌕 uninstall_from_menu_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 +install_omnibox_icon_Standalone🌕 uninstall_from_os_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 +install_omnibox_icon_Standalone🌕 uninstall_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 +install_menu_option_Standalone🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 +install_menu_option_Standalone🌕 uninstall_from_menu_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 +install_menu_option_Standalone🌕 uninstall_from_os_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 +install_menu_option_Standalone🌕 uninstall_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 +install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 +install_omnibox_icon_Standalone🌕 uninstall_from_menu_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 +install_omnibox_icon_Standalone🌕 uninstall_from_os_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 +install_omnibox_icon_Standalone🌕 uninstall_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 +install_menu_option_Standalone🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 +install_menu_option_Standalone🌕 uninstall_from_menu_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 +install_menu_option_Standalone🌕 uninstall_from_os_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 +install_menu_option_Standalone🌕 uninstall_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 +install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 +install_omnibox_icon_Standalone🌕 uninstall_from_menu_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 +install_omnibox_icon_Standalone🌕 uninstall_from_os_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 +install_omnibox_icon_Standalone🌕 uninstall_from_app_settings_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 +install_menu_option_Standalone🌕 uninstall_from_list_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 +install_menu_option_Standalone🌕 uninstall_from_menu_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 +install_menu_option_Standalone🌕 uninstall_from_os_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 +install_menu_option_Standalone🌕 uninstall_from_app_settings_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 +install_menu_option_NotPromotable🌕 uninstall_from_list_NotPromotable🌕 check_app_not_in_list_Standalone🌓 +install_menu_option_NotPromotable🌕 uninstall_from_list_NotPromotable🌕 check_platform_shortcut_not_exists_NotPromotable🌑 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌓 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌓 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌓 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌓 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌓 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌓 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌓 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌓 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 +install_omnibox_icon_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 +install_omnibox_icon_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 +install_omnibox_icon_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 +install_menu_option_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 +install_menu_option_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 +install_menu_option_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 +install_omnibox_icon_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 +install_menu_option_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 +install_omnibox_icon_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_display_standalone🌕 +install_omnibox_icon_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_display_standalone🌕 +install_omnibox_icon_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_display_standalone🌕 +install_omnibox_icon_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_display_standalone🌑 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_display_standalone🌕 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_display_standalone🌕 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_display_standalone🌕 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_display_standalone🌑 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_display_standalone🌕 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_display_standalone🌕 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_display_standalone🌕 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_display_standalone🌑 +install_menu_option_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_display_standalone🌕 +install_menu_option_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_display_standalone🌕 +install_menu_option_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_display_standalone🌕 +install_menu_option_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_display_standalone🌑 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 +install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 +install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 +install_menu_option_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 +install_menu_option_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 +install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌑 check_tab_created_One🌑 check_app_loaded_in_tab_NotPromotable🌑 +install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌑 check_tab_created_One🌑 check_app_loaded_in_tab_NotPromotable🌑 +install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 launch_from_chrome_apps_NotPromotable🌓 check_tab_created_One🌕 check_app_loaded_in_tab_NotPromotable🌓 +install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 launch_from_chrome_apps_NotPromotable🌓 check_tab_created_One🌕 check_app_loaded_in_tab_NotPromotable🌓 +install_omnibox_icon_MinimalUi🌕 launch_from_menu_option_MinimalUi🌕 check_window_display_minimal🌕 +install_omnibox_icon_MinimalUi🌕 launch_from_launch_icon_MinimalUi🌕 check_window_display_minimal🌕 +install_omnibox_icon_MinimalUi🌕 launch_from_chrome_apps_MinimalUi🌓 check_window_display_minimal🌕 +install_omnibox_icon_MinimalUi🌕 launch_from_platform_shortcut_MinimalUi🌑 check_window_display_minimal🌑 +install_policy_app_MinimalUi_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_MinimalUi🌕 check_window_display_minimal🌕 +install_policy_app_MinimalUi_WithShortcut_Windowed_WebApp🌓 launch_from_launch_icon_MinimalUi🌕 check_window_display_minimal🌕 +install_policy_app_MinimalUi_WithShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_MinimalUi🌓 check_window_display_minimal🌕 +install_policy_app_MinimalUi_WithShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_MinimalUi🌑 check_window_display_minimal🌑 +install_policy_app_MinimalUi_NoShortcut_Windowed_WebApp🌓 launch_from_menu_option_MinimalUi🌕 check_window_display_minimal🌕 +install_policy_app_MinimalUi_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_MinimalUi🌕 check_window_display_minimal🌕 +install_policy_app_MinimalUi_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_MinimalUi🌓 check_window_display_minimal🌕 +install_policy_app_MinimalUi_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_MinimalUi🌑 check_window_display_minimal🌑 +install_menu_option_MinimalUi🌕 launch_from_menu_option_MinimalUi🌕 check_window_display_minimal🌕 +install_menu_option_MinimalUi🌕 launch_from_launch_icon_MinimalUi🌕 check_window_display_minimal🌕 +install_menu_option_MinimalUi🌕 launch_from_chrome_apps_MinimalUi🌓 check_window_display_minimal🌕 +install_menu_option_MinimalUi🌕 launch_from_platform_shortcut_MinimalUi🌑 check_window_display_minimal🌑 +install_omnibox_icon_Tabbed🌕 maybe_close_pwa🌕 launch_from_menu_option_Tabbed🌕 check_window_display_tabbed🌕 +install_omnibox_icon_Tabbed🌕 maybe_close_pwa🌕 launch_from_launch_icon_Tabbed🌕 check_window_display_tabbed🌕 +install_omnibox_icon_Tabbed🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Tabbed🌓 check_window_display_tabbed🌕 +install_omnibox_icon_Tabbed🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Tabbed🌑 check_window_display_tabbed🌑 +install_policy_app_Tabbed_WithShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 launch_from_menu_option_Tabbed🌕 check_window_display_tabbed🌕 +install_policy_app_Tabbed_WithShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 launch_from_launch_icon_Tabbed🌕 check_window_display_tabbed🌕 +install_policy_app_Tabbed_WithShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 launch_from_chrome_apps_Tabbed🌓 check_window_display_tabbed🌕 +install_policy_app_Tabbed_WithShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 launch_from_platform_shortcut_Tabbed🌑 check_window_display_tabbed🌑 +install_policy_app_Tabbed_NoShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 launch_from_menu_option_Tabbed🌕 check_window_display_tabbed🌕 +install_policy_app_Tabbed_NoShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 launch_from_launch_icon_Tabbed🌕 check_window_display_tabbed🌕 +install_policy_app_Tabbed_NoShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 launch_from_chrome_apps_Tabbed🌓 check_window_display_tabbed🌕 +install_policy_app_Tabbed_NoShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 launch_from_platform_shortcut_Tabbed🌑 check_window_display_tabbed🌑 +install_menu_option_Tabbed🌕 maybe_close_pwa🌕 launch_from_menu_option_Tabbed🌕 check_window_display_tabbed🌕 +install_menu_option_Tabbed🌕 maybe_close_pwa🌕 launch_from_launch_icon_Tabbed🌕 check_window_display_tabbed🌕 +install_menu_option_Tabbed🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Tabbed🌓 check_window_display_tabbed🌕 +install_menu_option_Tabbed🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Tabbed🌑 check_window_display_tabbed🌑 +install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_NotPromotable🌕 check_window_created🌕 +install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_launch_icon_NotPromotable🌕 check_window_created🌕 +install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_NotPromotable🌓 check_window_created🌕 +install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 launch_from_menu_option_NotPromotable🌕 check_window_created🌕 +install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_NotPromotable🌕 check_window_created🌕 +install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_NotPromotable🌓 check_window_created🌕 +install_menu_option_NotPromotable🌕 launch_from_menu_option_NotPromotable🌕 check_window_created🌕 +install_menu_option_NotPromotable🌕 launch_from_launch_icon_NotPromotable🌕 check_window_created🌕 +install_menu_option_NotPromotable🌕 launch_from_chrome_apps_NotPromotable🌓 check_window_created🌕 +install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌑 check_window_created🌑 +install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌑 check_window_created🌑 +install_menu_option_NotPromotable🌕 launch_from_platform_shortcut_NotPromotable🌑 check_window_created🌑 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 create_shortcuts_from_list_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcuts_from_list_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 +install_omnibox_icon_Standalone🌕 delete_profile🌑 check_app_list_empty🌑 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 +install_menu_option_Standalone🌕 delete_profile🌑 check_app_list_empty🌑 +install_omnibox_icon_Standalone🌕 delete_profile🌑 check_app_not_in_list_Standalone🌑 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 +install_menu_option_Standalone🌕 delete_profile🌑 check_app_not_in_list_Standalone🌑 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 +install_omnibox_icon_Standalone🌕 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 +install_menu_option_Standalone🌕 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_platform_shortcut_Standalone🌑 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 +install_omnibox_icon_Standalone🌕 delete_platform_shortcut_Standalone🌑 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 +install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_platform_shortcut_Standalone🌑 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 +install_menu_option_Standalone🌕 delete_platform_shortcut_Standalone🌑 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 +install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 +install_omnibox_icon_Standalone🌕 open_in_chrome🌕 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌓 +install_menu_option_Standalone🌕 open_in_chrome🌕 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌓 +install_omnibox_icon_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 open_in_chrome🌕 check_tab_created_One🌕 +install_menu_option_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 open_in_chrome🌕 check_tab_created_One🌕 +install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌓 +install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌓 +install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 switch_profile_clients_Client1🌕 check_app_not_in_list_Standalone🌓 +install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 switch_profile_clients_Client1🌕 check_app_not_in_list_Standalone🌓 +install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 check_platform_shortcut_and_icon_Standalone🌓 +install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 check_platform_shortcut_and_icon_Standalone🌓 +install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 check_app_in_list_windowed_Standalone🌓 +install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 check_app_in_list_windowed_Standalone🌓 +install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 +install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 +install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 +install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 +sync_turn_off🌕 install_omnibox_icon_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌓 +sync_turn_off🌕 install_menu_option_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌓 +install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌓 sync_turn_on🌕 check_app_in_list_windowed_Standalone🌓 +install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌓 sync_turn_on🌕 check_app_in_list_windowed_Standalone🌓 +install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌓 sync_turn_on🌕 check_platform_shortcut_and_icon_Standalone🌓 +install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌓 sync_turn_on🌕 check_platform_shortcut_and_icon_Standalone🌓 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 +install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 +install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌓 +install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌓 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌓 +install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌓 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 +install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 +install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 +install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 +install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 +install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 +install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 +install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 +install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 +install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 +install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_window_created🌕 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_window_created🌕 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_window_created🌕 +install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 +install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_StandaloneNotStartUrl_WithShortcut_Windowed_WebShortcut🌓 launch_from_menu_option_StandaloneNotStartUrl🌕 check_app_navigation_StandaloneNotStartUrl🌕 @@ -592,10 +732,6 @@ install_policy_app_StandaloneNotStartUrl_WithShortcut_Browser_WebApp🌓 check_app_not_in_list_StandaloneNotStartUrl🌓 check_app_in_list_icon_correct_Standalone🌕 install_policy_app_StandaloneNotStartUrl_WithShortcut_Windowed_WebShortcut🌓 check_app_not_in_list_Standalone🌓 check_app_in_list_icon_correct_StandaloneNotStartUrl🌕 install_policy_app_StandaloneNotStartUrl_WithShortcut_Browser_WebShortcut🌓 check_app_not_in_list_Standalone🌓 check_app_in_list_icon_correct_StandaloneNotStartUrl🌕 -create_shortcut_Standalone_Windowed🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_color_correct_Standalone🌑 -create_shortcut_Standalone_Windowed🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_color_correct_Standalone🌑 -create_shortcut_Standalone_Windowed🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_color_correct_Standalone🌑 -create_shortcut_Standalone_Windowed🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_color_correct_Standalone🌑 install_omnibox_icon_Standalone🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_color_correct_Standalone🌑 install_omnibox_icon_Standalone🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_color_correct_Standalone🌑 install_omnibox_icon_Standalone🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_color_correct_Standalone🌑 @@ -608,10 +744,6 @@ install_menu_option_Standalone🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_color_correct_Standalone🌑 install_menu_option_Standalone🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_color_correct_Standalone🌑 install_menu_option_Standalone🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_color_correct_Standalone🌑 -create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 -create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 -create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 -create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 @@ -624,10 +756,6 @@ install_menu_option_Standalone🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_menu_option_Standalone🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_menu_option_Standalone🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 -create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 -create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 -create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 @@ -640,18 +768,12 @@ install_menu_option_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_menu_option_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_menu_option_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_menu_option_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 -create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_launch_icon_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 -create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_chrome_apps_StandaloneNestedA🌓 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 -create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_platform_shortcut_StandaloneNestedA🌑 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌑 check_no_toolbar🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_menu_option_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_launch_icon_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_chrome_apps_StandaloneNestedA🌓 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 @@ -664,26 +786,18 @@ install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_launch_icon_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_chrome_apps_StandaloneNestedA🌓 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_platform_shortcut_StandaloneNestedA🌑 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌑 check_no_toolbar🌑 -create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_install_icon_not_shown🌕 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_install_icon_not_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_install_icon_not_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_install_icon_not_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_launch_icon_shown🌕 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_launch_icon_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_launch_icon_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_launch_icon_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_launch_icon_shown🌕 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_launch_icon_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_launch_icon_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_launch_icon_shown🌕 -create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 -create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 -create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 -create_shortcut_Standalone_Windowed🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_tabbed🌑 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌓 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 @@ -709,12 +823,10 @@ navigate_browser_StandaloneNestedA🌕 check_install_icon_shown🌕 navigate_browser_NotPromotable🌕 check_create_shortcut_shown🌑 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌕 navigate_browser_NotInstalled🌕 check_install_icon_shown🌕 install_omnibox_icon_StandaloneNestedA🌕 navigate_browser_NotInstalled🌕 check_install_icon_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotInstalled🌕 check_install_icon_shown🌕 install_policy_app_StandaloneNestedA_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotInstalled🌕 check_install_icon_shown🌕 install_menu_option_StandaloneNestedA🌕 navigate_browser_NotInstalled🌕 check_install_icon_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌕 navigate_browser_NotInstalled🌕 check_launch_icon_not_shown🌕 install_omnibox_icon_StandaloneNestedA🌕 navigate_browser_NotInstalled🌕 check_launch_icon_not_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotInstalled🌕 check_launch_icon_not_shown🌕 install_policy_app_StandaloneNestedA_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotInstalled🌕 check_launch_icon_not_shown🌕 @@ -723,38 +835,22 @@ install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 install_menu_option_Standalone🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Windowed🌕 navigate_browser_MinimalUi🌕 check_install_icon_shown🌕 install_omnibox_icon_Standalone🌕 navigate_browser_MinimalUi🌕 check_install_icon_shown🌕 install_menu_option_Standalone🌕 navigate_browser_MinimalUi🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Windowed🌕 navigate_browser_MinimalUi🌕 check_launch_icon_not_shown🌕 install_omnibox_icon_Standalone🌕 navigate_browser_MinimalUi🌕 check_launch_icon_not_shown🌕 install_menu_option_Standalone🌕 navigate_browser_MinimalUi🌕 check_launch_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌕 navigate_pwa_Standalone_MinimalUi🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_omnibox_icon_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_menu_option_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 check_app_title_Standalone_StandaloneOriginal🌕 -create_shortcut_Standalone_Windowed🌕 switch_incognito_profile🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_omnibox_icon_Standalone🌕 switch_incognito_profile🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_menu_option_Standalone🌕 switch_incognito_profile🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌕 set_open_in_tab_from_app_settings_Standalone🌕 check_app_in_list_tabbed_Standalone🌓 -create_shortcut_Standalone_Windowed🌕 set_open_in_tab_from_app_home_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 check_app_in_list_tabbed_Standalone🌓 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 install_menu_option_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 check_app_in_list_tabbed_Standalone🌓 install_menu_option_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Windowed🌕 set_open_in_tab_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Windowed🌕 set_open_in_tab_from_app_home_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 install_menu_option_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Browser🌕 set_open_in_window_from_app_settings_Standalone🌕 check_app_in_list_windowed_Standalone🌓 -create_shortcut_Standalone_Browser🌕 set_open_in_window_from_app_home_Standalone🌑 check_app_in_list_windowed_Standalone🌑 -create_shortcut_Standalone_Browser🌕 set_open_in_window_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 -create_shortcut_Standalone_Browser🌕 set_open_in_window_from_app_home_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_not_shown🌑 -create_shortcut_Standalone_Browser🌕 set_open_in_window_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -create_shortcut_Standalone_Browser🌕 set_open_in_window_from_app_home_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 -create_shortcut_Wco_Windowed🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_omnibox_icon_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_menu_option_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 @@ -765,7 +861,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌓 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_toggle_Wco_Shown🌑 -create_shortcut_Standalone_Windowed🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 install_omnibox_icon_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 install_menu_option_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 @@ -776,7 +871,6 @@ install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Standalone🌓 check_window_controls_overlay_toggle_Standalone_NotShown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌑 check_window_controls_overlay_toggle_Standalone_NotShown🌑 -create_shortcut_Wco_Windowed🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 @@ -787,7 +881,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌓 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌑 enable_window_controls_overlay_Wco🌑 check_window_controls_overlay_Wco_On🌑 -create_shortcut_Wco_Windowed🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 @@ -798,7 +891,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌓 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌑 enable_window_controls_overlay_Wco🌑 check_window_controls_overlay_toggle_Wco_Shown🌑 -create_shortcut_Wco_Windowed🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 @@ -809,7 +901,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌓 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌑 enable_window_controls_overlay_Wco🌑 disable_window_controls_overlay_Wco🌑 check_window_controls_overlay_Wco_Off🌑 -create_shortcut_Wco_Windowed🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 @@ -820,10 +911,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌓 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌑 enable_window_controls_overlay_Wco🌑 disable_window_controls_overlay_Wco🌑 check_window_controls_overlay_toggle_Wco_Shown🌑 -create_shortcut_Wco_Windowed🌕 enable_window_controls_overlay_Wco🌕 launch_from_menu_option_Wco🌕 check_window_controls_overlay_Wco_On🌕 -create_shortcut_Wco_Windowed🌕 enable_window_controls_overlay_Wco🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_On🌕 -create_shortcut_Wco_Windowed🌕 enable_window_controls_overlay_Wco🌕 launch_from_chrome_apps_Wco🌓 check_window_controls_overlay_Wco_On🌕 -create_shortcut_Wco_Windowed🌕 enable_window_controls_overlay_Wco🌕 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_Wco_On🌑 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 launch_from_menu_option_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 launch_from_chrome_apps_Wco🌓 check_window_controls_overlay_Wco_On🌕 @@ -864,10 +951,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌑 enable_window_controls_overlay_Wco🌑 launch_from_launch_icon_Wco🌑 check_window_controls_overlay_Wco_On🌑 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌑 enable_window_controls_overlay_Wco🌑 launch_from_chrome_apps_Wco🌑 check_window_controls_overlay_Wco_On🌑 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌑 enable_window_controls_overlay_Wco🌑 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_Wco_On🌑 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 @@ -884,10 +967,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 @@ -904,10 +983,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_MinimalUi_On🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 @@ -924,10 +999,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_MinimalUi_On🌑 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 @@ -944,10 +1015,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 @@ -964,10 +1031,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_Wco_Windowed🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_menu_option_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 -create_shortcut_Wco_Windowed🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 -create_shortcut_Wco_Windowed🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌓 check_window_controls_overlay_toggle_Wco_NotShown🌕 -create_shortcut_Wco_Windowed🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_toggle_Wco_NotShown🌑 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_menu_option_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌓 check_window_controls_overlay_toggle_Wco_NotShown🌕 @@ -984,10 +1047,6 @@ install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌓 check_window_controls_overlay_toggle_Wco_NotShown🌕 install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_toggle_Wco_NotShown🌑 -create_shortcut_Wco_Windowed🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_menu_option_Wco🌕 check_window_controls_overlay_Wco_Off🌕 -create_shortcut_Wco_Windowed🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_Off🌕 -create_shortcut_Wco_Windowed🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌓 check_window_controls_overlay_Wco_Off🌕 -create_shortcut_Wco_Windowed🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_Wco_Off🌑 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_menu_option_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌓 check_window_controls_overlay_Wco_Off🌕 @@ -1004,13 +1063,10 @@ install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌓 check_window_controls_overlay_Wco_Off🌕 install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_Wco_Off🌑 -create_shortcut_Wco_Windowed🌕 check_window_controls_overlay_toggle_icon_Shown🌑 install_omnibox_icon_Wco🌕 check_window_controls_overlay_toggle_icon_Shown🌑 install_menu_option_Wco🌕 check_window_controls_overlay_toggle_icon_Shown🌑 -create_shortcut_Wco_Windowed🌕 enter_full_screen_app🌕 check_window_controls_overlay_toggle_icon_NotShown🌑 install_omnibox_icon_Wco🌕 enter_full_screen_app🌕 check_window_controls_overlay_toggle_icon_NotShown🌑 install_menu_option_Wco🌕 enter_full_screen_app🌕 check_window_controls_overlay_toggle_icon_NotShown🌑 -create_shortcut_Wco_Windowed🌕 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌑 install_omnibox_icon_Wco🌕 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌑 install_menu_option_Wco🌕 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌑 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 check_window_controls_overlay_toggle_icon_Shown🌑 @@ -1037,8 +1093,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌑 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌓 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌑 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌑 enter_full_screen_app🌑 exit_full_screen_app🌑 check_window_controls_overlay_toggle_icon_Shown🌑 -create_shortcut_FileHandler_Windowed🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 -create_shortcut_FileHandler_Browser🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 @@ -1048,80 +1102,59 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_menu_option_FileHandler🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 -create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌕 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 -create_shortcut_FileHandler_Browser🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 -create_shortcut_FileHandler_Windowed🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 -create_shortcut_FileHandler_Windowed🌕 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 -create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 -create_shortcut_FileHandler_Browser🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 -create_shortcut_FileHandler_Windowed🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 -create_shortcut_FileHandler_Windowed🌕 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 -create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 -create_shortcut_FileHandler_Browser🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 -create_shortcut_FileHandler_Windowed🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 -create_shortcut_FileHandler_Windowed🌕 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 -create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneBarFile🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneBarFile🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneBarFile🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneBarFile🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 -create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 -create_shortcut_FileHandler_Browser🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 @@ -1131,8 +1164,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 -create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 -create_shortcut_FileHandler_Browser🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 @@ -1142,8 +1173,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 -create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 @@ -1153,8 +1182,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_not_handles_file_FileHandler_Foo🌑 check_site_not_handles_file_FileHandler_Bar🌑 -create_shortcut_FileHandler_Browser🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_not_handles_file_FileHandler_Foo🌑 check_site_not_handles_file_FileHandler_Bar🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_not_handles_file_FileHandler_Foo🌑 check_site_not_handles_file_FileHandler_Bar🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_not_handles_file_FileHandler_Foo🌑 check_site_not_handles_file_FileHandler_Bar🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_not_handles_file_FileHandler_Foo🌑 check_site_not_handles_file_FileHandler_Bar🌑 @@ -1164,8 +1191,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_not_handles_file_FileHandler_Foo🌑 check_site_not_handles_file_FileHandler_Bar🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_not_handles_file_FileHandler_Foo🌑 check_site_not_handles_file_FileHandler_Bar🌑 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_not_handles_file_FileHandler_Foo🌑 check_site_not_handles_file_FileHandler_Bar🌑 -create_shortcut_FileHandler_Windowed🌕 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 -create_shortcut_FileHandler_Browser🌕 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 @@ -1175,8 +1200,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_menu_option_FileHandler🌕 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 -create_shortcut_FileHandler_Windowed🌕 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 -create_shortcut_FileHandler_Browser🌕 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑
diff --git a/chrome/test/webapps/coverage/coverage_linux.tsv b/chrome/test/webapps/coverage/coverage_linux.tsv index 68f9ef4..ab3cba8 100644 --- a/chrome/test/webapps/coverage/coverage_linux.tsv +++ b/chrome/test/webapps/coverage/coverage_linux.tsv
@@ -1,5 +1,5 @@ # This is a generated file. -# Full coverage: 55%, with partial coverage: 68% +# Full coverage: 77%, with partial coverage: 95% install_omnibox_icon_Standalone🌕 launch_from_menu_option_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_omnibox_icon_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_omnibox_icon_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 @@ -30,10 +30,6 @@ install_menu_option_Standalone🌕 manifest_update_icon_Standalone_AcceptUpdate🌕 await_manifest_update_Standalone🌕 check_app_icon_Standalone_Red🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 manifest_update_title_Standalone_StandaloneUpdated_SkipDialog🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_app_title_Standalone_StandaloneUpdated🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 manifest_update_title_Standalone_StandaloneUpdated_SkipDialog🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_app_title_Standalone_StandaloneUpdated🌕 -create_shortcut_Standalone_Windowed🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_user_cannot_set_run_on_os_login_app_home_Standalone🌑 -create_shortcut_Standalone_Browser🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌑 -create_shortcut_Standalone_Browser🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_user_cannot_set_run_on_os_login_app_home_Standalone🌑 install_omnibox_icon_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌕 install_omnibox_icon_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_user_cannot_set_run_on_os_login_app_home_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_blocked_Standalone🌕 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌕 @@ -54,10 +50,6 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_blocked_Standalone🌕 check_user_cannot_set_run_on_os_login_app_home_Standalone🌕 install_menu_option_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌕 install_menu_option_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_user_cannot_set_run_on_os_login_app_home_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_home_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_home_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 enable_run_on_os_login_from_app_settings_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 @@ -78,8 +70,6 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 enable_run_on_os_login_from_app_home_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 install_omnibox_icon_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 @@ -90,10 +80,6 @@ install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_menu_option_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_user_cannot_set_run_on_os_login_app_home_Standalone🌑 -create_shortcut_Standalone_Browser🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌑 -create_shortcut_Standalone_Browser🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_user_cannot_set_run_on_os_login_app_home_Standalone🌑 install_omnibox_icon_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌕 install_omnibox_icon_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_user_cannot_set_run_on_os_login_app_home_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌕 @@ -114,10 +100,6 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_user_cannot_set_run_on_os_login_app_home_Standalone🌕 install_menu_option_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌕 install_menu_option_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_user_cannot_set_run_on_os_login_app_home_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_home_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_home_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 enable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 @@ -138,14 +120,6 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 enable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 disable_run_on_os_login_from_app_settings_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 disable_run_on_os_login_from_app_home_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_home_Standalone🌑 disable_run_on_os_login_from_app_settings_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_home_Standalone🌑 disable_run_on_os_login_from_app_home_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 disable_run_on_os_login_from_app_settings_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 disable_run_on_os_login_from_app_home_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_home_Standalone🌑 disable_run_on_os_login_from_app_settings_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_home_Standalone🌑 disable_run_on_os_login_from_app_home_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 disable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 disable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 disable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 @@ -186,8 +160,6 @@ install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 disable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 disable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 disable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 remove_run_on_os_login_policy_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 remove_run_on_os_login_policy_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 install_omnibox_icon_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 @@ -198,10 +170,6 @@ install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_menu_option_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 remove_run_on_os_login_policy_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_home_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 remove_run_on_os_login_policy_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 remove_run_on_os_login_policy_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_home_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 remove_run_on_os_login_policy_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 enable_run_on_os_login_from_app_settings_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 @@ -222,10 +190,6 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 enable_run_on_os_login_from_app_home_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 switch_profile_clients_Client1🌑 sync_turn_off🌑 uninstall_from_list_Standalone🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 switch_profile_clients_Client1🌑 sync_turn_off🌑 uninstall_from_menu_Standalone🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 switch_profile_clients_Client1🌑 sync_turn_off🌑 uninstall_from_os_Standalone🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 switch_profile_clients_Client1🌑 sync_turn_off🌑 uninstall_from_app_settings_Standalone🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client1🌕 sync_turn_off🌕 uninstall_from_list_Standalone🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client1🌕 sync_turn_off🌕 uninstall_from_menu_Standalone🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client1🌕 sync_turn_off🌕 uninstall_from_os_Standalone🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 @@ -234,37 +198,29 @@ install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client1🌕 sync_turn_off🌕 uninstall_from_menu_Standalone🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client1🌕 sync_turn_off🌕 uninstall_from_os_Standalone🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client1🌕 sync_turn_off🌕 uninstall_from_app_settings_Standalone🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 switch_profile_clients_Client2🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client2🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client2🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 switch_profile_clients_Client2🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 install_locally_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client2🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 install_locally_Standalone🌓 check_run_on_os_login_enabled_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client2🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 install_locally_Standalone🌓 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_allowed_Standalone🌕 disable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_allowed_Standalone🌕 disable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_allowed_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_allowed_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 set_app_badge_Standalone🌑 clear_app_badge_Standalone🌑 check_app_badge_empty_Standalone🌑 install_omnibox_icon_Standalone🌕 set_app_badge_Standalone🌑 clear_app_badge_Standalone🌑 check_app_badge_empty_Standalone🌑 install_menu_option_Standalone🌕 set_app_badge_Standalone🌑 clear_app_badge_Standalone🌑 check_app_badge_empty_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 set_app_badge_Standalone🌑 check_app_badge_has_value_Standalone🌑 install_omnibox_icon_Standalone🌕 set_app_badge_Standalone🌑 check_app_badge_has_value_Standalone🌑 install_menu_option_Standalone🌕 set_app_badge_Standalone🌑 check_app_badge_has_value_Standalone🌑 navigate_browser_Standalone🌕 set_app_badge_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 navigate_pwa_Standalone_MinimalUi🌑 close_custom_toolbar🌑 check_app_navigation_is_start_url🌑 install_omnibox_icon_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 close_custom_toolbar🌕 check_app_navigation_is_start_url🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_pwa_Standalone_MinimalUi🌕 close_custom_toolbar🌕 check_app_navigation_is_start_url🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_pwa_Standalone_MinimalUi🌕 close_custom_toolbar🌕 check_app_navigation_is_start_url🌕 install_menu_option_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 close_custom_toolbar🌕 check_app_navigation_is_start_url🌕 -create_shortcut_Standalone_Windowed🌑 navigate_pwa_Standalone_MinimalUi🌑 check_custom_toolbar🌑 install_omnibox_icon_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 check_custom_toolbar🌕 install_menu_option_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 check_custom_toolbar🌕 navigate_browser_Standalone🌕 check_app_not_in_list_Standalone🌕 navigate_browser_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 navigate_browser_NotPromotable🌕 check_app_not_in_list_Standalone🌕 navigate_browser_NotPromotable🌕 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 check_app_title_Standalone_StandaloneOriginal🌑 -create_shortcut_Standalone_Browser🌑 check_app_title_Standalone_StandaloneOriginal🌑 install_omnibox_icon_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 check_app_title_Standalone_StandaloneOriginal🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_title_Standalone_StandaloneOriginal🌕 @@ -276,110 +232,79 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_title_Standalone_StandaloneOriginal🌕 install_menu_option_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_omnibox_icon_Screenshots🌕 -create_shortcut_Standalone_Windowed🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_not_exists_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_not_exists_Standalone🌑 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_not_exists_NotPromotable🌑 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_Standalone_Browser🌑 check_app_in_list_tabbed_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_in_list_tabbed_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_in_list_tabbed_Standalone🌕 -create_shortcut_Standalone_Browser🌑 navigate_browser_Standalone🌑 check_create_shortcut_shown🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_create_shortcut_shown🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_create_shortcut_shown🌑 -create_shortcut_Standalone_Browser🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Browser🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 -create_shortcut_NotPromotable_Browser🌑 check_app_in_list_tabbed_NotPromotable🌑 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 check_app_in_list_tabbed_NotPromotable🌕 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 check_app_in_list_tabbed_NotPromotable🌕 -create_shortcut_NotPromotable_Browser🌑 navigate_browser_NotPromotable🌑 check_create_shortcut_shown🌑 -install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_create_shortcut_shown🌑 -install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_create_shortcut_shown🌑 -create_shortcut_NotPromotable_Browser🌑 navigate_browser_NotPromotable🌑 check_install_icon_not_shown🌑 +install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 +install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 -create_shortcut_NotPromotable_Browser🌑 navigate_browser_NotPromotable🌑 check_launch_icon_not_shown🌑 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_launch_icon_not_shown🌕 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_launch_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 navigate_browser_Standalone🌑 check_create_shortcut_not_shown🌑 install_omnibox_icon_Standalone🌕 navigate_browser_Standalone🌕 check_create_shortcut_not_shown🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_create_shortcut_not_shown🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_create_shortcut_not_shown🌑 install_menu_option_Standalone🌕 navigate_browser_Standalone🌕 check_create_shortcut_not_shown🌑 -create_shortcut_Standalone_Windowed🌑 navigate_browser_Standalone🌑 check_install_icon_not_shown🌑 install_omnibox_icon_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_menu_option_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 install_omnibox_icon_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_menu_option_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -create_shortcut_MinimalUi_Windowed🌑 navigate_browser_MinimalUi🌑 check_launch_icon_shown🌑 install_omnibox_icon_MinimalUi🌕 navigate_browser_MinimalUi🌕 check_launch_icon_shown🌕 install_policy_app_MinimalUi_WithShortcut_Windowed_WebApp🌓 navigate_browser_MinimalUi🌕 check_launch_icon_shown🌕 install_policy_app_MinimalUi_NoShortcut_Windowed_WebApp🌓 navigate_browser_MinimalUi🌕 check_launch_icon_shown🌕 install_menu_option_MinimalUi🌕 navigate_browser_MinimalUi🌕 check_launch_icon_shown🌕 -create_shortcut_Tabbed_Windowed🌑 check_app_in_list_windowed_Tabbed🌑 install_omnibox_icon_Tabbed🌕 check_app_in_list_windowed_Tabbed🌕 install_policy_app_Tabbed_WithShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_Tabbed🌕 install_policy_app_Tabbed_NoShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_Tabbed🌕 install_menu_option_Tabbed🌕 check_app_in_list_windowed_Tabbed🌕 -create_shortcut_Tabbed_Windowed🌑 navigate_browser_Tabbed🌑 check_launch_icon_shown🌑 check_install_icon_not_shown🌑 install_omnibox_icon_Tabbed🌕 navigate_browser_Tabbed🌕 check_launch_icon_shown🌕 check_install_icon_not_shown🌕 install_policy_app_Tabbed_WithShortcut_Windowed_WebApp🌓 navigate_browser_Tabbed🌕 check_launch_icon_shown🌕 check_install_icon_not_shown🌕 install_policy_app_Tabbed_NoShortcut_Windowed_WebApp🌓 navigate_browser_Tabbed🌕 check_launch_icon_shown🌕 check_install_icon_not_shown🌕 install_menu_option_Tabbed🌕 navigate_browser_Tabbed🌕 check_launch_icon_shown🌕 check_install_icon_not_shown🌕 -create_shortcut_NotPromotable_Windowed🌑 check_app_in_list_windowed_NotPromotable🌑 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_NotPromotable🌕 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_NotPromotable🌕 install_menu_option_NotPromotable🌕 check_app_in_list_windowed_NotPromotable🌕 -create_shortcut_NotPromotable_Windowed🌑 navigate_browser_NotPromotable🌑 check_create_shortcut_not_shown🌑 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_create_shortcut_not_shown🌑 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_create_shortcut_not_shown🌑 install_menu_option_NotPromotable🌕 navigate_browser_NotPromotable🌕 check_create_shortcut_not_shown🌑 -create_shortcut_NotPromotable_Windowed🌑 navigate_browser_NotPromotable🌑 check_install_icon_not_shown🌑 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 install_menu_option_NotPromotable🌕 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 -create_shortcut_NotPromotable_Windowed🌑 navigate_browser_NotPromotable🌑 check_launch_icon_shown🌑 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_launch_icon_shown🌕 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_launch_icon_shown🌕 install_menu_option_NotPromotable🌕 navigate_browser_NotPromotable🌕 check_launch_icon_shown🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +install_omnibox_icon_Standalone🌕 check_window_created🌕 +install_omnibox_icon_Standalone🌕 close_pwa🌕 check_app_in_list_windowed_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +install_omnibox_icon_Standalone🌕 close_pwa🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 check_launch_icon_not_shown🌕 +install_menu_option_ChromeUrl🌕 check_window_created🌕 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_NotPromotable🌓 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_NotPromotable🌓 -create_shortcut_NotPromotable_Windowed🌑 check_platform_shortcut_and_icon_NotPromotable🌑 -create_shortcut_NotPromotable_Browser🌑 check_platform_shortcut_and_icon_NotPromotable🌑 install_menu_option_NotPromotable🌕 check_platform_shortcut_and_icon_NotPromotable🌓 -create_shortcut_Standalone_Browser🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 -create_shortcut_Standalone_Browser🌑 launch_from_platform_shortcut_Standalone🌑 install_omnibox_icon_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 -create_shortcut_Standalone_Windowed🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 close_pwa🌑 check_app_in_list_windowed_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 close_pwa🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 check_launch_icon_not_shown🌑 -install_menu_option_ChromeUrl🌕 check_window_created🌕 -create_shortcut_ChromeUrl_Windowed🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_list_Standalone🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_menu_Standalone🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_os_Standalone🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_app_settings_Standalone🌑 check_app_not_in_list_Standalone🌑 install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌕 install_omnibox_icon_Standalone🌕 uninstall_from_menu_Standalone🌕 check_app_not_in_list_Standalone🌕 install_omnibox_icon_Standalone🌕 uninstall_from_os_Standalone🌑 check_app_not_in_list_Standalone🌑 @@ -388,10 +313,6 @@ install_menu_option_Standalone🌕 uninstall_from_menu_Standalone🌕 check_app_not_in_list_Standalone🌕 install_menu_option_Standalone🌕 uninstall_from_os_Standalone🌑 check_app_not_in_list_Standalone🌑 install_menu_option_Standalone🌕 uninstall_from_app_settings_Standalone🌕 check_app_not_in_list_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 uninstall_from_list_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_menu_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_os_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_omnibox_icon_Standalone🌕 uninstall_from_menu_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_omnibox_icon_Standalone🌕 uninstall_from_os_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 @@ -400,10 +321,6 @@ install_menu_option_Standalone🌕 uninstall_from_menu_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_menu_option_Standalone🌕 uninstall_from_os_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 install_menu_option_Standalone🌕 uninstall_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Windowed🌑 uninstall_from_list_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_menu_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_os_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_omnibox_icon_Standalone🌕 uninstall_from_menu_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_omnibox_icon_Standalone🌕 uninstall_from_os_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 @@ -412,10 +329,6 @@ install_menu_option_Standalone🌕 uninstall_from_menu_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_menu_option_Standalone🌕 uninstall_from_os_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 install_menu_option_Standalone🌕 uninstall_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 uninstall_from_list_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_menu_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_os_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_app_settings_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 install_omnibox_icon_Standalone🌕 uninstall_from_menu_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 install_omnibox_icon_Standalone🌕 uninstall_from_os_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 @@ -424,28 +337,14 @@ install_menu_option_Standalone🌕 uninstall_from_menu_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 install_menu_option_Standalone🌕 uninstall_from_os_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 install_menu_option_Standalone🌕 uninstall_from_app_settings_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_list_NotPromotable🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_menu_NotPromotable🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_os_NotPromotable🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_app_settings_NotPromotable🌑 check_app_not_in_list_Standalone🌑 install_menu_option_NotPromotable🌕 uninstall_from_list_NotPromotable🌕 check_app_not_in_list_Standalone🌕 install_menu_option_NotPromotable🌕 uninstall_from_menu_NotPromotable🌕 check_app_not_in_list_Standalone🌕 install_menu_option_NotPromotable🌕 uninstall_from_os_NotPromotable🌑 check_app_not_in_list_Standalone🌑 install_menu_option_NotPromotable🌕 uninstall_from_app_settings_NotPromotable🌕 check_app_not_in_list_Standalone🌕 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_list_NotPromotable🌑 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_menu_NotPromotable🌑 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_os_NotPromotable🌑 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_app_settings_NotPromotable🌑 check_platform_shortcut_not_exists_NotPromotable🌑 install_menu_option_NotPromotable🌕 uninstall_from_list_NotPromotable🌕 check_platform_shortcut_not_exists_NotPromotable🌑 install_menu_option_NotPromotable🌕 uninstall_from_menu_NotPromotable🌕 check_platform_shortcut_not_exists_NotPromotable🌑 install_menu_option_NotPromotable🌕 uninstall_from_os_NotPromotable🌑 check_platform_shortcut_not_exists_NotPromotable🌑 install_menu_option_NotPromotable🌕 uninstall_from_app_settings_NotPromotable🌕 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_Standalone_Browser🌑 uninstall_from_list_Standalone🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Browser🌑 uninstall_from_list_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Browser🌑 uninstall_from_list_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 -create_shortcut_Standalone_Browser🌑 uninstall_from_list_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_NotPromotable_Browser🌑 uninstall_from_list_NotPromotable🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_NotPromotable_Browser🌑 uninstall_from_list_NotPromotable🌑 check_platform_shortcut_not_exists_NotPromotable🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌕 @@ -466,9 +365,6 @@ install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 @@ -481,15 +377,10 @@ install_menu_option_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_menu_option_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 launch_from_menu_option_Standalone🌑 check_window_display_standalone🌑 -create_shortcut_Standalone_Windowed🌑 launch_from_launch_icon_Standalone🌑 check_window_display_standalone🌑 -create_shortcut_Standalone_Windowed🌑 launch_from_chrome_apps_Standalone🌑 check_window_display_standalone🌑 -create_shortcut_Standalone_Windowed🌑 launch_from_platform_shortcut_Standalone🌑 check_window_display_standalone🌑 install_omnibox_icon_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_display_standalone🌕 install_omnibox_icon_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_display_standalone🌕 install_omnibox_icon_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_display_standalone🌕 @@ -506,14 +397,6 @@ install_menu_option_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_display_standalone🌕 install_menu_option_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_display_standalone🌕 install_menu_option_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_display_standalone🌕 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 @@ -530,8 +413,6 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_settings_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_home_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_app_loaded_in_tab_Standalone🌑 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_app_loaded_in_tab_Standalone🌕 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_app_loaded_in_tab_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_app_loaded_in_tab_Standalone🌕 @@ -540,8 +421,6 @@ install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_app_loaded_in_tab_Standalone🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_app_loaded_in_tab_Standalone🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_app_loaded_in_tab_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_settings_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 @@ -550,16 +429,10 @@ install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 -create_shortcut_NotPromotable_Browser🌑 launch_from_platform_shortcut_NotPromotable🌑 check_tab_created_One🌑 check_app_loaded_in_tab_NotPromotable🌑 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌓 check_tab_created_One🌕 check_app_loaded_in_tab_NotPromotable🌕 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌓 check_tab_created_One🌕 check_app_loaded_in_tab_NotPromotable🌕 -create_shortcut_NotPromotable_Browser🌑 launch_from_chrome_apps_NotPromotable🌑 check_tab_not_created🌑 check_app_loaded_in_tab_NotPromotable🌑 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 launch_from_chrome_apps_NotPromotable🌕 check_tab_not_created🌕 check_app_loaded_in_tab_NotPromotable🌕 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 launch_from_chrome_apps_NotPromotable🌕 check_tab_not_created🌕 check_app_loaded_in_tab_NotPromotable🌕 -create_shortcut_MinimalUi_Windowed🌑 launch_from_menu_option_MinimalUi🌑 check_window_display_minimal🌑 -create_shortcut_MinimalUi_Windowed🌑 launch_from_launch_icon_MinimalUi🌑 check_window_display_minimal🌑 -create_shortcut_MinimalUi_Windowed🌑 launch_from_chrome_apps_MinimalUi🌑 check_window_display_minimal🌑 -create_shortcut_MinimalUi_Windowed🌑 launch_from_platform_shortcut_MinimalUi🌑 check_window_display_minimal🌑 install_omnibox_icon_MinimalUi🌕 launch_from_menu_option_MinimalUi🌕 check_window_display_minimal🌕 install_omnibox_icon_MinimalUi🌕 launch_from_launch_icon_MinimalUi🌕 check_window_display_minimal🌕 install_omnibox_icon_MinimalUi🌕 launch_from_chrome_apps_MinimalUi🌕 check_window_display_minimal🌕 @@ -576,10 +449,6 @@ install_menu_option_MinimalUi🌕 launch_from_launch_icon_MinimalUi🌕 check_window_display_minimal🌕 install_menu_option_MinimalUi🌕 launch_from_chrome_apps_MinimalUi🌕 check_window_display_minimal🌕 install_menu_option_MinimalUi🌕 launch_from_platform_shortcut_MinimalUi🌓 check_window_display_minimal🌕 -create_shortcut_Tabbed_Windowed🌑 maybe_close_pwa🌑 launch_from_menu_option_Tabbed🌑 check_window_display_tabbed🌑 -create_shortcut_Tabbed_Windowed🌑 maybe_close_pwa🌑 launch_from_launch_icon_Tabbed🌑 check_window_display_tabbed🌑 -create_shortcut_Tabbed_Windowed🌑 maybe_close_pwa🌑 launch_from_chrome_apps_Tabbed🌑 check_window_display_tabbed🌑 -create_shortcut_Tabbed_Windowed🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_Tabbed🌑 check_window_display_tabbed🌑 install_omnibox_icon_Tabbed🌕 maybe_close_pwa🌕 launch_from_menu_option_Tabbed🌕 check_window_display_tabbed🌕 install_omnibox_icon_Tabbed🌕 maybe_close_pwa🌕 launch_from_launch_icon_Tabbed🌕 check_window_display_tabbed🌕 install_omnibox_icon_Tabbed🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Tabbed🌕 check_window_display_tabbed🌕 @@ -596,9 +465,6 @@ install_menu_option_Tabbed🌕 maybe_close_pwa🌕 launch_from_launch_icon_Tabbed🌕 check_window_display_tabbed🌕 install_menu_option_Tabbed🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Tabbed🌕 check_window_display_tabbed🌕 install_menu_option_Tabbed🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Tabbed🌓 check_window_display_tabbed🌕 -create_shortcut_NotPromotable_Windowed🌑 launch_from_menu_option_NotPromotable🌑 check_window_created🌑 -create_shortcut_NotPromotable_Windowed🌑 launch_from_launch_icon_NotPromotable🌑 check_window_created🌑 -create_shortcut_NotPromotable_Windowed🌑 launch_from_chrome_apps_NotPromotable🌑 check_window_created🌑 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_NotPromotable🌕 check_window_created🌕 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_launch_icon_NotPromotable🌕 check_window_created🌕 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_NotPromotable🌕 check_window_created🌕 @@ -608,14 +474,11 @@ install_menu_option_NotPromotable🌕 launch_from_menu_option_NotPromotable🌕 check_window_created🌕 install_menu_option_NotPromotable🌕 launch_from_launch_icon_NotPromotable🌕 check_window_created🌕 install_menu_option_NotPromotable🌕 launch_from_chrome_apps_NotPromotable🌕 check_window_created🌕 -create_shortcut_NotPromotable_Windowed🌑 launch_from_platform_shortcut_NotPromotable🌑 check_window_created🌑 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌓 check_window_created🌕 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌓 check_window_created🌕 install_menu_option_NotPromotable🌕 launch_from_platform_shortcut_NotPromotable🌓 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 create_shortcuts_from_list_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcuts_from_list_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 delete_profile🌑 check_app_list_empty🌑 -create_shortcut_Standalone_Browser🌑 delete_profile🌑 check_app_list_empty🌑 install_omnibox_icon_Standalone🌕 delete_profile🌑 check_app_list_empty🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 @@ -626,8 +489,6 @@ install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 install_menu_option_Standalone🌕 delete_profile🌑 check_app_list_empty🌑 -create_shortcut_Standalone_Windowed🌑 delete_profile🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Browser🌑 delete_profile🌑 check_app_not_in_list_Standalone🌑 install_omnibox_icon_Standalone🌕 delete_profile🌑 check_app_not_in_list_Standalone🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 @@ -640,26 +501,18 @@ install_menu_option_Standalone🌕 delete_profile🌑 check_app_not_in_list_Standalone🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Browser🌑 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 install_omnibox_icon_Standalone🌕 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 install_menu_option_Standalone🌕 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Browser🌑 delete_platform_shortcut_Standalone🌑 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 delete_platform_shortcut_Standalone🌑 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_platform_shortcut_Standalone🌕 create_shortcuts_from_list_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_omnibox_icon_Standalone🌕 delete_platform_shortcut_Standalone🌕 create_shortcuts_from_list_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_platform_shortcut_Standalone🌕 create_shortcuts_from_list_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_menu_option_Standalone🌕 delete_platform_shortcut_Standalone🌕 create_shortcuts_from_list_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcuts_from_list_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 create_shortcuts_from_list_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 open_in_chrome🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 install_omnibox_icon_Standalone🌕 open_in_chrome🌕 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_menu_option_Standalone🌕 open_in_chrome🌕 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 navigate_pwa_Standalone_MinimalUi🌑 open_in_chrome🌑 check_tab_created_One🌑 install_omnibox_icon_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 open_in_chrome🌕 check_tab_created_One🌕 install_menu_option_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 open_in_chrome🌕 check_tab_created_One🌕 -create_shortcut_Standalone_Windowed🌑 open_app_settings_from_chrome_apps_Standalone🌑 check_browser_navigation_is_app_settings_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 open_app_settings_from_app_menu_Standalone🌑 check_browser_navigation_is_app_settings_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 open_app_settings_from_command_Standalone🌑 check_browser_navigation_is_app_settings_Standalone🌑 install_omnibox_icon_Standalone🌕 open_app_settings_from_chrome_apps_Standalone🌕 check_browser_navigation_is_app_settings_Standalone🌕 install_omnibox_icon_Standalone🌕 open_app_settings_from_app_menu_Standalone🌕 check_browser_navigation_is_app_settings_Standalone🌕 install_omnibox_icon_Standalone🌕 open_app_settings_from_command_Standalone🌕 check_browser_navigation_is_app_settings_Standalone🌕 @@ -672,103 +525,50 @@ install_menu_option_Standalone🌕 open_app_settings_from_chrome_apps_Standalone🌕 check_browser_navigation_is_app_settings_Standalone🌕 install_menu_option_Standalone🌕 open_app_settings_from_app_menu_Standalone🌕 check_browser_navigation_is_app_settings_Standalone🌕 install_menu_option_Standalone🌕 open_app_settings_from_command_Standalone🌕 check_browser_navigation_is_app_settings_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_not_shown🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -create_shortcut_NotPromotable_Browser🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 check_app_in_list_tabbed_NotPromotable🌑 -create_shortcut_NotPromotable_Browser🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 navigate_browser_NotPromotable🌑 check_launch_icon_not_shown🌑 -create_shortcut_NotPromotable_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 check_app_in_list_windowed_NotPromotable🌑 install_menu_option_NotPromotable🌕 switch_profile_clients_Client2🌕 install_locally_NotPromotable🌓 check_app_in_list_windowed_NotPromotable🌕 -create_shortcut_NotPromotable_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 navigate_browser_NotPromotable🌑 check_install_icon_not_shown🌑 install_menu_option_NotPromotable🌕 switch_profile_clients_Client2🌕 install_locally_NotPromotable🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 -create_shortcut_NotPromotable_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 navigate_browser_NotPromotable🌑 check_launch_icon_shown🌑 install_menu_option_NotPromotable🌕 switch_profile_clients_Client2🌕 install_locally_NotPromotable🌓 navigate_browser_NotPromotable🌕 check_launch_icon_shown🌕 -create_shortcut_NotPromotable_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 check_platform_shortcut_and_icon_NotPromotable🌑 -create_shortcut_NotPromotable_Browser🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 check_platform_shortcut_and_icon_NotPromotable🌑 install_menu_option_NotPromotable🌕 switch_profile_clients_Client2🌕 install_locally_NotPromotable🌓 check_platform_shortcut_and_icon_NotPromotable🌓 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_site_loaded_in_tab_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_site_loaded_in_tab_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_site_loaded_in_tab_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 uninstall_from_list_Standalone🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 uninstall_from_list_Standalone🌑 check_app_not_in_list_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 uninstall_from_list_Standalone🌑 switch_profile_clients_Client1🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 uninstall_from_list_Standalone🌑 switch_profile_clients_Client1🌑 check_app_not_in_list_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 switch_profile_clients_Client1🌕 check_app_not_in_list_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 switch_profile_clients_Client1🌕 check_app_not_in_list_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 check_platform_shortcut_not_exists_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 check_platform_shortcut_not_exists_Standalone🌑 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 -create_shortcut_NotPromotable_Windowed🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_NotPromotable🌑 -create_shortcut_NotPromotable_Browser🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_NotPromotable🌑 install_menu_option_NotPromotable🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_NotPromotable🌕 -create_shortcut_NotPromotable_Windowed🌑 switch_profile_clients_Client2🌑 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_NotPromotable_Browser🌑 switch_profile_clients_Client2🌑 check_platform_shortcut_not_exists_NotPromotable🌑 install_menu_option_NotPromotable🌕 switch_profile_clients_Client2🌕 check_platform_shortcut_not_exists_NotPromotable🌑 -sync_turn_off🌕 create_shortcut_Standalone_Windowed🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 -sync_turn_off🌕 create_shortcut_Standalone_Browser🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 sync_turn_off🌕 install_omnibox_icon_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 sync_turn_off🌕 install_menu_option_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 -sync_sign_out🌕 create_shortcut_Standalone_Windowed🌑 sync_sign_in🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 -sync_sign_out🌕 create_shortcut_Standalone_Browser🌑 sync_sign_in🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 sync_sign_out🌕 install_omnibox_icon_Standalone🌕 sync_sign_in🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 sync_sign_out🌕 install_menu_option_Standalone🌕 sync_sign_in🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 check_app_not_in_list_Standalone🌑 sync_turn_on🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 check_app_not_in_list_Standalone🌑 sync_turn_on🌑 check_app_in_list_not_locally_installed_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌕 sync_turn_on🌕 check_app_in_list_not_locally_installed_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌕 sync_turn_on🌕 check_app_in_list_not_locally_installed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 check_app_not_in_list_Standalone🌑 sync_turn_on🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 check_app_not_in_list_Standalone🌑 sync_turn_on🌑 check_platform_shortcut_not_exists_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌕 sync_turn_on🌕 check_platform_shortcut_not_exists_Standalone🌑 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌕 sync_turn_on🌕 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_list_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_menu_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_os_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_app_settings_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_list_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_menu_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_os_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_app_settings_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 switch_profile_clients_Client1🌕 uninstall_from_list_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 switch_profile_clients_Client1🌕 uninstall_from_menu_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 switch_profile_clients_Client1🌕 uninstall_from_os_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 @@ -777,150 +577,84 @@ install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 switch_profile_clients_Client1🌕 uninstall_from_menu_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 switch_profile_clients_Client1🌕 uninstall_from_os_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 switch_profile_clients_Client1🌕 uninstall_from_app_settings_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 check_app_in_list_windowed_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 check_app_in_list_windowed_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 check_platform_shortcut_and_icon_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 check_platform_shortcut_and_icon_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 check_window_created🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_window_created🌕 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 check_window_created🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_window_created🌕 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_StandaloneNotStartUrl_WithShortcut_Windowed_WebShortcut🌓 launch_from_menu_option_StandaloneNotStartUrl🌕 check_app_navigation_StandaloneNotStartUrl🌕 @@ -939,10 +673,6 @@ install_policy_app_StandaloneNotStartUrl_WithShortcut_Browser_WebApp🌓 check_app_not_in_list_StandaloneNotStartUrl🌕 check_app_in_list_icon_correct_Standalone🌕 install_policy_app_StandaloneNotStartUrl_WithShortcut_Windowed_WebShortcut🌓 check_app_not_in_list_Standalone🌕 check_app_in_list_icon_correct_StandaloneNotStartUrl🌕 install_policy_app_StandaloneNotStartUrl_WithShortcut_Browser_WebShortcut🌓 check_app_not_in_list_Standalone🌕 check_app_in_list_icon_correct_StandaloneNotStartUrl🌕 -create_shortcut_Standalone_Windowed🌑 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_color_correct_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_color_correct_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_color_correct_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_color_correct_Standalone🌑 install_omnibox_icon_Standalone🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_color_correct_Standalone🌑 install_omnibox_icon_Standalone🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_color_correct_Standalone🌑 install_omnibox_icon_Standalone🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_color_correct_Standalone🌑 @@ -955,10 +685,6 @@ install_menu_option_Standalone🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_color_correct_Standalone🌑 install_menu_option_Standalone🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_color_correct_Standalone🌑 install_menu_option_Standalone🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_color_correct_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Browser🌑 await_manifest_update_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Browser🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Browser🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Browser🌑 await_manifest_update_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 @@ -971,10 +697,6 @@ install_menu_option_Standalone🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_menu_option_Standalone🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_menu_option_Standalone🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_MinimalUi🌑 await_manifest_update_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_MinimalUi🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_MinimalUi🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_MinimalUi🌑 await_manifest_update_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 @@ -987,18 +709,12 @@ install_menu_option_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_menu_option_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_menu_option_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 navigate_browser_Standalone🌑 check_install_icon_not_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 launch_from_menu_option_StandaloneNestedA🌑 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌑 check_no_toolbar🌑 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 launch_from_launch_icon_StandaloneNestedA🌑 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌑 check_no_toolbar🌑 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 launch_from_chrome_apps_StandaloneNestedA🌑 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌑 check_no_toolbar🌑 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 launch_from_platform_shortcut_StandaloneNestedA🌑 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌑 check_no_toolbar🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_menu_option_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_launch_icon_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_chrome_apps_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 @@ -1011,26 +727,18 @@ install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_launch_icon_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_chrome_apps_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_platform_shortcut_StandaloneNestedA🌓 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 navigate_browser_StandaloneNestedB🌑 check_install_icon_not_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_install_icon_not_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_install_icon_not_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_install_icon_not_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 navigate_browser_StandaloneNestedB🌑 check_launch_icon_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_launch_icon_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_launch_icon_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_launch_icon_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 navigate_browser_StandaloneNestedA🌑 check_install_icon_not_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 navigate_browser_StandaloneNestedA🌑 check_launch_icon_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_launch_icon_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_launch_icon_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_launch_icon_shown🌕 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Tabbed🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_tabbed🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Tabbed🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_tabbed🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Tabbed🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_tabbed🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Tabbed🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_tabbed🌑 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 @@ -1056,12 +764,10 @@ navigate_browser_StandaloneNestedA🌕 check_install_icon_shown🌕 navigate_browser_NotPromotable🌕 check_create_shortcut_shown🌑 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 navigate_browser_NotInstalled🌑 check_install_icon_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 navigate_browser_NotInstalled🌕 check_install_icon_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotInstalled🌕 check_install_icon_shown🌕 install_policy_app_StandaloneNestedA_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotInstalled🌕 check_install_icon_shown🌕 install_menu_option_StandaloneNestedA🌕 navigate_browser_NotInstalled🌕 check_install_icon_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 navigate_browser_NotInstalled🌑 check_launch_icon_not_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 navigate_browser_NotInstalled🌕 check_launch_icon_not_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotInstalled🌕 check_launch_icon_not_shown🌕 install_policy_app_StandaloneNestedA_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotInstalled🌕 check_launch_icon_not_shown🌕 @@ -1070,37 +776,22 @@ install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 install_menu_option_Standalone🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 navigate_browser_MinimalUi🌑 check_install_icon_shown🌑 install_omnibox_icon_Standalone🌕 navigate_browser_MinimalUi🌕 check_install_icon_shown🌕 install_menu_option_Standalone🌕 navigate_browser_MinimalUi🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Windowed🌑 navigate_browser_MinimalUi🌑 check_launch_icon_not_shown🌑 install_omnibox_icon_Standalone🌕 navigate_browser_MinimalUi🌕 check_launch_icon_not_shown🌕 install_menu_option_Standalone🌕 navigate_browser_MinimalUi🌕 check_launch_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 navigate_pwa_Standalone_MinimalUi🌑 check_app_title_Standalone_StandaloneOriginal🌑 install_omnibox_icon_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_menu_option_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 check_app_title_Standalone_StandaloneOriginal🌕 -create_shortcut_Standalone_Windowed🌑 switch_incognito_profile🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 install_omnibox_icon_Standalone🌕 switch_incognito_profile🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_menu_option_Standalone🌕 switch_incognito_profile🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_settings_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_home_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 check_app_in_list_tabbed_Standalone🌕 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 check_app_in_list_tabbed_Standalone🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 check_app_in_list_tabbed_Standalone🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 check_app_in_list_tabbed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_home_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 check_app_in_list_windowed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 check_app_in_list_windowed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_not_shown🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_not_shown🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 -create_shortcut_Wco_Windowed🌑 check_window_controls_overlay_toggle_Wco_Shown🌑 install_omnibox_icon_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_menu_option_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 @@ -1111,7 +802,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 check_window_controls_overlay_toggle_Wco_Shown🌕 -create_shortcut_Standalone_Windowed🌑 check_window_controls_overlay_toggle_Standalone_NotShown🌑 install_omnibox_icon_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 install_menu_option_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 @@ -1122,7 +812,6 @@ install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_controls_overlay_toggle_Standalone_NotShown🌕 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 check_window_controls_overlay_Wco_On🌑 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 @@ -1133,7 +822,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 check_window_controls_overlay_toggle_Wco_Shown🌑 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 @@ -1144,7 +832,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 disable_window_controls_overlay_Wco🌑 check_window_controls_overlay_Wco_Off🌑 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 @@ -1155,7 +842,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 disable_window_controls_overlay_Wco🌑 check_window_controls_overlay_toggle_Wco_Shown🌑 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 @@ -1166,10 +852,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 launch_from_menu_option_Wco🌑 check_window_controls_overlay_Wco_On🌑 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 launch_from_launch_icon_Wco🌑 check_window_controls_overlay_Wco_On🌑 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 launch_from_chrome_apps_Wco🌑 check_window_controls_overlay_Wco_On🌑 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_Wco_On🌑 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 launch_from_menu_option_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_Wco_On🌕 @@ -1210,10 +892,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 launch_from_platform_shortcut_Wco🌓 check_window_controls_overlay_Wco_On🌕 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_menu_option_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_launch_icon_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_chrome_apps_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 @@ -1230,10 +908,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌓 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_menu_option_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_launch_icon_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_chrome_apps_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 @@ -1250,10 +924,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌓 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_menu_option_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_MinimalUi_On🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_launch_icon_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_MinimalUi_On🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_chrome_apps_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_MinimalUi_On🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_MinimalUi_On🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 @@ -1270,10 +940,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_menu_option_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_launch_icon_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_chrome_apps_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 @@ -1290,10 +956,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_menu_option_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_launch_icon_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_chrome_apps_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 @@ -1310,10 +972,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_menu_option_Wco🌑 check_window_controls_overlay_toggle_Wco_NotShown🌑 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_launch_icon_Wco🌑 check_window_controls_overlay_toggle_Wco_NotShown🌑 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_chrome_apps_Wco🌑 check_window_controls_overlay_toggle_Wco_NotShown🌑 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_toggle_Wco_NotShown🌑 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_menu_option_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 @@ -1330,10 +988,6 @@ install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Wco🌓 check_window_controls_overlay_toggle_Wco_NotShown🌕 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_menu_option_Wco🌑 check_window_controls_overlay_Wco_Off🌑 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_launch_icon_Wco🌑 check_window_controls_overlay_Wco_Off🌑 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_chrome_apps_Wco🌑 check_window_controls_overlay_Wco_Off🌑 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_Wco_Off🌑 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_menu_option_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_Wco_Off🌕 @@ -1350,13 +1004,10 @@ install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Wco🌓 check_window_controls_overlay_Wco_Off🌕 -create_shortcut_Wco_Windowed🌑 check_window_controls_overlay_toggle_icon_Shown🌑 install_omnibox_icon_Wco🌕 check_window_controls_overlay_toggle_icon_Shown🌕 install_menu_option_Wco🌕 check_window_controls_overlay_toggle_icon_Shown🌕 -create_shortcut_Wco_Windowed🌑 enter_full_screen_app🌑 check_window_controls_overlay_toggle_icon_NotShown🌑 install_omnibox_icon_Wco🌕 enter_full_screen_app🌕 check_window_controls_overlay_toggle_icon_NotShown🌕 install_menu_option_Wco🌕 enter_full_screen_app🌕 check_window_controls_overlay_toggle_icon_NotShown🌕 -create_shortcut_Wco_Windowed🌑 enter_full_screen_app🌑 exit_full_screen_app🌑 check_window_controls_overlay_toggle_icon_Shown🌑 install_omnibox_icon_Wco🌕 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌕 install_menu_option_Wco🌕 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 check_window_controls_overlay_toggle_icon_Shown🌕 @@ -1383,8 +1034,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌕 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌕 -create_shortcut_FileHandler_Windowed🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 -create_shortcut_FileHandler_Browser🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 @@ -1394,79 +1043,50 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_menu_option_FileHandler🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_settings_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_settings_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_settings_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_settings_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Browser🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_menu_option_FileHandler🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Browser🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 maybe_close_pwa🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1476,30 +1096,6 @@ install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 maybe_close_pwa🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 maybe_close_pwa🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Browser🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_menu_option_FileHandler🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_menu_option_FileHandler🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1509,19 +1105,6 @@ install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_menu_option_FileHandler🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_menu_option_FileHandler🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1531,8 +1114,6 @@ install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_menu_option_FileHandler🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1542,8 +1123,6 @@ install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_menu_option_FileHandler🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1553,8 +1132,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_menu_option_FileHandler🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1564,20 +1141,15 @@ install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_menu_option_FileHandler🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneBarFile🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneBarFile🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneBarFile🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneBarFile🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 @@ -1587,8 +1159,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 @@ -1598,8 +1168,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1609,8 +1177,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_not_handles_file_FileHandler_Foo🌑 check_site_not_handles_file_FileHandler_Bar🌑 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_not_handles_file_FileHandler_Foo🌑 check_site_not_handles_file_FileHandler_Bar🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_not_handles_file_FileHandler_Foo🌕 check_site_not_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_not_handles_file_FileHandler_Foo🌕 check_site_not_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_not_handles_file_FileHandler_Foo🌕 check_site_not_handles_file_FileHandler_Bar🌕 @@ -1620,8 +1186,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_not_handles_file_FileHandler_Foo🌕 check_site_not_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_not_handles_file_FileHandler_Foo🌕 check_site_not_handles_file_FileHandler_Bar🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_not_handles_file_FileHandler_Foo🌕 check_site_not_handles_file_FileHandler_Bar🌕 -create_shortcut_FileHandler_Windowed🌑 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 -create_shortcut_FileHandler_Browser🌑 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 @@ -1631,8 +1195,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_menu_option_FileHandler🌕 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 -create_shortcut_FileHandler_Windowed🌑 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 -create_shortcut_FileHandler_Browser🌑 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑
diff --git a/chrome/test/webapps/coverage/coverage_mac.tsv b/chrome/test/webapps/coverage/coverage_mac.tsv index 0b79aa4..84df8b5 100644 --- a/chrome/test/webapps/coverage/coverage_mac.tsv +++ b/chrome/test/webapps/coverage/coverage_mac.tsv
@@ -1,5 +1,5 @@ # This is a generated file. -# Full coverage: 56%, with partial coverage: 68% +# Full coverage: 78%, with partial coverage: 96% install_omnibox_icon_Standalone🌕 launch_from_menu_option_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_omnibox_icon_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_omnibox_icon_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 @@ -30,10 +30,6 @@ install_menu_option_Standalone🌕 manifest_update_icon_Standalone_AcceptUpdate🌕 await_manifest_update_Standalone🌕 check_app_icon_Standalone_Red🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 manifest_update_title_Standalone_StandaloneUpdated_SkipDialog🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_app_title_Standalone_StandaloneUpdated🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 manifest_update_title_Standalone_StandaloneUpdated_SkipDialog🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_app_title_Standalone_StandaloneUpdated🌕 -create_shortcut_Standalone_Windowed🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_user_cannot_set_run_on_os_login_app_home_Standalone🌑 -create_shortcut_Standalone_Browser🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌑 -create_shortcut_Standalone_Browser🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_user_cannot_set_run_on_os_login_app_home_Standalone🌑 install_omnibox_icon_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌕 install_omnibox_icon_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_user_cannot_set_run_on_os_login_app_home_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_blocked_Standalone🌕 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌕 @@ -54,10 +50,6 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_blocked_Standalone🌕 check_user_cannot_set_run_on_os_login_app_home_Standalone🌕 install_menu_option_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌕 install_menu_option_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_user_cannot_set_run_on_os_login_app_home_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_home_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_home_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 enable_run_on_os_login_from_app_settings_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 @@ -78,8 +70,6 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 enable_run_on_os_login_from_app_home_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 install_omnibox_icon_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 @@ -90,10 +80,6 @@ install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_menu_option_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_user_cannot_set_run_on_os_login_app_home_Standalone🌑 -create_shortcut_Standalone_Browser🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌑 -create_shortcut_Standalone_Browser🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_user_cannot_set_run_on_os_login_app_home_Standalone🌑 install_omnibox_icon_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌕 install_omnibox_icon_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_user_cannot_set_run_on_os_login_app_home_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌕 @@ -114,10 +100,6 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_user_cannot_set_run_on_os_login_app_home_Standalone🌕 install_menu_option_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌕 install_menu_option_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_user_cannot_set_run_on_os_login_app_home_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_home_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_home_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 enable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 @@ -138,14 +120,6 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 enable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 disable_run_on_os_login_from_app_settings_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 disable_run_on_os_login_from_app_home_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_home_Standalone🌑 disable_run_on_os_login_from_app_settings_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_home_Standalone🌑 disable_run_on_os_login_from_app_home_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 disable_run_on_os_login_from_app_settings_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 disable_run_on_os_login_from_app_home_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_home_Standalone🌑 disable_run_on_os_login_from_app_settings_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_home_Standalone🌑 disable_run_on_os_login_from_app_home_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 disable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 disable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 disable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 @@ -186,8 +160,6 @@ install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 disable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 disable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 disable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 remove_run_on_os_login_policy_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 remove_run_on_os_login_policy_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 install_omnibox_icon_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 @@ -198,10 +170,6 @@ install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_menu_option_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 remove_run_on_os_login_policy_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_home_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 remove_run_on_os_login_policy_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 remove_run_on_os_login_policy_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_home_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 remove_run_on_os_login_policy_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 enable_run_on_os_login_from_app_settings_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 @@ -222,10 +190,6 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 enable_run_on_os_login_from_app_home_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 switch_profile_clients_Client1🌑 sync_turn_off🌑 uninstall_from_list_Standalone🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 switch_profile_clients_Client1🌑 sync_turn_off🌑 uninstall_from_menu_Standalone🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 switch_profile_clients_Client1🌑 sync_turn_off🌑 uninstall_from_os_Standalone🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 switch_profile_clients_Client1🌑 sync_turn_off🌑 uninstall_from_app_settings_Standalone🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client1🌕 sync_turn_off🌕 uninstall_from_list_Standalone🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client1🌕 sync_turn_off🌕 uninstall_from_menu_Standalone🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client1🌕 sync_turn_off🌕 uninstall_from_os_Standalone🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 @@ -234,37 +198,29 @@ install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client1🌕 sync_turn_off🌕 uninstall_from_menu_Standalone🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client1🌕 sync_turn_off🌕 uninstall_from_os_Standalone🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client1🌕 sync_turn_off🌕 uninstall_from_app_settings_Standalone🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 switch_profile_clients_Client2🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client2🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client2🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 switch_profile_clients_Client2🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 install_locally_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client2🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 install_locally_Standalone🌓 check_run_on_os_login_enabled_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client2🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 install_locally_Standalone🌓 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_allowed_Standalone🌕 disable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_allowed_Standalone🌕 disable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_allowed_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_allowed_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 set_app_badge_Standalone🌑 clear_app_badge_Standalone🌑 check_app_badge_empty_Standalone🌑 install_omnibox_icon_Standalone🌕 set_app_badge_Standalone🌑 clear_app_badge_Standalone🌑 check_app_badge_empty_Standalone🌑 install_menu_option_Standalone🌕 set_app_badge_Standalone🌑 clear_app_badge_Standalone🌑 check_app_badge_empty_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 set_app_badge_Standalone🌑 check_app_badge_has_value_Standalone🌑 install_omnibox_icon_Standalone🌕 set_app_badge_Standalone🌑 check_app_badge_has_value_Standalone🌑 install_menu_option_Standalone🌕 set_app_badge_Standalone🌑 check_app_badge_has_value_Standalone🌑 navigate_browser_Standalone🌕 set_app_badge_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 navigate_pwa_Standalone_MinimalUi🌑 close_custom_toolbar🌑 check_app_navigation_is_start_url🌑 install_omnibox_icon_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 close_custom_toolbar🌕 check_app_navigation_is_start_url🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_pwa_Standalone_MinimalUi🌕 close_custom_toolbar🌕 check_app_navigation_is_start_url🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_pwa_Standalone_MinimalUi🌕 close_custom_toolbar🌕 check_app_navigation_is_start_url🌕 install_menu_option_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 close_custom_toolbar🌕 check_app_navigation_is_start_url🌕 -create_shortcut_Standalone_Windowed🌑 navigate_pwa_Standalone_MinimalUi🌑 check_custom_toolbar🌑 install_omnibox_icon_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 check_custom_toolbar🌕 install_menu_option_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 check_custom_toolbar🌕 navigate_browser_Standalone🌕 check_app_not_in_list_Standalone🌕 navigate_browser_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 navigate_browser_NotPromotable🌕 check_app_not_in_list_Standalone🌕 navigate_browser_NotPromotable🌕 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 check_app_title_Standalone_StandaloneOriginal🌑 -create_shortcut_Standalone_Browser🌑 check_app_title_Standalone_StandaloneOriginal🌑 install_omnibox_icon_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 check_app_title_Standalone_StandaloneOriginal🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_title_Standalone_StandaloneOriginal🌕 @@ -276,110 +232,79 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_title_Standalone_StandaloneOriginal🌕 install_menu_option_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_omnibox_icon_Screenshots🌕 -create_shortcut_Standalone_Windowed🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_not_exists_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_not_exists_Standalone🌑 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_not_exists_NotPromotable🌑 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_Standalone_Browser🌑 check_app_in_list_tabbed_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_in_list_tabbed_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_in_list_tabbed_Standalone🌕 -create_shortcut_Standalone_Browser🌑 navigate_browser_Standalone🌑 check_create_shortcut_shown🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_create_shortcut_shown🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_create_shortcut_shown🌑 -create_shortcut_Standalone_Browser🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Browser🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 -create_shortcut_NotPromotable_Browser🌑 check_app_in_list_tabbed_NotPromotable🌑 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 check_app_in_list_tabbed_NotPromotable🌕 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 check_app_in_list_tabbed_NotPromotable🌕 -create_shortcut_NotPromotable_Browser🌑 navigate_browser_NotPromotable🌑 check_create_shortcut_shown🌑 -install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_create_shortcut_shown🌑 -install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_create_shortcut_shown🌑 -create_shortcut_NotPromotable_Browser🌑 navigate_browser_NotPromotable🌑 check_install_icon_not_shown🌑 +install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 +install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 -create_shortcut_NotPromotable_Browser🌑 navigate_browser_NotPromotable🌑 check_launch_icon_not_shown🌑 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_launch_icon_not_shown🌕 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_launch_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 navigate_browser_Standalone🌑 check_create_shortcut_not_shown🌑 install_omnibox_icon_Standalone🌕 navigate_browser_Standalone🌕 check_create_shortcut_not_shown🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_create_shortcut_not_shown🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_create_shortcut_not_shown🌑 install_menu_option_Standalone🌕 navigate_browser_Standalone🌕 check_create_shortcut_not_shown🌑 -create_shortcut_Standalone_Windowed🌑 navigate_browser_Standalone🌑 check_install_icon_not_shown🌑 install_omnibox_icon_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_menu_option_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 install_omnibox_icon_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_menu_option_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -create_shortcut_MinimalUi_Windowed🌑 navigate_browser_MinimalUi🌑 check_launch_icon_shown🌑 install_omnibox_icon_MinimalUi🌕 navigate_browser_MinimalUi🌕 check_launch_icon_shown🌕 install_policy_app_MinimalUi_WithShortcut_Windowed_WebApp🌓 navigate_browser_MinimalUi🌕 check_launch_icon_shown🌕 install_policy_app_MinimalUi_NoShortcut_Windowed_WebApp🌓 navigate_browser_MinimalUi🌕 check_launch_icon_shown🌕 install_menu_option_MinimalUi🌕 navigate_browser_MinimalUi🌕 check_launch_icon_shown🌕 -create_shortcut_Tabbed_Windowed🌑 check_app_in_list_windowed_Tabbed🌑 install_omnibox_icon_Tabbed🌕 check_app_in_list_windowed_Tabbed🌕 install_policy_app_Tabbed_WithShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_Tabbed🌕 install_policy_app_Tabbed_NoShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_Tabbed🌕 install_menu_option_Tabbed🌕 check_app_in_list_windowed_Tabbed🌕 -create_shortcut_Tabbed_Windowed🌑 navigate_browser_Tabbed🌑 check_launch_icon_shown🌑 check_install_icon_not_shown🌑 install_omnibox_icon_Tabbed🌕 navigate_browser_Tabbed🌕 check_launch_icon_shown🌕 check_install_icon_not_shown🌕 install_policy_app_Tabbed_WithShortcut_Windowed_WebApp🌓 navigate_browser_Tabbed🌕 check_launch_icon_shown🌕 check_install_icon_not_shown🌕 install_policy_app_Tabbed_NoShortcut_Windowed_WebApp🌓 navigate_browser_Tabbed🌕 check_launch_icon_shown🌕 check_install_icon_not_shown🌕 install_menu_option_Tabbed🌕 navigate_browser_Tabbed🌕 check_launch_icon_shown🌕 check_install_icon_not_shown🌕 -create_shortcut_NotPromotable_Windowed🌑 check_app_in_list_windowed_NotPromotable🌑 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_NotPromotable🌕 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_NotPromotable🌕 install_menu_option_NotPromotable🌕 check_app_in_list_windowed_NotPromotable🌕 -create_shortcut_NotPromotable_Windowed🌑 navigate_browser_NotPromotable🌑 check_create_shortcut_not_shown🌑 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_create_shortcut_not_shown🌑 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_create_shortcut_not_shown🌑 install_menu_option_NotPromotable🌕 navigate_browser_NotPromotable🌕 check_create_shortcut_not_shown🌑 -create_shortcut_NotPromotable_Windowed🌑 navigate_browser_NotPromotable🌑 check_install_icon_not_shown🌑 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 install_menu_option_NotPromotable🌕 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 -create_shortcut_NotPromotable_Windowed🌑 navigate_browser_NotPromotable🌑 check_launch_icon_shown🌑 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_launch_icon_shown🌕 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_launch_icon_shown🌕 install_menu_option_NotPromotable🌕 navigate_browser_NotPromotable🌕 check_launch_icon_shown🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 install_menu_option_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 +install_omnibox_icon_Standalone🌕 check_window_created🌕 +install_omnibox_icon_Standalone🌕 close_pwa🌕 check_app_in_list_windowed_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 +install_omnibox_icon_Standalone🌕 close_pwa🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 check_launch_icon_not_shown🌕 +install_menu_option_ChromeUrl🌕 check_window_created🌕 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_NotPromotable🌕 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_NotPromotable🌕 -create_shortcut_NotPromotable_Windowed🌑 check_platform_shortcut_and_icon_NotPromotable🌑 -create_shortcut_NotPromotable_Browser🌑 check_platform_shortcut_and_icon_NotPromotable🌑 install_menu_option_NotPromotable🌕 check_platform_shortcut_and_icon_NotPromotable🌕 -create_shortcut_Standalone_Browser🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 -create_shortcut_Standalone_Browser🌑 launch_from_platform_shortcut_Standalone🌑 install_omnibox_icon_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 -create_shortcut_Standalone_Windowed🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 close_pwa🌑 check_app_in_list_windowed_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 close_pwa🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 check_launch_icon_not_shown🌑 -install_menu_option_ChromeUrl🌕 check_window_created🌕 -create_shortcut_ChromeUrl_Windowed🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_list_Standalone🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_menu_Standalone🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_os_Standalone🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_app_settings_Standalone🌑 check_app_not_in_list_Standalone🌑 install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌕 install_omnibox_icon_Standalone🌕 uninstall_from_menu_Standalone🌕 check_app_not_in_list_Standalone🌕 install_omnibox_icon_Standalone🌕 uninstall_from_os_Standalone🌑 check_app_not_in_list_Standalone🌑 @@ -388,10 +313,6 @@ install_menu_option_Standalone🌕 uninstall_from_menu_Standalone🌕 check_app_not_in_list_Standalone🌕 install_menu_option_Standalone🌕 uninstall_from_os_Standalone🌑 check_app_not_in_list_Standalone🌑 install_menu_option_Standalone🌕 uninstall_from_app_settings_Standalone🌕 check_app_not_in_list_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 uninstall_from_list_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_menu_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_os_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_omnibox_icon_Standalone🌕 uninstall_from_menu_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_omnibox_icon_Standalone🌕 uninstall_from_os_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 @@ -400,10 +321,6 @@ install_menu_option_Standalone🌕 uninstall_from_menu_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_menu_option_Standalone🌕 uninstall_from_os_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 install_menu_option_Standalone🌕 uninstall_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Windowed🌑 uninstall_from_list_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_menu_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_os_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_omnibox_icon_Standalone🌕 uninstall_from_menu_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_omnibox_icon_Standalone🌕 uninstall_from_os_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 @@ -412,10 +329,6 @@ install_menu_option_Standalone🌕 uninstall_from_menu_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_menu_option_Standalone🌕 uninstall_from_os_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 install_menu_option_Standalone🌕 uninstall_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 uninstall_from_list_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_menu_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_os_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_app_settings_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 install_omnibox_icon_Standalone🌕 uninstall_from_menu_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 install_omnibox_icon_Standalone🌕 uninstall_from_os_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 @@ -424,28 +337,14 @@ install_menu_option_Standalone🌕 uninstall_from_menu_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 install_menu_option_Standalone🌕 uninstall_from_os_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 install_menu_option_Standalone🌕 uninstall_from_app_settings_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_list_NotPromotable🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_menu_NotPromotable🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_os_NotPromotable🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_app_settings_NotPromotable🌑 check_app_not_in_list_Standalone🌑 install_menu_option_NotPromotable🌕 uninstall_from_list_NotPromotable🌕 check_app_not_in_list_Standalone🌕 install_menu_option_NotPromotable🌕 uninstall_from_menu_NotPromotable🌕 check_app_not_in_list_Standalone🌕 install_menu_option_NotPromotable🌕 uninstall_from_os_NotPromotable🌑 check_app_not_in_list_Standalone🌑 install_menu_option_NotPromotable🌕 uninstall_from_app_settings_NotPromotable🌕 check_app_not_in_list_Standalone🌕 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_list_NotPromotable🌑 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_menu_NotPromotable🌑 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_os_NotPromotable🌑 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_app_settings_NotPromotable🌑 check_platform_shortcut_not_exists_NotPromotable🌑 install_menu_option_NotPromotable🌕 uninstall_from_list_NotPromotable🌕 check_platform_shortcut_not_exists_NotPromotable🌑 install_menu_option_NotPromotable🌕 uninstall_from_menu_NotPromotable🌕 check_platform_shortcut_not_exists_NotPromotable🌑 install_menu_option_NotPromotable🌕 uninstall_from_os_NotPromotable🌑 check_platform_shortcut_not_exists_NotPromotable🌑 install_menu_option_NotPromotable🌕 uninstall_from_app_settings_NotPromotable🌕 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_Standalone_Browser🌑 uninstall_from_list_Standalone🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Browser🌑 uninstall_from_list_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Browser🌑 uninstall_from_list_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 -create_shortcut_Standalone_Browser🌑 uninstall_from_list_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_NotPromotable_Browser🌑 uninstall_from_list_NotPromotable🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_NotPromotable_Browser🌑 uninstall_from_list_NotPromotable🌑 check_platform_shortcut_not_exists_NotPromotable🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌕 @@ -466,9 +365,6 @@ install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 @@ -481,15 +377,10 @@ install_menu_option_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 launch_from_platform_shortcut_Standalone🌑 check_window_not_created🌑 install_omnibox_icon_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_not_created🌕 install_menu_option_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_not_created🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 launch_from_menu_option_Standalone🌑 check_window_display_standalone🌑 -create_shortcut_Standalone_Windowed🌑 launch_from_launch_icon_Standalone🌑 check_window_display_standalone🌑 -create_shortcut_Standalone_Windowed🌑 launch_from_chrome_apps_Standalone🌑 check_window_display_standalone🌑 -create_shortcut_Standalone_Windowed🌑 launch_from_platform_shortcut_Standalone🌑 check_window_display_standalone🌑 install_omnibox_icon_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_display_standalone🌕 install_omnibox_icon_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_display_standalone🌕 install_omnibox_icon_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_display_standalone🌕 @@ -506,14 +397,6 @@ install_menu_option_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_display_standalone🌕 install_menu_option_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_display_standalone🌕 install_menu_option_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_display_standalone🌕 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 @@ -530,8 +413,6 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_settings_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_home_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_app_loaded_in_tab_Standalone🌑 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_app_loaded_in_tab_Standalone🌕 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_app_loaded_in_tab_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_app_loaded_in_tab_Standalone🌕 @@ -540,14 +421,10 @@ install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_app_loaded_in_tab_Standalone🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_app_loaded_in_tab_Standalone🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_app_loaded_in_tab_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_settings_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_not_created🌑 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_not_created🌑 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_not_created🌕 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_not_created🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_not_created🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_not_created🌕 -create_shortcut_Standalone_Windowed🌑 close_pwa🌑 set_open_in_tab_from_app_settings_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 close_pwa🌑 set_open_in_tab_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 install_omnibox_icon_Standalone🌕 close_pwa🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_omnibox_icon_Standalone🌕 close_pwa🌕 set_open_in_tab_from_app_home_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_menu_option_Standalone🌕 close_pwa🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 @@ -556,16 +433,10 @@ install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 -create_shortcut_NotPromotable_Browser🌑 launch_from_platform_shortcut_NotPromotable🌑 check_tab_created_One🌑 check_app_loaded_in_tab_NotPromotable🌑 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌓 check_tab_created_One🌕 check_app_loaded_in_tab_NotPromotable🌕 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌓 check_tab_created_One🌕 check_app_loaded_in_tab_NotPromotable🌕 -create_shortcut_NotPromotable_Browser🌑 launch_from_chrome_apps_NotPromotable🌑 check_tab_not_created🌑 check_app_loaded_in_tab_NotPromotable🌑 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 launch_from_chrome_apps_NotPromotable🌕 check_tab_not_created🌕 check_app_loaded_in_tab_NotPromotable🌕 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 launch_from_chrome_apps_NotPromotable🌕 check_tab_not_created🌕 check_app_loaded_in_tab_NotPromotable🌕 -create_shortcut_MinimalUi_Windowed🌑 launch_from_menu_option_MinimalUi🌑 check_window_display_minimal🌑 -create_shortcut_MinimalUi_Windowed🌑 launch_from_launch_icon_MinimalUi🌑 check_window_display_minimal🌑 -create_shortcut_MinimalUi_Windowed🌑 launch_from_chrome_apps_MinimalUi🌑 check_window_display_minimal🌑 -create_shortcut_MinimalUi_Windowed🌑 launch_from_platform_shortcut_MinimalUi🌑 check_window_display_minimal🌑 install_omnibox_icon_MinimalUi🌕 launch_from_menu_option_MinimalUi🌕 check_window_display_minimal🌕 install_omnibox_icon_MinimalUi🌕 launch_from_launch_icon_MinimalUi🌕 check_window_display_minimal🌕 install_omnibox_icon_MinimalUi🌕 launch_from_chrome_apps_MinimalUi🌕 check_window_display_minimal🌕 @@ -582,10 +453,6 @@ install_menu_option_MinimalUi🌕 launch_from_launch_icon_MinimalUi🌕 check_window_display_minimal🌕 install_menu_option_MinimalUi🌕 launch_from_chrome_apps_MinimalUi🌕 check_window_display_minimal🌕 install_menu_option_MinimalUi🌕 launch_from_platform_shortcut_MinimalUi🌓 check_window_display_minimal🌕 -create_shortcut_Tabbed_Windowed🌑 maybe_close_pwa🌑 launch_from_menu_option_Tabbed🌑 check_window_display_tabbed🌑 -create_shortcut_Tabbed_Windowed🌑 maybe_close_pwa🌑 launch_from_launch_icon_Tabbed🌑 check_window_display_tabbed🌑 -create_shortcut_Tabbed_Windowed🌑 maybe_close_pwa🌑 launch_from_chrome_apps_Tabbed🌑 check_window_display_tabbed🌑 -create_shortcut_Tabbed_Windowed🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_Tabbed🌑 check_window_display_tabbed🌑 install_omnibox_icon_Tabbed🌕 maybe_close_pwa🌕 launch_from_menu_option_Tabbed🌕 check_window_display_tabbed🌕 install_omnibox_icon_Tabbed🌕 maybe_close_pwa🌕 launch_from_launch_icon_Tabbed🌕 check_window_display_tabbed🌕 install_omnibox_icon_Tabbed🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Tabbed🌕 check_window_display_tabbed🌕 @@ -602,9 +469,6 @@ install_menu_option_Tabbed🌕 maybe_close_pwa🌕 launch_from_launch_icon_Tabbed🌕 check_window_display_tabbed🌕 install_menu_option_Tabbed🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Tabbed🌕 check_window_display_tabbed🌕 install_menu_option_Tabbed🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Tabbed🌓 check_window_display_tabbed🌕 -create_shortcut_NotPromotable_Windowed🌑 launch_from_menu_option_NotPromotable🌑 check_window_created🌑 -create_shortcut_NotPromotable_Windowed🌑 launch_from_launch_icon_NotPromotable🌑 check_window_created🌑 -create_shortcut_NotPromotable_Windowed🌑 launch_from_chrome_apps_NotPromotable🌑 check_window_created🌑 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_NotPromotable🌕 check_window_created🌕 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_launch_icon_NotPromotable🌕 check_window_created🌕 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_NotPromotable🌕 check_window_created🌕 @@ -614,53 +478,27 @@ install_menu_option_NotPromotable🌕 launch_from_menu_option_NotPromotable🌕 check_window_created🌕 install_menu_option_NotPromotable🌕 launch_from_launch_icon_NotPromotable🌕 check_window_created🌕 install_menu_option_NotPromotable🌕 launch_from_chrome_apps_NotPromotable🌕 check_window_created🌕 -create_shortcut_NotPromotable_Windowed🌑 launch_from_platform_shortcut_NotPromotable🌑 check_window_not_created🌑 install_menu_option_NotPromotable🌕 launch_from_platform_shortcut_NotPromotable🌓 check_window_not_created🌕 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌓 check_window_created🌕 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌓 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 switch_active_profile_Profile2🌑 create_shortcut_Standalone_Windowed🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 check_pwa_window_created_in_profile_Standalone_One_Profile2🌑 -create_shortcut_Standalone_Windowed🌑 switch_active_profile_Profile2🌑 install_omnibox_icon_Standalone🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 check_pwa_window_created_in_profile_Standalone_One_Profile2🌑 -create_shortcut_Standalone_Windowed🌑 switch_active_profile_Profile2🌑 install_menu_option_Standalone🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 check_pwa_window_created_in_profile_Standalone_One_Profile2🌑 -install_omnibox_icon_Standalone🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Windowed🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 check_pwa_window_created_in_profile_Standalone_One_Profile2🌑 install_omnibox_icon_Standalone🌕 switch_active_profile_Profile2🌕 install_omnibox_icon_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 install_omnibox_icon_Standalone🌕 switch_active_profile_Profile2🌕 install_menu_option_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 -install_menu_option_Standalone🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Windowed🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 check_pwa_window_created_in_profile_Standalone_One_Profile2🌑 install_menu_option_Standalone🌕 switch_active_profile_Profile2🌕 install_omnibox_icon_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 install_menu_option_Standalone🌕 switch_active_profile_Profile2🌕 install_menu_option_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 -create_shortcut_Standalone_Windowed🌑 switch_active_profile_Profile2🌑 create_shortcut_Standalone_Windowed🌑 close_pwa🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 -create_shortcut_Standalone_Windowed🌑 switch_active_profile_Profile2🌑 install_omnibox_icon_Standalone🌑 close_pwa🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 -create_shortcut_Standalone_Windowed🌑 switch_active_profile_Profile2🌑 install_menu_option_Standalone🌑 close_pwa🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 -install_omnibox_icon_Standalone🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Windowed🌑 close_pwa🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 install_omnibox_icon_Standalone🌕 switch_active_profile_Profile2🌕 install_omnibox_icon_Standalone🌕 close_pwa🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 install_omnibox_icon_Standalone🌕 switch_active_profile_Profile2🌕 install_menu_option_Standalone🌕 close_pwa🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 -install_menu_option_Standalone🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Windowed🌑 close_pwa🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 install_menu_option_Standalone🌕 switch_active_profile_Profile2🌕 install_omnibox_icon_Standalone🌕 close_pwa🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 install_menu_option_Standalone🌕 switch_active_profile_Profile2🌕 install_menu_option_Standalone🌕 close_pwa🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 -create_shortcut_Standalone_Windowed🌑 close_pwa🌑 switch_active_profile_Profile2🌑 create_shortcut_Standalone_Windowed🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Profile2🌑 -create_shortcut_Standalone_Windowed🌑 close_pwa🌑 switch_active_profile_Profile2🌑 install_omnibox_icon_Standalone🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Profile2🌑 -create_shortcut_Standalone_Windowed🌑 close_pwa🌑 switch_active_profile_Profile2🌑 install_menu_option_Standalone🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Profile2🌑 -install_omnibox_icon_Standalone🌕 close_pwa🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Windowed🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Profile2🌑 install_omnibox_icon_Standalone🌕 close_pwa🌕 switch_active_profile_Profile2🌕 install_omnibox_icon_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 install_omnibox_icon_Standalone🌕 close_pwa🌕 switch_active_profile_Profile2🌕 install_menu_option_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 -install_menu_option_Standalone🌕 close_pwa🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Windowed🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Profile2🌑 install_menu_option_Standalone🌕 close_pwa🌕 switch_active_profile_Profile2🌕 install_omnibox_icon_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 install_menu_option_Standalone🌕 close_pwa🌕 switch_active_profile_Profile2🌕 install_menu_option_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 -create_shortcut_Standalone_Windowed🌑 switch_active_profile_Profile2🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 install_omnibox_icon_Standalone🌕 switch_active_profile_Profile2🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 install_menu_option_Standalone🌕 switch_active_profile_Profile2🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 -create_shortcut_Standalone_Windowed🌑 switch_active_profile_Profile2🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 install_omnibox_icon_Standalone🌕 switch_active_profile_Profile2🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 install_menu_option_Standalone🌕 switch_active_profile_Profile2🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 -create_shortcut_Standalone_Windowed🌑 switch_active_profile_Profile2🌑 create_shortcut_Standalone_Browser🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 -install_omnibox_icon_Standalone🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Browser🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 -install_menu_option_Standalone🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Browser🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 -create_shortcut_Standalone_Browser🌑 switch_active_profile_Profile2🌑 create_shortcut_Standalone_Windowed🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Profile2🌑 -create_shortcut_Standalone_Browser🌑 switch_active_profile_Profile2🌑 install_omnibox_icon_Standalone🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Profile2🌑 -create_shortcut_Standalone_Browser🌑 switch_active_profile_Profile2🌑 install_menu_option_Standalone🌑 quit_app_shim_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Profile2🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 create_shortcuts_from_list_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcuts_from_list_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 delete_profile🌑 check_app_list_empty🌑 -create_shortcut_Standalone_Browser🌑 delete_profile🌑 check_app_list_empty🌑 install_omnibox_icon_Standalone🌕 delete_profile🌑 check_app_list_empty🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 @@ -671,8 +509,6 @@ install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 install_menu_option_Standalone🌕 delete_profile🌑 check_app_list_empty🌑 -create_shortcut_Standalone_Windowed🌑 delete_profile🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Browser🌑 delete_profile🌑 check_app_not_in_list_Standalone🌑 install_omnibox_icon_Standalone🌕 delete_profile🌑 check_app_not_in_list_Standalone🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 @@ -685,26 +521,18 @@ install_menu_option_Standalone🌕 delete_profile🌑 check_app_not_in_list_Standalone🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Browser🌑 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 install_omnibox_icon_Standalone🌕 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 install_menu_option_Standalone🌕 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Browser🌑 delete_platform_shortcut_Standalone🌑 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 delete_platform_shortcut_Standalone🌑 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_not_created🌑 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_platform_shortcut_Standalone🌕 create_shortcuts_from_list_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_omnibox_icon_Standalone🌕 delete_platform_shortcut_Standalone🌕 create_shortcuts_from_list_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_not_created🌕 install_menu_option_Standalone🌕 delete_platform_shortcut_Standalone🌕 create_shortcuts_from_list_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_not_created🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_platform_shortcut_Standalone🌕 create_shortcuts_from_list_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcuts_from_list_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 create_shortcuts_from_list_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 open_in_chrome🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 install_omnibox_icon_Standalone🌕 open_in_chrome🌕 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_menu_option_Standalone🌕 open_in_chrome🌕 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 navigate_pwa_Standalone_MinimalUi🌑 open_in_chrome🌑 check_tab_created_One🌑 install_omnibox_icon_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 open_in_chrome🌕 check_tab_created_One🌕 install_menu_option_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 open_in_chrome🌕 check_tab_created_One🌕 -create_shortcut_Standalone_Windowed🌑 open_app_settings_from_chrome_apps_Standalone🌑 check_browser_navigation_is_app_settings_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 open_app_settings_from_app_menu_Standalone🌑 check_browser_navigation_is_app_settings_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 open_app_settings_from_command_Standalone🌑 check_browser_navigation_is_app_settings_Standalone🌑 install_omnibox_icon_Standalone🌕 open_app_settings_from_chrome_apps_Standalone🌕 check_browser_navigation_is_app_settings_Standalone🌕 install_omnibox_icon_Standalone🌕 open_app_settings_from_app_menu_Standalone🌕 check_browser_navigation_is_app_settings_Standalone🌕 install_omnibox_icon_Standalone🌕 open_app_settings_from_command_Standalone🌕 check_browser_navigation_is_app_settings_Standalone🌕 @@ -717,106 +545,52 @@ install_menu_option_Standalone🌕 open_app_settings_from_chrome_apps_Standalone🌕 check_browser_navigation_is_app_settings_Standalone🌕 install_menu_option_Standalone🌕 open_app_settings_from_app_menu_Standalone🌕 check_browser_navigation_is_app_settings_Standalone🌕 install_menu_option_Standalone🌕 open_app_settings_from_command_Standalone🌕 check_browser_navigation_is_app_settings_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 check_platform_shortcut_and_icon_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 check_platform_shortcut_and_icon_Standalone🌕 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_not_shown🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -create_shortcut_NotPromotable_Browser🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 check_app_in_list_tabbed_NotPromotable🌑 -create_shortcut_NotPromotable_Browser🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 navigate_browser_NotPromotable🌑 check_launch_icon_not_shown🌑 -create_shortcut_NotPromotable_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 check_app_in_list_windowed_NotPromotable🌑 install_menu_option_NotPromotable🌕 switch_profile_clients_Client2🌕 install_locally_NotPromotable🌓 check_app_in_list_windowed_NotPromotable🌕 -create_shortcut_NotPromotable_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 navigate_browser_NotPromotable🌑 check_install_icon_not_shown🌑 install_menu_option_NotPromotable🌕 switch_profile_clients_Client2🌕 install_locally_NotPromotable🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 -create_shortcut_NotPromotable_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 navigate_browser_NotPromotable🌑 check_launch_icon_shown🌑 install_menu_option_NotPromotable🌕 switch_profile_clients_Client2🌕 install_locally_NotPromotable🌓 navigate_browser_NotPromotable🌕 check_launch_icon_shown🌕 -create_shortcut_NotPromotable_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 check_platform_shortcut_and_icon_NotPromotable🌑 -create_shortcut_NotPromotable_Browser🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 check_platform_shortcut_and_icon_NotPromotable🌑 install_menu_option_NotPromotable🌕 switch_profile_clients_Client2🌕 install_locally_NotPromotable🌓 check_platform_shortcut_and_icon_NotPromotable🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_not_created🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_platform_shortcut_Standalone🌓 check_window_not_created🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_platform_shortcut_Standalone🌓 check_window_not_created🌕 -create_shortcut_Standalone_Windowed🌑 close_pwa🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 close_pwa🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_menu_option_Standalone🌕 close_pwa🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_site_loaded_in_tab_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_site_loaded_in_tab_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_site_loaded_in_tab_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 uninstall_from_list_Standalone🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 uninstall_from_list_Standalone🌑 check_app_not_in_list_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 uninstall_from_list_Standalone🌑 switch_profile_clients_Client1🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 uninstall_from_list_Standalone🌑 switch_profile_clients_Client1🌑 check_app_not_in_list_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 switch_profile_clients_Client1🌕 check_app_not_in_list_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 switch_profile_clients_Client1🌕 check_app_not_in_list_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 check_platform_shortcut_not_exists_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 check_platform_shortcut_not_exists_Standalone🌑 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 -create_shortcut_NotPromotable_Windowed🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_NotPromotable🌑 -create_shortcut_NotPromotable_Browser🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_NotPromotable🌑 install_menu_option_NotPromotable🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_NotPromotable🌕 -create_shortcut_NotPromotable_Windowed🌑 switch_profile_clients_Client2🌑 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_NotPromotable_Browser🌑 switch_profile_clients_Client2🌑 check_platform_shortcut_not_exists_NotPromotable🌑 install_menu_option_NotPromotable🌕 switch_profile_clients_Client2🌕 check_platform_shortcut_not_exists_NotPromotable🌑 -sync_turn_off🌕 create_shortcut_Standalone_Windowed🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 -sync_turn_off🌕 create_shortcut_Standalone_Browser🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 sync_turn_off🌕 install_omnibox_icon_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 sync_turn_off🌕 install_menu_option_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 -sync_sign_out🌕 create_shortcut_Standalone_Windowed🌑 sync_sign_in🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 -sync_sign_out🌕 create_shortcut_Standalone_Browser🌑 sync_sign_in🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 sync_sign_out🌕 install_omnibox_icon_Standalone🌕 sync_sign_in🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 sync_sign_out🌕 install_menu_option_Standalone🌕 sync_sign_in🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 check_app_not_in_list_Standalone🌑 sync_turn_on🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 check_app_not_in_list_Standalone🌑 sync_turn_on🌑 check_app_in_list_not_locally_installed_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌕 sync_turn_on🌕 check_app_in_list_not_locally_installed_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌕 sync_turn_on🌕 check_app_in_list_not_locally_installed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 check_app_not_in_list_Standalone🌑 sync_turn_on🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 check_app_not_in_list_Standalone🌑 sync_turn_on🌑 check_platform_shortcut_not_exists_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌕 sync_turn_on🌕 check_platform_shortcut_not_exists_Standalone🌑 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌕 sync_turn_on🌕 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_list_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_menu_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_os_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_app_settings_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_list_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_menu_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_os_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_app_settings_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 switch_profile_clients_Client1🌕 uninstall_from_list_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 switch_profile_clients_Client1🌕 uninstall_from_menu_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 switch_profile_clients_Client1🌕 uninstall_from_os_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 @@ -825,150 +599,84 @@ install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 switch_profile_clients_Client1🌕 uninstall_from_menu_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 switch_profile_clients_Client1🌕 uninstall_from_os_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 switch_profile_clients_Client1🌕 uninstall_from_app_settings_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 launch_from_platform_shortcut_Standalone🌑 check_window_not_created🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_not_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_not_created🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 launch_from_platform_shortcut_Standalone🌑 check_window_not_created🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_not_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_not_created🌕 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 check_app_in_list_windowed_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 check_app_in_list_windowed_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 check_platform_shortcut_and_icon_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 check_platform_shortcut_and_icon_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 check_window_created🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_window_created🌕 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 check_window_created🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_window_created🌕 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 install_policy_app_StandaloneNotStartUrl_WithShortcut_Windowed_WebShortcut🌓 launch_from_menu_option_StandaloneNotStartUrl🌕 check_app_navigation_StandaloneNotStartUrl🌕 @@ -987,18 +695,12 @@ install_policy_app_StandaloneNotStartUrl_WithShortcut_Browser_WebApp🌓 check_app_not_in_list_StandaloneNotStartUrl🌕 check_app_in_list_icon_correct_Standalone🌕 install_policy_app_StandaloneNotStartUrl_WithShortcut_Windowed_WebShortcut🌓 check_app_not_in_list_Standalone🌕 check_app_in_list_icon_correct_StandaloneNotStartUrl🌕 install_policy_app_StandaloneNotStartUrl_WithShortcut_Browser_WebShortcut🌓 check_app_not_in_list_Standalone🌕 check_app_in_list_icon_correct_StandaloneNotStartUrl🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 navigate_browser_Standalone🌑 check_install_icon_not_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 launch_from_menu_option_StandaloneNestedA🌑 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌑 check_no_toolbar🌑 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 launch_from_launch_icon_StandaloneNestedA🌑 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌑 check_no_toolbar🌑 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 launch_from_chrome_apps_StandaloneNestedA🌑 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌑 check_no_toolbar🌑 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 launch_from_platform_shortcut_StandaloneNestedA🌑 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌑 check_no_toolbar🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_menu_option_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_launch_icon_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_chrome_apps_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 @@ -1011,26 +713,18 @@ install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_launch_icon_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_chrome_apps_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_platform_shortcut_StandaloneNestedA🌓 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 navigate_browser_StandaloneNestedB🌑 check_install_icon_not_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_install_icon_not_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_install_icon_not_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_install_icon_not_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 navigate_browser_StandaloneNestedB🌑 check_launch_icon_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_launch_icon_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_launch_icon_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_launch_icon_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 navigate_browser_StandaloneNestedA🌑 check_install_icon_not_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 navigate_browser_StandaloneNestedA🌑 check_launch_icon_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_launch_icon_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_launch_icon_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_launch_icon_shown🌕 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Tabbed🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_tabbed🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Tabbed🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_tabbed🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Tabbed🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_tabbed🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Tabbed🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_tabbed🌑 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 @@ -1043,10 +737,6 @@ install_menu_option_Standalone🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 install_menu_option_Standalone🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 install_menu_option_Standalone🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Browser🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Browser🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Browser🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Browser🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Browser🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Browser🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Browser🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 @@ -1059,10 +749,6 @@ install_menu_option_Standalone🌕 manifest_update_display_Standalone_Browser🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_menu_option_Standalone🌕 manifest_update_display_Standalone_Browser🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_menu_option_Standalone🌕 manifest_update_display_Standalone_Browser🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_MinimalUi🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_MinimalUi🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_MinimalUi🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_MinimalUi🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 @@ -1088,12 +774,10 @@ navigate_browser_StandaloneNestedA🌕 check_install_icon_shown🌕 navigate_browser_NotPromotable🌕 check_create_shortcut_shown🌑 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 navigate_browser_NotInstalled🌑 check_install_icon_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 navigate_browser_NotInstalled🌕 check_install_icon_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotInstalled🌕 check_install_icon_shown🌕 install_policy_app_StandaloneNestedA_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotInstalled🌕 check_install_icon_shown🌕 install_menu_option_StandaloneNestedA🌕 navigate_browser_NotInstalled🌕 check_install_icon_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 navigate_browser_NotInstalled🌑 check_launch_icon_not_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 navigate_browser_NotInstalled🌕 check_launch_icon_not_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotInstalled🌕 check_launch_icon_not_shown🌕 install_policy_app_StandaloneNestedA_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotInstalled🌕 check_launch_icon_not_shown🌕 @@ -1102,37 +786,22 @@ install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 install_menu_option_Standalone🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 navigate_browser_MinimalUi🌑 check_install_icon_shown🌑 install_omnibox_icon_Standalone🌕 navigate_browser_MinimalUi🌕 check_install_icon_shown🌕 install_menu_option_Standalone🌕 navigate_browser_MinimalUi🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Windowed🌑 navigate_browser_MinimalUi🌑 check_launch_icon_not_shown🌑 install_omnibox_icon_Standalone🌕 navigate_browser_MinimalUi🌕 check_launch_icon_not_shown🌕 install_menu_option_Standalone🌕 navigate_browser_MinimalUi🌕 check_launch_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 navigate_pwa_Standalone_MinimalUi🌑 check_app_title_Standalone_StandaloneOriginal🌑 install_omnibox_icon_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_menu_option_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 check_app_title_Standalone_StandaloneOriginal🌕 -create_shortcut_Standalone_Windowed🌑 switch_incognito_profile🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 install_omnibox_icon_Standalone🌕 switch_incognito_profile🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_menu_option_Standalone🌕 switch_incognito_profile🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_settings_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_home_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 check_app_in_list_tabbed_Standalone🌕 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 check_app_in_list_tabbed_Standalone🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 check_app_in_list_tabbed_Standalone🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 check_app_in_list_tabbed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_home_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 check_app_in_list_windowed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 check_app_in_list_windowed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_not_shown🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_not_shown🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 -create_shortcut_Wco_Windowed🌑 check_window_controls_overlay_toggle_Wco_Shown🌑 install_omnibox_icon_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_menu_option_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 @@ -1143,7 +812,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 check_window_controls_overlay_toggle_Wco_Shown🌕 -create_shortcut_Standalone_Windowed🌑 check_window_controls_overlay_toggle_Standalone_NotShown🌑 install_omnibox_icon_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 install_menu_option_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 @@ -1154,7 +822,6 @@ install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_controls_overlay_toggle_Standalone_NotShown🌕 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 check_window_controls_overlay_Wco_On🌑 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 @@ -1165,7 +832,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 check_window_controls_overlay_toggle_Wco_Shown🌑 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 @@ -1176,7 +842,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 disable_window_controls_overlay_Wco🌑 check_window_controls_overlay_Wco_Off🌑 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 @@ -1187,7 +852,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 disable_window_controls_overlay_Wco🌑 check_window_controls_overlay_toggle_Wco_Shown🌑 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 @@ -1198,10 +862,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 launch_from_menu_option_Wco🌑 check_window_controls_overlay_Wco_On🌑 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 launch_from_launch_icon_Wco🌑 check_window_controls_overlay_Wco_On🌑 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 launch_from_chrome_apps_Wco🌑 check_window_controls_overlay_Wco_On🌑 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_Wco_On🌑 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 launch_from_menu_option_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_Wco_On🌕 @@ -1242,10 +902,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 launch_from_platform_shortcut_Wco🌓 check_window_controls_overlay_Wco_On🌕 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_menu_option_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_launch_icon_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_chrome_apps_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 @@ -1262,10 +918,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌓 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_menu_option_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_launch_icon_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_chrome_apps_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 @@ -1282,10 +934,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌓 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_menu_option_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_MinimalUi_On🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_launch_icon_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_MinimalUi_On🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_chrome_apps_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_MinimalUi_On🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_MinimalUi_On🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 @@ -1302,10 +950,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_menu_option_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_launch_icon_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_chrome_apps_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 @@ -1322,10 +966,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_menu_option_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_launch_icon_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_chrome_apps_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 @@ -1342,10 +982,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_menu_option_Wco🌑 check_window_controls_overlay_toggle_Wco_NotShown🌑 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_launch_icon_Wco🌑 check_window_controls_overlay_toggle_Wco_NotShown🌑 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_chrome_apps_Wco🌑 check_window_controls_overlay_toggle_Wco_NotShown🌑 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_toggle_Wco_NotShown🌑 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_menu_option_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 @@ -1362,10 +998,6 @@ install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Wco🌓 check_window_controls_overlay_toggle_Wco_NotShown🌕 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_menu_option_Wco🌑 check_window_controls_overlay_Wco_Off🌑 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_launch_icon_Wco🌑 check_window_controls_overlay_Wco_Off🌑 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_chrome_apps_Wco🌑 check_window_controls_overlay_Wco_Off🌑 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_Wco_Off🌑 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_menu_option_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_Wco_Off🌕 @@ -1382,13 +1014,10 @@ install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Wco🌓 check_window_controls_overlay_Wco_Off🌕 -create_shortcut_Wco_Windowed🌑 check_window_controls_overlay_toggle_icon_Shown🌑 install_omnibox_icon_Wco🌕 check_window_controls_overlay_toggle_icon_Shown🌕 install_menu_option_Wco🌕 check_window_controls_overlay_toggle_icon_Shown🌕 -create_shortcut_Wco_Windowed🌑 enter_full_screen_app🌑 check_window_controls_overlay_toggle_icon_NotShown🌑 install_omnibox_icon_Wco🌕 enter_full_screen_app🌕 check_window_controls_overlay_toggle_icon_NotShown🌕 install_menu_option_Wco🌕 enter_full_screen_app🌕 check_window_controls_overlay_toggle_icon_NotShown🌕 -create_shortcut_Wco_Windowed🌑 enter_full_screen_app🌑 exit_full_screen_app🌑 check_window_controls_overlay_toggle_icon_Shown🌑 install_omnibox_icon_Wco🌕 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌕 install_menu_option_Wco🌕 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 check_window_controls_overlay_toggle_icon_Shown🌕 @@ -1415,8 +1044,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌕 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌕 -create_shortcut_FileHandler_Windowed🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 -create_shortcut_FileHandler_Browser🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 @@ -1426,79 +1053,50 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_menu_option_FileHandler🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_settings_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_settings_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_settings_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_settings_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Browser🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_menu_option_FileHandler🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Browser🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 maybe_close_pwa🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1508,30 +1106,6 @@ install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 maybe_close_pwa🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 maybe_close_pwa🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Browser🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_menu_option_FileHandler🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_menu_option_FileHandler🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1541,19 +1115,6 @@ install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_menu_option_FileHandler🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_menu_option_FileHandler🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1563,8 +1124,6 @@ install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_menu_option_FileHandler🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1574,8 +1133,6 @@ install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_menu_option_FileHandler🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1585,8 +1142,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_menu_option_FileHandler🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1596,20 +1151,15 @@ install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_menu_option_FileHandler🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneBarFile🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneBarFile🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneBarFile🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneBarFile🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 @@ -1619,8 +1169,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 @@ -1630,8 +1178,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1641,8 +1187,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_not_handles_file_FileHandler_Foo🌑 check_site_not_handles_file_FileHandler_Bar🌑 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_not_handles_file_FileHandler_Foo🌑 check_site_not_handles_file_FileHandler_Bar🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_not_handles_file_FileHandler_Foo🌕 check_site_not_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_not_handles_file_FileHandler_Foo🌕 check_site_not_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_not_handles_file_FileHandler_Foo🌕 check_site_not_handles_file_FileHandler_Bar🌕 @@ -1652,8 +1196,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_not_handles_file_FileHandler_Foo🌕 check_site_not_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_not_handles_file_FileHandler_Foo🌕 check_site_not_handles_file_FileHandler_Bar🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_not_handles_file_FileHandler_Foo🌕 check_site_not_handles_file_FileHandler_Bar🌕 -create_shortcut_FileHandler_Windowed🌑 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 -create_shortcut_FileHandler_Browser🌑 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 @@ -1663,8 +1205,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_menu_option_FileHandler🌕 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 -create_shortcut_FileHandler_Windowed🌑 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 -create_shortcut_FileHandler_Browser🌑 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑
diff --git a/chrome/test/webapps/coverage/coverage_win.tsv b/chrome/test/webapps/coverage/coverage_win.tsv index a4c7456..9906dfd2 100644 --- a/chrome/test/webapps/coverage/coverage_win.tsv +++ b/chrome/test/webapps/coverage/coverage_win.tsv
@@ -1,5 +1,5 @@ # This is a generated file. -# Full coverage: 56%, with partial coverage: 69% +# Full coverage: 77%, with partial coverage: 96% install_omnibox_icon_Standalone🌕 launch_from_menu_option_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_omnibox_icon_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_omnibox_icon_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 @@ -30,10 +30,6 @@ install_menu_option_Standalone🌕 manifest_update_icon_Standalone_AcceptUpdate🌕 await_manifest_update_Standalone🌕 check_app_icon_Standalone_Red🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 manifest_update_title_Standalone_StandaloneUpdated_SkipDialog🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_app_title_Standalone_StandaloneUpdated🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 manifest_update_title_Standalone_StandaloneUpdated_SkipDialog🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_app_title_Standalone_StandaloneUpdated🌕 -create_shortcut_Standalone_Windowed🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_user_cannot_set_run_on_os_login_app_home_Standalone🌑 -create_shortcut_Standalone_Browser🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌑 -create_shortcut_Standalone_Browser🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_user_cannot_set_run_on_os_login_app_home_Standalone🌑 install_omnibox_icon_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌕 install_omnibox_icon_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_user_cannot_set_run_on_os_login_app_home_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_blocked_Standalone🌕 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌕 @@ -54,10 +50,6 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_blocked_Standalone🌕 check_user_cannot_set_run_on_os_login_app_home_Standalone🌕 install_menu_option_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌕 install_menu_option_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_user_cannot_set_run_on_os_login_app_home_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_home_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_home_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 enable_run_on_os_login_from_app_settings_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 @@ -78,8 +70,6 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 enable_run_on_os_login_from_app_home_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 install_omnibox_icon_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 @@ -90,10 +80,6 @@ install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_menu_option_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_user_cannot_set_run_on_os_login_app_home_Standalone🌑 -create_shortcut_Standalone_Browser🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌑 -create_shortcut_Standalone_Browser🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_user_cannot_set_run_on_os_login_app_home_Standalone🌑 install_omnibox_icon_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌕 install_omnibox_icon_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_user_cannot_set_run_on_os_login_app_home_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌕 @@ -114,10 +100,6 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_user_cannot_set_run_on_os_login_app_home_Standalone🌕 install_menu_option_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_user_cannot_set_run_on_os_login_app_settings_Standalone🌕 install_menu_option_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_user_cannot_set_run_on_os_login_app_home_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_home_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_home_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 enable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 @@ -138,14 +120,6 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 enable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 disable_run_on_os_login_from_app_settings_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 disable_run_on_os_login_from_app_home_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_home_Standalone🌑 disable_run_on_os_login_from_app_settings_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_home_Standalone🌑 disable_run_on_os_login_from_app_home_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 disable_run_on_os_login_from_app_settings_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 disable_run_on_os_login_from_app_home_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_home_Standalone🌑 disable_run_on_os_login_from_app_settings_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_home_Standalone🌑 disable_run_on_os_login_from_app_home_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 disable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 disable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 disable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 @@ -186,8 +160,6 @@ install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 disable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 disable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 disable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 remove_run_on_os_login_policy_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 remove_run_on_os_login_policy_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 install_omnibox_icon_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 @@ -198,10 +170,6 @@ install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 apply_run_on_os_login_policy_run_windowed_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_menu_option_Standalone🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 remove_run_on_os_login_policy_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 enable_run_on_os_login_from_app_home_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 remove_run_on_os_login_policy_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_settings_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 remove_run_on_os_login_policy_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 -create_shortcut_Standalone_Browser🌑 enable_run_on_os_login_from_app_home_Standalone🌑 apply_run_on_os_login_policy_blocked_Standalone🌑 remove_run_on_os_login_policy_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_omnibox_icon_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 enable_run_on_os_login_from_app_settings_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 @@ -222,10 +190,6 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 enable_run_on_os_login_from_app_home_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_menu_option_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 apply_run_on_os_login_policy_blocked_Standalone🌕 remove_run_on_os_login_policy_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 switch_profile_clients_Client1🌑 sync_turn_off🌑 uninstall_from_list_Standalone🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 switch_profile_clients_Client1🌑 sync_turn_off🌑 uninstall_from_menu_Standalone🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 switch_profile_clients_Client1🌑 sync_turn_off🌑 uninstall_from_os_Standalone🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 switch_profile_clients_Client1🌑 sync_turn_off🌑 uninstall_from_app_settings_Standalone🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client1🌕 sync_turn_off🌕 uninstall_from_list_Standalone🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client1🌕 sync_turn_off🌕 uninstall_from_menu_Standalone🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client1🌕 sync_turn_off🌕 uninstall_from_os_Standalone🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 @@ -234,37 +198,29 @@ install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client1🌕 sync_turn_off🌕 uninstall_from_menu_Standalone🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client1🌕 sync_turn_off🌕 uninstall_from_os_Standalone🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client1🌕 sync_turn_off🌕 uninstall_from_app_settings_Standalone🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 switch_profile_clients_Client2🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 check_run_on_os_login_disabled_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client2🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client2🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 switch_profile_clients_Client2🌑 apply_run_on_os_login_policy_run_windowed_Standalone🌑 install_locally_Standalone🌑 check_run_on_os_login_enabled_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client2🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 install_locally_Standalone🌓 check_run_on_os_login_enabled_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 switch_profile_clients_Client2🌕 apply_run_on_os_login_policy_run_windowed_Standalone🌕 install_locally_Standalone🌓 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_allowed_Standalone🌕 disable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_allowed_Standalone🌕 disable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_disabled_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_allowed_Standalone🌕 enable_run_on_os_login_from_app_settings_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 apply_run_on_os_login_policy_allowed_Standalone🌕 enable_run_on_os_login_from_app_home_Standalone🌕 check_run_on_os_login_enabled_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 set_app_badge_Standalone🌑 clear_app_badge_Standalone🌑 check_app_badge_empty_Standalone🌑 install_omnibox_icon_Standalone🌕 set_app_badge_Standalone🌑 clear_app_badge_Standalone🌑 check_app_badge_empty_Standalone🌑 install_menu_option_Standalone🌕 set_app_badge_Standalone🌑 clear_app_badge_Standalone🌑 check_app_badge_empty_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 set_app_badge_Standalone🌑 check_app_badge_has_value_Standalone🌑 install_omnibox_icon_Standalone🌕 set_app_badge_Standalone🌑 check_app_badge_has_value_Standalone🌑 install_menu_option_Standalone🌕 set_app_badge_Standalone🌑 check_app_badge_has_value_Standalone🌑 navigate_browser_Standalone🌕 set_app_badge_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 navigate_pwa_Standalone_MinimalUi🌑 close_custom_toolbar🌑 check_app_navigation_is_start_url🌑 install_omnibox_icon_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 close_custom_toolbar🌕 check_app_navigation_is_start_url🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_pwa_Standalone_MinimalUi🌕 close_custom_toolbar🌕 check_app_navigation_is_start_url🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_pwa_Standalone_MinimalUi🌕 close_custom_toolbar🌕 check_app_navigation_is_start_url🌕 install_menu_option_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 close_custom_toolbar🌕 check_app_navigation_is_start_url🌕 -create_shortcut_Standalone_Windowed🌑 navigate_pwa_Standalone_MinimalUi🌑 check_custom_toolbar🌑 install_omnibox_icon_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 check_custom_toolbar🌕 install_menu_option_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 check_custom_toolbar🌕 navigate_browser_Standalone🌕 check_app_not_in_list_Standalone🌕 navigate_browser_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 navigate_browser_NotPromotable🌕 check_app_not_in_list_Standalone🌕 navigate_browser_NotPromotable🌕 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 check_app_title_Standalone_StandaloneOriginal🌑 -create_shortcut_Standalone_Browser🌑 check_app_title_Standalone_StandaloneOriginal🌑 install_omnibox_icon_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 check_app_title_Standalone_StandaloneOriginal🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_title_Standalone_StandaloneOriginal🌕 @@ -276,110 +232,79 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_title_Standalone_StandaloneOriginal🌕 install_menu_option_Standalone🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_omnibox_icon_Screenshots🌕 -create_shortcut_Standalone_Windowed🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_not_exists_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_not_exists_Standalone🌑 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_not_exists_NotPromotable🌑 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_Standalone_Browser🌑 check_app_in_list_tabbed_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_in_list_tabbed_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_in_list_tabbed_Standalone🌕 -create_shortcut_Standalone_Browser🌑 navigate_browser_Standalone🌑 check_create_shortcut_shown🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_create_shortcut_shown🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_create_shortcut_shown🌑 -create_shortcut_Standalone_Browser🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Browser🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 -create_shortcut_NotPromotable_Browser🌑 check_app_in_list_tabbed_NotPromotable🌑 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 check_app_in_list_tabbed_NotPromotable🌕 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 check_app_in_list_tabbed_NotPromotable🌕 -create_shortcut_NotPromotable_Browser🌑 navigate_browser_NotPromotable🌑 check_create_shortcut_shown🌑 -install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_create_shortcut_shown🌑 -install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_create_shortcut_shown🌑 -create_shortcut_NotPromotable_Browser🌑 navigate_browser_NotPromotable🌑 check_install_icon_not_shown🌑 +install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 +install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 -create_shortcut_NotPromotable_Browser🌑 navigate_browser_NotPromotable🌑 check_launch_icon_not_shown🌑 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_launch_icon_not_shown🌕 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 navigate_browser_NotPromotable🌕 check_launch_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 navigate_browser_Standalone🌑 check_create_shortcut_not_shown🌑 install_omnibox_icon_Standalone🌕 navigate_browser_Standalone🌕 check_create_shortcut_not_shown🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_create_shortcut_not_shown🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_create_shortcut_not_shown🌑 install_menu_option_Standalone🌕 navigate_browser_Standalone🌕 check_create_shortcut_not_shown🌑 -create_shortcut_Standalone_Windowed🌑 navigate_browser_Standalone🌑 check_install_icon_not_shown🌑 install_omnibox_icon_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_menu_option_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 install_omnibox_icon_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_menu_option_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -create_shortcut_MinimalUi_Windowed🌑 navigate_browser_MinimalUi🌑 check_launch_icon_shown🌑 install_omnibox_icon_MinimalUi🌕 navigate_browser_MinimalUi🌕 check_launch_icon_shown🌕 install_policy_app_MinimalUi_WithShortcut_Windowed_WebApp🌓 navigate_browser_MinimalUi🌕 check_launch_icon_shown🌕 install_policy_app_MinimalUi_NoShortcut_Windowed_WebApp🌓 navigate_browser_MinimalUi🌕 check_launch_icon_shown🌕 install_menu_option_MinimalUi🌕 navigate_browser_MinimalUi🌕 check_launch_icon_shown🌕 -create_shortcut_Tabbed_Windowed🌑 check_app_in_list_windowed_Tabbed🌑 install_omnibox_icon_Tabbed🌕 check_app_in_list_windowed_Tabbed🌕 install_policy_app_Tabbed_WithShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_Tabbed🌕 install_policy_app_Tabbed_NoShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_Tabbed🌕 install_menu_option_Tabbed🌕 check_app_in_list_windowed_Tabbed🌕 -create_shortcut_Tabbed_Windowed🌑 navigate_browser_Tabbed🌑 check_launch_icon_shown🌑 check_install_icon_not_shown🌑 install_omnibox_icon_Tabbed🌕 navigate_browser_Tabbed🌕 check_launch_icon_shown🌕 check_install_icon_not_shown🌕 install_policy_app_Tabbed_WithShortcut_Windowed_WebApp🌓 navigate_browser_Tabbed🌕 check_launch_icon_shown🌕 check_install_icon_not_shown🌕 install_policy_app_Tabbed_NoShortcut_Windowed_WebApp🌓 navigate_browser_Tabbed🌕 check_launch_icon_shown🌕 check_install_icon_not_shown🌕 install_menu_option_Tabbed🌕 navigate_browser_Tabbed🌕 check_launch_icon_shown🌕 check_install_icon_not_shown🌕 -create_shortcut_NotPromotable_Windowed🌑 check_app_in_list_windowed_NotPromotable🌑 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_NotPromotable🌕 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 check_app_in_list_windowed_NotPromotable🌕 install_menu_option_NotPromotable🌕 check_app_in_list_windowed_NotPromotable🌕 -create_shortcut_NotPromotable_Windowed🌑 navigate_browser_NotPromotable🌑 check_create_shortcut_not_shown🌑 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_create_shortcut_not_shown🌑 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_create_shortcut_not_shown🌑 install_menu_option_NotPromotable🌕 navigate_browser_NotPromotable🌕 check_create_shortcut_not_shown🌑 -create_shortcut_NotPromotable_Windowed🌑 navigate_browser_NotPromotable🌑 check_install_icon_not_shown🌑 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 install_menu_option_NotPromotable🌕 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 -create_shortcut_NotPromotable_Windowed🌑 navigate_browser_NotPromotable🌑 check_launch_icon_shown🌑 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_launch_icon_shown🌕 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotPromotable🌕 check_launch_icon_shown🌕 install_menu_option_NotPromotable🌕 navigate_browser_NotPromotable🌕 check_launch_icon_shown🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +install_omnibox_icon_Standalone🌕 check_window_created🌕 +install_omnibox_icon_Standalone🌕 close_pwa🌕 check_app_in_list_windowed_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 +install_omnibox_icon_Standalone🌕 close_pwa🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 check_launch_icon_not_shown🌕 +install_menu_option_ChromeUrl🌕 check_window_created🌕 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_NotPromotable🌓 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_NotPromotable🌓 -create_shortcut_NotPromotable_Windowed🌑 check_platform_shortcut_and_icon_NotPromotable🌑 -create_shortcut_NotPromotable_Browser🌑 check_platform_shortcut_and_icon_NotPromotable🌑 install_menu_option_NotPromotable🌕 check_platform_shortcut_and_icon_NotPromotable🌓 -create_shortcut_Standalone_Browser🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 -create_shortcut_Standalone_Browser🌑 launch_from_platform_shortcut_Standalone🌑 install_omnibox_icon_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 -create_shortcut_Standalone_Windowed🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 close_pwa🌑 check_app_in_list_windowed_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 close_pwa🌑 launch_from_platform_shortcut_Standalone🌑 check_pwa_window_created_in_profile_Standalone_One_Default🌑 check_launch_icon_not_shown🌑 -install_menu_option_ChromeUrl🌕 check_window_created🌕 -create_shortcut_ChromeUrl_Windowed🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_list_Standalone🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_menu_Standalone🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_os_Standalone🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_app_settings_Standalone🌑 check_app_not_in_list_Standalone🌑 install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌕 install_omnibox_icon_Standalone🌕 uninstall_from_menu_Standalone🌕 check_app_not_in_list_Standalone🌕 install_omnibox_icon_Standalone🌕 uninstall_from_os_Standalone🌕 check_app_not_in_list_Standalone🌕 @@ -388,10 +313,6 @@ install_menu_option_Standalone🌕 uninstall_from_menu_Standalone🌕 check_app_not_in_list_Standalone🌕 install_menu_option_Standalone🌕 uninstall_from_os_Standalone🌕 check_app_not_in_list_Standalone🌕 install_menu_option_Standalone🌕 uninstall_from_app_settings_Standalone🌕 check_app_not_in_list_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 uninstall_from_list_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_menu_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_os_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_omnibox_icon_Standalone🌕 uninstall_from_menu_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_omnibox_icon_Standalone🌕 uninstall_from_os_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 @@ -400,10 +321,6 @@ install_menu_option_Standalone🌕 uninstall_from_menu_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_menu_option_Standalone🌕 uninstall_from_os_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_menu_option_Standalone🌕 uninstall_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Windowed🌑 uninstall_from_list_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_menu_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_os_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_omnibox_icon_Standalone🌕 uninstall_from_menu_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_omnibox_icon_Standalone🌕 uninstall_from_os_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 @@ -412,10 +329,6 @@ install_menu_option_Standalone🌕 uninstall_from_menu_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_menu_option_Standalone🌕 uninstall_from_os_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_menu_option_Standalone🌕 uninstall_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 uninstall_from_list_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_menu_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_os_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 uninstall_from_app_settings_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 install_omnibox_icon_Standalone🌕 uninstall_from_list_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 install_omnibox_icon_Standalone🌕 uninstall_from_menu_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 install_omnibox_icon_Standalone🌕 uninstall_from_os_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 @@ -424,28 +337,14 @@ install_menu_option_Standalone🌕 uninstall_from_menu_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 install_menu_option_Standalone🌕 uninstall_from_os_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 install_menu_option_Standalone🌕 uninstall_from_app_settings_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_list_NotPromotable🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_menu_NotPromotable🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_os_NotPromotable🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_app_settings_NotPromotable🌑 check_app_not_in_list_Standalone🌑 install_menu_option_NotPromotable🌕 uninstall_from_list_NotPromotable🌕 check_app_not_in_list_Standalone🌕 install_menu_option_NotPromotable🌕 uninstall_from_menu_NotPromotable🌕 check_app_not_in_list_Standalone🌕 install_menu_option_NotPromotable🌕 uninstall_from_os_NotPromotable🌕 check_app_not_in_list_Standalone🌕 install_menu_option_NotPromotable🌕 uninstall_from_app_settings_NotPromotable🌕 check_app_not_in_list_Standalone🌕 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_list_NotPromotable🌑 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_menu_NotPromotable🌑 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_os_NotPromotable🌑 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_NotPromotable_Windowed🌑 uninstall_from_app_settings_NotPromotable🌑 check_platform_shortcut_not_exists_NotPromotable🌑 install_menu_option_NotPromotable🌕 uninstall_from_list_NotPromotable🌕 check_platform_shortcut_not_exists_NotPromotable🌑 install_menu_option_NotPromotable🌕 uninstall_from_menu_NotPromotable🌕 check_platform_shortcut_not_exists_NotPromotable🌑 install_menu_option_NotPromotable🌕 uninstall_from_os_NotPromotable🌕 check_platform_shortcut_not_exists_NotPromotable🌑 install_menu_option_NotPromotable🌕 uninstall_from_app_settings_NotPromotable🌕 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_Standalone_Browser🌑 uninstall_from_list_Standalone🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Browser🌑 uninstall_from_list_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Browser🌑 uninstall_from_list_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 -create_shortcut_Standalone_Browser🌑 uninstall_from_list_Standalone🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_NotPromotable_Browser🌑 uninstall_from_list_NotPromotable🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_NotPromotable_Browser🌑 uninstall_from_list_NotPromotable🌑 check_platform_shortcut_not_exists_NotPromotable🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_not_in_list_Standalone🌕 @@ -466,9 +365,6 @@ install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_not_exists_Standalone🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 @@ -481,15 +377,10 @@ install_menu_option_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_menu_option_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 launch_from_menu_option_Standalone🌑 check_window_display_standalone🌑 -create_shortcut_Standalone_Windowed🌑 launch_from_launch_icon_Standalone🌑 check_window_display_standalone🌑 -create_shortcut_Standalone_Windowed🌑 launch_from_chrome_apps_Standalone🌑 check_window_display_standalone🌑 -create_shortcut_Standalone_Windowed🌑 launch_from_platform_shortcut_Standalone🌑 check_window_display_standalone🌑 install_omnibox_icon_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_display_standalone🌕 install_omnibox_icon_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_display_standalone🌕 install_omnibox_icon_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_display_standalone🌕 @@ -506,14 +397,6 @@ install_menu_option_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_display_standalone🌕 install_menu_option_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_display_standalone🌕 install_menu_option_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_display_standalone🌕 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 set_open_in_window_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 @@ -530,8 +413,6 @@ install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 set_open_in_window_from_app_home_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_settings_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_home_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_app_loaded_in_tab_Standalone🌑 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_app_loaded_in_tab_Standalone🌕 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_app_loaded_in_tab_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_app_loaded_in_tab_Standalone🌕 @@ -540,8 +421,6 @@ install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_app_loaded_in_tab_Standalone🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_app_loaded_in_tab_Standalone🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_app_loaded_in_tab_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_settings_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_home_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 @@ -550,16 +429,10 @@ install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 -create_shortcut_NotPromotable_Browser🌑 launch_from_platform_shortcut_NotPromotable🌑 check_tab_created_One🌑 check_app_loaded_in_tab_NotPromotable🌑 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌓 check_tab_created_One🌕 check_app_loaded_in_tab_NotPromotable🌕 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌓 check_tab_created_One🌕 check_app_loaded_in_tab_NotPromotable🌕 -create_shortcut_NotPromotable_Browser🌑 launch_from_chrome_apps_NotPromotable🌑 check_tab_not_created🌑 check_app_loaded_in_tab_NotPromotable🌑 install_policy_app_NotPromotable_WithShortcut_Browser_WebApp🌓 launch_from_chrome_apps_NotPromotable🌕 check_tab_not_created🌕 check_app_loaded_in_tab_NotPromotable🌕 install_policy_app_NotPromotable_NoShortcut_Browser_WebApp🌓 launch_from_chrome_apps_NotPromotable🌕 check_tab_not_created🌕 check_app_loaded_in_tab_NotPromotable🌕 -create_shortcut_MinimalUi_Windowed🌑 launch_from_menu_option_MinimalUi🌑 check_window_display_minimal🌑 -create_shortcut_MinimalUi_Windowed🌑 launch_from_launch_icon_MinimalUi🌑 check_window_display_minimal🌑 -create_shortcut_MinimalUi_Windowed🌑 launch_from_chrome_apps_MinimalUi🌑 check_window_display_minimal🌑 -create_shortcut_MinimalUi_Windowed🌑 launch_from_platform_shortcut_MinimalUi🌑 check_window_display_minimal🌑 install_omnibox_icon_MinimalUi🌕 launch_from_menu_option_MinimalUi🌕 check_window_display_minimal🌕 install_omnibox_icon_MinimalUi🌕 launch_from_launch_icon_MinimalUi🌕 check_window_display_minimal🌕 install_omnibox_icon_MinimalUi🌕 launch_from_chrome_apps_MinimalUi🌕 check_window_display_minimal🌕 @@ -576,10 +449,6 @@ install_menu_option_MinimalUi🌕 launch_from_launch_icon_MinimalUi🌕 check_window_display_minimal🌕 install_menu_option_MinimalUi🌕 launch_from_chrome_apps_MinimalUi🌕 check_window_display_minimal🌕 install_menu_option_MinimalUi🌕 launch_from_platform_shortcut_MinimalUi🌓 check_window_display_minimal🌕 -create_shortcut_Tabbed_Windowed🌑 maybe_close_pwa🌑 launch_from_menu_option_Tabbed🌑 check_window_display_tabbed🌑 -create_shortcut_Tabbed_Windowed🌑 maybe_close_pwa🌑 launch_from_launch_icon_Tabbed🌑 check_window_display_tabbed🌑 -create_shortcut_Tabbed_Windowed🌑 maybe_close_pwa🌑 launch_from_chrome_apps_Tabbed🌑 check_window_display_tabbed🌑 -create_shortcut_Tabbed_Windowed🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_Tabbed🌑 check_window_display_tabbed🌑 install_omnibox_icon_Tabbed🌕 maybe_close_pwa🌕 launch_from_menu_option_Tabbed🌕 check_window_display_tabbed🌕 install_omnibox_icon_Tabbed🌕 maybe_close_pwa🌕 launch_from_launch_icon_Tabbed🌕 check_window_display_tabbed🌕 install_omnibox_icon_Tabbed🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Tabbed🌕 check_window_display_tabbed🌕 @@ -596,9 +465,6 @@ install_menu_option_Tabbed🌕 maybe_close_pwa🌕 launch_from_launch_icon_Tabbed🌕 check_window_display_tabbed🌕 install_menu_option_Tabbed🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Tabbed🌕 check_window_display_tabbed🌕 install_menu_option_Tabbed🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Tabbed🌓 check_window_display_tabbed🌕 -create_shortcut_NotPromotable_Windowed🌑 launch_from_menu_option_NotPromotable🌑 check_window_created🌑 -create_shortcut_NotPromotable_Windowed🌑 launch_from_launch_icon_NotPromotable🌑 check_window_created🌑 -create_shortcut_NotPromotable_Windowed🌑 launch_from_chrome_apps_NotPromotable🌑 check_window_created🌑 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_NotPromotable🌕 check_window_created🌕 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_launch_icon_NotPromotable🌕 check_window_created🌕 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_NotPromotable🌕 check_window_created🌕 @@ -608,14 +474,11 @@ install_menu_option_NotPromotable🌕 launch_from_menu_option_NotPromotable🌕 check_window_created🌕 install_menu_option_NotPromotable🌕 launch_from_launch_icon_NotPromotable🌕 check_window_created🌕 install_menu_option_NotPromotable🌕 launch_from_chrome_apps_NotPromotable🌕 check_window_created🌕 -create_shortcut_NotPromotable_Windowed🌑 launch_from_platform_shortcut_NotPromotable🌑 check_window_created🌑 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌓 check_window_created🌕 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌓 check_window_created🌕 install_menu_option_NotPromotable🌕 launch_from_platform_shortcut_NotPromotable🌓 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 create_shortcuts_from_list_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcuts_from_list_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 delete_profile🌑 check_app_list_empty🌑 -create_shortcut_Standalone_Browser🌑 delete_profile🌑 check_app_list_empty🌑 install_omnibox_icon_Standalone🌕 delete_profile🌑 check_app_list_empty🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 @@ -626,8 +489,6 @@ install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_list_empty🌑 install_menu_option_Standalone🌕 delete_profile🌑 check_app_list_empty🌑 -create_shortcut_Standalone_Windowed🌑 delete_profile🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Browser🌑 delete_profile🌑 check_app_not_in_list_Standalone🌑 install_omnibox_icon_Standalone🌕 delete_profile🌑 check_app_not_in_list_Standalone🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_app_not_in_list_Standalone🌑 @@ -640,26 +501,18 @@ install_menu_option_Standalone🌕 delete_profile🌑 check_app_not_in_list_Standalone🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Browser🌑 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 install_omnibox_icon_Standalone🌕 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 install_menu_option_Standalone🌕 delete_profile🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Browser🌑 delete_platform_shortcut_Standalone🌑 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 delete_platform_shortcut_Standalone🌑 create_shortcuts_from_list_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 +install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 delete_platform_shortcut_Standalone🌕 create_shortcuts_from_list_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_omnibox_icon_Standalone🌕 delete_platform_shortcut_Standalone🌕 create_shortcuts_from_list_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 delete_platform_shortcut_Standalone🌕 create_shortcuts_from_list_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_menu_option_Standalone🌕 delete_platform_shortcut_Standalone🌕 create_shortcuts_from_list_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcuts_from_list_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 create_shortcuts_from_list_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 open_in_chrome🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 install_omnibox_icon_Standalone🌕 open_in_chrome🌕 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 install_menu_option_Standalone🌕 open_in_chrome🌕 check_tab_created_One🌕 check_app_loaded_in_tab_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 navigate_pwa_Standalone_MinimalUi🌑 open_in_chrome🌑 check_tab_created_One🌑 install_omnibox_icon_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 open_in_chrome🌕 check_tab_created_One🌕 install_menu_option_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 open_in_chrome🌕 check_tab_created_One🌕 -create_shortcut_Standalone_Windowed🌑 open_app_settings_from_chrome_apps_Standalone🌑 check_browser_navigation_is_app_settings_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 open_app_settings_from_app_menu_Standalone🌑 check_browser_navigation_is_app_settings_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 open_app_settings_from_command_Standalone🌑 check_browser_navigation_is_app_settings_Standalone🌑 install_omnibox_icon_Standalone🌕 open_app_settings_from_chrome_apps_Standalone🌕 check_browser_navigation_is_app_settings_Standalone🌕 install_omnibox_icon_Standalone🌕 open_app_settings_from_app_menu_Standalone🌕 check_browser_navigation_is_app_settings_Standalone🌕 install_omnibox_icon_Standalone🌕 open_app_settings_from_command_Standalone🌕 check_browser_navigation_is_app_settings_Standalone🌕 @@ -672,103 +525,50 @@ install_menu_option_Standalone🌕 open_app_settings_from_chrome_apps_Standalone🌕 check_browser_navigation_is_app_settings_Standalone🌕 install_menu_option_Standalone🌕 open_app_settings_from_app_menu_Standalone🌕 check_browser_navigation_is_app_settings_Standalone🌕 install_menu_option_Standalone🌕 open_app_settings_from_command_Standalone🌕 check_browser_navigation_is_app_settings_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_not_shown🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -create_shortcut_NotPromotable_Browser🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 check_app_in_list_tabbed_NotPromotable🌑 -create_shortcut_NotPromotable_Browser🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 navigate_browser_NotPromotable🌑 check_launch_icon_not_shown🌑 -create_shortcut_NotPromotable_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 check_app_in_list_windowed_NotPromotable🌑 install_menu_option_NotPromotable🌕 switch_profile_clients_Client2🌕 install_locally_NotPromotable🌓 check_app_in_list_windowed_NotPromotable🌕 -create_shortcut_NotPromotable_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 navigate_browser_NotPromotable🌑 check_install_icon_not_shown🌑 install_menu_option_NotPromotable🌕 switch_profile_clients_Client2🌕 install_locally_NotPromotable🌓 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 -create_shortcut_NotPromotable_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 navigate_browser_NotPromotable🌑 check_launch_icon_shown🌑 install_menu_option_NotPromotable🌕 switch_profile_clients_Client2🌕 install_locally_NotPromotable🌓 navigate_browser_NotPromotable🌕 check_launch_icon_shown🌕 -create_shortcut_NotPromotable_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 check_platform_shortcut_and_icon_NotPromotable🌑 -create_shortcut_NotPromotable_Browser🌑 switch_profile_clients_Client2🌑 install_locally_NotPromotable🌑 check_platform_shortcut_and_icon_NotPromotable🌑 install_menu_option_NotPromotable🌕 switch_profile_clients_Client2🌕 install_locally_NotPromotable🌓 check_platform_shortcut_and_icon_NotPromotable🌓 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 install_locally_Standalone🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 install_locally_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_site_loaded_in_tab_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_site_loaded_in_tab_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 launch_from_chrome_apps_Standalone🌕 check_tab_not_created🌕 check_site_loaded_in_tab_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 uninstall_from_list_Standalone🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 uninstall_from_list_Standalone🌑 check_app_not_in_list_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 check_app_not_in_list_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 uninstall_from_list_Standalone🌑 switch_profile_clients_Client1🌑 check_app_not_in_list_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 uninstall_from_list_Standalone🌑 switch_profile_clients_Client1🌑 check_app_not_in_list_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 switch_profile_clients_Client1🌕 check_app_not_in_list_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 uninstall_from_list_Standalone🌕 switch_profile_clients_Client1🌕 check_app_not_in_list_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 check_platform_shortcut_not_exists_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 check_platform_shortcut_not_exists_Standalone🌑 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 -create_shortcut_NotPromotable_Windowed🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_NotPromotable🌑 -create_shortcut_NotPromotable_Browser🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_NotPromotable🌑 install_menu_option_NotPromotable🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_NotPromotable🌕 -create_shortcut_NotPromotable_Windowed🌑 switch_profile_clients_Client2🌑 check_platform_shortcut_not_exists_NotPromotable🌑 -create_shortcut_NotPromotable_Browser🌑 switch_profile_clients_Client2🌑 check_platform_shortcut_not_exists_NotPromotable🌑 install_menu_option_NotPromotable🌕 switch_profile_clients_Client2🌕 check_platform_shortcut_not_exists_NotPromotable🌑 -sync_turn_off🌕 create_shortcut_Standalone_Windowed🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 -sync_turn_off🌕 create_shortcut_Standalone_Browser🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 sync_turn_off🌕 install_omnibox_icon_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 sync_turn_off🌕 install_menu_option_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 -sync_sign_out🌕 create_shortcut_Standalone_Windowed🌑 sync_sign_in🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 -sync_sign_out🌕 create_shortcut_Standalone_Browser🌑 sync_sign_in🌑 switch_profile_clients_Client2🌑 check_app_not_in_list_Standalone🌑 sync_sign_out🌕 install_omnibox_icon_Standalone🌕 sync_sign_in🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 sync_sign_out🌕 install_menu_option_Standalone🌕 sync_sign_in🌕 switch_profile_clients_Client2🌕 check_app_not_in_list_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 check_app_not_in_list_Standalone🌑 sync_turn_on🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 check_app_not_in_list_Standalone🌑 sync_turn_on🌑 check_app_in_list_not_locally_installed_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌕 sync_turn_on🌕 check_app_in_list_not_locally_installed_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌕 sync_turn_on🌕 check_app_in_list_not_locally_installed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 check_app_not_in_list_Standalone🌑 sync_turn_on🌑 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 check_app_not_in_list_Standalone🌑 sync_turn_on🌑 check_platform_shortcut_not_exists_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌕 sync_turn_on🌕 check_platform_shortcut_not_exists_Standalone🌑 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 check_app_not_in_list_Standalone🌕 sync_turn_on🌕 check_platform_shortcut_not_exists_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_list_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_menu_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_os_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_app_settings_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_list_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_menu_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_os_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 switch_profile_clients_Client2🌑 sync_turn_off🌑 switch_profile_clients_Client1🌑 uninstall_from_app_settings_Standalone🌑 sync_turn_on🌑 switch_profile_clients_Client2🌑 check_app_in_list_not_locally_installed_Standalone🌑 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 switch_profile_clients_Client1🌕 uninstall_from_list_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 switch_profile_clients_Client1🌕 uninstall_from_menu_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 install_omnibox_icon_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 switch_profile_clients_Client1🌕 uninstall_from_os_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 @@ -777,150 +577,84 @@ install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 switch_profile_clients_Client1🌕 uninstall_from_menu_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 switch_profile_clients_Client1🌕 uninstall_from_os_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 install_menu_option_Standalone🌕 switch_profile_clients_Client2🌕 sync_turn_off🌕 switch_profile_clients_Client1🌕 uninstall_from_app_settings_Standalone🌕 sync_turn_on🌕 switch_profile_clients_Client2🌕 check_app_in_list_not_locally_installed_Standalone🌕 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 check_app_in_list_windowed_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 check_app_in_list_windowed_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 check_platform_shortcut_and_icon_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 check_platform_shortcut_and_icon_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 check_window_created🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_window_created🌕 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 check_window_created🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 check_window_created🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 check_window_created🌕 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 launch_from_platform_shortcut_Standalone🌑 check_tab_created_One🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 launch_from_chrome_apps_Standalone🌑 check_tab_not_created🌑 check_app_loaded_in_tab_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Browser🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -create_shortcut_Standalone_Windowed🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_omnibox_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_menu_option_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 uninstall_policy_app_Standalone🌑 check_app_in_list_windowed_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 uninstall_policy_app_Standalone🌕 check_app_in_list_windowed_Standalone🌕 -install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_WithShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 -install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcut_Standalone_Windowed🌑 uninstall_policy_app_Standalone🌑 check_platform_shortcut_and_icon_Standalone🌑 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_omnibox_icon_Standalone🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 install_menu_option_Standalone🌕 uninstall_policy_app_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌓 install_policy_app_StandaloneNotStartUrl_WithShortcut_Windowed_WebShortcut🌓 launch_from_menu_option_StandaloneNotStartUrl🌕 check_app_navigation_StandaloneNotStartUrl🌕 @@ -939,10 +673,6 @@ install_policy_app_StandaloneNotStartUrl_WithShortcut_Browser_WebApp🌓 check_app_not_in_list_StandaloneNotStartUrl🌕 check_app_in_list_icon_correct_Standalone🌕 install_policy_app_StandaloneNotStartUrl_WithShortcut_Windowed_WebShortcut🌓 check_app_not_in_list_Standalone🌕 check_app_in_list_icon_correct_StandaloneNotStartUrl🌕 install_policy_app_StandaloneNotStartUrl_WithShortcut_Browser_WebShortcut🌓 check_app_not_in_list_Standalone🌕 check_app_in_list_icon_correct_StandaloneNotStartUrl🌕 -create_shortcut_Standalone_Windowed🌑 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_color_correct_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_color_correct_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_color_correct_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_color_correct_Standalone🌑 install_omnibox_icon_Standalone🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_color_correct_Standalone🌑 install_omnibox_icon_Standalone🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_color_correct_Standalone🌑 install_omnibox_icon_Standalone🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_color_correct_Standalone🌑 @@ -955,10 +685,6 @@ install_menu_option_Standalone🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_color_correct_Standalone🌑 install_menu_option_Standalone🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_color_correct_Standalone🌑 install_menu_option_Standalone🌕 manifest_update_colors_Standalone🌑 await_manifest_update_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_color_correct_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Browser🌑 await_manifest_update_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Browser🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Browser🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Browser🌑 await_manifest_update_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 @@ -971,10 +697,6 @@ install_menu_option_Standalone🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_menu_option_Standalone🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_menu_option_Standalone🌕 manifest_update_display_Standalone_Browser🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_MinimalUi🌑 await_manifest_update_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_MinimalUi🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_MinimalUi🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_MinimalUi🌑 await_manifest_update_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_minimal🌑 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 @@ -987,18 +709,12 @@ install_menu_option_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_menu_option_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 install_menu_option_Standalone🌕 manifest_update_display_Standalone_MinimalUi🌕 await_manifest_update_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_window_created🌕 check_tab_not_created🌕 check_window_display_minimal🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 navigate_browser_Standalone🌑 check_install_icon_not_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_install_icon_not_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_Standalone🌕 check_launch_icon_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 launch_from_menu_option_StandaloneNestedA🌑 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌑 check_no_toolbar🌑 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 launch_from_launch_icon_StandaloneNestedA🌑 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌑 check_no_toolbar🌑 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 launch_from_chrome_apps_StandaloneNestedA🌑 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌑 check_no_toolbar🌑 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 launch_from_platform_shortcut_StandaloneNestedA🌑 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌑 check_no_toolbar🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_menu_option_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_launch_icon_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_chrome_apps_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 @@ -1011,26 +727,18 @@ install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_launch_icon_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_chrome_apps_StandaloneNestedA🌕 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 launch_from_platform_shortcut_StandaloneNestedA🌓 navigate_pwa_StandaloneNestedA_StandaloneNestedB🌕 check_no_toolbar🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 navigate_browser_StandaloneNestedB🌑 check_install_icon_not_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_install_icon_not_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_install_icon_not_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_install_icon_not_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 navigate_browser_StandaloneNestedB🌑 check_launch_icon_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_launch_icon_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_launch_icon_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedB🌕 check_launch_icon_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 navigate_browser_StandaloneNestedA🌑 check_install_icon_not_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 manifest_update_scope_to_StandaloneNestedA_Standalone🌑 await_manifest_update_StandaloneNestedA🌑 navigate_browser_StandaloneNestedA🌑 check_launch_icon_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_launch_icon_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_launch_icon_shown🌕 install_menu_option_StandaloneNestedA🌕 manifest_update_scope_to_StandaloneNestedA_Standalone🌕 await_manifest_update_StandaloneNestedA🌕 navigate_browser_StandaloneNestedA🌕 check_launch_icon_shown🌕 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Tabbed🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_menu_option_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_tabbed🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Tabbed🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_launch_icon_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_tabbed🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Tabbed🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_chrome_apps_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_tabbed🌑 -create_shortcut_Standalone_Windowed🌑 manifest_update_display_Standalone_Tabbed🌑 maybe_close_pwa🌑 await_manifest_update_Standalone🌑 launch_from_platform_shortcut_Standalone🌑 check_window_created🌑 check_tab_not_created🌑 check_window_display_tabbed🌑 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_menu_option_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_launch_icon_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 install_omnibox_icon_Standalone🌕 manifest_update_display_Standalone_Tabbed🌕 maybe_close_pwa🌕 await_manifest_update_Standalone🌕 launch_from_chrome_apps_Standalone🌕 check_window_created🌕 check_tab_not_created🌕 check_window_display_tabbed🌕 @@ -1056,12 +764,10 @@ navigate_browser_StandaloneNestedA🌕 check_install_icon_shown🌕 navigate_browser_NotPromotable🌕 check_create_shortcut_shown🌑 navigate_browser_NotPromotable🌕 check_install_icon_not_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 navigate_browser_NotInstalled🌑 check_install_icon_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 navigate_browser_NotInstalled🌕 check_install_icon_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotInstalled🌕 check_install_icon_shown🌕 install_policy_app_StandaloneNestedA_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotInstalled🌕 check_install_icon_shown🌕 install_menu_option_StandaloneNestedA🌕 navigate_browser_NotInstalled🌕 check_install_icon_shown🌕 -create_shortcut_StandaloneNestedA_Windowed🌑 navigate_browser_NotInstalled🌑 check_launch_icon_not_shown🌑 install_omnibox_icon_StandaloneNestedA🌕 navigate_browser_NotInstalled🌕 check_launch_icon_not_shown🌕 install_policy_app_StandaloneNestedA_WithShortcut_Windowed_WebApp🌓 navigate_browser_NotInstalled🌕 check_launch_icon_not_shown🌕 install_policy_app_StandaloneNestedA_NoShortcut_Windowed_WebApp🌓 navigate_browser_NotInstalled🌕 check_launch_icon_not_shown🌕 @@ -1070,37 +776,22 @@ install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 install_menu_option_Standalone🌕 navigate_browser_StandaloneNestedA🌕 check_install_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 navigate_browser_MinimalUi🌑 check_install_icon_shown🌑 install_omnibox_icon_Standalone🌕 navigate_browser_MinimalUi🌕 check_install_icon_shown🌕 install_menu_option_Standalone🌕 navigate_browser_MinimalUi🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Windowed🌑 navigate_browser_MinimalUi🌑 check_launch_icon_not_shown🌑 install_omnibox_icon_Standalone🌕 navigate_browser_MinimalUi🌕 check_launch_icon_not_shown🌕 install_menu_option_Standalone🌕 navigate_browser_MinimalUi🌕 check_launch_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 navigate_pwa_Standalone_MinimalUi🌑 check_app_title_Standalone_StandaloneOriginal🌑 install_omnibox_icon_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 check_app_title_Standalone_StandaloneOriginal🌕 install_menu_option_Standalone🌕 navigate_pwa_Standalone_MinimalUi🌕 check_app_title_Standalone_StandaloneOriginal🌕 -create_shortcut_Standalone_Windowed🌑 switch_incognito_profile🌑 navigate_browser_Standalone🌑 check_launch_icon_not_shown🌑 install_omnibox_icon_Standalone🌕 switch_incognito_profile🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 install_menu_option_Standalone🌕 switch_incognito_profile🌕 navigate_browser_Standalone🌕 check_launch_icon_not_shown🌕 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_settings_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_home_Standalone🌑 check_app_in_list_tabbed_Standalone🌑 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 check_app_in_list_tabbed_Standalone🌕 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 check_app_in_list_tabbed_Standalone🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 check_app_in_list_tabbed_Standalone🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 check_app_in_list_tabbed_Standalone🌕 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 -create_shortcut_Standalone_Windowed🌑 set_open_in_tab_from_app_home_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_shown🌑 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_omnibox_icon_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_settings_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 install_menu_option_Standalone🌕 set_open_in_tab_from_app_home_Standalone🌕 navigate_browser_Standalone🌕 check_install_icon_shown🌕 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 check_app_in_list_windowed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 check_app_in_list_windowed_Standalone🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_not_shown🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 navigate_browser_Standalone🌑 check_install_icon_not_shown🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_settings_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 -create_shortcut_Standalone_Browser🌑 set_open_in_window_from_app_home_Standalone🌑 navigate_browser_Standalone🌑 check_launch_icon_shown🌑 -create_shortcut_Wco_Windowed🌑 check_window_controls_overlay_toggle_Wco_Shown🌑 install_omnibox_icon_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_menu_option_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 @@ -1111,7 +802,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 check_window_controls_overlay_toggle_Wco_Shown🌕 -create_shortcut_Standalone_Windowed🌑 check_window_controls_overlay_toggle_Standalone_NotShown🌑 install_omnibox_icon_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 install_menu_option_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 @@ -1122,7 +812,6 @@ install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Standalone🌕 check_window_controls_overlay_toggle_Standalone_NotShown🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Standalone🌓 check_window_controls_overlay_toggle_Standalone_NotShown🌕 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 check_window_controls_overlay_Wco_On🌑 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 @@ -1133,7 +822,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_On🌕 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 check_window_controls_overlay_toggle_Wco_Shown🌑 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 @@ -1144,7 +832,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌕 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 disable_window_controls_overlay_Wco🌑 check_window_controls_overlay_Wco_Off🌑 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 @@ -1155,7 +842,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_Wco_Off🌕 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 disable_window_controls_overlay_Wco🌑 check_window_controls_overlay_toggle_Wco_Shown🌑 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 @@ -1166,10 +852,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌕 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 disable_window_controls_overlay_Wco🌕 check_window_controls_overlay_toggle_Wco_Shown🌕 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 launch_from_menu_option_Wco🌑 check_window_controls_overlay_Wco_On🌑 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 launch_from_launch_icon_Wco🌑 check_window_controls_overlay_Wco_On🌑 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 launch_from_chrome_apps_Wco🌑 check_window_controls_overlay_Wco_On🌑 -create_shortcut_Wco_Windowed🌑 enable_window_controls_overlay_Wco🌑 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_Wco_On🌑 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 launch_from_menu_option_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_omnibox_icon_Wco🌕 enable_window_controls_overlay_Wco🌕 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_Wco_On🌕 @@ -1210,10 +892,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_Wco_On🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enable_window_controls_overlay_Wco🌕 launch_from_platform_shortcut_Wco🌓 check_window_controls_overlay_Wco_On🌕 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_menu_option_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_launch_icon_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_chrome_apps_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 @@ -1230,10 +908,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌓 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_menu_option_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_launch_icon_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_chrome_apps_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 @@ -1250,10 +924,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌓 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_menu_option_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_MinimalUi_On🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_launch_icon_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_MinimalUi_On🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_chrome_apps_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_MinimalUi_On🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_MinimalUi_On🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 @@ -1270,10 +940,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_MinimalUi_On🌕 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_menu_option_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_launch_icon_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_chrome_apps_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 @@ -1290,10 +956,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_menu_option_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_launch_icon_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_chrome_apps_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 -create_shortcut_MinimalUi_Windowed🌑 manifest_update_display_MinimalUi_Wco🌑 await_manifest_update_MinimalUi🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_MinimalUi🌑 enable_window_controls_overlay_MinimalUi🌑 check_window_controls_overlay_toggle_MinimalUi_Shown🌑 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_menu_option_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_omnibox_icon_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 @@ -1310,10 +972,6 @@ install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_launch_icon_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_chrome_apps_MinimalUi🌕 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 install_menu_option_MinimalUi🌕 manifest_update_display_MinimalUi_Wco🌕 await_manifest_update_MinimalUi🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_MinimalUi🌓 enable_window_controls_overlay_MinimalUi🌕 check_window_controls_overlay_toggle_MinimalUi_Shown🌕 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_menu_option_Wco🌑 check_window_controls_overlay_toggle_Wco_NotShown🌑 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_launch_icon_Wco🌑 check_window_controls_overlay_toggle_Wco_NotShown🌑 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_chrome_apps_Wco🌑 check_window_controls_overlay_toggle_Wco_NotShown🌑 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_toggle_Wco_NotShown🌑 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_menu_option_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 @@ -1330,10 +988,6 @@ install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_toggle_Wco_NotShown🌕 install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Wco🌓 check_window_controls_overlay_toggle_Wco_NotShown🌕 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_menu_option_Wco🌑 check_window_controls_overlay_Wco_Off🌑 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_launch_icon_Wco🌑 check_window_controls_overlay_Wco_Off🌑 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_chrome_apps_Wco🌑 check_window_controls_overlay_Wco_Off🌑 -create_shortcut_Wco_Windowed🌑 manifest_update_display_Wco_Standalone🌑 await_manifest_update_Wco🌑 maybe_close_pwa🌑 launch_from_platform_shortcut_Wco🌑 check_window_controls_overlay_Wco_Off🌑 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_menu_option_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_omnibox_icon_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_Wco_Off🌕 @@ -1350,13 +1004,10 @@ install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_launch_icon_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_chrome_apps_Wco🌕 check_window_controls_overlay_Wco_Off🌕 install_menu_option_Wco🌕 manifest_update_display_Wco_Standalone🌕 await_manifest_update_Wco🌕 maybe_close_pwa🌕 launch_from_platform_shortcut_Wco🌓 check_window_controls_overlay_Wco_Off🌕 -create_shortcut_Wco_Windowed🌑 check_window_controls_overlay_toggle_icon_Shown🌑 install_omnibox_icon_Wco🌕 check_window_controls_overlay_toggle_icon_Shown🌕 install_menu_option_Wco🌕 check_window_controls_overlay_toggle_icon_Shown🌕 -create_shortcut_Wco_Windowed🌑 enter_full_screen_app🌑 check_window_controls_overlay_toggle_icon_NotShown🌑 install_omnibox_icon_Wco🌕 enter_full_screen_app🌕 check_window_controls_overlay_toggle_icon_NotShown🌕 install_menu_option_Wco🌕 enter_full_screen_app🌕 check_window_controls_overlay_toggle_icon_NotShown🌕 -create_shortcut_Wco_Windowed🌑 enter_full_screen_app🌑 exit_full_screen_app🌑 check_window_controls_overlay_toggle_icon_Shown🌑 install_omnibox_icon_Wco🌕 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌕 install_menu_option_Wco🌕 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌕 install_policy_app_Wco_WithShortcut_Windowed_WebApp🌓 launch_from_menu_option_Wco🌕 check_window_controls_overlay_toggle_icon_Shown🌕 @@ -1383,8 +1034,6 @@ install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_launch_icon_Wco🌕 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_chrome_apps_Wco🌕 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌕 install_policy_app_Wco_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_Wco🌓 enter_full_screen_app🌕 exit_full_screen_app🌕 check_window_controls_overlay_toggle_icon_Shown🌕 -create_shortcut_FileHandler_Windowed🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 -create_shortcut_FileHandler_Browser🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 @@ -1394,79 +1043,50 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_menu_option_FileHandler🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_settings_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_settings_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneBarFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_settings_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleFooFiles_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_MultipleFooFiles🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_settings_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 -create_shortcut_FileHandler_Windowed🌑 set_open_in_tab_from_app_home_FileHandler🌑 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌑 check_tab_created_Two🌑 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_settings_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 install_menu_option_FileHandler🌕 set_open_in_tab_from_app_home_FileHandler🌕 launch_file_expect_dialog_FileHandler_MultipleBarFiles_Allow_AskAgain🌕 check_tab_created_Two🌕 check_files_loaded_in_site_FileHandler_MultipleBarFiles🌕 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Browser🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_menu_option_FileHandler🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Browser🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 maybe_close_pwa🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 maybe_close_pwa🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1476,30 +1096,6 @@ install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 maybe_close_pwa🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 maybe_close_pwa🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Browser🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_menu_option_FileHandler🌑 maybe_close_pwa🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Windowed🌑 maybe_close_pwa🌑 switch_active_profile_Profile2🌑 install_menu_option_FileHandler🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1509,19 +1105,6 @@ install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 maybe_close_pwa🌕 switch_active_profile_Profile2🌕 install_menu_option_FileHandler🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 switch_active_profile_Profile2🌑 install_menu_option_FileHandler🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1531,8 +1114,6 @@ install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_menu_option_FileHandler🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_pwa_window_created_FileHandler_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1542,8 +1123,6 @@ install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 switch_active_profile_Profile2🌕 install_menu_option_FileHandler🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_pwa_window_created_FileHandler_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1553,8 +1132,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_menu_option_FileHandler🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Windowed🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 create_shortcut_FileHandler_Browser🌑 disable_file_handling_FileHandler🌑 switch_active_profile_Default🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_tab_created_One🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1564,20 +1141,15 @@ install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 switch_active_profile_Profile2🌕 install_menu_option_FileHandler🌕 disable_file_handling_FileHandler🌕 switch_active_profile_Default🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_tab_created_One🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 close_pwa🌑 launch_file_expect_no_dialog_FileHandler_OneBarFile🌑 check_files_loaded_in_site_FileHandler_OneBarFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneBarFile🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneBarFile🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_Remember🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneFooFile🌕 close_pwa🌕 launch_file_expect_no_dialog_FileHandler_OneBarFile🌕 check_files_loaded_in_site_FileHandler_OneBarFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 @@ -1587,8 +1159,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_handles_file_FileHandler_Foo🌑 check_site_handles_file_FileHandler_Bar🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 @@ -1598,8 +1168,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_handles_file_FileHandler_Foo🌕 check_site_handles_file_FileHandler_Bar🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 check_files_loaded_in_site_FileHandler_OneFooFile🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 @@ -1609,8 +1177,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_AskAgain🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌕 check_files_loaded_in_site_FileHandler_OneFooFile🌕 -create_shortcut_FileHandler_Windowed🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_not_handles_file_FileHandler_Foo🌑 check_site_not_handles_file_FileHandler_Bar🌑 -create_shortcut_FileHandler_Browser🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌑 check_window_not_created🌑 check_tab_not_created🌑 check_site_not_handles_file_FileHandler_Foo🌑 check_site_not_handles_file_FileHandler_Bar🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_not_handles_file_FileHandler_Foo🌕 check_site_not_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_not_handles_file_FileHandler_Foo🌕 check_site_not_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_not_handles_file_FileHandler_Foo🌕 check_site_not_handles_file_FileHandler_Bar🌕 @@ -1620,8 +1186,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_not_handles_file_FileHandler_Foo🌕 check_site_not_handles_file_FileHandler_Bar🌕 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_not_handles_file_FileHandler_Foo🌕 check_site_not_handles_file_FileHandler_Bar🌕 install_menu_option_FileHandler🌕 launch_file_expect_dialog_FileHandler_OneFooFile_Deny_Remember🌕 check_window_not_created🌕 check_tab_not_created🌕 check_site_not_handles_file_FileHandler_Foo🌕 check_site_not_handles_file_FileHandler_Bar🌕 -create_shortcut_FileHandler_Windowed🌑 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 -create_shortcut_FileHandler_Browser🌑 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 @@ -1631,8 +1195,6 @@ install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_policy_app_FileHandler_NoShortcut_Browser_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 install_menu_option_FileHandler🌕 add_file_handling_policy_approval_FileHandler🌑 launch_file_expect_no_dialog_FileHandler_OneFooFile🌑 check_pwa_window_created_FileHandler_One🌑 -create_shortcut_FileHandler_Windowed🌑 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 -create_shortcut_FileHandler_Browser🌑 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_WithShortcut_Windowed_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_WithShortcut_Browser_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑 install_policy_app_FileHandler_NoShortcut_Windowed_WebApp🌓 add_file_handling_policy_approval_FileHandler🌑 remove_file_handling_policy_approval_FileHandler🌑 launch_file_expect_dialog_FileHandler_OneFooFile_Allow_AskAgain🌑
diff --git a/chrome/test/webapps/data/actions.md b/chrome/test/webapps/data/actions.md index 117a671a..407c1677 100644 --- a/chrome/test/webapps/data/actions.md +++ b/chrome/test/webapps/data/actions.md
@@ -20,7 +20,7 @@ TODO(dmurph): Possibly this table up into markdown-header section. -| # Action base name | Argument Types | Output Actions | Unique Identifier (next: 179) | Status (WIP, Implemented, Not Implemented, Parameterized) | Description | Metadata, implementation bug, etc | +| # Action base name | Argument Types | Output Actions | Unique Identifier (next: 181) | Status (WIP, Implemented, Not Implemented, Parameterized) | Description | Metadata, implementation bug, etc | | --- | --- | --- | --- | --- | --- | --- | | # Badging | | check_app_badge_empty | Site | | 2 | Not Implemented | Check that the 'badge' on the app icon is empty | | @@ -49,6 +49,9 @@ | | | # Create Shortcut | | create_shortcut | Site, WindowOptions | | 29 | Implemented | Use the 'create shortcut' functionality at the given location using the "Create Shortcut" menu option (3-dot->"More Tools"->"Create Shortcut) The WindowOption specified if the "Open in a window" checkbox should be selected. | | +| create_shortcut_tabbed | Site | create_shortcut($1, Browser) | 54 | Parameterized | | | +| create_shortcut_windowed | Site | create_shortcut($1, Windowed) | 179 | Parameterized | | | +| create_shortcut_all | Site | create_shortcut($1, WindowOptions::All) | 180 | Parameterized | | | | | | # Install | | install_omnibox_icon | InstallableSite | | 31 | Implemented | | | @@ -57,19 +60,14 @@ | install_no_shortcut | Site | install_policy_app($1, NoShortcut, WindowOptions::All, WebApp) | 56 | Parameterized | | | | install_tabbed_no_shortcut | Site | install_policy_app($1, NoShortcut, Browser, WebApp) | 129 | Parameterized | All installation methods that result in a tabbed webapp without shortcut. | | | install_windowed_no_shortcut | Site | install_policy_app($1, NoShortcut, Windowed, WebApp) | 131 | Parameterized | All installation methods that result in a windowed webapp without shortcut. | | -| install_by_user_windowed | Site | install_omnibox_icon($1) & install_menu_option($1) | 137 | Parameterized | All user installation methods that result in a windowed webapp without shortcut. | | -| install_windowed | Site | install_omnibox_icon($1) & install_policy_app($1, ShortcutOptions::All, Windowed, WebApp) & install_menu_option($1) | 178 | Parameterized | All installation methods that result in a windowed webapp. | | | # Install & Create Shortcut Parameterized | -| install_or_shortcut | Site | create_shortcut($1, WindowOptions::All) & install_omnibox_icon($1) & install_policy_app($1, ShortcutOptions::All, WindowOptions::All, WebApp) & install_menu_option($1) | 52 | Parameterized | | | -| install_or_shortcut_by_user | Site | create_shortcut($1, WindowOptions::All) & install_omnibox_icon($1) & install_menu_option($1) | 53 | Parameterized | | | -| install_or_shortcut_by_user_tabbed | Site | create_shortcut($1, Browser) | 54 | Parameterized | | | -| install_or_shortcut_by_user_windowed | Site | create_shortcut($1, Windowed) & install_omnibox_icon($1) & install_menu_option($1) | 55 | Parameterized | | | -| install_or_shortcut_tabbed | Site | create_shortcut($1, Browser) & install_policy_app($1, ShortcutOptions::All, Browser, WebApp) | 61 | Parameterized | All installation methods that result in a tabbed webapp. | | -| install_or_shortcut_tabbed_with_shortcut | Site | create_shortcut($1, Browser) & install_policy_app($1, WithShortcut, Browser) | 128 | Parameterized | All installation methods that result in a tabbed webapp with shortcut created. | | -| install_or_shortcut_windowed | Site | create_shortcut($1, Windowed) & install_omnibox_icon($1) & install_policy_app($1, ShortcutOptions::All, Windowed, WebApp) & install_menu_option($1) | 62 | Parameterized | All installation methods that result in a windowed webapp. | | -| install_or_shortcut_windowed_with_shortcut | Site | create_shortcut($1, Windowed) & install_omnibox_icon($1) & install_policy_app($1, WithShortcut, Windowed, WebApp) & install_menu_option($1) | 130 | Parameterized | All installation methods that result in a windowed webapp with shortcut created. | | -| install_or_shortcut_by_user_windowed_with_shortcut | Site | create_shortcut($1, Windowed) & install_omnibox_icon($1) & install_menu_option($1) | 136 | Parameterized | All user initiated installation methods that result in a windowed webapp with shortcut created. | | -| install_or_shortcut_with_shortcut | Site | install_policy_app($1, WithShortcut, WindowOptions::All, WebApp) & create_shortcut($1, WindowOptions::All) & install_omnibox_icon($1) & install_menu_option($1) | 63 | Parameterized | | | +| install | Site | install_omnibox_icon($1) & install_policy_app($1, ShortcutOptions::All, WindowOptions::All, WebApp) & install_menu_option($1) | 52 | Parameterized | | | +| install_tabbed | Site | install_policy_app($1, ShortcutOptions::All, Browser, WebApp) | 61 | Parameterized | All installation methods that result in a tabbed webapp. | | +| install_tabbed_with_shortcut | Site | install_policy_app($1, WithShortcut, Browser, WebApp) | 128 | Parameterized | All installation methods that result in a tabbed webapp with shortcut created. | | +| install_windowed | Site | install_omnibox_icon($1) & install_policy_app($1, ShortcutOptions::All, Windowed, WebApp) & install_menu_option($1) | 62 | Parameterized | All installation methods that result in a windowed webapp. | | +| install_windowed_with_shortcut | Site | install_omnibox_icon($1) & install_policy_app($1, WithShortcut, Windowed, WebApp) & install_menu_option($1) | 130 | Parameterized | All installation methods that result in a windowed webapp with shortcut created. | | +| install_by_user | Site | install_omnibox_icon($1) & install_menu_option($1) | 136 | Parameterized | All user initiated installation methods that result in a windowed webapp with shortcut created. | | +| install_with_shortcut | Site | install_policy_app($1, WithShortcut, WindowOptions::All, WebApp) & install_omnibox_icon($1) & install_menu_option($1) | 63 | Parameterized | | | | | | # Uninstall | | uninstall_from_os | Site | | 87 | Implemented | Uninstalls the app from OS integration - e.g. Windows Control Panel / Start menu | |
diff --git a/chrome/test/webapps/data/critical_user_journeys.md b/chrome/test/webapps/data/critical_user_journeys.md index 18d34a8..35190dc 100644 --- a/chrome/test/webapps/data/critical_user_journeys.md +++ b/chrome/test/webapps/data/critical_user_journeys.md
@@ -20,39 +20,39 @@ ## App Identity Updating tests | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| WMLC | install_by_user_windowed(Standalone) | launch(Standalone) | check_app_title(Standalone, StandaloneOriginal) | -| WMLC | install_by_user_windowed(Standalone) | manifest_update_title(Standalone, StandaloneUpdated, AcceptUpdate) | await_manifest_update | launch(Standalone) | check_app_title(Standalone, StandaloneUpdated) | -| WMLC | install_by_user_windowed(Standalone) | manifest_update_title(Standalone, StandaloneUpdated, CancelUninstallAndAcceptUpdate) | await_manifest_update | launch(Standalone) | check_app_title(Standalone, StandaloneUpdated) | -| WMLC | install_by_user_windowed(Standalone) | manifest_update_title(Standalone, StandaloneUpdated, CancelDialogAndUninstall) | await_manifest_update | check_app_not_in_list | check_platform_shortcut_not_exists | -| WMLC | install_by_user_windowed(Standalone) | manifest_update_icon(Standalone, AcceptUpdate) | await_manifest_update | check_app_icon(Standalone, Red) | +| WMLC | install_by_user(Standalone) | launch(Standalone) | check_app_title(Standalone, StandaloneOriginal) | +| WMLC | install_by_user(Standalone) | manifest_update_title(Standalone, StandaloneUpdated, AcceptUpdate) | await_manifest_update | launch(Standalone) | check_app_title(Standalone, StandaloneUpdated) | +| WMLC | install_by_user(Standalone) | manifest_update_title(Standalone, StandaloneUpdated, CancelUninstallAndAcceptUpdate) | await_manifest_update | launch(Standalone) | check_app_title(Standalone, StandaloneUpdated) | +| WMLC | install_by_user(Standalone) | manifest_update_title(Standalone, StandaloneUpdated, CancelDialogAndUninstall) | await_manifest_update | check_app_not_in_list | check_platform_shortcut_not_exists | +| WMLC | install_by_user(Standalone) | manifest_update_icon(Standalone, AcceptUpdate) | await_manifest_update | check_app_icon(Standalone, Red) | | WMLC | install_policy_app(Standalone, ShortcutOptions::All, Windowed, WebApp) | manifest_update_title(Standalone, StandaloneUpdated, SkipDialog) | await_manifest_update | launch_from_platform_shortcut(Standalone) | check_app_title(Standalone, StandaloneUpdated) | ## Run on OS Login | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| WML | install_or_shortcut | apply_run_on_os_login_policy_blocked | check_user_cannot_set_run_on_os_login | -| WML | install_or_shortcut | enable_run_on_os_login | apply_run_on_os_login_policy_blocked | check_run_on_os_login_disabled | -| WML | install_or_shortcut | apply_run_on_os_login_policy_run_windowed | check_run_on_os_login_enabled | -| WML | install_or_shortcut | apply_run_on_os_login_policy_run_windowed | check_user_cannot_set_run_on_os_login | -| WML | install_or_shortcut | enable_run_on_os_login | check_run_on_os_login_enabled | -| WML | install_or_shortcut | enable_run_on_os_login | disable_run_on_os_login | check_run_on_os_login_disabled | -| WML | install_or_shortcut | apply_run_on_os_login_policy_run_windowed | remove_run_on_os_login_policy | check_run_on_os_login_disabled | -| WML | install_or_shortcut | enable_run_on_os_login | apply_run_on_os_login_policy_blocked | remove_run_on_os_login_policy | check_run_on_os_login_enabled | -| WML | install_or_shortcut_by_user_windowed | switch_profile_clients(Client2) | switch_profile_clients(Client1) | sync_turn_off | uninstall_by_user | switch_profile_clients(Client2) | check_app_not_in_list | -| WML | install_or_shortcut_by_user_windowed | switch_profile_clients(Client2) | switch_profile_clients(Client2) | apply_run_on_os_login_policy_run_windowed | check_run_on_os_login_disabled | -| WML | install_or_shortcut_by_user_windowed | switch_profile_clients(Client2) | switch_profile_clients(Client2) | apply_run_on_os_login_policy_run_windowed | install_locally | check_run_on_os_login_enabled | +| WML | install | apply_run_on_os_login_policy_blocked | check_user_cannot_set_run_on_os_login | +| WML | install | enable_run_on_os_login | apply_run_on_os_login_policy_blocked | check_run_on_os_login_disabled | +| WML | install | apply_run_on_os_login_policy_run_windowed | check_run_on_os_login_enabled | +| WML | install | apply_run_on_os_login_policy_run_windowed | check_user_cannot_set_run_on_os_login | +| WML | install | enable_run_on_os_login | check_run_on_os_login_enabled | +| WML | install | enable_run_on_os_login | disable_run_on_os_login | check_run_on_os_login_disabled | +| WML | install | apply_run_on_os_login_policy_run_windowed | remove_run_on_os_login_policy | check_run_on_os_login_disabled | +| WML | install | enable_run_on_os_login | apply_run_on_os_login_policy_blocked | remove_run_on_os_login_policy | check_run_on_os_login_enabled | +| WML | install_by_user | switch_profile_clients(Client2) | switch_profile_clients(Client1) | sync_turn_off | uninstall_by_user | switch_profile_clients(Client2) | check_app_not_in_list | +| WML | install_by_user | switch_profile_clients(Client2) | switch_profile_clients(Client2) | apply_run_on_os_login_policy_run_windowed | check_run_on_os_login_disabled | +| WML | install_by_user | switch_profile_clients(Client2) | switch_profile_clients(Client2) | apply_run_on_os_login_policy_run_windowed | install_locally | check_run_on_os_login_enabled | | WML | install_policy_app(Standalone, NoShortcut, Windowed, WebApp) | apply_run_on_os_login_policy_allowed | disable_run_on_os_login | check_run_on_os_login_disabled | | WML | install_policy_app(Standalone, NoShortcut, Windowed, WebApp) | apply_run_on_os_login_policy_allowed | enable_run_on_os_login | check_run_on_os_login_enabled | ## Badging | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| WMLC | install_or_shortcut_by_user_windowed | set_app_badge | clear_app_badge | check_app_badge_empty | -| WMLC | install_or_shortcut_by_user_windowed | set_app_badge | check_app_badge_has_value | +| WMLC | install_by_user | set_app_badge | clear_app_badge | check_app_badge_empty | +| WMLC | install_by_user | set_app_badge | check_app_badge_has_value | | WMLC | navigate_browser(Standalone) | set_app_badge | check_platform_shortcut_not_exists | | # Toolbar | -| WMLC | install_or_shortcut_windowed | navigate_pwa(Standalone, MinimalUi) | close_custom_toolbar | check_app_navigation_is_start_url | -| WMLC | install_or_shortcut_by_user_windowed | navigate_pwa(Standalone, MinimalUi) | check_custom_toolbar | +| WMLC | install_windowed | navigate_pwa(Standalone, MinimalUi) | close_custom_toolbar | check_app_navigation_is_start_url | +| WMLC | install_by_user | navigate_pwa(Standalone, MinimalUi) | check_custom_toolbar | | # Initial state sanity checks | | WMLC | navigate_browser(Standalone) | check_app_not_in_list | | WMLC | navigate_browser(Standalone) | check_platform_shortcut_not_exists | @@ -62,61 +62,224 @@ # Installation | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| WMLC | install_or_shortcut(Standalone) | check_app_title(Standalone, StandaloneOriginal) | +| WMLC | install(Standalone) | check_app_title(Standalone, StandaloneOriginal) | | WMLC | install_omnibox_icon(Screenshots) | -| WMLC | install_or_shortcut_by_user_windowed | check_window_created | +| WMLC | install_by_user | check_window_created | | WMLC | install_no_shortcut | check_platform_shortcut_not_exists | | WMLC | install_no_shortcut(NotPromotable) | check_platform_shortcut_not_exists(NotPromotable) | -| WMLC | install_or_shortcut_tabbed | check_app_in_list_tabbed | -| WMLC | install_or_shortcut_tabbed | navigate_browser(Standalone) | check_create_shortcut_shown | -| WMLC | install_or_shortcut_tabbed | navigate_browser(Standalone) | check_install_icon_shown | -| WMLC | install_or_shortcut_tabbed | navigate_browser(Standalone) | check_launch_icon_not_shown | -| WMLC | install_or_shortcut_tabbed(NotPromotable) | check_app_in_list_tabbed(NotPromotable) | -| WMLC | install_or_shortcut_tabbed(NotPromotable) | navigate_browser(NotPromotable) | check_create_shortcut_shown | -| WMLC | install_or_shortcut_tabbed(NotPromotable) | navigate_browser(NotPromotable) | check_install_icon_not_shown | -| WMLC | install_or_shortcut_tabbed(NotPromotable) | navigate_browser(NotPromotable) | check_launch_icon_not_shown | -| WMLC | install_or_shortcut_windowed | check_app_in_list_windowed | -| WMLC | install_or_shortcut_windowed | navigate_browser(Standalone) | check_create_shortcut_not_shown | -| WMLC | install_or_shortcut_windowed | navigate_browser(Standalone) | check_install_icon_not_shown | -| WMLC | install_or_shortcut_windowed | navigate_browser(Standalone) | check_launch_icon_shown | -| WMLC | install_or_shortcut_windowed(MinimalUi) | navigate_browser(MinimalUi) | check_launch_icon_shown | -| WMLC | install_or_shortcut_windowed(Tabbed) | check_app_in_list_windowed(Tabbed) | -| WMLC | install_or_shortcut_windowed(Tabbed) | navigate_browser(Tabbed) | check_launch_icon_shown | check_install_icon_not_shown | -| WMLC | install_or_shortcut_windowed(NotPromotable) | check_app_in_list_windowed(NotPromotable) | -| WMLC | install_or_shortcut_windowed(NotPromotable) | navigate_browser(NotPromotable) | check_create_shortcut_not_shown | -| WMLC | install_or_shortcut_windowed(NotPromotable) | navigate_browser(NotPromotable) | check_install_icon_not_shown | -| WMLC | install_or_shortcut_windowed(NotPromotable) | navigate_browser(NotPromotable) | check_launch_icon_shown | -| WMLC | install_or_shortcut_with_shortcut | check_platform_shortcut_and_icon | -| WMLC | install_or_shortcut_with_shortcut(NotPromotable) | check_platform_shortcut_and_icon(NotPromotable) | -| WMLC | install_or_shortcut_by_user_tabbed(Standalone) | launch_from_platform_shortcut(Standalone) | check_tab_created(One) | -| WMLC | install_or_shortcut_by_user_tabbed(Standalone) | launch_from_platform_shortcut(Standalone) | install_omnibox_icon(Standalone) | check_pwa_window_created_in_profile(Standalone, One, Default) -| WMLC | create_shortcut(Standalone, Windowed) | check_window_created | -| WMLC | create_shortcut(Standalone, Windowed) | close_pwa | check_app_in_list_windowed(Standalone) | check_platform_shortcut_and_icon(Standalone) | -| WMLC | create_shortcut(Standalone, Windowed) | close_pwa | launch_from_platform_shortcut(Standalone) | check_pwa_window_created_in_profile(Standalone, One, Default) | check_launch_icon_not_shown | +| WMLC | install_tabbed | check_app_in_list_tabbed | +| WMLC | install_tabbed | navigate_browser(Standalone) | check_create_shortcut_shown | +| WMLC | install_tabbed | navigate_browser(Standalone) | check_install_icon_shown | +| WMLC | install_tabbed | navigate_browser(Standalone) | check_launch_icon_not_shown | +| WMLC | install_tabbed(NotPromotable) | check_app_in_list_tabbed(NotPromotable) | +| WMLC | install_tabbed(NotPromotable) | navigate_browser(NotPromotable) | +check_create_shortcut_shown | +| WMLC | install_tabbed(NotPromotable) | navigate_browser(NotPromotable) | check_install_icon_not_shown | +| WMLC | install_tabbed(NotPromotable) | navigate_browser(NotPromotable) | check_launch_icon_not_shown | +| WMLC | install_windowed | check_app_in_list_windowed | +| WMLC | install_windowed | navigate_browser(Standalone) | check_create_shortcut_not_shown | +| WMLC | install_windowed | navigate_browser(Standalone) | check_install_icon_not_shown | +| WMLC | install_windowed | navigate_browser(Standalone) | check_launch_icon_shown | +| WMLC | install_windowed(MinimalUi) | navigate_browser(MinimalUi) | check_launch_icon_shown | +| WMLC | install_windowed(Tabbed) | check_app_in_list_windowed(Tabbed) | +| WMLC | install_windowed(Tabbed) | navigate_browser(Tabbed) | check_launch_icon_shown | check_install_icon_not_shown | +| WMLC | install_windowed(NotPromotable) | check_app_in_list_windowed(NotPromotable) | +| WMLC | install_windowed(NotPromotable) | navigate_browser(NotPromotable) | check_create_shortcut_not_shown | +| WMLC | install_windowed(NotPromotable) | navigate_browser(NotPromotable) | check_install_icon_not_shown | +| WMLC | install_windowed(NotPromotable) | navigate_browser(NotPromotable) | check_launch_icon_shown | +| WMLC | install_with_shortcut | check_platform_shortcut_and_icon | +| WMLC | install_omnibox_icon(Standalone) | check_window_created | +| WMLC | install_omnibox_icon(Standalone) | close_pwa | check_app_in_list_windowed(Standalone) | check_platform_shortcut_and_icon(Standalone) | +| WMLC | install_omnibox_icon(Standalone) | close_pwa | launch_from_platform_shortcut(Standalone) | check_pwa_window_created_in_profile(Standalone, One, Default) | check_launch_icon_not_shown | | WMLC | install_menu_option(ChromeUrl) | check_window_created | -| WMLC | create_shortcut(ChromeUrl, Windowed) | check_window_created | + +# Create Shortcut (only on ChromeOS) +| #Platforms | Test -> | | | | | | | | | | | | | | | | | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| C | create_shortcut(Standalone, Windowed) | check_window_created | +| C | create_shortcut(Standalone, Windowed) | close_pwa | check_app_in_list_windowed(Standalone) | check_platform_shortcut_and_icon(Standalone) | +| C | create_shortcut(Standalone, Windowed) | close_pwa | launch_from_platform_shortcut(Standalone) | check_pwa_window_created_in_profile(Standalone, One, Default) | check_launch_icon_not_shown | +| C | create_shortcut(ChromeUrl, Windowed) | check_window_created | +| C | create_shortcut_windowed | set_app_badge | clear_app_badge | check_app_badge_empty | +| C | create_shortcut_windowed | set_app_badge | check_app_badge_has_value | +| C | create_shortcut_windowed | navigate_pwa(Standalone, MinimalUi) | close_custom_toolbar | check_app_navigation_is_start_url | +| C | create_shortcut_windowed | navigate_pwa(Standalone, MinimalUi) | check_custom_toolbar | +| C | create_shortcut_all(Standalone) | check_app_title(Standalone, StandaloneOriginal) | +| C | create_shortcut_windowed | check_window_created | +| C | create_shortcut_tabbed | check_app_in_list_tabbed | +| C | create_shortcut_tabbed | navigate_browser(Standalone) | check_create_shortcut_shown | +| C | create_shortcut_tabbed | navigate_browser(Standalone) | check_install_icon_shown | +| C | create_shortcut_tabbed | navigate_browser(Standalone) | check_launch_icon_not_shown | +| C | create_shortcut_tabbed(NotPromotable) | check_app_in_list_tabbed(NotPromotable) | +| C | create_shortcut_tabbed(NotPromotable) | navigate_browser(NotPromotable) | +check_create_shortcut_shown | +| C | create_shortcut_tabbed(NotPromotable) | navigate_browser(NotPromotable) | check_install_icon_not_shown | +| C | create_shortcut_tabbed(NotPromotable) | navigate_browser(NotPromotable) | check_launch_icon_not_shown | +| C | create_shortcut_windowed | check_app_in_list_windowed | +| C | create_shortcut_windowed | navigate_browser(Standalone) | check_create_shortcut_not_shown | +| C | create_shortcut_windowed | navigate_browser(Standalone) | check_install_icon_not_shown | +| C | create_shortcut_windowed | navigate_browser(Standalone) | check_launch_icon_shown | +| C | create_shortcut_windowed(MinimalUi) | navigate_browser(MinimalUi) | check_launch_icon_shown | +| C | create_shortcut_windowed(Tabbed) | check_app_in_list_windowed(Tabbed) | +| C | create_shortcut_windowed(Tabbed) | navigate_browser(Tabbed) | check_launch_icon_shown | check_install_icon_not_shown | +| C | create_shortcut_windowed(NotPromotable) | check_app_in_list_windowed(NotPromotable) | +| C | create_shortcut_windowed(NotPromotable) | navigate_browser(NotPromotable) | check_create_shortcut_not_shown | +| C | create_shortcut_windowed(NotPromotable) | navigate_browser(NotPromotable) | check_install_icon_not_shown | +| C | create_shortcut_windowed(NotPromotable) | navigate_browser(NotPromotable) | check_launch_icon_shown | +| C | create_shortcut_all | check_platform_shortcut_and_icon | +| WMLC | install_with_shortcut(NotPromotable) | check_platform_shortcut_and_icon(NotPromotable) | +| C | create_shortcut_all(NotPromotable) | check_platform_shortcut_and_icon(NotPromotable) | +| C | create_shortcut_tabbed(Standalone) | launch_from_platform_shortcut(Standalone) | check_tab_created(One) | +| C | create_shortcut_tabbed(Standalone) | launch_from_platform_shortcut(Standalone) | install_omnibox_icon(Standalone) | check_pwa_window_created_in_profile(Standalone, One, Default) +| C | create_shortcut_tabbed | uninstall_from_list | check_app_not_in_list | +| C | create_shortcut_tabbed | uninstall_from_list | navigate_browser(Standalone) | check_install_icon_shown | +| C | create_shortcut_tabbed | uninstall_from_list | navigate_browser(Standalone) | check_launch_icon_not_shown | +| C | create_shortcut_tabbed | uninstall_from_list | check_platform_shortcut_not_exists | +| C | create_shortcut_windowed | uninstall_from_list | check_app_not_in_list | +| C | create_shortcut_windowed | uninstall_from_list | navigate_browser(Standalone) | check_install_icon_shown | +| C | create_shortcut_windowed | uninstall_from_list | navigate_browser(Standalone) | check_launch_icon_not_shown | +| C | create_shortcut_windowed | uninstall_from_list | check_platform_shortcut_not_exists | +| C | create_shortcut_windowed | uninstall_from_list | check_app_not_in_list | +| C | create_shortcut_windowed | uninstall_from_list | navigate_browser(Standalone) | check_install_icon_shown | +| C | create_shortcut_windowed | uninstall_from_list | navigate_browser(Standalone) | check_launch_icon_not_shown | +| C | create_shortcut_windowed | uninstall_from_list | check_platform_shortcut_not_exists | +| C | create_shortcut_tabbed(NotPromotable) | uninstall_from_list(NotPromotable) | check_app_not_in_list | +| C | create_shortcut_tabbed(NotPromotable) | uninstall_from_list(NotPromotable) | check_platform_shortcut_not_exists(NotPromotable) | +| C | create_shortcut_windowed(NotPromotable) | uninstall_from_list(NotPromotable) | check_app_not_in_list | +| C | create_shortcut_windowed(NotPromotable) | uninstall_from_list(NotPromotable) | check_platform_shortcut_not_exists(NotPromotable) | +| C | create_shortcut_windowed | launch_not_from_platform_shortcut | check_window_created | +| C | create_shortcut_windowed | launch_from_platform_shortcut | check_window_created | +| C | create_shortcut_windowed | launch | check_window_display_standalone | +| C | create_shortcut_tabbed | set_open_in_window | launch | check_window_created | +| C | create_shortcut_windowed | set_open_in_tab | launch_from_chrome_apps | check_tab_created(One) | check_app_loaded_in_tab | +| C | create_shortcut_windowed | set_open_in_tab | launch_from_platform_shortcut | check_tab_created(One) | check_app_loaded_in_tab | +| C | create_shortcut_tabbed(NotPromotable) | launch_from_platform_shortcut(NotPromotable) | check_tab_created(One) | check_app_loaded_in_tab(NotPromotable) | +| C | create_shortcut_tabbed(NotPromotable) | launch_from_chrome_apps(NotPromotable) | check_tab_created(One) | check_app_loaded_in_tab(NotPromotable) | +| C | create_shortcut_windowed(MinimalUi) | launch(MinimalUi) | check_window_display_minimal | +| C | create_shortcut_windowed(Tabbed) | maybe_close_pwa | launch(Tabbed) | check_window_display_tabbed | +| C | create_shortcut_windowed(NotPromotable) | launch_not_from_platform_shortcut(NotPromotable) | check_window_created | +| C | create_shortcut_windowed(NotPromotable) | launch_from_platform_shortcut(NotPromotable) | check_window_created | +| C | create_shortcut_all | delete_profile | check_app_list_empty | +| C | create_shortcut_all | delete_profile | check_app_not_in_list | +| C | create_shortcut_all | delete_profile | check_platform_shortcut_not_exists | +| C | create_shortcut_tabbed | delete_platform_shortcut | create_shortcuts_from_list | launch_from_platform_shortcut | check_tab_created(One) | check_app_loaded_in_tab | +| C | create_shortcut_windowed | delete_platform_shortcut | create_shortcuts_from_list | launch_from_platform_shortcut | check_window_created | +| C | create_shortcut_windowed | open_in_chrome | check_tab_created(One) | check_app_loaded_in_tab | +| C | create_shortcut_windowed | navigate_pwa(Standalone, MinimalUi) | open_in_chrome | check_tab_created(One) | +| C | create_shortcut_tabbed | switch_profile_clients | launch_from_chrome_apps | check_tab_created(One) | check_app_loaded_in_tab | +| C | create_shortcut_all | switch_profile_clients | uninstall_from_list | check_app_not_in_list | +| C | create_shortcut_all | switch_profile_clients | uninstall_from_list | switch_profile_clients(Client1) | check_app_not_in_list | +| C | create_shortcut_all | switch_profile_clients | check_platform_shortcut_and_icon(Standalone) | +| C | create_shortcut_tabbed | switch_profile_clients | check_app_in_list_tabbed | +| C | create_shortcut_windowed | switch_profile_clients | check_app_in_list_windowed | +| C | create_shortcut_windowed | switch_profile_clients | navigate_browser(Standalone) | check_install_icon_not_shown | +| C | create_shortcut_windowed | switch_profile_clients | navigate_browser(Standalone) | check_launch_icon_shown | +| C | sync_turn_off | create_shortcut_all | sync_turn_on | switch_profile_clients | check_app_not_in_list | +| C | create_shortcut_tabbed | switch_profile_clients(Client2) | sync_turn_off | check_app_not_in_list | sync_turn_on | check_app_in_list_tabbed | +| C | create_shortcut_tabbed | switch_profile_clients(Client2) | sync_turn_off | check_app_not_in_list | sync_turn_on | check_platform_shortcut_and_icon | +| C | create_shortcut_windowed | switch_profile_clients(Client2) | sync_turn_off | check_app_not_in_list | sync_turn_on | check_app_in_list_windowed | +| C | create_shortcut_windowed | switch_profile_clients(Client2) | sync_turn_off | check_app_not_in_list | sync_turn_on | check_platform_shortcut_and_icon | +| C | create_shortcut_windowed | install_policy_app(Standalone, NoShortcut, WindowOptions::All, WebApp) | check_platform_shortcut_and_icon | +| C | create_shortcut_windowed | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | check_app_in_list_windowed | +| C | create_shortcut_windowed | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | navigate_browser(Standalone) | check_launch_icon_shown | +| C | create_shortcut_tabbed | install_policy_app(Standalone, ShortcutOptions::All, Windowed, WebApp) | check_app_in_list_tabbed | +| C | create_shortcut_tabbed | install_policy_app(Standalone, ShortcutOptions::All, Windowed, WebApp) | navigate_browser(Standalone) | check_install_icon_shown | +| C | create_shortcut_tabbed | install_policy_app(Standalone, ShortcutOptions::All, Windowed, WebApp) | check_platform_shortcut_and_icon | +| C | create_shortcut_windowed | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | launch_not_from_platform_shortcut | check_window_created | +| C | create_shortcut_windowed | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | launch_from_platform_shortcut | check_window_created | +| C | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | create_shortcut_windowed | check_app_in_list_windowed | +| C | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | create_shortcut_windowed | check_platform_shortcut_and_icon | +| C | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | create_shortcut_windowed | check_window_created | +| C | create_shortcut_tabbed | install_policy_app(Standalone, ShortcutOptions::All, Windowed, WebApp) | launch_from_platform_shortcut | check_tab_created(One) | check_app_loaded_in_tab | +| C | create_shortcut_tabbed | install_policy_app(Standalone, ShortcutOptions::All, Windowed, WebApp) | launch_from_chrome_apps | check_tab_created(One) | check_app_loaded_in_tab | +| C | create_shortcut_tabbed | install_policy_app(Standalone, ShortcutOptions::All, WindowOptions::All, WebApp) | uninstall_policy_app | check_app_in_list_tabbed | +| C | create_shortcut_tabbed | install_policy_app(Standalone, ShortcutOptions::All, WindowOptions::All, WebApp) | uninstall_policy_app | check_platform_shortcut_and_icon | +| C | create_shortcut_windowed | install_policy_app(Standalone, ShortcutOptions::All, WindowOptions::All, WebApp) | uninstall_policy_app | check_app_in_list_windowed | +| C | create_shortcut_windowed | install_policy_app(Standalone, ShortcutOptions::All, WindowOptions::All, WebApp) | uninstall_policy_app | check_platform_shortcut_and_icon | +| C | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | create_shortcut_windowed | uninstall_policy_app | check_app_in_list_windowed | +| C | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | create_shortcut_windowed | uninstall_policy_app | check_platform_shortcut_and_icon | +| C | create_shortcut_windowed | manifest_update_colors | await_manifest_update | launch | check_window_color_correct | +| C | create_shortcut_windowed | manifest_update_display(Standalone, Browser) | await_manifest_update | launch | check_window_created | check_tab_not_created | check_window_display_minimal | +| C | create_shortcut_windowed | manifest_update_display(Standalone, MinimalUi) | await_manifest_update | launch | check_window_created | check_tab_not_created | check_window_display_minimal | +| C | create_shortcut_windowed(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | navigate_browser(Standalone) | check_install_icon_not_shown | +| C | create_shortcut_windowed(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | navigate_browser(Standalone) | check_launch_icon_shown | +| C | create_shortcut_windowed(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | launch(StandaloneNestedA) | navigate_pwa(StandaloneNestedA, StandaloneNestedB) | check_no_toolbar | +| C | create_shortcut_windowed(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | navigate_browser(StandaloneNestedB) | check_install_icon_not_shown | +| C | create_shortcut_windowed(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | navigate_browser(StandaloneNestedB) | check_launch_icon_shown | +| C | create_shortcut_windowed(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | navigate_browser(StandaloneNestedA) | check_install_icon_not_shown | +| C | create_shortcut_windowed(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | navigate_browser(StandaloneNestedA) | check_launch_icon_shown | +| C | create_shortcut_windowed | manifest_update_display(Standalone, Tabbed) | maybe_close_pwa | await_manifest_update | launch | check_window_created | check_tab_not_created | check_window_display_tabbed | +| C | create_shortcut_windowed(StandaloneNestedA) | navigate_browser(NotInstalled) | check_install_icon_shown | +| C | create_shortcut_windowed(StandaloneNestedA) | navigate_browser(NotInstalled) | check_launch_icon_not_shown | +| C | create_shortcut(Standalone, Windowed) | navigate_browser(StandaloneNestedA) | check_install_icon_shown | +| C | create_shortcut_windowed | navigate_browser(MinimalUi) | check_install_icon_shown | +| C | create_shortcut_windowed | navigate_browser(MinimalUi) | check_launch_icon_not_shown | +| C | create_shortcut_windowed | navigate_pwa(Standalone, MinimalUi) | check_app_title(Standalone, StandaloneOriginal) | +| C | create_shortcut_windowed | switch_incognito_profile | navigate_browser(Standalone) | check_launch_icon_not_shown | +| C | create_shortcut_windowed | set_open_in_tab | check_app_in_list_tabbed | +| C | create_shortcut_windowed | set_open_in_tab | navigate_browser(Standalone) | check_install_icon_shown | +| C | create_shortcut_tabbed | set_open_in_window | check_app_in_list_windowed | +| C | create_shortcut_tabbed | set_open_in_window | navigate_browser(Standalone) | check_install_icon_not_shown | +| C | create_shortcut_tabbed | set_open_in_window | navigate_browser(Standalone) | check_launch_icon_shown | +| C | create_shortcut_windowed(Wco) | check_window_controls_overlay_toggle(Wco, Shown) | +| C | create_shortcut_windowed(Standalone) | check_window_controls_overlay_toggle(Standalone, NotShown) | +| C | create_shortcut_windowed(Wco) | enable_window_controls_overlay(Wco) | check_window_controls_overlay(Wco, On) | +| C | create_shortcut_windowed(Wco) | enable_window_controls_overlay(Wco) | check_window_controls_overlay_toggle(Wco, Shown) | +| C | create_shortcut_windowed(Wco) | enable_window_controls_overlay(Wco) | disable_window_controls_overlay(Wco) | check_window_controls_overlay(Wco, Off) | +| C | create_shortcut_windowed(Wco) | enable_window_controls_overlay(Wco) | launch(Wco) | check_window_controls_overlay(Wco, On) | +| C | create_shortcut_windowed(MinimalUi) | manifest_update_display(MinimalUi, Wco) | await_manifest_update(MinimalUi) | maybe_close_pwa | launch(MinimalUi) | check_window_controls_overlay_toggle(MinimalUi, Shown) | +| C | create_shortcut_windowed(MinimalUi) | manifest_update_display(MinimalUi, Wco) | await_manifest_update(MinimalUi) | maybe_close_pwa | launch(MinimalUi) | check_window_controls_overlay_toggle(MinimalUi, Shown) | +| C | create_shortcut_windowed(MinimalUi) | manifest_update_display(MinimalUi, Wco) | await_manifest_update(MinimalUi) | maybe_close_pwa | launch(MinimalUi) | enable_window_controls_overlay(MinimalUi) | check_window_controls_overlay(MinimalUi, On) | +| C | create_shortcut_windowed(MinimalUi) | manifest_update_display(MinimalUi, Wco) | await_manifest_update(MinimalUi) | maybe_close_pwa | launch(MinimalUi) | enable_window_controls_overlay(MinimalUi) | check_window_controls_overlay_toggle(MinimalUi, Shown) | +| C | create_shortcut_windowed(MinimalUi) | manifest_update_display(MinimalUi, Wco) | await_manifest_update(MinimalUi) | maybe_close_pwa | launch(MinimalUi) | enable_window_controls_overlay(MinimalUi) | check_window_controls_overlay_toggle(MinimalUi, Shown) | +| C | create_shortcut_windowed(Wco) | manifest_update_display(Wco, Standalone) | await_manifest_update(Wco) | maybe_close_pwa | launch(Wco) | check_window_controls_overlay_toggle(Wco, NotShown) | +| C | create_shortcut_windowed(Wco) | manifest_update_display(Wco, Standalone) | await_manifest_update(Wco) | maybe_close_pwa | launch(Wco) | check_window_controls_overlay(Wco, Off) | +| C | create_shortcut_windowed(Wco) | check_window_controls_overlay_toggle_icon(Shown) | +| C | create_shortcut_windowed(Wco) | enter_full_screen_app | check_window_controls_overlay_toggle_icon(NotShown) | +| C | create_shortcut_windowed(Wco) | enter_full_screen_app | exit_full_screen_app | check_window_controls_overlay_toggle_icon(Shown) | +| C | create_shortcut_all(FileHandler) | check_site_handles_file(FileHandler, Foo) | check_site_handles_file(FileHandler, Bar) | +| C | create_shortcut_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_pwa_window_created(FileHandler, One) | check_files_loaded_in_site(FileHandler, OneFooFile) | +| C | create_shortcut_tabbed(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, OneFooFile) | +| C | create_shortcut_windowed(FileHandler) | set_open_in_tab(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, OneFooFile) | +| C | create_shortcut_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, OneBarFile, Allow, AskAgain) | check_pwa_window_created(FileHandler, One) | check_files_loaded_in_site(FileHandler, OneBarFile) | +| C | create_shortcut_tabbed(FileHandler) | launch_file_expect_dialog(FileHandler, OneBarFile, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, OneBarFile) | +| C | create_shortcut_windowed(FileHandler) | set_open_in_tab(FileHandler) | launch_file_expect_dialog(FileHandler, OneBarFile, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, OneBarFile) | +| C | create_shortcut_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, MultipleFooFiles, Allow, AskAgain) | check_pwa_window_created(FileHandler, One) | check_files_loaded_in_site(FileHandler, MultipleFooFiles) | +| C | create_shortcut_tabbed(FileHandler) | launch_file_expect_dialog(FileHandler, MultipleFooFiles, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, MultipleFooFiles) | +| C | create_shortcut_windowed(FileHandler) | set_open_in_tab(FileHandler) | launch_file_expect_dialog(FileHandler, MultipleFooFiles, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, MultipleFooFiles) | +| C | create_shortcut_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, MultipleBarFiles, Allow, AskAgain) | check_pwa_window_created(FileHandler, Two) | check_files_loaded_in_site(FileHandler, MultipleBarFiles) | +| C | create_shortcut_tabbed(FileHandler) | launch_file_expect_dialog(FileHandler, MultipleBarFiles, Allow, AskAgain) | check_tab_created(Two) | check_files_loaded_in_site(FileHandler, MultipleBarFiles) | +| C | create_shortcut_windowed(FileHandler) | set_open_in_tab(FileHandler) | launch_file_expect_dialog(FileHandler, MultipleBarFiles, Allow, AskAgain) | check_tab_created(Two) | check_files_loaded_in_site(FileHandler, MultipleBarFiles) | +| C | create_shortcut_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, Remember) | launch_file_expect_no_dialog(FileHandler, OneFooFile) | +| C | create_shortcut_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, Remember) | close_pwa | launch_file_expect_no_dialog(FileHandler, OneFooFile) | check_files_loaded_in_site(FileHandler, OneFooFile) | +| C | create_shortcut_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, Remember) | close_pwa | launch_file_expect_no_dialog(FileHandler, OneFooFile) | close_pwa | launch_file_expect_no_dialog(FileHandler, OneBarFile) | check_files_loaded_in_site(FileHandler, OneBarFile) | +| C | create_shortcut_all(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | +| C | create_shortcut_all(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Deny, AskAgain) | check_window_not_created | check_tab_not_created | check_site_handles_file(FileHandler, Foo) | check_site_handles_file(FileHandler, Bar) | +| C | create_shortcut_all(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Deny, AskAgain) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_files_loaded_in_site(FileHandler, OneFooFile) | +| C | create_shortcut_all(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Deny, Remember) | check_window_not_created | check_tab_not_created | check_site_not_handles_file(FileHandler, Foo) | check_site_not_handles_file(FileHandler, Bar) | +| C | create_shortcut_all(FileHandler) | add_file_handling_policy_approval(FileHandler) | launch_file_expect_no_dialog(FileHandler, OneFooFile) | check_pwa_window_created(FileHandler, One) | +| C | create_shortcut_all(FileHandler) | add_file_handling_policy_approval(FileHandler) | remove_file_handling_policy_approval(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | +| #C | create_shortcut_all(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | check_app_in_list_windowed(SubApp1) | check_has_sub_app(HasSubApps, SubApp1) | check_platform_shortcut_and_icon(SubApp1) | +| #C | create_shortcut_all(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserDeny) | check_app_not_in_list(SubApp1) | check_platform_shortcut_not_exists(SubApp1) | +| #C | create_shortcut_all(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | install_sub_app(HasSubApps, SubApp2, UserAllow) | check_has_sub_app(HasSubApps, SubApp1) | check_has_sub_app(HasSubApps, SubApp2) | +| #C | create_shortcut_all(HasSubApps) | check_no_sub_apps(HasSubApps) | +| #C | create_shortcut_all(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | remove_sub_app(HasSubApps, SubApp1) | check_app_not_in_list(SubApp1) | check_platform_shortcut_not_exists(SubApp1) | check_no_sub_apps(HasSubApps) | +| #C | create_shortcut_all(SubApp1) | create_shortcut_all(HasSubApps) | check_not_has_sub_app(HasSubApps, SubApp1) +| #C | create_shortcut_all(SubApp1) | create_shortcut_all(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | check_has_sub_app(HasSubApps, SubApp1) +| #C | install_windowed(SubApp1) | create_shortcut_all(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | remove_sub_app(HasSubApps, SubApp1) | check_not_has_sub_app(HasSubApps, SubApp1) | check_app_in_list_windowed(SubApp1) | check_platform_shortcut_and_icon(SubApp1) +| #C | install_tabbed(SubApp1) | create_shortcut_all(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | remove_sub_app(HasSubApps, SubApp1) | check_not_has_sub_app(HasSubApps, SubApp1) | check_app_in_list_tabbed(SubApp1) | check_platform_shortcut_and_icon(SubApp1) ## Uninstallation | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| WML | install_or_shortcut_by_user_windowed | uninstall_by_user | check_app_not_in_list | -| WML | install_or_shortcut_by_user_windowed | uninstall_by_user | navigate_browser(Standalone) | check_install_icon_shown | -| WML | install_or_shortcut_by_user_windowed | uninstall_by_user | navigate_browser(Standalone) | check_launch_icon_not_shown | -| WML | install_or_shortcut_by_user_windowed | uninstall_by_user | check_platform_shortcut_not_exists | -| WML | install_or_shortcut_by_user_windowed(NotPromotable) | uninstall_by_user(NotPromotable) | check_app_not_in_list | -| WML | install_or_shortcut_by_user_windowed(NotPromotable) | uninstall_by_user(NotPromotable) | check_platform_shortcut_not_exists(NotPromotable) | -| WMLC | install_or_shortcut_by_user_tabbed | uninstall_from_list | check_app_not_in_list | -| WMLC | install_or_shortcut_by_user_tabbed | uninstall_from_list | navigate_browser(Standalone) | check_install_icon_shown | -| WMLC | install_or_shortcut_by_user_tabbed | uninstall_from_list | navigate_browser(Standalone) | check_launch_icon_not_shown | -| WMLC | install_or_shortcut_by_user_tabbed | uninstall_from_list | check_platform_shortcut_not_exists | -| C | install_or_shortcut_by_user_windowed | uninstall_from_list | check_app_not_in_list | -| C | install_or_shortcut_by_user_windowed | uninstall_from_list | navigate_browser(Standalone) | check_install_icon_shown | -| C | install_or_shortcut_by_user_windowed | uninstall_from_list | navigate_browser(Standalone) | check_launch_icon_not_shown | -| C | install_or_shortcut_by_user_windowed | uninstall_from_list | check_platform_shortcut_not_exists | -| WMLC | install_or_shortcut_by_user_tabbed(NotPromotable) | uninstall_from_list(NotPromotable) | check_app_not_in_list | -| WMLC | install_or_shortcut_by_user_tabbed(NotPromotable) | uninstall_from_list(NotPromotable) | check_platform_shortcut_not_exists(NotPromotable) | -| C | install_or_shortcut_by_user_windowed(NotPromotable) | uninstall_from_list(NotPromotable) | check_app_not_in_list | -| C | install_or_shortcut_by_user_windowed(NotPromotable) | uninstall_from_list(NotPromotable) | check_platform_shortcut_not_exists(NotPromotable) | +| WMLC | install_by_user | uninstall_by_user | check_app_not_in_list | +| WMLC | install_by_user | uninstall_by_user | navigate_browser(Standalone) | check_install_icon_shown | +| WMLC | install_by_user | uninstall_by_user | navigate_browser(Standalone) | check_launch_icon_not_shown | +| WMLC | install_by_user | uninstall_by_user | check_platform_shortcut_not_exists | +| WML | install_by_user(NotPromotable) | uninstall_by_user(NotPromotable) | check_app_not_in_list | +| WML | install_by_user(NotPromotable) | uninstall_by_user(NotPromotable) | check_platform_shortcut_not_exists(NotPromotable) | +| C | install_by_user(NotPromotable) | uninstall_from_list(NotPromotable) | check_app_not_in_list | +| C | install_by_user(NotPromotable) | uninstall_from_list(NotPromotable) | check_platform_shortcut_not_exists(NotPromotable) | | WMLC | install_policy_app(Standalone, ShortcutOptions::All, WindowOptions::All, WebApp) | uninstall_policy_app | check_app_not_in_list | | WMLC | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | uninstall_policy_app | navigate_browser(Standalone) | check_install_icon_shown | | WMLC | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | uninstall_policy_app | navigate_browser(Standalone) | check_launch_icon_not_shown | @@ -125,127 +288,104 @@ # Launch behavior tests | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| WMLC | install_or_shortcut_windowed | launch_not_from_platform_shortcut | check_window_created | -| WLC | install_or_shortcut_windowed | launch_from_platform_shortcut | check_window_created | -| M | install_or_shortcut_by_user_windowed | launch_from_platform_shortcut | check_window_not_created | +| WMLC | install_windowed | launch_not_from_platform_shortcut | check_window_created | +| WLC | install_windowed | launch_from_platform_shortcut | check_window_created | +| M | install_by_user | launch_from_platform_shortcut | check_window_not_created | | M | install_policy_app(Standalone, ShortcutOptions::All, Windowed, WebApp) | launch_from_platform_shortcut | check_window_created | -| WMLC | install_or_shortcut_windowed | launch | check_window_display_standalone | -| WMLC | install_or_shortcut_tabbed | set_open_in_window | launch | check_window_created | -| WML | install_or_shortcut_windowed | set_open_in_tab | launch_from_chrome_apps | check_tab_not_created | check_app_loaded_in_tab | -| C | install_or_shortcut_windowed | set_open_in_tab | launch_from_chrome_apps | check_tab_created(One) | check_app_loaded_in_tab | -| WLC | install_or_shortcut_windowed | set_open_in_tab | launch_from_platform_shortcut | check_tab_created(One) | check_app_loaded_in_tab | -| M | install_or_shortcut_by_user_windowed | set_open_in_tab | launch_from_platform_shortcut | check_tab_not_created | -| M | install_or_shortcut_by_user_windowed | close_pwa | set_open_in_tab | launch_from_platform_shortcut | check_tab_created(One) | check_app_loaded_in_tab | +| WMLC | install_windowed | launch | check_window_display_standalone | +| WMLC | install_tabbed | set_open_in_window | launch | check_window_created | +| WML | install_windowed | set_open_in_tab | launch_from_chrome_apps | check_tab_not_created | check_app_loaded_in_tab | +| WLC | install_windowed | set_open_in_tab | launch_from_platform_shortcut | check_tab_created(One) | check_app_loaded_in_tab | +| M | install_by_user | set_open_in_tab | launch_from_platform_shortcut | check_tab_not_created | +| M | install_by_user | close_pwa | set_open_in_tab | launch_from_platform_shortcut | check_tab_created(One) | check_app_loaded_in_tab | | M | install_policy_app(Standalone, ShortcutOptions::All, Windowed, WebApp) | set_open_in_tab | launch_from_platform_shortcut | check_tab_created(One) | check_app_loaded_in_tab | -| WMLC | install_or_shortcut_tabbed(NotPromotable) | launch_from_platform_shortcut(NotPromotable) | check_tab_created(One) | check_app_loaded_in_tab(NotPromotable) | -| WML | install_or_shortcut_tabbed(NotPromotable) | launch_from_chrome_apps(NotPromotable) | check_tab_not_created | check_app_loaded_in_tab(NotPromotable) | -| C | install_or_shortcut_tabbed(NotPromotable) | launch_from_chrome_apps(NotPromotable) | check_tab_created(One) | check_app_loaded_in_tab(NotPromotable) | -| WMLC | install_or_shortcut_windowed(MinimalUi) | launch(MinimalUi) | check_window_display_minimal | -| WMLC | install_or_shortcut_windowed(Tabbed) | maybe_close_pwa | launch(Tabbed) | check_window_display_tabbed | -| WMLC | install_or_shortcut_windowed(NotPromotable) | launch_not_from_platform_shortcut(NotPromotable) | check_window_created | -| WLC | install_or_shortcut_windowed(NotPromotable) | launch_from_platform_shortcut(NotPromotable) | check_window_created | -| M | install_or_shortcut_by_user_windowed(NotPromotable) | launch_from_platform_shortcut(NotPromotable) | check_window_not_created | +| WMLC | install_tabbed(NotPromotable) | launch_from_platform_shortcut(NotPromotable) | check_tab_created(One) | check_app_loaded_in_tab(NotPromotable) | +| WML | install_tabbed(NotPromotable) | launch_from_chrome_apps(NotPromotable) | check_tab_not_created | check_app_loaded_in_tab(NotPromotable) | +| C | install_tabbed(NotPromotable) | launch_from_chrome_apps(NotPromotable) | check_tab_created(One) | check_app_loaded_in_tab(NotPromotable) | +| WMLC | install_windowed(MinimalUi) | launch(MinimalUi) | check_window_display_minimal | +| WMLC | install_windowed(Tabbed) | maybe_close_pwa | launch(Tabbed) | check_window_display_tabbed | +| WMLC | install_windowed(NotPromotable) | launch_not_from_platform_shortcut(NotPromotable) | check_window_created | +| WLC | install_windowed(NotPromotable) | launch_from_platform_shortcut(NotPromotable) | check_window_created | +| M | install_by_user(NotPromotable) | launch_from_platform_shortcut(NotPromotable) | check_window_not_created | | M | install_policy_app(NotPromotable, ShortcutOptions::All, Windowed, WebApp) | launch_from_platform_shortcut(NotPromotable) | check_window_created | ## Multi profile launches on Mac | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| M | install_or_shortcut_by_user_windowed | switch_active_profile(Profile2) | install_or_shortcut_by_user_windowed | quit_app_shim | launch_from_platform_shortcut | check_pwa_window_created_in_profile(Standalone, One, Default) | check_pwa_window_created_in_profile(Standalone, One, Profile2) | -| M | install_or_shortcut_by_user_windowed | switch_active_profile(Profile2) | install_or_shortcut_by_user_windowed | close_pwa | quit_app_shim | launch_from_platform_shortcut | check_pwa_window_created_in_profile(Standalone, One, Default) | -| M | install_or_shortcut_by_user_windowed | close_pwa | switch_active_profile(Profile2) | install_or_shortcut_by_user_windowed | quit_app_shim | launch_from_platform_shortcut | check_pwa_window_created_in_profile(Standalone, One, Profile2) | -| M | install_or_shortcut_by_user_windowed | switch_active_profile(Profile2) | install_policy_app(Standalone, ShortcutOptions::All, Windowed, WebApp) | quit_app_shim | launch_from_platform_shortcut | check_pwa_window_created_in_profile(Standalone, One, Default) | -| M | install_or_shortcut_by_user_windowed | switch_active_profile(Profile2) | install_or_shortcut_by_user_tabbed | quit_app_shim | launch_from_platform_shortcut | check_pwa_window_created_in_profile(Standalone, One, Default) | -| M | install_or_shortcut_by_user_tabbed | switch_active_profile(Profile2) | install_or_shortcut_by_user_windowed | quit_app_shim | launch_from_platform_shortcut | check_pwa_window_created_in_profile(Standalone, One, Profile2) | +| M | install_by_user | switch_active_profile(Profile2) | install_by_user | quit_app_shim | launch_from_platform_shortcut | check_pwa_window_created_in_profile(Standalone, One, Default) | check_pwa_window_created_in_profile(Standalone, One, Profile2) | +| M | install_by_user | switch_active_profile(Profile2) | install_by_user | close_pwa | quit_app_shim | launch_from_platform_shortcut | check_pwa_window_created_in_profile(Standalone, One, Default) | +| M | install_by_user | close_pwa | switch_active_profile(Profile2) | install_by_user | quit_app_shim | launch_from_platform_shortcut | check_pwa_window_created_in_profile(Standalone, One, Profile2) | +| M | install_by_user | switch_active_profile(Profile2) | install_policy_app(Standalone, ShortcutOptions::All, Windowed, WebApp) | quit_app_shim | launch_from_platform_shortcut | check_pwa_window_created_in_profile(Standalone, One, Default) | # Misc UX Flows | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | WMLC | install_no_shortcut | create_shortcuts_from_list | check_platform_shortcut_and_icon | -| WMLC | install_or_shortcut | delete_profile | check_app_list_empty | -| WMLC | install_or_shortcut | delete_profile | check_app_not_in_list | -| WMLC | install_or_shortcut_with_shortcut | delete_profile | check_platform_shortcut_not_exists | -| WMLC | install_or_shortcut_tabbed_with_shortcut | delete_platform_shortcut | create_shortcuts_from_list | launch_from_platform_shortcut | check_tab_created(One) | check_app_loaded_in_tab | -| WLC | install_or_shortcut_windowed_with_shortcut | delete_platform_shortcut | create_shortcuts_from_list | launch_from_platform_shortcut | check_window_created | -| M | install_or_shortcut_by_user_windowed_with_shortcut | delete_platform_shortcut | create_shortcuts_from_list | launch_from_platform_shortcut | check_window_not_created | +| WMLC | install | delete_profile | check_app_list_empty | +| WMLC | install | delete_profile | check_app_not_in_list | +| WMLC | install_with_shortcut | delete_profile | check_platform_shortcut_not_exists | +| WMLC | install_tabbed_with_shortcut | delete_platform_shortcut | create_shortcuts_from_list | launch_from_platform_shortcut | check_tab_created(One) | check_app_loaded_in_tab | +| WLC | install_windowed_with_shortcut | delete_platform_shortcut | create_shortcuts_from_list | launch_from_platform_shortcut | check_window_created | +| M | install_by_user | delete_platform_shortcut | create_shortcuts_from_list | launch_from_platform_shortcut | check_window_not_created | | M | install_policy_app(Standalone, WithShortcut, Windowed, WebApp) | delete_platform_shortcut | create_shortcuts_from_list | launch_from_platform_shortcut | check_window_created | | WMLC | install_tabbed_no_shortcut | create_shortcuts_from_list | launch_from_platform_shortcut | check_tab_created(One) | check_app_loaded_in_tab | | WMLC | install_windowed_no_shortcut | create_shortcuts_from_list | launch_from_platform_shortcut | check_window_created | -| WMLC | install_or_shortcut_by_user_windowed | open_in_chrome | check_tab_created(One) | check_app_loaded_in_tab | -| WMLC | install_or_shortcut_by_user_windowed | navigate_pwa(Standalone, MinimalUi) | open_in_chrome | check_tab_created(One) | -| WML | install_or_shortcut_windowed | open_app_settings | check_browser_navigation_is_app_settings | +| WMLC | install_by_user | open_in_chrome | check_tab_created(One) | check_app_loaded_in_tab | +| WMLC | install_by_user | navigate_pwa(Standalone, MinimalUi) | open_in_chrome | check_tab_created(One) | +| WML | install_windowed | open_app_settings | check_browser_navigation_is_app_settings | ## Sync-initiated install tests | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| WML | install_or_shortcut_by_user | switch_profile_clients | install_locally | check_platform_shortcut_and_icon | -| WML | install_or_shortcut_by_user_tabbed | switch_profile_clients | install_locally | check_app_in_list_tabbed | -| WML | install_or_shortcut_by_user_tabbed | switch_profile_clients | install_locally | navigate_browser(Standalone) | check_install_icon_shown | -| WML | install_or_shortcut_by_user_tabbed | switch_profile_clients | install_locally | navigate_browser(Standalone) | check_launch_icon_not_shown | -| WML | install_or_shortcut_by_user_windowed | switch_profile_clients | install_locally | check_app_in_list_windowed | -| WML | install_or_shortcut_by_user_windowed | switch_profile_clients | install_locally | navigate_browser(Standalone) | check_install_icon_not_shown | -| WML | install_or_shortcut_by_user_windowed | switch_profile_clients | install_locally | navigate_browser(Standalone) | check_launch_icon_shown | -| WML | install_or_shortcut_by_user_tabbed(NotPromotable) | switch_profile_clients | install_locally(NotPromotable) | check_app_in_list_tabbed(NotPromotable) | -| WML | install_or_shortcut_by_user_tabbed(NotPromotable) | switch_profile_clients | install_locally(NotPromotable) | navigate_browser(NotPromotable) | check_launch_icon_not_shown | -| WML | install_or_shortcut_by_user_windowed(NotPromotable) | switch_profile_clients | install_locally(NotPromotable) | check_app_in_list_windowed(NotPromotable) | -| WML | install_or_shortcut_by_user_windowed(NotPromotable) | switch_profile_clients | install_locally(NotPromotable) | navigate_browser(NotPromotable) | check_install_icon_not_shown | -| WML | install_or_shortcut_by_user_windowed(NotPromotable) | switch_profile_clients | install_locally(NotPromotable) | navigate_browser(NotPromotable) | check_launch_icon_shown | -| WML | install_or_shortcut_by_user(NotPromotable) | switch_profile_clients | install_locally(NotPromotable) | check_platform_shortcut_and_icon(NotPromotable) | -| WML | install_or_shortcut_by_user_windowed | switch_profile_clients | install_locally | launch_not_from_platform_shortcut | check_window_created | -| WL | install_or_shortcut_by_user_windowed | switch_profile_clients | install_locally | launch_from_platform_shortcut | check_window_created | -| M | install_or_shortcut_by_user_windowed | switch_profile_clients | install_locally | launch_from_platform_shortcut | check_window_not_created | -| M | install_or_shortcut_by_user_windowed | close_pwa | switch_profile_clients | install_locally | launch_from_platform_shortcut | check_window_created | -| WML | install_or_shortcut_by_user_tabbed | switch_profile_clients | launch_from_chrome_apps | check_tab_not_created | check_app_loaded_in_tab | -| C | install_or_shortcut_by_user_tabbed | switch_profile_clients | launch_from_chrome_apps | check_tab_created(One) | check_app_loaded_in_tab | -| WML | install_or_shortcut_by_user_tabbed | switch_profile_clients | install_locally | launch_from_chrome_apps | check_tab_not_created | check_app_loaded_in_tab | -| WML | install_or_shortcut_by_user_tabbed | switch_profile_clients | install_locally | launch_from_platform_shortcut | check_tab_created(One) | check_app_loaded_in_tab | -| WML | install_or_shortcut_by_user_windowed | switch_profile_clients | launch_from_chrome_apps | check_tab_not_created | check_site_loaded_in_tab | -| WMLC | install_or_shortcut_by_user | switch_profile_clients | uninstall_from_list | check_app_not_in_list | -| WMLC | install_or_shortcut_by_user | switch_profile_clients | uninstall_from_list | switch_profile_clients(Client1) | check_app_not_in_list | -| WML | install_or_shortcut_by_user | switch_profile_clients | check_app_in_list_not_locally_installed | -| C | install_or_shortcut_by_user | switch_profile_clients | check_platform_shortcut_and_icon(Standalone) | -| WML | install_or_shortcut_by_user | switch_profile_clients | check_platform_shortcut_not_exists | -| C | install_or_shortcut_by_user_tabbed | switch_profile_clients | check_app_in_list_tabbed | -| C | install_or_shortcut_by_user_windowed | switch_profile_clients | check_app_in_list_windowed | -| C | install_or_shortcut_by_user_windowed | switch_profile_clients | navigate_browser(Standalone) | check_install_icon_not_shown | -| WML | install_or_shortcut_by_user_windowed | switch_profile_clients | navigate_browser(Standalone) | check_install_icon_shown | -| WML | install_or_shortcut_by_user_windowed | switch_profile_clients | navigate_browser(Standalone) | check_launch_icon_not_shown | -| C | install_or_shortcut_by_user_windowed | switch_profile_clients | navigate_browser(Standalone) | check_launch_icon_shown | -| WML | install_or_shortcut_by_user(NotPromotable) | switch_profile_clients | check_app_in_list_not_locally_installed(NotPromotable) | -| WML | install_or_shortcut_by_user(NotPromotable) | switch_profile_clients | check_platform_shortcut_not_exists(NotPromotable) | -| WMLC | sync_turn_off | install_or_shortcut_by_user | sync_turn_on | switch_profile_clients | check_app_not_in_list | -| WML | sync_sign_out | install_or_shortcut_by_user | sync_sign_in | switch_profile_clients | check_app_not_in_list | -| WML | install_or_shortcut_by_user | switch_profile_clients(Client2) | sync_turn_off | check_app_not_in_list | sync_turn_on | check_app_in_list_not_locally_installed | -| WML | install_or_shortcut_by_user | switch_profile_clients(Client2) | sync_turn_off | check_app_not_in_list | sync_turn_on | check_platform_shortcut_not_exists | -| WML | install_or_shortcut_by_user | switch_profile_clients(Client2) | sync_turn_off | switch_profile_clients(Client1) | uninstall_by_user | sync_turn_on | switch_profile_clients(Client2) | check_app_in_list_not_locally_installed | -| C | install_or_shortcut_by_user_tabbed | switch_profile_clients(Client2) | sync_turn_off | check_app_not_in_list | sync_turn_on | check_app_in_list_tabbed | -| C | install_or_shortcut_by_user_tabbed | switch_profile_clients(Client2) | sync_turn_off | check_app_not_in_list | sync_turn_on | check_platform_shortcut_and_icon | -| C | install_or_shortcut_by_user_windowed | switch_profile_clients(Client2) | sync_turn_off | check_app_not_in_list | sync_turn_on | check_app_in_list_windowed | -| C | install_or_shortcut_by_user_windowed | switch_profile_clients(Client2) | sync_turn_off | check_app_not_in_list | sync_turn_on | check_platform_shortcut_and_icon | +| WML | install_by_user | switch_profile_clients | install_locally | check_platform_shortcut_and_icon | +| WML | install_by_user | switch_profile_clients | install_locally | check_app_in_list_windowed | +| WML | install_by_user | switch_profile_clients | install_locally | navigate_browser(Standalone) | check_install_icon_not_shown | +| WML | install_by_user | switch_profile_clients | install_locally | navigate_browser(Standalone) | check_launch_icon_shown | +| WML | install_by_user(NotPromotable) | switch_profile_clients | install_locally(NotPromotable) | check_app_in_list_windowed(NotPromotable) | +| WML | install_by_user(NotPromotable) | switch_profile_clients | install_locally(NotPromotable) | navigate_browser(NotPromotable) | check_install_icon_not_shown | +| WML | install_by_user(NotPromotable) | switch_profile_clients | install_locally(NotPromotable) | navigate_browser(NotPromotable) | check_launch_icon_shown | +| WML | install_by_user(NotPromotable) | switch_profile_clients | install_locally(NotPromotable) | check_platform_shortcut_and_icon(NotPromotable) | +| WML | install_by_user | switch_profile_clients | install_locally | launch_not_from_platform_shortcut | check_window_created | +| WL | install_by_user | switch_profile_clients | install_locally | launch_from_platform_shortcut | check_window_created | +| M | install_by_user | switch_profile_clients | install_locally | launch_from_platform_shortcut | check_window_not_created | +| M | install_by_user | close_pwa | switch_profile_clients | install_locally | launch_from_platform_shortcut | check_window_created | +| WML | install_by_user | switch_profile_clients | launch_from_chrome_apps | check_tab_not_created | check_site_loaded_in_tab | +| WMLC | install_by_user | switch_profile_clients | uninstall_from_list | check_app_not_in_list | +| WMLC | install_by_user | switch_profile_clients | uninstall_from_list | switch_profile_clients(Client1) | check_app_not_in_list | +| WML | install_by_user | switch_profile_clients | check_app_in_list_not_locally_installed | +| C | install_by_user | switch_profile_clients | check_platform_shortcut_and_icon(Standalone) | +| WML | install_by_user | switch_profile_clients | check_platform_shortcut_not_exists | +| C | install_by_user | switch_profile_clients | check_app_in_list_windowed | +| C | install_by_user | switch_profile_clients | navigate_browser(Standalone) | check_install_icon_not_shown | +| WML | install_by_user | switch_profile_clients | navigate_browser(Standalone) | check_install_icon_shown | +| WML | install_by_user | switch_profile_clients | navigate_browser(Standalone) | check_launch_icon_not_shown | +| C | install_by_user | switch_profile_clients | navigate_browser(Standalone) | check_launch_icon_shown | +| WML | install_by_user(NotPromotable) | switch_profile_clients | check_app_in_list_not_locally_installed(NotPromotable) | +| WML | install_by_user(NotPromotable) | switch_profile_clients | check_platform_shortcut_not_exists(NotPromotable) | +| WMLC | sync_turn_off | install_by_user | sync_turn_on | switch_profile_clients | check_app_not_in_list | +| WML | sync_sign_out | install_by_user | sync_sign_in | switch_profile_clients | check_app_not_in_list | +| WML | install_by_user | switch_profile_clients(Client2) | sync_turn_off | check_app_not_in_list | sync_turn_on | check_app_in_list_not_locally_installed | +| WML | install_by_user | switch_profile_clients(Client2) | sync_turn_off | check_app_not_in_list | sync_turn_on | check_platform_shortcut_not_exists | +| WML | install_by_user | switch_profile_clients(Client2) | sync_turn_off | switch_profile_clients(Client1) | uninstall_by_user | sync_turn_on | switch_profile_clients(Client2) | check_app_in_list_not_locally_installed | +| C | install_by_user | switch_profile_clients(Client2) | sync_turn_off | check_app_not_in_list | sync_turn_on | check_app_in_list_windowed | +| C | install_by_user | switch_profile_clients(Client2) | sync_turn_off | check_app_not_in_list | sync_turn_on | check_platform_shortcut_and_icon | ## Policy installation and user installation interactions | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| WMLC | install_or_shortcut_by_user_tabbed | install_policy_app(Standalone, ShortcutOptions::All, Windowed, WebApp) | check_platform_shortcut_and_icon | -| WMLC | install_or_shortcut_by_user_windowed | install_policy_app(Standalone, NoShortcut, WindowOptions::All, WebApp) | check_platform_shortcut_and_icon | -| WMLC | install_or_shortcut_by_user_windowed | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | check_app_in_list_windowed | -| WMLC | install_or_shortcut_by_user_windowed | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | navigate_browser(Standalone) | check_launch_icon_shown | -| WMLC | install_or_shortcut_by_user_tabbed | install_policy_app(Standalone, ShortcutOptions::All, Windowed, WebApp) | check_app_in_list_tabbed | -| WMLC | install_or_shortcut_by_user_tabbed | install_policy_app(Standalone, ShortcutOptions::All, Windowed, WebApp) | navigate_browser(Standalone) | check_install_icon_shown | -| WMLC | install_or_shortcut_by_user_windowed | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | launch_not_from_platform_shortcut | check_window_created | -| WLC | install_or_shortcut_by_user_windowed | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | launch_from_platform_shortcut | check_window_created | -| M | install_or_shortcut_by_user_windowed | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | launch_from_platform_shortcut | check_window_not_created | -| WMLC | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | install_or_shortcut_by_user_windowed | check_app_in_list_windowed | -| WMLC | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | install_or_shortcut_by_user_windowed | check_platform_shortcut_and_icon | -| WMLC | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | install_or_shortcut_by_user_windowed | check_window_created | -| WMLC | install_or_shortcut_by_user_tabbed | install_policy_app(Standalone, ShortcutOptions::All, Windowed, WebApp) | launch_from_platform_shortcut | check_tab_created(One) | check_app_loaded_in_tab | -| WML | install_or_shortcut_by_user_tabbed | install_policy_app(Standalone, ShortcutOptions::All, Windowed, WebApp) | launch_from_chrome_apps | check_tab_not_created | check_app_loaded_in_tab | -| C | install_or_shortcut_by_user_tabbed | install_policy_app(Standalone, ShortcutOptions::All, Windowed, WebApp) | launch_from_chrome_apps | check_tab_created(One) | check_app_loaded_in_tab | -| WMLC | install_or_shortcut_by_user_tabbed | install_policy_app(Standalone, ShortcutOptions::All, WindowOptions::All, WebApp) | uninstall_policy_app | check_app_in_list_tabbed | -| WMLC | install_or_shortcut_by_user_tabbed | install_policy_app(Standalone, ShortcutOptions::All, WindowOptions::All, WebApp) | uninstall_policy_app | check_platform_shortcut_and_icon | -| WMLC | install_or_shortcut_by_user_windowed | install_policy_app(Standalone, ShortcutOptions::All, WindowOptions::All, WebApp) | uninstall_policy_app | check_app_in_list_windowed | -| WMLC | install_or_shortcut_by_user_windowed | install_policy_app(Standalone, ShortcutOptions::All, WindowOptions::All, WebApp) | uninstall_policy_app | check_platform_shortcut_and_icon | -| WMLC | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | install_or_shortcut_by_user_windowed | uninstall_policy_app | check_app_in_list_windowed | -| WMLC | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | install_or_shortcut_by_user_windowed | uninstall_policy_app | check_platform_shortcut_and_icon | +| WMLC | install_by_user | install_policy_app(Standalone, NoShortcut, WindowOptions::All, WebApp) | check_platform_shortcut_and_icon | +| WMLC | install_by_user | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | check_app_in_list_windowed | +| WMLC | install_by_user | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | navigate_browser(Standalone) | check_launch_icon_shown | +| WMLC | install_by_user | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | launch_not_from_platform_shortcut | check_window_created | +| WLC | install_by_user | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | launch_from_platform_shortcut | check_window_created | +| M | install_by_user | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | launch_from_platform_shortcut | check_window_not_created | +| WMLC | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | install_by_user | check_app_in_list_windowed | +| WMLC | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | install_by_user | check_platform_shortcut_and_icon | +| WMLC | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | install_by_user | check_window_created | +| WMLC | install_by_user | install_policy_app(Standalone, ShortcutOptions::All, WindowOptions::All, WebApp) | uninstall_policy_app | check_app_in_list_windowed | +| WMLC | install_by_user | install_policy_app(Standalone, ShortcutOptions::All, WindowOptions::All, WebApp) | uninstall_policy_app | check_platform_shortcut_and_icon | +| WMLC | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | install_by_user | uninstall_policy_app | check_app_in_list_windowed | +| WMLC | install_policy_app(Standalone, ShortcutOptions::All, Browser, WebApp) | install_by_user | uninstall_policy_app | check_platform_shortcut_and_icon | | WMLC | install_policy_app(StandaloneNotStartUrl, WithShortcut, Windowed, WebShortcut) | launch(StandaloneNotStartUrl) | check_app_navigation(StandaloneNotStartUrl) | | WMLC | install_policy_app(StandaloneNotStartUrl, WithShortcut, Windowed, WebApp) | launch(Standalone) | check_app_navigation(Standalone) | | WMLC | install_policy_app(StandaloneNotStartUrl, WithShortcut, Browser, WebApp) | launch_from_chrome_apps(Standalone) | check_browser_navigation(Standalone) | @@ -261,29 +401,29 @@ | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| WLC | install_or_shortcut_windowed_with_shortcut | manifest_update_colors | await_manifest_update | launch | check_window_color_correct | -| WLC | install_or_shortcut_windowed_with_shortcut | manifest_update_display(Standalone, Browser) | await_manifest_update | launch | check_window_created | check_tab_not_created | check_window_display_minimal | -| WLC | install_or_shortcut_windowed_with_shortcut | manifest_update_display(Standalone, MinimalUi) | await_manifest_update | launch | check_window_created | check_tab_not_created | check_window_display_minimal | -| WMLC | install_or_shortcut_windowed_with_shortcut(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | navigate_browser(Standalone) | check_install_icon_not_shown | -| WMLC | install_or_shortcut_windowed_with_shortcut(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | navigate_browser(Standalone) | check_launch_icon_shown | -| WMLC | install_or_shortcut_windowed_with_shortcut(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | launch(StandaloneNestedA) | navigate_pwa(StandaloneNestedA, StandaloneNestedB) | check_no_toolbar | -| WMLC | install_or_shortcut_windowed_with_shortcut(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | navigate_browser(StandaloneNestedB) | check_install_icon_not_shown | -| WMLC | install_or_shortcut_windowed_with_shortcut(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | navigate_browser(StandaloneNestedB) | check_launch_icon_shown | -| WMLC | install_or_shortcut_windowed_with_shortcut(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | navigate_browser(StandaloneNestedA) | check_install_icon_not_shown | -| WMLC | install_or_shortcut_windowed_with_shortcut(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | navigate_browser(StandaloneNestedA) | check_launch_icon_shown | +| WLC | install_windowed_with_shortcut | manifest_update_colors | await_manifest_update | launch | check_window_color_correct | +| WLC | install_windowed_with_shortcut | manifest_update_display(Standalone, Browser) | await_manifest_update | launch | check_window_created | check_tab_not_created | check_window_display_minimal | +| WLC | install_windowed_with_shortcut | manifest_update_display(Standalone, MinimalUi) | await_manifest_update | launch | check_window_created | check_tab_not_created | check_window_display_minimal | +| WMLC | install_windowed_with_shortcut(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | navigate_browser(Standalone) | check_install_icon_not_shown | +| WMLC | install_windowed_with_shortcut(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | navigate_browser(Standalone) | check_launch_icon_shown | +| WMLC | install_windowed_with_shortcut(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | launch(StandaloneNestedA) | navigate_pwa(StandaloneNestedA, StandaloneNestedB) | check_no_toolbar | +| WMLC | install_windowed_with_shortcut(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | navigate_browser(StandaloneNestedB) | check_install_icon_not_shown | +| WMLC | install_windowed_with_shortcut(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | navigate_browser(StandaloneNestedB) | check_launch_icon_shown | +| WMLC | install_windowed_with_shortcut(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | navigate_browser(StandaloneNestedA) | check_install_icon_not_shown | +| WMLC | install_windowed_with_shortcut(StandaloneNestedA) | manifest_update_scope_to(StandaloneNestedA, Standalone) | await_manifest_update(StandaloneNestedA) | navigate_browser(StandaloneNestedA) | check_launch_icon_shown | The following specialization is required here since in tabbed mode, launching may add a tab to the existing window instead of making a new one. | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| WMLC | install_or_shortcut_windowed_with_shortcut | manifest_update_display(Standalone, Tabbed) | maybe_close_pwa | await_manifest_update | launch | check_window_created | check_tab_not_created | check_window_display_tabbed | +| WMLC | install_windowed_with_shortcut | manifest_update_display(Standalone, Tabbed) | maybe_close_pwa | await_manifest_update | launch | check_window_created | check_tab_not_created | check_window_display_tabbed | These mac specializations are required due to launching from platform shortcut actually focusing the window, instead of creating a new one. | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| M | install_or_shortcut_windowed_with_shortcut | manifest_update_display(Standalone, Browser) | maybe_close_pwa | await_manifest_update | launch | check_window_created | check_tab_not_created | check_window_display_minimal | -| M | install_or_shortcut_windowed_with_shortcut | manifest_update_display(Standalone, MinimalUi) | maybe_close_pwa | await_manifest_update | launch | check_window_created | check_tab_not_created | check_window_display_minimal | +| M | install_windowed_with_shortcut | manifest_update_display(Standalone, Browser) | maybe_close_pwa | await_manifest_update | launch | check_window_created | check_tab_not_created | check_window_display_minimal | +| M | install_windowed_with_shortcut | manifest_update_display(Standalone, MinimalUi) | maybe_close_pwa | await_manifest_update | launch | check_window_created | check_tab_not_created | check_window_display_minimal | ## Browser UX with edge cases | #Platforms | Test -> | | | | | | | | | | | | | | | | | @@ -309,47 +449,43 @@ ## In-Browser UX (install icon, launch icon, etc) | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| WMLC | install_or_shortcut_windowed(StandaloneNestedA) | navigate_browser(NotInstalled) | check_install_icon_shown | -| WMLC | install_or_shortcut_windowed(StandaloneNestedA) | navigate_browser(NotInstalled) | check_launch_icon_not_shown | +| WMLC | install_windowed(StandaloneNestedA) | navigate_browser(NotInstalled) | check_install_icon_shown | +| WMLC | install_windowed(StandaloneNestedA) | navigate_browser(NotInstalled) | check_launch_icon_not_shown | | WMLC | install_windowed | navigate_browser(StandaloneNestedA) | check_install_icon_not_shown | -| C | create_shortcut(Standalone, Windowed) | navigate_browser(StandaloneNestedA) | check_install_icon_shown | -| WMLC | install_or_shortcut_by_user_windowed | navigate_browser(MinimalUi) | check_install_icon_shown | -| WMLC | install_or_shortcut_by_user_windowed | navigate_browser(MinimalUi) | check_launch_icon_not_shown | -| WMLC | install_or_shortcut_by_user_windowed | navigate_pwa(Standalone, MinimalUi) | check_app_title(Standalone, StandaloneOriginal) | -| WMLC | install_or_shortcut_by_user_windowed | switch_incognito_profile | navigate_browser(Standalone) | check_launch_icon_not_shown | -| WMLC | install_or_shortcut_by_user_windowed | set_open_in_tab | check_app_in_list_tabbed | -| WMLC | install_or_shortcut_by_user_windowed | set_open_in_tab | navigate_browser(Standalone) | check_install_icon_shown | -| WMLC | install_or_shortcut_by_user_tabbed | set_open_in_window | check_app_in_list_windowed | -| WMLC | install_or_shortcut_by_user_tabbed | set_open_in_window | navigate_browser(Standalone) | check_install_icon_not_shown | -| WMLC | install_or_shortcut_by_user_tabbed | set_open_in_window | navigate_browser(Standalone) | check_launch_icon_shown | +| WMLC | install_by_user | navigate_browser(MinimalUi) | check_install_icon_shown | +| WMLC | install_by_user | navigate_browser(MinimalUi) | check_launch_icon_not_shown | +| WMLC | install_by_user | navigate_pwa(Standalone, MinimalUi) | check_app_title(Standalone, StandaloneOriginal) | +| WMLC | install_by_user | switch_incognito_profile | navigate_browser(Standalone) | check_launch_icon_not_shown | +| WMLC | install_by_user | set_open_in_tab | check_app_in_list_tabbed | +| WMLC | install_by_user | set_open_in_tab | navigate_browser(Standalone) | check_install_icon_shown | ## Windows Control Overlay | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| WMLC | install_or_shortcut_by_user_windowed(Wco) | check_window_controls_overlay_toggle(Wco, Shown) | +| WMLC | install_by_user(Wco) | check_window_controls_overlay_toggle(Wco, Shown) | | WMLC | install_policy_app(Wco, ShortcutOptions::All, Windowed, WebApp) | launch(Wco) | check_window_controls_overlay_toggle(Wco, Shown) | -| WMLC | install_or_shortcut_by_user_windowed(Standalone) | check_window_controls_overlay_toggle(Standalone, NotShown) | +| WMLC | install_by_user(Standalone) | check_window_controls_overlay_toggle(Standalone, NotShown) | | WMLC | install_policy_app(Standalone, ShortcutOptions::All, Windowed, WebApp) | launch(Standalone) | check_window_controls_overlay_toggle(Standalone, NotShown) | -| WMLC | install_or_shortcut_by_user_windowed(Wco) | enable_window_controls_overlay(Wco) | check_window_controls_overlay(Wco, On) | +| WMLC | install_by_user(Wco) | enable_window_controls_overlay(Wco) | check_window_controls_overlay(Wco, On) | | WMLC | install_policy_app(Wco, ShortcutOptions::All, Windowed, WebApp) | launch(Wco) | enable_window_controls_overlay(Wco) | check_window_controls_overlay(Wco, On) | -| WMLC | install_or_shortcut_by_user_windowed(Wco) | enable_window_controls_overlay(Wco) | check_window_controls_overlay_toggle(Wco, Shown) | +| WMLC | install_by_user(Wco) | enable_window_controls_overlay(Wco) | check_window_controls_overlay_toggle(Wco, Shown) | | WMLC | install_policy_app(Wco, ShortcutOptions::All, Windowed, WebApp) | launch(Wco) | enable_window_controls_overlay(Wco) | check_window_controls_overlay_toggle(Wco, Shown) | -| WMLC | install_or_shortcut_by_user_windowed(Wco) | enable_window_controls_overlay(Wco) | disable_window_controls_overlay(Wco) | check_window_controls_overlay(Wco, Off) | +| WMLC | install_by_user(Wco) | enable_window_controls_overlay(Wco) | disable_window_controls_overlay(Wco) | check_window_controls_overlay(Wco, Off) | | WMLC | install_policy_app(Wco, ShortcutOptions::All, Windowed, WebApp) | launch(Wco) | enable_window_controls_overlay(Wco) | disable_window_controls_overlay(Wco) | check_window_controls_overlay(Wco, Off) | -| WMLC | install_or_shortcut_by_user_windowed(Wco) | enable_window_controls_overlay(Wco) | disable_window_controls_overlay(Wco) | check_window_controls_overlay_toggle(Wco, Shown) | +| WMLC | install_by_user(Wco) | enable_window_controls_overlay(Wco) | disable_window_controls_overlay(Wco) | check_window_controls_overlay_toggle(Wco, Shown) | | WMLC | install_policy_app(Wco, ShortcutOptions::All, Windowed, WebApp) | launch(Wco) | enable_window_controls_overlay(Wco) | disable_window_controls_overlay(Wco) | check_window_controls_overlay_toggle(Wco, Shown) | -| WMLC | install_or_shortcut_by_user_windowed(Wco) | enable_window_controls_overlay(Wco) | launch(Wco) | check_window_controls_overlay(Wco, On) | +| WMLC | install_by_user(Wco) | enable_window_controls_overlay(Wco) | launch(Wco) | check_window_controls_overlay(Wco, On) | | WMLC | install_policy_app(Wco, ShortcutOptions::All, Windowed, WebApp) | launch(Wco) | enable_window_controls_overlay(Wco) | launch(Wco) | check_window_controls_overlay(Wco, On) | -| WMLC | install_or_shortcut_windowed(MinimalUi) | manifest_update_display(MinimalUi, Wco) | await_manifest_update(MinimalUi) | maybe_close_pwa | launch(MinimalUi) | check_window_controls_overlay_toggle(MinimalUi, Shown) | -| WMLC | install_or_shortcut_windowed(MinimalUi) | manifest_update_display(MinimalUi, Wco) | await_manifest_update(MinimalUi) | maybe_close_pwa | launch(MinimalUi) | check_window_controls_overlay_toggle(MinimalUi, Shown) | -| WMLC | install_or_shortcut_windowed(MinimalUi) | manifest_update_display(MinimalUi, Wco) | await_manifest_update(MinimalUi) | maybe_close_pwa | launch(MinimalUi) | enable_window_controls_overlay(MinimalUi) | check_window_controls_overlay(MinimalUi, On) | -| WMLC | install_or_shortcut_windowed(MinimalUi) | manifest_update_display(MinimalUi, Wco) | await_manifest_update(MinimalUi) | maybe_close_pwa | launch(MinimalUi) | enable_window_controls_overlay(MinimalUi) | check_window_controls_overlay_toggle(MinimalUi, Shown) | -| WMLC | install_or_shortcut_windowed(MinimalUi) | manifest_update_display(MinimalUi, Wco) | await_manifest_update(MinimalUi) | maybe_close_pwa | launch(MinimalUi) | enable_window_controls_overlay(MinimalUi) | check_window_controls_overlay_toggle(MinimalUi, Shown) | -| WMLC | install_or_shortcut_windowed(Wco) | manifest_update_display(Wco, Standalone) | await_manifest_update(Wco) | maybe_close_pwa | launch(Wco) | check_window_controls_overlay_toggle(Wco, NotShown) | -| WMLC | install_or_shortcut_windowed(Wco) | manifest_update_display(Wco, Standalone) | await_manifest_update(Wco) | maybe_close_pwa | launch(Wco) | check_window_controls_overlay(Wco, Off) | -| WMLC | install_or_shortcut_by_user_windowed(Wco) | check_window_controls_overlay_toggle_icon(Shown) | -| WMLC | install_or_shortcut_by_user_windowed(Wco) | enter_full_screen_app | check_window_controls_overlay_toggle_icon(NotShown) | -| WMLC | install_or_shortcut_by_user_windowed(Wco) | enter_full_screen_app | exit_full_screen_app | check_window_controls_overlay_toggle_icon(Shown) | +| WMLC | install_windowed(MinimalUi) | manifest_update_display(MinimalUi, Wco) | await_manifest_update(MinimalUi) | maybe_close_pwa | launch(MinimalUi) | check_window_controls_overlay_toggle(MinimalUi, Shown) | +| WMLC | install_windowed(MinimalUi) | manifest_update_display(MinimalUi, Wco) | await_manifest_update(MinimalUi) | maybe_close_pwa | launch(MinimalUi) | check_window_controls_overlay_toggle(MinimalUi, Shown) | +| WMLC | install_windowed(MinimalUi) | manifest_update_display(MinimalUi, Wco) | await_manifest_update(MinimalUi) | maybe_close_pwa | launch(MinimalUi) | enable_window_controls_overlay(MinimalUi) | check_window_controls_overlay(MinimalUi, On) | +| WMLC | install_windowed(MinimalUi) | manifest_update_display(MinimalUi, Wco) | await_manifest_update(MinimalUi) | maybe_close_pwa | launch(MinimalUi) | enable_window_controls_overlay(MinimalUi) | check_window_controls_overlay_toggle(MinimalUi, Shown) | +| WMLC | install_windowed(MinimalUi) | manifest_update_display(MinimalUi, Wco) | await_manifest_update(MinimalUi) | maybe_close_pwa | launch(MinimalUi) | enable_window_controls_overlay(MinimalUi) | check_window_controls_overlay_toggle(MinimalUi, Shown) | +| WMLC | install_windowed(Wco) | manifest_update_display(Wco, Standalone) | await_manifest_update(Wco) | maybe_close_pwa | launch(Wco) | check_window_controls_overlay_toggle(Wco, NotShown) | +| WMLC | install_windowed(Wco) | manifest_update_display(Wco, Standalone) | await_manifest_update(Wco) | maybe_close_pwa | launch(Wco) | check_window_controls_overlay(Wco, Off) | +| WMLC | install_by_user(Wco) | check_window_controls_overlay_toggle_icon(Shown) | +| WMLC | install_by_user(Wco) | enter_full_screen_app | check_window_controls_overlay_toggle_icon(NotShown) | +| WMLC | install_by_user(Wco) | enter_full_screen_app | exit_full_screen_app | check_window_controls_overlay_toggle_icon(Shown) | | WMLC | install_policy_app(Wco, ShortcutOptions::All, Windowed, WebApp) | launch(Wco) | check_window_controls_overlay_toggle_icon(Shown) | | WMLC | install_policy_app(Wco, ShortcutOptions::All, Windowed, WebApp) | launch(Wco) | enter_full_screen_app | check_window_controls_overlay_toggle_icon(NotShown) | | WMLC | install_policy_app(Wco, ShortcutOptions::All, Windowed, WebApp) | launch(Wco) | enter_full_screen_app | exit_full_screen_app | check_window_controls_overlay_toggle_icon(Shown) | @@ -358,32 +494,36 @@ | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| WMLC | install_or_shortcut(FileHandler) | check_site_handles_file(FileHandler, Foo) | check_site_handles_file(FileHandler, Bar) | +| WMLC | install(FileHandler) | check_site_handles_file(FileHandler, Foo) | check_site_handles_file(FileHandler, Bar) | ### Launching a single window or tab vs multiple -The test behavior can change whether the site is configured to open as a window or open as a tab. To achieve this, we use three actions to enter those states: -- `install_or_shortcut_windowed` -- `install_or_shortcut_tabbed` -- `install_or_shortcut_windowed` + `set_open_in_tab` +The test behavior can change whether the site is configured to open as a window or open as a tab. To achieve this, we use many actions to enter those states: +- `install_windowed` +- `install_tabbed` + +The following actions are available on ChromeOS only: +- `create_shortcut_tabbed` +- `create_shortcut_windowed` +- `create_shortcut_windowed` + `set_open_in_tab` | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | # Single file opens should open just one window or tab. | -| WMLC | install_or_shortcut_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_pwa_window_created(FileHandler, One) | check_files_loaded_in_site(FileHandler, OneFooFile) | -| WMLC | install_or_shortcut_tabbed(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, OneFooFile) | -| WMLC | install_or_shortcut_windowed(FileHandler) | set_open_in_tab(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, OneFooFile) | -| WMLC | install_or_shortcut_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, OneBarFile, Allow, AskAgain) | check_pwa_window_created(FileHandler, One) | check_files_loaded_in_site(FileHandler, OneBarFile) | -| WMLC | install_or_shortcut_tabbed(FileHandler) | launch_file_expect_dialog(FileHandler, OneBarFile, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, OneBarFile) | -| WMLC | install_or_shortcut_windowed(FileHandler) | set_open_in_tab(FileHandler) | launch_file_expect_dialog(FileHandler, OneBarFile, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, OneBarFile) | +| WMLC | install_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_pwa_window_created(FileHandler, One) | check_files_loaded_in_site(FileHandler, OneFooFile) | +| WMLC | install_tabbed(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, OneFooFile) | +| WMLC | install_windowed(FileHandler) | set_open_in_tab(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, OneFooFile) | +| WMLC | install_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, OneBarFile, Allow, AskAgain) | check_pwa_window_created(FileHandler, One) | check_files_loaded_in_site(FileHandler, OneBarFile) | +| WMLC | install_tabbed(FileHandler) | launch_file_expect_dialog(FileHandler, OneBarFile, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, OneBarFile) | +| WMLC | install_windowed(FileHandler) | set_open_in_tab(FileHandler) | launch_file_expect_dialog(FileHandler, OneBarFile, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, OneBarFile) | | # Opening multiple Foo files only opens one window or tab. | -| WMLC | install_or_shortcut_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, MultipleFooFiles, Allow, AskAgain) | check_pwa_window_created(FileHandler, One) | check_files_loaded_in_site(FileHandler, MultipleFooFiles) | -| WMLC | install_or_shortcut_tabbed(FileHandler) | launch_file_expect_dialog(FileHandler, MultipleFooFiles, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, MultipleFooFiles) | -| WMLC | install_or_shortcut_windowed(FileHandler) | set_open_in_tab(FileHandler) | launch_file_expect_dialog(FileHandler, MultipleFooFiles, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, MultipleFooFiles) | +| WMLC | install_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, MultipleFooFiles, Allow, AskAgain) | check_pwa_window_created(FileHandler, One) | check_files_loaded_in_site(FileHandler, MultipleFooFiles) | +| WMLC | install_tabbed(FileHandler) | launch_file_expect_dialog(FileHandler, MultipleFooFiles, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, MultipleFooFiles) | +| WMLC | install_windowed(FileHandler) | set_open_in_tab(FileHandler) | launch_file_expect_dialog(FileHandler, MultipleFooFiles, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, MultipleFooFiles) | | # Opening multiple Bar files opens multiple windows or tabs. | -| WMLC | install_or_shortcut_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, MultipleBarFiles, Allow, AskAgain) | check_pwa_window_created(FileHandler, Two) | check_files_loaded_in_site(FileHandler, MultipleBarFiles) | -| WMLC | install_or_shortcut_tabbed(FileHandler) | launch_file_expect_dialog(FileHandler, MultipleBarFiles, Allow, AskAgain) | check_tab_created(Two) | check_files_loaded_in_site(FileHandler, MultipleBarFiles) | -| WMLC | install_or_shortcut_windowed(FileHandler) | set_open_in_tab(FileHandler) | launch_file_expect_dialog(FileHandler, MultipleBarFiles, Allow, AskAgain) | check_tab_created(Two) | check_files_loaded_in_site(FileHandler, MultipleBarFiles) | +| WMLC | install_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, MultipleBarFiles, Allow, AskAgain) | check_pwa_window_created(FileHandler, Two) | check_files_loaded_in_site(FileHandler, MultipleBarFiles) | +| WMLC | install_tabbed(FileHandler) | launch_file_expect_dialog(FileHandler, MultipleBarFiles, Allow, AskAgain) | check_tab_created(Two) | check_files_loaded_in_site(FileHandler, MultipleBarFiles) | +| WMLC | install_windowed(FileHandler) | set_open_in_tab(FileHandler) | launch_file_expect_dialog(FileHandler, MultipleBarFiles, Allow, AskAgain) | check_tab_created(Two) | check_files_loaded_in_site(FileHandler, MultipleBarFiles) | ### Multi-profile behavior @@ -391,49 +531,47 @@ | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | # To slightly reduce number of generated tests, and work around test name limitations, separate out some by_user and policy install cases. | # Launch a file in the primary profile, while the PWA is not currently open. -| WML | install_or_shortcut_by_user_windowed(FileHandler) | maybe_close_pwa | switch_active_profile(Profile2) | install_or_shortcut(FileHandler) | maybe_close_pwa | disable_file_handling(FileHandler) | switch_active_profile(Default) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_pwa_window_created(FileHandler, One) | check_files_loaded_in_site(FileHandler, OneFooFile) | -| WML | install_or_shortcut_by_user_tabbed(FileHandler) | switch_active_profile(Profile2) | install_or_shortcut(FileHandler) | maybe_close_pwa | disable_file_handling(FileHandler) | switch_active_profile(Default) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, OneFooFile) | +| WML | install_by_user(FileHandler) | maybe_close_pwa | switch_active_profile(Profile2) | install(FileHandler) | maybe_close_pwa | disable_file_handling(FileHandler) | switch_active_profile(Default) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_pwa_window_created(FileHandler, One) | check_files_loaded_in_site(FileHandler, OneFooFile) | | # Launch a file in the primary profile, while the PWA is open in the secondary profile. -| WML | install_or_shortcut_by_user_windowed(FileHandler) | maybe_close_pwa | switch_active_profile(Profile2) | install_or_shortcut(FileHandler) | disable_file_handling(FileHandler) | switch_active_profile(Default) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_pwa_window_created(FileHandler, One) | check_files_loaded_in_site(FileHandler, OneFooFile) | -| WML | install_or_shortcut_by_user_tabbed(FileHandler) | switch_active_profile(Profile2) | install_or_shortcut(FileHandler) | disable_file_handling(FileHandler) | switch_active_profile(Default) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, OneFooFile) | -| WML | install_policy_app(FileHandler, ShortcutOptions::All, Windowed, WebApp) | switch_active_profile(Profile2) | install_or_shortcut(FileHandler) | disable_file_handling(FileHandler) | switch_active_profile(Default) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_pwa_window_created(FileHandler, One) | check_files_loaded_in_site(FileHandler, OneFooFile) | -| WML | install_policy_app(FileHandler, ShortcutOptions::All, Browser, WebApp) | switch_active_profile(Profile2) | install_or_shortcut(FileHandler) | disable_file_handling(FileHandler) | switch_active_profile(Default) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, OneFooFile) | +| WML | install_by_user(FileHandler) | maybe_close_pwa | switch_active_profile(Profile2) | install(FileHandler) | disable_file_handling(FileHandler) | switch_active_profile(Default) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_pwa_window_created(FileHandler, One) | check_files_loaded_in_site(FileHandler, OneFooFile) | +| WML | install_policy_app(FileHandler, ShortcutOptions::All, Windowed, WebApp) | switch_active_profile(Profile2) | install(FileHandler) | disable_file_handling(FileHandler) | switch_active_profile(Default) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_pwa_window_created(FileHandler, One) | check_files_loaded_in_site(FileHandler, OneFooFile) | +| WML | install_policy_app(FileHandler, ShortcutOptions::All, Browser, WebApp) | switch_active_profile(Profile2) | install(FileHandler) | disable_file_handling(FileHandler) | switch_active_profile(Default) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_tab_created(One) | check_files_loaded_in_site(FileHandler, OneFooFile) | ### Dialog option | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| WMLC | install_or_shortcut_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, Remember) | launch_file_expect_no_dialog(FileHandler, OneFooFile) | -| WMLC | install_or_shortcut_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, Remember) | close_pwa | launch_file_expect_no_dialog(FileHandler, OneFooFile) | check_files_loaded_in_site(FileHandler, OneFooFile) | -| WMLC | install_or_shortcut_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, Remember) | close_pwa | launch_file_expect_no_dialog(FileHandler, OneFooFile) | close_pwa | launch_file_expect_no_dialog(FileHandler, OneBarFile) | check_files_loaded_in_site(FileHandler, OneBarFile) | -| WMLC | install_or_shortcut(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | -| WMLC | install_or_shortcut(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Deny, AskAgain) | check_window_not_created | check_tab_not_created | check_site_handles_file(FileHandler, Foo) | check_site_handles_file(FileHandler, Bar) | -| WMLC | install_or_shortcut(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Deny, AskAgain) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_files_loaded_in_site(FileHandler, OneFooFile) | -| WMLC | install_or_shortcut(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Deny, Remember) | check_window_not_created | check_tab_not_created | check_site_not_handles_file(FileHandler, Foo) | check_site_not_handles_file(FileHandler, Bar) | +| WMLC | install_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, Remember) | launch_file_expect_no_dialog(FileHandler, OneFooFile) | +| WMLC | install_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, Remember) | close_pwa | launch_file_expect_no_dialog(FileHandler, OneFooFile) | check_files_loaded_in_site(FileHandler, OneFooFile) | +| WMLC | install_windowed(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, Remember) | close_pwa | launch_file_expect_no_dialog(FileHandler, OneFooFile) | close_pwa | launch_file_expect_no_dialog(FileHandler, OneBarFile) | check_files_loaded_in_site(FileHandler, OneBarFile) | +| WMLC | install(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | +| WMLC | install(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Deny, AskAgain) | check_window_not_created | check_tab_not_created | check_site_handles_file(FileHandler, Foo) | check_site_handles_file(FileHandler, Bar) | +| WMLC | install(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Deny, AskAgain) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | check_files_loaded_in_site(FileHandler, OneFooFile) | +| WMLC | install(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Deny, Remember) | check_window_not_created | check_tab_not_created | check_site_not_handles_file(FileHandler, Foo) | check_site_not_handles_file(FileHandler, Bar) | ### Policy test for forcing file handling approval | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| WMLC | install_or_shortcut(FileHandler) | add_file_handling_policy_approval(FileHandler) | launch_file_expect_no_dialog(FileHandler, OneFooFile) | check_pwa_window_created(FileHandler, One) | -| WMLC | install_or_shortcut(FileHandler) | add_file_handling_policy_approval(FileHandler) | remove_file_handling_policy_approval(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | +| WMLC | install(FileHandler) | add_file_handling_policy_approval(FileHandler) | launch_file_expect_no_dialog(FileHandler, OneFooFile) | check_pwa_window_created(FileHandler, One) | +| WMLC | install(FileHandler) | add_file_handling_policy_approval(FileHandler) | remove_file_handling_policy_approval(FileHandler) | launch_file_expect_dialog(FileHandler, OneFooFile, Allow, AskAgain) | ## Sub Apps | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| #C | install_or_shortcut(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | check_app_in_list_windowed(SubApp1) | check_has_sub_app(HasSubApps, SubApp1) | check_platform_shortcut_and_icon(SubApp1) | -| #C | install_or_shortcut(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserDeny) | check_app_not_in_list(SubApp1) | check_platform_shortcut_not_exists(SubApp1) | -| #C | install_or_shortcut_by_user(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | uninstall_by_user(HasSubApps) | check_app_not_in_list(SubApp1) | check_platform_shortcut_not_exists(SubApp1) | +| #C | install(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | check_app_in_list_windowed(SubApp1) | check_has_sub_app(HasSubApps, SubApp1) | check_platform_shortcut_and_icon(SubApp1) | +| #C | install(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserDeny) | check_app_not_in_list(SubApp1) | check_platform_shortcut_not_exists(SubApp1) | +| #C | install_by_user(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | uninstall_by_user(HasSubApps) | check_app_not_in_list(SubApp1) | check_platform_shortcut_not_exists(SubApp1) | | #C | install_policy_app(HasSubApps, ShortcutOptions::All, WindowOptions::All, WebApp) | install_sub_app(HasSubApps, SubApp1, UserAllow) | uninstall_policy_app(HasSubApps) | check_app_not_in_list(SubApp1) | check_platform_shortcut_not_exists(SubApp1) | -| #C | install_or_shortcut(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | install_sub_app(HasSubApps, SubApp2, UserAllow) | check_has_sub_app(HasSubApps, SubApp1) | check_has_sub_app(HasSubApps, SubApp2) | -| #C | install_or_shortcut(HasSubApps) | check_no_sub_apps(HasSubApps) | -| #C | install_or_shortcut(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | remove_sub_app(HasSubApps, SubApp1) | check_app_not_in_list(SubApp1) | check_platform_shortcut_not_exists(SubApp1) | check_no_sub_apps(HasSubApps) | -| #C | install_or_shortcut_windowed(SubApp1) | check_app_in_list_windowed(SubApp1) | check_platform_shortcut_and_icon(SubApp1) -| #C | install_or_shortcut_tabbed(SubApp1) | check_app_in_list_tabbed(SubApp1) | check_platform_shortcut_and_icon(SubApp1) -| #C | install_or_shortcut(SubApp1) | install_or_shortcut(HasSubApps) | check_not_has_sub_app(HasSubApps, SubApp1) -| #C | install_or_shortcut(SubApp1) | install_or_shortcut(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | check_has_sub_app(HasSubApps, SubApp1) -| #C | install_or_shortcut_windowed(SubApp1) | install_or_shortcut(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | remove_sub_app(HasSubApps, SubApp1) | check_not_has_sub_app(HasSubApps, SubApp1) | check_app_in_list_windowed(SubApp1) | check_platform_shortcut_and_icon(SubApp1) -| #C | install_or_shortcut_tabbed(SubApp1) | install_or_shortcut(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | remove_sub_app(HasSubApps, SubApp1) | check_not_has_sub_app(HasSubApps, SubApp1) | check_app_in_list_tabbed(SubApp1) | check_platform_shortcut_and_icon(SubApp1) +| #C | install(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | install_sub_app(HasSubApps, SubApp2, UserAllow) | check_has_sub_app(HasSubApps, SubApp1) | check_has_sub_app(HasSubApps, SubApp2) | +| #C | install(HasSubApps) | check_no_sub_apps(HasSubApps) | +| #C | install(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | remove_sub_app(HasSubApps, SubApp1) | check_app_not_in_list(SubApp1) | check_platform_shortcut_not_exists(SubApp1) | check_no_sub_apps(HasSubApps) | +| #C | install_windowed(SubApp1) | check_app_in_list_windowed(SubApp1) | check_platform_shortcut_and_icon(SubApp1) +| #C | install_tabbed(SubApp1) | check_app_in_list_tabbed(SubApp1) | check_platform_shortcut_and_icon(SubApp1) +| #C | install(SubApp1) | install(HasSubApps) | check_not_has_sub_app(HasSubApps, SubApp1) +| #C | install(SubApp1) | install(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | check_has_sub_app(HasSubApps, SubApp1) +| #C | install_windowed(SubApp1) | install(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | remove_sub_app(HasSubApps, SubApp1) | check_not_has_sub_app(HasSubApps, SubApp1) | check_app_in_list_windowed(SubApp1) | check_platform_shortcut_and_icon(SubApp1) +| #C | install_tabbed(SubApp1) | install(HasSubApps) | install_sub_app(HasSubApps, SubApp1, UserAllow) | remove_sub_app(HasSubApps, SubApp1) | check_not_has_sub_app(HasSubApps, SubApp1) | check_app_in_list_tabbed(SubApp1) | check_platform_shortcut_and_icon(SubApp1)
diff --git a/chrome/updater/test/integration_tests.cc b/chrome/updater/test/integration_tests.cc index 377b929..371e30f 100644 --- a/chrome/updater/test/integration_tests.cc +++ b/chrome/updater/test/integration_tests.cc
@@ -1580,32 +1580,42 @@ ASSERT_NO_FATAL_FAILURE(Uninstall()); } -class IntegrationInstallIdTest +TEST_F(IntegrationTest, InstallId) { + ScopedServer test_server(test_commands_); + constexpr std::string kAppId("test"); + ASSERT_NO_FATAL_FAILURE(ExpectInstallSequence( + &test_server, kAppId, "", UpdateService::Priority::kForeground, + base::Version({0, 0, 0, 0}), base::Version("1"), false, false, + base::Version(kUpdaterVersion), "\"iid\":\"my_install_id\"")); + ASSERT_NO_FATAL_FAILURE(InstallUpdaterAndApp( + kAppId, /*is_silent_install=*/true, + base::StrCat({"appguid=", kAppId, "&iid=my_install_id"}))); + ASSERT_NO_FATAL_FAILURE(ExpectUninstallPing(&test_server)); + ASSERT_NO_FATAL_FAILURE(Uninstall()); +} + +class IntegrationSansInstallIdTest : public ::testing::WithParamInterface<TestUpdaterVersion>, public IntegrationTest {}; -INSTANTIATE_TEST_SUITE_P(IntegrationInstallIdTestCases, - IntegrationInstallIdTest, - ::testing::ValuesIn(GetRealUpdaterVersions())); +INSTANTIATE_TEST_SUITE_P( + IntegrationSansInstallIdTestCases, + IntegrationSansInstallIdTest, + ::testing::ValuesIn(GetRealUpdaterLowerVersions("_sans_iid"))); -TEST_P(IntegrationInstallIdTest, Test) { +TEST_P(IntegrationSansInstallIdTest, Test) { if (!GetParam().version.IsValid()) { GTEST_SKIP() << "Skipping test since the version for " << GetParam().updater_setup_path << " is not valid"; } ScopedServer test_server(test_commands_); - const std::string kAppId("test"); - const base::Version v1("1"); + constexpr std::string kAppId("test"); - // r1395118 `Updater: Transmit install ID over IPC (Windows)` landed in - // version `133.0.6891.0`. ASSERT_NO_FATAL_FAILURE(ExpectInstallSequence( &test_server, kAppId, "", UpdateService::Priority::kForeground, - base::Version({0, 0, 0, 0}), v1, false, false, GetParam().version, - GetParam().version >= base::Version("133.0.6891.0") - ? "\"iid\":\"my_install_id\"" - : ".*")); + base::Version({0, 0, 0, 0}), base::Version("1"), false, false, + GetParam().version, ".*")); ASSERT_NO_FATAL_FAILURE(InstallUpdaterAndApp( kAppId, /*is_silent_install=*/true, base::StrCat({"appguid=", kAppId, "&iid=my_install_id"}),
diff --git a/chrome/updater/test/integration_tests_impl.h b/chrome/updater/test/integration_tests_impl.h index 8dc61704..faa4f0c9 100644 --- a/chrome/updater/test/integration_tests_impl.h +++ b/chrome/updater/test/integration_tests_impl.h
@@ -286,7 +286,8 @@ void SetupFakeUpdaterLowerVersion(UpdaterScope scope); // Gets the real updater lower version paths/versions. -std::vector<TestUpdaterVersion> GetRealUpdaterLowerVersions(); +std::vector<TestUpdaterVersion> GetRealUpdaterLowerVersions( + const std::string& arch_suffix = {}); // Gets the real updater current and lower version paths/versions. std::vector<TestUpdaterVersion> GetRealUpdaterVersions();
diff --git a/chrome/updater/test/integration_tests_linux.cc b/chrome/updater/test/integration_tests_linux.cc index 7883b85..b13d27e6 100644 --- a/chrome/updater/test/integration_tests_linux.cc +++ b/chrome/updater/test/integration_tests_linux.cc
@@ -186,17 +186,15 @@ EXPECT_FALSE(base::PathIsWritable(*path)); } -std::vector<TestUpdaterVersion> GetRealUpdaterLowerVersions() { +std::vector<TestUpdaterVersion> GetRealUpdaterLowerVersions( + const std::string& arch_suffix) { base::FilePath exe_path; EXPECT_TRUE(base::PathService::Get(base::DIR_EXE, &exe_path)); base::FilePath old_updater_path = - exe_path.Append(FILE_PATH_LITERAL("old_updater")); + exe_path.Append(FILE_PATH_LITERAL("old_updater")) + .AppendASCII(base::StrCat({base::ToLowerASCII(BROWSER_NAME_STRING), + "_linux64", arch_suffix})); -#if BUILDFLAG(CHROMIUM_BRANDING) - old_updater_path = old_updater_path.AppendASCII("chromium_linux64"); -#elif BUILDFLAG(GOOGLE_CHROME_BRANDING) - old_updater_path = old_updater_path.AppendASCII("chrome_linux64"); -#endif #if BUILDFLAG(CHROMIUM_BRANDING) || BUILDFLAG(GOOGLE_CHROME_BRANDING) old_updater_path = old_updater_path.AppendASCII("cipd"); #endif
diff --git a/chrome/updater/test/integration_tests_mac.mm b/chrome/updater/test/integration_tests_mac.mm index d97101d..b37d456 100644 --- a/chrome/updater/test/integration_tests_mac.mm +++ b/chrome/updater/test/integration_tests_mac.mm
@@ -281,21 +281,26 @@ [&] { VLOG(0) << "Still waiting for updater to exit: " << last_found; }); } -std::vector<TestUpdaterVersion> GetRealUpdaterLowerVersions() { +std::vector<TestUpdaterVersion> GetRealUpdaterLowerVersions( + const std::string& arch_suffix) { base::FilePath exe_path; EXPECT_TRUE(base::PathService::Get(base::DIR_EXE, &exe_path)); base::FilePath old_updater_path = exe_path.Append(FILE_PATH_LITERAL("old_updater")); + std::string arch; #if BUILDFLAG(CHROMIUM_BRANDING) #if defined(ARCH_CPU_ARM64) - old_updater_path = old_updater_path.Append("chromium_mac_arm64"); + arch = "chromium_mac_arm64"; #elif defined(ARCH_CPU_X86_64) - old_updater_path = old_updater_path.Append("chromium_mac_amd64"); + arch = "chromium_mac_amd64"; #endif #elif BUILDFLAG(GOOGLE_CHROME_BRANDING) - old_updater_path = old_updater_path.Append("chrome_mac_universal"); + arch = "chrome_mac_universal"; #endif + + old_updater_path = old_updater_path.Append(base::StrCat({arch, arch_suffix})); + #if BUILDFLAG(CHROMIUM_BRANDING) || BUILDFLAG(GOOGLE_CHROME_BRANDING) old_updater_path = old_updater_path.Append("cipd"); #endif
diff --git a/chrome/updater/test/integration_tests_win.cc b/chrome/updater/test/integration_tests_win.cc index b9f4550..07bba20 100644 --- a/chrome/updater/test/integration_tests_win.cc +++ b/chrome/updater/test/integration_tests_win.cc
@@ -1637,19 +1637,20 @@ EXPECT_EQ(RunVPythonCommand(command), 0); } -std::vector<TestUpdaterVersion> GetRealUpdaterLowerVersions() { - std::vector<std::wstring> supported_archs; +std::vector<TestUpdaterVersion> GetRealUpdaterLowerVersions( + const std::string& arch_suffix) { + std::vector<std::string> supported_archs; #if defined(ARCH_CPU_ARM64) supported_archs = { - L"" BROWSER_NAME_STRING "_win_arm64", - L"" BROWSER_NAME_STRING "_win_x86_64", - L"" BROWSER_NAME_STRING "_win_x86", + BROWSER_NAME_STRING "_win_arm64", + BROWSER_NAME_STRING "_win_x86_64", + BROWSER_NAME_STRING "_win_x86", }; #elif defined(ARCH_CPU_X86_64) || defined(ARCH_CPU_X86) supported_archs = { - L"" BROWSER_NAME_STRING "_win_x86_64", - L"" BROWSER_NAME_STRING "_win_x86", + BROWSER_NAME_STRING "_win_x86_64", + BROWSER_NAME_STRING "_win_x86", }; #endif @@ -1667,9 +1668,10 @@ std::vector<TestUpdaterVersion> updater_versions; base::ranges::transform( supported_archs, std::back_inserter(updater_versions), - [&](const std::wstring& arch) -> TestUpdaterVersion { + [&](const std::string& arch) -> TestUpdaterVersion { const base::FilePath updater_setup_path = - old_updater_path.Append(arch).Append(path_suffix); + old_updater_path.AppendASCII(base::StrCat({arch, arch_suffix})) + .Append(path_suffix); return {updater_setup_path, base::Version(base::UTF16ToUTF8( FileVersionInfo::CreateFileVersionInfo(updater_setup_path)
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM index f8292fe..4656a452 100644 --- a/chromeos/CHROMEOS_LKGM +++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@ -16147.0.0-1065818 \ No newline at end of file +16147.0.0-1065824 \ No newline at end of file
diff --git a/chromeos/ash/components/boca/on_task/on_task_session_manager.cc b/chromeos/ash/components/boca/on_task/on_task_session_manager.cc index c8816d3..5f71827 100644 --- a/chromeos/ash/components/boca/on_task/on_task_session_manager.cc +++ b/chromeos/ash/components/boca/on_task/on_task_session_manager.cc
@@ -67,7 +67,8 @@ system_web_app_manager_->GetActiveSystemWebAppWindowID(); window_id.is_valid()) { // Prepare the pre-existing Boca SWA instance for OnTask. - system_web_app_manager_->PrepareSystemWebAppWindowForOnTask(window_id); + system_web_app_manager_->PrepareSystemWebAppWindowForOnTask( + window_id, /*close_bundle_content=*/true); system_web_app_manager_->SetWindowTrackerForSystemWebAppWindow( window_id, {&active_tab_tracker_, this}); } else { @@ -218,12 +219,22 @@ return; } + // Prepare the SWA for OnTask without closing bundle content outside an active + // session. This is needed to prevent the window tracker from filtering out + // and closing the app instance. + system_web_app_manager_->PrepareSystemWebAppWindowForOnTask( + window_id, /*close_bundle_content=*/false); + // Only restore tabs and set up window tracker if there is an active session. // This ensures we do not inadvertently block URLs. if (!active_session_id_.has_value()) { return; } - system_web_app_manager_->PrepareSystemWebAppWindowForOnTask(window_id); + + // Prepare the SWA for OnTask and close bundle content. This is to de-dupe + // content and ensure that they are set up for locked mode. + system_web_app_manager_->PrepareSystemWebAppWindowForOnTask( + window_id, /*close_bundle_content=*/true); system_web_app_manager_->SetWindowTrackerForSystemWebAppWindow( window_id, {&active_tab_tracker_, this});
diff --git a/chromeos/ash/components/boca/on_task/on_task_session_manager_unittest.cc b/chromeos/ash/components/boca/on_task/on_task_session_manager_unittest.cc index 1b153fa..7a9b638 100644 --- a/chromeos/ash/components/boca/on_task/on_task_session_manager_unittest.cc +++ b/chromeos/ash/components/boca/on_task/on_task_session_manager_unittest.cc
@@ -83,7 +83,7 @@ (override)); MOCK_METHOD(void, PrepareSystemWebAppWindowForOnTask, - (SessionID window_id), + (SessionID window_id, bool close_bundle_content), (override)); MOCK_METHOD(SessionID, GetActiveTabID, (), (override)); MOCK_METHOD(void, SwitchToTab, (SessionID tab_id), (override)); @@ -218,7 +218,8 @@ session_manager_->active_tab_tracker(), session_manager_.get()}; Sequence s; EXPECT_CALL(*system_web_app_manager_ptr_, - PrepareSystemWebAppWindowForOnTask(kWindowId)) + PrepareSystemWebAppWindowForOnTask(kWindowId, + /*close_bundle_content=*/true)) .Times(1) .InSequence(s); EXPECT_CALL( @@ -687,7 +688,7 @@ EXPECT_CALL(*system_web_app_manager_ptr_, GetActiveSystemWebAppWindowID()) .WillOnce(Return(SessionID::InvalidValue())); EXPECT_CALL(*system_web_app_manager_ptr_, - PrepareSystemWebAppWindowForOnTask(_)) + PrepareSystemWebAppWindowForOnTask(_, _)) .Times(0); session_manager_->OnAppReloaded(); } @@ -719,8 +720,8 @@ SetWindowTrackerForSystemWebAppWindow(kWindowId, kWindowObservers)) .Times(AtLeast(1)); EXPECT_CALL(*system_web_app_manager_ptr_, - PrepareSystemWebAppWindowForOnTask(kWindowId)) - .Times(1) + PrepareSystemWebAppWindowForOnTask(kWindowId, _)) + .Times(AtLeast(1)) .InSequence(s); EXPECT_CALL(*system_web_app_manager_ptr_, CreateBackgroundTabWithUrl( @@ -768,8 +769,8 @@ SetWindowTrackerForSystemWebAppWindow(kWindowId, kWindowObservers)) .Times(AtLeast(1)); EXPECT_CALL(*system_web_app_manager_ptr_, - PrepareSystemWebAppWindowForOnTask(kWindowId)) - .Times(1) + PrepareSystemWebAppWindowForOnTask(kWindowId, _)) + .Times(AtLeast(1)) .InSequence(s); EXPECT_CALL(*system_web_app_manager_ptr_, SetPinStateForSystemWebAppWindow( /*pinned=*/true, kWindowId))
diff --git a/chromeos/ash/components/boca/on_task/on_task_system_web_app_manager.h b/chromeos/ash/components/boca/on_task/on_task_system_web_app_manager.h index 3882861..0ab5113ba 100644 --- a/chromeos/ash/components/boca/on_task/on_task_system_web_app_manager.h +++ b/chromeos/ash/components/boca/on_task/on_task_system_web_app_manager.h
@@ -56,10 +56,13 @@ SessionID window_id, const std::set<SessionID>& tab_ids_to_remove) = 0; - // Sets up the specified Boca SWA window for OnTask. This may remove all - // pre-existing content tabs except for the homepage one, normally required - // when the app instance was restored manually. - virtual void PrepareSystemWebAppWindowForOnTask(SessionID window_id) = 0; + // Sets up the specified Boca SWA window for OnTask. Setting + // `close_bundle_content` will remove all pre-existing content tabs except for + // the homepage one, normally required at the onset of a new session or when + // the app instance was restored manually in the middle of an active session. + virtual void PrepareSystemWebAppWindowForOnTask( + SessionID window_id, + bool close_bundle_content) = 0; // Returns a valid tab id associated with the active tab. If // there is no valid active tab, it returns `SessionID::InvalidValue()`.
diff --git a/chromeos/ash/services/assistant/public/cpp/assistant_browser_delegate.h b/chromeos/ash/services/assistant/public/cpp/assistant_browser_delegate.h index 781ebc18..b7d9fab 100644 --- a/chromeos/ash/services/assistant/public/cpp/assistant_browser_delegate.h +++ b/chromeos/ash/services/assistant/public/cpp/assistant_browser_delegate.h
@@ -7,6 +7,8 @@ #include "ash/public/mojom/assistant_volume_control.mojom.h" #include "base/component_export.h" +#include "base/one_shot_event.h" +#include "base/types/expected.h" #include "chromeos/ash/components/assistant/buildflags.h" #include "chromeos/ash/services/assistant/public/cpp/assistant_enums.h" #include "chromeos/ash/services/assistant/public/mojom/assistant_audio_decoder.mojom.h" @@ -30,6 +32,13 @@ // |ash::assistant::Service|. class COMPONENT_EXPORT(ASSISTANT_SERVICE_PUBLIC) AssistantBrowserDelegate { public: + enum class Error { + kProfileNotReady, + kWebAppProviderNotReadyToRead, + kNewEntryPointNotEnabled, + kNewEntryPointNotFound, + }; + AssistantBrowserDelegate(); AssistantBrowserDelegate(const AssistantBrowserDelegate&) = delete; AssistantBrowserDelegate& operator=(const AssistantBrowserDelegate&) = delete; @@ -85,6 +94,22 @@ // to OS Settings url which may cause deviation from this behavior. virtual void OpenUrl(GURL url) = 0; + // Returns true if a primary profile is eligible for Assistant new entry + // point. Note that an error might be returned if you read this value before + // `is_new_entry_point_eligible_for_primary_profile_ready` event is signaled. + virtual base::expected<bool, Error> + IsNewEntryPointEligibleForPrimaryProfile() = 0; + + // An event signaled if the new entry point eligibility value is ready to + // read. There is initialization happening as an async operation. Early read + // of `IsNewEntryPointEligibleForPrimaryProfile` can return an error value. + // TODO(crbug.com/386257055): update API as this supports eligibility change + // events, e.g., uninstall. + const base::OneShotEvent& + is_new_entry_point_eligible_for_primary_profile_ready() { + return on_is_new_entry_point_eligible_ready_; + } + // Opens the new entry point. virtual void OpenNewEntryPoint() = 0; @@ -94,6 +119,9 @@ mojo::PendingReceiver<libassistant::mojom::LibassistantService> receiver) = 0; #endif // BUILDFLAG(ENABLE_CROS_LIBASSISTANT) + + protected: + base::OneShotEvent on_is_new_entry_point_eligible_ready_; }; } // namespace ash::assistant
diff --git a/chromeos/ash/services/assistant/test_support/scoped_assistant_browser_delegate.cc b/chromeos/ash/services/assistant/test_support/scoped_assistant_browser_delegate.cc index edaffd9..285909bd 100644 --- a/chromeos/ash/services/assistant/test_support/scoped_assistant_browser_delegate.cc +++ b/chromeos/ash/services/assistant/test_support/scoped_assistant_browser_delegate.cc
@@ -5,6 +5,9 @@ #include "chromeos/ash/services/assistant/test_support/scoped_assistant_browser_delegate.h" #include "ash/public/cpp/new_window_delegate.h" +#include "base/types/expected.h" +#include "chromeos/ash/services/assistant/public/cpp/assistant_browser_delegate.h" +#include "chromeos/ash/services/assistant/public/cpp/features.h" namespace ash::assistant { @@ -42,6 +45,16 @@ NewWindowDelegate::Disposition::kNewForegroundTab); } +base::expected<bool, AssistantBrowserDelegate::Error> +ScopedAssistantBrowserDelegate::IsNewEntryPointEligibleForPrimaryProfile() { + if (!ash::assistant::features::IsNewEntryPointEnabled()) { + return base::unexpected( + AssistantBrowserDelegate::Error::kNewEntryPointNotEnabled); + } + + return true; +} + void ScopedAssistantBrowserDelegate::OpenNewEntryPoint() { if (open_new_entry_point_closure_.is_null()) { return;
diff --git a/chromeos/ash/services/assistant/test_support/scoped_assistant_browser_delegate.h b/chromeos/ash/services/assistant/test_support/scoped_assistant_browser_delegate.h index c8d834d..38075458 100644 --- a/chromeos/ash/services/assistant/test_support/scoped_assistant_browser_delegate.h +++ b/chromeos/ash/services/assistant/test_support/scoped_assistant_browser_delegate.h
@@ -58,6 +58,8 @@ mojo::PendingReceiver<chromeos::network_config::mojom::CrosNetworkConfig> receiver) override {} void OpenUrl(GURL url) override; + base::expected<bool, AssistantBrowserDelegate::Error> + IsNewEntryPointEligibleForPrimaryProfile() override; void OpenNewEntryPoint() override; #if BUILDFLAG(ENABLE_CROS_LIBASSISTANT) void RequestLibassistantService(
diff --git a/clank b/clank index 9538b5c..8875e16 160000 --- a/clank +++ b/clank
@@ -1 +1 @@ -Subproject commit 9538b5ce9a3291d7c7ad7bd04a9e31d15812fe28 +Subproject commit 8875e162d803889db7e9d5c9b6676d169db30aa1
diff --git a/components/browser_ui/share/android/java/src/org/chromium/components/browser_ui/share/ShareParams.java b/components/browser_ui/share/android/java/src/org/chromium/components/browser_ui/share/ShareParams.java index f030e6f1..fbf575e 100644 --- a/components/browser_ui/share/android/java/src/org/chromium/components/browser_ui/share/ShareParams.java +++ b/components/browser_ui/share/android/java/src/org/chromium/components/browser_ui/share/ShareParams.java
@@ -5,6 +5,7 @@ package org.chromium.components.browser_ui.share; import android.content.ComponentName; +import android.graphics.Bitmap; import android.net.Uri; import android.text.TextUtils; @@ -52,6 +53,12 @@ */ private final Uri mSingleImageUri; + /** + * The Bitmap of the preview image (e.g. a favicon) of the text being shared. Ignored if the + * {@link mPreviewImageUri} is set. + */ + private final Bitmap mPreviewImageBitmap; + /** The Uri of the preview image (e.g. a favicon) of the text being shared. */ private Uri mPreviewImageUri; @@ -81,6 +88,7 @@ @Nullable String imageAltText, @Nullable Uri offlineUri, @Nullable Uri singleImageUri, + @Nullable Bitmap previewImageBitmap, @Nullable Uri previewImageUri, @Nullable TargetChosenCallback callback, @Nullable Boolean linkToTextSuccessful, @@ -96,6 +104,7 @@ mImageAltText = imageAltText; mOfflineUri = offlineUri; mSingleImageUri = singleImageUri; + mPreviewImageBitmap = previewImageBitmap; mPreviewImageUri = previewImageUri; mCallback = callback; mLinkToTextSuccessful = linkToTextSuccessful; @@ -178,7 +187,17 @@ return mSingleImageUri; } - /** @return The Uri of the preview image (e.g. a favicon) of the text being shared. */ + /** + * @return The Bitmap of the preview image (e.g. a favicon) of the text being shared. + */ + @Nullable + public Bitmap getPreviewImageBitmap() { + return mPreviewImageBitmap; + } + + /** + * @return The Uri of the preview image (e.g. a favicon) of the text being shared. + */ @Nullable public Uri getPreviewImageUri() { return mPreviewImageUri; @@ -246,6 +265,7 @@ private String mImageAltText; private Uri mOfflineUri; private Uri mSingleImageUri; + private Bitmap mPreviewImageBitmap; private Uri mPreviewImageUri; private TargetChosenCallback mCallback; private Boolean mLinkToTextSuccessful; @@ -312,6 +332,12 @@ return this; } + /** Sets the Bitmap of the preview image of the text being shared. */ + public Builder setPreviewImageBitmap(@Nullable Bitmap previewImageBitmap) { + mPreviewImageBitmap = previewImageBitmap; + return this; + } + /** Sets the Uri of the preview image of the text being shared. */ public Builder setPreviewImageUri(@Nullable Uri previewImageUri) { mPreviewImageUri = previewImageUri; @@ -353,6 +379,7 @@ mImageAltText, mOfflineUri, mSingleImageUri, + mPreviewImageBitmap, mPreviewImageUri, mCallback, mLinkToTextSuccessful,
diff --git a/components/browsing_topics/browsing_topics_service_impl.cc b/components/browsing_topics/browsing_topics_service_impl.cc index 75e86d8..8db5bef6 100644 --- a/components/browsing_topics/browsing_topics_service_impl.cc +++ b/components/browsing_topics/browsing_topics_service_impl.cc
@@ -270,14 +270,7 @@ // <iframe src=[url] browsingtopics> request. kObserveViaIframeAttributeApi = 5, - // Get topics via <img src=[url] browsingtopics>. - kGetViaImgAttributeApi = 6, - - // Observe topics via the "Sec-Browsing-Topics: ?1" response header for the - // <img src=[url] browsingtopics> request. - kObserveViaImgAttributeApi = 7, - - kMaxValue = kObserveViaImgAttributeApi, + kMaxValue = kObserveViaIframeAttributeApi, }; void RecordBrowsingTopicsApiActionTypeMetrics(ApiCallerSource caller_source, @@ -321,24 +314,6 @@ return; } - if (caller_source == ApiCallerSource::kImgAttribute) { - if (get_topics) { - DCHECK(!observe); - - base::UmaHistogramEnumeration( - kBrowsingTopicsApiActionTypeHistogramId, - BrowsingTopicsApiActionType::kGetViaImgAttributeApi); - return; - } - - DCHECK(observe); - base::UmaHistogramEnumeration( - kBrowsingTopicsApiActionTypeHistogramId, - BrowsingTopicsApiActionType::kObserveViaImgAttributeApi); - - return; - } - DCHECK_EQ(caller_source, ApiCallerSource::kFetch); if (get_topics) {
diff --git a/components/browsing_topics/common/common_types.h b/components/browsing_topics/common/common_types.h index dbfe3d33e..c7f373e 100644 --- a/components/browsing_topics/common/common_types.h +++ b/components/browsing_topics/common/common_types.h
@@ -40,9 +40,6 @@ // The API usage is from <iframe src=[url] browsingtopics>. kIframeAttribute, - - // The API usage is from <img src=[url] browsingtopics>. - kImgAttribute, }; // Represents the different reasons why the topics API access is denied. These
diff --git a/components/infobars/core/infobar_delegate.cc b/components/infobars/core/infobar_delegate.cc index 61093a0..ee18d9b3 100644 --- a/components/infobars/core/infobar_delegate.cc +++ b/components/infobars/core/infobar_delegate.cc
@@ -27,7 +27,8 @@ } const gfx::VectorIcon& InfoBarDelegate::GetVectorIcon() const { - return gfx::VectorIcon::EmptyIcon(); + static gfx::VectorIcon empty_icon; + return empty_icon; } ui::ImageModel InfoBarDelegate::GetIcon() const {
diff --git a/components/omnibox/browser/autocomplete_match.cc b/components/omnibox/browser/autocomplete_match.cc index a0ba2c7..79d93e31 100644 --- a/components/omnibox/browser/autocomplete_match.cc +++ b/components/omnibox/browser/autocomplete_match.cc
@@ -64,6 +64,17 @@ namespace { +#if (!BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_VR)) && !BUILDFLAG(IS_IOS) +// Used for `SEARCH_SUGGEST_TAIL` and `NULL_RESULT_MESSAGE` (e.g. starter pack) +// type suggestion icons. + +const gfx::VectorIcon& GetEmptyIcon() { + static const gfx::VectorIcon instance; + return instance; +} + +#endif + bool IsTrivialClassification(const ACMatchClassifications& classifications) { return classifications.empty() || ((classifications.size() == 1) && @@ -582,7 +593,7 @@ // Found), fallthrough to use the empty icon. switch (iph_type) { case IphType::kNone: - return gfx::VectorIcon::EmptyIcon(); + return GetEmptyIcon(); case IphType::kGemini: return omnibox::kSparkIcon; case IphType::kFeaturedEnterpriseSearch: @@ -590,7 +601,7 @@ case IphType::kHistoryEmbeddingsSettingsPromo: return omnibox::kSparkIcon; case IphType::kHistoryEmbeddingsDisclaimer: - return gfx::VectorIcon::EmptyIcon(); + return GetEmptyIcon(); case IphType::kHistoryScopePromo: return vector_icons::kHistoryChromeRefreshIcon; case IphType::kHistoryEmbeddingsScopePromo: @@ -599,7 +610,7 @@ case Type::SEARCH_SUGGEST_TAIL: case Type::HISTORY_EMBEDDINGS_ANSWER: - return gfx::VectorIcon::EmptyIcon(); + return GetEmptyIcon(); case Type::DOCUMENT_SUGGESTION: switch (document_type) {
diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omnibox/browser/autocomplete_result.cc index b995848..293fb49 100644 --- a/components/omnibox/browser/autocomplete_result.cc +++ b/components/omnibox/browser/autocomplete_result.cc
@@ -89,11 +89,16 @@ } // namespace // static -size_t AutocompleteResult::GetMaxMatches(bool is_zero_suggest) { +size_t AutocompleteResult::GetMaxMatches( + bool is_zero_suggest, + AutocompleteInput::FeaturedKeywordMode featured_keyword_mode) { constexpr size_t kDefaultMaxAutocompleteMatches = is_android ? 10 : (is_ios ? 10 : 8); constexpr size_t kDefaultMaxZeroSuggestMatches = is_android ? 15 : (is_ios ? 20 : 8); +#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) + constexpr size_t kMaxFeaturedKeywordAutocompleteMatches = 9; +#endif #if BUILDFLAG(IS_IOS) // By default, iPad has the same max as iPhone. // `kDefaultMaxAutocompleteMatches` defines a hard limit on the number of @@ -106,16 +111,38 @@ // and 10 on iPad. size_t kMaxZeroSuggestMatchesOnIPad = OmniboxFieldTrial::kIpadZPSLimit.Get(); #endif - static_assert(kMaxAutocompletePositionValue > kDefaultMaxAutocompleteMatches, - "kMaxAutocompletePositionValue must be larger than the largest " - "possible autocomplete result size."); - static_assert(kMaxAutocompletePositionValue > kDefaultMaxZeroSuggestMatches, - "kMaxAutocompletePositionValue must be larger than the largest " - "possible zero suggest autocomplete result size."); - static_assert(kDefaultMaxAutocompleteMatches != 0, - "Default number of suggestions must be non-zero"); - static_assert(kDefaultMaxZeroSuggestMatches != 0, - "Default number of zero-prefix suggestions must be non-zero"); + + // Verify possible return values are between (0, + // `kMaxAutocompletePositionValue`). + static_assert( + kDefaultMaxAutocompleteMatches > 0 && + kDefaultMaxAutocompleteMatches < kMaxAutocompletePositionValue, + "Bad kDefaultMaxAutocompleteMatches."); + static_assert( + kDefaultMaxZeroSuggestMatches > 0 && + kDefaultMaxZeroSuggestMatches < kMaxAutocompletePositionValue, + "Bad kDefaultMaxZeroSuggestMatches."); +#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) + static_assert(kMaxFeaturedKeywordAutocompleteMatches > 0 && + kMaxFeaturedKeywordAutocompleteMatches < + kMaxAutocompletePositionValue, + "Bad kMaxFeaturedKeywordAutocompleteMatches."); +#endif +#if BUILDFLAG(IS_IOS) + static_assert( + kMaxAutocompleteMatchesOnIPad > 0 && + kMaxAutocompleteMatchesOnIPad < kMaxAutocompletePositionValue, + "Bad kMaxAutocompleteMatchesOnIPad."); + CHECK(kMaxZeroSuggestMatchesOnIPad > 0 && + kMaxZeroSuggestMatchesOnIPad < kMaxAutocompletePositionValue) + << "Bad kMaxZeroSuggestMatchesOnIPad."; +#endif + +// When the user types '@', show 9, instead of the usual 8, matches on desktop. +#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) + if (featured_keyword_mode == AutocompleteInput::FeaturedKeywordMode::kExact) + return kMaxFeaturedKeywordAutocompleteMatches; +#endif // If we're interested in the zero suggest match limit, and one has been // specified, return it. @@ -162,10 +189,7 @@ } AutocompleteResult::AutocompleteResult() { - // Reserve enough space for the maximum number of matches we'll show in either - // on-focus or prefix-suggest mode. - matches_.reserve(std::max(GetMaxMatches(), GetMaxMatches(true))); - // Add default static suggestion groups. + matches_.reserve(kMaxAutocompletePositionValue); } AutocompleteResult::~AutocompleteResult() { @@ -548,7 +572,9 @@ // Limit URL matches per OmniboxMaxURLMatches. size_t max_url_count = 0; - if (OmniboxFieldTrial::IsMaxURLMatchesFeatureEnabled() && + if (input.GetFeaturedKeywordMode() != + AutocompleteInput::FeaturedKeywordMode::kExact && + OmniboxFieldTrial::IsMaxURLMatchesFeatureEnabled() && (max_url_count = OmniboxFieldTrial::GetMaxURLMatches()) != 0) { LimitNumberOfURLsShown(GetMaxMatches(is_zero_suggest), max_url_count, comparing_object); @@ -558,7 +584,8 @@ // and feature configs such as OmniboxUIExperimentMaxAutocompleteMatches, // OmniboxMaxZeroSuggestMatches, and OmniboxDynamicMaxAutocomplete. const size_t num_matches = - CalculateNumMatches(is_zero_suggest, matches_, comparing_object); + CalculateNumMatches(is_zero_suggest, input.GetFeaturedKeywordMode(), + matches_, comparing_object); // Group and trim suggestions to the given limit. if (!is_zero_suggest) { @@ -1054,15 +1081,20 @@ // static size_t AutocompleteResult::CalculateNumMatches( bool is_zero_suggest, + AutocompleteInput::FeaturedKeywordMode featured_keyword_mode, const ACMatches& matches, const CompareWithDemoteByType<AutocompleteMatch>& comparing_object) { // Use alternative CalculateNumMatchesPerUrlCount if applicable. if (!is_zero_suggest && - base::FeatureList::IsEnabled(omnibox::kDynamicMaxAutocomplete)) + featured_keyword_mode != AutocompleteInput::FeaturedKeywordMode::kExact && + base::FeatureList::IsEnabled(omnibox::kDynamicMaxAutocomplete)) { return CalculateNumMatchesPerUrlCount(matches, comparing_object); + } + // In the process of trimming, drop all matches with a demoted relevance // score of 0. - size_t max_matches_by_policy = GetMaxMatches(is_zero_suggest); + size_t max_matches_by_policy = + GetMaxMatches(is_zero_suggest, featured_keyword_mode); size_t num_matches = 0; while (num_matches < matches.size() && comparing_object.GetDemotedRelevance(matches[num_matches]) > 0) {
diff --git a/components/omnibox/browser/autocomplete_result.h b/components/omnibox/browser/autocomplete_result.h index fb78459..ae423ac8 100644 --- a/components/omnibox/browser/autocomplete_result.h +++ b/components/omnibox/browser/autocomplete_result.h
@@ -48,7 +48,10 @@ // may be different for zero suggest and non zero suggest. Does not take into // account the boost conditionally provided by the // omnibox::kDynamicMaxAutocomplete feature. - static size_t GetMaxMatches(bool is_zero_suggest = false); + static size_t GetMaxMatches( + bool is_zero_suggest = false, + AutocompleteInput::FeaturedKeywordMode featured_keyword_mode = + AutocompleteInput::FeaturedKeywordMode::kFalse); // Defaults to GetMaxMatches if omnibox::kDynamicMaxAutocomplete is disabled; // otherwise returns the boosted dynamic limit. static size_t GetDynamicMaxMatches(); @@ -221,6 +224,7 @@ // and relevancies. static size_t CalculateNumMatches( bool is_zero_suggest, + AutocompleteInput::FeaturedKeywordMode featured_keyword_mode, const ACMatches& matches, const CompareWithDemoteByType<AutocompleteMatch>& comparing_object); // Determines how many matches to keep depending on how many URLs would be
diff --git a/components/omnibox/browser/autocomplete_result_unittest.cc b/components/omnibox/browser/autocomplete_result_unittest.cc index 938af29..2ddc945 100644 --- a/components/omnibox/browser/autocomplete_result_unittest.cc +++ b/components/omnibox/browser/autocomplete_result_unittest.cc
@@ -2319,7 +2319,8 @@ matches.push_back(m); } const size_t num_matches = AutocompleteResult::CalculateNumMatches( - false, matches, comparison_object); + false, AutocompleteInput::FeaturedKeywordMode::kFalse, matches, + comparison_object); EXPECT_EQ(num_matches, expected_num_matches); };
diff --git a/components/omnibox/browser/featured_search_provider.cc b/components/omnibox/browser/featured_search_provider.cc index f351dd2c..dc42dcb 100644 --- a/components/omnibox/browser/featured_search_provider.cc +++ b/components/omnibox/browser/featured_search_provider.cc
@@ -44,6 +44,10 @@ namespace { +// Max number of featured enterprise suggestions to show when the user types '@' +// or '@...'. +constexpr int kMaxEnterpriseSuggestions = 4; + std::string GetIphDismissedPrefNameFor(IphType iph_type) { switch (iph_type) { case IphType::kNone: @@ -182,6 +186,7 @@ void FeaturedSearchProvider::AddFeaturedKeywordMatches( const AutocompleteInput& input) { + size_t enterprise_count = 0; if (input.GetFeaturedKeywordMode() != AutocompleteInput::FeaturedKeywordMode::kFalse) { TemplateURLService::TemplateURLVector matches; @@ -196,8 +201,10 @@ continue; } AddStarterPackMatch(*match, input); - } else if (match->featured_by_policy()) { + } else if (match->featured_by_policy() && + enterprise_count < kMaxEnterpriseSuggestions) { AddFeaturedEnterpriseSearchMatch(*match, input); + enterprise_count++; } } }
diff --git a/components/omnibox/browser/featured_search_provider_unittest.cc b/components/omnibox/browser/featured_search_provider_unittest.cc index 5781390..47d033c 100644 --- a/components/omnibox/browser/featured_search_provider_unittest.cc +++ b/components/omnibox/browser/featured_search_provider_unittest.cc
@@ -18,6 +18,7 @@ #include <vector> #include "base/format_macros.h" +#include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "base/test/scoped_feature_list.h" @@ -49,24 +50,14 @@ constexpr char16_t kTabsKeyword[] = u"@tabs"; constexpr char16_t kGeminiKeyword[] = u"@gemini"; -constexpr char16_t kFeaturedKeyword1[] = u"@featured1"; -constexpr char16_t kFeaturedKeyword2[] = u"@featured2"; -constexpr char16_t kFeaturedKeyword3[] = u"@featured3"; -constexpr char16_t kFeaturedKeyword4[] = u"@featured4"; - -const char* const kBookmarksUrl = +const std::string kBookmarksUrl = TemplateURLStarterPackData::bookmarks.destination_url; -const char* const kHistoryUrl = +const std::string kHistoryUrl = TemplateURLStarterPackData::history.destination_url; -const char* const kTabsUrl = TemplateURLStarterPackData::tabs.destination_url; -const char* const kGeminiUrl = +const std::string kTabsUrl = TemplateURLStarterPackData::tabs.destination_url; +const std::string kGeminiUrl = TemplateURLStarterPackData::Gemini.destination_url; -constexpr char kFeaturedUrl1[] = "https://featured1.com/q={searchTerms}"; -constexpr char kFeaturedUrl2[] = "https://featured2.com/q={searchTerms}"; -constexpr char kFeaturedUrl3[] = "https://featured3.com/q={searchTerms}"; -constexpr char kFeaturedUrl4[] = "https://featured4.com/q={searchTerms}"; - struct TestData { const std::u16string input; const std::vector<std::string> output; @@ -79,6 +70,14 @@ const GURL iph_link_url; }; +std::u16string FeaturedKeywordN(int n) { + return base::UTF8ToUTF16("@featured" + base::NumberToString(n)); +} + +std::string FeaturedUrlN(int n) { + return "https://featured" + base::NumberToString(n) + ".com/q={searchTerms}"; +} + } // namespace class FeaturedSearchProviderTest : public testing::Test { @@ -101,9 +100,9 @@ } void TearDown() override { provider_ = nullptr; } - void RunTest(const TestData cases[], size_t num_cases) { + void RunTest(const std::vector<TestData> cases) { ACMatches matches; - for (size_t i = 0; i < num_cases; ++i) { + for (size_t i = 0; i < cases.size(); ++i) { SCOPED_TRACE(base::StringPrintf( "case %" PRIuS ": %s", i, base::UTF16ToUTF8(cases[i].input).c_str())); AutocompleteInput input(cases[i].input, metrics::OmniboxEventProto::OTHER, @@ -182,7 +181,7 @@ }; TEST_F(FeaturedSearchProviderTest, NonAtPrefix) { - TestData test_cases[] = { + std::vector<TestData> test_cases = { // Typing text that doesn't start with "@" should give nothing. {u"g@rb@g3", {}}, {u"www.google.com", {}}, @@ -194,7 +193,7 @@ {u"chrome://version", {}}, }; - RunTest(test_cases, std::size(test_cases)); + RunTest(test_cases); } TEST_F(FeaturedSearchProviderTest, DoesNotSupportMatchesOnFocus) { @@ -220,7 +219,7 @@ AddStarterPackEntriesToTemplateUrlService(); - TestData typing_scheme_cases[] = { + std::vector<TestData> typing_scheme_cases = { // Typing the keyword without '@' or past the keyword shouldn't produce // results. {u"b", {}}, @@ -251,7 +250,7 @@ {kTabsKeyword, {kTabsUrl}}, }; - RunTest(typing_scheme_cases, std::size(typing_scheme_cases)); + RunTest(typing_scheme_cases); } TEST_F(FeaturedSearchProviderTest, StarterPackExpansion) { @@ -259,7 +258,7 @@ features.InitAndEnableFeature(omnibox::kStarterPackExpansion); AddStarterPackEntriesToTemplateUrlService(); - TestData typing_scheme_cases[] = { + std::vector<TestData> typing_scheme_cases = { // Typing the keyword without '@' or past the keyword shouldn't produce // results. {u"b", {}}, @@ -291,7 +290,7 @@ {kGeminiKeyword, {kGeminiUrl}}, }; - RunTest(typing_scheme_cases, std::size(typing_scheme_cases)); + RunTest(typing_scheme_cases); } TEST_F(FeaturedSearchProviderTest, StarterPackExpansionRelevance) { @@ -332,17 +331,24 @@ AddStarterPackEntriesToTemplateUrlService(); - AddFeaturedEnterpriseSearchEngine(kFeaturedKeyword2, kFeaturedUrl2, + AddFeaturedEnterpriseSearchEngine(FeaturedKeywordN(2), FeaturedUrlN(2), TemplateURLData::PolicyOrigin::kSiteSearch); - AddFeaturedEnterpriseSearchEngine(kFeaturedKeyword1, kFeaturedUrl1, + AddFeaturedEnterpriseSearchEngine(FeaturedKeywordN(1), FeaturedUrlN(1), TemplateURLData::PolicyOrigin::kSiteSearch); - AddFeaturedEnterpriseSearchEngine(kFeaturedKeyword3, kFeaturedUrl3, + AddFeaturedEnterpriseSearchEngine(FeaturedKeywordN(3), FeaturedUrlN(3), TemplateURLData::PolicyOrigin::kSiteSearch); AddFeaturedEnterpriseSearchEngine( - kFeaturedKeyword4, kFeaturedUrl4, + FeaturedKeywordN(4), FeaturedUrlN(4), TemplateURLData::PolicyOrigin::kSearchAggregator); + // At most 4 featured enterprise keywords should be shown. + AddFeaturedEnterpriseSearchEngine(FeaturedKeywordN(5), FeaturedUrlN(5), + TemplateURLData::PolicyOrigin::kSiteSearch); + AddFeaturedEnterpriseSearchEngine(FeaturedKeywordN(6), FeaturedUrlN(6), + TemplateURLData::PolicyOrigin::kSiteSearch); + AddFeaturedEnterpriseSearchEngine(FeaturedKeywordN(7), FeaturedUrlN(7), + TemplateURLData::PolicyOrigin::kSiteSearch); - TestData typing_scheme_cases[] = { + std::vector<TestData> typing_scheme_cases = { // Typing the keyword without '@' or past the keyword shouldn't produce // results. {u"f", {}}, @@ -357,17 +363,17 @@ // alphabetical order). Re-ordering by relevance will be made // later on. {u"@", - {kBookmarksUrl, kFeaturedUrl1, kFeaturedUrl2, kFeaturedUrl3, - kFeaturedUrl4, kGeminiUrl, kHistoryUrl, kTabsUrl}}, + {kBookmarksUrl, FeaturedUrlN(1), FeaturedUrlN(2), FeaturedUrlN(3), + FeaturedUrlN(4), kGeminiUrl, kHistoryUrl, kTabsUrl}}, // Typing a portion of "@featured" should give the featured engine // suggestions. - {std::u16string(kFeaturedKeyword1, 0, 3), - {kFeaturedUrl1, kFeaturedUrl2, kFeaturedUrl3, kFeaturedUrl4}}, - {kFeaturedKeyword1, {kFeaturedUrl1}}, + {std::u16string(FeaturedKeywordN(1), 0, 3), + {FeaturedUrlN(1), FeaturedUrlN(2), FeaturedUrlN(3), FeaturedUrlN(4)}}, + {FeaturedKeywordN(1), {FeaturedUrlN(1)}}, }; - RunTest(typing_scheme_cases, std::size(typing_scheme_cases)); + RunTest(typing_scheme_cases); } TEST_F(FeaturedSearchProviderTest, ZeroSuggestStarterPackIPHSuggestion) { @@ -396,10 +402,10 @@ // "@" state - Confirm expected starter pack is still shown but no ZPS. AddStarterPackEntriesToTemplateUrlService(); - TestData typing_scheme_cases[] = { + std::vector<TestData> typing_scheme_cases = { // Typing '@' should give all the starter pack suggestions, and no IPH. {u"@", {kBookmarksUrl, kGeminiUrl, kHistoryUrl, kTabsUrl}}}; - RunTest(typing_scheme_cases, std::size(typing_scheme_cases)); + RunTest(typing_scheme_cases); } TEST_F(FeaturedSearchProviderTest, @@ -448,14 +454,14 @@ AddStarterPackEntriesToTemplateUrlService(); - AddFeaturedEnterpriseSearchEngine(kFeaturedKeyword2, kFeaturedUrl2, + AddFeaturedEnterpriseSearchEngine(FeaturedKeywordN(2), FeaturedUrlN(2), TemplateURLData::PolicyOrigin::kSiteSearch); - AddFeaturedEnterpriseSearchEngine(kFeaturedKeyword1, kFeaturedUrl1, + AddFeaturedEnterpriseSearchEngine(FeaturedKeywordN(1), FeaturedUrlN(1), TemplateURLData::PolicyOrigin::kSiteSearch); - AddFeaturedEnterpriseSearchEngine(kFeaturedKeyword3, kFeaturedUrl3, + AddFeaturedEnterpriseSearchEngine(FeaturedKeywordN(3), FeaturedUrlN(3), TemplateURLData::PolicyOrigin::kSiteSearch); AddFeaturedEnterpriseSearchEngine( - kFeaturedKeyword4, kFeaturedUrl4, + FeaturedKeywordN(4), FeaturedUrlN(4), TemplateURLData::PolicyOrigin::kSearchAggregator); // "Focus" omnibox with zero input to put us in Zero suggest mode. @@ -477,12 +483,12 @@ EXPECT_EQ(matches.size(), 0u); // "@" state - Confirm expected starter pack is still shown but no ZPS. - TestData typing_scheme_cases[] = { + std::vector<TestData> typing_scheme_cases = { // Typing '@' should give all the starter pack suggestions, and no IPH. {u"@", - {kBookmarksUrl, kFeaturedUrl1, kFeaturedUrl2, kFeaturedUrl3, - kFeaturedUrl4, kGeminiUrl, kHistoryUrl, kTabsUrl}}}; - RunTest(typing_scheme_cases, std::size(typing_scheme_cases)); + {kBookmarksUrl, FeaturedUrlN(1), FeaturedUrlN(2), FeaturedUrlN(3), + FeaturedUrlN(4), kGeminiUrl, kHistoryUrl, kTabsUrl}}}; + RunTest(typing_scheme_cases); } TEST_F(FeaturedSearchProviderTest, @@ -499,14 +505,14 @@ AddStarterPackEntriesToTemplateUrlService(); - AddFeaturedEnterpriseSearchEngine(kFeaturedKeyword2, kFeaturedUrl2, + AddFeaturedEnterpriseSearchEngine(FeaturedKeywordN(2), FeaturedUrlN(2), TemplateURLData::PolicyOrigin::kSiteSearch); - AddFeaturedEnterpriseSearchEngine(kFeaturedKeyword1, kFeaturedUrl1, + AddFeaturedEnterpriseSearchEngine(FeaturedKeywordN(1), FeaturedUrlN(1), TemplateURLData::PolicyOrigin::kSiteSearch); - AddFeaturedEnterpriseSearchEngine(kFeaturedKeyword3, kFeaturedUrl3, + AddFeaturedEnterpriseSearchEngine(FeaturedKeywordN(3), FeaturedUrlN(3), TemplateURLData::PolicyOrigin::kSiteSearch); AddFeaturedEnterpriseSearchEngine( - kFeaturedKeyword4, kFeaturedUrl4, + FeaturedKeywordN(4), FeaturedUrlN(4), TemplateURLData::PolicyOrigin::kSearchAggregator); // "Focus" omnibox with zero input to put us in Zero suggest mode. @@ -553,14 +559,14 @@ AddStarterPackEntriesToTemplateUrlService(); - AddFeaturedEnterpriseSearchEngine(kFeaturedKeyword2, kFeaturedUrl2, + AddFeaturedEnterpriseSearchEngine(FeaturedKeywordN(2), FeaturedUrlN(2), TemplateURLData::PolicyOrigin::kSiteSearch); - AddFeaturedEnterpriseSearchEngine(kFeaturedKeyword1, kFeaturedUrl1, + AddFeaturedEnterpriseSearchEngine(FeaturedKeywordN(1), FeaturedUrlN(1), TemplateURLData::PolicyOrigin::kSiteSearch); - AddFeaturedEnterpriseSearchEngine(kFeaturedKeyword3, kFeaturedUrl3, + AddFeaturedEnterpriseSearchEngine(FeaturedKeywordN(3), FeaturedUrlN(3), TemplateURLData::PolicyOrigin::kSiteSearch); AddFeaturedEnterpriseSearchEngine( - kFeaturedKeyword4, kFeaturedUrl4, + FeaturedKeywordN(4), FeaturedUrlN(4), TemplateURLData::PolicyOrigin::kSearchAggregator); // "Focus" omnibox with zero input to put us in Zero suggest mode.
diff --git a/components/omnibox/common/omnibox_feature_configs.cc b/components/omnibox/common/omnibox_feature_configs.cc index 6b5ed1c..fe1075d 100644 --- a/components/omnibox/common/omnibox_feature_configs.cc +++ b/components/omnibox/common/omnibox_feature_configs.cc
@@ -7,6 +7,7 @@ #include "base/check.h" #include "base/feature_list.h" #include "base/metrics/field_trial_params.h" +#include "base/time/time.h" #include "build/build_config.h" #include "components/omnibox/common/omnibox_features.h" @@ -117,6 +118,17 @@ /*trigger_omnibox_blending=*/ base::FeatureParam<bool>(&kSearchAggregatorProvider, "trigger_omnibox_blending", false) + .Get(), + /*callback_delay=*/ + base::FeatureParam<base::TimeDelta>( + &kSearchAggregatorProvider, "callback_delay", base::Milliseconds(0)) + .Get(), + /*num_suggestions=*/ + base::FeatureParam<int>(&kSearchAggregatorProvider, "num_suggestions", 0) + .Get(), + /*response_type=*/ + base::FeatureParam<std::string>(&kSearchAggregatorProvider, + "response_type", "success") .Get()); } @@ -145,7 +157,10 @@ const std::string& search_url, const std::string& suggest_url, const std::string& icon_url, - bool trigger_omnibox_blending) { + bool trigger_omnibox_blending, + base::TimeDelta callback_delay, + int num_suggestions, + const std::string& response_type) { enabled_ = enabled; if (!enabled_) { return; @@ -157,6 +172,9 @@ suggest_url_ = suggest_url; icon_url_ = icon_url; trigger_omnibox_blending_ = trigger_omnibox_blending; + callback_delay_ = callback_delay; + num_suggestions_ = num_suggestions; + response_type_ = response_type; // Perform some soft validation to prevent crashes downstream. valid_search_engine_ = @@ -178,7 +196,10 @@ /*search_url=*/"", /*suggest_url=*/"", /*icon_url=*/"", - /*trigger_omnibox_blending=*/trigger_omnibox_blending); + /*trigger_omnibox_blending=*/trigger_omnibox_blending, + /*callback_delay=*/base::Milliseconds(0), + /*num_suggestions=*/0, + /*response_type=*/"success"); } base::Value::Dict SearchAggregatorProvider::CreateMockSearchAggregator(
diff --git a/components/omnibox/common/omnibox_feature_configs.h b/components/omnibox/common/omnibox_feature_configs.h index 4816a66..014cd03b 100644 --- a/components/omnibox/common/omnibox_feature_configs.h +++ b/components/omnibox/common/omnibox_feature_configs.h
@@ -193,7 +193,10 @@ const std::string& search_url, const std::string& suggest_url, const std::string& icon_url, - bool trigger_omnibox_blending); + bool trigger_omnibox_blending, + base::TimeDelta callback_delay, + int num_suggestions, + const std::string& response_type); // Same as `Init(,,,,,,)` setting all string arguments as empty. void Init(bool enabled, bool trigger_omnibox_blending); @@ -218,6 +221,16 @@ // If enabled, Chrome will blend search suggestions with other Omnibox // suggestions without requiring keyword mode. bool trigger_omnibox_blending_ = false; + // The amount of time to wait before calling the callback function after + // making a request to get enterprise suggestions. + base::TimeDelta callback_delay_; + // The number of suggestions to show users. + int num_suggestions_; + // Type of request response. Can be one of the following strings. + // "success" - Successful response. + // "success_no_suggestions" - Successful response but empty suggestions field. + // "backoff" - No response was sent or response took too long. + std::string response_type_; }; // If enabled, uses RichAnswerTemplate instead of SuggestionAnswer to display
diff --git a/components/permissions/permissions_client.cc b/components/permissions/permissions_client.cc index 01f2b68..3676a19 100644 --- a/components/permissions/permissions_client.cc +++ b/components/permissions/permissions_client.cc
@@ -11,7 +11,7 @@ #include "content/public/browser/web_contents.h" #if !BUILDFLAG(IS_ANDROID) -#include "ui/gfx/vector_icon_types.h" +#include "ui/gfx/paint_vector_icon.h" #endif namespace permissions { @@ -65,7 +65,7 @@ #if BUILDFLAG(IS_ANDROID) return 0; #else - return gfx::VectorIcon::EmptyIcon(); + return gfx::kNoneIcon; #endif }
diff --git a/components/permissions/request_type.cc b/components/permissions/request_type.cc index 314dbfc..1b7d23b6 100644 --- a/components/permissions/request_type.cc +++ b/components/permissions/request_type.cc
@@ -20,6 +20,7 @@ #else #include "components/permissions/vector_icons/vector_icons.h" #include "components/vector_icons/vector_icons.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/gfx/vector_icon_types.h" #endif // BUILDFLAG(IS_ANDROID) @@ -166,14 +167,14 @@ return vector_icons::kStorageAccessOffIcon; case RequestType::kIdentityProvider: // TODO(crbug.com/40252825): use a dedicated icon - return gfx::VectorIcon::EmptyIcon(); + return gfx::kNoneIcon; case RequestType::kKeyboardLock: return vector_icons::kKeyboardLockOffIcon; case RequestType::kPointerLock: return vector_icons::kPointerLockOffIcon; case RequestType::kWebAppInstallation: // TODO(crbug.com/333795265): provide a dedicated icon. - return gfx::VectorIcon::EmptyIcon(); + return gfx::kNoneIcon; default: NOTREACHED(); }
diff --git a/components/policy/resources/templates/policy_definitions/Arc/ArcPolicy.yaml b/components/policy/resources/templates/policy_definitions/Arc/ArcPolicy.yaml index 6ca764c..d9e7f23 100644 --- a/components/policy/resources/templates/policy_definitions/Arc/ArcPolicy.yaml +++ b/components/policy/resources/templates/policy_definitions/Arc/ArcPolicy.yaml
@@ -50,7 +50,7 @@ per_profile: false owners: - arc-commercial@google.com -- mhasank@chromium.org +- yaohuali@google.com schema: type: string supported_on:
diff --git a/components/policy/resources/templates/policy_definitions/Arc/UnaffiliatedArcAllowed.yaml b/components/policy/resources/templates/policy_definitions/Arc/UnaffiliatedArcAllowed.yaml index c2e0730..2a235456 100644 --- a/components/policy/resources/templates/policy_definitions/Arc/UnaffiliatedArcAllowed.yaml +++ b/components/policy/resources/templates/policy_definitions/Arc/UnaffiliatedArcAllowed.yaml
@@ -15,7 +15,7 @@ value: false owners: - arc-commercial@google.com -- mhasank@chromium.org +- yaohuali@google.com schema: type: boolean supported_on:
diff --git a/components/policy/resources/templates/policy_definitions/Miscellaneous/ArcVmDataMigrationStrategy.yaml b/components/policy/resources/templates/policy_definitions/Miscellaneous/ArcVmDataMigrationStrategy.yaml index 138e74f..463d0aa 100644 --- a/components/policy/resources/templates/policy_definitions/Miscellaneous/ArcVmDataMigrationStrategy.yaml +++ b/components/policy/resources/templates/policy_definitions/Miscellaneous/ArcVmDataMigrationStrategy.yaml
@@ -24,7 +24,6 @@ value: 1 owners: - youkichihosoi@chromium.org -- mhasank@chromium.org - arc-commercial@google.com schema: enum:
diff --git a/components/saved_tab_groups/internal/saved_tab_group_model_unittest.cc b/components/saved_tab_groups/internal/saved_tab_group_model_unittest.cc index 4914c64..0d3a57b 100644 --- a/components/saved_tab_groups/internal/saved_tab_group_model_unittest.cc +++ b/components/saved_tab_groups/internal/saved_tab_group_model_unittest.cc
@@ -48,22 +48,12 @@ } // Serves to test the functions in SavedTabGroupModelObserver. -class SavedTabGroupModelObserverTest - : public ::testing::Test, - public SavedTabGroupModelObserver, - public ::testing::WithParamInterface<bool> { +class SavedTabGroupModelObserverTest : public ::testing::Test, + public SavedTabGroupModelObserver { protected: - SavedTabGroupModelObserverTest() { - if (IsV2UIEnabled()) { - feature_list_.InitWithFeatures({tab_groups::kTabGroupsSaveUIUpdate}, {}); - } else { - feature_list_.InitWithFeatures({}, {tab_groups::kTabGroupsSaveUIUpdate}); - } - } + SavedTabGroupModelObserverTest() = default; ~SavedTabGroupModelObserverTest() override = default; - bool IsV2UIEnabled() const { return GetParam(); } - void SetUp() override { saved_tab_group_model_ = std::make_unique<SavedTabGroupModel>(); saved_tab_group_model_->AddObserver(this); @@ -138,24 +128,16 @@ }; // Serves to test the functions in SavedTabGroupModel. -class SavedTabGroupModelTest : public ::testing::Test, - public ::testing::WithParamInterface<bool> { +class SavedTabGroupModelTest : public ::testing::Test { protected: SavedTabGroupModelTest() : id_1_(base::Uuid::GenerateRandomV4()), id_2_(base::Uuid::GenerateRandomV4()), id_3_(base::Uuid::GenerateRandomV4()) { - if (IsV2UIEnabled()) { - feature_list_.InitWithFeatures({tab_groups::kTabGroupsSaveUIUpdate}, {}); - } else { - feature_list_.InitWithFeatures({}, {tab_groups::kTabGroupsSaveUIUpdate}); - } } ~SavedTabGroupModelTest() override { RemoveTestData(); } - bool IsV2UIEnabled() const { return GetParam(); } - void SetUp() override { saved_tab_group_model_ = std::make_unique<SavedTabGroupModel>(); AddTestData(); @@ -230,14 +212,14 @@ }; // Tests that SavedTabGroupModel::Count holds 3 elements initially. -TEST_P(SavedTabGroupModelTest, InitialCountThree) { +TEST_F(SavedTabGroupModelTest, InitialCountThree) { EXPECT_EQ(saved_tab_group_model_->Count(), 3); EXPECT_EQ(saved_tab_group_model_->saved_tab_groups().size(), 3u); } // Tests that SavedTabGroupModel::Contains returns the 3, the number of starting // ids added to the model. -TEST_P(SavedTabGroupModelTest, InitialGroupsAreSaved) { +TEST_F(SavedTabGroupModelTest, InitialGroupsAreSaved) { EXPECT_TRUE(saved_tab_group_model_->Contains(id_1_)); EXPECT_TRUE(saved_tab_group_model_->Contains(id_2_)); EXPECT_TRUE(saved_tab_group_model_->Contains(id_3_)); @@ -247,21 +229,15 @@ // Tests that the SavedTabGroupModel::GetIndexOf preserves the order the // SavedTabGroups were inserted into. -TEST_P(SavedTabGroupModelTest, InitialOrderAdded) { - if (IsV2UIEnabled()) { - EXPECT_EQ(saved_tab_group_model_->GetIndexOf(id_1_), 2); - EXPECT_EQ(saved_tab_group_model_->GetIndexOf(id_2_), 1); - EXPECT_EQ(saved_tab_group_model_->GetIndexOf(id_3_), 0); - } else { - EXPECT_EQ(saved_tab_group_model_->GetIndexOf(id_1_), 0); - EXPECT_EQ(saved_tab_group_model_->GetIndexOf(id_2_), 1); - EXPECT_EQ(saved_tab_group_model_->GetIndexOf(id_3_), 2); - } +TEST_F(SavedTabGroupModelTest, InitialOrderAdded) { + EXPECT_EQ(saved_tab_group_model_->GetIndexOf(id_1_), 2); + EXPECT_EQ(saved_tab_group_model_->GetIndexOf(id_2_), 1); + EXPECT_EQ(saved_tab_group_model_->GetIndexOf(id_3_), 0); } // Tests that the SavedTabGroupModel::IsEmpty has elements and once all elements // are removed is empty. -TEST_P(SavedTabGroupModelTest, ContainsNoElementsOnRemoval) { +TEST_F(SavedTabGroupModelTest, ContainsNoElementsOnRemoval) { EXPECT_FALSE(saved_tab_group_model_->IsEmpty()); RemoveTestData(); EXPECT_TRUE(saved_tab_group_model_->IsEmpty()); @@ -269,7 +245,7 @@ // Tests that the SavedTabGroupModel::Remove removes the correct element given // an id. -TEST_P(SavedTabGroupModelTest, RemovesCorrectElements) { +TEST_F(SavedTabGroupModelTest, RemovesCorrectElements) { saved_tab_group_model_->RemovedLocally(id_3_); EXPECT_FALSE(saved_tab_group_model_->Contains(id_3_)); EXPECT_TRUE(saved_tab_group_model_->Contains(id_2_)); @@ -277,14 +253,14 @@ } // Tests that the SavedTabGroupModel only adds unique TabGroupIds. -TEST_P(SavedTabGroupModelTest, OnlyAddUniqueElements) { +TEST_F(SavedTabGroupModelTest, OnlyAddUniqueElements) { EXPECT_EQ(saved_tab_group_model_->Count(), 3); EXPECT_CHECK_DEATH(AddTestData()); } // Tests that SavedTabGroupModel::Add adds an extra element into the model and // keeps the data. -TEST_P(SavedTabGroupModelTest, AddNewElement) { +TEST_F(SavedTabGroupModelTest, AddNewElement) { base::Uuid id_4 = base::Uuid::GenerateRandomV4(); const std::u16string title_4 = u"Test Test"; const tab_groups::TabGroupColorId& color_4 = @@ -300,7 +276,7 @@ saved_tab_group_model_->AddedLocally(group_4); EXPECT_TRUE(saved_tab_group_model_->Contains(id_4)); - EXPECT_EQ(saved_tab_group_model_->GetIndexOf(id_4), IsV2UIEnabled() ? 0 : 3); + EXPECT_EQ(saved_tab_group_model_->GetIndexOf(id_4), true ? 0 : 3); EXPECT_EQ(saved_tab_group_model_->Count(), 4); const SavedTabGroup* saved_group = saved_tab_group_model_->Get(id_4); @@ -312,7 +288,7 @@ // Tests that SavedTabGroupModel::Update updates the correct element if the // title or color are different. -TEST_P(SavedTabGroupModelTest, UpdateElement) { +TEST_F(SavedTabGroupModelTest, UpdateElement) { const SavedTabGroup* group = saved_tab_group_model_->Get(id_1_); const std::u16string original_title = group->title(); const tab_groups::TabGroupColorId& original_color = group->color(); @@ -362,7 +338,7 @@ } // Tests that the correct tabs are added to the correct position in group 1. -TEST_P(SavedTabGroupModelTest, AddTabToGroup) { +TEST_F(SavedTabGroupModelTest, AddTabToGroup) { SavedTabGroupTab tab1 = test::CreateSavedTabGroupTab( "4th group", u"First Tab 4th Group", id_1_, /*position=*/0); SavedTabGroupTab tab2 = test::CreateSavedTabGroupTab( @@ -391,7 +367,7 @@ } // Tests that the correct tabs are removed from the correct position in group 1. -TEST_P(SavedTabGroupModelTest, RemoveTabFromGroup) { +TEST_F(SavedTabGroupModelTest, RemoveTabFromGroup) { SavedTabGroupTab tab1 = test::CreateSavedTabGroupTab( "4th group", u"First Tab 4th Group", id_1_, /*position=*/0); SavedTabGroupTab tab2 = test::CreateSavedTabGroupTab( @@ -418,7 +394,7 @@ // Tests that a group is removed from the model when the last tab is removed // from it. -TEST_P(SavedTabGroupModelTest, RemoveLastTabFromGroup) { +TEST_F(SavedTabGroupModelTest, RemoveLastTabFromGroup) { const SavedTabGroup* group = saved_tab_group_model_->Get(id_1_); ASSERT_EQ(group->saved_tabs().size(), size_t(1)); @@ -429,7 +405,7 @@ } // Tests updating a tab in a saved group. -TEST_P(SavedTabGroupModelTest, UpdateTabInGroup) { +TEST_F(SavedTabGroupModelTest, UpdateTabInGroup) { const SavedTabGroup* group = saved_tab_group_model_->Get(id_1_); ASSERT_EQ(group->saved_tabs().size(), size_t(1)); @@ -444,7 +420,7 @@ } // Tests that the correct tabs are moved in group 1. -TEST_P(SavedTabGroupModelTest, MoveTabInGroup) { +TEST_F(SavedTabGroupModelTest, MoveTabInGroup) { SavedTabGroupTab tab1 = test::CreateSavedTabGroupTab( "4th group", u"First Tab 4th Group", id_1_, /*position=*/0); SavedTabGroupTab tab2 = test::CreateSavedTabGroupTab( @@ -468,43 +444,25 @@ {group->saved_tabs()[0], tab1, tab2}); } -TEST_P(SavedTabGroupModelTest, MoveElement) { - if (IsV2UIEnabled()) { - ASSERT_EQ(0, saved_tab_group_model_->GetIndexOf(id_3_)); - ASSERT_EQ(1, saved_tab_group_model_->GetIndexOf(id_2_)); - ASSERT_EQ(2, saved_tab_group_model_->GetIndexOf(id_1_)); - saved_tab_group_model_->ReorderGroupLocally(id_2_, 2); - EXPECT_EQ(0, saved_tab_group_model_->GetIndexOf(id_3_)); - EXPECT_EQ(1, saved_tab_group_model_->GetIndexOf(id_1_)); - EXPECT_EQ(2, saved_tab_group_model_->GetIndexOf(id_2_)); - saved_tab_group_model_->ReorderGroupLocally(id_2_, 0); - EXPECT_EQ(0, saved_tab_group_model_->GetIndexOf(id_2_)); - EXPECT_EQ(1, saved_tab_group_model_->GetIndexOf(id_3_)); - EXPECT_EQ(2, saved_tab_group_model_->GetIndexOf(id_1_)); - saved_tab_group_model_->ReorderGroupLocally(id_2_, 1); - EXPECT_EQ(0, saved_tab_group_model_->GetIndexOf(id_3_)); - EXPECT_EQ(1, saved_tab_group_model_->GetIndexOf(id_2_)); - EXPECT_EQ(2, saved_tab_group_model_->GetIndexOf(id_1_)); - } else { - ASSERT_EQ(0, saved_tab_group_model_->GetIndexOf(id_1_)); - ASSERT_EQ(1, saved_tab_group_model_->GetIndexOf(id_2_)); - ASSERT_EQ(2, saved_tab_group_model_->GetIndexOf(id_3_)); - saved_tab_group_model_->ReorderGroupLocally(id_2_, 2); - EXPECT_EQ(0, saved_tab_group_model_->GetIndexOf(id_1_)); - EXPECT_EQ(1, saved_tab_group_model_->GetIndexOf(id_3_)); - EXPECT_EQ(2, saved_tab_group_model_->GetIndexOf(id_2_)); - saved_tab_group_model_->ReorderGroupLocally(id_2_, 0); - EXPECT_EQ(0, saved_tab_group_model_->GetIndexOf(id_2_)); - EXPECT_EQ(1, saved_tab_group_model_->GetIndexOf(id_1_)); - EXPECT_EQ(2, saved_tab_group_model_->GetIndexOf(id_3_)); - saved_tab_group_model_->ReorderGroupLocally(id_2_, 1); - EXPECT_EQ(0, saved_tab_group_model_->GetIndexOf(id_1_)); - EXPECT_EQ(1, saved_tab_group_model_->GetIndexOf(id_2_)); - EXPECT_EQ(2, saved_tab_group_model_->GetIndexOf(id_3_)); - } +TEST_F(SavedTabGroupModelTest, MoveElement) { + ASSERT_EQ(0, saved_tab_group_model_->GetIndexOf(id_3_)); + ASSERT_EQ(1, saved_tab_group_model_->GetIndexOf(id_2_)); + ASSERT_EQ(2, saved_tab_group_model_->GetIndexOf(id_1_)); + saved_tab_group_model_->ReorderGroupLocally(id_2_, 2); + EXPECT_EQ(0, saved_tab_group_model_->GetIndexOf(id_3_)); + EXPECT_EQ(1, saved_tab_group_model_->GetIndexOf(id_1_)); + EXPECT_EQ(2, saved_tab_group_model_->GetIndexOf(id_2_)); + saved_tab_group_model_->ReorderGroupLocally(id_2_, 0); + EXPECT_EQ(0, saved_tab_group_model_->GetIndexOf(id_2_)); + EXPECT_EQ(1, saved_tab_group_model_->GetIndexOf(id_3_)); + EXPECT_EQ(2, saved_tab_group_model_->GetIndexOf(id_1_)); + saved_tab_group_model_->ReorderGroupLocally(id_2_, 1); + EXPECT_EQ(0, saved_tab_group_model_->GetIndexOf(id_3_)); + EXPECT_EQ(1, saved_tab_group_model_->GetIndexOf(id_2_)); + EXPECT_EQ(2, saved_tab_group_model_->GetIndexOf(id_1_)); } -TEST_P(SavedTabGroupModelTest, ShouldDistinguishSavedAndSharedGroups) { +TEST_F(SavedTabGroupModelTest, ShouldDistinguishSavedAndSharedGroups) { SavedTabGroup shared_group = saved_tab_group_model_->Get(id_1_)->CloneAsSharedTabGroup( CollaborationId("collaboration")); @@ -525,7 +483,7 @@ UnorderedElementsAre(Pointee(HasGroupId(shared_group.saved_guid())))); } -TEST_P(SavedTabGroupModelTest, LoadStoredEntriesPopulatesModel) { +TEST_F(SavedTabGroupModelTest, LoadStoredEntriesPopulatesModel) { std::unique_ptr<SavedTabGroup> group = std::make_unique<SavedTabGroup>(*saved_tab_group_model_->Get(id_3_)); @@ -535,7 +493,7 @@ saved_tab_group_model_->LoadStoredEntries({*group}, group->saved_tabs()); EXPECT_TRUE(saved_tab_group_model_->Contains(id_3_)); - EXPECT_EQ(saved_tab_group_model_->GetIndexOf(id_3_), IsV2UIEnabled() ? 0 : 2); + EXPECT_EQ(saved_tab_group_model_->GetIndexOf(id_3_), true ? 0 : 2); EXPECT_EQ(saved_tab_group_model_->Count(), 3); const SavedTabGroup* saved_group = saved_tab_group_model_->Get(id_3_); @@ -550,7 +508,7 @@ // Tests that merging a group with the same group_id changes the state of the // object correctly. -TEST_P(SavedTabGroupModelTest, MergeGroupsFromModel) { +TEST_F(SavedTabGroupModelTest, MergeGroupsFromModel) { const SavedTabGroup* group1 = saved_tab_group_model_->Get(id_1_); SavedTabGroup group2(*group1); @@ -573,7 +531,7 @@ merged_group->update_time_windows_epoch_micros()); } -TEST_P(SavedTabGroupModelTest, MergePinnedGroupRetainPosition) { +TEST_F(SavedTabGroupModelTest, MergePinnedGroupRetainPosition) { auto guid1 = base::Uuid::GenerateRandomV4(); auto guid2 = base::Uuid::GenerateRandomV4(); @@ -588,13 +546,8 @@ EXPECT_EQ(0, group2->position()); // Verify group 2 should be the 1st one in the list. - if (IsV2UIEnabled()) { ASSERT_THAT(GetSavedTabGroupIds(), testing::ElementsAre(guid2, guid1, id_3_, id_2_, id_1_)); - } else { - ASSERT_THAT(GetSavedTabGroupIds(), - testing::ElementsAre(guid2, guid1, id_1_, id_2_, id_3_)); - } // Change group 2 position from 0 to 1. SavedTabGroup updated_group2(*group2); @@ -614,60 +567,11 @@ EXPECT_EQ(1, merged_group->position()); // Verify group 2 should be the 2nd one in the list. - if (IsV2UIEnabled()) { ASSERT_THAT(GetSavedTabGroupIds(), testing::ElementsAre(guid1, guid2, id_3_, id_2_, id_1_)); - } else { - ASSERT_THAT(GetSavedTabGroupIds(), - testing::ElementsAre(guid1, guid2, id_1_, id_2_, id_3_)); - } } -TEST_P(SavedTabGroupModelTest, MergeUnpinnedGroupRetainUnpinned) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - - auto guid1 = base::Uuid::GenerateRandomV4(); - auto guid2 = base::Uuid::GenerateRandomV4(); - - // Add group 1 at position 0. - saved_tab_group_model_->AddedLocally(SavedTabGroup( - u"Title 1", tab_groups::TabGroupColorId::kPink, {}, 0, guid1)); - - // Add group 2 at position 0. - saved_tab_group_model_->AddedLocally(SavedTabGroup( - u"Title", tab_groups::TabGroupColorId::kPink, {}, 0, guid2)); - const SavedTabGroup* group2 = saved_tab_group_model_->Get(guid2); - EXPECT_EQ(0, group2->position()); - - // Verify group 2 should be the 1st one in the list. - ASSERT_THAT(GetSavedTabGroupIds(), - testing::ElementsAre(guid2, guid1, id_3_, id_2_, id_1_)); - - // Unpin group 2. - SavedTabGroup updated_group2(*group2); - EXPECT_EQ(0, updated_group2.position()); - updated_group2.SetPinned(false); - EXPECT_EQ(std::nullopt, updated_group2.position()); - - // Merge the updated group 2 and verify it's unpinned. - const SavedTabGroup* merged_group = - saved_tab_group_model_->MergeRemoteGroupMetadata( - updated_group2.saved_guid(), updated_group2.title(), - updated_group2.color(), updated_group2.position(), - updated_group2.creator_cache_guid(), - updated_group2.last_updater_cache_guid(), - updated_group2.update_time_windows_epoch_micros(), - /*updated_by=*/GaiaId()); - EXPECT_EQ(std::nullopt, merged_group->position()); - - // Verify group 2 should place behind group 1. - ASSERT_THAT(GetSavedTabGroupIds(), - testing::ElementsAre(guid1, guid2, id_3_, id_2_, id_1_)); -} - -TEST_P(SavedTabGroupModelTest, MergeSharedTabGroupAttribution) { +TEST_F(SavedTabGroupModelTest, MergeSharedTabGroupAttribution) { const GaiaId kCreator("123"); const GaiaId kUpdater("456"); @@ -695,7 +599,7 @@ // Tests that merging a tab with the same tab_id changes the state of the object // correctly. -TEST_P(SavedTabGroupModelTest, MergeTabsFromModel) { +TEST_F(SavedTabGroupModelTest, MergeTabsFromModel) { SavedTabGroupTab tab1 = saved_tab_group_model_->Get(id_1_)->saved_tabs()[0]; SavedTabGroupTab tab2(tab1); tab2.SetTitle(u"Updated Title"); @@ -715,7 +619,7 @@ // Tests that groups inserted in the model are in order stay inserted in sorted // order. -TEST_P(SavedTabGroupModelTest, GroupsSortedWithInOrderPositions) { +TEST_F(SavedTabGroupModelTest, GroupsSortedWithInOrderPositions) { RemoveTestData(); // Create an arbitrary number of groups, with the positions the groups should @@ -751,7 +655,7 @@ // Tests that groups inserted in the model out of order are still inserted in // sorted order. -TEST_P(SavedTabGroupModelTest, GroupsSortedWithOutOfOrderPositions) { +TEST_F(SavedTabGroupModelTest, GroupsSortedWithOutOfOrderPositions) { RemoveTestData(); // Create an arbitrary number of groups, with the positions the groups should @@ -787,7 +691,7 @@ // Tests that groups inserted in the model with gaps between the positions are // still inserted in sorted order. -TEST_P(SavedTabGroupModelTest, GroupsSortedWithGapsInPositions) { +TEST_F(SavedTabGroupModelTest, GroupsSortedWithGapsInPositions) { RemoveTestData(); // Create an arbitrary number of groups, with the positions the groups should @@ -824,7 +728,7 @@ // Tests that groups inserted in the model with gaps and in decreasing order // between the positions are still inserted in increasing sorted order. -TEST_P(SavedTabGroupModelTest, GroupsSortedWithDecreasingPositions) { +TEST_F(SavedTabGroupModelTest, GroupsSortedWithDecreasingPositions) { RemoveTestData(); // Create an arbitrary number of groups, with the positions the groups should @@ -861,7 +765,7 @@ // Tests that groups inserted in the model with a more recent update time take // precedence over groups with the same position. -TEST_P(SavedTabGroupModelTest, GroupWithSamePositionSortedByUpdateTime) { +TEST_F(SavedTabGroupModelTest, GroupWithSamePositionSortedByUpdateTime) { RemoveTestData(); // Create an arbitrary number of groups, with the positions the groups should @@ -887,7 +791,7 @@ // Tests that groups inserted in the model with no position are inserted at the // back of the model and have their position set to the last index at the time // they were inserted. -TEST_P(SavedTabGroupModelTest, GroupsWithNoPositionInsertedAtEnd) { +TEST_F(SavedTabGroupModelTest, GroupsWithNoPositionInsertedAtEnd) { RemoveTestData(); // Create an arbitrary number of groups, with the positions the groups should @@ -914,10 +818,6 @@ saved_tab_group_model_->AddedLocally(group_5); saved_tab_group_model_->AddedLocally(group_6); - if (!IsV2UIEnabled()) { - groups[5].SetPosition(5); - } - EXPECT_EQ(saved_tab_group_model_->saved_tab_groups().size(), groups.size()); // Expect the 6th group to have a position of 5 (0-based indexing). @@ -933,134 +833,9 @@ } } -// Expect the pinned group is added to the front of the list. -TEST_P(SavedTabGroupModelTest, AddPinnedGroup) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - - EXPECT_EQ(3u, saved_tab_group_model_->saved_tab_groups().size()); - SavedTabGroup group(u"Tab Group", tab_groups::TabGroupColorId::kRed, {}, - std::nullopt); - group.SetPinned(true); - saved_tab_group_model_->AddedLocally(group); - EXPECT_EQ(0, saved_tab_group_model_->GetIndexOf(group.saved_guid())); - EXPECT_EQ(4u, saved_tab_group_model_->saved_tab_groups().size()); -} - -// Expect pin group to move the 2nd group to the front of the list. -TEST_P(SavedTabGroupModelTest, PinGroup) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - - EXPECT_EQ(3u, saved_tab_group_model_->saved_tab_groups().size()); - SavedTabGroup group1(u"Tab Group 1", tab_groups::TabGroupColorId::kRed, {}, - std::nullopt); - group1.SetPinned(true); - saved_tab_group_model_->AddedLocally(group1); - - SavedTabGroup group2(u"Tab Group 2", tab_groups::TabGroupColorId::kRed, {}, - std::nullopt); - saved_tab_group_model_->AddedLocally(group2); - - EXPECT_EQ(1, saved_tab_group_model_->GetIndexOf(group2.saved_guid())); - EXPECT_EQ(5u, saved_tab_group_model_->saved_tab_groups().size()); - - EXPECT_FALSE( - saved_tab_group_model_->IsGroupPinned(group2.saved_guid()).value()); - saved_tab_group_model_->TogglePinState(group2.saved_guid()); - EXPECT_TRUE( - saved_tab_group_model_->IsGroupPinned(group2.saved_guid()).value()); - - EXPECT_EQ(0, saved_tab_group_model_->GetIndexOf(group2.saved_guid())); - EXPECT_EQ(5u, saved_tab_group_model_->saved_tab_groups().size()); -} - -// Expect unpin group to move the front group to the 2nd of the list. -TEST_P(SavedTabGroupModelTest, UnpinGroup) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - - EXPECT_EQ(3u, saved_tab_group_model_->saved_tab_groups().size()); - SavedTabGroup group1(u"Tab Group 1", tab_groups::TabGroupColorId::kRed, {}, - std::nullopt); - group1.SetPinned(true); - saved_tab_group_model_->AddedLocally(group1); - - SavedTabGroup group2(u"Tab Group 2", tab_groups::TabGroupColorId::kRed, {}, - std::nullopt); - group2.SetPinned(true); - saved_tab_group_model_->AddedLocally(group2); - - EXPECT_EQ(0, saved_tab_group_model_->GetIndexOf(group2.saved_guid())); - EXPECT_EQ(5u, saved_tab_group_model_->saved_tab_groups().size()); - - EXPECT_TRUE( - saved_tab_group_model_->IsGroupPinned(group2.saved_guid()).value()); - saved_tab_group_model_->TogglePinState(group2.saved_guid()); - EXPECT_FALSE( - saved_tab_group_model_->IsGroupPinned(group2.saved_guid()).value()); - - EXPECT_EQ(1, saved_tab_group_model_->GetIndexOf(group2.saved_guid())); - EXPECT_EQ(5u, saved_tab_group_model_->saved_tab_groups().size()); -} - -TEST_P(SavedTabGroupModelTest, MigrateSavedTabGroup2FromV1) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - - // Add 5 unpinned SavedTabGroups to the model. - SavedTabGroup group4(u"Tab Group 4", tab_groups::TabGroupColorId::kRed, {}, - std::nullopt); - saved_tab_group_model_->AddedLocally(group4); - - SavedTabGroup group5(u"Tab Group 5", tab_groups::TabGroupColorId::kRed, {}, - std::nullopt); - saved_tab_group_model_->AddedLocally(group5); - - EXPECT_EQ(5u, saved_tab_group_model_->saved_tab_groups().size()); - - // Verify orders of the added groups. - EXPECT_EQ(0, saved_tab_group_model_->GetIndexOf(group5.saved_guid())); - EXPECT_EQ(1, saved_tab_group_model_->GetIndexOf(group4.saved_guid())); - EXPECT_EQ(2, saved_tab_group_model_->GetIndexOf(id_3_)); - EXPECT_EQ(3, saved_tab_group_model_->GetIndexOf(id_2_)); - EXPECT_EQ(4, saved_tab_group_model_->GetIndexOf(id_1_)); - - // Verify all groups are unpinned. - EXPECT_EQ(false, - saved_tab_group_model_->IsGroupPinned(group5.saved_guid()).value()); - EXPECT_EQ(false, - saved_tab_group_model_->IsGroupPinned(group4.saved_guid()).value()); - EXPECT_EQ(false, saved_tab_group_model_->IsGroupPinned(id_3_).value()); - EXPECT_EQ(false, saved_tab_group_model_->IsGroupPinned(id_2_).value()); - EXPECT_EQ(false, saved_tab_group_model_->IsGroupPinned(id_1_).value()); - - saved_tab_group_model_->MigrateTabGroupSavesUIUpdate(); - - // Verify orders of the added groups don't change. - EXPECT_EQ(0, saved_tab_group_model_->GetIndexOf(group5.saved_guid())); - EXPECT_EQ(1, saved_tab_group_model_->GetIndexOf(group4.saved_guid())); - EXPECT_EQ(2, saved_tab_group_model_->GetIndexOf(id_3_)); - EXPECT_EQ(3, saved_tab_group_model_->GetIndexOf(id_2_)); - EXPECT_EQ(4, saved_tab_group_model_->GetIndexOf(id_1_)); - - // Verify the first 4 groups are pinned. - EXPECT_EQ(true, - saved_tab_group_model_->IsGroupPinned(group5.saved_guid()).value()); - EXPECT_EQ(true, - saved_tab_group_model_->IsGroupPinned(group4.saved_guid()).value()); - EXPECT_EQ(true, saved_tab_group_model_->IsGroupPinned(id_3_).value()); - EXPECT_EQ(true, saved_tab_group_model_->IsGroupPinned(id_2_).value()); - EXPECT_EQ(false, saved_tab_group_model_->IsGroupPinned(id_1_).value()); -} - // Tests that SavedTabGroupModelObserver::Added passes the correct element from // the model. -TEST_P(SavedTabGroupModelObserverTest, AddElement) { +TEST_F(SavedTabGroupModelObserverTest, AddElement) { SavedTabGroup group_4(test::CreateTestSavedTabGroup()); saved_tab_group_model_->AddedLocally(group_4); @@ -1079,7 +854,7 @@ // Tests that SavedTabGroupModelObserver::Removed passes the correct // element from the model. -TEST_P(SavedTabGroupModelObserverTest, RemovedElement) { +TEST_F(SavedTabGroupModelObserverTest, RemovedElement) { SavedTabGroup group_4(test::CreateTestSavedTabGroup()); saved_tab_group_model_->AddedLocally(group_4); saved_tab_group_model_->RemovedLocally(group_4.saved_guid()); @@ -1095,7 +870,7 @@ // Tests that SavedTabGroupModelObserver::Updated passes the correct // element from the model. -TEST_P(SavedTabGroupModelObserverTest, UpdatedElement) { +TEST_F(SavedTabGroupModelObserverTest, UpdatedElement) { SavedTabGroup group_4(test::CreateTestSavedTabGroup()); group_4.SetLocalGroupId(test::GenerateRandomTabGroupID()); saved_tab_group_model_->AddedLocally(group_4); @@ -1124,7 +899,7 @@ // Tests that SavedTabGroupModelObserver::AddedFromSync passes the correct // element from the model. -TEST_P(SavedTabGroupModelObserverTest, AddElementFromSync) { +TEST_F(SavedTabGroupModelObserverTest, AddElementFromSync) { SavedTabGroup group_4(test::CreateTestSavedTabGroup()); group_4.SetPosition(0); saved_tab_group_model_->AddedFromSync(group_4); @@ -1144,7 +919,7 @@ // Tests that SavedTabGroupModelObserver::RemovedFromSync passes the correct // element from the model. -TEST_P(SavedTabGroupModelObserverTest, RemovedElementFromSync) { +TEST_F(SavedTabGroupModelObserverTest, RemovedElementFromSync) { SavedTabGroup group_4(test::CreateTestSavedTabGroup()); saved_tab_group_model_->AddedLocally(group_4); saved_tab_group_model_->RemovedFromSync(group_4.saved_guid()); @@ -1160,7 +935,7 @@ // Tests that SavedTabGroupModelObserver::UpdatedFromSync passes the correct // element from the model. -TEST_P(SavedTabGroupModelObserverTest, UpdatedElementFromSync) { +TEST_F(SavedTabGroupModelObserverTest, UpdatedElementFromSync) { SavedTabGroup group_4(test::CreateTestSavedTabGroup()); saved_tab_group_model_->AddedLocally(group_4); @@ -1188,7 +963,7 @@ // Verify that SavedTabGroupModel::OnGroupClosedInTabStrip passes the correct // index. -TEST_P(SavedTabGroupModelObserverTest, OnGroupClosedInTabStrip) { +TEST_F(SavedTabGroupModelObserverTest, OnGroupClosedInTabStrip) { SavedTabGroup group_4 = test::CreateTestSavedTabGroup(); LocalTabGroupID tab_group_id = test::GenerateRandomTabGroupID(); group_4.SetLocalGroupId(tab_group_id); @@ -1213,7 +988,7 @@ // Tests that SavedTabGroupModelObserver::Moved passes the correct // element from the model. -TEST_P(SavedTabGroupModelObserverTest, MoveElement) { +TEST_F(SavedTabGroupModelObserverTest, MoveElement) { SavedTabGroup stg_1(std::u16string(u"stg_1"), tab_groups::TabGroupColorId::kGrey, {}, std::nullopt, base::Uuid::GenerateRandomV4()); @@ -1231,18 +1006,12 @@ saved_tab_group_model_->ReorderGroupLocally(stg_2.saved_guid(), 2); EXPECT_TRUE(reordered_called_); - if (IsV2UIEnabled()) { EXPECT_EQ(0, saved_tab_group_model_->GetIndexOf(stg_3.saved_guid())); EXPECT_EQ(1, saved_tab_group_model_->GetIndexOf(stg_1.saved_guid())); EXPECT_EQ(2, saved_tab_group_model_->GetIndexOf(stg_2.saved_guid())); - } else { - EXPECT_EQ(0, saved_tab_group_model_->GetIndexOf(stg_1.saved_guid())); - EXPECT_EQ(1, saved_tab_group_model_->GetIndexOf(stg_3.saved_guid())); - EXPECT_EQ(2, saved_tab_group_model_->GetIndexOf(stg_2.saved_guid())); - } } -TEST_P(SavedTabGroupModelObserverTest, ReordedTabsUpdatePositions) { +TEST_F(SavedTabGroupModelObserverTest, ReordedTabsUpdatePositions) { SavedTabGroup group = test::CreateTestSavedTabGroup(); base::Uuid group_id = group.saved_guid(); base::Uuid tab1_id = group.saved_tabs()[0].saved_tab_guid(); @@ -1257,7 +1026,7 @@ EXPECT_EQ(1, saved_tab_group_model_->Get(group_id)->GetIndexOfTab(tab1_id)); } -TEST_P(SavedTabGroupModelObserverTest, GetGroupContainingTab) { +TEST_F(SavedTabGroupModelObserverTest, GetGroupContainingTab) { // Add a non matching SavedTabGroup. saved_tab_group_model_->AddedLocally(test::CreateTestSavedTabGroup()); @@ -1292,60 +1061,7 @@ saved_tab_group_model_->GetGroupContainingTab(LocalTabID())); } -// Toggle pin state should trigger SavedTabGroupUpdatedLocally. -TEST_P(SavedTabGroupModelObserverTest, TogglePinState) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - - SavedTabGroup group(test::CreateTestSavedTabGroup()); - saved_tab_group_model_->AddedLocally(group); - - saved_tab_group_model_->TogglePinState(group.saved_guid()); - - const int index = retrieved_group_.size() - 1; - ASSERT_GE(index, 0); - - SavedTabGroup received_group = retrieved_group_[index]; - EXPECT_TRUE(received_group.is_pinned()); - EXPECT_EQ(group.local_group_id(), received_group.local_group_id()); - EXPECT_EQ(saved_tab_group_model_->GetIndexOf(received_group.saved_guid()), - retrieved_index_); -} - -TEST_P(SavedTabGroupModelObserverTest, MigrateSavedTabGroupsFromV1) { - if (!IsV2UIEnabled()) { - GTEST_SKIP() << "N/A for V1"; - } - - // Add 5 unpinned SavedTabGroups to the model. - SavedTabGroup group1(u"Tab Group 1", tab_groups::TabGroupColorId::kRed, {}, - std::nullopt); - saved_tab_group_model_->AddedLocally(group1); - SavedTabGroup group2(u"Tab Group 2", tab_groups::TabGroupColorId::kRed, {}, - std::nullopt); - saved_tab_group_model_->AddedLocally(group2); - SavedTabGroup group3(u"Tab Group 3", tab_groups::TabGroupColorId::kRed, {}, - std::nullopt); - saved_tab_group_model_->AddedLocally(group3); - SavedTabGroup group4(u"Tab Group 4", tab_groups::TabGroupColorId::kRed, {}, - std::nullopt); - saved_tab_group_model_->AddedLocally(group4); - SavedTabGroup group5(u"Tab Group 5", tab_groups::TabGroupColorId::kRed, {}, - std::nullopt); - saved_tab_group_model_->AddedLocally(group5); - - EXPECT_EQ(5u, saved_tab_group_model_->saved_tab_groups().size()); - - ClearSignals(); - ASSERT_EQ(0u, retrieved_group_.size()); - - // Verify 4 of them are updated. - saved_tab_group_model_->MigrateTabGroupSavesUIUpdate(); - ASSERT_EQ(4u, retrieved_group_.size()); -} - -TEST_P(SavedTabGroupModelObserverTest, UpdateLocalCacheGuid) { +TEST_F(SavedTabGroupModelObserverTest, UpdateLocalCacheGuid) { base::Uuid group_1_id = base::Uuid::GenerateRandomV4(); base::Uuid group_2_id = base::Uuid::GenerateRandomV4(); base::Uuid group_3_id = base::Uuid::GenerateRandomV4(); @@ -1402,7 +1118,7 @@ edit_to_cache_guid); } -TEST_P(SavedTabGroupModelObserverTest, UpdateLocalCacheGuidForTabs) { +TEST_F(SavedTabGroupModelObserverTest, UpdateLocalCacheGuidForTabs) { const std::string cache_guid1 = "cache_guid1"; const std::string cache_guid2 = "cache_guid2"; const std::string cache_guid_tab2 = "cache_guid_tab2"; @@ -1443,13 +1159,6 @@ EXPECT_EQ(retrieved_tab2->creator_cache_guid(), std::nullopt); } -INSTANTIATE_TEST_SUITE_P(SavedTabGroupModel, - SavedTabGroupModelTest, - testing::Bool()); -INSTANTIATE_TEST_SUITE_P(SavedTabGroupModel, - SavedTabGroupModelObserverTest, - testing::Bool()); - } // namespace } // namespace tab_groups
diff --git a/components/saved_tab_groups/internal/tab_group_sync_service_unittest.cc b/components/saved_tab_groups/internal/tab_group_sync_service_unittest.cc index ee21eb8..a28b7c2 100644 --- a/components/saved_tab_groups/internal/tab_group_sync_service_unittest.cc +++ b/components/saved_tab_groups/internal/tab_group_sync_service_unittest.cc
@@ -2036,10 +2036,7 @@ class PinningTabGroupSyncServiceTest : public TabGroupSyncServiceTest { public: - PinningTabGroupSyncServiceTest() { - feature_list_.InitWithFeatures({tab_groups::kTabGroupsSaveUIUpdate}, {}); - } - + PinningTabGroupSyncServiceTest() = default; PinningTabGroupSyncServiceTest(const PinningTabGroupSyncServiceTest&) = delete; PinningTabGroupSyncServiceTest& operator=(
diff --git a/components/saved_tab_groups/public/features.cc b/components/saved_tab_groups/public/features.cc index b506d477..a9fd9624 100644 --- a/components/saved_tab_groups/public/features.cc +++ b/components/saved_tab_groups/public/features.cc
@@ -35,13 +35,6 @@ "TabGroupsSaveV2", base::FEATURE_ENABLED_BY_DEFAULT); -// This flag controls the UI update made to saved tab groups as well as model -// and sync support for pinning saved tab groups. -BASE_FEATURE(kTabGroupsSaveUIUpdate, - "TabGroupsSaveUIUpdate", - base::FEATURE_ENABLED_BY_DEFAULT -); - // Feature flag specific to Desktop platforms. When enabled, desktop platforms // will use the TabGroupSyncService. When disabled, desktop platforms will // continue to use SavedTabGroupKeyedService. @@ -103,7 +96,7 @@ } bool IsTabGroupsSaveUIUpdateEnabled() { - return base::FeatureList::IsEnabled(kTabGroupsSaveUIUpdate); + return true; } bool IsTabGroupSyncServiceDesktopMigrationEnabled() {
diff --git a/components/saved_tab_groups/public/features.h b/components/saved_tab_groups/public/features.h index 8e7c0d5..7523722 100644 --- a/components/saved_tab_groups/public/features.h +++ b/components/saved_tab_groups/public/features.h
@@ -17,8 +17,6 @@ BASE_DECLARE_FEATURE(kTabGroupsSaveV2); -BASE_DECLARE_FEATURE(kTabGroupsSaveUIUpdate); - BASE_DECLARE_FEATURE(kTabGroupSyncServiceDesktopMigration); BASE_DECLARE_FEATURE(kTabGroupsDeferRemoteNavigations);
diff --git a/components/search_engines/enterprise/enterprise_search_manager_unittest.cc b/components/search_engines/enterprise/enterprise_search_manager_unittest.cc index eef5d9c..b8bb9172 100644 --- a/components/search_engines/enterprise/enterprise_search_manager_unittest.cc +++ b/components/search_engines/enterprise/enterprise_search_manager_unittest.cc
@@ -285,9 +285,13 @@ const std::string& search_url, const std::string& suggest_url, const std::string& icon_url, - bool trigger_omnibox_blending) { + bool trigger_omnibox_blending, + base::TimeDelta callback_delay, + int num_suggestions, + const std::string& response_type) { scoped_config_.Get().Init(enabled, name, shortcut, search_url, suggest_url, - icon_url, trigger_omnibox_blending); + icon_url, trigger_omnibox_blending, + callback_delay, num_suggestions, response_type); } void InitScopedConfig(bool enabled, bool trigger_omnibox_blending) { @@ -348,7 +352,10 @@ /*search_url=*/"https://www.mocked.com/q={searchTerms}", /*suggest_url=*/"https://www.mocked.com/ac", /*icon_url=*/"https://www.mocked.com/favicon.ico", - /*trigger_omnibox_blending=*/true); + /*trigger_omnibox_blending=*/true, + /*callback_delay=*/base::Milliseconds(0), + /*num_suggestions=*/4, + /*response_type=*/"success"); ASSERT_TRUE(scoped_config_.Get().enabled()); ASSERT_EQ(
diff --git a/components/shared_highlighting/core/common/shared_highlighting_features.cc b/components/shared_highlighting/core/common/shared_highlighting_features.cc index c0a9fed..6c77ab4 100644 --- a/components/shared_highlighting/core/common/shared_highlighting_features.cc +++ b/components/shared_highlighting/core/common/shared_highlighting_features.cc
@@ -15,10 +15,6 @@ base::FEATURE_DISABLED_BY_DEFAULT); #endif -BASE_FEATURE(kIOSSharedHighlightingV2, - "IOSSharedHighlightingV2", - base::FEATURE_ENABLED_BY_DEFAULT); - BASE_FEATURE(kSharedHighlightingManager, "SharedHighlightingManager", base::FEATURE_DISABLED_BY_DEFAULT);
diff --git a/components/shared_highlighting/core/common/shared_highlighting_features.h b/components/shared_highlighting/core/common/shared_highlighting_features.h index bc224bba..2eb01bf0 100644 --- a/components/shared_highlighting/core/common/shared_highlighting_features.h +++ b/components/shared_highlighting/core/common/shared_highlighting_features.h
@@ -24,9 +24,6 @@ // Enables the new SharedHighlightingManager refactoring. BASE_DECLARE_FEATURE(kSharedHighlightingManager); -// Feature flag that enable Shared Highlighting V2 in iOS. -BASE_DECLARE_FEATURE(kIOSSharedHighlightingV2); - // Returns the pre-emptive link generation timeout length. int GetPreemptiveLinkGenTimeoutLengthMs();
diff --git a/components/sync/service/local_data_migration_item_queue_unittest.cc b/components/sync/service/local_data_migration_item_queue_unittest.cc index 07610a0..278bbc1b 100644 --- a/components/sync/service/local_data_migration_item_queue_unittest.cc +++ b/components/sync/service/local_data_migration_item_queue_unittest.cc
@@ -19,18 +19,17 @@ class LocalDataMigrationItemQueueTest : public testing::Test { protected: - LocalDataMigrationItemQueueTest() { - local_data_migration_item_queue_ = - std::make_unique<LocalDataMigrationItemQueue>(sync_service(), - data_type_manager()); - + LocalDataMigrationItemQueueTest() + : local_data_migration_item_queue_( + std::make_unique<LocalDataMigrationItemQueue>(sync_service(), + data_type_manager())), + item_({{PASSWORDS, {"d0"}}}) { sync_service_.SetSignedIn(signin::ConsentLevel::kSignin); sync_service()->GetUserSettings()->SetSelectedTypes( false, {UserSelectableType::kPasswords, UserSelectableType::kAutofill}); ON_CALL(data_type_manager_, state()) .WillByDefault(testing::Return(DataTypeManager::State::CONFIGURED)); - item_ = {{PASSWORDS, {"d0"}}}; } TestSyncService* sync_service() { return &sync_service_; } @@ -48,11 +47,11 @@ } private: - std::map<syncer::DataType, std::vector<syncer::LocalDataItemModel::DataId>> - item_; - std::unique_ptr<LocalDataMigrationItemQueue> local_data_migration_item_queue_; TestSyncService sync_service_; testing::NiceMock<DataTypeManagerMock> data_type_manager_; + std::unique_ptr<LocalDataMigrationItemQueue> local_data_migration_item_queue_; + std::map<syncer::DataType, std::vector<syncer::LocalDataItemModel::DataId>> + item_; }; TEST_F(LocalDataMigrationItemQueueTest, MoveWithSyncServiceActive) {
diff --git a/content/browser/browsing_topics/browsing_topics_url_loader_interceptor.cc b/content/browser/browsing_topics/browsing_topics_url_loader_interceptor.cc index db6189f..e9c75fb 100644 --- a/content/browser/browsing_topics/browsing_topics_url_loader_interceptor.cc +++ b/content/browser/browsing_topics/browsing_topics_url_loader_interceptor.cc
@@ -4,7 +4,6 @@ #include "content/browser/browsing_topics/browsing_topics_url_loader_interceptor.h" -#include "components/browsing_topics/common/common_types.h" #include "content/browser/browsing_topics/header_util.h" #include "content/browser/renderer_host/render_frame_host_impl.h" #include "content/public/browser/content_browser_client.h" @@ -171,9 +170,7 @@ std::vector<blink::mojom::EpochTopicPtr> topics; topics_eligible_ = GetContentClient()->browser()->HandleTopicsWebApi( origin, request_initiator_frame->GetMainFrame(), - resource_request_->is_fetch_like_api - ? browsing_topics::ApiCallerSource::kFetch - : browsing_topics::ApiCallerSource::kImgAttribute, + browsing_topics::ApiCallerSource::kFetch, /*get_topics=*/true, /*observe=*/false, topics); @@ -203,11 +200,9 @@ return; } - HandleTopicsEligibleResponse( - head->parsed_headers, url::Origin::Create(url_), *rfh, - resource_request_->is_fetch_like_api - ? browsing_topics::ApiCallerSource::kFetch - : browsing_topics::ApiCallerSource::kImgAttribute); + HandleTopicsEligibleResponse(head->parsed_headers, + url::Origin::Create(url_), *rfh, + browsing_topics::ApiCallerSource::kFetch); topics_eligible_ = false; }
diff --git a/content/browser/browsing_topics/header_util.cc b/content/browser/browsing_topics/header_util.cc index c93244d..6e59fdd 100644 --- a/content/browser/browsing_topics/header_util.cc +++ b/content/browser/browsing_topics/header_util.cc
@@ -5,7 +5,6 @@ #include "content/browser/browsing_topics/header_util.h" #include "base/strings/strcat.h" -#include "components/browsing_topics/common/common_types.h" #include "components/browsing_topics/common/semantic_tree.h" #include "content/browser/renderer_host/render_frame_host_impl.h" #include "content/public/browser/content_browser_client.h" @@ -149,8 +148,7 @@ RenderFrameHost& request_initiator_frame, browsing_topics::ApiCallerSource caller_source) { DCHECK(caller_source == browsing_topics::ApiCallerSource::kFetch || - caller_source == browsing_topics::ApiCallerSource::kIframeAttribute || - caller_source == browsing_topics::ApiCallerSource::kImgAttribute); + caller_source == browsing_topics::ApiCallerSource::kIframeAttribute); if (!parsed_headers || !parsed_headers->observe_browsing_topics) { return;
diff --git a/content/browser/interest_group/interest_group_manager_impl.cc b/content/browser/interest_group/interest_group_manager_impl.cc index 02e30f8..999dfc0 100644 --- a/content/browser/interest_group/interest_group_manager_impl.cc +++ b/content/browser/interest_group/interest_group_manager_impl.cc
@@ -20,6 +20,7 @@ #include "base/functional/callback.h" #include "base/memory/scoped_refptr.h" #include "base/metrics/histogram_functions.h" +#include "base/metrics/histogram_macros.h" #include "base/observer_list.h" #include "base/rand_util.h" #include "base/strings/strcat.h" @@ -243,6 +244,17 @@ return std::min(new_quota, max_real_time_reports); } +void RecordNumberOfSelectableBuyerAndSellerReportingIds( + base::span<const blink::InterestGroup::Ad> ads) { + for (const blink::InterestGroup::Ad& ad : ads) { + if (ad.selectable_buyer_and_seller_reporting_ids) { + UMA_HISTOGRAM_COUNTS_1000( + "Ads.InterestGroup.NumSelectableBuyerAndSellerReportingIds", + ad.selectable_buyer_and_seller_reporting_ids->size()); + } + } +} + } // namespace InterestGroupManagerImpl::ReportRequest::ReportRequest() = default; @@ -380,6 +392,10 @@ base::OnceClosure notify_callback = CreateNotifyInterestGroupAccessedCallback( InterestGroupObserver::kJoin, group.owner, group.name); + if (group.ads) { + RecordNumberOfSelectableBuyerAndSellerReportingIds(*group.ads); + } + blink::InterestGroupKey group_key(group.owner, group.name); caching_storage_.JoinInterestGroup( group, joining_url, @@ -985,6 +1001,9 @@ const blink::InterestGroupKey& group_key, InterestGroupUpdate update, base::OnceCallback<void(bool)> callback) { + if (update.ads) { + RecordNumberOfSelectableBuyerAndSellerReportingIds(*update.ads); + } caching_storage_.UpdateInterestGroup( group_key, std::move(update), base::BindOnce(&InterestGroupManagerImpl::OnUpdateComplete,
diff --git a/content/browser/interest_group/interest_group_manager_impl.h b/content/browser/interest_group/interest_group_manager_impl.h index 29e6757..6f38a01 100644 --- a/content/browser/interest_group/interest_group_manager_impl.h +++ b/content/browser/interest_group/interest_group_manager_impl.h
@@ -544,6 +544,8 @@ } private: + friend class InterestGroupManagerImplTestPeer; + // InterestGroupUpdateManager calls private members to write updates to the // database. friend class InterestGroupUpdateManager;
diff --git a/content/browser/interest_group/interest_group_manager_impl_unittest.cc b/content/browser/interest_group/interest_group_manager_impl_unittest.cc new file mode 100644 index 0000000..18af136d --- /dev/null +++ b/content/browser/interest_group/interest_group_manager_impl_unittest.cc
@@ -0,0 +1,395 @@ +// Copyright 2025 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/browser/interest_group/interest_group_manager_impl.h" + +#include <iterator> +#include <memory> +#include <string> +#include <utility> +#include <vector> + +#include "base/check_op.h" +#include "base/files/scoped_temp_dir.h" +#include "base/functional/bind.h" +#include "base/functional/callback_forward.h" +#include "base/memory/scoped_refptr.h" +#include "base/run_loop.h" +#include "base/task/sequenced_task_runner.h" +#include "base/test/bind.h" +#include "base/test/metrics/histogram_tester.h" +#include "base/test/task_environment.h" +#include "base/test/test_future.h" +#include "base/time/time.h" +#include "content/browser/interest_group/interest_group_manager_impl.h" +#include "content/browser/interest_group/test_interest_group_observer.h" +#include "content/public/browser/k_anonymity_service_delegate.h" +#include "services/network/public/cpp/shared_url_loader_factory.h" +#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" +#include "services/network/test/test_shared_url_loader_factory.h" +#include "services/network/test/test_url_loader_factory.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "third_party/blink/public/common/interest_group/interest_group.h" +#include "url/origin.h" + +namespace content { + +class InterestGroupManagerImplTestPeer { + public: + explicit InterestGroupManagerImplTestPeer( + InterestGroupManagerImpl* interest_group_manager) + : interest_group_manager_(interest_group_manager) {} + + void UpdateInterestGroup(blink::InterestGroupKey group_key, + InterestGroupUpdate update) { + base::test::TestFuture<bool> update_complete_signal; + interest_group_manager_->UpdateInterestGroup( + group_key, std::move(update), update_complete_signal.GetCallback()); + EXPECT_TRUE(update_complete_signal.Wait()); + } + + raw_ptr<InterestGroupManagerImpl> interest_group_manager_; +}; + +namespace { + +class TestKAnonymityServiceDelegate : public KAnonymityServiceDelegate { + public: + TestKAnonymityServiceDelegate() = default; + + void JoinSet(std::string id, + base::OnceCallback<void(bool)> callback) override { + base::SequencedTaskRunner::GetCurrentDefault()->PostTask( + FROM_HERE, base::BindOnce(std::move(callback), true)); + } + + void QuerySets( + std::vector<std::string> ids, + base::OnceCallback<void(std::vector<bool>)> callback) override { + size_t ids_size = ids.size(); + std::move(ids.begin(), ids.end(), std::back_inserter(queried_ids_)); + + // Return that nothing is k-anonymous. + base::SequencedTaskRunner::GetCurrentDefault()->PostTask( + FROM_HERE, base::BindOnce(std::move(callback), + std::vector<bool>(ids_size, false))); + } + + base::TimeDelta GetJoinInterval() override { return base::Seconds(1); } + base::TimeDelta GetQueryInterval() override { return base::Seconds(1); } + + const std::vector<std::string>& queried_ids() const { return queried_ids_; } + + private: + std::vector<std::string> queried_ids_; +}; + +class InterestGroupManagerImplTest : public testing::Test { + protected: + void SetUp() override { + ASSERT_TRUE(temp_directory_.CreateUniqueTempDir()); + interest_group_manager_ = std::make_unique<InterestGroupManagerImpl>( + temp_directory_.GetPath(), /*in_memory=*/true, + InterestGroupManagerImpl::ProcessMode::kInRenderer, + test_url_loader_factory_.GetSafeWeakWrapper(), + base::BindRepeating(&InterestGroupManagerImplTest::GetKAnonDelegate, + base::Unretained(this))); + } + + std::vector<url::Origin> GetAllInterestGroupOwners() { + base::test::TestFuture<std::vector<url::Origin>> result; + interest_group_manager_->GetAllInterestGroupOwners(result.GetCallback()); + return result.Get(); + } + + scoped_refptr<StorageInterestGroups> GetInterestGroupsForOwner( + const url::Origin& owner) { + base::test::TestFuture<scoped_refptr<StorageInterestGroups>> result; + interest_group_manager_->GetInterestGroupsForOwner( + /*devtools_auction_id=*/std::nullopt, owner, result.GetCallback()); + return result.Get(); + } + + SingleStorageInterestGroup GetSingleInterestGroup(url::Origin test_origin) { + std::vector<url::Origin> origins = GetAllInterestGroupOwners(); + EXPECT_EQ(1u, origins.size()); + EXPECT_EQ(test_origin, origins[0]); + scoped_refptr<StorageInterestGroups> interest_groups = + GetInterestGroupsForOwner(test_origin); + CHECK_EQ(1u, interest_groups->size()); + return std::move(interest_groups->GetInterestGroups()[0]); + } + + KAnonymityServiceDelegate* GetKAnonDelegate() { return &k_anon_delegate_; } + + base::ScopedTempDir temp_directory_; + + // This uses MOCK_TIME so that we can declare expectations on join_time and + // last_updated below. + base::test::TaskEnvironment task_environment_{ + base::test::TaskEnvironment::TimeSource::MOCK_TIME}; + + network::TestURLLoaderFactory test_url_loader_factory_; + TestKAnonymityServiceDelegate k_anon_delegate_; + + std::unique_ptr<InterestGroupManagerImpl> interest_group_manager_; +}; + +blink::InterestGroup NewInterestGroup(url::Origin owner, std::string name) { + blink::InterestGroup result; + result.owner = owner; + result.name = name; + result.bidding_url = owner.GetURL().Resolve("/bidding_script.js"); + result.update_url = owner.GetURL().Resolve("/update_script.js"); + result.expiry = base::Time::Now() + base::Days(30); + result.execution_mode = + blink::InterestGroup::ExecutionMode::kCompatibilityMode; + return result; +} + +TEST_F(InterestGroupManagerImplTest, JoinInterestGroupWithNoAds) { + base::HistogramTester histograms; + const url::Origin test_origin = + url::Origin::Create(GURL("https://owner.example.com")); + blink::InterestGroup test_group = NewInterestGroup(test_origin, "example"); + + TestInterestGroupObserver interest_group_observer; + interest_group_manager_->AddInterestGroupObserver(&interest_group_observer); + + interest_group_manager_->JoinInterestGroup(test_group, test_origin.GetURL()); + interest_group_observer.WaitForAccesses( + {{/*devtools_auction_id=*/"global", + InterestGroupManagerImpl::InterestGroupObserver::AccessType::kJoin, + /*owner_origin=*/test_origin, + /*ig_name=*/"example", + /*component_seller_origin=*/std::nullopt, + /*bid=*/std::nullopt, /*bid_currency=*/std::nullopt}}); + + EXPECT_THAT(k_anon_delegate_.queried_ids(), testing::ElementsAre()); + + SingleStorageInterestGroup loaded_group = GetSingleInterestGroup(test_origin); + + EXPECT_EQ(test_origin, loaded_group->interest_group.owner); + EXPECT_EQ("example", loaded_group->interest_group.name); + EXPECT_EQ(1, loaded_group->bidding_browser_signals->join_count); + EXPECT_EQ(0, loaded_group->bidding_browser_signals->bid_count); + EXPECT_EQ(test_origin, loaded_group->joining_origin); + EXPECT_EQ(base::Time::Now(), loaded_group->join_time); + EXPECT_EQ(base::Time::Now(), loaded_group->last_updated); + EXPECT_EQ(base::Time::Min(), loaded_group->next_update_after); + + histograms.ExpectTotalCount( + "Ads.InterestGroup.NumSelectableBuyerAndSellerReportingIds", 0); +} + +TEST_F(InterestGroupManagerImplTest, JoinInterestGroupWithOneAd) { + base::HistogramTester histograms; + const url::Origin test_origin = + url::Origin::Create(GURL("https://owner.example.com")); + blink::InterestGroup test_group = NewInterestGroup(test_origin, "example"); + test_group.ads.emplace(); + test_group.ads->emplace_back( + /*render_gurl=*/GURL("https://full.example.com/ad1"), + /*metadata=*/"metadata1"); + + TestInterestGroupObserver interest_group_observer; + interest_group_manager_->AddInterestGroupObserver(&interest_group_observer); + + interest_group_manager_->JoinInterestGroup(test_group, test_origin.GetURL()); + interest_group_observer.WaitForAccesses( + {{/*devtools_auction_id=*/"global", + InterestGroupManagerImpl::InterestGroupObserver::AccessType::kJoin, + /*owner_origin=*/test_origin, + /*ig_name=*/"example", + /*component_seller_origin=*/std::nullopt, + /*bid=*/std::nullopt, /*bid_currency=*/std::nullopt}}); + + EXPECT_THAT(k_anon_delegate_.queried_ids(), testing::SizeIs(2)); + + SingleStorageInterestGroup loaded_group = GetSingleInterestGroup(test_origin); + ASSERT_EQ(1u, loaded_group->interest_group.ads->size()); + const blink::InterestGroup::Ad& ad = (*loaded_group->interest_group.ads)[0]; + EXPECT_EQ(GURL("https://full.example.com/ad1"), ad.render_url()); + EXPECT_EQ("metadata1", ad.metadata); + + histograms.ExpectTotalCount( + "Ads.InterestGroup.NumSelectableBuyerAndSellerReportingIds", 0); +} + +TEST_F(InterestGroupManagerImplTest, + JoinInterestGroupWithOneAdAndSelectableBuyerAndSellerReportingIds) { + base::HistogramTester histograms; + const url::Origin test_origin = + url::Origin::Create(GURL("https://owner.example.com")); + blink::InterestGroup test_group = NewInterestGroup(test_origin, "example"); + test_group.ads.emplace(); + test_group.ads->emplace_back( + /*render_gurl=*/GURL("https://full.example.com/ad1"), + /*metadata=*/"metadata1", + /*size_group=*/std::nullopt, + /*buyer_reporting_id=*/std::nullopt, + /*buyer_and_seller_reporting_id=*/std::nullopt, + /*selectable_buyer_and_seller_reporting_ids=*/ + std::vector<std::string>({"selectable1", "selectable2", "selectable3"})); + + TestInterestGroupObserver interest_group_observer; + interest_group_manager_->AddInterestGroupObserver(&interest_group_observer); + + interest_group_manager_->JoinInterestGroup(test_group, test_origin.GetURL()); + interest_group_observer.WaitForAccesses( + {{/*devtools_auction_id=*/"global", + InterestGroupManagerImpl::InterestGroupObserver::AccessType::kJoin, + /*owner_origin=*/test_origin, + /*ig_name=*/"example", + /*component_seller_origin=*/std::nullopt, + /*bid=*/std::nullopt, /*bid_currency=*/std::nullopt}}); + + EXPECT_THAT(k_anon_delegate_.queried_ids(), testing::SizeIs(5)); + + SingleStorageInterestGroup loaded_group = GetSingleInterestGroup(test_origin); + ASSERT_EQ(1u, loaded_group->interest_group.ads->size()); + const blink::InterestGroup::Ad& ad = (*loaded_group->interest_group.ads)[0]; + EXPECT_EQ(GURL("https://full.example.com/ad1"), ad.render_url()); + EXPECT_EQ("metadata1", ad.metadata); + EXPECT_THAT( + *ad.selectable_buyer_and_seller_reporting_ids, + testing::ElementsAre("selectable1", "selectable2", "selectable3")); + + histograms.ExpectUniqueSample( + "Ads.InterestGroup.NumSelectableBuyerAndSellerReportingIds", 3, 1); +} + +TEST_F(InterestGroupManagerImplTest, UpdateInterestGroupWithNoAds) { + base::HistogramTester histograms; + const url::Origin test_origin = + url::Origin::Create(GURL("https://owner.example.com")); + blink::InterestGroup test_group = NewInterestGroup(test_origin, "example"); + + TestInterestGroupObserver interest_group_observer; + interest_group_manager_->AddInterestGroupObserver(&interest_group_observer); + + interest_group_manager_->JoinInterestGroup(test_group, test_origin.GetURL()); + interest_group_observer.WaitForAccesses( + {{/*devtools_auction_id=*/"global", + InterestGroupManagerImpl::InterestGroupObserver::AccessType::kJoin, + /*owner_origin=*/test_origin, + /*ig_name=*/"example", + /*component_seller_origin=*/std::nullopt, + /*bid=*/std::nullopt, /*bid_currency=*/std::nullopt}}); + + InterestGroupUpdate update; + update.ads.emplace(); + + InterestGroupManagerImplTestPeer(interest_group_manager_.get()) + .UpdateInterestGroup(blink::InterestGroupKey(test_origin, "example"), + std::move(update)); + + EXPECT_THAT(k_anon_delegate_.queried_ids(), testing::ElementsAre()); + + SingleStorageInterestGroup loaded_group = GetSingleInterestGroup(test_origin); + + EXPECT_EQ(test_origin, loaded_group->interest_group.owner); + EXPECT_EQ("example", loaded_group->interest_group.name); + EXPECT_EQ(1, loaded_group->bidding_browser_signals->join_count); + EXPECT_EQ(0, loaded_group->bidding_browser_signals->bid_count); + EXPECT_EQ(test_origin, loaded_group->joining_origin); + EXPECT_EQ(base::Time::Now(), loaded_group->join_time); + EXPECT_EQ(base::Time::Now(), loaded_group->last_updated); + EXPECT_NE(base::Time::Min(), loaded_group->next_update_after); + + histograms.ExpectTotalCount( + "Ads.InterestGroup.NumSelectableBuyerAndSellerReportingIds", 0); +} + +TEST_F(InterestGroupManagerImplTest, UpdateInterestGroupWithOneAd) { + base::HistogramTester histograms; + const url::Origin test_origin = + url::Origin::Create(GURL("https://owner.example.com")); + blink::InterestGroup test_group = NewInterestGroup(test_origin, "example"); + + TestInterestGroupObserver interest_group_observer; + interest_group_manager_->AddInterestGroupObserver(&interest_group_observer); + + interest_group_manager_->JoinInterestGroup(test_group, test_origin.GetURL()); + interest_group_observer.WaitForAccesses( + {{/*devtools_auction_id=*/"global", + InterestGroupManagerImpl::InterestGroupObserver::AccessType::kJoin, + /*owner_origin=*/test_origin, + /*ig_name=*/"example", + /*component_seller_origin=*/std::nullopt, + /*bid=*/std::nullopt, /*bid_currency=*/std::nullopt}}); + + InterestGroupUpdate update; + update.ads.emplace(); + update.ads->emplace_back( + /*render_gurl=*/GURL("https://full.example.com/ad1"), + /*metadata=*/"metadata1"); + + InterestGroupManagerImplTestPeer(interest_group_manager_.get()) + .UpdateInterestGroup(blink::InterestGroupKey(test_origin, "example"), + std::move(update)); + + EXPECT_THAT(k_anon_delegate_.queried_ids(), testing::SizeIs(2)); + + SingleStorageInterestGroup loaded_group = GetSingleInterestGroup(test_origin); + ASSERT_EQ(1u, loaded_group->interest_group.ads->size()); + const blink::InterestGroup::Ad& ad = (*loaded_group->interest_group.ads)[0]; + EXPECT_EQ(GURL("https://full.example.com/ad1"), ad.render_url()); + EXPECT_EQ("metadata1", ad.metadata); + + histograms.ExpectTotalCount( + "Ads.InterestGroup.NumSelectableBuyerAndSellerReportingIds", 0); +} + +TEST_F(InterestGroupManagerImplTest, + UpdateInterestGroupWithOneAdAndSelectableBuyerAndSellerReportingIds) { + base::HistogramTester histograms; + const url::Origin test_origin = + url::Origin::Create(GURL("https://owner.example.com")); + blink::InterestGroup test_group = NewInterestGroup(test_origin, "example"); + + TestInterestGroupObserver interest_group_observer; + interest_group_manager_->AddInterestGroupObserver(&interest_group_observer); + + interest_group_manager_->JoinInterestGroup(test_group, test_origin.GetURL()); + interest_group_observer.WaitForAccesses( + {{/*devtools_auction_id=*/"global", + InterestGroupManagerImpl::InterestGroupObserver::AccessType::kJoin, + /*owner_origin=*/test_origin, + /*ig_name=*/"example", + /*component_seller_origin=*/std::nullopt, + /*bid=*/std::nullopt, /*bid_currency=*/std::nullopt}}); + + InterestGroupUpdate update; + update.ads.emplace(); + update.ads->emplace_back( + /*render_gurl=*/GURL("https://full.example.com/ad1"), + /*metadata=*/"metadata1", + /*size_group=*/std::nullopt, + /*buyer_reporting_id=*/std::nullopt, + /*buyer_and_seller_reporting_id=*/std::nullopt, + /*selectable_buyer_and_seller_reporting_ids=*/ + std::vector<std::string>({"selectable1", "selectable2", "selectable3"})); + + InterestGroupManagerImplTestPeer(interest_group_manager_.get()) + .UpdateInterestGroup(blink::InterestGroupKey(test_origin, "example"), + std::move(update)); + + EXPECT_THAT(k_anon_delegate_.queried_ids(), testing::SizeIs(5)); + + SingleStorageInterestGroup loaded_group = GetSingleInterestGroup(test_origin); + ASSERT_EQ(1u, loaded_group->interest_group.ads->size()); + const blink::InterestGroup::Ad& ad = (*loaded_group->interest_group.ads)[0]; + EXPECT_EQ(GURL("https://full.example.com/ad1"), ad.render_url()); + EXPECT_EQ("metadata1", ad.metadata); + EXPECT_THAT( + *ad.selectable_buyer_and_seller_reporting_ids, + testing::ElementsAre("selectable1", "selectable2", "selectable3")); + + histograms.ExpectUniqueSample( + "Ads.InterestGroup.NumSelectableBuyerAndSellerReportingIds", 3, 1); +} +} // namespace +} // namespace content
diff --git a/content/browser/media/media_interface_proxy.cc b/content/browser/media/media_interface_proxy.cc index 357d53a..0af8336 100644 --- a/content/browser/media/media_interface_proxy.cc +++ b/content/browser/media/media_interface_proxy.cc
@@ -583,8 +583,10 @@ auto cdm_info = CdmRegistryImpl::GetInstance()->GetCdmInfo( key_system, CdmInfo::Robustness::kSoftwareSecure); if (!cdm_info) { - NOTREACHED() << "No valid CdmInfo for " << key_system; + DLOG(ERROR) << "No valid CdmInfo for " << key_system; + return nullptr; } + if (cdm_info->path.empty()) { NOTREACHED() << "CDM path for " << key_system << " is empty"; }
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc index 0167780..02dc9e5 100644 --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc
@@ -395,9 +395,6 @@ kSetOnlyIfOverridden}, {"TopicsDocumentAPI", raw_ref(features::kPrivacySandboxAdsAPIsM1Override)}, - {"TopicsImgAPI", raw_ref(features::kPrivacySandboxAdsAPIsOverride), - kSetOnlyIfOverridden}, - {"TopicsImgAPI", raw_ref(features::kPrivacySandboxAdsAPIsM1Override)}, {"TouchTextEditingRedesign", raw_ref(features::kTouchTextEditingRedesign)}, {"TrustedTypesFromLiteral", @@ -586,7 +583,6 @@ << blink::features::kBrowsingTopics.name << " in addition."; WebRuntimeFeatures::EnableTopicsAPI(false); WebRuntimeFeatures::EnableTopicsDocumentAPI(false); - WebRuntimeFeatures::EnableTopicsImgAPI(false); } else { if (!base::FeatureList::IsEnabled( blink::features::kBrowsingTopicsDocumentAPI)) {
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index a84e11d1..f4361c4 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn
@@ -2539,6 +2539,7 @@ "../browser/interest_group/interest_group_auction_reporter_unittest.cc", "../browser/interest_group/interest_group_caching_storage_unittest.cc", "../browser/interest_group/interest_group_k_anonymity_manager_unittest.cc", + "../browser/interest_group/interest_group_manager_impl_unittest.cc", "../browser/interest_group/interest_group_pa_report_util_unittest.cc", "../browser/interest_group/interest_group_permissions_cache_unittest.cc", "../browser/interest_group/interest_group_permissions_checker_unittest.cc",
diff --git a/ios/chrome/browser/flags/about_flags.mm b/ios/chrome/browser/flags/about_flags.mm index 8af716b..95e365b8 100644 --- a/ios/chrome/browser/flags/about_flags.mm +++ b/ios/chrome/browser/flags/about_flags.mm
@@ -1346,10 +1346,6 @@ flag_descriptions::kIOSSharedHighlightingColorChangeDescription, flags_ui::kOsIos, FEATURE_VALUE_TYPE(web::features::kIOSSharedHighlightingColorChange)}, - {"ios-shared-highlighting-v2", - flag_descriptions::kIOSSharedHighlightingV2Name, - flag_descriptions::kIOSSharedHighlightingV2Description, flags_ui::kOsIos, - FEATURE_VALUE_TYPE(shared_highlighting::kIOSSharedHighlightingV2)}, {"ios-tips-notifications", flag_descriptions::kIOSTipsNotificationsName, flag_descriptions::kIOSTipsNotificationsDescription, flags_ui::kOsIos, FEATURE_WITH_PARAMS_VALUE_TYPE(kIOSTipsNotifications,
diff --git a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc index 0e9cfff..b707643 100644 --- a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc +++ b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.cc
@@ -635,11 +635,6 @@ const char kIOSSharedHighlightingAmpDescription[] = "Enables the Create Link option on AMP pages."; -const char kIOSSharedHighlightingV2Name[] = "Text Fragments UI improvements"; -const char kIOSSharedHighlightingV2Description[] = - "Enables improvements to text fragments UI, including a menu for removing " - "or resharing a highlight."; - const char kIOSSoftLockName[] = "Soft Lock on iOS"; const char kIOSSoftLockDescription[] = "Enables experimental Soft Lock on iOS.";
diff --git a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h index 7e79d3a6..e2178ee 100644 --- a/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h +++ b/ios/chrome/browser/flags/ios_chrome_flag_descriptions.h
@@ -541,11 +541,6 @@ extern const char kIOSSharedHighlightingAmpName[]; extern const char kIOSSharedHighlightingAmpDescription[]; -// Title and description for the flag to enable browser-layer improvements to -// the text fragments UI. -extern const char kIOSSharedHighlightingV2Name[]; -extern const char kIOSSharedHighlightingV2Description[]; - // Title and description for the flag to enable the Incognito Soft Lock. extern const char kIOSSoftLockName[]; extern const char kIOSSoftLockDescription[];
diff --git a/ios/chrome/browser/lens_overlay/coordinator/lens_omnibox_client.mm b/ios/chrome/browser/lens_overlay/coordinator/lens_omnibox_client.mm index d97ebea..0282be4b 100644 --- a/ios/chrome/browser/lens_overlay/coordinator/lens_omnibox_client.mm +++ b/ios/chrome/browser/lens_overlay/coordinator/lens_omnibox_client.mm
@@ -179,7 +179,8 @@ } const gfx::VectorIcon& LensOmniboxClient::GetVectorIcon() const { - return gfx::VectorIcon::EmptyIcon(); + static const gfx::VectorIcon kEmptyVectorIcon = {}; + return kEmptyVectorIcon; } std::optional<lens::proto::LensOverlaySuggestInputs>
diff --git a/ios/chrome/browser/overscroll_actions/ui_bundled/overscroll_actions_controller.mm b/ios/chrome/browser/overscroll_actions/ui_bundled/overscroll_actions_controller.mm index 3e84eea..98cb58a 100644 --- a/ios/chrome/browser/overscroll_actions/ui_bundled/overscroll_actions_controller.mm +++ b/ios/chrome/browser/overscroll_actions/ui_bundled/overscroll_actions_controller.mm
@@ -668,10 +668,6 @@ } - (void)setup { - if (self.panGestureRecognizer) { - return; - } - UIPanGestureRecognizer* panGesture; // Workaround a bug occurring when Speak Selection is enabled. // See crbug.com/699655.
diff --git a/ios_internal b/ios_internal index 318acc7..ba47397 160000 --- a/ios_internal +++ b/ios_internal
@@ -1 +1 @@ -Subproject commit 318acc714eeb02ac2fd443810f5143f4830ca6a4 +Subproject commit ba473974f6fdf62e0efae4aab100347b54ba17d2
diff --git a/remoting/host/it2me/it2me_confirmation_dialog_chromeos.cc b/remoting/host/it2me/it2me_confirmation_dialog_chromeos.cc index e304c24..ccc6ce4 100644 --- a/remoting/host/it2me/it2me_confirmation_dialog_chromeos.cc +++ b/remoting/host/it2me/it2me_confirmation_dialog_chromeos.cc
@@ -18,6 +18,7 @@ #include "remoting/host/it2me/it2me_confirmation_dialog.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/ui_base_types.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/gfx/vector_icon_types.h" #include "ui/message_center/message_center.h" #include "ui/message_center/public/cpp/notification.h" @@ -67,7 +68,7 @@ const gfx::VectorIcon& GetIcon() const { switch (style_) { case DialogStyle::kConsumer: - return gfx::VectorIcon::EmptyIcon(); + return gfx::kNoneIcon; case DialogStyle::kEnterprise: return chromeos::kEnterpriseIcon; }
diff --git a/sql/sqlite_result_code.cc b/sql/sqlite_result_code.cc index ea8cfb2d..2b0a8cc 100644 --- a/sql/sqlite_result_code.cc +++ b/sql/sqlite_result_code.cc
@@ -452,17 +452,17 @@ // // This number is also stated at // https://www.sqlite.org/rescode.html#primary_result_code_list - static constexpr int kPrimaryResultCodes = 31; + static constexpr size_t kPrimaryResultCodes = 31; // Number of #defines in https://www.sqlite.org/c3ref/c_abort_rollback.html // // This number is also stated at // https://www.sqlite.org/rescode.html#extended_result_code_list - static constexpr int kExtendedResultCodes = 74; + static constexpr size_t kExtendedResultCodes = 74; - DCHECK_EQ(std::size(kResultCodeMapping), - size_t{kPrimaryResultCodes + kExtendedResultCodes}) - << "Mapping table has incorrect number of entries"; + static_assert(std::size(kResultCodeMapping) == + kPrimaryResultCodes + kExtendedResultCodes, + "Mapping table has incorrect number of entries"); } } // namespace sql
diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/blob_url_store_impl.cc index 72c4b7c..2d803d6 100644 --- a/storage/browser/blob/blob_url_store_impl.cc +++ b/storage/browser/blob/blob_url_store_impl.cc
@@ -174,14 +174,15 @@ std::move(callback).Run(std::nullopt); return; } - if (base::FeatureList::IsEnabled( - features::kBlockCrossPartitionBlobUrlFetching) && - !registry_->IsUrlMapped(BlobUrlUtils::ClearUrlFragment(url), + if (!registry_->IsUrlMapped(BlobUrlUtils::ClearUrlFragment(url), storage_key_)) { - std::move(callback).Run(std::nullopt); - return; + partitioned_fetch_failure_closure_.Run(); + if (base::FeatureList::IsEnabled( + features::kBlockCrossPartitionBlobUrlFetching)) { + std::move(callback).Run(std::nullopt); + return; + } } - ResolveForNavigation(url, std::move(token), std::move(callback)); }
diff --git a/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom b/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom index 1f4da82..81bfb22 100644 --- a/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom +++ b/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom
@@ -4619,7 +4619,10 @@ kInjectionMitigatedContextSubFrame = 5233, kInjectionMitigatedContextMainFrame = 5234, kCanvasTextDirectionConflict = 5235, - kTopicsAPIImg = 5236, + kCanvasTextDirectionGet = 5236, + kCanvasTextDirectionGetInherit = 5237, + kCanvasTextDirectionSet = 5238, + kCanvasTextDirectionSetInherit = 5239, // Add new features immediately above this line. Don't change assigned // numbers of any item, and don't reuse removed slots. Also don't add extra
diff --git a/third_party/blink/renderer/bindings/generated_in_modules.gni b/third_party/blink/renderer/bindings/generated_in_modules.gni index 64b75d2..2af658a 100644 --- a/third_party/blink/renderer/bindings/generated_in_modules.gni +++ b/third_party/blink/renderer/bindings/generated_in_modules.gni
@@ -2832,6 +2832,8 @@ "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_speech_recognition.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_speech_recognition_alternative.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_speech_recognition_alternative.h", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_speech_recognition_context.cc", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_speech_recognition_context.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_speech_recognition_error_event.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_speech_recognition_error_event.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_speech_recognition_event.cc",
diff --git a/third_party/blink/renderer/bindings/idl_in_modules.gni b/third_party/blink/renderer/bindings/idl_in_modules.gni index b5ba17d..4be58ef 100644 --- a/third_party/blink/renderer/bindings/idl_in_modules.gni +++ b/third_party/blink/renderer/bindings/idl_in_modules.gni
@@ -790,6 +790,7 @@ "//third_party/blink/renderer/modules/speech/speech_grammar_list.idl", "//third_party/blink/renderer/modules/speech/speech_recognition.idl", "//third_party/blink/renderer/modules/speech/speech_recognition_alternative.idl", + "//third_party/blink/renderer/modules/speech/speech_recognition_context.idl", "//third_party/blink/renderer/modules/speech/speech_recognition_error_event.idl", "//third_party/blink/renderer/modules/speech/speech_recognition_error_event_init.idl", "//third_party/blink/renderer/modules/speech/speech_recognition_event.idl",
diff --git a/third_party/blink/renderer/core/html/html_image_element.idl b/third_party/blink/renderer/core/html/html_image_element.idl index 15977fa..2c4624c 100644 --- a/third_party/blink/renderer/core/html/html_image_element.idl +++ b/third_party/blink/renderer/core/html/html_image_element.idl
@@ -63,9 +63,6 @@ [MeasureAs=HTMLImageElementY] readonly attribute long y; [CallWith=ScriptState, RaisesException] Promise<undefined> decode(); - - // Topics API (https://github.com/patcg-individual-drafts/topics) - [RuntimeEnabled=TopicsImgAPI, SecureContext, CEReactions, Reflect] attribute boolean browsingTopics; }; HTMLImageElement includes HTMLAttributionSrcElementUtils;
diff --git a/third_party/blink/renderer/core/html/parser/html_preload_scanner.cc b/third_party/blink/renderer/core/html/parser/html_preload_scanner.cc index f9274f3..7a3f6ed 100644 --- a/third_party/blink/renderer/core/html/parser/html_preload_scanner.cc +++ b/third_party/blink/renderer/core/html/parser/html_preload_scanner.cc
@@ -369,11 +369,6 @@ request->SetSharedStorageWritableOptedIn(true); } - if (browsing_topics_attr_set_) { - DCHECK(is_img); - request->SetBrowsingTopicsEligible(true); - } - return request; } @@ -456,8 +451,6 @@ attributionsrc_attr_set_ = true; } else if (Match(attribute_name, html_names::kSharedstoragewritableAttr)) { shared_storage_writable_opted_in_ = true; - } else if (Match(attribute_name, html_names::kBrowsingtopicsAttr)) { - browsing_topics_attr_set_ = true; } else if (use_data_src_attr_match_for_image_ && Match(attribute_name, html_names::kDataSrcAttr) && img_src_url_.IsNull()) { @@ -825,7 +818,6 @@ const HashSet<String>* disabled_image_types_; bool attributionsrc_attr_set_ = false; bool shared_storage_writable_opted_in_ = false; - bool browsing_topics_attr_set_ = false; std::optional<float> resource_width_; std::optional<float> resource_height_; features::LcppPreloadLazyLoadImageType preload_lazy_load_image_type_;
diff --git a/third_party/blink/renderer/core/html/parser/html_preload_scanner_test.cc b/third_party/blink/renderer/core/html/parser/html_preload_scanner_test.cc index 0e1fcfb..a0df978 100644 --- a/third_party/blink/renderer/core/html/parser/html_preload_scanner_test.cc +++ b/third_party/blink/renderer/core/html/parser/html_preload_scanner_test.cc
@@ -130,13 +130,6 @@ bool expected_shared_storage_writable_opted_in; }; -struct BrowsingTopicsWritableTestCase { - bool use_secure_document_url; - const char* base_url; - const char* input_html; - bool expected_browsing_topics; -}; - class HTMLMockHTMLResourcePreloader : public ResourcePreloader { public: explicit HTMLMockHTMLResourcePreloader(const KURL& document_url) @@ -316,16 +309,6 @@ resource->GetResourceRequest().GetSharedStorageWritableOptedIn()); } - void BrowsingTopicsRequestVerification(Document* document, - bool expected_browsing_topics) { - ASSERT_TRUE(preload_request_.get()); - Resource* resource = preload_request_->Start(document); - ASSERT_TRUE(resource); - - EXPECT_EQ(expected_browsing_topics, - resource->GetResourceRequest().GetBrowsingTopics()); - } - protected: void Preload(std::unique_ptr<PreloadRequest> preload_request) override { preload_request_ = std::move(preload_request); @@ -563,20 +546,6 @@ &GetDocument(), test_case.expected_shared_storage_writable_opted_in); } - void Test(BrowsingTopicsWritableTestCase test_case) { - SCOPED_TRACE(base::StringPrintf("Use secure doc URL: %d; HTML: '%s'", - test_case.use_secure_document_url, - test_case.input_html)); - - HTMLMockHTMLResourcePreloader preloader(GetDocument().Url()); - KURL base_url(test_case.base_url); - scanner_->AppendToEnd(String(test_case.input_html)); - std::unique_ptr<PendingPreloadData> preload_data = scanner_->Scan(base_url); - preloader.TakePreloadData(std::move(preload_data)); - preloader.BrowsingTopicsRequestVerification( - &GetDocument(), test_case.expected_browsing_topics); - } - private: std::unique_ptr<HTMLPreloadScanner> scanner_; }; @@ -2021,42 +1990,4 @@ } } -TEST_F(HTMLPreloadScannerTest, testBrowsingTopics) { - WebRuntimeFeaturesBase::EnableTopicsAPI(true); - static constexpr bool kSecureDocumentUrl = true; - static constexpr bool kInsecureDocumentUrl = false; - - static constexpr char kSecureBaseURL[] = "https://example.test"; - static constexpr char kInsecureBaseURL[] = "http://example.test"; - - BrowsingTopicsWritableTestCase test_cases[] = { - // Insecure context - {kInsecureDocumentUrl, kSecureBaseURL, - "<img src='/image' browsingtopics>", - /*expected_browsing_topics=*/false}, - // No browsingtopics attribute - {kSecureDocumentUrl, kSecureBaseURL, "<img src='/image'>", - /*expected_browsing_topics=*/false}, - // Irrelevant element type - {kSecureDocumentUrl, kSecureBaseURL, - "<video poster='/image' browsingtopics>", - /*expected_browsing_topics=*/false}, - // Secure context, browsingtopics attribute - // Base (initial) URL does not affect SharedStorageWritable eligibility - {kSecureDocumentUrl, kInsecureBaseURL, - "<img src='/image' browsingtopics>", - /*expected_browsing_topics=*/true}, - // Secure context, browsingtopics attribute - {kSecureDocumentUrl, kSecureBaseURL, "<img src='/image' browsingtopics>", - /*expected_browsing_topics=*/true}, - }; - - for (const auto& test_case : test_cases) { - RunSetUp(kViewportDisabled, kPreloadEnabled, - network::mojom::ReferrerPolicy::kDefault, - /*use_secure_document_url=*/test_case.use_secure_document_url); - Test(test_case); - } -} - } // namespace blink
diff --git a/third_party/blink/renderer/core/html/parser/preload_request.cc b/third_party/blink/renderer/core/html/parser/preload_request.cc index 848b9fd..2f5b013 100644 --- a/third_party/blink/renderer/core/html/parser/preload_request.cc +++ b/third_party/blink/renderer/core/html/parser/preload_request.cc
@@ -140,12 +140,6 @@ UseCounter::Count(document, WebFeature::kSharedStorageAPI_Image_Attribute); } - bool browsing_topics = - browsing_topics_eligible_ && RuntimeEnabledFeatures::TopicsAPIEnabled() && - document->domWindow()->IsSecureContext() && - !document->domWindow()->GetSecurityOrigin()->IsOpaque(); - resource_request.SetBrowsingTopics(browsing_topics); - ResourceLoaderOptions options(document->domWindow()->GetCurrentWorld()); options.initiator_info = initiator_info; FetchParameters params(std::move(resource_request), options);
diff --git a/third_party/blink/renderer/core/html/parser/preload_request.h b/third_party/blink/renderer/core/html/parser/preload_request.h index 11bbb15f..f195db6d 100644 --- a/third_party/blink/renderer/core/html/parser/preload_request.h +++ b/third_party/blink/renderer/core/html/parser/preload_request.h
@@ -159,14 +159,6 @@ shared_storage_writable_opted_in_ = opted_in; } - // Set whether the preload request is eligible for the Browsing Topics API. - // - // See https://github.com/patcg-individual-drafts/topics/blob/main/README.md - // for the latest version of the Topics API explainer. - void SetBrowsingTopicsEligible(bool flag) { - browsing_topics_eligible_ = flag; - } - bool IsPotentiallyLCPElement() const { return is_potentially_lcp_element_; } bool IsPotentiallyLCPInfluencer() const { @@ -225,7 +217,6 @@ bool is_potentially_lcp_element_ = false; bool is_potentially_lcp_influencer_ = false; bool shared_storage_writable_opted_in_ = false; - bool browsing_topics_eligible_ = false; }; typedef Vector<std::unique_ptr<PreloadRequest>> PreloadRequestStream;
diff --git a/third_party/blink/renderer/core/loader/image_loader.cc b/third_party/blink/renderer/core/loader/image_loader.cc index 1ca92c4..402a7c3b 100644 --- a/third_party/blink/renderer/core/loader/image_loader.cc +++ b/third_party/blink/renderer/core/loader/image_loader.cc
@@ -507,14 +507,6 @@ !SecurityOrigin::Create(url)->IsOpaque(); resource_request.SetSharedStorageWritableOptedIn( shared_storage_writable_opted_in); - if (GetElement()->FastHasAttribute(html_names::kBrowsingtopicsAttr) && - RuntimeEnabledFeatures::TopicsAPIEnabled( - GetElement()->GetExecutionContext()) && - GetElement()->GetExecutionContext()->IsSecureContext()) { - resource_request.SetBrowsingTopics(true); - UseCounter::Count(document, mojom::blink::WebFeature::kTopicsAPIImg); - UseCounter::Count(document, mojom::blink::WebFeature::kTopicsAPIAll); - } } bool page_is_being_dismissed =
diff --git a/third_party/blink/renderer/core/paint/cull_rect_updater.cc b/third_party/blink/renderer/core/paint/cull_rect_updater.cc index 16a05e5..8d37692 100644 --- a/third_party/blink/renderer/core/paint/cull_rect_updater.cc +++ b/third_party/blink/renderer/core/paint/cull_rect_updater.cc
@@ -574,7 +574,20 @@ } if (object.HasLayer()) { - To<LayoutBoxModelObject>(object).Layer()->SetNeedsCullRectUpdate(); + PaintLayer* layer = To<LayoutBoxModelObject>(object).Layer(); + layer->SetNeedsCullRectUpdate(); + + // For change of scroll properties (e.g. contents rect), SetNeedsRepaint to + // force proactive update of cull rect because the ChangedEnough logic + // doesn't apply. In most cases, other code paths also SetNeedsRepaint + // on such changes, but not for the case where a containing-block-order + // descendant causing the change is not a paint-order descendant of the + // scroller. + if (properties_changed.scroll_changed >= + PaintPropertyChangeType::kChangedOnlySimpleValues) { + layer->SetNeedsRepaint(); + } + // Fixed-position cull rects depend on view clip. See // ComputeFragmentCullRect(). if (const auto* layout_view = DynamicTo<LayoutView>(object)) {
diff --git a/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc b/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc index 800c593..d0e167c 100644 --- a/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc +++ b/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc
@@ -848,8 +848,9 @@ // TODO(crbug.com/1309178): We should disable composited scrolling if the // snapshot's scrollers do not match the current scrollers. - DCHECK(full_context_.direct_compositing_reasons & - CompositingReason::kAnchorPosition); + DCHECK(object_.GetDocument().Printing() || + (full_context_.direct_compositing_reasons & + CompositingReason::kAnchorPosition)); state.direct_compositing_reasons = CompositingReason::kAnchorPosition; // TODO(crbug.com/1309178): Not using GetCompositorElementId() here
diff --git a/third_party/blink/renderer/core/paint/paint_property_tree_builder_test.cc b/third_party/blink/renderer/core/paint/paint_property_tree_builder_test.cc index 019a303..6d93bc0 100644 --- a/third_party/blink/renderer/core/paint/paint_property_tree_builder_test.cc +++ b/third_party/blink/renderer/core/paint/paint_property_tree_builder_test.cc
@@ -7461,4 +7461,30 @@ properties->VerticalScrollbarEffect()->OutputClip()); } +TEST_P(PaintPropertyTreeBuilderTest, PrintAnchorPositionInFrame) { + SetBodyInnerHTML("<iframe></iframe>"); + SetChildFrameHTML(R"HTML( + <div style="overflow: scroll; width: 100px; height: 100px"> + <div style="height: 80px"></div> + <div style="anchor-name: --a; width: 100px; height: 100px">A</div> + </div> + <div id="target" + style="position: absolute; position-anchor: --a; + width: 100px; height: 100px; bottom: anchor(--a top)">B</div> + )HTML"); + UpdateAllLifecyclePhasesForTest(); + + // Should not crash when printing. + GetFrame().StartPrinting(WebPrintParams(gfx::SizeF(100, 100))); + GetDocument().View()->UpdateLifecyclePhasesForPrinting(); + auto* properties = ChildDocument() + .getElementById(AtomicString("target")) + ->GetLayoutObject() + ->FirstFragment() + .PaintProperties(); + ASSERT_TRUE(properties); + ASSERT_TRUE(properties->AnchorPositionScrollTranslation()); + GetFrame().EndPrinting(); +} + } // namespace blink
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc index dd2771f..19303beb 100644 --- a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc +++ b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
@@ -3415,12 +3415,18 @@ String BaseRenderingContext2D::direction() const { HTMLCanvasElement* canvas = HostAsHTMLCanvasElement(); const CanvasRenderingContext2DState& state = GetState(); - if (state.GetDirection() == - CanvasRenderingContext2DState::kDirectionInherit && - canvas) { + bool value_is_inherit = + state.GetDirection() == CanvasRenderingContext2DState::kDirectionInherit; + if (value_is_inherit && canvas) { canvas->GetDocument().UpdateStyleAndLayoutTreeForElement( canvas, DocumentUpdateReason::kCanvas); } + UseCounter::Count(GetTopExecutionContext(), + WebFeature::kCanvasTextDirectionGet); + if (value_is_inherit) { + UseCounter::Count(GetTopExecutionContext(), + WebFeature::kCanvasTextDirectionGetInherit); + } return ToTextDirection(state.GetDirection(), canvas) == TextDirection::kRtl ? kRtlDirectionString : kLtrDirectionString; @@ -3428,7 +3434,11 @@ void BaseRenderingContext2D::setDirection(const String& direction_string) { CanvasRenderingContext2DState::Direction direction; + UseCounter::Count(GetTopExecutionContext(), + WebFeature::kCanvasTextDirectionSet); if (direction_string == kInheritDirectionString) { + UseCounter::Count(GetTopExecutionContext(), + WebFeature::kCanvasTextDirectionSetInherit); direction = CanvasRenderingContext2DState::kDirectionInherit; } else if (direction_string == kRtlDirectionString) { direction = CanvasRenderingContext2DState::kDirectionRTL;
diff --git a/third_party/blink/renderer/modules/content_extraction/ai_page_content_agent.cc b/third_party/blink/renderer/modules/content_extraction/ai_page_content_agent.cc index 6ef7815..aaaca658 100644 --- a/third_party/blink/renderer/modules/content_extraction/ai_page_content_agent.cc +++ b/third_party/blink/renderer/modules/content_extraction/ai_page_content_agent.cc
@@ -487,6 +487,7 @@ // frames. auto child_content_node = MaybeGenerateContentNode( *child_layout_view, *child_layout_view->Style()); + CHECK(child_content_node); WalkChildren(*child_layout_view, *child_content_node, *child_layout_view->Style()); content_node.children_nodes.emplace_back(std::move(child_content_node));
diff --git a/third_party/blink/renderer/modules/speech/BUILD.gn b/third_party/blink/renderer/modules/speech/BUILD.gn index 60a38d5..f62b927 100644 --- a/third_party/blink/renderer/modules/speech/BUILD.gn +++ b/third_party/blink/renderer/modules/speech/BUILD.gn
@@ -15,6 +15,8 @@ "speech_recognition.h", "speech_recognition_alternative.cc", "speech_recognition_alternative.h", + "speech_recognition_context.cc", + "speech_recognition_context.h", "speech_recognition_controller.cc", "speech_recognition_controller.h", "speech_recognition_error_event.cc",
diff --git a/third_party/blink/renderer/modules/speech/speech_recognition_context.cc b/third_party/blink/renderer/modules/speech/speech_recognition_context.cc new file mode 100644 index 0000000..e3f204bd --- /dev/null +++ b/third_party/blink/renderer/modules/speech/speech_recognition_context.cc
@@ -0,0 +1,23 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/renderer/modules/speech/speech_recognition_context.h" + +namespace blink { + +SpeechRecognitionContext* SpeechRecognitionContext::Create( + SpeechRecognitionPhraseList* phrases) { + return MakeGarbageCollected<SpeechRecognitionContext>(phrases); +} + +SpeechRecognitionContext::SpeechRecognitionContext( + SpeechRecognitionPhraseList* phrases) + : phrases_(phrases) {} + +void SpeechRecognitionContext::Trace(Visitor* visitor) const { + visitor->Trace(phrases_); + ScriptWrappable::Trace(visitor); +} + +} // namespace blink
diff --git a/third_party/blink/renderer/modules/speech/speech_recognition_context.h b/third_party/blink/renderer/modules/speech/speech_recognition_context.h new file mode 100644 index 0000000..24dd9a1f --- /dev/null +++ b/third_party/blink/renderer/modules/speech/speech_recognition_context.h
@@ -0,0 +1,37 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_SPEECH_SPEECH_RECOGNITION_CONTEXT_H_ +#define THIRD_PARTY_BLINK_RENDERER_MODULES_SPEECH_SPEECH_RECOGNITION_CONTEXT_H_ + +#include "third_party/blink/renderer/modules/modules_export.h" +#include "third_party/blink/renderer/modules/speech/speech_recognition_phrase_list.h" +#include "third_party/blink/renderer/platform/bindings/script_wrappable.h" +#include "third_party/blink/renderer/platform/heap/member.h" + +namespace blink { + +class MODULES_EXPORT SpeechRecognitionContext final : public ScriptWrappable { + DEFINE_WRAPPERTYPEINFO(); + + public: + static SpeechRecognitionContext* Create(SpeechRecognitionPhraseList* phrases); + + explicit SpeechRecognitionContext(SpeechRecognitionPhraseList* phrases); + ~SpeechRecognitionContext() override = default; + + // ScriptWrappable: + void Trace(Visitor* visitor) const override; + + // SpeechRecognitionContext: + SpeechRecognitionPhraseList* phrases() { return phrases_.Get(); } + void setPhrases(SpeechRecognitionPhraseList* phrases) { phrases_ = phrases; } + + private: + Member<SpeechRecognitionPhraseList> phrases_; +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_SPEECH_SPEECH_RECOGNITION_CONTEXT_H_
diff --git a/third_party/blink/renderer/modules/speech/speech_recognition_context.idl b/third_party/blink/renderer/modules/speech/speech_recognition_context.idl new file mode 100644 index 0000000..43d75ce68 --- /dev/null +++ b/third_party/blink/renderer/modules/speech/speech_recognition_context.idl
@@ -0,0 +1,13 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +[ + Exposed=Window, + RuntimeEnabled=MediaStreamTrackWebSpeech, + SecureContext +] +interface SpeechRecognitionContext { + constructor(SpeechRecognitionPhraseList phrases); + attribute SpeechRecognitionPhraseList phrases; +};
diff --git a/third_party/blink/renderer/platform/graphics/paint/cull_rect.cc b/third_party/blink/renderer/platform/graphics/paint/cull_rect.cc index ed410f8..91d1646 100644 --- a/third_party/blink/renderer/platform/graphics/paint/cull_rect.cc +++ b/third_party/blink/renderer/platform/graphics/paint/cull_rect.cc
@@ -269,6 +269,7 @@ const auto* last_transform = &source.Transform(); const auto* last_clip = &source.Clip(); std::pair<bool, bool> expanded(false, false); + bool scroll_cull_rect_affected_by_ancestor_clips = false; // For now effects (especially pixel-moving filters) are not considered in // this class. The client has to use infinite cull rect in the case. @@ -290,7 +291,11 @@ } last_clip = overflow_clip; - // We only keep the expanded status of the last scroll translation. + // We only keep scroll_cull_rect_affected_by_ancestor_clips and expanded of + // the last scroll translation. We will skip the ChangedEnough logic if the + // current cull rect doesn't fully cover the scroll container rect. + scroll_cull_rect_affected_by_ancestor_clips = + !rect_.Contains(scroll_translation->ScrollNode()->ContainerRect()); expanded = ApplyScrollTranslation(root.Transform(), *scroll_translation, expansion_ratio); last_transform = scroll_translation; @@ -321,7 +326,8 @@ rect_.set_height(kReasonablePixelLimit - rect_.y()); std::optional<gfx::Rect> expansion_bounds; - if (expanded.first || expanded.second) { + if (!scroll_cull_rect_affected_by_ancestor_clips && + (expanded.first || expanded.second)) { DCHECK(last_transform->ScrollNode()); expansion_bounds = last_transform->ScrollNode()->ContentsRect(); if (last_transform != &destination.Transform() || @@ -361,8 +367,11 @@ } } - if (old_cull_rect && !ChangedEnough(expanded, *old_cull_rect, - expansion_bounds, expansion_ratio)) { + // The edge-touching logic of ChangedEnough is not reliable if the scroll + // cull rect is affected by ancestor clips. + if (!scroll_cull_rect_affected_by_ancestor_clips && old_cull_rect && + !ChangedEnough(expanded, *old_cull_rect, expansion_bounds, + expansion_ratio)) { rect_ = old_cull_rect->Rect(); }
diff --git a/third_party/blink/renderer/platform/graphics/paint/cull_rect_test.cc b/third_party/blink/renderer/platform/graphics/paint/cull_rect_test.cc index f0e7ec7..5bc39d9 100644 --- a/third_party/blink/renderer/platform/graphics/paint/cull_rect_test.cc +++ b/third_party/blink/renderer/platform/graphics/paint/cull_rect_test.cc
@@ -504,31 +504,37 @@ state1, -3000, -5000, gfx::Rect(20, 10, 40, 50), gfx::Size(8000, 8000)); // Same as ApplyScrollTranslationPartialScrollingContents. - CullRect cull_rect1(gfx::Rect(0, 0, 50, 100)); + CullRect cull_rect1(gfx::Rect(0, 0, 80, 100)); EXPECT_TRUE(ApplyPaintProperties(cull_rect1, state1, state1, scroll_translation_state)); - EXPECT_EQ(gfx::Rect(1020, 3010, 4030, 4050), cull_rect1.Rect()); + EXPECT_EQ(gfx::Rect(1020, 3010, 4040, 4050), cull_rect1.Rect()); CullRect old_cull_rect(gfx::Rect(1000, 3100, 4000, 4000)); - CullRect cull_rect2(gfx::Rect(0, 0, 50, 100)); + CullRect cull_rect2(gfx::Rect(0, 0, 80, 100)); // Use old_cull_rect if the new cull rect didn't change enough. EXPECT_TRUE(ApplyPaintProperties(cull_rect2, state1, state1, scroll_translation_state, old_cull_rect)); EXPECT_EQ(old_cull_rect, cull_rect2); - old_cull_rect.Move(gfx::Vector2d(1000, 1000)); CullRect cull_rect3(gfx::Rect(0, 0, 50, 100)); - // Use the new cull rect if it changed enough. + // Use the new cull rect if it is mapped from a rect that is smaller than the + // scroll container rect. EXPECT_TRUE(ApplyPaintProperties(cull_rect3, state1, state1, scroll_translation_state, old_cull_rect)); - EXPECT_EQ(cull_rect1, cull_rect3); + EXPECT_EQ(gfx::Rect(1020, 3010, 4030, 4050), cull_rect3.Rect()); - CullRect cull_rect4 = CullRect::Infinite(); + old_cull_rect.Move(gfx::Vector2d(1000, 1000)); + CullRect cull_rect4(gfx::Rect(0, 0, 80, 100)); + // Use the new cull rect if it changed enough. EXPECT_TRUE(ApplyPaintProperties(cull_rect4, state1, state1, + scroll_translation_state, old_cull_rect)); + EXPECT_EQ(cull_rect1, cull_rect4); + + CullRect cull_rect5 = CullRect::Infinite(); + EXPECT_TRUE(ApplyPaintProperties(cull_rect5, state1, state1, scroll_translation_state)); - // This result differs from the first result in width (4030 vs 4040) - // because it's not clipped by the infinite input cull rect. - EXPECT_EQ(gfx::Rect(1020, 3010, 4040, 4050), cull_rect4.Rect()); + // This is the same as the first result. + EXPECT_EQ(gfx::Rect(1020, 3010, 4040, 4050), cull_rect5.Rect()); } TEST_F(CullRectTest, TransformUnderScrollTranslation) { @@ -543,29 +549,35 @@ // Cases below are the same as those in SingleScrollPartialScrollingContents, // except that the offset is adjusted with |t2|. - CullRect cull_rect1(gfx::Rect(0, 0, 50, 100)); + CullRect cull_rect1(gfx::Rect(0, 0, 80, 100)); EXPECT_TRUE(ApplyPaintProperties(cull_rect1, state1, state1, state2)); - EXPECT_EQ(gfx::Rect(-980, 10, 4030, 4050), cull_rect1.Rect()); + EXPECT_EQ(gfx::Rect(-980, 10, 4040, 4050), cull_rect1.Rect()); CullRect old_cull_rect(gfx::Rect(-980, 10, 4000, 4000)); - CullRect cull_rect2(gfx::Rect(0, 0, 50, 100)); + CullRect cull_rect2(gfx::Rect(0, 0, 80, 100)); // Use old_cull_rect if the new cull rect didn't change enough. EXPECT_TRUE( ApplyPaintProperties(cull_rect2, state1, state1, state2, old_cull_rect)); EXPECT_EQ(old_cull_rect, cull_rect2); - old_cull_rect.Move(gfx::Vector2d(1000, 1000)); CullRect cull_rect3(gfx::Rect(0, 0, 50, 100)); - // Use the new cull rect if it changed enough. + // Use new cull_rect if it is mapped from a rect that is smaller than the + // scroll container rect. EXPECT_TRUE( ApplyPaintProperties(cull_rect3, state1, state1, state2, old_cull_rect)); - EXPECT_EQ(cull_rect1, cull_rect3); + EXPECT_EQ(gfx::Rect(-980, 10, 4030, 4050), cull_rect3.Rect()); - CullRect cull_rect4 = CullRect::Infinite(); - EXPECT_TRUE(ApplyPaintProperties(cull_rect4, state1, state1, state2)); - // This result differs from the first result in height (7050 vs 7060) - // because it's not clipped by the infinite input cull rect. - EXPECT_EQ(gfx::Rect(-980, 10, 4040, 4050), cull_rect4.Rect()); + old_cull_rect.Move(gfx::Vector2d(1000, 1000)); + CullRect cull_rect4(gfx::Rect(0, 0, 80, 100)); + // Use the new cull rect if it changed enough. + EXPECT_TRUE( + ApplyPaintProperties(cull_rect4, state1, state1, state2, old_cull_rect)); + EXPECT_EQ(cull_rect1, cull_rect4); + + CullRect cull_rect5 = CullRect::Infinite(); + EXPECT_TRUE(ApplyPaintProperties(cull_rect5, state1, state1, state2)); + // This is the same as the first result. + EXPECT_EQ(gfx::Rect(-980, 10, 4040, 4050), cull_rect5.Rect()); } TEST_F(CullRectTest, TransformEscapingScroll) {
diff --git a/third_party/blink/renderer/platform/image-decoders/png/png_image_decoder.cc b/third_party/blink/renderer/platform/image-decoders/png/png_image_decoder.cc index bd6eb396..7480d839 100644 --- a/third_party/blink/renderer/platform/image-decoders/png/png_image_decoder.cc +++ b/third_party/blink/renderer/platform/image-decoders/png/png_image_decoder.cc
@@ -311,7 +311,8 @@ for (size_t chunk_index = 0; chunk_index < num_unknown_chunks; chunk_index++) { const auto& chunk = unknown_chunks[chunk_index]; - if (strcmp(reinterpret_cast<const char*>(chunk.name), "cLLi") == 0) { + if (strcmp(reinterpret_cast<const char*>(chunk.name), "cLLi") == 0 || + strcmp(reinterpret_cast<const char*>(chunk.name), "cLLI") == 0) { if (chunk.size != 8) { continue; } @@ -324,7 +325,8 @@ clli.emplace(max_cll_times_10000 / 10000, max_fall_times_10000 / 10000); continue; } - if (strcmp(reinterpret_cast<const char*>(chunk.name), "mDCv") == 0) { + if (strcmp(reinterpret_cast<const char*>(chunk.name), "mDCv") == 0 || + strcmp(reinterpret_cast<const char*>(chunk.name), "mDCV") == 0) { if (chunk.size != 24) { continue; }
diff --git a/third_party/blink/renderer/platform/image-decoders/png/png_image_reader.cc b/third_party/blink/renderer/platform/image-decoders/png/png_image_reader.cc index 1f3860d..761843d 100644 --- a/third_party/blink/renderer/platform/image-decoders/png/png_image_reader.cc +++ b/third_party/blink/renderer/platform/image-decoders/png/png_image_reader.cc
@@ -102,13 +102,13 @@ ignore_animation_(false) { png_ = png_create_read_struct(PNG_LIBPNG_VER_STRING, nullptr, pngFailed, nullptr); - // Configure the PNG encoder to always keep the cICP, cLLi and mDCv chunks if + // Configure the PNG encoder to always keep the cICP, cLLI and mDCV chunks if // present. - // TODO(veluca): when libpng starts supporting cICP/cLLi chunks explicitly, + // TODO(veluca): when libpng starts supporting cICP/cLLI chunks explicitly, // remove this code. png_set_keep_unknown_chunks( png_, PNG_HANDLE_CHUNK_ALWAYS, - reinterpret_cast<const png_byte*>("cICP\0cLLi\0mDCv"), 3); + reinterpret_cast<const png_byte*>("cICP\0cLLi\0mDCv\0cLLI\0mDCV"), 5); info_ = png_create_info_struct(png_); png_set_progressive_read_fn(png_, decoder_, nullptr, pngRowAvailable, pngFrameComplete);
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index 96ab93d..46d2097 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -4297,14 +4297,6 @@ public: true, status: "stable", }, - { - // This feature allows calling the Topics API via an image - // attribute. - name: "TopicsImgAPI", - base_feature: "none", - public: true, - status: "experimental", - }, // This is a killswitch for the behavior where popover.showPopover() and // dialog.showModal() throw DOM exceptions if the document isn't active. // This landed in M132, and can be removed in M134.
diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites index 8cc1088f..54d9fcb4 100644 --- a/third_party/blink/web_tests/VirtualTestSuites +++ b/third_party/blink/web_tests/VirtualTestSuites
@@ -1006,7 +1006,7 @@ "bases": ["wpt_internal/bluetooth", "external/wpt/bluetooth"], "args": ["--enable-features=WebBluetoothNewPermissionsBackend"], "owners": ["web-bluetooth@google.com"], - "expires": "Jan 1, 2025" + "expires": "Jan 1, 2026" }, { "prefix": "trust-tokens",
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 e32e9dc..ac2ba59 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
@@ -391290,10 +391290,6 @@ "999383c76960e327d40c079d70e4ced7f0dcefc6", [] ], - "style_type_svg-expected.txt": [ - "647b76e94cf894189bcdb43031e61e09ccddccce", - [] - ], "support": { "css-red.txt": [ "9ef04cbd12daf19dd8810cae8844bd22f3264926", @@ -400649,7 +400645,7 @@ ] }, "lint.ignore": [ - "7dea1c5e395552e3c9c3b79e8d43ea573370c337", + "759ef41ca2bc2f3595dc33d70b6b75c5cda7b798", [] ], "loading": { @@ -416225,6 +416221,10 @@ "d6c496179c062a42f44fadb1908f611056a83114", [] ], + "get-trusted-types-compliant-attribute-value-expected.txt": [ + "4428f99d8fc990b78876af10d3b5d4eee771e555", + [] + ], "idlharness.window-expected.txt": [ "9d36f476f0a42e895f5845aba7dd5098bb32ac08", [] @@ -416261,7 +416261,7 @@ [] ], "DOMWindowTimers-setTimeout-setInterval.js": [ - "7c72dc3e60abd889463840b7baf961bf7bbb530a", + "e03329cdce03fe2f809f8b4274841da4c899f96c", [] ], "HTMLScriptElement-internal-slot-support.html": [ @@ -416296,12 +416296,24 @@ "af6596b29a8080e5cd8d688d0d6933caf49a2090", [] ], + "block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-worker.js": [ + "456780247f2c329ddd20ebffe5f7b441e5451b28", + [] + ], + "block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-worker.js.headers": [ + "604e765da46d85fe8ab85d3097fe7c2cbe00a930", + [] + ], + "block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.js": [ + "f1218e1915a7966eac9caad003c5e01052f007a8", + [] + ], "frame-without-trusted-types.html": [ "25cf073e79fa48f4311c3729f0b39d9be2a64e7c", [] ], "helper.sub.js": [ - "dcde42a167341587b732cad1efd08c4c72582f7c", + "b680256b7a260655a1d90a63ea624725f23b43c3", [] ], "namespaces.js": [ @@ -420231,6 +420243,14 @@ "f09334677a6a42385949c262a163066d41f750d9", [] ], + "video-decoder-no-size-in-configure.https.any.worker_vp9_p0-expected.txt": [ + "1ee6b2591af810edf3c06eb8ac41483806fc9458", + [] + ], + "video-decoder-no-size-in-configure.https.any_vp9_p0-expected.txt": [ + "1ee6b2591af810edf3c06eb8ac41483806fc9458", + [] + ], "video-decoder.crossOriginIsolated.https.any.js.headers": [ "5f8621ef83660c66f0d037ea28fafefb558140f1", [] @@ -703206,7 +703226,7 @@ ] ], "block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.html": [ - "2f8a99a94294f4d1808b92aca9dfbcf3b52b6091", + "d80e34e782359d9fcec905ede481bb20024613d0", [ null, {} @@ -703227,7 +703247,7 @@ ] ], "block-string-assignment-to-Element-insertAdjacentHTML.html": [ - "af1f982e5a1fa562be28f33783fa076467b389b0", + "f2e89f0dc9f7a6bbe8b3e179c3940fbea6ad6a69", [ null, {} @@ -703269,7 +703289,7 @@ ] ], "block-string-assignment-to-Range-createContextualFragment.html": [ - "79111204934e689d2ce56fbb010cc3b261537c6b", + "55566589deadc94e62eff817bbefbb90c7574fb7", [ null, {} @@ -703422,6 +703442,13 @@ {} ] ], + "get-trusted-types-compliant-attribute-value.html": [ + "1f9a373cc87021a1279abb0661b683ed1016c351", + [ + null, + {} + ] + ], "idlharness.window.js": [ "07847fdb39ea21b3feeebc10501d3aa6bdf97881", [ @@ -728790,6 +728817,359 @@ } ] ], + "video-decoder-no-size-in-configure.https.any.js": [ + "3481b465f9eb431ce3dc799f4f1e625fbe3d7c0c", + [ + "webcodecs/video-decoder-no-size-in-configure.https.any.html?av1", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker" + ], + [ + "script", + "/webcodecs/video-encoder-utils.js" + ], + [ + "variant", + "?av1" + ], + [ + "variant", + "?vp8" + ], + [ + "variant", + "?vp9_p0" + ], + [ + "variant", + "?h264_avc" + ], + [ + "variant", + "?h264_annexb" + ] + ] + } + ], + [ + "webcodecs/video-decoder-no-size-in-configure.https.any.html?h264_annexb", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker" + ], + [ + "script", + "/webcodecs/video-encoder-utils.js" + ], + [ + "variant", + "?av1" + ], + [ + "variant", + "?vp8" + ], + [ + "variant", + "?vp9_p0" + ], + [ + "variant", + "?h264_avc" + ], + [ + "variant", + "?h264_annexb" + ] + ] + } + ], + [ + "webcodecs/video-decoder-no-size-in-configure.https.any.html?h264_avc", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker" + ], + [ + "script", + "/webcodecs/video-encoder-utils.js" + ], + [ + "variant", + "?av1" + ], + [ + "variant", + "?vp8" + ], + [ + "variant", + "?vp9_p0" + ], + [ + "variant", + "?h264_avc" + ], + [ + "variant", + "?h264_annexb" + ] + ] + } + ], + [ + "webcodecs/video-decoder-no-size-in-configure.https.any.html?vp8", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker" + ], + [ + "script", + "/webcodecs/video-encoder-utils.js" + ], + [ + "variant", + "?av1" + ], + [ + "variant", + "?vp8" + ], + [ + "variant", + "?vp9_p0" + ], + [ + "variant", + "?h264_avc" + ], + [ + "variant", + "?h264_annexb" + ] + ] + } + ], + [ + "webcodecs/video-decoder-no-size-in-configure.https.any.html?vp9_p0", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker" + ], + [ + "script", + "/webcodecs/video-encoder-utils.js" + ], + [ + "variant", + "?av1" + ], + [ + "variant", + "?vp8" + ], + [ + "variant", + "?vp9_p0" + ], + [ + "variant", + "?h264_avc" + ], + [ + "variant", + "?h264_annexb" + ] + ] + } + ], + [ + "webcodecs/video-decoder-no-size-in-configure.https.any.worker.html?av1", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker" + ], + [ + "script", + "/webcodecs/video-encoder-utils.js" + ], + [ + "variant", + "?av1" + ], + [ + "variant", + "?vp8" + ], + [ + "variant", + "?vp9_p0" + ], + [ + "variant", + "?h264_avc" + ], + [ + "variant", + "?h264_annexb" + ] + ] + } + ], + [ + "webcodecs/video-decoder-no-size-in-configure.https.any.worker.html?h264_annexb", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker" + ], + [ + "script", + "/webcodecs/video-encoder-utils.js" + ], + [ + "variant", + "?av1" + ], + [ + "variant", + "?vp8" + ], + [ + "variant", + "?vp9_p0" + ], + [ + "variant", + "?h264_avc" + ], + [ + "variant", + "?h264_annexb" + ] + ] + } + ], + [ + "webcodecs/video-decoder-no-size-in-configure.https.any.worker.html?h264_avc", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker" + ], + [ + "script", + "/webcodecs/video-encoder-utils.js" + ], + [ + "variant", + "?av1" + ], + [ + "variant", + "?vp8" + ], + [ + "variant", + "?vp9_p0" + ], + [ + "variant", + "?h264_avc" + ], + [ + "variant", + "?h264_annexb" + ] + ] + } + ], + [ + "webcodecs/video-decoder-no-size-in-configure.https.any.worker.html?vp8", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker" + ], + [ + "script", + "/webcodecs/video-encoder-utils.js" + ], + [ + "variant", + "?av1" + ], + [ + "variant", + "?vp8" + ], + [ + "variant", + "?vp9_p0" + ], + [ + "variant", + "?h264_avc" + ], + [ + "variant", + "?h264_annexb" + ] + ] + } + ], + [ + "webcodecs/video-decoder-no-size-in-configure.https.any.worker.html?vp9_p0", + { + "script_metadata": [ + [ + "global", + "window,dedicatedworker" + ], + [ + "script", + "/webcodecs/video-encoder-utils.js" + ], + [ + "variant", + "?av1" + ], + [ + "variant", + "?vp8" + ], + [ + "variant", + "?vp9_p0" + ], + [ + "variant", + "?h264_avc" + ], + [ + "variant", + "?h264_annexb" + ] + ] + } + ] + ], "video-decoder.crossOriginIsolated.https.any.js": [ "3232844a31b240eb0f46e1df7a71f3efdd76e1ce", [
diff --git a/third_party/blink/web_tests/external/wpt/browsing-topics/browsing-topics-permissions-policy-default.tentative.https.sub.html b/third_party/blink/web_tests/external/wpt/browsing-topics/browsing-topics-permissions-policy-default.tentative.https.sub.html index f37a8972..8467ab6 100644 --- a/third_party/blink/web_tests/external/wpt/browsing-topics/browsing-topics-permissions-policy-default.tentative.https.sub.html +++ b/third_party/blink/web_tests/external/wpt/browsing-topics/browsing-topics-permissions-policy-default.tentative.https.sub.html
@@ -3,9 +3,7 @@ <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src=/browsing-topics/resources/header-util.sub.js></script> - <script src=/browsing-topics/resources/load_img.sub.js></script> <script src=/browsing-topics/resources/permissions-policy-util.sub.js></script> - <script src=/common/utils.js></script> <script> 'use strict'; const header = 'Default permissions policy'; @@ -41,18 +39,6 @@ assert_equals(topics_header, EMPTY_TOPICS_HEADER); }, header + 'allows the \'Sec-Browsing-Topics\' header to be sent for the cross-origin topics fetch request.'); - promise_test(async t => { - let topics_header = await load_topics_image( - /*has_browsing_topics_attribute=*/true, /*is_same_origin=*/true); - assert_equals(topics_header, EMPTY_TOPICS_HEADER); - }, header + 'allows the \'Sec-Browsing-Topics\' header to be sent for the same-origin topics img request.'); - - promise_test(async t => { - let topics_header = await load_topics_image( - /*has_browsing_topics_attribute=*/true, /*is_same_origin=*/false); - assert_equals(topics_header, EMPTY_TOPICS_HEADER); - }, header + 'allows the \'Sec-Browsing-Topics\' header to be sent for the cross-origin topics img request.'); - async_test(t => { test_topics_iframe_navigation_header( t, /*has_browsing_topics_attribute=*/true, /*is_same_origin=*/true,
diff --git a/third_party/blink/web_tests/external/wpt/browsing-topics/browsing-topics-permissions-policy-none.tentative.https.sub.html b/third_party/blink/web_tests/external/wpt/browsing-topics/browsing-topics-permissions-policy-none.tentative.https.sub.html index 1a3737c..23bac438 100644 --- a/third_party/blink/web_tests/external/wpt/browsing-topics/browsing-topics-permissions-policy-none.tentative.https.sub.html +++ b/third_party/blink/web_tests/external/wpt/browsing-topics/browsing-topics-permissions-policy-none.tentative.https.sub.html
@@ -3,9 +3,7 @@ <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src=/browsing-topics/resources/header-util.sub.js></script> - <script src=/browsing-topics/resources/load_img.sub.js></script> <script src=/browsing-topics/resources/permissions-policy-util.sub.js></script> - <script src=/common/utils.js></script> <script> 'use strict'; const header = 'permissions policy header browsing-topics=()'; @@ -46,18 +44,6 @@ assert_equals(topics_header, "NO_TOPICS_HEADER"); }, header + 'disallows the \'Sec-Browsing-Topics\' header to be sent for the cross-origin topics fetch request.'); - promise_test(async t => { - let topics_header = await load_topics_image( - /*has_browsing_topics_attribute=*/true, /*is_same_origin=*/true); - assert_equals(topics_header, "NO_TOPICS_HEADER"); - }, header + 'disallows the \'Sec-Browsing-Topics\' header to be sent for the same-origin topics img request.'); - - promise_test(async t => { - let topics_header = await load_topics_image( - /*has_browsing_topics_attribute=*/true, /*is_same_origin=*/false); - assert_equals(topics_header, "NO_TOPICS_HEADER"); - }, header + 'disallows the \'Sec-Browsing-Topics\' header to be sent for the cross-origin topics img request.'); - async_test(t => { test_topics_iframe_navigation_header( t, /*has_browsing_topics_attribute=*/true, /*is_same_origin=*/true,
diff --git a/third_party/blink/web_tests/external/wpt/browsing-topics/browsing-topics-permissions-policy-self.tentative.https.sub.html b/third_party/blink/web_tests/external/wpt/browsing-topics/browsing-topics-permissions-policy-self.tentative.https.sub.html index 3d0de47..91ee4f0 100644 --- a/third_party/blink/web_tests/external/wpt/browsing-topics/browsing-topics-permissions-policy-self.tentative.https.sub.html +++ b/third_party/blink/web_tests/external/wpt/browsing-topics/browsing-topics-permissions-policy-self.tentative.https.sub.html
@@ -3,9 +3,7 @@ <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src=/browsing-topics/resources/header-util.sub.js></script> - <script src=/browsing-topics/resources/load_img.sub.js></script> <script src=/browsing-topics/resources/permissions-policy-util.sub.js></script> - <script src=/common/utils.js></script> <script> 'use strict'; const header = 'permissions policy header browsing-topics=(self)'; @@ -53,18 +51,6 @@ assert_equals(topics_header, "NO_TOPICS_HEADER"); }, header + 'disallows the \'Sec-Browsing-Topics\' header to be sent for the redirect of a topics fetch request, where the redirect has a cross-origin URL.'); - promise_test(async t => { - let topics_header = await load_topics_image( - /*has_browsing_topics_attribute=*/true, /*is_same_origin=*/true); - assert_equals(topics_header, EMPTY_TOPICS_HEADER); - }, header + 'allows the \'Sec-Browsing-Topics\' header to be sent for the same-origin topics img request.'); - - promise_test(async t => { - let topics_header = await load_topics_image( - /*has_browsing_topics_attribute=*/true, /*is_same_origin=*/false); - assert_equals(topics_header, "NO_TOPICS_HEADER"); - }, header + 'disallows the \'Sec-Browsing-Topics\' header to be sent for the cross-origin topics img request.'); - async_test(t => { test_topics_iframe_navigation_header( t, /*has_browsing_topics_attribute=*/true, /*is_same_origin=*/true,
diff --git a/third_party/blink/web_tests/external/wpt/browsing-topics/img-topics-attribute.tentative.https.html b/third_party/blink/web_tests/external/wpt/browsing-topics/img-topics-attribute.tentative.https.html deleted file mode 100644 index a87aea04..0000000 --- a/third_party/blink/web_tests/external/wpt/browsing-topics/img-topics-attribute.tentative.https.html +++ /dev/null
@@ -1,23 +0,0 @@ -<!doctype html> -<body> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - <script src=/common/utils.js></script> - <script src=/browsing-topics/resources/load_img.sub.js></script> - <script> - const EMPTY_TOPICS_HEADER = '();p=P0000000000000000000000000000000'; - - promise_test(async () => { - const topics_header = await load_topics_image( - /*has_browsing_topics_attribute=*/false, /*is_same_origin=*/true); - assert_equals(topics_header, 'NO_TOPICS_HEADER'); - }, 'test <img src=[url]></img>'); - promise_test(async () => { - const topics_header = await load_topics_image( - /*has_browsing_topics_attribute=*/true, /*is_same_origin=*/true); - assert_equals(topics_header, EMPTY_TOPICS_HEADER); - }, 'test <img browsingtopics src=[url]></img>'); - - </script> -</body> -
diff --git a/third_party/blink/web_tests/external/wpt/browsing-topics/resources/check-topics-request-header-in-img.py b/third_party/blink/web_tests/external/wpt/browsing-topics/resources/check-topics-request-header-in-img.py deleted file mode 100644 index d5ab1ab..0000000 --- a/third_party/blink/web_tests/external/wpt/browsing-topics/resources/check-topics-request-header-in-img.py +++ /dev/null
@@ -1,35 +0,0 @@ -def main(request, response): - """ - This file is intended to be requested twice to verify that the correct headers - are included for images. - 1. Make an initial request for an img. The `sec-browsing-topics` header will - be stored for step 2. The request will be redirected to an image. - 2. Make a request with the query parameter set. The stashed header from the - first step will be returned in the response content. - - Parameters: - `token` should be a unique UUID request parameter for the duration of this - request. It will get stored in the server stash and will be used later in - a query request. - `query` should be a request parameter indicating the request would like - to know the last `sec-browsing-topics` header with that token. - """ - - token = request.GET.first(b"token", None) - is_query = request.GET.first(b"query", None) is not None - topics_header = request.headers.get(b"sec-browsing-topics", b"NO_TOPICS_HEADER") - - queried_topics_header = b"NO_PREVIOUS_REQUEST" - with request.server.stash.lock: - value = request.server.stash.take(token) - if value is not None: - queried_topics_header = value - if not is_query: - request.server.stash.put(token, topics_header) - - if is_query: - return (200, [(b"Access-Control-Allow-Origin", b"*")], queried_topics_header) - - headers = [(b"Location", "pixel.png"), - (b"Access-Control-Allow-Origin", b"*")] - return 301, headers, b""
diff --git a/third_party/blink/web_tests/external/wpt/browsing-topics/resources/load_img.sub.js b/third_party/blink/web_tests/external/wpt/browsing-topics/resources/load_img.sub.js deleted file mode 100644 index 35da085..0000000 --- a/third_party/blink/web_tests/external/wpt/browsing-topics/resources/load_img.sub.js +++ /dev/null
@@ -1,39 +0,0 @@ -// Poll the server for the test result. -async function get_stashed_topics_header(url) { - for (let i = 0; i < 30; ++i) { - const response = await fetch(url + '&query'); - let stashed_topics_header = await response.text(); - - if (!stashed_topics_header || (stashed_topics_header === 'NO_PREVIOUS_REQUEST')) { - await new Promise(resolve => step_timeout(resolve, 100)); - continue; - } - return stashed_topics_header; - } - assert_true(false, 'timeout'); -} - -// Load an image and poll for the topics header that -// check-topics-request-header-in-img.py should stash. -function load_topics_image(has_browsing_topics_attribute, is_same_origin) { - let stash_id = token(); - const sameOriginSrc = `/browsing-topics/resources/` + - `check-topics-request-header-in-img.py?token=${stash_id}`; - const crossOriginSrc = 'https://{{domains[www]}}:{{ports[https][0]}}' + - sameOriginSrc; - - const url = is_same_origin ? sameOriginSrc : crossOriginSrc - - let image = document.createElement('img'); - image.src = url; - - if (has_browsing_topics_attribute) { - image.browsingTopics = true; - } - - image.decode().then(() => { - document.body.appendChild(image); - }); - - return get_stashed_topics_header(url); -} \ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/browsing-topics/resources/pixel.png b/third_party/blink/web_tests/external/wpt/browsing-topics/resources/pixel.png deleted file mode 100644 index 818c71d..0000000 --- a/third_party/blink/web_tests/external/wpt/browsing-topics/resources/pixel.png +++ /dev/null Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/css/css-overflow/clipped-scroller-add-content-ref.html b/third_party/blink/web_tests/external/wpt/css/css-overflow/clipped-scroller-add-content-ref.html new file mode 100644 index 0000000..d9edfb1 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-overflow/clipped-scroller-add-content-ref.html
@@ -0,0 +1,10 @@ +<!DOCTYPE html> +<div style="height: 300px; overflow: hidden"> + <div style="height: 20px"></div> + <div id="scroller" style="height: 300px; overflow: scroll"> + <div style="width: 300px; height: 400px; background: green"></div> + </div> +</div> +<script> +scroller.scrollTo(0, 100); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-overflow/clipped-scroller-add-content.html b/third_party/blink/web_tests/external/wpt/css/css-overflow/clipped-scroller-add-content.html new file mode 100644 index 0000000..d7f2eb1 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-overflow/clipped-scroller-add-content.html
@@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<link rel="help" href="https://drafts.csswg.org/css-overflow-3/#scroll-container"> +<link rel="help" href="https://crbug.com/385704990"> +<link rel="match" href="clipped-scroller-add-content-ref.html"> +<script src="/common/reftest-wait.js"></script> +<script src="/common/rendering-utils.js"></script> +<div style="height: 300px; overflow: hidden"> + <div style="height: 20px"></div> + <div id="scroller" style="height: 300px; overflow: scroll"> + <div id="content" style="position: relative; display: none; + width: 300px; height: 400px; background: red"> + <div style="height: 300px; background: green"></div> + <div style="height: 100px; background: green"></div> + </div> + </div> +</div> +<script> +waitForAtLeastOneFrame().then(() => { + content.style.display = 'block'; + waitForAtLeastOneFrame().then(() => { + scroller.scrollTo(0, 100); + takeScreenshot(); + }); +}); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-overflow/incremental-scroll-002-ref.html b/third_party/blink/web_tests/external/wpt/css/css-overflow/incremental-scroll-002-ref.html new file mode 100644 index 0000000..ea6f5575 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-overflow/incremental-scroll-002-ref.html
@@ -0,0 +1,14 @@ +<!DOCTYPE html> +<style> +div div { height: 15px; font-size: 10px; } +</style> +<div id="target" style="background: white; overflow: scroll; width: 500px; height: 500px"> +</div> +<script> +for (var i = 0; i < 400; i++) { + var div = document.createElement("div"); + div.textContent = i; + target.appendChild(div); +} +target.scrollTop = 6000; +</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-overflow/incremental-scroll-002.html b/third_party/blink/web_tests/external/wpt/css/css-overflow/incremental-scroll-002.html new file mode 100644 index 0000000..ee43074 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-overflow/incremental-scroll-002.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<link rel="help" href="https://drafts.csswg.org/css-overflow-3/#scroll-container"> +<link rel="match" href="incremental-scroll-002-ref.html"> +<script src="/common/reftest-wait.js"></script> +<script src="/common/rendering-utils.js"></script> +<style> +div div { height: 15px; font-size: 10px; } +</style> +<div id="target" style="background: white; overflow: scroll; width: 500px; height: 500px"> +</div> +<script> +for (var i = 0; i < 400; i++) { + var div = document.createElement("div"); + div.textContent = i; + target.appendChild(div); +} + +function scroll() { + var lastScrollTop = target.scrollTop; + target.scrollTop += 300; + if (target.scrollTop > lastScrollTop) { + waitForAtLeastOneFrame().then(scroll); + } else { + takeScreenshot(); + } +} + +waitForAtLeastOneFrame().then(scroll); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/lint.ignore b/third_party/blink/web_tests/external/wpt/lint.ignore index 7dea1c5e..759ef41c 100644 --- a/third_party/blink/web_tests/external/wpt/lint.ignore +++ b/third_party/blink/web_tests/external/wpt/lint.ignore
@@ -283,7 +283,7 @@ SET TIMEOUT: shadow-dom/Document-prototype-currentScript.html SET TIMEOUT: shadow-dom/scroll-to-the-fragment-in-shadow-tree.html SET TIMEOUT: shadow-dom/slotchange-event.html -SET TIMEOUT: trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.html +SET TIMEOUT: trusted-types/support/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.js SET TIMEOUT: trusted-types/support/DOMWindowTimers-setTimeout-setInterval.js SET TIMEOUT: user-timing/* SET TIMEOUT: web-animations/crashtests/reparent-animating-element-002.html
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.html b/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.html index 2f8a99a..d80e34e7 100644 --- a/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.html +++ b/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.html
@@ -5,71 +5,22 @@ <meta http-equiv="Content-Security-Policy" content="require-trusted-types-for 'script';"> <body> +<script src="support/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.js"> +</script> <script> - // setTimeout tests - // TrustedScript assignments do not throw. - async_test(t => { - window.timeoutTest = t; - let policy = createScript_policy(window, 'timeout'); - let script = policy.createScript("window.timeoutTest.done();"); - setTimeout(script); - }, "window.setTimeout assigned via policy (successful Script transformation)."); + const testSetupPolicy = trustedTypes.createPolicy("p", + { createScriptURL: s => s } + ); - // String assignments throw. - test(t => { - window.timeoutTestString = t.unreached_func(); - assert_throws_js(TypeError, _ => { - setTimeout("window.timeoutTestString();"); - }); - }, "`window.setTimeout(string)` throws."); + fetch_tests_from_worker(new Worker( + testSetupPolicy.createScriptURL( + "support/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-worker.js" - // Null assignment throws. - test(t => { - assert_throws_js(TypeError, _ => { - setTimeout(null); - }); - }, "`window.setTimeout(null)` throws."); + ))); - // setInterval tests - // TrustedScript assignments do not throw. - async_test(t => { - window.intervalTest = t; - let policy = createScript_policy(window, 'script'); - let script = policy.createScript("window.intervalTest.done();"); - setInterval(script); - }, "window.setInterval assigned via policy (successful Script transformation)."); + fetch_tests_from_worker(new SharedWorker( + testSetupPolicy.createScriptURL( + "support/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-worker.js" - // String assignments throw. - test(t => { - window.intervalTestString = t.unreached_func(); - assert_throws_js(TypeError, _ => { - setInterval("window.intervalTestString()"); - }); - }, "`window.setInterval(string)` throws."); - - // Null assignment throws. - test(t => { - assert_throws_js(TypeError, _ => { - setInterval(null); - }); - }, "`window.setInterval(null)` throws."); - - let policy = window.trustedTypes.createPolicy("default", { createScript: (x, _, sink) => { - if (x === "timeoutTestString") { - assert_equals(sink, 'Window setTimeout'); - } else if (x === "intervalTestString") { - assert_equals(sink, 'Window setInterval'); - } - return "0"; - }}); - // After default policy creation string assignment implicitly calls createScript. - test(t => { - setTimeout(INPUTS.SCRIPT); - setInterval(INPUTS.SCRIPT); - }, "`setTimeout(string)`, `setInterval(string)` via default policy (successful Script transformation)."); - // After default policy creation null assignment implicitly calls createScript. - test(t => { - setTimeout(null); - setInterval(null); - }, "`setTimeout(null)`, `setInterval(null)` via default policy (successful Script transformation)."); + ))); </script>
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.html b/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.html index af1f982e5..f2e89f0 100644 --- a/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.html +++ b/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.html
@@ -136,7 +136,18 @@ // After default policy creation string assignment implicitly calls createHTML. test(t => { - let p = window.trustedTypes.createPolicy("default", { createHTML: createHTMLJS }); + const kAssertSinkIsElementInsertAdjacentHTML = + "assertSinkIsElementInsertAdjacentHTML"; + + let p = window.trustedTypes.createPolicy("default", { createHTML: + (s, _, sink) => { + if (s == kAssertSinkIsElementInsertAdjacentHTML) { + assert_equals(sink, "Element insertAdjacentHTML"); + } + + return createHTMLJS(s); + } + }); var d = document.createElement('div'); container.appendChild(d); @@ -159,6 +170,8 @@ assert_equals(d.nextSibling.nodeType, Node.TEXT_NODE); assert_equals(d.nextSibling.data, RESULTS.HTML); + d.insertAdjacentHTML('afterend', kAssertSinkIsElementInsertAdjacentHTML); + while (container.firstChild) container.firstChild.remove(); }, "`insertAdjacentHTML(string)` assigned via default policy (successful HTML transformation).");
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Range-createContextualFragment.html b/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Range-createContextualFragment.html index 7911120..5556658 100644 --- a/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Range-createContextualFragment.html +++ b/third_party/blink/web_tests/external/wpt/trusted-types/block-string-assignment-to-Range-createContextualFragment.html
@@ -36,7 +36,13 @@ // After default policy creation string assignment implicitly calls createHTML test(t => { - let p = window.trustedTypes.createPolicy("default", { createHTML: createHTMLJS }, true); + let p = window.trustedTypes.createPolicy("default", { createHTML: + (value, _, sink) => { + assert_equals(sink, "Range createContextualFragment"); + return createHTMLJS(value); + } + }); + var range = document.createRange(); range.selectNodeContents(document.documentElement); var result = range.createContextualFragment(INPUTS.HTML);
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/get-trusted-types-compliant-attribute-value-expected.txt b/third_party/blink/web_tests/external/wpt/trusted-types/get-trusted-types-compliant-attribute-value-expected.txt new file mode 100644 index 0000000..4428f99 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/trusted-types/get-trusted-types-compliant-attribute-value-expected.txt
@@ -0,0 +1,12 @@ +This is a testharness.js-based test. +[FAIL] Test sink for div.setAttributeNS(null, onclick) + assert_equals: expected "Element onclick" but got "Element setAttributeNS" +[FAIL] Test sink for iframe.setAttributeNS(null, srcdoc) + assert_equals: expected "HTMLIFrameElement srcdoc" but got "Element setAttributeNS" +[FAIL] Test sink for script.setAttributeNS(null, src) + assert_equals: expected "HTMLScriptElement src" but got "Element setAttributeNS" +[FAIL] Test sink for script.setAttributeNS(null, href) + assert_equals: expected "SVGScriptElement href" but got "Element setAttributeNS" +[FAIL] Test sink for script.setAttributeNS(http://www.w3.org/1999/xlink, href) + assert_equals: expected "SVGScriptElement href" but got "Element setAttributeNS" +Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/get-trusted-types-compliant-attribute-value.html b/third_party/blink/web_tests/external/wpt/trusted-types/get-trusted-types-compliant-attribute-value.html new file mode 100644 index 0000000..1f9a373 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/trusted-types/get-trusted-types-compliant-attribute-value.html
@@ -0,0 +1,91 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <meta http-equiv="Content-Security-Policy" content="require-trusted-types-for 'script';"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="support/namespaces.js"></script> + <link rel="help" href="https://github.com/whatwg/dom/pull/1268"> + <link rel="help" href="https://w3c.github.io/trusted-types/dist/spec/#abstract-opdef-get-trusted-types-compliant-attribute-value"> +</head> +<body> +<script> + const kAssertSinkIsElementOnclick = "assertSinkIsElementOnclick"; + const kAssertSinkIsHTMLIframeElementSrcdoc = "assertSinkIsHTMLIframeElementSrcdoc"; + const kAssertSinkIsHTMLScriptElementSrc = "assertSinkIsHTMLScriptElementSrc"; + const kAssertSinkIsSVGScriptElementHref = "assertSinkIsSVGScriptElementHref"; + + trustedTypes.createPolicy("default", { + createScriptURL: (s, _, sink) => { + if (s == kAssertSinkIsHTMLScriptElementSrc) { + assert_equals(sink, "HTMLScriptElement src"); + } else if (s == kAssertSinkIsSVGScriptElementHref) { + assert_equals(sink, "SVGScriptElement href"); + } + + return s; + }, + createHTML: (s, _, sink) => { + if (kAssertSinkIsHTMLIframeElementSrcdoc) { + assert_equals(sink, "HTMLIFrameElement srcdoc"); + } + + return s; + }, + createScript: (s, _, sink) => { + if (s == kAssertSinkIsElementOnclick) { + assert_equals(sink, "Element onclick"); + } + + return s; + } + }); + + const kSinkTests = [ + { element: "div", + elementNamespace: NSURI_HTML, + attribute: "onclick", + attributeNamespace: null, + value: kAssertSinkIsElementOnclick, + }, + { element: "iframe", + elementNamespace: NSURI_HTML, + attribute: "srcdoc", + attributeNamespace: null, + value: kAssertSinkIsHTMLIframeElementSrcdoc, + }, + { element: "script", + elementNamespace: NSURI_HTML, + attribute: "src", + attributeNamespace: null, + value: kAssertSinkIsHTMLScriptElementSrc, + }, + { element: "script", + elementNamespace: NSURI_SVG, + attribute: "href", + attributeNamespace: null, + value: kAssertSinkIsSVGScriptElementHref, + }, + { element: "script", + elementNamespace: NSURI_SVG, + attribute: "href", + attributeNamespace: NSURI_XLINK, + value: kAssertSinkIsSVGScriptElementHref, + } + ]; + + for (const testData of kSinkTests) { + test(t => { + const element = document.createElementNS(testData.elementNamespace, + testData.element); + document.body.append(element); + element.setAttributeNS(testData.attributeNamespace, testData.attribute, + testData.value); + + }, `Test sink for ${testData.element}.setAttributeNS(${testData.attributeNamespace}, ${testData.attribute})` + ); + } +</script> +</body> +</html>
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/support/DOMWindowTimers-setTimeout-setInterval.js b/third_party/blink/web_tests/external/wpt/trusted-types/support/DOMWindowTimers-setTimeout-setInterval.js index 7c72dc3..e03329c 100644 --- a/third_party/blink/web_tests/external/wpt/trusted-types/support/DOMWindowTimers-setTimeout-setInterval.js +++ b/third_party/blink/web_tests/external/wpt/trusted-types/support/DOMWindowTimers-setTimeout-setInterval.js
@@ -1,5 +1,4 @@ -// `globalThis.toString()` is of the form "[Object <someName>]". -const globalThisStr = globalThis.toString().split(" ")[1].slice(0, -1); +const globalThisStr = getGlobalThisStr(); async_test(t => { globalThis.timeoutTrustedTest = t;
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/support/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-worker.js b/third_party/blink/web_tests/external/wpt/trusted-types/support/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-worker.js new file mode 100644 index 0000000..4567802 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/trusted-types/support/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-worker.js
@@ -0,0 +1,10 @@ +const testSetupPolicy = trustedTypes.createPolicy("p", { createScriptURL: s => s }); + +importScripts(testSetupPolicy.createScriptURL("/resources/testharness.js")); +importScripts(testSetupPolicy.createScriptURL("helper.sub.js")); + +importScripts(testSetupPolicy.createScriptURL( + "block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.js" +)); + +done();
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/support/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-worker.js.headers b/third_party/blink/web_tests/external/wpt/trusted-types/support/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-worker.js.headers new file mode 100644 index 0000000..604e765 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/trusted-types/support/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-worker.js.headers
@@ -0,0 +1 @@ +Content-Security-Policy: require-trusted-types-for 'script';
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/support/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.js b/third_party/blink/web_tests/external/wpt/trusted-types/support/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.js new file mode 100644 index 0000000..f1218e1 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/trusted-types/support/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.js
@@ -0,0 +1,77 @@ +const globalThisStr = getGlobalThisStr(); + +// setTimeout tests +// TrustedScript assignments do not throw. +async_test(t => { + globalThis.timeoutTest = t; + let policy = createScript_policy(globalThis, 'timeout'); + let script = policy.createScript("globalThis.timeoutTest.done();"); + setTimeout(script); +}, `${globalThisStr}.setTimeout assigned via policy (successful Script transformation).`); + +// String assignments throw. +test(t => { + globalThis.timeoutTestString = t.unreached_func(); + assert_throws_js(TypeError, _ => { + setTimeout("globalThis.timeoutTestString();"); + }); +}, `\`${globalThisStr}.setTimeout(string)\` throws.`); + +// Null assignment throws. +test(t => { + assert_throws_js(TypeError, _ => { + globalThis.setTimeout(null); + }); +}, `\`${globalThisStr}.setTimeout(null)\` throws.`); + +// setInterval tests +// TrustedScript assignments do not throw. +async_test(t => { + globalThis.intervalTest = t; + let policy = createScript_policy(globalThis, 'script'); + let script = policy.createScript("globalThis.intervalTest.done();"); + globalThis.setInterval(script); +}, `${globalThisStr}.setInterval assigned via policy (successful Script transformation).`); + +// String assignments throw. +test(t => { + globalThis.intervalTestString = t.unreached_func(); + assert_throws_js(TypeError, _ => { + globalThis.setInterval("globalThis.intervalTestString()"); + }); +}, `\`${globalThisStr}.setInterval(string)\` throws.`); + +// Null assignment throws. +test(t => { + assert_throws_js(TypeError, _ => { + globalThis.setInterval(null); + }); +}, `\`${globalThisStr}.setInterval(null)\` throws.`); + +const kTimeoutTestString = "timeoutTestString"; +const kIntervalTestString = "intervalTestString"; + +let policy = globalThis.trustedTypes.createPolicy("default", { createScript: (x, _, sink) => { + if (x === kTimeoutTestString) { + assert_equals(sink, `${globalThisStr} setTimeout`); + } else if (x === kIntervalTestString) { + assert_equals(sink, `${globalThisStr} setInterval`); + } + return "0"; +}}); +// After default policy creation string assignment implicitly calls createScript. +test(t => { + globalThis.setTimeout(INPUTS.SCRIPT); + globalThis.setInterval(INPUTS.SCRIPT); +}, `\`${globalThisStr}.setTimeout(string)\`, \`${globalThisStr}.setInterval(string)\` via default policy (successful Script transformation).`); +// After default policy creation null assignment implicitly calls createScript. +test(t => { + globalThis.setTimeout(null); + globalThis.setInterval(null); +}, `\`${globalThisStr}.setTimeout(null)\`, \`${globalThisStr}.setInterval(null)\` via default policy (successful Script transformation).`); + +test(t => { + globalThis.setTimeout(kTimeoutTestString); + globalThis.setInterval(kIntervalTestString); +}, `${globalThisStr}.setTimeout and ${globalThisStr}.setInterval pass the correct sink to the default policy` +)
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/support/helper.sub.js b/third_party/blink/web_tests/external/wpt/trusted-types/support/helper.sub.js index dcde42a..b680256 100644 --- a/third_party/blink/web_tests/external/wpt/trusted-types/support/helper.sub.js +++ b/third_party/blink/web_tests/external/wpt/trusted-types/support/helper.sub.js
@@ -165,3 +165,8 @@ let attr_node = elem.getAttributeNodeNS(attributeNamespace, attribute); assert_equals(attr_node.value + "", expected); } + +function getGlobalThisStr() { + // `globalThis.toString()` is of the form "[Object <someName>]". + return globalThis.toString().split(" ")[1].slice(0, -1); +}
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/video-decoder-no-size-in-configure.https.any.js b/third_party/blink/web_tests/external/wpt/webcodecs/video-decoder-no-size-in-configure.https.any.js new file mode 100644 index 0000000..3481b46 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webcodecs/video-decoder-no-size-in-configure.https.any.js
@@ -0,0 +1,77 @@ +// META: global=window,dedicatedworker +// META: script=/webcodecs/video-encoder-utils.js +// META: variant=?av1 +// META: variant=?vp8 +// META: variant=?vp9_p0 +// META: variant=?h264_avc +// META: variant=?h264_annexb + +var CODEC = null; +promise_setup(async () => { + CODEC = { + '?av1': { codec: 'av01.0.04M.08' }, + '?vp8': { codec: 'vp8' }, + '?vp9_p0': { codec: 'vp09.00.10.08' }, + '?h264_avc': { codec: 'avc1.42001E', avc: { format: 'avc' } }, + '?h264_annexb': { codec: 'avc1.42001E', avc: { format: 'annexb' } }, + }[location.search]; +}); + +promise_test(async t => { + let encoderConfig = { + ...CODEC, + width: 320, + height: 240, + }; + + const encoderSupport = await VideoEncoder.isConfigSupported(encoderConfig); + assert_implements_optional(encoderSupport.supported, `${encoderConfig.codec} encoder is unsupported`); + + let encodedResult; + const encoder = new VideoEncoder({ + output: (chunk, metadata) => { + encodedResult = { chunk, metadata }; + }, + error: e => { + t.unreached_func('Unexpected encoding error: ' + e); + }, + }); + + encoderConfig.framerate = 30; + encoderConfig.bitrate = 3000000; + encoder.configure(encoderConfig); + + let frame = createFrame(encoderConfig.width, encoderConfig.height, 0); + encoder.encode(frame); + frame.close(); + + await encoder.flush(); + encoder.close(); + + let decoderConfig = encodedResult.metadata.decoderConfig; + delete decoderConfig.codedWidth; + delete decoderConfig.codedHeight; + delete decoderConfig.displayAspectWidth; + delete decoderConfig.displayAspectHeight; + + const decoderSupport = await VideoDecoder.isConfigSupported(decoderConfig); + assert_implements_optional(decoderSupport.supported, `${decoderConfig.codec} decoder is unsupported`); + + let decodedResult; + const decoder = new VideoDecoder({ + output: frame => { + decodedResult = frame; + }, + error: e => { + t.unreached_func('Unexpected decoding error: ' + e); + }, + }); + + + decoder.configure(decoderConfig); + decoder.decode(encodedResult.chunk); + await decoder.flush(); + + assert_equals(decodedResult.codedWidth, encoderConfig.width, 'decoded frame width'); + assert_equals(decodedResult.codedHeight, encoderConfig.height, 'decoded frame height'); +}, 'Test configure() without setting width and height');
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/video-decoder-no-size-in-configure.https.any.worker_vp9_p0-expected.txt b/third_party/blink/web_tests/external/wpt/webcodecs/video-decoder-no-size-in-configure.https.any.worker_vp9_p0-expected.txt new file mode 100644 index 0000000..1ee6b259 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webcodecs/video-decoder-no-size-in-configure.https.any.worker_vp9_p0-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +[FAIL] Test configure() without setting width and height + assert_equals: decoded frame width expected 320 but got 384 +Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/webcodecs/video-decoder-no-size-in-configure.https.any_vp9_p0-expected.txt b/third_party/blink/web_tests/external/wpt/webcodecs/video-decoder-no-size-in-configure.https.any_vp9_p0-expected.txt new file mode 100644 index 0000000..1ee6b259 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/webcodecs/video-decoder-no-size-in-configure.https.any_vp9_p0-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +[FAIL] Test configure() without setting width and height + assert_equals: decoded frame width expected 320 but got 384 +Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/flag-specific/enable-skia-graphite/external/wpt/webxr/idlharness.https.window-expected.txt b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/external/wpt/webxr/idlharness.https.window-expected.txt deleted file mode 100644 index 98752f07..0000000 --- a/third_party/blink/web_tests/flag-specific/enable-skia-graphite/external/wpt/webxr/idlharness.https.window-expected.txt +++ /dev/null
@@ -1,32 +0,0 @@ -This is a testharness.js-based test. -Found 14 FAIL, 0 TIMEOUT, 0 NOTRUN. -[FAIL] WebGLRenderingContext includes WebGLRenderingContextOverloads: member names are unique - assert_true: member bufferData is unique expected true got false -[FAIL] XRSession interface: attribute trackedSources - assert_true: The prototype object must have a property "trackedSources" expected true got false -[FAIL] XRSession interface: xrSession must inherit property "trackedSources" with the proper type - assert_inherits: property "trackedSources" not found in prototype chain -[FAIL] XRFrame interface: attribute predictedDisplayTime - assert_true: The prototype object must have a property "predictedDisplayTime" expected true got false -[FAIL] XRInputSource interface: attribute skipRendering - assert_true: The prototype object must have a property "skipRendering" expected true got false -[FAIL] XRWebGLLayer interface: attribute fixedFoveation - assert_true: The prototype object must have a property "fixedFoveation" expected true got false -[FAIL] XRWebGLLayer interface: xrWebGLLayer must inherit property "fixedFoveation" with the proper type - assert_inherits: property "fixedFoveation" not found in prototype chain -[FAIL] XRPermissionStatus interface: existence and properties of interface object - assert_own_property: self does not have own property "XRPermissionStatus" expected property "XRPermissionStatus" missing -[FAIL] XRPermissionStatus interface object length - assert_own_property: self does not have own property "XRPermissionStatus" expected property "XRPermissionStatus" missing -[FAIL] XRPermissionStatus interface object name - assert_own_property: self does not have own property "XRPermissionStatus" expected property "XRPermissionStatus" missing -[FAIL] XRPermissionStatus interface: existence and properties of interface prototype object - assert_own_property: self does not have own property "XRPermissionStatus" expected property "XRPermissionStatus" missing -[FAIL] XRPermissionStatus interface: existence and properties of interface prototype object's "constructor" property - assert_own_property: self does not have own property "XRPermissionStatus" expected property "XRPermissionStatus" missing -[FAIL] XRPermissionStatus interface: existence and properties of interface prototype object's @@unscopables property - assert_own_property: self does not have own property "XRPermissionStatus" expected property "XRPermissionStatus" missing -[FAIL] XRPermissionStatus interface: attribute granted - assert_own_property: self does not have own property "XRPermissionStatus" expected property "XRPermissionStatus" missing -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/flag-specific/enable-skia-graphite/virtual/force-eager/external/wpt/measure-memory/redirect.client.https.window-expected.txt b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/virtual/force-eager/external/wpt/measure-memory/redirect.client.https.window-expected.txt new file mode 100644 index 0000000..b0caa7c --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/virtual/force-eager/external/wpt/measure-memory/redirect.client.https.window-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +[FAIL] performance.measureUserAgentSpecificMemory does not leak client redirected URL. + promise_test: Unhandled rejection with value: object "SecurityError: Failed to execute 'measureUserAgentSpecificMemory' on 'Performance': performance.measureUserAgentSpecificMemory is not available." +Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/flag-specific/enable-skia-graphite/virtual/force-eager/external/wpt/measure-memory/redirect.server.https.window-expected.txt b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/virtual/force-eager/external/wpt/measure-memory/redirect.server.https.window-expected.txt new file mode 100644 index 0000000..e7ffaebf --- /dev/null +++ b/third_party/blink/web_tests/flag-specific/enable-skia-graphite/virtual/force-eager/external/wpt/measure-memory/redirect.server.https.window-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +[FAIL] performance.measureUserAgentSpecificMemory does not leak server redirected URL. + promise_test: Unhandled rejection with value: object "SecurityError: Failed to execute 'measureUserAgentSpecificMemory' on 'Performance': performance.measureUserAgentSpecificMemory is not available." +Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/platform/linux/external/wpt/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-expected.txt b/third_party/blink/web_tests/platform/linux/external/wpt/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-expected.txt new file mode 100644 index 0000000..278967b --- /dev/null +++ b/third_party/blink/web_tests/platform/linux/external/wpt/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-expected.txt
@@ -0,0 +1,6 @@ +This is a testharness.js-based test. +[FAIL] DedicatedWorkerGlobalScope.setTimeout and DedicatedWorkerGlobalScope.setInterval pass the correct sink to the default policy + assert_equals: expected "DedicatedWorkerGlobalScope setTimeout" but got "WorkerGlobalScope setTimeout" +[FAIL] SharedWorkerGlobalScope.setTimeout and SharedWorkerGlobalScope.setInterval pass the correct sink to the default policy + assert_equals: expected "SharedWorkerGlobalScope setTimeout" but got "WorkerGlobalScope setTimeout" +Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/platform/mac/external/wpt/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-expected.txt b/third_party/blink/web_tests/platform/mac/external/wpt/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-expected.txt new file mode 100644 index 0000000..278967b --- /dev/null +++ b/third_party/blink/web_tests/platform/mac/external/wpt/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-expected.txt
@@ -0,0 +1,6 @@ +This is a testharness.js-based test. +[FAIL] DedicatedWorkerGlobalScope.setTimeout and DedicatedWorkerGlobalScope.setInterval pass the correct sink to the default policy + assert_equals: expected "DedicatedWorkerGlobalScope setTimeout" but got "WorkerGlobalScope setTimeout" +[FAIL] SharedWorkerGlobalScope.setTimeout and SharedWorkerGlobalScope.setInterval pass the correct sink to the default policy + assert_equals: expected "SharedWorkerGlobalScope setTimeout" but got "WorkerGlobalScope setTimeout" +Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/platform/win10/external/wpt/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-expected.txt b/third_party/blink/web_tests/platform/win10/external/wpt/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-expected.txt new file mode 100644 index 0000000..278967b --- /dev/null +++ b/third_party/blink/web_tests/platform/win10/external/wpt/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-expected.txt
@@ -0,0 +1,6 @@ +This is a testharness.js-based test. +[FAIL] DedicatedWorkerGlobalScope.setTimeout and DedicatedWorkerGlobalScope.setInterval pass the correct sink to the default policy + assert_equals: expected "DedicatedWorkerGlobalScope setTimeout" but got "WorkerGlobalScope setTimeout" +[FAIL] SharedWorkerGlobalScope.setTimeout and SharedWorkerGlobalScope.setInterval pass the correct sink to the default policy + assert_equals: expected "SharedWorkerGlobalScope setTimeout" but got "WorkerGlobalScope setTimeout" +Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/platform/win11-arm64/external/wpt/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-expected.txt b/third_party/blink/web_tests/platform/win11-arm64/external/wpt/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-expected.txt new file mode 100644 index 0000000..278967b --- /dev/null +++ b/third_party/blink/web_tests/platform/win11-arm64/external/wpt/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval-expected.txt
@@ -0,0 +1,6 @@ +This is a testharness.js-based test. +[FAIL] DedicatedWorkerGlobalScope.setTimeout and DedicatedWorkerGlobalScope.setInterval pass the correct sink to the default policy + assert_equals: expected "DedicatedWorkerGlobalScope setTimeout" but got "WorkerGlobalScope setTimeout" +[FAIL] SharedWorkerGlobalScope.setTimeout and SharedWorkerGlobalScope.setInterval pass the correct sink to the default policy + assert_equals: expected "SharedWorkerGlobalScope setTimeout" but got "WorkerGlobalScope setTimeout" +Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/virtual/stable/webexposed/element-instance-property-listing-expected.txt b/third_party/blink/web_tests/virtual/stable/webexposed/element-instance-property-listing-expected.txt index d2e582e..fab3936 100644 --- a/third_party/blink/web_tests/virtual/stable/webexposed/element-instance-property-listing-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/webexposed/element-instance-property-listing-expected.txt
@@ -692,7 +692,6 @@ property alt property attributionSrc property border - property browsingTopics property complete property crossOrigin property currentSrc
diff --git a/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt index d17468f..608b51a5 100644 --- a/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt
@@ -3895,7 +3895,6 @@ getter alt getter attributionSrc getter border - getter browsingTopics getter complete getter crossOrigin getter currentSrc @@ -3926,7 +3925,6 @@ setter alt setter attributionSrc setter border - setter browsingTopics setter crossOrigin setter decoding setter fetchPriority @@ -5006,7 +5004,6 @@ getter alt getter attributionSrc getter border - getter browsingTopics getter complete getter crossOrigin getter currentSrc @@ -5037,7 +5034,6 @@ setter alt setter attributionSrc setter border - setter browsingTopics setter crossOrigin setter decoding setter fetchPriority
diff --git a/third_party/blink/web_tests/webexposed/element-instance-property-listing-expected.txt b/third_party/blink/web_tests/webexposed/element-instance-property-listing-expected.txt index 7bd5528..48c1126 100644 --- a/third_party/blink/web_tests/webexposed/element-instance-property-listing-expected.txt +++ b/third_party/blink/web_tests/webexposed/element-instance-property-listing-expected.txt
@@ -728,7 +728,6 @@ property alt property attributionSrc property border - property browsingTopics property complete property crossOrigin property currentSrc
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt index 7ae30781c..4caa3060 100644 --- a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt +++ b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
@@ -4329,7 +4329,6 @@ getter alt getter attributionSrc getter border - getter browsingTopics getter complete getter crossOrigin getter currentSrc @@ -4360,7 +4359,6 @@ setter alt setter attributionSrc setter border - setter browsingTopics setter crossOrigin setter decoding setter fetchPriority @@ -5486,7 +5484,6 @@ getter alt getter attributionSrc getter border - getter browsingTopics getter complete getter crossOrigin getter currentSrc @@ -5517,7 +5514,6 @@ setter alt setter attributionSrc setter border - setter browsingTopics setter crossOrigin setter decoding setter fetchPriority
diff --git a/third_party/boringssl/src b/third_party/boringssl/src index 04c1992..5700c33 160000 --- a/third_party/boringssl/src +++ b/third_party/boringssl/src
@@ -1 +1 @@ -Subproject commit 04c19925b088e8b884080ee6bd3d771d40e3c3a9 +Subproject commit 5700c339249fd99180d9834c9cc0256e7e1cc6b9
diff --git a/third_party/dawn b/third_party/dawn index a15bad5..7f24ec9 160000 --- a/third_party/dawn +++ b/third_party/dawn
@@ -1 +1 @@ -Subproject commit a15bad593af06a881fbbbfcebf2e58c18e1cf6f1 +Subproject commit 7f24ec953f266a5a1ed320d571a74ed69ae0c3ea
diff --git a/third_party/devtools-frontend/src b/third_party/devtools-frontend/src index 97928d6..8f96d8b6 160000 --- a/third_party/devtools-frontend/src +++ b/third_party/devtools-frontend/src
@@ -1 +1 @@ -Subproject commit 97928d6f6cccc7bd47fb2afe0d3ddeed9cc9ef2a +Subproject commit 8f96d8b673f7b4a0479955ff573fbff1e014b23e
diff --git a/third_party/llvm-libc/src b/third_party/llvm-libc/src index b0de901..60b7db2 160000 --- a/third_party/llvm-libc/src +++ b/third_party/llvm-libc/src
@@ -1 +1 @@ -Subproject commit b0de9011b9f34818da12b1448f40e212f611afa3 +Subproject commit 60b7db20ace1cb750f8e9e06e7e9c7c6585ace42
diff --git a/third_party/perfetto b/third_party/perfetto index 16c0f5b..b01e3ae 160000 --- a/third_party/perfetto +++ b/third_party/perfetto
@@ -1 +1 @@ -Subproject commit 16c0f5bc196947725c1f24ef519c0bdc47b6222f +Subproject commit b01e3ae88f223ecfa865f46918688481f15f0865
diff --git a/third_party/skia b/third_party/skia index fe8bac8..8cfeb42 160000 --- a/third_party/skia +++ b/third_party/skia
@@ -1 +1 @@ -Subproject commit fe8bac8f2251b50ce93a62d044495d36713bbbef +Subproject commit 8cfeb42c62452da46fb5c6eef04a9a9c8c1d173a
diff --git a/third_party/updater/.gitignore b/third_party/updater/.gitignore index a82a97d..8c13070 100644 --- a/third_party/updater/.gitignore +++ b/third_party/updater/.gitignore
@@ -23,5 +23,30 @@ /chromium_win_x86_64/UpdaterSetup_test.exe /chromium_win_x86_64/cipd/UpdaterSetup_test.exe +/chrome_linux64_sans_iid/cipd/updater_test +/chrome_linux64_sans_iid/updater_test +/chrome_mac_universal_sans_iid/GoogleUpdater_test.app/ +/chrome_mac_universal_sans_iid/cipd/GoogleUpdater_test.app/ +/chrome_mac_universal_prod_sans_iid/GoogleUpdater.app/ +/chrome_mac_universal_prod_sans_iid/UpdaterSetup +/chrome_mac_universal_prod_sans_iid/cipd/GoogleUpdater.app/ +/chrome_mac_universal_prod_sans_iid/cipd/UpdaterSetup +/chrome_win_arm64_sans_iid/cipd/UpdaterSetup_test.exe +/chrome_win_x86_sans_iid/UpdaterSetup_test.exe +/chrome_win_x86_sans_iid/cipd/UpdaterSetup_test.exe +/chrome_win_x86_64_sans_iid/UpdaterSetup_test.exe +/chrome_win_x86_64_sans_iid/cipd/UpdaterSetup_test.exe +/chromium_linux64_sans_iid/cipd/updater_test +/chromium_linux64_sans_iid/updater_test +/chromium_mac_amd64_sans_iid/ChromiumUpdater_test.app/ +/chromium_mac_amd64_sans_iid/cipd/ChromiumUpdater_test.app/ +/chromium_mac_arm64_sans_iid/ChromiumUpdater_test.app/ +/chromium_mac_arm64_sans_iid/cipd/ChromiumUpdater_test.app/ +/chromium_win_arm64_sans_iid/cipd/UpdaterSetup_test.exe +/chromium_win_x86_sans_iid/UpdaterSetup_test.exe +/chromium_win_x86_sans_iid/cipd/UpdaterSetup_test.exe +/chromium_win_x86_64_sans_iid/UpdaterSetup_test.exe +/chromium_win_x86_64_sans_iid/cipd/UpdaterSetup_test.exe + # EdgeUpdater app /EdgeUpdater.app
diff --git a/third_party/updater/BUILD.gn b/third_party/updater/BUILD.gn index ff26f353..3b378d3b 100644 --- a/third_party/updater/BUILD.gn +++ b/third_party/updater/BUILD.gn
@@ -9,67 +9,83 @@ testonly = true sources = [] - if (is_win && is_chrome_branded) { - sources += [ - "chrome_win_arm64/cipd/UpdaterSetup_test.exe", - "chrome_win_x86/cipd/UpdaterSetup_test.exe", - "chrome_win_x86_64/cipd/UpdaterSetup_test.exe", - ] - } + foreach(arch_suffix, + [ + "", + "_sans_iid", + ]) { + if (is_win && is_chrome_branded) { + sources += [ + "chrome_win_arm64" + arch_suffix + "/cipd/UpdaterSetup_test.exe", + "chrome_win_x86" + arch_suffix + "/cipd/UpdaterSetup_test.exe", + "chrome_win_x86_64" + arch_suffix + "/cipd/UpdaterSetup_test.exe", + ] + } - if (is_win && !is_chrome_branded) { - sources += [ - "chromium_win_arm64/cipd/UpdaterSetup_test.exe", - "chromium_win_x86/cipd/UpdaterSetup_test.exe", - "chromium_win_x86_64/cipd/UpdaterSetup_test.exe", - ] - } + if (is_win && !is_chrome_branded) { + sources += [ + "chromium_win_arm64" + arch_suffix + "/cipd/UpdaterSetup_test.exe", + "chromium_win_x86" + arch_suffix + "/cipd/UpdaterSetup_test.exe", + "chromium_win_x86_64" + arch_suffix + "/cipd/UpdaterSetup_test.exe", + ] + } - if (is_mac && is_chrome_branded) { - sources += [ - "chrome_mac_universal/cipd/GoogleUpdater_test.app/Contents/Helpers/GoogleSoftwareUpdate.bundle/Contents/Helpers/ksadmin", - "chrome_mac_universal/cipd/GoogleUpdater_test.app/Contents/Helpers/GoogleSoftwareUpdate.bundle/Contents/Helpers/ksinstall", - "chrome_mac_universal/cipd/GoogleUpdater_test.app/Contents/Helpers/GoogleSoftwareUpdate.bundle/Contents/Info.plist", - "chrome_mac_universal/cipd/GoogleUpdater_test.app/Contents/Helpers/GoogleSoftwareUpdate.bundle/Contents/MacOS/GoogleSoftwareUpdate", - "chrome_mac_universal/cipd/GoogleUpdater_test.app/Contents/Helpers/GoogleSoftwareUpdate.bundle/Contents/Resources/GoogleSoftwareUpdateAgent.app/Contents/MacOS/GoogleSoftwareUpdateAgent", - "chrome_mac_universal/cipd/GoogleUpdater_test.app/Contents/Helpers/launcher", - "chrome_mac_universal/cipd/GoogleUpdater_test.app/Contents/Info.plist", - "chrome_mac_universal/cipd/GoogleUpdater_test.app/Contents/MacOS/GoogleUpdater_test", - "chrome_mac_universal/cipd/GoogleUpdater_test.app/Contents/PkgInfo", - ] - } + if (is_mac && is_chrome_branded) { + sources += [ + "chrome_mac_universal" + arch_suffix + "/cipd/GoogleUpdater_test.app/Contents/Helpers/GoogleSoftwareUpdate.bundle/Contents/Helpers/ksadmin", + "chrome_mac_universal" + arch_suffix + "/cipd/GoogleUpdater_test.app/Contents/Helpers/GoogleSoftwareUpdate.bundle/Contents/Helpers/ksinstall", + "chrome_mac_universal" + arch_suffix + "/cipd/GoogleUpdater_test.app/Contents/Helpers/GoogleSoftwareUpdate.bundle/Contents/Info.plist", + "chrome_mac_universal" + arch_suffix + "/cipd/GoogleUpdater_test.app/Contents/Helpers/GoogleSoftwareUpdate.bundle/Contents/MacOS/GoogleSoftwareUpdate", + "chrome_mac_universal" + arch_suffix + "/cipd/GoogleUpdater_test.app/Contents/Helpers/GoogleSoftwareUpdate.bundle/Contents/Resources/GoogleSoftwareUpdateAgent.app/Contents/MacOS/GoogleSoftwareUpdateAgent", + "chrome_mac_universal" + arch_suffix + + "/cipd/GoogleUpdater_test.app/Contents/Helpers/launcher", + "chrome_mac_universal" + arch_suffix + + "/cipd/GoogleUpdater_test.app/Contents/Info.plist", + "chrome_mac_universal" + arch_suffix + + "/cipd/GoogleUpdater_test.app/Contents/MacOS/GoogleUpdater_test", + "chrome_mac_universal" + arch_suffix + + "/cipd/GoogleUpdater_test.app/Contents/PkgInfo", + ] + } - if (is_mac && !is_chrome_branded) { - sources += [ - "chromium_mac_amd64/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Helpers/ksadmin", - "chromium_mac_amd64/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Helpers/ksinstall", - "chromium_mac_amd64/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Info.plist", - "chromium_mac_amd64/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/MacOS/ChromiumSoftwareUpdate", - "chromium_mac_amd64/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Resources/ChromiumSoftwareUpdateAgent.app/Contents/Info.plist", - "chromium_mac_amd64/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Resources/ChromiumSoftwareUpdateAgent.app/Contents/MacOS/ChromiumSoftwareUpdateAgent", - "chromium_mac_amd64/cipd/ChromiumUpdater_test.app/Contents/Helpers/launcher", - "chromium_mac_amd64/cipd/ChromiumUpdater_test.app/Contents/Info.plist", - "chromium_mac_amd64/cipd/ChromiumUpdater_test.app/Contents/MacOS/ChromiumUpdater_test", - "chromium_mac_amd64/cipd/ChromiumUpdater_test.app/Contents/PkgInfo", - "chromium_mac_arm64/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Helpers/ksadmin", - "chromium_mac_arm64/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Helpers/ksinstall", - "chromium_mac_arm64/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Info.plist", - "chromium_mac_arm64/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/MacOS/ChromiumSoftwareUpdate", - "chromium_mac_arm64/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Resources/ChromiumSoftwareUpdateAgent.app/Contents/Info.plist", - "chromium_mac_arm64/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Resources/ChromiumSoftwareUpdateAgent.app/Contents/MacOS/ChromiumSoftwareUpdateAgent", - "chromium_mac_arm64/cipd/ChromiumUpdater_test.app/Contents/Helpers/launcher", - "chromium_mac_arm64/cipd/ChromiumUpdater_test.app/Contents/Info.plist", - "chromium_mac_arm64/cipd/ChromiumUpdater_test.app/Contents/MacOS/ChromiumUpdater_test", - "chromium_mac_arm64/cipd/ChromiumUpdater_test.app/Contents/PkgInfo", - ] - } + if (is_mac && !is_chrome_branded) { + sources += [ + "chromium_mac_amd64" + arch_suffix + "/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Helpers/ksadmin", + "chromium_mac_amd64" + arch_suffix + "/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Helpers/ksinstall", + "chromium_mac_amd64" + arch_suffix + "/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Info.plist", + "chromium_mac_amd64" + arch_suffix + "/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/MacOS/ChromiumSoftwareUpdate", + "chromium_mac_amd64" + arch_suffix + "/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Resources/ChromiumSoftwareUpdateAgent.app/Contents/Info.plist", + "chromium_mac_amd64" + arch_suffix + "/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Resources/ChromiumSoftwareUpdateAgent.app/Contents/MacOS/ChromiumSoftwareUpdateAgent", + "chromium_mac_amd64" + arch_suffix + + "/cipd/ChromiumUpdater_test.app/Contents/Helpers/launcher", + "chromium_mac_amd64" + arch_suffix + + "/cipd/ChromiumUpdater_test.app/Contents/Info.plist", + "chromium_mac_amd64" + arch_suffix + "/cipd/ChromiumUpdater_test.app/Contents/MacOS/ChromiumUpdater_test", + "chromium_mac_amd64" + arch_suffix + + "/cipd/ChromiumUpdater_test.app/Contents/PkgInfo", + "chromium_mac_arm64" + arch_suffix + "/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Helpers/ksadmin", + "chromium_mac_arm64" + arch_suffix + "/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Helpers/ksinstall", + "chromium_mac_arm64" + arch_suffix + "/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Info.plist", + "chromium_mac_arm64" + arch_suffix + "/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/MacOS/ChromiumSoftwareUpdate", + "chromium_mac_arm64" + arch_suffix + "/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Resources/ChromiumSoftwareUpdateAgent.app/Contents/Info.plist", + "chromium_mac_arm64" + arch_suffix + "/cipd/ChromiumUpdater_test.app/Contents/Helpers/ChromiumSoftwareUpdate.bundle/Contents/Resources/ChromiumSoftwareUpdateAgent.app/Contents/MacOS/ChromiumSoftwareUpdateAgent", + "chromium_mac_arm64" + arch_suffix + + "/cipd/ChromiumUpdater_test.app/Contents/Helpers/launcher", + "chromium_mac_arm64" + arch_suffix + + "/cipd/ChromiumUpdater_test.app/Contents/Info.plist", + "chromium_mac_arm64" + arch_suffix + "/cipd/ChromiumUpdater_test.app/Contents/MacOS/ChromiumUpdater_test", + "chromium_mac_arm64" + arch_suffix + + "/cipd/ChromiumUpdater_test.app/Contents/PkgInfo", + ] + } - if (is_linux && is_chrome_branded) { - sources += [ "chrome_linux64/cipd/updater_test" ] - } + if (is_linux && is_chrome_branded) { + sources += [ "chrome_linux64" + arch_suffix + "/cipd/updater_test" ] + } - if (is_linux && !is_chrome_branded) { - sources += [ "chromium_linux64/cipd/updater_test" ] + if (is_linux && !is_chrome_branded) { + sources += [ "chromium_linux64" + arch_suffix + "/cipd/updater_test" ] + } } outputs = [ "$root_build_dir/old_updater/{{source_target_relative}}" ]
diff --git a/third_party/webrtc b/third_party/webrtc index 14e46ed6..b91e97f 160000 --- a/third_party/webrtc +++ b/third_party/webrtc
@@ -1 +1 @@ -Subproject commit 14e46ed65c828d39d438d925a21b080a5a0a6190 +Subproject commit b91e97f9da08f882db6081fbf39c627fa94d6686
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index b99b3b1..eb1f7cf 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -10952,7 +10952,10 @@ <int value="5233" label="InjectionMitigatedContextSubFrame"/> <int value="5234" label="InjectionMitigatedContextMainFrame"/> <int value="5235" label="CanvasTextDirectionConflict"/> - <int value="5236" label="TopicsAPIImg"/> + <int value="5236" label="CanvasTextDirectionGet"/> + <int value="5237" label="CanvasTextDirectionGetInherit"/> + <int value="5238" label="CanvasTextDirectionSet"/> + <int value="5239" label="CanvasTextDirectionSetInherit"/> </enum> <!-- LINT.ThenChange(//third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom:WebFeature) -->
diff --git a/tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS b/tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS index 57b349b..0e67d85 100644 --- a/tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS +++ b/tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS
@@ -20,7 +20,6 @@ yulunwu@chromium.org mek@chromium.org # arc -mhasank@chromium.org batoon@google.com youkichihosoi@chromium.org lingyufeng@chromium.org
diff --git a/tools/metrics/histograms/metadata/arc/OWNERS b/tools/metrics/histograms/metadata/arc/OWNERS index a8530dcc..ff3fb64 100644 --- a/tools/metrics/histograms/metadata/arc/OWNERS +++ b/tools/metrics/histograms/metadata/arc/OWNERS
@@ -2,7 +2,6 @@ # Prefer sending CLs to the owners listed below. # Use chromium-metrics-reviews@google.com as a backup. -mhasank@chromium.org batoon@google.com youkichihosoi@chromium.org lingyufeng@chromium.org
diff --git a/tools/metrics/histograms/metadata/arc/histograms.xml b/tools/metrics/histograms/metadata/arc/histograms.xml index 383243d..197a645a 100644 --- a/tools/metrics/histograms/metadata/arc/histograms.xml +++ b/tools/metrics/histograms/metadata/arc/histograms.xml
@@ -468,7 +468,7 @@ <histogram name="Arc.AppInstall.CacheHit" enum="BooleanCacheHit" expires_after="2025-05-04"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-commercial@google.com</owner> <summary> Records whether APK Cache had a hit or miss for an app install request. This @@ -684,7 +684,7 @@ enum="ArcAuthAccountCheckStatus" expires_after="never"> <!-- expires-never: Needed for long-term health monitoring of ARC provisioning. --> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> The status of account check before GMS Sign-in. {ArcUserTypes} @@ -696,7 +696,7 @@ expires_after="never"> <!-- expires-never: Needed for long-term health monitoring of ARC provisioning. --> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> Elapsed time waiting for the account status check to be completed. This is @@ -709,7 +709,7 @@ expires_after="never"> <!-- expires-never: Needed for long-term health monitoring of ARC provisioning. --> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> Number of attempts done while waiting for the check-in task to be completed. @@ -723,7 +723,7 @@ expires_after="never"> <!-- expires-never: Needed for long-term health monitoring of ARC provisioning. --> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> Elapsed time waiting for the check-in task to be completed. This is recorded @@ -745,7 +745,7 @@ <histogram name="Arc.Auth.MainAccountResolution.Status{ArcUserTypes}" enum="ArcAuthMainAccountResolutionStatus" expires_after="2025-04-27"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> Contains the status of main account resolution. {ArcUserTypes} @@ -759,7 +759,7 @@ expires_after="never"> <!-- expires-never: Needed for long-term health monitoring of ARC provisioning. --> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> Elapsed time waiting for network connection before starting other @@ -770,7 +770,6 @@ <histogram name="Arc.Auth.NumAccounts" units="count" expires_after="2025-01-12"> <owner>sinhak@google.com</owner> - <owner>mhasank@google.com</owner> <owner>arc-core@google.com</owner> <summary> Tracks the number of accounts in ARC. This is recorded only once per @@ -780,7 +779,7 @@ <histogram name="Arc.Auth.PercentAccounts" units="%" expires_after="2024-09-11"> <owner>sinhak@google.com</owner> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> Tracks the percentage of the accounts in session that are also available in @@ -792,7 +791,7 @@ enum="ArcAuthReauthReason" expires_after="never"> <!-- expires-never: Needed for long-term health monitoring of ARC provisioning. --> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> Records why ARC restarted the provisioning flow by reauthenticating and @@ -804,7 +803,7 @@ <histogram name="Arc.Auth.RequestAccountInfoResult.Primary" enum="ArcAuthCodeStatus" expires_after="2025-09-11"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> Contains the status of the account info and auth code fetch for primary @@ -815,7 +814,7 @@ <histogram name="Arc.Auth.RequestAccountInfoResult.Secondary" enum="ArcAuthCodeStatus" expires_after="2025-09-11"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> Contains the status of the account info and auth code fetch for secondary @@ -828,7 +827,7 @@ expires_after="never"> <!-- expires-never: Needed for long-term health monitoring of ARC provisioning. --> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> Elapsed time waiting for GMS sign-in to complete. {ArcUserTypes} @@ -840,7 +839,6 @@ name="Arc.CloudDpc{TimedCloudDpcOp}.TimeDelta{SuccessFailure}{ArcUserTypes}" units="ms" expires_after="2025-06-15"> <owner>batoon@google.com</owner> - <owner>mhasank@google.com</owner> <owner>arc-commercial@google.com</owner> <summary> The amount of time it took to complete the {TimedCloudDpcOp} @@ -854,7 +852,7 @@ <histogram name="Arc.CompanionLibraryApisCounter" enum="CompanionLibraryApisList" expires_after="2025-05-11"> <owner>sstan@google.com</owner> - <owner>mhasank@google.com</owner> + <owner>preranap@google.com</owner> <owner>arc-commercial@google.com</owner> <summary> Records the number of times ChromeOS Companion Library API called. Counter @@ -1556,7 +1554,7 @@ <histogram name="Arc.Net.DnsQuery.AndroidApi" enum="BooleanSuccess" expires_after="2025-05-25"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> Records the success result of DNS query resolution inside ARC. @@ -1565,7 +1563,7 @@ <histogram name="Arc.Net.DnsQuery.Other" enum="BooleanSuccess" expires_after="2025-05-25"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> Records the success result of DNS query resolution inside ARC. @@ -1650,7 +1648,7 @@ <histogram name="Arc.OptInAction" enum="ArcOptInAction" expires_after="2025-05-11"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> Arc OptIn action taken by user. Warning: this histogram was expired from @@ -1660,14 +1658,14 @@ <histogram name="Arc.OptInCancel" enum="ArcOptInCancel" expires_after="2025-10-07"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary>Arc OptIn cancelation reason.</summary> </histogram> <histogram name="Arc.OptInResult" enum="ArcOptInResult" expires_after="2025-05-25"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>khmel@google.com</owner> <owner>arc-core@google.com</owner> <summary>Arc OptIn flow result.</summary> @@ -1675,7 +1673,7 @@ <histogram name="Arc.OptInSilentAuthCode" enum="ArcOptInSilentAuthCode" expires_after="2025-05-18"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>khmel@google.com</owner> <owner>arc-core@google.com</owner> <summary> @@ -1685,7 +1683,7 @@ <histogram name="Arc.OptInSilentAuthCode.Reauthorization" enum="ArcOptInSilentAuthCode" expires_after="2025-05-25"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>khmel@google.com</owner> <owner>arc-core@google.com</owner> <summary> @@ -1696,7 +1694,7 @@ <histogram name="Arc.OptInSilentAuthCode.SecondaryAccount" enum="ArcOptInSilentAuthCode" expires_after="2025-05-25"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>khmel@google.com</owner> <owner>arc-core@google.com</owner> <summary> @@ -1708,7 +1706,7 @@ <histogram name="Arc.OptinTosLoadResult" enum="BooleanSuccess" expires_after="2025-06-01"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> Records the status of loading Play terms of service in in-session optin @@ -1846,7 +1844,7 @@ <histogram name="Arc.Policy.Keys" enum="ArcPolicyKey" expires_after="2025-05-25"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-commercial@google.com</owner> <summary> Record which sub-policies are included in the ArcPolicy object that @@ -1857,7 +1855,7 @@ <histogram name="Arc.Policy.SecondaryAccountAllowedInArc.Status" enum="SecureConnectPolicyApiStatus" expires_after="2025-12-12"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-commercial@google.com</owner> <summary> Records the result of secure connect api call made to download the value for @@ -1868,7 +1866,7 @@ <histogram name="Arc.Policy.SecondaryAccountAllowedInArc.TimeDelta" units="ms" expires_after="2025-12-12"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-commercial@google.com</owner> <summary> Latency of a SecondaryAccountAllowedInArc policy fetch request. This @@ -1880,7 +1878,7 @@ <histogram name="Arc.Policy.SecondaryAccountAllowedInArc.Value" enum="Boolean" expires_after="2025-12-12"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-commercial@google.com</owner> <summary> Records the value of SecondaryAccountAllowedInArc policy. This is recorded @@ -1913,7 +1911,7 @@ enum="ArcProvisioningCheckinResult" expires_after="never"> <!-- expires-never: Needed for long-term health monitoring of ARC provisioning. --> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> The result (success or the reason of failure) of GMS check-in operation. @@ -1937,7 +1935,7 @@ enum="ArcProvisioningDpcResult" expires_after="never"> <!-- expires-never: Needed for long-term health monitoring of ARC provisioning. --> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> The result (success or the reason of failure) of Cloud DPC provisioning. @@ -1951,7 +1949,6 @@ <!-- expires-never: Needed for long-term health monitoring of ARC provisioning. --> <owner>yaohuali@google.com</owner> - <owner>mhasank@google.com</owner> <owner>arc-commercial@google.com</owner> <summary> Elapsed time from the signing in process start to right before GMS sign-in @@ -1966,7 +1963,7 @@ enum="ArcProvisioningSigninResult" expires_after="never"> <!-- expires-never: Needed for long-term health monitoring of ARC provisioning. --> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> The result (success or the reason of failure) of GMS sign-in operation. @@ -1979,7 +1976,7 @@ enum="ArcProvisioningStatus" expires_after="never"> <!-- expires-never: Needed for long-term health monitoring of ARC provisioning. --> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> The status (success or error) of ARC++ provisioning. {ArcUserTypes} @@ -1989,7 +1986,7 @@ <histogram name="Arc.Provisioning.TimeDelta.Failure{ArcUserTypes}" units="ms" expires_after="2025-08-12"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> Elapsed time from the signing in process start to call to onSignInFailed. @@ -2003,7 +2000,7 @@ <histogram name="Arc.Provisioning.TimeDelta.Success{ArcUserTypes}" units="ms" expires_after="2025-06-22"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> Elapsed time from the signing in process start to successful call to @@ -2017,7 +2014,7 @@ <histogram name="Arc.Reauthorization.Result{ArcUserTypes}" enum="ArcProvisioningStatus" expires_after="2025-09-11"> - <owner>mhasank@google.com</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@gmail.com</owner> <summary> The result (success or the type of failure) of ARC reauthorization. @@ -2198,7 +2195,6 @@ expires_after="never"> <!-- expires-never: Needed for long-term health monitoring of ARC provisioning. --> - <owner>mhasank@chromium.org</owner> <owner>jhorwich@google.com</owner> <owner>khmel@google.com</owner> <owner>arc-core@google.com</owner> @@ -2285,7 +2281,7 @@ <histogram name="Arc.Supervision.Transition.Result" enum="ArcSupervisionTransitionResult" expires_after="2025-04-27"> - <owner>mhasank@chromium.org</owner> + <owner>jhorwich@google.com</owner> <owner>arc-commercial@google.com</owner> <summary> The result (success or the type of failure) of ARC supervision transition @@ -2295,7 +2291,7 @@ <histogram name="Arc.Supervision.Transition.Screen.Success.TimeDelta" units="ms" expires_after="2025-06-22"> - <owner>mhasank@chromium.org</owner> + <owner>jhorwich@google.com</owner> <owner>arc-commercial@google.com</owner> <summary> Elapsed time for a successful supervision transition, during which the @@ -2305,7 +2301,7 @@ <histogram name="Arc.Supervision.Transition.Screen.Successful" enum="BooleanSuccess" expires_after="2025-05-18"> - <owner>mhasank@chromium.org</owner> + <owner>jhorwich@google.com</owner> <owner>arc-commercial@google.com</owner> <summary> Whether supervision transition screen exited due to a successful transition. @@ -2314,7 +2310,7 @@ <histogram name="Arc.SystemHealth.Upgrade.PackagesDeleted" enum="BooleanDeletedOrNot" expires_after="2025-08-29"> - <owner>mhasank@chromium.org</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> Whether system package updates were deleted during ARC upgrade. @@ -2323,7 +2319,7 @@ <histogram name="Arc.SystemHealth.Upgrade.TimeDelta" units="ms" expires_after="2025-08-29"> - <owner>mhasank@chromium.org</owner> + <owner>jhorwich@google.com</owner> <owner>arc-core@google.com</owner> <summary> Time taken by ARC System Health Service to run upgrade hygiene tasks. @@ -2774,7 +2770,6 @@ <histogram name="Arc.VpnServiceBuilderCompatApisCounter" enum="VpnServiceBuilderCompatApisList" expires_after="2024-09-11"> - <owner>mhasank@google.com</owner> <owner>preranap@google.com</owner> <owner>arc-commercial@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/bookmarks/histograms.xml b/tools/metrics/histograms/metadata/bookmarks/histograms.xml index 3f32018e..558c89f 100644 --- a/tools/metrics/histograms/metadata/bookmarks/histograms.xml +++ b/tools/metrics/histograms/metadata/bookmarks/histograms.xml
@@ -718,7 +718,7 @@ </histogram> <histogram name="Bookmarks.UtilizationPerBookmark.OnProfileLoad.DaysSinceUsed" - units="Days" expires_after="2025-02-10"> + units="Days" expires_after="2025-06-22"> <owner>emshack@chromium.org</owner> <owner>chrome-collections@google.com</owner> <summary> @@ -795,7 +795,7 @@ </histogram> <histogram name="PowerBookmarks.SidePanel.ViewTypeShown" - enum="BookmarksSidePanelViewType" expires_after="2025-02-10"> + enum="BookmarksSidePanelViewType" expires_after="2025-06-22"> <owner>emshack@chromium.org</owner> <owner>chrome-desktop-sea@google.com</owner> <component>1457140</component>
diff --git a/tools/metrics/histograms/metadata/browsing_topics/enums.xml b/tools/metrics/histograms/metadata/browsing_topics/enums.xml index 58cb10c..0f0c1a3 100644 --- a/tools/metrics/histograms/metadata/browsing_topics/enums.xml +++ b/tools/metrics/histograms/metadata/browsing_topics/enums.xml
@@ -33,8 +33,6 @@ <int value="3" label="observe via fetch-like api"/> <int value="4" label="get via iframe attribute api"/> <int value="5" label="observe via iframe attribute api"/> - <int value="6" label="get via img attribute api"/> - <int value="7" label="observe via img attribute api"/> </enum> <enum name="BrowsingTopicsCalculatorResultStatus">
diff --git a/tools/metrics/histograms/metadata/chromeos/histograms.xml b/tools/metrics/histograms/metadata/chromeos/histograms.xml index 791fe66..f2242e6 100644 --- a/tools/metrics/histograms/metadata/chromeos/histograms.xml +++ b/tools/metrics/histograms/metadata/chromeos/histograms.xml
@@ -370,8 +370,8 @@ </histogram> <histogram name="ChromeOS.Camera.ConcurrentAccess" enum="Boolean" - expires_after="2025-02-10"> - <owner>dorahkim@google.com</owner> + expires_after="2025-06-22"> + <owner>wtlee@google.com</owner> <owner>chromeos-camera-eng@google.com</owner> <summary> Records when attempting to access a camera, whether Ash and Lacros are @@ -839,8 +839,8 @@ </histogram> <histogram name="ChromeOS.Camera.ModuleID" enum="PopularCamPeriphModuleID" - expires_after="2025-02-10"> - <owner>dorahkim@google.com</owner> + expires_after="2025-06-22"> + <owner>wtlee@google.com</owner> <owner>chromeos-camera-eng@google.com</owner> <summary> Records a camera's module id in a format of integer when a camera is open. @@ -851,7 +851,7 @@ <histogram name="ChromeOS.Camera.OpenDeviceClientType" enum="ChromeOSCameraClientType" expires_after="2025-06-22"> - <owner>dorahkim@chromium.org</owner> + <owner>wtlee@chromium.org</owner> <owner>chromeos-camera-eng@google.com</owner> <summary> Records which client type (e.g., Chrome, Android) is opening a camera
diff --git a/tools/metrics/histograms/metadata/media/histograms.xml b/tools/metrics/histograms/metadata/media/histograms.xml index b08c13b4..3b208a10 100644 --- a/tools/metrics/histograms/metadata/media/histograms.xml +++ b/tools/metrics/histograms/metadata/media/histograms.xml
@@ -6278,7 +6278,7 @@ </histogram> <histogram name="Media.VideoCapture.StreamShared" enum="Boolean" - expires_after="2025-02-09"> + expires_after="2025-06-22"> <owner>wtlee@chromium.org</owner> <owner>chromeos-camera-app-eng@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/others/histograms.xml b/tools/metrics/histograms/metadata/others/histograms.xml index f1bd2b4..48ff85b 100644 --- a/tools/metrics/histograms/metadata/others/histograms.xml +++ b/tools/metrics/histograms/metadata/others/histograms.xml
@@ -1898,6 +1898,24 @@ </summary> </histogram> +<histogram name="Ads.InterestGroup.SelectableBuyerAndSellerReportingIdsSize" + units="reporting_ids" expires_after="2025-05-11"> + <owner>orrb@google.com</owner> + <owner>privacy-sandbox-dev@chromium.org</owner> + <summary> + The number of selectableBuyerAndSellerReportingIds on each ad. This is + recorded once per ad for each ad in an interest group at the point at which + that interest group is joined, and once per ad for each ad in an interest + group that updates its ads as part of an interest group update. This metric + records the size of the selectableBuyerAndSellerReportingIds field on each + ad, even if selectableBuyerAndSellerReportingIds is empty (size=0), but not + if the selectableBuyerAndSellerReportingIds field is omitted. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + </summary> +</histogram> + <histogram name="Ads.InterestGroup.ServerAuction.AdAuctionDataLoadTime" units="ms" expires_after="2025-06-22"> <owner>behamilton@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/sharing/histograms.xml b/tools/metrics/histograms/metadata/sharing/histograms.xml index 0b4427d7..acf6023 100644 --- a/tools/metrics/histograms/metadata/sharing/histograms.xml +++ b/tools/metrics/histograms/metadata/sharing/histograms.xml
@@ -305,9 +305,9 @@ <owner>wenyufu@chromium.org</owner> <owner>src/chrome/browser/share/OWNERS</owner> <summary> - The time to download the favicon as the image preview for sharing an link - using Android share sheet. Recorded when sharing a link with Android share - sheet only. + The time to download the favicon as the image preview or processing the + provided preview image as URI, for sharing an link using Android share + sheet. Recorded when sharing a link with Android share sheet only. </summary> </histogram>
diff --git a/tools/metrics/histograms/metadata/tab/histograms.xml b/tools/metrics/histograms/metadata/tab/histograms.xml index bf9918c..51b8236 100644 --- a/tools/metrics/histograms/metadata/tab/histograms.xml +++ b/tools/metrics/histograms/metadata/tab/histograms.xml
@@ -336,7 +336,7 @@ </histogram> <histogram name="Tab.Organization.Declutter.DeclutterTabCount" units="tabs" - expires_after="2025-02-10"> + expires_after="2025-06-22"> <owner>emshack@chromium.org</owner> <owner>shibalik@chromium.org</owner> <owner>chrome-desktop-ui-sea@google.com</owner> @@ -358,7 +358,7 @@ </histogram> <histogram name="Tab.Organization.Declutter.ExcludedTabCount" units="tabs" - expires_after="2025-02-10"> + expires_after="2025-06-22"> <owner>emshack@chromium.org</owner> <owner>shibalik@chromium.org</owner> <owner>chrome-desktop-ui-sea@google.com</owner> @@ -369,7 +369,7 @@ </histogram> <histogram name="Tab.Organization.Declutter.TotalTabCount" units="tabs" - expires_after="2025-02-10"> + expires_after="2025-06-22"> <owner>emshack@chromium.org</owner> <owner>shibalik@chromium.org</owner> <owner>chrome-desktop-ui-sea@google.com</owner> @@ -381,7 +381,7 @@ </histogram> <histogram name="Tab.Organization.Declutter.TotalUsageCount" units="units" - expires_after="2025-02-10"> + expires_after="2025-06-22"> <owner>emshack@chromium.org</owner> <owner>shibalik@chromium.org</owner> <owner>chrome-desktop-ui-sea@google.com</owner> @@ -392,7 +392,7 @@ </histogram> <histogram name="Tab.Organization.Declutter.Trigger.BucketedCTR" - enum="TabOrganizationDeclutterTriggerCTRBucket" expires_after="2025-02-10"> + enum="TabOrganizationDeclutterTriggerCTRBucket" expires_after="2025-06-22"> <owner>emshack@chromium.org</owner> <owner>shibalik@chromium.org</owner> <owner>chrome-desktop-ui-sea@google.com</owner> @@ -405,7 +405,7 @@ </histogram> <histogram name="Tab.Organization.Declutter.Trigger.Outcome" - enum="TabOrganizationTriggerOutcome" expires_after="2025-02-10"> + enum="TabOrganizationTriggerOutcome" expires_after="2025-06-22"> <owner>emshack@chromium.org</owner> <owner>shibalik@chromium.org</owner> <owner>chrome-desktop-ui-sea@google.com</owner> @@ -495,7 +495,7 @@ </histogram> <histogram name="Tab.Organization.SelectorCTR" - enum="TabOrganizationSelectorCTREvent" expires_after="2025-02-10"> + enum="TabOrganizationSelectorCTREvent" expires_after="2025-06-22"> <owner>emshack@chromium.org</owner> <owner>shibalik@chromium.org</owner> <owner>chrome-desktop-ui-sea@google.com</owner> @@ -1807,7 +1807,7 @@ </histogram> <histogram name="Tabs.ActiveCountAtStartup" units="tabs" - expires_after="2025-05-11"> + expires_after="2025-12-12"> <owner>alionadangla@chromium.org</owner> <owner>lpromero@chromium.org</owner> <owner>chromeleon@google.com</owner> @@ -1884,7 +1884,7 @@ </summary> </histogram> -<histogram name="Tabs.CountAtResume2" units="tabs" expires_after="2025-06-08"> +<histogram name="Tabs.CountAtResume2" units="tabs" expires_after="2025-12-12"> <owner>marq@chromium.org</owner> <owner>olivierrobin@chromium.org</owner> <summary> @@ -1893,7 +1893,7 @@ </summary> </histogram> -<histogram name="Tabs.CountAtStartup" units="tabs" expires_after="2025-06-22"> +<histogram name="Tabs.CountAtStartup" units="tabs" expires_after="2025-12-12"> <owner>marq@chromium.org</owner> <owner>chromeleon@google.com</owner> <summary> @@ -1902,7 +1902,7 @@ </summary> </histogram> -<histogram name="Tabs.CountAtStartup2" units="tabs" expires_after="2025-06-22"> +<histogram name="Tabs.CountAtStartup2" units="tabs" expires_after="2025-12-12"> <owner>marq@chromium.org</owner> <owner>chromeleon@google.com</owner> <summary> @@ -1924,7 +1924,7 @@ </histogram> <histogram name="Tabs.DroppedDuplicatesCountOn{Occasion}" units="tabs" - expires_after="2025-06-22"> + expires_after="2025-12-12"> <owner>lpromero@google.com</owner> <owner>chromeleon@google.com</owner> <summary> @@ -1953,7 +1953,7 @@ </histogram> <histogram name="Tabs.DuplicatesCountAtStartup" units="tabs" - expires_after="2025-06-22"> + expires_after="2025-12-12"> <owner>ewannpv@chromium.org</owner> <owner>lpromero@google.com</owner> <owner>chromeleon@google.com</owner> @@ -2012,7 +2012,7 @@ </histogram> <histogram name="Tabs.InactiveCountAtStartup" units="tabs" - expires_after="2025-05-11"> + expires_after="2025-12-12"> <owner>alionadangla@chromium.org</owner> <owner>lpromero@chromium.org</owner> <owner>chromeleon@google.com</owner> @@ -2145,7 +2145,7 @@ </histogram> <histogram name="Tabs.OldCountAtStartup2" units="tabs" - expires_after="2025-02-08"> + expires_after="2025-12-12"> <owner>alionadangla@chromium.org</owner> <owner>lpromero@chromium.org</owner> <owner>chromeleon@google.com</owner> @@ -2351,7 +2351,7 @@ </histogram> <histogram name="Tabs.PinnedCountAtStartup" units="tabs" - expires_after="2025-05-11"> + expires_after="2025-12-12"> <owner>ewannpv@chromium.org</owner> <owner>chromeleon@google.com</owner> <summary>[iOS] The number of pinned tabs opened at cold launch.</summary> @@ -2444,7 +2444,7 @@ </histogram> <histogram name="Tabs.RestoredFromInactiveCount" units="tabs" - expires_after="2025-05-11"> + expires_after="2025-12-12"> <owner>lpromero@google.com</owner> <owner>chromeleon@google.com</owner> <summary> @@ -3398,7 +3398,7 @@ </histogram> <histogram name="Tabs.TimeSinceCreationAtStartup" enum="IOSAllOpenTabsAge" - expires_after="2025-05-11"> + expires_after="2025-12-12"> <owner>ewannpv@chromium.org</owner> <owner>chromeleon@google.com</owner> <summary> @@ -3408,7 +3408,7 @@ </histogram> <histogram name="Tabs.UnusedCountAtStartup2" units="tabs" - expires_after="2025-02-08"> + expires_after="2025-12-12"> <owner>ewannpv@chromium.org</owner> <owner>chromeleon@google.com</owner> <summary>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index 3f06b87..96304434 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -5,8 +5,8 @@ "full_remote_path": "perfetto-luci-artifacts/79e2dcdef714a3d7f6e09a115cd9fba0c04c7689/linux-arm64/trace_processor_shell" }, "win": { - "hash": "bf8b9be3b101f3bb51eb4f9442181e5214b477d4", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/38d6e838e2477a1aab2aa65edc52b727f50cb61d/trace_processor_shell.exe" + "hash": "ab90aa37d45d42812c9fcdb447fe67503471484d", + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/b01e3ae88f223ecfa865f46918688481f15f0865/trace_processor_shell.exe" }, "linux_arm": { "hash": "f92983e30310bbb0af7a96b2e23484a0e561de42", @@ -21,8 +21,8 @@ "full_remote_path": "perfetto-luci-artifacts/79e2dcdef714a3d7f6e09a115cd9fba0c04c7689/mac-arm64/trace_processor_shell" }, "linux": { - "hash": "a7b07497a9a38534d069aa83eb511c74b0d4d054", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/38d6e838e2477a1aab2aa65edc52b727f50cb61d/trace_processor_shell" + "hash": "9a89b235e7d59306def49b2719c6bfbd9dc500e3", + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/b01e3ae88f223ecfa865f46918688481f15f0865/trace_processor_shell" } }, "power_profile.sql": {
diff --git a/ui/android/BUILD.gn b/ui/android/BUILD.gn index 5383fcc8..aa23d211 100644 --- a/ui/android/BUILD.gn +++ b/ui/android/BUILD.gn
@@ -547,6 +547,7 @@ android_library("ui_java_test_support") { testonly = true sources = [ + "javatests/src/org/chromium/ui/listmenu/ListMenuTestUtils.java", "javatests/src/org/chromium/ui/test/transit/SoftKeyboardCondition.java", "javatests/src/org/chromium/ui/test/transit/SoftKeyboardElement.java", "javatests/src/org/chromium/ui/test/util/BlankUiTestActivity.java", @@ -595,6 +596,7 @@ "junit/res/font/custom_font.xml", "junit/res/layout/inflated_view.xml", "junit/res/layout/layout_view_builder_test.xml", + "junit/res/layout/list_menu_button_unittest.xml", "junit/res/layout/main_view.xml", "junit/res/values/strings.xml", "junit/res/values/styles.xml", @@ -638,6 +640,7 @@ "junit/src/org/chromium/ui/dragdrop/DropDataProviderImplTest.java", "junit/src/org/chromium/ui/drawable/AnimationLooperTest.java", "junit/src/org/chromium/ui/drawable/StateListDrawableBuilderTest.java", + "junit/src/org/chromium/ui/listmenu/ListMenuHostUnitTest.java", "junit/src/org/chromium/ui/modaldialog/ModalDialogManagerTest.java", "junit/src/org/chromium/ui/modaldialog/PendingDialogContainerTest.java", "junit/src/org/chromium/ui/modelutil/LazyConstructionPropertyMcpTest.java",
diff --git a/ui/android/java/res/values/attrs.xml b/ui/android/java/res/values/attrs.xml index 906ef4e9..0e0bde7 100644 --- a/ui/android/java/res/values/attrs.xml +++ b/ui/android/java/res/values/attrs.xml
@@ -59,9 +59,11 @@ <attr name="menuMaxWidth" format="reference|dimension" /> <attr name="menuVerticalOverlapAnchor" format="boolean" /> <attr name="menuHorizontalOverlapAnchor" format="boolean" /> - <!-- Used to specify if a menu button is positioned at the start or at - the end of a layout so the correct menu popup anim file can be applied. - The default is set to true --> + <!-- Used to specify if a menu button is positioned at the start or at the end of a layout + so the correct menu popup anim file can be applied. If none is set, the menu will be + positioned based on the space available around the anchor; if one of menuPositionedAt* + is set, menu will be forced to position as setting. Cannot be set to True together. --> + <attr name="menuPositionedAtStart" format="boolean" /> <attr name="menuPositionedAtEnd" format="boolean" /> </declare-styleable> </resources>
diff --git a/ui/android/java/src/org/chromium/ui/listmenu/ListMenuHost.java b/ui/android/java/src/org/chromium/ui/listmenu/ListMenuHost.java index acdb8f5..37e7076 100644 --- a/ui/android/java/src/org/chromium/ui/listmenu/ListMenuHost.java +++ b/ui/android/java/src/org/chromium/ui/listmenu/ListMenuHost.java
@@ -14,6 +14,7 @@ import android.view.ViewParent; import org.chromium.base.ObserverList; +import org.chromium.base.ResettersForTesting; import org.chromium.build.annotations.NullUnmarked; import org.chromium.build.annotations.Nullable; import org.chromium.ui.R; @@ -32,6 +33,20 @@ default void onPopupMenuDismissed() {} } + @FunctionalInterface + interface PopupMenuHelper { + /** + * Called when the popup menu is requested to be shown or dismissed, then inject a test + * value. + * + * @param menu The popup menu owned by the ListMenuHost. + * @return The menu to be owned during test. + */ + AnchoredPopupWindow injectPopupMenu(@Nullable AnchoredPopupWindow menu); + } + + private static ListMenuHost.PopupMenuHelper sPopupMenuHelperForTesting; + private final View mView; private final boolean mMenuVerticalOverlapAnchor; private final boolean mMenuHorizontalOverlapAnchor; @@ -44,7 +59,8 @@ private @Nullable ListMenuDelegate mDelegate; private ObserverList<PopupMenuShownListener> mPopupListeners = new ObserverList<>(); private boolean mTryToFitLargestItem; - private boolean mPositionedAtEnd; + private final boolean mPositionedAtStart; + private final boolean mPositionedAtEnd; /** * Creates a new {@link ListMenuHost}. @@ -64,7 +80,11 @@ a.getBoolean(R.styleable.ListMenuButton_menuHorizontalOverlapAnchor, true); mMenuVerticalOverlapAnchor = a.getBoolean(R.styleable.ListMenuButton_menuVerticalOverlapAnchor, true); - mPositionedAtEnd = a.getBoolean(R.styleable.ListMenuButton_menuPositionedAtEnd, true); + mPositionedAtStart = a.getBoolean(R.styleable.ListMenuButton_menuPositionedAtStart, false); + mPositionedAtEnd = a.getBoolean(R.styleable.ListMenuButton_menuPositionedAtEnd, false); + + assert !(mPositionedAtStart && mPositionedAtEnd) + : "menuPositionedAtStart and menuPositionedAtEnd are both true."; a.recycle(); } @@ -89,6 +109,11 @@ public void dismiss() { if (mPopupMenu != null) { mPopupMenu.dismiss(); + mPopupMenu = null; + + if (sPopupMenuHelperForTesting != null) { + mPopupMenu = sPopupMenuHelperForTesting.injectPopupMenu(null); + } } } @@ -131,6 +156,11 @@ new ColorDrawable(Color.TRANSPARENT), contentView, mDelegate.getRectProvider(mView)); + + if (sPopupMenuHelperForTesting != null) { + mPopupMenu = sPopupMenuHelperForTesting.injectPopupMenu(mPopupMenu); + } + mPopupMenu.setVerticalOverlapAnchor(mMenuVerticalOverlapAnchor); mPopupMenu.setHorizontalOverlapAnchor(mMenuHorizontalOverlapAnchor); mPopupMenu.setMaxWidth(mMenuMaxWidth); @@ -140,7 +170,10 @@ mPopupMenu.setDesiredContentWidth(menu.getMaxItemWidth() + lateralPadding); } mPopupMenu.setFocusable(true); - mPopupMenu.setLayoutObserver(this); + mPopupMenu.setAnimateFromAnchor(true); + if (mPositionedAtStart || mPositionedAtEnd) { + mPopupMenu.setLayoutObserver(this); + } mPopupMenu.addOnDismissListener( () -> { mPopupMenu = null; @@ -176,8 +209,7 @@ if (mPositionedAtEnd) { mPopupMenu.setAnimationStyle( positionBelow ? R.style.EndIconMenuAnim : R.style.EndIconMenuAnimBottom); - - } else { + } else if (mPositionedAtStart) { mPopupMenu.setAnimationStyle( positionBelow ? R.style.StartIconMenuAnim : R.style.StartIconMenuAnimBottom); } @@ -211,4 +243,9 @@ } } } + + static void setMenuChangedListenerForTesting(PopupMenuHelper listener) { + sPopupMenuHelperForTesting = listener; + ResettersForTesting.register(() -> sPopupMenuHelperForTesting = null); + } }
diff --git a/ui/android/javatests/src/org/chromium/ui/listmenu/ListMenuTestUtils.java b/ui/android/javatests/src/org/chromium/ui/listmenu/ListMenuTestUtils.java new file mode 100644 index 0000000..08806ab --- /dev/null +++ b/ui/android/javatests/src/org/chromium/ui/listmenu/ListMenuTestUtils.java
@@ -0,0 +1,39 @@ +// Copyright 2025 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.ui.listmenu; + +import org.mockito.Mockito; + +import org.chromium.base.Callback; +import org.chromium.ui.widget.AnchoredPopupWindow; + +/** Test utilities for ListMenu. */ +public final class ListMenuTestUtils { + + /** + * Set the callback to capture the current popup window when its shown / dismissed and return + * the Mockito spy. This is useful for features that wants to verify the menu properties within + * the menu. + * + * Example usage: + * <pre> + * {@code + * public void myTest() { + * captureListMenuHostSpy(host -> mSpyPopupMenu = host); + * // Call some method that shows the menu + * assertNotNull(mSpyPopupMenu); + * + * verify(mSpyListMenu).setMaxWidth(anyInt()); + * } + */ + public static void captorPopupWindowSpy(Callback<AnchoredPopupWindow> popupWindowCallback) { + ListMenuHost.setMenuChangedListenerForTesting( + menu -> { + if (menu != null) menu = Mockito.spy(menu); + popupWindowCallback.onResult(menu); + return menu; + }); + } +}
diff --git a/ui/android/junit/res/layout/list_menu_button_unittest.xml b/ui/android/junit/res/layout/list_menu_button_unittest.xml new file mode 100644 index 0000000..cbd60757 --- /dev/null +++ b/ui/android/junit/res/layout/list_menu_button_unittest.xml
@@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +Copyright 2025 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="wrap_content" + android:layout_height="wrap_content"> + + <org.chromium.ui.listmenu.ListMenuButton + android:id="@+id/button_default" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@null" + android:src="@android:drawable/btn_default" /> + + <org.chromium.ui.listmenu.ListMenuButton + android:id="@+id/button_menu_start" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@null" + android:src="@android:drawable/btn_default" + app:menuPositionedAtStart="true" /> + + <org.chromium.ui.listmenu.ListMenuButton + android:id="@+id/button_menu_end" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@null" + android:src="@android:drawable/btn_default" + app:menuPositionedAtEnd="true" /> + +</LinearLayout>
diff --git a/ui/android/junit/src/org/chromium/ui/listmenu/ListMenuHostUnitTest.java b/ui/android/junit/src/org/chromium/ui/listmenu/ListMenuHostUnitTest.java new file mode 100644 index 0000000..b4af7df1 --- /dev/null +++ b/ui/android/junit/src/org/chromium/ui/listmenu/ListMenuHostUnitTest.java
@@ -0,0 +1,114 @@ +// Copyright 2025 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.ui.listmenu; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.Mockito.atLeastOnce; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +import android.view.View; +import android.widget.FrameLayout; + +import androidx.test.ext.junit.rules.ActivityScenarioRule; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Spy; +import org.robolectric.shadows.ShadowLooper; + +import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.ui.R; +import org.chromium.ui.base.TestActivity; +import org.chromium.ui.widget.AnchoredPopupWindow; + +/** Unit test for {@link ListMenuHost}. */ +@RunWith(BaseRobolectricTestRunner.class) +public class ListMenuHostUnitTest { + + @Rule + public ActivityScenarioRule<TestActivity> mActivityScenarioRule = + new ActivityScenarioRule<>(TestActivity.class); + + private TestActivity mActivity; + private @Spy AnchoredPopupWindow mSpyPopupMenu; + private ListMenuDelegate mMenuDelegate; + + @Before + public void setup() { + mActivityScenarioRule.getScenario().onActivity(activity -> mActivity = activity); + mActivity.setContentView(R.layout.list_menu_button_unittest); + ListMenuTestUtils.captorPopupWindowSpy(host -> mSpyPopupMenu = host); + + // The menu will not be tested in the test body. + mMenuDelegate = + new ListMenuDelegate() { + @Override + public ListMenu getListMenu() { + return new ListMenu() { + @Override + public View getContentView() { + return new FrameLayout(mActivity); + } + + @Override + public void addContentViewClickRunnable(Runnable runnable) {} + + @Override + public int getMaxItemWidth() { + return 0; + } + }; + } + }; + } + + @Test + public void checkAnchorAttributes() { + ListMenuButton btnDefault = mActivity.findViewById(R.id.button_default); + btnDefault.setDelegate(mMenuDelegate); + + showMenuForButton(btnDefault); + verify(mSpyPopupMenu, times(0)).setAnimationStyle(anyInt()); + dismissMenu(btnDefault); + } + + @Test + public void checkAnchorAttributes_End() { + ListMenuButton btnMenuEnd = mActivity.findViewById(R.id.button_menu_end); + btnMenuEnd.setDelegate(mMenuDelegate); + + showMenuForButton(btnMenuEnd); + verify(mSpyPopupMenu, atLeastOnce()).setAnimationStyle(R.style.EndIconMenuAnim); + dismissMenu(btnMenuEnd); + } + + @Test + public void checkAnchorAttributes_Start() { + ListMenuButton btnMenuStart = mActivity.findViewById(R.id.button_menu_start); + btnMenuStart.setDelegate(mMenuDelegate); + + showMenuForButton(btnMenuStart); + verify(mSpyPopupMenu, atLeastOnce()).setAnimationStyle(R.style.StartIconMenuAnim); + dismissMenu(btnMenuStart); + } + + private void showMenuForButton(ListMenuButton button) { + button.setAttachedToWindowForTesting(); + button.showMenu(); + ShadowLooper.idleMainLooper(); + assertNotNull(mSpyPopupMenu); + } + + private void dismissMenu(ListMenuButton button) { + button.dismiss(); + ShadowLooper.idleMainLooper(); + assertNull(mSpyPopupMenu); + } +}
diff --git a/ui/android/junit/src/org/chromium/ui/listmenu/OWNERS b/ui/android/junit/src/org/chromium/ui/listmenu/OWNERS new file mode 100644 index 0000000..96ebe9c --- /dev/null +++ b/ui/android/junit/src/org/chromium/ui/listmenu/OWNERS
@@ -0,0 +1 @@ +file://ui/android/java/src/org/chromium/ui/listmenu/OWNERS
diff --git a/ui/gfx/paint_vector_icon.cc b/ui/gfx/paint_vector_icon.cc index f47d538..5f94c4ba 100644 --- a/ui/gfx/paint_vector_icon.cc +++ b/ui/gfx/paint_vector_icon.cc
@@ -441,10 +441,7 @@ VectorIconSource(const std::string& definition, int dip_size, SkColor color) : CanvasImageSource(Size(dip_size, dip_size)), - data_(VectorIcon::EmptyIcon(), - dip_size, - color, - &VectorIcon::EmptyIcon()), + data_(kNoneIcon, dip_size, color, &kNoneIcon), path_(PathFromSource(definition)) {} VectorIconSource(const VectorIconSource&) = delete; @@ -513,13 +510,15 @@ : icon(icon), dip_size(dip_size), color(color), - badge_icon(badge_icon ? *badge_icon : VectorIcon::EmptyIcon()) { + badge_icon(badge_icon ? *badge_icon : kNoneIcon) { if (dip_size == 0) this->dip_size = GetDefaultSizeOfVectorIcon(icon); } IconDescription::~IconDescription() {} +const VectorIcon kNoneIcon = {}; + void PaintVectorIcon(Canvas* canvas, const VectorIcon& icon, SkColor color) { PaintVectorIcon(canvas, icon, GetDefaultSizeOfVectorIcon(icon), color); } @@ -551,8 +550,7 @@ ImageSkia CreateVectorIcon(const VectorIcon& icon, int dip_size, SkColor color) { - return CreateVectorIcon( - IconDescription(icon, dip_size, color, &VectorIcon::EmptyIcon())); + return CreateVectorIcon(IconDescription(icon, dip_size, color, &kNoneIcon)); } ImageSkia CreateVectorIconWithBadge(const VectorIcon& icon,
diff --git a/ui/gfx/paint_vector_icon.h b/ui/gfx/paint_vector_icon.h index 7c4ab54..bb04745 100644 --- a/ui/gfx/paint_vector_icon.h +++ b/ui/gfx/paint_vector_icon.h
@@ -36,6 +36,8 @@ const raw_ref<const VectorIcon> badge_icon; }; +COMPONENT_EXPORT(GFX) extern const VectorIcon kNoneIcon; + // Draws a vector icon identified by |id| onto |canvas| at (0, 0). |color| is // used as the fill. The size will come from the .icon file (the 1x version, if // multiple versions exist).
diff --git a/ui/gfx/vector_icon_types.h b/ui/gfx/vector_icon_types.h index 8f9065c..102bacc7 100644 --- a/ui/gfx/vector_icon_types.h +++ b/ui/gfx/vector_icon_types.h
@@ -98,29 +98,17 @@ // A vector icon that stores one or more representations to be used for various // scale factors and pixel dimensions. -// -// Because icons are returned and even stored as references, dynamically -// constructing one isn't safe. Use `EmptyIcon` for empty icons, and the -// autogenerated named icon constants for others. -// TODO(crbug.com/343248822): Make these types easy to use safely. struct VectorIcon { - static const VectorIcon& EmptyIcon() { - static constexpr VectorIcon kEmptyIcon; - return kEmptyIcon; - } - + VectorIcon() = default; constexpr VectorIcon(const VectorIconRep* reps_data, size_t reps_size, const char* name) : reps(reps_data, reps_size), name(name) {} - // Copying is problematic because the output of `PaintVectorIcon()` is cached - // keyed on `VectorIcon*`, and because of the dangling ref issues mentioned - // above. VectorIcon(const VectorIcon&) = delete; VectorIcon& operator=(const VectorIcon&) = delete; - constexpr bool is_empty() const { return reps.empty(); } + bool is_empty() const { return reps.empty(); } base::raw_span<const VectorIconRep> reps; @@ -129,8 +117,7 @@ // should be careful to ensure this is unique. const char* name = nullptr; - private: - constexpr VectorIcon() = default; + bool operator<(const VectorIcon& other) const; }; } // namespace gfx
diff --git a/ui/message_center/public/cpp/notification.h b/ui/message_center/public/cpp/notification.h index 5a47ad04..fe0b0c1a 100644 --- a/ui/message_center/public/cpp/notification.h +++ b/ui/message_center/public/cpp/notification.h
@@ -20,6 +20,7 @@ #include "ui/gfx/color_palette.h" #include "ui/gfx/geometry/skia_conversions.h" #include "ui/gfx/image/image.h" +#include "ui/gfx/paint_vector_icon.h" #include "ui/gfx/vector_icon_types.h" #include "ui/message_center/public/cpp/message_center_public_export.h" #include "ui/message_center/public/cpp/notification_delegate.h" @@ -109,7 +110,7 @@ gfx::Image icon; // Vector icon to that's used for icon-only notification buttons. - raw_ptr<const gfx::VectorIcon> vector_icon = &gfx::VectorIcon::EmptyIcon(); + raw_ptr<const gfx::VectorIcon> vector_icon = &gfx::kNoneIcon; // Accessible name to be used for the button's tooltip. Required when creating // an icon-only notification button. @@ -190,8 +191,7 @@ // retain VectorIcon reference. https://crbug.com/760866 // RAW_PTR_EXCLUSION: Never allocated by PartitionAlloc (always points to a // global), so there is no benefit to using a raw_ptr, only cost. - RAW_PTR_EXCLUSION const gfx::VectorIcon* vector_small_image = - &gfx::VectorIcon::EmptyIcon(); + RAW_PTR_EXCLUSION const gfx::VectorIcon* vector_small_image = &gfx::kNoneIcon; // Vector image to display on the parent notification of this notification, // illustrating the source of the group notification that this notification @@ -200,7 +200,7 @@ // RAW_PTR_EXCLUSION: Never allocated by PartitionAlloc (always points to a // global), so there is no benefit to using a raw_ptr, only cost. RAW_PTR_EXCLUSION const gfx::VectorIcon* parent_vector_small_image = - &gfx::VectorIcon::EmptyIcon(); + &gfx::kNoneIcon; // Items to display on the notification. Only applicable for notifications // that have type NOTIFICATION_TYPE_MULTIPLE.
diff --git a/ui/views/controls/button/image_button_factory_unittest.cc b/ui/views/controls/button/image_button_factory_unittest.cc index 2a2b018..8b4eed8 100644 --- a/ui/views/controls/button/image_button_factory_unittest.cc +++ b/ui/views/controls/button/image_button_factory_unittest.cc
@@ -104,7 +104,7 @@ CreateVectorToggleImageButton(Button::PressedCallback()); ui::AXNodeData data; const ui::ImageModel& image = - ui::ImageModel::FromVectorIcon(gfx::VectorIcon::EmptyIcon(), 23, 56); + ui::ImageModel::FromVectorIcon(gfx::VectorIcon(), 23, 56); toggle_image_button->SetToggledImageModel(Button::STATE_NORMAL, image); EXPECT_EQ(data.GetCheckedState(), ax::mojom::CheckedState::kNone);
diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc index 51a8f185..f1f9fb6 100644 --- a/ui/views/widget/widget.cc +++ b/ui/views/widget/widget.cc
@@ -523,7 +523,10 @@ // set based on the display. should_set_initial_bounds = !params.display_id.has_value(); #endif - +#if BUILDFLAG(IS_WIN) + // These are mutually exclusive. + CHECK(!(params.force_show_in_taskbar && params.dont_show_in_taskbar)); +#endif // BUILDFLAG(IS_WIN) native_widget_->InitNativeWidget(std::move(params)); if (type == InitParams::TYPE_MENU) { is_mouse_button_pressed_ = native_widget_->IsMouseButtonDown();
diff --git a/ui/views/widget/widget.h b/ui/views/widget/widget.h index 30d0ea6..3ce32a7 100644 --- a/ui/views/widget/widget.h +++ b/ui/views/widget/widget.h
@@ -441,6 +441,12 @@ // types that do not appear in the taskbar by default (popup and bubble). bool force_show_in_taskbar = false; +#if BUILDFLAG(IS_WIN) + // If true, force the window not to be shown in the taskbar, even for + // window types that do appear in the taskbar by default. + bool dont_show_in_taskbar = false; +#endif // BUILDFLAG(IS_WIN) + // Only used by X11, for root level windows. Specifies the res_name and // res_class fields, respectively, of the WM_CLASS window property. Controls // window grouping and desktop file matching in Linux window managers.
diff --git a/ui/views/widget/widget_delegate.cc b/ui/views/widget/widget_delegate.cc index 3997820..d847d45 100644 --- a/ui/views/widget/widget_delegate.cc +++ b/ui/views/widget/widget_delegate.cc
@@ -32,6 +32,11 @@ widget, delegate->TransferOwnershipOfContentsView()); } +std::unique_ptr<NonClientFrameView> CreateDefaultNonClientFrameView( + Widget* widget) { + return nullptr; +} + std::unique_ptr<View> CreateDefaultOverlayView() { return nullptr; } @@ -48,6 +53,8 @@ : widget_initialized_callbacks_(std::make_unique<ClosureVector>()), client_view_factory_( base::BindOnce(&CreateDefaultClientView, base::Unretained(this))), + non_client_frame_view_factory_( + base::BindRepeating(&CreateDefaultNonClientFrameView)), overlay_view_factory_(base::BindOnce(&CreateDefaultOverlayView)) {} WidgetDelegate::~WidgetDelegate() { @@ -369,7 +376,8 @@ std::unique_ptr<NonClientFrameView> WidgetDelegate::CreateNonClientFrameView( Widget* widget) { - return nullptr; + CHECK(non_client_frame_view_factory_); + return non_client_frame_view_factory_.Run(widget); } View* WidgetDelegate::CreateOverlayView() { @@ -542,6 +550,12 @@ client_view_factory_ = std::move(factory); } +void WidgetDelegate::SetNonClientFrameViewFactory( + NonClientFrameViewFactory factory) { + DCHECK(!GetWidget()); + non_client_frame_view_factory_ = std::move(factory); +} + void WidgetDelegate::SetOverlayViewFactory(OverlayViewFactory factory) { DCHECK(!GetWidget()); overlay_view_factory_ = std::move(factory);
diff --git a/ui/views/widget/widget_delegate.h b/ui/views/widget/widget_delegate.h index 1c57bce..75cc55b 100644 --- a/ui/views/widget/widget_delegate.h +++ b/ui/views/widget/widget_delegate.h
@@ -42,6 +42,16 @@ base::OnceCallback<std::unique_ptr<ClientView>(Widget*)>; using OverlayViewFactory = base::OnceCallback<std::unique_ptr<View>()>; + // NonClientFrameViewFactory is a RepeatingCallback because the + // NonClientFrameView is rebuilt on Aura platforms when WindowTreeHost + // properties that might affect its appearance change. Rebuilding the entire + // NonClientFrameView is a pretty big hammer for that but it's the one we + // have. + // TODO(b:387350163): Investigate if NonClientFrameView can handle these + // changes in a more granular way. + using NonClientFrameViewFactory = + base::RepeatingCallback<std::unique_ptr<NonClientFrameView>(Widget*)>; + struct Params { Params(); ~Params(); @@ -399,6 +409,7 @@ void RegisterWindowWillCloseCallback(base::OnceClosure callback); void SetClientViewFactory(ClientViewFactory factory); + void SetNonClientFrameViewFactory(NonClientFrameViewFactory factory); void SetOverlayViewFactory(OverlayViewFactory factory); // Returns true if the title text should be centered. @@ -488,6 +499,7 @@ ClosureVector delete_delegate_callbacks_; ClientViewFactory client_view_factory_; + NonClientFrameViewFactory non_client_frame_view_factory_; OverlayViewFactory overlay_view_factory_; TitleChangedCallback title_changed_callback_;
diff --git a/ui/views/widget/widget_delegate_unittest.cc b/ui/views/widget/widget_delegate_unittest.cc index 65f01e8..e1487ce 100644 --- a/ui/views/widget/widget_delegate_unittest.cc +++ b/ui/views/widget/widget_delegate_unittest.cc
@@ -79,6 +79,22 @@ EXPECT_EQ(tracker.view(), client.get()); } +TEST_F(WidgetDelegateTest, + NonClientFrameViewFactoryCanReplaceNonClientFrameView) { + ViewTracker tracker; + + auto delegate = std::make_unique<WidgetDelegate>(); + delegate->SetNonClientFrameViewFactory( + base::BindLambdaForTesting([&tracker](Widget* widget) { + auto view = std::make_unique<NonClientFrameView>(); + tracker.SetView(view.get()); + return view; + })); + + auto nonclient = delegate->CreateNonClientFrameView(nullptr); + EXPECT_EQ(tracker.view(), nonclient.get()); +} + TEST_F(WidgetDelegateTest, OverlayViewFactoryCanReplaceOverlayView) { ViewTracker tracker;
diff --git a/ui/views/widget/widget_hwnd_utils.cc b/ui/views/widget/widget_hwnd_utils.cc index 0c37af2..fb8c20fc 100644 --- a/ui/views/widget/widget_hwnd_utils.cc +++ b/ui/views/widget/widget_hwnd_utils.cc
@@ -126,6 +126,11 @@ case Widget::InitParams::TYPE_TOOLTIP: case Widget::InitParams::TYPE_WINDOW_FRAMELESS: *style |= WS_POPUP; +#if BUILDFLAG(IS_WIN) + if (params.dont_show_in_taskbar) { + *ex_style |= WS_EX_TOOLWINDOW; + } +#endif // BUILDFLAG(IS_WIN) break; default: NOTREACHED();
diff --git a/ui/webui/resources/cr_components/history_embeddings/BUILD.gn b/ui/webui/resources/cr_components/history_embeddings/BUILD.gn index dd793aa7..fee481e 100644 --- a/ui/webui/resources/cr_components/history_embeddings/BUILD.gn +++ b/ui/webui/resources/cr_components/history_embeddings/BUILD.gn
@@ -38,6 +38,7 @@ "$root_gen_dir/ui/webui/resources/tsc/cr_components/history_embeddings" ts_composite = true ts_deps = [ + "../page_image_service:build_ts", "//third_party/lit/v3_0:build_ts", "//third_party/polymer/v3_0:library", "//ui/webui/resources/cr_components/history:build_ts",
diff --git a/ui/webui/resources/cr_components/history_embeddings/history_embeddings.html b/ui/webui/resources/cr_components/history_embeddings/history_embeddings.html index 01a63819..45579b0 100644 --- a/ui/webui/resources/cr_components/history_embeddings/history_embeddings.html +++ b/ui/webui/resources/cr_components/history_embeddings/history_embeddings.html
@@ -144,16 +144,42 @@ text-decoration: none; } +:host([enable-answers_][in-side-panel]) .result-item { + padding: 4px 16px; +} + :host([enable-answers_]) .result-image { + align-items: center; background: var(--color-history-embeddings-image-background, var(--cr-fallback-color-neutral-container)); border-radius: 8px; + display: flex; flex-shrink: 0; + justify-content: center; height: 58px; overflow: hidden; width: 104px; } +:host([enable-answers_][in-side-panel]) .result-image { + height: 40px; + width: 40px; +} + +:host([enable-answers_][in-side-panel]) + cr-history-embeddings-result-image:not([has-image]) { + display: none; +} + +:host([enable-answers_]:not([in-side-panel])) .result-image .favicon { + display: none; +} + +:host([enable-answers_][in-side-panel]) + cr-history-embeddings-result-image[has-image] ~ .favicon { + display: none; +} + :host([enable-answers_]) .result-metadata { display: flex; flex: 1; @@ -195,6 +221,10 @@ width: 16px; } +:host([enable-answers_][in-side-panel]) .result-url-and-favicon .favicon { + display: none; +} + .time { margin-inline-start: 16px; } @@ -366,8 +396,12 @@ on-click="onResultClick_" on-auxclick="onResultClick_" on-contextmenu="onResultContextMenu_"> <div class="result-image"> - <cr-history-embeddings-result-image search-result="[[item]]"> + <cr-history-embeddings-result-image + in-side-panel="[[inSidePanel]]" + search-result="[[item]]"> </cr-history-embeddings-result-image> + <div class="favicon" + style$="background-image: [[getFavicon_(item)]]"></div> </div> <div class="result-metadata"> <div class="result-title">[[item.title]]</div>
diff --git a/ui/webui/resources/cr_components/history_embeddings/history_embeddings.ts b/ui/webui/resources/cr_components/history_embeddings/history_embeddings.ts index afb6fb5..8fbd09ef 100644 --- a/ui/webui/resources/cr_components/history_embeddings/history_embeddings.ts +++ b/ui/webui/resources/cr_components/history_embeddings/history_embeddings.ts
@@ -128,7 +128,7 @@ }, showRelativeTimes: {type: Boolean, value: false}, otherHistoryResultClicked: {type: Boolean, value: false}, - inSidePanel: {type: Boolean, value: false}, + inSidePanel: {type: Boolean, value: false, reflectToAttribute: true}, }; }
diff --git a/ui/webui/resources/cr_components/history_embeddings/result_image.css b/ui/webui/resources/cr_components/history_embeddings/result_image.css index b4da9e5..572565f 100644 --- a/ui/webui/resources/cr_components/history_embeddings/result_image.css +++ b/ui/webui/resources/cr_components/history_embeddings/result_image.css
@@ -23,6 +23,7 @@ height: 100%; justify-content: center; overflow: hidden; + position: relative; width: 100%; } @@ -30,6 +31,14 @@ fill: var(--illustration-color_); } +#image { + height: 100%; + inset: 0; + object-fit: cover; + position: absolute; + width: 100%; +} + @media (prefers-color-scheme: dark) { :host { --gradient-end-color_: var(
diff --git a/ui/webui/resources/cr_components/history_embeddings/result_image.html.ts b/ui/webui/resources/cr_components/history_embeddings/result_image.html.ts index e43724af..1879589 100644 --- a/ui/webui/resources/cr_components/history_embeddings/result_image.html.ts +++ b/ui/webui/resources/cr_components/history_embeddings/result_image.html.ts
@@ -8,12 +8,14 @@ export function getHtml(this: HistoryEmbeddingsResultImageElement) { return html` - <svg aria-hidden="true" - xmlns="http://www.w3.org/2000/svg" + <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="42" height="42" viewBox="0 0 42 42"> <path id="illustrationPath" d="M15.1906 0.931046C6.16922 -2.98707 -2.98707 6.16923 0.931046 15.1906L1.57886 16.6822C2.77508 19.4364 2.77508 22.5636 1.57885 25.3178L0.931044 26.8094C-2.98707 35.8308 6.16923 44.9871 15.1906 41.069L16.6822 40.4211C19.4364 39.2249 22.5636 39.2249 25.3178 40.4211L26.8094 41.069C35.8308 44.9871 44.9871 35.8308 41.0689 26.8094L40.4211 25.3178C39.2249 22.5636 39.2249 19.4364 40.4211 16.6822L41.069 15.1906C44.9871 6.16922 35.8308 -2.98706 26.8094 0.931049L25.3178 1.57886C22.5635 2.77508 19.4364 2.77508 16.6822 1.57886L15.1906 0.931046Z"> </path> </svg> + + <img id="image" is="cr-auto-img" auto-src="${this.imageUrl_}" + .hidden="${!this.hasImage}" alt=""></img> `; }
diff --git a/ui/webui/resources/cr_components/history_embeddings/result_image.ts b/ui/webui/resources/cr_components/history_embeddings/result_image.ts index 8709e37..12eb024 100644 --- a/ui/webui/resources/cr_components/history_embeddings/result_image.ts +++ b/ui/webui/resources/cr_components/history_embeddings/result_image.ts
@@ -2,7 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import '//resources/cr_elements/cr_auto_img/cr_auto_img.js'; + +import {PageImageServiceBrowserProxy} from '//resources/cr_components/page_image_service/browser_proxy.js'; +import {ClientId as PageImageServiceClientId} from '//resources/cr_components/page_image_service/page_image_service.mojom-webui.js'; +import {loadTimeData} from '//resources/js/load_time_data.js'; import {CrLitElement} from '//resources/lit/v3_0/lit.rollup.js'; +import type {PropertyValues} from '//resources/lit/v3_0/lit.rollup.js'; import type {SearchResultItem} from './history_embeddings.mojom-webui.js'; import {getCss} from './result_image.css.js'; @@ -23,11 +29,48 @@ static override get properties() { return { + hasImage: {type: Boolean, reflect: true}, + imageUrl_: {type: String}, + inSidePanel: {type: Boolean, reflect: true}, searchResult: {type: Object}, }; } + hasImage: boolean; + protected imageUrl_: string|null; + inSidePanel: boolean; searchResult: SearchResultItem; + + override willUpdate(changedProperties: PropertyValues<this>) { + super.willUpdate(changedProperties); + + if (!loadTimeData.getBoolean('enableHistoryEmbeddingsImages')) { + return; + } + + if (changedProperties.has('searchResult')) { + // Reset image state while it is being fetched. + this.imageUrl_ = null; + this.hasImage = false; + + if (this.searchResult.isUrlKnownToSync) { + this.fetchImageForSearchResult_(); + } + } + } + + private async fetchImageForSearchResult_() { + const searchResultUrl = this.searchResult.url; + const {result} = + await PageImageServiceBrowserProxy.getInstance() + .handler.getPageImageUrl( + PageImageServiceClientId.Journeys, searchResultUrl, + {suggestImages: true, optimizationGuideImages: true}); + if (result && searchResultUrl === this.searchResult.url) { + this.imageUrl_ = result.imageUrl.url; + this.hasImage = true; + } + } } declare global {
diff --git a/v8 b/v8 index 4551bf1..41dacff 160000 --- a/v8 +++ b/v8
@@ -1 +1 @@ -Subproject commit 4551bf13781091625662a39f2b02b3b9ebe1c42b +Subproject commit 41dacffe436aeb9311879cb07648f1e36609a804