blob: 1b256964d2664c259da183d2e1cb4da86dd5fcb1 [file] [log] [blame]
// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/permissions/test/mock_permission_request.h"
#include "components/permissions/request_type.h"
namespace permissions {
MockPermissionRequest::MockPermissionRequest(RequestType request_type)
: MockPermissionRequest(GURL(kDefaultOrigin),
request_type,
PermissionRequestGestureType::UNKNOWN) {}
MockPermissionRequest::MockPermissionRequest(const GURL& requesting_origin,
RequestType request_type)
: MockPermissionRequest(requesting_origin,
request_type,
PermissionRequestGestureType::UNKNOWN) {}
MockPermissionRequest::MockPermissionRequest(
RequestType request_type,
PermissionRequestGestureType gesture_type)
: MockPermissionRequest(GURL(kDefaultOrigin), request_type, gesture_type) {}
MockPermissionRequest::MockPermissionRequest(
const GURL& requesting_origin,
RequestType request_type,
PermissionRequestGestureType gesture_type)
: PermissionRequest(
requesting_origin,
request_type,
gesture_type == PermissionRequestGestureType::GESTURE,
base::BindRepeating(&MockPermissionRequest::PermissionDecided,
base::Unretained(this)),
base::BindOnce(&MockPermissionRequest::MarkFinished,
base::Unretained(this))),
granted_(false),
cancelled_(false),
finished_(false) {}
MockPermissionRequest::MockPermissionRequest(
RequestType request_type,
bool embedded_permission_element_initiated)
: MockPermissionRequest(request_type,
embedded_permission_element_initiated
? PermissionRequestGestureType::GESTURE
: PermissionRequestGestureType::NO_GESTURE) {
SetEmbeddedPermissionElementInitiatedForTesting(
embedded_permission_element_initiated);
}
MockPermissionRequest::MockPermissionRequest(
const GURL& requesting_origin,
RequestType request_type,
std::vector<std::string> requested_audio_capture_device_ids,
std::vector<std::string> requested_video_capture_device_ids)
: MockPermissionRequest(requesting_origin, request_type) {
requested_audio_capture_device_ids_ = requested_audio_capture_device_ids;
requested_video_capture_device_ids_ = requested_video_capture_device_ids;
}
MockPermissionRequest::~MockPermissionRequest() {
// TODO(crbug.com/40142352): `PermissionRequest` enforces that
// `RequestFinished` is called before its destructor runs, but a lot of tests
// were written assuming it doesn't, so we need to call it here. Clean up
// lifetime in the tests and then remove this call to `RequestFinished`.
if (!finished_)
RequestFinished();
}
void MockPermissionRequest::PermissionDecided(ContentSetting result,
bool is_one_time,
bool is_final_decision) {
granted_ = result == CONTENT_SETTING_ALLOW;
if (result == CONTENT_SETTING_DEFAULT)
cancelled_ = true;
}
void MockPermissionRequest::MarkFinished() {
finished_ = true;
}
bool MockPermissionRequest::granted() {
return granted_;
}
bool MockPermissionRequest::cancelled() {
return cancelled_;
}
bool MockPermissionRequest::finished() {
return finished_;
}
const std::vector<std::string>&
MockPermissionRequest::GetRequestedAudioCaptureDeviceIds() const {
return requested_audio_capture_device_ids_;
}
const std::vector<std::string>&
MockPermissionRequest::GetRequestedVideoCaptureDeviceIds() const {
return requested_video_capture_device_ids_;
}
std::unique_ptr<MockPermissionRequest>
MockPermissionRequest::CreateDuplicateRequest() const {
return std::make_unique<MockPermissionRequest>(
requesting_origin(), request_type(), GetGestureType());
}
} // namespace permissions