1
0
mirror of https://github.com/bitwarden/browser synced 2026-02-05 03:03:26 +00:00
This commit is contained in:
Jonathan Prusik
2025-12-02 10:58:42 -05:00
parent f82160fb61
commit 43f51cf7a8
11 changed files with 41 additions and 12 deletions

View File

@@ -26,7 +26,7 @@ export function ActionButton({
fullWidth = true,
}: ActionButtonProps) {
const handleButtonClick = (event: Event) => {
if (!disabled && !isLoading) {
if (event.isTrusted && !disabled && !isLoading) {
handleClick(event);
}
};

View File

@@ -23,7 +23,7 @@ export function BadgeButton({
username,
}: BadgeButtonProps) {
const handleButtonClick = (event: Event) => {
if (!disabled) {
if (event.isTrusted && !disabled) {
buttonAction(event);
}
};

View File

@@ -21,7 +21,7 @@ export function EditButton({ buttonAction, buttonText, disabled = false, theme }
aria-label=${buttonText}
class=${editButtonStyles({ disabled, theme })}
@click=${(event: Event) => {
if (!disabled) {
if (event.isTrusted && !disabled) {
buttonAction(event);
}
}}

View File

@@ -28,6 +28,10 @@ export function CipherAction({
username,
}: CipherActionProps) {
const selectCipherHandleAction = (e: Event) => {
if (!e.isTrusted) {
return;
}
selectedCipherSignal.set(cipherId);
try {
handleAction(e);

View File

@@ -127,7 +127,7 @@ const AdditionalMessageStyles = ({ theme }: { theme: Theme }) => css`
`;
function handleButtonKeyDown(event: KeyboardEvent, handleClick: () => void) {
if (event.key === "Enter" || event.key === " ") {
if (event.isTrusted && (event.key === "Enter" || event.key === " ")) {
event.preventDefault();
handleClick();
}

View File

@@ -29,6 +29,10 @@ export function OptionItem({
handleSelection,
}: OptionItemProps) {
const handleSelectionKeyUpProxy = (event: KeyboardEvent) => {
if (!event.isTrusted) {
return;
}
const listenedForKeys = new Set(["Enter", "Space"]);
if (listenedForKeys.has(event.code) && event.target instanceof Element) {
handleSelection();

View File

@@ -57,6 +57,10 @@ export function OptionItems({
}
function handleMenuKeyUp(event: KeyboardEvent) {
if (!event.isTrusted) {
return;
}
const items = [
...(event.currentTarget as HTMLElement).querySelectorAll<HTMLElement>('[tabindex="0"]'),
];

View File

@@ -54,7 +54,7 @@ export class OptionSelection extends LitElement {
private static currentOpenInstance: OptionSelection | null = null;
private handleButtonClick = async (event: Event) => {
if (!this.disabled) {
if (event.isTrusted && !this.disabled) {
const isOpening = !this.showMenu;
if (isOpening) {

View File

@@ -194,7 +194,11 @@ export class AutofillInlineMenuList extends AutofillInlineMenuPageElement {
private handleSaveLoginInlineMenuKeyUp = (event: KeyboardEvent) => {
const listenedForKeys = new Set(["ArrowDown"]);
if (!listenedForKeys.has(event.code) || !(event.target instanceof Element)) {
if (
!event.isTrusted ||
!listenedForKeys.has(event.code) ||
!(event.target instanceof Element)
) {
return;
}
@@ -353,7 +357,7 @@ export class AutofillInlineMenuList extends AutofillInlineMenuPageElement {
* @param event - The keyup event.
*/
private handleFillGeneratedPasswordKeyUp = (event: KeyboardEvent) => {
if (event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) {
if (!event.isTrusted || event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) {
return;
}
@@ -394,7 +398,7 @@ export class AutofillInlineMenuList extends AutofillInlineMenuPageElement {
* @param event - The keyup event.
*/
private handleRefreshGeneratedPasswordKeyUp = (event: KeyboardEvent) => {
if (event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) {
if (!event.isTrusted || event.ctrlKey || event.altKey || event.metaKey || event.shiftKey) {
return;
}
@@ -974,7 +978,11 @@ export class AutofillInlineMenuList extends AutofillInlineMenuPageElement {
*/
private handleFillCipherKeyUpEvent = (event: KeyboardEvent) => {
const listenedForKeys = new Set(["ArrowDown", "ArrowUp", "ArrowRight"]);
if (!listenedForKeys.has(event.code) || !(event.target instanceof Element)) {
if (
!event.isTrusted ||
!listenedForKeys.has(event.code) ||
!(event.target instanceof Element)
) {
return;
}
@@ -1002,7 +1010,11 @@ export class AutofillInlineMenuList extends AutofillInlineMenuPageElement {
*/
private handleNewItemButtonKeyUpEvent = (event: KeyboardEvent) => {
const listenedForKeys = new Set(["ArrowDown", "ArrowUp"]);
if (!listenedForKeys.has(event.code) || !(event.target instanceof Element)) {
if (
!event.isTrusted ||
!listenedForKeys.has(event.code) ||
!(event.target instanceof Element)
) {
return;
}
@@ -1064,7 +1076,11 @@ export class AutofillInlineMenuList extends AutofillInlineMenuPageElement {
*/
private handleViewCipherKeyUpEvent = (event: KeyboardEvent) => {
const listenedForKeys = new Set(["ArrowDown", "ArrowUp", "ArrowLeft"]);
if (!listenedForKeys.has(event.code) || !(event.target instanceof Element)) {
if (
!event.isTrusted ||
!listenedForKeys.has(event.code) ||
!(event.target instanceof Element)
) {
return;
}

View File

@@ -163,7 +163,7 @@ export class AutofillInlineMenuPageElement extends HTMLElement {
*/
private handleDocumentKeyDownEvent = (event: KeyboardEvent) => {
const listenedForKeys = new Set(["Tab", "Escape", "ArrowUp", "ArrowDown"]);
if (!listenedForKeys.has(event.code)) {
if (!event.isTrusted || !listenedForKeys.has(event.code)) {
return;
}

View File

@@ -618,6 +618,7 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ
*/
private handleSubmitButtonInteraction = (event: PointerEvent) => {
if (
!event.isTrusted ||
!this.submitElements.has(event.target as HTMLElement) ||
(event.type === "keyup" &&
!["Enter", "Space"].includes((event as unknown as KeyboardEvent).code))