Commit 1bc6d0a5 authored by Rayan Kanso's avatar Rayan Kanso Committed by Commit Bot

[Background Sync] Show more descriptive errors in DevTools.

Changes:
- Previously we were only exposing whether the event succeeded or
failed. Now we also include whether it timed out, was rejected,
or aborted.
- Add an event for when a sync is re-registered.
- Restore UMA logging and add a test for it.

Bug: 940450
Change-Id: I2f920b0b5adcf4374e9cfb4f3edd57658cd83021
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1549085
Commit-Queue: Rayan Kanso <rayankans@chromium.org>
Reviewed-by: default avatarMugdha Lakhani <nator@chromium.org>
Reviewed-by: default avatarPeter Beverloo <peter@chromium.org>
Auto-Submit: Rayan Kanso <rayankans@chromium.org>
Cr-Commit-Position: refs/heads/master@{#648655}
parent 66fd0fd4
......@@ -287,7 +287,7 @@ class CONTENT_EXPORT BackgroundSyncManager
base::OnceClosure callback);
void EventCompleteDidGetDelay(
blink::mojom::BackgroundSyncRegistrationInfoPtr registration_info,
bool succeeded,
blink::ServiceWorkerStatusCode status_code,
const url::Origin& origin,
base::OnceClosure callback,
base::TimeDelta delay);
......@@ -312,6 +312,9 @@ class CONTENT_EXPORT BackgroundSyncManager
void SetMaxSyncAttemptsImpl(int max_sync_attempts,
base::OnceClosure callback);
// Whether an event should be logged for debuggability.
bool ShouldLogToDevTools(blink::mojom::BackgroundSyncType sync_type);
base::OnceClosure MakeEmptyCompletion();
blink::ServiceWorkerStatusCode CanEmulateSyncEvent(
......
......@@ -402,7 +402,8 @@ class BackgroundSyncManagerTest
void InitFailedSyncEventTest() {
SetupForSyncEvent(base::BindRepeating(
&BackgroundSyncManagerTest::DispatchSyncStatusCallback,
base::Unretained(this), blink::ServiceWorkerStatusCode::kErrorFailed));
base::Unretained(this),
blink::ServiceWorkerStatusCode::kErrorEventWaitUntilRejected));
}
void DispatchSyncDelayedCallback(
......@@ -913,7 +914,7 @@ TEST_F(BackgroundSyncManagerTest, ReregisterMidSyncFirstAttemptFails) {
// The first sync attempt fails.
ASSERT_TRUE(sync_fired_callback_);
std::move(sync_fired_callback_)
.Run(blink::ServiceWorkerStatusCode::kErrorFailed);
.Run(blink::ServiceWorkerStatusCode::kErrorEventWaitUntilRejected);
base::RunLoop().RunUntilIdle();
// It should fire again since it was reregistered mid-sync.
......@@ -1547,7 +1548,7 @@ TEST_F(BackgroundSyncManagerTest, EmulateDispatchSyncEvent) {
InitSyncEventTest();
bool was_called = false;
blink::ServiceWorkerStatusCode code =
blink::ServiceWorkerStatusCode::kErrorFailed;
blink::ServiceWorkerStatusCode::kErrorEventWaitUntilRejected;
background_sync_manager_->EmulateDispatchSyncEvent(
"emulated_tag", sw_registration_1_->active_version(), false,
base::BindOnce(EmulateDispatchSyncEventCallback, &was_called, &code));
......@@ -1566,7 +1567,7 @@ TEST_F(BackgroundSyncManagerTest, EmulateDispatchSyncEvent) {
base::BindOnce(EmulateDispatchSyncEventCallback, &was_called, &code));
base::RunLoop().RunUntilIdle();
EXPECT_TRUE(was_called);
EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNetwork, code);
EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorEventWaitUntilRejected, code);
background_sync_manager_->EmulateServiceWorkerOffline(sw_registration_id_1_,
false);
......@@ -1579,7 +1580,7 @@ TEST_F(BackgroundSyncManagerTest, EmulateDispatchSyncEvent) {
base::BindOnce(EmulateDispatchSyncEventCallback, &was_called, &code));
base::RunLoop().RunUntilIdle();
EXPECT_TRUE(was_called);
EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNetwork, code);
EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorEventWaitUntilRejected, code);
SetNetwork(network::mojom::ConnectionType::CONNECTION_WIFI);
was_called = false;
......@@ -1633,4 +1634,45 @@ TEST_F(BackgroundSyncManagerTest, EventsLoggedForRegistration) {
}
}
TEST_F(BackgroundSyncManagerTest, UkmRecordedAtCompletion) {
InitSyncEventTest();
{
base::HistogramTester histogram_tester;
EXPECT_TRUE(Register(sync_options_1_));
test_background_sync_manager_->RunDelayedTask();
base::RunLoop().RunUntilIdle();
EXPECT_FALSE(GetRegistration(sync_options_1_));
histogram_tester.ExpectBucketCount(
"BackgroundSync.Registration.OneShot.EventSucceededAtCompletion", true,
1);
histogram_tester.ExpectBucketCount(
"BackgroundSync.Registration.OneShot.NumAttemptsForSuccessfulEvent", 1,
1);
}
SetMaxSyncAttemptsAndRestartManager(1);
InitFailedSyncEventTest();
{
base::HistogramTester histogram_tester;
EXPECT_TRUE(Register(sync_options_2_));
test_background_sync_manager_->RunDelayedTask();
base::RunLoop().RunUntilIdle();
EXPECT_FALSE(GetRegistration(sync_options_2_));
histogram_tester.ExpectBucketCount(
"BackgroundSync.Registration.OneShot.EventSucceededAtCompletion", false,
1);
histogram_tester.ExpectBucketCount(
"BackgroundSync.Registration.OneShot.NumAttemptsForSuccessfulEvent", 1,
0);
}
}
} // namespace content
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