From eaac5c263b391776c80a77b62afd36f54859a07c Mon Sep 17 00:00:00 2001 From: "Brian R. Bondy" Date: Sat, 14 Oct 2017 21:03:46 -0400 Subject: [PATCH] Merge pull request #295 from brave/chrome.windows.create Implements chrome.windows.create --- .../api/resources/browser_action_bindings.js | 12 +++++------- .../api/resources/context_menus_bindings.js | 6 ++---- atom/common/api/resources/windows_bindings.js | 19 +++++++++++++------ lib/browser/api/extensions.js | 4 ++++ 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/atom/common/api/resources/browser_action_bindings.js b/atom/common/api/resources/browser_action_bindings.js index 589c513d8..3c22d84af 100644 --- a/atom/common/api/resources/browser_action_bindings.js +++ b/atom/common/api/resources/browser_action_bindings.js @@ -4,8 +4,6 @@ var manifest = runtimeNatives.GetManifest(); var process = requireNative('process'); var extensionId = process.GetExtensionId(); -var id = 0 - var binding = { onClicked: { addListener: function (cb) { @@ -22,7 +20,7 @@ var binding = { ipc.send('chrome-browser-action-set-popup', extensionId, details) }, getPopup: function (details, cb) { - var responseId = ++id + var responseId = ipc.guid() ipc.once('chrome-browser-action-get-popup-response-' + responseId, function(evt, details) { cb(details) }) @@ -32,7 +30,7 @@ var binding = { ipc.send('chrome-browser-action-set-title', extensionId, details) }, getTitle: function (details, cb) { - var responseId = ++id + var responseId = ipc.guid() ipc.once('chrome-browser-action-get-title-response-' + responseId, function(evt, result) { cb(result) }) @@ -44,7 +42,7 @@ var binding = { console.warn('chrome.browserAction.setIcon imageData is not supported yet') return } - var responseId = ++id + var responseId = ipc.guid() ipc.once('chrome-browser-action-set-icon-response-' + responseId, function(evt) { cb && cb() }) @@ -54,7 +52,7 @@ var binding = { ipc.send('chrome-browser-action-set-badge-text', extensionId, details) }, getBadgeText: function (details, cb) { - var responseId = ++id + var responseId = ipc.guid() ipc.once('chrome-browser-action-get-badge-text-response-' + responseId, function(evt, details) { cb(details) }) @@ -64,7 +62,7 @@ var binding = { ipc.send('chrome-browser-action-set-badge-background-color', extensionId, details) }, getBadgeBackgroundColor: function (details, cb) { - var responseId = ++id + var responseId = ipc.guid() ipc.once('chrome-browser-action-get-badge-text-response-' + responseId, function(evt, details) { cb(details) }) diff --git a/atom/common/api/resources/context_menus_bindings.js b/atom/common/api/resources/context_menus_bindings.js index 97055828b..e232b4847 100644 --- a/atom/common/api/resources/context_menus_bindings.js +++ b/atom/common/api/resources/context_menus_bindings.js @@ -3,14 +3,12 @@ var process = requireNative('process') var extensionId = process.GetExtensionId() var runtime = require('runtime').binding -var id = 0 - var createMenuItemId = () => { - return 'context-menus-' + extensionId + id++ + return 'context-menus-' + extensionId + ipc.guid() } var createResponseId = () => { - return extensionId + id++ + return extensionId + ipc.guid() } var binding = { diff --git a/atom/common/api/resources/windows_bindings.js b/atom/common/api/resources/windows_bindings.js index a7e934104..ea5456389 100644 --- a/atom/common/api/resources/windows_bindings.js +++ b/atom/common/api/resources/windows_bindings.js @@ -2,8 +2,6 @@ var binding = require('binding').Binding.create('windows') var ipc = require('ipc_utils') -var id = 1; - binding.registerCustomHook(function (bindingsAPI, extensionId) { var apiFunctions = bindingsAPI.apiFunctions var windows = bindingsAPI.compiledApi @@ -21,7 +19,16 @@ binding.registerCustomHook(function (bindingsAPI, extensionId) { }) apiFunctions.setHandleRequest('create', function (createData, cb) { - console.warn('chrome.windows.create is not supported yet') + var responseId = ipc.guid() + cb && ipc.once('chrome-windows-create-response-' + responseId, function (evt, win, error) { + if (error) { + lastError.run('windows.create', error, '', cb) + } else { + cb(win) + } + }) + + ipc.send('chrome-windows-create', responseId, createData) }) apiFunctions.setHandleRequest('getCurrent', function () { @@ -33,7 +40,7 @@ binding.registerCustomHook(function (bindingsAPI, extensionId) { cb = arguments[1] } - var responseId = ++id + var responseId = ipc.guid() ipc.once('chrome-windows-get-current-response-' + responseId, function (evt, win) { cb(win) }) @@ -48,7 +55,7 @@ binding.registerCustomHook(function (bindingsAPI, extensionId) { cb = arguments[1] } - var responseId = ++id + var responseId = ipc.guid() ipc.once('chrome-windows-get-all-response-' + responseId, function (evt, win) { cb(win) }) @@ -56,7 +63,7 @@ binding.registerCustomHook(function (bindingsAPI, extensionId) { }) apiFunctions.setHandleRequest('update', function (windowId, updateInfo, cb) { - var responseId = ++id + var responseId = ipc.guid() cb && ipc.once('chrome-windows-update-response-' + responseId, function (evt, win) { cb(win) }) diff --git a/lib/browser/api/extensions.js b/lib/browser/api/extensions.js index d4353c572..affd4585e 100644 --- a/lib/browser/api/extensions.js +++ b/lib/browser/api/extensions.js @@ -618,6 +618,10 @@ var windowInfo = function (win, populateTabs) { } } +ipcMain.on('chrome-windows-create', function (evt, responseId, createData) { + process.emit('chrome-windows-create-action', responseId, createData, evt) +}) + ipcMain.on('chrome-windows-get-current', function (evt, responseId, getInfo) { var response = { id: -1,