14a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 24a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 34a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// found in the LICENSE file. 44a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 54a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#ifndef CHROME_BROWSER_UI_VIEWS_SAD_TAB_VIEW_H_ 64a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#define CHROME_BROWSER_UI_VIEWS_SAD_TAB_VIEW_H_ 74a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#pragma once 84a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 94a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "base/basictypes.h" 1072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/gfx/font.h" 114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "views/controls/link.h" 124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "views/view.h" 134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass SkBitmap; 154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass TabContents; 164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/////////////////////////////////////////////////////////////////////////////// 184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// 194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// SadTabView 204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// 214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// A views::View subclass used to render the presentation of the crashed 224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// "sad tab" in the browser window when a renderer is destroyed unnaturally. 234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// 244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch/////////////////////////////////////////////////////////////////////////////// 254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass SadTabView : public views::View, 264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public views::LinkController { 274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public: 2872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen enum Kind { 2972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen CRASHED, // The tab crashed. Display the "Aw, Snap!" page. 3072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen KILLED // The tab was killed. Display the killed tab page. 3172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen }; 3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 3372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen explicit SadTabView(TabContents* tab_contents, Kind kind); 34dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual ~SadTabView(); 354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Overridden from views::View: 37dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void OnPaint(gfx::Canvas* canvas); 384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void Layout(); 394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Overridden from views::LinkController: 414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void LinkActivated(views::Link* source, int event_flags); 424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch private: 4472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen static void InitClass(Kind kind); 454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Assorted resources for display. 474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch static SkBitmap* sad_tab_bitmap_; 484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch static gfx::Font* title_font_; 494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch static gfx::Font* message_font_; 504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch static std::wstring title_; 514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch static std::wstring message_; 524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch static int title_width_; 534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch TabContents* tab_contents_; 554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Link* learn_more_link_; 564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Regions within the display for different components, populated by 584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Layout(). 594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch gfx::Rect icon_bounds_; 604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch gfx::Rect title_bounds_; 614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch gfx::Rect message_bounds_; 624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch gfx::Rect link_bounds_; 634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 6472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen Kind kind_; 6572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch DISALLOW_COPY_AND_ASSIGN(SadTabView); 674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}; 684a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 694a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif // CHROME_BROWSER_UI_VIEWS_SAD_TAB_VIEW_H__ 70