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

Unified Diff: chrome/browser/component_updater/pnacl/pnacl_updater_observer.cc

Issue 18006003: Consistently use notifications from component updater w/ on-demand PNaCl. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more cleanup Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/component_updater/pnacl/pnacl_updater_observer.cc
diff --git a/chrome/browser/component_updater/pnacl/pnacl_updater_observer.cc b/chrome/browser/component_updater/pnacl/pnacl_updater_observer.cc
index 066867aff154ee4c924e004f8c9d3bfc7a9bf04c..6041b5d238dc7aba9e92a9d59cf26f24c89d1646 100644
--- a/chrome/browser/component_updater/pnacl/pnacl_updater_observer.cc
+++ b/chrome/browser/component_updater/pnacl/pnacl_updater_observer.cc
@@ -4,28 +4,46 @@
#include "chrome/browser/component_updater/pnacl/pnacl_updater_observer.h"
-#include "base/logging.h"
-#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/component_updater/pnacl/pnacl_component_installer.h"
-#include "content/public/browser/notification_service.h"
+#include "content/public/browser/browser_thread.h"
-PnaclUpdaterObserver::PnaclUpdaterObserver(
- PnaclComponentInstaller* installer) : pnacl_installer_(installer) {
- registrar_.Add(this,
- chrome::NOTIFICATION_COMPONENT_UPDATER_SLEEPING,
- content::NotificationService::AllSources());
+using content::BrowserThread;
+
+PnaclUpdaterObserver::PnaclUpdaterObserver(PnaclComponentInstaller* pci)
+ : must_observe_(false), pnacl_installer_(pci) {}
+
+PnaclUpdaterObserver::~PnaclUpdaterObserver() {}
+
+void PnaclUpdaterObserver::EnsureObserving() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ must_observe_ = true;
+}
+
+void PnaclUpdaterObserver::StopObserving() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ must_observe_ = false;
}
-PnaclUpdaterObserver::~PnaclUpdaterObserver() { }
-
-void PnaclUpdaterObserver::Observe(
- int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- if (type == chrome::NOTIFICATION_COMPONENT_UPDATER_SLEEPING) {
- // If the component updater sleeps before a NotifyInstallSuccess,
- // then requests for installs were likely skipped, or an error occurred.
- pnacl_installer_->NotifyInstallError();
- return;
+void PnaclUpdaterObserver::OnEvent(Events event, int extra) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ if (must_observe_) {
+ switch (event) {
+ default:
+ break;
+ case COMPONENT_UPDATE_READY:
+ // If the component updater says there is an UPDATE_READY w/ source
+ // being the PNaCl ID, then installation is handed off to the PNaCl
+ // installer and we can stop observing. The installer will be the one
+ // to run the callback w/ success or failure.
+ must_observe_ = false;
+ break;
+ case COMPONENT_UPDATER_SLEEPING:
+ // If the component updater sleeps before an UPDATE_READY for this
+ // component, then requests for installs were likely skipped,
+ // an error occurred, or there was no new update.
+ must_observe_ = false;
Sorin Jianu 2013/08/05 19:24:58 These could be good events to fire: skipping an in
jvoung (off chromium) 2013/08/05 20:36:03 That would be more direct of a signal, but we shou
+ pnacl_installer_->NotifyInstallError();
+ break;
+ }
}
}

Powered by Google App Engine
This is Rietveld 408576698