1// Copyright 2014 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_CONTENT_SETTINGS_PERMISSION_BUBBLE_REQUEST_IMPL_H_ 6#define CHROME_BROWSER_CONTENT_SETTINGS_PERMISSION_BUBBLE_REQUEST_IMPL_H_ 7 8#include "base/callback.h" 9#include "chrome/browser/ui/website_settings/permission_bubble_request.h" 10#include "components/content_settings/core/common/content_settings_types.h" 11#include "components/content_settings/core/common/permission_request_id.h" 12 13class GURL; 14 15class PermissionContextBase; 16 17// Default implementation of PermissionBubbleRequest, it is assumed that the 18// caller owns it and that it can be deleted once the |delete_callback| 19// is executed. 20class PermissionBubbleRequestImpl : public PermissionBubbleRequest { 21 public: 22 23 typedef base::Callback<void(bool persist_permission, bool grant_permission)> 24 PermissionDecidedCallback; 25 26 PermissionBubbleRequestImpl( 27 const GURL& request_origin, 28 bool user_gesture, 29 ContentSettingsType type, 30 const std::string& display_languages, 31 const PermissionDecidedCallback permission_decided_callback, 32 const base::Closure delete_callback); 33 34 virtual ~PermissionBubbleRequestImpl(); 35 36 // PermissionBubbleRequest: 37 virtual int GetIconID() const OVERRIDE; 38 virtual base::string16 GetMessageText() const OVERRIDE; 39 virtual base::string16 GetMessageTextFragment() const OVERRIDE; 40 virtual bool HasUserGesture() const OVERRIDE; 41 42 // TODO(miguelg) Change this method to GetOrigin() 43 virtual GURL GetRequestingHostname() const OVERRIDE; 44 45 // Remember to call RegisterActionTaken for these methods if you are 46 // overriding them. 47 virtual void PermissionGranted() OVERRIDE; 48 virtual void PermissionDenied() OVERRIDE; 49 virtual void Cancelled() OVERRIDE; 50 virtual void RequestFinished() OVERRIDE; 51 52 protected: 53 void RegisterActionTaken() { action_taken_ = true; } 54 55 private: 56 GURL request_origin_; 57 bool user_gesture_; 58 ContentSettingsType type_; 59 std::string display_languages_; 60 61 // Called once a decision is made about the permission. 62 const PermissionDecidedCallback permission_decided_callback_; 63 64 // Called when the bubble is no longer in use so it can be deleted by 65 // the caller. 66 const base::Closure delete_callback_; 67 bool is_finished_; 68 bool action_taken_; 69 70 DISALLOW_COPY_AND_ASSIGN(PermissionBubbleRequestImpl); 71}; 72 73#endif // CHROME_BROWSER_CONTENT_SETTINGS_PERMISSION_BUBBLE_REQUEST_IMPL_H_ 74