1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef CHROME_BROWSER_CONTENT_SETTINGS_PERMISSION_INFOBAR_DELEGATE_H_ 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define CHROME_BROWSER_CONTENT_SETTINGS_PERMISSION_INFOBAR_DELEGATE_H_ 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/infobars/infobar_service.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/content_settings/core/common/content_settings_types.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/content_settings/core/common/permission_request_id.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/infobars/core/confirm_infobar_delegate.h" 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/public/browser/web_contents.h" 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass NavigationDetails; 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass PermissionQueueController; 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Base class for permission infobars, it implements the default behavior 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// so that the accept/deny buttons grant/deny the relevant permission. 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// A basic implementor only needs to implement the methods that 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// provide an icon and a message text to the infobar. 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass PermissionInfobarDelegate : public ConfirmInfoBarDelegate { 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch protected: 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch PermissionInfobarDelegate(PermissionQueueController* controller, 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const PermissionRequestID& id, 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const GURL& requesting_origin, 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ContentSettingsType type); 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ~PermissionInfobarDelegate(); 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // ConfirmInfoBarDelegate: 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual base::string16 GetMessageText() const = 0; 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual infobars::InfoBarDelegate::Type GetInfoBarType() const OVERRIDE; 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual base::string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Remember to call RegisterActionTaken for these methods if you are 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // overriding them. 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void InfoBarDismissed() OVERRIDE; 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool Accept() OVERRIDE; 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool Cancel() OVERRIDE; 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void SetPermission(bool update_content_setting, bool allowed); 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch PermissionQueueController* controller_; // not owned by us 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const PermissionRequestID id_; 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch GURL requesting_origin_; 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool action_taken_; 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ContentSettingsType type_; 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DISALLOW_COPY_AND_ASSIGN(PermissionInfobarDelegate); 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif // CHROME_BROWSER_CONTENT_SETTINGS_PERMISSION_INFOBAR_DELEGATE_H_ 55