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

Side by Side Diff: chrome/browser/gtk/task_manager_gtk.cc

Issue 245018: Add columns to gtk task manager.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/gtk/task_manager_gtk.h" 5 #include "chrome/browser/gtk/task_manager_gtk.h"
6 6
7 #include <gdk/gdkkeysyms.h> 7 #include <gdk/gdkkeysyms.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <vector> 10 #include <vector>
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 42
43 enum TaskManagerColumn { 43 enum TaskManagerColumn {
44 kTaskManagerIcon, 44 kTaskManagerIcon,
45 kTaskManagerPage, 45 kTaskManagerPage,
46 kTaskManagerPhysicalMem, 46 kTaskManagerPhysicalMem,
47 kTaskManagerSharedMem, 47 kTaskManagerSharedMem,
48 kTaskManagerPrivateMem, 48 kTaskManagerPrivateMem,
49 kTaskManagerCPU, 49 kTaskManagerCPU,
50 kTaskManagerNetwork, 50 kTaskManagerNetwork,
51 kTaskManagerProcessID, 51 kTaskManagerProcessID,
52 kTaskManagerWebCoreImageCache,
53 kTaskManagerWebCoreScriptsCache,
54 kTaskManagerWebCoreCssCache,
52 kTaskManagerGoatsTeleported, 55 kTaskManagerGoatsTeleported,
53 kTaskManagerColumnCount, 56 kTaskManagerColumnCount,
54 }; 57 };
55 58
56 TaskManagerColumn TaskManagerResourceIDToColumnID(int id) { 59 TaskManagerColumn TaskManagerResourceIDToColumnID(int id) {
57 switch (id) { 60 switch (id) {
58 case IDS_TASK_MANAGER_PAGE_COLUMN: 61 case IDS_TASK_MANAGER_PAGE_COLUMN:
59 return kTaskManagerPage; 62 return kTaskManagerPage;
60 case IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN: 63 case IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN:
61 return kTaskManagerPhysicalMem; 64 return kTaskManagerPhysicalMem;
62 case IDS_TASK_MANAGER_SHARED_MEM_COLUMN: 65 case IDS_TASK_MANAGER_SHARED_MEM_COLUMN:
63 return kTaskManagerSharedMem; 66 return kTaskManagerSharedMem;
64 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN: 67 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN:
65 return kTaskManagerPrivateMem; 68 return kTaskManagerPrivateMem;
66 case IDS_TASK_MANAGER_CPU_COLUMN: 69 case IDS_TASK_MANAGER_CPU_COLUMN:
67 return kTaskManagerCPU; 70 return kTaskManagerCPU;
68 case IDS_TASK_MANAGER_NET_COLUMN: 71 case IDS_TASK_MANAGER_NET_COLUMN:
69 return kTaskManagerNetwork; 72 return kTaskManagerNetwork;
70 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: 73 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN:
71 return kTaskManagerProcessID; 74 return kTaskManagerProcessID;
75 case IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN:
76 return kTaskManagerWebCoreImageCache;
77 case IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN:
78 return kTaskManagerWebCoreScriptsCache;
79 case IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN:
80 return kTaskManagerWebCoreCssCache;
72 case IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN: 81 case IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN:
73 return kTaskManagerGoatsTeleported; 82 return kTaskManagerGoatsTeleported;
74 default: 83 default:
75 NOTREACHED(); 84 NOTREACHED();
76 return static_cast<TaskManagerColumn>(-1); 85 return static_cast<TaskManagerColumn>(-1);
77 } 86 }
78 } 87 }
79 88
80 int TaskManagerColumnIDToResourceID(int id) { 89 int TaskManagerColumnIDToResourceID(int id) {
81 switch (id) { 90 switch (id) {
82 case kTaskManagerPage: 91 case kTaskManagerPage:
83 return IDS_TASK_MANAGER_PAGE_COLUMN; 92 return IDS_TASK_MANAGER_PAGE_COLUMN;
84 case kTaskManagerPhysicalMem: 93 case kTaskManagerPhysicalMem:
85 return IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN; 94 return IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN;
86 case kTaskManagerSharedMem: 95 case kTaskManagerSharedMem:
87 return IDS_TASK_MANAGER_SHARED_MEM_COLUMN; 96 return IDS_TASK_MANAGER_SHARED_MEM_COLUMN;
88 case kTaskManagerPrivateMem: 97 case kTaskManagerPrivateMem:
89 return IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN; 98 return IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN;
90 case kTaskManagerCPU: 99 case kTaskManagerCPU:
91 return IDS_TASK_MANAGER_CPU_COLUMN; 100 return IDS_TASK_MANAGER_CPU_COLUMN;
92 case kTaskManagerNetwork: 101 case kTaskManagerNetwork:
93 return IDS_TASK_MANAGER_NET_COLUMN; 102 return IDS_TASK_MANAGER_NET_COLUMN;
94 case kTaskManagerProcessID: 103 case kTaskManagerProcessID:
95 return IDS_TASK_MANAGER_PROCESS_ID_COLUMN; 104 return IDS_TASK_MANAGER_PROCESS_ID_COLUMN;
105 case kTaskManagerWebCoreImageCache:
106 return IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN;
107 case kTaskManagerWebCoreScriptsCache:
108 return IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN;
109 case kTaskManagerWebCoreCssCache:
110 return IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN;
96 case kTaskManagerGoatsTeleported: 111 case kTaskManagerGoatsTeleported:
97 return IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN; 112 return IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN;
98 default: 113 default:
99 NOTREACHED(); 114 NOTREACHED();
100 return -1; 115 return -1;
101 } 116 }
102 } 117 }
103 118
104 // Should be used for all gtk_tree_view functions that require a column index on 119 // Should be used for all gtk_tree_view functions that require a column index on
105 // input. 120 // input.
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
442 gtk_accel_group_connect(accel_group_, 457 gtk_accel_group_connect(accel_group_,
443 GDK_w, GDK_CONTROL_MASK, GtkAccelFlags(0), 458 GDK_w, GDK_CONTROL_MASK, GtkAccelFlags(0),
444 g_cclosure_new(G_CALLBACK(OnGtkAccelerator), 459 g_cclosure_new(G_CALLBACK(OnGtkAccelerator),
445 this, NULL)); 460 this, NULL));
446 } 461 }
447 462
448 void TaskManagerGtk::CreateTaskManagerTreeview() { 463 void TaskManagerGtk::CreateTaskManagerTreeview() {
449 process_list_ = gtk_list_store_new(kTaskManagerColumnCount, 464 process_list_ = gtk_list_store_new(kTaskManagerColumnCount,
450 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, 465 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
451 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, 466 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
452 G_TYPE_STRING); 467 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
453 468
454 // Support sorting on all columns. 469 // Support sorting on all columns.
455 process_list_sort_ = gtk_tree_model_sort_new_with_model( 470 process_list_sort_ = gtk_tree_model_sort_new_with_model(
456 GTK_TREE_MODEL(process_list_)); 471 GTK_TREE_MODEL(process_list_));
457 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_), 472 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_),
458 kTaskManagerPage, 473 kTaskManagerPage,
459 ComparePage, this, NULL); 474 ComparePage, this, NULL);
460 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_), 475 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_),
461 kTaskManagerPhysicalMem, 476 kTaskManagerPhysicalMem,
462 ComparePhysicalMemory, this, NULL); 477 ComparePhysicalMemory, this, NULL);
(...skipping 18 matching lines...) Expand all
481 treeview_ = gtk_tree_view_new_with_model(process_list_sort_); 496 treeview_ = gtk_tree_view_new_with_model(process_list_sort_);
482 497
483 // Insert all the columns. 498 // Insert all the columns.
484 TreeViewInsertColumnWithPixbuf(treeview_, IDS_TASK_MANAGER_PAGE_COLUMN); 499 TreeViewInsertColumnWithPixbuf(treeview_, IDS_TASK_MANAGER_PAGE_COLUMN);
485 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN); 500 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN);
486 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_SHARED_MEM_COLUMN); 501 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_SHARED_MEM_COLUMN);
487 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN); 502 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN);
488 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_CPU_COLUMN); 503 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_CPU_COLUMN);
489 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_NET_COLUMN); 504 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_NET_COLUMN);
490 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PROCESS_ID_COLUMN); 505 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PROCESS_ID_COLUMN);
506 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN);
507 TreeViewInsertColumn(treeview_,
508 IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN);
509 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN);
491 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN); 510 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN);
492 511
493 // Hide some columns by default. 512 // Hide some columns by default.
494 TreeViewColumnSetVisible(treeview_, kTaskManagerSharedMem, false); 513 TreeViewColumnSetVisible(treeview_, kTaskManagerSharedMem, false);
495 TreeViewColumnSetVisible(treeview_, kTaskManagerPrivateMem, false); 514 TreeViewColumnSetVisible(treeview_, kTaskManagerPrivateMem, false);
496 TreeViewColumnSetVisible(treeview_, kTaskManagerProcessID, false); 515 TreeViewColumnSetVisible(treeview_, kTaskManagerProcessID, false);
516 TreeViewColumnSetVisible(treeview_, kTaskManagerWebCoreImageCache, false);
517 TreeViewColumnSetVisible(treeview_, kTaskManagerWebCoreScriptsCache, false);
518 TreeViewColumnSetVisible(treeview_, kTaskManagerWebCoreCssCache, false);
497 TreeViewColumnSetVisible(treeview_, kTaskManagerGoatsTeleported, false); 519 TreeViewColumnSetVisible(treeview_, kTaskManagerGoatsTeleported, false);
498 520
499 g_object_unref(process_list_); 521 g_object_unref(process_list_);
500 g_object_unref(process_list_sort_); 522 g_object_unref(process_list_sort_);
501 } 523 }
502 524
503 std::string TaskManagerGtk::GetModelText(int row, int col_id) { 525 std::string TaskManagerGtk::GetModelText(int row, int col_id) {
504 switch (col_id) { 526 switch (col_id) {
505 case IDS_TASK_MANAGER_PAGE_COLUMN: // Process 527 case IDS_TASK_MANAGER_PAGE_COLUMN: // Process
506 return WideToUTF8(model_->GetResourceTitle(row)); 528 return WideToUTF8(model_->GetResourceTitle(row));
(...skipping 19 matching lines...) Expand all
526 return WideToUTF8(model_->GetResourceCPUUsage(row)); 548 return WideToUTF8(model_->GetResourceCPUUsage(row));
527 549
528 case IDS_TASK_MANAGER_NET_COLUMN: // Net 550 case IDS_TASK_MANAGER_NET_COLUMN: // Net
529 return WideToUTF8(model_->GetResourceNetworkUsage(row)); 551 return WideToUTF8(model_->GetResourceNetworkUsage(row));
530 552
531 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: // Process ID 553 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: // Process ID
532 if (!model_->IsResourceFirstInGroup(row)) 554 if (!model_->IsResourceFirstInGroup(row))
533 return std::string(); 555 return std::string();
534 return WideToUTF8(model_->GetResourceProcessId(row)); 556 return WideToUTF8(model_->GetResourceProcessId(row));
535 557
558 case IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN:
559 return WideToUTF8(model_->GetResourceWebCoreImageCacheSize(row));
560
561 case IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN:
562 return WideToUTF8(model_->GetResourceWebCoreScriptsCacheSize(row));
563
564 case IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN:
565 return WideToUTF8(model_->GetResourceWebCoreCSSCacheSize(row));
566
536 case IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN: // Goats Teleported! 567 case IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN: // Goats Teleported!
537 return WideToUTF8(model_->GetResourceGoatsTeleported(row)); 568 return WideToUTF8(model_->GetResourceGoatsTeleported(row));
538 569
539 default: 570 default:
540 return WideToUTF8(model_->GetResourceStatsValue(row, col_id)); 571 return WideToUTF8(model_->GetResourceStatsValue(row, col_id));
541 } 572 }
542 } 573 }
543 574
544 GdkPixbuf* TaskManagerGtk::GetModelIcon(int row) { 575 GdkPixbuf* TaskManagerGtk::GetModelIcon(int row) {
545 SkBitmap icon = model_->GetResourceIcon(row); 576 SkBitmap icon = model_->GetResourceIcon(row);
(...skipping 11 matching lines...) Expand all
557 GdkPixbuf* icon = GetModelIcon(row); 588 GdkPixbuf* icon = GetModelIcon(row);
558 std::string page = GetModelText(row, IDS_TASK_MANAGER_PAGE_COLUMN); 589 std::string page = GetModelText(row, IDS_TASK_MANAGER_PAGE_COLUMN);
559 std::string phys_mem = GetModelText( 590 std::string phys_mem = GetModelText(
560 row, IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN); 591 row, IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN);
561 std::string shared_mem = GetModelText( 592 std::string shared_mem = GetModelText(
562 row, IDS_TASK_MANAGER_SHARED_MEM_COLUMN); 593 row, IDS_TASK_MANAGER_SHARED_MEM_COLUMN);
563 std::string priv_mem = GetModelText(row, IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN); 594 std::string priv_mem = GetModelText(row, IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN);
564 std::string cpu = GetModelText(row, IDS_TASK_MANAGER_CPU_COLUMN); 595 std::string cpu = GetModelText(row, IDS_TASK_MANAGER_CPU_COLUMN);
565 std::string net = GetModelText(row, IDS_TASK_MANAGER_NET_COLUMN); 596 std::string net = GetModelText(row, IDS_TASK_MANAGER_NET_COLUMN);
566 std::string procid = GetModelText(row, IDS_TASK_MANAGER_PROCESS_ID_COLUMN); 597 std::string procid = GetModelText(row, IDS_TASK_MANAGER_PROCESS_ID_COLUMN);
598
599 // Querying the WebCore metrics is slow as it has to do IPC, so only do it
600 // when the columns are visible.
601 std::string wk_img_cache;
602 if (TreeViewColumnIsVisible(treeview_, kTaskManagerWebCoreImageCache))
603 wk_img_cache = GetModelText(
604 row, IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN);
605 std::string wk_scripts_cache;
606 if (TreeViewColumnIsVisible(treeview_, kTaskManagerWebCoreScriptsCache))
607 wk_scripts_cache = GetModelText(
608 row, IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN);
609 std::string wk_css_cache;
610 if (TreeViewColumnIsVisible(treeview_, kTaskManagerWebCoreCssCache))
611 wk_css_cache = GetModelText(
612 row, IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN);
613
567 std::string goats = GetModelText( 614 std::string goats = GetModelText(
568 row, IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN); 615 row, IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN);
569 gtk_list_store_set(process_list_, iter, 616 gtk_list_store_set(process_list_, iter,
570 kTaskManagerIcon, icon, 617 kTaskManagerIcon, icon,
571 kTaskManagerPage, page.c_str(), 618 kTaskManagerPage, page.c_str(),
572 kTaskManagerPhysicalMem, phys_mem.c_str(), 619 kTaskManagerPhysicalMem, phys_mem.c_str(),
573 kTaskManagerSharedMem, shared_mem.c_str(), 620 kTaskManagerSharedMem, shared_mem.c_str(),
574 kTaskManagerPrivateMem, priv_mem.c_str(), 621 kTaskManagerPrivateMem, priv_mem.c_str(),
575 kTaskManagerCPU, cpu.c_str(), 622 kTaskManagerCPU, cpu.c_str(),
576 kTaskManagerNetwork, net.c_str(), 623 kTaskManagerNetwork, net.c_str(),
577 kTaskManagerProcessID, procid.c_str(), 624 kTaskManagerProcessID, procid.c_str(),
625 kTaskManagerWebCoreImageCache, wk_img_cache.c_str(),
626 kTaskManagerWebCoreScriptsCache, wk_scripts_cache.c_str(),
627 kTaskManagerWebCoreCssCache, wk_css_cache.c_str(),
578 kTaskManagerGoatsTeleported, goats.c_str(), 628 kTaskManagerGoatsTeleported, goats.c_str(),
579 -1); 629 -1);
580 g_object_unref(icon); 630 g_object_unref(icon);
581 } 631 }
582 632
583 void TaskManagerGtk::KillSelectedProcesses() { 633 void TaskManagerGtk::KillSelectedProcesses() {
584 GtkTreeSelection* selection = gtk_tree_view_get_selection( 634 GtkTreeSelection* selection = gtk_tree_view_get_selection(
585 GTK_TREE_VIEW(treeview_)); 635 GTK_TREE_VIEW(treeview_));
586 636
587 GtkTreeModel* model; 637 GtkTreeModel* model;
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 TaskManagerGtk* task_manager) { 805 TaskManagerGtk* task_manager) {
756 if (keyval == GDK_w && modifier == GDK_CONTROL_MASK) { 806 if (keyval == GDK_w && modifier == GDK_CONTROL_MASK) {
757 // The GTK_RESPONSE_DELETE_EVENT response must be sent before the widget 807 // The GTK_RESPONSE_DELETE_EVENT response must be sent before the widget
758 // is destroyed. The deleted object will receive gtk signals otherwise. 808 // is destroyed. The deleted object will receive gtk signals otherwise.
759 gtk_dialog_response(GTK_DIALOG(task_manager->dialog_), 809 gtk_dialog_response(GTK_DIALOG(task_manager->dialog_),
760 GTK_RESPONSE_DELETE_EVENT); 810 GTK_RESPONSE_DELETE_EVENT);
761 } 811 }
762 812
763 return TRUE; 813 return TRUE;
764 } 814 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698