OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. | 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 { | 101 { |
102 } | 102 } |
103 bool iterating; | 103 bool iterating; |
104 Vector<NetworkStateObserver*> observers; | 104 Vector<NetworkStateObserver*> observers; |
105 Vector<size_t> zeroedObservers; // Indices in observers that are 0. | 105 Vector<size_t> zeroedObservers; // Indices in observers that are 0. |
106 }; | 106 }; |
107 | 107 |
108 void setWebConnectionImpl(WebConnectionType, double maxBandwidthMbps); | 108 void setWebConnectionImpl(WebConnectionType, double maxBandwidthMbps); |
109 void setMaxBandwidthImpl(double maxBandwidthMbps); | 109 void setMaxBandwidthImpl(double maxBandwidthMbps); |
110 | 110 |
111 using ObserverListMap = WillBePersistentHeapHashMap<RawPtrWillBeWeakMember<E
xecutionContext>, OwnPtr<ObserverList>>; | 111 // The ObserverListMap is cross-thread accessed, adding/removing Observers r
unning |
| 112 // within an ExecutionContext. Kept off-heap to ease cross-thread allocation
and use; |
| 113 // the observers are (already) responsible for explicitly unregistering whil
e finalizing. |
| 114 using ObserverListMap = HashMap<RawPtrWillBeUntracedMember<ExecutionContext>
, OwnPtr<ObserverList>>; |
112 | 115 |
113 void notifyObserversOfConnectionChangeOnContext(WebConnectionType, double ma
xBandwidthMbps, ExecutionContext*); | 116 void notifyObserversOfConnectionChangeOnContext(WebConnectionType, double ma
xBandwidthMbps, ExecutionContext*); |
114 | 117 |
115 ObserverList* lockAndFindObserverList(ExecutionContext*); | 118 ObserverList* lockAndFindObserverList(ExecutionContext*); |
116 | 119 |
117 // Removed observers are nulled out in the list in case the list is being | 120 // Removed observers are nulled out in the list in case the list is being |
118 // iterated over. Once done iterating, call this to clean up nulled | 121 // iterated over. Once done iterating, call this to clean up nulled |
119 // observers. | 122 // observers. |
120 void collectZeroedObservers(ObserverList*, ExecutionContext*); | 123 void collectZeroedObservers(ObserverList*, ExecutionContext*); |
121 | 124 |
122 mutable Mutex m_mutex; | 125 mutable Mutex m_mutex; |
123 bool m_isOnLine; | 126 bool m_isOnLine; |
124 WebConnectionType m_type; | 127 WebConnectionType m_type; |
125 double m_maxBandwidthMbps; | 128 double m_maxBandwidthMbps; |
126 ObserverListMap m_observers; | 129 ObserverListMap m_observers; |
127 bool m_testUpdatesOnly; | 130 bool m_testUpdatesOnly; |
128 }; | 131 }; |
129 | 132 |
130 CORE_EXPORT NetworkStateNotifier& networkStateNotifier(); | 133 CORE_EXPORT NetworkStateNotifier& networkStateNotifier(); |
131 | 134 |
132 } // namespace blink | 135 } // namespace blink |
133 | 136 |
134 #endif // NetworkStateNotifier_h | 137 #endif // NetworkStateNotifier_h |
OLD | NEW |