Merge pull request #1668 from deepak1556/carsh_events_patch

webContents: adding events to detect gpu and plugin process crashes
This commit is contained in:
Cheng Zhao 2015-05-20 17:51:06 +08:00
commit 9b445c27a2
6 changed files with 49 additions and 1 deletions

View file

@ -24,6 +24,7 @@
#include "content/public/browser/favicon_status.h"
#include "content/public/browser/navigation_details.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/plugin_service.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
@ -223,6 +224,19 @@ void WebContents::RenderProcessGone(base::TerminationStatus status) {
Emit("crashed");
}
void WebContents::PluginCrashed(const base::FilePath& plugin_path,
base::ProcessId plugin_pid) {
content::WebPluginInfo info;
auto plugin_service = content::PluginService::GetInstance();
plugin_service->GetPluginInfoByPath(plugin_path, &info);
Emit("plugin-crashed", info.name, info.version);
}
void WebContents::OnGpuProcessCrashed(base::TerminationStatus exit_code) {
if (exit_code == base::TERMINATION_STATUS_PROCESS_CRASHED)
Emit("gpu-crashed");
}
void WebContents::DocumentLoadedInFrame(
content::RenderFrameHost* render_frame_host) {
if (!render_frame_host->GetParent())

View file

@ -14,6 +14,7 @@
#include "content/public/common/favicon_url.h"
#include "content/public/browser/web_contents_delegate.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/gpu_data_manager_observer.h"
#include "native_mate/handle.h"
#include "ui/gfx/image/image.h"
@ -35,7 +36,8 @@ namespace api {
class WebContents : public mate::EventEmitter,
public content::BrowserPluginGuestDelegate,
public content::WebContentsDelegate,
public content::WebContentsObserver {
public content::WebContentsObserver,
public content::GpuDataManagerObserver {
public:
// Create from an existing WebContents.
static mate::Handle<WebContents> CreateFrom(
@ -182,6 +184,8 @@ class WebContents : public mate::EventEmitter,
void TitleWasSet(content::NavigationEntry* entry, bool explicit_set) override;
void DidUpdateFaviconURL(
const std::vector<content::FaviconURL>& urls) override;
void PluginCrashed(const base::FilePath& plugin_path,
base::ProcessId plugin_pid) override;
// content::BrowserPluginGuestDelegate:
void DidAttach(int guest_proxy_routing_id) final;
@ -194,6 +198,9 @@ class WebContents : public mate::EventEmitter,
int element_instance_id,
bool is_full_page_plugin) final;
// content::GpuDataManagerObserver:
void OnGpuProcessCrashed(base::TerminationStatus exit_code) override;
private:
// Called when received a message from renderer.
void OnRendererMessage(const base::string16& channel,

View file

@ -15,6 +15,8 @@ supportedWebViewEvents = [
'new-window'
'close'
'crashed'
'gpu-crashed'
'plugin-crashed'
'destroyed'
'page-title-set'
'page-favicon-updated'

View file

@ -17,6 +17,8 @@ WEB_VIEW_EVENTS =
'new-window': ['url', 'frameName', 'disposition']
'close': []
'crashed': []
'gpu-crashed': []
'plugin-crashed': ['name', 'version']
'destroyed': []
'page-title-set': ['title', 'explicitSet']
'page-favicon-updated': ['favicons']

View file

@ -724,6 +724,18 @@ Calling `event.preventDefault()` can prevent the navigation.
Emitted when the renderer process is crashed.
### Event: 'gpu-crashed'
Emitted when the gpu process is crashed.
### Event: 'plugin-crashed'
* `event` Event
* `name` String
* `version` String
Emitted when a plugin process is crashed.
### Event: 'destroyed'
Emitted when the WebContents is destroyed.

View file

@ -434,6 +434,17 @@ ipc.on('ping', function() {
Fired when the renderer process is crashed.
### gpu-crashed
Fired when the gpu process is crashed.
### plugin-crashed
* `name` String
* `version` String
Fired when a plugin process is crashed.
### destroyed
Fired when the WebContents is destroyed.