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_DOWNLOAD_DOWNLOAD_PERMISSION_REQUEST_H_ 6 #define CHROME_BROWSER_DOWNLOAD_DOWNLOAD_PERMISSION_REQUEST_H_ 7 8 #include "base/basictypes.h" 9 #include "base/memory/weak_ptr.h" 10 #include "chrome/browser/download/download_request_limiter.h" 11 #include "chrome/browser/ui/website_settings/permission_bubble_request.h" 12 13 // A permission bubble request that presents the user with a choice to allow 14 // or deny multiple downloads from the same site. This confirmation step 15 // protects against "carpet-bombing", where a malicious site forces multiple 16 // downloads on an unsuspecting user. 17 class DownloadPermissionRequest : public PermissionBubbleRequest { 18 public: 19 explicit DownloadPermissionRequest( 20 base::WeakPtr<DownloadRequestLimiter::TabDownloadState> host); 21 virtual ~DownloadPermissionRequest(); 22 23 // PermisisonBubbleDelegate: 24 virtual int GetIconID() const OVERRIDE; 25 virtual base::string16 GetMessageText() const OVERRIDE; 26 virtual base::string16 GetMessageTextFragment() const OVERRIDE; 27 virtual bool HasUserGesture() const OVERRIDE; 28 virtual GURL GetRequestingHostname() const OVERRIDE; 29 virtual void PermissionGranted() OVERRIDE; 30 virtual void PermissionDenied() OVERRIDE; 31 virtual void Cancelled() OVERRIDE; 32 virtual void RequestFinished() OVERRIDE; 33 34 private: 35 base::WeakPtr<DownloadRequestLimiter::TabDownloadState> host_; 36 37 DISALLOW_COPY_AND_ASSIGN(DownloadPermissionRequest); 38 }; 39 40 #endif // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_PERMISSION_REQUEST_H_ 41