绘制超文本标记语言内容的制作方法

文档序号:6456651阅读:263来源:国知局
专利名称:绘制超文本标记语言内容的制作方法
绘制超文本标记语言内容
背景技术
本发明涉及绘制超文本标记语言(HTML)内容。HTML是一种 通常用于创建万维网上文档的写作语言。HTML使用各种标签和属 性来定义Web文档的结构和布局,在处理HTML内容时,HTML绘 制引擎对其进行解释。通常,Web浏览器使用HTML绘制引擎将 HTML内容绘制到显示设备。在其他情况中,在将HTML内容显示 给用户之前,已将HTML内容静态地绘制为另一格式,诸如使用由 California, San Jose的Adobe Systems ^>司才是供的ADOBE ACROBAT 中的Web Capture ( Web捕捉)特征。
此外,在绘制HTML内容时,HTML绘制引擎通常使用文档对 象模型(DOM),例如在绘制动态HTML (DHTML)时使用DOM 在将Web页面下载至Web浏览器后动态地改变Web页面的外观。 DOM维持内部文档表示,并且实现DOM应用程序接口 (API)。 嵌入在HTML文档中的JavaScript可以通过DOM API直接访问当前 文档,并且做出改变或者读取内容。
虚拟机(VM)是自包含的操作环境,其行为如同独立的计算机。 例如,JAVA⑧小应用程序运行在JAVA⑧虚拟机(JVM)(可从Sun Microsystems公司获得)中,其已针对多种不同的计算机平台而实现。 JVM为大部分操作系统提供运行时环境和Java解释器,这些操作系 统包括Windows OS, Mac OS,以及Linux OS。而且,JVM 已经实现为Web浏览器插件。
Flash⑧播放器(可从Adobe Systems公司获得)是另 一种虚拟机, 其用于运行或解析包括ActionScript或Shockwave Flash ( SWF )的 Flash⑧文件。Flash⑧播放器也已经实现为Web浏览器插件。因此, 通过Web浏览器绘制的HTML内容可以包括SWF数据。

发明内容
本说明书描述了涉及绘制超文本标记语言内容的技术。总体上, 本说明书描述的主题的一个方面可以在一种方法中实现,该方法包
括在HTML绘制引擎中,将超文本标记语言(HTML)内容绘制 为矢量图形绘制引擎的图元;在矢量图形绘制引擎中,绘制该图元 以提供用户界面;经由用户界面接收输入事件;在HTML绘制引擎 中,基于输入事件确定用户界面的外观变化;以及根据外观变化来 更新至少 一个图元以便通过矢量图形绘制引擎进行绘制,从而更新 用户界面。此方面的其他实施方式包括相应的系统、装置和计算机 程序产品(在计算机可读介质上编码的计算机程序产品,可操作以 使得数据处理装置执行该方法的操作)。
这些以及其他实施方式可选地可以包括下列特征中的一个或多 个。所述确定可以包括确定该外观变化仅影响用户界面的一部分, 所述更新可以包括仅更新与所述变化影响的用户界面的部分相交的 图元。该方法还可以包括在H T M L绘制引擎所使用的第 一 脚本引擎 与矢量图形绘制引擎所使用的第二脚本引擎之间进行关联(bridge )。 关联可以包括生成用于第一脚本引擎的对象,其表示第二脚本引 擎中的对象;以及生成用于第二脚本引擎的对象,其表示第一脚本 引擎中的对象。
该方法还可以包括使第一脚本引擎使用第二脚本引擎的无用单 元回收站(garbage collector )。该方法可以包括交叉检查用于第一 和第二脚本引擎的对象的安全上下文信息,从而维护安全模型的完 整性。而且,该方法可以包括交叉4企查用于HTML内容以及矢量图 形绘制引擎的本地内容的域信息,从而维护安全模型的完整性。
此外,本"^兌明书所描述的主题的另 一方面可以在一种系统中实 现,该系统包括输入设备;显示设备;包括操作系统和虛拟机的 计算机平台,该虚拟机被配置用于在计算机平台与被编程以在虚拟 机上运行的软件应用之间创建虚拟化环境;以及该虚拟才几可操作用于使用该输入设备和显示设备通过矢量图形绘制引擎来绘制和动态
更新交互式HTML内容,从而生成用于该软件应用的用户界面。虚 拟机可以包括HTML绘制引擎,其配置用于将交互式HTML内容绘 制为矢量图形绘制引擎的图元,并且该虚拟机可以包括矢量图形绘 制引擎,其配置用于绘制该图元以提供用户界面。
HTML绘制引擎可以配置用于保持所绘制图元的有关信息,以 用于确定由输入事件导致的用户界面的外观变化仅影响该用户界面 的 一 部分,以及用于仅更新与该变化影响的用户界面的部分相交的 图元。虛拟机可以包括HTML绘制引擎所使用的第一脚本引擎以及 由矢量图形绘制引擎所使用的第二脚本引擎,并且该虚拟机可以配 置用于使用第一脚本引擎和第二脚本引擎之间的关联对象。
第一脚本引擎可以配置用于使用第二脚本引擎的无用单元回收 站,并且虛拟机可以配置用于交叉检查用于第一和第二脚本引擎的 对象的安全上下文信息,从而维护安全模型的完整性。虚拟机可以 配置用于交叉检查用于交互式HTML内容和矢量图形绘制引擎的本 地内容的域信息,从而维护安全模型的完整性。而且,计算机平台、 输入设备和显示设备可以是一个个人计算机。
可以实施此说明书所描述的主题的特定实施方式以实现以下优 点中的一个或多个。软件平台可以支持基于HTML的桌面应用,这 些桌面应用独立于下层计算机平台(硬件/固件+操作系统)。基于 HTML的桌面应用可以在操作系统内像正常桌面应用一样工作(例 如,具有安装包、桌面图标以及通过操作系统的添加删除程序工具 的卸载选项)。桌面应用可以使用HTML来生成其用户界面,这潜 在地包括使用HTML生成应用的整个用户界面,使用HTML生成 应用的部分用户界面,或者在应用的用户界面内嵌入Web浏览器类 型的元素。
软件平台可以使用跨平台运行时(runtime),其使用矢量图形 绘制引擎来显示桌面应用的图形用户界面。除了HTML之外,运行 时可以支持其他基于Web的跨平台技术,诸如脚本语言(例如,JavaScript和ActionScript)、跨平台文档格式(例如,便携式文档格 式(PDF))以及跨平台解释代码(例如,Flash⑧代码)。因此,运 行时可以允许使用Web技术来创建桌面应用,并且许多熟悉Web技 术并且能够创建Web站点和Web应用的软件工程师和设计师也可以 创建完全控制其外观、并且在未连接至网络的计算机上运行的桌面 应用。而且,系统可以管理授予此类应用的权限,其中授予该应用 的权限级别可以高于授予应用所加载的内容的权限(例如,可以授 权应用访问本地磁盘,而可以拒绝从远程网站加载的HTML的此类 访问),并且可以允许用户或系统管理员如所希望的配置此类权限
级别D
本发明的一个或多个实施方式的细节在所附附图以及下文的描 述中阐述。本发明的其他特征、方面和优点从描述、附图以及权利 要求书中将变得明显。


图l示出7包括用作应用软件的软件平台的虚拟机的示例系统。
图2示出了进行交互以呈现用户界面的超文本标记语言引擎与 矢量图形引擎的示例组件。
图3示出了通过矢量图形绘制引擎来绘制超文本标记语言内容 的示例过程。
图4示出了在第一脚本引擎与第二脚本引擎之间进行关联的示
例过程。
具体实施例方式
图1示出了包括用作应用软件的软件平台的虚拟机的示例系统。 计算机平台100是具有适当硬件的数据处理装置,其包括用于该数 据处理装置的特定才喿作系统(OS)120(例如,Windows OS, Mac OS,或Linux OS)。计算机平台100包括虚拟机110。虛拟机110 是运行时环境,其在计算机正在运行时为进程或程序提供软件服务。虛拟冲几110可以包括运行时库(或者可以—见为与运行时间库一样的 库),该运行时库是在程序运行时支持该程序的工具功能的集合,
其经常与OS 120—起工作以提供便利。虛拟机110可以是运行 Flash⑧应用的、基于客户端的软件,支持矢量和光栅图形、双向流 传输音频和视频以及一个或多个脚本语言(例如,JavaScript和 ActionScript)。而且,虚拟机110可以将Flash⑧应用与OS深度整 合,从而提供诸如文件系统访问、多窗口、后台运行等服务。
应用150可以依赖运行时库来进行才乘作;例如,应用150可以 是Flash⑧应用,其使用SWF并且在使用基于客户端的运行时库的计 算机上运行,该运行时库运行无论是在线或离线都与web浏览器分 离的Flash⑧应用。此处所使用的"应用,,是指计算机程序,用户将 其理解为用于所定义目的的确切的计算机工具。尽管应用150可以 依赖于虛拟机110而在计算机平台100上操作,但是应用150也可 以控制其外观,而且,即使在计算机平台100未连接到网络时应用 150也可以在其上运行。因此,可以将应用15(H见为计算沖几平台100 内的桌面应用,即使应用150可以运行在虛拟机110上并且因而是 平台无关的。
应用150包括超文本标记语言(HTML)内容155,其用于生成 应用150的用户界面180。应用150也可以使用其他代码内容来生成 用户界面180。例如,应用150可以包括在生成用户界面180时使用 的SWF代码,并且HTML内容155可以包括在该SWF代码中。
虚拟机110可以包括HTML绘制引擎130和矢量图形绘制引擎 140,这两个引擎进行交互以便在显示设备160上呈现用户界面180, 以及基于结合输入设备170而经由用户界面180接收的输入事件来 更新用户界面180。操作系统120可以接收来自输入设备170的输入 事件,并将这些输入事件传递给虚拟机110。虚拟机110可以将这些 事件给予包括矢量图形绘制引擎14 0的代码,其继而可以酌情将这 些事件传递给HTML绘制引擎130。
显示设备160可以包括CRT (阴极射线管)或LCD (液晶显示)监视器以用于向用户显示信息,并且输入设备170可以包括键盘和 指示设备(例如鼠标或轨迹球),用户可以通过它们来向系统提供
输入。应当理解,计算机平台100、显示设备160以及输入设备170 可以一起包括在单个系统或设备中,举几个例子来说,诸如个人计 算机、移动电话、个人数字助理(PDA)、移动音频播放器、全球 定位系统(GPS)接收^L。
可以通过多种方式使HTML内容155与用户进行交互。HTML 内容155可以包括DHTML,可以包括脚本(例如JavaScript),可 以包括CSS (级联样式表),或者可以包括其某种组合。HTML引 擎130可以将交互式HTML内容155绘制为矢量图形引擎140的图 元。这些图元可以包括矢量图形(例如,矩形、椭圆形和字体)以 及光栅图形(例如,位图或便携式网络图形(PNG)图像)。将会 理解,光栅图形与矢量图形的区别在于矢量图使用诸如曲线和多 边形的几何对象来表示图像,而光栅图形使用像素网格来表示图像。 尽管如此,矢量图形绘制引擎MO所支持的图元可以包括矢量图形 和光栅图形二者。
HTML引擎130还可以将对外部资源(图像、框架、样式表、 脚本等)的请求转发至矢量图形引擎140或虛拟机IIO的相关组件。 这么做可以解决安全性问题(下文将详细解释),并且还可以改善 最终用户的体验。例如,当应用150连接至网络(例如,互联网) 上的安全站点时,应用150的用户通常必须4定入密码。如果HTML 引擎150以不同于矢量图形引擎140的方式连接至网络,则用户可 能必须两次键入她的密码,以访问HTML内容以及矢量图形引擎140 的本地内容二者。然而,通过将来自HTML引擎130的资源请求转 发至矢量图形引擎140(或相关组件),可以跟踪所输入的密码并且 用户只需要键入一次她的密码。
虛拟机IIO可以使用受管理的环境,其中授予应用150的权限 可以由用户或系统管理员在每个应用的基础上来配置。例如,可以 不允许作为用户U而运行的应用A读耳又或写入"C:\ProgramFiles"中的文件,但可以允许作为用户U而运行的应用B读取"C:\ProgramFiles"中的文件。这些应用的运行权限可以高于基于web的应用(例如,它们可以读取和写入本地》兹盘),同时它们有可能轻易地加载应当阻止其使用该高级权限的内容。例如,通过HTML编写的桌面应用可以打开新窗口并且将www-cnn-com 加载到该新窗口中。在这种情况下,可以允许桌面应用的HTMLf^码读取和写入本地》兹盘,同时可以阻止来自www-cnn-com的HTML代码读取或写入本地f兹盘。这可能是虚拟机110的默认配置,然而,这种配置也可能被用户或系统管理员改变,或者可以被某种机制改变,这样,具有特定权限级别的代码可能在运行时将此权限级别授与其他代码(那些不具有此权限级别的代码)。
此外,矢量图形绘制引擎140可以使用保持的(retained)图形模式,在该模式中,在框架(frame)的生命周期内,对绘制到该框架上的图元进行跟踪记录。当框架改变时,矢量图形绘制引擎140仅需要修改和更新具有新状态的图元。例如,矢量图形绘制引擎140可以是Flash⑧绘制引擎。
可以将保持的图形模式扩展到HTML绘制引擎130,使得HTML引擎130跟踪记录HTML内容155与绘制到矢量图形绘制引擎140的图元之间的关系。当改变用户界面180的HTML元素时(例如,由于鼠标在滚动元素上移动或者菜单元素弹出),HTML引擎130仅需要重新生成该改变所影响的相应图元,并将这些图元转发给矢量图形引擎140。因此,HTML绘制引擎130仅需要更新那些与该改变所影响的用户界面部分相交的图元。
图2示出了 HTML引擎210和矢量图形引擎230的示例组件,其进行交互以呈现用户界面270。 HTML引擎210包括用于给定HTML内容集合的DOM 220,其可以包括第一脚本类型(例如,JavaScript)的脚本。矢量图形引擎230包括第二脚本类型(例如,ActionScript)的脚本的对象模型240的实例。脚本对象模型240包括用于生成用户界面270的显示控制260。显示控制260可以是脚本对象模型240中的显示类的实例,该脚本对象模型240提供基本显示列表构建块显示列表节点,其可以显示图形,也可以包含子节点。
可以通过与DOM 220对接的HTML控制250来扩展显示控制260。例如,HTML类可以扩展显示类,并且向虛拟机110中的HTML功能提供应用程序接口 (API)。作为显示控制类的扩展,只要将HTML控制构建为可以具有孩子的任何其他显示控制260的孩子,则HTML控制类允许将HTML控制250添加到显示列表中。
以下描述着重于允许HTML控制类的用户(例如,桌面应用编程者)在这种基于类的方案上下文中实现各种行为的细节。然而,应当理解,还可以有其他实现。例如,可以^使用基于事件的方案。事件的优点在于挂起事件处理机通常比较简单,而且事件可以由不止一个监听者进行处理。然而,使用事件处理机将状态返回给事件的分发者可能产生问题,因为在此类实现中返回状态通常涉及传送布尔值,其指示分发者是否应当在分发该事件之后执行某些默认逻辑。
还可以使用基于接口的方案。这种方案可以优于基于事件的方案,因为接口通常比事件更加地类型安全,可以更容易返回状态,并且仅调用一个处理机(相比于针对一个事件可以注册任意数目的处理机的事件而言)。然而,基于接口的方案可能要求新类的规范,同时还可能危及在稍后将向接口添加其他方法的情况下的向后兼容性。
相反,使用子类,所需要的行为可以实现为在此处所描述的HTML控制类上的可重载(override )方法。允许HTML控制的用户对HTML控制划分子类并且重载其某些方法,这可以提供利用接口来实现所需行为的大部分甚至全部益处。如果新的行为将由HTML控制的用户在将来实现,则已有应用代码将不必改变。事实上,窗口对象以及默认DOM事件处理机的所有行为都可以实现为HTML控制上的可重载方法。HTML控制可以允许HTML控制中的第 一脚本类型代码(例如,JavaScript)保持对第二脚本类型的对象的引用、调用第二脚本类型的对象的方法以及访问第二脚本类型的对象的属性。HTML控制还可以允许第二脚本类型代码(例如,ActionScript)保持对第一脚本类型代码的对象的引用、调用第一脚本类型代码的对象的方法以及访问第一脚本类型代码的对象的属性。例如,ActionScript可以经由windowObject (窗口对象)属性来访问在HTML控制中运行的JavaScript的窗口对象;ActionScript继而可以向该窗口对象添加属性,其值是对ActionScript对象(包括方法封闭)的引用。
外露给第一脚本类型对象模型的虚拟机的API可以是与第一脚本引擎关联的第二脚本类型函数闭包。第二脚本类型代码也可以使用windowObject属性来访问HTML控制所包含的HTML中的顶层窗口对象的第 一 脚本类型对象。第二脚本类型代码继而可以在该窗
口对象上设置附加属性。这些附加属性可以具有值,这些值是可以从第一脚本类型代码调用的函数闭包。这些函数闭包可以返回与第一脚本引擎关联的第二脚本类型对象。通过找到用于HTML控制的窗口对象中的第 一脚本类型对象的构造器,第二类型的脚本可以实例化第一类型的脚本对象。
第二类型脚本可以在任何时候访问窗口对象,然而,可以释方文HTML控制对窗口对象的引用,并且可以在向HTML控制加载新内容的任何方法之后不久或者在其期间重新创建新的窗口 。"完成的"事件可以发信号通知HTML的所有加载时间处理已经完成,并且这还可以是第二类型脚本操纵第一类型脚本对象模型的好时机。而且,只要HTML窗口对象被引用,则可以调用安全管理器来确保允许调用方访问所讨论的HTML窗口的对象模型。这种在第一脚本引擎和第二脚本引擎之间关联、同时维护安全模型完整性的其他示例细节在下文中结合图4进行描述。
图3示出了通过矢量图形绘制引擎来绘制超文本标记语言内容的示例过程。HTML内容可以在HTML绘制引擎中被绘制为矢量图形绘制引擎的图元310。这可以包括当矢量图形绘制引擎的图元中包括光栅图形时,将HTML内容绘制为一个或多个光栅图像。这可以包括将HTML内容绘制为矢量图形,从而可以得到清晰视图以及改善的性能(例如,对于嵌入在HTML内容中的任何视频)。
可以在矢量图形绘制引擎中绘制图元以提供用户界面(UI) 320。例如,上述HTML控制默认地可以是嵌入式浏览器,其功能在HTMLIFRAME元素之后建模。嵌入式浏览器通常是用于实现将HTML绘制为应用UI的一部分的容器的功能超集。因此,HTML控制可以用于通过矢量图像引擎来绘制HTMLUI,而无需对HTML控制划分子类。如果不希望任一 HTML控制的行为的默认实现,则可以将用于UI的HTML编写为不执行该行为。例如,如果开发者不希望用户能够操纵该控制,则开发者可以选择编写该HTML使得其不包含外部纟连才妾禾口^j" window.location (窗口.4立置)、window.history.go (窗口.历史.进行)等的JavaScript调用。如果开发者希望更多控制,则她可以对HTML控制划分子类并且重载实现各种行为的方法(诸如在点击链接时发生的事情)。
可以经由用户界面接收输入事件330。可以在HTML绘制引擎中基于该输入事件来确定用户界面的外观变化340。根据该外观变化,可以更新至少一个图元,以便矢量图形绘制引擎进行绘制,从而更新用户界面350。该确定可以包括确定该外观变化仅影响用户界面的 一部分,而更新可以包括仅更新与受该变化影响的用户界面部分相交的图元(例如,仅更新该变化影响的矢量图形,或者仅更新该变化影响的用户界面的光栅图形区域)。
更新可以设计成重新生成尽可能小的用户界面以提高系统性能。例如,对于由HTML绘制引擎发送到矢量图形绘制引擎的每个图元(例如,矩形、椭圆形、图像等),HTML绘制引擎可以在用户导^:离开HTML内容以前存^^者所维护的引用;并且当对HTML内容的上下文中的用户界面发生变化时,仅需更新该变化所影响的图元。例如,对于HTML内容的每个DOM节点,可以附加上指针以 标识给定节点生成的一个或多个图元。当UI中的光标移动到对应于 给定DOM节点(例如,对应于菜单项的DOM节点)的UI元素之 上时,该DOM节点接收事件。DOM节点可以包括响应于该事件而 产生颜色变化的JavaScript,在这种情况下,可以定位表示该给定节 点的图元,对颜色进行更新,并且可以将新图元发送到矢量图形引 擎,以便绘制到显示器。备选地,可以使用单个图元(单个光栅图 像)来实现UI,该图元继而针对UI中的任何变化进行更新。
在上面结合图2描述的HTML控制的上下文中,HTML控制可 以使某些行为的实现服从于HTML控制的用户。这些行为可以是用 于DOM事件的默认事件处理机,或者是JavaScript对象模型的方法 和属性的实现。HTML控制的用户可以这样来实现这些行为对 HTML控制划分子类,并且重载与其希望控制的行为相对应的第二 类型脚本方法(例如,ActionScript方法)。
当HTML文档中的JavaScript不处理鼠标或键盘事件时,该事件 可以由HTML引擎中的默认事件处理机来处理。对于链接等,默认 动作可以是导航至新的URL (通用资源定位符)。HTML控制所使 用的HTML引擎可以决定何时调用默认动作。在点击链接的情况下, JavaScript onClick (点击)处理机可以在默认处理机执行之前执行,
调用默认处理机,那么HTML控制上的第二类型脚本方法(例如, ActionScript方法)可以由HTML控制来调用。
类似地,如果JavaScript没有处理鼠标按下和鼠标移动到图像上, 则嵌入式浏览器可以告知虚拟机的拖拽管理器启动拖拽循环,从而 可以该图像拖拽到桌面上或接受图像的另一应用上。HTML控制可 以允许HTML控制的用户在第二类型脚本语言(例如,ActionScript) 中实现这些默认行为。
当已调用默认处理机时,事件可能已经通过了 HTML内容中的 起泡(bubble)阶段。默认地,所有起泡事件可以将HTML控制主体浮升至安全性检查,诸如下文进一步描述的。起泡事件可以浮升 通过每个显示列表对象,但是每个显示列表对象上的事件处理机仅 在这些处理机有权访问事件目标的对象模型时才被调用。如果起泡 事件浮升上来,则在该事件浮升至显示列表的顶层之前不需要执行
默认行为。然而,如果在该事件对象上调用preventDefault (阻止默 认行为),则不调用这些默认行为处理机。
当HTML控制在捕捉阶段接收到事件时,HTML控制可以将该 事件转发至HTMLDOM。此时,HTML引擎可以找到包含该HTML 控制内事件的目标的DOM(也即,目标DOM)。目标DOM可以是 IFRAM元素或FRAME元素的DOM。 HTML引擎继而可以通过目标 DOM来执行捕捉、目标和起泡阶段。目标阶段可以导致事件被转发 至运行捕捉、目标和起泡阶段的另一 DisplayObject (显示对象)树。 在目标DOM的起泡阶段完成该事件之后,可以完成包含该HTML 控制的显示列表中的事件的捕捉阶段。如果事件浮升出HTML控制 中的目标DOM,则HTML控制可以允许事件浮升出该HTML控制, 并且上升到包含该HTML控制的显示列表。注意,HTML通常不允
件进行捕获或者起泡。 J' '、、'、' 、
源自HTML控制中的事件(错误事件、异常事件以及用户定义 的事件)如果浮升通过HTML DOM,则其可以浮升出HTML控制。 如果HTML控制的用户从不希望特定类型的事件浮升出HTML控 制,则她可以将HTML控制放置在阻止此类事件浮升出容器的容器 内。
当HTML是依赖于虚拟机的桌面应用的根内容时,运行时可以 加载预先存在的代码(例如,预先储存的SWF),该代码是运行时 的 一 部分。此代码可以对实现windowOpen (窗口打开)、 windowMoveTo (窗口移动至)、windowResizeTo (窗口调整大小至) 以及windowClose (窗口关闭)的HTML控制的子类进行实例化。 可以实现这些方法以用于打开新窗口 、移动窗口以及调整窗口大小。此代码还可以支持将所有运行时API注入到第一脚本类型(例如,
JavaScript)对象模型中。运行时API可以添加至与才艮HTML文件具 有相同起源域的所有IFRAME和FRAME元素的对象才莫型。预先存 在的代码可以被指派给与根HTML内容相同的安全域。当任何框架 中的第一类型脚本(例如,JavaScript)调用运行时方法时,运行时 方法可以利用堆栈上的任意第一类型脚本(例如,JavaScript)或第 二类型脚本(例如,ActionScript)代码的最小权限来执行。运行时 方法本身可以位于运行时的安全上下文中。
可以通过交叉检查HTML内容以及矢量图形绘制引擎的本地内 容的域信息来维护安全模型的完整性。当实现将HTML内容嵌入到 矢量图形绘制引擎的本地内容的能力时(例如,嵌入在Flash⑧内容 中的HTML),系统应当防止屏幕截图类的攻击,在这类攻击中, 本地内容的作者即使在不合适的情况下也可以有权访问嵌入的 HTML内容。这可以通过记录HTML引用的任何可^见资源(例如, 图像、框架、HTML自身等等)的域来加以阻止。当本地内容试图 截取HTML的屏幕截图时,运行时可以进行检查,以确保本地内容 与所引用HTML的所有可视资源来自相同的域。如果本地内容来自 与任何可视资源不同的域,则可以阻止屏幕截图操作。备选地,可 以记录与HTML关联的所有资源的域,包括非可视资源(例如,外 部脚本、外部样式表,等等)。
而且,HTML引擎可以具有在虛拟机的安全管理器之上实现的 HTML安全模型。每个图像(图像标签、背景图像、CSS背景图像 等等)和HTML文件(包括IFRAMES和FRAMES )可以具有指派 的安全上下文。可以为JavaScript代码指派代码上下文,该代码上下 文与包括该代码定义(内联或经由外部引用)的HTML文件处于相 同的安全上下文中。无论何时JavaScript引擎在不同的安全上下文中 调用JavaScript函数,都可以推送安全上下文堆栈。
因此,JavaScript执行可以与虛拟机所使用的安全模型完全集成。 对于虛拟机的安全模型,可以实现相同的起源检查。可以修改HTML引擎中针对交叉框架脚本和XMLHTTPRequest的安全性检查,以转 换至虛拟机的安全管理器。可以修改XMLHTTPRequest实现,以使 用虛拟机的安全管理器来决定是否允许针对指定URL的请求继续进 行。当JavaScript设置window.domain (窗口.域)时,也可以通报安
全管理器。
当调用实现部分第一脚本类型对象模型的、HTML控制上的任 何第二脚本类型可重载方法时,可以默认地使该方法利用调用堆栈
上的任何脚本代码的最低权限来运行。然而要注意,实现可重载方
级至该方法所属的安全上下文的级别。IFRAMES和FRAMES可以 具有基于其URL以及该URL的域而指派给它们的安全上下文。
图4示出了在(HTML绘制引擎所使用的)第 一脚本引擎和(矢 量图形绘制引擎所使用的)第二脚本引擎之间进行关联400的示例 过程。可以生成用于第一脚本引擎的对象,其表示在第二脚本引擎 中的对象410。可以生成用于第二脚本引擎的对象,表示在第一脚本 引擎中的对象420。第一脚本引擎可以是JavaScript引擎,而第二脚 本引擎可以是ActionScript引擎。
例如,ActionScript函数可以有一个或多个自变量,并且对于每 个自变量,可以创建JavaScirpt对象。然后,无论何时请求该JavaScript 对象的属性,或对该JavaScript对象调用方法,请求可以被转发回其 对应的ActionScript对象。
因此,可以创建表示所有自变量到ActionScript方法的一组 JavaScript对象。系统可以调入JavaScript引擎以获得合适的代码, 并且可以执行函数。在函数执行时,当函数访问属性或对自变量调 用方法时,这导致将控制传递回ActionScript引擎,在ActionScript 引擎中,获得这些操作的结果,将其与JavaScript对象一起打包并递 送回JavaScript引擎。从JavaScript到ActionScript可以执行相反的 操作。因此,系统可以使用两个不同脚本引擎之间的关联对象,这 些关联对象表示另一脚本引擎中的对象。可以使第一脚本引擎使用第二脚本引擎的无用单元回收站430。
很多脚本语言是"无用单元回收的,,,这意味着脚本引擎自动识别 以前分配的、不再被使用的存储单元,并且清空该存储单元以便将
来使用(无用单元被回收)。典型的无用单元回收站工作如下检 查程序堆栈以找到不再被该程序引用的任何存储对象,其从而指示 这些存储对象是待回收的无用单元。然而,在使用上述关联对象的 情况下,两个不同的脚本引擎可能无法越过关联对象横跨的边界进 行查看,因此关联对象可以避免成为被回收的无用单元。注意,关 联对象可以在C+十中实现,并且作为脚本外露给脚本引擎。
为了解决无用单元回收问题,可以将脚本引擎之一 (例如, JavaScript引擎)改变为使用其他脚本引擎的无用单元回收站。因此, 每当第一脚本引擎希望创建新对象时,并不直接分配存储单元,而 是第一脚本引擎可以向第二脚本引擎请求分配存储单元。第二脚本 引擎可以使用"保守型无用单元回收站,,,其中"保守型无用单元 回收站"是这样的无用单元回收站其查找分配给对象的存储块的 所有部分,以检查可能的指针(例如,每四个字节进行检查,以查 看其是否是针对另一对象的指针),从而找到对对象的引用;由于 存储单元中的对象是已知的,因此地址是已知的,并且通过保守型 无用单元回收站可以识别引用指针的任何潜在对象。通过使第 一 脚 本引擎使用第二脚本引擎所使用的保守型无用单元回收站来分配存 储单元以及管理无用单元的回收,可以找到关联对象,并且在其存 储单元不再使用时可以将其清空。
脚本引擎可以视为解释器,其响应于输入而操纵对象图。与针
对两个不同的脚本引擎具有两个对象图不同,仅需要使用单个对象 图。第一脚本引擎可以配置为通过与第二脚本引擎交互来使用第二 脚本引擎的对象图,因而这两个脚本引擎可以经济而有效地集成。
可以通过交叉检查用于第一和第二脚本引擎的对象的安全性上 下文信息来维护安全模型的完整性440。安全性上下文信息可以包括 域信息(例如,互联网域)、传输协议信息以及对象文件中的设置。在对上述两个脚本引擎进行关联时,第二脚本类型的脚本可以保持 对第 一脚本类型对象的引用、调用第 一脚本类型对象上的方法以及 访问第一脚本类型对象的属性,反之亦然。这可能创建应当被阻止 的基于脚本的攻击的入口 。
最初有两种引用第一对象模型和第二对象模型。主控内容包
含对被主控内容的全局对象的引用,并且被主控内容引用表示该被 主控内容的主控内容的对象模型中的对象。在两个两个引用之一至 少被使用 一 次之前,对越过主控和被主控内容之间边界的对象的所 有其他引用不能存在。只要脚本引擎遵循这些原始引用之一,便可 以执行安全性检查。安全性检查可以具有各种输入,包括尝试使用 该引用的脚本的调用堆栈,调用堆栈的每个框架的域、所引用对象 的域、系统偏好以及用户偏好。安全性检查可以4吏用这些输入来确 定脚本引擎是否应当允许遵循该引用。安全性检查代码可以使用其 输入的全部或部分子集来做出决策。因此,可以阻止基于脚本的攻 击。
本说明书中描述的主题和功能性操作的实施方式可以在数字电 子电路中实现,或者在计算机软件、固件或硬件中实现,该计算机 软件、固件或硬件包括本说明书中公开的结构及其等同结构、或是 它们的一个或多个的组合。本说明书中描述的主题的实施方式可以 实现为一个或多个计算机程序产品,也即,在计算机可读介质上编 码的、以便由数据处理装置执行或控制数据处理装置操作的一个或 多个计算机程序指令模块。计算机可读介质可以是机器可读的存储 设备、机器可读的存储衬底、存储设备、实现计算机可读的传播信 号的组合、或者它们中的一个或多个的结合。术语"数据处理装置" 包括用于处理数据的所有装置、设备和机器,例如包括可编程处理 器、计算机,或者多个处理器或计算机。除了硬件之外,该装置可 以包括为考虑中的计算机程序创建执行环境的代码,例如,构成处 理器固件、协议栈、数据库管理系统、操作系统,或者它们中一个 或多个的结合的代码。传播信号是人工产生的信号,例如,机器产生的电信号、光信号或者电磁信号,生成该信号以对信息进行编码, 以便传输到适当的接收器装置。
计算机程序(也公知为程序、软件、软件应用、脚本或代码) 可以由任意形式的编程语言编写,包括编^泽语言或解释语言,并且 该计算机程序可以任意形式部署,包括部署为单独的程序或模块、 组件、子例程,或者适于在计算环境中使用的其他单元。计算机程 序无需对应于文件系统中的文件。程序可以存储在保存其他程序或 数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的 一部分中、可以存储在专门用于考虑中的程序的单个文件中,或者 存储在多个协同文件中(例如,存储一个或多个模块、子程序,或
代码部分的文件)。可以将计算机程序部署为在一个计算机上执行, 或者将其部署为在位于一个地点的多个计算机上执行或跨过多个地
点分布且通过通信网络互连的多个计算机上执行。
本说明书中描述的处理和逻辑流程可以由执行一个或多个计算 机程序的 一 个或多个可编程处理器执行,用于通过对输入数据进行 操作以及产生输出来执行功能。该处理和逻辑流程还可以由例如
FPGA (现场可编程门阵列)或ASIC(专用集成电路)的专用逻辑 电路执行,并且也可以将装置实现为所述专用逻辑电路。
适于计算机程序执行的处理器例如包括通用和专用处理器两
者、以及任意类型的数字计算机的任意一个或多个处理器。通常, 处理器将从只读存储器或随机访问存储器或两者处接收指令和数 据。计算机的基本元件是用于执行指令的处理器以及用于存储指令 和数据的一个或多个存储器设备。通常,计算机还将包括用于存储 数据的 一 个或多个海量存储设备,或被操作性地耦合为从所述用于 存储数据的一个或多个海量存储设备接收数据、向其传送数据、或 者进行两者,该海量存储设备例如磁盘、/磁光盘、或光盘。然而, 计算机不必一定具有这样的设备。而且,计算机可以嵌入在其他设
备中,例如移动电话、个人数字助理(PDA)、移动音频播放器、 全球定位系统(GPS)接收器,这仅是几例。适于存储计算机程序指
21令和数据的计算机可读介质包括所有形式的非易失性存储器、介质
和存储设备,例如包括半导体存储设备,如EPROM、 EEPROM和 闪存设备;磁盘,如内部硬盘或可移动硬盘;磁光盘;以及CD-ROM 和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或是包 括在专用逻辑电路中。
为了提供与用户的交互,本说明书中描述的主题的实施方式可 以在具有用于向用户显示信息的显示设备以及用户可以通过其向计 算机提供输入的键盘和指点设备的计算机上实现,其中显示设备例 如CRT (阴极射线管)或者LCD (液晶显示器)监视器,指点设备 例如鼠标或者轨迹球。也可以使用其他类型的设备来提供与用户的 交互;例如,提供给用户的反馈可以是任何形式的感观反馈,例如 视觉反馈、声觉反馈、或者触觉反馈;并且可以接收来自用户的任 意形式的输入,包括声音、语音或触觉输入。
本说明书中描述的主题的实施方式可以实现在包括后端组件的 计算系统中,例如数据服务器;或实现在包括中间件组件的计算系 统中,例如应用服务器;或实现在包括前端组件的计算系统中,例 如具有图形用户界面或者Web浏览器的客户端计算机,用户通过该 图形用户界面或Web浏览器可以与本说明书中描述的主题的实现进 行交互;或实现在一个或多个这样的后端、中间件、或前端组件的 任意结合中。系统组件可以与任意形式或介质的数字数据通信(例 如,通信网络)互连。通信网络的示例包括局域网("LAN"), 广域网("WAN"),网际网(例如,互联网)以及端对端网络(例 如,adhoc端对端网络)。
计算系统可以包括客户端和服务器。客户端和服务器一般相互 远离,并且通常通过通信网络进行交互。客户端和服务器的关系是 借助于在各自计算机上运行的、彼此具有客户端-服务器关系的计算 机程序得到的。
尽管本说明书包含多种特定细节,但是不应将其理解为是对本 发明的范围或者所要求保护内容的限制,而应当理解为是本发明具体实施方式
的特定特征的描述。本说明书中描述的在各个实施方式 的上下文中的某些特征也可以在单个实施方式中结合实现。相反, 在单个实施方式上下文中描述的各种特征也可以分别实现在多个实 施方式中或者任意适当的子组合中。而且,尽管上文可能将特征描 述为在特定的组合中操作,甚至初始也是这样要求保护的,但是来 自所要求保护的组合的 一 个或多个特征在 一 些情况下可以从该组合
类似地,尽管在附图中以特定的顺序描述操作,但是不应将其 理解为要求按照所示的特定顺序或是串行顺序来执行这些操作,或 是要求执行全部所示的操作以得到期望的结果。在特定环境中,多 任务和并行处理可能是有利的。而且,在上述实施方式中多个系统 组件的分离不应被理解为在所有实施方式中需要这些操作,应当将 其理解为所描述的程序组件和系统通常可以在单个软件产品中集成 在一起,或是被打包到多个软件产品中。
因此,已经描述了本发明的特定实施方式。其他实施方式在权 利要求书的范围内。例如,权利要求中所记载的动作可以以不同的 顺序执行并且仍然得到期望的结果。
权利要求
1.一种计算机实现的方法,包括在HTML绘制引擎中,将超文本标记语言(HTML)内容绘制为矢量图形绘制引擎的图元;在所述矢量图形绘制引擎中,绘制所述图元以提供用户界面;经由所述用户界面接收输入事件;在所述HTML绘制引擎中,基于所述输入事件来确定所述用户界面的外观变化;以及根据所述外观变化来更新至少一个所述图元,以便通过所述矢量图形绘制引擎进行绘制,从而更新所述用户界面。
2. 如权利要求l的方法,其中所述确定包括确定所述外观变化 仅影响所述用户界面的部分,而所述更新包括仅更新与所述变化影 响的用户界面的所述部分相交的图元。
3. 如权利要求l的方法,还包括在所述HTML绘制引擎所使用 的第一脚本引擎与所述矢量图形绘制引擎所使用的第二脚本引擎之 间进行关联,所述关联包括生成所述第一脚本引擎的对象,其表示 所述第二脚本引擎中的对象,以及生成所述第二脚本引擎的对象, 其表示所述第一脚本引擎中的对象。
4. 如权利要求3的方法,还包括使所述第一脚本引擎使用所述 第二脚本引擎的无用单元回收站。
5. 如权利要求3的方法,还包括通过交叉检查用于所述第一脚 本引擎和第二脚本引擎的对象的安全上下文信息,来维护安全模型的完整性。
6. 如权利要求l的方法,还包括通过交叉检查用于所述HTML 内容以及所述矢量图形绘制引擎的本地内容的域信息,来维护安全 模型的完整性。
7. —种编码在计算机可读介质上的计算机程序产品,其可操作 以使得数据处理装置执行操作,所述操作包括在HTML绘制引擎中,将超文本标记语言(HTML)内容绘制为 矢量图形绘制引擎的图元;在所述矢量图形绘制引擎中,绘制所述图元以提供用户界面; 经由所述用户界面接收输入事件;在所述HTML绘制引擎中,基于所述输入事件来确定所述用户 界面的外观变化;以及根据所述外观变化来更新至少一个所述图元,以便通过所述矢量 图形绘制引擎进行绘制,从而更新所述用户界面。
8. 如权利要求7的计算机程序产品,其中所述确定包括确定所 述外观变化仅影响所述用户界面的部分,而所述更新包括仅更新与 所述变化影响的用户界面的所述部分相交的图元。
9. 如权利要求7的计算机程序产品,还包括在所述HTML绘制 引擎所使用的第一脚本引擎与所述矢量图形绘制引擎所使用的第二 脚本引擎之间进行关联,所述关联包括生成所述第一脚本引擎的对 象,其表示所述第二脚本引擎中的对象,以及生成所述第二脚本引 擎的对象,其表示所述第一脚本引擎中的对象。
10. 如权利要求9的计算机程序产品,还包括使所述第一脚本引 擎使用所述第二脚本引擎的无用单元回收站。
11. 如权利要求9的计算机程序产品,还包括通过交叉检查用于 所述第一脚本引擎和第二脚本引擎的对象的安全上下文信息,来维护安全模型的完整性。
12. 如权利要求7的计算机程序产品,还包括通过交叉检查用于 所述HTML内容以及所述矢量图形绘制引擎的本地内容的域信息, 来维护安全模型的完整性。
13. —种系统,包括 输入设备; 显示设备;包括操作系统和虛拟机的计算机平台,所述虚拟机被配置用于在 所述计算机平台与被编程以在所述虚拟机上运行的软件应用之间创建虛拟化环境;以及所述虚拟机可操作用于使用所述输入设备和所述显示设备、通过矢量图形绘制引擎来绘制和动态更新交互式HTML内容,从而生成 用于所述软件应用的用户界面。
14,如权利要求13的系统,其中所述虚拟机包括HTML绘制引 擎,其被配置用于将所述交互式HTML内容绘制为所述矢量图形绘 制引擎的图元,并且所述虚拟机包括所述矢量图形绘制引擎,其被 配置用于绘制所述图元以提供所述用户界面。
15. 如权利要求14的系统,所述HTML绘制引擎被配置用于保 持所绘制图元的有关信息,以便确定由输入事件导致的所述用户 界面的外观变化仅影响所述用户界面的部分,以及仅更新与所述变 化影响的用户界面的所述部分相交的图元。
16. 如权利要求14的系统,所述虚拟机包括由所述HTML绘制 引擎使用的第 一脚本引擎,以及由所述矢量图形绘制引擎使用的第 二脚本引擎,并且所述虚拟机配置用于使用所述第 一脚本引擎和所 述第二脚本引擎之间的关联对象。
17. 如权利要求16的系统,所述第一脚本引擎配置用于使用所 述第二脚本引擎的无用单元回收站。
18. 如权利要求16的系统,所述虚拟机配置用于交叉检查用于 所述第一脚本引擎和第二脚本引擎的对象的安全上下文信息,从而 维护安全模型的完整性。
19. 如权利要求14的系统,所述虛拟机配置用于交叉检查用于 所述交互式HTML内容和所述矢量图形绘制引擎的本地内容的域信 息,从而维护安全模型的完整性。
20,如权利要求13的系统,其中所述计算机平台、所述输入设 备和所述显示设备包括一个个人计算机。
全文摘要
总体上,本说明书所描述的主题的一个方面可以在一种方法中实现,该方法包括在HTML绘制引擎中,将超文本标记语言(HTML)内容绘制为矢量图形绘制引擎的图元;在所述矢量图形绘制引擎中,绘制所述图元以提供用户界面;经由所述用户界面接收输入事件;在所述HTML绘制引擎中基于所述输入事件确定用户界面的外观变化;以及根据所述外观变化来更新至少一个图元,以便通过所述矢量图形绘制引擎进行绘制,从而更新所述用户界面。
文档编号G06F3/01GK101553771SQ200780045435
公开日2009年10月7日 申请日期2007年10月17日 优先权日2006年10月23日
发明者C·布里奇福德, E·R·W·罗, E·玛拉斯基, K·琳奇 申请人:奥多比公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1