1
0
mirror of https://github.com/bitwarden/browser synced 2026-02-22 12:24:01 +00:00

wip: Test SetParent(client_window_handle, plugin_window_handle)

This commit is contained in:
Isaiah Inuwa
2025-11-26 07:38:28 -06:00
parent da7f595ba8
commit 4e7622bcf1
9 changed files with 300 additions and 2 deletions

View File

@@ -225,4 +225,42 @@ export default {
},
);
},
listenGetWindowHandle: (
fn: (
clientId: number,
sequenceNumber: number,
request: autofill.WindowHandleQueryRequest,
completeCallback: (error: Error | null, response: autofill.WindowHandleQueryResponse) => void,
) => void,
) => {
ipcRenderer.on(
"autofill.windowHandleQuery",
(
event,
data: {
clientId: number;
sequenceNumber: number;
request: autofill.WindowHandleQueryRequest;
},
) => {
const { clientId, sequenceNumber, request } = data;
fn(clientId, sequenceNumber, request, (error, response) => {
if (error) {
ipcRenderer.send("autofill.completeError", {
clientId,
sequenceNumber,
error: error.message,
});
return;
}
ipcRenderer.send("autofill.completeWindowHandleQuery", {
clientId,
sequenceNumber,
response,
});
});
},
);
},
};

View File

@@ -400,6 +400,21 @@ export class DesktopAutofillService implements OnDestroy {
callback(null, { isUnlocked })
})
ipc.autofill.listenGetWindowHandle(async (clientId, sequenceNumber, request, callback) => {
if (!(await this.configService.getFeatureFlag(NativeCredentialSyncFeatureFlag))) {
this.logService.debug(
`listenGetWindowHandle: ${NativeCredentialSyncFeatureFlag} feature flag is disabled`,
);
return;
}
this.logService.debug("listenGetWindowHandle", clientId, sequenceNumber, request);
let handle = Utils.fromBufferToB64(await ipc.platform.getNativeWindowHandle());
const response = { handle };
this.logService.debug("listenGetWindowHandle: sending", response);
callback(null, { handle })
})
ipc.autofill.listenerReady();
}

View File

@@ -151,6 +151,19 @@ export class NativeAutofillMain {
request,
});
},
// WindowHandleQueryCallback
(error, clientId, sequenceNumber, request) => {
if (error) {
this.logService.error("autofill.IpcServer.windowHandleQuery", error);
this.ipcServer.completeError(clientId, sequenceNumber, String(error));
return;
}
this.safeSend("autofill.windowHandleQuery", {
clientId,
sequenceNumber,
request,
});
},
);
ipcMain.on("autofill.listenerReady", () => {
@@ -179,6 +192,11 @@ export class NativeAutofillMain {
this.ipcServer.completeLockStatusQuery(clientId, sequenceNumber, response);
});
ipcMain.on("autofill.completeWindowHandleQuery", (event, data) => {
this.logService.debug("autofill.completeWindowHandleQuery", data);
const { clientId, sequenceNumber, response } = data;
this.ipcServer.completeWindowHandleQuery(clientId, sequenceNumber, response);
});
ipcMain.on("autofill.completeError", (event, data) => {