// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_UI_HUNG_PLUGIN_TAB_HELPER_H_ #define CHROME_BROWSER_UI_HUNG_PLUGIN_TAB_HELPER_H_ #include <map> #include <memory> #include "base/scoped_multi_source_observation.h" #include "base/timer/timer.h" #include "components/infobars/core/infobar_manager.h" #include "content/public/browser/web_contents_observer.h" #include "content/public/browser/web_contents_user_data.h" namespace base { class FilePath; } // Manages per-tab state with regard to hung plugins. This only handles // Pepper plugins which we know are windowless. Hung NPAPI plugins (which // may have native windows) can not be handled with infobars and have a // separate OS-specific hang monitoring. // // Our job is: // - Pop up an infobar when a plugin is hung. // - Terminate the plugin process if the user so chooses. // - Periodically re-show the hung plugin infobar if the user closes it without // terminating the plugin. // - Hide the infobar if the plugin starts responding again. // - Keep track of all of this for any number of plugins. class HungPluginTabHelper : public content::WebContentsObserver, public infobars::InfoBarManager::Observer, public content::WebContentsUserData<HungPluginTabHelper> { … }; #endif // CHROME_BROWSER_UI_HUNG_PLUGIN_TAB_HELPER_H_