| Index: chrome/browser/extensions/api/image_writer_private/operation.cc
|
| diff --git a/chrome/browser/extensions/api/image_writer_private/operation.cc b/chrome/browser/extensions/api/image_writer_private/operation.cc
|
| index b12f1d41041f9872605a290f7e2f9dbc046a6baf..6ffd826f2fa1a6ab8745676425c5a86320416ebf 100644
|
| --- a/chrome/browser/extensions/api/image_writer_private/operation.cc
|
| +++ b/chrome/browser/extensions/api/image_writer_private/operation.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "base/file_util.h"
|
| #include "base/files/file_enumerator.h"
|
| +#include "base/lazy_instance.h"
|
| #include "base/threading/worker_pool.h"
|
| #include "chrome/browser/extensions/api/image_writer_private/error_messages.h"
|
| #include "chrome/browser/extensions/api/image_writer_private/operation_manager.h"
|
| @@ -24,6 +25,11 @@ const int kMD5BufferSize = 1024;
|
| const char kChromeOSTempRoot[] = "/var/tmp";
|
| #endif
|
|
|
| +#if !defined(OS_CHROMEOS)
|
| +static base::LazyInstance<scoped_refptr<ImageWriterUtilityClient> >
|
| + g_utility_client = LAZY_INSTANCE_INITIALIZER;
|
| +#endif
|
| +
|
| Operation::Operation(base::WeakPtr<OperationManager> manager,
|
| const ExtensionId& extension_id,
|
| const std::string& device_path)
|
| @@ -61,11 +67,10 @@ image_writer_api::Stage Operation::GetStage() {
|
| }
|
|
|
| #if !defined(OS_CHROMEOS)
|
| +// static
|
| void Operation::SetUtilityClientForTesting(
|
| scoped_refptr<ImageWriterUtilityClient> client) {
|
| - image_writer_client_ = client;
|
| - AddCleanUpFunction(
|
| - base::Bind(&ImageWriterUtilityClient::Shutdown, image_writer_client_));
|
| + g_utility_client.Get() = client;
|
| }
|
| #endif
|
|
|
| @@ -244,6 +249,10 @@ void Operation::CompleteAndContinue(const base::Closure& continuation) {
|
| #if !defined(OS_CHROMEOS)
|
| void Operation::StartUtilityClient() {
|
| DCHECK_CURRENTLY_ON(BrowserThread::FILE);
|
| + if (g_utility_client.Get()) {
|
| + image_writer_client_ = g_utility_client.Get();
|
| + return;
|
| + }
|
| if (!image_writer_client_) {
|
| image_writer_client_ = new ImageWriterUtilityClient();
|
| AddCleanUpFunction(base::Bind(&Operation::StopUtilityClient, this));
|
|
|