| 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..fe5402676326b18877f4d07476581f97219faf69 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() = default;
|
| + ~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;
|
|
|