| Index: chrome/browser/ui/content_settings/content_setting_bubble_model.h
 | 
| diff --git a/chrome/browser/ui/content_settings/content_setting_bubble_model.h b/chrome/browser/ui/content_settings/content_setting_bubble_model.h
 | 
| index 5d0a67992eb2d882236ef6088676b1d63e4fc10a..9ac50965f207b500eb8b6135a12f42e414fb160c 100644
 | 
| --- a/chrome/browser/ui/content_settings/content_setting_bubble_model.h
 | 
| +++ b/chrome/browser/ui/content_settings/content_setting_bubble_model.h
 | 
| @@ -5,6 +5,7 @@
 | 
|  #ifndef CHROME_BROWSER_UI_CONTENT_SETTINGS_CONTENT_SETTING_BUBBLE_MODEL_H_
 | 
|  #define CHROME_BROWSER_UI_CONTENT_SETTINGS_CONTENT_SETTING_BUBBLE_MODEL_H_
 | 
|  
 | 
| +#include <map>
 | 
|  #include <set>
 | 
|  #include <string>
 | 
|  #include <vector>
 | 
| @@ -14,6 +15,7 @@
 | 
|  #include "chrome/common/custom_handlers/protocol_handler.h"
 | 
|  #include "content/public/browser/notification_observer.h"
 | 
|  #include "content/public/browser/notification_registrar.h"
 | 
| +#include "content/public/common/media_stream_request.h"
 | 
|  #include "googleurl/src/gurl.h"
 | 
|  #include "ui/gfx/image/image.h"
 | 
|  
 | 
| @@ -57,6 +59,13 @@ class ContentSettingBubbleModel : public content::NotificationObserver {
 | 
|      std::set<std::string> hosts;
 | 
|    };
 | 
|  
 | 
| +  struct MediaMenu {
 | 
| +    std::string label;
 | 
| +    content::MediaStreamDevice default_device;
 | 
| +    content::MediaStreamDevice selected_device;
 | 
| +  };
 | 
| +  typedef std::map<content::MediaStreamType, MediaMenu> MediaMenuMap;
 | 
| +
 | 
|    struct BubbleContent {
 | 
|      BubbleContent();
 | 
|      ~BubbleContent();
 | 
| @@ -70,6 +79,7 @@ class ContentSettingBubbleModel : public content::NotificationObserver {
 | 
|      std::string custom_link;
 | 
|      bool custom_link_enabled;
 | 
|      std::string manage_link;
 | 
| +    MediaMenuMap media_menus;
 | 
|  
 | 
|     private:
 | 
|      DISALLOW_COPY_AND_ASSIGN(BubbleContent);
 | 
| @@ -96,6 +106,8 @@ class ContentSettingBubbleModel : public content::NotificationObserver {
 | 
|    virtual void OnPopupClicked(int index) {}
 | 
|    virtual void OnCustomLinkClicked() {}
 | 
|    virtual void OnManageLinkClicked() {}
 | 
| +  virtual void OnMediaMenuClicked(content::MediaStreamType type,
 | 
| +                                  const std::string& selected_device_id) {}
 | 
|  
 | 
|    // Called by the view code when the bubble is closed by the user using the
 | 
|    // Done button.
 | 
| @@ -132,6 +144,12 @@ class ContentSettingBubbleModel : public content::NotificationObserver {
 | 
|    void set_manage_link(const std::string& link) {
 | 
|      bubble_content_.manage_link = link;
 | 
|    }
 | 
| +  void add_media_menu(content::MediaStreamType type, const MediaMenu& menu) {
 | 
| +    bubble_content_.media_menus[type] = menu;
 | 
| +  }
 | 
| +  void set_selected_device(const content::MediaStreamDevice& device) {
 | 
| +    bubble_content_.media_menus[device.type].selected_device = device;
 | 
| +  }
 | 
|    void AddBlockedResource(const std::string& resource_identifier);
 | 
|  
 | 
|   private:
 | 
| 
 |