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

Unified Diff: cc/trees/layer_tree_host_unittest_picture.cc

Issue 2390923002: Fix blurry content after disabling dev tools emulation (Closed)
Patch Set: Add function for LayerTreeHostRemote Created 4 years, 2 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
« no previous file with comments | « cc/trees/layer_tree_host_in_process.cc ('k') | cc/trees/layer_tree_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/layer_tree_host_unittest_picture.cc
diff --git a/cc/trees/layer_tree_host_unittest_picture.cc b/cc/trees/layer_tree_host_unittest_picture.cc
index fca03807e7b0589670678f304641993e2399d1f5..bb13a32b06e8f9435189e513b23655e71fd108a6 100644
--- a/cc/trees/layer_tree_host_unittest_picture.cc
+++ b/cc/trees/layer_tree_host_unittest_picture.cc
@@ -576,5 +576,105 @@ class LayerTreeHostPictureTestRSLLMembershipWithScale
// compositor thread.
MULTI_THREAD_TEST_F(LayerTreeHostPictureTestRSLLMembershipWithScale);
+class LayerTreeHostPictureTestForceRecalculateScales
+ : public LayerTreeHostPictureTest {
+ void SetupTree() override {
+ gfx::Size size(100, 100);
+ scoped_refptr<Layer> root = Layer::Create();
+ root->SetBounds(size);
+
+ will_change_layer_ = FakePictureLayer::Create(&client_);
+ will_change_layer_->SetHasWillChangeTransformHint(true);
+ will_change_layer_->SetBounds(size);
+ root->AddChild(will_change_layer_);
+
+ normal_layer_ = FakePictureLayer::Create(&client_);
+ normal_layer_->SetBounds(size);
+ root->AddChild(normal_layer_);
+
+ layer_tree()->SetRootLayer(root);
+ layer_tree()->SetViewportSize(size);
+
+ client_.set_fill_with_nonsolid_color(true);
+ client_.set_bounds(size);
+ }
+
+ void InitializeSettings(LayerTreeSettings* settings) override {
+ settings->layer_transforms_should_scale_layer_contents = true;
+ }
+
+ void BeginTest() override { PostSetNeedsCommitToMainThread(); }
+
+ void DrawLayersOnThread(LayerTreeHostImpl* impl) override {
+ FakePictureLayerImpl* will_change_layer =
+ static_cast<FakePictureLayerImpl*>(
+ impl->active_tree()->LayerById(will_change_layer_->id()));
+ FakePictureLayerImpl* normal_layer = static_cast<FakePictureLayerImpl*>(
+ impl->active_tree()->LayerById(normal_layer_->id()));
+
+ switch (impl->sync_tree()->source_frame_number()) {
+ case 0:
+ // On first commit, both layers are at the default scale.
+ ASSERT_EQ(1u, will_change_layer->tilings()->num_tilings());
+ EXPECT_EQ(1.f,
+ will_change_layer->tilings()->tiling_at(0)->contents_scale());
+ ASSERT_EQ(1u, normal_layer->tilings()->num_tilings());
+ EXPECT_EQ(1.f, normal_layer->tilings()->tiling_at(0)->contents_scale());
+
+ MainThreadTaskRunner()->PostTask(
+ FROM_HERE,
+ base::Bind(
+ &LayerTreeHostPictureTestForceRecalculateScales::ScaleRootUp,
+ base::Unretained(this)));
+ break;
+ case 1:
+ // On 2nd commit after scaling up to 2, the normal layer will adjust its
+ // scale and the will change layer should not (as it is will change.
+ ASSERT_EQ(1u, will_change_layer->tilings()->num_tilings());
+ EXPECT_EQ(1.f,
+ will_change_layer->tilings()->tiling_at(0)->contents_scale());
+ ASSERT_EQ(1u, normal_layer->tilings()->num_tilings());
+ EXPECT_EQ(2.f, normal_layer->tilings()->tiling_at(0)->contents_scale());
+
+ MainThreadTaskRunner()->PostTask(
+ FROM_HERE,
+ base::Bind(&LayerTreeHostPictureTestForceRecalculateScales::
+ ScaleRootUpAndRecalculateScales,
+ base::Unretained(this)));
+ break;
+ case 2:
+ // On 3rd commit, both layers should adjust scales due to forced
+ // recalculating.
+ ASSERT_EQ(1u, will_change_layer->tilings()->num_tilings());
+ EXPECT_EQ(4.f,
+ will_change_layer->tilings()->tiling_at(0)->contents_scale());
+ ASSERT_EQ(1u, normal_layer->tilings()->num_tilings());
+ EXPECT_EQ(4.f, normal_layer->tilings()->tiling_at(0)->contents_scale());
+ EndTest();
+ break;
+ }
+ }
+
+ void ScaleRootUp() {
+ gfx::Transform transform;
+ transform.Scale(2, 2);
+ layer_tree_host()->GetLayerTree()->root_layer()->SetTransform(transform);
+ }
+
+ void ScaleRootUpAndRecalculateScales() {
+ gfx::Transform transform;
+ transform.Scale(4, 4);
+ layer_tree_host()->GetLayerTree()->root_layer()->SetTransform(transform);
+ layer_tree_host()->SetNeedsRecalculateRasterScales();
+ }
+
+ void AfterTest() override {}
+
+ scoped_refptr<FakePictureLayer> will_change_layer_;
+ scoped_refptr<FakePictureLayer> normal_layer_;
+};
+
+SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostPictureTestForceRecalculateScales);
+
} // namespace
} // namespace cc
« no previous file with comments | « cc/trees/layer_tree_host_in_process.cc ('k') | cc/trees/layer_tree_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698