blob: a35d558d7b6103c2d72f535672e4ad59b6848319 [file] [log] [blame]
// 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 "components/tabs/public/unpinned_tab_collection.h"
#include <memory>
#include <optional>
#include "components/tabs/public/tab_collection.h"
#include "components/tabs/public/tab_group_tab_collection.h"
#include "components/tabs/public/tab_interface.h"
namespace tabs {
UnpinnedTabCollection::UnpinnedTabCollection()
: TabCollection(TabCollection::Type::UNPINNED,
{TabCollection::Type::GROUP, TabCollection::Type::SPLIT},
/*supports_tabs=*/true) {}
UnpinnedTabCollection::~UnpinnedTabCollection() = default;
void UnpinnedTabCollection::MoveGroupToRecursive(
int index,
TabGroupTabCollection* collection) {
CHECK(collection);
CHECK(index >= 0);
std::unique_ptr<tabs::TabCollection> removed_collection =
MaybeRemoveCollection(collection);
if (index == static_cast<int>(TabCountRecursive())) {
AddCollection(std::move(removed_collection), ChildCount());
} else {
const tabs::TabInterface* const tab_at_destination =
GetTabAtIndexRecursive(index);
const size_t index_to_move =
GetDirectChildIndexOfCollectionContainingTab(tab_at_destination)
.value();
AddCollection(std::move(removed_collection), index_to_move);
}
}
} // namespace tabs