| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/device_local_account_management_pol
icy_provider.h" | 5 #include "chrome/browser/chromeos/extensions/device_local_account_management_pol
icy_provider.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <cstddef> | 9 #include <cstddef> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 872 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 883 policy::DeviceLocalAccount::Type account_type) | 883 policy::DeviceLocalAccount::Type account_type) |
| 884 : account_type_(account_type) { | 884 : account_type_(account_type) { |
| 885 } | 885 } |
| 886 | 886 |
| 887 DeviceLocalAccountManagementPolicyProvider:: | 887 DeviceLocalAccountManagementPolicyProvider:: |
| 888 ~DeviceLocalAccountManagementPolicyProvider() { | 888 ~DeviceLocalAccountManagementPolicyProvider() { |
| 889 } | 889 } |
| 890 | 890 |
| 891 // static | 891 // static |
| 892 bool DeviceLocalAccountManagementPolicyProvider::IsWhitelisted( | 892 bool DeviceLocalAccountManagementPolicyProvider::IsWhitelisted( |
| 893 const extensions::Extension* extension) { | 893 const std::string& extension_id) { |
| 894 return ArrayContains(kPublicSessionWhitelist, extension->id()); | 894 return ArrayContains(kPublicSessionWhitelist, extension_id); |
| 895 } | 895 } |
| 896 | 896 |
| 897 std::string DeviceLocalAccountManagementPolicyProvider:: | 897 std::string DeviceLocalAccountManagementPolicyProvider:: |
| 898 GetDebugPolicyProviderName() const { | 898 GetDebugPolicyProviderName() const { |
| 899 #if defined(NDEBUG) | 899 #if defined(NDEBUG) |
| 900 NOTREACHED(); | 900 NOTREACHED(); |
| 901 return std::string(); | 901 return std::string(); |
| 902 #else | 902 #else |
| 903 return "whitelist for device-local accounts"; | 903 return "whitelist for device-local accounts"; |
| 904 #endif | 904 #endif |
| 905 } | 905 } |
| 906 | 906 |
| 907 bool DeviceLocalAccountManagementPolicyProvider::UserMayLoad( | 907 bool DeviceLocalAccountManagementPolicyProvider::UserMayLoad( |
| 908 const extensions::Extension* extension, | 908 const extensions::Extension* extension, |
| 909 base::string16* error) const { | 909 base::string16* error) const { |
| 910 if (account_type_ == policy::DeviceLocalAccount::TYPE_PUBLIC_SESSION) { | 910 if (account_type_ == policy::DeviceLocalAccount::TYPE_PUBLIC_SESSION) { |
| 911 // Allow extension if it is an externally hosted component of Chrome. | 911 // Allow extension if it is an externally hosted component of Chrome. |
| 912 if (extension->location() == extensions::Manifest::EXTERNAL_COMPONENT) { | 912 if (extension->location() == extensions::Manifest::EXTERNAL_COMPONENT) { |
| 913 return true; | 913 return true; |
| 914 } | 914 } |
| 915 | 915 |
| 916 // TODO(isandrk): Remove when whitelisting work is done (crbug/651027). | 916 // TODO(isandrk): Remove when whitelisting work is done (crbug/651027). |
| 917 // Allow extension if its type is whitelisted for use in public sessions. | 917 // Allow extension if its type is whitelisted for use in public sessions. |
| 918 if (extension->GetType() == extensions::Manifest::TYPE_HOSTED_APP) { | 918 if (extension->GetType() == extensions::Manifest::TYPE_HOSTED_APP) { |
| 919 return true; | 919 return true; |
| 920 } | 920 } |
| 921 | 921 |
| 922 // Allow extension if its specific ID is whitelisted for use in public | 922 // Allow extension if its specific ID is whitelisted for use in public |
| 923 // sessions. | 923 // sessions. |
| 924 if (IsWhitelisted(extension)) { | 924 if (IsWhitelisted(extension->id())) { |
| 925 return true; | 925 return true; |
| 926 } | 926 } |
| 927 | 927 |
| 928 // Allow force-installed extension if all manifest contents are whitelisted. | 928 // Allow force-installed extension if all manifest contents are whitelisted. |
| 929 if ((extension->location() == extensions::Manifest::EXTERNAL_POLICY_DOWNLOAD | 929 if ((extension->location() == extensions::Manifest::EXTERNAL_POLICY_DOWNLOAD |
| 930 || extension->location() == extensions::Manifest::EXTERNAL_POLICY) | 930 || extension->location() == extensions::Manifest::EXTERNAL_POLICY) |
| 931 && IsSafeForPublicSession(extension)) { | 931 && IsSafeForPublicSession(extension)) { |
| 932 return true; | 932 return true; |
| 933 } | 933 } |
| 934 } else if (account_type_ == policy::DeviceLocalAccount::TYPE_KIOSK_APP) { | 934 } else if (account_type_ == policy::DeviceLocalAccount::TYPE_KIOSK_APP) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 945 if (error) { | 945 if (error) { |
| 946 *error = l10n_util::GetStringFUTF16( | 946 *error = l10n_util::GetStringFUTF16( |
| 947 IDS_EXTENSION_CANT_INSTALL_IN_DEVICE_LOCAL_ACCOUNT, | 947 IDS_EXTENSION_CANT_INSTALL_IN_DEVICE_LOCAL_ACCOUNT, |
| 948 base::UTF8ToUTF16(extension->name()), | 948 base::UTF8ToUTF16(extension->name()), |
| 949 base::UTF8ToUTF16(extension->id())); | 949 base::UTF8ToUTF16(extension->id())); |
| 950 } | 950 } |
| 951 return false; | 951 return false; |
| 952 } | 952 } |
| 953 | 953 |
| 954 } // namespace chromeos | 954 } // namespace chromeos |
| OLD | NEW |