chromium整个历史记录功能比较复杂,包括前进后退,浏览历史,用插件以后还可以显示树形的浏览记录。这里只分析一下我所看到的部分代码,没有搞的特别清楚,主要跟前进后台的功能相关。
其实在webkit中已经支持前进后退,浏览历史等功能。这些类主要集中在third_party/WebKit/Source/WebCore/history/目录下。其中HistoryItem类标识一条基本的历史记录,除了URL外,它还主要包括缩放比例,滚动位置,表单数据等信息。该目录下的其他类:BackForwardList,BackForwardController,CachedFrame,CachedPage等也基本可以做到望文知义。所以说前进后退的逻辑webkit内核已经实现好了,只需要调用goBack, goForward接口就可以了。
但是,chromium并没有用webkit的历史记录功能,该目录下除了HistoryItem类外,其他都被无情的抛弃掉了。它在content端自己实现了历史记录的逻辑,包括可以自己定义前进后退功能的实现方法,而不仅局限于遵循webkit的逻辑。
content端相关类主要有: