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

Side by Side Diff: extensions/test/extension_test_notification_observer.cc

Issue 2753513006: Remove ...LOADED_DEPRECATED and its friends (Closed)
Patch Set: Created 3 years, 8 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
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "extensions/test/extension_test_notification_observer.h" 5 #include "extensions/test/extension_test_notification_observer.h"
6 6
7 #include "content/public/browser/browser_context.h" 7 #include "content/public/browser/browser_context.h"
8 #include "content/public/browser/notification_details.h" 8 #include "content/public/browser/notification_details.h"
9 #include "content/public/browser/notification_registrar.h" 9 #include "content/public/browser/notification_registrar.h"
10 #include "content/public/browser/notification_service.h" 10 #include "content/public/browser/notification_service.h"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 } 67 }
68 68
69 //////////////////////////////////////////////////////////////////////////////// 69 ////////////////////////////////////////////////////////////////////////////////
70 // ExtensionTestNotificationObserver 70 // ExtensionTestNotificationObserver
71 71
72 ExtensionTestNotificationObserver::ExtensionTestNotificationObserver( 72 ExtensionTestNotificationObserver::ExtensionTestNotificationObserver(
73 content::BrowserContext* context) 73 content::BrowserContext* context)
74 : context_(context), 74 : context_(context),
75 extension_installs_observed_(0), 75 extension_installs_observed_(0),
76 extension_load_errors_observed_(0), 76 extension_load_errors_observed_(0),
77 crx_installers_done_observed_(0) {} 77 crx_installers_done_observed_(0),
78 registry_observer_(this) {
79 if (context_)
80 registry_observer_.Add(ExtensionRegistry::Get(context_));
81 }
78 82
79 ExtensionTestNotificationObserver::~ExtensionTestNotificationObserver() {} 83 ExtensionTestNotificationObserver::~ExtensionTestNotificationObserver() {}
80 84
81 void ExtensionTestNotificationObserver::WaitForNotification( 85 void ExtensionTestNotificationObserver::WaitForNotification(
82 int notification_type) { 86 int notification_type) {
83 // TODO(bauerb): Using a WindowedNotificationObserver like this can break 87 // TODO(bauerb): Using a WindowedNotificationObserver like this can break
84 // easily, if the notification we're waiting for is sent before this method. 88 // easily, if the notification we're waiting for is sent before this method.
85 // Change it so that the WindowedNotificationObserver is constructed earlier. 89 // Change it so that the WindowedNotificationObserver is constructed earlier.
86 content::NotificationRegistrar registrar; 90 content::NotificationRegistrar registrar;
87 registrar.Add(this, notification_type, 91 registrar.Add(this, notification_type,
88 content::NotificationService::AllSources()); 92 content::NotificationService::AllSources());
89 content::WindowedNotificationObserver( 93 content::WindowedNotificationObserver(
90 notification_type, content::NotificationService::AllSources()) 94 notification_type, content::NotificationService::AllSources())
91 .Wait(); 95 .Wait();
92 } 96 }
93 97
94 bool ExtensionTestNotificationObserver::WaitForExtensionInstallError() { 98 bool ExtensionTestNotificationObserver::WaitForExtensionInstallError() {
95 int before = extension_installs_observed_; 99 int before = extension_installs_observed_;
96 content::WindowedNotificationObserver( 100 content::WindowedNotificationObserver(
97 NOTIFICATION_EXTENSION_INSTALL_ERROR, 101 NOTIFICATION_EXTENSION_INSTALL_ERROR,
98 content::NotificationService::AllSources()) 102 content::NotificationService::AllSources())
99 .Wait(); 103 .Wait();
100 return extension_installs_observed_ == before; 104 return extension_installs_observed_ == before;
101 } 105 }
102 106
103 void ExtensionTestNotificationObserver::WaitForExtensionLoad() {
104 WaitForNotification(NOTIFICATION_EXTENSION_LOADED_DEPRECATED);
105 }
106
107 bool ExtensionTestNotificationObserver::WaitForExtensionLoadError() { 107 bool ExtensionTestNotificationObserver::WaitForExtensionLoadError() {
108 int before = extension_load_errors_observed_; 108 int before = extension_load_errors_observed_;
109 WaitForNotification(NOTIFICATION_EXTENSION_LOAD_ERROR); 109 WaitForNotification(NOTIFICATION_EXTENSION_LOAD_ERROR);
110 return extension_load_errors_observed_ != before; 110 return extension_load_errors_observed_ != before;
111 } 111 }
112 112
113 bool ExtensionTestNotificationObserver::WaitForExtensionCrash( 113 bool ExtensionTestNotificationObserver::WaitForExtensionCrash(
114 const std::string& extension_id) { 114 const std::string& extension_id) {
115 if (!GetNonTerminatedExtensions(extension_id, context_)) { 115 if (!GetNonTerminatedExtensions(extension_id, context_)) {
116 // The extension is already unloaded, presumably due to a crash. 116 // The extension is already unloaded, presumably due to a crash.
(...skipping 26 matching lines...) Expand all
143 143
144 registrar_.RemoveAll(); 144 registrar_.RemoveAll();
145 observer_.reset(); 145 observer_.reset();
146 } 146 }
147 147
148 void ExtensionTestNotificationObserver::Observe( 148 void ExtensionTestNotificationObserver::Observe(
149 int type, 149 int type,
150 const content::NotificationSource& source, 150 const content::NotificationSource& source,
151 const content::NotificationDetails& details) { 151 const content::NotificationDetails& details) {
152 switch (type) { 152 switch (type) {
153 case NOTIFICATION_EXTENSION_LOADED_DEPRECATED:
154 last_loaded_extension_id_ =
155 content::Details<const Extension>(details).ptr()->id();
156 VLOG(1) << "Got EXTENSION_LOADED notification.";
157 break;
158
159 case NOTIFICATION_CRX_INSTALLER_DONE: 153 case NOTIFICATION_CRX_INSTALLER_DONE:
160 VLOG(1) << "Got CRX_INSTALLER_DONE notification."; 154 VLOG(1) << "Got CRX_INSTALLER_DONE notification.";
161 { 155 {
162 const Extension* extension = 156 const Extension* extension =
163 content::Details<const Extension>(details).ptr(); 157 content::Details<const Extension>(details).ptr();
164 if (extension) 158 if (extension)
165 last_loaded_extension_id_ = extension->id(); 159 last_loaded_extension_id_ = extension->id();
166 else 160 else
167 last_loaded_extension_id_.clear(); 161 last_loaded_extension_id_.clear();
168 } 162 }
169 ++crx_installers_done_observed_; 163 ++crx_installers_done_observed_;
170 break; 164 break;
171 165
172 case NOTIFICATION_EXTENSION_LOAD_ERROR: 166 case NOTIFICATION_EXTENSION_LOAD_ERROR:
173 VLOG(1) << "Got EXTENSION_LOAD_ERROR notification."; 167 VLOG(1) << "Got EXTENSION_LOAD_ERROR notification.";
174 ++extension_load_errors_observed_; 168 ++extension_load_errors_observed_;
175 break; 169 break;
176 170
177 default: 171 default:
178 NOTREACHED(); 172 NOTREACHED();
179 break; 173 break;
180 } 174 }
181 } 175 }
182 176
177 void ExtensionTestNotificationObserver::OnExtensionLoaded(
178 content::BrowserContext* browser_context,
179 const Extension* extension) {
180 last_loaded_extension_id_ = extension->id();
181 VLOG(1) << "Got EXTENSION_LOADED notification.";
182 }
183
184 void ExtensionTestNotificationObserver::OnShutdown(
185 ExtensionRegistry* registry) {
186 registry_observer_.RemoveAll();
187 }
188
183 void ExtensionTestNotificationObserver::WaitForCondition( 189 void ExtensionTestNotificationObserver::WaitForCondition(
184 const ConditionCallback& condition, 190 const ConditionCallback& condition,
185 NotificationSet* notification_set) { 191 NotificationSet* notification_set) {
186 if (condition.Run()) 192 if (condition.Run())
187 return; 193 return;
188 condition_ = condition; 194 condition_ = condition;
189 195
190 scoped_refptr<content::MessageLoopRunner> runner( 196 scoped_refptr<content::MessageLoopRunner> runner(
191 new content::MessageLoopRunner); 197 new content::MessageLoopRunner);
192 quit_closure_ = runner->QuitClosure(); 198 quit_closure_ = runner->QuitClosure();
193 199
194 std::unique_ptr<base::CallbackList<void()>::Subscription> subscription; 200 std::unique_ptr<base::CallbackList<void()>::Subscription> subscription;
195 if (notification_set) { 201 if (notification_set) {
196 subscription = notification_set->callback_list().Add(base::Bind( 202 subscription = notification_set->callback_list().Add(base::Bind(
197 &ExtensionTestNotificationObserver::MaybeQuit, base::Unretained(this))); 203 &ExtensionTestNotificationObserver::MaybeQuit, base::Unretained(this)));
198 } 204 }
199 runner->Run(); 205 runner->Run();
200 206
201 condition_.Reset(); 207 condition_.Reset();
202 quit_closure_.Reset(); 208 quit_closure_.Reset();
203 } 209 }
204 210
205 void ExtensionTestNotificationObserver::MaybeQuit() { 211 void ExtensionTestNotificationObserver::MaybeQuit() {
206 if (condition_.Run()) 212 if (condition_.Run())
207 quit_closure_.Run(); 213 quit_closure_.Run();
208 } 214 }
209 215
210 } // namespace extensions 216 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698