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

Side by Side Diff: content/renderer/render_frame_impl_browsertest.cc

Issue 2765443004: AndroidOverlay implementation using Dialog. (Closed)
Patch Set: make findbugs happy Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stdint.h> 5 #include <stdint.h>
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/debug/leak_annotations.h" 8 #include "base/debug/leak_annotations.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "build/build_config.h" 10 #include "build/build_config.h"
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 RenderFrameImpl* GetMainRenderFrame() { 97 RenderFrameImpl* GetMainRenderFrame() {
98 return static_cast<RenderFrameImpl*>(view_->GetMainRenderFrame()); 98 return static_cast<RenderFrameImpl*>(view_->GetMainRenderFrame());
99 } 99 }
100 100
101 RenderFrameImpl* frame() { return frame_; } 101 RenderFrameImpl* frame() { return frame_; }
102 102
103 content::RenderWidget* frame_widget() const { 103 content::RenderWidget* frame_widget() const {
104 return frame_->render_widget_.get(); 104 return frame_->render_widget_.get();
105 } 105 }
106 106
107 #if defined(OS_ANDROID)
108 void ReceiveOverlayRoutingToken(const base::UnguessableToken& token) {
109 overlay_routing_token_ = token;
110 }
111
112 base::Optional<base::UnguessableToken> overlay_routing_token_;
113 #endif
114
107 private: 115 private:
108 RenderFrameImpl* frame_; 116 RenderFrameImpl* frame_;
109 FakeCompositorDependencies compositor_deps_; 117 FakeCompositorDependencies compositor_deps_;
110 }; 118 };
111 119
112 class RenderFrameTestObserver : public RenderFrameObserver { 120 class RenderFrameTestObserver : public RenderFrameObserver {
113 public: 121 public:
114 explicit RenderFrameTestObserver(RenderFrame* render_frame) 122 explicit RenderFrameTestObserver(RenderFrame* render_frame)
115 : RenderFrameObserver(render_frame), visible_(false) {} 123 : RenderFrameObserver(render_frame), visible_(false) {}
116 124
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 TEST_F(RenderFrameImplTest, NoCrashWhenDeletingFrameDuringFind) { 377 TEST_F(RenderFrameImplTest, NoCrashWhenDeletingFrameDuringFind) {
370 blink::WebFindOptions options; 378 blink::WebFindOptions options;
371 options.force = true; 379 options.force = true;
372 FrameMsg_Find find_message(0, 1, base::ASCIIToUTF16("foo"), options); 380 FrameMsg_Find find_message(0, 1, base::ASCIIToUTF16("foo"), options);
373 frame()->OnMessageReceived(find_message); 381 frame()->OnMessageReceived(find_message);
374 382
375 FrameMsg_Delete delete_message(0); 383 FrameMsg_Delete delete_message(0);
376 frame()->OnMessageReceived(delete_message); 384 frame()->OnMessageReceived(delete_message);
377 } 385 }
378 386
387 #if defined(OS_ANDROID)
388 // Verify that RFI defers token requests if the token hasn't arrived yet.
389 TEST_F(RenderFrameImplTest, TestOverlayRoutingTokenSendsLater) {
390 ASSERT_FALSE(overlay_routing_token_.has_value());
391
392 frame()->GetOverlayRoutingToken(
393 base::Bind(&RenderFrameImplTest::ReceiveOverlayRoutingToken,
394 base::Unretained(this)));
395 ASSERT_FALSE(overlay_routing_token_.has_value());
396
397 // The host should receive a request for it sent to the frame.
398 const IPC::Message* msg = render_thread_->sink().GetFirstMessageMatching(
399 FrameHostMsg_RequestOverlayRoutingToken::ID);
400 EXPECT_TRUE(msg);
401
402 // Send a token.
403 base::UnguessableToken token = base::UnguessableToken::Create();
404 FrameMsg_SetOverlayRoutingToken token_message(
405 0, token.GetHighForSerialization(), token.GetLowForSerialization());
406 frame()->OnMessageReceived(token_message);
407
408 ProcessPendingMessages();
409 ASSERT_TRUE(overlay_routing_token_.has_value());
410 ASSERT_EQ(overlay_routing_token_.value(), token);
411 }
412
413 // Verify that RFI sends tokens if they're already available.
414 TEST_F(RenderFrameImplTest, TestOverlayRoutingTokenSendsNow) {
415 ASSERT_FALSE(overlay_routing_token_.has_value());
416 base::UnguessableToken token = base::UnguessableToken::Create();
417 FrameMsg_SetOverlayRoutingToken token_message(
418 0, token.GetHighForSerialization(), token.GetLowForSerialization());
419 frame()->OnMessageReceived(token_message);
420
421 // The frame now has a token. We don't care if it sends the token before
422 // returning or posts a message.
423 ProcessPendingMessages();
424 frame()->GetOverlayRoutingToken(
425 base::Bind(&RenderFrameImplTest::ReceiveOverlayRoutingToken,
426 base::Unretained(this)));
427 ASSERT_TRUE(overlay_routing_token_.has_value());
428 ASSERT_EQ(overlay_routing_token_.value(), token);
429
430 // Since the token already arrived, a request for it shouldn't be sent.
431 const IPC::Message* msg = render_thread_->sink().GetFirstMessageMatching(
432 FrameHostMsg_RequestOverlayRoutingToken::ID);
433 EXPECT_FALSE(msg);
434 }
435 #endif
436
379 } // namespace 437 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698