Chromium Code Reviews| Index: content/renderer/devtools/devtools_agent.cc |
| diff --git a/content/renderer/devtools/devtools_agent.cc b/content/renderer/devtools/devtools_agent.cc |
| index 9dcd59043eb4bb52f351b6713231daf1855c5a55..0c68a8219a2638d9fb59c6fa54e01fd223e71e01 100644 |
| --- a/content/renderer/devtools/devtools_agent.cc |
| +++ b/content/renderer/devtools/devtools_agent.cc |
| @@ -13,6 +13,7 @@ |
| #include "base/message_loop/message_loop.h" |
| #include "base/run_loop.h" |
| #include "base/strings/string_number_conversions.h" |
| +#include "base/threading/non_thread_safe.h" |
| #include "base/trace_event/trace_event.h" |
| #include "content/common/devtools_messages.h" |
| #include "content/common/frame_messages.h" |
| @@ -43,20 +44,34 @@ namespace { |
| const size_t kMaxMessageChunkSize = IPC::Channel::kMaximumMessageSize / 4; |
| const char kPageGetAppManifest[] = "Page.getAppManifest"; |
| - |
| class WebKitClientMessageLoopImpl |
| - : public WebDevToolsAgentClient::WebKitClientMessageLoop { |
| + : public WebDevToolsAgentClient::WebKitClientMessageLoop, |
| + public base::NonThreadSafe { |
| public: |
| - WebKitClientMessageLoopImpl() : message_loop_(base::MessageLoop::current()) {} |
| - ~WebKitClientMessageLoopImpl() override { message_loop_ = NULL; } |
| + WebKitClientMessageLoopImpl() { DCHECK(CalledOnValidThread()); } |
|
jochen (gone - plz use gerrit)
2016/07/06 11:24:52
how would you ever be able to call the constructor
fdoray
2016/07/06 14:29:08
Done.
|
| + ~WebKitClientMessageLoopImpl() override { DCHECK(CalledOnValidThread()); } |
| void run() override { |
| - base::MessageLoop::ScopedNestableTaskAllower allow(message_loop_); |
| - base::RunLoop().Run(); |
| + DCHECK(CalledOnValidThread()); |
| + |
| + base::RunLoop* const previous_run_loop = run_loop_; |
| + base::RunLoop run_loop; |
| + run_loop_ = &run_loop; |
| + |
| + base::MessageLoop::ScopedNestableTaskAllower allow( |
| + base::MessageLoop::current()); |
| + run_loop.Run(); |
| + |
| + run_loop_ = previous_run_loop; |
| + } |
| + void quitNow() override { |
| + DCHECK(CalledOnValidThread()); |
| + DCHECK(run_loop_); |
| + |
| + run_loop_->Quit(); |
| } |
| - void quitNow() override { message_loop_->QuitNow(); } |
| private: |
| - base::MessageLoop* message_loop_; |
| + base::RunLoop* run_loop_ = nullptr; |
| }; |
| typedef std::map<int, DevToolsAgent*> IdToAgentMap; |