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

Unified Diff: chrome/browser/task_management/providers/browser_process_task.cc

Issue 1038033002: New Task Manager - Phase 1.1: Implement Browser Process Task Providing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Converting size_t's to int64's Created 5 years, 8 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
Index: chrome/browser/task_management/providers/browser_process_task.cc
diff --git a/chrome/browser/task_management/providers/browser_process_task.cc b/chrome/browser/task_management/providers/browser_process_task.cc
new file mode 100644
index 0000000000000000000000000000000000000000..c4589faa154d8bf210b5f2aec337d5efdf939a78
--- /dev/null
+++ b/chrome/browser/task_management/providers/browser_process_task.cc
@@ -0,0 +1,112 @@
+// 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/task_management/providers/browser_process_task.h"
+
+#include "base/command_line.h"
+#include "chrome/common/chrome_switches.h"
+#include "chrome/grit/generated_resources.h"
+#include "grit/theme_resources.h"
+#include "net/proxy/proxy_resolver_v8.h"
+#include "third_party/sqlite/sqlite3.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/base/resource/resource_bundle.h"
+
+#if defined(OS_MACOSX)
+#include "ui/gfx/image/image_skia_util_mac.h"
+#endif // defined(OS_MACOSX)
+
+#if defined(OS_WIN)
+#include "chrome/browser/app_icon_win.h"
+#include "ui/gfx/icon_util.h"
+#endif // defined(OS_WIN)
+
+namespace task_management {
+
+namespace {
+
+gfx::ImageSkia* g_default_icon = nullptr;
+
+gfx::ImageSkia* GetDefaultIcon() {
+ if (!g_default_icon) {
+#if defined(OS_WIN)
+ HICON icon = GetAppIcon();
+ if (icon) {
+ scoped_ptr<SkBitmap> bitmap(IconUtil::CreateSkBitmapFromHICON(icon));
+ g_default_icon = new gfx::ImageSkia(gfx::ImageSkiaRep(*bitmap, 1.0f));
+ }
+#elif defined(OS_POSIX)
+ if (ResourceBundle::HasSharedInstance()) {
+ g_default_icon = ResourceBundle::GetSharedInstance().
+ GetImageSkiaNamed(IDR_PRODUCT_LOGO_16);
+ }
+#else
+ // TODO(port): Port icon code.
+ NOTIMPLEMENTED();
+#endif // defined(OS_WIN)
+ if (g_default_icon)
+ g_default_icon->MakeThreadSafe();
+ }
+
+ return g_default_icon;
+}
+
+bool ReportsV8Stats() {
+ const base::CommandLine* command_line =
+ base::CommandLine::ForCurrentProcess();
+ return !command_line->HasSwitch(switches::kWinHttpProxyResolver) &&
+ !command_line->HasSwitch(switches::kSingleProcess);
+}
+
+} // namespace
+
+BrowserProcessTask::BrowserProcessTask()
+ : Task(l10n_util::GetStringUTF16(IDS_TASK_MANAGER_WEB_BROWSER_CELL_TEXT),
+ *GetDefaultIcon(),
+ base::GetCurrentProcessHandle()),
+ allocated_v8_memory_(-1),
+ used_v8_memory_(-1),
+ used_sqlite_memory_(-1),
+ reports_v8_stats_(ReportsV8Stats()){
+}
+
+BrowserProcessTask::~BrowserProcessTask() {
+}
+
+void BrowserProcessTask::Refresh(const base::TimeDelta& update_interval) {
+ Task::Refresh(update_interval);
+
+ // TODO(afakhry): Add code to skip v8 and sqlite stats update if they have
+ // never been requested.
+ if (reports_v8_stats_) {
+ allocated_v8_memory_ =
+ static_cast<int64>(net::ProxyResolverV8::GetTotalHeapSize());
+ used_v8_memory_ =
+ static_cast<int64>(net::ProxyResolverV8::GetUsedHeapSize());
+ }
+
+ used_sqlite_memory_ = static_cast<int64>(sqlite3_memory_used());
+}
+
+Task::Type BrowserProcessTask::GetType() const {
+ return Task::BROWSER;
+}
+
+int BrowserProcessTask::GetChildProcessUniqueID() const {
+ return 0;
+}
+
+int64 BrowserProcessTask::GetSqliteMemoryUsed() const {
+ return used_sqlite_memory_;
+}
+
+int64 BrowserProcessTask::GetV8MemoryAllocated() const {
+ return allocated_v8_memory_;
+}
+
+int64 BrowserProcessTask::GetV8MemoryUsed() const {
+ return used_v8_memory_;
+}
+
+} // namespace task_management

Powered by Google App Engine
This is Rietveld 408576698