1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CC_TEST_LAYER_TEST_COMMON_H_
#define CC_TEST_LAYER_TEST_COMMON_H_
#include "cc/layers/layer_collections.h"
namespace gfx {
class Rect;
}
namespace viz {
class QuadList;
}
namespace cc {
class LayerTreeHost;
class LayerTreeImpl;
class LayerTreeSettings;
// LayerTreeSettings with different combinations of
// commit_to_active_tree and use_layer_lists.
LayerTreeSettings CommitToActiveTreeLayerListSettings();
LayerTreeSettings CommitToPendingTreeLayerListSettings();
LayerTreeSettings CommitToPendingTreeLayerTreeSettings();
// In tests that build layer tree and property trees directly at impl-side,
// before calling LayerTreeImpl::UpdateDrawProperties() or any function calling
// it, we should call this function to make the layer tree and property trees
// ready for draw property update.
void PrepareForUpdateDrawProperties(LayerTreeImpl*);
// Calls LayerTreeImpl::UpdateDrawProperties() after calling the above function.
// If |output_update_layer_list| is not null, it accepts layers output from
// draw_property_utils::FindLayersThatNeedUpdates().
void UpdateDrawProperties(LayerTreeImpl*,
LayerImplList* output_update_layer_list = nullptr);
// Main-thread counterpart of the above function. If |output_update_layer_list|
// is not null, it accepts layers output from
// draw_property_utils::FindLayersThatNeedUpdates().
void UpdateDrawProperties(LayerTreeHost*,
LayerList* output_update_layer_list = nullptr);
// Set device scale factor and update device viewport rect to be the root layer
// size scaled by the device scale factor.
void SetDeviceScaleAndUpdateViewportRect(LayerTreeImpl*,
float device_scale_factor);
void SetDeviceScaleAndUpdateViewportRect(LayerTreeHost*,
float device_scale_factor);
void VerifyQuadsExactlyCoverRect(const viz::QuadList& quads,
const gfx::Rect& rect);
void VerifyQuadsAreOccluded(const viz::QuadList& quads,
const gfx::Rect& occluded,
size_t* partially_occluded_count);
enum LayerTreeImplTestMode {
CommitToActiveTree,
CommitToPendingTree,
CommitToActiveTreeTreesInVizClient,
CommitToPendingTreeTreesInVizClient,
CommitToActiveTreeTreesInVizService,
CommitToActiveTreeAnimationsInVizService,
};
#define INSTANTIATE_COMMIT_TO_TREE_BASE_TEST_P(name, ...) \
INSTANTIATE_TEST_SUITE_P( \
, name, ::testing::Values(__VA_ARGS__), \
[](const ::testing::TestParamInfo<name::ParamType>& info) { \
switch (info.param) { \
case CommitToActiveTree: \
return "CommitToActiveTree"; \
case CommitToPendingTree: \
return "CommitToPendingTree"; \
case CommitToActiveTreeTreesInVizClient: \
return "CommitToActiveTreeTreesInVizClient"; \
case CommitToPendingTreeTreesInVizClient: \
return "CommitToPendingTreeTreesInVizClient"; \
case CommitToActiveTreeTreesInVizService: \
return "CommitToActiveTreeTreesInVizService"; \
case CommitToActiveTreeAnimationsInVizService: \
return "CommitToActiveTreeAnimationsInVizService"; \
default: \
NOTREACHED(); \
} \
})
// For parameterized test suites testing all tree modes including
// CommitToActiveTree / CommitToPendingTree, for all valid TreesInViz
// Client / Service combinations.
#define INSTANTIATE_COMMIT_TO_TREE_TEST_P(name) \
INSTANTIATE_COMMIT_TO_TREE_BASE_TEST_P( \
name, CommitToActiveTree, CommitToPendingTree, \
CommitToActiveTreeTreesInVizClient, CommitToPendingTreeTreesInVizClient, \
CommitToActiveTreeTreesInVizService)
#define INSTANTIATE_ANIMATIONS_TREE_TEST_P(name) \
INSTANTIATE_COMMIT_TO_TREE_BASE_TEST_P( \
name, CommitToActiveTree, CommitToPendingTree, \
CommitToActiveTreeTreesInVizClient, CommitToPendingTreeTreesInVizClient, \
CommitToActiveTreeAnimationsInVizService)
// For parameterized test suites testing all tree modes including
// CommitToActiveTree / CommitToPendingTree, excluding TreesInViz
// Client mode.
#define INSTANTIATE_COMPOSITOR_FRAME_PRODUCING_TREE_TEST_P(name) \
INSTANTIATE_COMMIT_TO_TREE_BASE_TEST_P(name, CommitToActiveTree, \
CommitToPendingTree, \
CommitToActiveTreeTreesInVizService)
// For parameterized test suites testing all tree modes including
// CommitToActiveTree / CommitToPendingTree, excluding TreesInViz
// Service mode.
#define INSTANTIATE_CLIENT_MODE_TREE_TEST_P(name) \
INSTANTIATE_COMMIT_TO_TREE_BASE_TEST_P( \
name, CommitToActiveTree, CommitToPendingTree, \
CommitToActiveTreeTreesInVizClient, CommitToPendingTreeTreesInVizClient)
// For parameterized test suites testing commits to Pending
// tree modes only. This excludes TreesInViz Service mode by, since
// it does not have a Pending tree.
#define INSTANTIATE_COMMIT_TO_PENDING_TREE_TEST_P(name) \
INSTANTIATE_COMMIT_TO_TREE_BASE_TEST_P(name, CommitToPendingTree, \
CommitToPendingTreeTreesInVizClient)
} // namespace cc
#endif // CC_TEST_LAYER_TEST_COMMON_H_
|