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

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

Issue 17501006: Remove "View Background Pages". (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: real gtk fix Created 7 years, 6 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/ui/gtk/task_manager_gtk.h" 5 #include "chrome/browser/ui/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 <set> 10 #include <set>
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 kTaskManagerNetwork, 64 kTaskManagerNetwork,
65 kTaskManagerProcessID, 65 kTaskManagerProcessID,
66 kTaskManagerJavaScriptMemory, 66 kTaskManagerJavaScriptMemory,
67 kTaskManagerWebCoreImageCache, 67 kTaskManagerWebCoreImageCache,
68 kTaskManagerWebCoreScriptsCache, 68 kTaskManagerWebCoreScriptsCache,
69 kTaskManagerWebCoreCssCache, 69 kTaskManagerWebCoreCssCache,
70 kTaskManagerVideoMemory, 70 kTaskManagerVideoMemory,
71 kTaskManagerFPS, 71 kTaskManagerFPS,
72 kTaskManagerSqliteMemoryUsed, 72 kTaskManagerSqliteMemoryUsed,
73 kTaskManagerGoatsTeleported, 73 kTaskManagerGoatsTeleported,
74 // Columns below this point are not visible in the task manager.
75 kTaskManagerBackgroundColor,
76 kTaskManagerColumnCount, 74 kTaskManagerColumnCount,
77 }; 75 };
78 76
79 const TaskManagerColumn kTaskManagerLastVisibleColumn = 77 const TaskManagerColumn kTaskManagerLastVisibleColumn =
80 kTaskManagerGoatsTeleported; 78 kTaskManagerGoatsTeleported;
81 79
82 static const GdkColor kHighlightColor = GDK_COLOR_RGB(0xff, 0xfa, 0xcd);
83
84 TaskManagerColumn TaskManagerResourceIDToColumnID(int id) { 80 TaskManagerColumn TaskManagerResourceIDToColumnID(int id) {
85 switch (id) { 81 switch (id) {
86 case IDS_TASK_MANAGER_TASK_COLUMN: 82 case IDS_TASK_MANAGER_TASK_COLUMN:
87 return kTaskManagerTask; 83 return kTaskManagerTask;
88 case IDS_TASK_MANAGER_PROFILE_NAME_COLUMN: 84 case IDS_TASK_MANAGER_PROFILE_NAME_COLUMN:
89 return kTaskManagerProfileName; 85 return kTaskManagerProfileName;
90 case IDS_TASK_MANAGER_SHARED_MEM_COLUMN: 86 case IDS_TASK_MANAGER_SHARED_MEM_COLUMN:
91 return kTaskManagerSharedMem; 87 return kTaskManagerSharedMem;
92 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN: 88 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN:
93 return kTaskManagerPrivateMem; 89 return kTaskManagerPrivateMem;
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 void TreeViewInsertTaskColumn(GtkWidget* treeview, int resid) { 183 void TreeViewInsertTaskColumn(GtkWidget* treeview, int resid) {
188 int colid = TaskManagerResourceIDToColumnID(resid); 184 int colid = TaskManagerResourceIDToColumnID(resid);
189 GtkTreeViewColumn* column = gtk_tree_view_column_new(); 185 GtkTreeViewColumn* column = gtk_tree_view_column_new();
190 gtk_tree_view_column_set_title(column, 186 gtk_tree_view_column_set_title(column,
191 l10n_util::GetStringUTF8(resid).c_str()); 187 l10n_util::GetStringUTF8(resid).c_str());
192 gtk_tree_view_set_tooltip_column(GTK_TREE_VIEW(treeview), colid); 188 gtk_tree_view_set_tooltip_column(GTK_TREE_VIEW(treeview), colid);
193 GtkCellRenderer* image_renderer = gtk_cell_renderer_pixbuf_new(); 189 GtkCellRenderer* image_renderer = gtk_cell_renderer_pixbuf_new();
194 gtk_tree_view_column_pack_start(column, image_renderer, FALSE); 190 gtk_tree_view_column_pack_start(column, image_renderer, FALSE);
195 gtk_tree_view_column_add_attribute(column, image_renderer, 191 gtk_tree_view_column_add_attribute(column, image_renderer,
196 "pixbuf", kTaskManagerIcon); 192 "pixbuf", kTaskManagerIcon);
197 gtk_tree_view_column_add_attribute(column, image_renderer,
198 "cell-background-gdk",
199 kTaskManagerBackgroundColor);
200 GtkCellRenderer* text_renderer = gtk_cell_renderer_text_new(); 193 GtkCellRenderer* text_renderer = gtk_cell_renderer_text_new();
201 gtk_tree_view_column_pack_start(column, text_renderer, TRUE); 194 gtk_tree_view_column_pack_start(column, text_renderer, TRUE);
202 gtk_tree_view_column_add_attribute(column, text_renderer, "markup", colid); 195 gtk_tree_view_column_add_attribute(column, text_renderer, "markup", colid);
203 gtk_tree_view_column_add_attribute(column, text_renderer,
204 "cell-background-gdk",
205 kTaskManagerBackgroundColor);
206 gtk_tree_view_column_set_resizable(column, TRUE); 196 gtk_tree_view_column_set_resizable(column, TRUE);
207 // This is temporary: we'll turn expanding off after getting the size. 197 // This is temporary: we'll turn expanding off after getting the size.
208 gtk_tree_view_column_set_expand(column, TRUE); 198 gtk_tree_view_column_set_expand(column, TRUE);
209 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); 199 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
210 gtk_tree_view_column_set_sort_column_id(column, colid); 200 gtk_tree_view_column_set_sort_column_id(column, colid);
211 } 201 }
212 202
213 // Inserts a column with a column id of |colid| and |name|. 203 // Inserts a column with a column id of |colid| and |name|.
214 void TreeViewInsertColumnWithName(GtkWidget* treeview, 204 void TreeViewInsertColumnWithName(GtkWidget* treeview,
215 TaskManagerColumn colid, const char* name) { 205 TaskManagerColumn colid, const char* name) {
216 GtkCellRenderer* renderer = gtk_cell_renderer_text_new(); 206 GtkCellRenderer* renderer = gtk_cell_renderer_text_new();
217 gtk_tree_view_insert_column_with_attributes( 207 gtk_tree_view_insert_column_with_attributes(
218 GTK_TREE_VIEW(treeview), -1, 208 GTK_TREE_VIEW(treeview), -1,
219 name, renderer, 209 name, renderer,
220 "text", colid, 210 "text", colid,
221 "cell-background-gdk", kTaskManagerBackgroundColor,
222 NULL); 211 NULL);
223 GtkTreeViewColumn* column = gtk_tree_view_get_column( 212 GtkTreeViewColumn* column = gtk_tree_view_get_column(
224 GTK_TREE_VIEW(treeview), TreeViewColumnIndexFromID(colid)); 213 GTK_TREE_VIEW(treeview), TreeViewColumnIndexFromID(colid));
225 gtk_tree_view_column_set_resizable(column, TRUE); 214 gtk_tree_view_column_set_resizable(column, TRUE);
226 gtk_tree_view_column_set_sort_column_id(column, colid); 215 gtk_tree_view_column_set_sort_column_id(column, colid);
227 } 216 }
228 217
229 // Loads the column name from |resid| and uses the corresponding 218 // Loads the column name from |resid| and uses the corresponding
230 // TaskManagerColumn value as the column id to insert into the treeview. 219 // TaskManagerColumn value as the column id to insert into the treeview.
231 void TreeViewInsertColumn(GtkWidget* treeview, int resid) { 220 void TreeViewInsertColumn(GtkWidget* treeview, int resid) {
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 scoped_ptr<ui::SimpleMenuModel> menu_model_; 297 scoped_ptr<ui::SimpleMenuModel> menu_model_;
309 scoped_ptr<MenuGtk> menu_; 298 scoped_ptr<MenuGtk> menu_;
310 299
311 // The TaskManager the context menu was brought up for. Set to NULL when the 300 // The TaskManager the context menu was brought up for. Set to NULL when the
312 // menu is canceled. 301 // menu is canceled.
313 TaskManagerGtk* task_manager_; 302 TaskManagerGtk* task_manager_;
314 303
315 DISALLOW_COPY_AND_ASSIGN(ContextMenuController); 304 DISALLOW_COPY_AND_ASSIGN(ContextMenuController);
316 }; 305 };
317 306
318 TaskManagerGtk::TaskManagerGtk(bool highlight_background_resources) 307 TaskManagerGtk::TaskManagerGtk()
319 : task_manager_(TaskManager::GetInstance()), 308 : task_manager_(TaskManager::GetInstance()),
320 model_(TaskManager::GetInstance()->model()), 309 model_(TaskManager::GetInstance()->model()),
321 dialog_(NULL), 310 dialog_(NULL),
322 treeview_(NULL), 311 treeview_(NULL),
323 process_list_(NULL), 312 process_list_(NULL),
324 process_count_(0), 313 process_count_(0),
325 ignore_selection_changed_(false), 314 ignore_selection_changed_(false) {
326 highlight_background_resources_(highlight_background_resources) {
327 Init(); 315 Init();
328 } 316 }
329 317
330 // static 318 // static
331 TaskManagerGtk* TaskManagerGtk::instance_ = NULL; 319 TaskManagerGtk* TaskManagerGtk::instance_ = NULL;
332 320
333 TaskManagerGtk::~TaskManagerGtk() { 321 TaskManagerGtk::~TaskManagerGtk() {
334 model_->RemoveObserver(this); 322 model_->RemoveObserver(this);
335 task_manager_->OnWindowClosed(); 323 task_manager_->OnWindowClosed();
336 324
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 //////////////////////////////////////////////////////////////////////////////// 408 ////////////////////////////////////////////////////////////////////////////////
421 // TaskManagerGtk, public: 409 // TaskManagerGtk, public:
422 410
423 void TaskManagerGtk::Close() { 411 void TaskManagerGtk::Close() {
424 // Blow away our dialog - this will cause TaskManagerGtk to free itself. 412 // Blow away our dialog - this will cause TaskManagerGtk to free itself.
425 gtk_widget_destroy(dialog_); 413 gtk_widget_destroy(dialog_);
426 DCHECK(!instance_); 414 DCHECK(!instance_);
427 } 415 }
428 416
429 // static 417 // static
430 void TaskManagerGtk::Show(bool highlight_background_resources) { 418 void TaskManagerGtk::Show() {
431 if (instance_ &&
432 instance_->highlight_background_resources_ !=
433 highlight_background_resources) {
434 instance_->Close();
435 DCHECK(!instance_);
436 }
437
438 if (instance_) { 419 if (instance_) {
439 // If there's a Task manager window open already, just activate it. 420 // If there's a Task manager window open already, just activate it.
440 gtk_util::PresentWindow(instance_->dialog_, 0); 421 gtk_util::PresentWindow(instance_->dialog_, 0);
441 } else { 422 } else {
442 instance_ = new TaskManagerGtk(highlight_background_resources); 423 instance_ = new TaskManagerGtk();
443 instance_->model_->StartUpdating(); 424 instance_->model_->StartUpdating();
444 } 425 }
445 } 426 }
446 427
447 //////////////////////////////////////////////////////////////////////////////// 428 ////////////////////////////////////////////////////////////////////////////////
448 // TaskManagerGtk, private: 429 // TaskManagerGtk, private:
449 430
450 void TaskManagerGtk::Init() { 431 void TaskManagerGtk::Init() {
451 dialog_ = gtk_dialog_new_with_buttons( 432 dialog_ = gtk_dialog_new_with_buttons(
452 l10n_util::GetStringUTF8(IDS_TASK_MANAGER_TITLE).c_str(), 433 l10n_util::GetStringUTF8(IDS_TASK_MANAGER_TITLE).c_str(),
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 GDK_w, GDK_CONTROL_MASK, GtkAccelFlags(0), 558 GDK_w, GDK_CONTROL_MASK, GtkAccelFlags(0),
578 g_cclosure_new(G_CALLBACK(OnGtkAcceleratorThunk), 559 g_cclosure_new(G_CALLBACK(OnGtkAcceleratorThunk),
579 this, NULL)); 560 this, NULL));
580 } 561 }
581 562
582 void TaskManagerGtk::CreateTaskManagerTreeview() { 563 void TaskManagerGtk::CreateTaskManagerTreeview() {
583 process_list_ = gtk_list_store_new(kTaskManagerColumnCount, 564 process_list_ = gtk_list_store_new(kTaskManagerColumnCount,
584 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, 565 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
585 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, 566 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
586 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, 567 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
587 G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_COLOR); 568 G_TYPE_STRING, G_TYPE_STRING);
588 569
589 // Support sorting on all columns. 570 // Support sorting on all columns.
590 process_list_sort_ = gtk_tree_model_sort_new_with_model( 571 process_list_sort_ = gtk_tree_model_sort_new_with_model(
591 GTK_TREE_MODEL(process_list_)); 572 GTK_TREE_MODEL(process_list_));
592 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_), 573 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_),
593 kTaskManagerTask, 574 kTaskManagerTask,
594 ComparePage, this, NULL); 575 ComparePage, this, NULL);
595 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_), 576 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_),
596 kTaskManagerTask, 577 kTaskManagerTask,
597 CompareProfileName, this, NULL); 578 CompareProfileName, this, NULL);
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
729 fps = GetModelText(row, IDS_TASK_MANAGER_FPS_COLUMN); 710 fps = GetModelText(row, IDS_TASK_MANAGER_FPS_COLUMN);
730 std::string sqlite_memory; 711 std::string sqlite_memory;
731 if (TreeViewColumnIsVisible(treeview_, kTaskManagerSqliteMemoryUsed)) { 712 if (TreeViewColumnIsVisible(treeview_, kTaskManagerSqliteMemoryUsed)) {
732 sqlite_memory = 713 sqlite_memory =
733 GetModelText(row, IDS_TASK_MANAGER_SQLITE_MEMORY_USED_COLUMN); 714 GetModelText(row, IDS_TASK_MANAGER_SQLITE_MEMORY_USED_COLUMN);
734 } 715 }
735 716
736 std::string goats = 717 std::string goats =
737 GetModelText(row, IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN); 718 GetModelText(row, IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN);
738 719
739 bool is_background = model_->IsBackgroundResource(row) &&
740 highlight_background_resources_;
741 gtk_list_store_set(process_list_, iter, 720 gtk_list_store_set(process_list_, iter,
742 kTaskManagerIcon, icon, 721 kTaskManagerIcon, icon,
743 kTaskManagerTask, task_markup, 722 kTaskManagerTask, task_markup,
744 kTaskManagerProfileName, profile_name.c_str(), 723 kTaskManagerProfileName, profile_name.c_str(),
745 kTaskManagerSharedMem, shared_mem.c_str(), 724 kTaskManagerSharedMem, shared_mem.c_str(),
746 kTaskManagerPrivateMem, priv_mem.c_str(), 725 kTaskManagerPrivateMem, priv_mem.c_str(),
747 kTaskManagerCPU, cpu.c_str(), 726 kTaskManagerCPU, cpu.c_str(),
748 kTaskManagerNetwork, net.c_str(), 727 kTaskManagerNetwork, net.c_str(),
749 kTaskManagerProcessID, procid.c_str(), 728 kTaskManagerProcessID, procid.c_str(),
750 kTaskManagerJavaScriptMemory, javascript_memory.c_str(), 729 kTaskManagerJavaScriptMemory, javascript_memory.c_str(),
751 kTaskManagerWebCoreImageCache, wk_img_cache.c_str(), 730 kTaskManagerWebCoreImageCache, wk_img_cache.c_str(),
752 kTaskManagerWebCoreScriptsCache, wk_scripts_cache.c_str(), 731 kTaskManagerWebCoreScriptsCache, wk_scripts_cache.c_str(),
753 kTaskManagerWebCoreCssCache, wk_css_cache.c_str(), 732 kTaskManagerWebCoreCssCache, wk_css_cache.c_str(),
754 kTaskManagerVideoMemory, video_memory.c_str(), 733 kTaskManagerVideoMemory, video_memory.c_str(),
755 kTaskManagerFPS, fps.c_str(), 734 kTaskManagerFPS, fps.c_str(),
756 kTaskManagerSqliteMemoryUsed, sqlite_memory.c_str(), 735 kTaskManagerSqliteMemoryUsed, sqlite_memory.c_str(),
757 kTaskManagerGoatsTeleported, goats.c_str(), 736 kTaskManagerGoatsTeleported, goats.c_str(),
758 kTaskManagerBackgroundColor,
759 is_background ? &kHighlightColor : NULL,
760 -1); 737 -1);
761 g_object_unref(icon); 738 g_object_unref(icon);
762 g_free(task_markup); 739 g_free(task_markup);
763 } 740 }
764 741
765 void TaskManagerGtk::KillSelectedProcesses() { 742 void TaskManagerGtk::KillSelectedProcesses() {
766 GtkTreeSelection* selection = gtk_tree_view_get_selection( 743 GtkTreeSelection* selection = gtk_tree_view_get_selection(
767 GTK_TREE_VIEW(treeview_)); 744 GTK_TREE_VIEW(treeview_));
768 745
769 GtkTreeModel* model; 746 GtkTreeModel* model;
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
962 // is destroyed. The deleted object will receive gtk signals otherwise. 939 // is destroyed. The deleted object will receive gtk signals otherwise.
963 gtk_dialog_response(GTK_DIALOG(dialog_), GTK_RESPONSE_DELETE_EVENT); 940 gtk_dialog_response(GTK_DIALOG(dialog_), GTK_RESPONSE_DELETE_EVENT);
964 } 941 }
965 942
966 return TRUE; 943 return TRUE;
967 } 944 }
968 945
969 namespace chrome { 946 namespace chrome {
970 947
971 // Declared in browser_dialogs.h. 948 // Declared in browser_dialogs.h.
972 void ShowTaskManager(Browser* browser, bool highlight_background_resources) { 949 void ShowTaskManager(Browser* browser) {
973 TaskManagerGtk::Show(highlight_background_resources); 950 TaskManagerGtk::Show();
974 } 951 }
975 952
976 } // namespace chrome 953 } // namespace chrome
OLDNEW
« no previous file with comments | « chrome/browser/ui/gtk/task_manager_gtk.h ('k') | chrome/browser/ui/toolbar/wrench_menu_model.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698