1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
// Copyright 2020 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_EXTENSIONS_API_TAB_GROUPS_TAB_GROUPS_API_H_
#define CHROME_BROWSER_EXTENSIONS_API_TAB_GROUPS_TAB_GROUPS_API_H_
#include <string>
#include "components/tab_groups/tab_group_visual_data.h"
#include "extensions/browser/extension_function.h"
#include "ui/gfx/range/range.h"
class Browser;
namespace tab_groups {
class TabGroupId;
}
namespace extensions {
class TabGroupsGetFunction : public ExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("tabGroups.get", TAB_GROUPS_GET)
TabGroupsGetFunction() = default;
TabGroupsGetFunction(const TabGroupsGetFunction&) = delete;
TabGroupsGetFunction& operator=(const TabGroupsGetFunction&) = delete;
// ExtensionFunction:
ResponseAction Run() override;
protected:
~TabGroupsGetFunction() override = default;
};
class TabGroupsQueryFunction : public ExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("tabGroups.query", TAB_GROUPS_QUERY)
TabGroupsQueryFunction() = default;
TabGroupsQueryFunction(const TabGroupsQueryFunction&) = delete;
TabGroupsQueryFunction& operator=(const TabGroupsQueryFunction&) = delete;
// ExtensionFunction:
ResponseAction Run() override;
protected:
~TabGroupsQueryFunction() override = default;
};
class TabGroupsUpdateFunction : public ExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("tabGroups.update", TAB_GROUPS_UPDATE)
TabGroupsUpdateFunction() = default;
TabGroupsUpdateFunction(const TabGroupsUpdateFunction&) = delete;
TabGroupsUpdateFunction& operator=(const TabGroupsUpdateFunction&) = delete;
// ExtensionFunction:
ResponseAction Run() override;
protected:
~TabGroupsUpdateFunction() override = default;
};
class TabGroupsMoveFunction : public ExtensionFunction {
public:
DECLARE_EXTENSION_FUNCTION("tabGroups.move", TAB_GROUPS_MOVE)
TabGroupsMoveFunction() = default;
TabGroupsMoveFunction(const TabGroupsMoveFunction&) = delete;
TabGroupsMoveFunction& operator=(const TabGroupsMoveFunction&) = delete;
// ExtensionFunction:
ResponseAction Run() override;
protected:
~TabGroupsMoveFunction() override = default;
private:
// Moves the group with ID |group_id| to the |new_index| in the window with ID
// |window_id|. If |window_id| is not specified, moves the group within its
// current window. |group| is populated with the group's TabGroupId, and
// |error| is populated if the group cannot be found or moved.
bool MoveGroup(int group_id,
int new_index,
const std::optional<int>& window_id,
tab_groups::TabGroupId* group,
std::string* error);
// Moves a tab group between browser windows.
bool MoveTabGroupBetweenBrowsers(
Browser* source_browser,
Browser* target_browser,
const tab_groups::TabGroupId& group,
const tab_groups::TabGroupVisualData& visual_data,
const gfx::Range& tabs,
int new_index,
std::string* error);
};
} // namespace extensions
#endif // CHROME_BROWSER_EXTENSIONS_API_TAB_GROUPS_TAB_GROUPS_API_H_
|