12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CHROME_BROWSER_UI_CONTENT_SETTINGS_CONTENT_SETTING_MEDIA_MENU_MODEL_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CHROME_BROWSER_UI_CONTENT_SETTINGS_CONTENT_SETTING_MEDIA_MENU_MODEL_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <map> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/callback.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/common/media_stream_request.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/base/models/simple_menu_model.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ContentSettingBubbleModel; 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// A menu model that builds the contents of the media capture devices menu in 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// the content setting bubble. 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ContentSettingMediaMenuModel : public ui::SimpleMenuModel, 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public ui::SimpleMenuModel::Delegate { 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Callback to update the label of the menu in the UI. 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef base::Callback<void(content::MediaStreamType, const std::string&)> 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MenuLabelChangedCallback; 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ContentSettingMediaMenuModel( 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::MediaStreamType type, 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ContentSettingBubbleModel* bubble_model, 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const MenuLabelChangedCallback& callback); 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~ContentSettingMediaMenuModel(); 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // ui::SimpleMenuModel::Delegate: 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool IsCommandIdChecked(int command_id) const OVERRIDE; 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE; 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool GetAcceleratorForCommandId( 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int command_id, 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ui::Accelerator* accelerator) OVERRIDE; 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void ExecuteCommand(int command_id, int event_flags) OVERRIDE; 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef std::map<int, content::MediaStreamDevice> CommandMap; 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::MediaStreamType type_; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ContentSettingBubbleModel* media_bubble_model_; // Weak. 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MenuLabelChangedCallback callback_; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CommandMap commands_; 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ContentSettingMediaMenuModel); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CHROME_BROWSER_UI_CONTENT_SETTINGS_CONTENT_SETTING_MEDIA_MENU_MODEL_H_ 51