ash: Adding flag to enable 16 virtual desks.
When the flag (enable-16-desks) is enabled, up to 16 virtual desks can be created, up from the default 8. Most of the changes are related to the constant kMaxNumberOfDesks changing to the function GetMaxNumberOfDesks. The unit tests in desks_unittests have been updated to work with either 8 or 16 desks. Additionally, they have been parameterized so that going forward, we will test with both 8 and 16 desks. Bug: b/250957096 Change-Id: I7d0506f8ccfac4d3b891e340c6694cf99f7d4b0d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3928065 Reviewed-by: Richard Chui <richui@chromium.org> Reviewed-by: James Cook <jamescook@chromium.org> Reviewed-by: Jimmy Gong <jimmyxgong@chromium.org> Reviewed-by: Sammie Quon <sammiequon@chromium.org> Commit-Queue: Daniel Andersson <dandersson@chromium.org> Cr-Commit-Position: refs/heads/main@{#1058389}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
504701647f
commit
a34c86efd0
ash
ash_strings.grd
ash_strings_grd
IDS_ASH_DESKS_DESK_10_MINI_VIEW_TITLE.png.sha1IDS_ASH_DESKS_DESK_11_MINI_VIEW_TITLE.png.sha1IDS_ASH_DESKS_DESK_12_MINI_VIEW_TITLE.png.sha1IDS_ASH_DESKS_DESK_13_MINI_VIEW_TITLE.png.sha1IDS_ASH_DESKS_DESK_14_MINI_VIEW_TITLE.png.sha1IDS_ASH_DESKS_DESK_15_MINI_VIEW_TITLE.png.sha1IDS_ASH_DESKS_DESK_16_MINI_VIEW_TITLE.png.sha1IDS_ASH_DESKS_DESK_9_MINI_VIEW_TITLE.png.sha1
constants
public
wm
desks
autotest_desks_api_unittests.ccdesks_controller.ccdesks_restore_util.ccdesks_unittests.ccdesks_util.ccdesks_util.hroot_window_desk_switch_animator.cc
templates
overview
window_cycle
window_restore
chrome/browser
tools/metrics/histograms
@ -2012,6 +2012,30 @@ This file contains the strings for ash.
|
||||
<message name="IDS_ASH_DESKS_DESK_8_MINI_VIEW_TITLE" desc="The label of the eighth virtual desk thumbnail.">
|
||||
Desk 8
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_DESK_9_MINI_VIEW_TITLE" desc="The label of the ninth virtual desk thumbnail.">
|
||||
Desk 9
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_DESK_10_MINI_VIEW_TITLE" desc="The label of the tenth virtual desk thumbnail.">
|
||||
Desk 10
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_DESK_11_MINI_VIEW_TITLE" desc="The label of the eleventh virtual desk thumbnail.">
|
||||
Desk 11
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_DESK_12_MINI_VIEW_TITLE" desc="The label of the twelfth virtual desk thumbnail.">
|
||||
Desk 12
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_DESK_13_MINI_VIEW_TITLE" desc="The label of the thirteenth virtual desk thumbnail.">
|
||||
Desk 13
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_DESK_14_MINI_VIEW_TITLE" desc="The label of the fourteenth virtual desk thumbnail.">
|
||||
Desk 14
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_DESK_15_MINI_VIEW_TITLE" desc="The label of the fifteenth virtual desk thumbnail.">
|
||||
Desk 15
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_DESK_16_MINI_VIEW_TITLE" desc="The label of the sixteenth virtual desk thumbnail.">
|
||||
Desk 16
|
||||
</message>
|
||||
<message name="IDS_ASH_DESKS_MAX_NUM_REACHED" desc="Message shown to users when they attempt to add a new virtual desk when the maximum number of desks has been reached.">
|
||||
Maximum number of desks reached.
|
||||
</message>
|
||||
|
@ -0,0 +1 @@
|
||||
5734ddc2b3616da0363ef3915f8140047c3fd679
|
@ -0,0 +1 @@
|
||||
4b01ef86b4f18673e366f0daa288c81b24632d72
|
@ -0,0 +1 @@
|
||||
0e20c93104f0c3f888799858ab1ac602b6fc2895
|
@ -0,0 +1 @@
|
||||
37c590fe6a4e29648d256d3d46d659fc1c39f2be
|
@ -0,0 +1 @@
|
||||
5c910096df22f0d70a42f2932679657316c0f1ff
|
@ -0,0 +1 @@
|
||||
c8e2cc7de44021c8fcba1df1f005d1e46a56996e
|
@ -0,0 +1 @@
|
||||
9746407f33db29d2cfaf7a3f2935789ccb0a55a3
|
@ -0,0 +1 @@
|
||||
d40bf6abd2477ead797905d83556bfc37914615b
|
@ -686,6 +686,11 @@ BASE_FEATURE(kEcheSWADisableStunServer,
|
||||
"EcheSWADisableStunServer",
|
||||
base::FEATURE_DISABLED_BY_DEFAULT);
|
||||
|
||||
// If enabled, allows the creation of up to 16 desks (default is 8).
|
||||
BASE_FEATURE(kEnable16Desks,
|
||||
"Enable16Desks",
|
||||
base::FEATURE_DISABLED_BY_DEFAULT);
|
||||
|
||||
// Enables background blur for the app list, shelf, unified system tray,
|
||||
// autoclick menu, etc. Also enables the AppsGridView mask layer, slower devices
|
||||
// may have choppier app list animations while in this mode. crbug.com/765292.
|
||||
@ -2176,6 +2181,10 @@ bool DoWindowsFollowCursor() {
|
||||
return base::FeatureList::IsEnabled(kWindowsFollowCursor);
|
||||
}
|
||||
|
||||
bool Is16DesksEnabled() {
|
||||
return base::FeatureList::IsEnabled(kEnable16Desks);
|
||||
}
|
||||
|
||||
bool IsAdaptiveChargingEnabled() {
|
||||
return base::FeatureList::IsEnabled(kAdaptiveCharging);
|
||||
}
|
||||
|
@ -241,6 +241,7 @@ BASE_DECLARE_FEATURE(kEnableOobeNetworkScreenSkip);
|
||||
COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kEnableOobeThemeSelection);
|
||||
COMPONENT_EXPORT(ASH_CONSTANTS)
|
||||
BASE_DECLARE_FEATURE(kEnableSamlNotificationOnPasswordChangeSuccess);
|
||||
COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kEnable16Desks);
|
||||
COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kEnableSavedDesks);
|
||||
COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kEnableAllSystemWebApps);
|
||||
COMPONENT_EXPORT(ASH_CONSTANTS)
|
||||
@ -601,6 +602,7 @@ COMPONENT_EXPORT(ASH_CONSTANTS) bool IsAutocompleteExtendedSuggestionsEnabled();
|
||||
COMPONENT_EXPORT(ASH_CONSTANTS) bool IsAvatarsCloudMigrationEnabled();
|
||||
COMPONENT_EXPORT(ASH_CONSTANTS) bool AreImprovedScreenCaptureSettingsEnabled();
|
||||
COMPONENT_EXPORT(ASH_CONSTANTS) bool DoWindowsFollowCursor();
|
||||
COMPONENT_EXPORT(ASH_CONSTANTS) bool Is16DesksEnabled();
|
||||
COMPONENT_EXPORT(ASH_CONSTANTS) bool IsAdaptiveChargingEnabled();
|
||||
COMPONENT_EXPORT(ASH_CONSTANTS) bool IsAdaptiveChargingForTestingEnabled();
|
||||
COMPONENT_EXPORT(ASH_CONSTANTS) bool IsAdjustSplitViewForVKEnabled();
|
||||
|
@ -44,23 +44,34 @@ constexpr std::array<int, 5> kPostDesksActivatableContainersIds = {
|
||||
kShellWindowId_ShelfBubbleContainer,
|
||||
};
|
||||
|
||||
// List of desk container IDs. Can't use desks_util since we're in ash/public
|
||||
// here.
|
||||
constexpr std::array<int, 16> kDeskContainerIds = {
|
||||
kShellWindowId_DefaultContainerDeprecated,
|
||||
kShellWindowId_DeskContainerB,
|
||||
kShellWindowId_DeskContainerC,
|
||||
kShellWindowId_DeskContainerD,
|
||||
kShellWindowId_DeskContainerE,
|
||||
kShellWindowId_DeskContainerF,
|
||||
kShellWindowId_DeskContainerG,
|
||||
kShellWindowId_DeskContainerH,
|
||||
kShellWindowId_DeskContainerI,
|
||||
kShellWindowId_DeskContainerJ,
|
||||
kShellWindowId_DeskContainerK,
|
||||
kShellWindowId_DeskContainerL,
|
||||
kShellWindowId_DeskContainerM,
|
||||
kShellWindowId_DeskContainerN,
|
||||
kShellWindowId_DeskContainerO,
|
||||
kShellWindowId_DeskContainerP,
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
std::vector<int> GetActivatableShellWindowIds() {
|
||||
std::vector<int> ids(kPreDesksActivatableContainersIds.begin(),
|
||||
kPreDesksActivatableContainersIds.end());
|
||||
|
||||
// Add the desks containers IDs. Can't use desks_util since we're in
|
||||
// ash/public here.
|
||||
ids.emplace_back(kShellWindowId_DefaultContainerDeprecated);
|
||||
ids.emplace_back(kShellWindowId_DeskContainerB);
|
||||
ids.emplace_back(kShellWindowId_DeskContainerC);
|
||||
ids.emplace_back(kShellWindowId_DeskContainerD);
|
||||
ids.emplace_back(kShellWindowId_DeskContainerE);
|
||||
ids.emplace_back(kShellWindowId_DeskContainerF);
|
||||
ids.emplace_back(kShellWindowId_DeskContainerG);
|
||||
ids.emplace_back(kShellWindowId_DeskContainerH);
|
||||
|
||||
ids.insert(ids.end(), kDeskContainerIds.begin(), kDeskContainerIds.end());
|
||||
ids.insert(ids.end(), kPostDesksActivatableContainersIds.begin(),
|
||||
kPostDesksActivatableContainersIds.end());
|
||||
return ids;
|
||||
|
@ -78,6 +78,14 @@ enum ShellWindowId {
|
||||
kShellWindowId_DeskContainerF,
|
||||
kShellWindowId_DeskContainerG,
|
||||
kShellWindowId_DeskContainerH,
|
||||
kShellWindowId_DeskContainerI,
|
||||
kShellWindowId_DeskContainerJ,
|
||||
kShellWindowId_DeskContainerK,
|
||||
kShellWindowId_DeskContainerL,
|
||||
kShellWindowId_DeskContainerM,
|
||||
kShellWindowId_DeskContainerN,
|
||||
kShellWindowId_DeskContainerO,
|
||||
kShellWindowId_DeskContainerP,
|
||||
|
||||
// The container for top-level windows with the 'always-on-top' flag set.
|
||||
kShellWindowId_AlwaysOnTopContainer,
|
||||
|
@ -69,7 +69,7 @@ TEST_F(AutotestDesksApiTest, ActivateDeskAtIndex) {
|
||||
auto* controller = DesksController::Get();
|
||||
while (controller->CanCreateDesks())
|
||||
EXPECT_TRUE(test_api.CreateNewDesk());
|
||||
EXPECT_EQ(desks_util::kMaxNumberOfDesks, controller->desks().size());
|
||||
EXPECT_EQ(desks_util::GetMaxNumberOfDesks(), controller->desks().size());
|
||||
constexpr int kIndices[] = {1, 2, 3, 0};
|
||||
for (const int index : kIndices) {
|
||||
base::RunLoop run_loop;
|
||||
@ -83,7 +83,7 @@ TEST_F(AutotestDesksApiTest, RemoveActiveDesk) {
|
||||
AutotestDesksApi test_api;
|
||||
EXPECT_FALSE(test_api.RemoveActiveDesk(base::DoNothing()));
|
||||
|
||||
const size_t max_number_of_desks = desks_util::kMaxNumberOfDesks;
|
||||
const size_t max_number_of_desks = desks_util::GetMaxNumberOfDesks();
|
||||
auto* controller = DesksController::Get();
|
||||
while (controller->CanCreateDesks())
|
||||
EXPECT_TRUE(test_api.CreateNewDesk());
|
||||
@ -114,7 +114,7 @@ TEST_F(EnhancedDeskAnimationsAutotestDesksApiTest,
|
||||
DISABLED_ActivateAdjacentDesksToTargetIndex) {
|
||||
// Create all desks possible.
|
||||
AutotestDesksApi test_api;
|
||||
const int max_number_of_desks = desks_util::kMaxNumberOfDesks;
|
||||
const int max_number_of_desks = desks_util::GetMaxNumberOfDesks();
|
||||
auto* controller = DesksController::Get();
|
||||
while (controller->CanCreateDesks())
|
||||
EXPECT_TRUE(test_api.CreateNewDesk());
|
||||
@ -127,7 +127,7 @@ TEST_F(EnhancedDeskAnimationsAutotestDesksApiTest,
|
||||
// Activating already active desk does nothing.
|
||||
EXPECT_FALSE(
|
||||
test_api.ActivateAdjacentDesksToTargetIndex(0, base::DoNothing()));
|
||||
EXPECT_EQ(desks_util::kMaxNumberOfDesks, controller->desks().size());
|
||||
EXPECT_EQ(desks_util::GetMaxNumberOfDesks(), controller->desks().size());
|
||||
|
||||
// Replacing needs to be done while a current animation is underway, otherwise
|
||||
// it will have no effect.
|
||||
|
@ -104,23 +104,9 @@ constexpr char kNumberOfWindowsClosedBySaveAndRecall[] =
|
||||
"Ash.Desks.NumberOfWindowsClosed.SaveRecall";
|
||||
constexpr char kNumberOfWindowsClosedByApi[] =
|
||||
"Ash.Desks.NumberOfWindowsClosed.Api";
|
||||
|
||||
constexpr char kNumberOfWindowsOnDesk_1_HistogramName[] =
|
||||
"Ash.Desks.NumberOfWindowsOnDesk_1";
|
||||
constexpr char kNumberOfWindowsOnDesk_2_HistogramName[] =
|
||||
"Ash.Desks.NumberOfWindowsOnDesk_2";
|
||||
constexpr char kNumberOfWindowsOnDesk_3_HistogramName[] =
|
||||
"Ash.Desks.NumberOfWindowsOnDesk_3";
|
||||
constexpr char kNumberOfWindowsOnDesk_4_HistogramName[] =
|
||||
"Ash.Desks.NumberOfWindowsOnDesk_4";
|
||||
constexpr char kNumberOfWindowsOnDesk_5_HistogramName[] =
|
||||
"Ash.Desks.NumberOfWindowsOnDesk_5";
|
||||
constexpr char kNumberOfWindowsOnDesk_6_HistogramName[] =
|
||||
"Ash.Desks.NumberOfWindowsOnDesk_6";
|
||||
constexpr char kNumberOfWindowsOnDesk_7_HistogramName[] =
|
||||
"Ash.Desks.NumberOfWindowsOnDesk_7";
|
||||
constexpr char kNumberOfWindowsOnDesk_8_HistogramName[] =
|
||||
"Ash.Desks.NumberOfWindowsOnDesk_8";
|
||||
// Used for histograms from "Ash.Desks.NumberOfWindowsOnDesk_1" up to 16.
|
||||
constexpr char kNumberOfWindowsOnDeskHistogramPrefix[] =
|
||||
"Ash.Desks.NumberOfWindowsOnDesk_";
|
||||
|
||||
constexpr char kNumberOfDeskTraversalsHistogramName[] =
|
||||
"Ash.Desks.NumberOfDeskTraversals";
|
||||
@ -132,10 +118,23 @@ constexpr int kDeskTraversalsMaxValue = 20;
|
||||
constexpr base::TimeDelta kDeskTraversalsTimeout = base::Seconds(5);
|
||||
|
||||
constexpr int kDeskDefaultNameIds[] = {
|
||||
IDS_ASH_DESKS_DESK_1_MINI_VIEW_TITLE, IDS_ASH_DESKS_DESK_2_MINI_VIEW_TITLE,
|
||||
IDS_ASH_DESKS_DESK_3_MINI_VIEW_TITLE, IDS_ASH_DESKS_DESK_4_MINI_VIEW_TITLE,
|
||||
IDS_ASH_DESKS_DESK_5_MINI_VIEW_TITLE, IDS_ASH_DESKS_DESK_6_MINI_VIEW_TITLE,
|
||||
IDS_ASH_DESKS_DESK_7_MINI_VIEW_TITLE, IDS_ASH_DESKS_DESK_8_MINI_VIEW_TITLE};
|
||||
IDS_ASH_DESKS_DESK_1_MINI_VIEW_TITLE,
|
||||
IDS_ASH_DESKS_DESK_2_MINI_VIEW_TITLE,
|
||||
IDS_ASH_DESKS_DESK_3_MINI_VIEW_TITLE,
|
||||
IDS_ASH_DESKS_DESK_4_MINI_VIEW_TITLE,
|
||||
IDS_ASH_DESKS_DESK_5_MINI_VIEW_TITLE,
|
||||
IDS_ASH_DESKS_DESK_6_MINI_VIEW_TITLE,
|
||||
IDS_ASH_DESKS_DESK_7_MINI_VIEW_TITLE,
|
||||
IDS_ASH_DESKS_DESK_8_MINI_VIEW_TITLE,
|
||||
IDS_ASH_DESKS_DESK_9_MINI_VIEW_TITLE,
|
||||
IDS_ASH_DESKS_DESK_10_MINI_VIEW_TITLE,
|
||||
IDS_ASH_DESKS_DESK_11_MINI_VIEW_TITLE,
|
||||
IDS_ASH_DESKS_DESK_12_MINI_VIEW_TITLE,
|
||||
IDS_ASH_DESKS_DESK_13_MINI_VIEW_TITLE,
|
||||
IDS_ASH_DESKS_DESK_14_MINI_VIEW_TITLE,
|
||||
IDS_ASH_DESKS_DESK_15_MINI_VIEW_TITLE,
|
||||
IDS_ASH_DESKS_DESK_16_MINI_VIEW_TITLE,
|
||||
};
|
||||
|
||||
// Appends the given |windows| to the end of the currently active overview mode
|
||||
// session such that the most-recently used window is added first. If
|
||||
@ -419,7 +418,7 @@ DesksController* DesksController::Get() {
|
||||
|
||||
// static
|
||||
std::u16string DesksController::GetDeskDefaultName(size_t desk_index) {
|
||||
DCHECK_LT(desk_index, desks_util::kMaxNumberOfDesks);
|
||||
DCHECK_LT(desk_index, desks_util::GetMaxNumberOfDesks());
|
||||
return l10n_util::GetStringUTF16(kDeskDefaultNameIds[desk_index]);
|
||||
}
|
||||
|
||||
@ -493,7 +492,7 @@ bool DesksController::AreDesksBeingModified() const {
|
||||
}
|
||||
|
||||
bool DesksController::CanCreateDesks() const {
|
||||
return desks_.size() < desks_util::kMaxNumberOfDesks;
|
||||
return desks_.size() < desks_util::GetMaxNumberOfDesks();
|
||||
}
|
||||
|
||||
Desk* DesksController::GetNextDesk(bool use_target_active_desk) const {
|
||||
@ -1699,7 +1698,7 @@ void DesksController::RemoveDeskInternal(const Desk* desk,
|
||||
desks_restore_util::UpdatePrimaryUserDeskNamesPrefs();
|
||||
desks_restore_util::UpdatePrimaryUserDeskMetricsPrefs();
|
||||
|
||||
DCHECK_LE(available_container_ids_.size(), desks_util::kMaxNumberOfDesks);
|
||||
DCHECK_LE(available_container_ids_.size(), desks_util::GetMaxNumberOfDesks());
|
||||
|
||||
if (close_type == DeskCloseType::kCloseAllWindowsAndWait) {
|
||||
ShowDeskRemovalUndoToast(
|
||||
@ -1961,60 +1960,19 @@ void DesksController::GetAllDesks(std::vector<const Desk*>& out_desks) const {
|
||||
}
|
||||
|
||||
void DesksController::ReportNumberOfWindowsPerDeskHistogram() const {
|
||||
DCHECK_LE(desks_.size(), desks_util::kDesksUpperLimit);
|
||||
for (size_t i = 0; i < desks_.size(); ++i) {
|
||||
const size_t windows_count = desks_[i]->windows().size();
|
||||
switch (i) {
|
||||
case 0:
|
||||
UMA_HISTOGRAM_COUNTS_100(kNumberOfWindowsOnDesk_1_HistogramName,
|
||||
windows_count);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
UMA_HISTOGRAM_COUNTS_100(kNumberOfWindowsOnDesk_2_HistogramName,
|
||||
windows_count);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
UMA_HISTOGRAM_COUNTS_100(kNumberOfWindowsOnDesk_3_HistogramName,
|
||||
windows_count);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
UMA_HISTOGRAM_COUNTS_100(kNumberOfWindowsOnDesk_4_HistogramName,
|
||||
windows_count);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
UMA_HISTOGRAM_COUNTS_100(kNumberOfWindowsOnDesk_5_HistogramName,
|
||||
windows_count);
|
||||
break;
|
||||
|
||||
case 5:
|
||||
UMA_HISTOGRAM_COUNTS_100(kNumberOfWindowsOnDesk_6_HistogramName,
|
||||
windows_count);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
UMA_HISTOGRAM_COUNTS_100(kNumberOfWindowsOnDesk_7_HistogramName,
|
||||
windows_count);
|
||||
break;
|
||||
|
||||
case 7:
|
||||
UMA_HISTOGRAM_COUNTS_100(kNumberOfWindowsOnDesk_8_HistogramName,
|
||||
windows_count);
|
||||
break;
|
||||
|
||||
default:
|
||||
NOTREACHED();
|
||||
break;
|
||||
}
|
||||
base::UmaHistogramCounts100(
|
||||
kNumberOfWindowsOnDeskHistogramPrefix + base::NumberToString(i + 1),
|
||||
windows_count);
|
||||
}
|
||||
}
|
||||
|
||||
void DesksController::ReportDesksCountHistogram() const {
|
||||
DCHECK_LE(desks_.size(), desks_util::kMaxNumberOfDesks);
|
||||
DCHECK_LE(desks_.size(), desks_util::kDesksUpperLimit);
|
||||
UMA_HISTOGRAM_EXACT_LINEAR(kDesksCountHistogramName, desks_.size(),
|
||||
desks_util::kMaxNumberOfDesks);
|
||||
desks_util::kDesksUpperLimit + 1);
|
||||
}
|
||||
|
||||
void DesksController::RecordAndResetNumberOfWeeklyActiveDesks() {
|
||||
|
@ -80,9 +80,7 @@ PrefService* GetPrimaryUserPrefService() {
|
||||
// DesksController.
|
||||
bool IsValidDeskIndex(int desk_index) {
|
||||
return desk_index >= 0 &&
|
||||
desk_index <
|
||||
static_cast<int>(DesksController::Get()->desks().size()) &&
|
||||
desk_index < int{desks_util::kMaxNumberOfDesks};
|
||||
desk_index < static_cast<int>(DesksController::Get()->desks().size());
|
||||
}
|
||||
|
||||
base::Time GetTime(int year, int month, int day_of_month, int day_of_week) {
|
||||
@ -151,13 +149,16 @@ void RestorePrimaryUserDesks() {
|
||||
primary_user_prefs->GetList(prefs::kDesksMetricsList);
|
||||
|
||||
// First create the same number of desks.
|
||||
const size_t restore_size = desks_names_list.size();
|
||||
size_t restore_size = desks_names_list.size();
|
||||
|
||||
// If we don't have any restore data, or the list is corrupt for some reason,
|
||||
// abort.
|
||||
if (!restore_size || restore_size > desks_util::kMaxNumberOfDesks)
|
||||
// If we don't have any restore data, abort.
|
||||
if (restore_size == 0)
|
||||
return;
|
||||
|
||||
// If we have more restore data than the *current* max, clamp it. This can
|
||||
// happen if the restore data was created when more desks were permitted.
|
||||
restore_size = std::min(restore_size, desks_util::GetMaxNumberOfDesks());
|
||||
|
||||
auto* desks_controller = DesksController::Get();
|
||||
while (desks_controller->desks().size() < restore_size)
|
||||
desks_controller->NewDesk(DesksCreationRemovalSource::kDesksRestore);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -6,6 +6,7 @@
|
||||
|
||||
#include <array>
|
||||
|
||||
#include "ash/constants/ash_features.h"
|
||||
#include "ash/public/cpp/tablet_mode.h"
|
||||
#include "ash/shell.h"
|
||||
#include "ash/wm/desks/desk.h"
|
||||
@ -25,7 +26,7 @@ namespace desks_util {
|
||||
|
||||
namespace {
|
||||
|
||||
constexpr std::array<int, kMaxNumberOfDesks> kDesksContainersIds = {
|
||||
constexpr std::array<int, kDesksUpperLimit> kDesksContainersIds = {
|
||||
kShellWindowId_DefaultContainerDeprecated,
|
||||
kShellWindowId_DeskContainerB,
|
||||
kShellWindowId_DeskContainerC,
|
||||
@ -34,13 +35,28 @@ constexpr std::array<int, kMaxNumberOfDesks> kDesksContainersIds = {
|
||||
kShellWindowId_DeskContainerF,
|
||||
kShellWindowId_DeskContainerG,
|
||||
kShellWindowId_DeskContainerH,
|
||||
kShellWindowId_DeskContainerI,
|
||||
kShellWindowId_DeskContainerJ,
|
||||
kShellWindowId_DeskContainerK,
|
||||
kShellWindowId_DeskContainerL,
|
||||
kShellWindowId_DeskContainerM,
|
||||
kShellWindowId_DeskContainerN,
|
||||
kShellWindowId_DeskContainerO,
|
||||
kShellWindowId_DeskContainerP,
|
||||
};
|
||||
|
||||
// Default max number of desks (that is, enable-16-desks is off).
|
||||
constexpr size_t kDesksDefaultLimit = 8;
|
||||
|
||||
} // namespace
|
||||
|
||||
size_t GetMaxNumberOfDesks() {
|
||||
return features::Is16DesksEnabled() ? kDesksUpperLimit : kDesksDefaultLimit;
|
||||
}
|
||||
|
||||
std::vector<int> GetDesksContainersIds() {
|
||||
return std::vector<int>(kDesksContainersIds.begin(),
|
||||
kDesksContainersIds.end());
|
||||
kDesksContainersIds.begin() + GetMaxNumberOfDesks());
|
||||
}
|
||||
|
||||
std::vector<aura::Window*> GetDesksContainers(aura::Window* root) {
|
||||
@ -85,6 +101,30 @@ const char* GetDeskContainerName(int container_id) {
|
||||
case kShellWindowId_DeskContainerH:
|
||||
return "Desk_Container_H";
|
||||
|
||||
case kShellWindowId_DeskContainerI:
|
||||
return "Desk_Container_I";
|
||||
|
||||
case kShellWindowId_DeskContainerJ:
|
||||
return "Desk_Container_J";
|
||||
|
||||
case kShellWindowId_DeskContainerK:
|
||||
return "Desk_Container_K";
|
||||
|
||||
case kShellWindowId_DeskContainerL:
|
||||
return "Desk_Container_L";
|
||||
|
||||
case kShellWindowId_DeskContainerM:
|
||||
return "Desk_Container_M";
|
||||
|
||||
case kShellWindowId_DeskContainerN:
|
||||
return "Desk_Container_N";
|
||||
|
||||
case kShellWindowId_DeskContainerO:
|
||||
return "Desk_Container_O";
|
||||
|
||||
case kShellWindowId_DeskContainerP:
|
||||
return "Desk_Container_P";
|
||||
|
||||
default:
|
||||
NOTREACHED();
|
||||
return "";
|
||||
@ -104,7 +144,15 @@ bool IsDeskContainerId(int id) {
|
||||
id == kShellWindowId_DeskContainerE ||
|
||||
id == kShellWindowId_DeskContainerF ||
|
||||
id == kShellWindowId_DeskContainerG ||
|
||||
id == kShellWindowId_DeskContainerH;
|
||||
id == kShellWindowId_DeskContainerH ||
|
||||
id == kShellWindowId_DeskContainerI ||
|
||||
id == kShellWindowId_DeskContainerJ ||
|
||||
id == kShellWindowId_DeskContainerK ||
|
||||
id == kShellWindowId_DeskContainerL ||
|
||||
id == kShellWindowId_DeskContainerM ||
|
||||
id == kShellWindowId_DeskContainerN ||
|
||||
id == kShellWindowId_DeskContainerO ||
|
||||
id == kShellWindowId_DeskContainerP;
|
||||
}
|
||||
|
||||
int GetActiveDeskContainerId() {
|
||||
|
@ -25,7 +25,12 @@ namespace ash {
|
||||
|
||||
namespace desks_util {
|
||||
|
||||
constexpr size_t kMaxNumberOfDesks = 8;
|
||||
// Note: the max number of desks depends on a runtime flag and the function
|
||||
// `GetMaxNumberOfDesks` below will return that value. The value returned from
|
||||
// that function will not be more than this constant.
|
||||
constexpr size_t kDesksUpperLimit = 16;
|
||||
|
||||
ASH_EXPORT size_t GetMaxNumberOfDesks();
|
||||
|
||||
ASH_EXPORT std::vector<int> GetDesksContainersIds();
|
||||
|
||||
|
@ -120,7 +120,7 @@ RootWindowDeskSwitchAnimator::RootWindowDeskSwitchAnimator(
|
||||
DCHECK_NE(starting_desk_index_, ending_desk_index_);
|
||||
DCHECK(delegate_);
|
||||
|
||||
screenshot_layers_.resize(desks_util::kMaxNumberOfDesks);
|
||||
screenshot_layers_.resize(desks_util::GetMaxNumberOfDesks());
|
||||
}
|
||||
|
||||
RootWindowDeskSwitchAnimator::~RootWindowDeskSwitchAnimator() {
|
||||
|
@ -409,7 +409,7 @@ void SavedDeskPresenter::LaunchSavedDesk(
|
||||
/*text=*/
|
||||
l10n_util::GetStringFUTF16(
|
||||
IDS_ASH_DESKS_TEMPLATES_REACH_MAXIMUM_DESK_TOAST,
|
||||
base::FormatNumber(desks_util::kMaxNumberOfDesks))};
|
||||
base::FormatNumber(desks_util::GetMaxNumberOfDesks()))};
|
||||
ToastManager::Get()->Show(toast_data);
|
||||
return;
|
||||
}
|
||||
|
@ -884,7 +884,8 @@ TEST_P(DesksOverviewHighlightControllerTest,
|
||||
SendKey(ui::VKEY_TAB);
|
||||
}
|
||||
EXPECT_FALSE(new_desk_button->GetEnabled());
|
||||
EXPECT_EQ(desks_util::kMaxNumberOfDesks, desks_controller->desks().size());
|
||||
EXPECT_EQ(desks_util::GetMaxNumberOfDesks(),
|
||||
desks_controller->desks().size());
|
||||
}
|
||||
|
||||
TEST_P(DesksOverviewHighlightControllerTest, ZeroStateOfDesksBar) {
|
||||
|
@ -92,7 +92,7 @@ void ReportPossibleDesksSwitchStats(int active_desk_container_id_before_cycle) {
|
||||
active_desk_container_id_before_cycle);
|
||||
base::UmaHistogramExactLinear(kAltTabDesksSwitchDistanceHistogramName,
|
||||
desks_switch_distance,
|
||||
desks_util::kMaxNumberOfDesks);
|
||||
desks_util::kDesksUpperLimit);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
@ -49,7 +49,7 @@ WindowRestoreController* g_instance = nullptr;
|
||||
WindowRestoreController::SaveWindowCallback g_save_window_callback_for_testing;
|
||||
|
||||
// The list of possible app window parents.
|
||||
constexpr ShellWindowId kAppParentContainers[11] = {
|
||||
constexpr ShellWindowId kAppParentContainers[19] = {
|
||||
kShellWindowId_DefaultContainerDeprecated,
|
||||
kShellWindowId_DeskContainerB,
|
||||
kShellWindowId_DeskContainerC,
|
||||
@ -58,6 +58,14 @@ constexpr ShellWindowId kAppParentContainers[11] = {
|
||||
kShellWindowId_DeskContainerF,
|
||||
kShellWindowId_DeskContainerG,
|
||||
kShellWindowId_DeskContainerH,
|
||||
kShellWindowId_DeskContainerI,
|
||||
kShellWindowId_DeskContainerJ,
|
||||
kShellWindowId_DeskContainerK,
|
||||
kShellWindowId_DeskContainerL,
|
||||
kShellWindowId_DeskContainerM,
|
||||
kShellWindowId_DeskContainerN,
|
||||
kShellWindowId_DeskContainerO,
|
||||
kShellWindowId_DeskContainerP,
|
||||
kShellWindowId_AlwaysOnTopContainer,
|
||||
kShellWindowId_FloatContainer,
|
||||
kShellWindowId_UnparentedContainer,
|
||||
|
@ -9729,6 +9729,9 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
{"vc-controls-ui", flag_descriptions::kVcControlsUiName,
|
||||
flag_descriptions::kVcControlsUiDescription, kOsCrOS,
|
||||
FEATURE_VALUE_TYPE(chromeos::features::kVcControlsUi)},
|
||||
{"enable-16-desks", flag_descriptions::kDesks16Name,
|
||||
flag_descriptions::kDesks16Description, kOsCrOS,
|
||||
FEATURE_VALUE_TYPE(ash::features::kEnable16Desks)},
|
||||
#endif
|
||||
|
||||
// NOTE: Adding a new flag requires adding a corresponding entry to enum
|
||||
|
@ -1654,6 +1654,11 @@
|
||||
"owners": [ "arakeri@microsoft.com", "flackr@chromium.org" ],
|
||||
"expiry_milestone": 99
|
||||
},
|
||||
{
|
||||
"name": "enable-16-desks",
|
||||
"owners": [ "dandersson", "janetmac" ],
|
||||
"expiry_milestone": 118
|
||||
},
|
||||
{
|
||||
"name": "enable-accelerated-video-decode",
|
||||
"owners": [ "media-dev@chromium.org" ],
|
||||
|
@ -4993,6 +4993,10 @@ const char kDefaultLinkCapturingInBrowserDescription[] =
|
||||
"When enabled, newly installed apps will not capture links clicked in the "
|
||||
"browser.";
|
||||
|
||||
extern const char kDesks16Name[] = "Enable up to 16 virtual desks";
|
||||
extern const char kDesks16Description[] =
|
||||
"When enabled, up to 16 virtual desks are allowed.";
|
||||
|
||||
const char kDesksCloseAllName[] = "Desks Close All";
|
||||
const char kDesksCloseAllDescription[] =
|
||||
"Close a desk along with all of its windows and tabs.";
|
||||
|
@ -2851,6 +2851,9 @@ extern const char kCalendarModelDebugModeDescription[];
|
||||
extern const char kDefaultLinkCapturingInBrowserName[];
|
||||
extern const char kDefaultLinkCapturingInBrowserDescription[];
|
||||
|
||||
extern const char kDesks16Name[];
|
||||
extern const char kDesks16Description[];
|
||||
|
||||
extern const char kDesksCloseAllName[];
|
||||
extern const char kDesksCloseAllDescription[];
|
||||
|
||||
|
@ -56674,6 +56674,7 @@ from previous Chrome versions.
|
||||
<int value="-2129013032" label="DocumentTransition:enabled"/>
|
||||
<int value="-2128705444" label="AssistantAppSupport:enabled"/>
|
||||
<int value="-2128535212" label="GuestOsFiles:enabled"/>
|
||||
<int value="-2127806304" label="Enable16Desks:disabled"/>
|
||||
<int value="-2127319228" label="enable-media-internals:disabled"/>
|
||||
<int value="-2126697213" label="EnablePalmSuppression:disabled"/>
|
||||
<int value="-2126275491" label="WebViewAppsPackageNamesAllowlist:disabled"/>
|
||||
@ -58186,6 +58187,7 @@ from previous Chrome versions.
|
||||
<int value="-1261110018" label="AllowDisableTouchpadHapticFeedback:disabled"/>
|
||||
<int value="-1260211490" label="FastPairLowPower:disabled"/>
|
||||
<int value="-1259901957" label="VrBrowserKeyboard:disabled"/>
|
||||
<int value="-1259809702" label="Enable16Desks:enabled"/>
|
||||
<int value="-1259627326" label="AllowRepeatedUpdates:disabled"/>
|
||||
<int value="-1258141852" label="ScrollUnification:enabled"/>
|
||||
<int value="-1257822114" label="ContextMenuPopupForAllScreenSizes:disabled"/>
|
||||
|
@ -1644,6 +1644,76 @@ chromium-metrics-reviews@google.com.
|
||||
</summary>
|
||||
</histogram>
|
||||
|
||||
<histogram name="Ash.Desks.NumberOfWindowsOnDesk_10" units="units"
|
||||
expires_after="2023-04-23">
|
||||
<owner>dandersson@chromium.org</owner>
|
||||
<owner>janetmac@chromium.org</owner>
|
||||
<summary>
|
||||
The number of windows on the tenth desk. Emitted when a desk is removed, or
|
||||
a window is moved to another desk.
|
||||
</summary>
|
||||
</histogram>
|
||||
|
||||
<histogram name="Ash.Desks.NumberOfWindowsOnDesk_11" units="units"
|
||||
expires_after="2023-04-23">
|
||||
<owner>dandersson@chromium.org</owner>
|
||||
<owner>janetmac@chromium.org</owner>
|
||||
<summary>
|
||||
The number of windows on the eleventh desk. Emitted when a desk is removed,
|
||||
or a window is moved to another desk.
|
||||
</summary>
|
||||
</histogram>
|
||||
|
||||
<histogram name="Ash.Desks.NumberOfWindowsOnDesk_12" units="units"
|
||||
expires_after="2023-04-23">
|
||||
<owner>dandersson@chromium.org</owner>
|
||||
<owner>janetmac@chromium.org</owner>
|
||||
<summary>
|
||||
The number of windows on the twelfth desk. Emitted when a desk is removed,
|
||||
or a window is moved to another desk.
|
||||
</summary>
|
||||
</histogram>
|
||||
|
||||
<histogram name="Ash.Desks.NumberOfWindowsOnDesk_13" units="units"
|
||||
expires_after="2023-04-23">
|
||||
<owner>dandersson@chromium.org</owner>
|
||||
<owner>janetmac@chromium.org</owner>
|
||||
<summary>
|
||||
The number of windows on the thirteenth desk. Emitted when a desk is
|
||||
removed, or a window is moved to another desk.
|
||||
</summary>
|
||||
</histogram>
|
||||
|
||||
<histogram name="Ash.Desks.NumberOfWindowsOnDesk_14" units="units"
|
||||
expires_after="2023-04-23">
|
||||
<owner>dandersson@chromium.org</owner>
|
||||
<owner>janetmac@chromium.org</owner>
|
||||
<summary>
|
||||
The number of windows on the fourteenth desk. Emitted when a desk is
|
||||
removed, or a window is moved to another desk.
|
||||
</summary>
|
||||
</histogram>
|
||||
|
||||
<histogram name="Ash.Desks.NumberOfWindowsOnDesk_15" units="units"
|
||||
expires_after="2023-04-23">
|
||||
<owner>dandersson@chromium.org</owner>
|
||||
<owner>janetmac@chromium.org</owner>
|
||||
<summary>
|
||||
The number of windows on the fifteenth desk. Emitted when a desk is removed,
|
||||
or a window is moved to another desk.
|
||||
</summary>
|
||||
</histogram>
|
||||
|
||||
<histogram name="Ash.Desks.NumberOfWindowsOnDesk_16" units="units"
|
||||
expires_after="2023-04-23">
|
||||
<owner>dandersson@chromium.org</owner>
|
||||
<owner>janetmac@chromium.org</owner>
|
||||
<summary>
|
||||
The number of windows on the sixteenth desk. Emitted when a desk is removed,
|
||||
or a window is moved to another desk.
|
||||
</summary>
|
||||
</histogram>
|
||||
|
||||
<histogram name="Ash.Desks.NumberOfWindowsOnDesk_2" units="units"
|
||||
expires_after="2023-04-23">
|
||||
<owner>afakhry@chromium.org</owner>
|
||||
@ -1714,6 +1784,16 @@ chromium-metrics-reviews@google.com.
|
||||
</summary>
|
||||
</histogram>
|
||||
|
||||
<histogram name="Ash.Desks.NumberOfWindowsOnDesk_9" units="units"
|
||||
expires_after="2023-04-23">
|
||||
<owner>dandersson@chromium.org</owner>
|
||||
<owner>janetmac@chromium.org</owner>
|
||||
<summary>
|
||||
The number of windows on the ninth desk. Emitted when a desk is removed, or
|
||||
a window is moved to another desk.
|
||||
</summary>
|
||||
</histogram>
|
||||
|
||||
<histogram name="Ash.Desks.PresentationTime.UpdateGesture" units="ms"
|
||||
expires_after="2023-01-10">
|
||||
<owner>afakhry@chromium.org</owner>
|
||||
|
Reference in New Issue
Block a user