Home | History | Annotate | Download | only in views
      1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_UI_VIEWS_SAD_TAB_VIEW_H_
      6 #define CHROME_BROWSER_UI_VIEWS_SAD_TAB_VIEW_H_
      7 #pragma once
      8 
      9 #include "base/basictypes.h"
     10 #include "ui/gfx/font.h"
     11 #include "views/controls/link.h"
     12 #include "views/view.h"
     13 
     14 class SkBitmap;
     15 class TabContents;
     16 
     17 ///////////////////////////////////////////////////////////////////////////////
     18 //
     19 // SadTabView
     20 //
     21 //  A views::View subclass used to render the presentation of the crashed
     22 //  "sad tab" in the browser window when a renderer is destroyed unnaturally.
     23 //
     24 ///////////////////////////////////////////////////////////////////////////////
     25 class SadTabView : public views::View,
     26                    public views::LinkController {
     27  public:
     28   enum Kind {
     29     CRASHED,  // The tab crashed.  Display the "Aw, Snap!" page.
     30     KILLED    // The tab was killed.  Display the killed tab page.
     31   };
     32 
     33   explicit SadTabView(TabContents* tab_contents, Kind kind);
     34   virtual ~SadTabView();
     35 
     36   // Overridden from views::View:
     37   virtual void OnPaint(gfx::Canvas* canvas);
     38   virtual void Layout();
     39 
     40   // Overridden from views::LinkController:
     41   virtual void LinkActivated(views::Link* source, int event_flags);
     42 
     43  private:
     44   static void InitClass(Kind kind);
     45 
     46   // Assorted resources for display.
     47   static SkBitmap* sad_tab_bitmap_;
     48   static gfx::Font* title_font_;
     49   static gfx::Font* message_font_;
     50   static std::wstring title_;
     51   static std::wstring message_;
     52   static int title_width_;
     53 
     54   TabContents* tab_contents_;
     55   views::Link* learn_more_link_;
     56 
     57   // Regions within the display for different components, populated by
     58   // Layout().
     59   gfx::Rect icon_bounds_;
     60   gfx::Rect title_bounds_;
     61   gfx::Rect message_bounds_;
     62   gfx::Rect link_bounds_;
     63 
     64   Kind kind_;
     65 
     66   DISALLOW_COPY_AND_ASSIGN(SadTabView);
     67 };
     68 
     69 #endif  // CHROME_BROWSER_UI_VIEWS_SAD_TAB_VIEW_H__
     70