当前位置:   article > 正文

webkit调试之二--初始化frame_webkitbrowser.mainframe

webkitbrowser.mainframe

调用堆栈

在看这篇文章前,请参见webkit调试之一 --初始化page

第一步讲述了初始化page的工作,现在我们来看看初始化frame的工作

看看call stack

  1. webkit.dll!WebCore::Page::setMainFrame(WTF::PassRefPtr<WebCore::Frame> mainFrame) 行 247 C++
  2. webkit.dll!WebCore::Frame::create(WebCore::Page * page, WebCore::HTMLFrameOwnerElement * ownerElement, WebCore::FrameLoaderClient * client) 行 191 C++
  3. webkit.dll!WebKit::WebFrameImpl::initializeAsMainFrame(WebCore::Page * page) 行 2166 + 0x16 字节 C++
  4. webkit.dll!WebKit::WebViewImpl::initializeMainFrame(WebKit::WebFrameClient * frameClient) 行 311 C++
  5. > content.dll!content::RenderViewImpl::Initialize(content::RenderViewImplParams * params) 行 763 + 0x4e 字节 C++
  6. content.dll!content::RenderViewImpl::Create(int opener_id, const content::RendererPreferences & renderer_prefs, const WebPreferences & webkit_prefs, base::RefCountedData<int> * counter, int routing_id, int surface_id, __int64 session_storage_namespace_id, const std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > & frame_name, bool is_renderer_created, bool swapped_out, int next_page_id, const WebKit::WebScreenInfo & screen_info, AccessibilityMode accessibility_mode, bool allow_partial_swap) 行 931 C++
  7. content.dll!content::RenderThreadImpl::OnCreateNewView(const ViewMsg_New_Params & params) 行 1207 + 0xca 字节 C++
  8. content.dll!DispatchToMethod<content::RenderThreadImpl,void (__thiscall content::RenderThreadImpl::*)(ViewMsg_New_Params const &),ViewMsg_New_Params>(content::RenderThreadImpl * obj, void (const ViewMsg_New_Params &)* method, const Tuple1<ViewMsg_New_Params> & arg) 行 546 + 0xf 字节 C++
  9. content.dll!ViewMsg_New::Dispatch<content::RenderThreadImpl,content::RenderThreadImpl,void (__thiscall content::RenderThreadImpl::*)(ViewMsg_New_Params const &)>(const IPC::Message * msg, content::RenderThreadImpl * obj, content::RenderThreadImpl * sender, void (const ViewMsg_New_Params &)* func) 行 785 + 0x82 字节 C++
  10. content.dll!content::RenderThreadImpl::OnControlMessageReceived(const IPC::Message & msg) 行 1179 + 0x84 字节 C++
  11. content.dll!content::ChildThread::OnMessageReceived(const IPC::Message & msg) 行 269 + 0x13 字节 C++
  12. ipc.dll!IPC::ChannelProxy::Context::OnDispatchMessage(const IPC::Message & message) 行 261 + 0x18 字节 C++
  13. ipc.dll!base::internal::RunnableAdapter<void (__thiscall IPC::ChannelProxy::Context::*)(IPC::Message const &)>::Run(IPC::ChannelProxy::Context * object, const IPC::Message & a1) 行 190 + 0x21 字节 C++
  14. ipc.dll!base::internal::InvokeHelper<0,void,base::internal::RunnableAdapter<void (__thiscall IPC::ChannelProxy::Context::*)(IPC::Message const &)>,void __cdecl(IPC::ChannelProxy::Context * const &,IPC::Message const &)>::MakeItSo(base::internal::RunnableAdapter<void (__thiscall IPC::ChannelProxy::Context::*)(IPC::Message const &)> runnable, IPC::ChannelProxy::Context * const & a1, const IPC::Message & a2) 行 900 C++
  15. ipc.dll!base::internal::Invoker<2,base::internal::BindState<base::internal::RunnableAdapter<void (__thiscall IPC::ChannelProxy::Context::*)(IPC::Message const &)>,void __cdecl(IPC::ChannelProxy::Context *,IPC::Message const &),void __cdecl(IPC::ChannelProxy::Context *,IPC::Message)>,void __cdecl(IPC::ChannelProxy::Context *,IPC::Message const &)>::Run(base::internal::BindStateBase * base) 行 1257 + 0x2a 字节 C++
  16. base.dll!base::Callback<void __cdecl(void)>::Run() 行 396 + 0xe 字节 C++
  17. base.dll!base::MessageLoop::RunTask(const base::PendingTask & pending_task) 行 486 C++
  18. base.dll!base::MessageLoop::DeferOrRunPendingTask(const base::PendingTask & pending_task) 行 499 C++
  19. base.dll!base::MessageLoop::DoWork() 行 688 + 0xc 字节 C++
  20. base.dll!base::MessagePumpForUI::DoRunLoop() 行 241 + 0x1d 字节 C++
  21. base.dll!base::MessagePumpWin::RunWithDispatcher(base::MessagePump::Delegate * delegate, base::MessagePumpDispatcher * dispatcher) 行 64 + 0xf 字节 C++
  22. base.dll!base::MessagePumpWin::Run(base::MessagePump::Delegate * delegate) 行 48 + 0x1c 字节 C++
  23. base.dll!base::MessageLoop::RunInternal() 行 441 + 0x29 字节 C++
  24. base.dll!base::MessageLoop::RunHandler() 行 415 C++
  25. base.dll!base::RunLoop::Run() 行 46 C++
  26. base.dll!base::MessageLoop::Run() 行 322 C++
  27. base.dll!base::Thread::Run(base::MessageLoop * message_loop) 行 160 C++
  28. base.dll!base::Thread::ThreadMain() 行 204 + 0x16 字节 C++

相关类图:


可以看到WebFrameImpl起到了沟通chromiumhe webkit的桥梁作用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/866985
推荐阅读
  

闽ICP备14008679号