Android Chromium的标题代码运行路径

本文详细解析了 ContentViewCore.java 类中如何通过 setTitle 方法设置标题,并追踪了其在不同组件间的传递过程,包括 C++ 实现、Java 调用、WebContents 视图更新以及渲染视图主机的消息处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在ContentViewCore.java里:

    @CalledByNative

    private void setTitle(String title) {

        getContentViewClient().onUpdateTitle(title);

    }

这里会调用:

WebChromeClient.onReceivedTitle.


调用ContentViewCore.setTitle的C++文件是:

content_view_core_impl.cc

void ContentViewCoreImpl::SetTitle(const base::string16& title) {

Java_ContentViewCore_setTitle(env, obj.obj(), jtitle.obj());

}


在web_contents/web_contents_view_android.cc中

void WebContentsViewAndroid::SetPageTitle(const base::string16& title) {

  if (content_view_core_)

    content_view_core_->SetTitle(title);

}

然后调用:

WebContentsImpl::UpdateTitleForEntry() {

view_->SetPageTitle(final_title);

}

这里会接收msg:

RenderViewHostImpl::OnUpdateTitle

{

}


void RenderViewImpl::UpdateTitle

{

  Send(new ViewHostMsg_UpdateTitle(routing_id_, page_id_, shortened_title,

                                   title_direction));

}


RenderViewImpl::didReceiveTitle{

UpdateTitle();

}


void FrameLoaderClientImpl::dispatchDidReceiveTitle(const String& title)

{

    if (m_webFrame->client())

        m_webFrame->client()->didReceiveTitle(m_webFrame, title, WebTextDirectionLeftToRight);

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值