shelf_menu_model_adapter.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef ASH_SHELF_SHELF_MENU_MODEL_ADAPTER_H_
  5. #define ASH_SHELF_SHELF_MENU_MODEL_ADAPTER_H_
  6. #include "ash/app_menu/app_menu_model_adapter.h"
  7. #include "ash/ash_export.h"
  8. namespace views {
  9. class View;
  10. }
  11. namespace ash {
  12. // A class wrapping menu operations for ShelfView. Responsible for building,
  13. // running, and recording histograms.
  14. class ASH_EXPORT ShelfMenuModelAdapter : public AppMenuModelAdapter {
  15. public:
  16. ShelfMenuModelAdapter(const std::string& app_id,
  17. std::unique_ptr<ui::SimpleMenuModel> model,
  18. views::View* menu_owner,
  19. ui::MenuSourceType source_type,
  20. base::OnceClosure on_menu_closed_callback,
  21. bool is_tablet_mode,
  22. bool for_application_menu_items);
  23. ShelfMenuModelAdapter(const ShelfMenuModelAdapter&) = delete;
  24. ShelfMenuModelAdapter& operator=(const ShelfMenuModelAdapter&) = delete;
  25. ~ShelfMenuModelAdapter() override;
  26. // Overridden from AppMenuModelAdapter:
  27. int GetCommandIdForHistograms(int command_id) override;
  28. void RecordHistogramOnMenuClosed() override;
  29. // Whether this is showing a menu for |view|.
  30. bool IsShowingMenuForView(const views::View& view) const;
  31. private:
  32. // The view showing the context menu. Not owned.
  33. views::View* menu_owner_;
  34. // True if this adapter was created for the shelf application menu items.
  35. const bool for_application_menu_items_;
  36. };
  37. } // namespace ash
  38. #endif // ASH_SHELF_SHELF_MENU_MODEL_ADAPTER_H_