Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(94)

Unified Diff: chrome/browser/caps/generate_state_json.cc

Issue 1912773002: Remove the old task manager view (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nits Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/caps/generate_state_json.h ('k') | chrome/browser/policy/policy_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/caps/generate_state_json.cc
diff --git a/chrome/browser/caps/generate_state_json.cc b/chrome/browser/caps/generate_state_json.cc
deleted file mode 100644
index 5f0856ef88cc64250042cd8836b6e50d1d3b0899..0000000000000000000000000000000000000000
--- a/chrome/browser/caps/generate_state_json.cc
+++ /dev/null
@@ -1,208 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/caps/generate_state_json.h"
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include <memory>
-#include <string>
-#include <utility>
-
-#include "base/bind.h"
-#include "base/cpu.h"
-#include "base/files/file.h"
-#include "base/json/json_writer.h"
-#include "base/location.h"
-#include "base/memory/ref_counted.h"
-#include "base/single_thread_task_runner.h"
-#include "base/strings/stringprintf.h"
-#include "base/sys_info.h"
-#include "base/threading/thread_restrictions.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "base/time/time.h"
-#include "base/values.h"
-#include "build/build_config.h"
-#include "chrome/browser/task_manager/task_manager.h"
-
-namespace {
-
-std::string Key(base::ProcessId pid, const char* category) {
- return category ?
- base::StringPrintf("process.%d.%s", pid, category) :
- base::StringPrintf("process.%d", pid);
-}
-
-using MemoryFn1 = bool (TaskManagerModel::*)(
- int index, size_t* result1) const;
-using MemoryFn2 = bool (TaskManagerModel::*)(
- int index, size_t* result1, bool*) const;
-
-int InMBFromB(size_t result_in_bytes) {
- return static_cast<int>(result_in_bytes / (1024 * 1024));
-}
-
-int InMBFromB(const TaskManagerModel* model, MemoryFn1 mfn, int index) {
- size_t result_in_bytes = 0;
- bool res = (model->*mfn)(index, &result_in_bytes);
- return res ? InMBFromB(result_in_bytes) : 0;
-}
-
-int InMBFromB(const TaskManagerModel* model, MemoryFn2 mfn, int index) {
- size_t result_in_bytes = 0;
- bool ignored;
- bool res = (model->*mfn)(index, &result_in_bytes, &ignored);
- return res ? InMBFromB(result_in_bytes) : 0;
-}
-
-class TaskManagerDataDumper :
- public base::RefCountedThreadSafe<TaskManagerDataDumper> {
- public:
- TaskManagerDataDumper(scoped_refptr<TaskManagerModel> model, base::File file)
- : model_(model), file_(std::move(file)) {
- model_->RegisterOnDataReadyCallback(
- base::Bind(&TaskManagerDataDumper::OnDataReady, this));
- model->StartListening();
- // Note that GenerateStateJSON 'new's this object which is reference
- // counted.
- AddRef();
- }
-
- private:
- friend class base::RefCountedThreadSafe<TaskManagerDataDumper>;
- ~TaskManagerDataDumper() {
- }
-
- void OnDataReady() {
- // Some data (for example V8 memory) has not yet arrived, so we wait.
- // TODO(cpu): Figure out how to make this reliable.
- static base::TimeDelta delay = base::TimeDelta::FromMilliseconds(250);
- base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
- FROM_HERE, base::Bind(&TaskManagerDataDumper::OnDataReadyDelayed, this),
- delay);
- }
-
- void OnDataReadyDelayed() {
- model_->StopListening();
- // Task manager finally computed (most) values. Lets generate the JSON
- // data and send it over the pipe.
- base::DictionaryValue dict;
- GatherComputerValues(&dict);
- GatherChromeValues(&dict);
-
- std::string json;
- auto options = base::JSONWriter::OPTIONS_PRETTY_PRINT;
- if (!base::JSONWriter::WriteWithOptions(dict, options, &json))
- return;
-
- file_.WriteAtCurrentPos(json.c_str(), json.size());
- file_.Close();
- // this Release() causes our destruction.
- Release();
- }
-
- private:
- // TODO(cpu): split the key names below into a separate header that both
- // caps and chrome can use.
-
- void GatherComputerValues(base::DictionaryValue* dict) {
- base::CPU cpu;
- dict->SetInteger("system.cpu.type", cpu.type());
- dict->SetInteger("system.cpu.family", cpu.family());
- dict->SetInteger("system.cpu.model", cpu.model());
- dict->SetInteger("system.cpu.stepping", cpu.stepping());
- dict->SetString("system.cpu.brand", cpu.cpu_brand());
- dict->SetInteger("system.cpu.logicalprocessors",
- base::SysInfo::NumberOfProcessors());
- dict->SetInteger("system.cpu.logicalprocessors",
- base::SysInfo::NumberOfProcessors());
- int64_t memory = base::SysInfo::AmountOfPhysicalMemory();
- dict->SetInteger("system.memory.physical", InMBFromB(memory));
- memory = base::SysInfo::AmountOfAvailablePhysicalMemory();
- dict->SetInteger("system.memory.available", InMBFromB(memory));
- dict->SetInteger("system.uptime", base::SysInfo::Uptime().InSeconds());
- dict->SetString("os.name", base::SysInfo::OperatingSystemName());
-#if !defined(OS_LINUX)
- int32_t major, minor, bugfix;
- base::SysInfo::OperatingSystemVersionNumbers(&major, &minor, &bugfix);
- dict->SetInteger("os.version.major", major);
- dict->SetInteger("os.version.minor", minor);
- dict->SetInteger("os.version.bugfix", bugfix);
- dict->SetString("os.arch", base::SysInfo::OperatingSystemArchitecture());
-#endif
- }
-
- void GatherChromeValues(base::DictionaryValue* dict) {
- for (int index = 0; index != model_->ResourceCount(); ++index) {
- auto pid = model_->GetProcessId(index);
- auto tabs_key = Key(pid, "tabs");
- base::ListValue* tabs;
- if (!dict->GetList(tabs_key, &tabs)) {
- tabs = new base::ListValue;
- dict->Set(tabs_key, tabs);
- tabs->AppendString(model_->GetResourceTitle(index));
-
- dict->SetInteger(Key(pid, "memory.physical"),
- InMBFromB(model_.get(),
- &TaskManagerModel::GetPhysicalMemory, index));
- dict->SetInteger(Key(pid, "memory.private"),
- InMBFromB(model_.get(),
- &TaskManagerModel::GetPrivateMemory, index));
- dict->SetInteger(Key(pid, "memory.shared"),
- InMBFromB(model_.get(),
- &TaskManagerModel::GetSharedMemory, index));
- dict->SetInteger(Key(pid, "memory.video"),
- InMBFromB(model_.get(),
- &TaskManagerModel::GetVideoMemory, index));
- dict->SetInteger(Key(pid, "memory.V8.total"),
- InMBFromB(model_.get(),
- &TaskManagerModel::GetV8Memory, index));
- dict->SetInteger(Key(pid, "memory.V8.used"),
- InMBFromB(model_.get(),
- &TaskManagerModel::GetV8MemoryUsed, index));
- dict->SetInteger(Key(pid, "memory.sqlite"),
- InMBFromB(model_.get(),
- &TaskManagerModel::GetSqliteMemoryUsedBytes, index));
- dict->SetString(Key(pid, "uptime"),
- ProcessUptime(model_->GetProcess(index)));
- } else {
- // TODO(cpu): Probably best to write the MD5 hash of the title.
- tabs->AppendString(model_->GetResourceTitle(index));
- }
- }
- }
-
- std::string ProcessUptime(base::ProcessHandle process) {
-#if defined(OS_WIN)
- FILETIME creation_time;
- FILETIME exit_time;
- FILETIME kernel_time;
- FILETIME user_time;
-
- if (!GetProcessTimes(process, &creation_time, &exit_time,
- &kernel_time, &user_time))
- return std::string("~");
-
- auto ct_delta = base::Time::Now() - base::Time::FromFileTime(creation_time);
- return base::StringPrintf("%lld", ct_delta.InSeconds());
-#else
- return std::string();
-#endif
- }
-
- scoped_refptr<TaskManagerModel> model_;
- base::File file_;
-};
-
-} // namespace
-
-namespace caps {
-
-void GenerateStateJSON(
- scoped_refptr<TaskManagerModel> model, base::File file) {
- new TaskManagerDataDumper(model, std::move(file));
-}
-
-}
« no previous file with comments | « chrome/browser/caps/generate_state_json.h ('k') | chrome/browser/policy/policy_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698