chromium 书签实现机制

Chromium 的书签管理通过 BookmarkBarView 类实现,它作为 BookmarkModelObserver 的观察者,负责书签界面的展示和用户交互。书签栏内子文件夹的展示通过菜单进行,点击或拖动书签节点至文件夹会触发弹出菜单。具体包含两个菜单控制器:bookmark_menu_ 处理点击文件夹的菜单,而 bookmark_drop_menu_ 处理拖拽书签到文件夹时的菜单。
摘要由CSDN通过智能技术生成
一、概述
       之前有介绍过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_;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值