#include "chrome/browser/ui/hung_plugin_tab_helper.h"
#include <memory>
#include "base/files/file_path.h"
#include "base/functional/bind.h"
#include "base/memory/raw_ptr.h"
#include "base/not_fatal_until.h"
#include "base/process/process.h"
#include "base/ranges/algorithm.h"
#include "build/build_config.h"
#include "chrome/browser/hang_monitor/hang_crash_dump.h"
#include "chrome/browser/plugins/hung_plugin_infobar_delegate.h"
#include "chrome/common/channel_info.h"
#include "components/infobars/content/content_infobar_manager.h"
#include "components/infobars/core/infobar.h"
#include "content/public/browser/browser_child_process_host_iterator.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/child_process_data.h"
#include "content/public/browser/plugin_service.h"
#include "content/public/common/process_type.h"
#include "content/public/common/result_codes.h"
struct HungPluginTabHelper::PluginState { … };
HungPluginTabHelper::PluginState::PluginState(const base::FilePath& path,
const std::u16string& name)
: … { … }
HungPluginTabHelper::~HungPluginTabHelper() = default;
void HungPluginTabHelper::PluginCrashed(const base::FilePath& plugin_path,
base::ProcessId plugin_pid) { … }
void HungPluginTabHelper::PluginHungStatusChanged(
int plugin_child_id,
const base::FilePath& plugin_path,
bool is_hung) { … }
void HungPluginTabHelper::OnInfoBarRemoved(infobars::InfoBar* infobar,
bool animate) { … }
void HungPluginTabHelper::OnManagerShuttingDown(
infobars::InfoBarManager* manager) { … }
void HungPluginTabHelper::KillPlugin(int child_id) { … }
HungPluginTabHelper::HungPluginTabHelper(content::WebContents* contents)
: … { … }
void HungPluginTabHelper::OnReshowTimer(int child_id) { … }
void HungPluginTabHelper::ShowBar(int child_id, PluginState* state) { … }
WEB_CONTENTS_USER_DATA_KEY_IMPL(HungPluginTabHelper);