blob: 2452757bf77c386283a7395c904be3706f3256a0 [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.
#ifndef CHROME_BROWSER_UI_PLUS_ADDRESSES_PLUS_ADDRESS_MENU_MODEL_H_
#define CHROME_BROWSER_UI_PLUS_ADDRESSES_PLUS_ADDRESS_MENU_MODEL_H_
#include <string>
#include "base/functional/callback.h"
#include "ui/menus/simple_menu_model.h"
namespace plus_addresses {
// A menu model for showing options to undo automatic plus address replacement
// during full form filling and managing plus addresses.
class PlusAddressMenuModel : public ui::SimpleMenuModel,
public ui::SimpleMenuModel::Delegate {
public:
// Command ids for the menu items.
static constexpr int kUndoReplacement = 1;
static constexpr int kManage = 2;
// Creates a `PlusAddressMenuModel`. `undo_replacement` is the callback that
// is expected to undo the filling of a plus address. `open_management` is
// expected to open the management surface for plus addresses.
PlusAddressMenuModel(const std::u16string& gaia_email,
base::OnceClosure undo_replacement,
base::RepeatingClosure open_management);
~PlusAddressMenuModel() override;
// ui::SimpleMenuModel::Delegate:
void ExecuteCommand(int command_id, int event_flags) override;
private:
base::OnceClosure undo_replacement_;
base::RepeatingClosure open_management_;
};
} // namespace plus_addresses
#endif // CHROME_BROWSER_UI_PLUS_ADDRESSES_PLUS_ADDRESS_MENU_MODEL_H_