Index: chrome/browser/ui/content_settings/content_setting_media_menu_model.h |
diff --git a/chrome/browser/ui/content_settings/content_setting_media_menu_model.h b/chrome/browser/ui/content_settings/content_setting_media_menu_model.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..935ee617cbb914d43d873bf50d782af46559b5a4 |
--- /dev/null |
+++ b/chrome/browser/ui/content_settings/content_setting_media_menu_model.h |
@@ -0,0 +1,60 @@ |
+// Copyright 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_CONTENT_SETTINGS_CONTENT_SETTING_MEDIA_MENU_MODEL_H_ |
+#define CHROME_BROWSER_UI_CONTENT_SETTINGS_CONTENT_SETTING_MEDIA_MENU_MODEL_H_ |
+ |
+#include <map> |
+ |
+#include "base/callback.h" |
+#include "content/public/common/media_stream_request.h" |
+#include "ui/base/models/simple_menu_model.h" |
+ |
+class ContentSettingBubbleModel; |
+class Profile; |
+ |
+// A menu model that builds the contents of the media capture devices menu in |
+// the content setting bubble. |
+class ContentSettingMediaMenuModel |
+ : public ui::SimpleMenuModel, |
Peter Kasting
2013/02/06 22:11:18
Can we use composition here or in the callers/user
no longer working on chromium
2013/02/07 16:25:19
Yes, we can, but then we need to expose the Simple
|
+ public ui::SimpleMenuModel::Delegate { |
+ public: |
+ // Callback to update the label of the menu in the UI. |
+ typedef base::Callback<void(content::MediaStreamType, const std::string&)> |
+ MenuLabelChangedCallback; |
+ |
+ ContentSettingMediaMenuModel( |
+ Profile* profile, |
+ content::MediaStreamType type, |
+ ContentSettingBubbleModel* bubble_model, |
+ const MenuLabelChangedCallback& callback); |
+ |
+ virtual ~ContentSettingMediaMenuModel(); |
+ |
+ // ui::SimpleMenuModel::Delegate implementation: |
+ virtual bool IsCommandIdChecked(int command_id) const OVERRIDE; |
+ virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE; |
+ virtual bool GetAcceleratorForCommandId( |
+ int command_id, |
+ ui::Accelerator* accelerator) OVERRIDE; |
+ virtual void ExecuteCommand(int command_id) OVERRIDE; |
+ |
+ private: |
+ typedef std::map<int, content::MediaStreamDevice> CommandMap; |
+ |
+ // Internal method to build the menu. |
+ void BuildMenu(); |
+ |
+ Profile* profile_; // Weak. |
+ content::MediaStreamType type_; |
+ ContentSettingBubbleModel* media_bubble_model_; // Weak. |
+ MenuLabelChangedCallback callback_; |
+ |
+ // Map of command IDs to devices. |
+ CommandMap commands_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ContentSettingMediaMenuModel); |
+}; |
+ |
+#endif // CHROME_BROWSER_UI_CONTENT_SETTINGS_CONTENT_SETTING_MEDIA_MENU_MODEL_H_ |