diff --git a/lib/renderer/api/ipc-renderer.ts b/lib/renderer/api/ipc-renderer.ts index 11c7daa1f1801..3ba7604cbe689 100644 --- a/lib/renderer/api/ipc-renderer.ts +++ b/lib/renderer/api/ipc-renderer.ts @@ -18,7 +18,7 @@ ipcRenderer.sendToHost = function (channel, ...args) { }; ipcRenderer.sendTo = function (webContentsId, channel, ...args) { - return ipc.sendTo(internal, webContentsId, channel, args); + return ipc.sendTo(webContentsId, channel, args); }; ipcRenderer.invoke = async function (channel, ...args) { diff --git a/lib/renderer/ipc-renderer-internal.ts b/lib/renderer/ipc-renderer-internal.ts index d69dc14c5d384..f37ea0d724583 100644 --- a/lib/renderer/ipc-renderer-internal.ts +++ b/lib/renderer/ipc-renderer-internal.ts @@ -4,7 +4,8 @@ const { ipc } = process._linkedBinding('electron_renderer_ipc'); const internal = true; -const ipcRendererInternal = new EventEmitter() as any as ElectronInternal.IpcRendererInternal; +export const ipcRendererInternal = new EventEmitter() as any as ElectronInternal.IpcRendererInternal; + ipcRendererInternal.send = function (channel, ...args) { return ipc.send(internal, channel, args); }; @@ -13,10 +14,6 @@ ipcRendererInternal.sendSync = function (channel, ...args) { return ipc.sendSync(internal, channel, args); }; -ipcRendererInternal.sendTo = function (webContentsId, channel, ...args) { - return ipc.sendTo(internal, webContentsId, channel, args); -}; - ipcRendererInternal.invoke = async function (channel: string, ...args: any[]) { const { error, result } = await ipc.invoke(internal, channel, args); if (error) { @@ -24,5 +21,3 @@ ipcRendererInternal.invoke = async function (channel: string, ...args: any[]) } return result; }; - -export { ipcRendererInternal }; diff --git a/shell/browser/api/electron_api_web_contents.cc b/shell/browser/api/electron_api_web_contents.cc index 7a84186112d88..d0798d347df00 100644 --- a/shell/browser/api/electron_api_web_contents.cc +++ b/shell/browser/api/electron_api_web_contents.cc @@ -1601,8 +1601,7 @@ void WebContents::MessageSync( internal, channel, std::move(arguments)); } -void WebContents::MessageTo(bool internal, - int32_t web_contents_id, +void WebContents::MessageTo(int32_t web_contents_id, const std::string& channel, blink::CloneableMessage arguments) { TRACE_EVENT1("electron", "WebContents::MessageTo", "channel", channel); @@ -1617,7 +1616,7 @@ void WebContents::MessageTo(bool internal, WebFrameMain::From(JavascriptEnvironment::GetIsolate(), frame); int32_t sender_id = ID(); - web_frame_main->GetRendererApi()->Message(internal, channel, + web_frame_main->GetRendererApi()->Message(false /* internal */, channel, std::move(arguments), sender_id); } } diff --git a/shell/browser/api/electron_api_web_contents.h b/shell/browser/api/electron_api_web_contents.h index 91e241c4ca021..3bd2fcbf1287c 100644 --- a/shell/browser/api/electron_api_web_contents.h +++ b/shell/browser/api/electron_api_web_contents.h @@ -409,8 +409,7 @@ class WebContents : public gin::Wrappable, blink::CloneableMessage arguments, electron::mojom::ElectronBrowser::MessageSyncCallback callback, content::RenderFrameHost* render_frame_host); - void MessageTo(bool internal, - int32_t web_contents_id, + void MessageTo(int32_t web_contents_id, const std::string& channel, blink::CloneableMessage arguments); void MessageHost(const std::string& channel, diff --git a/shell/browser/electron_browser_handler_impl.cc b/shell/browser/electron_browser_handler_impl.cc index 6da92ea41676e..665d2b2897b3c 100644 --- a/shell/browser/electron_browser_handler_impl.cc +++ b/shell/browser/electron_browser_handler_impl.cc @@ -86,14 +86,12 @@ void ElectronBrowserHandlerImpl::MessageSync(bool internal, } } -void ElectronBrowserHandlerImpl::MessageTo(bool internal, - int32_t web_contents_id, +void ElectronBrowserHandlerImpl::MessageTo(int32_t web_contents_id, const std::string& channel, blink::CloneableMessage arguments) { api::WebContents* api_web_contents = api::WebContents::From(web_contents()); if (api_web_contents) { - api_web_contents->MessageTo(internal, web_contents_id, channel, - std::move(arguments)); + api_web_contents->MessageTo(web_contents_id, channel, std::move(arguments)); } } diff --git a/shell/browser/electron_browser_handler_impl.h b/shell/browser/electron_browser_handler_impl.h index 4f8b9c0fa8450..06a5c0a6605ef 100644 --- a/shell/browser/electron_browser_handler_impl.h +++ b/shell/browser/electron_browser_handler_impl.h @@ -44,8 +44,7 @@ class ElectronBrowserHandlerImpl : public mojom::ElectronBrowser, const std::string& channel, blink::CloneableMessage arguments, MessageSyncCallback callback) override; - void MessageTo(bool internal, - int32_t web_contents_id, + void MessageTo(int32_t web_contents_id, const std::string& channel, blink::CloneableMessage arguments) override; void MessageHost(const std::string& channel, diff --git a/shell/common/api/api.mojom b/shell/common/api/api.mojom index ba3078b45246f..1206b5858a183 100644 --- a/shell/common/api/api.mojom +++ b/shell/common/api/api.mojom @@ -63,7 +63,6 @@ interface ElectronBrowser { // Emits an event from the |ipcRenderer| JavaScript object in the target // WebContents's main frame, specified by |web_contents_id|. MessageTo( - bool internal, int32 web_contents_id, string channel, blink.mojom.CloneableMessage arguments); diff --git a/shell/renderer/api/electron_api_ipc_renderer.cc b/shell/renderer/api/electron_api_ipc_renderer.cc index d080769254a3b..8f983fd0f535f 100644 --- a/shell/renderer/api/electron_api_ipc_renderer.cc +++ b/shell/renderer/api/electron_api_ipc_renderer.cc @@ -172,7 +172,6 @@ class IPCRenderer : public gin::Wrappable, void SendTo(v8::Isolate* isolate, gin_helper::ErrorThrower thrower, - bool internal, int32_t web_contents_id, const std::string& channel, v8::Local arguments) { @@ -184,7 +183,7 @@ class IPCRenderer : public gin::Wrappable, if (!electron::SerializeV8Value(isolate, arguments, &message)) { return; } - electron_browser_remote_->MessageTo(internal, web_contents_id, channel, + electron_browser_remote_->MessageTo(web_contents_id, channel, std::move(message)); } diff --git a/typings/internal-ambient.d.ts b/typings/internal-ambient.d.ts index 1f18b7efa3327..590e8d7caba64 100644 --- a/typings/internal-ambient.d.ts +++ b/typings/internal-ambient.d.ts @@ -35,7 +35,7 @@ declare namespace NodeJS { send(internal: boolean, channel: string, args: any[]): void; sendSync(internal: boolean, channel: string, args: any[]): any; sendToHost(channel: string, args: any[]): void; - sendTo(internal: boolean, webContentsId: number, channel: string, args: any[]): void; + sendTo(webContentsId: number, channel: string, args: any[]): void; invoke(internal: boolean, channel: string, args: any[]): Promise<{ error: string, result: T }>; postMessage(channel: string, message: any, transferables: MessagePort[]): void; } diff --git a/typings/internal-electron.d.ts b/typings/internal-electron.d.ts index e8a2466feb0c3..88f7a9fcca11f 100644 --- a/typings/internal-electron.d.ts +++ b/typings/internal-electron.d.ts @@ -229,11 +229,10 @@ declare namespace ElectronInternal { appIcon: Electron.NativeImage | null; } - interface IpcRendererInternal extends Electron.IpcRenderer { + interface IpcRendererInternal extends NodeJS.EventEmitter, Pick { invoke(channel: string, ...args: any[]): Promise; } - // Internal IPC has _replyInternal and NO reply method interface IpcMainInternalEvent extends Omit { }