| Index: chrome/browser/safe_browsing/chrome_password_protection_service_unittest.cc
|
| diff --git a/chrome/browser/safe_browsing/chrome_password_protection_service_unittest.cc b/chrome/browser/safe_browsing/chrome_password_protection_service_unittest.cc
|
| index e721bf4b8a37612e538ca55a516e596b47c02dfb..348c10c57ec08215e08d782b22efcc44833b8879 100644
|
| --- a/chrome/browser/safe_browsing/chrome_password_protection_service_unittest.cc
|
| +++ b/chrome/browser/safe_browsing/chrome_password_protection_service_unittest.cc
|
| @@ -3,18 +3,52 @@
|
| // found in the LICENSE file.
|
| #include "chrome/browser/safe_browsing/chrome_password_protection_service.h"
|
|
|
| +#include "base/memory/ref_counted.h"
|
| #include "base/test/scoped_feature_list.h"
|
| +#include "chrome/browser/safe_browsing/ui_manager.h"
|
| +#include "chrome/common/pref_names.h"
|
| +#include "chrome/test/base/chrome_render_view_host_test_harness.h"
|
| +#include "chrome/test/base/testing_profile.h"
|
| +#include "components/prefs/pref_service.h"
|
| +#include "components/safe_browsing/password_protection/password_protection_request.h"
|
| #include "components/variations/variations_params_manager.h"
|
| #include "content/public/test/test_browser_thread_bundle.h"
|
| +#include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace safe_browsing {
|
|
|
| +namespace {
|
| +const char kPhishingURL[] = "http://phishing.com";
|
| +}
|
| +
|
| +class MockSafeBrowsingUIManager : public SafeBrowsingUIManager {
|
| + public:
|
| + explicit MockSafeBrowsingUIManager(SafeBrowsingService* service)
|
| + : SafeBrowsingUIManager(service) {}
|
| +
|
| + MOCK_METHOD1(DisplayBlockingPage, void(const UnsafeResource& resource));
|
| +
|
| + void InvokeOnBlockingPageComplete(
|
| + const security_interstitials::UnsafeResource::UrlCheckCallback&
|
| + callback) {
|
| + DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
|
| + if (!callback.is_null())
|
| + callback.Run(false);
|
| + }
|
| +
|
| + protected:
|
| + virtual ~MockSafeBrowsingUIManager() {}
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(MockSafeBrowsingUIManager);
|
| +};
|
| +
|
| class MockChromePasswordProtectionService
|
| : public ChromePasswordProtectionService {
|
| public:
|
| - MockChromePasswordProtectionService()
|
| - : ChromePasswordProtectionService(),
|
| + explicit MockChromePasswordProtectionService(Profile* profile)
|
| + : ChromePasswordProtectionService(profile),
|
| is_incognito_(false),
|
| is_extended_reporting_(false),
|
| is_history_sync_enabled_(false) {}
|
| @@ -32,17 +66,49 @@ class MockChromePasswordProtectionService
|
| is_history_sync_enabled_ = is_history_sync_enabled;
|
| }
|
|
|
| + void SetUIManager(scoped_refptr<SafeBrowsingUIManager> ui_manager) {
|
| + ui_manager_ = ui_manager;
|
| + }
|
| +
|
| + MockSafeBrowsingUIManager* ui_manager() {
|
| + return static_cast<MockSafeBrowsingUIManager*>(ui_manager_.get());
|
| + }
|
| +
|
| + void CacheVerdict(const GURL& url,
|
| + LoginReputationClientResponse* verdict,
|
| + const base::Time& receive_time) override {}
|
| +
|
| + protected:
|
| + friend class ChromePasswordProtectionServiceTest;
|
| +
|
| private:
|
| bool is_incognito_;
|
| bool is_extended_reporting_;
|
| bool is_history_sync_enabled_;
|
| };
|
|
|
| -class ChromePasswordProtectionServiceTest : public testing::Test {
|
| +class ChromePasswordProtectionServiceTest
|
| + : public ChromeRenderViewHostTestHarness {
|
| public:
|
| typedef std::map<std::string, std::string> Parameters;
|
| +
|
| ChromePasswordProtectionServiceTest() {}
|
|
|
| + void SetUp() override {
|
| + ChromeRenderViewHostTestHarness::SetUp();
|
| + profile()->GetPrefs()->SetBoolean(prefs::kSafeBrowsingEnabled, true);
|
| + service_ = base::MakeUnique<MockChromePasswordProtectionService>(profile());
|
| + service_->SetUIManager(new testing::StrictMock<MockSafeBrowsingUIManager>(
|
| + SafeBrowsingService::CreateSafeBrowsingService()));
|
| + }
|
| +
|
| + void TearDown() override {
|
| + base::RunLoop().RunUntilIdle();
|
| + service_.reset();
|
| + request_ = nullptr;
|
| + ChromeRenderViewHostTestHarness::TearDown();
|
| + }
|
| +
|
| // Sets up Finch trial feature parameters.
|
| void SetFeatureParams(const base::Feature& feature,
|
| const std::string& trial_name,
|
| @@ -65,19 +131,38 @@ class ChromePasswordProtectionServiceTest : public testing::Test {
|
| {"history_sync", allowed_for_history_sync ? "true" : "false"}};
|
| }
|
|
|
| + void InitializeRequest(LoginReputationClientRequest::TriggerType type) {
|
| + request_ = new PasswordProtectionRequest(web_contents(), GURL(kPhishingURL),
|
| + GURL(), GURL(), std::string(),
|
| + type, service_.get(), 0);
|
| + }
|
| +
|
| + void InitializeVerdict(LoginReputationClientResponse::VerdictType type) {
|
| + verdict_ = base::MakeUnique<LoginReputationClientResponse>();
|
| + verdict_->set_verdict_type(type);
|
| + }
|
| +
|
| + void RequestFinished(
|
| + PasswordProtectionRequest* request,
|
| + std::unique_ptr<LoginReputationClientResponse> response) {
|
| + service_->RequestFinished(request, false, std::move(response));
|
| + }
|
| +
|
| protected:
|
| - content::TestBrowserThreadBundle thread_bundle_;
|
| variations::testing::VariationParamsManager params_manager_;
|
| base::test::ScopedFeatureList scoped_feature_list_;
|
| + std::unique_ptr<MockChromePasswordProtectionService> service_;
|
| + scoped_refptr<PasswordProtectionRequest> request_;
|
| + std::unique_ptr<LoginReputationClientResponse> verdict_;
|
| };
|
|
|
| TEST_F(ChromePasswordProtectionServiceTest,
|
| VerifyFinchControlForLowReputationPingSBEROnlyNoIncognito) {
|
| - MockChromePasswordProtectionService service;
|
| PasswordProtectionService::RequestOutcome reason;
|
|
|
| // By default kPasswordFieldOnFocusPinging feature is disabled.
|
| - EXPECT_FALSE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + EXPECT_FALSE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| EXPECT_EQ(PasswordProtectionService::DISABLED_DUE_TO_FEATURE_DISABLED,
|
| reason);
|
|
|
| @@ -98,40 +183,47 @@ TEST_F(ChromePasswordProtectionServiceTest,
|
| SetFeatureParams(kPasswordFieldOnFocusPinging, "SBEROnlyNoIncognito",
|
| sber_and_no_incognito);
|
|
|
| - service.ConfigService(false /*incognito*/, false /*SBER*/, false /*sync*/);
|
| - EXPECT_FALSE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(false /*incognito*/, false /*SBER*/, false /*sync*/);
|
| + EXPECT_FALSE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| EXPECT_EQ(PasswordProtectionService::DISABLED_DUE_TO_USER_POPULATION, reason);
|
|
|
| - service.ConfigService(false /*incognito*/, false /*SBER*/, true /*sync*/);
|
| - EXPECT_FALSE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(false /*incognito*/, false /*SBER*/, true /*sync*/);
|
| + EXPECT_FALSE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| EXPECT_EQ(PasswordProtectionService::DISABLED_DUE_TO_USER_POPULATION, reason);
|
|
|
| - service.ConfigService(false /*incognito*/, true /*SBER*/, false /*sync*/);
|
| - EXPECT_TRUE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(false /*incognito*/, true /*SBER*/, false /*sync*/);
|
| + EXPECT_TRUE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
|
|
| - service.ConfigService(false /*incognito*/, true /*SBER*/, true /*sync*/);
|
| - EXPECT_TRUE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(false /*incognito*/, true /*SBER*/, true /*sync*/);
|
| + EXPECT_TRUE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
|
|
| - service.ConfigService(true /*incognito*/, false /*SBER*/, false /*sync*/);
|
| - EXPECT_FALSE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(true /*incognito*/, false /*SBER*/, false /*sync*/);
|
| + EXPECT_FALSE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| EXPECT_EQ(PasswordProtectionService::DISABLED_DUE_TO_INCOGNITO, reason);
|
|
|
| - service.ConfigService(true /*incognito*/, false /*SBER*/, true /*sync*/);
|
| - EXPECT_FALSE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(true /*incognito*/, false /*SBER*/, true /*sync*/);
|
| + EXPECT_FALSE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| EXPECT_EQ(PasswordProtectionService::DISABLED_DUE_TO_INCOGNITO, reason);
|
|
|
| - service.ConfigService(true /*incognito*/, true /*SBER*/, false /*sync*/);
|
| - EXPECT_FALSE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(true /*incognito*/, true /*SBER*/, false /*sync*/);
|
| + EXPECT_FALSE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| EXPECT_EQ(PasswordProtectionService::DISABLED_DUE_TO_INCOGNITO, reason);
|
|
|
| - service.ConfigService(true /*incognito*/, true /*SBER*/, true /*sync*/);
|
| - EXPECT_FALSE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(true /*incognito*/, true /*SBER*/, true /*sync*/);
|
| + EXPECT_FALSE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| EXPECT_EQ(PasswordProtectionService::DISABLED_DUE_TO_INCOGNITO, reason);
|
| }
|
|
|
| TEST_F(ChromePasswordProtectionServiceTest,
|
| VerifyFinchControlForLowReputationPingSBERAndHistorySyncNoIncognito) {
|
| - MockChromePasswordProtectionService service;
|
| PasswordProtectionService::RequestOutcome reason;
|
|
|
| // Enables kPasswordFieldOnFocusPinging feature.
|
| @@ -150,39 +242,46 @@ TEST_F(ChromePasswordProtectionServiceTest,
|
| CreateParameters(false, false, true, true);
|
| SetFeatureParams(kPasswordFieldOnFocusPinging,
|
| "SBERAndHistorySyncNoIncognito", sber_and_sync_no_incognito);
|
| - service.ConfigService(false /*incognito*/, false /*SBER*/, false /*sync*/);
|
| - EXPECT_FALSE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(false /*incognito*/, false /*SBER*/, false /*sync*/);
|
| + EXPECT_FALSE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| EXPECT_EQ(PasswordProtectionService::DISABLED_DUE_TO_USER_POPULATION, reason);
|
|
|
| - service.ConfigService(false /*incognito*/, false /*SBER*/, true /*sync*/);
|
| - EXPECT_TRUE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(false /*incognito*/, false /*SBER*/, true /*sync*/);
|
| + EXPECT_TRUE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
|
|
| - service.ConfigService(false /*incognito*/, true /*SBER*/, false /*sync*/);
|
| - EXPECT_TRUE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(false /*incognito*/, true /*SBER*/, false /*sync*/);
|
| + EXPECT_TRUE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
|
|
| - service.ConfigService(false /*incognito*/, true /*SBER*/, true /*sync*/);
|
| - EXPECT_TRUE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(false /*incognito*/, true /*SBER*/, true /*sync*/);
|
| + EXPECT_TRUE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
|
|
| - service.ConfigService(true /*incognito*/, false /*SBER*/, false /*sync*/);
|
| - EXPECT_FALSE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(true /*incognito*/, false /*SBER*/, false /*sync*/);
|
| + EXPECT_FALSE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| EXPECT_EQ(PasswordProtectionService::DISABLED_DUE_TO_INCOGNITO, reason);
|
|
|
| - service.ConfigService(true /*incognito*/, false /*SBER*/, true /*sync*/);
|
| - EXPECT_FALSE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(true /*incognito*/, false /*SBER*/, true /*sync*/);
|
| + EXPECT_FALSE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| EXPECT_EQ(PasswordProtectionService::DISABLED_DUE_TO_INCOGNITO, reason);
|
|
|
| - service.ConfigService(true /*incognito*/, true /*SBER*/, false /*sync*/);
|
| - EXPECT_FALSE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(true /*incognito*/, true /*SBER*/, false /*sync*/);
|
| + EXPECT_FALSE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| EXPECT_EQ(PasswordProtectionService::DISABLED_DUE_TO_INCOGNITO, reason);
|
|
|
| - service.ConfigService(true /*incognito*/, true /*SBER*/, true /*sync*/);
|
| - EXPECT_FALSE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(true /*incognito*/, true /*SBER*/, true /*sync*/);
|
| + EXPECT_FALSE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| EXPECT_EQ(PasswordProtectionService::DISABLED_DUE_TO_INCOGNITO, reason);
|
| }
|
|
|
| TEST_F(ChromePasswordProtectionServiceTest,
|
| VerifyFinchControlForLowReputationPingAllButNoIncognito) {
|
| - MockChromePasswordProtectionService service;
|
| PasswordProtectionService::RequestOutcome reason;
|
|
|
| // Enables kPasswordFieldOnFocusPinging feature.
|
| @@ -199,38 +298,45 @@ TEST_F(ChromePasswordProtectionServiceTest,
|
| Parameters all_users = CreateParameters(false, true, true, true);
|
| SetFeatureParams(kPasswordFieldOnFocusPinging, "AllButNoIncognito",
|
| all_users);
|
| - service.ConfigService(false /*incognito*/, false /*SBER*/, false /*sync*/);
|
| - EXPECT_TRUE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(false /*incognito*/, false /*SBER*/, false /*sync*/);
|
| + EXPECT_TRUE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
|
|
| - service.ConfigService(false /*incognito*/, false /*SBER*/, true /*sync*/);
|
| - EXPECT_TRUE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(false /*incognito*/, false /*SBER*/, true /*sync*/);
|
| + EXPECT_TRUE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
|
|
| - service.ConfigService(false /*incognito*/, true /*SBER*/, false /*sync*/);
|
| - EXPECT_TRUE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(false /*incognito*/, true /*SBER*/, false /*sync*/);
|
| + EXPECT_TRUE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
|
|
| - service.ConfigService(false /*incognito*/, true /*SBER*/, true /*sync*/);
|
| - EXPECT_TRUE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(false /*incognito*/, true /*SBER*/, true /*sync*/);
|
| + EXPECT_TRUE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
|
|
| - service.ConfigService(true /*incognito*/, false /*SBER*/, false /*sync*/);
|
| - EXPECT_FALSE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(true /*incognito*/, false /*SBER*/, false /*sync*/);
|
| + EXPECT_FALSE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| EXPECT_EQ(PasswordProtectionService::DISABLED_DUE_TO_INCOGNITO, reason);
|
|
|
| - service.ConfigService(true /*incognito*/, false /*SBER*/, true /*sync*/);
|
| - EXPECT_FALSE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(true /*incognito*/, false /*SBER*/, true /*sync*/);
|
| + EXPECT_FALSE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| EXPECT_EQ(PasswordProtectionService::DISABLED_DUE_TO_INCOGNITO, reason);
|
|
|
| - service.ConfigService(true /*incognito*/, true /*SBER*/, false /*sync*/);
|
| - EXPECT_FALSE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(true /*incognito*/, true /*SBER*/, false /*sync*/);
|
| + EXPECT_FALSE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| EXPECT_EQ(PasswordProtectionService::DISABLED_DUE_TO_INCOGNITO, reason);
|
|
|
| - service.ConfigService(true /*incognito*/, true /*SBER*/, true /*sync*/);
|
| - EXPECT_FALSE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(true /*incognito*/, true /*SBER*/, true /*sync*/);
|
| + EXPECT_FALSE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| EXPECT_EQ(PasswordProtectionService::DISABLED_DUE_TO_INCOGNITO, reason);
|
| }
|
|
|
| TEST_F(ChromePasswordProtectionServiceTest,
|
| VerifyFinchControlForLowReputationPingAll) {
|
| - MockChromePasswordProtectionService service;
|
| PasswordProtectionService::RequestOutcome reason;
|
|
|
| // Enables kPasswordFieldOnFocusPinging feature.
|
| @@ -246,22 +352,92 @@ TEST_F(ChromePasswordProtectionServiceTest,
|
| // ]
|
| Parameters all_users = CreateParameters(true, true, true, true);
|
| SetFeatureParams(kPasswordFieldOnFocusPinging, "All", all_users);
|
| - service.ConfigService(false /*incognito*/, false /*SBER*/, false /*sync*/);
|
| - EXPECT_TRUE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| - service.ConfigService(false /*incognito*/, false /*SBER*/, true /*sync*/);
|
| - EXPECT_TRUE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| - service.ConfigService(false /*incognito*/, true /*SBER*/, false /*sync*/);
|
| - EXPECT_TRUE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| - service.ConfigService(false /*incognito*/, true /*SBER*/, true /*sync*/);
|
| - EXPECT_TRUE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| - service.ConfigService(true /*incognito*/, false /*SBER*/, false /*sync*/);
|
| - EXPECT_TRUE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| - service.ConfigService(true /*incognito*/, false /*SBER*/, true /*sync*/);
|
| - EXPECT_TRUE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| - service.ConfigService(true /*incognito*/, true /*SBER*/, false /*sync*/);
|
| - EXPECT_TRUE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| - service.ConfigService(true /*incognito*/, true /*SBER*/, true /*sync*/);
|
| - EXPECT_TRUE(service.IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(false /*incognito*/, false /*SBER*/, false /*sync*/);
|
| + EXPECT_TRUE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(false /*incognito*/, false /*SBER*/, true /*sync*/);
|
| + EXPECT_TRUE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(false /*incognito*/, true /*SBER*/, false /*sync*/);
|
| + EXPECT_TRUE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(false /*incognito*/, true /*SBER*/, true /*sync*/);
|
| + EXPECT_TRUE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(true /*incognito*/, false /*SBER*/, false /*sync*/);
|
| + EXPECT_TRUE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(true /*incognito*/, false /*SBER*/, true /*sync*/);
|
| + EXPECT_TRUE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(true /*incognito*/, true /*SBER*/, false /*sync*/);
|
| + EXPECT_TRUE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| + service_->ConfigService(true /*incognito*/, true /*SBER*/, true /*sync*/);
|
| + EXPECT_TRUE(
|
| + service_->IsPingingEnabled(kPasswordFieldOnFocusPinging, &reason));
|
| +}
|
| +
|
| +TEST_F(ChromePasswordProtectionServiceTest,
|
| + ShowInterstitialOnPasswordOnFocusPhishingVerdict) {
|
| + // Enables kPasswordProtectionInterstitial feature.
|
| + scoped_feature_list_.InitAndEnableFeature(kPasswordProtectionInterstitial);
|
| +
|
| + InitializeRequest(LoginReputationClientRequest::UNFAMILIAR_LOGIN_PAGE);
|
| + InitializeVerdict(LoginReputationClientResponse::PHISHING);
|
| +
|
| + security_interstitials::UnsafeResource resource;
|
| + EXPECT_CALL(*service_->ui_manager(), DisplayBlockingPage(testing::_))
|
| + .WillOnce(testing::SaveArg<0>(&resource));
|
| + RequestFinished(request_.get(), std::move(verdict_));
|
| + EXPECT_EQ(GURL(kPhishingURL), resource.url);
|
| + EXPECT_EQ(GURL(kPhishingURL), resource.original_url);
|
| + EXPECT_FALSE(resource.is_subresource);
|
| + EXPECT_EQ(SB_THREAT_TYPE_PASSWORD_PROTECTION_PHISHING_URL,
|
| + resource.threat_type);
|
| + EXPECT_EQ(ThreatSource::PASSWORD_PROTECTION_SERVICE, resource.threat_source);
|
| + EXPECT_EQ(web_contents(), resource.web_contents_getter.Run());
|
| +
|
| + content::BrowserThread::PostTask(
|
| + content::BrowserThread::IO, FROM_HERE,
|
| + base::BindOnce(&MockSafeBrowsingUIManager::InvokeOnBlockingPageComplete,
|
| + service_->ui_manager(), resource.callback));
|
| +}
|
| +
|
| +TEST_F(ChromePasswordProtectionServiceTest, NoInterstitialOnOtherVerdicts) {
|
| + // Enables kPasswordProtectionInterstitial feature.
|
| + scoped_feature_list_.InitAndEnableFeature(kPasswordProtectionInterstitial);
|
| +
|
| + // For password on focus request, no interstitial shown if verdict is
|
| + // LOW_REPUTATION.
|
| + InitializeRequest(LoginReputationClientRequest::UNFAMILIAR_LOGIN_PAGE);
|
| + InitializeVerdict(LoginReputationClientResponse::LOW_REPUTATION);
|
| +
|
| + security_interstitials::UnsafeResource resource;
|
| + EXPECT_CALL(*service_->ui_manager(), DisplayBlockingPage(testing::_))
|
| + .Times(0);
|
| + RequestFinished(request_.get(), std::move(verdict_));
|
| +
|
| + // For password on focus request, no interstitial shown if verdict is
|
| + // SAFE.
|
| + InitializeVerdict(LoginReputationClientResponse::SAFE);
|
| + RequestFinished(request_.get(), std::move(verdict_));
|
| +
|
| + // For protected password entry request, no interstitial shown if verdict is
|
| + // PHISHING.
|
| + InitializeRequest(LoginReputationClientRequest::PASSWORD_REUSE_EVENT);
|
| + InitializeVerdict(LoginReputationClientResponse::PHISHING);
|
| + RequestFinished(request_.get(), std::move(verdict_));
|
| +
|
| + // For protected password entry request, no interstitial shown if verdict is
|
| + // LOW_REPUTATION.
|
| + InitializeVerdict(LoginReputationClientResponse::LOW_REPUTATION);
|
| + RequestFinished(request_.get(), std::move(verdict_));
|
| +
|
| + // For protected password entry request, no interstitial shown if verdict is
|
| + // SAFE.
|
| + InitializeVerdict(LoginReputationClientResponse::SAFE);
|
| + RequestFinished(request_.get(), std::move(verdict_));
|
| }
|
|
|
| } // namespace safe_browsing
|
|
|