| OLD | NEW |
| 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 // Need to include this before any other file because it defines | 5 // Need to include this before any other file because it defines |
| 6 // IPC_MESSAGE_LOG_ENABLED. We need to use it to define | 6 // IPC_MESSAGE_LOG_ENABLED. We need to use it to define |
| 7 // IPC_MESSAGE_MACROS_LOG_ENABLED so render_messages.h will generate the | 7 // IPC_MESSAGE_MACROS_LOG_ENABLED so render_messages.h will generate the |
| 8 // ViewMsgLog et al. functions. | 8 // ViewMsgLog et al. functions. |
| 9 #include "ipc/ipc_message.h" | 9 #include "ipc/ipc_message.h" |
| 10 | 10 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 kFlagsColumn, | 52 kFlagsColumn, |
| 53 kDispatchColumn, | 53 kDispatchColumn, |
| 54 kProcessColumn, | 54 kProcessColumn, |
| 55 kParamsColumn, | 55 kParamsColumn, |
| 56 }; | 56 }; |
| 57 | 57 |
| 58 // This class registers the browser IPC logger functions with IPC::Logging. | 58 // This class registers the browser IPC logger functions with IPC::Logging. |
| 59 class RegisterLoggerFuncs { | 59 class RegisterLoggerFuncs { |
| 60 public: | 60 public: |
| 61 RegisterLoggerFuncs() { | 61 RegisterLoggerFuncs() { |
| 62 IPC::Logging::SetLoggerFunctions(g_log_function_mapping); | 62 IPC::Logging::set_log_function_map(&g_log_function_mapping); |
| 63 } | 63 } |
| 64 }; | 64 }; |
| 65 | 65 |
| 66 RegisterLoggerFuncs g_register_logger_funcs; | 66 RegisterLoggerFuncs g_register_logger_funcs; |
| 67 | 67 |
| 68 // The singleton dialog box. This is non-NULL when a dialog is active so we | 68 // The singleton dialog box. This is non-NULL when a dialog is active so we |
| 69 // know not to create a new one. | 69 // know not to create a new one. |
| 70 AboutIPCDialog* active_dialog = NULL; | 70 AboutIPCDialog* active_dialog = NULL; |
| 71 | 71 |
| 72 std::set<int> disabled_messages; | 72 std::set<int> disabled_messages; |
| 73 | 73 |
| 74 // Settings dialog ------------------------------------------------------------- | 74 // Settings dialog ------------------------------------------------------------- |
| 75 | 75 |
| 76 bool init_done = false; | 76 bool init_done = false; |
| 77 HWND settings_dialog = NULL; | 77 HWND settings_dialog = NULL; |
| 78 | 78 // Settings. |
| 79 // Settings lists. | 79 CListViewCtrl* messages = NULL; |
| 80 struct Settings { | |
| 81 CListViewCtrl* view; | |
| 82 CListViewCtrl* view_host; | |
| 83 CListViewCtrl* plugin; | |
| 84 CListViewCtrl* plugin_host; | |
| 85 CListViewCtrl* npobject; | |
| 86 CListViewCtrl* plugin_process; | |
| 87 CListViewCtrl* plugin_process_host; | |
| 88 CListViewCtrl* devtools_agent; | |
| 89 CListViewCtrl* devtools_client; | |
| 90 | |
| 91 } settings_views = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; | |
| 92 | |
| 93 void CreateColumn(uint32 start, uint32 end, HWND hwnd, | |
| 94 CListViewCtrl** control) { | |
| 95 DCHECK(*control == NULL); | |
| 96 *control = new CListViewCtrl(hwnd); | |
| 97 CListViewCtrl* control_ptr = *control; | |
| 98 control_ptr->SetViewType(LVS_REPORT); | |
| 99 control_ptr->SetExtendedListViewStyle(LVS_EX_CHECKBOXES); | |
| 100 control_ptr->ModifyStyle(0, LVS_SORTASCENDING | LVS_NOCOLUMNHEADER); | |
| 101 control_ptr->InsertColumn(0, L"id", LVCFMT_LEFT, 230); | |
| 102 | |
| 103 for (uint32 i = start; i < end; i++) { | |
| 104 std::string name; | |
| 105 IPC::Logging::GetMessageText(i, &name, NULL, NULL); | |
| 106 std::wstring wname = UTF8ToWide(name); | |
| 107 | |
| 108 int index = control_ptr->InsertItem( | |
| 109 LVIF_TEXT | LVIF_PARAM, 0, wname.c_str(), 0, 0, 0, i); | |
| 110 | |
| 111 control_ptr->SetItemText(index, 0, wname.c_str()); | |
| 112 | |
| 113 if (disabled_messages.find(i) == disabled_messages.end()) | |
| 114 control_ptr->SetCheckState(index, TRUE); | |
| 115 } | |
| 116 } | |
| 117 | 80 |
| 118 void OnCheck(int id, bool checked) { | 81 void OnCheck(int id, bool checked) { |
| 119 if (!init_done) | 82 if (!init_done) |
| 120 return; | 83 return; |
| 121 | 84 |
| 122 if (checked) | 85 if (checked) |
| 123 disabled_messages.erase(id); | 86 disabled_messages.erase(id); |
| 124 else | 87 else |
| 125 disabled_messages.insert(id); | 88 disabled_messages.insert(id); |
| 126 } | 89 } |
| 127 | 90 |
| 91 void InitDialog(HWND hwnd) { |
| 92 messages = new CListViewCtrl(::GetDlgItem(hwnd, IDC_Messages)); |
| 128 | 93 |
| 129 void CheckButtons(CListViewCtrl* control, bool check) { | 94 messages->SetViewType(LVS_REPORT); |
| 130 int count = control->GetItemCount(); | 95 messages->SetExtendedListViewStyle(LVS_EX_CHECKBOXES); |
| 131 for (int i = 0; i < count; ++i) | 96 messages->ModifyStyle(0, LVS_SORTASCENDING | LVS_NOCOLUMNHEADER); |
| 132 control->SetCheckState(i, check); | 97 messages->InsertColumn(0, L"id", LVCFMT_LEFT, 230); |
| 133 } | |
| 134 | 98 |
| 135 void InitDialog(HWND hwnd) { | 99 LogFunctionMap* log_functions = IPC::Logging::log_function_map(); |
| 136 CreateColumn(ViewStart, ViewEnd, ::GetDlgItem(hwnd, IDC_View), | 100 for (LogFunctionMap::iterator i = log_functions->begin(); |
| 137 &settings_views.view); | 101 i != log_functions->end(); ++i) { |
| 138 CreateColumn(ViewHostStart, ViewHostEnd, ::GetDlgItem(hwnd, IDC_ViewHost), | 102 std::string name; |
| 139 &settings_views.view_host); | 103 (*i->second)(&name, NULL, NULL); |
| 140 CreateColumn(PluginStart, PluginEnd, ::GetDlgItem(hwnd, IDC_Plugin), | 104 if (name.empty()) |
| 141 &settings_views.plugin); | 105 continue; // Will happen if the message file isn't included above. |
| 142 CreateColumn(PluginHostStart, PluginHostEnd, | 106 std::wstring wname = UTF8ToWide(name); |
| 143 ::GetDlgItem(hwnd, IDC_PluginHost), | 107 |
| 144 &settings_views.plugin_host); | 108 int index = messages->InsertItem( |
| 145 CreateColumn(NPObjectStart, NPObjectEnd, ::GetDlgItem(hwnd, IDC_NPObject), | 109 LVIF_TEXT | LVIF_PARAM, 0, wname.c_str(), 0, 0, 0, i->first); |
| 146 &settings_views.npobject); | 110 |
| 147 CreateColumn(PluginProcessStart, PluginProcessEnd, | 111 messages->SetItemText(index, 0, wname.c_str()); |
| 148 ::GetDlgItem(hwnd, IDC_PluginProcess), | 112 |
| 149 &settings_views.plugin_process); | 113 if (disabled_messages.find(i->first) == disabled_messages.end()) |
| 150 CreateColumn(PluginProcessHostStart, PluginProcessHostEnd, | 114 messages->SetCheckState(index, TRUE); |
| 151 ::GetDlgItem(hwnd, IDC_PluginProcessHost), | 115 } |
| 152 &settings_views.plugin_process_host); | 116 |
| 153 CreateColumn(DevToolsAgentStart, DevToolsAgentEnd, | |
| 154 ::GetDlgItem(hwnd, IDC_DevToolsAgent), | |
| 155 &settings_views.devtools_agent); | |
| 156 CreateColumn(DevToolsClientStart, DevToolsClientEnd, | |
| 157 ::GetDlgItem(hwnd, IDC_DevToolsClient), | |
| 158 &settings_views.devtools_client); | |
| 159 init_done = true; | 117 init_done = true; |
| 160 } | 118 } |
| 161 | 119 |
| 162 void CloseDialog() { | 120 void CloseDialog() { |
| 163 delete settings_views.view; | 121 delete messages; |
| 164 delete settings_views.view_host; | 122 messages = NULL; |
| 165 delete settings_views.plugin_host; | |
| 166 delete settings_views.npobject; | |
| 167 delete settings_views.plugin_process; | |
| 168 delete settings_views.plugin_process_host; | |
| 169 delete settings_views.devtools_agent; | |
| 170 delete settings_views.devtools_client; | |
| 171 settings_views.view = NULL; | |
| 172 settings_views.view_host = NULL; | |
| 173 settings_views.plugin = NULL; | |
| 174 settings_views.plugin_host = NULL; | |
| 175 settings_views.npobject = NULL; | |
| 176 settings_views.plugin_process = NULL; | |
| 177 settings_views.plugin_process_host = NULL; | |
| 178 settings_views.devtools_agent = NULL; | |
| 179 settings_views.devtools_client = NULL; | |
| 180 | 123 |
| 181 init_done = false; | 124 init_done = false; |
| 182 | 125 |
| 183 ::DestroyWindow(settings_dialog); | 126 ::DestroyWindow(settings_dialog); |
| 184 settings_dialog = NULL; | 127 settings_dialog = NULL; |
| 185 | 128 |
| 186 /* The old version of this code stored the last settings in the preferences. | 129 /* The old version of this code stored the last settings in the preferences. |
| 187 But with this dialog, there currently isn't an easy way to get the profile | 130 But with this dialog, there currently isn't an easy way to get the profile |
| 188 to asave in the preferences. | 131 to save in the preferences. |
| 189 Profile* current_profile = profile(); | 132 Profile* current_profile = profile(); |
| 190 if (!current_profile) | 133 if (!current_profile) |
| 191 return; | 134 return; |
| 192 PrefService* prefs = current_profile->GetPrefs(); | 135 PrefService* prefs = current_profile->GetPrefs(); |
| 193 if (!prefs->FindPreference(prefs::kIpcDisabledMessages)) | 136 if (!prefs->FindPreference(prefs::kIpcDisabledMessages)) |
| 194 return; | 137 return; |
| 195 ListValue* list = prefs->GetMutableList(prefs::kIpcDisabledMessages); | 138 ListValue* list = prefs->GetMutableList(prefs::kIpcDisabledMessages); |
| 196 list->Clear(); | 139 list->Clear(); |
| 197 for (std::set<int>::const_iterator itr = disabled_messages_.begin(); | 140 for (std::set<int>::const_iterator itr = disabled_messages_.begin(); |
| 198 itr != disabled_messages_.end(); | 141 itr != disabled_messages_.end(); |
| 199 ++itr) { | 142 ++itr) { |
| 200 list->Append(Value::CreateIntegerValue(*itr)); | 143 list->Append(Value::CreateIntegerValue(*itr)); |
| 201 } | 144 } |
| 202 */ | 145 */ |
| 203 } | 146 } |
| 204 | 147 |
| 205 void OnButtonClick(int id) { | 148 void OnButtonClick(int id) { |
| 206 switch (id) { | 149 int count = messages->GetItemCount(); |
| 207 case IDC_ViewAll: | 150 for (int i = 0; i < count; ++i) |
| 208 CheckButtons(settings_views.view, true); | 151 messages->SetCheckState(i, id == IDC_MessagesAll); |
| 209 break; | |
| 210 case IDC_ViewNone: | |
| 211 CheckButtons(settings_views.view, false); | |
| 212 break; | |
| 213 case IDC_ViewHostAll: | |
| 214 CheckButtons(settings_views.view_host, true); | |
| 215 break; | |
| 216 case IDC_ViewHostNone: | |
| 217 CheckButtons(settings_views.view_host, false); | |
| 218 break; | |
| 219 case IDC_PluginAll: | |
| 220 CheckButtons(settings_views.plugin, true); | |
| 221 break; | |
| 222 case IDC_PluginNone: | |
| 223 CheckButtons(settings_views.plugin, false); | |
| 224 break; | |
| 225 case IDC_PluginHostAll: | |
| 226 CheckButtons(settings_views.plugin_host, true); | |
| 227 break; | |
| 228 case IDC_PluginHostNone: | |
| 229 CheckButtons(settings_views.plugin_host, false); | |
| 230 break; | |
| 231 case IDC_NPObjectAll: | |
| 232 CheckButtons(settings_views.npobject, true); | |
| 233 break; | |
| 234 case IDC_NPObjectNone: | |
| 235 CheckButtons(settings_views.npobject, false); | |
| 236 break; | |
| 237 } | |
| 238 } | 152 } |
| 239 | 153 |
| 240 INT_PTR CALLBACK DialogProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { | 154 INT_PTR CALLBACK DialogProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { |
| 241 switch (msg) { | 155 switch (msg) { |
| 242 case WM_INITDIALOG: | 156 case WM_INITDIALOG: |
| 243 InitDialog(hwnd); | 157 InitDialog(hwnd); |
| 244 return FALSE; // Don't set keyboard focus. | 158 return FALSE; // Don't set keyboard focus. |
| 245 case WM_SYSCOMMAND: | 159 case WM_SYSCOMMAND: |
| 246 if (wparam == SC_CLOSE) { | 160 if (wparam == SC_CLOSE) { |
| 247 CloseDialog(); | 161 CloseDialog(); |
| 248 return FALSE; | 162 return FALSE; |
| 249 } | 163 } |
| 250 break; | 164 break; |
| 251 case WM_NOTIFY: { | 165 case WM_NOTIFY: { |
| 252 NMLISTVIEW* info = reinterpret_cast<NM_LISTVIEW*>(lparam); | 166 NMLISTVIEW* info = reinterpret_cast<NM_LISTVIEW*>(lparam); |
| 253 if ((wparam == IDC_View || wparam == IDC_ViewHost || | 167 if (wparam == IDC_Messages && info->hdr.code == LVN_ITEMCHANGED) { |
| 254 wparam == IDC_Plugin || | |
| 255 wparam == IDC_PluginHost || wparam == IDC_NPObject || | |
| 256 wparam == IDC_PluginProcess || wparam == IDC_PluginProcessHost) && | |
| 257 info->hdr.code == LVN_ITEMCHANGED) { | |
| 258 if (info->uChanged & LVIF_STATE) { | 168 if (info->uChanged & LVIF_STATE) { |
| 259 bool checked = (info->uNewState >> 12) == 2; | 169 bool checked = (info->uNewState >> 12) == 2; |
| 260 OnCheck(static_cast<int>(info->lParam), checked); | 170 OnCheck(static_cast<int>(info->lParam), checked); |
| 261 } | 171 } |
| 262 return FALSE; | 172 return FALSE; |
| 263 } | 173 } |
| 264 break; | 174 break; |
| 265 } | 175 } |
| 266 case WM_COMMAND: | 176 case WM_COMMAND: |
| 267 if (HIWORD(wparam) == BN_CLICKED) | 177 if (HIWORD(wparam) == BN_CLICKED) |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 451 } | 361 } |
| 452 track_toggle_->SchedulePaint(); | 362 track_toggle_->SchedulePaint(); |
| 453 } else if (button == clear_button_) { | 363 } else if (button == clear_button_) { |
| 454 message_list_.DeleteAllItems(); | 364 message_list_.DeleteAllItems(); |
| 455 } else if (button == filter_button_) { | 365 } else if (button == filter_button_) { |
| 456 RunSettingsDialog(GetRootView()->GetWidget()->GetNativeView()); | 366 RunSettingsDialog(GetRootView()->GetWidget()->GetNativeView()); |
| 457 } | 367 } |
| 458 } | 368 } |
| 459 | 369 |
| 460 #endif // IPC_MESSAGE_LOG_ENABLED | 370 #endif // IPC_MESSAGE_LOG_ENABLED |
| OLD | NEW |