#include "components/permissions/permission_uma_util.h"
#include "base/files/scoped_temp_dir.h"
#include "base/strings/strcat.h"
#include "base/test/metrics/histogram_tester.h"
#include "base/test/scoped_feature_list.h"
#include "base/test/simple_test_clock.h"
#include "base/time/clock.h"
#include "base/time/time.h"
#include "base/values.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_pattern.h"
#include "components/content_settings/core/common/content_settings_types.h"
#include "components/content_settings/core/common/features.h"
#include "components/permissions/constants.h"
#include "components/permissions/permission_request_manager.h"
#include "components/permissions/permission_util.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/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/test/browser_task_environment.h"
#include "content/public/test/navigation_simulator.h"
#include "content/public/test/test_browser_context.h"
#include "content/public/test/test_renderer_host.h"
#include "content/test/test_render_frame_host.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/mojom/permissions_policy/permissions_policy_feature.mojom.h"
namespace permissions {
namespace {
constexpr const char* kTopLevelUrl = …;
constexpr const char* kSameOriginFrameUrl = …;
constexpr const char* kCrossOriginFrameUrl = …;
constexpr const char* kCrossOriginFrameUrl2 = …;
constexpr const char* kGeolocationUsageHistogramName = …;
constexpr const char* kGeolocationPermissionsPolicyUsageHistogramName = …;
constexpr const char* kGeolocationPermissionsPolicyActionHistogramName = …;
blink::ParsedPermissionsPolicy CreatePermissionsPolicy(
blink::mojom::PermissionsPolicyFeature feature,
const std::vector<std::string>& origins,
bool matches_all_origins = false) { … }
PermissionRequestManager* SetupRequestManager(
content::WebContents* web_contents) { … }
struct PermissionsDelegationTestConfig { … };
#if !BUILDFLAG(IS_ANDROID)
ContentSettingsForOneType GetRevokedUnusedPermissions(
HostContentSettingsMap* hcsm) { … }
#endif
class PermissionRequestWrapper { … };
}
class PermissionsDelegationUmaUtilTest
: public content::RenderViewHostTestHarness,
public testing::WithParamInterface<PermissionsDelegationTestConfig> { … };
class PermissionUmaUtilTest : public testing::Test { … };
TEST_F(PermissionUmaUtilTest, ScopedRevocationReporter) { … }
TEST_F(PermissionUmaUtilTest, CrowdDenyVersionTest) { … }
TEST_F(PermissionUmaUtilTest, MetricsAreRecordedWhenAutoDSEPermissionReverted) { … }
TEST_F(PermissionsDelegationUmaUtilTest, UsageAndPromptInTopLevelFrame) { … }
TEST_F(PermissionUmaUtilTest, LhsIndicatorsShowTest) { … }
TEST_F(PermissionUmaUtilTest, LhsIndicatorsClickTest) { … }
TEST_F(PermissionUmaUtilTest, PageInfoPermissionReallowedTest) { … }
#if !BUILDFLAG(IS_ANDROID)
TEST_F(PermissionUmaUtilTest, RecordPermissionRegrantForUnusedSites) { … }
TEST_F(PermissionUmaUtilTest, GetDaysSinceUnusedSitePermissionRevocation) { … }
#endif
TEST_F(PermissionsDelegationUmaUtilTest, SiteLevelAndOSPromptVariantsTest) { … }
TEST_F(PermissionsDelegationUmaUtilTest, SameOriginFrame) { … }
TEST_P(PermissionsDelegationUmaUtilTest, TopLevelFrame) { … }
INSTANTIATE_TEST_SUITE_P(…);
class CrossFramePermissionsDelegationUmaUtilTest
: public PermissionsDelegationUmaUtilTest { … };
TEST_P(CrossFramePermissionsDelegationUmaUtilTest, CrossOriginFrame) { … }
INSTANTIATE_TEST_SUITE_P(…);
class UkmRecorderPermissionUmaUtilTest
: public content::RenderViewHostTestHarness { … };
TEST_F(UkmRecorderPermissionUmaUtilTest,
NotificationRevocationHistogramDidRecordUkmTest) { … }
TEST_F(UkmRecorderPermissionUmaUtilTest,
NotificationRevocationHistogramDroppedUkmTest) { … }
TEST_F(UkmRecorderPermissionUmaUtilTest,
NotificationUsageHistogramDidRecordUkmTest) { … }
TEST_F(UkmRecorderPermissionUmaUtilTest,
NotificationUsageHistogramDroppedUkmTest) { … }
}