Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 } |
| OLD | NEW |