| Index: ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm
|
| diff --git a/ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm b/ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm
|
| index 91283677e3cd00cc827204400dbf423a7505b1a9..3c5dd7ef592427126c4398c3a24f53a77a17b85c 100644
|
| --- a/ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm
|
| +++ b/ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm
|
| @@ -74,7 +74,20 @@ void UpdateCALayerTree(std::unique_ptr<ui::CARendererLayerTree>& ca_layer_tree,
|
| CALayerProperties* properties,
|
| CALayer* superlayer) {
|
| std::unique_ptr<ui::CARendererLayerTree> new_ca_layer_tree(
|
| - new ui::CARendererLayerTree);
|
| + new ui::CARendererLayerTree(true));
|
| + bool result = ScheduleCALayer(new_ca_layer_tree.get(), properties);
|
| + EXPECT_TRUE(result);
|
| + new_ca_layer_tree->CommitScheduledCALayers(
|
| + superlayer, std::move(ca_layer_tree), properties->scale_factor);
|
| + std::swap(new_ca_layer_tree, ca_layer_tree);
|
| +}
|
| +
|
| +void UpdateCALayerTreeWithAVDisabled(
|
| + std::unique_ptr<ui::CARendererLayerTree>& ca_layer_tree,
|
| + CALayerProperties* properties,
|
| + CALayer* superlayer) {
|
| + std::unique_ptr<ui::CARendererLayerTree> new_ca_layer_tree(
|
| + new ui::CARendererLayerTree(false));
|
| bool result = ScheduleCALayer(new_ca_layer_tree.get(), properties);
|
| EXPECT_TRUE(result);
|
| new_ca_layer_tree->CommitScheduledCALayers(
|
| @@ -118,7 +131,7 @@ void SetUp() override {
|
| // Validate the initial values.
|
| {
|
| std::unique_ptr<ui::CARendererLayerTree> new_ca_layer_tree(
|
| - new ui::CARendererLayerTree);
|
| + new ui::CARendererLayerTree(true));
|
|
|
| UpdateCALayerTree(ca_layer_tree, &properties, superlayer_);
|
|
|
| @@ -472,7 +485,7 @@ void SetUp() override {
|
|
|
| // Schedule and commit the layers.
|
| std::unique_ptr<ui::CARendererLayerTree> ca_layer_tree(
|
| - new ui::CARendererLayerTree);
|
| + new ui::CARendererLayerTree(true));
|
| for (size_t i = 0; i < 5; ++i) {
|
| properties.gl_image = gl_images[i];
|
| properties.transform = transforms[i];
|
| @@ -555,7 +568,7 @@ void SetUp() override {
|
|
|
| // Schedule and commit the layers.
|
| std::unique_ptr<ui::CARendererLayerTree> ca_layer_tree(
|
| - new ui::CARendererLayerTree);
|
| + new ui::CARendererLayerTree(true));
|
| for (size_t i = 0; i < 3; ++i) {
|
| properties.sorting_context_id = sorting_context_ids[i];
|
| properties.gl_image = gl_images[i];
|
| @@ -619,7 +632,7 @@ void SetUp() override {
|
| };
|
|
|
| std::unique_ptr<ui::CARendererLayerTree> ca_layer_tree(
|
| - new ui::CARendererLayerTree);
|
| + new ui::CARendererLayerTree(true));
|
| // First send the various clip parameters to sorting context zero. This is
|
| // legitimate.
|
| for (size_t i = 0; i < 3; ++i) {
|
| @@ -762,6 +775,57 @@ void SetUp() override {
|
| }
|
| }
|
|
|
| +// Ensure that blacklisting AVSampleBufferDisplayLayer works.
|
| +TEST_F(CALayerTreeTest, AVLayerBlacklist) {
|
| + CALayerProperties properties;
|
| + properties.gl_image = CreateGLImage(
|
| + gfx::Size(256, 256), gfx::BufferFormat::YUV_420_BIPLANAR, false);
|
| +
|
| + std::unique_ptr<ui::CARendererLayerTree> ca_layer_tree;
|
| + CALayer* root_layer = nil;
|
| + CALayer* clip_and_sorting_layer = nil;
|
| + CALayer* transform_layer = nil;
|
| + CALayer* content_layer1 = nil;
|
| + CALayer* content_layer2 = nil;
|
| +
|
| + {
|
| + UpdateCALayerTree(ca_layer_tree, &properties, superlayer_);
|
| +
|
| + // Validate the tree structure.
|
| + EXPECT_EQ(1u, [[superlayer_ sublayers] count]);
|
| + root_layer = [[superlayer_ sublayers] objectAtIndex:0];
|
| + EXPECT_EQ(1u, [[root_layer sublayers] count]);
|
| + clip_and_sorting_layer = [[root_layer sublayers] objectAtIndex:0];
|
| + EXPECT_EQ(1u, [[clip_and_sorting_layer sublayers] count]);
|
| + transform_layer = [[clip_and_sorting_layer sublayers] objectAtIndex:0];
|
| + EXPECT_EQ(1u, [[transform_layer sublayers] count]);
|
| + content_layer1 = [[transform_layer sublayers] objectAtIndex:0];
|
| +
|
| + // Validate the content layer.
|
| + EXPECT_TRUE([content_layer1
|
| + isKindOfClass:NSClassFromString(@"AVSampleBufferDisplayLayer")]);
|
| + }
|
| +
|
| + {
|
| + UpdateCALayerTreeWithAVDisabled(ca_layer_tree, &properties, superlayer_);
|
| +
|
| + // Validate the tree structure.
|
| + EXPECT_EQ(1u, [[superlayer_ sublayers] count]);
|
| + root_layer = [[superlayer_ sublayers] objectAtIndex:0];
|
| + EXPECT_EQ(1u, [[root_layer sublayers] count]);
|
| + clip_and_sorting_layer = [[root_layer sublayers] objectAtIndex:0];
|
| + EXPECT_EQ(1u, [[clip_and_sorting_layer sublayers] count]);
|
| + transform_layer = [[clip_and_sorting_layer sublayers] objectAtIndex:0];
|
| + EXPECT_EQ(1u, [[transform_layer sublayers] count]);
|
| + content_layer2 = [[transform_layer sublayers] objectAtIndex:0];
|
| +
|
| + // Validate the content layer.
|
| + EXPECT_FALSE([content_layer2
|
| + isKindOfClass:NSClassFromString(@"AVSampleBufferDisplayLayer")]);
|
| + EXPECT_NE(content_layer1, content_layer2);
|
| + }
|
| +}
|
| +
|
| // Test fullscreen low power detection.
|
| TEST_F(CALayerTreeTest, FullscreenLowPower) {
|
| CALayerProperties properties;
|
| @@ -781,7 +845,7 @@ void SetUp() override {
|
| // Test a configuration with no background.
|
| {
|
| std::unique_ptr<ui::CARendererLayerTree> new_ca_layer_tree(
|
| - new ui::CARendererLayerTree);
|
| + new ui::CARendererLayerTree(true));
|
| bool result = ScheduleCALayer(new_ca_layer_tree.get(), &properties);
|
| EXPECT_TRUE(result);
|
| new_ca_layer_tree->CommitScheduledCALayers(
|
| @@ -811,7 +875,7 @@ void SetUp() override {
|
| // Test a configuration with a black background.
|
| {
|
| std::unique_ptr<ui::CARendererLayerTree> new_ca_layer_tree(
|
| - new ui::CARendererLayerTree);
|
| + new ui::CARendererLayerTree(true));
|
| bool result = ScheduleCALayer(new_ca_layer_tree.get(), &properties_black);
|
| EXPECT_TRUE(result);
|
| result = ScheduleCALayer(new_ca_layer_tree.get(), &properties);
|
| @@ -843,7 +907,7 @@ void SetUp() override {
|
| // Test a configuration with a white background. It will fail.
|
| {
|
| std::unique_ptr<ui::CARendererLayerTree> new_ca_layer_tree(
|
| - new ui::CARendererLayerTree);
|
| + new ui::CARendererLayerTree(true));
|
| bool result = ScheduleCALayer(new_ca_layer_tree.get(), &properties_white);
|
| EXPECT_TRUE(result);
|
| result = ScheduleCALayer(new_ca_layer_tree.get(), &properties);
|
| @@ -875,7 +939,7 @@ void SetUp() override {
|
| // Test a configuration with a black foreground. It too will fail.
|
| {
|
| std::unique_ptr<ui::CARendererLayerTree> new_ca_layer_tree(
|
| - new ui::CARendererLayerTree);
|
| + new ui::CARendererLayerTree(true));
|
| bool result = ScheduleCALayer(new_ca_layer_tree.get(), &properties);
|
| EXPECT_TRUE(result);
|
| result = ScheduleCALayer(new_ca_layer_tree.get(), &properties_black);
|
|
|