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

Unified Diff: chrome/browser/chromeos/arc/arc_support_host.cc

Issue 2502243002: Support multiple Observer instances for ArcSupportHost. (Closed)
Patch Set: rebase Created 4 years, 1 month 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
« no previous file with comments | « chrome/browser/chromeos/arc/arc_support_host.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/arc/arc_support_host.cc
diff --git a/chrome/browser/chromeos/arc/arc_support_host.cc b/chrome/browser/chromeos/arc/arc_support_host.cc
index 34cb7c9596784f73b0c54bc35ccce8292c16a47e..5e072addcfa811ef3ed57aa763d1905734380892 100644
--- a/chrome/browser/chromeos/arc/arc_support_host.cc
+++ b/chrome/browser/chromeos/arc/arc_support_host.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/chromeos/arc/arc_support_host.h"
#include <string>
+#include <utility>
#include "ash/common/system/chromeos/devicetype_utils.h"
#include "base/i18n/timezone.h"
@@ -147,8 +148,15 @@ ArcSupportHost::~ArcSupportHost() {
}
void ArcSupportHost::AddObserver(Observer* observer) {
- DCHECK(!observer_);
- observer_ = observer;
+ observer_list_.AddObserver(observer);
+}
+
+void ArcSupportHost::RemoveObserver(Observer* observer) {
+ observer_list_.RemoveObserver(observer);
+}
+
+bool ArcSupportHost::HasObserver(Observer* observer) {
+ return observer_list_.HasObserver(observer);
}
void ArcSupportHost::SetArcManaged(bool is_arc_managed) {
@@ -483,17 +491,14 @@ void ArcSupportHost::OnMessage(const base::DictionaryValue& message) {
return;
}
- if (!observer_) {
- LOG(ERROR) << "No observer is found.";
- return;
- }
-
if (event == kEventOnWindowClosed) {
- observer_->OnWindowClosed();
+ for (auto& observer : observer_list_)
+ observer.OnWindowClosed();
} else if (event == kEventOnAuthSucceeded) {
std::string code;
if (message.GetString(kCode, &code)) {
- observer_->OnAuthSucceeded(code);
+ for (auto& observer : observer_list_)
+ observer.OnAuthSucceeded(code);
} else {
NOTREACHED();
}
@@ -506,15 +511,19 @@ void ArcSupportHost::OnMessage(const base::DictionaryValue& message) {
&is_backup_restore_enabled) &&
message.GetBoolean(kIsLocationServiceEnabled,
&is_location_service_enabled)) {
- observer_->OnTermsAgreed(is_metrics_enabled, is_backup_restore_enabled,
+ for (auto& observer : observer_list_) {
+ observer.OnTermsAgreed(is_metrics_enabled, is_backup_restore_enabled,
is_location_service_enabled);
+ }
} else {
NOTREACHED();
}
} else if (event == kEventOnRetryClicked) {
- observer_->OnRetryClicked();
+ for (auto& observer : observer_list_)
+ observer.OnRetryClicked();
} else if (event == kEventOnSendFeedbackClicked) {
- observer_->OnSendFeedbackClicked();
+ for (auto& observer : observer_list_)
+ observer.OnSendFeedbackClicked();
} else {
LOG(ERROR) << "Unknown message: " << event;
NOTREACHED();
« no previous file with comments | « chrome/browser/chromeos/arc/arc_support_host.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698