QT与Chromium MessageLoop整合 - housekeeper-software/tech GitHub Wiki

需要修改的文件

base/message_loop/message_loop_current.h
base/run_loop.h
base/task/sequence_manager/sequence_manager_impl.h

修改 message_loop_current.h

因为 QT MessagePump需要用到 base::MessageLoopCurrent::GetCurrentSequenceManagerImpl()
所以要增加友元
namespace qt{
class MessagePumpForUIQt;
}

 friend class MessageLoopImpl;
 friend class MessagePumpLibeventTest;
 friend class ScheduleWorkTest;
 friend class Thread;
 friend class sequence_manager::internal::SequenceManagerImpl;
 friend class MessageLoopTaskRunnerTest;
 friend class web::TestWebThreadBundle;
 friend class qt::MessagePumpForUIQt;

修改 sequence_manager_impl.h

因为MessagePumpForUIQt 要访问:
SequenceManagerImpl::const std::unique_ptr<internal::ThreadController> controller_;
这是一个私有成员,要加友元
  friend class internal::TaskQueueImpl;
  friend class ::base::sequence_manager::SequenceManagerForTest;
  friend class qt::MessagePumpForUIQt;
  friend class qt::ContextQt;

修改run_loop.h

  FRIEND_TEST_ALL_PREFIXES(MessageLoopTypedTest, RunLoopQuitOrderAfter);
  friend class qt::ContextQt;
  因为 ContextQt要访问 BeforeRun,AfterRun