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

Unified Diff: chrome/browser/ui/views/hung_renderer_view.cc

Issue 9187027: Attempt 2 at: Adds a trivial views based table implementation (only supports single (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 11 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 | « no previous file | chrome/browser/ui/views/ssl_client_certificate_selector.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/views/hung_renderer_view.cc
diff --git a/chrome/browser/ui/views/hung_renderer_view.cc b/chrome/browser/ui/views/hung_renderer_view.cc
index 70c4bf54a9305b611280900ef1969d318ed89157..fcd32a6fc9f12ffd9cad025c9671bf2fcd8f2262 100644
--- a/chrome/browser/ui/views/hung_renderer_view.cc
+++ b/chrome/browser/ui/views/hung_renderer_view.cc
@@ -1,13 +1,19 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// 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.
#include "chrome/browser/ui/browser_dialogs.h"
+#if defined(OS_WIN) && !defined(USE_AURA)
+#include <windows.h>
+#endif
+
#include "base/i18n/rtl.h"
#include "base/memory/scoped_vector.h"
+#include "base/process_util.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/favicon/favicon_tab_helper.h"
+#include "chrome/browser/platform_util.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/tab_contents/core_tab_helper.h"
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
@@ -34,6 +40,10 @@
#include "ui/views/window/client_view.h"
#include "ui/views/window/dialog_delegate.h"
+#if defined(USE_AURA)
+#include "ui/aura/window.h"
+#endif
+
class HungRendererDialogView;
using content::WebContents;
@@ -330,17 +340,17 @@ void HungRendererDialogView::ShowForWebContents(WebContents* contents) {
// Don't show the warning unless the foreground window is the frame, or this
// window (but still invisible). If the user has another window or
// application selected, activating ourselves is rude.
- HWND frame_hwnd = GetAncestor(contents->GetNativeView(), GA_ROOT);
- HWND foreground_window = GetForegroundWindow();
- if (foreground_window != frame_hwnd &&
- foreground_window != GetWidget()->GetNativeWindow()) {
+ gfx::NativeView frame_view =
+ platform_util::GetTopLevel(contents->GetNativeView());
+ if (!platform_util::IsWindowActive(frame_view) &&
+ !platform_util::IsWindowActive(GetWidget()->GetNativeWindow())) {
return;
}
if (!GetWidget()->IsActive()) {
gfx::Rect bounds = GetDisplayBounds(contents);
views::Widget* insert_after =
- views::Widget::GetWidgetForNativeView(frame_hwnd);
+ views::Widget::GetWidgetForNativeView(frame_view);
GetWidget()->SetBoundsConstrained(bounds);
if (insert_after)
GetWidget()->StackAboveWidget(insert_after);
@@ -422,13 +432,12 @@ views::View* HungRendererDialogView::GetContentsView() {
void HungRendererDialogView::ButtonPressed(
views::Button* sender, const views::Event& event) {
- if (sender == kill_button_) {
- if (hung_pages_table_model_->GetRenderProcessHost()) {
- // Kill the process.
- TerminateProcess(
- hung_pages_table_model_->GetRenderProcessHost()->GetHandle(),
- content::RESULT_CODE_HUNG);
- }
+ if (sender == kill_button_ &&
+ hung_pages_table_model_->GetRenderProcessHost()) {
+ // Kill the process.
+ base::KillProcess(
+ hung_pages_table_model_->GetRenderProcessHost()->GetHandle(),
+ content::RESULT_CODE_HUNG, false);
}
}
@@ -467,8 +476,6 @@ void HungRendererDialogView::Init() {
hung_pages_table_ = new views::GroupTableView(
hung_pages_table_model_.get(), columns, views::ICON_AND_TEXT, true,
false, true, false);
- hung_pages_table_->SetPreferredSize(
- gfx::Size(kTableViewWidth, kTableViewHeight));
CreateKillButtonView();
@@ -495,14 +502,16 @@ void HungRendererDialogView::Init() {
layout->StartRow(0, double_column_set_id);
layout->SkipColumns(1);
- layout->AddView(hung_pages_table_);
+ layout->AddView(hung_pages_table_->CreateParentIfNecessary(), 1, 1,
+ views::GridLayout::FILL,
+ views::GridLayout::FILL, kTableViewWidth, kTableViewHeight);
initialized_ = true;
}
void HungRendererDialogView::CreateKillButtonView() {
- kill_button_ = new views::NativeTextButton(this, UTF16ToWide(
- l10n_util::GetStringUTF16(IDS_BROWSER_HANGMONITOR_RENDERER_END)));
+ kill_button_ = new views::NativeTextButton(this,
+ l10n_util::GetStringUTF16(IDS_BROWSER_HANGMONITOR_RENDERER_END));
kill_button_container_ = new View;
@@ -525,10 +534,14 @@ void HungRendererDialogView::CreateKillButtonView() {
gfx::Rect HungRendererDialogView::GetDisplayBounds(
WebContents* contents) {
+#if defined(USE_AURA)
+ gfx::Rect contents_bounds(contents->GetNativeView()->GetScreenBounds());
+#elif defined(OS_WIN)
HWND contents_hwnd = contents->GetNativeView();
RECT contents_bounds_rect;
GetWindowRect(contents_hwnd, &contents_bounds_rect);
gfx::Rect contents_bounds(contents_bounds_rect);
+#endif
gfx::Rect window_bounds = GetWidget()->GetWindowScreenBounds();
int window_x = contents_bounds.x() +
« no previous file with comments | « no previous file | chrome/browser/ui/views/ssl_client_certificate_selector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698