Report the right render view that is deleted.

This commit is contained in:
Cheng Zhao 2013-12-06 15:53:40 +08:00
parent 844fccc177
commit 085b1a45ee
5 changed files with 17 additions and 9 deletions

View file

@ -76,8 +76,11 @@ void Window::OnRendererResponsive() {
Emit("responsive"); Emit("responsive");
} }
void Window::OnRenderViewDeleted() { void Window::OnRenderViewDeleted(int process_id, int routing_id) {
Emit("render-view-deleted"); base::ListValue args;
args.AppendInteger(process_id);
args.AppendInteger(routing_id);
Emit("render-view-deleted", &args);
} }
void Window::OnRendererCrashed() { void Window::OnRendererCrashed() {

View file

@ -43,7 +43,7 @@ class Window : public EventEmitter,
virtual void OnWindowBlur() OVERRIDE; virtual void OnWindowBlur() OVERRIDE;
virtual void OnRendererUnresponsive() OVERRIDE; virtual void OnRendererUnresponsive() OVERRIDE;
virtual void OnRendererResponsive() OVERRIDE; virtual void OnRendererResponsive() OVERRIDE;
virtual void OnRenderViewDeleted() OVERRIDE; virtual void OnRenderViewDeleted(int process_id, int routing_id) OVERRIDE;
virtual void OnRendererCrashed() OVERRIDE; virtual void OnRendererCrashed() OVERRIDE;
private: private:

View file

@ -13,8 +13,8 @@ BrowserWindow::_init = ->
# Tell the rpc server that a render view has been deleted and we need to # Tell the rpc server that a render view has been deleted and we need to
# release all objects owned by it. # release all objects owned by it.
@on 'render-view-deleted', -> @on 'render-view-deleted', (event, processId, routingId) ->
process.emit 'ATOM_BROWSER_RELEASE_RENDER_VIEW', @getProcessId(), @getRoutingId() process.emit 'ATOM_BROWSER_RELEASE_RENDER_VIEW', processId, routingId
BrowserWindow::toggleDevTools = -> BrowserWindow::toggleDevTools = ->
if @isDevToolsOpened() then @closeDevTools() else @openDevTools() if @isDevToolsOpened() then @closeDevTools() else @openDevTools()

View file

@ -271,7 +271,10 @@ void NativeWindow::NotifyWindowClosed() {
// The OnRenderViewDeleted is not called when the WebContents is destroyed // The OnRenderViewDeleted is not called when the WebContents is destroyed
// directly (e.g. when closing the window), so we make sure it's always // directly (e.g. when closing the window), so we make sure it's always
// emitted to users by sending it before window is closed.. // emitted to users by sending it before window is closed..
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnRenderViewDeleted()); FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
OnRenderViewDeleted(
GetWebContents()->GetRenderProcessHost()->GetID(),
GetWebContents()->GetRoutingID()));
is_closed_ = true; is_closed_ = true;
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowClosed()); FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowClosed());
@ -398,8 +401,10 @@ bool NativeWindow::OnMessageReceived(const IPC::Message& message) {
return handled; return handled;
} }
void NativeWindow::RenderViewDeleted(content::RenderViewHost*) { void NativeWindow::RenderViewDeleted(content::RenderViewHost* rvh) {
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnRenderViewDeleted()); FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
OnRenderViewDeleted(rvh->GetProcess()->GetID(),
rvh->GetRoutingID()));
} }
void NativeWindow::RenderViewGone(base::TerminationStatus status) { void NativeWindow::RenderViewGone(base::TerminationStatus status) {

View file

@ -36,7 +36,7 @@ class NativeWindowObserver {
virtual void OnRendererResponsive() {} virtual void OnRendererResponsive() {}
// Called when a render view has been deleted. // Called when a render view has been deleted.
virtual void OnRenderViewDeleted() {} virtual void OnRenderViewDeleted(int process_id, int routing_id) {}
// Called when renderer has crashed. // Called when renderer has crashed.
virtual void OnRendererCrashed() {} virtual void OnRendererCrashed() {}