Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / app_list / app_context_menu.h
1 // Copyright 2013 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
5 #ifndef CHROME_BROWSER_UI_APP_LIST_APP_CONTEXT_MENU_H_
6 #define CHROME_BROWSER_UI_APP_LIST_APP_CONTEXT_MENU_H_
7
8 #include <string>
9
10 #include "base/basictypes.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "ui/base/models/simple_menu_model.h"
13
14 class AppListControllerDelegate;
15 class Profile;
16
17 namespace extensions {
18 class ContextMenuMatcher;
19 }
20
21 namespace app_list {
22
23 class AppContextMenuDelegate;
24
25 class AppContextMenu : public ui::SimpleMenuModel::Delegate {
26  public:
27   AppContextMenu(AppContextMenuDelegate* delegate,
28                  Profile* profile,
29                  const std::string& app_id,
30                  AppListControllerDelegate* controller);
31   ~AppContextMenu() override;
32
33   // Note this could return NULL if corresponding extension is gone.
34   ui::MenuModel* GetMenuModel();
35
36   void set_is_platform_app(bool is_platform_app) {
37     is_platform_app_ = is_platform_app;
38   }
39   void set_is_search_result(bool is_search_result) {
40     is_search_result_ = is_search_result;
41   }
42   void set_is_in_folder(bool is_in_folder) {
43     is_in_folder_ = is_in_folder;
44   }
45
46  private:
47   // ui::SimpleMenuModel::Delegate overrides:
48   bool IsItemForCommandIdDynamic(int command_id) const override;
49   base::string16 GetLabelForCommandId(int command_id) const override;
50   bool IsCommandIdChecked(int command_id) const override;
51   bool IsCommandIdEnabled(int command_id) const override;
52   bool GetAcceleratorForCommandId(int command_id,
53                                   ui::Accelerator* acclelrator) override;
54   void ExecuteCommand(int command_id, int event_flags) override;
55
56   AppContextMenuDelegate* delegate_;
57   Profile* profile_;
58   const std::string app_id_;
59   AppListControllerDelegate* controller_;
60   bool is_platform_app_;
61   bool is_search_result_;
62   bool is_in_folder_;
63
64   scoped_ptr<ui::SimpleMenuModel> menu_model_;
65   scoped_ptr<extensions::ContextMenuMatcher> extension_menu_items_;
66
67   DISALLOW_COPY_AND_ASSIGN(AppContextMenu);
68 };
69
70 }  // namespace app_list
71
72 #endif  // CHROME_BROWSER_UI_APP_LIST_APP_CONTEXT_MENU_H_