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

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

Issue 2844383006: Turn ArcSupportHost from Observer model to Delegate (Closed)
Patch Set: addressed comments 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/ash/multi_user/multi_user_util.h" 22 #include "chrome/browser/ui/ash/multi_user/multi_user_util.h"
23 #include "chrome/browser/ui/extensions/app_launch_params.h" 23 #include "chrome/browser/ui/extensions/app_launch_params.h"
24 #include "chrome/browser/ui/extensions/application_launch.h" 24 #include "chrome/browser/ui/extensions/application_launch.h"
25 #include "chrome/common/pref_names.h"
25 #include "chrome/grit/generated_resources.h" 26 #include "chrome/grit/generated_resources.h"
27 #include "components/prefs/pref_service.h"
26 #include "components/user_manager/known_user.h" 28 #include "components/user_manager/known_user.h"
27 #include "extensions/browser/extension_registry.h" 29 #include "extensions/browser/extension_registry.h"
28 #include "ui/base/l10n/l10n_util.h" 30 #include "ui/base/l10n/l10n_util.h"
29 #include "ui/base/webui/web_ui_util.h" 31 #include "ui/base/webui/web_ui_util.h"
30 #include "ui/display/screen.h" 32 #include "ui/display/screen.h"
31 33
32 namespace { 34 namespace {
33 constexpr char kAction[] = "action"; 35 constexpr char kAction[] = "action";
34 constexpr char kArcManaged[] = "arcManaged"; 36 constexpr char kArcManaged[] = "arcManaged";
35 constexpr char kData[] = "data"; 37 constexpr char kData[] = "data";
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 // static 160 // static
159 const char ArcSupportHost::kStorageId[] = "arc_support"; 161 const char ArcSupportHost::kStorageId[] = "arc_support";
160 162
161 ArcSupportHost::ArcSupportHost(Profile* profile) 163 ArcSupportHost::ArcSupportHost(Profile* profile)
162 : profile_(profile), 164 : profile_(profile),
163 request_open_app_callback_(base::Bind(&RequestOpenApp)) { 165 request_open_app_callback_(base::Bind(&RequestOpenApp)) {
164 DCHECK(profile_); 166 DCHECK(profile_);
165 } 167 }
166 168
167 ArcSupportHost::~ArcSupportHost() { 169 ArcSupportHost::~ArcSupportHost() {
170 // Delegates should have been reset to nullptr at this point.
171 DCHECK(!auth_delegate_);
172 DCHECK(!tos_delegate_);
173 DCHECK(!error_delegate_);
174
168 if (message_host_) 175 if (message_host_)
169 DisconnectMessageHost(); 176 DisconnectMessageHost();
170 } 177 }
171 178
172 void ArcSupportHost::AddObserver(Observer* observer) { 179 void ArcSupportHost::AddObserver(Observer* observer) {
173 observer_list_.AddObserver(observer); 180 observer_list_.AddObserver(observer);
174 } 181 }
175 182
176 void ArcSupportHost::RemoveObserver(Observer* observer) { 183 void ArcSupportHost::RemoveObserver(Observer* observer) {
177 observer_list_.RemoveObserver(observer); 184 observer_list_.RemoveObserver(observer);
178 } 185 }
179 186
180 bool ArcSupportHost::HasObserver(Observer* observer) { 187 bool ArcSupportHost::HasObserver(Observer* observer) {
181 return observer_list_.HasObserver(observer); 188 return observer_list_.HasObserver(observer);
182 } 189 }
183 190
191 void ArcSupportHost::SetAuthDelegate(AuthDelegate* delegate) {
192 auth_delegate_ = delegate;
hidehiko 2017/05/15 09:05:44 Maybe. if (delegate) DCHECK(!tos_delegate_); (
victorhsieh0 2017/05/15 22:31:53 Done.
193 }
194
195 void ArcSupportHost::SetTermsOfServiceDelegate(
196 TermsOfServiceDelegate* delegate) {
197 tos_delegate_ = delegate;
hidehiko 2017/05/15 09:05:44 Ditto.
victorhsieh0 2017/05/15 22:31:53 Done.
198 }
199
200 void ArcSupportHost::SetErrorDelegate(ErrorDelegate* delegate) {
201 error_delegate_ = delegate;
202 }
203
184 void ArcSupportHost::SetArcManaged(bool is_arc_managed) { 204 void ArcSupportHost::SetArcManaged(bool is_arc_managed) {
185 DCHECK(!message_host_); 205 DCHECK(!message_host_);
186 is_arc_managed_ = is_arc_managed; 206 is_arc_managed_ = is_arc_managed;
187 } 207 }
188 208
189 void ArcSupportHost::Close() { 209 void ArcSupportHost::Close() {
190 ui_page_ = UIPage::NO_PAGE; 210 ui_page_ = UIPage::NO_PAGE;
191 if (!message_host_) { 211 if (!message_host_) {
192 VLOG(2) << "ArcSupportHost::Close() is called " 212 VLOG(2) << "ArcSupportHost::Close() is called "
193 << "but message_host_ is not available."; 213 << "but message_host_ is not available.";
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 } 534 }
515 535
516 void ArcSupportHost::OnMessage(const base::DictionaryValue& message) { 536 void ArcSupportHost::OnMessage(const base::DictionaryValue& message) {
517 std::string event; 537 std::string event;
518 if (!message.GetString(kEvent, &event)) { 538 if (!message.GetString(kEvent, &event)) {
519 NOTREACHED(); 539 NOTREACHED();
520 return; 540 return;
521 } 541 }
522 542
523 if (event == kEventOnWindowClosed) { 543 if (event == kEventOnWindowClosed) {
524 for (auto& observer : observer_list_) 544 // If ToS negotiation is ongoing, call the specific function.
525 observer.OnWindowClosed(); 545 if (tos_delegate_) {
546 tos_delegate_->OnTermsRejected();
547 } else {
548 DCHECK(error_delegate_);
549 error_delegate_->OnOptInAborted();
550 }
526 } else if (event == kEventOnAuthSucceeded) { 551 } else if (event == kEventOnAuthSucceeded) {
527 std::string code; 552 std::string code;
528 if (message.GetString(kCode, &code)) { 553 if (message.GetString(kCode, &code)) {
529 for (auto& observer : observer_list_) 554 DCHECK(auth_delegate_);
hidehiko 2017/05/15 09:05:44 Could you move DCHECK to L552? On anytime this eve
victorhsieh0 2017/05/15 22:31:53 Done.
530 observer.OnAuthSucceeded(code); 555 auth_delegate_->OnAuthSucceeded(code);
531 } else { 556 } else {
532 NOTREACHED(); 557 NOTREACHED();
533 } 558 }
534 } else if (event == kEventOnAuthFailed) { 559 } else if (event == kEventOnAuthFailed) {
535 for (auto& observer : observer_list_) 560 DCHECK(auth_delegate_);
536 observer.OnAuthFailed(); 561 auth_delegate_->OnAuthFailed();
537 } else if (event == kEventOnAgreed) { 562 } else if (event == kEventOnAgreed) {
538 bool is_metrics_enabled; 563 bool is_metrics_enabled;
539 bool is_backup_restore_enabled; 564 bool is_backup_restore_enabled;
540 bool is_location_service_enabled; 565 bool is_location_service_enabled;
541 if (message.GetBoolean(kIsMetricsEnabled, &is_metrics_enabled) && 566 if (message.GetBoolean(kIsMetricsEnabled, &is_metrics_enabled) &&
542 message.GetBoolean(kIsBackupRestoreEnabled, 567 message.GetBoolean(kIsBackupRestoreEnabled,
543 &is_backup_restore_enabled) && 568 &is_backup_restore_enabled) &&
544 message.GetBoolean(kIsLocationServiceEnabled, 569 message.GetBoolean(kIsLocationServiceEnabled,
545 &is_location_service_enabled)) { 570 &is_location_service_enabled)) {
546 for (auto& observer : observer_list_) { 571 DCHECK(tos_delegate_);
hidehiko 2017/05/15 09:05:44 Ditto. Move to L563?
victorhsieh0 2017/05/15 22:31:53 Done.
547 observer.OnTermsAgreed(is_metrics_enabled, is_backup_restore_enabled, 572 tos_delegate_->OnTermsAgreed(is_metrics_enabled,
548 is_location_service_enabled); 573 is_backup_restore_enabled,
549 } 574 is_location_service_enabled);
550 } else { 575 } else {
551 NOTREACHED(); 576 NOTREACHED();
552 } 577 }
553 } else if (event == kEventOnRetryClicked) { 578 } else if (event == kEventOnRetryClicked) {
554 for (auto& observer : observer_list_) 579 // If ToS negotiation or manual authentication is ongoing, call the
555 observer.OnRetryClicked(); 580 // corresponding delegate. Otherwise, call the general retry function.
581 if (tos_delegate_) {
582 tos_delegate_->OnTermsRetryClicked();
583 } else if (auth_delegate_) {
584 auth_delegate_->OnAuthRetryClicked();
585 } else {
586 DCHECK(error_delegate_);
587 error_delegate_->OnRetryClicked();
588 }
556 } else if (event == kEventOnSendFeedbackClicked) { 589 } else if (event == kEventOnSendFeedbackClicked) {
557 for (auto& observer : observer_list_) 590 DCHECK(error_delegate_);
558 observer.OnSendFeedbackClicked(); 591 error_delegate_->OnSendFeedbackClicked();
559 } else { 592 } else {
560 LOG(ERROR) << "Unknown message: " << event; 593 LOG(ERROR) << "Unknown message: " << event;
561 NOTREACHED(); 594 NOTREACHED();
562 } 595 }
563 } 596 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698