zoukankan      html  css  js  c++  java
  • chromium对网页获取favicon

    每一个网页都有一个favicon,在历史记录的保存中须要用到。在content文件夹下,这个没有实现。

    以下说一下我的实现过程:

    web_contents_impl.cc文件里有方法:WebContentsImpl::OnUpdateFaviconURL

    这种方法是内核解析到favicon之后,给chromium 的browser process反馈之后,browser process的响应方法。

    该方法的实现例如以下:

      FOR_EACH_OBSERVER(WebContentsObserver, observers_,
                        DidUpdateFaviconURL(page_id, candidates));

    这里的observer,就是shell.cc

    我在shell.cc加入�方法例如以下:

    void Shell::DidUpdateFaviconURL(int32 page_id,
                                       const std::vector<FaviconURL>& candidates) {
      UpdateFaviconURL(page_id, candidates);
    }


    然后,在shell_android.cc文件里加入�方法例如以下:

    void Shell::UpdateFaviconURL(int32 page_id,
                                       const std::vector<FaviconURL>& candidates) {
      JNIEnv* env = AttachCurrentThread();
      GURL favicon_url = candidates.back().icon_url;
      ScopedJavaLocalRef<jstring> j_favicon_url = base::android::ConvertUTF8ToJavaString(env, favicon_url.spec());
      return Java_Shell_UpdateShellFaviconUrl(env, java_object_.obj(),j_favicon_url.obj());
    }

    这样,Shell.java 就能够得到faviicon了

        @CalledByNative
        private void UpdateShellFaviconUrl(String faviconUrl) {
            mShellFaviconUrl = faviconUrl;
        }

  • 相关阅读:
    树-构建二叉树
    爬虫-scrapy框架详解(17)
    How to identify the HBA cards/ports and WWN in Linux
    NetBackup常用网络端口整理
    keepalived+MySQL实现高可用
    nginx配置https双向验证(ca机构证书+自签证书)
    systemd设置nginx开机自启动
    Keepalived+Nginx搭建主从高可用并带nginx检测
    windows 挂在EMC 存储
    linux时间同步,ntpd、ntpdate
  • 原文地址:https://www.cnblogs.com/blfshiye/p/3763353.html
Copyright © 2011-2022 走看看