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

Unified Diff: mojo/public/cpp/bindings/lib/connector.cc

Issue 2818533003: Make nesting/running states a RunLoop rather than a MessageLoop concept. (Closed)
Patch Set: still need to check MessageLoop::current() in Mojo's RunLoopNestingObserver::GetForThread() Created 3 years, 7 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
« no previous file with comments | « mojo/public/cpp/bindings/connector.h ('k') | services/service_manager/tests/lifecycle/package.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/cpp/bindings/lib/connector.cc
diff --git a/mojo/public/cpp/bindings/lib/connector.cc b/mojo/public/cpp/bindings/lib/connector.cc
index d93e45ed938cd9455222aed5855af75998408ab7..c97b37d0215d8ca5a2967790f6e12ae29427d247 100644
--- a/mojo/public/cpp/bindings/lib/connector.cc
+++ b/mojo/public/cpp/bindings/lib/connector.cc
@@ -14,6 +14,7 @@
#include "base/macros.h"
#include "base/memory/ptr_util.h"
#include "base/message_loop/message_loop.h"
+#include "base/run_loop.h"
#include "base/synchronization/lock.h"
#include "base/threading/thread_local.h"
#include "mojo/public/cpp/bindings/lib/may_auto_lock.h"
@@ -25,11 +26,10 @@ namespace mojo {
namespace {
// The NestingObserver for each thread. Note that this is always a
-// Connector::MessageLoopNestingObserver; we use the base type here because that
+// Connector::RunLoopNestingObserver; we use the base type here because that
// subclass is private to Connector.
-base::LazyInstance<
- base::ThreadLocalPointer<base::MessageLoop::NestingObserver>>::Leaky
- g_tls_nesting_observer = LAZY_INSTANCE_INITIALIZER;
+base::LazyInstance<base::ThreadLocalPointer<base::RunLoop::NestingObserver>>::
+ Leaky g_tls_nesting_observer = LAZY_INSTANCE_INITIALIZER;
} // namespace
@@ -44,7 +44,7 @@ class Connector::ActiveDispatchTracker {
private:
const base::WeakPtr<Connector> connector_;
- MessageLoopNestingObserver* const nesting_observer_;
+ RunLoopNestingObserver* const nesting_observer_;
ActiveDispatchTracker* outer_tracker_ = nullptr;
ActiveDispatchTracker* inner_tracker_ = nullptr;
@@ -53,40 +53,41 @@ class Connector::ActiveDispatchTracker {
// Watches the MessageLoop on the current thread. Notifies the current chain of
// ActiveDispatchTrackers when a nested message loop is started.
-class Connector::MessageLoopNestingObserver
- : public base::MessageLoop::NestingObserver,
+class Connector::RunLoopNestingObserver
+ : public base::RunLoop::NestingObserver,
public base::MessageLoop::DestructionObserver {
public:
- MessageLoopNestingObserver() {
- base::MessageLoop::current()->AddNestingObserver(this);
+ RunLoopNestingObserver() {
+ base::RunLoop::AddNestingObserverOnCurrentThread(this);
base::MessageLoop::current()->AddDestructionObserver(this);
}
- ~MessageLoopNestingObserver() override {}
+ ~RunLoopNestingObserver() override {}
- // base::MessageLoop::NestingObserver:
- void OnBeginNestedMessageLoop() override {
+ // base::RunLoop::NestingObserver:
+ void OnBeginNestedRunLoop() override {
if (top_tracker_)
top_tracker_->NotifyBeginNesting();
}
// base::MessageLoop::DestructionObserver:
void WillDestroyCurrentMessageLoop() override {
- base::MessageLoop::current()->RemoveNestingObserver(this);
+ base::RunLoop::RemoveNestingObserverOnCurrentThread(this);
base::MessageLoop::current()->RemoveDestructionObserver(this);
DCHECK_EQ(this, g_tls_nesting_observer.Get().Get());
g_tls_nesting_observer.Get().Set(nullptr);
delete this;
}
- static MessageLoopNestingObserver* GetForThread() {
+ static RunLoopNestingObserver* GetForThread() {
if (!base::MessageLoop::current() ||
- !base::MessageLoop::current()->nesting_allowed())
+ !base::RunLoop::IsNestingAllowedOnCurrentThread()) {
return nullptr;
- auto* observer = static_cast<MessageLoopNestingObserver*>(
+ }
+ auto* observer = static_cast<RunLoopNestingObserver*>(
g_tls_nesting_observer.Get().Get());
if (!observer) {
- observer = new MessageLoopNestingObserver;
+ observer = new RunLoopNestingObserver;
g_tls_nesting_observer.Get().Set(observer);
}
return observer;
@@ -97,7 +98,7 @@ class Connector::MessageLoopNestingObserver
ActiveDispatchTracker* top_tracker_ = nullptr;
- DISALLOW_COPY_AND_ASSIGN(MessageLoopNestingObserver);
+ DISALLOW_COPY_AND_ASSIGN(RunLoopNestingObserver);
};
Connector::ActiveDispatchTracker::ActiveDispatchTracker(
@@ -132,7 +133,7 @@ Connector::Connector(ScopedMessagePipeHandle message_pipe,
scoped_refptr<base::SingleThreadTaskRunner> runner)
: message_pipe_(std::move(message_pipe)),
task_runner_(std::move(runner)),
- nesting_observer_(MessageLoopNestingObserver::GetForThread()),
+ nesting_observer_(RunLoopNestingObserver::GetForThread()),
weak_factory_(this) {
if (config == MULTI_THREADED_SEND)
lock_.emplace();
« no previous file with comments | « mojo/public/cpp/bindings/connector.h ('k') | services/service_manager/tests/lifecycle/package.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698