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/compiler_specific.h" | 6 #include "base/compiler_specific.h" |
7 #include "base/file_path.h" | 7 #include "base/file_path.h" |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
(...skipping 678 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
689 | 689 |
690 NullLayerDelegate delegate; | 690 NullLayerDelegate delegate; |
691 l1->set_delegate(&delegate); | 691 l1->set_delegate(&delegate); |
692 l2->set_delegate(&delegate); | 692 l2->set_delegate(&delegate); |
693 l3->set_delegate(&delegate); | 693 l3->set_delegate(&delegate); |
694 | 694 |
695 // Layers should initially be drawn. | 695 // Layers should initially be drawn. |
696 EXPECT_TRUE(l1->IsDrawn()); | 696 EXPECT_TRUE(l1->IsDrawn()); |
697 EXPECT_TRUE(l2->IsDrawn()); | 697 EXPECT_TRUE(l2->IsDrawn()); |
698 EXPECT_TRUE(l3->IsDrawn()); | 698 EXPECT_TRUE(l3->IsDrawn()); |
699 #if defined(WEBLAYER_IS_PURE_VIRTUAL) | |
700 EXPECT_EQ(1.f, l1->web_layer()->opacity()); | 699 EXPECT_EQ(1.f, l1->web_layer()->opacity()); |
701 EXPECT_EQ(1.f, l2->web_layer()->opacity()); | 700 EXPECT_EQ(1.f, l2->web_layer()->opacity()); |
702 EXPECT_EQ(1.f, l3->web_layer()->opacity()); | 701 EXPECT_EQ(1.f, l3->web_layer()->opacity()); |
703 #else | |
704 EXPECT_EQ(1.f, l1->web_layer().opacity()); | |
705 EXPECT_EQ(1.f, l2->web_layer().opacity()); | |
706 EXPECT_EQ(1.f, l3->web_layer().opacity()); | |
707 #endif | |
708 | 702 |
709 compositor()->SetRootLayer(l1.get()); | 703 compositor()->SetRootLayer(l1.get()); |
710 | 704 |
711 Draw(); | 705 Draw(); |
712 | 706 |
713 l1->SetVisible(false); | 707 l1->SetVisible(false); |
714 EXPECT_FALSE(l1->IsDrawn()); | 708 EXPECT_FALSE(l1->IsDrawn()); |
715 EXPECT_FALSE(l2->IsDrawn()); | 709 EXPECT_FALSE(l2->IsDrawn()); |
716 EXPECT_FALSE(l3->IsDrawn()); | 710 EXPECT_FALSE(l3->IsDrawn()); |
717 #if defined(WEBLAYER_IS_PURE_VIRTUAL) | |
718 EXPECT_EQ(0.f, l1->web_layer()->opacity()); | 711 EXPECT_EQ(0.f, l1->web_layer()->opacity()); |
719 #else | |
720 EXPECT_EQ(0.f, l1->web_layer().opacity()); | |
721 #endif | |
722 | 712 |
723 l3->SetVisible(false); | 713 l3->SetVisible(false); |
724 EXPECT_FALSE(l1->IsDrawn()); | 714 EXPECT_FALSE(l1->IsDrawn()); |
725 EXPECT_FALSE(l2->IsDrawn()); | 715 EXPECT_FALSE(l2->IsDrawn()); |
726 EXPECT_FALSE(l3->IsDrawn()); | 716 EXPECT_FALSE(l3->IsDrawn()); |
727 #if defined(WEBLAYER_IS_PURE_VIRTUAL) | |
728 EXPECT_EQ(0.f, l3->web_layer()->opacity()); | 717 EXPECT_EQ(0.f, l3->web_layer()->opacity()); |
729 #else | |
730 EXPECT_EQ(0.f, l3->web_layer().opacity()); | |
731 #endif | |
732 | 718 |
733 l1->SetVisible(true); | 719 l1->SetVisible(true); |
734 EXPECT_TRUE(l1->IsDrawn()); | 720 EXPECT_TRUE(l1->IsDrawn()); |
735 EXPECT_TRUE(l2->IsDrawn()); | 721 EXPECT_TRUE(l2->IsDrawn()); |
736 EXPECT_FALSE(l3->IsDrawn()); | 722 EXPECT_FALSE(l3->IsDrawn()); |
737 #if defined(WEBLAYER_IS_PURE_VIRTUAL) | |
738 EXPECT_EQ(1.f, l1->web_layer()->opacity()); | 723 EXPECT_EQ(1.f, l1->web_layer()->opacity()); |
739 #else | |
740 EXPECT_EQ(1.f, l1->web_layer().opacity()); | |
741 #endif | |
742 } | 724 } |
743 | 725 |
744 // Checks that stacking-related methods behave as advertised. | 726 // Checks that stacking-related methods behave as advertised. |
745 TEST_F(LayerWithNullDelegateTest, Stacking) { | 727 TEST_F(LayerWithNullDelegateTest, Stacking) { |
746 scoped_ptr<Layer> root(new Layer(LAYER_NOT_DRAWN)); | 728 scoped_ptr<Layer> root(new Layer(LAYER_NOT_DRAWN)); |
747 scoped_ptr<Layer> l1(new Layer(LAYER_TEXTURED)); | 729 scoped_ptr<Layer> l1(new Layer(LAYER_TEXTURED)); |
748 scoped_ptr<Layer> l2(new Layer(LAYER_TEXTURED)); | 730 scoped_ptr<Layer> l2(new Layer(LAYER_TEXTURED)); |
749 scoped_ptr<Layer> l3(new Layer(LAYER_TEXTURED)); | 731 scoped_ptr<Layer> l3(new Layer(LAYER_TEXTURED)); |
750 l1->set_name("1"); | 732 l1->set_name("1"); |
751 l2->set_name("2"); | 733 l2->set_name("2"); |
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1139 l1_delegate.AddColor(SK_ColorWHITE); | 1121 l1_delegate.AddColor(SK_ColorWHITE); |
1140 l1->set_delegate(&l1_delegate); | 1122 l1->set_delegate(&l1_delegate); |
1141 | 1123 |
1142 GetCompositor()->SetScaleAndSize(1.0f, gfx::Size(500, 500)); | 1124 GetCompositor()->SetScaleAndSize(1.0f, gfx::Size(500, 500)); |
1143 GetCompositor()->SetRootLayer(root.get()); | 1125 GetCompositor()->SetRootLayer(root.get()); |
1144 root->Add(l1.get()); | 1126 root->Add(l1.get()); |
1145 RunPendingMessages(); | 1127 RunPendingMessages(); |
1146 | 1128 |
1147 EXPECT_EQ("10,20 200x220", root->bounds().ToString()); | 1129 EXPECT_EQ("10,20 200x220", root->bounds().ToString()); |
1148 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); | 1130 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); |
1149 #if defined(WEBLAYER_IS_PURE_VIRTUAL) | |
1150 gfx::Size size_in_pixel = root->web_layer()->bounds(); | 1131 gfx::Size size_in_pixel = root->web_layer()->bounds(); |
1151 #else | |
1152 gfx::Size size_in_pixel = root->web_layer().bounds(); | |
1153 #endif | |
1154 EXPECT_EQ("200x220", size_in_pixel.ToString()); | 1132 EXPECT_EQ("200x220", size_in_pixel.ToString()); |
1155 #if defined(WEBLAYER_IS_PURE_VIRTUAL) | |
1156 size_in_pixel = l1->web_layer()->bounds(); | 1133 size_in_pixel = l1->web_layer()->bounds(); |
1157 #else | |
1158 size_in_pixel = l1->web_layer().bounds(); | |
1159 #endif | |
1160 EXPECT_EQ("140x180", size_in_pixel.ToString()); | 1134 EXPECT_EQ("140x180", size_in_pixel.ToString()); |
1161 // No scale change, so no scale notification. | 1135 // No scale change, so no scale notification. |
1162 EXPECT_EQ(0.0f, root_delegate.device_scale_factor()); | 1136 EXPECT_EQ(0.0f, root_delegate.device_scale_factor()); |
1163 EXPECT_EQ(0.0f, l1_delegate.device_scale_factor()); | 1137 EXPECT_EQ(0.0f, l1_delegate.device_scale_factor()); |
1164 | 1138 |
1165 RunPendingMessages(); | 1139 RunPendingMessages(); |
1166 EXPECT_EQ("200x220", root_delegate.paint_size().ToString()); | 1140 EXPECT_EQ("200x220", root_delegate.paint_size().ToString()); |
1167 EXPECT_EQ("140x180", l1_delegate.paint_size().ToString()); | 1141 EXPECT_EQ("140x180", l1_delegate.paint_size().ToString()); |
1168 | 1142 |
1169 // Scale up to 2.0. Changing scale doesn't change the bounds in DIP. | 1143 // Scale up to 2.0. Changing scale doesn't change the bounds in DIP. |
1170 GetCompositor()->SetScaleAndSize(2.0f, gfx::Size(500, 500)); | 1144 GetCompositor()->SetScaleAndSize(2.0f, gfx::Size(500, 500)); |
1171 EXPECT_EQ("10,20 200x220", root->bounds().ToString()); | 1145 EXPECT_EQ("10,20 200x220", root->bounds().ToString()); |
1172 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); | 1146 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); |
1173 // Pixel size must have been scaled up. | 1147 // Pixel size must have been scaled up. |
1174 #if defined(WEBLAYER_IS_PURE_VIRTUAL) | |
1175 size_in_pixel = root->web_layer()->bounds(); | 1148 size_in_pixel = root->web_layer()->bounds(); |
1176 #else | |
1177 size_in_pixel = root->web_layer().bounds(); | |
1178 #endif | |
1179 EXPECT_EQ("400x440", size_in_pixel.ToString()); | 1149 EXPECT_EQ("400x440", size_in_pixel.ToString()); |
1180 #if defined(WEBLAYER_IS_PURE_VIRTUAL) | |
1181 size_in_pixel = l1->web_layer()->bounds(); | 1150 size_in_pixel = l1->web_layer()->bounds(); |
1182 #else | |
1183 size_in_pixel = l1->web_layer().bounds(); | |
1184 #endif | |
1185 EXPECT_EQ("280x360", size_in_pixel.ToString()); | 1151 EXPECT_EQ("280x360", size_in_pixel.ToString()); |
1186 // New scale factor must have been notified. | 1152 // New scale factor must have been notified. |
1187 EXPECT_EQ(2.0f, root_delegate.device_scale_factor()); | 1153 EXPECT_EQ(2.0f, root_delegate.device_scale_factor()); |
1188 EXPECT_EQ(2.0f, l1_delegate.device_scale_factor()); | 1154 EXPECT_EQ(2.0f, l1_delegate.device_scale_factor()); |
1189 | 1155 |
1190 // Canvas size must have been scaled down up. | 1156 // Canvas size must have been scaled down up. |
1191 RunPendingMessages(); | 1157 RunPendingMessages(); |
1192 EXPECT_EQ("400x440", root_delegate.paint_size().ToString()); | 1158 EXPECT_EQ("400x440", root_delegate.paint_size().ToString()); |
1193 EXPECT_EQ("2.0 2.0", root_delegate.ToScaleString()); | 1159 EXPECT_EQ("2.0 2.0", root_delegate.ToScaleString()); |
1194 EXPECT_EQ("280x360", l1_delegate.paint_size().ToString()); | 1160 EXPECT_EQ("280x360", l1_delegate.paint_size().ToString()); |
1195 EXPECT_EQ("2.0 2.0", l1_delegate.ToScaleString()); | 1161 EXPECT_EQ("2.0 2.0", l1_delegate.ToScaleString()); |
1196 | 1162 |
1197 // Scale down back to 1.0f. | 1163 // Scale down back to 1.0f. |
1198 GetCompositor()->SetScaleAndSize(1.0f, gfx::Size(500, 500)); | 1164 GetCompositor()->SetScaleAndSize(1.0f, gfx::Size(500, 500)); |
1199 EXPECT_EQ("10,20 200x220", root->bounds().ToString()); | 1165 EXPECT_EQ("10,20 200x220", root->bounds().ToString()); |
1200 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); | 1166 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); |
1201 // Pixel size must have been scaled down. | 1167 // Pixel size must have been scaled down. |
1202 #if defined(WEBLAYER_IS_PURE_VIRTUAL) | |
1203 size_in_pixel = root->web_layer()->bounds(); | 1168 size_in_pixel = root->web_layer()->bounds(); |
1204 #else | |
1205 size_in_pixel = root->web_layer().bounds(); | |
1206 #endif | |
1207 EXPECT_EQ("200x220", size_in_pixel.ToString()); | 1169 EXPECT_EQ("200x220", size_in_pixel.ToString()); |
1208 #if defined(WEBLAYER_IS_PURE_VIRTUAL) | |
1209 size_in_pixel = l1->web_layer()->bounds(); | 1170 size_in_pixel = l1->web_layer()->bounds(); |
1210 #else | |
1211 size_in_pixel = l1->web_layer().bounds(); | |
1212 #endif | |
1213 EXPECT_EQ("140x180", size_in_pixel.ToString()); | 1171 EXPECT_EQ("140x180", size_in_pixel.ToString()); |
1214 // New scale factor must have been notified. | 1172 // New scale factor must have been notified. |
1215 EXPECT_EQ(1.0f, root_delegate.device_scale_factor()); | 1173 EXPECT_EQ(1.0f, root_delegate.device_scale_factor()); |
1216 EXPECT_EQ(1.0f, l1_delegate.device_scale_factor()); | 1174 EXPECT_EQ(1.0f, l1_delegate.device_scale_factor()); |
1217 | 1175 |
1218 // Canvas size must have been scaled down too. | 1176 // Canvas size must have been scaled down too. |
1219 RunPendingMessages(); | 1177 RunPendingMessages(); |
1220 EXPECT_EQ("200x220", root_delegate.paint_size().ToString()); | 1178 EXPECT_EQ("200x220", root_delegate.paint_size().ToString()); |
1221 EXPECT_EQ("1.0 1.0", root_delegate.ToScaleString()); | 1179 EXPECT_EQ("1.0 1.0", root_delegate.ToScaleString()); |
1222 EXPECT_EQ("140x180", l1_delegate.paint_size().ToString()); | 1180 EXPECT_EQ("140x180", l1_delegate.paint_size().ToString()); |
(...skipping 22 matching lines...) Expand all Loading... |
1245 TestLayerDelegate l1_delegate; | 1203 TestLayerDelegate l1_delegate; |
1246 l1_delegate.AddColor(SK_ColorWHITE); | 1204 l1_delegate.AddColor(SK_ColorWHITE); |
1247 l1->set_delegate(&l1_delegate); | 1205 l1->set_delegate(&l1_delegate); |
1248 | 1206 |
1249 GetCompositor()->SetScaleAndSize(1.0f, gfx::Size(500, 500)); | 1207 GetCompositor()->SetScaleAndSize(1.0f, gfx::Size(500, 500)); |
1250 GetCompositor()->SetRootLayer(root.get()); | 1208 GetCompositor()->SetRootLayer(root.get()); |
1251 RunPendingMessages(); | 1209 RunPendingMessages(); |
1252 | 1210 |
1253 root->Add(l1.get()); | 1211 root->Add(l1.get()); |
1254 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); | 1212 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); |
1255 #if defined(WEBLAYER_IS_PURE_VIRTUAL) | |
1256 gfx::Size size_in_pixel = l1->web_layer()->bounds(); | 1213 gfx::Size size_in_pixel = l1->web_layer()->bounds(); |
1257 #else | |
1258 gfx::Size size_in_pixel = l1->web_layer().bounds(); | |
1259 #endif | |
1260 EXPECT_EQ("140x180", size_in_pixel.ToString()); | 1214 EXPECT_EQ("140x180", size_in_pixel.ToString()); |
1261 EXPECT_EQ(0.0f, l1_delegate.device_scale_factor()); | 1215 EXPECT_EQ(0.0f, l1_delegate.device_scale_factor()); |
1262 | 1216 |
1263 RunPendingMessages(); | 1217 RunPendingMessages(); |
1264 EXPECT_EQ("140x180", l1_delegate.paint_size().ToString()); | 1218 EXPECT_EQ("140x180", l1_delegate.paint_size().ToString()); |
1265 EXPECT_EQ("1.0 1.0", l1_delegate.ToScaleString()); | 1219 EXPECT_EQ("1.0 1.0", l1_delegate.ToScaleString()); |
1266 | 1220 |
1267 // Remove l1 from root and change the scale. | 1221 // Remove l1 from root and change the scale. |
1268 root->Remove(l1.get()); | 1222 root->Remove(l1.get()); |
1269 EXPECT_EQ(NULL, l1->parent()); | 1223 EXPECT_EQ(NULL, l1->parent()); |
1270 EXPECT_EQ(NULL, l1->GetCompositor()); | 1224 EXPECT_EQ(NULL, l1->GetCompositor()); |
1271 GetCompositor()->SetScaleAndSize(2.0f, gfx::Size(500, 500)); | 1225 GetCompositor()->SetScaleAndSize(2.0f, gfx::Size(500, 500)); |
1272 // Sanity check on root and l1. | 1226 // Sanity check on root and l1. |
1273 EXPECT_EQ("10,20 200x220", root->bounds().ToString()); | 1227 EXPECT_EQ("10,20 200x220", root->bounds().ToString()); |
1274 #if defined(WEBLAYER_IS_PURE_VIRTUAL) | |
1275 size_in_pixel = l1->web_layer()->bounds(); | 1228 size_in_pixel = l1->web_layer()->bounds(); |
1276 #else | |
1277 size_in_pixel = l1->web_layer().bounds(); | |
1278 #endif | |
1279 EXPECT_EQ("140x180", size_in_pixel.ToString()); | 1229 EXPECT_EQ("140x180", size_in_pixel.ToString()); |
1280 | 1230 |
1281 | 1231 |
1282 root->Add(l1.get()); | 1232 root->Add(l1.get()); |
1283 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); | 1233 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); |
1284 #if defined(WEBLAYER_IS_PURE_VIRTUAL) | |
1285 size_in_pixel = l1->web_layer()->bounds(); | 1234 size_in_pixel = l1->web_layer()->bounds(); |
1286 #else | |
1287 size_in_pixel = l1->web_layer().bounds(); | |
1288 #endif | |
1289 EXPECT_EQ("280x360", size_in_pixel.ToString()); | 1235 EXPECT_EQ("280x360", size_in_pixel.ToString()); |
1290 EXPECT_EQ(2.0f, l1_delegate.device_scale_factor()); | 1236 EXPECT_EQ(2.0f, l1_delegate.device_scale_factor()); |
1291 RunPendingMessages(); | 1237 RunPendingMessages(); |
1292 EXPECT_EQ("280x360", l1_delegate.paint_size().ToString()); | 1238 EXPECT_EQ("280x360", l1_delegate.paint_size().ToString()); |
1293 EXPECT_EQ("2.0 2.0", l1_delegate.ToScaleString()); | 1239 EXPECT_EQ("2.0 2.0", l1_delegate.ToScaleString()); |
1294 } | 1240 } |
1295 | 1241 |
1296 // Tests layer::set_scale_content(false). | 1242 // Tests layer::set_scale_content(false). |
1297 TEST_F(LayerWithRealCompositorTest, MAYBE_NoScaleCanvas) { | 1243 TEST_F(LayerWithRealCompositorTest, MAYBE_NoScaleCanvas) { |
1298 scoped_ptr<Layer> root(CreateColorLayer(SK_ColorWHITE, | 1244 scoped_ptr<Layer> root(CreateColorLayer(SK_ColorWHITE, |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1353 | 1299 |
1354 // Resize layer. | 1300 // Resize layer. |
1355 child->SetBounds(gfx::Rect(200, 200, 400, 400)); | 1301 child->SetBounds(gfx::Rect(200, 200, 400, 400)); |
1356 child->SetVisible(true); | 1302 child->SetVisible(true); |
1357 EXPECT_TRUE(schedule_draw_invoked_); | 1303 EXPECT_TRUE(schedule_draw_invoked_); |
1358 DrawTree(root.get()); | 1304 DrawTree(root.get()); |
1359 EXPECT_TRUE(delegate.painted()); | 1305 EXPECT_TRUE(delegate.painted()); |
1360 } | 1306 } |
1361 | 1307 |
1362 } // namespace ui | 1308 } // namespace ui |
OLD | NEW |