Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/extensions/info_private_api.h" | 5 #include "chrome/browser/chromeos/extensions/info_private_api.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| 11 #include "base/command_line.h" | |
| 11 #include "base/sys_info.h" | 12 #include "base/sys_info.h" |
| 12 #include "base/values.h" | 13 #include "base/values.h" |
| 13 #include "chrome/browser/app_mode/app_mode_utils.h" | 14 #include "chrome/browser/app_mode/app_mode_utils.h" |
| 14 #include "chrome/browser/browser_process.h" | 15 #include "chrome/browser/browser_process.h" |
| 16 #include "chrome/browser/chromeos/arc/arc_auth_service.h" | |
| 15 #include "chrome/browser/chromeos/login/startup_utils.h" | 17 #include "chrome/browser/chromeos/login/startup_utils.h" |
| 16 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" | 18 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
| 17 #include "chrome/browser/chromeos/settings/cros_settings.h" | 19 #include "chrome/browser/chromeos/settings/cros_settings.h" |
| 18 #include "chrome/browser/chromeos/system/timezone_util.h" | 20 #include "chrome/browser/chromeos/system/timezone_util.h" |
| 19 #include "chrome/browser/profiles/profile.h" | 21 #include "chrome/browser/profiles/profile.h" |
| 20 #include "chrome/common/pref_names.h" | 22 #include "chrome/common/pref_names.h" |
| 21 #include "chromeos/network/device_state.h" | 23 #include "chromeos/network/device_state.h" |
| 22 #include "chromeos/network/network_handler.h" | 24 #include "chromeos/network/network_handler.h" |
| 23 #include "chromeos/network/network_state_handler.h" | 25 #include "chromeos/network/network_state_handler.h" |
| 24 #include "chromeos/settings/cros_settings_names.h" | 26 #include "chromeos/settings/cros_settings_names.h" |
| 25 #include "chromeos/system/statistics_provider.h" | 27 #include "chromeos/system/statistics_provider.h" |
| 28 #include "components/arc/arc_bridge_service.h" | |
| 26 #include "components/metrics/metrics_service.h" | 29 #include "components/metrics/metrics_service.h" |
| 27 #include "components/prefs/pref_service.h" | 30 #include "components/prefs/pref_service.h" |
| 28 #include "components/user_manager/user_manager.h" | 31 #include "components/user_manager/user_manager.h" |
| 32 #include "extensions/browser/extensions_browser_client.h" | |
| 29 #include "extensions/common/error_utils.h" | 33 #include "extensions/common/error_utils.h" |
| 30 #include "third_party/cros_system_api/dbus/service_constants.h" | 34 #include "third_party/cros_system_api/dbus/service_constants.h" |
| 31 | 35 |
| 32 using chromeos::NetworkHandler; | 36 using chromeos::NetworkHandler; |
| 33 | 37 |
| 34 namespace extensions { | 38 namespace extensions { |
| 35 | 39 |
| 36 namespace { | 40 namespace { |
| 37 | 41 |
| 38 // Key which corresponds to the HWID setting. | 42 // Key which corresponds to the HWID setting. |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 97 | 101 |
| 98 // Key which corresponds to the switch access A11Y property in JS. | 102 // Key which corresponds to the switch access A11Y property in JS. |
| 99 const char kPropertySwitchAccessEnabled[] = "a11ySwitchAccessEnabled"; | 103 const char kPropertySwitchAccessEnabled[] = "a11ySwitchAccessEnabled"; |
| 100 | 104 |
| 101 // Key which corresponds to the send-function-keys property in JS. | 105 // Key which corresponds to the send-function-keys property in JS. |
| 102 const char kPropertySendFunctionsKeys[] = "sendFunctionKeys"; | 106 const char kPropertySendFunctionsKeys[] = "sendFunctionKeys"; |
| 103 | 107 |
| 104 // Property not found error message. | 108 // Property not found error message. |
| 105 const char kPropertyNotFound[] = "Property '*' does not exist."; | 109 const char kPropertyNotFound[] = "Property '*' does not exist."; |
| 106 | 110 |
| 111 // Key which corresponds to the sessionType property in JS. | |
| 112 const char kPropertySessionType[] = "sessionType"; | |
| 113 | |
| 114 // Key which corresponds to the "kiosk" value of the SessionType enum in JS. | |
| 115 const char kSessionTypeKiosk[] = "kiosk"; | |
| 116 | |
| 117 // Key which corresponds to the "public session" value of the SessionType enum | |
| 118 // in JS. | |
| 119 const char kSessionTypePublicSession[] = "public session"; | |
|
Devlin
2016/09/06 23:04:53
Why not use the generated conversion functions?
Rahul Chaturvedi
2016/09/06 23:19:35
Which generated conversion functions?
Devlin
2016/09/07 16:12:28
We generate conversions from enums to strings, e.g
Rahul Chaturvedi
2016/09/07 20:13:23
I understand that - but where do I find the conver
Devlin
2016/09/07 20:23:27
/sigh...it looks like we aren't compiling this API
| |
| 120 | |
| 121 // Key which corresponds to the "normal" value of the SessionType enum in JS. | |
| 122 const char kSessionTypeNormal[] = "normal"; | |
| 123 | |
| 124 // Key which corresponds to the playStoreStatus property in JS. | |
| 125 const char kPropertyPlayStoreStatus[] = "playStoreStatus"; | |
| 126 | |
| 127 // Key which corresponds to the "not available" value of the PlayStoreStatus | |
| 128 // enum in JS. | |
| 129 const char kPlayStoreStatusNotAvailable[] = "not available"; | |
| 130 | |
| 131 // Key which corresponds to the "available" value of the PlayStoreStatus enum in | |
| 132 // JS. | |
| 133 const char kPlayStoreStatusAvailable[] = "available"; | |
| 134 | |
| 135 // Key which corresponds to the "enabled" value of the PlayStoreStatus enum in | |
| 136 // JS. | |
| 137 const char kPlayStoreStatusEnabled[] = "enabled"; | |
| 138 | |
| 107 const struct { | 139 const struct { |
| 108 const char* api_name; | 140 const char* api_name; |
| 109 const char* preference_name; | 141 const char* preference_name; |
| 110 } kPreferencesMap[] = { | 142 } kPreferencesMap[] = { |
| 111 {kPropertyLargeCursorEnabled, prefs::kAccessibilityLargeCursorEnabled}, | 143 {kPropertyLargeCursorEnabled, prefs::kAccessibilityLargeCursorEnabled}, |
| 112 {kPropertyStickyKeysEnabled, prefs::kAccessibilityStickyKeysEnabled}, | 144 {kPropertyStickyKeysEnabled, prefs::kAccessibilityStickyKeysEnabled}, |
| 113 {kPropertySpokenFeedbackEnabled, | 145 {kPropertySpokenFeedbackEnabled, |
| 114 prefs::kAccessibilitySpokenFeedbackEnabled}, | 146 prefs::kAccessibilitySpokenFeedbackEnabled}, |
| 115 {kPropertyHighContrastEnabled, prefs::kAccessibilityHighContrastEnabled}, | 147 {kPropertyHighContrastEnabled, prefs::kAccessibilityHighContrastEnabled}, |
| 116 {kPropertyScreenMagnifierEnabled, | 148 {kPropertyScreenMagnifierEnabled, |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 202 home_provider_id = cellular_device->home_provider_id(); | 234 home_provider_id = cellular_device->home_provider_id(); |
| 203 return new base::StringValue(home_provider_id); | 235 return new base::StringValue(home_provider_id); |
| 204 } else if (property_name == kPropertyInitialLocale) { | 236 } else if (property_name == kPropertyInitialLocale) { |
| 205 return new base::StringValue( | 237 return new base::StringValue( |
| 206 chromeos::StartupUtils::GetInitialLocale()); | 238 chromeos::StartupUtils::GetInitialLocale()); |
| 207 } else if (property_name == kPropertyBoard) { | 239 } else if (property_name == kPropertyBoard) { |
| 208 return new base::StringValue(base::SysInfo::GetLsbReleaseBoard()); | 240 return new base::StringValue(base::SysInfo::GetLsbReleaseBoard()); |
| 209 } else if (property_name == kPropertyOwner) { | 241 } else if (property_name == kPropertyOwner) { |
| 210 return new base::FundamentalValue( | 242 return new base::FundamentalValue( |
| 211 user_manager::UserManager::Get()->IsCurrentUserOwner()); | 243 user_manager::UserManager::Get()->IsCurrentUserOwner()); |
| 244 } else if (property_name == kPropertySessionType) { | |
| 245 if (ExtensionsBrowserClient::Get()->IsRunningInForcedAppMode()) { | |
| 246 return new base::StringValue(kSessionTypeKiosk); | |
| 247 } else if (ExtensionsBrowserClient::Get()->IsLoggedInAsPublicAccount()) { | |
|
Devlin
2016/09/06 23:04:53
no else after return. Ideally, that'd go for this
Rahul Chaturvedi
2016/09/06 23:19:35
I was trying to stick to the style in the file. If
| |
| 248 return new base::StringValue(kSessionTypePublicSession); | |
| 249 } else { | |
| 250 return new base::StringValue(kSessionTypeNormal); | |
| 251 } | |
| 252 } else if (property_name == kPropertyPlayStoreStatus) { | |
| 253 if (arc::ArcAuthService::IsAllowedForProfile( | |
| 254 Profile::FromBrowserContext(context_))) { | |
| 255 return new base::StringValue(kPlayStoreStatusEnabled); | |
| 256 } else if (arc::ArcBridgeService::GetAvailable( | |
| 257 base::CommandLine::ForCurrentProcess())) { | |
| 258 return new base::StringValue(kPlayStoreStatusAvailable); | |
| 259 } else { | |
| 260 return new base::StringValue(kPlayStoreStatusNotAvailable); | |
| 261 } | |
| 212 } else if (property_name == kPropertyClientId) { | 262 } else if (property_name == kPropertyClientId) { |
| 213 return new base::StringValue(GetClientId()); | 263 return new base::StringValue(GetClientId()); |
| 214 } else if (property_name == kPropertyTimezone) { | 264 } else if (property_name == kPropertyTimezone) { |
| 215 return chromeos::CrosSettings::Get()->GetPref( | 265 return chromeos::CrosSettings::Get()->GetPref( |
| 216 chromeos::kSystemTimezone)->DeepCopy(); | 266 chromeos::kSystemTimezone)->DeepCopy(); |
| 217 } else if (property_name == kPropertySupportedTimezones) { | 267 } else if (property_name == kPropertySupportedTimezones) { |
| 218 std::unique_ptr<base::ListValue> values = | 268 std::unique_ptr<base::ListValue> values = |
| 219 chromeos::system::GetTimezoneList(); | 269 chromeos::system::GetTimezoneList(); |
| 220 return values.release(); | 270 return values.release(); |
| 221 } else { | 271 } else { |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 256 param_value); | 306 param_value); |
| 257 } else { | 307 } else { |
| 258 return RespondNow(Error(kPropertyNotFound, param_name)); | 308 return RespondNow(Error(kPropertyNotFound, param_name)); |
| 259 } | 309 } |
| 260 } | 310 } |
| 261 | 311 |
| 262 return RespondNow(NoArguments()); | 312 return RespondNow(NoArguments()); |
| 263 } | 313 } |
| 264 | 314 |
| 265 } // namespace extensions | 315 } // namespace extensions |
| OLD | NEW |