summaryrefslogtreecommitdiff
path: root/chromium/components/dbus/menu/menu.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components/dbus/menu/menu.h')
-rw-r--r--chromium/components/dbus/menu/menu.h35
1 files changed, 31 insertions, 4 deletions
diff --git a/chromium/components/dbus/menu/menu.h b/chromium/components/dbus/menu/menu.h
index 5198c809aba..e6f702a5c9a 100644
--- a/chromium/components/dbus/menu/menu.h
+++ b/chromium/components/dbus/menu/menu.h
@@ -7,12 +7,15 @@
#include <map>
#include <memory>
+#include <string>
+#include <utility>
#include <vector>
#include "base/callback_forward.h"
#include "base/component_export.h"
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
+#include "components/dbus/menu/menu_property_list.h"
#include "components/dbus/menu/types.h"
#include "dbus/bus.h"
#include "dbus/exported_object.h"
@@ -28,19 +31,30 @@ class DbusPropertiesInterface;
class COMPONENT_EXPORT(DBUS) DbusMenu {
public:
using InitializedCallback = base::OnceCallback<void(bool success)>;
+ using MenuItemReference = std::pair<ui::MenuModel*, int>;
// The exported DBus object will not be unregistered upon deletion. It is the
// responsibility of the caller to remove it after |this| is deleted.
DbusMenu(dbus::ExportedObject* exported_object, InitializedCallback callback);
~DbusMenu();
+ // Should be called when there's a new root menu.
void SetModel(ui::MenuModel* model, bool send_signal);
+ // Should be called when items are added/removed/reordered in a menu. Prefer
+ // this over SetModel().
+ void MenuLayoutUpdated(ui::MenuModel* model);
+
+ // Should be called when properties on (a group of) menu items change. Prefer
+ // this over SetModel().
+ void MenuItemsPropertiesUpdated(
+ const std::vector<MenuItemReference>& menu_items);
+
private:
struct MenuItem {
public:
MenuItem(int32_t id,
- std::map<std::string, DbusVariant>&& properties,
+ MenuItemProperties&& properties,
std::vector<int32_t>&& children,
ui::MenuModel* menu,
ui::MenuModel* containing_menu,
@@ -48,8 +62,8 @@ class COMPONENT_EXPORT(DBUS) DbusMenu {
~MenuItem();
const int32_t id;
- const std::map<std::string, DbusVariant> properties;
- const std::vector<int32_t> children;
+ MenuItemProperties properties;
+ std::vector<int32_t> children;
// The MenuModel corresponding to this MenuItem, or null if this MenuItem is
// not a submenu. This can happen for leaf items or an empty root item.
@@ -119,7 +133,20 @@ class COMPONENT_EXPORT(DBUS) DbusMenu {
void WriteMenuItem(const MenuItem* item,
dbus::MessageWriter* writer,
int32_t depth,
- const std::vector<std::string>& property_filter);
+ const MenuPropertyList& property_filter) const;
+
+ void WriteUpdatedProperties(dbus::MessageWriter* writer,
+ const MenuPropertyChanges& updated_props) const;
+
+ // Recursively searches |item| and its descendants for the MenuItem
+ // corresponding to |model|.
+ MenuItem* FindMenuItemForModel(const ui::MenuModel* model,
+ MenuItem* item) const;
+
+ void DeleteItem(MenuItem* item);
+ void DeleteItemChildren(MenuItem* item);
+
+ void SendLayoutChangedSignal(int32_t id);
dbus::ExportedObject* menu_ = nullptr;