Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Unified Diff: chrome/browser/task_management/providers/web_contents/web_contents_task_provider.cc

Issue 1584473004: Migrate ProcessesEventRouter to the new task manager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix nit. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/task_management/providers/web_contents/web_contents_task_provider.cc
diff --git a/chrome/browser/task_management/providers/web_contents/web_contents_task_provider.cc b/chrome/browser/task_management/providers/web_contents/web_contents_task_provider.cc
index a80a9e57f18eb43b2ce65924ca100309781e50fb..3035ef420857faf49e4e1c4b5bffce1c664bdac7 100644
--- a/chrome/browser/task_management/providers/web_contents/web_contents_task_provider.cc
+++ b/chrome/browser/task_management/providers/web_contents/web_contents_task_provider.cc
@@ -11,10 +11,12 @@
#include "chrome/browser/task_management/providers/web_contents/web_contents_tags_manager.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
+#include "content/public/browser/render_widget_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_observer.h"
using content::RenderFrameHost;
+using content::RenderWidgetHost;
using content::SiteInstance;
using content::WebContents;
@@ -52,6 +54,7 @@ class WebContentsEntry : public content::WebContentsObserver {
void RenderViewReady() override;
void WebContentsDestroyed() override;
void RenderProcessGone(base::TerminationStatus status) override;
+ void OnRendererUnresponsive(RenderWidgetHost* render_widget_host) override;
void DidNavigateMainFrame(
const content::LoadCommittedDetails& details,
const content::FrameNavigateParams& params) override;
@@ -113,6 +116,10 @@ void WebContentsEntry::ClearAllTasks(bool notify_observer) {
FramesList& frames_list = pair.second;
DCHECK(!frames_list.empty());
RendererTask* task = tasks_by_frames_[frames_list[0]];
+
+ task->set_termination_status(web_contents()->GetCrashedStatus());
+ task->set_termination_error_code(web_contents()->GetCrashedErrorCode());
+
if (notify_observer)
provider_->NotifyObserverTaskRemoved(task);
delete task;
@@ -156,6 +163,18 @@ void WebContentsEntry::RenderProcessGone(base::TerminationStatus status) {
ClearAllTasks(true);
}
+void WebContentsEntry::OnRendererUnresponsive(
+ RenderWidgetHost* render_widget_host) {
+ auto itr = tasks_by_frames_.find(web_contents()->GetMainFrame());
+ if (itr == tasks_by_frames_.end())
+ return;
+
+ DCHECK_EQ(render_widget_host->GetProcess(),
+ web_contents()->GetMainFrame()->GetProcess());
+
+ provider_->NotifyObserverTaskUnresponsive(itr->second);
+}
+
void WebContentsEntry::DidNavigateMainFrame(
const content::LoadCommittedDetails& details,
const content::FrameNavigateParams& params) {

Powered by Google App Engine
This is Rietveld 408576698