最近对android的webkit的cookies进行学习,下面是我的简单总结:
1,CookiesManager.java-->CookiesSyncManager.java-->WebviewDatabases.java
CookiesManager.java是对cookies的总体管理,它会调用CookiesSyncManager将Ram里面的Cookies存入到databases.所以CookiesSyncManager是对将cookies同步到database的管理,而WebviewDatabases里面的Webview.db的cookies表是对cookies的存储。
2,CookiesSyncManager.java-->WebSyncManager.java
CookiesSyncManager里面正在维护cookies从ram到databases的是WebSyncManager来做的,这里面是开一个thread来维护。
3,JWebCoreJavaBridge.java-->CookiesSyncManager.java
CookiesManager是对cookies的总体管理,那ram的cookies首先是这里传递给CookiesSyncManager的。那个CookiesManager的ram cookies又是从何处得来的呢?那就是从JWebCoreJavaBridge得到的。
private void setCookies(String url, String docUrl, String value) {
if (value.contains("\r") || value.contains("\n")) {
// for security reason, filter out '\r' and '\n' from the cookie
int size = value.length();
StringBuilder buffer = new StringBuilder(size);
int i = 0;
while (i != -1 && i < size) {
int ir = value.indexOf('\r', i);
int in = value.indexOf('\n', i);
int newi = (ir == -1) ? in : (in == -1 ? ir : (ir < in ? ir
: in));
if (newi > i) {
buffer.append(value.subSequence(i, newi));
} else if (newi == -1) {
buffer.append(value.subSequence(i, size));
break;
}
i = newi + 1;
}
value = buffer.toString();
}
CookieManager.getInstance().setCookie(url, value);
}
CookieManager.getInstance().setCookie(url, value);
4,JavaBridge.cpp-->JWebCoreJavaBridge.java
JWebCoreJavaBridge的cookies是从JavaBridge.cpp得来的
void
JavaBridge::setCookies(WebCore::KURL const& url, WebCore::KURL const& docUrl, WebCore::String const& value)
{
JNIEnv* env = JSC::Bindings::getJNIEnv();
const WebCore::String& urlStr = url.string();
jstring jUrlStr = env->NewString(urlStr.characters(), urlStr.length());
const WebCore::String& docUrlStr = docUrl.string();
jstring jDocUrlStr = env->NewString(docUrlStr.characters(), docUrlStr.length());
jstring jValueStr = env->NewString(value.characters(), value.length());
AutoJObject obj = getRealObject(env, mJavaObject);
env->CallVoidMethod(obj.get(), mSetCookies, jUrlStr, jDocUrlStr, jValueStr);
env->DeleteLocalRef(jUrlStr);
env->DeleteLocalRef(jDocUrlStr);
env->DeleteLocalRef(jValueStr);
}
mSetCookies = env->GetMethodID(clazz, "setCookies", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
env->CallVoidMethod(obj.get(), mSetCookies, jUrlStr, jDocUrlStr, jValueStr);
5,CookieClient.h-->JavaBridge.cpp
JavaBridger.cpp是继承CookiesClient
6,Cookies.cpp-->CookiesClien.h
就分析到这里,就没往下追了,有空我继续分析。
分享到:
相关推荐
display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; 后来发现代码里写的好好的,一到页面上居然没有反应,和没写一个样,f12看了下,原来是-webkit-box-orient: vertical;这个属性丢失,...
webkit-ubuntu-20.04
qtwebkit-Windows-Windows_7-Mingw73-Windows-Windows_7-X86.7z qtwebkit-Windows-Windows_10-Mingw73-Windows-Windows_10-X86_64.7z qtwebkit-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86.7z qtwebkit-...
css3弹性布局-webkit-box的用法演示 css3弹性布局-webkit-box的用法演示
Linux7安装teamviewer_13或teamviewer_14版本缺少qt5-qtwebkit包,可使用rpm -ivh qt5-qtwebkit-5.6.2-1.el7.x86_64.rpm --nodeps安装qt5包,在安装teamviewer即可。 error: Failed dependencies: libQt5WebKit.so....
qt5-qtwebkit-5.9.1-2.el7.x86_64.rpm插件,完美解决Teamviewer Linux 报错
WebKit-SVN-r38240.zip WebKit-SVN-r38240.zip WebKit-SVN-r38240.zip
WebKit-r174650编译所需要的源码,具体编译过程可以参考我的博文
webkit 程序时一个独立与VS控件的浏览器大家可以,独立使用它
安装Mac 可以简单的使用 brew 安装: brew install ios-webkit-debug-proxyLinux 或者 Mac: sudo apt-get install \ autoconf automake \ libusb-dev libusb-1.0-0-dev \ libplist-dev ...
ios-webkit-debug-proxy-1.9.0-win64-bin
-webkit-line-clamp 概述: -webkit-line-clamp 是一个 不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中。 限制在一个块元素显示的文本的行数。 为了实现该效果,它需要组合其他外来的...
能解决部分linux安装teamviewer种的报错问题,共享给大家,方便你我他,自己解压就是rpm
成功安装Teamviewer的关键,解决:缺少libQt5WebKitWidgets.so的关键包。 以下是错误原文 Error: Package: teamviewer-13.0.6634-0.x86_64 (/teamviewer.x86_64) Requires: libQt5WebKitWidgets.so.5()(64bit) >...
节点 webkit 自动更新程序节点 Webkit 自动更新程序此代码受到以下项目的强烈启发:(node-webkit-mac-updater)[ ] (node-webkit-updater)[ ] 支持以下操作系统: 操作系统视窗安装您可以使用以下命令从 NPM 安装此...
node-webkit-v0.9.2-linux-x64.tar.gz老版本的mode-webkit安全包,linux 系统下面的.
主要介绍了CSS3 Notes: -webkit-box-reflect实现倒影的实例,具有一定的参考价值,有需要的可以了解一下。
qt4-webkit-whitepaper
WebKit-r55270.tar.bz2,前几天刚下的webkit的源码,在针对mips的平台编译已过通过,大家可以试试。
html5-webkit-cube-slider.zip