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

Unified Diff: chrome/browser/resource_coordinator/resource_coordinator_web_contents_observer.cc

Issue 2925123002: NOCOMMIT PROTOTYPE [GRC] Tab CPU Usage Observer (Closed)
Patch Set: Rebase Created 3 years, 6 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/resource_coordinator/resource_coordinator_web_contents_observer.cc
diff --git a/chrome/browser/resource_coordinator/resource_coordinator_web_contents_observer.cc b/chrome/browser/resource_coordinator/resource_coordinator_web_contents_observer.cc
index 62d5c11edb6d276be915cdf0ed390c7b5add2efa..15b752a901880bbf6eb99644bb20d6b7694036a4 100644
--- a/chrome/browser/resource_coordinator/resource_coordinator_web_contents_observer.cc
+++ b/chrome/browser/resource_coordinator/resource_coordinator_web_contents_observer.cc
@@ -9,6 +9,7 @@
#include "content/public/browser/render_process_host.h"
#include "content/public/common/service_manager_connection.h"
#include "services/resource_coordinator/public/cpp/resource_coordinator_features.h"
+#include "services/resource_coordinator/public/interfaces/coordination_unit.mojom.h"
DEFINE_WEB_CONTENTS_USER_DATA_KEY(ResourceCoordinatorWebContentsObserver);
@@ -51,9 +52,60 @@ void ResourceCoordinatorWebContentsObserver::DidFinishNavigation(
auto* frame_resource_coordinator =
render_frame_host->GetFrameResourceCoordinator();
+
tab_resource_coordinator_->AddChild(*frame_resource_coordinator);
+ content::RenderFrameHost* parent_frame_host = render_frame_host->GetParent();
+ if (parent_frame_host) {
+ auto* parent_frame_resource_coordinator =
+ parent_frame_host->GetFrameResourceCoordinator();
+ parent_frame_resource_coordinator->AddChild(*frame_resource_coordinator);
+ }
+
auto* process_resource_coordinator =
render_frame_host->GetProcess()->GetProcessResourceCoordinator();
process_resource_coordinator->AddChild(*frame_resource_coordinator);
+
+ if (navigation_handle->IsInMainFrame()) {
+ base::Value url_value = base::Value(navigation_handle->GetURL().spec());
+ tab_resource_coordinator_->SetProperty(
+ resource_coordinator::mojom::PropertyType::kTabURL, url_value);
+ }
+}
+
+void ResourceCoordinatorWebContentsObserver::RemoveFrameFromParents(
+ content::RenderFrameHost* render_frame_host) {
+ auto* frame_resource_coordinator =
+ render_frame_host->GetFrameResourceCoordinator();
+
+ tab_resource_coordinator_->RemoveChild(*frame_resource_coordinator);
+
+ content::RenderFrameHost* parent_frame_host = render_frame_host->GetParent();
+ if (parent_frame_host) {
+ auto* parent_frame_resource_coordinator =
+ parent_frame_host->GetFrameResourceCoordinator();
+ parent_frame_resource_coordinator->RemoveChild(*frame_resource_coordinator);
+ }
+
+ auto* process_resource_coordinator =
+ render_frame_host->GetProcess()->GetProcessResourceCoordinator();
+ process_resource_coordinator->RemoveChild(*frame_resource_coordinator);
+}
+
+void ResourceCoordinatorWebContentsObserver::RenderFrameDeleted(
+ content::RenderFrameHost* render_frame_host) {
+ RemoveFrameFromParents(render_frame_host);
+}
+
+void ResourceCoordinatorWebContentsObserver::RenderFrameHostChanged(
+ content::RenderFrameHost* old_host,
+ content::RenderFrameHost* new_host) {
+ if (old_host) {
+ RemoveFrameFromParents(old_host);
+ }
+}
+
+void ResourceCoordinatorWebContentsObserver::FrameDeleted(
+ content::RenderFrameHost* render_frame_host) {
+ RemoveFrameFromParents(render_frame_host);
}

Powered by Google App Engine
This is Rietveld 408576698