Index: extensions/browser/extension_test_registry_observer.cc |
diff --git a/extensions/browser/extension_test_registry_observer.cc b/extensions/browser/extension_test_registry_observer.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..eeb6aff7f057e12d7617407828b0b3270065bc2a |
--- /dev/null |
+++ b/extensions/browser/extension_test_registry_observer.cc |
@@ -0,0 +1,65 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "extensions/browser/extension_test_registry_observer.h" |
+ |
+#include "base/run_loop.h" |
+ |
+namespace extensions { |
+ |
+ExtensionTestRegistryObserver::ExtensionTestRegistryObserver( |
+ ExtensionRegistry* registry) |
+ : waiting_for_installed_(false), |
+ received_installed_(false), |
+ runner_installed_(new content::MessageLoopRunner()), |
+ waiting_for_uninstalled_(false), |
+ received_uninstalled_(false), |
+ runner_uninstalled_(new content::MessageLoopRunner()), |
+ extension_registry_observer_(this) { |
+ extension_registry_observer_.Add(registry); |
+} |
+ |
+ExtensionTestRegistryObserver::~ExtensionTestRegistryObserver() { |
+} |
+ |
+void ExtensionTestRegistryObserver::WaitForExtensionUninstalled() { |
+ if (received_uninstalled_) |
+ return; |
+ |
+ waiting_for_uninstalled_ = true; |
+ runner_uninstalled_->Run(); |
not at google - send to devlin
2014/06/15 21:20:16
it would be nice to factor all of this shared stat
limasdf
2014/06/16 18:58:53
Done.
|
+} |
+ |
+void ExtensionTestRegistryObserver::WaitForExtensionInstalled() { |
+ if (received_installed_) |
+ return; |
+ |
+ waiting_for_installed_ = true; |
+ runner_installed_->Run(); |
+} |
+ |
+void ExtensionTestRegistryObserver::OnExtensionWillBeInstalled( |
+ content::BrowserContext* browser_context, |
+ const Extension* extension, |
+ bool is_update, |
+ bool from_ephemeral, |
+ const std::string& old_name) { |
+ received_installed_ = true; |
+ if (waiting_for_installed_) { |
+ waiting_for_installed_ = false; |
+ runner_installed_->Quit(); |
+ } |
+} |
+ |
+void ExtensionTestRegistryObserver::OnExtensionUninstalled( |
+ content::BrowserContext* browser_context, |
+ const Extension* extension) { |
+ received_uninstalled_ = true; |
+ if (waiting_for_uninstalled_) { |
+ waiting_for_uninstalled_ = false; |
+ runner_uninstalled_->Quit(); |
+ } |
+} |
+ |
+} // namespace extensions |