Forward user gesture for cross-process postMessage.
This CL adds user gesture plumbing to cross-process postMessage, so
that when a frame sends a postMessage to a cross-process frame while
processing a user gesture, the target frame's onmessage handler can
utilize that user gesture as well.
For now, the plumbing is only for one bit, has_user_gesture, which is
restricted so that it can be forwarded at most once. This prevents
unbounded forwarding of a user gesture via OOPIFs.
This solution is temporary and should eventually be superceded by one
of the following approaches:
- Browser process starts tracking user gestures and enforcing
constraints like at-most-one-popup-per-gesture. This plumbing
should then pass a user gesture ID instead of a bool.
- UserActivation V2 ships (see https://crbug.com/696617). This should
allow us to remove this plumbing altogether.
Bug: 161068
Change-Id: Ib7de03bb51470f6ff924d2e178b26e80b597321d
Reviewed-on: https://chromium-review.googlesource.com/915101
Commit-Queue: Alex Moshchuk <[email protected]>
Reviewed-by: Ken Buchanan <[email protected]>
Reviewed-by: Rick Byers <[email protected]>
Reviewed-by: Mustaq Ahmed <[email protected]>
Cr-Commit-Position: refs/heads/master@{#540240}
diff --git a/content/renderer/render_frame_proxy.h b/content/renderer/render_frame_proxy.h
index 3e39b13..0f6489c2 100644
--- a/content/renderer/render_frame_proxy.h
+++ b/content/renderer/render_frame_proxy.h
@@ -178,7 +178,8 @@
void ForwardPostMessage(blink::WebLocalFrame* sourceFrame,
blink::WebRemoteFrame* targetFrame,
blink::WebSecurityOrigin target,
- blink::WebDOMMessageEvent event) override;
+ blink::WebDOMMessageEvent event,
+ bool has_user_gesture) override;
void Navigate(const blink::WebURLRequest& request,
bool should_replace_current_entry) override;
void FrameRectsChanged(const blink::WebRect& local_frame_rect,