| Index: chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
|
| diff --git a/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc b/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
|
| index 7ae76c0384b00b2cc742a7f27a5e86cfbd7087ba..69508b5c9159382e9d883c5b1925fc2ab0e99595 100644
|
| --- a/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
|
| +++ b/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
|
| @@ -8,6 +8,8 @@
|
| #include "base/files/file_path.h"
|
| #include "base/lazy_instance.h"
|
| #include "base/logging.h"
|
| +#include "base/single_thread_task_runner.h"
|
| +#include "base/thread_task_runner_handle.h"
|
| #include "chrome/browser/extensions/component_loader.h"
|
| #include "chrome/browser/extensions/extension_service.h"
|
| #include "chrome/browser/signin/signin_promo.h"
|
| @@ -86,7 +88,11 @@ void UnloadGaiaAuthExtension(BrowserContext* context) {
|
| namespace extensions {
|
|
|
| GaiaAuthExtensionLoader::GaiaAuthExtensionLoader(BrowserContext* context)
|
| - : browser_context_(context), load_count_(0), last_data_id_(0) {}
|
| + : browser_context_(context),
|
| + load_count_(0),
|
| + last_data_id_(0),
|
| + weak_ptr_factory_(this) {
|
| +}
|
|
|
| GaiaAuthExtensionLoader::~GaiaAuthExtensionLoader() {
|
| DCHECK_EQ(0, load_count_);
|
| @@ -98,6 +104,13 @@ void GaiaAuthExtensionLoader::LoadIfNeeded() {
|
| ++load_count_;
|
| }
|
|
|
| +void GaiaAuthExtensionLoader::UnloadIfNeededAsync() {
|
| + base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&GaiaAuthExtensionLoader::UnloadIfNeeded,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| +}
|
| +
|
| void GaiaAuthExtensionLoader::UnloadIfNeeded() {
|
| --load_count_;
|
| if (load_count_ == 0) {
|
|
|