// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/media/platform_verification_chromeos.h"
#include <memory>
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/test/base/chrome_render_view_host_test_harness.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
#include "components/permissions/test/permission_test_util.h"
#include "content/public/browser/web_contents.h"
#include "content/public/test/web_contents_tester.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
GURL GetTestURL() {
return GURL("https://test.example.com");
}
class PlatformVerificationChromeOSTest
: public ChromeRenderViewHostTestHarness {
void SetUp() override {
ChromeRenderViewHostTestHarness::SetUp();
profile()->SetPermissionControllerDelegate(
permissions::GetPermissionControllerDelegate(profile()));
NavigateAndCommit(GetTestURL());
}
};
// Tests the basic success case.
TEST_F(PlatformVerificationChromeOSTest, Success) {
EXPECT_TRUE(platform_verification::PerformBrowserChecks(
web_contents()->GetPrimaryMainFrame()));
}
TEST_F(PlatformVerificationChromeOSTest, BadURL) {
GURL url("badurl");
NavigateAndCommit(url);
EXPECT_FALSE(platform_verification::PerformBrowserChecks(
web_contents()->GetPrimaryMainFrame()));
}
TEST_F(PlatformVerificationChromeOSTest, IncognitoProfile) {
std::unique_ptr<content::WebContents> web_contents =
content::WebContentsTester::CreateTestWebContents(
profile()->GetOffTheRecordProfile(Profile::OTRProfileID::PrimaryID(),
/*create_if_needed=*/true),
/*site_instance=*/nullptr);
content::WebContentsTester* tester =
content::WebContentsTester::For(web_contents.get());
tester->NavigateAndCommit(GetTestURL());
EXPECT_FALSE(platform_verification::PerformBrowserChecks(
web_contents.get()->GetPrimaryMainFrame()));
}
TEST_F(PlatformVerificationChromeOSTest, ContentSettings) {
auto* host_content_settings_map =
HostContentSettingsMapFactory::GetForProfile(profile());
ASSERT_TRUE(host_content_settings_map);
host_content_settings_map->SetContentSettingDefaultScope(
/*primary_url=*/GetTestURL(), /*secondary_url=*/GetTestURL(),
ContentSettingsType::PROTECTED_MEDIA_IDENTIFIER, CONTENT_SETTING_BLOCK);
EXPECT_FALSE(platform_verification::PerformBrowserChecks(
web_contents()->GetPrimaryMainFrame()));
}
} // namespace