| OLD | NEW | 
|---|
| 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  Loading... | 
| 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 246 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 363 TEST_F(RenderFrameImplTest, NoCrashWhenDeletingFrameDuringFind) { | 371 TEST_F(RenderFrameImplTest, NoCrashWhenDeletingFrameDuringFind) { | 
| 364   blink::WebFindOptions options; | 372   blink::WebFindOptions options; | 
| 365   options.force = true; | 373   options.force = true; | 
| 366   FrameMsg_Find find_message(0, 1, base::ASCIIToUTF16("foo"), options); | 374   FrameMsg_Find find_message(0, 1, base::ASCIIToUTF16("foo"), options); | 
| 367   frame()->OnMessageReceived(find_message); | 375   frame()->OnMessageReceived(find_message); | 
| 368 | 376 | 
| 369   FrameMsg_Delete delete_message(0); | 377   FrameMsg_Delete delete_message(0); | 
| 370   frame()->OnMessageReceived(delete_message); | 378   frame()->OnMessageReceived(delete_message); | 
| 371 } | 379 } | 
| 372 | 380 | 
|  | 381 #if defined(OS_ANDROID) | 
|  | 382 // Verify that RFI defers token requests if the token hasn't arrived yet. | 
|  | 383 TEST_F(RenderFrameImplTest, TestOverlayRoutingTokenSendsLater) { | 
|  | 384   ASSERT_FALSE(overlay_routing_token_.has_value()); | 
|  | 385 | 
|  | 386   frame()->RequestOverlayRoutingToken( | 
|  | 387       base::Bind(&RenderFrameImplTest::ReceiveOverlayRoutingToken, | 
|  | 388                  base::Unretained(this))); | 
|  | 389   ASSERT_FALSE(overlay_routing_token_.has_value()); | 
|  | 390 | 
|  | 391   // The host should receive a request for it sent to the frame. | 
|  | 392   const IPC::Message* msg = render_thread_->sink().GetFirstMessageMatching( | 
|  | 393       FrameHostMsg_RequestOverlayRoutingToken::ID); | 
|  | 394   EXPECT_TRUE(msg); | 
|  | 395 | 
|  | 396   // Send a token. | 
|  | 397   base::UnguessableToken token = base::UnguessableToken::Create(); | 
|  | 398   FrameMsg_SetOverlayRoutingToken token_message(0, token); | 
|  | 399   frame()->OnMessageReceived(token_message); | 
|  | 400 | 
|  | 401   ProcessPendingMessages(); | 
|  | 402   ASSERT_TRUE(overlay_routing_token_.has_value()); | 
|  | 403   ASSERT_EQ(overlay_routing_token_.value(), token); | 
|  | 404 } | 
|  | 405 | 
|  | 406 // Verify that RFI sends tokens if they're already available. | 
|  | 407 TEST_F(RenderFrameImplTest, TestOverlayRoutingTokenSendsNow) { | 
|  | 408   ASSERT_FALSE(overlay_routing_token_.has_value()); | 
|  | 409   base::UnguessableToken token = base::UnguessableToken::Create(); | 
|  | 410   FrameMsg_SetOverlayRoutingToken token_message(0, token); | 
|  | 411   frame()->OnMessageReceived(token_message); | 
|  | 412 | 
|  | 413   // The frame now has a token.  We don't care if it sends the token before | 
|  | 414   // returning or posts a message. | 
|  | 415   ProcessPendingMessages(); | 
|  | 416   frame()->RequestOverlayRoutingToken( | 
|  | 417       base::Bind(&RenderFrameImplTest::ReceiveOverlayRoutingToken, | 
|  | 418                  base::Unretained(this))); | 
|  | 419   ASSERT_TRUE(overlay_routing_token_.has_value()); | 
|  | 420   ASSERT_EQ(overlay_routing_token_.value(), token); | 
|  | 421 | 
|  | 422   // Since the token already arrived, a request for it shouldn't be sent. | 
|  | 423   const IPC::Message* msg = render_thread_->sink().GetFirstMessageMatching( | 
|  | 424       FrameHostMsg_RequestOverlayRoutingToken::ID); | 
|  | 425   EXPECT_FALSE(msg); | 
|  | 426 } | 
|  | 427 #endif | 
|  | 428 | 
| 373 }  // namespace | 429 }  // namespace | 
| OLD | NEW | 
|---|