worker_node_impl_describer.cc 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // Copyright 2020 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/performance_manager/graph/worker_node_impl_describer.h"
  5. #include "base/strings/string_number_conversions.h"
  6. #include "components/performance_manager/public/graph/node_data_describer_registry.h"
  7. #include "components/performance_manager/public/graph/node_data_describer_util.h"
  8. namespace performance_manager {
  9. namespace {
  10. const char kDescriberName[] = "WorkerNode";
  11. const char* WorkerTypeToString(WorkerNode::WorkerType state) {
  12. switch (state) {
  13. case WorkerNode::WorkerType::kDedicated:
  14. return "kDedicated";
  15. case WorkerNode::WorkerType::kShared:
  16. return "kShared";
  17. case WorkerNode::WorkerType::kService:
  18. return "kService";
  19. }
  20. }
  21. } // namespace
  22. void WorkerNodeImplDescriber::OnPassedToGraph(Graph* graph) {
  23. graph->GetNodeDataDescriberRegistry()->RegisterDescriber(this,
  24. kDescriberName);
  25. }
  26. void WorkerNodeImplDescriber::OnTakenFromGraph(Graph* graph) {
  27. graph->GetNodeDataDescriberRegistry()->UnregisterDescriber(this);
  28. }
  29. base::Value WorkerNodeImplDescriber::DescribeWorkerNodeData(
  30. const WorkerNode* node) const {
  31. const WorkerNodeImpl* impl = WorkerNodeImpl::FromNode(node);
  32. if (!impl)
  33. return base::Value();
  34. base::Value ret(base::Value::Type::DICTIONARY);
  35. ret.SetKey("browser_context_id", base::Value(impl->browser_context_id()));
  36. ret.SetKey("worker_token", base::Value(impl->worker_token().ToString()));
  37. ret.SetKey("url", base::Value(impl->url().spec()));
  38. ret.SetKey("worker_type",
  39. base::Value(WorkerTypeToString(impl->worker_type())));
  40. ret.SetKey("priority", PriorityAndReasonToValue(impl->priority_and_reason()));
  41. return ret;
  42. }
  43. } // namespace performance_manager