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

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

Issue 2201493002: [Merge to M53] arc: Implement safe access to ArcAuthService. (Closed) Base URL: https://chromium.googlesource.com/a/chromium/src.git@2785
Patch Set: Created 4 years, 4 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 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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 "chrome-extension://cnbgggchhmkkdmeppjobngjoejnihlei/"}; 65 "chrome-extension://cnbgggchhmkkdmeppjobngjoejnihlei/"};
66 66
67 // static 67 // static
68 std::unique_ptr<extensions::NativeMessageHost> ArcSupportHost::Create() { 68 std::unique_ptr<extensions::NativeMessageHost> ArcSupportHost::Create() {
69 return std::unique_ptr<NativeMessageHost>(new ArcSupportHost()); 69 return std::unique_ptr<NativeMessageHost>(new ArcSupportHost());
70 } 70 }
71 71
72 ArcSupportHost::ArcSupportHost() { 72 ArcSupportHost::ArcSupportHost() {
73 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get(); 73 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get();
74 DCHECK(arc_auth_service); 74 DCHECK(arc_auth_service);
75
76 if (!arc_auth_service->IsAllowed())
77 return;
78
75 arc_auth_service->AddObserver(this); 79 arc_auth_service->AddObserver(this);
76 80
77 pref_change_registrar_.Init(g_browser_process->local_state()); 81 pref_change_registrar_.Init(g_browser_process->local_state());
78 pref_change_registrar_.Add( 82 pref_change_registrar_.Add(
79 metrics::prefs::kMetricsReportingEnabled, 83 metrics::prefs::kMetricsReportingEnabled,
80 base::Bind(&ArcSupportHost::OnMetricsPreferenceChanged, 84 base::Bind(&ArcSupportHost::OnMetricsPreferenceChanged,
81 base::Unretained(this))); 85 base::Unretained(this)));
82 } 86 }
83 87
84 ArcSupportHost::~ArcSupportHost() { 88 ArcSupportHost::~ArcSupportHost() {
85 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get(); 89 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get();
86 if (arc_auth_service) 90 if (arc_auth_service)
87 arc_auth_service->RemoveObserver(this); 91 arc_auth_service->RemoveObserver(this);
88 } 92 }
89 93
90 void ArcSupportHost::Start(Client* client) { 94 void ArcSupportHost::Start(Client* client) {
91 DCHECK(!client_); 95 DCHECK(!client_);
92 client_ = client; 96 client_ = client;
93 97
94 Initialize(); 98 if (!Initialize()) {
99 OnOptInUIClose();
100 return;
101 }
102
95 SendMetricsMode(); 103 SendMetricsMode();
96 104
97 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get(); 105 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get();
98 DCHECK(arc_auth_service); 106 DCHECK(arc_auth_service);
99 OnOptInUIShowPage(arc_auth_service->ui_page(), 107 OnOptInUIShowPage(arc_auth_service->ui_page(),
100 arc_auth_service->ui_page_status()); 108 arc_auth_service->ui_page_status());
101 } 109 }
102 110
103 void ArcSupportHost::Initialize() { 111 bool ArcSupportHost::Initialize() {
104 DCHECK(client_); 112 DCHECK(client_);
113 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get();
114 if (!arc_auth_service->IsAllowed())
115 return false;
116
105 std::unique_ptr<base::DictionaryValue> loadtime_data( 117 std::unique_ptr<base::DictionaryValue> loadtime_data(
106 new base::DictionaryValue()); 118 new base::DictionaryValue());
107 base::string16 device_name = ash::GetChromeOSDeviceName(); 119 base::string16 device_name = ash::GetChromeOSDeviceName();
108 loadtime_data->SetString( 120 loadtime_data->SetString(
109 "greetingHeader", 121 "greetingHeader",
110 l10n_util::GetStringFUTF16(IDS_ARC_OPT_IN_DIALOG_HEADER, device_name)); 122 l10n_util::GetStringFUTF16(IDS_ARC_OPT_IN_DIALOG_HEADER, device_name));
111 loadtime_data->SetString("greetingDescription", 123 loadtime_data->SetString("greetingDescription",
112 l10n_util::GetStringFUTF16( 124 l10n_util::GetStringFUTF16(
113 IDS_ARC_OPT_IN_DIALOG_DESCRIPTION, device_name)); 125 IDS_ARC_OPT_IN_DIALOG_DESCRIPTION, device_name));
114 loadtime_data->SetString( 126 loadtime_data->SetString(
(...skipping 21 matching lines...) Expand all
136 "termsOfService", 148 "termsOfService",
137 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_TERMS_OF_SERVICE)); 149 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_TERMS_OF_SERVICE));
138 loadtime_data->SetString( 150 loadtime_data->SetString(
139 "textBackupRestore", 151 "textBackupRestore",
140 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_BACKUP_RESTORE)); 152 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_BACKUP_RESTORE));
141 153
142 const std::string& app_locale = g_browser_process->GetApplicationLocale(); 154 const std::string& app_locale = g_browser_process->GetApplicationLocale();
143 const std::string& country_code = base::CountryCodeForCurrentTimezone(); 155 const std::string& country_code = base::CountryCodeForCurrentTimezone();
144 loadtime_data->SetString("countryCode", country_code); 156 loadtime_data->SetString("countryCode", country_code);
145 157
146 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get();
147
148 loadtime_data->SetBoolean(kBackupRestoreEnabled, 158 loadtime_data->SetBoolean(kBackupRestoreEnabled,
149 arc_auth_service->profile()->GetPrefs()->GetBoolean( 159 arc_auth_service->profile()->GetPrefs()->GetBoolean(
150 prefs::kArcBackupRestoreEnabled)); 160 prefs::kArcBackupRestoreEnabled));
151 161
152 webui::SetLoadTimeDataDefaults(app_locale, loadtime_data.get()); 162 webui::SetLoadTimeDataDefaults(app_locale, loadtime_data.get());
153 DCHECK(arc_auth_service); 163 DCHECK(arc_auth_service);
154 const std::string device_id = user_manager::known_user::GetDeviceId( 164 const std::string device_id = user_manager::known_user::GetDeviceId(
155 multi_user_util::GetAccountIdFromProfile(arc_auth_service->profile())); 165 multi_user_util::GetAccountIdFromProfile(arc_auth_service->profile()));
156 DCHECK(!device_id.empty()); 166 DCHECK(!device_id.empty());
157 167
158 base::DictionaryValue request; 168 base::DictionaryValue request;
159 std::string request_string; 169 std::string request_string;
160 request.SetString(kAction, kActionInitialize); 170 request.SetString(kAction, kActionInitialize);
161 request.Set(kData, std::move(loadtime_data)); 171 request.Set(kData, std::move(loadtime_data));
162 request.SetString(kDeviceId, device_id); 172 request.SetString(kDeviceId, device_id);
163 base::JSONWriter::Write(request, &request_string); 173 base::JSONWriter::Write(request, &request_string);
164 client_->PostMessageFromNativeHost(request_string); 174 client_->PostMessageFromNativeHost(request_string);
175
176 return true;
165 } 177 }
166 178
167 void ArcSupportHost::OnMetricsPreferenceChanged() { 179 void ArcSupportHost::OnMetricsPreferenceChanged() {
168 SendMetricsMode(); 180 SendMetricsMode();
169 } 181 }
170 182
171 void ArcSupportHost::SendMetricsMode() { 183 void ArcSupportHost::SendMetricsMode() {
172 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get(); 184 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get();
173 DCHECK(arc_auth_service); 185 DCHECK(arc_auth_service && arc_auth_service->IsAllowed());
174 const Profile* profile = arc_auth_service->profile(); 186 const Profile* profile = arc_auth_service->profile();
175 187
176 const bool metrics_managed = IsMetricsReportingPolicyManaged(); 188 const bool metrics_managed = IsMetricsReportingPolicyManaged();
177 const bool owner_profile = 189 const bool owner_profile =
178 profile && chromeos::ProfileHelper::IsOwnerProfile(profile); 190 profile && chromeos::ProfileHelper::IsOwnerProfile(profile);
179 const bool metrics_on = 191 const bool metrics_on =
180 ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled(); 192 ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled();
181 193
182 int message_id; 194 int message_id;
183 if (metrics_managed || !owner_profile) { 195 if (metrics_managed || !owner_profile) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 std::string response_string; 234 std::string response_string;
223 base::JSONWriter::Write(response, &response_string); 235 base::JSONWriter::Write(response, &response_string);
224 client_->PostMessageFromNativeHost(response_string); 236 client_->PostMessageFromNativeHost(response_string);
225 } 237 }
226 238
227 void ArcSupportHost::EnableMetrics(bool is_enabled) { 239 void ArcSupportHost::EnableMetrics(bool is_enabled) {
228 InitiateMetricsReportingChange(is_enabled, OnMetricsReportingCallbackType()); 240 InitiateMetricsReportingChange(is_enabled, OnMetricsReportingCallbackType());
229 } 241 }
230 242
231 void ArcSupportHost::EnableBackupRestore(bool is_enabled) { 243 void ArcSupportHost::EnableBackupRestore(bool is_enabled) {
232 PrefService* pref_service = arc::ArcAuthService::Get()->profile()->GetPrefs(); 244 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get();
245 DCHECK(arc_auth_service && arc_auth_service->IsAllowed());
246 PrefService* pref_service = arc_auth_service->profile()->GetPrefs();
233 pref_service->SetBoolean(prefs::kArcBackupRestoreEnabled, is_enabled); 247 pref_service->SetBoolean(prefs::kArcBackupRestoreEnabled, is_enabled);
234 } 248 }
235 249
236 void ArcSupportHost::OnMessage(const std::string& request_string) { 250 void ArcSupportHost::OnMessage(const std::string& request_string) {
237 std::unique_ptr<base::Value> request_value = 251 std::unique_ptr<base::Value> request_value =
238 base::JSONReader::Read(request_string); 252 base::JSONReader::Read(request_string);
239 base::DictionaryValue* request; 253 base::DictionaryValue* request;
240 if (!request_value || !request_value->GetAsDictionary(&request)) { 254 if (!request_value || !request_value->GetAsDictionary(&request)) {
241 NOTREACHED(); 255 NOTREACHED();
242 return; 256 return;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 EnableBackupRestore(is_enabled); 294 EnableBackupRestore(is_enabled);
281 } else { 295 } else {
282 NOTREACHED(); 296 NOTREACHED();
283 } 297 }
284 } 298 }
285 299
286 scoped_refptr<base::SingleThreadTaskRunner> ArcSupportHost::task_runner() 300 scoped_refptr<base::SingleThreadTaskRunner> ArcSupportHost::task_runner()
287 const { 301 const {
288 return base::ThreadTaskRunnerHandle::Get(); 302 return base::ThreadTaskRunnerHandle::Get();
289 } 303 }
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/arc/arc_support_host.h ('k') | chrome/browser/chromeos/login/users/fake_chrome_user_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698