Chromium Code Reviews| 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 a5de66be12ff7d8aea1c128bc798da70730fe519..57cda88e6c0c98e8e5e2a3bf2c6daf13614b8bdc 100644 |
| --- a/chrome/browser/chromeos/arc/arc_support_host.cc |
| +++ b/chrome/browser/chromeos/arc/arc_support_host.cc |
| @@ -22,7 +22,9 @@ |
| #include "chrome/browser/ui/ash/multi_user/multi_user_util.h" |
| #include "chrome/browser/ui/extensions/app_launch_params.h" |
| #include "chrome/browser/ui/extensions/application_launch.h" |
| +#include "chrome/common/pref_names.h" |
| #include "chrome/grit/generated_resources.h" |
| +#include "components/prefs/pref_service.h" |
| #include "components/user_manager/known_user.h" |
| #include "extensions/browser/extension_registry.h" |
| #include "ui/base/l10n/l10n_util.h" |
| @@ -165,6 +167,11 @@ ArcSupportHost::ArcSupportHost(Profile* profile) |
| } |
| ArcSupportHost::~ArcSupportHost() { |
| + // Delegates should have been reset to nullptr at this point. |
| + DCHECK(!auth_delegate_); |
| + DCHECK(!tos_delegate_); |
| + DCHECK(!error_delegate_); |
| + |
| if (message_host_) |
| DisconnectMessageHost(); |
| } |
| @@ -181,6 +188,19 @@ bool ArcSupportHost::HasObserver(Observer* observer) { |
| return observer_list_.HasObserver(observer); |
| } |
| +void ArcSupportHost::SetAuthDelegate(AuthDelegate* delegate) { |
| + auth_delegate_ = delegate; |
|
hidehiko
2017/05/15 09:05:44
Maybe.
if (delegate)
DCHECK(!tos_delegate_);
(
victorhsieh0
2017/05/15 22:31:53
Done.
|
| +} |
| + |
| +void ArcSupportHost::SetTermsOfServiceDelegate( |
| + TermsOfServiceDelegate* delegate) { |
| + tos_delegate_ = delegate; |
|
hidehiko
2017/05/15 09:05:44
Ditto.
victorhsieh0
2017/05/15 22:31:53
Done.
|
| +} |
| + |
| +void ArcSupportHost::SetErrorDelegate(ErrorDelegate* delegate) { |
| + error_delegate_ = delegate; |
| +} |
| + |
| void ArcSupportHost::SetArcManaged(bool is_arc_managed) { |
| DCHECK(!message_host_); |
| is_arc_managed_ = is_arc_managed; |
| @@ -521,19 +541,24 @@ void ArcSupportHost::OnMessage(const base::DictionaryValue& message) { |
| } |
| if (event == kEventOnWindowClosed) { |
| - for (auto& observer : observer_list_) |
| - observer.OnWindowClosed(); |
| + // If ToS negotiation is ongoing, call the specific function. |
| + if (tos_delegate_) { |
| + tos_delegate_->OnTermsRejected(); |
| + } else { |
| + DCHECK(error_delegate_); |
| + error_delegate_->OnOptInAborted(); |
| + } |
| } else if (event == kEventOnAuthSucceeded) { |
| std::string code; |
| if (message.GetString(kCode, &code)) { |
| - for (auto& observer : observer_list_) |
| - observer.OnAuthSucceeded(code); |
| + 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.
|
| + auth_delegate_->OnAuthSucceeded(code); |
| } else { |
| NOTREACHED(); |
| } |
| } else if (event == kEventOnAuthFailed) { |
| - for (auto& observer : observer_list_) |
| - observer.OnAuthFailed(); |
| + DCHECK(auth_delegate_); |
| + auth_delegate_->OnAuthFailed(); |
| } else if (event == kEventOnAgreed) { |
| bool is_metrics_enabled; |
| bool is_backup_restore_enabled; |
| @@ -543,19 +568,27 @@ void ArcSupportHost::OnMessage(const base::DictionaryValue& message) { |
| &is_backup_restore_enabled) && |
| message.GetBoolean(kIsLocationServiceEnabled, |
| &is_location_service_enabled)) { |
| - for (auto& observer : observer_list_) { |
| - observer.OnTermsAgreed(is_metrics_enabled, is_backup_restore_enabled, |
| - is_location_service_enabled); |
| - } |
| + DCHECK(tos_delegate_); |
|
hidehiko
2017/05/15 09:05:44
Ditto. Move to L563?
victorhsieh0
2017/05/15 22:31:53
Done.
|
| + tos_delegate_->OnTermsAgreed(is_metrics_enabled, |
| + is_backup_restore_enabled, |
| + is_location_service_enabled); |
| } else { |
| NOTREACHED(); |
| } |
| } else if (event == kEventOnRetryClicked) { |
| - for (auto& observer : observer_list_) |
| - observer.OnRetryClicked(); |
| + // If ToS negotiation or manual authentication is ongoing, call the |
| + // corresponding delegate. Otherwise, call the general retry function. |
| + if (tos_delegate_) { |
| + tos_delegate_->OnTermsRetryClicked(); |
| + } else if (auth_delegate_) { |
| + auth_delegate_->OnAuthRetryClicked(); |
| + } else { |
| + DCHECK(error_delegate_); |
| + error_delegate_->OnRetryClicked(); |
| + } |
| } else if (event == kEventOnSendFeedbackClicked) { |
| - for (auto& observer : observer_list_) |
| - observer.OnSendFeedbackClicked(); |
| + DCHECK(error_delegate_); |
| + error_delegate_->OnSendFeedbackClicked(); |
| } else { |
| LOG(ERROR) << "Unknown message: " << event; |
| NOTREACHED(); |