Commit 76a0e0b0 authored by John Lee's avatar John Lee Committed by Commit Bot

WebUI Tab Strip: Move group ID search to a util file

These methods will soon be used elsewhere to determine if a drag should
be allowed or not.

Bug: 1005560
Change-Id: Ief93fdf35c034301f310bf519859f3e8dafcb8b7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2030045
Commit-Queue: John Lee <johntlee@chromium.org>
Reviewed-by: default avatarDemetrios Papadopoulos <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#737075}
parent 12f280e5
......@@ -4196,6 +4196,8 @@ jumbo_static_library("ui") {
"webui/tab_strip/tab_strip_ui_layout.h",
"webui/tab_strip/tab_strip_ui_metrics.cc",
"webui/tab_strip/tab_strip_ui_metrics.h",
"webui/tab_strip/tab_strip_ui_util.cc",
"webui/tab_strip/tab_strip_ui_util.h",
"webui/tab_strip/thumbnail_tracker.cc",
"webui/tab_strip/thumbnail_tracker.h",
]
......
......@@ -26,6 +26,7 @@
#include "chrome/browser/ui/tabs/tab_utils.h"
#include "chrome/browser/ui/webui/tab_strip/tab_strip_ui_embedder.h"
#include "chrome/browser/ui/webui/tab_strip/tab_strip_ui_metrics.h"
#include "chrome/browser/ui/webui/tab_strip/tab_strip_ui_util.h"
#include "chrome/grit/generated_resources.h"
#include "components/tab_groups/tab_group_color.h"
#include "components/tab_groups/tab_group_id.h"
......@@ -155,18 +156,6 @@ class WebUITabContextMenu : public ui::SimpleMenuModel::Delegate,
const int tab_index_;
};
base::Optional<tab_groups::TabGroupId> GetTabGroupIdFromString(
TabGroupModel* tab_group_model,
std::string group_id) {
for (tab_groups::TabGroupId candidate : tab_group_model->ListTabGroups()) {
if (candidate.ToString() == group_id) {
return base::Optional<tab_groups::TabGroupId>{candidate};
}
}
return base::nullopt;
}
} // namespace
TabStripUIHandler::TabStripUIHandler(Browser* browser,
......@@ -582,8 +571,9 @@ void TabStripUIHandler::HandleGroupTab(const base::ListValue* args) {
DCHECK(got_tab);
const std::string group_id_string = args->GetList()[1].GetString();
base::Optional<tab_groups::TabGroupId> group_id = GetTabGroupIdFromString(
browser_->tab_strip_model()->group_model(), group_id_string);
base::Optional<tab_groups::TabGroupId> group_id =
tab_strip_ui::GetTabGroupIdFromString(
browser_->tab_strip_model()->group_model(), group_id_string);
if (group_id.has_value()) {
browser_->tab_strip_model()->AddToExistingGroup({tab_index},
group_id.value());
......@@ -611,31 +601,15 @@ void TabStripUIHandler::HandleMoveGroup(const base::ListValue* args) {
}
auto* target_browser = browser_;
Browser* source_browser = nullptr;
base::Optional<tab_groups::TabGroupId> group_id = base::nullopt;
for (auto* browser : *BrowserList::GetInstance()) {
if (browser->profile() != target_browser->profile()) {
// Source and target browsers are different profiles or one of them is
// incognito.
continue;
}
group_id = GetTabGroupIdFromString(
browser->tab_strip_model()->group_model(), group_id_string);
if (!group_id.has_value()) {
// No group with the ID found in this browser.
continue;
}
source_browser = browser;
break;
}
Browser* source_browser =
tab_strip_ui::GetBrowserWithGroupId(browser_->profile(), group_id_string);
if (!source_browser) {
return;
}
base::Optional<tab_groups::TabGroupId> group_id =
tab_strip_ui::GetTabGroupIdFromString(
source_browser->tab_strip_model()->group_model(), group_id_string);
TabGroup* group =
source_browser->tab_strip_model()->group_model()->GetTabGroup(
group_id.value());
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/webui/tab_strip/tab_strip_ui_util.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/tabs/tab_group_model.h"
#include "components/tab_groups/tab_group_id.h"
namespace tab_strip_ui {
base::Optional<tab_groups::TabGroupId> GetTabGroupIdFromString(
TabGroupModel* tab_group_model,
std::string group_id_string) {
for (tab_groups::TabGroupId candidate : tab_group_model->ListTabGroups()) {
if (candidate.ToString() == group_id_string) {
return base::Optional<tab_groups::TabGroupId>{candidate};
}
}
return base::nullopt;
}
Browser* GetBrowserWithGroupId(Profile* profile, std::string group_id_string) {
for (auto* browser : *BrowserList::GetInstance()) {
if (browser->profile() != profile) {
continue;
}
base::Optional<tab_groups::TabGroupId> group_id = GetTabGroupIdFromString(
browser->tab_strip_model()->group_model(), group_id_string);
if (group_id.has_value()) {
return browser;
}
}
return nullptr;
}
} // namespace tab_strip_ui
// Copyright (c) 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_WEBUI_TAB_STRIP_TAB_STRIP_UI_UTIL_H_
#define CHROME_BROWSER_UI_WEBUI_TAB_STRIP_TAB_STRIP_UI_UTIL_H_
#include "base/optional.h"
class Browser;
class Profile;
class TabGroupModel;
namespace tab_groups {
class TabGroupId;
}
namespace tab_strip_ui {
base::Optional<tab_groups::TabGroupId> GetTabGroupIdFromString(
TabGroupModel* tab_group_model,
std::string group_id_string);
Browser* GetBrowserWithGroupId(Profile* profile, std::string group_id_string);
} // namespace tab_strip_ui
#endif // CHROME_BROWSER_UI_WEBUI_TAB_STRIP_TAB_STRIP_UI_UTIL_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment