| Index: chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer.h
 | 
| diff --git a/chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer.h b/chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer.h
 | 
| index 1ee7c0728b1d2c582ac7336f67b2231dea648a6b..c45cf79b0de0726298a724477fcbfdb2b207b90e 100644
 | 
| --- a/chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer.h
 | 
| +++ b/chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer.h
 | 
| @@ -6,7 +6,11 @@
 | 
|  #define CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_SUBRESOURCE_FILTER_METRICS_OBSERVER_H_
 | 
|  
 | 
|  #include "base/macros.h"
 | 
| +#include "base/optional.h"
 | 
| +#include "base/scoped_observer.h"
 | 
|  #include "chrome/browser/page_load_metrics/page_load_metrics_observer.h"
 | 
| +#include "components/subresource_filter/content/browser/subresource_filter_observer.h"
 | 
| +#include "components/subresource_filter/content/browser/subresource_filter_observer_manager.h"
 | 
|  #include "components/ukm/ukm_source.h"
 | 
|  
 | 
|  namespace internal {
 | 
| @@ -59,12 +63,16 @@ extern const char kHistogramSubresourceFilterActivationDecisionReload[];
 | 
|  }  // namespace internal
 | 
|  
 | 
|  class SubresourceFilterMetricsObserver
 | 
| -    : public page_load_metrics::PageLoadMetricsObserver {
 | 
| +    : public page_load_metrics::PageLoadMetricsObserver,
 | 
| +      public subresource_filter::SubresourceFilterObserver {
 | 
|   public:
 | 
| -  SubresourceFilterMetricsObserver() = default;
 | 
| -  ~SubresourceFilterMetricsObserver() override = default;
 | 
| +  SubresourceFilterMetricsObserver();
 | 
| +  ~SubresourceFilterMetricsObserver() override;
 | 
|  
 | 
|    // page_load_metrics::PageLoadMetricsObserver:
 | 
| +  ObservePolicy OnStart(content::NavigationHandle* navigation_handle,
 | 
| +                        const GURL& currently_committed_url,
 | 
| +                        bool started_in_foreground) override;
 | 
|    ObservePolicy OnCommit(content::NavigationHandle* navigation_handle,
 | 
|                           ukm::SourceId source_id) override;
 | 
|    ObservePolicy FlushMetricsOnAppEnterBackground(
 | 
| @@ -95,18 +103,35 @@ class SubresourceFilterMetricsObserver
 | 
|        bool is_in_main_frame) override;
 | 
|  
 | 
|   private:
 | 
| +  // subresource_filter::SubresourceFilterObserver:
 | 
| +  void OnSubresourceFilterGoingAway() override;
 | 
| +  void OnPageActivationComputed(
 | 
| +      content::NavigationHandle* navigation_handle,
 | 
| +      subresource_filter::ActivationDecision activation_decision,
 | 
| +      const subresource_filter::ActivationState& activation_state) override;
 | 
| +
 | 
|    void OnGoingAway(const page_load_metrics::mojom::PageLoadTiming& timing,
 | 
|                     const page_load_metrics::PageLoadExtraInfo& info,
 | 
|                     base::TimeTicks app_background_time);
 | 
|  
 | 
| +  base::Optional<subresource_filter::ActivationDecision> activation_decision_;
 | 
| +
 | 
| +  ScopedObserver<subresource_filter::SubresourceFilterObserverManager,
 | 
| +                 subresource_filter::SubresourceFilterObserver>
 | 
| +      scoped_observer_;
 | 
| +
 | 
|    int64_t network_bytes_ = 0;
 | 
|    int64_t cache_bytes_ = 0;
 | 
|  
 | 
|    int num_network_resources_ = 0;
 | 
|    int num_cache_resources_ = 0;
 | 
|  
 | 
| +  // Used as a unique id for the ongoing navigation. Do not use after OnCommit.
 | 
| +  content::NavigationHandle* navigation_handle_ = nullptr;
 | 
| +
 | 
|    bool subresource_filter_observed_ = false;
 | 
|    bool played_media_ = false;
 | 
| +  bool did_commit_ = false;
 | 
|  
 | 
|    DISALLOW_COPY_AND_ASSIGN(SubresourceFilterMetricsObserver);
 | 
|  };
 | 
| 
 |