Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index 679773f82aca83ced3397903a82c2e4dd7c899e6..1134931f8ae975839622693a21292852be0cafb3 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -1613,6 +1613,8 @@ bool RenderFrameImpl::OnMessageReceived(const IPC::Message& msg) { |
IPC_MESSAGE_HANDLER(FrameMsg_GetNearestFindResult, |
OnGetNearestFindResult) |
IPC_MESSAGE_HANDLER(FrameMsg_FindMatchRects, OnFindMatchRects) |
+ IPC_MESSAGE_HANDLER(FrameMsg_SetOverlayRoutingToken, |
+ OnSetOverlayRoutingToken) |
#endif |
#if BUILDFLAG(USE_EXTERNAL_POPUP_MENU) |
@@ -5847,6 +5849,27 @@ void RenderFrameImpl::OnFindMatchRects(int current_version) { |
Send(new FrameHostMsg_FindMatchRects_Reply(routing_id_, rects_version, |
match_rects, active_rect)); |
} |
+ |
+void RenderFrameImpl::OnSetOverlayRoutingToken(uint64_t high, uint64_t low) { |
+ overlay_routing_token_ = base::UnguessableToken::Deserialize(high, low); |
+ for (const auto& cb : pending_routing_token_callbacks_) |
+ cb.Run(overlay_routing_token_.value()); |
+ pending_routing_token_callbacks_.clear(); |
+} |
+ |
+void RenderFrameImpl::GetOverlayRoutingToken( |
+ const media::RoutingTokenCallback& callback) { |
+ if (overlay_routing_token_.has_value()) { |
+ callback.Run(overlay_routing_token_.value()); |
+ return; |
+ } |
+ |
+ // Send a request to the host for the token. We'll notify |callback| when it |
+ // arrives later. |
+ Send(new FrameHostMsg_RequestOverlayRoutingToken(routing_id_)); |
+ |
+ pending_routing_token_callbacks_.push_back(callback); |
+} |
#endif |
#if BUILDFLAG(USE_EXTERNAL_POPUP_MENU) |