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

Side by Side Diff: chrome/browser/chromeos/arc/arc_support_host.cc

Issue 2844383006: Turn ArcSupportHost from Observer model to Delegate (Closed)
Patch Set: Turn ArcSupportHost from Observer model to Delegate Created 3 years, 7 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 "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 #include <utility>
9 9
10 #include "ash/system/devicetype_utils.h" 10 #include "ash/system/devicetype_utils.h"
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/i18n/timezone.h" 12 #include "base/i18n/timezone.h"
13 #include "base/json/json_reader.h" 13 #include "base/json/json_reader.h"
14 #include "base/json/json_writer.h" 14 #include "base/json/json_writer.h"
15 #include "base/memory/ptr_util.h" 15 #include "base/memory/ptr_util.h"
16 #include "base/threading/thread_task_runner_handle.h" 16 #include "base/threading/thread_task_runner_handle.h"
17 #include "base/values.h" 17 #include "base/values.h"
18 #include "chrome/browser/browser_process.h" 18 #include "chrome/browser/browser_process.h"
19 #include "chrome/browser/chromeos/profiles/profile_helper.h" 19 #include "chrome/browser/chromeos/profiles/profile_helper.h"
20 #include "chrome/browser/extensions/extension_util.h" 20 #include "chrome/browser/extensions/extension_util.h"
21 #include "chrome/browser/profiles/profile.h" 21 #include "chrome/browser/profiles/profile.h"
22 #include "chrome/browser/ui/app_list/arc/arc_app_utils.h" 22 #include "chrome/browser/ui/app_list/arc/arc_app_utils.h"
23 #include "chrome/browser/ui/ash/multi_user/multi_user_util.h" 23 #include "chrome/browser/ui/ash/multi_user/multi_user_util.h"
24 #include "chrome/browser/ui/extensions/app_launch_params.h" 24 #include "chrome/browser/ui/extensions/app_launch_params.h"
25 #include "chrome/browser/ui/extensions/application_launch.h" 25 #include "chrome/browser/ui/extensions/application_launch.h"
26 #include "chrome/common/pref_names.h"
26 #include "chrome/grit/generated_resources.h" 27 #include "chrome/grit/generated_resources.h"
28 #include "components/prefs/pref_service.h"
27 #include "components/user_manager/known_user.h" 29 #include "components/user_manager/known_user.h"
28 #include "extensions/browser/extension_registry.h" 30 #include "extensions/browser/extension_registry.h"
29 #include "ui/base/l10n/l10n_util.h" 31 #include "ui/base/l10n/l10n_util.h"
30 #include "ui/base/webui/web_ui_util.h" 32 #include "ui/base/webui/web_ui_util.h"
31 #include "ui/display/screen.h" 33 #include "ui/display/screen.h"
32 34
33 namespace { 35 namespace {
34 constexpr char kAction[] = "action"; 36 constexpr char kAction[] = "action";
35 constexpr char kArcManaged[] = "arcManaged"; 37 constexpr char kArcManaged[] = "arcManaged";
36 constexpr char kData[] = "data"; 38 constexpr char kData[] = "data";
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 // static 157 // static
156 const char ArcSupportHost::kStorageId[] = "arc_support"; 158 const char ArcSupportHost::kStorageId[] = "arc_support";
157 159
158 ArcSupportHost::ArcSupportHost(Profile* profile) 160 ArcSupportHost::ArcSupportHost(Profile* profile)
159 : profile_(profile), 161 : profile_(profile),
160 request_open_app_callback_(base::Bind(&RequestOpenApp)) { 162 request_open_app_callback_(base::Bind(&RequestOpenApp)) {
161 DCHECK(profile_); 163 DCHECK(profile_);
162 } 164 }
163 165
164 ArcSupportHost::~ArcSupportHost() { 166 ArcSupportHost::~ArcSupportHost() {
167 // Delegates should have been reset to nullptr at this point.
168 DCHECK(!auth_delegate_);
169 DCHECK(!tos_delegate_);
170 DCHECK(!error_delegate_);
171
165 if (message_host_) 172 if (message_host_)
166 DisconnectMessageHost(); 173 DisconnectMessageHost();
167 } 174 }
168 175
169 void ArcSupportHost::AddObserver(Observer* observer) { 176 void ArcSupportHost::AddObserver(Observer* observer) {
170 observer_list_.AddObserver(observer); 177 observer_list_.AddObserver(observer);
171 } 178 }
172 179
173 void ArcSupportHost::RemoveObserver(Observer* observer) { 180 void ArcSupportHost::RemoveObserver(Observer* observer) {
174 observer_list_.RemoveObserver(observer); 181 observer_list_.RemoveObserver(observer);
175 } 182 }
176 183
177 bool ArcSupportHost::HasObserver(Observer* observer) { 184 bool ArcSupportHost::HasObserver(Observer* observer) {
178 return observer_list_.HasObserver(observer); 185 return observer_list_.HasObserver(observer);
179 } 186 }
180 187
188 void ArcSupportHost::SetAuthDelegate(AuthDelegate* delegate) {
189 // Since AuthDelegate and TermsOfServiceDelegate should not have overlapping
190 // life cycle, both delegates can't be non-null at the same time.
191 DCHECK(!(delegate && tos_delegate_));
192 auth_delegate_ = delegate;
193 }
194
195 void ArcSupportHost::SetTermsOfServiceDelegate(
196 TermsOfServiceDelegate* delegate) {
197 // Since AuthDelegate and TermsOfServiceDelegate should not have overlapping
198 // life cycle, both delegates can't be non-null at the same time.
199 DCHECK(!(delegate && auth_delegate_));
200 tos_delegate_ = delegate;
201 }
202
203 void ArcSupportHost::SetErrorDelegate(ErrorDelegate* delegate) {
204 error_delegate_ = delegate;
205 }
206
181 void ArcSupportHost::SetArcManaged(bool is_arc_managed) { 207 void ArcSupportHost::SetArcManaged(bool is_arc_managed) {
182 DCHECK(!message_host_); 208 DCHECK(!message_host_);
183 is_arc_managed_ = is_arc_managed; 209 is_arc_managed_ = is_arc_managed;
184 } 210 }
185 211
186 void ArcSupportHost::Close() { 212 void ArcSupportHost::Close() {
187 ui_page_ = UIPage::NO_PAGE; 213 ui_page_ = UIPage::NO_PAGE;
188 if (!message_host_) { 214 if (!message_host_) {
189 VLOG(2) << "ArcSupportHost::Close() is called " 215 VLOG(2) << "ArcSupportHost::Close() is called "
190 << "but message_host_ is not available."; 216 << "but message_host_ is not available.";
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 } 537 }
512 538
513 void ArcSupportHost::OnMessage(const base::DictionaryValue& message) { 539 void ArcSupportHost::OnMessage(const base::DictionaryValue& message) {
514 std::string event; 540 std::string event;
515 if (!message.GetString(kEvent, &event)) { 541 if (!message.GetString(kEvent, &event)) {
516 NOTREACHED(); 542 NOTREACHED();
517 return; 543 return;
518 } 544 }
519 545
520 if (event == kEventOnWindowClosed) { 546 if (event == kEventOnWindowClosed) {
521 for (auto& observer : observer_list_) 547 // If ToS negotiation is ongoing, call the specific function.
522 observer.OnWindowClosed(); 548 if (tos_delegate_) {
549 tos_delegate_->OnTermsRejected();
550 } else {
551 DCHECK(error_delegate_);
khmel 2017/05/26 19:43:46 What if OptIn is closed during the progress. In th
victorhsieh0 2017/05/27 00:07:07 Done. Renamed the function as discussed offline.
552 error_delegate_->OnOptInAborted();
553 }
523 } else if (event == kEventOnAuthSucceeded) { 554 } else if (event == kEventOnAuthSucceeded) {
555 DCHECK(auth_delegate_);
524 std::string code; 556 std::string code;
525 if (message.GetString(kCode, &code)) { 557 if (message.GetString(kCode, &code)) {
526 for (auto& observer : observer_list_) 558 auth_delegate_->OnAuthSucceeded(code);
527 observer.OnAuthSucceeded(code);
528 } else { 559 } else {
529 NOTREACHED(); 560 NOTREACHED();
530 } 561 }
531 } else if (event == kEventOnAuthFailed) { 562 } else if (event == kEventOnAuthFailed) {
532 for (auto& observer : observer_list_) 563 DCHECK(auth_delegate_);
533 observer.OnAuthFailed(); 564 auth_delegate_->OnAuthFailed();
534 } else if (event == kEventOnAgreed) { 565 } else if (event == kEventOnAgreed) {
566 DCHECK(tos_delegate_);
535 bool is_metrics_enabled; 567 bool is_metrics_enabled;
536 bool is_backup_restore_enabled; 568 bool is_backup_restore_enabled;
537 bool is_location_service_enabled; 569 bool is_location_service_enabled;
538 if (message.GetBoolean(kIsMetricsEnabled, &is_metrics_enabled) && 570 if (message.GetBoolean(kIsMetricsEnabled, &is_metrics_enabled) &&
539 message.GetBoolean(kIsBackupRestoreEnabled, 571 message.GetBoolean(kIsBackupRestoreEnabled,
540 &is_backup_restore_enabled) && 572 &is_backup_restore_enabled) &&
541 message.GetBoolean(kIsLocationServiceEnabled, 573 message.GetBoolean(kIsLocationServiceEnabled,
542 &is_location_service_enabled)) { 574 &is_location_service_enabled)) {
543 for (auto& observer : observer_list_) { 575 tos_delegate_->OnTermsAgreed(is_metrics_enabled,
544 observer.OnTermsAgreed(is_metrics_enabled, is_backup_restore_enabled, 576 is_backup_restore_enabled,
545 is_location_service_enabled); 577 is_location_service_enabled);
546 }
547 } else { 578 } else {
548 NOTREACHED(); 579 NOTREACHED();
549 } 580 }
550 } else if (event == kEventOnRetryClicked) { 581 } else if (event == kEventOnRetryClicked) {
551 for (auto& observer : observer_list_) 582 // If ToS negotiation or manual authentication is ongoing, call the
552 observer.OnRetryClicked(); 583 // corresponding delegate. Otherwise, call the general retry function.
584 if (tos_delegate_) {
585 tos_delegate_->OnTermsRetryClicked();
586 } else if (auth_delegate_) {
587 auth_delegate_->OnAuthRetryClicked();
588 } else {
589 DCHECK(error_delegate_);
590 error_delegate_->OnRetryClicked();
591 }
553 } else if (event == kEventOnSendFeedbackClicked) { 592 } else if (event == kEventOnSendFeedbackClicked) {
554 for (auto& observer : observer_list_) 593 DCHECK(error_delegate_);
555 observer.OnSendFeedbackClicked(); 594 error_delegate_->OnSendFeedbackClicked();
556 } else { 595 } else {
557 LOG(ERROR) << "Unknown message: " << event; 596 LOG(ERROR) << "Unknown message: " << event;
558 NOTREACHED(); 597 NOTREACHED();
559 } 598 }
560 } 599 }
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/arc/arc_support_host.h ('k') | chrome/browser/chromeos/arc/arc_support_host_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698