| 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/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
| 8 #include "base/json/json_reader.h" | 8 #include "base/json/json_reader.h" |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "cc/animation/animation_registrar.h" | 10 #include "cc/animation/animation_registrar.h" |
| (...skipping 1363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1374 gfx::BoxF box(bounds().width(), bounds().height(), 0.f); | 1374 gfx::BoxF box(bounds().width(), bounds().height(), 0.f); |
| 1375 gfx::BoxF inflated; | 1375 gfx::BoxF inflated; |
| 1376 if (layer_animation_controller_->AnimatedBoundsForBox(box, &inflated)) | 1376 if (layer_animation_controller_->AnimatedBoundsForBox(box, &inflated)) |
| 1377 state->Set("animated_bounds", MathUtil::AsValue(inflated).release()); | 1377 state->Set("animated_bounds", MathUtil::AsValue(inflated).release()); |
| 1378 } | 1378 } |
| 1379 | 1379 |
| 1380 if (debug_info_.get()) { | 1380 if (debug_info_.get()) { |
| 1381 std::string str; | 1381 std::string str; |
| 1382 debug_info_->AppendAsTraceFormat(&str); | 1382 debug_info_->AppendAsTraceFormat(&str); |
| 1383 base::JSONReader json_reader; | 1383 base::JSONReader json_reader; |
| 1384 // Parsing the JSON and re-encoding it is not very efficient, | 1384 scoped_ptr<base::Value> debug_info_value(json_reader.ReadToValue(str)); |
| 1385 // but it's the simplest way to achieve the desired effect, which | 1385 |
| 1386 // is to output: | 1386 // TODO(vollick): The TYPE_LIST code below is brittle; it assumes the only |
| 1387 // {..., layout_rects: [{geometry_rect: ...}, ...], ...} | 1387 // debug info is the layout rects. In future, this will be generalized, and |
| 1388 // rather than: | 1388 // debug info will return a dictionary to be merged into state. Until then, |
| 1389 // {layout_rects: "[{geometry_rect: ...}, ...]", ...} | 1389 // we unfortunately have to support both situations. Once we've migrated, |
| 1390 state->Set("layout_rects", json_reader.ReadToValue(str)); | 1390 // the TYPE_LIST branch will be deleted. |
| 1391 if (debug_info_value->IsType(base::Value::TYPE_LIST)) { |
| 1392 // Parsing the JSON and re-encoding it is not very efficient, |
| 1393 // but it's the simplest way to achieve the desired effect, which |
| 1394 // is to output: |
| 1395 // {..., layout_rects: [{geometry_rect: ...}, ...], ...} |
| 1396 // rather than: |
| 1397 // {layout_rects: "[{geometry_rect: ...}, ...]", ...} |
| 1398 state->Set("layout_rects", debug_info_value.release()); |
| 1399 } else if (debug_info_value->IsType(base::Value::TYPE_DICTIONARY)) { |
| 1400 base::DictionaryValue* dictionary_value = NULL; |
| 1401 bool converted_to_dictionary = |
| 1402 debug_info_value->GetAsDictionary(&dictionary_value); |
| 1403 DCHECK(converted_to_dictionary); |
| 1404 state->MergeDictionary(dictionary_value); |
| 1405 } else { |
| 1406 NOTREACHED(); |
| 1407 } |
| 1391 } | 1408 } |
| 1392 } | 1409 } |
| 1393 | 1410 |
| 1394 size_t LayerImpl::GPUMemoryUsageInBytes() const { return 0; } | 1411 size_t LayerImpl::GPUMemoryUsageInBytes() const { return 0; } |
| 1395 | 1412 |
| 1396 scoped_ptr<base::Value> LayerImpl::AsValue() const { | 1413 scoped_ptr<base::Value> LayerImpl::AsValue() const { |
| 1397 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue()); | 1414 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue()); |
| 1398 AsValueInto(state.get()); | 1415 AsValueInto(state.get()); |
| 1399 return state.PassAs<base::Value>(); | 1416 return state.PassAs<base::Value>(); |
| 1400 } | 1417 } |
| 1401 | 1418 |
| 1402 void LayerImpl::RunMicroBenchmark(MicroBenchmarkImpl* benchmark) { | 1419 void LayerImpl::RunMicroBenchmark(MicroBenchmarkImpl* benchmark) { |
| 1403 benchmark->RunOnLayer(this); | 1420 benchmark->RunOnLayer(this); |
| 1404 } | 1421 } |
| 1405 | 1422 |
| 1406 } // namespace cc | 1423 } // namespace cc |
| OLD | NEW |