Commit 93081904 authored by Istiaque Ahmed's avatar Istiaque Ahmed Committed by Commit Bot

Use TestExtensionRegistryObserver in two test files.

These tests extend ExtensionRegistryObserver to wait for extension
load/unload etc. TestExtensionRegistryObserver already provides
this functionality.

Bug: 808136
Test: None
Change-Id: I195f206163f54b7547079b10c48e677a86eaf6db
Reviewed-on: https://chromium-review.googlesource.com/897468Reviewed-by: default avatarDevlin <rdevlin.cronin@chromium.org>
Reviewed-by: default avatarMark Pearson <mpearson@chromium.org>
Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#533967}
parent 203b4936
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
#include "base/macros.h" #include "base/macros.h"
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "base/path_service.h" #include "base/path_service.h"
#include "base/run_loop.h"
#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_service_test_base.h" #include "chrome/browser/extensions/extension_service_test_base.h"
#include "chrome/browser/extensions/extension_util.h" #include "chrome/browser/extensions/extension_util.h"
...@@ -21,50 +20,14 @@ ...@@ -21,50 +20,14 @@
#include "components/omnibox/browser/mock_autocomplete_provider_client.h" #include "components/omnibox/browser/mock_autocomplete_provider_client.h"
#include "components/search_engines/template_url_service.h" #include "components/search_engines/template_url_service.h"
#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_registry_observer.h"
#include "extensions/browser/extension_util.h" #include "extensions/browser/extension_util.h"
#include "extensions/browser/test_extension_registry_observer.h"
#include "extensions/common/extension.h" #include "extensions/common/extension.h"
namespace extensions { namespace extensions {
namespace { namespace {
class ScopedExtensionLoadObserver : public ExtensionRegistryObserver {
public:
ScopedExtensionLoadObserver(ExtensionRegistry* registry,
const base::Closure& quit_closure);
~ScopedExtensionLoadObserver() override;
private:
void OnExtensionInstalled(content::BrowserContext* browser_context,
const Extension* extension,
bool is_update) override;
ExtensionRegistry* registry_;
base::Closure quit_closure_;
DISALLOW_COPY_AND_ASSIGN(ScopedExtensionLoadObserver);
};
ScopedExtensionLoadObserver::ScopedExtensionLoadObserver(
ExtensionRegistry* registry,
const base::Closure& quit_closure)
: registry_(registry),
quit_closure_(quit_closure) {
registry_->AddObserver(this);
}
ScopedExtensionLoadObserver::~ScopedExtensionLoadObserver() {
registry_->RemoveObserver(this);
}
void ScopedExtensionLoadObserver::OnExtensionInstalled(
content::BrowserContext* browser_context,
const Extension* extension,
bool is_update) {
quit_closure_.Run();
}
class KeywordExtensionsDelegateImplTest : public ExtensionServiceTestBase { class KeywordExtensionsDelegateImplTest : public ExtensionServiceTestBase {
public: public:
KeywordExtensionsDelegateImplTest() {} KeywordExtensionsDelegateImplTest() {}
...@@ -98,15 +61,11 @@ void KeywordExtensionsDelegateImplTest::RunTest(bool incognito) { ...@@ -98,15 +61,11 @@ void KeywordExtensionsDelegateImplTest::RunTest(bool incognito) {
ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &path)); ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &path));
path = path.AppendASCII("extensions").AppendASCII("good_unpacked"); path = path.AppendASCII("extensions").AppendASCII("good_unpacked");
base::RunLoop run_loop; TestExtensionRegistryObserver load_observer(registry());
ScopedExtensionLoadObserver load_observer(registry(),
run_loop.QuitClosure());
scoped_refptr<UnpackedInstaller> installer( scoped_refptr<UnpackedInstaller> installer(
UnpackedInstaller::Create(service())); UnpackedInstaller::Create(service()));
installer->Load(path); installer->Load(path);
EXPECT_TRUE(load_observer.WaitForExtensionInstalled());
run_loop.Run();
} }
ASSERT_EQ(1U, registry()->enabled_extensions().size()); ASSERT_EQ(1U, registry()->enabled_extensions().size());
...@@ -123,13 +82,9 @@ void KeywordExtensionsDelegateImplTest::RunTest(bool incognito) { ...@@ -123,13 +82,9 @@ void KeywordExtensionsDelegateImplTest::RunTest(bool incognito) {
// Enable the extension in incognito mode, which requires a reload. // Enable the extension in incognito mode, which requires a reload.
{ {
base::RunLoop run_loop; TestExtensionRegistryObserver observer(registry());
ScopedExtensionLoadObserver load_observer(registry(),
run_loop.QuitClosure());
util::SetIsIncognitoEnabled(extension->id(), profile(), true); util::SetIsIncognitoEnabled(extension->id(), profile(), true);
EXPECT_TRUE(observer.WaitForExtensionInstalled());
run_loop.Run();
} }
ASSERT_EQ(1U, registry()->enabled_extensions().size()); ASSERT_EQ(1U, registry()->enabled_extensions().size());
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#include "extensions/browser/test_extension_registry_observer.h" #include "extensions/browser/test_extension_registry_observer.h"
#include <memory>
#include "base/macros.h" #include "base/macros.h"
#include "base/run_loop.h" #include "base/run_loop.h"
#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_registry.h"
...@@ -43,11 +45,12 @@ TestExtensionRegistryObserver::TestExtensionRegistryObserver( ...@@ -43,11 +45,12 @@ TestExtensionRegistryObserver::TestExtensionRegistryObserver(
TestExtensionRegistryObserver::TestExtensionRegistryObserver( TestExtensionRegistryObserver::TestExtensionRegistryObserver(
ExtensionRegistry* registry, ExtensionRegistry* registry,
const std::string& extension_id) const std::string& extension_id)
: will_be_installed_waiter_(new Waiter()), : will_be_installed_waiter_(std::make_unique<Waiter>()),
uninstalled_waiter_(new Waiter()), installed_waiter_(std::make_unique<Waiter>()),
loaded_waiter_(new Waiter()), uninstalled_waiter_(std::make_unique<Waiter>()),
ready_waiter_(new Waiter()), loaded_waiter_(std::make_unique<Waiter>()),
unloaded_waiter_(new Waiter()), ready_waiter_(std::make_unique<Waiter>()),
unloaded_waiter_(std::make_unique<Waiter>()),
extension_registry_observer_(this), extension_registry_observer_(this),
extension_id_(extension_id) { extension_id_(extension_id) {
extension_registry_observer_.Add(registry); extension_registry_observer_.Add(registry);
...@@ -65,6 +68,10 @@ TestExtensionRegistryObserver::WaitForExtensionWillBeInstalled() { ...@@ -65,6 +68,10 @@ TestExtensionRegistryObserver::WaitForExtensionWillBeInstalled() {
return Wait(&will_be_installed_waiter_); return Wait(&will_be_installed_waiter_);
} }
const Extension* TestExtensionRegistryObserver::WaitForExtensionInstalled() {
return Wait(&installed_waiter_);
}
const Extension* TestExtensionRegistryObserver::WaitForExtensionLoaded() { const Extension* TestExtensionRegistryObserver::WaitForExtensionLoaded() {
return Wait(&loaded_waiter_); return Wait(&loaded_waiter_);
} }
...@@ -86,6 +93,14 @@ void TestExtensionRegistryObserver::OnExtensionWillBeInstalled( ...@@ -86,6 +93,14 @@ void TestExtensionRegistryObserver::OnExtensionWillBeInstalled(
will_be_installed_waiter_->OnObserved(extension); will_be_installed_waiter_->OnObserved(extension);
} }
void TestExtensionRegistryObserver::OnExtensionInstalled(
content::BrowserContext* browser_context,
const Extension* extension,
bool is_update) {
if (extension_id_.empty() || extension->id() == extension_id_)
installed_waiter_->OnObserved(extension);
}
void TestExtensionRegistryObserver::OnExtensionUninstalled( void TestExtensionRegistryObserver::OnExtensionUninstalled(
content::BrowserContext* browser_context, content::BrowserContext* browser_context,
const Extension* extension, const Extension* extension,
...@@ -123,7 +138,7 @@ const Extension* TestExtensionRegistryObserver::Wait( ...@@ -123,7 +138,7 @@ const Extension* TestExtensionRegistryObserver::Wait(
// Reset the waiter for future uses. // Reset the waiter for future uses.
// We could have a Waiter::Reset method, but it would reset every field in the // We could have a Waiter::Reset method, but it would reset every field in the
// class, so let's just reset the pointer. // class, so let's just reset the pointer.
waiter->reset(new Waiter()); *waiter = std::make_unique<Waiter>();
return extension; return extension;
} }
......
...@@ -28,6 +28,7 @@ class TestExtensionRegistryObserver : public ExtensionRegistryObserver { ...@@ -28,6 +28,7 @@ class TestExtensionRegistryObserver : public ExtensionRegistryObserver {
// Waits for the notification, and returns the extension that caused it. // Waits for the notification, and returns the extension that caused it.
const Extension* WaitForExtensionWillBeInstalled(); const Extension* WaitForExtensionWillBeInstalled();
const Extension* WaitForExtensionInstalled();
const Extension* WaitForExtensionUninstalled(); const Extension* WaitForExtensionUninstalled();
const Extension* WaitForExtensionLoaded(); const Extension* WaitForExtensionLoaded();
const Extension* WaitForExtensionReady(); const Extension* WaitForExtensionReady();
...@@ -41,6 +42,9 @@ class TestExtensionRegistryObserver : public ExtensionRegistryObserver { ...@@ -41,6 +42,9 @@ class TestExtensionRegistryObserver : public ExtensionRegistryObserver {
const Extension* extension, const Extension* extension,
bool is_update, bool is_update,
const std::string& old_name) override; const std::string& old_name) override;
void OnExtensionInstalled(content::BrowserContext* browser_context,
const Extension* extension,
bool is_update) override;
void OnExtensionUninstalled(content::BrowserContext* browser_context, void OnExtensionUninstalled(content::BrowserContext* browser_context,
const Extension* extension, const Extension* extension,
extensions::UninstallReason reason) override; extensions::UninstallReason reason) override;
...@@ -55,6 +59,7 @@ class TestExtensionRegistryObserver : public ExtensionRegistryObserver { ...@@ -55,6 +59,7 @@ class TestExtensionRegistryObserver : public ExtensionRegistryObserver {
const Extension* Wait(std::unique_ptr<Waiter>* waiter); const Extension* Wait(std::unique_ptr<Waiter>* waiter);
std::unique_ptr<Waiter> will_be_installed_waiter_; std::unique_ptr<Waiter> will_be_installed_waiter_;
std::unique_ptr<Waiter> installed_waiter_;
std::unique_ptr<Waiter> uninstalled_waiter_; std::unique_ptr<Waiter> uninstalled_waiter_;
std::unique_ptr<Waiter> loaded_waiter_; std::unique_ptr<Waiter> loaded_waiter_;
std::unique_ptr<Waiter> ready_waiter_; std::unique_ptr<Waiter> ready_waiter_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment