ProcessManager.h 1017 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * Copyright (c) 2024, Andrew Kaster <akaster@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <AK/Types.h>
  7. #include <AK/Vector.h>
  8. #include <LibCore/EventReceiver.h>
  9. #include <LibWebView/Forward.h>
  10. #pragma once
  11. namespace WebView {
  12. enum class ProcessType {
  13. Chrome,
  14. WebContent,
  15. WebWorker,
  16. SQLServer,
  17. RequestServer,
  18. ImageDecoder,
  19. };
  20. struct ProcessInfo {
  21. ProcessType type;
  22. pid_t pid;
  23. u64 memory_usage_kib = 0;
  24. float cpu_percent = 0.0f;
  25. };
  26. ProcessType process_type_from_name(StringView);
  27. StringView process_name_from_type(ProcessType type);
  28. class ProcessManager {
  29. public:
  30. static ProcessManager& the();
  31. static void initialize();
  32. void add_process(WebView::ProcessType, pid_t);
  33. void remove_process(pid_t);
  34. void update_all_processes();
  35. Vector<ProcessInfo> processes() const { return m_processes; }
  36. String generate_html();
  37. private:
  38. ProcessManager();
  39. ~ProcessManager();
  40. Vector<ProcessInfo> m_processes;
  41. };
  42. }