chromium之jumplist

2023-11-09

chrome在win7及之后系统添加jumplist功能。jumplist即系统任务栏相关的功能,包括任务栏图标、鼠标放置后视图、进度条、右键菜单等等。

路径:..\chromium\src\chrome\browser\win\jumplist.h
     ..\chromium\src\chrome\browser\win\jumplist.cpp
     
主要函数:
explicit JumpList(Profile* profile);    // 显示构造函数
~JumpList() override;                   // 重写(父类的)析构函数

// TopSites 常去网站???
void TopSitesLoaded(history::TopSites* top_sites) override;                               // 重写topsites ???
void TopSitesChanged(history::TopSites* top_sites, ChangeReason change_reason) override;  // 修改topsites

// tabrestore 用于最近常去网站的恢复???
void TabRestoreServiceChanged(sessions::TabRestoreService* service) override;        // ???
void TabRestoreServiceDestoryed(session::TabRestoreService* service) override;

void InitializeTimerForUpdate();    // 一个一次性的初始化jumplist的函数。如果队列已有则清除后发送一个新的请求。

void ProcessNotifications();       // 进程更新通知。

void ProcessTopSitesNotification();     // topsites服务通知

void ProcessTabRestoreServiceNotification();      // tabrestore服务通知

void OnMostVisitedURLsAvailable(const history::MostVisitedURLList& data);       // 回调,最常去网站的URL

// ShellLinkItem ???
bool AddTab(const sessions::TabRestoreService::Tab& tab, size_t max_items); 
                                                                      // 添加一个新的ShellLinkItem,用于标签的跳转列表数据
                                                                      // 所以不会超过maxitems。

void AddWindow(const sessions::TabRestoreService::Window& window, size_t max_items); 
                                                                      // 在窗口的每个选项卡中添加一个新的ShellLinkItem到JumpList数据
                                                                      // 如果这样做不会超过maxitems。

void StartLoadingFavicon();       // 加载网站图标

void OnFaviconDataAvailable(const favicon_base::FaviconImageResult& image_result);   // 回调,当加载一个网站图标时用于历史服务

void PostRunUpdate();   // 发送更新和删除jumplist的相关文件夹的命令

void OnRunUpdateCompletion(std::unique_ptr<UpdateTransaction> update_transaction);   // 回调,合并更新操作结果,并返回实例

void CancelPendingUpdate();    // 结束一个未执行的更新

void Terminate();   // 终止函数

static void RunUpdateJumpList(...);     // 更新jumplist 1.创建新的jumplist没有图标,2.通知操作系统,3.删除过时图标
 
static void CreateNewJumpListAndNotifyOS(...);    // 创建jumplist

static int CreateIconFiles(...);   // 创建图标文件

static void DeleteIconFiles(...);       // 删除图标文件

 

jumplist开发的主要cc文件集中在 jumplist.cc及jumplist_updater.cc文件。涉及jumplist类,JumpListUpdater类,及IShellList类。

大概逻辑及用到的主要函数:
1. 执行jumplist.cc中 jumplist()构造。构造中包括注册jumplist等等系列操作
2. 执行jumplist.cc中 create...()函数。用于create icon,url,command等等。
3. 执行jumplist.cc中,UpdateTaskCategory()函数。该函数用于更新tasks栏的相关数据(tasks开发时主要修改该函数)。
4. 执行jumplist_updater.cc中,AddShellLink()函数。该函数主要调用COM IShellList接口,实现jumplist,核心。
5. 执行jumplist.cc中,ShutDown()函数。该函数调用Terminate()执行退出操作。

其中,tasks列的缓存可能由系统保存
通过代码刷新缓存的方式:
   屏蔽 jumplist.cc文件中删除判断:
   1. begin_update_timer.Elapsed() >= kTimeOutForBeginUpdate
   2. add_custom_category_timer.Elapsed() >= kTimeOutForAddCustomCategory  
   3. !jumplist_updater.AddCustomCategory(
          l10n_util::GetStringUTF16(IDS_RECENTLY_CLOSED), recently_closed_pages, kRecentlyClosedItems))
   防止该三处直接return,导致jumplist更新tasks栏不生效
   
   之后,反复对jumplist右键点击 新建窗口、浏览器等按钮,然后关闭重复按钮,可以激活对jumplist的刷新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

chromium之jumplist 的相关文章

随机推荐

  • DC综合脚本中文详细解释

    script for Design Compiler DC综合编译脚本 language TCL 语言说明 Usage 使用说明 1 make sure the lib in the current directory 确保设计库在正确的文
  • Xcode项目设置项中的LLVM

    LLVM是构架编译器
  • html5开发手机打电话发短信功能,html5的高级开发,html5开发大全,html手机电话短信功能详解

    原文地址 http blog csdn net xmtblog article details 32931905 在很多的手机网站上 有打电话和发短信的功能 对于这些功能是如何实现的呢 其实不难 今天我们就用html5来实现他们 简单的让你
  • Angular--官方文档之 Angular CLI

    学习Angular官方文档的时候 参考https angular cn guide quickstart 这个快速开发的文档 对于我这个AngularJs小白在看了Angular菜鸟教程后 只能说可以简单的运用一下 看到一些专业术语 我也是
  • 嵌入式Linux(四)—嵌入式C语言(杂项/数据类型关键字)

    目录 杂项关键字 sizeof Return 数据类型关键字 char 进制 int long short Unsigned signed Float double void 自定义数据类型 Struct Union enum typede
  • cppcheck使用

    cppcheck使用 cppcheck说明 cppcheck能够检查出来的问题 cppcheck使用并生成html结果 生成html结果 cppcheck说明 cppcheck主要用来检查c c 代码的 本文主要讲述cppcheck用命令行
  • Flutter 开发小结

    接触 Flutter 已经有一阵子了 期间记录了很多开发小问题 苦于忙碌没时间整理 最近项目进度步上正轨 借此机会抽出点时间来统一记录这些问题 并分享项目开发中的一点心得以及多平台打包的一些注意事项 希望能对大家有所帮助 UI 组件使用 官
  • Linux 下使用Crontab定时任务同时执行多条定时任务

    Linux 下使用Crontab定时任务同时执行多条定时任务 使用 符连接即可 示例如下 0 6 bea ceos timer bin pb ClosePbManifestTimer sh gt dev null 2 gt 1 bea ce
  • 【高项】质量管理(ITTO)

    过程组 子过程 输入 I 工具和技术 TT 输出 O 规划 1规划质量管理 1 项目章程 2 项目管理计划 需求管理计划 风险管理计划 相关方参与计划 范围基准 3 项目文件 假设日志 需求文件 需求跟踪矩阵 风险登记册 相关方登记册 4
  • QT源码剖析-QT对象通信机制信号槽的绑定具体实现

    本文详细介绍QT核心机制之一 信号和槽 我们在此根据Qt源代码一步一步探究其信号槽的实现过程 核心知识点 模板元编程技术 Qt moc预编译机制 QObject类 目录 1 QObject类介绍 2 相关助手类介绍 2 1 类型 函数指针
  • pip安装出现Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: '

    问题描述 pip安装库或者更新pip版本时出现如下问题 Could not install packages due to an EnvironmentError Errno 2 No such file or directory c us
  • LeetCode 面试题01.09 字符串轮转

    题目 字符串轮转 给定两个字符串s1和s2 请编写代码检查s2是否为s1旋转而成 比如 waterbottle 是 erbottlewat 旋转后的字符串 示例1 输入 s1 waterbottle s2 erbottlewat 输出 Tr
  • 一个独特的开源插件evil.js

    前言 最近发现一个好玩有解压的开源插件 注意 不可使用在正式项目中 这里分享下 gitee地址 evil js 此代码仅在周日的时候执行以下逻辑 声明 请勿用于任何项目 如果导致任何问题 与本人无关https gitee com haoxi
  • 矩阵LU分解

    一 矩阵LU分解定理 设A为n阶矩阵 如果A的顺序主子式Di 0 i 1 2 n 1 则A可以分解为一个单位下三角矩阵L和一个上三角矩阵U的乘积 且这种分解是唯一的 即A LU 二 矩阵LU分解Python代码 自己原创 def lu de
  • 第十二章 - 条件判断(case when 和 if)和视图

    第十二章 条件判断 case when 和 if 和视图 view if 的用法 case when 的用法 视图 view 的用法 if 的用法 通过使用if函数可以实现数据二分类或者多分类的功能 比如按年龄区分青年 中年 老年 或者按价
  • Python2_Pandas库(数据读取)

    1 数据读取 food info csv数据 import pandas food info pandas read csv food info csv read csv函数读取csv数据文件 print type food info Da
  • 汇编笔记——判断大小

    判断指令 CMP AL num 判断条件 这里的JA JB JE JMP相当于goto命令 JA L0 A gt above AL比num大 执行L0 JB L1 B gt below AL比num小 执行L1 JE L2 E gt equ
  • 树结构转List

    使用LinkedList效率更高 1 单个顶级节点 public static List
  • 网络安全(黑客技术)自学笔记

    目录 一 自学网络安全学习的误区和陷阱 二 学习网络安全的一些前期准备 三 网络安全学习路线 四 学习资料的推荐 想自学网络安全 黑客技术 首先你得了解什么是网络安全 什么是黑客 网络安全可以基于攻击和防御视角来分类 我们经常听到的 红队
  • chromium之jumplist

    chrome在win7及之后系统添加jumplist功能 jumplist即系统任务栏相关的功能 包括任务栏图标 鼠标放置后视图 进度条 右键菜单等等 路径 chromium src chrome browser win jumplist