Commit a8334e9b authored by Yi Gu's avatar Yi Gu Committed by Chromium LUCI CQ

[WebOTP] Deflake SmsBrowserTest.RecordUserCancelledAsOutcome

This patch first splits the test into two to test UMA / UKM separately.

For UMA test, it
  - adds a run loop to make sure the JavaScript has been executed.
  - adds a call to |FetchHistogramsFromChildProcesses| to make sure that
  the necessary render process could be initialized before fetching the
  histograms. crrev.com/c/1804574 updated the functionality of this
  helper function.

Bug: 1141862
Change-Id: Id119b2b01d0f46faab56cd0739e78a5fbeadf2c7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2566250
Commit-Queue: Yi Gu <yigu@chromium.org>
Reviewed-by: default avatarMajid Valipour <majidvp@chromium.org>
Cr-Commit-Position: refs/heads/master@{#832537}
parent 43bff660
...@@ -915,7 +915,7 @@ IN_PROC_BROWSER_TEST_F(SmsBrowserTest, ...@@ -915,7 +915,7 @@ IN_PROC_BROWSER_TEST_F(SmsBrowserTest,
ExpectNoOutcomeUKM(); ExpectNoOutcomeUKM();
} }
IN_PROC_BROWSER_TEST_F(SmsBrowserTest, RecordUserCancelledAsOutcome) { IN_PROC_BROWSER_TEST_F(SmsBrowserTest, RecordUserCancelledAsOutcomeUKM) {
base::HistogramTester histogram_tester; base::HistogramTester histogram_tester;
base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
switches::kWebOtpBackend, switches::kWebOtpBackendUserConsent); switches::kWebOtpBackend, switches::kWebOtpBackendUserConsent);
...@@ -949,6 +949,34 @@ IN_PROC_BROWSER_TEST_F(SmsBrowserTest, RecordUserCancelledAsOutcome) { ...@@ -949,6 +949,34 @@ IN_PROC_BROWSER_TEST_F(SmsBrowserTest, RecordUserCancelledAsOutcome) {
content::FetchHistogramsFromChildProcesses(); content::FetchHistogramsFromChildProcesses();
ExpectOutcomeUKM(url, blink::WebOTPServiceOutcome::kUserCancelled); ExpectOutcomeUKM(url, blink::WebOTPServiceOutcome::kUserCancelled);
ExpectTimingUKM("TimeUserCancelMs"); ExpectTimingUKM("TimeUserCancelMs");
}
IN_PROC_BROWSER_TEST_F(SmsBrowserTest, RecordUserCancelledAsOutcomeUMA) {
base::HistogramTester histogram_tester;
GURL url = GetTestUrl(nullptr, "simple_page.html");
EXPECT_TRUE(NavigateToURL(shell(), url));
auto provider = std::make_unique<MockSmsProvider>();
MockSmsProvider* mock_provider_ptr = provider.get();
BrowserMainLoop::GetInstance()->SetSmsProviderForTesting(std::move(provider));
shell()->web_contents()->SetDelegate(&delegate_);
base::RunLoop loop;
EXPECT_CALL(*mock_provider_ptr, Retrieve(_)).WillOnce(Invoke([&]() {
mock_provider_ptr->NotifyFailure(FailureType::kPromptCancelled);
loop.Quit();
}));
EXPECT_TRUE(ExecJs(shell(), R"(
navigator.credentials.get({otp: {transport: ["sms"]}});
)"));
// Makes sure that all the renderer processes are initialized before recording
// and fetching the histograms.
FetchHistogramsFromChildProcesses();
loop.Run();
FetchHistogramsFromChildProcesses();
histogram_tester.ExpectTotalCount("Blink.Sms.Receive.TimeUserCancel", 1); histogram_tester.ExpectTotalCount("Blink.Sms.Receive.TimeUserCancel", 1);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment