diff options
Diffstat (limited to 'src/mscorlib/src/System/IO/IsolatedStorage/IsolatedStorageSecurityState.cs')
-rw-r--r-- | src/mscorlib/src/System/IO/IsolatedStorage/IsolatedStorageSecurityState.cs | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/src/mscorlib/src/System/IO/IsolatedStorage/IsolatedStorageSecurityState.cs b/src/mscorlib/src/System/IO/IsolatedStorage/IsolatedStorageSecurityState.cs new file mode 100644 index 0000000000..efa5eaabf4 --- /dev/null +++ b/src/mscorlib/src/System/IO/IsolatedStorage/IsolatedStorageSecurityState.cs @@ -0,0 +1,210 @@ +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +using System.Security; + +namespace System.IO.IsolatedStorage { + +#if FEATURE_CORECLR +#if !FEATURE_LEGACYNETCF + public enum IsolatedStorageSecurityOptions { + GetRootUserDirectory = 0, + GetGroupAndIdForApplication = 1, + GetGroupAndIdForSite = 2, + IncreaseQuotaForGroup = 3, + IncreaseQuotaForApplication = 4, + SetInnerException = 5 + } +#else // !FEATURE_LEGACYNETCF + public enum IsolatedStorageSecurityOptions { + GetRootUserDirectory = 0, + GetGroupAndIdForApplication = 1, + GetGroupAndIdForSite = 2, + IncreaseQuotaForGroup = 3, + DefaultQuotaForGroup = 4, + AvailableFreeSpace = 5, + IsolatedStorageFolderName = 6 + } +#endif // !FEATURE_LEGACYNETCF +#else // FEATURE_CORECLR + public enum IsolatedStorageSecurityOptions { + IncreaseQuotaForApplication = 4 + } +#endif // !FEATURE_CORECLR + + [SecurityCritical] + public class IsolatedStorageSecurityState : SecurityState { + + private Int64 m_UsedSize; + private Int64 m_Quota; + +#if FEATURE_CORECLR + private string m_Id; + private string m_Group; + private string m_RootUserDirectory; +#endif // FEATURE_CORECLR + +#if FEATURE_LEGACYNETCF + private string m_IsolatedStorageFolderName; + private Int64 m_AvailableFreeSpace; + private bool m_AvailableFreeSpaceComputed; +#endif // FEATURE_LEGACYNETCF + + private IsolatedStorageSecurityOptions m_Options; + + +#if FEATURE_CORECLR + + internal static IsolatedStorageSecurityState CreateStateToGetRootUserDirectory() { + IsolatedStorageSecurityState state = new IsolatedStorageSecurityState(); + state.m_Options = IsolatedStorageSecurityOptions.GetRootUserDirectory; + return state; + } + + internal static IsolatedStorageSecurityState CreateStateToGetGroupAndIdForApplication() { + IsolatedStorageSecurityState state = new IsolatedStorageSecurityState(); + state.m_Options = IsolatedStorageSecurityOptions.GetGroupAndIdForApplication; + return state; + } + + internal static IsolatedStorageSecurityState CreateStateToGetGroupAndIdForSite() { + IsolatedStorageSecurityState state = new IsolatedStorageSecurityState(); + state.m_Options = IsolatedStorageSecurityOptions.GetGroupAndIdForSite; + return state; + } + + internal static IsolatedStorageSecurityState CreateStateToIncreaseQuotaForGroup(String group, Int64 newQuota, Int64 usedSize) { + IsolatedStorageSecurityState state = new IsolatedStorageSecurityState(); + state.m_Options = IsolatedStorageSecurityOptions.IncreaseQuotaForGroup; + state.m_Group = group; + state.m_Quota = newQuota; + state.m_UsedSize = usedSize; + return state; + } + +#if !FEATURE_LEGACYNETCF + internal static IsolatedStorageSecurityState CreateStateToCheckSetInnerException() { + IsolatedStorageSecurityState state = new IsolatedStorageSecurityState(); + state.m_Options = IsolatedStorageSecurityOptions.SetInnerException; + return state; + } +#endif + +#if FEATURE_LEGACYNETCF + internal static IsolatedStorageSecurityState CreateStateToGetAvailableFreeSpace() { + IsolatedStorageSecurityState state = new IsolatedStorageSecurityState(); + state.m_Options = IsolatedStorageSecurityOptions.AvailableFreeSpace; + return state; + } + + internal static IsolatedStorageSecurityState CreateStateForIsolatedStorageFolderName() { + IsolatedStorageSecurityState state = new IsolatedStorageSecurityState(); + state.m_Options = IsolatedStorageSecurityOptions.IsolatedStorageFolderName; + return state; + } +#endif + +#endif // FEATURE_CORECLR +#if !FEATURE_LEGACYNETCF + internal static IsolatedStorageSecurityState CreateStateToIncreaseQuotaForApplication(Int64 newQuota, Int64 usedSize) { + IsolatedStorageSecurityState state = new IsolatedStorageSecurityState(); + state.m_Options = IsolatedStorageSecurityOptions.IncreaseQuotaForApplication; + state.m_Quota = newQuota; + state.m_UsedSize = usedSize; + return state; + } +#endif // !FEATURE_LEGACYNETCF + + [SecurityCritical] + private IsolatedStorageSecurityState() { + + } + + public IsolatedStorageSecurityOptions Options { + get { + return m_Options; + } + } + +#if FEATURE_CORECLR + + public String Group { + + get { + return m_Group; + } + + set { + m_Group = value; + } + } + + public String Id { + + get { + return m_Id; + } + + set { + m_Id = value; + } + } + + public String RootUserDirectory { + + get { + return m_RootUserDirectory; + } + + set { + m_RootUserDirectory = value; + } + } + +#endif // FEATURE_CORECLR + + public Int64 UsedSize { + get { + return m_UsedSize; + } + } + + public Int64 Quota { + get { + return m_Quota; + } + + set { + m_Quota = value; + } + } + +#if FEATURE_LEGACYNETCF + public Int64 AvailableFreeSpace { + get { + return m_AvailableFreeSpace; + } + set { + m_AvailableFreeSpace = value; + m_AvailableFreeSpaceComputed = true; + } + } + + public bool AvailableFreeSpaceComputed { + get { return m_AvailableFreeSpaceComputed; } + set { m_AvailableFreeSpaceComputed = value; } + } + + public string IsolatedStorageFolderName { + get { return m_IsolatedStorageFolderName; } + set { m_IsolatedStorageFolderName = value; } + } +#endif + + [SecurityCritical] + public override void EnsureState() { + if(!IsStateAvailable()) { + throw new IsolatedStorageException(Environment.GetResourceString("IsolatedStorage_Operation")); + } + } + } +} |