Adding docs, specs and fixing object returned

This commit is contained in:
Hari Krishna Reddy Juturu 2017-04-26 21:04:53 -07:00
parent bef7d5a520
commit 27aad902b8
6 changed files with 54 additions and 38 deletions

View file

@ -337,6 +337,17 @@ namespace api {
namespace {
class AppIdProcessIterator : public base::ProcessIterator {
public:
AppIdProcessIterator() : base::ProcessIterator(nullptr) {}
protected:
bool IncludeEntry() override {
return (entry().parent_pid() == base::GetCurrentProcId() ||
entry().pid() == base::GetCurrentProcId());
}
};
IconLoader::IconSize GetIconSizeByString(const std::string& size) {
if (size == "small") {
return IconLoader::IconSize::SMALL;
@ -913,35 +924,38 @@ void App::GetFileIcon(const base::FilePath& path,
}
v8::Local<v8::Value> App::GetAppMemoryInfo(v8::Isolate* isolate) {
AppIdProcessIterator processIterator;
auto processEntry = processIterator.NextProcessEntry();
mate::Dictionary result = mate::Dictionary::CreateEmpty(isolate);
AppIdProcessIterator process_iterator;
auto processEntry = process_iterator.NextProcessEntry();
std::vector<mate::Dictionary> result;
while(processEntry != nullptr) {
while (processEntry != nullptr) {
int64_t pid = processEntry->pid();
auto process = base::Process::OpenWithExtraPrivileges(pid);
std::unique_ptr<base::ProcessMetrics> metrics(
base::ProcessMetrics::CreateProcessMetrics(process.Handle()));
mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate);
dict.Set("workingSetSize",
mate::Dictionary pidDict = mate::Dictionary::CreateEmpty(isolate);
mate::Dictionary memoryDict = mate::Dictionary::CreateEmpty(isolate);
memoryDict.Set("workingSetSize",
static_cast<double>(metrics->GetWorkingSetSize() >> 10));
dict.Set("peakWorkingSetSize",
memoryDict.Set("peakWorkingSetSize",
static_cast<double>(metrics->GetPeakWorkingSetSize() >> 10));
size_t private_bytes, shared_bytes;
if (metrics->GetMemoryBytes(&private_bytes, &shared_bytes)) {
dict.Set("privateBytes", static_cast<double>(private_bytes >> 10));
dict.Set("sharedBytes", static_cast<double>(shared_bytes >> 10));
memoryDict.Set("privateBytes", static_cast<double>(private_bytes >> 10));
memoryDict.Set("sharedBytes", static_cast<double>(shared_bytes >> 10));
}
result.Set(std::to_string(pid).c_str(), dict);
processEntry = processIterator.NextProcessEntry();
pidDict.Set("memory", memoryDict);
pidDict.Set("pid", std::to_string(pid));
result.push_back(pidDict);
processEntry = process_iterator.NextProcessEntry();
}
return result.GetHandle();
return mate::ConvertToV8(isolate, result);
}
// static