File: Abstractions\HttpContextWrapper.cs
Project: ndp\fx\src\xsp\system\Web\System.Web.csproj (System.Web)
//------------------------------------------------------------------------------
// <copyright file="HttpContextWrapper2.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
 
namespace System.Web {
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Diagnostics.CodeAnalysis;
    using System.Globalization;
    using System.Runtime.CompilerServices;
    using System.Security.Principal;
    using System.Threading.Tasks;
    using System.Web.Caching;
    using System.Web.Configuration;
    using System.Web.Instrumentation;
    using System.Web.Profile;
    using System.Web.SessionState;
    using System.Web.WebSockets;
 
    [TypeForwardedFrom("System.Web.Abstractions, Version=3.5.0.0, Culture=Neutral, PublicKeyToken=31bf3856ad364e35")]
    public class HttpContextWrapper : HttpContextBase {
        private readonly HttpContext _context;
 
        public HttpContextWrapper(HttpContext httpContext) {
            if (httpContext == null) {
                throw new ArgumentNullException("httpContext");
            }
            _context = httpContext;
        }
 
        public override ISubscriptionToken AddOnRequestCompleted(Action<HttpContextBase> callback) {
            return _context.AddOnRequestCompleted(WrapCallback(callback));
        }
 
        public override Exception[] AllErrors {
            get {
                return _context.AllErrors;
            }
        }
 
        [EditorBrowsable(EditorBrowsableState.Advanced)]
        public override bool AllowAsyncDuringSyncStages {
            get {
                return _context.AllowAsyncDuringSyncStages;
            }
            set {
                _context.AllowAsyncDuringSyncStages = value;
            }
        }
 
        public override HttpApplicationStateBase Application {
            get {
                return new HttpApplicationStateWrapper(_context.Application);
            }
        }
 
        //
        public override HttpApplication ApplicationInstance {
            get {
                return _context.ApplicationInstance;
            }
            set {
                _context.ApplicationInstance = value;
            }
        }
 
        public override AsyncPreloadModeFlags AsyncPreloadMode {
            get {
                return _context.AsyncPreloadMode;
            }
            set {
                _context.AsyncPreloadMode = value;
            }
        }
 
        //
        public override Cache Cache {
            get {
                return _context.Cache;
            }
        }
 
        public override IHttpHandler CurrentHandler {
            get {
                return _context.CurrentHandler;
            }
        }
 
        public override RequestNotification CurrentNotification {
            get {
                return _context.CurrentNotification;
            }
        }
 
        public override Exception Error {
            get {
                return _context.Error;
            }
        }
 
        public override IHttpHandler Handler {
            get {
                return _context.Handler;
            }
            set {
                _context.Handler = value;
            }
        }
 
        public override bool IsCustomErrorEnabled {
            get {
                return _context.IsCustomErrorEnabled;
            }
        }
 
        public override bool IsDebuggingEnabled {
            get {
                return _context.IsDebuggingEnabled;
            }
        }
 
        public override bool IsPostNotification {
            get {
                return _context.IsPostNotification;
            }
        }
 
        public override bool IsWebSocketRequest {
            get {
                return _context.IsWebSocketRequest;
            }
        }
 
        public override bool IsWebSocketRequestUpgrading {
            get {
                return _context.IsWebSocketRequestUpgrading;
            }
        }
 
        public override IDictionary Items {
            get {
                return _context.Items;
            }
        }
 
        public override PageInstrumentationService PageInstrumentation {
            get {
                return _context.PageInstrumentation;
            }
        }
 
        public override IHttpHandler PreviousHandler {
            get {
                return _context.PreviousHandler;
            }
        }
 
        //
        public override ProfileBase Profile {
            get {
                return _context.Profile;
            }
        }
 
        public override HttpRequestBase Request {
            get {
                return new HttpRequestWrapper(_context.Request);
            }
        }
 
        public override HttpResponseBase Response {
            get {
                return new HttpResponseWrapper(_context.Response);
            }
        }
 
        public override HttpServerUtilityBase Server {
            get {
                return new HttpServerUtilityWrapper(_context.Server);
            }
        }
 
        public override HttpSessionStateBase Session {
            get {
                HttpSessionState session = _context.Session;
                return (session != null) ? new HttpSessionStateWrapper(session) : null;
            }
        }
 
        public override bool SkipAuthorization {
            get {
                return _context.SkipAuthorization;
            }
            set {
                _context.SkipAuthorization = value;
            }
        }
 
        public override DateTime Timestamp {
            get {
                return _context.Timestamp;
            }
        }
 
        public override bool ThreadAbortOnTimeout {
            get {
                return _context.ThreadAbortOnTimeout;
            }
            set {
                _context.ThreadAbortOnTimeout = value;
            }
        }
 
        //
        public override TraceContext Trace {
            get {
                return _context.Trace;
            }
        }
 
        public override IPrincipal User {
            get {
                return _context.User;
            }
            set {
                _context.User = value;
            }
        }
 
        public override string WebSocketNegotiatedProtocol {
            get {
                return _context.WebSocketNegotiatedProtocol;
            }
        }
 
        public override IList<string> WebSocketRequestedProtocols {
            get {
                return _context.WebSocketRequestedProtocols;
            }
        }
 
        public override void AcceptWebSocketRequest(Func<AspNetWebSocketContext, Task> userFunc) {
            _context.AcceptWebSocketRequest(userFunc);
        }
 
        public override void AcceptWebSocketRequest(Func<AspNetWebSocketContext, Task> userFunc, AspNetWebSocketOptions options) {
            _context.AcceptWebSocketRequest(userFunc, options);
        }    
 
        public override void AddError(Exception errorInfo) {
            _context.AddError(errorInfo);
        }
 
        public override void ClearError() {
            _context.ClearError();
        }
 
        public override ISubscriptionToken DisposeOnPipelineCompleted(IDisposable target) {
            return _context.DisposeOnPipelineCompleted(target);
        }
 
        [SuppressMessage("Microsoft.Globalization", "CA1304:SpecifyCultureInfo",
            Justification = "Matches HttpContext class")]
        public override object GetGlobalResourceObject(string classKey, string resourceKey) {
            return HttpContext.GetGlobalResourceObject(classKey, resourceKey);
        }
 
        public override object GetGlobalResourceObject(string classKey, string resourceKey, CultureInfo culture) {
            return HttpContext.GetGlobalResourceObject(classKey, resourceKey, culture);
        }
 
        [SuppressMessage("Microsoft.Globalization", "CA1304:SpecifyCultureInfo",
            Justification = "Matches HttpContext class")]
        public override object GetLocalResourceObject(string virtualPath, string resourceKey) {
            return HttpContext.GetLocalResourceObject(virtualPath, resourceKey);
        }
 
        public override object GetLocalResourceObject(string virtualPath, string resourceKey, CultureInfo culture) {
            return HttpContext.GetLocalResourceObject(virtualPath, resourceKey, culture);
        }
 
        public override object GetSection(string sectionName) {
            return _context.GetSection(sectionName);
        }
 
        public override void RemapHandler(IHttpHandler handler) {
            _context.RemapHandler(handler);
        }
 
        public override void RewritePath(string path) {
            _context.RewritePath(path);
        }
 
        public override void RewritePath(string path, bool rebaseClientPath) {
            _context.RewritePath(path, rebaseClientPath);
        }
 
        public override void RewritePath(string filePath, string pathInfo, string queryString) {
            _context.RewritePath(filePath, pathInfo, queryString);
        }
 
        public override void RewritePath(string filePath, string pathInfo, string queryString, bool setClientFilePath) {
            _context.RewritePath(filePath, pathInfo, queryString, setClientFilePath);
        }
 
        public override void SetSessionStateBehavior(SessionStateBehavior sessionStateBehavior) {
            _context.SetSessionStateBehavior(sessionStateBehavior);
        }
 
        public override object GetService(Type serviceType) {
            return ((IServiceProvider)_context).GetService(serviceType);
        }
 
        internal static Action<HttpContext> WrapCallback(Action<HttpContextBase> callback) {
            if (callback != null) {
                return context => callback(new HttpContextWrapper(context));
            }
            else {
                return null;
            }
        }
    }
}