| OLD | NEW |
| 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_mac.h" | 5 #include "content/browser/renderer_host/render_widget_host_view_mac.h" |
| 6 | 6 |
| 7 #include <Cocoa/Cocoa.h> | 7 #include <Cocoa/Cocoa.h> |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 | 10 |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 void Copy() override {} | 143 void Copy() override {} |
| 144 void Paste() override {} | 144 void Paste() override {} |
| 145 void SelectAll() override {} | 145 void SelectAll() override {} |
| 146 }; | 146 }; |
| 147 | 147 |
| 148 class MockRenderWidgetHostImpl : public RenderWidgetHostImpl { | 148 class MockRenderWidgetHostImpl : public RenderWidgetHostImpl { |
| 149 public: | 149 public: |
| 150 MockRenderWidgetHostImpl(RenderWidgetHostDelegate* delegate, | 150 MockRenderWidgetHostImpl(RenderWidgetHostDelegate* delegate, |
| 151 RenderProcessHost* process, | 151 RenderProcessHost* process, |
| 152 int32_t routing_id) | 152 int32_t routing_id) |
| 153 : RenderWidgetHostImpl(delegate, process, routing_id, false) {} | 153 : RenderWidgetHostImpl(delegate, process, routing_id, false) { |
| 154 set_renderer_initialized(true); |
| 155 } |
| 154 | 156 |
| 155 MOCK_METHOD0(Focus, void()); | 157 MOCK_METHOD0(Focus, void()); |
| 156 MOCK_METHOD0(Blur, void()); | 158 MOCK_METHOD0(Blur, void()); |
| 157 }; | 159 }; |
| 158 | 160 |
| 159 // Generates the |length| of composition rectangle vector and save them to | 161 // Generates the |length| of composition rectangle vector and save them to |
| 160 // |output|. It starts from |origin| and each rectangle contains |unit_size|. | 162 // |output|. It starts from |origin| and each rectangle contains |unit_size|. |
| 161 void GenerateCompositionRectArray(const gfx::Point& origin, | 163 void GenerateCompositionRectArray(const gfx::Point& origin, |
| 162 const gfx::Size& unit_size, | 164 const gfx::Size& unit_size, |
| 163 size_t length, | 165 size_t length, |
| (...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 EXPECT_EQ(gfx::Range(), gfx::Range(actual_range)); | 749 EXPECT_EQ(gfx::Range(), gfx::Range(actual_range)); |
| 748 } | 750 } |
| 749 | 751 |
| 750 // Verify that |SetActive()| calls |RenderWidgetHostImpl::Blur()| and | 752 // Verify that |SetActive()| calls |RenderWidgetHostImpl::Blur()| and |
| 751 // |RenderWidgetHostImp::Focus()|. | 753 // |RenderWidgetHostImp::Focus()|. |
| 752 TEST_F(RenderWidgetHostViewMacTest, BlurAndFocusOnSetActive) { | 754 TEST_F(RenderWidgetHostViewMacTest, BlurAndFocusOnSetActive) { |
| 753 MockRenderWidgetHostDelegate delegate; | 755 MockRenderWidgetHostDelegate delegate; |
| 754 TestBrowserContext browser_context; | 756 TestBrowserContext browser_context; |
| 755 MockRenderProcessHost* process_host = | 757 MockRenderProcessHost* process_host = |
| 756 new MockRenderProcessHost(&browser_context); | 758 new MockRenderProcessHost(&browser_context); |
| 759 process_host->Init(); |
| 757 | 760 |
| 758 // Owned by its |cocoa_view()|. | 761 // Owned by its |cocoa_view()|. |
| 759 int32_t routing_id = process_host->GetNextRoutingID(); | 762 int32_t routing_id = process_host->GetNextRoutingID(); |
| 760 MockRenderWidgetHostImpl* rwh = | 763 MockRenderWidgetHostImpl* rwh = |
| 761 new MockRenderWidgetHostImpl(&delegate, process_host, routing_id); | 764 new MockRenderWidgetHostImpl(&delegate, process_host, routing_id); |
| 762 RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(rwh, false); | 765 RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(rwh, false); |
| 763 | 766 |
| 764 base::scoped_nsobject<CocoaTestHelperWindow> window( | 767 base::scoped_nsobject<CocoaTestHelperWindow> window( |
| 765 [[CocoaTestHelperWindow alloc] init]); | 768 [[CocoaTestHelperWindow alloc] init]); |
| 766 [[window contentView] addSubview:view->cocoa_view()]; | 769 [[window contentView] addSubview:view->cocoa_view()]; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 801 // out |OnMessageReceived()|. | 804 // out |OnMessageReceived()|. |
| 802 TestBrowserContext browser_context; | 805 TestBrowserContext browser_context; |
| 803 MockRenderProcessHost* process_host = | 806 MockRenderProcessHost* process_host = |
| 804 new MockRenderProcessHost(&browser_context); | 807 new MockRenderProcessHost(&browser_context); |
| 805 process_host->Init(); | 808 process_host->Init(); |
| 806 MockRenderWidgetHostDelegate delegate; | 809 MockRenderWidgetHostDelegate delegate; |
| 807 int32_t routing_id = process_host->GetNextRoutingID(); | 810 int32_t routing_id = process_host->GetNextRoutingID(); |
| 808 MockRenderWidgetHostImpl* host = | 811 MockRenderWidgetHostImpl* host = |
| 809 new MockRenderWidgetHostImpl(&delegate, process_host, routing_id); | 812 new MockRenderWidgetHostImpl(&delegate, process_host, routing_id); |
| 810 RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(host, false); | 813 RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(host, false); |
| 814 process_host->sink().ClearMessages(); |
| 811 | 815 |
| 812 // Send an initial wheel event with NSEventPhaseBegan to the view. | 816 // Send an initial wheel event with NSEventPhaseBegan to the view. |
| 813 NSEvent* event1 = MockScrollWheelEventWithPhase(@selector(phaseBegan), 0); | 817 NSEvent* event1 = MockScrollWheelEventWithPhase(@selector(phaseBegan), 0); |
| 814 [view->cocoa_view() scrollWheel:event1]; | 818 [view->cocoa_view() scrollWheel:event1]; |
| 815 ASSERT_EQ(1U, process_host->sink().message_count()); | 819 ASSERT_EQ(1U, process_host->sink().message_count()); |
| 816 | 820 |
| 817 // Send an ACK for the first wheel event, so that the queue will be flushed. | 821 // Send an ACK for the first wheel event, so that the queue will be flushed. |
| 818 InputEventAck ack(blink::WebInputEvent::MouseWheel, | 822 InputEventAck ack(blink::WebInputEvent::MouseWheel, |
| 819 INPUT_EVENT_ACK_STATE_CONSUMED); | 823 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 820 scoped_ptr<IPC::Message> response( | 824 scoped_ptr<IPC::Message> response( |
| (...skipping 21 matching lines...) Expand all Loading... |
| 842 // out |OnMessageReceived()|. | 846 // out |OnMessageReceived()|. |
| 843 TestBrowserContext browser_context; | 847 TestBrowserContext browser_context; |
| 844 MockRenderProcessHost* process_host = | 848 MockRenderProcessHost* process_host = |
| 845 new MockRenderProcessHost(&browser_context); | 849 new MockRenderProcessHost(&browser_context); |
| 846 process_host->Init(); | 850 process_host->Init(); |
| 847 MockRenderWidgetHostDelegate delegate; | 851 MockRenderWidgetHostDelegate delegate; |
| 848 int32_t routing_id = process_host->GetNextRoutingID(); | 852 int32_t routing_id = process_host->GetNextRoutingID(); |
| 849 MockRenderWidgetHostImpl* host = | 853 MockRenderWidgetHostImpl* host = |
| 850 new MockRenderWidgetHostImpl(&delegate, process_host, routing_id); | 854 new MockRenderWidgetHostImpl(&delegate, process_host, routing_id); |
| 851 RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(host, false); | 855 RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(host, false); |
| 856 process_host->sink().ClearMessages(); |
| 852 | 857 |
| 853 // Add a delegate to the view. | 858 // Add a delegate to the view. |
| 854 base::scoped_nsobject<MockRenderWidgetHostViewMacDelegate> view_delegate( | 859 base::scoped_nsobject<MockRenderWidgetHostViewMacDelegate> view_delegate( |
| 855 [[MockRenderWidgetHostViewMacDelegate alloc] init]); | 860 [[MockRenderWidgetHostViewMacDelegate alloc] init]); |
| 856 view->SetDelegate(view_delegate.get()); | 861 view->SetDelegate(view_delegate.get()); |
| 857 | 862 |
| 858 // Send an initial wheel event for scrolling by 3 lines. | 863 // Send an initial wheel event for scrolling by 3 lines. |
| 859 NSEvent* event1 = MockScrollWheelEventWithPhase(@selector(phaseBegan), 3); | 864 NSEvent* event1 = MockScrollWheelEventWithPhase(@selector(phaseBegan), 3); |
| 860 [view->cocoa_view() scrollWheel:event1]; | 865 [view->cocoa_view() scrollWheel:event1]; |
| 861 ASSERT_EQ(1U, process_host->sink().message_count()); | 866 ASSERT_EQ(1U, process_host->sink().message_count()); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 889 host->ShutdownAndDestroyWidget(true); | 894 host->ShutdownAndDestroyWidget(true); |
| 890 } | 895 } |
| 891 | 896 |
| 892 // Tests that when view initiated shutdown happens (i.e. RWHView is deleted | 897 // Tests that when view initiated shutdown happens (i.e. RWHView is deleted |
| 893 // before RWH), we clean up properly and don't leak the RWHVGuest. | 898 // before RWH), we clean up properly and don't leak the RWHVGuest. |
| 894 TEST_F(RenderWidgetHostViewMacTest, GuestViewDoesNotLeak) { | 899 TEST_F(RenderWidgetHostViewMacTest, GuestViewDoesNotLeak) { |
| 895 MockRenderWidgetHostDelegate delegate; | 900 MockRenderWidgetHostDelegate delegate; |
| 896 TestBrowserContext browser_context; | 901 TestBrowserContext browser_context; |
| 897 MockRenderProcessHost* process_host = | 902 MockRenderProcessHost* process_host = |
| 898 new MockRenderProcessHost(&browser_context); | 903 new MockRenderProcessHost(&browser_context); |
| 904 process_host->Init(); |
| 899 int32_t routing_id = process_host->GetNextRoutingID(); | 905 int32_t routing_id = process_host->GetNextRoutingID(); |
| 900 | 906 |
| 901 // Owned by its |cocoa_view()|. | 907 // Owned by its |cocoa_view()|. |
| 902 MockRenderWidgetHostImpl* rwh = | 908 MockRenderWidgetHostImpl* rwh = |
| 903 new MockRenderWidgetHostImpl(&delegate, process_host, routing_id); | 909 new MockRenderWidgetHostImpl(&delegate, process_host, routing_id); |
| 904 RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(rwh, true); | 910 RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(rwh, true); |
| 905 | 911 |
| 906 // Add a delegate to the view. | 912 // Add a delegate to the view. |
| 907 base::scoped_nsobject<MockRenderWidgetHostViewMacDelegate> view_delegate( | 913 base::scoped_nsobject<MockRenderWidgetHostViewMacDelegate> view_delegate( |
| 908 [[MockRenderWidgetHostViewMacDelegate alloc] init]); | 914 [[MockRenderWidgetHostViewMacDelegate alloc] init]); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 931 ASSERT_FALSE(guest_rwhv_weak.get()); | 937 ASSERT_FALSE(guest_rwhv_weak.get()); |
| 932 } | 938 } |
| 933 | 939 |
| 934 // Tests setting background transparency. See also (disabled on Mac) | 940 // Tests setting background transparency. See also (disabled on Mac) |
| 935 // RenderWidgetHostTest.Background. This test has some additional checks for | 941 // RenderWidgetHostTest.Background. This test has some additional checks for |
| 936 // Mac. | 942 // Mac. |
| 937 TEST_F(RenderWidgetHostViewMacTest, Background) { | 943 TEST_F(RenderWidgetHostViewMacTest, Background) { |
| 938 TestBrowserContext browser_context; | 944 TestBrowserContext browser_context; |
| 939 MockRenderProcessHost* process_host = | 945 MockRenderProcessHost* process_host = |
| 940 new MockRenderProcessHost(&browser_context); | 946 new MockRenderProcessHost(&browser_context); |
| 947 process_host->Init(); |
| 941 MockRenderWidgetHostDelegate delegate; | 948 MockRenderWidgetHostDelegate delegate; |
| 942 int32_t routing_id = process_host->GetNextRoutingID(); | 949 int32_t routing_id = process_host->GetNextRoutingID(); |
| 943 MockRenderWidgetHostImpl* host = | 950 MockRenderWidgetHostImpl* host = |
| 944 new MockRenderWidgetHostImpl(&delegate, process_host, routing_id); | 951 new MockRenderWidgetHostImpl(&delegate, process_host, routing_id); |
| 945 RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(host, false); | 952 RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(host, false); |
| 946 | 953 |
| 947 EXPECT_TRUE(view->GetBackgroundOpaque()); | 954 EXPECT_TRUE(view->GetBackgroundOpaque()); |
| 948 EXPECT_TRUE([view->cocoa_view() isOpaque]); | 955 EXPECT_TRUE([view->cocoa_view() isOpaque]); |
| 949 | 956 |
| 950 view->SetBackgroundColor(SK_ColorTRANSPARENT); | 957 view->SetBackgroundColor(SK_ColorTRANSPARENT); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1013 // the MockRenderProcessHost that is set up by the test harness which mocks | 1020 // the MockRenderProcessHost that is set up by the test harness which mocks |
| 1014 // out |OnMessageReceived()|. | 1021 // out |OnMessageReceived()|. |
| 1015 TestBrowserContext browser_context; | 1022 TestBrowserContext browser_context; |
| 1016 process_host_ = new MockRenderProcessHost(&browser_context); | 1023 process_host_ = new MockRenderProcessHost(&browser_context); |
| 1017 process_host_->Init(); | 1024 process_host_->Init(); |
| 1018 MockRenderWidgetHostDelegate delegate; | 1025 MockRenderWidgetHostDelegate delegate; |
| 1019 int32_t routing_id = process_host_->GetNextRoutingID(); | 1026 int32_t routing_id = process_host_->GetNextRoutingID(); |
| 1020 MockRenderWidgetHostImpl* host = | 1027 MockRenderWidgetHostImpl* host = |
| 1021 new MockRenderWidgetHostImpl(&delegate, process_host_, routing_id); | 1028 new MockRenderWidgetHostImpl(&delegate, process_host_, routing_id); |
| 1022 RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(host, false); | 1029 RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(host, false); |
| 1030 process_host_->sink().ClearMessages(); |
| 1023 | 1031 |
| 1024 // We'll use this IPC message to ack events. | 1032 // We'll use this IPC message to ack events. |
| 1025 InputEventAck ack(blink::WebInputEvent::GesturePinchUpdate, | 1033 InputEventAck ack(blink::WebInputEvent::GesturePinchUpdate, |
| 1026 INPUT_EVENT_ACK_STATE_CONSUMED); | 1034 INPUT_EVENT_ACK_STATE_CONSUMED); |
| 1027 scoped_ptr<IPC::Message> response( | 1035 scoped_ptr<IPC::Message> response( |
| 1028 new InputHostMsg_HandleInputEvent_ACK(0, ack)); | 1036 new InputHostMsg_HandleInputEvent_ACK(0, ack)); |
| 1029 | 1037 |
| 1030 // Do a gesture that crosses the threshold. | 1038 // Do a gesture that crosses the threshold. |
| 1031 { | 1039 { |
| 1032 NSEvent* pinchBeginEvent = | 1040 NSEvent* pinchBeginEvent = |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1120 EXPECT_EQ(1U, process_host_->sink().message_count()); | 1128 EXPECT_EQ(1U, process_host_->sink().message_count()); |
| 1121 process_host_->sink().ClearMessages(); | 1129 process_host_->sink().ClearMessages(); |
| 1122 } | 1130 } |
| 1123 | 1131 |
| 1124 // Clean up. | 1132 // Clean up. |
| 1125 host->ShutdownAndDestroyWidget(true); | 1133 host->ShutdownAndDestroyWidget(true); |
| 1126 } | 1134 } |
| 1127 | 1135 |
| 1128 | 1136 |
| 1129 } // namespace content | 1137 } // namespace content |
| OLD | NEW |