一、概述
之前有介绍过chromium的界面层的相关知识,这篇文章则是重点介绍chromium中书签这一个模块,不仅有界面层的知识,还会较多的介绍逻辑层的一些内容。接下来会详细介绍chromium中书签功能的详细实现。主要问题有:
1、书签数据在硬盘和内存中存储结构;
2、初始化过程;
3、相关操作的实现步骤;
4、线程模型;
5、书签同步。
二、书签结构综述
Bookmark界面层在..\src\chrome\browser\ui\views\bookmarks中实现。Bookmark逻辑层在..\src\chrome\browser\bookmarks 中实现,包括读写书签文件,书签导入导出等。
书签在整个工程中是chrome特色功能,它包括三种类型,书签栏、其他、和“mobile”。书签栏管理用户创建的所有书签
作为chromium拓展中心的一个功能,整体流程图如图:
在书签模块中,其中主要的两个模块是底层数据处理和界面显示,具体实现分别在BookmarkModel和BookmarkBarView中,它们之间采用的是observer设计模式,BookmarkModel(具体目标),BookmarkBarView(具体观察者)。
三、书签存储结构
书签的存储结构需要从配置文件中结构及内存中存储结构两方面分析。
书签配置文件中存储在本地Bookmarks中,以JSON的格式存储。并在书签模块启动的时候load文件中的书签数据。本地JSON书签数据如下:
"children": [ {
"date_added": "12994954482846617",
"id": "7",
"name": "Google",
"type": "url",
"url": "http://www.google.com.hk/"
},
在内存中每个节点对应一个BookmarkNode。其中包含了favicon, id and type等节点信息。
在BookmarkModel中定义了如下几个节点:
BookmarkNode root_;
BookmarkPermanentNode* bookmark_bar_node_;
BookmarkPermanentNode* other_node_;
BookmarkPermanentNode* mobile_node_;
之前有介绍过chromium的界面层的相关知识,这篇文章则是重点介绍chromium中书签这一个模块,不仅有界面层的知识,还会较多的介绍逻辑层的一些内容。接下来会详细介绍chromium中书签功能的详细实现。主要问题有:
1、书签数据在硬盘和内存中存储结构;
2、初始化过程;
3、相关操作的实现步骤;
4、线程模型;
5、书签同步。
二、书签结构综述
Bookmark界面层在..\src\chrome\browser\ui\views\bookmarks中实现。Bookmark逻辑层在..\src\chrome\browser\bookmarks 中实现,包括读写书签文件,书签导入导出等。
书签在整个工程中是chrome特色功能,它包括三种类型,书签栏、其他、和“mobile”。书签栏管理用户创建的所有书签
作为chromium拓展中心的一个功能,整体流程图如图:
图1 书签整体流程图
在书签模块中,其中主要的两个模块是底层数据处理和界面显示,具体实现分别在BookmarkModel和BookmarkBarView中,它们之间采用的是observer设计模式,BookmarkModel(具体目标),BookmarkBarView(具体观察者)。
三、书签存储结构
书签的存储结构需要从配置文件中结构及内存中存储结构两方面分析。
书签配置文件中存储在本地Bookmarks中,以JSON的格式存储。并在书签模块启动的时候load文件中的书签数据。本地JSON书签数据如下:
"children": [ {
"date_added": "12994954482846617",
"id": "7",
"name": "Google",
"type": "url",
"url": "http://www.google.com.hk/"
},
在内存中每个节点对应一个BookmarkNode。其中包含了favicon, id and type等节点信息。
在BookmarkModel中定义了如下几个节点:
BookmarkNode root_;
BookmarkPermanentNode* bookmark_bar_node_;
BookmarkPermanentNode* other_node_;
BookmarkPermanentNode* mobile_node_;