refactor: 'focus-change' does not need guestInstanceId (#29001)

* refactor: 'focus-change' does not need guestInstanceId

* refactor: rename internal 'focus-change' event to '-focus-change'
This commit is contained in:
Milan Burda 2021-05-05 20:37:40 +02:00 committed by GitHub
parent 476e908269
commit 2086e1903c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 12 additions and 23 deletions

View file

@ -319,13 +319,8 @@ handleMessageSync(IPC_MESSAGES.GUEST_VIEW_MANAGER_DETACH_GUEST, function (event,
}); });
// this message is sent by the actual <webview> // this message is sent by the actual <webview>
ipcMainInternal.on(IPC_MESSAGES.GUEST_VIEW_MANAGER_FOCUS_CHANGE, function (event: ElectronInternal.IpcMainInternalEvent, focus: boolean, guestInstanceId: number) { ipcMainInternal.on(IPC_MESSAGES.GUEST_VIEW_MANAGER_FOCUS_CHANGE, function (event: ElectronInternal.IpcMainInternalEvent, focus: boolean) {
const guest = getGuest(guestInstanceId); event.sender.emit('-focus-change', {}, focus);
if (guest === event.sender) {
event.sender.emit('focus-change', {}, focus, guestInstanceId);
} else {
console.error(`focus-change for guestInstanceId: ${guestInstanceId}`);
}
}); });
handleMessage(IPC_MESSAGES.GUEST_VIEW_MANAGER_CALL, function (event, guestInstanceId: number, method: string, args: any[]) { handleMessage(IPC_MESSAGES.GUEST_VIEW_MANAGER_CALL, function (event, guestInstanceId: number, method: string, args: any[]) {
@ -372,18 +367,12 @@ handleMessage(IPC_MESSAGES.GUEST_VIEW_MANAGER_CAPTURE_PAGE, async function (even
// Returns WebContents from its guest id hosted in given webContents. // Returns WebContents from its guest id hosted in given webContents.
const getGuestForWebContents = function (guestInstanceId: number, contents: Electron.WebContents) { const getGuestForWebContents = function (guestInstanceId: number, contents: Electron.WebContents) {
const guest = getGuest(guestInstanceId); const guestInstance = guestInstances.get(guestInstanceId);
if (!guest) { if (!guestInstance) {
throw new Error(`Invalid guestInstanceId: ${guestInstanceId}`); throw new Error(`Invalid guestInstanceId: ${guestInstanceId}`);
} }
if (guest.hostWebContents !== contents) { if (guestInstance.guest.hostWebContents !== contents) {
throw new Error(`Access denied to guestInstanceId: ${guestInstanceId}`); throw new Error(`Access denied to guestInstanceId: ${guestInstanceId}`);
} }
return guest; return guestInstance.guest;
};
// Returns WebContents from its guest id.
const getGuest = function (guestInstanceId: number) {
const guestInstance = guestInstances.get(guestInstanceId);
if (guestInstance != null) return guestInstance.guest;
}; };

View file

@ -18,7 +18,7 @@ export const webViewEvents: Record<string, readonly string[]> = {
'did-navigate': ['url', 'httpResponseCode', 'httpStatusText'], 'did-navigate': ['url', 'httpResponseCode', 'httpStatusText'],
'did-frame-navigate': ['url', 'httpResponseCode', 'httpStatusText', 'isMainFrame', 'frameProcessId', 'frameRoutingId'], 'did-frame-navigate': ['url', 'httpResponseCode', 'httpStatusText', 'isMainFrame', 'frameProcessId', 'frameRoutingId'],
'did-navigate-in-page': ['url', 'isMainFrame', 'frameProcessId', 'frameRoutingId'], 'did-navigate-in-page': ['url', 'isMainFrame', 'frameProcessId', 'frameRoutingId'],
'focus-change': ['focus', 'guestInstanceId'], '-focus-change': ['focus'],
close: [], close: [],
crashed: [], crashed: [],
'render-process-gone': ['details'], 'render-process-gone': ['details'],

View file

@ -26,7 +26,7 @@ const dispatchEvent = function (
if (eventName === 'load-commit') { if (eventName === 'load-commit') {
webView.onLoadCommit(props); webView.onLoadCommit(props);
} else if (eventName === 'focus-change') { } else if (eventName === '-focus-change') {
webView.onFocusChange(); webView.onFocusChange();
} }
}; };

View file

@ -3,16 +3,16 @@ import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
const v8Util = process._linkedBinding('electron_common_v8_util'); const v8Util = process._linkedBinding('electron_common_v8_util');
function handleFocusBlur (guestInstanceId: number) { function handleFocusBlur () {
// Note that while Chromium content APIs have observer for focus/blur, they // Note that while Chromium content APIs have observer for focus/blur, they
// unfortunately do not work for webview. // unfortunately do not work for webview.
window.addEventListener('focus', () => { window.addEventListener('focus', () => {
ipcRendererInternal.send(IPC_MESSAGES.GUEST_VIEW_MANAGER_FOCUS_CHANGE, true, guestInstanceId); ipcRendererInternal.send(IPC_MESSAGES.GUEST_VIEW_MANAGER_FOCUS_CHANGE, true);
}); });
window.addEventListener('blur', () => { window.addEventListener('blur', () => {
ipcRendererInternal.send(IPC_MESSAGES.GUEST_VIEW_MANAGER_FOCUS_CHANGE, false, guestInstanceId); ipcRendererInternal.send(IPC_MESSAGES.GUEST_VIEW_MANAGER_FOCUS_CHANGE, false);
}); });
} }
@ -32,6 +32,6 @@ export function webViewInit (
if (guestInstanceId) { if (guestInstanceId) {
// Report focus/blur events of webview to browser. // Report focus/blur events of webview to browser.
handleFocusBlur(guestInstanceId); handleFocusBlur();
} }
} }