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

Unified Diff: chrome/browser/ui/views/content_setting_bubble_contents.h

Issue 1977673002: Make the combobox in ContentSettingBubbleContents an actual combobox. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix compile Created 4 years, 7 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/content_setting_bubble_contents.h
diff --git a/chrome/browser/ui/views/content_setting_bubble_contents.h b/chrome/browser/ui/views/content_setting_bubble_contents.h
index 9e36332b38cbfa7eb32d53cb3ee7d5f15d0fea0f..965e5f08a264d3ab473c1d05a83c84c9b066f5f0 100644
--- a/chrome/browser/ui/views/content_setting_bubble_contents.h
+++ b/chrome/browser/ui/views/content_setting_bubble_contents.h
@@ -5,6 +5,7 @@
#ifndef CHROME_BROWSER_UI_VIEWS_CONTENT_SETTING_BUBBLE_CONTENTS_H_
#define CHROME_BROWSER_UI_VIEWS_CONTENT_SETTING_BUBBLE_CONTENTS_H_
+#include <list>
#include <map>
#include "base/compiler_specific.h"
@@ -12,27 +13,21 @@
#include "components/content_settings/core/common/content_settings_types.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/common/media_stream_request.h"
+#include "ui/base/models/combobox_model.h"
#include "ui/views/bubble/bubble_dialog_delegate.h"
#include "ui/views/controls/button/button.h"
-#include "ui/views/controls/button/menu_button_listener.h"
+#include "ui/views/controls/combobox/combobox_listener.h"
#include "ui/views/controls/link_listener.h"
class ContentSettingBubbleModel;
-class ContentSettingMediaMenuModel;
class Profile;
namespace chrome {
class ContentSettingBubbleViewsBridge;
}
-namespace ui {
-class SimpleMenuModel;
-}
-
namespace views {
class LabelButton;
-class MenuButton;
-class MenuRunner;
class RadioButton;
}
@@ -49,7 +44,7 @@ class ContentSettingBubbleContents : public content::WebContentsObserver,
public views::BubbleDialogDelegateView,
public views::ButtonListener,
public views::LinkListener,
- public views::MenuButtonListener {
+ public views::ComboboxListener {
public:
ContentSettingBubbleContents(
ContentSettingBubbleModel* content_setting_bubble_model,
@@ -60,10 +55,6 @@ class ContentSettingBubbleContents : public content::WebContentsObserver,
gfx::Size GetPreferredSize() const override;
- // Callback to allow ContentSettingMediaMenuModel to update the menu label.
- void UpdateMenuLabel(content::MediaStreamType type,
- const std::string& label);
-
protected:
// views::BubbleDialogDelegateView:
void Init() override;
@@ -72,14 +63,33 @@ class ContentSettingBubbleContents : public content::WebContentsObserver,
base::string16 GetDialogButtonLabel(ui::DialogButton button) const override;
private:
+ // A combobox model that builds the contents of the media capture devices menu
+ // in the content setting bubble.
+ class MediaComboboxModel : public ui::ComboboxModel {
+ public:
+ explicit MediaComboboxModel(content::MediaStreamType type);
+ ~MediaComboboxModel() override;
+
+ content::MediaStreamType type() const { return type_; }
+ const content::MediaStreamDevices& GetDevices() const;
+ int GetDeviceIndex(const content::MediaStreamDevice& device) const;
+
+ // ui::ComboboxModel:
+ int GetItemCount() const override;
+ base::string16 GetItemAt(int index) override;
+
+ private:
+ content::MediaStreamType type_;
+
+ DISALLOW_COPY_AND_ASSIGN(MediaComboboxModel);
+ };
+
class Favicon;
- struct MediaMenuParts;
// This allows ContentSettingBubbleViewsBridge to call SetAnchorRect().
friend class chrome::ContentSettingBubbleViewsBridge;
typedef std::map<views::Link*, int> ListItemLinks;
- typedef std::map<views::MenuButton*, MediaMenuParts*> MediaMenuPartsMap;
// content::WebContentsObserver:
void DidNavigateMainFrame(
@@ -92,13 +102,8 @@ class ContentSettingBubbleContents : public content::WebContentsObserver,
// views::LinkListener:
void LinkClicked(views::Link* source, int event_flags) override;
- // views::MenuButtonListener:
- void OnMenuButtonClicked(views::MenuButton* source,
- const gfx::Point& point,
- const ui::Event* event) override;
-
- // Helper to get the preferred width of the media menu.
- void UpdateMenuButtonSizes();
+ // views::ComboboxListener:
+ void OnPerformAction(views::Combobox* combobox) override;
// Provides data for this bubble.
std::unique_ptr<ContentSettingBubbleModel> content_setting_bubble_model_;
@@ -112,8 +117,9 @@ class ContentSettingBubbleContents : public content::WebContentsObserver,
views::Link* manage_link_;
views::Link* learn_more_link_;
views::LabelButton* close_button_;
- std::unique_ptr<views::MenuRunner> menu_runner_;
- MediaMenuPartsMap media_menus_;
+
+ // Combobox models the bubble owns.
+ std::list<MediaComboboxModel> combobox_models_;
DISALLOW_IMPLICIT_CONSTRUCTORS(ContentSettingBubbleContents);
};

Powered by Google App Engine
This is Rietveld 408576698