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

Unified Diff: chrome/browser/data_use_measurement/data_use_web_contents_observer.cc

Issue 2285903002: Framework to ascribe all network data use to a source. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments Created 4 years, 3 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/data_use_measurement/data_use_web_contents_observer.cc
diff --git a/chrome/browser/data_use_measurement/data_use_web_contents_observer.cc b/chrome/browser/data_use_measurement/data_use_web_contents_observer.cc
new file mode 100644
index 0000000000000000000000000000000000000000..ceead7bd6475984574dc660c372a42dab1afd4c9
--- /dev/null
+++ b/chrome/browser/data_use_measurement/data_use_web_contents_observer.cc
@@ -0,0 +1,67 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/data_use_measurement/data_use_web_contents_observer.h"
+
+#include "chrome/browser/data_use_measurement/chrome_data_use_ascriber_service.h"
+#include "content/public/browser/navigation_handle.h"
+#include "content/public/browser/render_frame_host.h"
+
+DEFINE_WEB_CONTENTS_USER_DATA_KEY(
+ data_use_measurement::DataUseWebContentsObserver);
+
+namespace data_use_measurement {
+
+// static
+void DataUseWebContentsObserver::CreateForWebContents(
+ content::WebContents* web_contents,
+ ChromeDataUseAscriberService* service) {
+ DCHECK(web_contents);
+ // Nothing to do if there is no service (Incognito), or if instance already
+ // exists.
+ if (!service || FromWebContents(web_contents))
+ return;
+
+ // |DataUseWebContentsObserver| is a |WebContentsUserData| so its lifetime
+ // is scoped to |web_contents|.
+ // |ChromeDataUseAscriberService| is a |KeyedService| and its lifetime is
+ // tied to a profile. Since profiles outlive |WebContents|, |service| will
+ // outlive |DataUseWebContentsObserver|.
+ web_contents->SetUserData(
+ UserDataKey(), new DataUseWebContentsObserver(web_contents, service));
+}
+
+DataUseWebContentsObserver::DataUseWebContentsObserver(
+ content::WebContents* web_contents,
+ ChromeDataUseAscriberService* service)
+ : content::WebContentsObserver(web_contents), service_(service) {}
+
+DataUseWebContentsObserver::~DataUseWebContentsObserver() {}
+
+void DataUseWebContentsObserver::RenderFrameCreated(
+ content::RenderFrameHost* render_frame_host) {
+ service_->RenderFrameCreated(render_frame_host);
+}
+
+void DataUseWebContentsObserver::RenderFrameDeleted(
+ content::RenderFrameHost* render_frame_host) {
+ service_->RenderFrameDeleted(render_frame_host);
+}
+
+void DataUseWebContentsObserver::DidStartNavigation(
+ content::NavigationHandle* navigation_handle) {
+ service_->DidStartNavigation(navigation_handle);
+}
+
+void DataUseWebContentsObserver::DidFinishNavigation(
+ content::NavigationHandle* navigation_handle) {
+ service_->DidFinishNavigation(navigation_handle);
+}
+
+void DataUseWebContentsObserver::DidRedirectNavigation(
+ content::NavigationHandle* navigation_handle) {
+ service_->DidRedirectNavigation(navigation_handle);
+}
+
+} // namespace data_use_measurement

Powered by Google App Engine
This is Rietveld 408576698