| 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 | 8 |
| 9 #include "ash/common/system/chromeos/devicetype_utils.h" | 9 #include "ash/common/system/chromeos/devicetype_utils.h" |
| 10 #include "base/i18n/timezone.h" | 10 #include "base/i18n/timezone.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 #include "chrome/grit/generated_resources.h" | 23 #include "chrome/grit/generated_resources.h" |
| 24 #include "components/metrics/metrics_pref_names.h" | 24 #include "components/metrics/metrics_pref_names.h" |
| 25 #include "components/prefs/pref_service.h" | 25 #include "components/prefs/pref_service.h" |
| 26 #include "components/user_manager/known_user.h" | 26 #include "components/user_manager/known_user.h" |
| 27 #include "ui/base/l10n/l10n_util.h" | 27 #include "ui/base/l10n/l10n_util.h" |
| 28 #include "ui/base/webui/web_ui_util.h" | 28 #include "ui/base/webui/web_ui_util.h" |
| 29 #include "ui/display/screen.h" | 29 #include "ui/display/screen.h" |
| 30 | 30 |
| 31 namespace { | 31 namespace { |
| 32 const char kAction[] = "action"; | 32 const char kAction[] = "action"; |
| 33 const char kBackupRestoreEnabled[] = "backupRestoreEnabled"; | 33 const char kArcManaged[] = "arcManaged"; |
| 34 const char kLocationServiceEnabled[] = "locationServiceEnabled"; | |
| 35 const char kCanEnable[] = "canEnable"; | 34 const char kCanEnable[] = "canEnable"; |
| 36 const char kCode[] = "code"; | 35 const char kCode[] = "code"; |
| 37 const char kData[] = "data"; | 36 const char kData[] = "data"; |
| 38 const char kDeviceId[] = "deviceId"; | 37 const char kDeviceId[] = "deviceId"; |
| 39 const char kEnabled[] = "enabled"; | 38 const char kEnabled[] = "enabled"; |
| 39 const char kManaged[] = "managed"; |
| 40 const char kOn[] = "on"; | 40 const char kOn[] = "on"; |
| 41 const char kPage[] = "page"; | 41 const char kPage[] = "page"; |
| 42 const char kStatus[] = "status"; | 42 const char kStatus[] = "status"; |
| 43 const char kText[] = "text"; | 43 const char kText[] = "text"; |
| 44 const char kActionInitialize[] = "initialize"; | 44 const char kActionInitialize[] = "initialize"; |
| 45 const char kActionSetMetricsMode[] = "setMetricsMode"; | 45 const char kActionSetMetricsMode[] = "setMetricsMode"; |
| 46 const char kActionBackupAndRestoreMode[] = "setBackupAndRestoreMode"; |
| 47 const char kActionLocationServiceMode[] = "setLocationServiceMode"; |
| 46 const char kActionSetWindowBounds[] = "setWindowBounds"; | 48 const char kActionSetWindowBounds[] = "setWindowBounds"; |
| 47 const char kActionStartLso[] = "startLso"; | 49 const char kActionStartLso[] = "startLso"; |
| 48 const char kActionCancelAuthCode[] = "cancelAuthCode"; | 50 const char kActionCancelAuthCode[] = "cancelAuthCode"; |
| 49 const char kActionSetAuthCode[] = "setAuthCode"; | 51 const char kActionSetAuthCode[] = "setAuthCode"; |
| 50 const char kActionEnableMetrics[] = "enableMetrics"; | 52 const char kActionEnableMetrics[] = "enableMetrics"; |
| 51 const char kActionSendFeedback[] = "sendFeedback"; | 53 const char kActionSendFeedback[] = "sendFeedback"; |
| 52 const char kActionSetBackupRestore[] = "setBackupRestore"; | 54 const char kActionSetBackupRestore[] = "setBackupRestore"; |
| 53 const char kActionSetLocationService[] = "setLocationService"; | 55 const char kActionSetLocationService[] = "setLocationService"; |
| 54 const char kActionCloseUI[] = "closeUI"; | 56 const char kActionCloseUI[] = "closeUI"; |
| 55 const char kActionShowPage[] = "showPage"; | 57 const char kActionShowPage[] = "showPage"; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 76 ArcSupportHost::ArcSupportHost() { | 78 ArcSupportHost::ArcSupportHost() { |
| 77 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get(); | 79 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get(); |
| 78 DCHECK(arc_auth_service); | 80 DCHECK(arc_auth_service); |
| 79 | 81 |
| 80 if (!arc_auth_service->IsAllowed()) | 82 if (!arc_auth_service->IsAllowed()) |
| 81 return; | 83 return; |
| 82 | 84 |
| 83 arc_auth_service->AddObserver(this); | 85 arc_auth_service->AddObserver(this); |
| 84 display::Screen::GetScreen()->AddObserver(this); | 86 display::Screen::GetScreen()->AddObserver(this); |
| 85 | 87 |
| 86 pref_change_registrar_.Init(g_browser_process->local_state()); | 88 pref_local_change_registrar_.Init(g_browser_process->local_state()); |
| 87 pref_change_registrar_.Add( | 89 pref_local_change_registrar_.Add( |
| 88 metrics::prefs::kMetricsReportingEnabled, | 90 metrics::prefs::kMetricsReportingEnabled, |
| 89 base::Bind(&ArcSupportHost::OnMetricsPreferenceChanged, | 91 base::Bind(&ArcSupportHost::OnMetricsPreferenceChanged, |
| 90 base::Unretained(this))); | 92 base::Unretained(this))); |
| 93 |
| 94 pref_change_registrar_.Init(arc_auth_service->profile()->GetPrefs()); |
| 95 pref_change_registrar_.Add( |
| 96 prefs::kArcBackupRestoreEnabled, |
| 97 base::Bind(&ArcSupportHost::OnBackupAndRestorePreferenceChanged, |
| 98 base::Unretained(this))); |
| 99 pref_change_registrar_.Add( |
| 100 prefs::kArcLocationServiceEnabled, |
| 101 base::Bind(&ArcSupportHost::OnLocationServicePreferenceChanged, |
| 102 base::Unretained(this))); |
| 91 } | 103 } |
| 92 | 104 |
| 93 ArcSupportHost::~ArcSupportHost() { | 105 ArcSupportHost::~ArcSupportHost() { |
| 94 display::Screen::GetScreen()->RemoveObserver(this); | 106 display::Screen::GetScreen()->RemoveObserver(this); |
| 95 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get(); | 107 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get(); |
| 96 if (arc_auth_service) | 108 if (arc_auth_service) |
| 97 arc_auth_service->RemoveObserver(this); | 109 arc_auth_service->RemoveObserver(this); |
| 98 } | 110 } |
| 99 | 111 |
| 100 void ArcSupportHost::Start(Client* client) { | 112 void ArcSupportHost::Start(Client* client) { |
| 101 DCHECK(!client_); | 113 DCHECK(!client_); |
| 102 client_ = client; | 114 client_ = client; |
| 103 | 115 |
| 104 if (!Initialize()) { | 116 if (!Initialize()) { |
| 105 OnOptInUIClose(); | 117 OnOptInUIClose(); |
| 106 return; | 118 return; |
| 107 } | 119 } |
| 108 | 120 |
| 109 SendMetricsMode(); | 121 SendMetricsMode(); |
| 122 SendBackupAndRestoreMode(); |
| 123 SendLocationServicesMode(); |
| 110 | 124 |
| 111 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get(); | 125 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get(); |
| 112 DCHECK(arc_auth_service); | 126 DCHECK(arc_auth_service); |
| 113 OnOptInUIShowPage(arc_auth_service->ui_page(), | 127 OnOptInUIShowPage(arc_auth_service->ui_page(), |
| 114 arc_auth_service->ui_page_status()); | 128 arc_auth_service->ui_page_status()); |
| 115 } | 129 } |
| 116 | 130 |
| 117 bool ArcSupportHost::Initialize() { | 131 bool ArcSupportHost::Initialize() { |
| 118 DCHECK(client_); | 132 DCHECK(client_); |
| 119 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get(); | 133 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get(); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_TERMS_OF_SERVICE)); | 169 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_TERMS_OF_SERVICE)); |
| 156 loadtime_data->SetString( | 170 loadtime_data->SetString( |
| 157 "textBackupRestore", | 171 "textBackupRestore", |
| 158 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_BACKUP_RESTORE)); | 172 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_BACKUP_RESTORE)); |
| 159 loadtime_data->SetString( | 173 loadtime_data->SetString( |
| 160 "textLocationService", | 174 "textLocationService", |
| 161 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_LOCATION_SETTING)); | 175 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_LOCATION_SETTING)); |
| 162 loadtime_data->SetString( | 176 loadtime_data->SetString( |
| 163 "serverError", | 177 "serverError", |
| 164 l10n_util::GetStringUTF16(IDS_ARC_SERVER_COMMUNICATION_ERROR)); | 178 l10n_util::GetStringUTF16(IDS_ARC_SERVER_COMMUNICATION_ERROR)); |
| 179 loadtime_data->SetString( |
| 180 "controlledByPolicy", |
| 181 l10n_util::GetStringUTF16(IDS_OPTIONS_CONTROLLED_SETTING_POLICY)); |
| 165 | 182 |
| 166 const std::string& app_locale = g_browser_process->GetApplicationLocale(); | 183 const std::string& app_locale = g_browser_process->GetApplicationLocale(); |
| 167 const std::string& country_code = base::CountryCodeForCurrentTimezone(); | 184 const std::string& country_code = base::CountryCodeForCurrentTimezone(); |
| 168 loadtime_data->SetString("countryCode", country_code); | 185 loadtime_data->SetString("countryCode", country_code); |
| 169 | 186 loadtime_data->SetBoolean(kArcManaged, arc_auth_service->IsArcManaged()); |
| 170 loadtime_data->SetBoolean(kBackupRestoreEnabled, | |
| 171 arc_auth_service->profile()->GetPrefs()->GetBoolean( | |
| 172 prefs::kArcBackupRestoreEnabled)); | |
| 173 loadtime_data->SetBoolean(kLocationServiceEnabled, | |
| 174 arc_auth_service->profile()->GetPrefs()->GetBoolean( | |
| 175 prefs::kArcLocationServiceEnabled)); | |
| 176 | 187 |
| 177 webui::SetLoadTimeDataDefaults(app_locale, loadtime_data.get()); | 188 webui::SetLoadTimeDataDefaults(app_locale, loadtime_data.get()); |
| 178 DCHECK(arc_auth_service); | 189 DCHECK(arc_auth_service); |
| 179 const std::string device_id = user_manager::known_user::GetDeviceId( | 190 const std::string device_id = user_manager::known_user::GetDeviceId( |
| 180 multi_user_util::GetAccountIdFromProfile(arc_auth_service->profile())); | 191 multi_user_util::GetAccountIdFromProfile(arc_auth_service->profile())); |
| 181 DCHECK(!device_id.empty()); | 192 DCHECK(!device_id.empty()); |
| 182 | 193 |
| 183 base::DictionaryValue request; | 194 base::DictionaryValue request; |
| 184 std::string request_string; | 195 std::string request_string; |
| 185 request.SetString(kAction, kActionInitialize); | 196 request.SetString(kAction, kActionInitialize); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 201 std::string request_string; | 212 std::string request_string; |
| 202 request.SetString(kAction, kActionSetWindowBounds); | 213 request.SetString(kAction, kActionSetWindowBounds); |
| 203 base::JSONWriter::Write(request, &request_string); | 214 base::JSONWriter::Write(request, &request_string); |
| 204 client_->PostMessageFromNativeHost(request_string); | 215 client_->PostMessageFromNativeHost(request_string); |
| 205 } | 216 } |
| 206 | 217 |
| 207 void ArcSupportHost::OnMetricsPreferenceChanged() { | 218 void ArcSupportHost::OnMetricsPreferenceChanged() { |
| 208 SendMetricsMode(); | 219 SendMetricsMode(); |
| 209 } | 220 } |
| 210 | 221 |
| 222 void ArcSupportHost::OnBackupAndRestorePreferenceChanged() { |
| 223 SendBackupAndRestoreMode(); |
| 224 } |
| 225 |
| 226 void ArcSupportHost::OnLocationServicePreferenceChanged() { |
| 227 SendLocationServicesMode(); |
| 228 } |
| 229 |
| 211 void ArcSupportHost::SendMetricsMode() { | 230 void ArcSupportHost::SendMetricsMode() { |
| 212 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get(); | 231 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get(); |
| 213 DCHECK(arc_auth_service && arc_auth_service->IsAllowed()); | 232 DCHECK(arc_auth_service && arc_auth_service->IsAllowed()); |
| 214 const Profile* profile = arc_auth_service->profile(); | 233 const Profile* profile = arc_auth_service->profile(); |
| 215 | 234 |
| 216 const bool metrics_managed = IsMetricsReportingPolicyManaged(); | 235 const bool metrics_managed = IsMetricsReportingPolicyManaged(); |
| 217 const bool owner_profile = | 236 const bool owner_profile = |
| 218 profile && chromeos::ProfileHelper::IsOwnerProfile(profile); | 237 profile && chromeos::ProfileHelper::IsOwnerProfile(profile); |
| 219 const bool metrics_on = | 238 const bool metrics_on = |
| 220 ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled(); | 239 ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled(); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 232 std::string request_string; | 251 std::string request_string; |
| 233 request.SetString(kAction, kActionSetMetricsMode); | 252 request.SetString(kAction, kActionSetMetricsMode); |
| 234 request.SetString(kText, l10n_util::GetStringUTF16(message_id)); | 253 request.SetString(kText, l10n_util::GetStringUTF16(message_id)); |
| 235 request.SetBoolean(kCanEnable, | 254 request.SetBoolean(kCanEnable, |
| 236 !metrics_on && !metrics_managed && owner_profile); | 255 !metrics_on && !metrics_managed && owner_profile); |
| 237 request.SetBoolean(kOn, metrics_on); | 256 request.SetBoolean(kOn, metrics_on); |
| 238 base::JSONWriter::Write(request, &request_string); | 257 base::JSONWriter::Write(request, &request_string); |
| 239 client_->PostMessageFromNativeHost(request_string); | 258 client_->PostMessageFromNativeHost(request_string); |
| 240 } | 259 } |
| 241 | 260 |
| 261 void ArcSupportHost::SendOptionMode(const std::string& action_name, |
| 262 const std::string& pref_name) { |
| 263 const arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get(); |
| 264 DCHECK(arc_auth_service); |
| 265 const bool enabled = |
| 266 arc_auth_service->profile()->GetPrefs()->GetBoolean(pref_name); |
| 267 const bool managed = |
| 268 arc_auth_service->profile()->GetPrefs()->IsManagedPreference(pref_name); |
| 269 |
| 270 base::DictionaryValue request; |
| 271 std::string request_string; |
| 272 request.SetString(kAction, action_name); |
| 273 request.SetBoolean(kEnabled, enabled); |
| 274 request.SetBoolean(kManaged, managed); |
| 275 base::JSONWriter::Write(request, &request_string); |
| 276 client_->PostMessageFromNativeHost(request_string); |
| 277 } |
| 278 |
| 279 void ArcSupportHost::SendBackupAndRestoreMode() { |
| 280 SendOptionMode(kActionBackupAndRestoreMode, prefs::kArcBackupRestoreEnabled); |
| 281 } |
| 282 |
| 283 void ArcSupportHost::SendLocationServicesMode() { |
| 284 SendOptionMode(kActionLocationServiceMode, prefs::kArcLocationServiceEnabled); |
| 285 } |
| 286 |
| 242 void ArcSupportHost::OnOptInUIClose() { | 287 void ArcSupportHost::OnOptInUIClose() { |
| 243 if (!client_) | 288 if (!client_) |
| 244 return; | 289 return; |
| 245 | 290 |
| 246 base::DictionaryValue response; | 291 base::DictionaryValue response; |
| 247 response.SetString(kAction, kActionCloseUI); | 292 response.SetString(kAction, kActionCloseUI); |
| 248 std::string response_string; | 293 std::string response_string; |
| 249 base::JSONWriter::Write(response, &response_string); | 294 base::JSONWriter::Write(response, &response_string); |
| 250 client_->PostMessageFromNativeHost(response_string); | 295 client_->PostMessageFromNativeHost(response_string); |
| 251 } | 296 } |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 336 EnableLocationService(is_enabled); | 381 EnableLocationService(is_enabled); |
| 337 } else { | 382 } else { |
| 338 NOTREACHED(); | 383 NOTREACHED(); |
| 339 } | 384 } |
| 340 } | 385 } |
| 341 | 386 |
| 342 scoped_refptr<base::SingleThreadTaskRunner> ArcSupportHost::task_runner() | 387 scoped_refptr<base::SingleThreadTaskRunner> ArcSupportHost::task_runner() |
| 343 const { | 388 const { |
| 344 return base::ThreadTaskRunnerHandle::Get(); | 389 return base::ThreadTaskRunnerHandle::Get(); |
| 345 } | 390 } |
| OLD | NEW |