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

Side by Side 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/chromeos/arc/arc_support_host.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "chrome/browser/chromeos/arc/arc_support_host.h" 5 #include "chrome/browser/chromeos/arc/arc_support_host.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility>
8 9
9 #include "ash/common/system/chromeos/devicetype_utils.h" 10 #include "ash/common/system/chromeos/devicetype_utils.h"
10 #include "base/i18n/timezone.h" 11 #include "base/i18n/timezone.h"
11 #include "base/json/json_reader.h" 12 #include "base/json/json_reader.h"
12 #include "base/json/json_writer.h" 13 #include "base/json/json_writer.h"
13 #include "base/threading/thread_task_runner_handle.h" 14 #include "base/threading/thread_task_runner_handle.h"
14 #include "base/values.h" 15 #include "base/values.h"
15 #include "chrome/browser/browser_process.h" 16 #include "chrome/browser/browser_process.h"
16 #include "chrome/browser/chromeos/profiles/profile_helper.h" 17 #include "chrome/browser/chromeos/profiles/profile_helper.h"
17 #include "chrome/browser/extensions/extension_util.h" 18 #include "chrome/browser/extensions/extension_util.h"
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 const char ArcSupportHost::kStorageId[] = "arc_support"; 141 const char ArcSupportHost::kStorageId[] = "arc_support";
141 142
142 ArcSupportHost::ArcSupportHost(Profile* profile) : profile_(profile) {} 143 ArcSupportHost::ArcSupportHost(Profile* profile) : profile_(profile) {}
143 144
144 ArcSupportHost::~ArcSupportHost() { 145 ArcSupportHost::~ArcSupportHost() {
145 if (message_host_) 146 if (message_host_)
146 DisconnectMessageHost(); 147 DisconnectMessageHost();
147 } 148 }
148 149
149 void ArcSupportHost::AddObserver(Observer* observer) { 150 void ArcSupportHost::AddObserver(Observer* observer) {
150 DCHECK(!observer_); 151 observer_list_.AddObserver(observer);
151 observer_ = observer; 152 }
153
154 void ArcSupportHost::RemoveObserver(Observer* observer) {
155 observer_list_.RemoveObserver(observer);
156 }
157
158 bool ArcSupportHost::HasObserver(Observer* observer) {
159 return observer_list_.HasObserver(observer);
152 } 160 }
153 161
154 void ArcSupportHost::SetArcManaged(bool is_arc_managed) { 162 void ArcSupportHost::SetArcManaged(bool is_arc_managed) {
155 DCHECK(!message_host_); 163 DCHECK(!message_host_);
156 is_arc_managed_ = is_arc_managed; 164 is_arc_managed_ = is_arc_managed;
157 } 165 }
158 166
159 void ArcSupportHost::Close() { 167 void ArcSupportHost::Close() {
160 ui_page_ = UIPage::NO_PAGE; 168 ui_page_ = UIPage::NO_PAGE;
161 if (!message_host_) { 169 if (!message_host_) {
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 message_host_->SendMessage(message); 484 message_host_->SendMessage(message);
477 } 485 }
478 486
479 void ArcSupportHost::OnMessage(const base::DictionaryValue& message) { 487 void ArcSupportHost::OnMessage(const base::DictionaryValue& message) {
480 std::string event; 488 std::string event;
481 if (!message.GetString(kEvent, &event)) { 489 if (!message.GetString(kEvent, &event)) {
482 NOTREACHED(); 490 NOTREACHED();
483 return; 491 return;
484 } 492 }
485 493
486 if (!observer_) {
487 LOG(ERROR) << "No observer is found.";
488 return;
489 }
490
491 if (event == kEventOnWindowClosed) { 494 if (event == kEventOnWindowClosed) {
492 observer_->OnWindowClosed(); 495 for (auto& observer : observer_list_)
496 observer.OnWindowClosed();
493 } else if (event == kEventOnAuthSucceeded) { 497 } else if (event == kEventOnAuthSucceeded) {
494 std::string code; 498 std::string code;
495 if (message.GetString(kCode, &code)) { 499 if (message.GetString(kCode, &code)) {
496 observer_->OnAuthSucceeded(code); 500 for (auto& observer : observer_list_)
501 observer.OnAuthSucceeded(code);
497 } else { 502 } else {
498 NOTREACHED(); 503 NOTREACHED();
499 } 504 }
500 } else if (event == kEventOnAgreed) { 505 } else if (event == kEventOnAgreed) {
501 bool is_metrics_enabled; 506 bool is_metrics_enabled;
502 bool is_backup_restore_enabled; 507 bool is_backup_restore_enabled;
503 bool is_location_service_enabled; 508 bool is_location_service_enabled;
504 if (message.GetBoolean(kIsMetricsEnabled, &is_metrics_enabled) && 509 if (message.GetBoolean(kIsMetricsEnabled, &is_metrics_enabled) &&
505 message.GetBoolean(kIsBackupRestoreEnabled, 510 message.GetBoolean(kIsBackupRestoreEnabled,
506 &is_backup_restore_enabled) && 511 &is_backup_restore_enabled) &&
507 message.GetBoolean(kIsLocationServiceEnabled, 512 message.GetBoolean(kIsLocationServiceEnabled,
508 &is_location_service_enabled)) { 513 &is_location_service_enabled)) {
509 observer_->OnTermsAgreed(is_metrics_enabled, is_backup_restore_enabled, 514 for (auto& observer : observer_list_) {
515 observer.OnTermsAgreed(is_metrics_enabled, is_backup_restore_enabled,
510 is_location_service_enabled); 516 is_location_service_enabled);
517 }
511 } else { 518 } else {
512 NOTREACHED(); 519 NOTREACHED();
513 } 520 }
514 } else if (event == kEventOnRetryClicked) { 521 } else if (event == kEventOnRetryClicked) {
515 observer_->OnRetryClicked(); 522 for (auto& observer : observer_list_)
523 observer.OnRetryClicked();
516 } else if (event == kEventOnSendFeedbackClicked) { 524 } else if (event == kEventOnSendFeedbackClicked) {
517 observer_->OnSendFeedbackClicked(); 525 for (auto& observer : observer_list_)
526 observer.OnSendFeedbackClicked();
518 } else { 527 } else {
519 LOG(ERROR) << "Unknown message: " << event; 528 LOG(ERROR) << "Unknown message: " << event;
520 NOTREACHED(); 529 NOTREACHED();
521 } 530 }
522 } 531 }
OLDNEW
« 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