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

Unified Diff: chrome/browser/chromeos/status/memory_menu_button.cc

Issue 10056001: chromeos: Remove old status-area related code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 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
« no previous file with comments | « chrome/browser/chromeos/status/memory_menu_button.h ('k') | chrome/browser/chromeos/status/network_menu.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/status/memory_menu_button.cc
diff --git a/chrome/browser/chromeos/status/memory_menu_button.cc b/chrome/browser/chromeos/status/memory_menu_button.cc
deleted file mode 100644
index 28cdde76b35582916291089e79d1d2be92cd2703..0000000000000000000000000000000000000000
--- a/chrome/browser/chromeos/status/memory_menu_button.cc
+++ /dev/null
@@ -1,282 +0,0 @@
-// Copyright (c) 2012 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.
-
-// Note: this file is used by Aura on all linux platforms, even though it
-// is currently in a chromeos specific location.
-
-#include "chrome/browser/chromeos/status/memory_menu_button.h"
-
-#include "base/file_util.h"
-#include "base/process_util.h" // GetSystemMemoryInfo
-#include "base/stringprintf.h"
-#include "base/threading/thread_restrictions.h"
-#include "base/utf_string_conversions.h"
-#include "chrome/browser/chromeos/view_ids.h"
-#include "chrome/browser/memory_purger.h"
-#include "chrome/common/render_messages.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_types.h"
-#include "content/public/browser/render_process_host.h"
-#include "grit/generated_resources.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/views/controls/menu/menu_runner.h"
-#include "ui/views/widget/widget.h"
-
-#if defined(USE_TCMALLOC)
-#include "third_party/tcmalloc/chromium/src/gperftools/heap-profiler.h"
-#endif
-
-#if defined(USE_TCMALLOC)
-const char kProfileDumpFilePrefix[] = "/tmp/chrome_tcmalloc";
-#endif
-
-namespace {
-
-// views::MenuItemView item ids
-enum {
- MEM_TOTAL_ITEM,
- MEM_FREE_ITEM,
- MEM_BUFFERS_ITEM,
- MEM_CACHE_ITEM,
- SHMEM_ITEM,
- PURGE_MEMORY_ITEM,
-#if defined(USE_TCMALLOC)
- TOGGLE_PROFILING_ITEM,
- DUMP_PROFILING_ITEM,
-#endif
-};
-
-} // namespace
-
-// Delay between updates, in seconds.
-const int kUpdateIntervalSeconds = 5;
-
-MemoryMenuButton::MemoryMenuButton(StatusAreaButton::Delegate* delegate)
- : StatusAreaButton(delegate, this),
- meminfo_(new base::SystemMemoryInfoKB()),
- renderer_kills_(0) {
- set_id(VIEW_ID_STATUS_BUTTON_MEMORY);
- // Track renderer kills, as the kernel OOM killer will start to kill our
- // renderers as we run out of memory.
- registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED,
- content::NotificationService::AllSources());
- UpdateTextAndSetNextTimer();
-}
-
-MemoryMenuButton::~MemoryMenuButton() {
-}
-
-void MemoryMenuButton::UpdateTextAndSetNextTimer() {
- UpdateText();
-
- timer_.Start(FROM_HERE,
- base::TimeDelta::FromSeconds(kUpdateIntervalSeconds), this,
- &MemoryMenuButton::UpdateTextAndSetNextTimer);
-}
-
-void MemoryMenuButton::UpdateText() {
- base::GetSystemMemoryInfo(meminfo_.get());
- // "Anonymous" memory, meaning not mapped to a file (which has a name),
- // represents memory that has been dynamically allocated to a process.
- // It thus approximates heap memory usage across all processes.
- int anon_kb = meminfo_->active_anon + meminfo_->inactive_anon;
- std::string label = base::StringPrintf("%d MB (%d)",
- anon_kb / 1024,
- renderer_kills_);
- SetText(ASCIIToUTF16(label));
- std::string tooltip = base::StringPrintf("%d MB allocated (anonymous)\n"
- "%d renderer kill(s)",
- anon_kb / 1024,
- renderer_kills_);
- SetTooltipText(ASCIIToUTF16(tooltip));
- SchedulePaint();
-}
-
-// MemoryMenuButton, views::MenuDelegate implementation:
-string16 MemoryMenuButton::GetLabel(int id) const {
- std::string label;
- switch (id) {
- case MEM_TOTAL_ITEM:
- label = base::StringPrintf("%d MB total", meminfo_->total / 1024);
- break;
- case MEM_FREE_ITEM:
- label = base::StringPrintf("%d MB free", meminfo_->free / 1024);
- break;
- case MEM_BUFFERS_ITEM:
- label = base::StringPrintf("%d MB buffers", meminfo_->buffers / 1024);
- break;
- case MEM_CACHE_ITEM:
- label = base::StringPrintf("%d MB cache", meminfo_->cached / 1024);
- break;
- case SHMEM_ITEM:
- label = base::StringPrintf("%d MB shmem", meminfo_->shmem / 1024);
- break;
- case PURGE_MEMORY_ITEM:
- return ASCIIToUTF16("Purge memory");
-#if defined(USE_TCMALLOC)
- case TOGGLE_PROFILING_ITEM:
- if (!IsHeapProfilerRunning())
- return ASCIIToUTF16("Start profiling");
- else
- return ASCIIToUTF16("Stop profiling");
- case DUMP_PROFILING_ITEM:
- return ASCIIToUTF16("Dump profile");
-#endif
- default:
- return string16();
- }
- return UTF8ToUTF16(label);
-}
-
-bool MemoryMenuButton::IsCommandEnabled(int id) const {
- switch (id) {
- case PURGE_MEMORY_ITEM:
- return true;
-#if defined(USE_TCMALLOC)
- case TOGGLE_PROFILING_ITEM:
- case DUMP_PROFILING_ITEM:
- return true;
-#endif
- default:
- return false;
- }
-}
-
-namespace {
-#if defined(USE_TCMALLOC)
-FilePath::StringType GetProfileDumpFilePath(base::ProcessId pid) {
- int int_pid = static_cast<int>(pid);
- FilePath::StringType filepath = StringPrintf(
- FILE_PATH_LITERAL("%s.%d.heap"),
- FILE_PATH_LITERAL(kProfileDumpFilePrefix), int_pid);
- return filepath;
-}
-#endif
-}
-
-void MemoryMenuButton::SendCommandToRenderers(int id) {
-#if defined(USE_TCMALLOC)
- // Use the "is running" value for this process to determine whether to
- // start or stop profiling on the renderer processes.
- bool started = IsHeapProfilerRunning();
- for (content::RenderProcessHost::iterator it =
- content::RenderProcessHost::AllHostsIterator();
- !it.IsAtEnd(); it.Advance()) {
- switch (id) {
- case TOGGLE_PROFILING_ITEM:
- it.GetCurrentValue()->Send(new ChromeViewMsg_SetTcmallocHeapProfiling(
- started, std::string(kProfileDumpFilePrefix)));
- break;
- case DUMP_PROFILING_ITEM:
- it.GetCurrentValue()->Send(new ChromeViewMsg_WriteTcmallocHeapProfile(
- GetProfileDumpFilePath(
- base::GetProcId(it.GetCurrentValue()->GetHandle()))));
- break;
- default:
- NOTREACHED();
- }
- }
-#endif
-}
-
-void MemoryMenuButton::ExecuteCommand(int id) {
- switch (id) {
- case PURGE_MEMORY_ITEM:
- MemoryPurger::PurgeAll();
- break;
-#if defined(USE_TCMALLOC)
- case TOGGLE_PROFILING_ITEM: {
- if (!IsHeapProfilerRunning())
- HeapProfilerStart(kProfileDumpFilePrefix);
- else
- HeapProfilerStop();
- SendCommandToRenderers(id);
- break;
- }
- case DUMP_PROFILING_ITEM: {
- char* profile = GetHeapProfile();
- if (profile) {
- FilePath::StringType filepath =
- GetProfileDumpFilePath(base::GetProcId(base::GetCurrentProcId()));
- VLOG(0) << "Writing browser heap profile dump to: " << filepath;
- base::ThreadRestrictions::ScopedAllowIO allow_io;
- file_util::WriteFile(FilePath(filepath), profile, strlen(profile));
- delete profile;
- }
- SendCommandToRenderers(id);
- break;
- }
-#endif
- default:
- NOTREACHED();
- break;
- }
-}
-
-int MemoryMenuButton::horizontal_padding() {
- return 3;
-}
-
-// MemoryMenuButton, views::MenuButtonListener implementation:
-
-void MemoryMenuButton::OnMenuButtonClicked(views::View* source,
- const gfx::Point& point) {
- // View passed in must be a views::MenuButton, i.e. the MemoryMenuButton.
- DCHECK_EQ(source, this);
-
- menu_runner_.reset(new views::MenuRunner(CreateMenu()));
- gfx::Point screen_location;
- views::View::ConvertPointToScreen(source, &screen_location);
- gfx::Rect bounds(screen_location, source->size());
- if (menu_runner_->RunMenuAt(
- source->GetWidget()->GetTopLevelWidget(), this, bounds,
- views::MenuItemView::TOPRIGHT, views::MenuRunner::HAS_MNEMONICS) ==
- views::MenuRunner::MENU_DELETED)
- return;
-}
-
-views::MenuItemView* MemoryMenuButton::CreateMenu() {
- // Just rebuild the menu each time to ensure the labels are up-to-date.
- views::MenuItemView* menu = new views::MenuItemView(this);
- // Text for these items will be set by GetLabel().
- menu->AppendDelegateMenuItem(MEM_TOTAL_ITEM);
- menu->AppendDelegateMenuItem(MEM_FREE_ITEM);
- menu->AppendDelegateMenuItem(MEM_BUFFERS_ITEM);
- menu->AppendDelegateMenuItem(MEM_CACHE_ITEM);
- menu->AppendDelegateMenuItem(SHMEM_ITEM);
- menu->AppendSeparator();
- menu->AppendDelegateMenuItem(PURGE_MEMORY_ITEM);
-#if defined(USE_TCMALLOC)
- menu->AppendSeparator();
- menu->AppendDelegateMenuItem(TOGGLE_PROFILING_ITEM);
- if (IsHeapProfilerRunning())
- menu->AppendDelegateMenuItem(DUMP_PROFILING_ITEM);
-#endif
- return menu;
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// content::NotificationObserver overrides.
-
-void MemoryMenuButton::Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- switch (type) {
- case content::NOTIFICATION_RENDERER_PROCESS_CLOSED: {
- content::RenderProcessHost::RendererClosedDetails* process_details =
- content::Details<content::RenderProcessHost::RendererClosedDetails>(
- details).ptr();
- if (process_details->status ==
- base::TERMINATION_STATUS_PROCESS_WAS_KILLED) {
- renderer_kills_++;
- // A kill is a very interesting event, so repaint immediately.
- UpdateText();
- }
- break;
- }
- default:
- NOTREACHED() << L"Received unexpected notification";
- break;
- }
-}
« no previous file with comments | « chrome/browser/chromeos/status/memory_menu_button.h ('k') | chrome/browser/chromeos/status/network_menu.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698