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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_aura_unittest.cc

Issue 2147873003: cc: Dedup IPCs to return resources to client (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 4 years, 5 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/browser/renderer_host/render_widget_host_view_aura.h" 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <tuple> 10 #include <tuple>
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 if (window_) 209 if (window_)
210 window_->RemoveObserver(this); 210 window_->RemoveObserver(this);
211 } 211 }
212 212
213 bool destroyed() const { return destroyed_; } 213 bool destroyed() const { return destroyed_; }
214 214
215 // aura::WindowObserver overrides: 215 // aura::WindowObserver overrides:
216 void OnWindowDestroyed(aura::Window* window) override { 216 void OnWindowDestroyed(aura::Window* window) override {
217 CHECK_EQ(window, window_); 217 CHECK_EQ(window, window_);
218 destroyed_ = true; 218 destroyed_ = true;
219 window_ = NULL; 219 window_ = nullptr;
220 } 220 }
221 221
222 private: 222 private:
223 // Window that we're observing, or NULL if it's been destroyed. 223 // Window that we're observing, or nullptr if it's been destroyed.
224 aura::Window* window_; 224 aura::Window* window_;
225 225
226 // Was |window_| destroyed? 226 // Was |window_| destroyed?
227 bool destroyed_; 227 bool destroyed_;
228 228
229 DISALLOW_COPY_AND_ASSIGN(TestWindowObserver); 229 DISALLOW_COPY_AND_ASSIGN(TestWindowObserver);
230 }; 230 };
231 231
232 class FakeSurfaceDamageObserver : public cc::SurfaceDamageObserver {
233 public:
234 void OnSurfaceDamaged(const cc::SurfaceId& id, bool* changed) override {
235 *changed = true;
236 }
237 };
238
232 class FakeFrameSubscriber : public RenderWidgetHostViewFrameSubscriber { 239 class FakeFrameSubscriber : public RenderWidgetHostViewFrameSubscriber {
233 public: 240 public:
234 FakeFrameSubscriber(gfx::Size size, base::Callback<void(bool)> callback) 241 FakeFrameSubscriber(gfx::Size size, base::Callback<void(bool)> callback)
235 : size_(size), callback_(callback), should_capture_(true) {} 242 : size_(size), callback_(callback), should_capture_(true) {}
236 243
237 bool ShouldCaptureFrame(const gfx::Rect& damage_rect, 244 bool ShouldCaptureFrame(const gfx::Rect& damage_rect,
238 base::TimeTicks present_time, 245 base::TimeTicks present_time,
239 scoped_refptr<media::VideoFrame>* storage, 246 scoped_refptr<media::VideoFrame>* storage,
240 DeliverFrameCallback* callback) override { 247 DeliverFrameCallback* callback) override {
241 if (!should_capture_) 248 if (!should_capture_)
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 } 348 }
342 349
343 bool HasFrameData() const { 350 bool HasFrameData() const {
344 return !surface_id().is_null(); 351 return !surface_id().is_null();
345 } 352 }
346 353
347 bool released_front_lock_active() const { 354 bool released_front_lock_active() const {
348 return GetDelegatedFrameHost()->ReleasedFrontLockActiveForTesting(); 355 return GetDelegatedFrameHost()->ReleasedFrontLockActiveForTesting();
349 } 356 }
350 357
358 void ReturnResources(const cc::ReturnedResourceArray& resources) {
359 GetDelegatedFrameHost()->ReturnResources(resources);
360 }
361
362 void ResetCompositor() { GetDelegatedFrameHost()->ResetCompositor(); }
363
351 // A lock that doesn't actually do anything to the compositor, and does not 364 // A lock that doesn't actually do anything to the compositor, and does not
352 // time out. 365 // time out.
353 class FakeResizeLock : public ResizeLock { 366 class FakeResizeLock : public ResizeLock {
354 public: 367 public:
355 FakeResizeLock(const gfx::Size new_size, bool defer_compositor_lock) 368 FakeResizeLock(const gfx::Size new_size, bool defer_compositor_lock)
356 : ResizeLock(new_size, defer_compositor_lock) {} 369 : ResizeLock(new_size, defer_compositor_lock) {}
357 }; 370 };
358 371
359 const ui::MotionEventAura& pointer_state_for_test() { 372 const ui::MotionEventAura& pointer_state_for_test() {
360 return pointer_state(); 373 return pointer_state();
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 class MockWindowObserver : public aura::WindowObserver { 412 class MockWindowObserver : public aura::WindowObserver {
400 public: 413 public:
401 MOCK_METHOD2(OnDelegatedFrameDamage, void(aura::Window*, const gfx::Rect&)); 414 MOCK_METHOD2(OnDelegatedFrameDamage, void(aura::Window*, const gfx::Rect&));
402 }; 415 };
403 416
404 const WebInputEvent* GetInputEventFromMessage(const IPC::Message& message) { 417 const WebInputEvent* GetInputEventFromMessage(const IPC::Message& message) {
405 base::PickleIterator iter(message); 418 base::PickleIterator iter(message);
406 const char* data; 419 const char* data;
407 int data_length; 420 int data_length;
408 if (!iter.ReadData(&data, &data_length)) 421 if (!iter.ReadData(&data, &data_length))
409 return NULL; 422 return nullptr;
410 return reinterpret_cast<const WebInputEvent*>(data); 423 return reinterpret_cast<const WebInputEvent*>(data);
411 } 424 }
412 425
413 } // namespace 426 } // namespace
414 427
415 class RenderWidgetHostViewAuraTest : public testing::Test { 428 class RenderWidgetHostViewAuraTest : public testing::Test {
416 public: 429 public:
417 RenderWidgetHostViewAuraTest() 430 RenderWidgetHostViewAuraTest()
418 : widget_host_uses_shutdown_to_destroy_(false), 431 : widget_host_uses_shutdown_to_destroy_(false),
419 is_guest_view_hack_(false), 432 is_guest_view_hack_(false),
(...skipping 14 matching lines...) Expand all
434 447
435 sink_ = &process_host_->sink(); 448 sink_ = &process_host_->sink();
436 449
437 int32_t routing_id = process_host_->GetNextRoutingID(); 450 int32_t routing_id = process_host_->GetNextRoutingID();
438 delegates_.push_back(base::WrapUnique(new MockRenderWidgetHostDelegate)); 451 delegates_.push_back(base::WrapUnique(new MockRenderWidgetHostDelegate));
439 parent_host_ = new RenderWidgetHostImpl(delegates_.back().get(), 452 parent_host_ = new RenderWidgetHostImpl(delegates_.back().get(),
440 process_host_, routing_id, false); 453 process_host_, routing_id, false);
441 delegates_.back()->set_widget_host(parent_host_); 454 delegates_.back()->set_widget_host(parent_host_);
442 parent_view_ = new RenderWidgetHostViewAura(parent_host_, 455 parent_view_ = new RenderWidgetHostViewAura(parent_host_,
443 is_guest_view_hack_); 456 is_guest_view_hack_);
444 parent_view_->InitAsChild(NULL); 457 parent_view_->InitAsChild(nullptr);
445 aura::client::ParentWindowWithContext(parent_view_->GetNativeView(), 458 aura::client::ParentWindowWithContext(parent_view_->GetNativeView(),
446 aura_test_helper_->root_window(), 459 aura_test_helper_->root_window(),
447 gfx::Rect()); 460 gfx::Rect());
448 461
449 routing_id = process_host_->GetNextRoutingID(); 462 routing_id = process_host_->GetNextRoutingID();
450 delegates_.push_back(base::WrapUnique(new MockRenderWidgetHostDelegate)); 463 delegates_.push_back(base::WrapUnique(new MockRenderWidgetHostDelegate));
451 widget_host_ = new RenderWidgetHostImpl(delegates_.back().get(), 464 widget_host_ = new RenderWidgetHostImpl(delegates_.back().get(),
452 process_host_, routing_id, false); 465 process_host_, routing_id, false);
453 delegates_.back()->set_widget_host(widget_host_); 466 delegates_.back()->set_widget_host(widget_host_);
454 widget_host_->Init(); 467 widget_host_->Init();
455 view_ = new FakeRenderWidgetHostViewAura(widget_host_, is_guest_view_hack_); 468 view_ = new FakeRenderWidgetHostViewAura(widget_host_, is_guest_view_hack_);
456 } 469 }
457 470
458 void TearDownEnvironment() { 471 void TearDownEnvironment() {
459 sink_ = NULL; 472 sink_ = nullptr;
460 process_host_ = NULL; 473 process_host_ = nullptr;
461 if (view_) { 474 if (view_) {
462 // For guest-views, |view_| is not the view used by |widget_host_|. 475 // For guest-views, |view_| is not the view used by |widget_host_|.
463 if (!is_guest_view_hack_) { 476 if (!is_guest_view_hack_) {
464 EXPECT_EQ(view_, widget_host_->GetView()); 477 EXPECT_EQ(view_, widget_host_->GetView());
465 } 478 }
466 view_->Destroy(); 479 view_->Destroy();
467 if (!is_guest_view_hack_) { 480 if (!is_guest_view_hack_) {
468 EXPECT_EQ(nullptr, widget_host_->GetView()); 481 EXPECT_EQ(nullptr, widget_host_->GetView());
469 } 482 }
470 } 483 }
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 595
583 bool is_guest_view_hack_; 596 bool is_guest_view_hack_;
584 597
585 base::MessageLoopForUI message_loop_; 598 base::MessageLoopForUI message_loop_;
586 BrowserThreadImpl browser_thread_for_ui_; 599 BrowserThreadImpl browser_thread_for_ui_;
587 std::unique_ptr<aura::test::AuraTestHelper> aura_test_helper_; 600 std::unique_ptr<aura::test::AuraTestHelper> aura_test_helper_;
588 std::unique_ptr<BrowserContext> browser_context_; 601 std::unique_ptr<BrowserContext> browser_context_;
589 std::vector<std::unique_ptr<MockRenderWidgetHostDelegate>> delegates_; 602 std::vector<std::unique_ptr<MockRenderWidgetHostDelegate>> delegates_;
590 MockRenderProcessHost* process_host_; 603 MockRenderProcessHost* process_host_;
591 604
592 // Tests should set these to NULL if they've already triggered their 605 // Tests should set these to nullptr if they've already triggered their
593 // destruction. 606 // destruction.
594 RenderWidgetHostImpl* parent_host_; 607 RenderWidgetHostImpl* parent_host_;
595 RenderWidgetHostViewAura* parent_view_; 608 RenderWidgetHostViewAura* parent_view_;
596 609
597 // Tests should set these to NULL if they've already triggered their 610 // Tests should set these to nullptr if they've already triggered their
598 // destruction. 611 // destruction.
599 RenderWidgetHostImpl* widget_host_; 612 RenderWidgetHostImpl* widget_host_;
600 FakeRenderWidgetHostViewAura* view_; 613 FakeRenderWidgetHostViewAura* view_;
601 614
602 IPC::TestSink* sink_; 615 IPC::TestSink* sink_;
603 616
604 private: 617 private:
605 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewAuraTest); 618 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewAuraTest);
606 }; 619 };
607 620
608 // Helper class to instantiate RenderWidgetHostViewGuest which is backed 621 // Helper class to instantiate RenderWidgetHostViewGuest which is backed
609 // by an aura platform view. 622 // by an aura platform view.
610 class RenderWidgetHostViewGuestAuraTest : public RenderWidgetHostViewAuraTest { 623 class RenderWidgetHostViewGuestAuraTest : public RenderWidgetHostViewAuraTest {
611 public: 624 public:
612 RenderWidgetHostViewGuestAuraTest() { 625 RenderWidgetHostViewGuestAuraTest() {
613 // Use RWH::Shutdown to destroy RWH, instead of deleting. 626 // Use RWH::Shutdown to destroy RWH, instead of deleting.
614 // This will ensure that the RenderWidgetHostViewGuest is not leaked and 627 // This will ensure that the RenderWidgetHostViewGuest is not leaked and
615 // is deleted properly upon RWH going away. 628 // is deleted properly upon RWH going away.
616 set_widget_host_uses_shutdown_to_destroy(true); 629 set_widget_host_uses_shutdown_to_destroy(true);
617 } 630 }
618 631
619 // We explicitly invoke SetUp to allow gesture debounce customization. 632 // We explicitly invoke SetUp to allow gesture debounce customization.
620 void SetUp() override { 633 void SetUp() override {
621 is_guest_view_hack_ = true; 634 is_guest_view_hack_ = true;
622 635
623 RenderWidgetHostViewAuraTest::SetUp(); 636 RenderWidgetHostViewAuraTest::SetUp();
624 637
625 guest_view_weak_ = (new RenderWidgetHostViewGuest( 638 guest_view_weak_ = (new RenderWidgetHostViewGuest(widget_host_, nullptr,
626 widget_host_, NULL, view_->GetWeakPtr()))->GetWeakPtr(); 639 view_->GetWeakPtr()))
640 ->GetWeakPtr();
627 } 641 }
628 642
629 void TearDown() override { 643 void TearDown() override {
630 // Internal override to do nothing, we clean up ourselves in the test body. 644 // Internal override to do nothing, we clean up ourselves in the test body.
631 // This helps us test that |guest_view_weak_| does not leak. 645 // This helps us test that |guest_view_weak_| does not leak.
632 } 646 }
633 647
634 protected: 648 protected:
635 base::WeakPtr<RenderWidgetHostViewBase> guest_view_weak_; 649 base::WeakPtr<RenderWidgetHostViewBase> guest_view_weak_;
636 650
(...skipping 20 matching lines...) Expand all
657 void SetUpOverscrollEnvironmentImpl(int debounce_interval_in_ms) { 671 void SetUpOverscrollEnvironmentImpl(int debounce_interval_in_ms) {
658 ui::GestureConfiguration::GetInstance()->set_scroll_debounce_interval_in_ms( 672 ui::GestureConfiguration::GetInstance()->set_scroll_debounce_interval_in_ms(
659 debounce_interval_in_ms); 673 debounce_interval_in_ms);
660 674
661 RenderWidgetHostViewAuraTest::SetUp(); 675 RenderWidgetHostViewAuraTest::SetUp();
662 676
663 view_->SetOverscrollControllerEnabled(true); 677 view_->SetOverscrollControllerEnabled(true);
664 overscroll_delegate_.reset(new TestOverscrollDelegate(view_)); 678 overscroll_delegate_.reset(new TestOverscrollDelegate(view_));
665 view_->overscroll_controller()->set_delegate(overscroll_delegate_.get()); 679 view_->overscroll_controller()->set_delegate(overscroll_delegate_.get());
666 680
667 view_->InitAsChild(NULL); 681 view_->InitAsChild(nullptr);
668 view_->SetBounds(gfx::Rect(0, 0, 400, 200)); 682 view_->SetBounds(gfx::Rect(0, 0, 400, 200));
669 view_->Show(); 683 view_->Show();
670 684
671 sink_->ClearMessages(); 685 sink_->ClearMessages();
672 } 686 }
673 687
674 // TODO(jdduke): Simulate ui::Events, injecting through the view. 688 // TODO(jdduke): Simulate ui::Events, injecting through the view.
675 void SimulateMouseEvent(WebInputEvent::Type type) { 689 void SimulateMouseEvent(WebInputEvent::Type type) {
676 widget_host_->ForwardMouseEvent(SyntheticWebMouseEventBuilder::Build(type)); 690 widget_host_->ForwardMouseEvent(SyntheticWebMouseEventBuilder::Build(type));
677 } 691 }
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 // initialized. 860 // initialized.
847 TEST_F(RenderWidgetHostViewAuraTest, DestructionBeforeProperInitialization) { 861 TEST_F(RenderWidgetHostViewAuraTest, DestructionBeforeProperInitialization) {
848 // Terminate the test without initializing |view_|. 862 // Terminate the test without initializing |view_|.
849 } 863 }
850 864
851 // Checks that a fullscreen view has the correct show-state and receives the 865 // Checks that a fullscreen view has the correct show-state and receives the
852 // focus. 866 // focus.
853 TEST_F(RenderWidgetHostViewAuraTest, FocusFullscreen) { 867 TEST_F(RenderWidgetHostViewAuraTest, FocusFullscreen) {
854 view_->InitAsFullscreen(parent_view_); 868 view_->InitAsFullscreen(parent_view_);
855 aura::Window* window = view_->GetNativeView(); 869 aura::Window* window = view_->GetNativeView();
856 ASSERT_TRUE(window != NULL); 870 ASSERT_TRUE(window != nullptr);
857 EXPECT_EQ(ui::SHOW_STATE_FULLSCREEN, 871 EXPECT_EQ(ui::SHOW_STATE_FULLSCREEN,
858 window->GetProperty(aura::client::kShowStateKey)); 872 window->GetProperty(aura::client::kShowStateKey));
859 873
860 // Check that we requested and received the focus. 874 // Check that we requested and received the focus.
861 EXPECT_TRUE(window->HasFocus()); 875 EXPECT_TRUE(window->HasFocus());
862 876
863 // Check that we'll also say it's okay to activate the window when there's an 877 // Check that we'll also say it's okay to activate the window when there's an
864 // ActivationClient defined. 878 // ActivationClient defined.
865 EXPECT_TRUE(view_->ShouldActivate()); 879 EXPECT_TRUE(view_->ShouldActivate());
866 } 880 }
(...skipping 26 matching lines...) Expand all
893 view_->SetBounds(bounds_in_screen); 907 view_->SetBounds(bounds_in_screen);
894 final_bounds_in_screen = view_->GetViewBounds(); 908 final_bounds_in_screen = view_->GetViewBounds();
895 EXPECT_EQ(final_bounds_in_screen.ToString(), bounds_in_screen.ToString()); 909 EXPECT_EQ(final_bounds_in_screen.ToString(), bounds_in_screen.ToString());
896 910
897 // Verify that setting the size does not alter the origin. 911 // Verify that setting the size does not alter the origin.
898 gfx::Point original_origin = window->bounds().origin(); 912 gfx::Point original_origin = window->bounds().origin();
899 view_->SetSize(gfx::Size(120, 120)); 913 view_->SetSize(gfx::Size(120, 120));
900 gfx::Point new_origin = window->bounds().origin(); 914 gfx::Point new_origin = window->bounds().origin();
901 EXPECT_EQ(original_origin.ToString(), new_origin.ToString()); 915 EXPECT_EQ(original_origin.ToString(), new_origin.ToString());
902 916
903 aura::client::SetScreenPositionClient(root, NULL); 917 aura::client::SetScreenPositionClient(root, nullptr);
904 } 918 }
905 919
906 // Checks that moving parent sends new screen bounds. 920 // Checks that moving parent sends new screen bounds.
907 TEST_F(RenderWidgetHostViewAuraTest, ParentMovementUpdatesScreenRect) { 921 TEST_F(RenderWidgetHostViewAuraTest, ParentMovementUpdatesScreenRect) {
908 view_->InitAsChild(NULL); 922 view_->InitAsChild(nullptr);
909 923
910 aura::Window* root = parent_view_->GetNativeView()->GetRootWindow(); 924 aura::Window* root = parent_view_->GetNativeView()->GetRootWindow();
911 925
912 aura::test::TestWindowDelegate delegate1, delegate2; 926 aura::test::TestWindowDelegate delegate1, delegate2;
913 std::unique_ptr<aura::Window> parent1(new aura::Window(&delegate1)); 927 std::unique_ptr<aura::Window> parent1(new aura::Window(&delegate1));
914 parent1->Init(ui::LAYER_TEXTURED); 928 parent1->Init(ui::LAYER_TEXTURED);
915 parent1->Show(); 929 parent1->Show();
916 std::unique_ptr<aura::Window> parent2(new aura::Window(&delegate2)); 930 std::unique_ptr<aura::Window> parent2(new aura::Window(&delegate2));
917 parent2->Init(ui::LAYER_TEXTURED); 931 parent2->Init(ui::LAYER_TEXTURED);
918 parent2->Show(); 932 parent2->Show();
919 933
920 root->AddChild(parent1.get()); 934 root->AddChild(parent1.get());
921 parent1->AddChild(parent2.get()); 935 parent1->AddChild(parent2.get());
922 parent2->AddChild(view_->GetNativeView()); 936 parent2->AddChild(view_->GetNativeView());
923 937
924 root->SetBounds(gfx::Rect(0, 0, 800, 600)); 938 root->SetBounds(gfx::Rect(0, 0, 800, 600));
925 parent1->SetBounds(gfx::Rect(1, 1, 300, 300)); 939 parent1->SetBounds(gfx::Rect(1, 1, 300, 300));
926 parent2->SetBounds(gfx::Rect(2, 2, 200, 200)); 940 parent2->SetBounds(gfx::Rect(2, 2, 200, 200));
927 view_->SetBounds(gfx::Rect(3, 3, 100, 100)); 941 view_->SetBounds(gfx::Rect(3, 3, 100, 100));
928 // view_ will be destroyed when parent is destroyed. 942 // view_ will be destroyed when parent is destroyed.
929 view_ = NULL; 943 view_ = nullptr;
930 944
931 // Flush the state after initial setup is done. 945 // Flush the state after initial setup is done.
932 widget_host_->OnMessageReceived( 946 widget_host_->OnMessageReceived(
933 ViewHostMsg_UpdateScreenRects_ACK(widget_host_->GetRoutingID())); 947 ViewHostMsg_UpdateScreenRects_ACK(widget_host_->GetRoutingID()));
934 widget_host_->OnMessageReceived( 948 widget_host_->OnMessageReceived(
935 ViewHostMsg_UpdateScreenRects_ACK(widget_host_->GetRoutingID())); 949 ViewHostMsg_UpdateScreenRects_ACK(widget_host_->GetRoutingID()));
936 sink_->ClearMessages(); 950 sink_->ClearMessages();
937 951
938 // Move parents. 952 // Move parents.
939 parent2->SetBounds(gfx::Rect(20, 20, 200, 200)); 953 parent2->SetBounds(gfx::Rect(20, 20, 200, 200));
(...skipping 21 matching lines...) Expand all
961 widget_host_->OnMessageReceived( 975 widget_host_->OnMessageReceived(
962 ViewHostMsg_UpdateScreenRects_ACK(widget_host_->GetRoutingID())); 976 ViewHostMsg_UpdateScreenRects_ACK(widget_host_->GetRoutingID()));
963 // There should not be any pending update. 977 // There should not be any pending update.
964 EXPECT_EQ(0U, sink_->message_count()); 978 EXPECT_EQ(0U, sink_->message_count());
965 } 979 }
966 980
967 // Checks that a fullscreen view is destroyed when it loses the focus. 981 // Checks that a fullscreen view is destroyed when it loses the focus.
968 TEST_F(RenderWidgetHostViewAuraTest, DestroyFullscreenOnBlur) { 982 TEST_F(RenderWidgetHostViewAuraTest, DestroyFullscreenOnBlur) {
969 view_->InitAsFullscreen(parent_view_); 983 view_->InitAsFullscreen(parent_view_);
970 aura::Window* window = view_->GetNativeView(); 984 aura::Window* window = view_->GetNativeView();
971 ASSERT_TRUE(window != NULL); 985 ASSERT_TRUE(window != nullptr);
972 ASSERT_TRUE(window->HasFocus()); 986 ASSERT_TRUE(window->HasFocus());
973 987
974 // After we create and focus another window, the RWHVA's window should be 988 // After we create and focus another window, the RWHVA's window should be
975 // destroyed. 989 // destroyed.
976 TestWindowObserver observer(window); 990 TestWindowObserver observer(window);
977 aura::test::TestWindowDelegate delegate; 991 aura::test::TestWindowDelegate delegate;
978 std::unique_ptr<aura::Window> sibling(new aura::Window(&delegate)); 992 std::unique_ptr<aura::Window> sibling(new aura::Window(&delegate));
979 sibling->Init(ui::LAYER_TEXTURED); 993 sibling->Init(ui::LAYER_TEXTURED);
980 sibling->Show(); 994 sibling->Show();
981 window->parent()->AddChild(sibling.get()); 995 window->parent()->AddChild(sibling.get());
982 sibling->Focus(); 996 sibling->Focus();
983 ASSERT_TRUE(sibling->HasFocus()); 997 ASSERT_TRUE(sibling->HasFocus());
984 ASSERT_TRUE(observer.destroyed()); 998 ASSERT_TRUE(observer.destroyed());
985 999
986 widget_host_ = NULL; 1000 widget_host_ = nullptr;
987 view_ = NULL; 1001 view_ = nullptr;
988 } 1002 }
989 1003
990 // Checks that a popup view is destroyed when a user clicks outside of the popup 1004 // Checks that a popup view is destroyed when a user clicks outside of the popup
991 // view and focus does not change. This is the case when the user clicks on the 1005 // view and focus does not change. This is the case when the user clicks on the
992 // desktop background on Chrome OS. 1006 // desktop background on Chrome OS.
993 TEST_F(RenderWidgetHostViewAuraTest, DestroyPopupClickOutsidePopup) { 1007 TEST_F(RenderWidgetHostViewAuraTest, DestroyPopupClickOutsidePopup) {
994 parent_view_->SetBounds(gfx::Rect(10, 10, 400, 400)); 1008 parent_view_->SetBounds(gfx::Rect(10, 10, 400, 400));
995 parent_view_->Focus(); 1009 parent_view_->Focus();
996 EXPECT_TRUE(parent_view_->HasFocus()); 1010 EXPECT_TRUE(parent_view_->HasFocus());
997 1011
998 view_->InitAsPopup(parent_view_, gfx::Rect(10, 10, 100, 100)); 1012 view_->InitAsPopup(parent_view_, gfx::Rect(10, 10, 100, 100));
999 aura::Window* window = view_->GetNativeView(); 1013 aura::Window* window = view_->GetNativeView();
1000 ASSERT_TRUE(window != NULL); 1014 ASSERT_TRUE(window != nullptr);
1001 1015
1002 gfx::Point click_point; 1016 gfx::Point click_point;
1003 EXPECT_FALSE(window->GetBoundsInRootWindow().Contains(click_point)); 1017 EXPECT_FALSE(window->GetBoundsInRootWindow().Contains(click_point));
1004 aura::Window* parent_window = parent_view_->GetNativeView(); 1018 aura::Window* parent_window = parent_view_->GetNativeView();
1005 EXPECT_FALSE(parent_window->GetBoundsInRootWindow().Contains(click_point)); 1019 EXPECT_FALSE(parent_window->GetBoundsInRootWindow().Contains(click_point));
1006 1020
1007 TestWindowObserver observer(window); 1021 TestWindowObserver observer(window);
1008 ui::test::EventGenerator generator(window->GetRootWindow(), click_point); 1022 ui::test::EventGenerator generator(window->GetRootWindow(), click_point);
1009 generator.ClickLeftButton(); 1023 generator.ClickLeftButton();
1010 ASSERT_TRUE(parent_view_->HasFocus()); 1024 ASSERT_TRUE(parent_view_->HasFocus());
1011 ASSERT_TRUE(observer.destroyed()); 1025 ASSERT_TRUE(observer.destroyed());
1012 1026
1013 widget_host_ = NULL; 1027 widget_host_ = nullptr;
1014 view_ = NULL; 1028 view_ = nullptr;
1015 } 1029 }
1016 1030
1017 // Checks that a popup view is destroyed when a user taps outside of the popup 1031 // Checks that a popup view is destroyed when a user taps outside of the popup
1018 // view and focus does not change. This is the case when the user taps the 1032 // view and focus does not change. This is the case when the user taps the
1019 // desktop background on Chrome OS. 1033 // desktop background on Chrome OS.
1020 TEST_F(RenderWidgetHostViewAuraTest, DestroyPopupTapOutsidePopup) { 1034 TEST_F(RenderWidgetHostViewAuraTest, DestroyPopupTapOutsidePopup) {
1021 parent_view_->SetBounds(gfx::Rect(10, 10, 400, 400)); 1035 parent_view_->SetBounds(gfx::Rect(10, 10, 400, 400));
1022 parent_view_->Focus(); 1036 parent_view_->Focus();
1023 EXPECT_TRUE(parent_view_->HasFocus()); 1037 EXPECT_TRUE(parent_view_->HasFocus());
1024 1038
1025 view_->InitAsPopup(parent_view_, gfx::Rect(10, 10, 100, 100)); 1039 view_->InitAsPopup(parent_view_, gfx::Rect(10, 10, 100, 100));
1026 aura::Window* window = view_->GetNativeView(); 1040 aura::Window* window = view_->GetNativeView();
1027 ASSERT_TRUE(window != NULL); 1041 ASSERT_TRUE(window != nullptr);
1028 1042
1029 gfx::Point tap_point; 1043 gfx::Point tap_point;
1030 EXPECT_FALSE(window->GetBoundsInRootWindow().Contains(tap_point)); 1044 EXPECT_FALSE(window->GetBoundsInRootWindow().Contains(tap_point));
1031 aura::Window* parent_window = parent_view_->GetNativeView(); 1045 aura::Window* parent_window = parent_view_->GetNativeView();
1032 EXPECT_FALSE(parent_window->GetBoundsInRootWindow().Contains(tap_point)); 1046 EXPECT_FALSE(parent_window->GetBoundsInRootWindow().Contains(tap_point));
1033 1047
1034 TestWindowObserver observer(window); 1048 TestWindowObserver observer(window);
1035 ui::test::EventGenerator generator(window->GetRootWindow(), tap_point); 1049 ui::test::EventGenerator generator(window->GetRootWindow(), tap_point);
1036 generator.GestureTapAt(tap_point); 1050 generator.GestureTapAt(tap_point);
1037 ASSERT_TRUE(parent_view_->HasFocus()); 1051 ASSERT_TRUE(parent_view_->HasFocus());
1038 ASSERT_TRUE(observer.destroyed()); 1052 ASSERT_TRUE(observer.destroyed());
1039 1053
1040 widget_host_ = NULL; 1054 widget_host_ = nullptr;
1041 view_ = NULL; 1055 view_ = nullptr;
1042 } 1056 }
1043 1057
1044 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) 1058 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
1045 1059
1046 // On Desktop Linux, select boxes need mouse capture in order to work. Test that 1060 // On Desktop Linux, select boxes need mouse capture in order to work. Test that
1047 // when a select box is opened via a mouse press that it retains mouse capture 1061 // when a select box is opened via a mouse press that it retains mouse capture
1048 // after the mouse is released. 1062 // after the mouse is released.
1049 TEST_F(RenderWidgetHostViewAuraTest, PopupRetainsCaptureAfterMouseRelease) { 1063 TEST_F(RenderWidgetHostViewAuraTest, PopupRetainsCaptureAfterMouseRelease) {
1050 parent_view_->SetBounds(gfx::Rect(10, 10, 400, 400)); 1064 parent_view_->SetBounds(gfx::Rect(10, 10, 400, 400));
1051 parent_view_->Focus(); 1065 parent_view_->Focus();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1084 dialog_window->Init(ui::LAYER_TEXTURED); 1098 dialog_window->Init(ui::LAYER_TEXTURED);
1085 aura::client::ParentWindowWithContext( 1099 aura::client::ParentWindowWithContext(
1086 dialog_window.get(), popup_window, gfx::Rect()); 1100 dialog_window.get(), popup_window, gfx::Rect());
1087 dialog_window->Show(); 1101 dialog_window->Show();
1088 wm::ActivateWindow(dialog_window.get()); 1102 wm::ActivateWindow(dialog_window.get());
1089 dialog_window->Focus(); 1103 dialog_window->Focus();
1090 1104
1091 ASSERT_TRUE(wm::IsActiveWindow(dialog_window.get())); 1105 ASSERT_TRUE(wm::IsActiveWindow(dialog_window.get()));
1092 EXPECT_TRUE(observer.destroyed()); 1106 EXPECT_TRUE(observer.destroyed());
1093 1107
1094 widget_host_ = NULL; 1108 widget_host_ = nullptr;
1095 view_ = NULL; 1109 view_ = nullptr;
1096 } 1110 }
1097 1111
1098 // Checks that IME-composition-event state is maintained correctly. 1112 // Checks that IME-composition-event state is maintained correctly.
1099 TEST_F(RenderWidgetHostViewAuraTest, SetCompositionText) { 1113 TEST_F(RenderWidgetHostViewAuraTest, SetCompositionText) {
1100 view_->InitAsChild(NULL); 1114 view_->InitAsChild(nullptr);
1101 view_->Show(); 1115 view_->Show();
1102 ActivateViewForTextInputManager(view_, ui::TEXT_INPUT_TYPE_TEXT); 1116 ActivateViewForTextInputManager(view_, ui::TEXT_INPUT_TYPE_TEXT);
1103 1117
1104 ui::CompositionText composition_text; 1118 ui::CompositionText composition_text;
1105 composition_text.text = base::ASCIIToUTF16("|a|b"); 1119 composition_text.text = base::ASCIIToUTF16("|a|b");
1106 1120
1107 // Focused segment 1121 // Focused segment
1108 composition_text.underlines.push_back( 1122 composition_text.underlines.push_back(
1109 ui::CompositionUnderline(0, 3, 0xff000000, true, 0x78563412)); 1123 ui::CompositionUnderline(0, 3, 0xff000000, true, 0x78563412));
1110 1124
1111 // Non-focused segment, with different background color. 1125 // Non-focused segment, with different background color.
1112 composition_text.underlines.push_back( 1126 composition_text.underlines.push_back(
1113 ui::CompositionUnderline(3, 4, 0xff000000, false, 0xefcdab90)); 1127 ui::CompositionUnderline(3, 4, 0xff000000, false, 0xefcdab90));
1114 1128
1115 const ui::CompositionUnderlines& underlines = composition_text.underlines; 1129 const ui::CompositionUnderlines& underlines = composition_text.underlines;
1116 1130
1117 // Caret is at the end. (This emulates Japanese MSIME 2007 and later) 1131 // Caret is at the end. (This emulates Japanese MSIME 2007 and later)
1118 composition_text.selection = gfx::Range(4); 1132 composition_text.selection = gfx::Range(4);
1119 1133
1120 sink_->ClearMessages(); 1134 sink_->ClearMessages();
1121 view_->SetCompositionText(composition_text); 1135 view_->SetCompositionText(composition_text);
1122 EXPECT_TRUE(view_->has_composition_text_); 1136 EXPECT_TRUE(view_->has_composition_text_);
1123 { 1137 {
1124 const IPC::Message* msg = 1138 const IPC::Message* msg =
1125 sink_->GetFirstMessageMatching(InputMsg_ImeSetComposition::ID); 1139 sink_->GetFirstMessageMatching(InputMsg_ImeSetComposition::ID);
1126 ASSERT_TRUE(msg != NULL); 1140 ASSERT_TRUE(msg != nullptr);
1127 1141
1128 InputMsg_ImeSetComposition::Param params; 1142 InputMsg_ImeSetComposition::Param params;
1129 InputMsg_ImeSetComposition::Read(msg, &params); 1143 InputMsg_ImeSetComposition::Read(msg, &params);
1130 // composition text 1144 // composition text
1131 EXPECT_EQ(composition_text.text, std::get<0>(params)); 1145 EXPECT_EQ(composition_text.text, std::get<0>(params));
1132 // underlines 1146 // underlines
1133 ASSERT_EQ(underlines.size(), std::get<1>(params).size()); 1147 ASSERT_EQ(underlines.size(), std::get<1>(params).size());
1134 for (size_t i = 0; i < underlines.size(); ++i) { 1148 for (size_t i = 0; i < underlines.size(); ++i) {
1135 EXPECT_EQ(underlines[i].start_offset, std::get<1>(params)[i].startOffset); 1149 EXPECT_EQ(underlines[i].start_offset, std::get<1>(params)[i].startOffset);
1136 EXPECT_EQ(underlines[i].end_offset, std::get<1>(params)[i].endOffset); 1150 EXPECT_EQ(underlines[i].end_offset, std::get<1>(params)[i].endOffset);
1137 EXPECT_EQ(underlines[i].color, std::get<1>(params)[i].color); 1151 EXPECT_EQ(underlines[i].color, std::get<1>(params)[i].color);
1138 EXPECT_EQ(underlines[i].thick, std::get<1>(params)[i].thick); 1152 EXPECT_EQ(underlines[i].thick, std::get<1>(params)[i].thick);
1139 EXPECT_EQ(underlines[i].background_color, 1153 EXPECT_EQ(underlines[i].background_color,
1140 std::get<1>(params)[i].backgroundColor); 1154 std::get<1>(params)[i].backgroundColor);
1141 } 1155 }
1142 EXPECT_EQ(gfx::Range::InvalidRange(), std::get<2>(params)); 1156 EXPECT_EQ(gfx::Range::InvalidRange(), std::get<2>(params));
1143 // highlighted range 1157 // highlighted range
1144 EXPECT_EQ(4, std::get<3>(params)) << "Should be the same to the caret pos"; 1158 EXPECT_EQ(4, std::get<3>(params)) << "Should be the same to the caret pos";
1145 EXPECT_EQ(4, std::get<4>(params)) << "Should be the same to the caret pos"; 1159 EXPECT_EQ(4, std::get<4>(params)) << "Should be the same to the caret pos";
1146 } 1160 }
1147 1161
1148 view_->ImeCancelComposition(); 1162 view_->ImeCancelComposition();
1149 EXPECT_FALSE(view_->has_composition_text_); 1163 EXPECT_FALSE(view_->has_composition_text_);
1150 } 1164 }
1151 1165
1152 // Checks that sequence of IME-composition-event and mouse-event when mouse 1166 // Checks that sequence of IME-composition-event and mouse-event when mouse
1153 // clicking to cancel the composition. 1167 // clicking to cancel the composition.
1154 TEST_F(RenderWidgetHostViewAuraTest, FinishCompositionByMouse) { 1168 TEST_F(RenderWidgetHostViewAuraTest, FinishCompositionByMouse) {
1155 view_->InitAsChild(NULL); 1169 view_->InitAsChild(nullptr);
1156 view_->Show(); 1170 view_->Show();
1157 ActivateViewForTextInputManager(view_, ui::TEXT_INPUT_TYPE_TEXT); 1171 ActivateViewForTextInputManager(view_, ui::TEXT_INPUT_TYPE_TEXT);
1158 1172
1159 ui::CompositionText composition_text; 1173 ui::CompositionText composition_text;
1160 composition_text.text = base::ASCIIToUTF16("|a|b"); 1174 composition_text.text = base::ASCIIToUTF16("|a|b");
1161 1175
1162 // Focused segment 1176 // Focused segment
1163 composition_text.underlines.push_back( 1177 composition_text.underlines.push_back(
1164 ui::CompositionUnderline(0, 3, 0xff000000, true, 0x78563412)); 1178 ui::CompositionUnderline(0, 3, 0xff000000, true, 0x78563412));
1165 1179
(...skipping 22 matching lines...) Expand all
1188 // Verify mouse event happens after the confirm-composition event. 1202 // Verify mouse event happens after the confirm-composition event.
1189 EXPECT_EQ(InputMsg_ImeConfirmComposition::ID, 1203 EXPECT_EQ(InputMsg_ImeConfirmComposition::ID,
1190 sink_->GetMessageAt(0)->type()); 1204 sink_->GetMessageAt(0)->type());
1191 EXPECT_EQ(InputMsg_HandleInputEvent::ID, 1205 EXPECT_EQ(InputMsg_HandleInputEvent::ID,
1192 sink_->GetMessageAt(1)->type()); 1206 sink_->GetMessageAt(1)->type());
1193 } 1207 }
1194 } 1208 }
1195 1209
1196 // Checks that touch-event state is maintained correctly. 1210 // Checks that touch-event state is maintained correctly.
1197 TEST_F(RenderWidgetHostViewAuraTest, TouchEventState) { 1211 TEST_F(RenderWidgetHostViewAuraTest, TouchEventState) {
1198 view_->InitAsChild(NULL); 1212 view_->InitAsChild(nullptr);
1199 view_->Show(); 1213 view_->Show();
1200 GetSentMessageCountAndResetSink(); 1214 GetSentMessageCountAndResetSink();
1201 1215
1202 // Start with no touch-event handler in the renderer. 1216 // Start with no touch-event handler in the renderer.
1203 widget_host_->OnMessageReceived(ViewHostMsg_HasTouchEventHandlers(0, false)); 1217 widget_host_->OnMessageReceived(ViewHostMsg_HasTouchEventHandlers(0, false));
1204 1218
1205 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(30, 30), 0, 1219 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(30, 30), 0,
1206 ui::EventTimeForNow()); 1220 ui::EventTimeForNow());
1207 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(20, 20), 0, 1221 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(20, 20), 0,
1208 ui::EventTimeForNow()); 1222 ui::EventTimeForNow());
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
1358 ui::EventTimeForNow()); 1372 ui::EventTimeForNow());
1359 1373
1360 view_->OnTouchEvent(&cancel1); 1374 view_->OnTouchEvent(&cancel1);
1361 EXPECT_EQ(1U, view_->dispatcher_->GetAndResetProcessedTouchEventCount()); 1375 EXPECT_EQ(1U, view_->dispatcher_->GetAndResetProcessedTouchEventCount());
1362 EXPECT_EQ(0U, pointer_state().GetPointerCount()); 1376 EXPECT_EQ(0U, pointer_state().GetPointerCount());
1363 } 1377 }
1364 1378
1365 // Checks that touch-events are queued properly when there is a touch-event 1379 // Checks that touch-events are queued properly when there is a touch-event
1366 // handler on the page. 1380 // handler on the page.
1367 TEST_F(RenderWidgetHostViewAuraTest, TouchEventSyncAsync) { 1381 TEST_F(RenderWidgetHostViewAuraTest, TouchEventSyncAsync) {
1368 view_->InitAsChild(NULL); 1382 view_->InitAsChild(nullptr);
1369 view_->Show(); 1383 view_->Show();
1370 1384
1371 widget_host_->OnMessageReceived(ViewHostMsg_HasTouchEventHandlers(0, true)); 1385 widget_host_->OnMessageReceived(ViewHostMsg_HasTouchEventHandlers(0, true));
1372 1386
1373 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(30, 30), 0, 1387 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(30, 30), 0,
1374 ui::EventTimeForNow()); 1388 ui::EventTimeForNow());
1375 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(20, 20), 0, 1389 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(20, 20), 0,
1376 ui::EventTimeForNow()); 1390 ui::EventTimeForNow());
1377 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(20, 20), 0, 1391 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(20, 20), 0,
1378 ui::EventTimeForNow()); 1392 ui::EventTimeForNow());
(...skipping 14 matching lines...) Expand all
1393 EXPECT_TRUE(move.synchronous_handling_disabled()); 1407 EXPECT_TRUE(move.synchronous_handling_disabled());
1394 EXPECT_EQ(ui::MotionEvent::ACTION_MOVE, pointer_state().GetAction()); 1408 EXPECT_EQ(ui::MotionEvent::ACTION_MOVE, pointer_state().GetAction());
1395 EXPECT_EQ(1U, pointer_state().GetPointerCount()); 1409 EXPECT_EQ(1U, pointer_state().GetPointerCount());
1396 1410
1397 view_->OnTouchEvent(&release); 1411 view_->OnTouchEvent(&release);
1398 EXPECT_TRUE(release.synchronous_handling_disabled()); 1412 EXPECT_TRUE(release.synchronous_handling_disabled());
1399 EXPECT_EQ(0U, pointer_state().GetPointerCount()); 1413 EXPECT_EQ(0U, pointer_state().GetPointerCount());
1400 } 1414 }
1401 1415
1402 TEST_F(RenderWidgetHostViewAuraTest, PhysicalBackingSizeWithScale) { 1416 TEST_F(RenderWidgetHostViewAuraTest, PhysicalBackingSizeWithScale) {
1403 view_->InitAsChild(NULL); 1417 view_->InitAsChild(nullptr);
1404 aura::client::ParentWindowWithContext( 1418 aura::client::ParentWindowWithContext(
1405 view_->GetNativeView(), 1419 view_->GetNativeView(),
1406 parent_view_->GetNativeView()->GetRootWindow(), 1420 parent_view_->GetNativeView()->GetRootWindow(),
1407 gfx::Rect()); 1421 gfx::Rect());
1408 sink_->ClearMessages(); 1422 sink_->ClearMessages();
1409 view_->SetSize(gfx::Size(100, 100)); 1423 view_->SetSize(gfx::Size(100, 100));
1410 EXPECT_EQ("100x100", view_->GetPhysicalBackingSize().ToString()); 1424 EXPECT_EQ("100x100", view_->GetPhysicalBackingSize().ToString());
1411 EXPECT_EQ(1u, sink_->message_count()); 1425 EXPECT_EQ(1u, sink_->message_count());
1412 EXPECT_EQ(ViewMsg_Resize::ID, sink_->GetMessageAt(0)->type()); 1426 EXPECT_EQ(ViewMsg_Resize::ID, sink_->GetMessageAt(0)->type());
1413 { 1427 {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1456 EXPECT_EQ("100x100", std::get<0>(params).new_size.ToString()); // dip size 1470 EXPECT_EQ("100x100", std::get<0>(params).new_size.ToString()); // dip size
1457 EXPECT_EQ( 1471 EXPECT_EQ(
1458 "100x100", 1472 "100x100",
1459 std::get<0>(params).physical_backing_size.ToString()); // backing size 1473 std::get<0>(params).physical_backing_size.ToString()); // backing size
1460 } 1474 }
1461 } 1475 }
1462 1476
1463 // Checks that InputMsg_CursorVisibilityChange IPC messages are dispatched 1477 // Checks that InputMsg_CursorVisibilityChange IPC messages are dispatched
1464 // to the renderer at the correct times. 1478 // to the renderer at the correct times.
1465 TEST_F(RenderWidgetHostViewAuraTest, CursorVisibilityChange) { 1479 TEST_F(RenderWidgetHostViewAuraTest, CursorVisibilityChange) {
1466 view_->InitAsChild(NULL); 1480 view_->InitAsChild(nullptr);
1467 aura::client::ParentWindowWithContext( 1481 aura::client::ParentWindowWithContext(
1468 view_->GetNativeView(), 1482 view_->GetNativeView(),
1469 parent_view_->GetNativeView()->GetRootWindow(), 1483 parent_view_->GetNativeView()->GetRootWindow(),
1470 gfx::Rect()); 1484 gfx::Rect());
1471 view_->SetSize(gfx::Size(100, 100)); 1485 view_->SetSize(gfx::Size(100, 100));
1472 1486
1473 aura::test::TestCursorClient cursor_client( 1487 aura::test::TestCursorClient cursor_client(
1474 parent_view_->GetNativeView()->GetRootWindow()); 1488 parent_view_->GetNativeView()->GetRootWindow());
1475 1489
1476 cursor_client.AddObserver(view_); 1490 cursor_client.AddObserver(view_);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1537 // a message is expected to be sent. 1551 // a message is expected to be sent.
1538 sink_->ClearMessages(); 1552 sink_->ClearMessages();
1539 view_->Show(); 1553 view_->Show();
1540 EXPECT_TRUE(sink_->GetUniqueMessageMatching( 1554 EXPECT_TRUE(sink_->GetUniqueMessageMatching(
1541 InputMsg_CursorVisibilityChange::ID)); 1555 InputMsg_CursorVisibilityChange::ID));
1542 1556
1543 cursor_client.RemoveObserver(view_); 1557 cursor_client.RemoveObserver(view_);
1544 } 1558 }
1545 1559
1546 TEST_F(RenderWidgetHostViewAuraTest, UpdateCursorIfOverSelf) { 1560 TEST_F(RenderWidgetHostViewAuraTest, UpdateCursorIfOverSelf) {
1547 view_->InitAsChild(NULL); 1561 view_->InitAsChild(nullptr);
1548 aura::client::ParentWindowWithContext( 1562 aura::client::ParentWindowWithContext(
1549 view_->GetNativeView(), 1563 view_->GetNativeView(),
1550 parent_view_->GetNativeView()->GetRootWindow(), 1564 parent_view_->GetNativeView()->GetRootWindow(),
1551 gfx::Rect()); 1565 gfx::Rect());
1552 1566
1553 // Note that all coordinates in this test are screen coordinates. 1567 // Note that all coordinates in this test are screen coordinates.
1554 view_->SetBounds(gfx::Rect(60, 60, 100, 100)); 1568 view_->SetBounds(gfx::Rect(60, 60, 100, 100));
1555 view_->Show(); 1569 view_->Show();
1556 1570
1557 aura::test::TestCursorClient cursor_client( 1571 aura::test::TestCursorClient cursor_client(
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1592 gfx::Size size, 1606 gfx::Size size,
1593 gfx::Rect damage) { 1607 gfx::Rect damage) {
1594 cc::CompositorFrame frame; 1608 cc::CompositorFrame frame;
1595 frame.metadata.device_scale_factor = scale_factor; 1609 frame.metadata.device_scale_factor = scale_factor;
1596 frame.delegated_frame_data.reset(new cc::DelegatedFrameData); 1610 frame.delegated_frame_data.reset(new cc::DelegatedFrameData);
1597 1611
1598 std::unique_ptr<cc::RenderPass> pass = cc::RenderPass::Create(); 1612 std::unique_ptr<cc::RenderPass> pass = cc::RenderPass::Create();
1599 pass->SetNew( 1613 pass->SetNew(
1600 cc::RenderPassId(1, 1), gfx::Rect(size), damage, gfx::Transform()); 1614 cc::RenderPassId(1, 1), gfx::Rect(size), damage, gfx::Transform());
1601 frame.delegated_frame_data->render_pass_list.push_back(std::move(pass)); 1615 frame.delegated_frame_data->render_pass_list.push_back(std::move(pass));
1616 if (!size.IsEmpty()) {
1617 cc::TransferableResource resource;
1618 resource.id = 1;
1619 frame.delegated_frame_data->resource_list.push_back(std::move(resource));
1620 }
1602 return frame; 1621 return frame;
1603 } 1622 }
1604 1623
1624 // If the ui::Compositor has been reset then resources are returned back to the
1625 // client in response to the swap. This test verifies that the returned
1626 // resources are indeed reported as being in response to a swap.
1627 TEST_F(RenderWidgetHostViewAuraTest, ResettingCompositorReturnsResources) {
1628 FakeSurfaceDamageObserver damage_observer;
1629 ImageTransportFactory* factory = ImageTransportFactory::GetInstance();
1630 cc::SurfaceManager* manager = factory->GetSurfaceManager();
1631 manager->AddObserver(&damage_observer);
1632
1633 gfx::Size view_size(100, 100);
1634 gfx::Rect view_rect(view_size);
1635
1636 view_->InitAsChild(nullptr);
1637 aura::client::ParentWindowWithContext(
1638 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(),
1639 gfx::Rect());
1640 view_->SetSize(view_size);
1641 view_->Show();
1642 sink_->ClearMessages();
1643
1644 view_->ResetCompositor();
1645
1646 // Swapping a frame should trigger a swap ACK IPC because we have reset the
1647 // compositor.
1648 view_->OnSwapCompositorFrame(0,
1649 MakeDelegatedFrame(1.f, view_size, view_rect));
1650 EXPECT_EQ(1u, sink_->message_count());
1651 {
1652 const IPC::Message* msg = sink_->GetMessageAt(0);
1653 EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID, msg->type());
1654 ViewMsg_ReclaimCompositorResources::Param params;
1655 ViewMsg_ReclaimCompositorResources::Read(msg, &params);
1656 EXPECT_EQ(0u, std::get<0>(params)); // output_surface_id
1657 EXPECT_TRUE(std::get<1>(params)); // is_swap_ack
1658 }
1659 manager->RemoveObserver(&damage_observer);
1660 }
1661
1662 // This test verifies that returned resources do not require a pending ack.
1663 TEST_F(RenderWidgetHostViewAuraTest, ReturnedResources) {
1664 gfx::Size view_size(100, 100);
1665 gfx::Rect view_rect(view_size);
1666
1667 view_->InitAsChild(nullptr);
1668 aura::client::ParentWindowWithContext(
1669 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(),
1670 gfx::Rect());
1671 view_->SetSize(view_size);
1672 view_->Show();
1673 sink_->ClearMessages();
1674
1675 // Accumulate some returned resources. This should not trigger an IPC.
1676 cc::ReturnedResourceArray resources;
1677 cc::ReturnedResource resource;
1678 resource.id = 1;
1679 resources.push_back(resource);
1680 view_->ReturnResources(resources);
1681 EXPECT_EQ(1u, sink_->message_count());
1682 {
1683 const IPC::Message* msg = sink_->GetMessageAt(0);
1684 EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID, msg->type());
1685 ViewMsg_ReclaimCompositorResources::Param params;
1686 ViewMsg_ReclaimCompositorResources::Read(msg, &params);
1687 EXPECT_EQ(0u, std::get<0>(params)); // output_surface_id
1688 EXPECT_FALSE(std::get<1>(params)); // is_swap_ack
1689 }
1690 }
1691
1692 // This test verifies that when the output_surface_id changes, then
1693 // DelegateFrameHost returns compositor resources without a swap ack.
1694 TEST_F(RenderWidgetHostViewAuraTest, TwoOutputSurfaces) {
1695 FakeSurfaceDamageObserver damage_observer;
1696 ImageTransportFactory* factory = ImageTransportFactory::GetInstance();
1697 cc::SurfaceManager* manager = factory->GetSurfaceManager();
1698 manager->AddObserver(&damage_observer);
1699
1700 gfx::Size view_size(100, 100);
1701 gfx::Rect view_rect(view_size);
1702
1703 view_->InitAsChild(nullptr);
1704 aura::client::ParentWindowWithContext(
1705 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(),
1706 gfx::Rect());
1707 view_->SetSize(view_size);
1708 view_->Show();
1709 sink_->ClearMessages();
1710
1711 view_->OnSwapCompositorFrame(0,
1712 MakeDelegatedFrame(1.f, view_size, view_rect));
1713
1714 // Accumulate some returned resources. This should not trigger an IPC.
1715 cc::ReturnedResourceArray resources;
1716 cc::ReturnedResource resource;
1717 resource.id = 1;
1718 resources.push_back(resource);
1719 view_->ReturnResources(resources);
1720 EXPECT_EQ(0u, sink_->message_count());
1721
1722 // Swap another CompositorFrame but this time from another output_surface_id.
1723 // This should trigger a non-ACK ReclaimCompositorResources IPC.
1724 view_->OnSwapCompositorFrame(1,
1725 MakeDelegatedFrame(1.f, view_size, view_rect));
1726 EXPECT_EQ(1u, sink_->message_count());
1727 {
1728 const IPC::Message* msg = sink_->GetMessageAt(0);
1729 EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID, msg->type());
1730 ViewMsg_ReclaimCompositorResources::Param params;
1731 ViewMsg_ReclaimCompositorResources::Read(msg, &params);
1732 EXPECT_EQ(0u, std::get<0>(params)); // output_surface_id
1733 EXPECT_FALSE(std::get<1>(params)); // is_swap_ack
1734 }
1735 sink_->ClearMessages();
1736
1737 // Report that the surface is drawn to trigger an ACK.
1738 cc::Surface* surface = manager->GetSurfaceForId(view_->surface_id());
1739 EXPECT_TRUE(surface);
1740 surface->RunDrawCallbacks(cc::SurfaceDrawStatus::DRAWN);
1741 EXPECT_EQ(1u, sink_->message_count());
1742 {
1743 const IPC::Message* msg = sink_->GetMessageAt(0);
1744 EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID, msg->type());
1745 ViewMsg_ReclaimCompositorResources::Param params;
1746 ViewMsg_ReclaimCompositorResources::Read(msg, &params);
1747 EXPECT_EQ(1u, std::get<0>(params)); // output_surface_id
1748 EXPECT_EQ(true, std::get<1>(params)); // is_swap_ack
1749 }
1750
1751 manager->RemoveObserver(&damage_observer);
1752 }
1753
1605 // Resizing in fullscreen mode should send the up-to-date screen info. 1754 // Resizing in fullscreen mode should send the up-to-date screen info.
1606 // http://crbug.com/324350 1755 // http://crbug.com/324350
1607 TEST_F(RenderWidgetHostViewAuraTest, DISABLED_FullscreenResize) { 1756 TEST_F(RenderWidgetHostViewAuraTest, DISABLED_FullscreenResize) {
1608 aura::Window* root_window = aura_test_helper_->root_window(); 1757 aura::Window* root_window = aura_test_helper_->root_window();
1609 root_window->SetLayoutManager(new FullscreenLayoutManager(root_window)); 1758 root_window->SetLayoutManager(new FullscreenLayoutManager(root_window));
1610 view_->InitAsFullscreen(parent_view_); 1759 view_->InitAsFullscreen(parent_view_);
1611 view_->Show(); 1760 view_->Show();
1612 widget_host_->ResetSizeAndRepaintPendingFlags(); 1761 widget_host_->ResetSizeAndRepaintPendingFlags();
1613 sink_->ClearMessages(); 1762 sink_->ClearMessages();
1614 1763
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1655 ui::DrawWaiterForTest::WaitForCommit( 1804 ui::DrawWaiterForTest::WaitForCommit(
1656 root_window->GetHost()->compositor()); 1805 root_window->GetHost()->compositor());
1657 } 1806 }
1658 } 1807 }
1659 1808
1660 // Swapping a frame should notify the window. 1809 // Swapping a frame should notify the window.
1661 TEST_F(RenderWidgetHostViewAuraTest, SwapNotifiesWindow) { 1810 TEST_F(RenderWidgetHostViewAuraTest, SwapNotifiesWindow) {
1662 gfx::Size view_size(100, 100); 1811 gfx::Size view_size(100, 100);
1663 gfx::Rect view_rect(view_size); 1812 gfx::Rect view_rect(view_size);
1664 1813
1665 view_->InitAsChild(NULL); 1814 view_->InitAsChild(nullptr);
1666 aura::client::ParentWindowWithContext( 1815 aura::client::ParentWindowWithContext(
1667 view_->GetNativeView(), 1816 view_->GetNativeView(),
1668 parent_view_->GetNativeView()->GetRootWindow(), 1817 parent_view_->GetNativeView()->GetRootWindow(),
1669 gfx::Rect()); 1818 gfx::Rect());
1670 view_->SetSize(view_size); 1819 view_->SetSize(view_size);
1671 view_->Show(); 1820 view_->Show();
1672 1821
1673 MockWindowObserver observer; 1822 MockWindowObserver observer;
1674 view_->window_->AddObserver(&observer); 1823 view_->window_->AddObserver(&observer);
1675 1824
(...skipping 11 matching lines...) Expand all
1687 1836
1688 view_->window_->RemoveObserver(&observer); 1837 view_->window_->RemoveObserver(&observer);
1689 } 1838 }
1690 1839
1691 // Recreating the layers for a window should cause Surface destruction to 1840 // Recreating the layers for a window should cause Surface destruction to
1692 // depend on both layers. 1841 // depend on both layers.
1693 TEST_F(RenderWidgetHostViewAuraTest, RecreateLayers) { 1842 TEST_F(RenderWidgetHostViewAuraTest, RecreateLayers) {
1694 gfx::Size view_size(100, 100); 1843 gfx::Size view_size(100, 100);
1695 gfx::Rect view_rect(view_size); 1844 gfx::Rect view_rect(view_size);
1696 1845
1697 view_->InitAsChild(NULL); 1846 view_->InitAsChild(nullptr);
1698 aura::client::ParentWindowWithContext( 1847 aura::client::ParentWindowWithContext(
1699 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(), 1848 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(),
1700 gfx::Rect()); 1849 gfx::Rect());
1701 view_->SetSize(view_size); 1850 view_->SetSize(view_size);
1702 view_->Show(); 1851 view_->Show();
1703 1852
1704 view_->OnSwapCompositorFrame(0, 1853 view_->OnSwapCompositorFrame(0,
1705 MakeDelegatedFrame(1.f, view_size, view_rect)); 1854 MakeDelegatedFrame(1.f, view_size, view_rect));
1706 std::unique_ptr<ui::LayerTreeOwner> cloned_owner( 1855 std::unique_ptr<ui::LayerTreeOwner> cloned_owner(
1707 wm::RecreateLayers(view_->GetNativeView(), nullptr)); 1856 wm::RecreateLayers(view_->GetNativeView(), nullptr));
(...skipping 12 matching lines...) Expand all
1720 // If the view size is larger than the compositor frame then extra layers 1869 // If the view size is larger than the compositor frame then extra layers
1721 // should be created to fill the gap. 1870 // should be created to fill the gap.
1722 TEST_F(RenderWidgetHostViewAuraTest, DelegatedFrameGutter) { 1871 TEST_F(RenderWidgetHostViewAuraTest, DelegatedFrameGutter) {
1723 gfx::Size large_size(100, 100); 1872 gfx::Size large_size(100, 100);
1724 gfx::Size small_size(40, 45); 1873 gfx::Size small_size(40, 45);
1725 gfx::Size medium_size(40, 95); 1874 gfx::Size medium_size(40, 95);
1726 1875
1727 // Prevent the DelegatedFrameHost from skipping frames. 1876 // Prevent the DelegatedFrameHost from skipping frames.
1728 view_->can_create_resize_lock_ = false; 1877 view_->can_create_resize_lock_ = false;
1729 1878
1730 view_->InitAsChild(NULL); 1879 view_->InitAsChild(nullptr);
1731 aura::client::ParentWindowWithContext( 1880 aura::client::ParentWindowWithContext(
1732 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(), 1881 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(),
1733 gfx::Rect()); 1882 gfx::Rect());
1734 view_->SetSize(large_size); 1883 view_->SetSize(large_size);
1735 view_->Show(); 1884 view_->Show();
1736 cc::CompositorFrame frame = 1885 cc::CompositorFrame frame =
1737 MakeDelegatedFrame(1.f, small_size, gfx::Rect(small_size)); 1886 MakeDelegatedFrame(1.f, small_size, gfx::Rect(small_size));
1738 frame.metadata.root_background_color = SK_ColorRED; 1887 frame.metadata.root_background_color = SK_ColorRED;
1739 view_->OnSwapCompositorFrame(0, std::move(frame)); 1888 view_->OnSwapCompositorFrame(0, std::move(frame));
1740 1889
(...skipping 27 matching lines...) Expand all
1768 view_->SetSize(small_size); 1917 view_->SetSize(small_size);
1769 ASSERT_EQ(0u, parent_layer->children().size()); 1918 ASSERT_EQ(0u, parent_layer->children().size());
1770 } 1919 }
1771 1920
1772 TEST_F(RenderWidgetHostViewAuraTest, Resize) { 1921 TEST_F(RenderWidgetHostViewAuraTest, Resize) {
1773 gfx::Size size1(100, 100); 1922 gfx::Size size1(100, 100);
1774 gfx::Size size2(200, 200); 1923 gfx::Size size2(200, 200);
1775 gfx::Size size3(300, 300); 1924 gfx::Size size3(300, 300);
1776 1925
1777 aura::Window* root_window = parent_view_->GetNativeView()->GetRootWindow(); 1926 aura::Window* root_window = parent_view_->GetNativeView()->GetRootWindow();
1778 view_->InitAsChild(NULL); 1927 view_->InitAsChild(nullptr);
1779 aura::client::ParentWindowWithContext( 1928 aura::client::ParentWindowWithContext(
1780 view_->GetNativeView(), root_window, gfx::Rect(size1)); 1929 view_->GetNativeView(), root_window, gfx::Rect(size1));
1781 view_->Show(); 1930 view_->Show();
1782 view_->SetSize(size1); 1931 view_->SetSize(size1);
1783 view_->OnSwapCompositorFrame( 1932 view_->OnSwapCompositorFrame(
1784 0, MakeDelegatedFrame(1.f, size1, gfx::Rect(size1))); 1933 0, MakeDelegatedFrame(1.f, size1, gfx::Rect(size1)));
1785 ui::DrawWaiterForTest::WaitForCommit( 1934 ui::DrawWaiterForTest::WaitForCommit(
1786 root_window->GetHost()->compositor()); 1935 root_window->GetHost()->compositor());
1787 ViewHostMsg_UpdateRect_Params update_params; 1936 ViewHostMsg_UpdateRect_Params update_params;
1788 update_params.view_size = size1; 1937 update_params.view_size = size1;
(...skipping 26 matching lines...) Expand all
1815 view_->SetSize(size3); 1964 view_->SetSize(size3);
1816 EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString()); 1965 EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString());
1817 EXPECT_EQ(0u, sink_->message_count()); 1966 EXPECT_EQ(0u, sink_->message_count());
1818 1967
1819 // Receive a frame of the new size, should be skipped and not produce a Resize 1968 // Receive a frame of the new size, should be skipped and not produce a Resize
1820 // message. 1969 // message.
1821 view_->OnSwapCompositorFrame( 1970 view_->OnSwapCompositorFrame(
1822 0, MakeDelegatedFrame(1.f, size3, gfx::Rect(size3))); 1971 0, MakeDelegatedFrame(1.f, size3, gfx::Rect(size3)));
1823 // Expect the frame ack; 1972 // Expect the frame ack;
1824 EXPECT_EQ(1u, sink_->message_count()); 1973 EXPECT_EQ(1u, sink_->message_count());
1825 EXPECT_EQ(ViewMsg_SwapCompositorFrameAck::ID, sink_->GetMessageAt(0)->type()); 1974 EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID,
1975 sink_->GetMessageAt(0)->type());
1826 sink_->ClearMessages(); 1976 sink_->ClearMessages();
1827 EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString()); 1977 EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString());
1828 1978
1829 // Receive a frame of the correct size, should not be skipped and, and should 1979 // Receive a frame of the correct size, should not be skipped and, and should
1830 // produce a Resize message after the commit. 1980 // produce a Resize message after the commit.
1831 view_->OnSwapCompositorFrame( 1981 view_->OnSwapCompositorFrame(
1832 0, MakeDelegatedFrame(1.f, size2, gfx::Rect(size2))); 1982 0, MakeDelegatedFrame(1.f, size2, gfx::Rect(size2)));
1833 cc::SurfaceId surface_id = view_->surface_id(); 1983 cc::SurfaceId surface_id = view_->surface_id();
1834 if (surface_id.is_null()) { 1984 if (surface_id.is_null()) {
1835 // No frame ack yet. 1985 // No frame ack yet.
(...skipping 18 matching lines...) Expand all
1854 // call 2004 // call
1855 // ui::WindowEventDispatcher::SynthesizeMouseMoveAfterChangeToWindow, 2005 // ui::WindowEventDispatcher::SynthesizeMouseMoveAfterChangeToWindow,
1856 // which the above WaitForCommit may cause to be picked up. Be robust 2006 // which the above WaitForCommit may cause to be picked up. Be robust
1857 // to this extra IPC coming in. 2007 // to this extra IPC coming in.
1858 InputMsg_HandleInputEvent::Param params; 2008 InputMsg_HandleInputEvent::Param params;
1859 InputMsg_HandleInputEvent::Read(msg, &params); 2009 InputMsg_HandleInputEvent::Read(msg, &params);
1860 const blink::WebInputEvent* event = std::get<0>(params); 2010 const blink::WebInputEvent* event = std::get<0>(params);
1861 EXPECT_EQ(blink::WebInputEvent::MouseMove, event->type); 2011 EXPECT_EQ(blink::WebInputEvent::MouseMove, event->type);
1862 break; 2012 break;
1863 } 2013 }
1864 case ViewMsg_SwapCompositorFrameAck::ID: 2014 case ViewMsg_ReclaimCompositorResources::ID:
1865 break; 2015 break;
1866 case ViewMsg_Resize::ID: { 2016 case ViewMsg_Resize::ID: {
1867 EXPECT_FALSE(has_resize); 2017 EXPECT_FALSE(has_resize);
1868 ViewMsg_Resize::Param params; 2018 ViewMsg_Resize::Param params;
1869 ViewMsg_Resize::Read(msg, &params); 2019 ViewMsg_Resize::Read(msg, &params);
1870 EXPECT_EQ(size3.ToString(), std::get<0>(params).new_size.ToString()); 2020 EXPECT_EQ(size3.ToString(), std::get<0>(params).new_size.ToString());
1871 has_resize = true; 2021 has_resize = true;
1872 break; 2022 break;
1873 } 2023 }
1874 default: 2024 default:
1875 ADD_FAILURE() << "Unexpected message " << msg->type(); 2025 ADD_FAILURE() << "Unexpected message " << msg->type();
1876 break; 2026 break;
1877 } 2027 }
1878 } 2028 }
1879 EXPECT_TRUE(has_resize); 2029 EXPECT_TRUE(has_resize);
1880 update_params.view_size = size3; 2030 update_params.view_size = size3;
1881 widget_host_->OnMessageReceived( 2031 widget_host_->OnMessageReceived(
1882 ViewHostMsg_UpdateRect(widget_host_->GetRoutingID(), update_params)); 2032 ViewHostMsg_UpdateRect(widget_host_->GetRoutingID(), update_params));
1883 sink_->ClearMessages(); 2033 sink_->ClearMessages();
1884 } 2034 }
1885 2035
1886 // Skipped frames should not drop their damage. 2036 // Skipped frames should not drop their damage.
1887 TEST_F(RenderWidgetHostViewAuraTest, SkippedDelegatedFrames) { 2037 TEST_F(RenderWidgetHostViewAuraTest, SkippedDelegatedFrames) {
1888 gfx::Rect view_rect(100, 100); 2038 gfx::Rect view_rect(100, 100);
1889 gfx::Size frame_size = view_rect.size(); 2039 gfx::Size frame_size = view_rect.size();
1890 2040
1891 view_->InitAsChild(NULL); 2041 view_->InitAsChild(nullptr);
1892 aura::client::ParentWindowWithContext( 2042 aura::client::ParentWindowWithContext(
1893 view_->GetNativeView(), 2043 view_->GetNativeView(),
1894 parent_view_->GetNativeView()->GetRootWindow(), 2044 parent_view_->GetNativeView()->GetRootWindow(),
1895 gfx::Rect()); 2045 gfx::Rect());
1896 view_->SetSize(view_rect.size()); 2046 view_->SetSize(view_rect.size());
1897 2047
1898 MockWindowObserver observer; 2048 MockWindowObserver observer;
1899 view_->window_->AddObserver(&observer); 2049 view_->window_->AddObserver(&observer);
1900 2050
1901 // A full frame of damage. 2051 // A full frame of damage.
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1968 testing::Mock::VerifyAndClearExpectations(&observer); 2118 testing::Mock::VerifyAndClearExpectations(&observer);
1969 view_->RunOnCompositingDidCommit(); 2119 view_->RunOnCompositingDidCommit();
1970 2120
1971 view_->window_->RemoveObserver(&observer); 2121 view_->window_->RemoveObserver(&observer);
1972 } 2122 }
1973 2123
1974 TEST_F(RenderWidgetHostViewAuraTest, OutputSurfaceIdChange) { 2124 TEST_F(RenderWidgetHostViewAuraTest, OutputSurfaceIdChange) {
1975 gfx::Rect view_rect(100, 100); 2125 gfx::Rect view_rect(100, 100);
1976 gfx::Size frame_size = view_rect.size(); 2126 gfx::Size frame_size = view_rect.size();
1977 2127
1978 view_->InitAsChild(NULL); 2128 view_->InitAsChild(nullptr);
1979 aura::client::ParentWindowWithContext( 2129 aura::client::ParentWindowWithContext(
1980 view_->GetNativeView(), 2130 view_->GetNativeView(),
1981 parent_view_->GetNativeView()->GetRootWindow(), 2131 parent_view_->GetNativeView()->GetRootWindow(),
1982 gfx::Rect()); 2132 gfx::Rect());
1983 view_->SetSize(view_rect.size()); 2133 view_->SetSize(view_rect.size());
1984 2134
1985 MockWindowObserver observer; 2135 MockWindowObserver observer;
1986 view_->window_->AddObserver(&observer); 2136 view_->window_->AddObserver(&observer);
1987 2137
1988 // Swap a frame. 2138 // Swap a frame.
(...skipping 20 matching lines...) Expand all
2009 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); 2159 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect));
2010 view_->OnSwapCompositorFrame(3, 2160 view_->OnSwapCompositorFrame(3,
2011 MakeDelegatedFrame(1.f, frame_size, view_rect)); 2161 MakeDelegatedFrame(1.f, frame_size, view_rect));
2012 testing::Mock::VerifyAndClearExpectations(&observer); 2162 testing::Mock::VerifyAndClearExpectations(&observer);
2013 view_->RunOnCompositingDidCommit(); 2163 view_->RunOnCompositingDidCommit();
2014 2164
2015 view_->window_->RemoveObserver(&observer); 2165 view_->window_->RemoveObserver(&observer);
2016 } 2166 }
2017 2167
2018 TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) { 2168 TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) {
2019 view_->InitAsChild(NULL); 2169 view_->InitAsChild(nullptr);
2020 2170
2021 size_t max_renderer_frames = 2171 size_t max_renderer_frames =
2022 RendererFrameManager::GetInstance()->GetMaxNumberOfSavedFrames(); 2172 RendererFrameManager::GetInstance()->GetMaxNumberOfSavedFrames();
2023 ASSERT_LE(2u, max_renderer_frames); 2173 ASSERT_LE(2u, max_renderer_frames);
2024 size_t renderer_count = max_renderer_frames + 1; 2174 size_t renderer_count = max_renderer_frames + 1;
2025 gfx::Rect view_rect(100, 100); 2175 gfx::Rect view_rect(100, 100);
2026 gfx::Size frame_size = view_rect.size(); 2176 gfx::Size frame_size = view_rect.size();
2027 DCHECK_EQ(0u, HostSharedBitmapManager::current()->AllocatedBitmapCount()); 2177 DCHECK_EQ(0u, HostSharedBitmapManager::current()->AllocatedBitmapCount());
2028 2178
2029 std::unique_ptr<RenderWidgetHostImpl* []> hosts( 2179 std::unique_ptr<RenderWidgetHostImpl* []> hosts(
2030 new RenderWidgetHostImpl*[renderer_count]); 2180 new RenderWidgetHostImpl*[renderer_count]);
2031 std::unique_ptr<FakeRenderWidgetHostViewAura* []> views( 2181 std::unique_ptr<FakeRenderWidgetHostViewAura* []> views(
2032 new FakeRenderWidgetHostViewAura*[renderer_count]); 2182 new FakeRenderWidgetHostViewAura*[renderer_count]);
2033 2183
2034 // Create a bunch of renderers. 2184 // Create a bunch of renderers.
2035 for (size_t i = 0; i < renderer_count; ++i) { 2185 for (size_t i = 0; i < renderer_count; ++i) {
2036 int32_t routing_id = process_host_->GetNextRoutingID(); 2186 int32_t routing_id = process_host_->GetNextRoutingID();
2037 delegates_.push_back(base::WrapUnique(new MockRenderWidgetHostDelegate)); 2187 delegates_.push_back(base::WrapUnique(new MockRenderWidgetHostDelegate));
2038 hosts[i] = new RenderWidgetHostImpl(delegates_.back().get(), process_host_, 2188 hosts[i] = new RenderWidgetHostImpl(delegates_.back().get(), process_host_,
2039 routing_id, false); 2189 routing_id, false);
2040 delegates_.back()->set_widget_host(hosts[i]); 2190 delegates_.back()->set_widget_host(hosts[i]);
2041 hosts[i]->Init(); 2191 hosts[i]->Init();
2042 views[i] = new FakeRenderWidgetHostViewAura(hosts[i], false); 2192 views[i] = new FakeRenderWidgetHostViewAura(hosts[i], false);
2043 views[i]->InitAsChild(NULL); 2193 views[i]->InitAsChild(nullptr);
2044 aura::client::ParentWindowWithContext( 2194 aura::client::ParentWindowWithContext(
2045 views[i]->GetNativeView(), 2195 views[i]->GetNativeView(),
2046 parent_view_->GetNativeView()->GetRootWindow(), 2196 parent_view_->GetNativeView()->GetRootWindow(),
2047 gfx::Rect()); 2197 gfx::Rect());
2048 views[i]->SetSize(view_rect.size()); 2198 views[i]->SetSize(view_rect.size());
2049 } 2199 }
2050 2200
2051 // Make each renderer visible, and swap a frame on it, then make it invisible. 2201 // Make each renderer visible, and swap a frame on it, then make it invisible.
2052 for (size_t i = 0; i < renderer_count; ++i) { 2202 for (size_t i = 0; i < renderer_count; ++i) {
2053 views[i]->Show(); 2203 views[i]->Show();
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
2174 RendererFrameManager::GetInstance()->set_max_handles( 2324 RendererFrameManager::GetInstance()->set_max_handles(
2175 base::SharedMemory::GetHandleLimit()); 2325 base::SharedMemory::GetHandleLimit());
2176 2326
2177 for (size_t i = 0; i < renderer_count; ++i) { 2327 for (size_t i = 0; i < renderer_count; ++i) {
2178 views[i]->Destroy(); 2328 views[i]->Destroy();
2179 delete hosts[i]; 2329 delete hosts[i];
2180 } 2330 }
2181 } 2331 }
2182 2332
2183 TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFramesWithLocking) { 2333 TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFramesWithLocking) {
2184 view_->InitAsChild(NULL); 2334 view_->InitAsChild(nullptr);
2185 2335
2186 size_t max_renderer_frames = 2336 size_t max_renderer_frames =
2187 RendererFrameManager::GetInstance()->GetMaxNumberOfSavedFrames(); 2337 RendererFrameManager::GetInstance()->GetMaxNumberOfSavedFrames();
2188 ASSERT_LE(2u, max_renderer_frames); 2338 ASSERT_LE(2u, max_renderer_frames);
2189 size_t renderer_count = max_renderer_frames + 1; 2339 size_t renderer_count = max_renderer_frames + 1;
2190 gfx::Rect view_rect(100, 100); 2340 gfx::Rect view_rect(100, 100);
2191 gfx::Size frame_size = view_rect.size(); 2341 gfx::Size frame_size = view_rect.size();
2192 DCHECK_EQ(0u, HostSharedBitmapManager::current()->AllocatedBitmapCount()); 2342 DCHECK_EQ(0u, HostSharedBitmapManager::current()->AllocatedBitmapCount());
2193 2343
2194 std::unique_ptr<RenderWidgetHostImpl* []> hosts( 2344 std::unique_ptr<RenderWidgetHostImpl* []> hosts(
2195 new RenderWidgetHostImpl*[renderer_count]); 2345 new RenderWidgetHostImpl*[renderer_count]);
2196 std::unique_ptr<FakeRenderWidgetHostViewAura* []> views( 2346 std::unique_ptr<FakeRenderWidgetHostViewAura* []> views(
2197 new FakeRenderWidgetHostViewAura*[renderer_count]); 2347 new FakeRenderWidgetHostViewAura*[renderer_count]);
2198 2348
2199 // Create a bunch of renderers. 2349 // Create a bunch of renderers.
2200 for (size_t i = 0; i < renderer_count; ++i) { 2350 for (size_t i = 0; i < renderer_count; ++i) {
2201 int32_t routing_id = process_host_->GetNextRoutingID(); 2351 int32_t routing_id = process_host_->GetNextRoutingID();
2202 delegates_.push_back(base::WrapUnique(new MockRenderWidgetHostDelegate)); 2352 delegates_.push_back(base::WrapUnique(new MockRenderWidgetHostDelegate));
2203 hosts[i] = new RenderWidgetHostImpl(delegates_.back().get(), process_host_, 2353 hosts[i] = new RenderWidgetHostImpl(delegates_.back().get(), process_host_,
2204 routing_id, false); 2354 routing_id, false);
2205 delegates_.back()->set_widget_host(hosts[i]); 2355 delegates_.back()->set_widget_host(hosts[i]);
2206 hosts[i]->Init(); 2356 hosts[i]->Init();
2207 views[i] = new FakeRenderWidgetHostViewAura(hosts[i], false); 2357 views[i] = new FakeRenderWidgetHostViewAura(hosts[i], false);
2208 views[i]->InitAsChild(NULL); 2358 views[i]->InitAsChild(nullptr);
2209 aura::client::ParentWindowWithContext( 2359 aura::client::ParentWindowWithContext(
2210 views[i]->GetNativeView(), 2360 views[i]->GetNativeView(),
2211 parent_view_->GetNativeView()->GetRootWindow(), 2361 parent_view_->GetNativeView()->GetRootWindow(),
2212 gfx::Rect()); 2362 gfx::Rect());
2213 views[i]->SetSize(view_rect.size()); 2363 views[i]->SetSize(view_rect.size());
2214 } 2364 }
2215 2365
2216 // Make each renderer visible and swap a frame on it. No eviction should 2366 // Make each renderer visible and swap a frame on it. No eviction should
2217 // occur because all frames are visible. 2367 // occur because all frames are visible.
2218 for (size_t i = 0; i < renderer_count; ++i) { 2368 for (size_t i = 0; i < renderer_count; ++i) {
(...skipping 22 matching lines...) Expand all
2241 2391
2242 for (size_t i = 0; i < renderer_count; ++i) { 2392 for (size_t i = 0; i < renderer_count; ++i) {
2243 views[i]->Destroy(); 2393 views[i]->Destroy();
2244 delete hosts[i]; 2394 delete hosts[i];
2245 } 2395 }
2246 } 2396 }
2247 2397
2248 // Test that changing the memory pressure should delete saved frames. This test 2398 // Test that changing the memory pressure should delete saved frames. This test
2249 // only applies to ChromeOS. 2399 // only applies to ChromeOS.
2250 TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFramesWithMemoryPressure) { 2400 TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFramesWithMemoryPressure) {
2251 view_->InitAsChild(NULL); 2401 view_->InitAsChild(nullptr);
2252 2402
2253 // The test logic below relies on having max_renderer_frames > 2. By default, 2403 // The test logic below relies on having max_renderer_frames > 2. By default,
2254 // this value is calculated from total physical memory and causes the test to 2404 // this value is calculated from total physical memory and causes the test to
2255 // fail when run on hardware with < 256MB of RAM. 2405 // fail when run on hardware with < 256MB of RAM.
2256 const size_t kMaxRendererFrames = 5; 2406 const size_t kMaxRendererFrames = 5;
2257 RendererFrameManager::GetInstance()->set_max_number_of_saved_frames( 2407 RendererFrameManager::GetInstance()->set_max_number_of_saved_frames(
2258 kMaxRendererFrames); 2408 kMaxRendererFrames);
2259 2409
2260 size_t renderer_count = kMaxRendererFrames; 2410 size_t renderer_count = kMaxRendererFrames;
2261 gfx::Rect view_rect(100, 100); 2411 gfx::Rect view_rect(100, 100);
2262 gfx::Size frame_size = view_rect.size(); 2412 gfx::Size frame_size = view_rect.size();
2263 DCHECK_EQ(0u, HostSharedBitmapManager::current()->AllocatedBitmapCount()); 2413 DCHECK_EQ(0u, HostSharedBitmapManager::current()->AllocatedBitmapCount());
2264 2414
2265 std::unique_ptr<RenderWidgetHostImpl* []> hosts( 2415 std::unique_ptr<RenderWidgetHostImpl* []> hosts(
2266 new RenderWidgetHostImpl*[renderer_count]); 2416 new RenderWidgetHostImpl*[renderer_count]);
2267 std::unique_ptr<FakeRenderWidgetHostViewAura* []> views( 2417 std::unique_ptr<FakeRenderWidgetHostViewAura* []> views(
2268 new FakeRenderWidgetHostViewAura*[renderer_count]); 2418 new FakeRenderWidgetHostViewAura*[renderer_count]);
2269 2419
2270 // Create a bunch of renderers. 2420 // Create a bunch of renderers.
2271 for (size_t i = 0; i < renderer_count; ++i) { 2421 for (size_t i = 0; i < renderer_count; ++i) {
2272 int32_t routing_id = process_host_->GetNextRoutingID(); 2422 int32_t routing_id = process_host_->GetNextRoutingID();
2273 delegates_.push_back(base::WrapUnique(new MockRenderWidgetHostDelegate)); 2423 delegates_.push_back(base::WrapUnique(new MockRenderWidgetHostDelegate));
2274 hosts[i] = new RenderWidgetHostImpl(delegates_.back().get(), process_host_, 2424 hosts[i] = new RenderWidgetHostImpl(delegates_.back().get(), process_host_,
2275 routing_id, false); 2425 routing_id, false);
2276 delegates_.back()->set_widget_host(hosts[i]); 2426 delegates_.back()->set_widget_host(hosts[i]);
2277 hosts[i]->Init(); 2427 hosts[i]->Init();
2278 views[i] = new FakeRenderWidgetHostViewAura(hosts[i], false); 2428 views[i] = new FakeRenderWidgetHostViewAura(hosts[i], false);
2279 views[i]->InitAsChild(NULL); 2429 views[i]->InitAsChild(nullptr);
2280 aura::client::ParentWindowWithContext( 2430 aura::client::ParentWindowWithContext(
2281 views[i]->GetNativeView(), 2431 views[i]->GetNativeView(),
2282 parent_view_->GetNativeView()->GetRootWindow(), 2432 parent_view_->GetNativeView()->GetRootWindow(),
2283 gfx::Rect()); 2433 gfx::Rect());
2284 views[i]->SetSize(view_rect.size()); 2434 views[i]->SetSize(view_rect.size());
2285 } 2435 }
2286 2436
2287 // Make each renderer visible and swap a frame on it. No eviction should 2437 // Make each renderer visible and swap a frame on it. No eviction should
2288 // occur because all frames are visible. 2438 // occur because all frames are visible.
2289 for (size_t i = 0; i < renderer_count; ++i) { 2439 for (size_t i = 0; i < renderer_count; ++i) {
(...skipping 25 matching lines...) Expand all
2315 for (size_t i = 0; i < renderer_count; ++i) { 2465 for (size_t i = 0; i < renderer_count; ++i) {
2316 views[i]->Destroy(); 2466 views[i]->Destroy();
2317 delete hosts[i]; 2467 delete hosts[i];
2318 } 2468 }
2319 } 2469 }
2320 2470
2321 TEST_F(RenderWidgetHostViewAuraTest, SoftwareDPIChange) { 2471 TEST_F(RenderWidgetHostViewAuraTest, SoftwareDPIChange) {
2322 gfx::Rect view_rect(100, 100); 2472 gfx::Rect view_rect(100, 100);
2323 gfx::Size frame_size(100, 100); 2473 gfx::Size frame_size(100, 100);
2324 2474
2325 view_->InitAsChild(NULL); 2475 view_->InitAsChild(nullptr);
2326 aura::client::ParentWindowWithContext( 2476 aura::client::ParentWindowWithContext(
2327 view_->GetNativeView(), 2477 view_->GetNativeView(),
2328 parent_view_->GetNativeView()->GetRootWindow(), 2478 parent_view_->GetNativeView()->GetRootWindow(),
2329 gfx::Rect()); 2479 gfx::Rect());
2330 view_->SetSize(view_rect.size()); 2480 view_->SetSize(view_rect.size());
2331 view_->Show(); 2481 view_->Show();
2332 2482
2333 // With a 1x DPI UI and 1x DPI Renderer. 2483 // With a 1x DPI UI and 1x DPI Renderer.
2334 view_->OnSwapCompositorFrame( 2484 view_->OnSwapCompositorFrame(
2335 1, MakeDelegatedFrame(1.f, frame_size, gfx::Rect(frame_size))); 2485 1, MakeDelegatedFrame(1.f, frame_size, gfx::Rect(frame_size)));
(...skipping 30 matching lines...) Expand all
2366 void RunLoopUntilCallback() { 2516 void RunLoopUntilCallback() {
2367 base::RunLoop run_loop; 2517 base::RunLoop run_loop;
2368 quit_closure_ = run_loop.QuitClosure(); 2518 quit_closure_ = run_loop.QuitClosure();
2369 // Temporarily ignore real draw requests. 2519 // Temporarily ignore real draw requests.
2370 frame_subscriber_->set_should_capture(false); 2520 frame_subscriber_->set_should_capture(false);
2371 run_loop.Run(); 2521 run_loop.Run();
2372 frame_subscriber_->set_should_capture(true); 2522 frame_subscriber_->set_should_capture(true);
2373 } 2523 }
2374 2524
2375 void InitializeView() { 2525 void InitializeView() {
2376 view_->InitAsChild(NULL); 2526 view_->InitAsChild(nullptr);
2377 view_->GetDelegatedFrameHost()->SetRequestCopyOfOutputCallbackForTesting( 2527 view_->GetDelegatedFrameHost()->SetRequestCopyOfOutputCallbackForTesting(
2378 base::Bind(&FakeRenderWidgetHostViewAura::InterceptCopyOfOutput, 2528 base::Bind(&FakeRenderWidgetHostViewAura::InterceptCopyOfOutput,
2379 base::Unretained(view_))); 2529 base::Unretained(view_)));
2380 aura::client::ParentWindowWithContext( 2530 aura::client::ParentWindowWithContext(
2381 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(), 2531 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(),
2382 gfx::Rect()); 2532 gfx::Rect());
2383 view_->SetSize(view_rect_.size()); 2533 view_->SetSize(view_rect_.size());
2384 view_->Show(); 2534 view_->Show();
2385 2535
2386 frame_subscriber_ = new FakeFrameSubscriber( 2536 frame_subscriber_ = new FakeFrameSubscriber(
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
2594 EXPECT_EQ(kBaseTime + kDefaultInterval * std::ceil(kElapsedIntervals), 2744 EXPECT_EQ(kBaseTime + kDefaultInterval * std::ceil(kElapsedIntervals),
2595 frame_subscriber_->last_present_time()); 2745 frame_subscriber_->last_present_time());
2596 2746
2597 // Destroy the RenderWidgetHostViewAura and ImageTransportFactory. 2747 // Destroy the RenderWidgetHostViewAura and ImageTransportFactory.
2598 TearDownEnvironment(); 2748 TearDownEnvironment();
2599 } 2749 }
2600 2750
2601 TEST_F(RenderWidgetHostViewAuraTest, VisibleViewportTest) { 2751 TEST_F(RenderWidgetHostViewAuraTest, VisibleViewportTest) {
2602 gfx::Rect view_rect(100, 100); 2752 gfx::Rect view_rect(100, 100);
2603 2753
2604 view_->InitAsChild(NULL); 2754 view_->InitAsChild(nullptr);
2605 aura::client::ParentWindowWithContext( 2755 aura::client::ParentWindowWithContext(
2606 view_->GetNativeView(), 2756 view_->GetNativeView(),
2607 parent_view_->GetNativeView()->GetRootWindow(), 2757 parent_view_->GetNativeView()->GetRootWindow(),
2608 gfx::Rect()); 2758 gfx::Rect());
2609 view_->SetSize(view_rect.size()); 2759 view_->SetSize(view_rect.size());
2610 view_->Show(); 2760 view_->Show();
2611 2761
2612 // Defaults to full height of the view. 2762 // Defaults to full height of the view.
2613 EXPECT_EQ(100, view_->GetVisibleViewportSize().height()); 2763 EXPECT_EQ(100, view_->GetVisibleViewportSize().height());
2614 2764
2615 widget_host_->ResetSizeAndRepaintPendingFlags(); 2765 widget_host_->ResetSizeAndRepaintPendingFlags();
2616 sink_->ClearMessages(); 2766 sink_->ClearMessages();
2617 view_->SetInsets(gfx::Insets(0, 0, 40, 0)); 2767 view_->SetInsets(gfx::Insets(0, 0, 40, 0));
2618 2768
2619 EXPECT_EQ(60, view_->GetVisibleViewportSize().height()); 2769 EXPECT_EQ(60, view_->GetVisibleViewportSize().height());
2620 2770
2621 const IPC::Message *message = sink_->GetFirstMessageMatching( 2771 const IPC::Message *message = sink_->GetFirstMessageMatching(
2622 ViewMsg_Resize::ID); 2772 ViewMsg_Resize::ID);
2623 ASSERT_TRUE(message != NULL); 2773 ASSERT_TRUE(message != nullptr);
2624 2774
2625 ViewMsg_Resize::Param params; 2775 ViewMsg_Resize::Param params;
2626 ViewMsg_Resize::Read(message, &params); 2776 ViewMsg_Resize::Read(message, &params);
2627 EXPECT_EQ(60, std::get<0>(params).visible_viewport_size.height()); 2777 EXPECT_EQ(60, std::get<0>(params).visible_viewport_size.height());
2628 } 2778 }
2629 2779
2630 // Ensures that touch event positions are never truncated to integers. 2780 // Ensures that touch event positions are never truncated to integers.
2631 TEST_F(RenderWidgetHostViewAuraTest, TouchEventPositionsArentRounded) { 2781 TEST_F(RenderWidgetHostViewAuraTest, TouchEventPositionsArentRounded) {
2632 const float kX = 30.58f; 2782 const float kX = 30.58f;
2633 const float kY = 50.23f; 2783 const float kY = 50.23f;
2634 2784
2635 view_->InitAsChild(NULL); 2785 view_->InitAsChild(nullptr);
2636 view_->Show(); 2786 view_->Show();
2637 2787
2638 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(), 0, 2788 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(), 0,
2639 ui::EventTimeForNow()); 2789 ui::EventTimeForNow());
2640 press.set_location_f(gfx::PointF(kX, kY)); 2790 press.set_location_f(gfx::PointF(kX, kY));
2641 press.set_root_location_f(gfx::PointF(kX, kY)); 2791 press.set_root_location_f(gfx::PointF(kX, kY));
2642 2792
2643 view_->OnTouchEvent(&press); 2793 view_->OnTouchEvent(&press);
2644 EXPECT_EQ(ui::MotionEvent::ACTION_DOWN, pointer_state().GetAction()); 2794 EXPECT_EQ(ui::MotionEvent::ACTION_DOWN, pointer_state().GetAction());
2645 EXPECT_EQ(1U, pointer_state().GetPointerCount()); 2795 EXPECT_EQ(1U, pointer_state().GetPointerCount());
(...skipping 950 matching lines...) Expand 10 before | Expand all | Expand 10 after
3596 // the host. 3746 // the host.
3597 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 3747 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
3598 blink::WebGestureDeviceTouchscreen); 3748 blink::WebGestureDeviceTouchscreen);
3599 SimulateGestureScrollUpdateEvent(300, -5, 0); 3749 SimulateGestureScrollUpdateEvent(300, -5, 0);
3600 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 3750 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
3601 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 3751 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
3602 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode()); 3752 EXPECT_EQ(OVERSCROLL_EAST, overscroll_mode());
3603 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode()); 3753 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->current_mode());
3604 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); 3754 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
3605 3755
3606 view_->OnWindowFocused(NULL, view_->GetNativeView()); 3756 view_->OnWindowFocused(nullptr, view_->GetNativeView());
3607 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode()); 3757 EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
3608 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3758 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3609 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode()); 3759 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode());
3610 EXPECT_EQ(0.f, overscroll_delegate()->delta_x()); 3760 EXPECT_EQ(0.f, overscroll_delegate()->delta_x());
3611 EXPECT_EQ(0.f, overscroll_delegate()->delta_y()); 3761 EXPECT_EQ(0.f, overscroll_delegate()->delta_y());
3612 sink_->ClearMessages(); 3762 sink_->ClearMessages();
3613 3763
3614 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 3764 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
3615 blink::WebGestureDeviceTouchscreen); 3765 blink::WebGestureDeviceTouchscreen);
3616 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3766 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
(...skipping 12 matching lines...) Expand all
3629 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 3779 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
3630 blink::WebGestureDeviceTouchscreen); 3780 blink::WebGestureDeviceTouchscreen);
3631 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode()); 3781 EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
3632 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode()); 3782 EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode());
3633 EXPECT_EQ(3U, sink_->message_count()); 3783 EXPECT_EQ(3U, sink_->message_count());
3634 } 3784 }
3635 3785
3636 // Tests that when view initiated shutdown happens (i.e. RWHView is deleted 3786 // Tests that when view initiated shutdown happens (i.e. RWHView is deleted
3637 // before RWH), we clean up properly and don't leak the RWHVGuest. 3787 // before RWH), we clean up properly and don't leak the RWHVGuest.
3638 TEST_F(RenderWidgetHostViewGuestAuraTest, GuestViewDoesNotLeak) { 3788 TEST_F(RenderWidgetHostViewGuestAuraTest, GuestViewDoesNotLeak) {
3639 view_->InitAsChild(NULL); 3789 view_->InitAsChild(nullptr);
3640 TearDownEnvironment(); 3790 TearDownEnvironment();
3641 ASSERT_FALSE(guest_view_weak_.get()); 3791 ASSERT_FALSE(guest_view_weak_.get());
3642 } 3792 }
3643 3793
3644 // Tests that invalid touch events are consumed and handled 3794 // Tests that invalid touch events are consumed and handled
3645 // synchronously. 3795 // synchronously.
3646 TEST_F(RenderWidgetHostViewAuraTest, 3796 TEST_F(RenderWidgetHostViewAuraTest,
3647 InvalidEventsHaveSyncHandlingDisabled) { 3797 InvalidEventsHaveSyncHandlingDisabled) {
3648 view_->InitAsChild(NULL); 3798 view_->InitAsChild(nullptr);
3649 view_->Show(); 3799 view_->Show();
3650 GetSentMessageCountAndResetSink(); 3800 GetSentMessageCountAndResetSink();
3651 3801
3652 widget_host_->OnMessageReceived(ViewHostMsg_HasTouchEventHandlers(0, true)); 3802 widget_host_->OnMessageReceived(ViewHostMsg_HasTouchEventHandlers(0, true));
3653 3803
3654 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(30, 30), 0, 3804 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(30, 30), 0,
3655 ui::EventTimeForNow()); 3805 ui::EventTimeForNow());
3656 3806
3657 // Construct a move with a touch id which doesn't exist. 3807 // Construct a move with a touch id which doesn't exist.
3658 ui::TouchEvent invalid_move(ui::ET_TOUCH_MOVED, gfx::Point(30, 30), 1, 3808 ui::TouchEvent invalid_move(ui::ET_TOUCH_MOVED, gfx::Point(30, 30), 1,
3659 ui::EventTimeForNow()); 3809 ui::EventTimeForNow());
3660 3810
3661 // Valid press is handled asynchronously. 3811 // Valid press is handled asynchronously.
3662 view_->OnTouchEvent(&press); 3812 view_->OnTouchEvent(&press);
3663 EXPECT_TRUE(press.synchronous_handling_disabled()); 3813 EXPECT_TRUE(press.synchronous_handling_disabled());
3664 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 3814 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
3665 AckLastSentInputEventIfNecessary(INPUT_EVENT_ACK_STATE_CONSUMED); 3815 AckLastSentInputEventIfNecessary(INPUT_EVENT_ACK_STATE_CONSUMED);
3666 3816
3667 // Invalid move is handled synchronously, but is consumed. It should not 3817 // Invalid move is handled synchronously, but is consumed. It should not
3668 // be forwarded to the renderer. 3818 // be forwarded to the renderer.
3669 view_->OnTouchEvent(&invalid_move); 3819 view_->OnTouchEvent(&invalid_move);
3670 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 3820 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
3671 EXPECT_FALSE(invalid_move.synchronous_handling_disabled()); 3821 EXPECT_FALSE(invalid_move.synchronous_handling_disabled());
3672 EXPECT_TRUE(invalid_move.stopped_propagation()); 3822 EXPECT_TRUE(invalid_move.stopped_propagation());
3673 } 3823 }
3674 3824
3675 // Checks key event codes. 3825 // Checks key event codes.
3676 TEST_F(RenderWidgetHostViewAuraTest, KeyEvent) { 3826 TEST_F(RenderWidgetHostViewAuraTest, KeyEvent) {
3677 view_->InitAsChild(NULL); 3827 view_->InitAsChild(nullptr);
3678 view_->Show(); 3828 view_->Show();
3679 3829
3680 ui::KeyEvent key_event(ui::ET_KEY_PRESSED, ui::VKEY_A, ui::DomCode::US_A, 3830 ui::KeyEvent key_event(ui::ET_KEY_PRESSED, ui::VKEY_A, ui::DomCode::US_A,
3681 ui::EF_NONE); 3831 ui::EF_NONE);
3682 view_->OnKeyEvent(&key_event); 3832 view_->OnKeyEvent(&key_event);
3683 3833
3684 const NativeWebKeyboardEvent* event = delegates_.back()->last_event(); 3834 const NativeWebKeyboardEvent* event = delegates_.back()->last_event();
3685 EXPECT_NE(nullptr, event); 3835 EXPECT_NE(nullptr, event);
3686 if (event) { 3836 if (event) {
3687 EXPECT_EQ(key_event.key_code(), event->windowsKeyCode); 3837 EXPECT_EQ(key_event.key_code(), event->windowsKeyCode);
3688 EXPECT_EQ(ui::KeycodeConverter::DomCodeToNativeKeycode(key_event.code()), 3838 EXPECT_EQ(ui::KeycodeConverter::DomCodeToNativeKeycode(key_event.code()),
3689 event->nativeKeyCode); 3839 event->nativeKeyCode);
3690 } 3840 }
3691 } 3841 }
3692 3842
3693 TEST_F(RenderWidgetHostViewAuraTest, SetCanScrollForWebMouseWheelEvent) { 3843 TEST_F(RenderWidgetHostViewAuraTest, SetCanScrollForWebMouseWheelEvent) {
3694 view_->InitAsChild(NULL); 3844 view_->InitAsChild(nullptr);
3695 view_->Show(); 3845 view_->Show();
3696 3846
3697 sink_->ClearMessages(); 3847 sink_->ClearMessages();
3698 3848
3699 // Simulates the mouse wheel event with ctrl modifier applied. 3849 // Simulates the mouse wheel event with ctrl modifier applied.
3700 ui::MouseWheelEvent event(gfx::Vector2d(1, 1), gfx::Point(), gfx::Point(), 3850 ui::MouseWheelEvent event(gfx::Vector2d(1, 1), gfx::Point(), gfx::Point(),
3701 ui::EventTimeForNow(), ui::EF_CONTROL_DOWN, 0); 3851 ui::EventTimeForNow(), ui::EF_CONTROL_DOWN, 0);
3702 view_->OnMouseEvent(&event); 3852 view_->OnMouseEvent(&event);
3703 3853
3704 const WebInputEvent* input_event = 3854 const WebInputEvent* input_event =
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
3864 // Tests the RenderWidgetHostImpl sends the correct surface ID namespace to 4014 // Tests the RenderWidgetHostImpl sends the correct surface ID namespace to
3865 // the renderer process. 4015 // the renderer process.
3866 TEST_F(RenderWidgetHostViewAuraTest, SurfaceClientIdInitialized) { 4016 TEST_F(RenderWidgetHostViewAuraTest, SurfaceClientIdInitialized) {
3867 gfx::Size size(5, 5); 4017 gfx::Size size(5, 5);
3868 4018
3869 const IPC::Message* msg = 4019 const IPC::Message* msg =
3870 sink_->GetUniqueMessageMatching(ViewMsg_SetSurfaceClientId::ID); 4020 sink_->GetUniqueMessageMatching(ViewMsg_SetSurfaceClientId::ID);
3871 EXPECT_TRUE(msg); 4021 EXPECT_TRUE(msg);
3872 ViewMsg_SetSurfaceClientId::Param params; 4022 ViewMsg_SetSurfaceClientId::Param params;
3873 ViewMsg_SetSurfaceClientId::Read(msg, &params); 4023 ViewMsg_SetSurfaceClientId::Read(msg, &params);
3874 view_->InitAsChild(NULL); 4024 view_->InitAsChild(nullptr);
3875 view_->Show(); 4025 view_->Show();
3876 view_->SetSize(size); 4026 view_->SetSize(size);
3877 view_->OnSwapCompositorFrame(0, 4027 view_->OnSwapCompositorFrame(0,
3878 MakeDelegatedFrame(1.f, size, gfx::Rect(size))); 4028 MakeDelegatedFrame(1.f, size, gfx::Rect(size)));
3879 EXPECT_EQ(view_->GetSurfaceClientId(), std::get<0>(params)); 4029 EXPECT_EQ(view_->GetSurfaceClientId(), std::get<0>(params));
3880 } 4030 }
3881 4031
3882 // This class provides functionality to test a RenderWidgetHostViewAura 4032 // This class provides functionality to test a RenderWidgetHostViewAura
3883 // instance which has been hooked up to a test RenderViewHost instance and 4033 // instance which has been hooked up to a test RenderViewHost instance and
3884 // a WebContents instance. 4034 // a WebContents instance.
(...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after
4316 // No bounds at index 1. 4466 // No bounds at index 1.
4317 EXPECT_FALSE(text_input_client()->GetCompositionCharacterBounds(1, &bound)); 4467 EXPECT_FALSE(text_input_client()->GetCompositionCharacterBounds(1, &bound));
4318 4468
4319 // Valid bound at index 0. 4469 // Valid bound at index 0.
4320 EXPECT_TRUE(text_input_client()->GetCompositionCharacterBounds(0, &bound)); 4470 EXPECT_TRUE(text_input_client()->GetCompositionCharacterBounds(0, &bound));
4321 EXPECT_EQ(4 + (int)index, bound.height()); 4471 EXPECT_EQ(4 + (int)index, bound.height());
4322 } 4472 }
4323 } 4473 }
4324 4474
4325 } // namespace content 4475 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698