Bug 228274 - navigator.clipboard.read is not working context menu
Summary: navigator.clipboard.read is not working context menu
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebCore Misc. (show other bugs)
Version: Safari 14
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2021-07-25 22:19 PDT by Vishnu
Modified: 2021-08-01 22:20 PDT (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vishnu 2021-07-25 22:19:35 PDT
When we listen on context menu event and tried to access navigator clipboard using navigator.clipboard.read, it is not working and throwing an error NotAllowed permission. This is needed to disable and enable context menu.

1. Open https://codepen.io/rohinikumar4073/pen/OJmzxKo?editors=1011
2. Try to right click any where and observer error in the console.
Comment 1 Sam Sneddon [:gsnedders] 2021-07-26 04:34:36 PDT
Are we not treating right-click as a user gesture?
Comment 2 Wenson Hsieh 2021-07-26 07:38:52 PDT
I'm guessing what's happening here is that right click presents a context menu on macOS, which causes the context menu we present for granting programmatic paste access (i.e. a menu with a single Paste menu item in it) to dismiss immediately. This results in the promise being rejected right away :/

We probably need both to coexist somehow.
Comment 3 Sam Sneddon [:gsnedders] 2021-07-26 14:54:08 PDT
(In reply to Wenson Hsieh from comment #2)
> I'm guessing what's happening here is that right click presents a context
> menu on macOS, which causes the context menu we present for granting
> programmatic paste access (i.e. a menu with a single Paste menu item in it)
> to dismiss immediately. This results in the promise being rejected right
> away :/
> 
> We probably need both to coexist somehow.

Ah, so this is specific to pasting, and won't affect other places where we require a trusted user gesture?
Comment 4 Wenson Hsieh 2021-07-26 14:59:47 PDT
(In reply to Sam Sneddon [:gsnedders] from comment #3)
> (In reply to Wenson Hsieh from comment #2)
> > I'm guessing what's happening here is that right click presents a context
> > menu on macOS, which causes the context menu we present for granting
> > programmatic paste access (i.e. a menu with a single Paste menu item in it)
> > to dismiss immediately. This results in the promise being rejected right
> > away :/
> > 
> > We probably need both to coexist somehow.
> 
> Ah, so this is specific to pasting, and won't affect other places where we
> require a trusted user gesture?

Correct (we create the user gesture token underneath this stack trace when right clicking):

```
1   0x114a5be6f WebCore::UserGestureToken::UserGestureToken(WebCore::ProcessingUserGestureState, WebCore::UserGestureType, WebCore::Document*)
2   0x114a5c449 WebCore::UserGestureIndicator::UserGestureIndicator(std::__1::optional<WebCore::ProcessingUserGestureState>, WebCore::Document*, WebCore::UserGestureType, WebCore::UserGestureIndicator::ProcessInteractionStyle)
3   0x114f6f4a9 WebCore::EventHandler::handleMousePressEvent(WebCore::PlatformMouseEvent const&)
4   0x1154e6ee6 WebCore::UserInputBridge::handleMousePressEvent(WebCore::PlatformMouseEvent const&, WebCore::InputSource)
5   0x10d51657a WebKit::WebPage::mouseEvent(WebKit::WebMouseEvent const&, std::__1::optional<WebKit::SandboxExtension::HandleArray>&&)
6   0x10d532e78 WebKit::WebPage::didReceiveWebPageMessage(IPC::Connection&, IPC::Decoder&)
7   0x10ce43cce IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&, IPC::Decoder&)
8   0x10d357dec WebKit::WebProcess::didReceiveMessage(IPC::Connection&, IPC::Decoder&)
9   0x10ce26204 IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)
10  0x10ce26445 IPC::Connection::dispatchOneIncomingMessage()
```
Comment 5 Radar WebKit Bug Importer 2021-08-01 22:20:17 PDT
<rdar://problem/81397461>