#include "components/permissions/permission_context_base.h"
#include <map>
#include <memory>
#include <set>
#include <string>
#include <utility>
#include <vector>
#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/metrics/field_trial.h"
#include "base/metrics/field_trial_params.h"
#include "base/run_loop.h"
#include "base/test/metrics/histogram_tester.h"
#include "base/test/scoped_feature_list.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "components/content_settings/core/browser/content_settings_uma_util.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
#include "components/content_settings/core/common/content_settings.h"
#include "components/content_settings/core/common/content_settings_types.h"
#include "components/permissions/features.h"
#include "components/permissions/permission_decision_auto_blocker.h"
#include "components/permissions/permission_request_id.h"
#include "components/permissions/permission_request_manager.h"
#include "components/permissions/permission_uma_util.h"
#include "components/permissions/permission_util.h"
#include "components/permissions/test/mock_permission_prompt_factory.h"
#include "components/permissions/test/test_permissions_client.h"
#include "components/ukm/content/source_url_recorder.h"
#include "components/ukm/test_ukm_recorder.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/permission_result.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/test/mock_render_process_host.h"
#include "content/public/test/test_renderer_host.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/mojom/permissions_policy/permissions_policy.mojom.h"
#include "url/url_util.h"
namespace permissions {
PermissionStatus;
const char* const kPermissionsKillSwitchFieldStudy = …;
const char* const kPermissionsKillSwitchBlockedValue = …;
const char kPermissionsKillSwitchTestGroup[] = …;
class TestPermissionContext : public PermissionContextBase { … };
class TestKillSwitchPermissionContext : public TestPermissionContext { … };
class TestSecureOriginRestrictedPermissionContext
: public TestPermissionContext { … };
class TestPermissionsClientBypassExtensionOriginCheck
: public TestPermissionsClient { … };
class PermissionContextBaseTests : public content::RenderViewHostTestHarness { … };
TEST_F(PermissionContextBaseTests, TestAskAndGrant) { … }
TEST_F(PermissionContextBaseTests, TestAskAndBlock) { … }
TEST_F(PermissionContextBaseTests, TestAskAndDismiss) { … }
TEST_F(PermissionContextBaseTests, TestDismissUntilBlocked) { … }
TEST_F(PermissionContextBaseTests, TestDismissVariations) { … }
TEST_F(PermissionContextBaseTests, TestDismissVariationsWithoutEmbargo) { … }
TEST_F(PermissionContextBaseTests, TestNonValidRequestingUrl) { … }
TEST_F(PermissionContextBaseTests, TestGrantAndRevoke) { … }
TEST_F(PermissionContextBaseTests, TestGlobalKillSwitch) { … }
TEST_F(PermissionContextBaseTests,
TestSecureOriginRestrictedPermissionContextSwitch) { … }
TEST_F(PermissionContextBaseTests, TestParallelRequestsAllowed) { … }
TEST_F(PermissionContextBaseTests, TestParallelRequestsBlocked) { … }
TEST_F(PermissionContextBaseTests, TestParallelRequestsDismissed) { … }
TEST_F(PermissionContextBaseTests, TestVirtualURLDifferentOrigin) { … }
TEST_F(PermissionContextBaseTests, TestVirtualURLNotHTTP) { … }
TEST_F(PermissionContextBaseTests, TestVirtualURLSameOrigin) { … }
#if !BUILDFLAG(IS_ANDROID)
TEST_F(PermissionContextBaseTests, ExpirationAllow) { … }
TEST_F(PermissionContextBaseTests, ExpirationBlock) { … }
#endif
}