| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. |  | 
| 2 // Use of this source code is governed by a BSD-style license that can be |  | 
| 3 // found in the LICENSE file. |  | 
| 4 |  | 
| 5 #ifndef COMPONENTS_PAGE_LOAD_METRICS_RENDERER_PAGE_TIMING_METRICS_SENDER_H_ |  | 
| 6 #define COMPONENTS_PAGE_LOAD_METRICS_RENDERER_PAGE_TIMING_METRICS_SENDER_H_ |  | 
| 7 |  | 
| 8 #include <memory> |  | 
| 9 |  | 
| 10 #include "base/macros.h" |  | 
| 11 #include "components/page_load_metrics/common/page_load_timing.h" |  | 
| 12 #include "third_party/WebKit/public/platform/WebLoadingBehaviorFlag.h" |  | 
| 13 |  | 
| 14 namespace base { |  | 
| 15 class Timer; |  | 
| 16 }  // namespace base |  | 
| 17 |  | 
| 18 namespace IPC { |  | 
| 19 class Sender; |  | 
| 20 }  // namespace IPC |  | 
| 21 |  | 
| 22 namespace page_load_metrics { |  | 
| 23 |  | 
| 24 // PageTimingMetricsSender is responsible for sending page load timing metrics |  | 
| 25 // over IPC. PageTimingMetricsSender may coalesce sent IPCs in order to |  | 
| 26 // minimize IPC contention. |  | 
| 27 class PageTimingMetricsSender { |  | 
| 28  public: |  | 
| 29   PageTimingMetricsSender(IPC::Sender* ipc_sender, |  | 
| 30                           int routing_id, |  | 
| 31                           std::unique_ptr<base::Timer> timer, |  | 
| 32                           const PageLoadTiming& initial_timing); |  | 
| 33   ~PageTimingMetricsSender(); |  | 
| 34 |  | 
| 35   void DidObserveLoadingBehavior(blink::WebLoadingBehaviorFlag behavior); |  | 
| 36   void Send(const PageLoadTiming& timing); |  | 
| 37 |  | 
| 38  protected: |  | 
| 39   base::Timer* timer() const { return timer_.get(); } |  | 
| 40 |  | 
| 41  private: |  | 
| 42   void EnsureSendTimer(int delay); |  | 
| 43   void SendNow(); |  | 
| 44 |  | 
| 45   IPC::Sender* const ipc_sender_; |  | 
| 46   const int routing_id_; |  | 
| 47   std::unique_ptr<base::Timer> timer_; |  | 
| 48   PageLoadTiming last_timing_; |  | 
| 49 |  | 
| 50   // The the sender keep track of metadata as it comes in, because the sender is |  | 
| 51   // scoped to a single committed load. |  | 
| 52   PageLoadMetadata metadata_; |  | 
| 53 |  | 
| 54   DISALLOW_COPY_AND_ASSIGN(PageTimingMetricsSender); |  | 
| 55 }; |  | 
| 56 |  | 
| 57 }  // namespace page_load_metrics |  | 
| 58 |  | 
| 59 #endif  // COMPONENTS_PAGE_LOAD_METRICS_RENDERER_PAGE_TIMING_METRICS_SENDER_H_ |  | 
| OLD | NEW | 
|---|