CN106462476B - 将应用的功能扩展到另一应用的允许扩展的相容扩展点 - Google Patents
将应用的功能扩展到另一应用的允许扩展的相容扩展点 Download PDFInfo
- Publication number
- CN106462476B CN106462476B CN201580027879.1A CN201580027879A CN106462476B CN 106462476 B CN106462476 B CN 106462476B CN 201580027879 A CN201580027879 A CN 201580027879A CN 106462476 B CN106462476 B CN 106462476B
- Authority
- CN
- China
- Prior art keywords
- extension
- application
- point
- operating system
- list
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
根据一个实施例,响应于从第一应用接收的对与操作系统的多个扩展点的第一个相关联的扩展服务的查询来识别已经向所述操作系统针对所述第一扩展点注册的一个或多个扩展的列表,其中所述第一应用在第一沙箱化环境内执行。显示所识别的扩展列表以提示用户选择扩展中的与第一应用相关联的一个扩展。响应于选择扩展中的一个扩展来在第二沙箱化环境中启动所选扩展。所选扩展和第二应用被封装于应用捆绑中,并且在安装应用捆绑时,所选扩展和第二应用在操作系统的注册表中表现为独立应用。
Description
相关申请
本申请要求全部提交于2014年5月29日的美国临时专利申请No.62/004,777、62/004,778和62/004,780的权益。本申请还涉及2014年9月16日提交的,代理文献号No.4860P22650的美国专利申请No.14/488,122和代理文献号No.4860P23308的美国专利申请No.14/488,126。上文所述申请的公开内容全文以引用方式并入本文。
技术领域
本发明的实施例总体上涉及数据处理系统的操作系统。更具体而言,本发明的实施例涉及提供相容扩展点,用于将一项应用的功能扩展到另一项应用。
背景技术
对所有类型基于处理器的电子设备,尤其是计算设备的安全性关切已经成为一项重要关切。尽管一些关切可能涉及到可以由此类设备实施的缺陷代码采取的有害动作,但更大的关切涉及通过恶意代码对此类设备进行的各种类型攻击的后果,所述恶意代码包括本领域常规以若干名称所知的代码,包括“病毒”、“蠕虫”、“特洛伊木马”、“间谍软件”、“广告软件”等。此类恶意代码可能的效果从较为温和,例如在屏幕上显示消息或获取对设备有限功能的控制;到高度有害,例如获取对设备的完全控制,运行过程,发送和/或删除文件等。几乎任何类型的基于处理器的设备上可以想到的动作都是恶意代码攻击的目标。
这些攻击中的很多指向计算设备,例如工作站、服务器、台式计算机、笔记本计算机和手持计算机和其他类似设备。这些计算设备中的很多可以运行一种或多种应用程序,用户可以操作这些应用程序以执行一组期望功能。不过,这样的攻击不限于此类计算设备。更宽范围的各种类型设备,例如手机、个人数字助理(“PDA”)、音乐和视频播放器、网络路由器、交换机或网桥和利用微处理器、微控制器或数字信号处理器执行代码指令的其他设备已经成为恶意代码攻击的目标。
在一种特定状况下,诸如浏览器应用的一种应用可能必须要调用插件(也称为应用扩展),插件可能是由第三方开发的。典型地,在应用调用与应用(也称为宿主应用)相关联的插件时,操作系统启动该应用的同一过程地址空间内的插件,如图1所示。参考图1,在应用104调用插件105时,应用管理器101的应用启动模块102加载应用104的同一过程地址空间106内的插件105。由于应用104及其插件105运行于同一地址空间106内,插件105可能能够访问应用104可访问的资源,其中资源可能是由资源管理器103管理的。从资源管理器103的角度来看,应用104和插件105是相同的过程。那样可能导致如果插件105证实为恶意软件,应用104容易受到攻击。
例如,如果插件105是为应用104开发的第三方插件,且如果应用104可以访问本地存储器和网络,插件105可以利用并攻击本地存储器和网络中存储的文件。此外,即使插件105不是恶意软件,在插件105损坏时,它也可能使应用104损坏或导致应用104出现故障。此外,在插件105被启动模块102终止时,终止插件105可能导致应用104不稳定,因为它们处在同一过程地址空间106中。
常规系统利用定制的通用资源定位符(URL)方案在两种应用之间进行过程间通信,这样的问题是可发现性有限、安全性关切,以及在双向通信困难且脆弱的情况下一般没有灵活性。URL方案可能导致应用切换到宿主应用,这可能使用户从发起应用的过程脱离,并破坏任何视觉语境,且关联的工作流将会丢失。检测这样的状况是非常困难的。
在尝试减少或消除恶意或缺陷代码攻击和影响时已经使用了若干种方法。通常,这些方法包括检测、阻止和缓解。具体而言,这些方法的范围从尝试扫描、识别、隔离并可能地在向系统引入恶意代码之前或在其造成损害之前删除恶意代码(例如,像防病毒软件等的目的那样),到限制或包含恶意或缺陷代码影响的过程采取的动作。不过,一直没有有效率的方式应对与以安全方式调用另一应用的应用相关联的插件。
附图说明
本发明的各实施例以举例的方式进行说明,而不仅限于各个附图的图形,在附图中类似的附图标号表示类似的元件。
图1是示出了数据处理系统的常规操作系统的框图。
图2A-2B是示出了根据本发明特定实施例,用于管理应用扩展的系统架构的框图。
图2C是示出了根据本发明一个实施例,用于执行应用和应用扩展的方法的流程图。
图3A-3B是示出了根据本发明特定实施例的操作系统架构示例的框图。
图4A是示出了根据本发明一个实施例的应用和应用扩展之间通信配置的框图;
图4B是示出了根据本发明另一实施例,用于应对应用扩展的方法的流程图。
图5A是示出了根据本发明一个实施例,用于为扩展点发展扩展的系统的框图。
图5B是示出了根据本发明一个实施例,用于为扩展点发展扩展的方法的流程图。
图6A是示出了根据本发明一个实施例的扩展框架的注册系统的框图。
图6B是示出了根据本发明一个实施例,用于管理经由扩展点的扩展的方法的流程图。
图7A是示出了根据本发明一个实施例的动作扩展点的示例的框图。
图7B是示出了根据本发明一个实施例,提供动作扩展服务的方法的流程图。
图8A是示出了根据本发明一个实施例,用于提供内容共享服务的共享扩展点的框图。
图8B是示出了根据本发明一个实施例,使用共享扩展共享内容的方法的流程图。
图9是示出了根据本发明一个实施例,用于应对应用终止的过程的框图。
图10是示出了根据本发明一个实施例,用于经由其相应扩展访问应用的系统的框图。
图11A-11B是示出了根据本发明一个实施例的应用的图形用户界面示例的屏幕截图。
图12A-12C是示出了根据本发明一个实施例的应用的图形用户界面示例的屏幕截图。
图13是可用于本发明一个实施例的数据处理系统示例的框图。
具体实施方式
将参考以下讨论的细节来描述本发明的多个实施例和方面,并且附图将图示所述多个实施例。以下描述和附图对本发明做出例示,并且不应被理解为限制本发明。描述了众多的具体细节以提供对本发明多个实施例的全面理解。然而,在某些实例中,众所周知或常规的细节并未被描述以便提供对本发明的实施例的简明论述。
在本说明书中对“一个实施例”或“实施例”的引用是指结合该实施例描述的特定特征、结构或特性可以被包括在本发明的至少一个实施例中。在本说明书中的不同位置出现的短语“在一个实施例中”不一定都是指同一个实施例。
根据本发明的一个方面,应用扩展(也称为插件或简称扩展)和托管应用扩展的应用被加载并执行于独立的过程地址空间中并被操作系统像独立过程那样对待。在一个实施例中,在第一沙箱化环境中启动并执行托管应用扩展的应用,在第二沙箱化环境中启动并执行应用扩展。分别基于第一安全或沙箱概况和第二安全或沙箱概况配置第一沙箱化环境和第二沙箱化环境。该应用和应用扩展经由过程间通信(IPC)框架彼此通信。操作系统分别基于第一和第二安全概况逐个或独立地实施安全并管理应用和应用扩展的资源。
根据一个实施例,在应用扩展产生要向用户显示的内容,例如图形用户界面(GUI)内容时,该内容经由IPC框架被注入应用中并呈现给用户,无需应用经由应用编程接口(API)直接访问应用扩展,这样需要运行于同一过程地址空间内的应用扩展。具体而言,远程视图控制器嵌入每个应用和应用扩展中以将应用扩展给出的GUI内容注入应用中。运行于应用和应用扩展内(或与之相关联)的远程视图控制器被配置为在应用和应用扩展之间对用户与GUI内容的交互进行同步。
根据另一个实施例,由于应用和应用扩展运行于其相应的过程地址空间中,所以可以独立地管理与应用和应用扩展相关联的资源而不会对其他对应者导致显著干扰。例如,可以关闭或终止应用扩展而不影响应用的操作,因为两者之间的通信是由IPC框架管理的。在应用和应用扩展中的一个扩展需要升级或终止时,根据一个实施例,另一方可以与操作系统通信以判断用户当前是否在使用另一方,以判断升级或终止自身是否安全。例如,在接收到升级应用的升级请求时,该应用或升级管理器可以与中央管理机构(例如,窗口服务器)通信,以判断用户当前是否在访问应用扩展的用户接口。仅在判定用户当前未使用应用扩展的时候才进行应用的升级或终止;否则,拒绝该请求。
根据另一实施例,在操作系统已经安装应用扩展时,向用户提供选项以激活/启用或去活/禁用应用扩展。例如,可以在应用控制中心的用户界面内将针对操作系统的应用控制中心(例如,通知中心)的已安装应用的已安装应用扩展显示为宿主应用。应用控制中心的用户界面可以显示启用/禁用选项(例如,诸如图标的开关图形表达)以允许用户启用或禁用已安装的应用扩展。仅在启用应用扩展的时候才可以从应用控制中心访问应用扩展(例如,以利用关联的已安装应用的功能);否则,用户必须要使用与应用扩展相关联的已安装应用。应用控制中心可以与各种应用的扩展相关联,每种扩展都能够被逐一配置(例如,启用或禁用)。于是,应用控制中心充当着访问各种应用功能的集中进入点。结果,在应用控制中心中托管并启用扩展的情况下,用户无需逐个启动并访问应用。
根据本发明的另一个方面,扩展框架包括一组扩展接口,这里称为扩展点,以允许第一应用调用第二应用的扩展,以访问与通过扩展而扩展的第二应用相关联的一组预定义功能。该组扩展点可以包括与操作系统相关联的各种常用或普及功能或服务。扩展点定义了一组预定义应用编程接口(API)或通信协议,其允许客户端,无论是第一应用还是第二应用,从另一客户端访问或向另一个客户端提供服务。由扩展点提供的服务可以由操作系统的标准部件或第三方供应商提供的第三方功能提供。
在一个实施例中,扩展框架充当两个过程(例如,扩展和宿主应用)之间的连接操作者而工作。扩展框架提供发现方面并扩展安全域。在第一应用希望访问由另一应用提供的预定义功能(例如,内容共享或照片过滤)时,第一应用与和该预定义功能相关联的对应扩展点通信,以查询谁能够提供这样的服务。扩展框架接着搜索并识别由已经向扩展框架注册的其他应用提供的一个或多个扩展的列表,以提供所请求的服务。扩展框架可以返回所识别扩展的列表以允许第一应用为所请求服务选择列表中的第二应用之一。响应于选择了可以由第二应用提供或与第二应用相关联的扩展中的一个扩展,扩展框架在独立的沙箱化环境中启动所选择的扩展并促成第一应用和所选择扩展之间的过程间通信(IPC)机制或框架,以允许第一应用经由IPC通信机制访问所选扩展的功能。
根据一个实施例,扩展点充当扩展的软件开发者的接口并提供扩展操作的域。每个扩展点都与预定义组的策略(例如,资源授权或限制)相关联并指定在宿主应用和扩展之间可以交换什么消息。为特定扩展点设计的所有扩展都必须符合该特定扩展点的预定义策略中阐述的规范。所有扩展在操作环境中执行时,都有权使用由关联扩展点定义的同一组操作环境参数或受其约束。在开发第二应用的扩展时,开发者可以利用与特定扩展点相关联的扩展模板作为软件开发套件(SDK)来产生第二应用(这里称为容器应用)和关联扩展的可执行图像。可以在捆绑发布扩展和容器应用。该捆绑包括容器应用及其描述容器应用的元数据,以及扩展及其描述扩展的元数据。不过,容器应用和扩展可以在独立的沙箱化环境中启动并独立操作,可以基于其相应的元数据和/或对应的扩展点进行配置,尽管它们可以访问或共享公共库或框架。
根据本发明的另一方面,可以提供注册扩展的一些作为操作系统的一部分;其他可以由第三方提供并由操作系统的安装者安装。根据一个实施例,可以由同一扩展提供商提供的同一扩展的更新版本替代或超驰更早安装或注册的扩展的更旧版本。安装或注册框架认证扩展提供商,以确保仅有被授权的扩展提供商能够替代或超驰当前安装的扩展。在一个实施例中,仅有特定扩展的授权所有者能够替代其自己安装的扩展。
在安装扩展时,基于扩展的类型(例如,由统一类型标识符或UTI标识)和扩展提供商标识符(ID),安装者在扩展注册表中查找,以判断是否有当前已安装的同一扩展的更早版本。如果有已经安装的更早版本,安装者利用从新扩展获得的新扩展密钥替代扩展注册表中的扩展密钥。扩展密钥代表特定版本的扩展。接下来,在从宿主应用接收到调用扩展的请求时,将基于新的扩展密钥识别并启动扩展的新版本。
在一个实施例中,扩展框架提供的扩展点之一是被设计成共享社区中的内容或与另一用户共享内容的共享扩展点。利用共享扩展点,应用能够调用共享扩展,其扩展共享应用,例如和的功能,以在社交网站上或与另一程序共享内容。如上所述,为了调用共享扩展,共享扩展必须要安装于扩展框架或向扩展框架注册。典型地,共享扩展必须要向系统注册,指明该扩展能够例如通过向与针对内容共享服务预先同意的UTI关联的UTI注册,来提供内容共享服务。
在诸如浏览器的宿主应用尝试调用内容共享服务时,例如,响应于从用户接收的“共享”命令,宿主应用通过提供与内容共享服务相关联的适当UTI,与扩展框架的共享扩展点通信。作为响应,扩展框架例如通过匹配内容共享服务的UTI与已安装扩展的UTI,来搜索能够提供所请求服务的任何已安装或注册的扩展。将向用户提供其UTI与共享UTI匹配的共享扩展的列表,以选择它们之一。
在一个实施例中,一旦由用户或由系统自动选择了共享扩展,宿主应用就向共享扩展发送代表要共享内容的分辨率降低的图像(例如,缩略图)的数据对象。共享扩展创建共享表单,共享表单中显示了内容的分辨率降低的图像。共享扩展然后例如,利用远程视图桥连接(例如,远程视图控制器或远程视图桥),向宿主应用中注入共享表单的副本作为表单克隆。共享表单克隆由宿主应用显示。响应于从宿主应用下达命令(例如,发送命令),共享扩展从宿主应用请求与缩略图相关联的完整实际内容。之后,在共享网站上然后发布其中嵌入了实际内容的最终共享表单。
图2A是示出了根据本发明一个实施例,用于管理应用扩展的系统架构的框图。参考图2A,系统200代表任何种类的数据处理系统,例如服务器、台式机、膝上型计算机、平板计算机或移动电话等。系统200包括具有应用启动模块202和资源管理器203的应用管理器201,用于启动和管理应用,应用例如是处理资源(未示出)在系统200内执行的应用204和应用扩展205。处理资源可以提供一个或多个处理器或处理器内核。物理处理器典型地是指集成电路,其可能包括任意数量的其他处理元件,例如内核或硬件线程。内核常常是指位于集成电路上,能够维持独立架构状态的逻辑,其中每个独立维持的家规状态都与至少一些专用执行资源相关联。处理器可以是通用处理器,例如中央处理单元(CPU)。
应用管理器201可以是由系统200内的处理资源运行并执行的操作系统(OS)的一部分。操作系统是管理计算机硬件资源并为计算机程序提供公共服务的软件集合。操作系统是计算机系统中系统软件的必要部分。应用程序通常需要操作系统来工作。在操作系统的很多功能中,调度是为线程、过程或数据流提供访问系统资源(例如,处理器时间、通信带宽)的权限的方法。通常这样做以有效地进行负载平衡并共享系统资源或实现目标服务质量。除了应用管理器201之外,操作系统还可以包括其他内核部件,例如调度器、设备管理器、内核等。为了不会不必要地使本发明的实施例模糊不清,这里未示出这些部件。注意,应用启动模块202和/或资源管理器203可以作为应用管理器201外部的独立部件被执行或与操作系统的另一部件集成。系统200的操作系统可以是任何种类的操作系统,例如,来自的iOSTM、来自的AndroidTM、来自的WindowsTM、或其他操作系统(例如,UNIX、LINUX、实时或嵌入式操作系统)。
根据一个实施例,每个应用都可以在相应的专用或隔离的操作环境,例如沙箱化环境内执行,并由应用管理器201管理。例如,在作为第一过程地址空间的第一沙箱化环境206内将应用204作为第一过程启动并执行。在作为第二过程地址空间的第二沙箱化环境207内将应用扩展205作为第二过程启动并执行。过程地址空间是指虚拟地址空间或作为操作系统使过程可以使用的虚拟地址的范围集合的地址空间。虚拟地址的范围通常开始于低地址,并可以扩展到计算机的指令集架构允许的最高地址。这样提供了几个好处,其中之一是,如果为每个过程赋予独立的地址空间,整个过程隔离期间都具有安全性。
应用204可以是作为第一应用的浏览器应用,例如来自Apple 的SafariTM、来自的Internet ExplorerTM、或来自Google 的Google ChromeTM。应用扩展205可以是第二应用(未示出)的插件,例如来自Adobe 的Adobe AcrobatTM或内容共享应用,例如FacebookTM或TweeterTM应用。插件经特定设计,供第一应用访问第二应用的功能。插件和第二应用可以由第三方开发并作为捆绑发布到市场。在第二应用安装于系统200中时,应用安装者(未示出)解析捆绑的元数据,并发现应用扩展205是为应用204设计的。例如,在作为独立应用的操作系统的注册表中,应用扩展205然后与应用204相关联或映射到应用204。结果,应用扩展205可以被安装并可以被应用204使用,以允许应用204在运行时间,例如,响应于从应用204接收的对特定类型扩展服务(例如,内容共享服务)的请求而调用应用扩展205。
根据一个实施例,应用扩展205和托管应用扩展205的应用204在独立的过程地址空间206-207中加载并执行,并由操作系统像独立过程那样对待。在一个实施例中,在第一沙箱化环境中将应用204作为第一沙箱化过程来启动和执行,在第二沙箱化环境中将应用扩展205作为第二沙箱化过程来启动和执行。分别基于第一安全概况209和第二安全概况210(作为针对系统200中安装的一些或所有应用的安全概况208的部分)配置第一沙箱化环境和第二沙箱化环境。应用204和应用扩展205经由过程间通信(IPC)框架(未示出)彼此通信。操作系统分别基于第一和第二安全概况209-210逐个或独立地实施安全并管理应用204和应用扩展205的资源。
沙箱化过程是指在将过程限制到一组预定义资源的受限操作环境(例如,沙箱)内限制的过程。每个沙箱化过程都可以与一组专用系统资源相关联,例如,专用存储器空间、专用存储器区域或虚拟机等。对应用进行沙箱化的目的之一是隔离应用,以免其访问另一应用或系统部件的其他不必要或不相关系统资源,使得应用导致的任何损伤不会溢出到系统100的其他区域。
为了提供安全性,可以通过将其功能限制到操作子集并仅允许适当操作,即,根据其期望功能的操作必需的操作,来“包含”应用。为每个应用实施有限集合策略的一种方法是包含或“沙箱化”该应用。可以利用操作系统层级的保护来实现应用或过程的沙箱化,以提供包含,并实施安全策略,例如限制应用的能力,不允许其采取提供其期望功能所需的那些功能之外的动作。
在执行期间对应用进行沙箱化时,该应用在沙箱(也称为应用容器)内包含的系统内被作为沙箱化过程或线程执行,在沙箱内,其不能访问另一应用的特定系统资源或另一领域(例如,沙箱),受到与沙箱化应用相关联的安全概况的限制,这被称为沙箱化过程或沙箱化应用。
沙箱化过程是将为其实施安全包含的应用或其他程序。在很多情况下,沙箱化过程是用户应用,但其可以是实现于计算设备上的另一程序,例如守护进程或服务。为了增加安全性并提供有效率的机制,在内核空间中实施或执行安全系统的部分。此外,监视器过程模块(未示出)在与沙箱化过程独立的存储器空间中执行,以进一步将它们彼此隔离。具体而言,限制沙箱化过程以免其访问其过程空间外部的存储器,并进一步禁止其产生非沙箱化过程。例如,沙箱化过程的安全概况可以包括拒绝沙箱化过程使用特定系统调用的规则或策略,其可以是允许过程改变彼此的地址空间的机制。
在一些实施例中,策略可以基于连接到计算设备的外部附件的状态,例如,如果连接了特定类型或身份的附件;断开连接或在特定模式中连接或处于(或不处于)特定模式中,阻止程序执行特定动作。例如,如果符合特定标准的附件连接到数据总线并处于相应模式中,可以仅允许应用通过可从外部访问的数据总线通信。可以在2006年8月4日提交的美国专利申请No.11/462,680,现在为美国专利No.8,272,048中找到关于沙箱化技术的更多详细信息,该专利已经被转让给本申请的共同受让人并通过引用全文并入本文。
重新参考图2A,安全概况209指定应用204在其在过程地址空间206内操作期间可以利用的第一组受限资源。类似地,安全概况210指定应用扩展205在其在过程地址空间207内操作期间可以利用的第二组受限资源。在本示例中,第二组资源可以比第一组资源更少(例如,更受限制)。例如,应用204可能能够访问网络和系统200的本地存储器,而应用扩展205可能不能访问同一网络,但其可以能够访问系统200的本地存储器。
根据一个实施例,为要在数据处理系统中部署的每个程序或应用定义一个或多个授权。授权代表在其执行期间授权程序访问的特定功能或资源。授权可以由开发者在开发程序期间指定,或者,授权可以由授权实体指定,授权实体例如是授权服务器或供应服务器,供应服务器供应或分发程序。可以将这样的授权指定为附属于或嵌入程序内的属性或元数据,并任选地由授权实体使用数字证书签署。
然后可以使用授权产生一组规则,指定程序在程序执行期间能够或不能做或访问的特定动作或资源。然后,例如在安装程序期间,将该组规则动态编译成用于该程序的安全概况。在执行程序期间,使用安全概况实施该组规则以限制程序,以免其执行未授权程序实施的任何动作或访问任何资源。这实际上迫使或约束程序在受限操作环境(例如,沙箱或沙箱化环境)中操作。资源是指数据处理系统或电子设备中任何种类的资源,例如,存储器、输入/输出(IO)、总线、外部存储器、文件、网络连接(例如,套接字、端口或网络地址)、过程间通信信道(例如,UNIX域套接字、XPC、MACH端口)等。
限制程序在受限操作环境中执行能够减少程序干扰的改变或对电子设备的其他部件或资源导致损坏。例如,程序可以由第三方开发或从网络下载。程序可以包括故障的部件或例程(例如,编程错误),它们可能会意外访问正常情况下由操作系统、微处理器、总线或电子设备的其他部件排他使用的某些关键性存储空间。这样的动作可能导致电子设备崩溃。或者,程序可能是被开发来故意对操作环境和/或电子设备造成损害的恶意程序。例如,带病毒的程序可能专门被开发来对电子设备进行控制和/或窃取操作电子设备的用户的机密信息。通过限制程序在受限操作环境中执行,可以大大减少这样的损害。
重新参考图2A,在本示例中,通过在独立的过程地址空间206-207中执行应用204和应用扩展205,可以独立地实施和管理应用204和应用扩展205的安全性。一个实体(例如,应用扩展205)的故障不会导致另一个实体(例如,应用204)的很大损害。此外,可以高效率地管理与应用204和应用扩展205相关联的资源。例如,如果应用204不再需要应用扩展205,可以逐个终止或卸载应用扩展205,可以将其资源释放回资源池用于其他用途,而不会显著影响应用204的操作。
图2B是示出了根据本发明另一个实施例,用于管理应用扩展的系统架构的框图。参考图2B,系统250代表任何种类的数据处理系统,例如服务器、台式机、膝上型计算机、平板计算机或移动电话等。类似于图2A的系统200,系统250包括具有应用启动模块202和资源管理器203的应用管理器201,用于启动和管理应用,应用例如是处理资源在系统200内执行的应用204和应用扩展205。
根据一个实施例,应用204和应用扩展205经由过程间通信(IPC)框架(未示出)彼此通信,该过程间通信框架可以由对应的扩展点225代理。扩展点225可以是操作系统定义并被扩展服务提供商同意的各个扩展点之一。为了允许应用204和扩展205彼此通信,应用204和扩展205必须要遵守专门为扩展点225设计的一组策略和/或通信协议(例如,API)。于是,必须要利用专用于扩展点225的SDK或库来编译应用204和扩展205。
操作系统分别基于第一和第二安全概况209-210逐个或独立地实施安全并管理应用204和应用扩展205的资源。需注意,第二应用215在执行时可以在独立的沙箱化环境217中启动。在应用204访问由扩展205提供的功能时,不需要启动容器应用215,因为它们是被作为独立程序对待的,尽管扩展205和应用215可以在执行期间共享相同的库或框架。
重新参考图2B,在本示例中,通过在独立的过程地址空间206-207中执行应用204和应用扩展205,可以独立地实施和管理应用204和应用扩展205的安全性。一个实体(例如,应用扩展205)的故障不会导致另一个实体(例如,应用204)的很大损害。此外,可以高效率地管理与应用204和应用扩展205相关联的资源。例如,如果应用204不再需要应用扩展205,可以逐个终止或卸载应用扩展205,可以将其资源释放回资源池用于其他用途,而不会显著影响应用204的操作。
图2C是示出了根据本发明一个实施例,用于执行应用和应用扩展的方法的流程图。方法250可通过可包括软件、硬件或其组合的处理逻辑来实施。例如,方法250可以由图2A和/或图2B所示的系统执行。参考图2C,在方框251,处理逻辑基于第一应用的第一安全概况在第一沙箱化环境(例如,第一过程地址空间)中启动第一应用。在方框252,响应于来自第一应用对调用应用扩展(例如,插件)的请求,处理逻辑基于与应用扩展相关联的第二安全概况在第二沙箱化环境(例如,第二过程地址空间)中启动应用扩展。应用扩展可以是第二应用的扩展,其中该扩展被专门设计以允许第一应用访问第二应用的功能。在方框253,处理逻辑基于第一和第二安全概况给出的权限启用应用和应用扩展之间的通信。在方框254,处理逻辑逐个实施安全性,并经由第一和第二沙箱化环境管理第一应用和应用扩展的资源。
根据一个实施例,在应用扩展产生要向用户显示的内容,例如图形用户界面(GUI)内容时,该内容经由IPC框架被注入应用中并呈现给用户,无需应用经由应用编程接口(API)直接访问应用扩展,这样需要运行于同一过程地址空间内的应用扩展。具体而言,远程视图控制器嵌入每个应用和应用扩展中以将应用扩展给出的GUI内容注入应用中。运行于应用和应用扩展内或与之相关联的远程视图控制器被配置为在应用和应用扩展之间对用户与GUI内容的交互进行同步。
图3A是示出根据本发明一个实施例的操作系统架构示例的框图。操作系统300可以被实现为图2A和/或图2B中所示的系统的部分。参考图3A,操作系统300包括一组一个或多个扩展点303-305等,以允许诸如客户端301-302的各客户端经由扩展点303-305进行访问。每个扩展点303-305代表一组预定义的API或协议,以允许作为宿主应用的一个客户端获得作为扩展的另一客户端提供的预定义服务,该扩展至少扩展作为容器应用的另一应用的功能的至少一部分。每个扩展点303-305都可以进一步为与扩展点相关联的过程定义资源、调度和终止方案(例如,应当首先终止哪个过程等)。在一个实施例中,扩展点303-305可以包括与操作系统300相关联的各种常用或普及功能或服务。扩展点定义了一组预定义应用编程接口(API)或通信协议,其允许客户端从另一客户端访问或向另一客户端提供服务。由扩展点提供的服务可以由操作系统的标准部件或第三方供应商提供的第三方功能提供。
扩展点303-305可以由扩展管理器310管理,其中扩展点303-305可以作为操作系统300的系统部件的部分,被统称为扩展接口、扩展层或扩展框架。在安装扩展302及其对应的容器应用(未示出)时,安装模块320对包含扩展302及其容器应用的应用捆绑的元数据进行解析。基于和扩展302相关联的元数据,安装模块320发现扩展302是针对扩展点304专门设计和开发的。例如,扩展302可以利用特定的扩展模板开发并利用对应于扩展点304的特定组的库而编译。
安装模块320然后在操作系统300中安装扩展302,并在启动数据库208中存储与扩展302相关的任何信息。例如,可以编译并在启动数据库208中存储扩展302的安全概况(例如,配置文件)。安全概况可以包括表示扩展302能够通过扩展点304提供服务的信息。安全概况还可以包括资源授权和/或限制,接下来可以利用其在启动扩展302时配置沙箱化环境。可以由安装模块320以类似方式安装其他扩展。此外,还可以在扩展注册表350中注册扩展302,接下来可以使用扩展注册表响应于特定类型或种类的扩展服务,例如,基于被安装扩展的UTI,搜索扩展服务。注意,可以将扩展注册表350和启动数据库208集成到具有查询应用编程接口(API)的单个储存库中。
接下来,在客户端(在本示例中为应用301)通过经由扩展304查询扩展点304可用的服务(也称为扩展服务)时,扩展管理器310调用启动模块202(或发现模块,未示出)以发现能够提供所查询服务的系统中安装的任何扩展。作为响应,启动模块202在启动数据库208中搜索以识别并确定安装的扩展中哪个能够提供这样的服务。在一个实施例中,查询可以包括指定服务需要的特定资源的信息。作为响应,启动模块202搜索并识别能够应对指定资源的那些人。例如,宿主应用可以指定需要服务应对的数据大小。于是,图3A中所示的扩展框架能够匹配扩展的能力和所请求服务的规范。或者,扩展管理器310可以查询扩展注册表350以识别能够提供所请求扩展服务的扩展列表(例如,基于UTI),其中启动数据库208包含用于在启动扩展时配置沙箱化操作环境的信息(例如,沙箱配置或概况)。扩展注册表350的示例在图6A中示出并在下文中进一步详细描述。
如果仅安装了一个能够为扩展点304提供服务的扩展,启动模块202可以自动启动所识别的扩展。如果有多个能够为扩展点304提供服务的扩展,启动模块可以给出扩展列表,允许用户或客户端301选择它们之一启动。如果所安装的同一扩展有多个版本,可以向用户呈现至少一些版本,或者,可以呈现最晚的版本。可以由扩展注册表350中提供的认证扩展替代或超驰扩展的更早版本,从而识别并利用扩展的最晚版本。一旦启动了选择的扩展(在本示例中为扩展302),扩展管理器310就调用IPC服务模块315,以方便客户端301和客户端302之间经由扩展点304的IPC通信。在一个实施例中,客户端301和客户端302之间的通信是基于异步消息的通信,例如可从Apple Inc.获得的XPC框架。
在一个实施例中,扩展点303-305可以包括,但不限于用于操作系统300的通知中心的扩展点、用于第三方键盘的扩展点、用于社交媒体的扩展点、用于用户接口(UI)的服务的扩展点、用于文件提供商/获取者的扩展点、用于照片编辑和/或过滤的扩展点、用于翻译的扩展点以及用于文件/内容寻找程序的扩展点。这些扩展点中的一些被称为动作扩展点。这样的动作扩展被设计成扩展宿主应用内另一应用的查看和/或编辑功能。用户能够从宿主应用发起服务。该服务将使用用户提供的内容(例如,经由工具条项目、语境菜单等选择的文本、滚轮上的图像)。动作扩展的示例包括,但不限于翻译选定内容的服务、查看文档中图像属性的服务或对图像应用过滤器的服务等。过滤扩展可以被设计成指定谓词或简单指令,让系统构建谓词,该谓词被参照共享数据进行匹配,以便列出相关扩展。
在一个实施例中,扩展点303-305的每个都包括至少两组API,一组供宿主应用调用扩展服务,另一组供扩展提供扩展服务,如图3B中所示。参考图3B,由于客户端301和客户端302在独立的沙箱化环境中执行,所以它们通常不能直接彼此通信。相反,客户端301在本示例中作为宿主应用,利用与扩展点380相关联的第一组API或协议通信,以方位系统资源,例如扩展管理器310、启动模块202和IPC服务模块315等。类似地,客户端302在本示例中作为扩展,利用与扩展点380相关联的第二组API或协议通信,以访问扩展管理器310、启动模块202和IPC服务模块315。为了访问扩展点380,可以在软件开发期间利用与扩展点380相关联的SDK编译和链接客户端301和客户端302。
图4A是示出了根据本发明一个实施例的应用和应用扩展之间通信配置的框图;参考图4A,系统400可以被实现为上述扩展系统的任一种的部分。参考图4A,如上所述,应用204是在沙箱化环境206内执行的,而应用扩展205是在沙箱化环境207内执行的,其中沙箱化环境206-207对应于不同的过程地址空间。由于应用204和应用扩展205是在不同地址空间中执行的,所以不允许它们直接访问与其他对应方相关联的资源(例如,存储器地址);否则,可能导致页面错误。
根据一个实施例,应用204和应用扩展205经由IPC框架401彼此通信。IPC框架401定义了一组通信接口或协议,以允许客户端(在本示例中为应用204和应用扩展205)与IPC框架401异步地通信,其中IPC框架401用以方便带客户端之间交换数据或消息。IPC框架401可以是任何种类的IPC框架,例如来自Apple Inc.的XPC或MACH、UNIX套接字框架等。IPC框架401可以被实现为各方之间的一组IPC服务。在应用204和应用扩展205希望彼此通信时,它们通过例如连接到预先同意的IPC服务(例如,IPC服务名)建立通往IPC服务的连接并经由该连接开始发送和接收数据或消息。例如,为了开发专门用于应用204的应用扩展205,开发者可能必须开发专门连接到与开发应用204的开发者达成一致的特定IPC服务名的代码,使得应用204和应用扩展205都能够连接到同一IP服务。
IPC框架401涉及的服务寿命可以受到操作系统的管理。宿主应用不必手工开始或停止IPC服务;相反,它可以简单地连接到服务,如果服务未在运行,操作系统可以自动启动服务并且在不需要时终止它。利用IPC框架401,应用可以将自身分成多个服务,每个服务都应对安全敏感部件。这些服务可以利用非常有限的许可运行,并将在受到影响时不能导致很大损害。IPC框架401还可以通过更安全的方式允许应用访问操作系统提供的特定系统服务,并允许第三方应用彼此共享数据而不会影响操作系统的安全模型。
在一个实施例中,在应用扩展205呈现要由应用204呈现的GUI内容405时,运行于应用扩展205内的内容控制器403被配置为通过与对应的内容控制器402通信来向要呈现内容404的应用204中注入GUI内容。内容控制器402-403可以进一步彼此通信以使内容改变和/或用户与所显示内容的交互同步。内容控制器可以是远程视图控制器,其允许过程或应用与另一过程或应用共享用户接口。内容控制器403向内容控制器402拷贝内容405,而不需要与应用204运行于同一地址空间内的应用扩展205。远程视图服务可以被实现为上述IPC服务。
图4B是示出了根据本发明另一实施例,用于应对应用扩展的方法的流程图。方法450可通过可包括软件、硬件或其组合的处理逻辑来实施。例如,方法450可以由图4A的系统400执行。参考图4B,在方框451,处理基于与第一应用相关联的第一安全概况在第一沙箱化环境中启动第一应用。在方框452,处理逻辑基于与应用扩展相关联的第二安全概况在第二沙箱化环境中启动应用扩展(例如,插件)。在一个实施例中,该应用扩展是第二应用的扩展,专门设计成让第一应用访问第二应用的功能。在方框453,响应于在应用扩展内呈现的第一内容,处理逻辑经由IPC框架401向第一应用中注入第一内容,以被呈现为第二内容。在方框454,处理逻辑经由IPC框架在第一应用和应用扩展之间同步第一和第二内容的更新。
根据一个实施例,扩展点充当扩展的软件开发者的接口并提供扩展操作的域。每个扩展点都与预定义组的策略(例如,资源授权或限制)相关联并指定在宿主应用和扩展之间可以交换什么消息。为特定扩展点设计的所有扩展都必须符合该特定扩展点的预定义策略中阐述的规范。所有扩展在操作环境中执行时,都有权使用由关联扩展点定义的同一组操作环境参数或受其约束。
在开发第二应用的扩展时,如图5A中所示,开发者可以利用与特定扩展点相关联的扩展模板501作为软件开发套件(SDK)的部分,以基于源代码502产生容器应用531和关联扩展532的可执行图像,以及其相应的元数据533-534。可以将扩展和容器应用作为捆绑220发布。该捆绑包括容器应用531及其描述容器应用的元数据533,以及扩展532及其描述扩展的元数据534。不过,容器应用531和扩展532可以各自在独立的沙箱化环境中启动并独立操作,可以基于其相应的元数据和/或对应的扩展点进行配置,尽管它们可以访问或共享公共库或框架。在一些实施例中,容器应用可以包括多个扩展,在本示例中,为扩展541和542。扩展的每个扩展可以进一步指定扩展提供商ID(例如,扩展提供商ID 551)及其版本(例如,扩展标识符552,也称为扩展密钥)。扩展提供商ID是唯一地标识扩展提供商并由预先确定的管理机构(例如,操作系统提供商)证明的标识符。在安装扩展的更新版本时,在对应扩展提供商已经成功认证之后,利用新的扩展密钥(例如,版本552)替代扩展注册表(例如,图3A的扩展注册表350)中的对应扩展密钥,使得调用更新版本的扩展而不是更旧的版本。
应用捆绑可以是允许将相关资源,例如软件代码分到一组的目录。应用捆绑可以由“.app”扩展(例如,“application.app”)标识。应用捆绑可以包括若干目录和/或子目录,例如“Contents”、“Operating system”,其可以包含由“.exe”扩展标识的应用的可执行代码(例如,“Application.exe”,不过,在其他实施例中,可执行文件可以具有另一扩展或可以不包括扩展),可以包含应用资源的“Resources”(例如,“Image.png”)和可以包含应用定义的服务的“XPC服务”。这些服务可以是一组计算机实施的指令,其被设计成实施特定功能或执行指定任务。在一个实施例中,应用定义的服务是仅有应用捆绑代表的应用可用的服务。此外,这些应用定义的服务可以关联到应用的寿命,因为一旦应用被终止,服务就不再可用了。
在一个实施例中,应用捆绑中的可执行代码可以参照一个或多个框架而链接。框架可以包括软件库,软件库具有在明确定义的应用编程接口(API)中封装的软件代码的可重复使用的摘要。框架允许软件开发者为特定开发环境(例如,运行于计算设备上的操作系统)实施应用的标准结构。由应用链接的框架可以由框架捆绑代表。常用框架的一些示例可以包括内核音频框架和代码图形框架。应用中的可执行文件可以通过在应用捆绑中的指定位置存储框架名称或框架捆绑的其他标识符和/或通过调用关联框架提供的API来链接框架。
框架捆绑中包括的服务可以被全部链接同一框架的若干不同应用所用。在一个实施例中,可以有框架中特定服务的单个全局实例,其可用于特定数量的不同应用。在另一个实施例中,可以有针对系统每个用户而实例化的特定服务的个体实例,或针对运行于系统中的每个应用的服务实例。在其他实施例中,每个服务可以具有不同的指定作为全局实例、每个用户的实例或每个应用的实例,其中在相同或不同框架中在同一时间可以有每种类型的服务。此外,在框架的判断处可以生成某种其他实例。例如,一个框架可以具有针对每个浏览器标签或打开的窗口的一个实例。每个实例都可以由通用唯一标识符(UUID)标识。
在构建应用时,应用设计者可以指定在应用中具体定义什么服务,以及该应用将链接什么框架。应用设计者还可以了解那些框架中包含什么服务。于是,在应用定义的服务和链接框架中的服务之间,应用设计者能够授权访问应用可执行文件需要或可能想访问的所有服务。此外,该应用设计者能够指定允许应用可执行文件访问哪些服务。因此,应用不能使用不必要的且未授权的服务。这种元数据形式的信息可以最终被编译为与应用相关联的安全概况的授权的部分。
重新参考图5A,对于和操作系统相关联的扩展点的至少一个,可以定义扩展模板(例如,模板501)以允许软件开发者具有简单且用户有好的用户界面,以针对该特定扩展点构造源代码(例如,源代码502)。例如,扩展模板可以与(无论从宿主应用的角度来说或是从扩展的角度来说)访问关联扩展点通常需要的一组预定义特定对象或类别相关联。扩展模板可以进一步标识特定与扩展点相关联的一组库或框架。于是,在SDK 510的诸如编译器和/或链接器的SDK工具编译源代码502时,利用了相关的库或框架,例如库520。结果,针对同一扩展点编译的所有扩展将与同一组API或协议兼容并在执行期间被授权使用同一资源授权或被限制到操作环境的相同限制。
图5B是示出了根据本发明一个实施例,用于为扩展点发展扩展的方法的流程图。方法550可通过可包括软件、硬件或其组合的处理逻辑来实施。例如,方法550可以由图5A的SDK 510执行。参考图5B,在方框551,定义一组扩展点。每个扩展点都与一组API相关联,以允许一个应用访问预定义功能或获得服务,可以经由扩展从另一个应用(例如,容器应用)扩展该功能或服务。在方框552,对容器应用进行编译,包括产生为容器应用定义资源授权的第一配置文件。在方框553,编译将容器应用的功能经由特定扩展点扩展到另一应用的扩展,包括产生具有与该扩展点相关联的元数据的第二配置文件。在方框554,将容器应用和扩展,以及其相应的配置文件封装成捆绑以进行安装。容器应用和扩展可以独立地在不同沙箱中启动。
图6A是示出了根据本发明一个实施例,用于注册扩展的系统的框图。系统600可以被实现为上述操作系统的部分。参考图6A,扩展框架,例如图3A中所示的扩展框架,维护着扩展注册表350,扩展注册表350中描述了已经安装并在操作系统中注册的扩展列表。在一个实施例中,扩展注册表350包括多个条目,每条对应于安装或注册的扩展中的一个扩展。每个扩展条目包括,但不限于扩展ID 610、扩展提供商ID 602和扩展密钥603。扩展ID 610可以唯一地标识定义且在操作系统提供商和扩展提供商之间达成一致的扩展服务的类型或类别,例如UTI。扩展提供商ID 611可以唯一地标识提供扩展服务的扩展提供商,其可以被预先确定的管理机构授权或证明。扩展密钥612可以代表当前安装并向系统注册的扩展的特定版本或实例。
在一个实施例中,在开发扩展时,可以为扩展的二进制代码或可执行图像编写对应的扩展提供商ID和与扩展的该特定版本相关联的扩展密钥。在本示例中,参考图6A,扩展的更早版本621包括其中编写的扩展提供商ID 623和扩展密钥625,而扩展的更新版本622分别包括扩展提供商ID 624和扩展密钥626。如果由不同供应商提供,扩展提供商ID 623-624可以不同;否则,扩展提供商ID 623-624可以相同,不过,它们的扩展密钥625-626可以根据对应的版本或实例而不同。
出于例示的目的,假设扩展621-622由同一扩展提供商提供,而扩展621是更早版本,扩展622是更新版本。在扩展621由安装模块320安装时,生成对应的条目650,其中字段610存储与扩展621提供的扩展服务类型(在本示例中为内容共享服务)相关联的扩展种类ID(例如,UTI)。条目650的字段611存储提供商ID 623,并且条目650的字段612存储扩展密钥625。在宿主应用601尝试经由对应扩展点602调用与条目650相关联的扩展时,扩展管理器310可以在注册表350中查找以基于例如宿主应用601提供的扩展ID识别能够提供该类型或种类扩展服务的任何扩展。在本示例中,通过参照注册表350的扩展ID 610匹配宿主应用601提供的扩展ID来识别扩展条目650。基于提供商ID 611和扩展密钥612,扩展621将被识别并启动。
随后,在安装更新版本的扩展622时,根据一个实施例,安装模块320检查扩展622的元数据(在本示例中为扩展提供商ID 623)以确保扩展622由被适当管理机构证明或授权的真实扩展提供商提供。一旦认证了扩展622的扩展提供商,安装模块320就利用更新的扩展密钥626替代条目650的扩展密钥612(例如,扩展密钥625)。结果,响应于后续请求,为了调用与条目650相关联的扩展,在本示例中将识别更新版本的扩展622而不是更旧版本的扩展621。
图6B是示出了根据本发明一个实施例,用于管理经由扩展点的扩展的方法的流程图。方法650可通过可包括软件、硬件或其组合的处理逻辑来实施。例如,方法650可以由图6A的系统600执行。参考图6B,在方框651,处理逻辑从第一应用接收查询与一个或多个其他应用扩展的特定扩展点相关联的特定扩展服务(例如,由特定UTI标识)的请求。响应于该请求,在方框652,处理逻辑识别已安装且能够经由特定扩展点提供所请求服务的一个或多个扩展的列表,包括识别扩展的至少多个版本。在方框653,向用户或第一应用呈现所识别扩展的列表以选择扩展中的一个扩展。在方框654,响应于选择了扩展第二应用的功能的扩展,处理逻辑在独立的沙箱化环境中启动扩展。注意,可以独立地执行扩展而无需启动第二应用。在方框655,经由对应的沙箱化环境在扩展上实施与扩展点相关联的资源限制。
如上所述,扩展的示例包括,但不限于用于操作系统300的通知中心的扩展点、用于第三方键盘的扩展点、用于社交媒体的扩展点、用于用户接口(UI)的服务的扩展点、用于文件提供商/获取者的扩展点、用于照片编辑和/或过滤的扩展点、用于翻译的扩展点以及用于文件/内容寻找程序的扩展点。这些扩展中的一些,例如翻译扩展点或过滤扩展点,被称为动作扩展点。过滤扩展点可以用于调用过滤扩展,其执行数据过滤操作,例如照片过滤操作。根据一个实施例,动作扩展可以包括可执行代码条,例如JavaScript或其他脚本,可以从扩展调用并下载它们并在宿主应用中执行,以辅助宿主应用的特定任务。
图7A是示出了根据本发明一个实施例的动作扩展点的示例的框图。参考图7A,在本示例中,动作扩展702是内容处理扩展,被设计成经由动作扩展点710为诸如宿主应用701的客户端处理内容或数据。动作扩展702可以由不同于提供操作系统的开发者的第三方开发者开发。在一个实施例中,动作扩展702除了内容处理功能或模块705之外,包括数据转换代码704A。数据转换代码704A作为辅助代理,可以实现为可执行脚本的形式,例如JavaScriptTM。
在一个实施例中,在宿主应用701请求动作扩展服务时,出于例示的目的,该动作扩展服务为翻译扩展服务,动作扩展点710(例如,翻译扩展点)识别并启动扩展702,以提供翻译服务。此外,宿主应用701可以调用数据转换代码704A以在内容处理模块705执行实际翻译之前执行特定的数据转换。在一个实施例中,宿主应用701(在本示例中为浏览器应用)下载数据转换代码并在宿主应用701中将其作为数据转换代码704B来执行。
数据转换代码704B在被执行时,被配置为解析内容703以识别内容703的哪个部分需要由内容处理模块705处理。数据转换代码704B要将所识别的内容封装成与扩展点710兼容的格式,并向扩展802发送封装的数据,以由内容处理模块705(在本示例中为翻译模块)处理,以翻译内容。响应于内容处理的结果,即经过翻译的内容,数据转换代码704B要对翻译的内容进行重新格式化以与内容703兼容并将翻译的内容与内容703合并。
本实施例可以应用于这样的状况:宿主应用701为浏览器应用,将特定内容703显示为超文本标记语言(HTML)页。浏览器应用可以下载JavaScript,即数据转换代码704A并将其作为代码704B来执行。JavaScript然后可以处理HTML内容703以对HTML页进行解析和理解,以便识别要翻译的感兴趣数据。结果,内容处理模块不必理解HTML页的结构。数据转换代码作为扩展702的辅助代理而工作(类似于另一个扩展的扩展)。注意,数据转换代码704B仍然必须要经由扩展点710与扩展702通信。数据转换代码704A捆绑于扩展702内,但是由宿主应用701将其作为代码704B而下载和执行的。
图7B是示出了根据本发明一个实施例,由动作扩展点执行的方法的流程图。方法750可通过可包括软件、硬件或其组合的处理逻辑来实施。例如,方法750可以由图7A所示的系统执行。参考图7B,在方框751,响应于来自宿主应用的调用内容处理服务(例如,翻译)的请求,处理逻辑识别并加载内容处理扩展。宿主应用可以是显示网页的浏览器应用,扩展可以是提供翻译服务的翻译扩展。在方框752,处理逻辑从扩展下载数据转换代码并在宿主应用内加载数据转换代码。数据转换代码可以是可执行脚本,例如JavaScript。在方框753,宿主执行数据转换代码,以对宿主应用呈现的内容的一部分进行解析和识别。在方框754,数据转换代码将内容的所识别部分转换成与对应扩展点(例如,翻译扩展点)兼容的形式并经由扩展点向扩展发送转换的数据。响应于从扩展接收的已处理内容(例如,翻译的内容),数据转换代码要将数据转换回到与宿主应用兼容的形式,并将处理的内容与宿主应用的现有内容合并。
图8A是示出了根据本发明一个实施例,用于提供内容共享服务的共享扩展点的框图。系统800可以被实现为上述扩展框架的任一种的部分。参考图8A,在本示例中,宿主应用801显示或呈现内容811,该内容可以由内容源802,诸如网站提供。在观看内容811之后,用户可能希望通过激活共享用户界面812与其朋友共享内容811。激活共享用户界面812会经由路径821向共享扩展803通过共享扩展点805发送共享命令。通过路径821发送的共享命令还可以包括具有内容811的降低分辨率的图像(例如,缩略图)的数据对象。在本示例中,假设共享扩展803已经利用上述技术中的一些被正确安装,注册,识别并选择。宿主应用801和共享扩展803可以如上所述经由共享扩展点805提供的IPC框架来彼此通信。
响应于经由路径821接收的共享命令,根据一个实施例,共享扩展803创建共享表单813,该共享表单中呈现了从所接收数据对象提取的内容811的缩略图。共享表单813然后经由路径822被注入到宿主应用801中,并被显示为具有代表内容811的缩略图816的共享表单克隆815。共享表单克隆可以经由共享扩展803和宿主应用801之间的远程查看桥连接而被注入。一旦用户查看了共享表单克隆815并共享由缩略图816呈现的内容,就经由路径823向共享扩展803发送行使命令。响应于行使命令,共享扩展803经由路径824发送对实际内容811的请求。一旦共享扩展803经由路径825从宿主应用801接收到实际内容,它就利用实际内容替代缩略图814,并经由路径826在内容共享网站或平台804处发布共享表单813。注意,共享扩展点可以用于将共享服务扩展到社交社区(例如TwitterTM、FacebookTM、LinkedInTM等)和/或非社交环境(例如AirDropTM、电子邮件等)。
图8B是示出了根据本发明一个实施例,使用共享扩展共享内容的方法的流程图。方法850可通过可包括软件、硬件或其组合的处理逻辑来实施。例如,方法850可以由图8A的系统800执行。参考图8B,在方框851,响应于来自宿主应用对共享内容的请求,处理逻辑识别并启动能够提供内容共享服务的共享扩展。在方框852,共享扩展创建具有要共享的内容的分辨率降低的图像(例如,缩略图、图标)的共享表单。例如,利用远程查看桥连接将共享表单作为共享表单视图注入到宿主应用中。在方框853,响应于来自宿主应用的行使命令,共享扩展从宿主应用请求并接收实际内容,在方框854,在内容共享网站上发布具有实际内容的共享表单。
图9是示出了根据本发明一个实施例,用于应对应用终止的过程的框图。系统900可以被实现为上述任何系统的部分。参考图9,在应用管理器201经由路径911从升级管理器接收到升级应用204的请求或者终止应用204的请求时,应用管理器201经由路径912与应用204通信,以查询终止应用204是否安全。响应于该查询,应用204经由路径913与中央管理机构902,例如窗口服务器通信,以判断应用扩展205当前是否正在被用户使用。中央管理机构902可以经由路径914判断应用扩展205是否在前景中,这是一种发现用户当前是否在使用应用扩展205提供的用户界面的方式。中央管理机构902然后经由路径915向应用204发回应用扩展的操作状态,应用204接着经由路径916通知应用管理器201。例如,如果判定用户当前在利用用户界面应用扩展205,应用管理器201可以推迟终止应用204,以便不会打断用户。或者,应用204可以经由IPC框架直接与应用扩展205通信,以判断用户当前是否在使用应用扩展205。
根据另一个实施例,特定应用的应用扩展可以由集中应用或控制中心用于经由应用扩展访问关联应用的功能。亦即,集中应用或控制中心充当各个应用的集中进入点,而无需用户逐个启动对应的应用。此外,在操作系统已经安装应用扩展时,向用户提供选项以激活/启用或去活/禁用应用扩展。例如,可以在应用控制中心的用户界面内将针对操作系统的应用控制中心(例如,通知中心)的已安装应用的已安装应用扩展显示为宿主应用。应用控制中心的用户界面可以显示启用/禁用选项(例如,诸如图标的开关图形表达)以允许用户启用或禁用已安装的应用扩展。仅在启用应用扩展的时候才可以从应用控制中心访问应用扩展(例如,以利用关联的已安装应用的功能);否则,用户必须要使用与应用扩展相关联的已安装应用。
图10是示出了根据本发明一个实施例,用于经由其相应扩展访问应用的系统的框图。参考图10,宿主应用1001被配置为托管专门为宿主应用1001设计的应用1006-1007的应用扩展1004-1005的列表1009,它们分别由标签或图形表达(例如,图标)1010-1011代表。宿主应用1001可以是操作系统的通知中心或控制中心。应用扩展1004-1005可以在与执行宿主应用1001的沙箱化环境不同的沙箱化环境1002-1003中启动和执行。注意,应用扩展1004-1005也可以在与执行其关联应用1006-1007的沙箱化环境不同的沙箱化环境中执行。从作为集中进入点的扩展列表1009开始,用户能够经由其相应扩展1004-1005访问应用1006-1007的功能。在一个实施例中,宿主应用1001包括配置界面1008,以允许用户逐个启用或禁用(例如,进入或退出)应用扩展1010-1011的任一个。
图11A-11B是示出了根据本发明一个实施例的应用的图形用户界面示例的屏幕截图。参考图11A和11B,可以由图10的系统1000代表屏幕截图。GUI 1100代表宿主应用,例如,图10的宿主应用1001的用户界面。在本示例中,应用1100代表操作系统的应用控制中心,例如来自Apple Inc.的iOS的通知中心。应用1100包括多个通往各种其他应用的标签或进入点。在本示例中,GUI包括列出其他应用的激活进入点的区段和列出其他应用的去活进入点的区段1102。可以通过切换对应的开关图标来去活区段1101中列出的每个标签或进入点,这将会把进入点的图形表达从区段1101移动到区段1102。类似地,可以将区段1102中的每个进入点激活并移动到区段1101。
在一个实施例中,区段1101-1102中的至少一些进入点可以是从第三方应用扩展的应用扩展,一些可以与操作系统提供的应用或服务相关联。例如,应用1103可以是第三方应用(例如,图10的应用1007),而应用1104可以是操作系统提供的内置应用或服务(例如,图10的应用1006)。从图11A所示的应用1101的GUI,用户能够经由其激活的进入点访问另一个应用。例如,用户可以点击图11A中代表另一应用的插件的图形表达1103,以访问图11B所示的该特定应用的功能。结果,用户能够从本示例中的通知中心访问多个应用。用户还能够通过方便的方式启动各个应用,从而逐个访问那些应用。
图12A-12C是示出了根据本发明一个实施例的应用的图形用户界面示例的屏幕截图。参考图12A-12C,可以由图10的系统1000代表屏幕截图。在本示例中,GUI 1200可以由宿主应用1201代表,以使共享表单出现在行1202中列出的其他应用和列1203中列出的服务中。行1202中列出的图形表达(在本示例中为图标)可以包括来自其他应用,例如TwitterTM和FacebookTM的一些应用扩展。行1202和1203中的那些扩展或服务的每个都可以被逐个激活或去活。例如,在用户在行1202和行1203中的“More”图标上点击时,显示配置页以允许用户逐个配置所列出应用扩展或服务的任一个,分别如图12B和图12C中所示。
图13是可用于本发明一个实施例的数据处理系统示例的框图。例如,系统1300可以代表上文描述为执行上述任何过程或方法的任意数据处理系统。例如,系统1300可以代表上述系统。系统1300可以代表台式机(例如,可从加利福尼亚Cupertino的Apple Inc.买到的iMacTM)、膝上型计算机(例如,MacBookTM)、平板计算机(例如,iPadTM)、服务器、移动电话(例如,iPhoneTM)、媒体播放器(例如,iPodTM或iPod TouchTM)、个人数字助理(PDA)、个人通信器、游戏设备、网络路由器或集线器、无线接入点(AP)或转发器、机顶盒或其组合。
参考图13,在一个实施例中,系统1300包括处理器1301和外围设备接口1302,这里也称为芯片组,以经由总线或互连将各种部件耦接到处理器1301,各种部件包括存储器1303和设备1305-1308。处理器1301可以代表单个处理器或多个处理器,其中包括单个处理器内核或多个处理器内核。处理器1301可以代表一个或多个通用处理器,例如微处理器、中央处理单元(CPU)等。更具体地讲,处理器1301可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或执行其他指令集的处理器、或执行指令集组合的处理器。处理器1301也可以是一个或多个专用处理器,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器、图形处理器、网络处理器、通信处理器、密码处理器、协处理器、嵌入式处理器或任何其他类型的能够处理指令的逻辑。处理器1301被配置为执行指令,以执行本文论述的操作和步骤。
外围设备接口1302可以包括存储器控制集线器(MCH)和输入输出控制集线器(ICH)。外围设备接口1302可以包括与存储器1303通信的存储器控制器(未示出)。外围设备接口1302还可以包括与图形子系统1304通信的图形接口,其可以包括显示器控制器和/或显示设备。外围设备接口1302可以经由加速图形端口(AGP)、外围部件互连(PCI)高速总线或其他类型的互连与图形设备1304通信。
MCH有时被称为北桥,ICH有时被称为南桥。如本文所用,术语MCH、ICH、北桥和南桥意在被宽泛地解释为覆盖功能包括向处理器传递中断信号的各种芯片。在一些实施例中,MCH可以与处理器1301集成。在这样的配置中,外围设备接口1302作为接口芯片工作,执行MCH和ICH的一些功能。此外,图形加速器可以集成于MCH或处理器1301内。
存储器1303可以包括一个或多个易失性外部存储器(或存储器)设备,例如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或其他类型的存储设备。存储器1303可以存储包括由处理器1301或任何其他设备执行的指令序列的信息。例如,可以在存储器1303中加载各种操作系统、设备驱动程序、固件(例如,输入输出基本系统或BIOS)和/或应用的可执行代码和/或数据并由处理器1301执行。操作系统可以是任何种类的操作系统,例如,来自的操作系统、来自Apple的Mac来自的或其他实时或嵌入式操作系统,例如VxWorks。
外围设备接口1302可以提供通往诸如设备1305-1308的IO设备的接口,所述设备包括无线收发器1305、输入设备1306、音频IO设备1307和其他IO设备1308。无线收发器1305可以是WiFi收发器、红外收发器、蓝牙收发器、WiMax收发器、无线蜂窝电话收发器、卫星收发器(例如,全球定位系统(GPS)收发器)或其组合。输入设备1306可以包括鼠标、触控板、触感屏(其可以与显示设备1304集成)、诸如触笔的定点设备和/或键盘(例如,物理键盘或显示为触敏屏一部分的虚拟键盘)。例如,输入设备1306可以包括耦接到触摸屏的触摸屏控制器。触摸屏和触摸屏控制器例如能够利用多种触敏技术的任何一种检测接触和运动或其中断,触敏技术包括但不限于电容性、电阻性、红外和表面声波技术,以及用于确定与接触屏接触的一个或多个点的其他接近传感器阵列或其他元件。
音频IO 1307可以包括扬声器和/或麦克风,以方便启用语音的功能,例如语音识别、语音复制、数字记录和/或电话功能。其他任选设备1308可以包括存储设备(例如,硬盘驱动器、闪存存储器设备)、通用串行总线(USB)端口、并行端口、串行端口、打印机、网络接口、总线桥(例如,PCI-PCI桥)、传感器(例如,运动传感器、光传感器、接近传感器等)或其组合。任选设备1308还可以包括成像处理子系统(例如,相机),其可以包括用于促成相机功能,例如记录照片和视频剪辑的光学传感器,例如电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)光学传感器。
需注意,虽然图13示出了数据处理系统的各种部件,但是其并不旨在表示使这些部件互连的任何特定构造或方式,因此此类细节与本发明的实施例并无密切关系。也可以理解,具有较少部件或可能较多部件的网络计算机、手持计算机、移动电话以及其他数据处理系统也可用于本发明的实施例。
已按照对计算机存储器中的数据位进行操作的算法和符号表示来呈现前面详细描述的某些部分。这些算法描述和表示是数据处理领域技术人员所用的方法,而这些方法也能最有效的将他们的工作实质传达给该领域其他技术人员。算法在这里并通常是指导致所希望的结果的操作的自相一致的序列。操作是需要对物理量进行物理操纵的那些操作。
然而,应当谨记,所有这些以及类似的术语都与适当的物理量相关联,并且只是应用于这些量的方便标签。除非另外特别说明,否则从上述讨论中显而易见的是,可以理解在整个说明书中,使用例如那些在以下权利要求中示出的术语的讨论是指计算机系统或类似的电子计算设备的操作和流程,该设备可操作在计算机系统寄存器和存储器中表示为物理(电子)量的数据、或将其转换成在计算机存储器、寄存器或其他此类信息存储、传输或显示设备中同样显示为物理量的其他数据。
可以利用一个或多个电子设备上存储和执行的代码和数据实施图中所示的技术。此类电子设备利用计算机可读介质存储并(在内部和/或通过网络与其他电子设备)传输代码和数据,计算机可读介质例如是非暂态计算机可读存储介质(例如,磁盘、光盘、随机存取存储器、只读存储器、闪速存储设备、相变存储器)和暂态计算机可读传输介质(例如,电、光、声或其他形式的传播信号,例如载波、红外信号、数字信号)。
前面图中所示的流程或方法可通过处理包括硬件(例如电路、专用逻辑等)、固件、软件(如实现在非暂态计算机可读介质上)或它们两者的组合的逻辑来执行。虽然上文利用某些顺序操作来描述流程或方法,但是应当理解,所描述的某些操作可以不同的顺序来执行。此外,某些操作也可并行执行而并非按顺序执行。
在前述的说明书中,参照其特定的示例性实施例描述了本发明的各实施例。显而易见的是,可在不脱离以下权利要求所示的本发明的更广泛的实质和范围的情况下对实施例做出各种修改。因此,说明书和附图应被认为是出于例证目的而非限制目的。
Claims (37)
1.一种计算机实现的方法,包括:
响应于从第一应用接收的对与操作系统的多个扩展点中的第一扩展点相关联的扩展服务的查询来识别已经向所述操作系统针对所述第一扩展点注册的一个或多个扩展的列表,其中所述第一应用在第一沙箱化环境内执行;
显示所识别的扩展的列表以提示用户选择所述扩展中的与所述第一应用相关联的一个扩展,其中所述列表中的每个所述扩展受到与所述第一扩展点相关联的相同一组授权的限制;
响应于选择所述扩展中的一个扩展来在第二沙箱化环境中启动所选扩展,其中所选扩展和第二应用被封装于应用捆绑中,并且其中所选扩展和所述第二应用从所述应用捆绑来安装且所选扩展和所述第二应用在所述操作系统的注册表中表现为分开的条目。
2.根据权利要求1所述的方法,其中在被执行时,所选扩展和所述第二应用访问至少一个公共库或应用框架。
3.根据权利要求2所述的方法,其中所述第一应用经由所述第一扩展点访问由所选扩展提供的功能,而无需执行所述第二应用。
4.根据权利要求1所述的方法,其中所述应用捆绑包括所述第二应用的第一可执行文件、具有描述所述第一可执行文件的元数据的第一元数据文件、所选扩展的第二可执行文件以及具有描述所选扩展的元数据的第二元数据文件,其中所述第二元数据文件包括标识所述第一扩展点的信息。
5.根据权利要求4所述的方法,还包括在所述操作系统中安装所述应用捆绑,包括在启动数据库中存储标识所述第一扩展点的信息,其中识别一个或多个扩展的列表包括访问所述启动数据库以基于其中存储的标识所述第一扩展点的信息识别所选扩展。
6.根据权利要求4所述的方法,其中所述列表中的每个扩展由开发者使用专门针对所述第一扩展点设计的扩展模板开发,并且其中使用预先确定的一组库编译所述第二可执行文件,使得排除不相关的功能。
7.根据权利要求1所述的方法,其中在所述第二沙箱化环境中启动所选扩展包括经由所述第一扩展点使用过程间调用(IPC)框架来促成运行于所述第一沙箱化环境内的所述第一应用和运行于所述第二沙箱化环境内的所选扩展之间的通信。
8.一种非暂态计算机可读介质,其中存储有指令,所述指令在由处理器执行时,使得所述处理器执行一种方法,所述方法包括:
响应于从第一应用接收的对与操作系统的多个扩展点的第一扩展点相关联的扩展服务的查询来识别已经向所述操作系统针对所述第一扩展点注册的一个或多个扩展的列表,其中所述第一应用在第一沙箱化环境内执行;
显示所识别的扩展的列表以提示用户选择所述扩展中的与所述第一应用相关联的一个扩展,其中所述列表中的每个扩展受到与所述第一扩展点相关联的相同一组授权的限制;
响应于选择所述扩展中的一个扩展来在第二沙箱化环境中启动所选扩展,其中所选扩展和第二应用被封装于应用捆绑中,并且其中所选扩展和所述第二应用从所述应用捆绑来安装且所选扩展和所述第二应用在所述操作系统的注册表中表现为分开的条目。
9.根据权利要求8所述的非暂态计算机可读介质,其中在被执行时,所选扩展和所述第二应用访问至少一个公共库或应用框架。
10.根据权利要求9所述的非暂态计算机可读介质,其中所述第一应用经由所述第一扩展点访问由所选扩展提供的功能,而无需执行所述第二应用。
11.根据权利要求8所述的非暂态计算机可读介质,其中所述应用捆绑包括所述第二应用的第一可执行文件、具有描述所述第一可执行文件的元数据的第一元数据文件、所选扩展的第二可执行文件以及具有描述所选扩展的元数据的第二元数据文件,其中所述第二元数据文件包括标识所述第一扩展点的信息。
12.根据权利要求11所述的非暂态计算机可读介质,其中所述方法还包括在所述操作系统中安装所述应用捆绑,包括在启动数据库中存储标识所述第一扩展点的信息,其中识别一个或多个扩展的列表包括访问所述启动数据库以基于其中存储的标识所述第一扩展点的信息识别所选扩展。
13.根据权利要求11所述的非暂态计算机可读介质,其中所述列表中的每个扩展由开发者使用专门针对所述第一扩展点设计的扩展模板开发,并且其中使用预先确定的一组库编译所述第二可执行文件,使得排除不相关的功能。
14.根据权利要求8所述的非暂态计算机可读介质,其中在所述第二沙箱化环境中启动所选扩展包括经由所述第一扩展点使用过程间调用(IPC)框架来促成运行于所述第一沙箱化环境内的所述第一应用和运行于所述第二沙箱化环境内的所选扩展之间的通信。
15.一种数据处理系统,包括:
用于响应于从第一应用接收的对与操作系统的多个扩展点的第一扩展点相关联的扩展服务的查询来识别已经向所述操作系统针对所述第一扩展点注册的一个或多个扩展的列表的装置,其中所述第一应用在第一沙箱化环境内执行;
用于显示所识别的扩展的列表以提示用户选择所述扩展中的与所述第一应用相关联的一个扩展的装置,其中所述列表中的每个扩展受到与所述第一扩展点相关联的相同一组授权的限制;
用于响应于选择所述扩展中的一个扩展来在第二沙箱化环境中启动所选扩展的装置,其中所选扩展和第二应用被封装于应用捆绑中,并且其中所选扩展和所述第二应用从所述应用捆绑来安装且所选扩展和所述第二应用在所述操作系统的注册表中表现为分开的条目。
16.根据权利要求15所述的系统,其中在被执行时,所选扩展和所述第二应用访问至少一个公共库或应用框架。
17.根据权利要求16所述的系统,其中所述第一应用经由所述第一扩展点访问由所选扩展提供的功能,而无需执行所述第二应用。
18.根据权利要求15所述的系统,其中所述应用捆绑包括所述第二应用的第一可执行文件、具有描述所述第一可执行文件的元数据的第一元数据文件、所选扩展的第二可执行文件以及具有描述所选扩展的元数据的第二元数据文件,其中所述第二元数据文件包括标识所述第一扩展点的信息。
19.根据权利要求18所述的系统,其中所述系统还包括用于在所述操作系统中安装所述应用捆绑的装置,安装所述应用捆绑包括在启动数据库中存储标识所述第一扩展点的信息,其中识别一个或多个扩展的列表包括访问所述启动数据库以基于其中存储的标识所述第一扩展点的信息识别所选扩展。
20.根据权利要求18所述的系统,其中所述列表中的每个扩展由开发者使用专门针对所述第一扩展点设计的扩展模板开发,并且其中使用预先确定的一组库编译所述第二可执行文件,使得排除不相关的功能。
21.根据权利要求15所述的系统,其中在所述第二沙箱化环境中启动所选扩展包括经由所述第一扩展点使用过程间调用(IPC)框架来促成运行于所述第一沙箱化环境内的所述第一应用和运行于所述第二沙箱化环境内的所选扩展之间的通信。
22.一种数据处理系统,包括:
处理器;以及
耦接到所述处理器的用于存储指令的存储器,在从所述存储器执行所述指令时,所述指令使得所述处理器
响应于从第一应用接收的对与操作系统的多个扩展点的第一扩展点相关联的扩展服务的查询来识别已经向所述操作系统针对所述第一扩展点注册的一个或多个扩展的列表,其中所述第一应用在第一沙箱化环境内执行;
显示所识别的扩展的列表以提示用户选择所述扩展中的与所述第一应用相关联的一个扩展,其中所述列表中的每个扩展受到与所述第一扩展点相关联的相同一组授权的限制;
响应于选择所述扩展中的一个扩展,在第二沙箱化环境中启动所选扩展,其中所选扩展和第二应用被封装于应用捆绑中,并且其中所选扩展和所述第二应用从所述应用捆绑来安装且所选扩展和所述第二应用在所述操作系统的注册表中表现为分开的条目。
23.根据权利要求22所述的系统,其中在被执行时,所选扩展和所述第二应用访问至少一个公共库或应用框架。
24.根据权利要求23所述的系统,其中所述第一应用经由所述第一扩展点访问由所选扩展提供的功能,而无需执行所述第二应用。
25.根据权利要求22所述的系统,其中所述应用捆绑包括所述第二应用的第一可执行文件、具有描述所述第一可执行文件的元数据的第一元数据文件、所选扩展的第二可执行文件以及具有描述所选扩展的元数据的第二元数据文件,其中所述第二元数据文件包括标识所述第一扩展点的信息。
26.根据权利要求25所述的系统,其中所述应用捆绑被安装于所述操作系统中,并且所述安装包括在启动数据库中存储标识所述第一扩展点的信息,其中识别一个或多个扩展的列表包括访问所述启动数据库以基于其中存储的标识所述第一扩展点的信息识别所选扩展。
27.根据权利要求25所述的系统,其中所述列表中的每个扩展由开发者使用专门针对所述第一扩展点设计的扩展模板开发,并且其中使用预先确定的一组库编译所述第二可执行文件,使得排除不相关的功能。
28.根据权利要求22所述的系统,其中在所述第二沙箱化环境中启动所选扩展包括经由所述第一扩展点使用过程间调用(IPC)框架来促成运行于所述第一沙箱化环境内的所述第一应用和运行于所述第二沙箱化环境内的所选扩展之间的通信。
29.一种计算机实现的方法,所述方法用于提供扩展服务,所述方法包括:
响应于来自宿主应用的调用内容处理服务的请求来识别并加载能够提供所请求的内容处理服务的内容处理扩展;
从所述内容处理扩展获得数据转换代码,其中所述数据转换代码嵌入所述内容处理扩展内;
在所述宿主应用内执行所述数据转换代码;
使用所执行的数据转换代码对由所述宿主应用呈现的内容进行解析以识别所述内容中需要由所述内容处理扩展处理的部分;
向所述内容处理扩展发送所述内容的所识别部分以用于内容处理;以及
响应于从所述内容处理扩展接收的经处理内容,所执行的数据转换代码合并所述经处理内容与由所述宿主应用呈现的内容。
30.根据权利要求29所述的方法,其中所述数据转换代码在被执行时用于以在所述宿主应用和所述内容处理扩展之间适当的格式来封装数据。
31.根据权利要求29所述的方法,其中所述宿主应用和所述内容处理扩展经由扩展点彼此通信,并且其中所述扩展点是操作系统的多个扩展点中的一个扩展点,每个扩展点对应于一组预定义的应用编程接口(API)和一组预定义资源授权,其中每个扩展点限定公共接口,以将应用的预定义功能扩展到另一个应用。
32.根据权利要求29所述的方法,其中所述数据转换代码是嵌入所述扩展内的可执行脚本。
33.根据权利要求29所述的方法,其中所述宿主应用为浏览器应用,并且其中所述扩展是被配置为翻译由所述浏览器应用呈现的内容的所述部分的翻译扩展。
34.根据权利要求29所述的方法,其中所述数据转换代码被封装于由操作系统之外的第三方开发者开发的扩展内。
35.一种计算机实现的系统,用于提供扩展服务,所述系统包括用于执行如权利要求29-34中任一所述的方法的装置。
36.一种用于提供扩展服务的系统,所述系统包括处理器和耦接到所述处理器的用于存储指令的存储器,在从所述存储器执行所述指令时,所述指令使得所述处理器执行如权利要求29-34中任一所述的方法。
37.一种非暂态计算机可读介质,具有存储在其中的指令,所述指令在被处理器执行时,使得所述处理器执行如权利要求29-34中任一所述的方法。
Applications Claiming Priority (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462004777P | 2014-05-29 | 2014-05-29 | |
US201462004778P | 2014-05-29 | 2014-05-29 | |
US201462004780P | 2014-05-29 | 2014-05-29 | |
US62/004,777 | 2014-05-29 | ||
US62/004,778 | 2014-05-29 | ||
US62/004,780 | 2014-05-29 | ||
US14/488,126 | 2014-09-16 | ||
US14/488,126 US9811393B2 (en) | 2014-05-29 | 2014-09-16 | Consistent extension points to allow an extension to extend functionality of an application to another application |
US14/488,122 US9684547B2 (en) | 2014-05-29 | 2014-09-16 | Method and apparatus for handling security of an application and its extension |
US14/488,122 | 2014-09-16 | ||
PCT/US2015/028203 WO2015183456A1 (en) | 2014-05-29 | 2015-04-29 | Consistent extension points to allow an extension to extend functionality of an application to another application |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106462476A CN106462476A (zh) | 2017-02-22 |
CN106462476B true CN106462476B (zh) | 2019-09-17 |
Family
ID=54701857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580027879.1A Active CN106462476B (zh) | 2014-05-29 | 2015-04-29 | 将应用的功能扩展到另一应用的允许扩展的相容扩展点 |
Country Status (3)
Country | Link |
---|---|
US (6) | US9563488B2 (zh) |
KR (1) | KR101872141B1 (zh) |
CN (1) | CN106462476B (zh) |
Families Citing this family (72)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9930310B2 (en) | 2009-09-09 | 2018-03-27 | Apple Inc. | Audio alteration techniques |
US10762204B2 (en) * | 2013-11-28 | 2020-09-01 | Blackberry Limited | Managing containerized applications |
US9692789B2 (en) | 2013-12-13 | 2017-06-27 | Oracle International Corporation | Techniques for cloud security monitoring and threat intelligence |
US9563488B2 (en) * | 2014-05-29 | 2017-02-07 | Apple Inc. | Sharing extension points to allow an application to share content via a sharing extension |
US10445396B2 (en) | 2014-05-31 | 2019-10-15 | Apple Inc. | Device, method, and graphical user interface for extending functionality of a host application to another application |
CN105471824A (zh) * | 2014-09-03 | 2016-04-06 | 阿里巴巴集团控股有限公司 | 实现浏览器调用本地业务组件的方法、装置及系统 |
US9542247B2 (en) * | 2014-09-19 | 2017-01-10 | Microsoft Technology Licensing, Llc | Content sharing between sandboxed apps |
US9575740B2 (en) * | 2015-01-21 | 2017-02-21 | Samsung Electronics Co., Ltd. | Apparatus and method for running multiple instances of a same application in mobile devices |
JP6468293B2 (ja) * | 2015-01-22 | 2019-02-13 | 富士通株式会社 | アプリケーション機能拡張方法、アプリケーション機能拡張プログラム、及びアプリケーション機能拡張装置 |
KR102320149B1 (ko) * | 2015-02-16 | 2021-11-01 | 삼성전자주식회사 | 어플리케이션을 실행하는 전자 장치 및 그 제어 방법 |
US9875150B2 (en) * | 2015-06-02 | 2018-01-23 | Apple Inc. | Method and system for processing notifications amongst applications of a data processing system |
US10585727B1 (en) | 2015-06-08 | 2020-03-10 | Google Llc | API manager |
US10282539B2 (en) * | 2015-06-12 | 2019-05-07 | AVAST Software s.r.o. | Authentication and secure communication with application extensions |
US11113086B1 (en) | 2015-06-30 | 2021-09-07 | Fireeye, Inc. | Virtual system and method for securing external network connectivity |
US10395029B1 (en) * | 2015-06-30 | 2019-08-27 | Fireeye, Inc. | Virtual system and method with threat protection |
US10726127B1 (en) | 2015-06-30 | 2020-07-28 | Fireeye, Inc. | System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer |
US10642753B1 (en) | 2015-06-30 | 2020-05-05 | Fireeye, Inc. | System and method for protecting a software component running in virtual machine using a virtualization layer |
US20170060650A1 (en) * | 2015-08-28 | 2017-03-02 | Ncr Corporation | Dynamic service extensibility |
US10437828B2 (en) * | 2015-12-18 | 2019-10-08 | Sap Se | Controlled reference process extensibility framework |
CN107015794B (zh) * | 2015-12-18 | 2021-07-06 | Sap欧洲公司 | 软件即服务参考流程扩展验证框架 |
CN106919581A (zh) * | 2015-12-24 | 2017-07-04 | 北京奇虎科技有限公司 | 一种浏览器的防护方法及装置 |
US10536478B2 (en) * | 2016-02-26 | 2020-01-14 | Oracle International Corporation | Techniques for discovering and managing security of applications |
US10776072B2 (en) | 2016-03-29 | 2020-09-15 | Intel Corporation | Technologies for framework-level audio device virtualization |
CN107357600B (zh) * | 2016-05-10 | 2022-05-13 | 中兴通讯股份有限公司 | 一种应用分享装置及方法 |
US10592098B2 (en) | 2016-05-18 | 2020-03-17 | Apple Inc. | Devices, methods, and graphical user interfaces for messaging |
KR20240023200A (ko) | 2016-05-18 | 2024-02-20 | 애플 인크. | 그래픽 메시징 사용자 인터페이스 내의 확인응답 옵션들의 적용 |
US10368208B2 (en) | 2016-06-12 | 2019-07-30 | Apple Inc. | Layers in messaging applications |
US10194288B2 (en) | 2016-06-12 | 2019-01-29 | Apple Inc. | Sticker distribution system for messaging apps |
US10554599B2 (en) | 2016-06-12 | 2020-02-04 | Apple Inc. | Conversion of detected URL in text message |
US9990128B2 (en) | 2016-06-12 | 2018-06-05 | Apple Inc. | Messaging application interacting with one or more extension applications |
US10505872B2 (en) | 2016-06-12 | 2019-12-10 | Apple Inc. | Messaging application interacting with one or more extension applications |
US10595169B2 (en) | 2016-06-12 | 2020-03-17 | Apple Inc. | Message extension app store |
US11088973B2 (en) | 2016-06-12 | 2021-08-10 | Apple Inc. | Conversion of text relating to media content and media extension apps |
US10852912B2 (en) | 2016-06-12 | 2020-12-01 | Apple Inc. | Image creation app in messaging app |
US10607386B2 (en) | 2016-06-12 | 2020-03-31 | Apple Inc. | Customized avatars and associated framework |
US10785175B2 (en) * | 2016-06-12 | 2020-09-22 | Apple Inc. | Polling extension application for interacting with a messaging application |
CA2972178A1 (en) * | 2016-06-29 | 2017-10-05 | Sphere 3D Inc. | Systems and methods for emulating resources using abstract containerization with abstract categorization and policy setting |
US10277631B1 (en) * | 2016-07-08 | 2019-04-30 | Sprint Communications Company L.P. | Self-preserving policy engine and policy-based content transmission |
US11036851B2 (en) | 2016-10-12 | 2021-06-15 | Kortek Industries Pty Ltd | Configurable wireless power control and management |
KR102303665B1 (ko) * | 2017-03-29 | 2021-09-17 | 삼성전자주식회사 | 플러그인 서비스를 포함하는 결제 서비스 제공 방법 및 그 전자장치 |
US10861210B2 (en) | 2017-05-16 | 2020-12-08 | Apple Inc. | Techniques for providing audio and video effects |
US10592311B2 (en) | 2017-09-28 | 2020-03-17 | Microsoft Technology Licensing, Llc | Computing device resource management |
KR101997061B1 (ko) * | 2017-09-29 | 2019-07-05 | 숭실대학교산학협력단 | 리눅스 기반 안드로이드 컨테이너 플랫폼, 이를 탑재한 장치 및 리눅스 기반 안드로이드 컨테이너 환경에서의 보안 시스템 구축 방법 |
US11343304B2 (en) * | 2017-11-20 | 2022-05-24 | Parallels International Gmbh | System and method for sharing electronic data using a mobile device |
US11062030B2 (en) * | 2018-03-09 | 2021-07-13 | Huawei Technologies Co., Ltd. | Systems and methods for managing access control between processes in a computing device |
US11281767B2 (en) * | 2018-03-23 | 2022-03-22 | International Business Machines Corporation | Secure system state extraction software extensibility via plugin sandboxing |
US11461279B2 (en) | 2018-03-26 | 2022-10-04 | Apple Inc. | Share pools for sharing files via a storage service |
CN108600529B (zh) * | 2018-04-09 | 2020-12-04 | 北京小米移动软件有限公司 | 信息交互方法、装置及计算机可读存储介质 |
US11188353B2 (en) * | 2018-07-12 | 2021-11-30 | Vmware, Inc. | Runtime extension system for bundled web application |
CN112703478B (zh) * | 2018-09-11 | 2024-07-05 | 华为技术有限公司 | 数据分享的方法、图形用户界面、电子设备及系统 |
US20200099738A1 (en) * | 2018-09-24 | 2020-03-26 | Citrix Systems, Inc. | Systems and methods for bridge protocol between diverse applications |
US11029970B2 (en) * | 2018-10-24 | 2021-06-08 | Sap Se | Operating system extension framework |
US11061696B2 (en) | 2019-01-22 | 2021-07-13 | Servicenow, Inc. | Extension points for web-based applications and services |
CN110109718B (zh) * | 2019-03-26 | 2023-06-02 | 创新先进技术有限公司 | 一种应用程序接口调用方法及装置 |
CN110083465B (zh) * | 2019-04-26 | 2021-08-17 | 上海连尚网络科技有限公司 | 一种寄宿应用间的数据传递方法 |
US11792242B2 (en) | 2019-06-01 | 2023-10-17 | Apple Inc. | Sharing routine for suggesting applications to share content from host application |
US11556546B2 (en) | 2019-06-01 | 2023-01-17 | Apple Inc. | People suggester using historical interactions on a device |
CN112711436B (zh) * | 2019-10-25 | 2023-09-26 | 北京奇艺世纪科技有限公司 | 消息处理方法及装置 |
US11295007B2 (en) * | 2019-12-03 | 2022-04-05 | Tableau Software, LLC | Sandboxed application extensions |
CN111427705B (zh) * | 2020-03-16 | 2023-05-02 | 北京字节跳动网络技术有限公司 | 一种数据同步方法及装置 |
US11507863B2 (en) | 2020-05-21 | 2022-11-22 | Apple Inc. | Feature determination for machine learning to suggest applications/recipients |
KR20220030081A (ko) * | 2020-09-02 | 2022-03-10 | 삼성전자주식회사 | 전자장치 및 그 제어방법 |
CN112399216B (zh) * | 2020-10-27 | 2023-05-09 | 维沃移动通信(杭州)有限公司 | 资源分享方法、装置和电子设备 |
CN112434284B (zh) * | 2020-10-29 | 2022-05-17 | 格物钛(上海)智能科技有限公司 | 一种基于沙箱环境的机器学习训练平台实现 |
CN113760399A (zh) * | 2020-11-30 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 用于流程扩展的方法和装置 |
EP4064053A1 (en) * | 2021-03-26 | 2022-09-28 | Aptiv Technologies Limited | Managing inter-service communication |
US20220391223A1 (en) * | 2021-06-08 | 2022-12-08 | Red Hat, Inc. | Adding expressiveness to plugin extensions using integration with operators |
US11782690B2 (en) * | 2021-06-29 | 2023-10-10 | Dell Products L.P. | Delivering applications over-the-air while supporting original equipment manufacturer markers |
CN114020444B (zh) * | 2022-01-05 | 2022-05-10 | 阿里云计算有限公司 | 一种企业数字中台中资源服务应用的调用系统和方法 |
WO2024035430A1 (en) * | 2022-08-10 | 2024-02-15 | Visa International Service Association | Isolating application and software development kit sandboxes for security protection |
WO2024072117A1 (ko) * | 2022-09-30 | 2024-04-04 | 삼성전자 주식회사 | 전자 장치 및 어플리케이션 간의 통신 방법 |
CN118364454A (zh) * | 2023-01-18 | 2024-07-19 | 中兴通讯股份有限公司 | 第三方软件开发工具包访问控制方法、计算机设备、介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010054235A2 (en) * | 2008-11-10 | 2010-05-14 | Google Inc. | Safe browser plugins using native code modules |
CN102087594A (zh) * | 2010-12-27 | 2011-06-08 | 用友软件股份有限公司 | 扩展点和插件的管理方法和装置 |
CN102232217A (zh) * | 2008-12-02 | 2011-11-02 | 微软公司 | 插件的沙盒执行 |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6209018B1 (en) * | 1997-11-13 | 2001-03-27 | Sun Microsystems, Inc. | Service framework for a distributed object network system |
US7694328B2 (en) | 2003-10-21 | 2010-04-06 | Google Inc. | Systems and methods for secure client applications |
JP4579030B2 (ja) * | 2004-06-02 | 2010-11-10 | 株式会社リコー | 情報処理装置、ファイル処理方法、ファイル処理プログラム及び記録媒体 |
US7660999B2 (en) | 2004-06-22 | 2010-02-09 | Microsoft Corporation | MIME handling security enforcement |
US8661420B2 (en) * | 2004-08-03 | 2014-02-25 | Oracle International Corporation | System and method for runtime interface versioning |
US20060218488A1 (en) * | 2005-03-28 | 2006-09-28 | Microsoft Corporation | Plug-in architecture for post-authoring activities |
US7895594B2 (en) * | 2005-03-28 | 2011-02-22 | Freescale Semiconductor, Inc. | Virtual machine extended capabilities using application contexts in a resource-constrained device |
US7721281B1 (en) * | 2005-07-01 | 2010-05-18 | Cisco Technology, Inc. | Methods and apparatus for securing local application execution |
US8539497B2 (en) | 2006-03-30 | 2013-09-17 | Microsoft Corporation | Method for organizing software so the set of extensions for an extendable application can be run securely |
WO2007113709A1 (en) | 2006-03-30 | 2007-10-11 | Koninklijke Philips Electronics N.V. | Method and apparatus for assigning an application to a security restriction |
US8272048B2 (en) | 2006-08-04 | 2012-09-18 | Apple Inc. | Restriction of program process capabilities |
US8104048B2 (en) * | 2006-08-04 | 2012-01-24 | Apple Inc. | Browsing or searching user interfaces and other aspects |
US10416838B2 (en) * | 2006-12-11 | 2019-09-17 | Oath Inc. | Graphical messages |
US8065687B2 (en) * | 2007-01-05 | 2011-11-22 | Moka5, Inc. | Bypass virtualization |
US20080301142A1 (en) | 2007-06-03 | 2008-12-04 | Im-Prove Llc | Method and system for organizing and presenting construction knowledge-sharing tools |
US8429741B2 (en) | 2008-08-29 | 2013-04-23 | Google, Inc. | Altered token sandboxing |
US8230341B2 (en) * | 2008-11-26 | 2012-07-24 | Eyecon Ip Holding | Unified media devices controlling using pre-defined functional interfaces |
KR101515859B1 (ko) * | 2008-12-05 | 2015-05-06 | 삼성전자 주식회사 | 디스플레이장치 및 그 컨텐츠 리스트 표시 방법 |
US8626802B2 (en) * | 2009-07-24 | 2014-01-07 | Apple Inc. | Dynamic media content previews |
EP2459196B1 (en) | 2009-07-29 | 2015-09-09 | Nerviano Medical Sciences S.r.l. | Plk inhibitor salts |
US8479286B2 (en) | 2009-12-15 | 2013-07-02 | Mcafee, Inc. | Systems and methods for behavioral sandboxing |
US8850572B2 (en) * | 2010-01-15 | 2014-09-30 | Apple Inc. | Methods for handling a file associated with a program in a restricted program environment |
US8468455B2 (en) * | 2010-02-24 | 2013-06-18 | Novell, Inc. | System and method for providing virtual desktop extensions on a client desktop |
US8725585B1 (en) | 2010-05-18 | 2014-05-13 | Google Inc. | Automatic vetting of web applications to be listed in a marketplace for web applications |
US8631482B2 (en) | 2010-05-28 | 2014-01-14 | Apple Inc. | Method for managing computer resources accessed by a program operating in a restricted environment |
US8473961B2 (en) | 2011-01-14 | 2013-06-25 | Apple Inc. | Methods to generate security profile for restricting resources used by a program based on entitlements of the program |
US8943550B2 (en) | 2010-05-28 | 2015-01-27 | Apple Inc. | File system access for one or more sandboxed applications |
US8676892B2 (en) * | 2010-11-01 | 2014-03-18 | Google Inc. | Visibility inspector in social networks |
US8898255B2 (en) * | 2010-11-08 | 2014-11-25 | Sony Corporation | Network digital signage solution |
US8671416B2 (en) | 2011-01-14 | 2014-03-11 | Apple Inc. | Dynamic service discovery |
US20130298006A1 (en) | 2011-07-20 | 2013-11-07 | Ourgroup, Inc. | System and method for providing software tools within an online platform for organizing groups and communicating with member clients of group |
US10235147B2 (en) | 2011-08-26 | 2019-03-19 | Microsoft Technology Licensing, Llc | Discovery and activation of application extensions |
US8869068B2 (en) | 2011-11-22 | 2014-10-21 | Backplane, Inc. | Content sharing application utilizing radially-distributed menus |
US10467058B2 (en) | 2011-12-20 | 2019-11-05 | Microsoft Technology Licensing, Llc | Sandboxing for multi-tenancy |
US9319270B2 (en) * | 2012-04-12 | 2016-04-19 | FrontRange Solutions, Inc. | Configuration of third party applications in a sandboxed environment |
US8972969B2 (en) * | 2012-06-08 | 2015-03-03 | Adobe Systems Incorporated | Out of band services updates |
KR102005315B1 (ko) * | 2012-07-23 | 2019-07-30 | 삼성전자 주식회사 | 클라우드 서비스 지원 방법과 시스템 및 이를 지원하는 단말기 |
US20140059443A1 (en) | 2012-08-26 | 2014-02-27 | Joseph Akwo Tabe | Social network for media topics of information relating to the science of positivism |
US9069766B2 (en) * | 2012-11-02 | 2015-06-30 | Microsoft Technology Licensing, Llc | Content-based isolation for computing device security |
US9473562B2 (en) | 2013-09-12 | 2016-10-18 | Apple Inc. | Mediated data exchange for sandboxed applications |
US9563488B2 (en) * | 2014-05-29 | 2017-02-07 | Apple Inc. | Sharing extension points to allow an application to share content via a sharing extension |
-
2014
- 2014-09-16 US US14/488,130 patent/US9563488B2/en active Active
- 2014-09-16 US US14/488,122 patent/US9684547B2/en active Active
- 2014-09-16 US US14/488,126 patent/US9811393B2/en active Active
-
2015
- 2015-04-29 CN CN201580027879.1A patent/CN106462476B/zh active Active
- 2015-04-29 KR KR1020167032361A patent/KR101872141B1/ko active IP Right Grant
-
2016
- 2016-12-09 US US15/374,078 patent/US10503564B2/en active Active
-
2017
- 2017-01-03 US US15/397,548 patent/US11379273B2/en active Active
-
2022
- 2022-06-08 US US17/805,870 patent/US20220308941A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010054235A2 (en) * | 2008-11-10 | 2010-05-14 | Google Inc. | Safe browser plugins using native code modules |
CN102232217A (zh) * | 2008-12-02 | 2011-11-02 | 微软公司 | 插件的沙盒执行 |
CN102087594A (zh) * | 2010-12-27 | 2011-06-08 | 用友软件股份有限公司 | 扩展点和插件的管理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US10503564B2 (en) | 2019-12-10 |
US20150347748A1 (en) | 2015-12-03 |
US11379273B2 (en) | 2022-07-05 |
US20220308941A1 (en) | 2022-09-29 |
US20170212794A1 (en) | 2017-07-27 |
US9811393B2 (en) | 2017-11-07 |
CN106462476A (zh) | 2017-02-22 |
KR101872141B1 (ko) | 2018-06-27 |
KR20160147862A (ko) | 2016-12-23 |
US20170185768A1 (en) | 2017-06-29 |
US9563488B2 (en) | 2017-02-07 |
US20150347200A1 (en) | 2015-12-03 |
US9684547B2 (en) | 2017-06-20 |
US20150347749A1 (en) | 2015-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106462476B (zh) | 将应用的功能扩展到另一应用的允许扩展的相容扩展点 | |
US11799984B2 (en) | Installable web applications | |
CN105940654B (zh) | 特权静态被托管的web应用 | |
CN105814539B (zh) | 用于代码虚拟化和远程进程调用生成的方法和装置 | |
US8843820B1 (en) | Content script blacklisting for use with browser extensions | |
US20150088982A1 (en) | Load balanced inter-device messaging | |
US10152660B2 (en) | Smart card read/write method and apparatus | |
JP6074516B2 (ja) | アドレス帳にプラグインを追加する方法、装置、設備、プログラム及び記録媒体 | |
CN109478149A (zh) | 混合云计算系统中的访问服务 | |
US20160142413A1 (en) | Ephemeral applications | |
CN105765527A (zh) | 用于定制的软件开发包(sdk)的方法和装置 | |
US9280677B1 (en) | Secure native application messaging with a browser application | |
US9805181B1 (en) | Messaging channel for web pages and web applications | |
CN108235767A (zh) | 一种支付应用的隔离方法、装置及终端 | |
Kotipalli et al. | Hacking Android | |
JP2017142792A (ja) | ファイル保護方法 | |
CN107533468A (zh) | 用于云和设备套件的可扩展性捆绑包 | |
WO2016086766A1 (zh) | 浏览器防注入的方法、浏览器客户端和装置 | |
Bott | Introducing Windows 10 for IT Professionals | |
US20160378982A1 (en) | Local environment protection method and protection system of terminal responding to malicious code in link information | |
US11809550B2 (en) | Electronic device and control method therefor | |
Gennart et al. | Role-based access control for openHAB users | |
Ramasubramanian | Exploring Virtualization Platforms for ARM based Mobile Android Devices. | |
Heinl et al. | Android security | |
Burgos et al. | Jailbreak Vulnerability & Mobile Security Updates |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |