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 ...@@ -287,7 +287,7 @@ class CONTENT_EXPORT BackgroundSyncManager
base::OnceClosure callback); base::OnceClosure callback);
void EventCompleteDidGetDelay( void EventCompleteDidGetDelay(
blink::mojom::BackgroundSyncRegistrationInfoPtr registration_info, blink::mojom::BackgroundSyncRegistrationInfoPtr registration_info,
bool succeeded, blink::ServiceWorkerStatusCode status_code,
const url::Origin& origin, const url::Origin& origin,
base::OnceClosure callback, base::OnceClosure callback,
base::TimeDelta delay); base::TimeDelta delay);
...@@ -312,6 +312,9 @@ class CONTENT_EXPORT BackgroundSyncManager ...@@ -312,6 +312,9 @@ class CONTENT_EXPORT BackgroundSyncManager
void SetMaxSyncAttemptsImpl(int max_sync_attempts, void SetMaxSyncAttemptsImpl(int max_sync_attempts,
base::OnceClosure callback); base::OnceClosure callback);
// Whether an event should be logged for debuggability.
bool ShouldLogToDevTools(blink::mojom::BackgroundSyncType sync_type);
base::OnceClosure MakeEmptyCompletion(); base::OnceClosure MakeEmptyCompletion();
blink::ServiceWorkerStatusCode CanEmulateSyncEvent( blink::ServiceWorkerStatusCode CanEmulateSyncEvent(
......
...@@ -402,7 +402,8 @@ class BackgroundSyncManagerTest ...@@ -402,7 +402,8 @@ class BackgroundSyncManagerTest
void InitFailedSyncEventTest() { void InitFailedSyncEventTest() {
SetupForSyncEvent(base::BindRepeating( SetupForSyncEvent(base::BindRepeating(
&BackgroundSyncManagerTest::DispatchSyncStatusCallback, &BackgroundSyncManagerTest::DispatchSyncStatusCallback,
base::Unretained(this), blink::ServiceWorkerStatusCode::kErrorFailed)); base::Unretained(this),
blink::ServiceWorkerStatusCode::kErrorEventWaitUntilRejected));
} }
void DispatchSyncDelayedCallback( void DispatchSyncDelayedCallback(
...@@ -913,7 +914,7 @@ TEST_F(BackgroundSyncManagerTest, ReregisterMidSyncFirstAttemptFails) { ...@@ -913,7 +914,7 @@ TEST_F(BackgroundSyncManagerTest, ReregisterMidSyncFirstAttemptFails) {
// The first sync attempt fails. // The first sync attempt fails.
ASSERT_TRUE(sync_fired_callback_); ASSERT_TRUE(sync_fired_callback_);
std::move(sync_fired_callback_) std::move(sync_fired_callback_)
.Run(blink::ServiceWorkerStatusCode::kErrorFailed); .Run(blink::ServiceWorkerStatusCode::kErrorEventWaitUntilRejected);
base::RunLoop().RunUntilIdle(); base::RunLoop().RunUntilIdle();
// It should fire again since it was reregistered mid-sync. // It should fire again since it was reregistered mid-sync.
...@@ -1547,7 +1548,7 @@ TEST_F(BackgroundSyncManagerTest, EmulateDispatchSyncEvent) { ...@@ -1547,7 +1548,7 @@ TEST_F(BackgroundSyncManagerTest, EmulateDispatchSyncEvent) {
InitSyncEventTest(); InitSyncEventTest();
bool was_called = false; bool was_called = false;
blink::ServiceWorkerStatusCode code = blink::ServiceWorkerStatusCode code =
blink::ServiceWorkerStatusCode::kErrorFailed; blink::ServiceWorkerStatusCode::kErrorEventWaitUntilRejected;
background_sync_manager_->EmulateDispatchSyncEvent( background_sync_manager_->EmulateDispatchSyncEvent(
"emulated_tag", sw_registration_1_->active_version(), false, "emulated_tag", sw_registration_1_->active_version(), false,
base::BindOnce(EmulateDispatchSyncEventCallback, &was_called, &code)); base::BindOnce(EmulateDispatchSyncEventCallback, &was_called, &code));
...@@ -1566,7 +1567,7 @@ TEST_F(BackgroundSyncManagerTest, EmulateDispatchSyncEvent) { ...@@ -1566,7 +1567,7 @@ TEST_F(BackgroundSyncManagerTest, EmulateDispatchSyncEvent) {
base::BindOnce(EmulateDispatchSyncEventCallback, &was_called, &code)); base::BindOnce(EmulateDispatchSyncEventCallback, &was_called, &code));
base::RunLoop().RunUntilIdle(); base::RunLoop().RunUntilIdle();
EXPECT_TRUE(was_called); EXPECT_TRUE(was_called);
EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNetwork, code); EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorEventWaitUntilRejected, code);
background_sync_manager_->EmulateServiceWorkerOffline(sw_registration_id_1_, background_sync_manager_->EmulateServiceWorkerOffline(sw_registration_id_1_,
false); false);
...@@ -1579,7 +1580,7 @@ TEST_F(BackgroundSyncManagerTest, EmulateDispatchSyncEvent) { ...@@ -1579,7 +1580,7 @@ TEST_F(BackgroundSyncManagerTest, EmulateDispatchSyncEvent) {
base::BindOnce(EmulateDispatchSyncEventCallback, &was_called, &code)); base::BindOnce(EmulateDispatchSyncEventCallback, &was_called, &code));
base::RunLoop().RunUntilIdle(); base::RunLoop().RunUntilIdle();
EXPECT_TRUE(was_called); EXPECT_TRUE(was_called);
EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNetwork, code); EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorEventWaitUntilRejected, code);
SetNetwork(network::mojom::ConnectionType::CONNECTION_WIFI); SetNetwork(network::mojom::ConnectionType::CONNECTION_WIFI);
was_called = false; was_called = false;
...@@ -1633,4 +1634,45 @@ TEST_F(BackgroundSyncManagerTest, EventsLoggedForRegistration) { ...@@ -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 } // 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