| OLD | NEW |
| 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/views/hung_renderer_view.h" | 5 #include "chrome/browser/ui/views/hung_renderer_view.h" |
| 6 | 6 |
| 7 #include "base/i18n/rtl.h" | 7 #include "base/i18n/rtl.h" |
| 8 #include "base/memory/scoped_vector.h" | 8 #include "base/memory/scoped_vector.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "chrome/browser/favicon/favicon_tab_helper.h" | 10 #include "chrome/browser/favicon/favicon_tab_helper.h" |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 | 189 |
| 190 // static | 190 // static |
| 191 bool HungRendererDialogView::IsFrameActive(WebContents* contents) { | 191 bool HungRendererDialogView::IsFrameActive(WebContents* contents) { |
| 192 gfx::NativeView frame_view = | 192 gfx::NativeView frame_view = |
| 193 platform_util::GetTopLevel(contents->GetNativeView()); | 193 platform_util::GetTopLevel(contents->GetNativeView()); |
| 194 return platform_util::IsWindowActive(frame_view); | 194 return platform_util::IsWindowActive(frame_view); |
| 195 } | 195 } |
| 196 | 196 |
| 197 // static | 197 // static |
| 198 void HungRendererDialogView::KillRendererProcess( | 198 void HungRendererDialogView::KillRendererProcess( |
| 199 base::ProcessHandle process_handle) { | 199 content::RenderProcessHost* rph) { |
| 200 #if defined(OS_WIN) | 200 #if defined(OS_WIN) |
| 201 // Try to generate a crash report for the hung process. | 201 // Try to generate a crash report for the hung process. |
| 202 CrashDumpAndTerminateHungChildProcess(process_handle); | 202 CrashDumpAndTerminateHungChildProcess(rph->GetHandle()); |
| 203 #else | 203 #else |
| 204 base::KillProcess(process_handle, content::RESULT_CODE_HUNG, false); | 204 rph->Shutdown(content::RESULT_CODE_HUNG, false); |
| 205 #endif | 205 #endif |
| 206 } | 206 } |
| 207 | 207 |
| 208 | 208 |
| 209 HungRendererDialogView::HungRendererDialogView() | 209 HungRendererDialogView::HungRendererDialogView() |
| 210 : hung_pages_table_(NULL), | 210 : hung_pages_table_(NULL), |
| 211 kill_button_(NULL), | 211 kill_button_(NULL), |
| 212 initialized_(false) { | 212 initialized_(false) { |
| 213 InitClass(); | 213 InitClass(); |
| 214 } | 214 } |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 335 #endif | 335 #endif |
| 336 } | 336 } |
| 337 | 337 |
| 338 /////////////////////////////////////////////////////////////////////////////// | 338 /////////////////////////////////////////////////////////////////////////////// |
| 339 // HungRendererDialogView, views::ButtonListener implementation: | 339 // HungRendererDialogView, views::ButtonListener implementation: |
| 340 | 340 |
| 341 void HungRendererDialogView::ButtonPressed( | 341 void HungRendererDialogView::ButtonPressed( |
| 342 views::Button* sender, const ui::Event& event) { | 342 views::Button* sender, const ui::Event& event) { |
| 343 if (sender == kill_button_ && | 343 if (sender == kill_button_ && |
| 344 hung_pages_table_model_->GetRenderProcessHost()) { | 344 hung_pages_table_model_->GetRenderProcessHost()) { |
| 345 base::ProcessHandle process_handle = | 345 KillRendererProcess(hung_pages_table_model_->GetRenderProcessHost()); |
| 346 hung_pages_table_model_->GetRenderProcessHost()->GetHandle(); | |
| 347 | |
| 348 KillRendererProcess(process_handle); | |
| 349 } | 346 } |
| 350 } | 347 } |
| 351 | 348 |
| 352 /////////////////////////////////////////////////////////////////////////////// | 349 /////////////////////////////////////////////////////////////////////////////// |
| 353 // HungRendererDialogView, HungPagesTableModel::Delegate overrides: | 350 // HungRendererDialogView, HungPagesTableModel::Delegate overrides: |
| 354 | 351 |
| 355 void HungRendererDialogView::TabDestroyed() { | 352 void HungRendererDialogView::TabDestroyed() { |
| 356 GetWidget()->Close(); | 353 GetWidget()->Close(); |
| 357 } | 354 } |
| 358 | 355 |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 443 HungRendererDialogView* view = HungRendererDialogView::Create(toplevel_view); | 440 HungRendererDialogView* view = HungRendererDialogView::Create(toplevel_view); |
| 444 view->ShowForWebContents(contents); | 441 view->ShowForWebContents(contents); |
| 445 } | 442 } |
| 446 | 443 |
| 447 void HideHungRendererDialog(WebContents* contents) { | 444 void HideHungRendererDialog(WebContents* contents) { |
| 448 if (!logging::DialogsAreSuppressed() && HungRendererDialogView::GetInstance()) | 445 if (!logging::DialogsAreSuppressed() && HungRendererDialogView::GetInstance()) |
| 449 HungRendererDialogView::GetInstance()->EndForWebContents(contents); | 446 HungRendererDialogView::GetInstance()->EndForWebContents(contents); |
| 450 } | 447 } |
| 451 | 448 |
| 452 } // namespace chrome | 449 } // namespace chrome |
| OLD | NEW |