Home | History | Annotate | Download | only in media
      1 // Copyright 2013 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_MIDI_PERMISSION_INFOBAR_DELEGATE_H_
      6 #define CHROME_BROWSER_MEDIA_MIDI_PERMISSION_INFOBAR_DELEGATE_H_
      7 
      8 #include <string>
      9 
     10 #include "chrome/browser/content_settings/permission_request_id.h"
     11 #include "chrome/browser/infobars/confirm_infobar_delegate.h"
     12 #include "url/gurl.h"
     13 
     14 class PermissionQueueController;
     15 class InfoBarService;
     16 
     17 // TODO(toyoshim): Much more code can be shared with GeolocationInfoBarDelegate.
     18 // http://crbug.com/266743
     19 
     20 // MIDIPermissionInfoBarDelegates are created by the
     21 // ChromeMIDIPermissionContext to control the display and handling of MIDI
     22 // permission infobars to the user.
     23 class MIDIPermissionInfoBarDelegate : public ConfirmInfoBarDelegate {
     24  public:
     25   // Creates a infobar delegate and adds it to |infobar_service|.
     26   // Returns the delegate if it was successfully added.
     27   static InfoBarDelegate* Create(InfoBarService* infobar_service,
     28                                  PermissionQueueController* controller,
     29                                  const PermissionRequestID& id,
     30                                  const GURL& requesting_frame,
     31                                  const std::string& display_languages);
     32 
     33  protected:
     34   MIDIPermissionInfoBarDelegate(InfoBarService* infobar_service,
     35                                 PermissionQueueController* controller,
     36                                 const PermissionRequestID& id,
     37                                 const GURL& requesting_frame,
     38                                 const std::string& display_languages);
     39 
     40  private:
     41   // ConfirmInfoBarDelegate:
     42   virtual int GetIconID() const OVERRIDE;
     43   virtual Type GetInfoBarType() const OVERRIDE;
     44   virtual bool ShouldExpireInternal(
     45       const content::LoadCommittedDetails& details) const OVERRIDE;
     46   virtual string16 GetMessageText() const OVERRIDE;
     47   virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE;
     48   virtual bool Accept() OVERRIDE;
     49   virtual bool Cancel() OVERRIDE;
     50 
     51   // Callback to the controller to inform of the user's decision.
     52   void SetPermission(bool update_content_setting, bool allowed);
     53 
     54  private:
     55   PermissionQueueController* controller_;
     56   const PermissionRequestID id_;
     57   GURL requesting_frame_;
     58   int contents_unique_id_;
     59   std::string display_languages_;
     60 
     61   DISALLOW_COPY_AND_ASSIGN(MIDIPermissionInfoBarDelegate);
     62 };
     63 
     64 #endif  // CHROME_BROWSER_MEDIA_MIDI_PERMISSION_INFOBAR_DELEGATE_H_
     65