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; |