Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2012 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 24 */ | 24 */ |
| 25 | 25 |
| 26 #include "core/layout/LayoutGeometryMap.h" | 26 #include "core/layout/LayoutGeometryMap.h" |
| 27 | 27 |
| 28 #include "core/frame/LocalFrame.h" | 28 #include "core/frame/LocalFrame.h" |
| 29 #include "core/paint/PaintLayer.h" | 29 #include "core/paint/PaintLayer.h" |
| 30 #include "platform/geometry/TransformState.h" | 30 #include "platform/geometry/TransformState.h" |
| 31 #include "platform/wtf/AutoReset.h" | 31 #include "platform/wtf/AutoReset.h" |
| 32 | 32 |
| 33 #define LAYOUT_GEOMETRY_MAP_LOGGING 0 | |
|
fs
2017/06/14 20:14:19
"...as the code is unmaintainable."
I'm not sure
mrunal
2017/06/19 22:10:57
The unmaintainable bit is below where LAYOUT_GEOME
fs
2017/06/20 08:24:35
Yes, sure, but that is pretty much the burden of h
| |
| 34 | |
| 35 #if LAYOUT_GEOMETRY_MAP_LOGGING | |
| 36 #define LAYOUT_GEOMETRY_MAP_LOG(...) WTFLogAlways(__VA_ARGS__) | |
|
tkent
2017/06/14 23:41:39
Such conditional log macros is usually replaced wi
| |
| 37 #else | |
| 38 #define LAYOUT_GEOMETRY_MAP_LOG(...) ((void)0) | |
| 39 #endif | |
| 40 | |
| 41 namespace blink { | 33 namespace blink { |
| 42 | 34 |
| 43 LayoutGeometryMap::LayoutGeometryMap(MapCoordinatesFlags flags) | 35 LayoutGeometryMap::LayoutGeometryMap(MapCoordinatesFlags flags) |
| 44 : insertion_position_(kNotFound), | 36 : insertion_position_(kNotFound), |
| 45 non_uniform_steps_count_(0), | 37 non_uniform_steps_count_(0), |
| 46 transformed_steps_count_(0), | 38 transformed_steps_count_(0), |
| 47 fixed_steps_count_(0), | 39 fixed_steps_count_(0), |
| 48 map_coordinates_flags_(flags) {} | 40 map_coordinates_flags_(flags) {} |
| 49 | 41 |
| 50 LayoutGeometryMap::~LayoutGeometryMap() {} | 42 LayoutGeometryMap::~LayoutGeometryMap() {} |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 232 map_coordinates_flags_ & kTraverseDocumentBoundaries); | 224 map_coordinates_flags_ & kTraverseDocumentBoundaries); |
| 233 | 225 |
| 234 // We have to visit all the layoutObjects to detect flipped blocks. This might | 226 // We have to visit all the layoutObjects to detect flipped blocks. This might |
| 235 // defeat the gains from mapping via layers. | 227 // defeat the gains from mapping via layers. |
| 236 bool can_convert_in_layer_tree = | 228 bool can_convert_in_layer_tree = |
| 237 (ancestor_layer && !cross_document) | 229 (ancestor_layer && !cross_document) |
| 238 ? CanMapBetweenLayoutObjects(layout_object, | 230 ? CanMapBetweenLayoutObjects(layout_object, |
| 239 ancestor_layer->GetLayoutObject()) | 231 ancestor_layer->GetLayoutObject()) |
| 240 : false; | 232 : false; |
| 241 | 233 |
| 242 LAYOUT_GEOMETRY_MAP_LOG( | |
| 243 "LayoutGeometryMap::pushMappingsToAncestor from layer %p to layer %p, " | |
| 244 "canConvertInLayerTree=%d\n", | |
| 245 layer, ancestorLayer, canConvertInLayerTree); | |
| 246 | |
| 247 if (can_convert_in_layer_tree) { | 234 if (can_convert_in_layer_tree) { |
| 248 LayoutPoint layer_offset; | 235 LayoutPoint layer_offset; |
| 249 layer->ConvertToLayerCoords(ancestor_layer, layer_offset); | 236 layer->ConvertToLayerCoords(ancestor_layer, layer_offset); |
| 250 | 237 |
| 251 // The LayoutView must be pushed first. | 238 // The LayoutView must be pushed first. |
| 252 if (!mapping_.size()) { | 239 if (!mapping_.size()) { |
| 253 DCHECK(ancestor_layer->GetLayoutObject().IsLayoutView()); | 240 DCHECK(ancestor_layer->GetLayoutObject().IsLayoutView()); |
| 254 PushMappingsToAncestor(&ancestor_layer->GetLayoutObject(), 0); | 241 PushMappingsToAncestor(&ancestor_layer->GetLayoutObject(), 0); |
| 255 } | 242 } |
| 256 | 243 |
| 257 AutoReset<size_t> position_change(&insertion_position_, mapping_.size()); | 244 AutoReset<size_t> position_change(&insertion_position_, mapping_.size()); |
| 258 bool accumulating_transform = | 245 bool accumulating_transform = |
| 259 layout_object.Style()->Preserves3D() || | 246 layout_object.Style()->Preserves3D() || |
| 260 ancestor_layer->GetLayoutObject().Style()->Preserves3D(); | 247 ancestor_layer->GetLayoutObject().Style()->Preserves3D(); |
| 261 Push(&layout_object, ToLayoutSize(layer_offset), | 248 Push(&layout_object, ToLayoutSize(layer_offset), |
| 262 accumulating_transform ? kAccumulatingTransform : 0); | 249 accumulating_transform ? kAccumulatingTransform : 0); |
| 263 return; | 250 return; |
| 264 } | 251 } |
| 265 const LayoutBoxModelObject* ancestor_layout_object = | 252 const LayoutBoxModelObject* ancestor_layout_object = |
| 266 ancestor_layer ? &ancestor_layer->GetLayoutObject() : 0; | 253 ancestor_layer ? &ancestor_layer->GetLayoutObject() : 0; |
| 267 PushMappingsToAncestor(&layout_object, ancestor_layout_object); | 254 PushMappingsToAncestor(&layout_object, ancestor_layout_object); |
| 268 } | 255 } |
| 269 | 256 |
| 270 void LayoutGeometryMap::Push(const LayoutObject* layout_object, | 257 void LayoutGeometryMap::Push(const LayoutObject* layout_object, |
| 271 const LayoutSize& offset_from_container, | 258 const LayoutSize& offset_from_container, |
| 272 GeometryInfoFlags flags, | 259 GeometryInfoFlags flags, |
| 273 LayoutSize offset_for_fixed_position) { | 260 LayoutSize offset_for_fixed_position) { |
| 274 LAYOUT_GEOMETRY_MAP_LOG("LayoutGeometryMap::push %p %d,%d isNonUniform=%d\n", | |
| 275 layoutObject, offsetFromContainer.width().toInt(), | |
|
mrunal
2017/06/19 22:10:57
@fs, For example there is no definition for offset
| |
| 276 offsetFromContainer.height().toInt(), isNonUniform); | |
| 277 | |
| 278 DCHECK_NE(insertion_position_, kNotFound); | 261 DCHECK_NE(insertion_position_, kNotFound); |
| 279 DCHECK(!layout_object->IsLayoutView() || !insertion_position_ || | 262 DCHECK(!layout_object->IsLayoutView() || !insertion_position_ || |
| 280 map_coordinates_flags_ & kTraverseDocumentBoundaries); | 263 map_coordinates_flags_ & kTraverseDocumentBoundaries); |
| 281 DCHECK(offset_for_fixed_position.IsZero() || layout_object->IsLayoutView()); | 264 DCHECK(offset_for_fixed_position.IsZero() || layout_object->IsLayoutView()); |
| 282 | 265 |
| 283 mapping_.insert(insertion_position_, | 266 mapping_.insert(insertion_position_, |
| 284 LayoutGeometryMapStep(layout_object, flags)); | 267 LayoutGeometryMapStep(layout_object, flags)); |
| 285 | 268 |
| 286 LayoutGeometryMapStep& step = mapping_[insertion_position_]; | 269 LayoutGeometryMapStep& step = mapping_[insertion_position_]; |
| 287 step.offset_ = offset_from_container; | 270 step.offset_ = offset_from_container; |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 382 // If we're not working with multiple LayoutViews, then any view is considered | 365 // If we're not working with multiple LayoutViews, then any view is considered |
| 383 // "topmost" (to preserve original behavior). | 366 // "topmost" (to preserve original behavior). |
| 384 if (!(map_coordinates_flags_ & kTraverseDocumentBoundaries)) | 367 if (!(map_coordinates_flags_ & kTraverseDocumentBoundaries)) |
| 385 return true; | 368 return true; |
| 386 | 369 |
| 387 return layout_object->GetFrame()->IsMainFrame(); | 370 return layout_object->GetFrame()->IsMainFrame(); |
| 388 } | 371 } |
| 389 #endif | 372 #endif |
| 390 | 373 |
| 391 } // namespace blink | 374 } // namespace blink |
| OLD | NEW |