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") { ...@@ -4196,6 +4196,8 @@ jumbo_static_library("ui") {
"webui/tab_strip/tab_strip_ui_layout.h", "webui/tab_strip/tab_strip_ui_layout.h",
"webui/tab_strip/tab_strip_ui_metrics.cc", "webui/tab_strip/tab_strip_ui_metrics.cc",
"webui/tab_strip/tab_strip_ui_metrics.h", "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.cc",
"webui/tab_strip/thumbnail_tracker.h", "webui/tab_strip/thumbnail_tracker.h",
] ]
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include "chrome/browser/ui/tabs/tab_utils.h" #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_embedder.h"
#include "chrome/browser/ui/webui/tab_strip/tab_strip_ui_metrics.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 "chrome/grit/generated_resources.h"
#include "components/tab_groups/tab_group_color.h" #include "components/tab_groups/tab_group_color.h"
#include "components/tab_groups/tab_group_id.h" #include "components/tab_groups/tab_group_id.h"
...@@ -155,18 +156,6 @@ class WebUITabContextMenu : public ui::SimpleMenuModel::Delegate, ...@@ -155,18 +156,6 @@ class WebUITabContextMenu : public ui::SimpleMenuModel::Delegate,
const int tab_index_; 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 } // namespace
TabStripUIHandler::TabStripUIHandler(Browser* browser, TabStripUIHandler::TabStripUIHandler(Browser* browser,
...@@ -582,7 +571,8 @@ void TabStripUIHandler::HandleGroupTab(const base::ListValue* args) { ...@@ -582,7 +571,8 @@ void TabStripUIHandler::HandleGroupTab(const base::ListValue* args) {
DCHECK(got_tab); DCHECK(got_tab);
const std::string group_id_string = args->GetList()[1].GetString(); const std::string group_id_string = args->GetList()[1].GetString();
base::Optional<tab_groups::TabGroupId> group_id = GetTabGroupIdFromString( base::Optional<tab_groups::TabGroupId> group_id =
tab_strip_ui::GetTabGroupIdFromString(
browser_->tab_strip_model()->group_model(), group_id_string); browser_->tab_strip_model()->group_model(), group_id_string);
if (group_id.has_value()) { if (group_id.has_value()) {
browser_->tab_strip_model()->AddToExistingGroup({tab_index}, browser_->tab_strip_model()->AddToExistingGroup({tab_index},
...@@ -611,31 +601,15 @@ void TabStripUIHandler::HandleMoveGroup(const base::ListValue* args) { ...@@ -611,31 +601,15 @@ void TabStripUIHandler::HandleMoveGroup(const base::ListValue* args) {
} }
auto* target_browser = browser_; auto* target_browser = browser_;
Browser* source_browser = nullptr; Browser* source_browser =
base::Optional<tab_groups::TabGroupId> group_id = base::nullopt; tab_strip_ui::GetBrowserWithGroupId(browser_->profile(), group_id_string);
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;
}
if (!source_browser) { if (!source_browser) {
return; return;
} }
base::Optional<tab_groups::TabGroupId> group_id =
tab_strip_ui::GetTabGroupIdFromString(
source_browser->tab_strip_model()->group_model(), group_id_string);
TabGroup* group = TabGroup* group =
source_browser->tab_strip_model()->group_model()->GetTabGroup( source_browser->tab_strip_model()->group_model()->GetTabGroup(
group_id.value()); 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