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

Unified Diff: ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm

Issue 2366433002: Mac video: Add blacklist entry for AVSampleBufferDisplayLayer (Closed)
Patch Set: Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
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);
« no previous file with comments | « ui/accelerated_widget_mac/ca_layer_tree_coordinator.mm ('k') | ui/accelerated_widget_mac/ca_renderer_layer_tree.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698