| // 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. |
| |
| #ifndef COMPONENTS_PERMISSIONS_TEST_MOCK_PERMISSION_REQUEST_H_ |
| #define COMPONENTS_PERMISSIONS_TEST_MOCK_PERMISSION_REQUEST_H_ |
| |
| #include <vector> |
| |
| #include "base/memory/raw_ptr.h" |
| #include "base/memory/weak_ptr.h" |
| #include "components/permissions/permission_request.h" |
| #include "url/gurl.h" |
| |
| namespace permissions { |
| enum class RequestType; |
| |
| class MockPermissionRequest : public PermissionRequest { |
| public: |
| struct MockPermissionRequestState { |
| public: |
| MockPermissionRequestState(); |
| ~MockPermissionRequestState(); |
| |
| base::WeakPtr<MockPermissionRequestState> GetWeakPtr(); |
| |
| bool granted; |
| bool cancelled; |
| bool finished; |
| RequestType request_type; |
| |
| private: |
| base::WeakPtrFactory<MockPermissionRequestState> weak_factory_{this}; |
| }; |
| |
| static constexpr const char* kDefaultOrigin = "https://www.google.com"; |
| |
| explicit MockPermissionRequest( |
| RequestType request_type, |
| base::WeakPtr<MockPermissionRequestState> request_state = nullptr); |
| MockPermissionRequest( |
| const GURL& requesting_origin, |
| RequestType request_type, |
| base::WeakPtr<MockPermissionRequestState> request_state = nullptr); |
| MockPermissionRequest( |
| RequestType request_type, |
| PermissionRequestGestureType gesture_type, |
| base::WeakPtr<MockPermissionRequestState> request_state = nullptr); |
| MockPermissionRequest( |
| const GURL& requesting_origin, |
| RequestType request_type, |
| PermissionRequestGestureType gesture_type, |
| base::WeakPtr<MockPermissionRequestState> request_state = nullptr); |
| MockPermissionRequest( |
| const GURL& requesting_origin, |
| RequestType request_type, |
| bool embedded_permission_element_initiated, |
| base::WeakPtr<MockPermissionRequestState> request_state = nullptr); |
| 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, |
| base::WeakPtr<MockPermissionRequestState> request_state = nullptr); |
| |
| ~MockPermissionRequest() override; |
| |
| void RegisterOnPermissionDecidedCallback(base::OnceClosure callback); |
| |
| void PermissionDecided( |
| PermissionDecision decision, |
| bool is_final_decision, |
| const permissions::PermissionRequestData& request_data); |
| |
| const std::vector<std::string>& GetRequestedAudioCaptureDeviceIds() |
| const override; |
| const std::vector<std::string>& GetRequestedVideoCaptureDeviceIds() |
| const override; |
| |
| std::unique_ptr<MockPermissionRequest> CreateDuplicateRequest( |
| base::WeakPtr<MockPermissionRequestState> request_state = nullptr) const; |
| |
| private: |
| base::WeakPtr<MockPermissionRequestState> request_state_; |
| |
| base::OnceClosure on_permission_decided_; |
| std::vector<std::string> requested_audio_capture_device_ids_; |
| std::vector<std::string> requested_video_capture_device_ids_; |
| }; |
| |
| } // namespace permissions |
| |
| #endif // COMPONENTS_PERMISSIONS_TEST_MOCK_PERMISSION_REQUEST_H_ |