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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/bind.h" | 6 #include "base/bind.h" |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/memory/shared_memory.h" | 9 #include "base/memory/shared_memory.h" |
10 #include "base/timer/timer.h" | 10 #include "base/timer/timer.h" |
(...skipping 935 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
946 // deleted. | 946 // deleted. |
947 host_->SetView(NULL); | 947 host_->SetView(NULL); |
948 host_->RendererExited(base::TERMINATION_STATUS_PROCESS_CRASHED, -1); | 948 host_->RendererExited(base::TERMINATION_STATUS_PROCESS_CRASHED, -1); |
949 EXPECT_FALSE(host_->resize_ack_pending_); | 949 EXPECT_FALSE(host_->resize_ack_pending_); |
950 EXPECT_EQ(gfx::Size(), host_->last_requested_size_); | 950 EXPECT_EQ(gfx::Size(), host_->last_requested_size_); |
951 | 951 |
952 // Reset the view so we can exit the test cleanly. | 952 // Reset the view so we can exit the test cleanly. |
953 host_->SetView(view_.get()); | 953 host_->SetView(view_.get()); |
954 } | 954 } |
955 | 955 |
956 // Tests setting custom background | 956 // Tests setting background transparency. |
957 TEST_F(RenderWidgetHostTest, Background) { | 957 TEST_F(RenderWidgetHostTest, Background) { |
958 #if !defined(OS_MACOSX) | |
959 scoped_ptr<RenderWidgetHostViewBase> view; | 958 scoped_ptr<RenderWidgetHostViewBase> view; |
960 #if defined(USE_AURA) | 959 #if defined(USE_AURA) |
961 view.reset(new RenderWidgetHostViewAura(host_.get())); | 960 view.reset(new RenderWidgetHostViewAura(host_.get())); |
962 // TODO(derat): Call this on all platforms: http://crbug.com/102450. | 961 // TODO(derat): Call this on all platforms: http://crbug.com/102450. |
963 view->InitAsChild(NULL); | 962 view->InitAsChild(NULL); |
964 #elif defined(OS_ANDROID) | 963 #elif defined(OS_ANDROID) |
965 view.reset(new RenderWidgetHostViewAndroid(host_.get(), NULL)); | 964 view.reset(new RenderWidgetHostViewAndroid(host_.get(), NULL)); |
966 #endif | 965 #endif |
967 host_->SetView(view.get()); | 966 host_->SetView(view.get()); |
968 | 967 |
969 // Create a checkerboard background to test with. | 968 EXPECT_TRUE(view->GetBackgroundOpaque()); |
970 gfx::Canvas canvas(gfx::Size(4, 4), 1.0f, true); | 969 view->SetBackgroundOpaque(false); |
971 canvas.FillRect(gfx::Rect(0, 0, 2, 2), SK_ColorBLACK); | 970 EXPECT_FALSE(view->GetBackgroundOpaque()); |
972 canvas.FillRect(gfx::Rect(2, 0, 2, 2), SK_ColorWHITE); | |
973 canvas.FillRect(gfx::Rect(0, 2, 2, 2), SK_ColorWHITE); | |
974 canvas.FillRect(gfx::Rect(2, 2, 2, 2), SK_ColorBLACK); | |
975 const SkBitmap& background = | |
976 canvas.sk_canvas()->getDevice()->accessBitmap(false); | |
977 | |
978 // Set the background and make sure we get back a copy. | |
979 view->SetBackground(background); | |
980 EXPECT_EQ(4, view->GetBackground().width()); | |
981 EXPECT_EQ(4, view->GetBackground().height()); | |
982 EXPECT_EQ(background.getSize(), view->GetBackground().getSize()); | |
983 background.lockPixels(); | |
984 view->GetBackground().lockPixels(); | |
985 EXPECT_TRUE(0 == memcmp(background.getPixels(), | |
986 view->GetBackground().getPixels(), | |
987 background.getSize())); | |
988 view->GetBackground().unlockPixels(); | |
989 background.unlockPixels(); | |
990 | 971 |
991 const IPC::Message* set_background = | 972 const IPC::Message* set_background = |
992 process_->sink().GetUniqueMessageMatching(ViewMsg_SetBackground::ID); | 973 process_->sink().GetUniqueMessageMatching( |
| 974 ViewMsg_SetBackgroundOpaque::ID); |
993 ASSERT_TRUE(set_background); | 975 ASSERT_TRUE(set_background); |
994 Tuple1<SkBitmap> sent_background; | 976 Tuple1<bool> sent_background; |
995 ViewMsg_SetBackground::Read(set_background, &sent_background); | 977 ViewMsg_SetBackgroundOpaque::Read(set_background, &sent_background); |
996 EXPECT_EQ(background.getSize(), sent_background.a.getSize()); | 978 EXPECT_FALSE(sent_background.a); |
997 background.lockPixels(); | |
998 sent_background.a.lockPixels(); | |
999 EXPECT_TRUE(0 == memcmp(background.getPixels(), | |
1000 sent_background.a.getPixels(), | |
1001 background.getSize())); | |
1002 sent_background.a.unlockPixels(); | |
1003 background.unlockPixels(); | |
1004 | 979 |
1005 #if defined(USE_AURA) | 980 #if defined(USE_AURA) |
1006 // See the comment above |InitAsChild(NULL)|. | 981 // See the comment above |InitAsChild(NULL)|. |
1007 host_->SetView(NULL); | 982 host_->SetView(NULL); |
1008 static_cast<RenderWidgetHostViewBase*>(view.release())->Destroy(); | 983 static_cast<RenderWidgetHostViewBase*>(view.release())->Destroy(); |
1009 #endif | 984 #endif |
1010 | |
1011 #else | |
1012 // TODO(port): Mac does not have gfx::Canvas. Maybe we can just change this | |
1013 // test to use SkCanvas directly? | |
1014 #endif | |
1015 | |
1016 // TODO(aa): It would be nice to factor out the painting logic so that we | |
1017 // could test that, but it appears that would mean painting everything twice | |
1018 // since windows HDC structures are opaque. | |
1019 } | 985 } |
1020 | 986 |
1021 // Test that we don't paint when we're hidden, but we still send the ACK. Most | 987 // Test that we don't paint when we're hidden, but we still send the ACK. Most |
1022 // of the rest of the painting is tested in the GetBackingStore* ones. | 988 // of the rest of the painting is tested in the GetBackingStore* ones. |
1023 TEST_F(RenderWidgetHostTest, HiddenPaint) { | 989 TEST_F(RenderWidgetHostTest, HiddenPaint) { |
1024 BrowserThreadImpl ui_thread(BrowserThread::UI, base::MessageLoop::current()); | 990 BrowserThreadImpl ui_thread(BrowserThread::UI, base::MessageLoop::current()); |
1025 // Hide the widget, it should have sent out a message to the renderer. | 991 // Hide the widget, it should have sent out a message to the renderer. |
1026 EXPECT_FALSE(host_->is_hidden_); | 992 EXPECT_FALSE(host_->is_hidden_); |
1027 host_->WasHidden(); | 993 host_->WasHidden(); |
1028 EXPECT_TRUE(host_->is_hidden_); | 994 EXPECT_TRUE(host_->is_hidden_); |
(...skipping 1640 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2669 | 2635 |
2670 // Tests RWHI::ForwardTouchEventWithLatencyInfo(). | 2636 // Tests RWHI::ForwardTouchEventWithLatencyInfo(). |
2671 PressTouchPoint(0, 1); | 2637 PressTouchPoint(0, 1); |
2672 SendTouchEvent(); | 2638 SendTouchEvent(); |
2673 CheckLatencyInfoComponentInMessage( | 2639 CheckLatencyInfoComponentInMessage( |
2674 process_, GetLatencyComponentId(), WebInputEvent::TouchStart); | 2640 process_, GetLatencyComponentId(), WebInputEvent::TouchStart); |
2675 SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED); | 2641 SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED); |
2676 } | 2642 } |
2677 | 2643 |
2678 } // namespace content | 2644 } // namespace content |
OLD | NEW |