summaryrefslogtreecommitdiff
path: root/chromium/chrome/browser/net/trial_comparison_cert_verifier_browsertest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/browser/net/trial_comparison_cert_verifier_browsertest.cc')
-rw-r--r--chromium/chrome/browser/net/trial_comparison_cert_verifier_browsertest.cc136
1 files changed, 136 insertions, 0 deletions
diff --git a/chromium/chrome/browser/net/trial_comparison_cert_verifier_browsertest.cc b/chromium/chrome/browser/net/trial_comparison_cert_verifier_browsertest.cc
new file mode 100644
index 00000000000..05873ef06f9
--- /dev/null
+++ b/chromium/chrome/browser/net/trial_comparison_cert_verifier_browsertest.cc
@@ -0,0 +1,136 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/test/metrics/histogram_tester.h"
+#include "base/test/scoped_feature_list.h"
+#include "build/build_config.h"
+#include "chrome/browser/metrics/subprocess_metrics_provider.h"
+#include "chrome/browser/net/trial_comparison_cert_verifier_controller.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/common/chrome_features.h"
+#include "chrome/test/base/in_process_browser_test.h"
+#include "chrome/test/base/ui_test_utils.h"
+#include "components/safe_browsing/common/safe_browsing_prefs.h"
+#include "net/base/features.h"
+#include "net/cert/trial_comparison_cert_verifier.h"
+#include "net/net_buildflags.h"
+#include "net/test/embedded_test_server/embedded_test_server.h"
+
+class TrialComparisonCertVerifierTest : public InProcessBrowserTest {
+ public:
+ TrialComparisonCertVerifierTest()
+ : https_test_server_(net::EmbeddedTestServer::TYPE_HTTPS) {}
+
+ protected:
+ net::EmbeddedTestServer https_test_server_;
+};
+
+IN_PROC_BROWSER_TEST_F(TrialComparisonCertVerifierTest, TrialDisabled) {
+ ASSERT_TRUE(https_test_server_.Start());
+ base::HistogramTester histograms;
+ ui_test_utils::NavigateToURL(browser(),
+ https_test_server_.GetURL("/title1.html"));
+ SubprocessMetricsProvider::MergeHistogramDeltasForTesting();
+ histograms.ExpectTotalCount("Net.CertVerifier_Job_Latency", 1);
+ histograms.ExpectTotalCount("Net.CertVerifier_Job_Latency_TrialPrimary", 0);
+}
+
+class TrialComparisonCertVerifierFeatureEnabledTest
+ : public TrialComparisonCertVerifierTest {
+ public:
+ TrialComparisonCertVerifierFeatureEnabledTest() {
+ TrialComparisonCertVerifierController::SetFakeOfficialBuildForTesting(true);
+ scoped_feature_ = std::make_unique<base::test::ScopedFeatureList>();
+ // None of these tests should generate a report, but set the trial to
+ // uma_only mode anyway just to be safe.
+ scoped_feature_->InitAndEnableFeatureWithParameters(
+ features::kCertDualVerificationTrialFeature, {{"uma_only", "true"}});
+ }
+
+ ~TrialComparisonCertVerifierFeatureEnabledTest() override {
+ TrialComparisonCertVerifierController::SetFakeOfficialBuildForTesting(
+ false);
+ }
+
+ protected:
+ std::unique_ptr<base::test::ScopedFeatureList> scoped_feature_;
+};
+
+IN_PROC_BROWSER_TEST_F(TrialComparisonCertVerifierFeatureEnabledTest,
+ TrialEnabledPrefDisabled) {
+ ASSERT_TRUE(https_test_server_.Start());
+ base::HistogramTester histograms;
+ ui_test_utils::NavigateToURL(browser(),
+ https_test_server_.GetURL("/title1.html"));
+ SubprocessMetricsProvider::MergeHistogramDeltasForTesting();
+ histograms.ExpectTotalCount("Net.CertVerifier_Job_Latency", 1);
+ histograms.ExpectTotalCount("Net.CertVerifier_Job_Latency_TrialPrimary", 0);
+}
+
+IN_PROC_BROWSER_TEST_F(TrialComparisonCertVerifierFeatureEnabledTest,
+ TrialEnabledPrefEnabled) {
+ safe_browsing::SetExtendedReportingPref(browser()->profile()->GetPrefs(),
+ true);
+
+ ASSERT_TRUE(https_test_server_.Start());
+ base::HistogramTester histograms;
+ ui_test_utils::NavigateToURL(browser(),
+ https_test_server_.GetURL("/title1.html"));
+ SubprocessMetricsProvider::MergeHistogramDeltasForTesting();
+ histograms.ExpectTotalCount("Net.CertVerifier_Job_Latency", 1);
+#if BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
+ if (base::FeatureList::IsEnabled(
+ net::features::kCertVerifierBuiltinFeature)) {
+ // If both the dual cert verifier trial feature and the builtin verifier
+ // feature are enabled, the dual cert verifier trial should not be used.
+ histograms.ExpectTotalCount("Net.CertVerifier_Job_Latency_TrialPrimary", 0);
+ return;
+ }
+#endif
+ histograms.ExpectTotalCount("Net.CertVerifier_Job_Latency_TrialPrimary", 1);
+}
+
+#if BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
+class TrialComparisonCertVerifierFeatureOverridenByBuiltinVerifierTest
+ : public TrialComparisonCertVerifierTest {
+ public:
+ TrialComparisonCertVerifierFeatureOverridenByBuiltinVerifierTest() {
+ TrialComparisonCertVerifierController::SetFakeOfficialBuildForTesting(true);
+ scoped_feature_ = std::make_unique<base::test::ScopedFeatureList>();
+ scoped_feature_->InitWithFeaturesAndParameters(
+ // None of these tests should generate a report, but set the trial to
+ // uma_only mode anyway just to be safe.
+ {{features::kCertDualVerificationTrialFeature, {{"uma_only", "true"}}},
+ // Enable the builtin verifier.
+ {net::features::kCertVerifierBuiltinFeature, {}}},
+ {});
+ }
+
+ ~TrialComparisonCertVerifierFeatureOverridenByBuiltinVerifierTest() override {
+ TrialComparisonCertVerifierController::SetFakeOfficialBuildForTesting(
+ false);
+ }
+
+ protected:
+ std::unique_ptr<base::test::ScopedFeatureList> scoped_feature_;
+};
+
+IN_PROC_BROWSER_TEST_F(
+ TrialComparisonCertVerifierFeatureOverridenByBuiltinVerifierTest,
+ TrialEnabledPrefEnabledBuiltVerifierEnabled) {
+ safe_browsing::SetExtendedReportingPref(browser()->profile()->GetPrefs(),
+ true);
+
+ ASSERT_TRUE(https_test_server_.Start());
+ base::HistogramTester histograms;
+ ui_test_utils::NavigateToURL(browser(),
+ https_test_server_.GetURL("/title1.html"));
+ SubprocessMetricsProvider::MergeHistogramDeltasForTesting();
+ histograms.ExpectTotalCount("Net.CertVerifier_Job_Latency", 1);
+ // If both the dual cert verifier trial feature and the builtin verifier
+ // feature are enabled, the dual cert verifier trial should not be used.
+ histograms.ExpectTotalCount("Net.CertVerifier_Job_Latency_TrialPrimary", 0);
+}
+#endif