// Copyright © 2015 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.
using System.IO;
using System.Threading.Tasks;
namespace CefSharp
{
///
/// RequestContext extensions.
///
public static class RequestContextExtensions
{
///
/// Load an extension from the given directory. To load a crx file you must unzip it first.
/// For further details see
///
/// request context
/// absolute path to the directory that contains the extension to be loaded.
/// handle events related to browser extensions
public static void LoadExtensionFromDirectory(this IRequestContext requestContext, string rootDirectory, IExtensionHandler handler)
{
requestContext.LoadExtension(Path.GetFullPath(rootDirectory), null, handler);
}
///
/// Load extension(s) from the given directory. This methods obtains all the sub directories of
/// and calls if manifest.json
/// is found in the sub folder. To load crx file(s) you must unzip them first.
/// For further details see
///
/// request context
/// absolute path to the directory that contains the extension(s) to be loaded.
/// handle events related to browser extensions
public static void LoadExtensionsFromDirectory(this IRequestContext requestContext, string rootDirectory, IExtensionHandler handler)
{
var fullPath = Path.GetFullPath(rootDirectory);
foreach (var dir in Directory.GetDirectories(fullPath))
{
//Check the directory has a manifest.json, if so call load
if (File.Exists(Path.Combine(dir, "manifest.json")))
{
requestContext.LoadExtension(dir, null, handler);
}
}
}
///
/// Clears all HTTP authentication credentials that were added as part of handling
/// .
///
/// request context
/// A task that represents the ClearHttpAuthCredentials operation.
/// Result indicates if the credentials cleared successfully.
public static Task ClearHttpAuthCredentialsAsync(this IRequestContext requestContext)
{
var handler = new TaskCompletionCallback();
requestContext.ClearHttpAuthCredentials(handler);
return handler.Task;
}
}
}