| Index: chrome/browser/data_use_measurement/chrome_data_use_ascriber.h
|
| diff --git a/chrome/browser/data_use_measurement/chrome_data_use_ascriber.h b/chrome/browser/data_use_measurement/chrome_data_use_ascriber.h
|
| index e926ebf3cc9494cb8aaac758b7ac0dcae08559eb..2ce46c3d69a3d8e96e1b31a2b548fd79b14cec02 100644
|
| --- a/chrome/browser/data_use_measurement/chrome_data_use_ascriber.h
|
| +++ b/chrome/browser/data_use_measurement/chrome_data_use_ascriber.h
|
| @@ -7,6 +7,8 @@
|
|
|
| #include <list>
|
| #include <memory>
|
| +#include <string>
|
| +#include <tuple>
|
| #include <unordered_map>
|
| #include <utility>
|
|
|
| @@ -14,6 +16,7 @@
|
| #include "base/hash.h"
|
| #include "base/macros.h"
|
| #include "base/supports_user_data.h"
|
| +#include "chrome/browser/data_use_measurement/chrome_data_use_recorder.h"
|
| #include "components/data_use_measurement/core/data_use_ascriber.h"
|
| #include "content/public/browser/global_request_id.h"
|
| #include "url/gurl.h"
|
| @@ -52,14 +55,10 @@ class ChromeDataUseAscriber : public DataUseAscriber {
|
| ~ChromeDataUseAscriber() override;
|
|
|
| // DataUseAscriber implementation:
|
| - DataUseRecorder* GetDataUseRecorder(net::URLRequest* request) override;
|
| -
|
| - // Called before a request is sent.
|
| + ChromeDataUseRecorder* GetDataUseRecorder(net::URLRequest* request,
|
| + bool can_create_new) override;
|
| void OnBeforeUrlRequest(net::URLRequest* request) override;
|
| -
|
| - // Called when a URLRequest is being destroyed.
|
| void OnUrlRequestDestroyed(net::URLRequest* request) override;
|
| -
|
| std::unique_ptr<URLRequestClassifier> CreateURLRequestClassifier()
|
| const override;
|
|
|
| @@ -91,21 +90,14 @@ class ChromeDataUseAscriber : public DataUseAscriber {
|
| bool is_same_page_navigation,
|
| void* navigation_handle);
|
|
|
| - // Called when a main frame navigation is redirected.
|
| - void DidRedirectMainFrameNavigation(GURL gurl,
|
| - int render_process_id,
|
| - int render_frame_id,
|
| - void* navigation_handle);
|
|
|
| private:
|
| - // Use as a key in the render frame map. Corresponds to a unique
|
| - // RenderFrameHost.
|
| - typedef std::pair<int, int> RenderFrameHostID;
|
| + friend class ChromeDataUseAscriberTest;
|
|
|
| // Entry in the |data_use_recorders_| list which owns all instances of
|
| // DataUseRecorder.
|
| - typedef std::list<std::unique_ptr<data_use_measurement::DataUseRecorder>>::
|
| - iterator DataUseRecorderEntry;
|
| + typedef std::list<ChromeDataUseRecorder> DataUseRecorderList;
|
| + typedef DataUseRecorderList::iterator DataUseRecorderEntry;
|
|
|
| struct GlobalRequestIDHash {
|
| public:
|
| @@ -128,13 +120,22 @@ class ChromeDataUseAscriber : public DataUseAscriber {
|
| DataUseRecorderEntry entry_;
|
| };
|
|
|
| - void DeletePendingNavigationEntry(content::GlobalRequestID global_request_id);
|
| + DataUseRecorderEntry GetDataUseRecorderEntry(net::URLRequest* request,
|
| + bool can_create_new);
|
| +
|
| + void OnDataUseCompleted(DataUseRecorderEntry entry);
|
| +
|
| + DataUseRecorderEntry CreateNewDataUseRecorder(net::URLRequest* request);
|
| +
|
| + bool IsRecorderInPendingNavigationMap(net::URLRequest* request);
|
| +
|
| + bool IsRecorderInRenderFrameMap(net::URLRequest* request);
|
|
|
| // Owner for all instances of DataUseRecorder. An instance is kept in this
|
| // list if any entity (render frame hosts, URLRequests, pending navigations)
|
| // that ascribe data use to the instance exists, and deleted when all
|
| // ascribing entities go away.
|
| - std::list<std::unique_ptr<DataUseRecorder>> data_use_recorders_;
|
| + DataUseRecorderList data_use_recorders_;
|
|
|
| // Map from RenderFrameHost to the DataUseRecorderEntry in
|
| // |data_use_recorders_| that the frame ascribe data use to.
|
|
|