Commit 5b05285c authored by Mikel Astiz's avatar Mikel Astiz Committed by Commit Bot

Don't allow dropping events in delegate proxy

This speculates with the idea of the proxy dropping some events,
e.g. OnSyncStopping(), and later successfully posting other ones,
e.g. OnSyncStarting().

To make investigation easier, we also split a previously existing
CHECK into separate ones per datatype, to narrow down which ones
are affected.

Bug: 885019
Change-Id: I1e569eb0868cff4b66d841420f37f15c71f70567
Reviewed-on: https://chromium-review.googlesource.com/1233707
Commit-Queue: Mikel Astiz <mastiz@chromium.org>
Reviewed-by: default avatarMarc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#592503}
parent 2cf99249
...@@ -94,8 +94,50 @@ void ClientTagBasedModelTypeProcessor::OnSyncStarting( ...@@ -94,8 +94,50 @@ void ClientTagBasedModelTypeProcessor::OnSyncStarting(
CHECK(this); CHECK(this);
CHECK(request.error_handler); CHECK(request.error_handler);
CHECK(start_callback); CHECK(start_callback);
CHECK(!start_callback_);
CHECK(!IsConnected()); // Switch used to distinguish which datatypes contribute to CHECK failures.
switch (type_) {
case DEVICE_INFO:
CHECK(!start_callback_);
CHECK(!IsConnected());
break;
case USER_CONSENTS:
CHECK(!start_callback_);
CHECK(!IsConnected());
break;
case USER_EVENTS:
CHECK(!start_callback_);
CHECK(!IsConnected());
break;
case SESSIONS:
CHECK(!start_callback_);
CHECK(!IsConnected());
break;
case AUTOFILL:
CHECK(!start_callback_);
CHECK(!IsConnected());
break;
case AUTOFILL_PROFILE:
CHECK(!start_callback_);
CHECK(!IsConnected());
break;
case AUTOFILL_WALLET_DATA:
CHECK(!start_callback_);
CHECK(!IsConnected());
break;
case AUTOFILL_WALLET_METADATA:
CHECK(!start_callback_);
CHECK(!IsConnected());
break;
case TYPED_URLS:
CHECK(!start_callback_);
CHECK(!IsConnected());
break;
default:
CHECK(!start_callback_);
CHECK(!IsConnected());
break;
}
start_callback_ = std::move(start_callback); start_callback_ = std::move(start_callback);
activation_request_ = request; activation_request_ = request;
......
...@@ -57,9 +57,10 @@ void RunModelTask( ...@@ -57,9 +57,10 @@ void RunModelTask(
const ProxyModelTypeControllerDelegate::DelegateProvider& delegate_provider, const ProxyModelTypeControllerDelegate::DelegateProvider& delegate_provider,
base::OnceCallback<void(base::WeakPtr<ModelTypeControllerDelegate>)> task) { base::OnceCallback<void(base::WeakPtr<ModelTypeControllerDelegate>)> task) {
base::WeakPtr<ModelTypeControllerDelegate> delegate = delegate_provider.Run(); base::WeakPtr<ModelTypeControllerDelegate> delegate = delegate_provider.Run();
if (delegate) { // TODO(crbug.com/876490): Remove/revisit this CHECK once investigations are
std::move(task).Run(delegate); // finalized.
} CHECK(delegate);
std::move(task).Run(delegate);
} }
} // namespace } // namespace
......
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