| Index: Source/core/page/NetworkStateNotifier.h
|
| diff --git a/Source/core/page/NetworkStateNotifier.h b/Source/core/page/NetworkStateNotifier.h
|
| index 66290b7c00fa531e61c2a83a98538ae59f0bdc2f..da794adcaf5a7f1787f5040acd7781fd91e7ffb2 100644
|
| --- a/Source/core/page/NetworkStateNotifier.h
|
| +++ b/Source/core/page/NetworkStateNotifier.h
|
| @@ -44,16 +44,18 @@ public:
|
| class NetworkStateObserver {
|
| public:
|
| // Will be called on the thread of the context passed in addObserver.
|
| - virtual void connectionTypeChange(WebConnectionType) = 0;
|
| + virtual void connectionChange(WebConnectionType, double maxBandwidthMbps) = 0;
|
| };
|
|
|
| NetworkStateNotifier()
|
| : m_isOnLine(true)
|
| , m_type(ConnectionTypeOther)
|
| + , m_maxBandwidthMbps(std::numeric_limits<double>::infinity())
|
| , m_testUpdatesOnly(false)
|
| {
|
| }
|
|
|
| + // Can be called on any thread.
|
| bool onLine() const
|
| {
|
| MutexLocker locker(m_mutex);
|
| @@ -62,13 +64,21 @@ public:
|
|
|
| void setOnLine(bool);
|
|
|
| + // Can be called on any thread.
|
| WebConnectionType connectionType() const
|
| {
|
| MutexLocker locker(m_mutex);
|
| return m_type;
|
| }
|
|
|
| - void setWebConnectionType(WebConnectionType);
|
| + // Can be called on any thread.
|
| + double maxBandwidth() const
|
| + {
|
| + MutexLocker locker(m_mutex);
|
| + return m_maxBandwidthMbps;
|
| + }
|
| +
|
| + void setWebConnection(WebConnectionType, double maxBandwidthMbps);
|
|
|
| // Must be called on the context's thread. An added observer must be removed
|
| // before its ExecutionContext is deleted. It's possible for an observer to
|
| @@ -83,7 +93,7 @@ public:
|
| // can update the connection type. This is used for layout tests (see crbug.com/377736).
|
| void setTestUpdatesOnly(bool);
|
| // Tests should call this as it will change the type regardless of the value of m_testUpdatesOnly.
|
| - void setWebConnectionTypeForTest(WebConnectionType);
|
| + void setWebConnectionForTest(WebConnectionType, double maxBandwidthMbps);
|
|
|
| private:
|
| struct ObserverList {
|
| @@ -96,11 +106,12 @@ private:
|
| Vector<size_t> zeroedObservers; // Indices in observers that are 0.
|
| };
|
|
|
| - void setWebConnectionTypeImpl(WebConnectionType);
|
| + void setWebConnectionImpl(WebConnectionType, double maxBandwidthMbps);
|
| + void setMaxBandwidthImpl(double maxBandwidthMbps);
|
|
|
| using ObserverListMap = HashMap<ExecutionContext*, OwnPtr<ObserverList>>;
|
|
|
| - void notifyObserversOnContext(WebConnectionType, ExecutionContext*);
|
| + void notifyObserversOfConnectionChangeOnContext(WebConnectionType, double maxBandwidthMbps, ExecutionContext*);
|
|
|
| ObserverList* lockAndFindObserverList(ExecutionContext*);
|
|
|
| @@ -112,6 +123,7 @@ private:
|
| mutable Mutex m_mutex;
|
| bool m_isOnLine;
|
| WebConnectionType m_type;
|
| + double m_maxBandwidthMbps;
|
| ObserverListMap m_observers;
|
| bool m_testUpdatesOnly;
|
| };
|
|
|