- Added BrowserWindow.AddExtension, RemoveExtension, GetExtensions support. Not yet tested

This commit is contained in:
Guillaume
2019-09-26 13:27:22 +02:00
parent ba64639c1d
commit 8b66bdd7cb
3 changed files with 53 additions and 20 deletions

View File

@@ -2318,9 +2318,19 @@ namespace ElectronNET.API
/// </summary>
/// <param name="path">Path to the Chrome extension</param>
/// <returns></returns>
public static string AddExtension(string path)
public static Task<string> AddExtensionAsync(string path)
{
throw new NotImplementedException();
var taskCompletionSource = new TaskCompletionSource<string>();
BridgeConnector.Socket.On("browserWindow-addExtension-completed", (extensionname) => {
BridgeConnector.Socket.Off("browserWindow-addExtension-completed");
taskCompletionSource.SetResult(extensionname.ToString());
});
BridgeConnector.Socket.Emit("browserWindowAddExtension", path);
return taskCompletionSource.Task;
}
/// <summary>
@@ -2330,7 +2340,7 @@ namespace ElectronNET.API
/// <param name="name">Name of the Chrome extension to remove</param>
public static void RemoveExtension(string name)
{
throw new NotImplementedException();
BridgeConnector.Socket.Emit("browserWindowRemoveExtension", name);
}
/// <summary>
@@ -2338,9 +2348,20 @@ namespace ElectronNET.API
/// Note: This API cannot be called before the ready event of the app module is emitted.
/// </summary>
/// <returns></returns>
public static Dictionary<string, ChromeExtensionInfo> GetExtensions()
public static Task<ChromeExtensionInfo[]> GetExtensionsAsync()
{
throw new NotImplementedException();
var taskCompletionSource = new TaskCompletionSource<ChromeExtensionInfo[]>();
BridgeConnector.Socket.On("browserWindow-getExtensions-completed", (extensionslist) => {
BridgeConnector.Socket.Off("browserWindow-getExtensions-completed");
var chromeExtensionInfos = ((JArray)extensionslist).ToObject<ChromeExtensionInfo[]>();
taskCompletionSource.SetResult(chromeExtensionInfos);
});
BridgeConnector.Socket.Emit("browserWindowGetExtensions");
return taskCompletionSource.Task;
}
}
}

View File

@@ -9,30 +9,20 @@ namespace ElectronNET.API.Entities
/// </summary>
public class ChromeExtensionInfo
{
private string _name;
private string _version;
internal ChromeExtensionInfo(string name, string version)
public ChromeExtensionInfo(string name, string version)
{
_name = name;
_version = version;
Name = name;
Version = version;
}
/// <summary>
/// Name of the Chrome extension
/// </summary>
public string Name
{
get => _name;
}
public string Name { get; set; }
/// <summary>
/// Version of the Chrome extension
/// </summary>
public string Version
{
get => _version;
}
public string Version { get; set; }
}
}

View File

@@ -706,6 +706,28 @@ export = (socket: SocketIO.Socket, app: Electron.App) => {
getWindowById(id).setVibrancy(type);
});
socket.on('browserWindowAddExtension', (path) => {
const extensionName = Electron.BrowserWindow.addExtension(path);
electronSocket.emit('browserWindow-addExtension-completed', extensionName);
});
socket.on('browserWindowRemoveExtension', (name) => {
Electron.BrowserWindow.removeExtension(name);
});
socket.on('browserWindowGetExtensions', (path) => {
const extensionsList = Electron.BrowserWindow.getExtensions();
let chromeExtensionInfo = new Array();
Object.keys(extensionsList).forEach(key => {
chromeExtensionInfo.push(extensionsList[key]);
});
electronSocket.emit('browserWindow-getExtensions-completed', chromeExtensionInfo);
});
function getWindowById(id: number): Electron.BrowserWindow {
for (let index = 0; index < windows.length; index++) {
const element = windows[index];