Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2656)

Unified Diff: content/renderer/render_frame_impl_browsertest.cc

Issue 2765443004: AndroidOverlay implementation using Dialog. (Closed)
Patch Set: make findbugs happy Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/render_frame_impl_browsertest.cc
diff --git a/content/renderer/render_frame_impl_browsertest.cc b/content/renderer/render_frame_impl_browsertest.cc
index 73ca403330043ebb1cb707c63b8b09476afd36ae..ce898889cb244e053ef8840232f260716effabef 100644
--- a/content/renderer/render_frame_impl_browsertest.cc
+++ b/content/renderer/render_frame_impl_browsertest.cc
@@ -104,6 +104,14 @@ class RenderFrameImplTest : public RenderViewTest {
return frame_->render_widget_.get();
}
+#if defined(OS_ANDROID)
+ void ReceiveOverlayRoutingToken(const base::UnguessableToken& token) {
+ overlay_routing_token_ = token;
+ }
+
+ base::Optional<base::UnguessableToken> overlay_routing_token_;
+#endif
+
private:
RenderFrameImpl* frame_;
FakeCompositorDependencies compositor_deps_;
@@ -376,4 +384,54 @@ TEST_F(RenderFrameImplTest, NoCrashWhenDeletingFrameDuringFind) {
frame()->OnMessageReceived(delete_message);
}
+#if defined(OS_ANDROID)
+// Verify that RFI defers token requests if the token hasn't arrived yet.
+TEST_F(RenderFrameImplTest, TestOverlayRoutingTokenSendsLater) {
+ ASSERT_FALSE(overlay_routing_token_.has_value());
+
+ frame()->GetOverlayRoutingToken(
+ base::Bind(&RenderFrameImplTest::ReceiveOverlayRoutingToken,
+ base::Unretained(this)));
+ ASSERT_FALSE(overlay_routing_token_.has_value());
+
+ // The host should receive a request for it sent to the frame.
+ const IPC::Message* msg = render_thread_->sink().GetFirstMessageMatching(
+ FrameHostMsg_RequestOverlayRoutingToken::ID);
+ EXPECT_TRUE(msg);
+
+ // Send a token.
+ base::UnguessableToken token = base::UnguessableToken::Create();
+ FrameMsg_SetOverlayRoutingToken token_message(
+ 0, token.GetHighForSerialization(), token.GetLowForSerialization());
+ frame()->OnMessageReceived(token_message);
+
+ ProcessPendingMessages();
+ ASSERT_TRUE(overlay_routing_token_.has_value());
+ ASSERT_EQ(overlay_routing_token_.value(), token);
+}
+
+// Verify that RFI sends tokens if they're already available.
+TEST_F(RenderFrameImplTest, TestOverlayRoutingTokenSendsNow) {
+ ASSERT_FALSE(overlay_routing_token_.has_value());
+ base::UnguessableToken token = base::UnguessableToken::Create();
+ FrameMsg_SetOverlayRoutingToken token_message(
+ 0, token.GetHighForSerialization(), token.GetLowForSerialization());
+ frame()->OnMessageReceived(token_message);
+
+ // The frame now has a token. We don't care if it sends the token before
+ // returning or posts a message.
+ ProcessPendingMessages();
+ frame()->GetOverlayRoutingToken(
+ base::Bind(&RenderFrameImplTest::ReceiveOverlayRoutingToken,
+ base::Unretained(this)));
+ ASSERT_TRUE(overlay_routing_token_.has_value());
+ ASSERT_EQ(overlay_routing_token_.value(), token);
+
+ // Since the token already arrived, a request for it shouldn't be sent.
+ const IPC::Message* msg = render_thread_->sink().GetFirstMessageMatching(
+ FrameHostMsg_RequestOverlayRoutingToken::ID);
+ EXPECT_FALSE(msg);
+}
+#endif
+
} // namespace

Powered by Google App Engine
This is Rietveld 408576698