chromium/components/permissions/permission_context_base_unittest.cc

// 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/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 {};

// Simulates clicking Accept. The permission should be granted and
// saved for future use.
TEST_F(PermissionContextBaseTests, TestAskAndGrant) {}

// Simulates clicking Block. The permission should be denied and
// saved for future use.
TEST_F(PermissionContextBaseTests, TestAskAndBlock) {}

// Simulates clicking Dismiss (X) in the prompt.
// The permission should be denied but not saved for future use.
TEST_F(PermissionContextBaseTests, TestAskAndDismiss) {}

// Simulates clicking Dismiss (X) in the prompt with the block on too
// many dismissals feature active. The permission should be blocked after
// several dismissals.
TEST_F(PermissionContextBaseTests, TestDismissUntilBlocked) {}

// Test setting a custom number of dismissals before block via variations.
TEST_F(PermissionContextBaseTests, TestDismissVariations) {}

// Test that contexts that disable the automatic blocker are not blocker.
TEST_F(PermissionContextBaseTests, TestDismissVariationsWithoutEmbargo) {}

// Simulates non-valid requesting URL.
// The permission should be denied but not saved for future use.
TEST_F(PermissionContextBaseTests, TestNonValidRequestingUrl) {}

// Simulates granting and revoking of permissions.
TEST_F(PermissionContextBaseTests, TestGrantAndRevoke) {}

// Tests the global kill switch by enabling/disabling the Field Trials.
TEST_F(PermissionContextBaseTests, TestGlobalKillSwitch) {}

// Tests that secure origins are examined if switch is on, or ignored if off.
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  // !BUILDFLAG(IS_ANDROID)

}  // namespace permissions