blob: 881a9fa88df5324ba8fca1fe4a13be67d58edfa6 [file] [log] [blame]
Avi Drissman4a8573c2022-09-09 19:35:541// Copyright 2014 The Chromium Authors
[email protected]87ac1562014-02-26 17:50:462// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/download/download_permission_request.h"
6
Bret Sepulveda5327d8b52021-07-21 17:44:237#include "build/build_config.h"
[email protected]af39f002014-08-22 10:18:188#include "chrome/grit/generated_resources.h"
Bret Sepulveda362cce42021-01-13 18:47:549#include "components/permissions/request_type.h"
[email protected]87ac1562014-02-26 17:50:4610#include "ui/base/l10n/l10n_util.h"
11
Xiaohan Wangab5fb912022-01-12 19:21:4812#if BUILDFLAG(IS_ANDROID)
timloh178801f2017-06-13 04:17:5813#include "chrome/browser/android/android_theme_resources.h"
Mugdha Lakhani6b39f5fd2018-11-23 11:19:0114#include "components/url_formatter/elide_url.h"
15#include "url/origin.h"
timloh178801f2017-06-13 04:17:5816#else
Mugdha Lakhanib6762162020-03-30 10:23:2517#include "components/vector_icons/vector_icons.h"
timloh178801f2017-06-13 04:17:5818#endif
19
[email protected]87ac1562014-02-26 17:50:4620DownloadPermissionRequest::DownloadPermissionRequest(
Min Qin357184a2019-06-25 16:31:4421 base::WeakPtr<DownloadRequestLimiter::TabDownloadState> host,
Bret Sepulveda5327d8b52021-07-21 17:44:2322 const url::Origin& requesting_origin)
23 : PermissionRequest(
24 requesting_origin.GetURL(),
25 permissions::RequestType::kMultipleDownloads,
26 /*has_gesture=*/false,
Illia Klimove406ecc12022-11-22 15:53:2927 base::BindRepeating(&DownloadPermissionRequest::PermissionDecided,
28 base::Unretained(this)),
Bret Sepulveda5327d8b52021-07-21 17:44:2329 base::BindOnce(&DownloadPermissionRequest::DeleteRequest,
30 base::Unretained(this))),
31 host_(host),
32 requesting_origin_(requesting_origin) {}
[email protected]87ac1562014-02-26 17:50:4633
Sorin Jianu057cba6a2024-11-29 05:49:3434DownloadPermissionRequest::~DownloadPermissionRequest() = default;
[email protected]87ac1562014-02-26 17:50:4635
Bret Sepulveda5327d8b52021-07-21 17:44:2336void DownloadPermissionRequest::PermissionDecided(ContentSetting result,
Illia Klimove406ecc12022-11-22 15:53:2937 bool is_one_time,
38 bool is_final_decision) {
Ravjit Singh Uppalc73b5a62020-11-13 01:38:5239 DCHECK(!is_one_time);
Illia Klimove406ecc12022-11-22 15:53:2940 DCHECK(is_final_decision);
Bret Sepulveda5327d8b52021-07-21 17:44:2341 if (!host_)
42 return;
43
44 // This may invalidate |host_|.
45 if (result == ContentSetting::CONTENT_SETTING_ALLOW) {
46 host_->Accept(requesting_origin_);
47 } else if (result == ContentSetting::CONTENT_SETTING_BLOCK) {
48 host_->Cancel(requesting_origin_);
49 } else {
50 DCHECK_EQ(CONTENT_SETTING_DEFAULT, result);
51 host_->CancelOnce(requesting_origin_);
[email protected]87ac1562014-02-26 17:50:4652 }
53}
54
Bret Sepulveda5327d8b52021-07-21 17:44:2355void DownloadPermissionRequest::DeleteRequest() {
[email protected]87ac1562014-02-26 17:50:4656 delete this;
57}