• 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;
        }

  • 相关阅读:
    mysql性能优化
    pymysql模块
    mysql数据表约束
    MySQL数据库
    IO模型
    8451
    8946531
    6783
    256213
    27822
  • 原文地址:https://www.cnblogs.com/blfshiye/p/3763353.html
Copyright © 2020-2023  润新知