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

Unified Diff: third_party/WebKit/Source/core/page/NetworkStateNotifier.cpp

Issue 2693823003: Remove dependency from NetworkStateNotifier to ExecutionContext (Closed)
Patch Set: . Created 3 years, 10 months 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 side-by-side diff with in-line comments
Download patch
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
}
}

Powered by Google App Engine
This is Rietveld 408576698