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