| Index: cc/tiles/tile_manager.cc
|
| diff --git a/cc/tiles/tile_manager.cc b/cc/tiles/tile_manager.cc
|
| index bb8e450d332d13f47e38f5ba8a3164f51d23ee07..467b8378d5a44fb1e2e210cb50c1dc1836dc1014 100644
|
| --- a/cc/tiles/tile_manager.cc
|
| +++ b/cc/tiles/tile_manager.cc
|
| @@ -1358,6 +1358,67 @@ scoped_refptr<TileTask> TileManager::CreateTaskSetFinishedTask(
|
| base::Bind(callback, task_set_finished_weak_ptr_factory_.GetWeakPtr())));
|
| }
|
|
|
| +std::unique_ptr<base::trace_event::ConvertableToTraceFormat>
|
| +TileManager::ActivationStateAsValue() {
|
| + auto state = base::MakeUnique<base::trace_event::TracedValue>();
|
| + state->SetString("tree_priority",
|
| + TreePriorityToString(global_state_.tree_priority));
|
| + state->SetInteger("soft_memory_limit",
|
| + global_state_.soft_memory_limit_in_bytes);
|
| + state->SetInteger("hard_memory_limit",
|
| + global_state_.soft_memory_limit_in_bytes);
|
| + state->SetInteger("pending_required_for_activation_callback_id",
|
| + pending_required_for_activation_callback_id_);
|
| + state->SetInteger("current_memory_usage",
|
| + resource_pool_->memory_usage_bytes());
|
| + state->SetInteger("current_resource_usage", resource_pool_->resource_count());
|
| +
|
| + // Use a custom tile_as_value, instead of Tile::AsValueInto, since we don't
|
| + // need all of the state that would be captured by other functions.
|
| + auto tile_as_value = [](const PrioritizedTile& prioritized_tile,
|
| + base::trace_event::TracedValue* value) {
|
| + Tile* tile = prioritized_tile.tile();
|
| + TilePriority priority = prioritized_tile.priority();
|
| +
|
| + value->SetInteger("id", tile->id());
|
| + value->SetString("content_rect", tile->content_rect().ToString());
|
| + value->SetDouble("contents_scale", tile->contents_scale());
|
| + value->SetBoolean("is_ready_to_draw", tile->draw_info().IsReadyToDraw());
|
| + value->SetString("resolution", TileResolutionToString(priority.resolution));
|
| + value->SetString("priority_bin",
|
| + TilePriorityBinToString(priority.priority_bin));
|
| + value->SetDouble("distance_to_visible", priority.distance_to_visible);
|
| + value->SetBoolean("required_for_activation",
|
| + tile->required_for_activation());
|
| + value->SetBoolean("required_for_draw", tile->required_for_draw());
|
| + };
|
| +
|
| + std::unique_ptr<RasterTilePriorityQueue> raster_priority_queue(
|
| + client_->BuildRasterQueue(global_state_.tree_priority,
|
| + RasterTilePriorityQueue::Type::ALL));
|
| + state->BeginArray("raster_tiles");
|
| + for (; !raster_priority_queue->IsEmpty(); raster_priority_queue->Pop()) {
|
| + state->BeginDictionary();
|
| + tile_as_value(raster_priority_queue->Top(), state.get());
|
| + state->EndDictionary();
|
| + }
|
| + state->EndArray();
|
| +
|
| + std::unique_ptr<RasterTilePriorityQueue> required_priority_queue(
|
| + client_->BuildRasterQueue(
|
| + global_state_.tree_priority,
|
| + RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION));
|
| + state->BeginArray("activation_tiles");
|
| + for (; !required_priority_queue->IsEmpty(); required_priority_queue->Pop()) {
|
| + state->BeginDictionary();
|
| + tile_as_value(required_priority_queue->Top(), state.get());
|
| + state->EndDictionary();
|
| + }
|
| + state->EndArray();
|
| +
|
| + return std::move(state);
|
| +}
|
| +
|
| TileManager::MemoryUsage::MemoryUsage()
|
| : memory_bytes_(0), resource_count_(0) {}
|
|
|
|
|