1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_MEDIA_MEDIA_STREAM_INFOBAR_DELEGATE_H_ 6#define CHROME_BROWSER_MEDIA_MEDIA_STREAM_INFOBAR_DELEGATE_H_ 7 8#include <string> 9 10#include "base/compiler_specific.h" 11#include "chrome/browser/media/media_stream_devices_controller.h" 12#include "components/infobars/core/confirm_infobar_delegate.h" 13 14 15// This class configures an infobar shown when a page requests access to a 16// user's microphone and/or video camera. The user is shown a message asking 17// which audio and/or video devices he wishes to use with the current page, and 18// buttons to give access to the selected devices to the page, or to deny access 19// to them. 20class MediaStreamInfoBarDelegate : public ConfirmInfoBarDelegate { 21 public: 22 virtual ~MediaStreamInfoBarDelegate(); 23 24 // Handles a permission request (in |request|) for |web_contents|. If this 25 // involves prompting the user, creates a media stream infobar and delegate, 26 // then checks for an existing infobar for |web_contents| and replaces it if 27 // found, or just adds the new infobar otherwise. Returns whether an infobar 28 // was created. 29 static bool Create(content::WebContents* web_contents, 30 const content::MediaStreamRequest& request, 31 const content::MediaResponseCallback& callback); 32 33 private: 34 friend class WebRtcTestBase; 35 36 explicit MediaStreamInfoBarDelegate( 37 scoped_ptr<MediaStreamDevicesController> controller); 38 39 // ConfirmInfoBarDelegate: 40 virtual void InfoBarDismissed() OVERRIDE; 41 virtual int GetIconID() const OVERRIDE; 42 virtual Type GetInfoBarType() const OVERRIDE; 43 virtual MediaStreamInfoBarDelegate* AsMediaStreamInfoBarDelegate() OVERRIDE; 44 virtual base::string16 GetMessageText() const OVERRIDE; 45 virtual base::string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; 46 virtual bool Accept() OVERRIDE; 47 virtual bool Cancel() OVERRIDE; 48 virtual base::string16 GetLinkText() const OVERRIDE; 49 virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; 50 51 scoped_ptr<MediaStreamDevicesController> controller_; 52 53 DISALLOW_COPY_AND_ASSIGN(MediaStreamInfoBarDelegate); 54}; 55 56#endif // CHROME_BROWSER_MEDIA_MEDIA_STREAM_INFOBAR_DELEGATE_H_ 57