blob: bc5df33b9f0bc601b3c940455119fa15af8f70a7 [file] [log] [blame]
// Copyright 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 <vector>
#include "base/process/kill.h"
#include "build/build_config.h"
#include "chrome/browser/ui/sad_tab_types.h"
namespace content {
class WebContents;
// Cross-platform interface to show the Sad tab UI.
class SadTab {
enum class Action {
// Factory function to create the platform specific implementations.
static SadTab* Create(content::WebContents* web_contents, SadTabKind kind);
// Returns true if the sad tab should be shown.
static bool ShouldShow(base::TerminationStatus status);
virtual ~SadTab() {}
// Called when the sad tab needs to be reinstalled in its window,
// for example because an inactive tab was activated, or because a tab was
// dragged to a new browser window.
virtual void ReinstallInWebView() {}
// These functions return resource string IDs for UI text. They may be
// different for each sad tab. (Right now, the first sad tab in a session
// suggests reloading and subsequent ones suggest sending feedback.)
int GetTitle();
int GetInfoMessage();
int GetButtonTitle();
int GetHelpLinkTitle();
// Returns the resource string IDs for bullet points or empty vector if no
// bullet points should be displayed.
std::vector<int> GetSubMessages();
// Returns the target of the "Learn more" link. Use it for the context menu
// and to show the URL on hover, but call PerformAction() for regular clicks.
const char* GetHelpLinkURL();
// Virtual for testing.
virtual void RecordFirstPaint();
virtual void PerformAction(Action);
SadTab(content::WebContents* web_contents, SadTabKind kind);
content::WebContents* web_contents() const { return web_contents_; }
content::WebContents* web_contents_;
SadTabKind kind_;
bool show_feedback_button_;
bool recorded_paint_;