#include "chrome/browser/ui/sad_tab.h"
#include <vector>
#include "base/metrics/histogram_macros.h"
#include "base/time/time.h"
#include "build/branding_buildflags.h"
#include "build/build_config.h"
#include "chrome/browser/feedback/show_feedback_page.h"
#include "chrome/browser/net/referrer.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/common/url_constants.h"
#include "chrome/grit/generated_resources.h"
#include "components/strings/grit/components_strings.h"
#include "components/ui_metrics/sadtab_metrics_types.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/navigation_controller.h"
#include "content/public/browser/web_contents.h"
#include "ui/base/l10n/l10n_util.h"
#if BUILDFLAG(IS_CHROMEOS)
#include "chrome/browser/memory/oom_memory_details.h"
#include "chromeos/components/kiosk/kiosk_utils.h"
#endif
namespace {
void RecordEvent(bool feedback, ui_metrics::SadTabEvent event) { … }
constexpr char kCategoryTagCrash[] = …;
bool IsRepeatedlyCrashing() { … }
bool AreOtherTabsOpen() { … }
}
bool SadTab::ShouldShow(base::TerminationStatus status) { … }
int SadTab::GetTitle() { … }
int SadTab::GetErrorCodeFormatString() { … }
int SadTab::GetInfoMessage() { … }
int SadTab::GetButtonTitle() { … }
int SadTab::GetHelpLinkTitle() { … }
const char* SadTab::GetHelpLinkURL() { … }
std::vector<int> SadTab::GetSubMessages() { … }
int SadTab::GetCrashedErrorCode() { … }
void SadTab::RecordFirstPaint() { … }
void SadTab::PerformAction(SadTab::Action action) { … }
SadTab::SadTab(content::WebContents* web_contents, SadTabKind kind)
: … { … }