Chromium Code Reviews| Index: chrome/browser/extensions/api/networking_private/networking_private_process_client.cc |
| diff --git a/chrome/browser/extensions/api/networking_private/networking_private_process_client.cc b/chrome/browser/extensions/api/networking_private/networking_private_process_client.cc |
| index 6f2c552c607c419286c40f3b7236c84522ccce6a..d807030c9e190fd0f844c8909aa36640e592e7f5 100644 |
| --- a/chrome/browser/extensions/api/networking_private/networking_private_process_client.cc |
| +++ b/chrome/browser/extensions/api/networking_private/networking_private_process_client.cc |
| @@ -125,8 +125,10 @@ void NetworkingPrivateProcessClient::RemoveObserver(Observer* observer) { |
| } |
| void NetworkingPrivateProcessClient::ShutdownIfDone() { |
| - if (!network_events_observers_.might_have_observers() |
| - && callbacks_map_.IsEmpty()) { |
| + if (!network_events_observers_.might_have_observers() && |
| + callbacks_map_.IsEmpty()) { |
| + // Keep reference to |this| before posting task. |
| + scoped_refptr<NetworkingPrivateProcessClient> ref_this_client(this); |
| // Remove current process client from profile, so new API calls would launch |
| // new process. |
| profile_->RemoveUserData(kNetworkingPrivateProcessClient); |
| @@ -175,6 +177,7 @@ void NetworkingPrivateProcessClient::OnProcessCrashed(int exit_code) { |
| } |
| } |
| callbacks_map_.Clear(); |
| + utility_process_host_.reset(); |
| // restart the utility process. |
| Start(); |
| @@ -320,20 +323,20 @@ void NetworkingPrivateProcessClient::VerifyAndEncryptDataOnWorkerThread( |
| std::string encoded_data; |
| bool verified = crypto_verify_->VerifyAndEncryptData( |
| params->properties, params->data, &encoded_data); |
| - if (verified) |
| + if (verified) { |
| BrowserThread::PostTask(BrowserThread::UI, |
| FROM_HERE, |
| base::Bind(callback, encoded_data)); |
| - else |
| + } else { |
| BrowserThread::PostTask(BrowserThread::UI, |
| FROM_HERE, |
| base::Bind(error_callback, "VerifyError", "Error")); |
| + } |
| } |
| NetworkingPrivateProcessClient::MessageCallbacks* |
| NetworkingPrivateProcessClient::AddMessageCallbacks() { |
| MessageCallbacks* message_callbacks = new MessageCallbacks(); |
| - message_callbacks->process_client = this; |
| message_callbacks->id = callbacks_map_.Add(message_callbacks); |
| return message_callbacks; |
| } |
| @@ -344,7 +347,7 @@ void NetworkingPrivateProcessClient::RemoveMessageCallbacks( |
| ShutdownIfDone(); |
| } |
| -void NetworkingPrivateProcessClient::SetupForTest( |
| +void NetworkingPrivateProcessClient::SetUpForTest( |
| const base::DictionaryValue& parameters, |
| CryptoVerify* crypto_verify_mock) { |
| crypto_verify_.reset(crypto_verify_mock); |
| @@ -360,6 +363,10 @@ void NetworkingPrivateProcessClient::SetupForTest( |
| } |
| } |
| +void NetworkingPrivateProcessClient::TearDownForTest() { |
| + callbacks_map_.Clear(); |
| + ShutdownIfDone(); |
| +} |
|
cbentzel
2013/10/22 00:56:26
Nit: needs extra newline
mef
2013/10/22 15:03:31
Done.
|
| // Message handlers |
| void NetworkingPrivateProcessClient::OnApiError( |
| MessageCallbacksID message_id, |