2021-01-11 10:45:32 +10:00
|
|
|
// Copyright © 2020 The CefSharp Authors. All rights reserved.
|
|
|
|
|
//
|
|
|
|
|
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
|
|
//NOTE:Classes in the CefSharp.Core namespace have been hidden from intellisnse so users don't use them directly
|
|
|
|
|
|
2021-01-13 14:56:27 +10:00
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
2021-01-11 10:45:32 +10:00
|
|
|
namespace CefSharp
|
|
|
|
|
{
|
|
|
|
|
/// <inheritdoc/>
|
2021-01-13 14:56:27 +10:00
|
|
|
public class RequestContext : IRequestContext
|
2021-01-11 10:45:32 +10:00
|
|
|
{
|
2021-01-13 14:56:27 +10:00
|
|
|
private CefSharp.Core.RequestContext requestContext;
|
|
|
|
|
|
2021-01-11 10:45:32 +10:00
|
|
|
/// <inheritdoc/>
|
2021-01-13 14:56:27 +10:00
|
|
|
public RequestContext()
|
2021-01-11 10:45:32 +10:00
|
|
|
{
|
2021-01-13 14:56:27 +10:00
|
|
|
requestContext = new CefSharp.Core.RequestContext();
|
2021-01-11 10:45:32 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
2021-01-13 14:56:27 +10:00
|
|
|
public RequestContext(IRequestContext otherRequestContext)
|
2021-01-11 10:45:32 +10:00
|
|
|
{
|
2022-12-06 10:03:47 +10:00
|
|
|
if (otherRequestContext == null)
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentNullException(nameof(otherRequestContext));
|
|
|
|
|
}
|
2021-01-13 14:56:27 +10:00
|
|
|
requestContext = new CefSharp.Core.RequestContext(otherRequestContext);
|
2021-01-11 10:45:32 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
2021-01-13 14:56:27 +10:00
|
|
|
public RequestContext(IRequestContext otherRequestContext, IRequestContextHandler requestContextHandler)
|
2021-01-11 10:45:32 +10:00
|
|
|
{
|
2022-12-06 10:03:47 +10:00
|
|
|
if (otherRequestContext == null)
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentNullException(nameof(otherRequestContext));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (requestContextHandler == null)
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentNullException(nameof(requestContextHandler));
|
|
|
|
|
}
|
|
|
|
|
|
2021-01-13 14:56:27 +10:00
|
|
|
requestContext = new CefSharp.Core.RequestContext(otherRequestContext, requestContextHandler);
|
2021-01-11 10:45:32 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
2021-01-13 14:56:27 +10:00
|
|
|
public RequestContext(IRequestContextHandler requestContextHandler)
|
2021-01-11 10:45:32 +10:00
|
|
|
{
|
2022-12-06 10:03:47 +10:00
|
|
|
if (requestContextHandler == null)
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentNullException(nameof(requestContextHandler));
|
|
|
|
|
}
|
2021-01-13 14:56:27 +10:00
|
|
|
requestContext = new CefSharp.Core.RequestContext(requestContextHandler);
|
2021-01-11 10:45:32 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
2021-01-13 14:56:27 +10:00
|
|
|
public RequestContext(RequestContextSettings settings)
|
2021-01-11 10:45:32 +10:00
|
|
|
{
|
2022-12-06 10:03:47 +10:00
|
|
|
if (settings == null)
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentNullException(nameof(settings));
|
|
|
|
|
}
|
2021-01-13 14:56:27 +10:00
|
|
|
requestContext = new CefSharp.Core.RequestContext(settings.settings);
|
2021-01-11 10:45:32 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
2021-01-13 14:56:27 +10:00
|
|
|
public RequestContext(RequestContextSettings settings, IRequestContextHandler requestContextHandler)
|
2021-01-11 10:45:32 +10:00
|
|
|
{
|
2022-12-06 10:03:47 +10:00
|
|
|
if (settings == null)
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentNullException(nameof(settings));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (requestContextHandler == null)
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentNullException(nameof(requestContextHandler));
|
|
|
|
|
}
|
|
|
|
|
|
2021-01-13 14:56:27 +10:00
|
|
|
requestContext = new CefSharp.Core.RequestContext(settings.settings, requestContextHandler);
|
2021-01-11 10:45:32 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Creates a new RequestContextBuilder which can be used to fluently set
|
|
|
|
|
/// preferences
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>Returns a new RequestContextBuilder</returns>
|
|
|
|
|
public static RequestContextBuilder Configure()
|
|
|
|
|
{
|
|
|
|
|
var builder = new RequestContextBuilder();
|
|
|
|
|
|
|
|
|
|
return builder;
|
|
|
|
|
}
|
2021-01-13 14:56:27 +10:00
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public bool IsGlobal
|
|
|
|
|
{
|
|
|
|
|
get { return requestContext.IsGlobal; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public string CachePath
|
|
|
|
|
{
|
|
|
|
|
get { return requestContext.CachePath; }
|
|
|
|
|
}
|
|
|
|
|
|
2021-04-06 16:38:48 +10:00
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public bool IsDisposed
|
|
|
|
|
{
|
|
|
|
|
get { return requestContext.IsDisposed; }
|
|
|
|
|
}
|
|
|
|
|
|
2021-01-13 14:56:27 +10:00
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public bool IsSame(IRequestContext context)
|
|
|
|
|
{
|
|
|
|
|
return requestContext.IsSame(context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public bool IsSharingWith(IRequestContext context)
|
|
|
|
|
{
|
|
|
|
|
return requestContext.IsSharingWith(context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public ICookieManager GetCookieManager(ICompletionCallback callback)
|
|
|
|
|
{
|
|
|
|
|
return requestContext.GetCookieManager(callback);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public bool RegisterSchemeHandlerFactory(string schemeName, string domainName, ISchemeHandlerFactory factory)
|
|
|
|
|
{
|
|
|
|
|
return requestContext.RegisterSchemeHandlerFactory(schemeName, domainName, factory);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public bool ClearSchemeHandlerFactories()
|
|
|
|
|
{
|
|
|
|
|
return requestContext.ClearSchemeHandlerFactories();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public bool HasPreference(string name)
|
|
|
|
|
{
|
|
|
|
|
return requestContext.HasPreference(name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public object GetPreference(string name)
|
|
|
|
|
{
|
|
|
|
|
return requestContext.GetPreference(name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public IDictionary<string, object> GetAllPreferences(bool includeDefaults)
|
|
|
|
|
{
|
|
|
|
|
return requestContext.GetAllPreferences(includeDefaults);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public bool CanSetPreference(string name)
|
|
|
|
|
{
|
|
|
|
|
return requestContext.CanSetPreference(name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public bool SetPreference(string name, object value, out string error)
|
|
|
|
|
{
|
|
|
|
|
return requestContext.SetPreference(name, value, out error);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public void ClearCertificateExceptions(ICompletionCallback callback)
|
|
|
|
|
{
|
|
|
|
|
requestContext.ClearCertificateExceptions(callback);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public void ClearHttpAuthCredentials(ICompletionCallback callback = null)
|
|
|
|
|
{
|
|
|
|
|
requestContext.ClearHttpAuthCredentials(callback);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public void CloseAllConnections(ICompletionCallback callback)
|
|
|
|
|
{
|
|
|
|
|
requestContext.CloseAllConnections(callback);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public Task<ResolveCallbackResult> ResolveHostAsync(Uri origin)
|
|
|
|
|
{
|
|
|
|
|
return requestContext.ResolveHostAsync(origin);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public bool DidLoadExtension(string extensionId)
|
|
|
|
|
{
|
|
|
|
|
return requestContext.DidLoadExtension(extensionId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public IExtension GetExtension(string extensionId)
|
|
|
|
|
{
|
|
|
|
|
return requestContext.GetExtension(extensionId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public bool GetExtensions(out IList<string> extensionIds)
|
|
|
|
|
{
|
|
|
|
|
return requestContext.GetExtensions(out extensionIds);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public bool HasExtension(string extensionId)
|
|
|
|
|
{
|
|
|
|
|
return requestContext.CanSetPreference(extensionId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public void LoadExtension(string rootDirectory, string manifestJson, IExtensionHandler handler)
|
|
|
|
|
{
|
2021-09-03 10:51:18 +10:00
|
|
|
if (Cef.CurrentlyOnThread(CefThreadIds.TID_UI))
|
|
|
|
|
{
|
|
|
|
|
requestContext.LoadExtension(rootDirectory, manifestJson, handler);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Cef.UIThreadTaskFactory.StartNew(() =>
|
|
|
|
|
{
|
|
|
|
|
requestContext.LoadExtension(rootDirectory, manifestJson, handler);
|
|
|
|
|
});
|
|
|
|
|
}
|
2021-01-13 14:56:27 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
public void Dispose()
|
|
|
|
|
{
|
|
|
|
|
requestContext.Dispose();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Used internally to get the underlying <see cref="IRequestContext"/> instance.
|
|
|
|
|
/// Unlikely you'll use this yourself.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>the inner most instance</returns>
|
|
|
|
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
|
|
|
|
|
public IRequestContext UnWrap()
|
|
|
|
|
{
|
|
|
|
|
return requestContext;
|
|
|
|
|
}
|
2021-01-11 10:45:32 +10:00
|
|
|
}
|
|
|
|
|
}
|