Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3573)

Unified Diff: chrome/browser/ui/views/frame/system_menu_model_builder.h

Issue 11819008: Refactors building the system menu model into a common place (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to trunk and fix windows build Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/frame/system_menu_model_builder.h
diff --git a/chrome/browser/ui/views/frame/system_menu_model_builder.h b/chrome/browser/ui/views/frame/system_menu_model_builder.h
new file mode 100644
index 0000000000000000000000000000000000000000..d68aeb37c34598203cbc65da797135cc8c8a45ab
--- /dev/null
+++ b/chrome/browser/ui/views/frame/system_menu_model_builder.h
@@ -0,0 +1,58 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_VIEWS_FRAME_SYSTEM_MENU_MODEL_BUILDER_H_
+#define CHROME_BROWSER_UI_VIEWS_FRAME_SYSTEM_MENU_MODEL_BUILDER_H_
+
+#include "base/memory/scoped_ptr.h"
+#include "chrome/browser/ui/views/frame/system_menu_model_delegate.h"
+
+class Browser;
+class EncodingMenuModel;
+class ZoomMenuModel;
+
+namespace ui {
+class AcceleratorProvider;
+class MenuModel;
+class SimpleMenuModel;
+}
+
+// SystemMenuModelBuilder is responsible for building and owning the system menu
+// model.
+class SystemMenuModelBuilder {
+ public:
+ SystemMenuModelBuilder(ui::AcceleratorProvider* provider, Browser* browser);
+ ~SystemMenuModelBuilder();
+
+ // Populates the menu.
+ void Init();
+
+ // Returns the menu model. SystemMenuModelBuilder owns the returned model.
+ ui::MenuModel* menu_model() { return menu_model_.get(); }
+
+ private:
+ Browser* browser() { return menu_delegate_.browser(); }
+
+ // Creates and returns the MenuModel. This does not populate the menu.
+ // |needs_trailing_separator| is set to true if the menu needs a separator
+ // after all items have been added.
+ ui::SimpleMenuModel* CreateMenuModel(bool* needs_trailing_separator);
+
+ // Populates |model| with the appropriate contents.
+ void BuildMenu(ui::SimpleMenuModel* model);
+ void BuildSystemMenuForBrowserWindow(ui::SimpleMenuModel* model);
+ void BuildSystemMenuForAppOrPopupWindow(ui::SimpleMenuModel* model);
+
+ // Adds items for toggling the frame type (if necessary).
+ void AddFrameToggleItems(ui::SimpleMenuModel* model);
+
+ SystemMenuModelDelegate menu_delegate_;
+ scoped_ptr<ui::MenuModel> menu_model_;
+ scoped_ptr<ZoomMenuModel> zoom_menu_contents_;
+ scoped_ptr<EncodingMenuModel> encoding_menu_contents_;
+
+ DISALLOW_COPY_AND_ASSIGN(SystemMenuModelBuilder);
+};
+
+#endif // CHROME_BROWSER_UI_VIEWS_FRAME_SYSTEM_MENU_MODEL_BUILDER_H_
« no previous file with comments | « chrome/browser/ui/views/frame/native_browser_frame.h ('k') | chrome/browser/ui/views/frame/system_menu_model_builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698