| 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 79261a66e5d89c0fa9c5f1c79d602f18521db81c..5d28d17fd1833979cbcb902a9f80e5f246305a8f 100644
|
| --- a/ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm
|
| +++ b/ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm
|
| @@ -8,6 +8,7 @@
|
| #include "base/mac/sdk_forward_declarations.h"
|
| #include "gpu/GLES2/gl2extchromium.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| +#include "testing/gtest_mac.h"
|
| #include "third_party/skia/include/core/SkColor.h"
|
| #include "ui/accelerated_widget_mac/ca_renderer_layer_tree.h"
|
| #include "ui/gfx/geometry/dip_util.h"
|
| @@ -41,6 +42,7 @@ TEST_F(CALayerTreeTest, PropertyUpdates) {
|
| unsigned background_color = SkColorSetARGB(0xFF, 0xFF, 0, 0);
|
| unsigned edge_aa_mask = GL_CA_LAYER_EDGE_LEFT_CHROMIUM;
|
| float opacity = 0.5f;
|
| + unsigned filter = GL_LINEAR;
|
| float scale_factor = 1.0f;
|
| bool result = false;
|
|
|
| @@ -65,7 +67,8 @@ TEST_F(CALayerTreeTest, PropertyUpdates) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| new_ca_layer_tree->CommitScheduledCALayers(
|
| superlayer_, std::move(ca_layer_tree), scale_factor);
|
| @@ -105,6 +108,8 @@ TEST_F(CALayerTreeTest, PropertyUpdates) {
|
| EXPECT_EQ(gfx::Rect(rect.size()), gfx::Rect([content_layer bounds]));
|
| EXPECT_EQ(kCALayerLeftEdge, [content_layer edgeAntialiasingMask]);
|
| EXPECT_EQ(opacity, [content_layer opacity]);
|
| + EXPECT_NSEQ(kCAFilterLinear, [content_layer minificationFilter]);
|
| + EXPECT_NSEQ(kCAFilterLinear, [content_layer magnificationFilter]);
|
| if ([content_layer respondsToSelector:(@selector(contentsScale))])
|
| EXPECT_EQ(scale_factor, [content_layer contentsScale]);
|
| }
|
| @@ -125,7 +130,8 @@ TEST_F(CALayerTreeTest, PropertyUpdates) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| new_ca_layer_tree->CommitScheduledCALayers(
|
| superlayer_, std::move(ca_layer_tree), scale_factor);
|
| @@ -168,7 +174,8 @@ TEST_F(CALayerTreeTest, PropertyUpdates) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| new_ca_layer_tree->CommitScheduledCALayers(
|
| superlayer_, std::move(ca_layer_tree), scale_factor);
|
| @@ -208,7 +215,8 @@ TEST_F(CALayerTreeTest, PropertyUpdates) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| new_ca_layer_tree->CommitScheduledCALayers(
|
| superlayer_, std::move(ca_layer_tree), scale_factor);
|
| @@ -246,7 +254,8 @@ TEST_F(CALayerTreeTest, PropertyUpdates) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| new_ca_layer_tree->CommitScheduledCALayers(
|
| superlayer_, std::move(ca_layer_tree), scale_factor);
|
| @@ -282,7 +291,8 @@ TEST_F(CALayerTreeTest, PropertyUpdates) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| new_ca_layer_tree->CommitScheduledCALayers(
|
| superlayer_, std::move(ca_layer_tree), scale_factor);
|
| @@ -320,7 +330,8 @@ TEST_F(CALayerTreeTest, PropertyUpdates) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| new_ca_layer_tree->CommitScheduledCALayers(
|
| superlayer_, std::move(ca_layer_tree), scale_factor);
|
| @@ -358,7 +369,8 @@ TEST_F(CALayerTreeTest, PropertyUpdates) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| new_ca_layer_tree->CommitScheduledCALayers(
|
| superlayer_, std::move(ca_layer_tree), scale_factor);
|
| @@ -396,7 +408,8 @@ TEST_F(CALayerTreeTest, PropertyUpdates) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| new_ca_layer_tree->CommitScheduledCALayers(
|
| superlayer_, std::move(ca_layer_tree), scale_factor);
|
| @@ -417,6 +430,44 @@ TEST_F(CALayerTreeTest, PropertyUpdates) {
|
| EXPECT_EQ(opacity, [content_layer opacity]);
|
| }
|
|
|
| + // Change the filter.
|
| + {
|
| + filter = GL_NEAREST;
|
| + std::unique_ptr<ui::CALayerTree> new_ca_layer_tree(new ui::CALayerTree);
|
| + result = new_ca_layer_tree->ScheduleCALayer(
|
| + is_clipped,
|
| + clip_rect,
|
| + sorting_context_id,
|
| + transform,
|
| + nullptr,
|
| + nullptr,
|
| + contents_rect,
|
| + rect,
|
| + background_color,
|
| + edge_aa_mask,
|
| + opacity,
|
| + filter);
|
| + EXPECT_TRUE(result);
|
| + new_ca_layer_tree->CommitScheduledCALayers(
|
| + superlayer_, std::move(ca_layer_tree), scale_factor);
|
| + std::swap(new_ca_layer_tree, ca_layer_tree);
|
| +
|
| + // Validate the tree structure.
|
| + EXPECT_EQ(1u, [[superlayer_ sublayers] count]);
|
| + EXPECT_EQ(root_layer, [[superlayer_ sublayers] objectAtIndex:0]);
|
| + EXPECT_EQ(1u, [[root_layer sublayers] count]);
|
| + EXPECT_EQ(clip_and_sorting_layer, [[root_layer sublayers] objectAtIndex:0]);
|
| + EXPECT_EQ(1u, [[clip_and_sorting_layer sublayers] count]);
|
| + EXPECT_EQ(transform_layer,
|
| + [[clip_and_sorting_layer sublayers] objectAtIndex:0]);
|
| + EXPECT_EQ(1u, [[transform_layer sublayers] count]);
|
| + EXPECT_EQ(content_layer, [[transform_layer sublayers] objectAtIndex:0]);
|
| +
|
| + // Validate the content layer.
|
| + EXPECT_NSEQ(kCAFilterNearest, [content_layer minificationFilter]);
|
| + EXPECT_NSEQ(kCAFilterNearest, [content_layer magnificationFilter]);
|
| + }
|
| +
|
| // Add the clipping and IOSurface contents back.
|
| {
|
| is_clipped = true;
|
| @@ -433,7 +484,8 @@ TEST_F(CALayerTreeTest, PropertyUpdates) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| new_ca_layer_tree->CommitScheduledCALayers(
|
| superlayer_, std::move(ca_layer_tree), scale_factor);
|
| @@ -471,7 +523,8 @@ TEST_F(CALayerTreeTest, PropertyUpdates) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| new_ca_layer_tree->CommitScheduledCALayers(
|
| superlayer_, std::move(ca_layer_tree), scale_factor);
|
| @@ -534,6 +587,7 @@ TEST_F(CALayerTreeTest, SplitSortingContextZero) {
|
| unsigned edge_aa_mask = 0;
|
| float opacity = 1.0f;
|
| float scale_factor = 1.0f;
|
| + unsigned filter = GL_LINEAR;
|
|
|
| // We'll use the IOSurface contents to identify the content layers.
|
| base::ScopedCFTypeRef<IOSurfaceRef> io_surfaces[5];
|
| @@ -568,7 +622,8 @@ TEST_F(CALayerTreeTest, SplitSortingContextZero) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| }
|
| ca_layer_tree->CommitScheduledCALayers(superlayer_, nullptr, scale_factor);
|
| @@ -632,6 +687,7 @@ TEST_F(CALayerTreeTest, SortingContexts) {
|
| unsigned edge_aa_mask = 0;
|
| float opacity = 1.0f;
|
| float scale_factor = 1.0f;
|
| + unsigned filter = GL_LINEAR;
|
|
|
| // We'll use the IOSurface contents to identify the content layers.
|
| base::ScopedCFTypeRef<IOSurfaceRef> io_surfaces[3];
|
| @@ -655,7 +711,8 @@ TEST_F(CALayerTreeTest, SortingContexts) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| }
|
| ca_layer_tree->CommitScheduledCALayers(superlayer_, nullptr, scale_factor);
|
| @@ -704,6 +761,7 @@ TEST_F(CALayerTreeTest, SortingContextMustHaveConsistentClip) {
|
| unsigned background_color = SkColorSetARGB(0xFF, 0xFF, 0xFF, 0xFF);
|
| unsigned edge_aa_mask = 0;
|
| float opacity = 1.0f;
|
| + unsigned filter = GL_LINEAR;
|
|
|
| // Vary the clipping parameters within sorting contexts.
|
| bool is_clippeds[3] = { true, true, false};
|
| @@ -730,7 +788,8 @@ TEST_F(CALayerTreeTest, SortingContextMustHaveConsistentClip) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| }
|
| // Next send the various clip parameters to a non-zero sorting context. This
|
| @@ -748,7 +807,8 @@ TEST_F(CALayerTreeTest, SortingContextMustHaveConsistentClip) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| if (i == 0)
|
| EXPECT_TRUE(result);
|
| else
|
| @@ -768,7 +828,8 @@ TEST_F(CALayerTreeTest, SortingContextMustHaveConsistentClip) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| }
|
| }
|
| @@ -789,6 +850,7 @@ TEST_F(CALayerTreeTest, AVLayer) {
|
| float opacity = 0.5f;
|
| float scale_factor = 1.0f;
|
| bool result = false;
|
| + unsigned filter = GL_LINEAR;
|
|
|
| std::unique_ptr<ui::CARendererLayerTree> ca_layer_tree;
|
| CALayer* root_layer = nil;
|
| @@ -812,7 +874,8 @@ TEST_F(CALayerTreeTest, AVLayer) {
|
| contents_rect,
|
| rect, background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| new_ca_layer_tree->CommitScheduledCALayers(
|
| superlayer_, std::move(ca_layer_tree), scale_factor);
|
| @@ -851,7 +914,8 @@ TEST_F(CALayerTreeTest, AVLayer) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| new_ca_layer_tree->CommitScheduledCALayers(
|
| superlayer_, std::move(ca_layer_tree), scale_factor);
|
| @@ -894,7 +958,8 @@ TEST_F(CALayerTreeTest, AVLayer) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| new_ca_layer_tree->CommitScheduledCALayers(
|
| superlayer_, std::move(ca_layer_tree), scale_factor);
|
| @@ -936,7 +1001,8 @@ TEST_F(CALayerTreeTest, AVLayer) {
|
| rect,
|
| background_color,
|
| edge_aa_mask,
|
| - opacity);
|
| + opacity,
|
| + filter);
|
| EXPECT_TRUE(result);
|
| new_ca_layer_tree->CommitScheduledCALayers(
|
| superlayer_, std::move(ca_layer_tree), scale_factor);
|
|
|