blob: 95def5bed3c68db510a2d34e359c36fe7ece5485 [file] [log] [blame]
[email protected]87ac1562014-02-26 17:50:461// 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#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
timloh178801f2017-06-13 04:17:5812#if defined(OS_ANDROID)
13#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,
27 base::BindOnce(&DownloadPermissionRequest::PermissionDecided,
28 base::Unretained(this)),
29 base::BindOnce(&DownloadPermissionRequest::DeleteRequest,
30 base::Unretained(this))),
31 host_(host),
32 requesting_origin_(requesting_origin) {}
[email protected]87ac1562014-02-26 17:50:4633
34DownloadPermissionRequest::~DownloadPermissionRequest() {}
35
Bret Sepulveda5327d8b52021-07-21 17:44:2336void DownloadPermissionRequest::PermissionDecided(ContentSetting result,
37 bool is_one_time) {
Ravjit Singh Uppalc73b5a62020-11-13 01:38:5238 DCHECK(!is_one_time);
Bret Sepulveda5327d8b52021-07-21 17:44:2339 if (!host_)
40 return;
41
42 // This may invalidate |host_|.
43 if (result == ContentSetting::CONTENT_SETTING_ALLOW) {
44 host_->Accept(requesting_origin_);
45 } else if (result == ContentSetting::CONTENT_SETTING_BLOCK) {
46 host_->Cancel(requesting_origin_);
47 } else {
48 DCHECK_EQ(CONTENT_SETTING_DEFAULT, result);
49 host_->CancelOnce(requesting_origin_);
[email protected]87ac1562014-02-26 17:50:4650 }
51}
52
Bret Sepulveda5327d8b52021-07-21 17:44:2353void DownloadPermissionRequest::DeleteRequest() {
[email protected]87ac1562014-02-26 17:50:4654 delete this;
55}