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_PROTECTED_MEDIA_IDENTIFIER_INFOBAR_DELEGATE_H_
      6 #define CHROME_BROWSER_MEDIA_PROTECTED_MEDIA_IDENTIFIER_INFOBAR_DELEGATE_H_
      7 
      8 #include <string>
      9 
     10 #include "components/content_settings/core/common/permission_request_id.h"
     11 #include "components/infobars/core/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 class ProtectedMediaIdentifierInfoBarDelegate : public ConfirmInfoBarDelegate {
     21  public:
     22   // Creates a protected media identifier infobar and delegate and adds the
     23   // infobar to |infobar_service|.  Returns the infobar if it was successfully
     24   // added.
     25   static infobars::InfoBar* Create(InfoBarService* infobar_service,
     26                                    PermissionQueueController* controller,
     27                                    const PermissionRequestID& id,
     28                                    const GURL& requesting_frame,
     29                                    const std::string& display_languages);
     30 
     31  protected:
     32   ProtectedMediaIdentifierInfoBarDelegate(PermissionQueueController* controller,
     33                                           const PermissionRequestID& id,
     34                                           const GURL& requesting_frame,
     35                                           int contents_unique_id,
     36                                           const std::string& display_languages);
     37   virtual ~ProtectedMediaIdentifierInfoBarDelegate();
     38 
     39   // Calls back to the controller to inform it of the user's decision.
     40   void SetPermission(bool update_content_setting, bool allowed);
     41 
     42  private:
     43   // ConfirmInfoBarDelegate:
     44   virtual void InfoBarDismissed() OVERRIDE;
     45   virtual int GetIconID() const OVERRIDE;
     46   virtual Type GetInfoBarType() const OVERRIDE;
     47   virtual bool ShouldExpireInternal(
     48       const NavigationDetails& details) const OVERRIDE;
     49   virtual base::string16 GetMessageText() const OVERRIDE;
     50   virtual base::string16 GetButtonLabel(InfoBarButton button) const OVERRIDE;
     51   virtual bool Accept() OVERRIDE;
     52   virtual bool Cancel() OVERRIDE;
     53   virtual base::string16 GetLinkText() const OVERRIDE;
     54   virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE;
     55 
     56   PermissionQueueController* controller_;
     57   const PermissionRequestID id_;
     58   GURL requesting_frame_;
     59   int contents_unique_id_;
     60   std::string display_languages_;
     61 
     62   DISALLOW_COPY_AND_ASSIGN(ProtectedMediaIdentifierInfoBarDelegate);
     63 };
     64 
     65 #endif  // CHROME_BROWSER_MEDIA_PROTECTED_MEDIA_IDENTIFIER_INFOBAR_DELEGATE_H_
     66