OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/layers/layer_impl.h" | 5 #include "cc/layers/layer_impl.h" |
6 | 6 |
7 #include "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
9 #include "base/trace_event/trace_event.h" | 9 #include "base/trace_event/trace_event.h" |
10 #include "base/trace_event/trace_event_argument.h" | 10 #include "base/trace_event/trace_event_argument.h" |
11 #include "cc/animation/animation_registrar.h" | |
12 #include "cc/animation/scrollbar_animation_controller.h" | 11 #include "cc/animation/scrollbar_animation_controller.h" |
13 #include "cc/base/math_util.h" | 12 #include "cc/base/math_util.h" |
14 #include "cc/base/simple_enclosed_region.h" | 13 #include "cc/base/simple_enclosed_region.h" |
15 #include "cc/debug/debug_colors.h" | 14 #include "cc/debug/debug_colors.h" |
16 #include "cc/debug/layer_tree_debug_state.h" | 15 #include "cc/debug/layer_tree_debug_state.h" |
17 #include "cc/debug/micro_benchmark_impl.h" | 16 #include "cc/debug/micro_benchmark_impl.h" |
18 #include "cc/debug/traced_value.h" | 17 #include "cc/debug/traced_value.h" |
19 #include "cc/layers/layer_utils.h" | 18 #include "cc/layers/layer_utils.h" |
20 #include "cc/layers/painted_scrollbar_layer_impl.h" | 19 #include "cc/layers/painted_scrollbar_layer_impl.h" |
21 #include "cc/output/copy_output_request.h" | 20 #include "cc/output/copy_output_request.h" |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 draw_depth_(0.f), | 78 draw_depth_(0.f), |
80 needs_push_properties_(false), | 79 needs_push_properties_(false), |
81 num_dependents_need_push_properties_(0), | 80 num_dependents_need_push_properties_(0), |
82 sorting_context_id_(0), | 81 sorting_context_id_(0), |
83 current_draw_mode_(DRAW_MODE_NONE), | 82 current_draw_mode_(DRAW_MODE_NONE), |
84 frame_timing_requests_dirty_(false) { | 83 frame_timing_requests_dirty_(false) { |
85 DCHECK_GT(layer_id_, 0); | 84 DCHECK_GT(layer_id_, 0); |
86 DCHECK(layer_tree_impl_); | 85 DCHECK(layer_tree_impl_); |
87 layer_tree_impl_->RegisterLayer(this); | 86 layer_tree_impl_->RegisterLayer(this); |
88 | 87 |
89 if (!layer_tree_impl_->settings().use_compositor_animation_timelines) { | |
90 AnimationRegistrar* registrar = layer_tree_impl_->GetAnimationRegistrar(); | |
91 layer_animation_controller_ = | |
92 registrar->GetAnimationControllerForId(layer_id_); | |
93 layer_animation_controller_->AddValueObserver(this); | |
94 if (IsActive()) { | |
95 layer_animation_controller_->set_value_provider(this); | |
96 layer_animation_controller_->set_layer_animation_delegate(this); | |
97 } | |
98 } | |
99 SetNeedsPushProperties(); | 88 SetNeedsPushProperties(); |
100 } | 89 } |
101 | 90 |
102 LayerImpl::~LayerImpl() { | 91 LayerImpl::~LayerImpl() { |
103 DCHECK_EQ(DRAW_MODE_NONE, current_draw_mode_); | 92 DCHECK_EQ(DRAW_MODE_NONE, current_draw_mode_); |
104 | 93 |
105 if (layer_animation_controller_) { | |
106 layer_animation_controller_->RemoveValueObserver(this); | |
107 layer_animation_controller_->remove_value_provider(this); | |
108 layer_animation_controller_->remove_layer_animation_delegate(this); | |
109 } | |
110 | |
111 if (!copy_requests_.empty() && layer_tree_impl_->IsActiveTree()) | 94 if (!copy_requests_.empty() && layer_tree_impl_->IsActiveTree()) |
112 layer_tree_impl()->RemoveLayerWithCopyOutputRequest(this); | 95 layer_tree_impl()->RemoveLayerWithCopyOutputRequest(this); |
113 layer_tree_impl_->UnregisterLayer(this); | 96 layer_tree_impl_->UnregisterLayer(this); |
114 | 97 |
115 TRACE_EVENT_OBJECT_DELETED_WITH_ID( | 98 TRACE_EVENT_OBJECT_DELETED_WITH_ID( |
116 TRACE_DISABLED_BY_DEFAULT("cc.debug"), "cc::LayerImpl", this); | 99 TRACE_DISABLED_BY_DEFAULT("cc.debug"), "cc::LayerImpl", this); |
117 } | 100 } |
118 | 101 |
119 void LayerImpl::AddChild(scoped_ptr<LayerImpl> child) { | 102 void LayerImpl::AddChild(scoped_ptr<LayerImpl> child) { |
120 child->SetParent(this); | 103 child->SetParent(this); |
(...skipping 696 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
817 // layers in the pending tree will find out about these changes as a | 800 // layers in the pending tree will find out about these changes as a |
818 // result of the shared SyncedProperty. | 801 // result of the shared SyncedProperty. |
819 if (!IsActive()) | 802 if (!IsActive()) |
820 return; | 803 return; |
821 | 804 |
822 SetCurrentScrollOffset(scroll_offset); | 805 SetCurrentScrollOffset(scroll_offset); |
823 | 806 |
824 layer_tree_impl_->DidAnimateScrollOffset(); | 807 layer_tree_impl_->DidAnimateScrollOffset(); |
825 } | 808 } |
826 | 809 |
827 void LayerImpl::OnAnimationWaitingForDeletion() {} | |
828 | |
829 bool LayerImpl::IsActive() const { | 810 bool LayerImpl::IsActive() const { |
830 return layer_tree_impl_->IsActiveTree(); | 811 return layer_tree_impl_->IsActiveTree(); |
831 } | 812 } |
832 | 813 |
833 gfx::Size LayerImpl::bounds() const { | 814 gfx::Size LayerImpl::bounds() const { |
834 gfx::Vector2d delta = gfx::ToCeiledVector2d(bounds_delta_); | 815 gfx::Vector2d delta = gfx::ToCeiledVector2d(bounds_delta_); |
835 return gfx::Size(bounds_.width() + delta.x(), | 816 return gfx::Size(bounds_.width() + delta.x(), |
836 bounds_.height() + delta.y()); | 817 bounds_.height() + delta.y()); |
837 } | 818 } |
838 | 819 |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
967 | 948 |
968 void LayerImpl::SetFilters(const FilterOperations& filters) { | 949 void LayerImpl::SetFilters(const FilterOperations& filters) { |
969 if (filters_ == filters) | 950 if (filters_ == filters) |
970 return; | 951 return; |
971 | 952 |
972 filters_ = filters; | 953 filters_ = filters; |
973 NoteLayerPropertyChangedForSubtree(); | 954 NoteLayerPropertyChangedForSubtree(); |
974 } | 955 } |
975 | 956 |
976 bool LayerImpl::FilterIsAnimating() const { | 957 bool LayerImpl::FilterIsAnimating() const { |
977 return layer_animation_controller_ | 958 return layer_tree_impl_->IsAnimatingFilterProperty(this); |
978 ? layer_animation_controller_->IsAnimatingProperty( | |
979 Animation::FILTER) | |
980 : layer_tree_impl_->IsAnimatingFilterProperty(this); | |
981 } | 959 } |
982 | 960 |
983 bool LayerImpl::FilterIsAnimatingOnImplOnly() const { | 961 bool LayerImpl::FilterIsAnimatingOnImplOnly() const { |
984 if (!layer_animation_controller_) | 962 return layer_tree_impl_->FilterIsAnimatingOnImplOnly(this); |
985 return layer_tree_impl_->FilterIsAnimatingOnImplOnly(this); | |
986 | |
987 Animation* filter_animation = | |
988 layer_animation_controller_->GetAnimation(Animation::FILTER); | |
989 return filter_animation && filter_animation->is_impl_only(); | |
990 } | 963 } |
991 | 964 |
992 void LayerImpl::SetBackgroundFilters( | 965 void LayerImpl::SetBackgroundFilters( |
993 const FilterOperations& filters) { | 966 const FilterOperations& filters) { |
994 if (background_filters_ == filters) | 967 if (background_filters_ == filters) |
995 return; | 968 return; |
996 | 969 |
997 background_filters_ = filters; | 970 background_filters_ = filters; |
998 NoteLayerPropertyChanged(); | 971 NoteLayerPropertyChanged(); |
999 } | 972 } |
(...skipping 16 matching lines...) Expand all Loading... |
1016 | 989 |
1017 void LayerImpl::SetOpacity(float opacity) { | 990 void LayerImpl::SetOpacity(float opacity) { |
1018 if (opacity_ == opacity) | 991 if (opacity_ == opacity) |
1019 return; | 992 return; |
1020 | 993 |
1021 opacity_ = opacity; | 994 opacity_ = opacity; |
1022 NoteLayerPropertyChangedForSubtree(); | 995 NoteLayerPropertyChangedForSubtree(); |
1023 } | 996 } |
1024 | 997 |
1025 bool LayerImpl::OpacityIsAnimating() const { | 998 bool LayerImpl::OpacityIsAnimating() const { |
1026 return layer_animation_controller_ | 999 return layer_tree_impl_->IsAnimatingOpacityProperty(this); |
1027 ? layer_animation_controller_->IsAnimatingProperty( | |
1028 Animation::OPACITY) | |
1029 : layer_tree_impl_->IsAnimatingOpacityProperty(this); | |
1030 } | 1000 } |
1031 | 1001 |
1032 bool LayerImpl::HasPotentiallyRunningOpacityAnimation() const { | 1002 bool LayerImpl::HasPotentiallyRunningOpacityAnimation() const { |
1033 if (layer_animation_controller_) { | 1003 return layer_tree_impl_->HasPotentiallyRunningOpacityAnimation(this); |
1034 if (Animation* animation = | |
1035 layer_animation_controller()->GetAnimation(Animation::OPACITY)) { | |
1036 return !animation->is_finished(); | |
1037 } | |
1038 return false; | |
1039 } else { | |
1040 return layer_tree_impl_->HasPotentiallyRunningOpacityAnimation(this); | |
1041 } | |
1042 } | 1004 } |
1043 | 1005 |
1044 bool LayerImpl::OpacityIsAnimatingOnImplOnly() const { | 1006 bool LayerImpl::OpacityIsAnimatingOnImplOnly() const { |
1045 if (!layer_animation_controller_) | 1007 return layer_tree_impl_->OpacityIsAnimatingOnImplOnly(this); |
1046 return layer_tree_impl_->OpacityIsAnimatingOnImplOnly(this); | |
1047 | |
1048 Animation* opacity_animation = | |
1049 layer_animation_controller_->GetAnimation(Animation::OPACITY); | |
1050 return opacity_animation && opacity_animation->is_impl_only(); | |
1051 } | 1008 } |
1052 | 1009 |
1053 void LayerImpl::SetBlendMode(SkXfermode::Mode blend_mode) { | 1010 void LayerImpl::SetBlendMode(SkXfermode::Mode blend_mode) { |
1054 if (blend_mode_ == blend_mode) | 1011 if (blend_mode_ == blend_mode) |
1055 return; | 1012 return; |
1056 | 1013 |
1057 blend_mode_ = blend_mode; | 1014 blend_mode_ = blend_mode; |
1058 NoteLayerPropertyChangedForSubtree(); | 1015 NoteLayerPropertyChangedForSubtree(); |
1059 } | 1016 } |
1060 | 1017 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1116 DCHECK(transform_is_invertible_ == transform_is_invertible) | 1073 DCHECK(transform_is_invertible_ == transform_is_invertible) |
1117 << "Can't change invertibility if transform is unchanged"; | 1074 << "Can't change invertibility if transform is unchanged"; |
1118 return; | 1075 return; |
1119 } | 1076 } |
1120 transform_ = transform; | 1077 transform_ = transform; |
1121 transform_is_invertible_ = transform_is_invertible; | 1078 transform_is_invertible_ = transform_is_invertible; |
1122 NoteLayerPropertyChangedForSubtree(); | 1079 NoteLayerPropertyChangedForSubtree(); |
1123 } | 1080 } |
1124 | 1081 |
1125 bool LayerImpl::TransformIsAnimating() const { | 1082 bool LayerImpl::TransformIsAnimating() const { |
1126 return layer_animation_controller_ | 1083 return layer_tree_impl_->IsAnimatingTransformProperty(this); |
1127 ? layer_animation_controller_->IsAnimatingProperty( | |
1128 Animation::TRANSFORM) | |
1129 : layer_tree_impl_->IsAnimatingTransformProperty(this); | |
1130 } | 1084 } |
1131 | 1085 |
1132 bool LayerImpl::HasPotentiallyRunningTransformAnimation() const { | 1086 bool LayerImpl::HasPotentiallyRunningTransformAnimation() const { |
1133 if (layer_animation_controller_) { | 1087 return layer_tree_impl_->HasPotentiallyRunningTransformAnimation(this); |
1134 if (Animation* animation = | |
1135 layer_animation_controller()->GetAnimation(Animation::TRANSFORM)) { | |
1136 return !animation->is_finished(); | |
1137 } | |
1138 return false; | |
1139 } else { | |
1140 return layer_tree_impl_->HasPotentiallyRunningTransformAnimation(this); | |
1141 } | |
1142 } | 1088 } |
1143 | 1089 |
1144 bool LayerImpl::TransformIsAnimatingOnImplOnly() const { | 1090 bool LayerImpl::TransformIsAnimatingOnImplOnly() const { |
1145 if (!layer_animation_controller_) | 1091 return layer_tree_impl_->TransformIsAnimatingOnImplOnly(this); |
1146 return layer_tree_impl_->TransformIsAnimatingOnImplOnly(this); | |
1147 | |
1148 Animation* transform_animation = | |
1149 layer_animation_controller_->GetAnimation(Animation::TRANSFORM); | |
1150 return transform_animation && transform_animation->is_impl_only(); | |
1151 } | 1092 } |
1152 | 1093 |
1153 bool LayerImpl::HasOnlyTranslationTransforms() const { | 1094 bool LayerImpl::HasOnlyTranslationTransforms() const { |
1154 if (!layer_animation_controller_) | 1095 return layer_tree_impl_->HasOnlyTranslationTransforms(this); |
1155 return layer_tree_impl_->HasOnlyTranslationTransforms(this); | |
1156 | |
1157 return layer_animation_controller_->HasOnlyTranslationTransforms(); | |
1158 } | 1096 } |
1159 | 1097 |
1160 bool LayerImpl::MaximumTargetScale(float* max_scale) const { | 1098 bool LayerImpl::MaximumTargetScale(float* max_scale) const { |
1161 if (!layer_animation_controller_) | 1099 return layer_tree_impl_->MaximumTargetScale(this, max_scale); |
1162 return layer_tree_impl_->MaximumTargetScale(this, max_scale); | |
1163 | |
1164 return layer_animation_controller_->MaximumTargetScale(max_scale); | |
1165 } | 1100 } |
1166 | 1101 |
1167 bool LayerImpl::HasFilterAnimationThatInflatesBounds() const { | 1102 bool LayerImpl::HasFilterAnimationThatInflatesBounds() const { |
1168 if (!layer_animation_controller_) | 1103 return layer_tree_impl_->HasFilterAnimationThatInflatesBounds(this); |
1169 return layer_tree_impl_->HasFilterAnimationThatInflatesBounds(this); | |
1170 | |
1171 return layer_animation_controller_->HasFilterAnimationThatInflatesBounds(); | |
1172 } | 1104 } |
1173 | 1105 |
1174 bool LayerImpl::HasTransformAnimationThatInflatesBounds() const { | 1106 bool LayerImpl::HasTransformAnimationThatInflatesBounds() const { |
1175 if (!layer_animation_controller_) | 1107 return layer_tree_impl_->HasTransformAnimationThatInflatesBounds(this); |
1176 return layer_tree_impl_->HasTransformAnimationThatInflatesBounds(this); | |
1177 | |
1178 return layer_animation_controller_->HasTransformAnimationThatInflatesBounds(); | |
1179 } | 1108 } |
1180 | 1109 |
1181 bool LayerImpl::HasAnimationThatInflatesBounds() const { | 1110 bool LayerImpl::HasAnimationThatInflatesBounds() const { |
1182 if (!layer_animation_controller_) | 1111 return layer_tree_impl_->HasAnimationThatInflatesBounds(this); |
1183 return layer_tree_impl_->HasAnimationThatInflatesBounds(this); | |
1184 | |
1185 return layer_animation_controller_->HasAnimationThatInflatesBounds(); | |
1186 } | 1112 } |
1187 | 1113 |
1188 bool LayerImpl::FilterAnimationBoundsForBox(const gfx::BoxF& box, | 1114 bool LayerImpl::FilterAnimationBoundsForBox(const gfx::BoxF& box, |
1189 gfx::BoxF* bounds) const { | 1115 gfx::BoxF* bounds) const { |
1190 if (!layer_animation_controller_) | 1116 return layer_tree_impl_->FilterAnimationBoundsForBox(this, box, bounds); |
1191 return layer_tree_impl_->FilterAnimationBoundsForBox(this, box, bounds); | |
1192 | |
1193 return layer_animation_controller_->FilterAnimationBoundsForBox(box, bounds); | |
1194 } | 1117 } |
1195 | 1118 |
1196 bool LayerImpl::TransformAnimationBoundsForBox(const gfx::BoxF& box, | 1119 bool LayerImpl::TransformAnimationBoundsForBox(const gfx::BoxF& box, |
1197 gfx::BoxF* bounds) const { | 1120 gfx::BoxF* bounds) const { |
1198 if (!layer_animation_controller_) | 1121 return layer_tree_impl_->TransformAnimationBoundsForBox(this, box, bounds); |
1199 return layer_tree_impl_->TransformAnimationBoundsForBox(this, box, bounds); | |
1200 | |
1201 return layer_animation_controller_->TransformAnimationBoundsForBox(box, | |
1202 bounds); | |
1203 } | 1122 } |
1204 | 1123 |
1205 void LayerImpl::SetUpdateRect(const gfx::Rect& update_rect) { | 1124 void LayerImpl::SetUpdateRect(const gfx::Rect& update_rect) { |
1206 update_rect_ = update_rect; | 1125 update_rect_ = update_rect; |
1207 SetNeedsPushProperties(); | 1126 SetNeedsPushProperties(); |
1208 } | 1127 } |
1209 | 1128 |
1210 void LayerImpl::AddDamageRect(const gfx::RectF& damage_rect) { | 1129 void LayerImpl::AddDamageRect(const gfx::RectF& damage_rect) { |
1211 damage_rect_ = gfx::UnionRects(damage_rect_, damage_rect); | 1130 damage_rect_ = gfx::UnionRects(damage_rect_, damage_rect); |
1212 } | 1131 } |
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1637 | 1556 |
1638 if (scroll_parent_) | 1557 if (scroll_parent_) |
1639 state->SetInteger("scroll_parent", scroll_parent_->id()); | 1558 state->SetInteger("scroll_parent", scroll_parent_->id()); |
1640 | 1559 |
1641 if (clip_parent_) | 1560 if (clip_parent_) |
1642 state->SetInteger("clip_parent", clip_parent_->id()); | 1561 state->SetInteger("clip_parent", clip_parent_->id()); |
1643 | 1562 |
1644 state->SetBoolean("can_use_lcd_text", can_use_lcd_text()); | 1563 state->SetBoolean("can_use_lcd_text", can_use_lcd_text()); |
1645 state->SetBoolean("contents_opaque", contents_opaque()); | 1564 state->SetBoolean("contents_opaque", contents_opaque()); |
1646 | 1565 |
1647 state->SetBoolean( | 1566 state->SetBoolean("has_animation_bounds", |
1648 "has_animation_bounds", | 1567 layer_tree_impl_->HasAnimationThatInflatesBounds(this)); |
1649 layer_animation_controller_ | |
1650 ? layer_animation_controller_->HasAnimationThatInflatesBounds() | |
1651 : layer_tree_impl_->HasAnimationThatInflatesBounds(this)); | |
1652 | 1568 |
1653 gfx::BoxF box; | 1569 gfx::BoxF box; |
1654 if (LayerUtils::GetAnimationBounds(*this, &box)) | 1570 if (LayerUtils::GetAnimationBounds(*this, &box)) |
1655 MathUtil::AddToTracedValue("animation_bounds", box, state); | 1571 MathUtil::AddToTracedValue("animation_bounds", box, state); |
1656 | 1572 |
1657 if (debug_info_.get()) { | 1573 if (debug_info_.get()) { |
1658 std::string str; | 1574 std::string str; |
1659 debug_info_->AppendAsTraceFormat(&str); | 1575 debug_info_->AppendAsTraceFormat(&str); |
1660 base::JSONReader json_reader; | 1576 base::JSONReader json_reader; |
1661 scoped_ptr<base::Value> debug_info_value(json_reader.ReadToValue(str)); | 1577 scoped_ptr<base::Value> debug_info_value(json_reader.ReadToValue(str)); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1694 size_t LayerImpl::GPUMemoryUsageInBytes() const { return 0; } | 1610 size_t LayerImpl::GPUMemoryUsageInBytes() const { return 0; } |
1695 | 1611 |
1696 void LayerImpl::RunMicroBenchmark(MicroBenchmarkImpl* benchmark) { | 1612 void LayerImpl::RunMicroBenchmark(MicroBenchmarkImpl* benchmark) { |
1697 benchmark->RunOnLayer(this); | 1613 benchmark->RunOnLayer(this); |
1698 } | 1614 } |
1699 | 1615 |
1700 int LayerImpl::NumDescendantsThatDrawContent() const { | 1616 int LayerImpl::NumDescendantsThatDrawContent() const { |
1701 return num_descendants_that_draw_content_; | 1617 return num_descendants_that_draw_content_; |
1702 } | 1618 } |
1703 | 1619 |
1704 void LayerImpl::NotifyAnimationFinished( | |
1705 base::TimeTicks monotonic_time, | |
1706 Animation::TargetProperty target_property, | |
1707 int group) { | |
1708 if (target_property == Animation::SCROLL_OFFSET) | |
1709 layer_tree_impl_->InputScrollAnimationFinished(); | |
1710 } | |
1711 | |
1712 void LayerImpl::SetHasRenderSurface(bool should_have_render_surface) { | 1620 void LayerImpl::SetHasRenderSurface(bool should_have_render_surface) { |
1713 if (!!render_surface() == should_have_render_surface) | 1621 if (!!render_surface() == should_have_render_surface) |
1714 return; | 1622 return; |
1715 | 1623 |
1716 SetNeedsPushProperties(); | 1624 SetNeedsPushProperties(); |
1717 layer_tree_impl()->set_needs_update_draw_properties(); | 1625 layer_tree_impl()->set_needs_update_draw_properties(); |
1718 if (should_have_render_surface) { | 1626 if (should_have_render_surface) { |
1719 render_surface_ = make_scoped_ptr(new RenderSurfaceImpl(this)); | 1627 render_surface_ = make_scoped_ptr(new RenderSurfaceImpl(this)); |
1720 return; | 1628 return; |
1721 } | 1629 } |
(...skipping 14 matching lines...) Expand all Loading... |
1736 gfx::Transform scaled_draw_transform = | 1644 gfx::Transform scaled_draw_transform = |
1737 draw_properties_.target_space_transform; | 1645 draw_properties_.target_space_transform; |
1738 scaled_draw_transform.Scale(SK_MScalar1 / scale, SK_MScalar1 / scale); | 1646 scaled_draw_transform.Scale(SK_MScalar1 / scale, SK_MScalar1 / scale); |
1739 gfx::Size scaled_content_bounds = | 1647 gfx::Size scaled_content_bounds = |
1740 gfx::ToCeiledSize(gfx::ScaleSize(content_bounds(), scale)); | 1648 gfx::ToCeiledSize(gfx::ScaleSize(content_bounds(), scale)); |
1741 return MathUtil::MapEnclosingClippedRect(scaled_draw_transform, | 1649 return MathUtil::MapEnclosingClippedRect(scaled_draw_transform, |
1742 gfx::Rect(scaled_content_bounds)); | 1650 gfx::Rect(scaled_content_bounds)); |
1743 } | 1651 } |
1744 | 1652 |
1745 } // namespace cc | 1653 } // namespace cc |
OLD | NEW |