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

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

Issue 2427423003: Fix incorrect DCHECK in task manager's WebContentsEntry. (Closed)
Patch Set: Add test Created 3 years, 8 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_manager/providers/web_contents/web_contents_task_provider.cc
diff --git a/chrome/browser/task_manager/providers/web_contents/web_contents_task_provider.cc b/chrome/browser/task_manager/providers/web_contents/web_contents_task_provider.cc
index 98284767b575d8e5a8d0a1d58f220a3fe55178e6..43dd6ece4ffa9838c37835fdbea1597e6e8b1404 100644
--- a/chrome/browser/task_manager/providers/web_contents/web_contents_task_provider.cc
+++ b/chrome/browser/task_manager/providers/web_contents/web_contents_task_provider.cc
@@ -8,6 +8,7 @@
#include "base/macros.h"
#include "chrome/browser/task_manager/providers/web_contents/subframe_task.h"
#include "chrome/browser/task_manager/providers/web_contents/web_contents_tags_manager.h"
+#include "content/public/browser/navigation_handle.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"
@@ -161,18 +162,27 @@ void WebContentsEntry::RenderProcessGone(base::TerminationStatus status) {
void WebContentsEntry::OnRendererUnresponsive(
RenderWidgetHost* render_widget_host) {
- RendererTask* task = GetTaskForFrame(web_contents()->GetMainFrame());
+ // Find the first RenderFrameHost matching the RenderWidgetHost.
+ RendererTask* task = nullptr;
+ for (const auto& pair : tasks_by_frames_) {
+ if (pair.first->GetView() == render_widget_host->GetView()) {
+ DCHECK_EQ(pair.first->GetProcess(), render_widget_host->GetProcess());
+ task = pair.second;
+ break;
+ }
+ }
if (!task)
return;
- DCHECK_EQ(render_widget_host->GetProcess(),
- web_contents()->GetMainFrame()->GetProcess());
-
provider_->NotifyObserverTaskUnresponsive(task);
}
void WebContentsEntry::DidFinishNavigation(
content::NavigationHandle* navigation_handle) {
+ // We only need to update tasks for main frame navigations.
+ if (!navigation_handle->IsInMainFrame())
+ return;
+
RendererTask* main_frame_task =
GetTaskForFrame(web_contents()->GetMainFrame());
if (!main_frame_task)

Powered by Google App Engine
This is Rietveld 408576698