Index: third_party/WebKit/Source/core/page/NetworkStateNotifier.cpp |
diff --git a/third_party/WebKit/Source/core/page/NetworkStateNotifier.cpp b/third_party/WebKit/Source/core/page/NetworkStateNotifier.cpp |
index 9998e33b898aeb62052e247d847ba6062fe3f937..b35bf70a4b079cfd3d6ae058477ca65dcffe9c34 100644 |
--- a/third_party/WebKit/Source/core/page/NetworkStateNotifier.cpp |
+++ b/third_party/WebKit/Source/core/page/NetworkStateNotifier.cpp |
@@ -25,10 +25,9 @@ |
#include "core/page/NetworkStateNotifier.h" |
-#include "core/dom/ExecutionContext.h" |
-#include "core/dom/ExecutionContextTask.h" |
#include "core/dom/TaskRunnerHelper.h" |
#include "core/page/Page.h" |
+#include "platform/CrossThreadFunctional.h" |
#include "wtf/Assertions.h" |
#include "wtf/Functional.h" |
#include "wtf/PtrUtil.h" |
@@ -86,25 +85,25 @@ void NetworkStateNotifier::setWebConnection(WebConnectionType type, |
} |
void NetworkStateNotifier::addObserver(NetworkStateObserver* observer, |
- ExecutionContext* context) { |
- ASSERT(context->isContextThread()); |
- ASSERT(observer); |
+ WebTaskRunner* taskRunner) { |
+ DCHECK(taskRunner->runsTasksOnCurrentThread()); |
+ DCHECK(observer); |
MutexLocker locker(m_mutex); |
- ObserverListMap::AddResult result = m_observers.insert(context, nullptr); |
+ ObserverListMap::AddResult result = m_observers.insert(taskRunner, nullptr); |
if (result.isNewEntry) |
result.storedValue->value = WTF::wrapUnique(new ObserverList); |
- ASSERT(result.storedValue->value->observers.find(observer) == kNotFound); |
+ DCHECK(result.storedValue->value->observers.find(observer) == kNotFound); |
result.storedValue->value->observers.push_back(observer); |
} |
void NetworkStateNotifier::removeObserver(NetworkStateObserver* observer, |
- ExecutionContext* context) { |
- ASSERT(context->isContextThread()); |
- ASSERT(observer); |
+ WebTaskRunner* taskRunner) { |
+ DCHECK(taskRunner->runsTasksOnCurrentThread()); |
+ DCHECK(observer); |
- ObserverList* observerList = lockAndFindObserverList(context); |
+ ObserverList* observerList = lockAndFindObserverList(taskRunner); |
if (!observerList) |
return; |
@@ -116,7 +115,7 @@ void NetworkStateNotifier::removeObserver(NetworkStateObserver* observer, |
} |
if (!observerList->iterating && !observerList->zeroedObservers.isEmpty()) |
- collectZeroedObservers(observerList, context); |
+ collectZeroedObservers(observerList, taskRunner); |
} |
void NetworkStateNotifier::setOverride(bool onLine, |
@@ -147,28 +146,30 @@ void NetworkStateNotifier::clearOverride() { |
void NetworkStateNotifier::notifyObservers(WebConnectionType type, |
double maxBandwidthMbps) { |
DCHECK(isMainThread()); |
+ MutexLocker locker(m_mutex); |
for (const auto& entry : m_observers) { |
- ExecutionContext* context = entry.key; |
- context->postTask( |
- TaskType::Networking, BLINK_FROM_HERE, |
- createCrossThreadTask( |
- &NetworkStateNotifier::notifyObserversOfConnectionChangeOnContext, |
- crossThreadUnretained(this), type, maxBandwidthMbps)); |
+ WebTaskRunner* taskRunner = entry.key; |
+ taskRunner->postTask( |
+ BLINK_FROM_HERE, |
+ crossThreadBind(&NetworkStateNotifier:: |
+ notifyObserversOfConnectionChangeOnTaskRunner, |
+ crossThreadUnretained(this), type, maxBandwidthMbps, |
+ crossThreadUnretained(taskRunner))); |
} |
} |
-void NetworkStateNotifier::notifyObserversOfConnectionChangeOnContext( |
+void NetworkStateNotifier::notifyObserversOfConnectionChangeOnTaskRunner( |
WebConnectionType type, |
double maxBandwidthMbps, |
- ExecutionContext* context) { |
- ObserverList* observerList = lockAndFindObserverList(context); |
+ WebTaskRunner* taskRunner) { |
+ ObserverList* observerList = lockAndFindObserverList(taskRunner); |
// The context could have been removed before the notification task got to |
// run. |
if (!observerList) |
return; |
- ASSERT(context->isContextThread()); |
+ DCHECK(taskRunner->runsTasksOnCurrentThread()); |
observerList->iterating = true; |
@@ -181,20 +182,20 @@ void NetworkStateNotifier::notifyObserversOfConnectionChangeOnContext( |
observerList->iterating = false; |
if (!observerList->zeroedObservers.isEmpty()) |
- collectZeroedObservers(observerList, context); |
+ collectZeroedObservers(observerList, taskRunner); |
} |
NetworkStateNotifier::ObserverList* |
-NetworkStateNotifier::lockAndFindObserverList(ExecutionContext* context) { |
+NetworkStateNotifier::lockAndFindObserverList(WebTaskRunner* taskRunner) { |
MutexLocker locker(m_mutex); |
- ObserverListMap::iterator it = m_observers.find(context); |
+ ObserverListMap::iterator it = m_observers.find(taskRunner); |
return it == m_observers.end() ? nullptr : it->value.get(); |
} |
void NetworkStateNotifier::collectZeroedObservers(ObserverList* list, |
- ExecutionContext* context) { |
- ASSERT(context->isContextThread()); |
- ASSERT(!list->iterating); |
+ WebTaskRunner* taskRunner) { |
+ DCHECK(taskRunner->runsTasksOnCurrentThread()); |
+ DCHECK(!list->iterating); |
// If any observers were removed during the iteration they will have |
// 0 values, clean them up. |
@@ -205,7 +206,7 @@ void NetworkStateNotifier::collectZeroedObservers(ObserverList* list, |
if (list->observers.isEmpty()) { |
MutexLocker locker(m_mutex); |
- m_observers.erase(context); // deletes list |
+ m_observers.erase(taskRunner); // deletes list |
} |
} |