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

Side by Side Diff: net/nqe/network_quality_estimator.h

Issue 2491703003: NQE: Notify observer as soon as it is added (Closed)
Patch Set: ryansturm comments Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef NET_NQE_NETWORK_QUALITY_ESTIMATOR_H_ 5 #ifndef NET_NQE_NETWORK_QUALITY_ESTIMATOR_H_
6 #define NET_NQE_NETWORK_QUALITY_ESTIMATOR_H_ 6 #define NET_NQE_NETWORK_QUALITY_ESTIMATOR_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <map> 10 #include <map>
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 // Virtualized for testing. 207 // Virtualized for testing.
208 virtual EffectiveConnectionType GetEffectiveConnectionType() const; 208 virtual EffectiveConnectionType GetEffectiveConnectionType() const;
209 209
210 // Returns the effective type of the current connection based on only the 210 // Returns the effective type of the current connection based on only the
211 // samples observed after |start_time|. This should only be used for 211 // samples observed after |start_time|. This should only be used for
212 // recording the metrics. Virtualized for testing. 212 // recording the metrics. Virtualized for testing.
213 virtual EffectiveConnectionType GetRecentEffectiveConnectionType( 213 virtual EffectiveConnectionType GetRecentEffectiveConnectionType(
214 const base::TimeTicks& start_time) const; 214 const base::TimeTicks& start_time) const;
215 215
216 // Adds |observer| to the list of effective connection type observers. Must be 216 // Adds |observer| to the list of effective connection type observers. Must be
217 // called on the IO thread. 217 // called on the IO thread. |observer| would be notified of the current
218 // effective connection type in the next message pump, if it is still
219 // registered as an observer.
218 void AddEffectiveConnectionTypeObserver( 220 void AddEffectiveConnectionTypeObserver(
219 EffectiveConnectionTypeObserver* observer); 221 EffectiveConnectionTypeObserver* observer);
220 222
221 // Removes |observer| from the list of effective connection type observers. 223 // Removes |observer| from the list of effective connection type observers.
222 // Must be called on the IO thread. 224 // Must be called on the IO thread.
223 void RemoveEffectiveConnectionTypeObserver( 225 void RemoveEffectiveConnectionTypeObserver(
224 EffectiveConnectionTypeObserver* observer); 226 EffectiveConnectionTypeObserver* observer);
225 227
226 // Adds |observer| to the list of RTT and throughput estimate observers. Must 228 // Adds |observer| to the list of RTT and throughput estimate observers. Must
227 // be called on the IO thread. 229 // be called on the IO thread. |observer| would be notified of the current RTT
230 // and throughput estimates in the next message pump, if it is still
231 // registered as an observer.
228 void AddRTTAndThroughputEstimatesObserver( 232 void AddRTTAndThroughputEstimatesObserver(
229 RTTAndThroughputEstimatesObserver* observer); 233 RTTAndThroughputEstimatesObserver* observer);
230 234
231 // Removes |observer| from the list of RTT and throughput estimate observers. 235 // Removes |observer| from the list of RTT and throughput estimate observers.
232 // Must be called on the IO thread. 236 // Must be called on the IO thread.
233 void RemoveRTTAndThroughputEstimatesObserver( 237 void RemoveRTTAndThroughputEstimatesObserver(
234 RTTAndThroughputEstimatesObserver* observer); 238 RTTAndThroughputEstimatesObserver* observer);
235 239
236 // Notifies NetworkQualityEstimator that the response header of |request| has 240 // Notifies NetworkQualityEstimator that the response header of |request| has
237 // been received. 241 // been received.
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 // Recomputes effective connection type, if it was computed more than the 489 // Recomputes effective connection type, if it was computed more than the
486 // specified duration ago, or if there has been a connection change recently. 490 // specified duration ago, or if there has been a connection change recently.
487 void MaybeComputeEffectiveConnectionType(); 491 void MaybeComputeEffectiveConnectionType();
488 492
489 // Notifies observers of a change in effective connection type. 493 // Notifies observers of a change in effective connection type.
490 void NotifyObserversOfEffectiveConnectionTypeChanged(); 494 void NotifyObserversOfEffectiveConnectionTypeChanged();
491 495
492 // Notifies the observers of RTT or throughput estimates computation. 496 // Notifies the observers of RTT or throughput estimates computation.
493 void NotifyObserversOfRTTOrThroughputComputed() const; 497 void NotifyObserversOfRTTOrThroughputComputed() const;
494 498
499 // Notifies |observer| of the current effective connection type if |observer|
500 // is still registered as an observer.
501 void NotifyEffectiveConnectionTypeObserverIfPresent(
502 EffectiveConnectionTypeObserver* observer) const;
503
504 // Notifies |observer| of the current RTT and throughput if |observer| is
505 // still registered as an observer.
506 void NotifyRTTAndThroughputEstimatesObserverIfPresent(
507 RTTAndThroughputEstimatesObserver* observer) const;
508
495 // Records NQE accuracy metrics. |measuring_duration| should belong to the 509 // Records NQE accuracy metrics. |measuring_duration| should belong to the
496 // vector returned by AccuracyRecordingIntervals(). 510 // vector returned by AccuracyRecordingIntervals().
497 // RecordAccuracyAfterMainFrame should be called |measuring_duration| after a 511 // RecordAccuracyAfterMainFrame should be called |measuring_duration| after a
498 // main frame request is observed. 512 // main frame request is observed.
499 void RecordAccuracyAfterMainFrame(base::TimeDelta measuring_duration) const; 513 void RecordAccuracyAfterMainFrame(base::TimeDelta measuring_duration) const;
500 514
501 // Obtains the current cellular signal strength value and updates 515 // Obtains the current cellular signal strength value and updates
502 // |min_signal_strength_since_connection_change_| and 516 // |min_signal_strength_since_connection_change_| and
503 // |max_signal_strength_since_connection_change_|. 517 // |max_signal_strength_since_connection_change_|.
504 void UpdateSignalStrength(); 518 void UpdateSignalStrength();
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 base::ThreadChecker thread_checker_; 709 base::ThreadChecker thread_checker_;
696 710
697 base::WeakPtrFactory<NetworkQualityEstimator> weak_ptr_factory_; 711 base::WeakPtrFactory<NetworkQualityEstimator> weak_ptr_factory_;
698 712
699 DISALLOW_COPY_AND_ASSIGN(NetworkQualityEstimator); 713 DISALLOW_COPY_AND_ASSIGN(NetworkQualityEstimator);
700 }; 714 };
701 715
702 } // namespace net 716 } // namespace net
703 717
704 #endif // NET_NQE_NETWORK_QUALITY_ESTIMATOR_H_ 718 #endif // NET_NQE_NETWORK_QUALITY_ESTIMATOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698