27 lines
1.1 KiB
TypeScript
27 lines
1.1 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { allowsNativeContextMenu, suppressWebViewContextMenu } from '../../src/utils/nativeContextMenu'
|
|
|
|
describe('native context menu policy', () => {
|
|
it('suppresses the WebView menu on ordinary application surfaces', () => {
|
|
const surface = document.createElement('div')
|
|
document.body.append(surface)
|
|
const event = new MouseEvent('contextmenu', { bubbles: true, cancelable: true })
|
|
surface.addEventListener('contextmenu', suppressWebViewContextMenu)
|
|
surface.dispatchEvent(event)
|
|
expect(event.defaultPrevented).toBe(true)
|
|
})
|
|
|
|
it('keeps native copy and paste actions for editable fields', () => {
|
|
const input = document.createElement('input')
|
|
const editor = document.createElement('div')
|
|
editor.setAttribute('contenteditable', 'true')
|
|
expect(allowsNativeContextMenu(input)).toBe(true)
|
|
expect(allowsNativeContextMenu(editor)).toBe(true)
|
|
|
|
const event = new MouseEvent('contextmenu', { bubbles: true, cancelable: true })
|
|
input.addEventListener('contextmenu', suppressWebViewContextMenu)
|
|
input.dispatchEvent(event)
|
|
expect(event.defaultPrevented).toBe(false)
|
|
})
|
|
})
|