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, |