Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(291)

Side by Side Diff: extensions/browser/test_extension_registry_observer.cc

Issue 334083002: Add a test helper class for ExtensionRegistry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Y and B comments. 2014 brazil world cup morning at 6AM korea vs russia Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "extensions/browser/test_extension_registry_observer.h"
6
7 #include "base/run_loop.h"
8 #include "extensions/browser/extension_registry.h"
9
10 namespace extensions {
11
12 class TestExtensionRegistryObserver::Waiter {
13 public:
14 Waiter() : observed_(false), runner_(NULL), extension_id_(std::string()) {}
15
16 void Wait(const std::string& id) {
17 if (observed_ && extension_id_ == id)
18 return;
19
20 extension_id_ = id;
21 runner_ = new content::MessageLoopRunner();
22 runner_->Run();
23 }
24
25 void OnObserved(const std::string& id) {
26 observed_ = true;
27 extension_id_ = id;
28
29 if (runner_) {
30 runner_->Quit();
31 runner_ = NULL;
32 }
33 }
34
35 private:
36 bool observed_;
37 scoped_refptr<content::MessageLoopRunner> runner_;
38
39 std::string extension_id_;
40
41 DISALLOW_COPY_AND_ASSIGN(Waiter);
42 };
43
44 TestExtensionRegistryObserver::TestExtensionRegistryObserver(
45 ExtensionRegistry* registry)
46 : will_be_installed_waiter_(new Waiter()),
Yoyo Zhou 2014/06/17 18:15:37 Do we need to instantiate all these if they're not
Yoyo Zhou 2014/06/17 21:48:06 Ah, I see what you mean. Right now there is a fla
limasdf 2014/06/19 18:06:28 Done.
47 uninstalled_waiter_(new Waiter()),
48 loaded_waiter_(new Waiter()),
49 unloaded_waiter_(new Waiter()),
50 extension_registry_observer_(this) {
51 extension_registry_observer_.Add(registry);
52 }
53
54 TestExtensionRegistryObserver::~TestExtensionRegistryObserver() {
55 }
56
57 void TestExtensionRegistryObserver::WaitForExtensionUninstalled(
58 const std::string& extension_id) {
59 uninstalled_waiter_->Wait(extension_id);
60 }
61
62 void TestExtensionRegistryObserver::WaitForExtensionWillBeInstalled(
63 const std::string& extension_id) {
64 will_be_installed_waiter_->Wait(extension_id);
65 }
66
67 void TestExtensionRegistryObserver::WaitForExtensionLoaded(
68 const std::string& extension_id) {
69 loaded_waiter_->Wait(extension_id);
70 }
71
72 void TestExtensionRegistryObserver::WaitForExtensionUnloaded(
73 const std::string& extension_id) {
74 unloaded_waiter_->Wait(extension_id);
75 }
76
77 void TestExtensionRegistryObserver::OnExtensionWillBeInstalled(
78 content::BrowserContext* browser_context,
79 const Extension* extension,
80 bool is_update,
81 bool from_ephemeral,
82 const std::string& old_name) {
83 will_be_installed_waiter_->OnObserved(extension->id());
84 }
85
86 void TestExtensionRegistryObserver::OnExtensionUninstalled(
87 content::BrowserContext* browser_context,
88 const Extension* extension) {
89 uninstalled_waiter_->OnObserved(extension->id());
90 }
91
92 void TestExtensionRegistryObserver::OnExtensionLoaded(
93 content::BrowserContext* browser_context,
94 const Extension* extension) {
95 loaded_waiter_->OnObserved(extension->id());
96 }
97
98 void TestExtensionRegistryObserver::OnExtensionUnloaded(
99 content::BrowserContext* browser_context,
100 const Extension* extension,
101 UnloadedExtensionInfo::Reason reason) {
102 unloaded_waiter_->OnObserved(extension->id());
103 }
104
105 } // namespace extensions
OLDNEW
« extensions/DEPS ('K') | « extensions/browser/test_extension_registry_observer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698