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) { |