diff --git a/components/page_info/core/merchant_trust_service.cc b/components/page_info/core/merchant_trust_service.cc index 1dfa6512d05c3..079aa5ad01f66 100644 --- a/components/page_info/core/merchant_trust_service.cc +++ b/components/page_info/core/merchant_trust_service.cc @@ -142,11 +142,9 @@ void MerchantTrustService::OnCanApplyOptimizationComplete( if (decision != optimization_guide::OptimizationGuideDecision::kUnknown) { std::optional<commerce::MerchantTrustSignalsV2> merchant_trust_metadata = metadata.ParsedMetadata<commerce::MerchantTrustSignalsV2>(); - if (merchant_trust_metadata.has_value()) { - std::move(callback).Run( - url, GetMerchantDataFromProto(merchant_trust_metadata)); - return; - } + std::move(callback).Run(url, + GetMerchantDataFromProto(merchant_trust_metadata)); + return; } if (kMerchantTrustEnabledWithSampleData.Get()) { diff --git a/components/page_info/core/merchant_trust_service_unittest.cc b/components/page_info/core/merchant_trust_service_unittest.cc index 34261729d99d9..54b5d6c9953ab 100644 --- a/components/page_info/core/merchant_trust_service_unittest.cc +++ b/components/page_info/core/merchant_trust_service_unittest.cc @@ -229,6 +229,29 @@ TEST_F(MerchantTrustServiceTest, SampleData) { run_loop.Run(); } +// Tests that if the proto is empty, no data is returned. +TEST_F(MerchantTrustServiceTest, NoResult) { + base::HistogramTester t; + OptimizationMetadata metadata; + metadata.set_any_metadata({}); + SetResponse(GURL("https://foo.com"), OptimizationGuideDecision::kTrue, + metadata); + + base::RunLoop run_loop; + service()->GetMerchantTrustInfo( + GURL("https://foo.com"), + base::BindOnce( + [](base::RunLoop* run_loop, const GURL& url, + std::optional<page_info::MerchantData> info) { + ASSERT_FALSE(info.has_value()); + run_loop->Quit(); + }, + &run_loop)); + run_loop.Run(); + t.ExpectUniqueSample("Security.PageInfo.MerchantTrustStatus", + MerchantTrustStatus::kNoResult, 1); +} + // Tests that status is recorded as not valid when a proto is missing a field // and no data is returned. TEST_F(MerchantTrustServiceTest, InvalidProto) { diff --git a/components/page_info/core/merchant_trust_validation_unittest.cc b/components/page_info/core/merchant_trust_validation_unittest.cc index 7fb0ccc208324..03e23ebd36811 100644 --- a/components/page_info/core/merchant_trust_validation_unittest.cc +++ b/components/page_info/core/merchant_trust_validation_unittest.cc @@ -19,6 +19,10 @@ commerce::MerchantTrustSignalsV2 GetSampleProto() { return proto; } +TEST(MerchantTrustValidation, NoResult) { + EXPECT_EQ(ValidateProto(std::nullopt), MerchantTrustStatus::kNoResult); +} + // Tests that correct proto messages are accepted. TEST(MerchantTrustValidation, ValidProto) { auto proto = GetSampleProto();