Application Context Migration Framework And Protocol

Feng; Wu-Chi ;   et al.

Patent Application Summary

U.S. patent application number 14/226684 was filed with the patent office on 2015-03-26 for application context migration framework and protocol. The applicant listed for this patent is Wu-Chi Feng, Meghashree Kedalagudde, Muthaiah Venkatachalam. Invention is credited to Wu-Chi Feng, Meghashree Kedalagudde, Muthaiah Venkatachalam.

Application Number20150089382 14/226684
Document ID /
Family ID52690831
Filed Date2015-03-26

United States Patent Application 20150089382
Kind Code A1
Feng; Wu-Chi ;   et al. March 26, 2015

APPLICATION CONTEXT MIGRATION FRAMEWORK AND PROTOCOL

Abstract

Embodiments described herein relate generally to the migration of a static object, such as an electronic document, across separate computer systems while retaining context data associated with the static object. In one embodiment, a source computer system is adapted to package a static object and associated context information and transmit the package over a network to a target computer system. The target computer system may present the static object in an application with the associated context information to substantially approximate presentation of the same at the source computer system. Other embodiments may be described and claimed.


Inventors: Feng; Wu-Chi; (Tigard, OR) ; Venkatachalam; Muthaiah; (Beaverton, OR) ; Kedalagudde; Meghashree; (Hillsboro, OR)
Applicant:
Name City State Country Type

Feng; Wu-Chi
Venkatachalam; Muthaiah
Kedalagudde; Meghashree

Tigard
Beaverton
Hillsboro

OR
OR
OR

US
US
US
Family ID: 52690831
Appl. No.: 14/226684
Filed: March 26, 2014

Related U.S. Patent Documents

Application Number Filing Date Patent Number
61883127 Sep 26, 2013

Current U.S. Class: 715/740
Current CPC Class: H04W 36/03 20180801; H04L 67/104 20130101; H04W 36/32 20130101; G06F 9/4856 20130101; H04L 5/0035 20130101; H04W 72/0453 20130101; Y02D 30/70 20200801; H04W 76/14 20180201; H04L 1/1854 20130101; H04W 8/005 20130101; H04W 76/27 20180201; H04L 47/12 20130101; H04L 67/025 20130101; H04L 5/0037 20130101; H04W 72/0446 20130101; Y02D 10/00 20180101; H04L 1/1607 20130101; H04W 84/12 20130101; H04W 72/042 20130101; H04L 5/001 20130101; H04W 88/08 20130101; H04W 24/10 20130101; H04W 76/18 20180201; H04L 5/0048 20130101; H04L 1/1887 20130101; H04W 40/22 20130101; H04W 92/20 20130101; H04W 24/04 20130101; H04W 40/24 20130101; H04W 28/02 20130101; H04W 52/0274 20130101; H04L 1/12 20130101; H04L 47/122 20130101; H04L 5/0055 20130101; H04W 76/38 20180201; H04W 48/16 20130101
Class at Publication: 715/740
International Class: H04L 29/08 20060101 H04L029/08

Claims



1. A computer system for transferring context data associated with an electronic document, the system comprising: at least one processor; and at least one memory having processor-executable instructions that, in response to execution by the at least one processor, cause the computer system to: present a static object; determine context information associated with the static object based on the presentation of the static object; generate a context package that is to include the static object and the associated context information; and transmit the generated context package to an external computer system over a network for external presentation of the static object with the associated context information.

2. The computer system of claim 1, wherein the static object is a text document and the context information includes a command executed on the text document that can be undone by an application adapted to present the text document, a clipboard object, a location within the text document, a toolbar configuration, or a window setting associated with presentation of the text document.

3. The computer system of claim 1, wherein the static object is a uniform resource identifier ("URI") and the context information includes a location within a page of the URI, a context of an embedded object in the page, a cookie associated with the page, session information associated with the page, and a toolbar configuration.

4. The computer system of claim 1, wherein the determination of the context information and the generation of the context package are made using a framework adapted for transmission of context packages.

5. The computer system of claim 1, wherein the external computer system to which the generated context package is to be transmitted is a target computer system adapted to present the static object with the associated context information and the transmission is to be a peer-to-peer connection.

6. The computer system of claim 1, wherein the external computer system to which the generated context package is to be transmitted is a manager computer system adapted to transmit the context package to a target computer system.

7. The computer system of claim 6, wherein the instructions, in response to execution by the at least one processor, cause the computer system to: process a list of target computer systems adapted to receive the context package, the list to be received from the manager computer system; select the target computer system based on the list of target computer systems; and hierarchically address the context package to the selected target computer system, so that the transmission includes a hierarchal address.

8. The computer system of claim 6, wherein the instructions, in response to execution by the at least one processor, cause the computer system to: transmit a registration request to the manager computer system.

9. A computer system for migrating context information associated with an electronic document between separate computer systems, the system comprising: at least one processor; and at least one memory having processor-executable instructions that, in response to execution by the at least one processor, cause the computer system to: process a source context package, received from a source computer system, that is to include a static object and context information associated with the static object; process a target request to transmit the source context package to a target computer system; and transmit, based on the request, the source context package to the target computer system to support presentation of the static object with the associated context information.

10. The computer system of claim 9, wherein the instructions, in response to execution by the at least one processor, further cause the computer system to: transmit, to the source computer system, a list of target computer systems adapted to receive context packages, including the target computer system.

11. The computer system of claim 10, wherein the instructions, in response to execution by the at least one processor, further cause the computer system to: process a registration request from the target computer system; and add the target computer system to the list of target computer systems based on the received registration request.

12. The computer system of claim 9, wherein the instructions, in response to execution by the at least one processor, cause the computer system to: transmit, to the target computer system, a list of computer systems associated with the re-creation of static objects with associated context information, including the source computer system.

13. The computer system of claim 12, wherein the instructions, in response to execution by the at least one processor, further cause the computer system to: process a registration request from the source computer system; and add the source computer system to the list of source computer systems based on the received registration request.

14. The computer system of claim 9, wherein the target request is received from the target computer system, and further wherein the instructions, in response to execution by the at least one processor, cause the computer system to: cache the source context package received from the source computer system.

15. The computer system of claim 9, wherein the target request is received from the source computer system and includes a hierarchical address associated with the target computer system.

16. A computer system for re-creating an electronic document with associated context data from a separate computer system, the system comprising: at least one processor; and at least one memory having processor-executable instructions that, in response to execution by the at least one processor, cause the computer system to: process a context package, received from an external computer system over a network, that is to include a static object and context information associated with the static object; load the context information from the context package; and present the static object based on the loaded context information.

17. The computer system of claim 16, wherein the static object is a text document and the context information includes a command executed on the text document that can be undone by an application adapted to present the text document, a clipboard object, a location within the text document, a toolbar configuration, or a window setting associated with presentation of the text document.

18. The computer system of claim 16, wherein the static object is a uniform resource identifier ("URI") and the context information includes a location within a page of the URI, a context of an embedded object in the page, a cookie associated with the page, session information associated with the page, and a toolbar configuration.

19. The computer system of claim 16, wherein the instructions, in response to execution by the at least one processor, cause the computer system to: override a context setting included in the context information.

20. The computer system of claim 16, wherein the external computer system from which the generated context package is to be received is a source computer system adapted to present the static object with the associated context information, and further wherein the reception over the network is to be a peer-to-peer connection.

21. The computer system of claim 16, wherein the external computer system from which the generated context package is to be received is a manager computer system adapted to receive the context package from a source computer system.

22. The computer system of claim 21, wherein the instructions, in response to execution by the at least one processor, cause the computer system to: transmit, to the manager computer system, a pull request to receive the context package from the manager computer system.

23. A method to be performed by a computer system for transferring context data associated with a static object, the method comprising: receiving user interaction associated with the static object; collecting the context data associated with the static object based on the receiving of the user interaction; receiving a selection of a target computer system adapted to present the static object; and transferring the static object and the collected context data to the selected target computer system.

24. The method of claim 23, wherein the transferring the static object and the collected context data to the selected target computer system comprises: sending the static object and the collected context data to a manager computer system adapted to send the static object and the collected context data to the target computer system.

25. The method of claim 23, wherein selection is based on a list of target computer systems, and the method further comprising: receiving the list of target computer systems.
Description



CROSS REFERENCE TO RELATED APPLICATIONS

[0001] This application claims priority under 35 U.S.C. .sctn.119(e) to U.S. Provisional Patent Application No. 61/883,127 entitled "ADVANCED WIRELESS COMMUNICATION SYSTEMS AND TECHNIQUES," filed Sep. 26, 2013, the disclosure of which is incorporated herein by reference.

FIELD OF INVENTION

[0002] Embodiments of the present invention relate generally to the technical field of data processing, and more particularly, to computer systems adapted to operate to communicate data over networks.

BACKGROUND

[0003] The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent it is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure. Unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in the present disclosure and are not admitted to be prior art by the inclusion in this section.

[0004] Computer systems are generally adapted to execute a plurality of applications. These applications may be adapted to present a digital file to a user. Illustratively, a word processing application may be adapted to present a textual file to a user on a display of a computer system. Similarly, a multimedia application may be adapted to present a digital video and/or audio file to a user on a display and/or through a speaker of a computer system.

[0005] In presenting a digital file, an application may be adapted to receive input from a user. The input received from the user may be associated with the presentation of the digital file. For example, through an application, the user may adjust the playback position of an audio file or select a block of text in a textual file. In order to present such a digital file to a second user at a second computer system, the digital file may be transferred to the second computer system--e.g., via email, cloud storage, removable flash storage, etc. However, this method of transfer would not retain much of the input received at the first computer system from the first user.

[0006] As an alternative means of presentation of a digital file to a second user at a second computer system, the first and second computer systems may interface through remote desktop sharing. Through remote desktop sharing, the second computer system may present the digital file to the second user and, additionally, may present some interaction or input of the first user at the first computer system. However, the digital file would exist at the first computer system. Furthermore, the first and second computer systems would require an active connection to maintain the remote desktop sharing.

BRIEF DESCRIPTION OF THE DRAWINGS

[0007] The embodiments of the invention are illustrated by way of example and not by way of limitation in the figures of the accompanying drawings in which like references indicate similar elements. It should be noted that references to "an" or "one" embodiment of the invention in this disclosure are not necessarily to the same embodiment, and they mean at least one.

[0008] FIG. 1 is a block diagram illustrating a system for transferring a static object and associated context information from a source computer system to a target computer system, in accordance with various embodiments.

[0009] FIG. 2 is a block diagram illustrating a computer system that includes an application that is to present a static object with context information, in accordance with various embodiments.

[0010] FIG. 3 is a block diagram illustrating a computer system that is to facilitate transfer of a static object and context information between two separate computer systems, in accordance with various embodiments.

[0011] FIG. 4 is a block diagram illustrating transfer of a static object and associated context information between a source computer system and a target computer system, in accordance with various embodiments.

[0012] FIG. 5A is a block diagram illustrating one example of an application that is to present a static object with associated context information, in accordance with various embodiments.

[0013] FIG. 5B is a block diagram illustrating another example of an application that is to present a static object with associated context information, in accordance with various embodiments.

[0014] FIG. 6 is a sequence diagram illustrating one example of transfer of a static object and associated context information between separate computer systems through a manager computer system, in accordance with various embodiments.

[0015] FIG. 7 is a sequence diagram illustrating another example of transfer of a static object and associated context information between separate computer systems through a manager computer system, in accordance with various embodiments.

[0016] FIG. 8 is a flow diagram illustrating a method for generating a context package to transfer a static object and associated context information, in accordance with various embodiments.

[0017] FIG. 9 is a flow diagram illustrating a method for facilitating transfer of a context package between separate computer systems, in accordance with various embodiments.

[0018] FIG. 10 is a flow diagram illustrating a method for presenting a static object with associated context information based on a received context package, in accordance with various embodiments.

[0019] FIG. 11 is a flow diagram illustrating a method for collecting and transferring context data associated with a static object based on user interaction, in accordance with various embodiments.

DETAILED DESCRIPTION

[0020] In the following detailed description, reference is made to the accompanying drawings, which form a part hereof wherein like numerals designate like parts throughout, and in which is shown by way of illustration embodiments that may be practiced. It is to be understood that other embodiments may be utilized and structural or logical changes may be made without departing from the scope of the present disclosure. Therefore, the following detailed description is not to be taken in a limiting sense, and the scope of embodiments is defined by the appended claims and their equivalents.

[0021] Various operations may be described as multiple discrete actions or operations in turn, in a manner that is most helpful in understanding the claimed subject matter. However, the order of description should not be construed as to imply that these operations are necessarily order dependent. In particular, these operations may not be performed in the order of presentation. Operations described may be performed in a different order than the described embodiment. Various additional operations may be performed and/or described operations may be omitted in additional embodiments.

[0022] For the purposes of the present disclosure, the phrases "A or B" and "A and/or B" means (A), (B), or (A and B). For the purposes of the present disclosure, the phrase "A, B, and/or C" means (A), (B), (C), (A and B), (A and C), (B and C), or (A, B, and C).

[0023] The description may use the phrases "in an embodiment," or "in embodiments," which may each refer to one or more of the same or different embodiments. Furthermore, the terms "comprising," "including," "having," and the like, as used with respect to embodiments of the present disclosure, are synonymous.

[0024] As used herein, the terms "module" and/or "logic" may refer to, be part of, or include an Application Specific Integrated Circuit ("ASIC"), an electronic circuit, a processor (shared, dedicated, or group), and/or memory (shared, dedicated, or group) that execute one or more software or firmware programs, a combinational logic circuit, and/or other suitable hardware components that provide the described functionality.

[0025] Beginning first with FIG. 1, a block diagram shows a system 100 for transferring a static object and associated context information from a source computer system 160 to a plurality of target computer systems 110a-b, in accordance with various embodiments. The system 100 includes, but is not limited to, a source computer system 160, a plurality of target computer systems 110a-b, a manager computer system 150, and a network 130. Each of the target computer systems 110a-b may be any type of computer system adapted to receive data, such as a personal computer (e.g., a desktop computer, laptop computer, server, a tablet computer), a workstation, a handheld device, a web-enabled appliance, a gaming device, a mobile phone (e.g., a Smartphone), an eBook reader, or any computing device operable to communicate over the network 130. According to embodiments, the target computer systems 110a-b are adapted to execute at least one application that is to present a static object. A static object may be any digital file, document, or similar resource--e.g., a text document, an image file, a uniform resource identifier ("URI"), a video file, an audio file, or essentially any other type of digital file suitable to be presented by an application. Accordingly, an application may be any set of instructions adapted to present a static object--e.g., a word processing application may present a static text document, a video application may present a Moving Picture Experts Group-4 ("MPEG-4") static video file, a web browser may present a resource pointed to by a static URI, etc. The presentation of the static object by the application may include associated context data--e.g., the presentation of an MPEG-4 static video by a video application may include context data related to a presentation resolution, a position in the presentation time, etc. According to embodiments, the target computer systems 110a-b may be adapted to receive a static object and associated context data from the manager computer system 150 and/or the source computer system 160.

[0026] The target computer systems 110a-b may be configured for intersystem communication across a network 130. The network 130 may be a public, private, wired, wireless, or hybrid network, or a combination of different types of networks. The network 130 may be implemented as a local area network ("LAN"), a wide area network ("WAN") such as the Internet, a corporate intranet, a metropolitan area network ("MAN"), a storage area network ("SAN"), a Fibre Channel ("FC") network, a wireless cellular network (e.g., a cellular data network), or a combination thereof.

[0027] The network 130 may communicatively couple the target computer systems 110a-b with a manager computer system 150. The manager computer system 150 may include any arrangement of hardware and software embodied in a computing device configured to provide access to one or more services to the target computer systems 110a-b over the network 130. In various embodiments, the manager computer system 150 may include a server operating system, one or more software applications, and/or hardware (e.g., dedicated hardware) adapted to transmit a static object and/or associated context data to and receive requests for the same from the target computer systems 110a-b over the network 130. Further, the components of the manager computer system 150 may allow the manager computer system 150 to receive that static object and/or associated context data from the source computer system 160.

[0028] In some embodiments, the manager computer system 150 may include a plurality of physical devices (e.g., hardware distributed in multiple physical machines). Thus, the manager computer system 150 may include two or more coupled computer devices that cooperatively operate. According to such embodiments, the plurality of physical devices may be hierarchically arranged and addressable as such. This hierarchical arrangement and addressing may extend to and incorporate each of the target computer systems 110a-b. Thus, a target computer system 110a may be addressable by the source computer system 160 through a hierarchical address, such as an Internet Protocol ("IP") address or other similar address.

[0029] The manager computer system 150 may be communicatively coupled with a source computer system 160. The source computer system 160 may be connected with the manager computer system 150 through an interconnect 170, which may be a bus or a network (e.g., a network similar to the network 130). In the system 100, the manager computer system 150 may be implemented locally (e.g., integrated with the source computer system 160) or remotely (e.g., external from the source computer system 160). In embodiments in which the manager computer system 150 is locally implemented with the source computer system 160, the source computer system 160 may engage in peer-to-peer communication with the target computer systems 110a-b. In another embodiment, the manager computer system 150 may communicate an address (e.g., an IP address) of the source computer system to the target computer systems 110a-b so that the source computer system 160 may communicate directly with the target computer systems 110a-b, such as through a peer-to-peer connection.

[0030] Similar to the target computer systems 110a-b, the source computer system 160 may be any type of computer system adapted to transmit data, such as a personal computer (e.g., a desktop computer, laptop computer, server, or tablet computer), a workstation, a handheld device, a web-enabled appliance, a gaming device, a mobile phone (e.g., a Smartphone), an eBook reader, or any other similar computing device. According to embodiments, the source computer system 160 is adapted to execute at least one application that is to present a static object. The presentation of the static object by the application may include associated context data. According to embodiments, the source computer system 160 may be adapted to transmit a static object and associated context data to the manager computer system 150 and/or the target computer systems 110a-b.

[0031] Turning now to FIG. 2, a block diagram illustrates a computer system 200 that includes an application 211 that is to present a static object 212 with context information 214, in accordance with various embodiments. The computer system 200 may be or may be included in the target computer systems 110a-b and/or the source computer system 160 of FIG. 1. The computer system 200 includes at least one application 211 that is adapted to present a static object with context information 214.

[0032] The computer system 200 includes, but is not limited to, main memory 210, storage 217, processor 218, network interface 220, a user interface 222, a display 224, and/or a speaker 226. These components may be communicatively coupled through a bus 219. The bus 219 may be any subsystem adapted to transfer data within the computer system 200. The bus 219 may include a plurality of computer buses as well as additional circuitry adapted to transfer data.

[0033] To communicate data with a second computer system (not shown) (e.g., a source or target computer system, depending upon the embodiment, and/or a manager computer system), the computer system 200 includes a network interface 220. The network interface 220 may accept data across a network (not shown) from an external computer system to be processed by the computer system 200. Correspondingly, the network interface 220 may transmit data across a network. The network interface 220 may be implemented in hardware, software, or a combination of the two and may include, for example, components such as a network card, network access controller, or host bus adapter. The network interface 220 is communicatively coupled with the processor 218, which executes instructions for the computer system 200. In one embodiment, some or all of the instructions for the network interface 220 are executed by the processor 218.

[0034] As an additional means of receiving data, the computer system 200 may include a user interface 222 to receive input from a user. The user interface 222 may allow a user to interact with the computer system 200 through various means, according to different embodiments--e.g., the user interface 222 may be presented to a user on a display 224 as a graphical user interface or through a command line interface. To receive user input, the user interface 222 may be implemented in hardware, software, or a combination of the two and may include or may be communicatively coupled with one or more hardware devices suitable for user input (e.g., a keyboard, mouse, or touch screen). Further, some or all of the instructions for the user interface 222 may be executed by the processor 218.

[0035] The processor 218 may be any processor suitable to execute instructions, such as instructions from the main memory 210. Accordingly, the processor 218 may be, for example, a central processing unit ("CPU"), a microprocessor, or another similar processor. In some embodiments, the processor 218 includes a plurality of processors, such as a dedicated processor (e.g., a graphics processing unit), a network processor, or any processor suitable to execute operations of the computer system 200.

[0036] Coupled to the processor 218 is the main memory 210. The main memory 210 may offer both short-term and long-term storage and may in fact be divided into several units (including a unit located at the processor 218). The main memory 210 may be volatile, such as static random access memory ("SRAM") and/or dynamic random access memory ("DRAM"), and may provide storage (at least temporarily) of computer-readable instructions, data structures, software applications, and other data for the computer system 200. Such data may be loaded from the storage 217. The main memory 210 may also include cache memory, such as a cache located at the processor 218. The main memory 210 may include, but is not limited to, instructions related to the elements 211-216 that are to be executed by the processor 218: an application 211 adapted to present a static object 212 with context information 214, a context stub module 215, and an operating system 216.

[0037] In various embodiments, the operating system 216 is configured to initiate the execution of the instructions, such as instructions provided by the application 211 or the context stub module 215. In particular, the operating system 216 may be adapted to serve as a platform for running the application 211. The operating system 216 may be adapted to perform other operations across the components of the computer system 200, including threading, resource management, data storage control, and other similar functionalities.

[0038] The operating system 216 may cause the processor 218 to execute instructions for the application 211. The application 211 may include code representing instructions configured to present a static object 212 by the computer system 200. According to embodiments, the application 211 may be, for example, a word processing application, a media application, a graphics program, an editing application, a web browser application, or essentially any other type of application adapted to present the static object 212. In various embodiments, the static object 212 may be, for example, a text document, an image file, a uniform resource identifier ("URI"), a video file, an audio file, or essentially any other type of digital file suitable to be presented by the application 211.

[0039] In some embodiments, the presentation of the static object 212 by the application 211 may be at the display 224. The display 224 may be any suitable device adapted to graphically present data to a user, such as a light-emitting diode ("LED"), an organic LED ("OLED"), a liquid crystal display ("LCD"), an LED-backlit LCD, a plasma display panel ("PDP"), a cathode ray tube ("CRT"), or other display technology. According to some embodiments, the presentation of the static object 212 by the application 211 may be at the speaker 226, which may be any electroacoustic transducer adapted to produce sound in response to an audio signal from the application 211. The application 211 may cause the static object 212 to be contemporaneously presented at both the display 224 and the speaker 226. The display 224 and the speaker 226 are illustrative devices for the presentation of the static object 212 by the application 211, and other methods of presentation of the static object 212 by the application 211 are contemplated herein.

[0040] In various embodiments, context information 214 may be associated with the presentation of the static object 212 by the application 211. Context information 214 may be received, such as through the network interface 220 and/or the user interface 222, and/or may be stored at the storage 217 of the computer system 200, such as a default setting for the application 211. Context information 214 may be essentially any information associated with the presentation of the static object 212 by the application 211. According to embodiments, context information 214 may include, for example, resolution information, a location associated with presentation of the static object 212 through the application 211 (e.g., the fifth paragraph of a text document, four minutes into an audio file, etc.), an object on a clipboard accessible by the application 211, a command history associated with the presentation of the static object 212 by the application 211 (e.g., one or more commands that the application 211 may undo and/or redo), a context of one or more objects included in the static object 212 (e.g., a status of an embedded image, a playback position of a video, etc.), a toolbar configuration, a presentation configuration (e.g., split screen, maximized, minimized, etc.), cookie information, session information, or other information associated with the presentation of the static object 212 by the application 211.

[0041] To re-create the presentation of the static object 212 with the context information 214 by the application 211, the application 211 may communicate with a context stub module 215. Where the computer system 200 is a source computer system, the context stub module 215 may be responsible for packaging and/or transmitting the static object 212 and the context information 214 (e.g., through the network interface 220). The context stub module 215 may receive a selection of a target computer device and/or manager computer device that is to receive the static object 212 and the context information 214 (e.g., as user input through user interface 222). The context stub module 215 may be adapted to generate a context package that is to include the static object 212 and the context information 214 without copying registers (not shown), or other memory. The context stub module 215 may then be adapted to transmit the generated context package.

[0042] Where the computer system 200 is a target computer system, the context stub module 215 may be responsible for receiving the static object 212 and the context information 214 and/or extracting the same from a context package. Accordingly, the context stub module 215 may communicate with the application 211 to re-create presentation of the static object 212 with associated context information 214 that is similar to the presentation at a source computer device. In embodiments, the context stub module 215 may receive a selection of a context package, a source computer device, and/or a manager computer system from which to receive the context package. The context stub module 215 may receive a context package through, for example, a push service or a pull service (e.g., the context module 215 may transmit a request for a context package).

[0043] With respect to FIG. 3, a block diagram is shown illustrating a manager computer system 300 that is to facilitate transfer of a context package 311 between two separate computer systems (not shown), in accordance with various embodiments. The manager computer system 300 may be or may be included in the manager computer system 150 of FIG. 1. The manager computer system 300 may include a main memory 310, storage 317, processor 318, bus or interconnect system 319, and/or network interface 320 similar to those elements described with respect to the computer system 200 of FIG. 2.

[0044] The main memory 310 may include, but is not limited to, instructions related to the elements 311-316 that are to be executed by the processor 318: a context package 311, a source list 312, a target list 314, a request manager 315, and an operating system 316. In various embodiments, the operating system 316 is configured to initiate the execution of the instructions, such as instructions provided by the request manager 315. The operating system 316 may be adapted to perform other operations across the components of the manager computer system 300, including threading, resource management, data storage control, and other similar functionality. The operating system 316 may cause the processor 318 to execute instructions.

[0045] The manager computer system 300 is adapted to facilitate the transfer of a static object and associated context information between source and target computer systems (not shown). In embodiments, the static object and associated context information may be received, from a source computer system, at the manager computer system 300 as a context package 311. In response, the manager computer system 300 may cache the context package 311 in, for example, the main memory 310 and/or store the context package 311 in the storage 317. The manager computer system 300 may be adapted to supply a target list 314 to the transmitting source computer system. Similarly, the manager computer system 300 may be adapted to supply a source list 312 to a target computer system. Additionally, the manager computer system 300 may be adapted to transmit the context package 311 to a target computer system.

[0046] According to some embodiments, the manager computer system may be adapted to manage reception and transmission of the context package 311 through a request manager 315. The request manager 315 may receive a selection of a target computer system (e.g., a target computer system included in the target list 314) from a source computer system that is to transmit the context package 311. Therefore, the request manager 315 may associate the context package 311 with an address for a target computer system, such as an IP address or similar hierarchical address. The request manager 315 may therefore cause the context package 311 to be transmitted to the addressed target machine.

[0047] In embodiments, the request manager 315 may receive a selection of a source computer system (e.g., a source computer system included in the source list 312) from a target computer system that is to receive the context package 311. Alternatively, the request manager 315 may receive a request for the context package 311 specifically. In response, the request manager 315 may transmit the context package 311 to the target computer system.

[0048] FIG. 4 illustrates a block diagram of a system 400 for transfer of a static object 415 and associated context settings 411 between a source computer system 405 and a target computer system 450, in accordance with various embodiments. The source computer system 405 may be or may be included in the source computer system 160, the target computer system 450 may be or may be included in one of the target computer systems 110a-b, and the manager computer system 430 may be or may be included in the manager computer system 150, as illustrated in FIG. 1.

[0049] According to embodiments, the source computer system 405 may present a static object 415 through an application 410. The presentation of the static object 415 by the application 410 may be associated with a plurality of context settings 411 (collectively, context data or context information). In various embodiments, the source computer system 405 may include a source framework 420. The source framework 420 may be, for example, a platform, application, compiler, library, software tool set, application programming interface, and/or other resource that allows the source computer system 405 to transmit the static object 415 and associated context settings 411 to the target computer system 450.

[0050] The source framework 420 may allow communication between the application 410 and the source context stub 418. The source context stub 418 may access the application 410 through the source framework 420 to obtain the static object 415 and associated context settings 411. The source context stub 418 may subsequently generate a context package 425 that is to include the static object 415 and associated context settings 411. In various embodiments, the source context stub 418 may include an address for the destination of the context package 425, such as an address of the manager computer system 430 and/or the target computer system 450. In embodiments, the source context stub 418 may transmit the context package 425 to the manager computer system 430 through one or more resources provided by the source framework 420.

[0051] The manager computer system 430 may subsequently transmit the context package 425 to the target computer system 450. In embodiments, the manager computer system 430 may transmit the context package 425 according to an address associated with the context package 425 and/or in response to a request received from the target computer system 450. The target computer system 450 may include a target framework 460 that may allow communication between the manager computer system 430 and the target context stub 478. The target framework 460 may be, for example, a platform, application, complier, library, software tool set, application programming interface, and/or other resource that allows the target computer system 450 to receive the context package 425 and/or extract the contents therefrom. The target context stub 478 may interface with the manager computer system 430 through the target framework 460 to obtain the context package 425. For example, the target context stub 478 may be adapted to transmit a request for the context package 425 through a function provided by the target framework 460 and/or the target context stub 478 may be adapted to receive the context package 425 through a push service initiated by the manager computer system 430 through the target framework 460.

[0052] The target context stub 478 may subsequently extract the static object 475 and associated context settings 471 from the context package 425 at the target computer system 450. In various embodiments, the target framework 460 may facilitate communication between the target context stub 478 and the application 470. Accordingly, the target context stub 478 may launch the application 470 at the target computer system 450 via an interface provided by the target framework 460. The target context stub 478 may then cause the application 470 to present the extracted static object 475 with associated context settings 471. The presentation of the static object 475 with associated context settings 471 by the application 470 may be similar to, or may attempt to approximate, the presentation of the static object 415 and associated context settings 411 by the application 410 at the source computer system 405. In various embodiments, the target context stub 478 may add system-dependent context settings and/or may override one or more context settings 471 extracted from the context package 425 (e.g., a resolution setting may be adjusted).

[0053] In various embodiments, a computer system may function as both a source computer system 405 and a target computer system 450. Thus, the source context stub 418 and the target context stub 478 may be integrated and/or the source framework 420 may be integrated with the target framework 460. Accordingly, the functions of a context stub and/or framework may depend upon whether a computer system is to receive a context package 425 or transmit a context package 425. According to another embodiment, the manager computer system 430 may be omitted or integrated in another computer system so that the transmission of the context package 425 between the source computer system 405 and the target computer system 450 is through a direct transmission (e.g., a peer-to-peer connection).

[0054] With respect to FIG. 5A, a block diagram illustrates one example of an application 500 that is to present a static object 505 with associated context information 510-520, in accordance with various embodiments. In this exemplary embodiment, the application 500 may be a word processing application. The word processing application 500 may be adapted to present a textual static object 505 having a plurality of characters that may be editable by input to the application 500.

[0055] The word processing application 500 may include a plurality of context settings 510-520 associated with the presentation of the textual static object 505. For example, the application 500 may include a toolbar configuration context setting 510 that presents one or more tools for the manipulation of the textual static object 505 (e.g., cut, copy, paste, etc.). Additionally, the application 500 may include a clipboard object context setting 515 associated with the presentation of the static object 505. The clipboard object context setting 515 may be, for example, text, an image, or another object that may supplement or otherwise be included in the presentation of the textual static object 505 by the application 500. As illustrated, the application 500 may include a location context setting 520 associated with the presentation of the static object 505. The location context setting 520 may indicate a location (e.g., a page, paragraph, etc.) of the static object 505 that is presented by the application 500.

[0056] In various embodiments, other context settings may be associated with the presentation of the textual static object 505 by the word processing application 500. For example, a context setting may include a command executed on the textual static object 505 (e.g., a command that may be undone or redone by the application 500), a window setting associated with presentation of the textual static object 505 by the application 500 (e.g., full screen, split screen, minimized), an aspect ratio, or essentially any other context setting associated with the presentation by the application 500.

[0057] With respect to FIG. 5B, a block diagram illustrates another example of an application 550 that is to present a static object 555 with associated context settings 560-575, in accordance with various embodiments. In this exemplary embodiment, the application 550 may be a web browsing application. The web browsing application 550 may be adapted to present a resource (e.g., a web page) that is referenced by a URI static object 555.

[0058] The web browsing application 550 may include a plurality of context settings 560-575 associated with the presentation of the resource pointed to by the URI static object 555. For example, the application 550 may include a cookie context setting 560 that includes one or more cookies used to store stateful information associated with the presentation of the resource pointed to by the URI static object 555. Similarly, the application 550 may include a session context setting 565 that includes, for example, a session identification ("ID") used to associate information with visitors to the resource pointed to by the URI static object 555. Additionally, the application 550 may include an object context setting 570 associated with the presentation of an object included in the resource pointed to by the URI static object 555, such as a status of an embedded video or image. Further, the application 550 may include a location context setting 575 associated with the presentation of the URI static object 555. The location context setting 575 may indicate a location (e.g., a section, tag location, etc.) of the presentation of the resource pointed to by the URI static object 555 by the application 550.

[0059] In various embodiments, other context settings may be associated with the presentation of the resource pointed to by the URI static object 555 by the web browsing application 550. For example, a context setting may include a toolbar configuration, a window setting associated with presentation of the resource pointed to by the URI static object 555 by the application 550 (e.g., full screen, split screen, minimized), an aspect ratio, or essentially any other context setting associated with the presentation by the application 550.

[0060] Turning to FIG. 6, a sequence diagram illustrates one example of transfer of a static object and associated context information between separate computer systems through a manager computer system, in accordance with various embodiments. The sequence 600 may be performed by the computer systems illustrated in FIG. 1. Accordingly, the target computer system 620 may be one of the target computer systems 110a-b, the manager 616 may be the manager computer system 150, and/or the source computer system 605 may be the source computer system 160. While FIG. 6 illustrates a plurality of sequential operations, one of ordinary skill would understand that one or more operations of the sequence 600 may be transposed and/or performed contemporaneously.

[0061] To begin, a source computer system 605 may connect and/or register with a manager 616 over a network 615 (operation 652). According to embodiments, the source computer system 605 may connect and/or register through a source context stub 608 adapted to facilitate the transfer of a static object and associated context data. In response, the manager 616 may be adapted to return a list of target computer systems that may receive the static object and associated context data (operation 654).

[0062] A target computer system 620 additionally may connect and/or register with a manager 616 over a network 615 (operation 656). The target computer system 620 may connect and/or register through a target context stub 622 adapted to facilitate the reception of a static object and associated context data. In response, the manager 616 may be adapted to return a list to the target computer system 620 through the target context stub 622 (operation 658). In some embodiments, this list may include a list of source computer systems (e.g., the source computer system 605) available to transmit a static object and associated context data and/or a list of static objects and respective associated context data available to be transmitted. Because source computer systems may be target computer systems as well, this list may identify target computer systems on the network which are both source and target computer systems. Based on the connection and/or registration of the target computer system 620, the manager 616 may transmit an updated list of target computer systems to the source computer system 605 (operation 660).

[0063] A source application 606 may be adapted to transfer a static object and associated context data to the source context stub 608 (operation 662). In various embodiments, the source context stub 608 may receive the static object and associated context data in response to a request. For example, the source computer system 605 may receive a request to transfer the static object and associated context data from a user, and contemporaneously receive a selection of a target computer system included in a list received from the manager 616. Based on the transfer from the source application 606, the source context stub 608 may be adapted to transfer the static object and associated context data to the manager 616 (operation 664). In various embodiments, the source context stub 608 may include an identification of the target computer system 620 that is to receive the static object and associated context data.

[0064] Subsequently, the manager 616 may be adapted to transfer the static object and associated context data to the target computer system 620 (operation 668). In various embodiments, the manager 616 may be adapted to make this transfer as part of a push service between the manager 616 and the target computer system 620. This push service may be appropriate where, for example, the target computer system 620 is substantially perpetually connected with and/or available to the manager 616 over the network 615. According to embodiments, the static object and associated context data may be received at the target computer system 620 by a target context stub 622. The target context stub 622 may be adapted to cause a target application 624 to launch (operation 670). In so doing, the target context stub 622 may load the received static object and associated context data in an attempt to approximate the static object and associated context data at the source application 606.

[0065] In various embodiments, the connection between the source context stub 608 and the target context stub 622 may be direct through a peer-to-peer connection. Therefore, even where the source computer system 605 and/or the target computer system 620 receive lists of computer systems on the network 615 from the manager computer system 616, the actual transfer of a static object and associated context information from the source computer system 605 to the target computer system 620 may be direct.

[0066] FIG. 7 shows a sequence diagram illustrating another example of transfer of a static object and associated context information between separate computer systems through a manager computer system, in accordance with various embodiments. The sequence 700 may be performed by the computer systems illustrated in FIG. 1. Accordingly, the target computer system 720 may be one of the target computer systems 110a-b, the manager 716 may be the manager computer system 150, and/or the source computer system 705 may be the source computer system 160. While FIG. 7 illustrates a plurality of sequential operations, one of ordinary skill would understand that one or more operations of the sequence 700 may be transposed and/or performed contemporaneously.

[0067] To begin, a source computer system 705 may connect and/or register with a manager 716 over a network 715 through functionality provided by a source context stub 708 (operation 752). Based on the connection and/or registration, the manager 716 may be adapted to return a list of target computer systems that may receive a static object and associated context data from the source computer system 705 (operation 754). Similarly, a target computer system 720 may connect and/or register with a manager 716 over the network 715 through functionality provided by a target context stub 722 (operation 756). Based on this connection and/or registration, the manager 716 may be adapted to return a list of source/target computer systems (e.g., a list of computer systems that may participate in the sharing of static object and associated context data) and/or static objects and respective associated context data to the target computer system 720 through the target context stub 722 (operation 758). Thereafter, the manager 716 may refresh the list of target computer systems for the source computer system 705 (operation 760).

[0068] A source application 706 may be adapted to transfer a static object and associated context data to the source context stub 708 (operation 762). Based on the transfer from the source application 706, the source context stub 708 may be adapted to transfer the static object and associated context data to the manager 716 (operation 764). In various embodiments, the source context stub 708 may include an identification (e.g., a hierarchal address) of the target computer system 720 that is to receive the static object and associated context data. According to embodiments, however, the target computer system 720 may be disconnected from the network 715 and, therefore, unavailable to receive the static object and associated context data (operation 768). Should the manager 716 be unable to transfer the static object and associated context data to the target computer system 720, the manager 716 may cache the transfer request (operation 770). When the target computer system 720 is again able to communicate over the network 715, the target computer system 720 may transmit a request to the manager 716 for the static object and associated context data through a target context stub 722 (operation 772). This pull service may be appropriate where, for example, the target computer system 720 may be intermittently connected with and/or available to the manager 716 over the network 715. Based on the request, the manager 716 may be adapted to transfer the static object and associated context data to the target computer system 720 through the target context stub 722 (operation 774). The target context stub 722 may be adapted to cause a target application 724 to launch with the received static object and associated context data in an attempt to approximate the static object and associated context data at the source application 706 (operation 776).

[0069] FIG. 8 illustrates a flow diagram of a method 800 for generating a context package to transfer a static object and associated context information, in accordance with various embodiments. The method 800 may be performed by a source computer system, such as the source computer system 160 of FIG. 1. While FIG. 8 illustrates a plurality of sequential operations, one of ordinary skill would understand that one or more operations of the method 800 may be transposed and/or performed contemporaneously.

[0070] At operation 805, the method 800 may include presenting a static object. The static object may be presented by an application at the source computer system. Operation 810 may include determining context information associated with the static object based on the presentation. The determining based on the presentation may include, for example, receiving input that affects the presentation and/or recording data associated with the static object. Subsequently, operation 815 may include generating a context package that includes the static object and the determined context information.

[0071] According to an embodiment, the method 800 may proceed to operation 840 for transmitting the context package. In such an embodiment, the context package may be transmitted directly to a target computer system, such as through a peer-to-peer transfer. In an alternative embodiment, some operations 820-835 may optionally occur before operation 840. The method 800 may include operation 820 for registering with a manager computer system that may be adapted to facilitate the transfer of the context package. Based on the registering, operation 825 may include processing a list of target computer systems that are adapted to receive the context package through the manager computer system. This list may be received from a manager computer system. The method 800 may then include operation 830 for selecting a target computer system based on the list of target computer systems. Correspondingly, operation 835 may include addressing the context package to the selected target computer system. Operation 835 may include associating a hierarchical address (e.g., an IP address) with the context package. The method 800 may proceed to operation 840 for transmitting the context package to the selected target computer system.

[0072] With respect to FIG. 9, a flow diagram illustrates a method 900 for facilitating transfer of a context package between separate computer systems, in accordance with various embodiments. The method 900 may be performed by a manager computer system, such as the manager computer system 150 of FIG. 1. While FIG. 9 illustrates a plurality of sequential operations, one of ordinary skill would understand that one or more operations of the method 900 may be transposed and/or performed contemporaneously.

[0073] According to an embodiment, the method 900 may include operation 930 for processing a context package from a source computer system. According to embodiments, this context package may be received from the source computer system. Although not necessary, the context package may identify a target computer system that is to receive the context package. The method 900 may then reach operation 940 for processing a request to transmit the context package to the target computer system. In one embodiment, this request may be received from the source computer system in association with the context package. In another embodiment, this request may be received from the target computer system as part of a pull service between the manager computer system and the target computer system. Based on the request, operation 945 may include transmitting the context package to the target computer system.

[0074] In various embodiments, the method 900 may include one or more optional operations 905-925. At operation 905, the method 900 may include processing a registration request received from a source computer system. This registration request may allow the manager computer system to register the source computer system, which may allow the manager computer system to identify the source computer system as a source of one or more context packages. Subsequently, operation 910 may include adding the source computer system to a list of source computer systems. Operation 915 may include processing a registration request received from a target computer system. This registration request may allow the manager computer system to register and/or identify the target computer system as adapted to receive one or more context packages. Operation 920 may include adding the target computer system to a list of target computer systems. So that the source computer system may identify a destination for the context package, operation 925 may include transmitting the list of target computer systems to the source computer system. The method 900 may reach operation 930, as described herein.

[0075] According to one embodiment, operation 945 for transmitting the context package to the target computer system may be delayed, such as where the target computer system is unavailable to the manager computer system (e.g., disconnected from a network). Therefore, the method 900 may include operation 935 for caching the context package. When the target computer system becomes available, the method 900 may reach operation 940, which may include processing the pull request received from the target computer system.

[0076] Turning to FIG. 10, a flow diagram illustrates a method 1000 for presenting a static object with associated context information based on a received context package, in accordance with various embodiments. The method 1000 may be performed by a target computer system, such as the target computer systems 110a-b of FIG. 1. While FIG. 10 illustrates a plurality of sequential operations, one of ordinary skill would understand that one or more operations of the method 1000 may be transposed and/or performed contemporaneously.

[0077] In various embodiments, the method 1000 may include operation 1010 for processing a context package that includes a static object and associated context information. This context package may be received from, for example, a source computer system or a manager computer system. Based on the context package, an operation 1015 may include loading the context information included in the context package. Embodiments of operation 1015 may comprise launching an application adapted to present the static object, loading the context information into the application, and loading the static object. Operation 1025 may include presenting the static object based on the loaded context information. Accordingly, the static object may be presented by the target computer system such that the presentation approximates a remote presentation at a computer system that is the source of the context package. The context information may include a plurality of context settings, and not all of these context settings may be suitable for presentation at the target computer system. Therefore, various embodiments may include an optional operation 1020 for overriding a context setting included in the context information.

[0078] According to some embodiments, the context package may be transmitted in response to a request. Therefore, an optional operation 1005 may precede operation 1010. Operation 1005 may include transmitting a pull request for the context package. In one embodiment, this pull request may be transmitted to a manager computer system adapted to cache the context package in anticipation of the pull request. In another embodiment, this pull request may be transmitted to a computer system that is the source of the context package, such as where the target computer system is directly connected to the source computer system.

[0079] With reference to FIG. 11, a flow diagram shows a method 1100 for collecting and transferring context data associated with a static object based on user interaction, in accordance with various embodiments. The method 1100 may be performed by a source computer system, such as the source computer system 160 of FIG. 1. While FIG. 11 illustrates a plurality of sequential operations, one of ordinary skill would understand that one or more operations of the method 1100 may be transposed and/or performed contemporaneously.

[0080] The method 1100 may begin with operation 1105 for receiving user interaction associated with a static object. In embodiments, this user interaction may be received through an application adapted to present the static object to the user. This user interaction may include essentially any input received at the application during or contemporaneous with the presentation of the static object by the application. Based on the user interaction, operation 1110 may include collecting context data associated with the static object. The context data may include one or more context settings that are associated with or based on the received user interaction, either directly or indirectly--e.g., a direct user interaction may cause an object to be placed on a clipboard, whereas an indirect user interaction may cause a cookie to be stored.

[0081] The method 1100 may include operation 1120 for receiving a selection of a target computer system. In one embodiment, the source computer system may be adapted to communicate with one or more target computer systems, such as through a manager computer system. Therefore, the method 1100 may include an optional operation 1115 for receiving a list of target computer systems that each are adapted to present the static object. In such an embodiment, the operation 1120 for receiving the selection of the target computer system may be based on the received list of target computer systems. Subsequently, operation 1125 may include transferring the static object and the collected context data to the selected target computer system. According to the embodiment, this transfer may be direct (e.g., through a peer-to-peer communication) or may be indirect (e.g., through a manager computer system).

[0082] In various embodiments, example 1 may include a computer system for transferring context data associated with an electronic document, the system comprising: at least one processor; and at least one memory having processor-executable instructions that, in response to execution by the at least one processor, cause the computer system to: present a static object; determine context information associated with the static object based on the presentation of the static object; generate a context package that is to include the static object and the associated context information; and transmit the generated context package to an external computer system over a network for external presentation of the static object with the associated context information. Example 2 may include the computer system of example 1, wherein the static object is a text document and the context information includes a command executed on the text document that can be undone by an application adapted to present the text document, a clipboard object, a location within the text document, a toolbar configuration, or a window setting associated with presentation of the text document. Example 3 may include the computer system of example 1, wherein the static object is a uniform resource identifier ("URI") and the context information includes a location within a page of the URI, a status of an embedded object in the page, a cookie associated with the page, session information associated with the page, and a toolbar configuration. Example 4 may include the computer system of any of examples 1-3, wherein the determination of the context information and the generation of the context package are made using a framework adapted for transmission of context packages. Example 5 may include the computer system of any of examples 1-3, wherein the external computer system to which the generated context package is to be transmitted is a target computer system adapted to present the static object with the associated context information and the transmission is to be a peer-to-peer connection. Example 6 may include the computer system of any of examples 1-3, wherein the external computer system to which the generated context package is to be transmitted is a manager computer system adapted to transmit the context package to a target computer system. Example 7 may include the computer system of example 6, wherein the instructions, in response to execution by the at least one processor, cause the computer system to:

[0083] process a list of target computer systems adapted to receive the context package, the list to be received from a manager computer system; select a target computer system based on the list of target computer systems; and hierarchically address the context package to the selected target computer system, so that the transmission includes a hierarchal address. Example 8 may include the computer system of example 6, wherein the instructions, in response to execution by the at least one processor, cause the computer system to: transmit a registration request to the manager computer system.

[0084] In various embodiments, 9 may be a computer system for migrating context information associated with an electronic document between separate computer systems, the system comprising: at least one processor; and at least one memory having processor-executable instructions that, in response to execution by the at least one processor, cause the computer system to: process a source context package, received from a source computer system, that is to include a static object and context information associated with the static object; process a target request to transmit the source context package to a target computer system; and transmit, based on the request, the source context package to the target computer system to support presentation of the static object with the associated context information. Example 10 may include the computer system of example 9, wherein the instructions, in response to execution by the at least one processor, further cause the computer system to: transmit, to the source computer system, a list of target computer systems adapted to receive context packages, including the target computer system. Example 11 may include the computer system of example 10, wherein the instructions, in response to execution by the at least one processor, further cause the computer system to: process a registration request from the target computer system; and add the target computer system to the list of target computer systems based on the received registration request. Example 12 may include the computer system of any of example 9-11, wherein the instructions, in response to execution by the at least one processor, cause the computer system to: transmit, to the target computer system, a list of source computer systems adapted to generate context packages for presentation of static objects, including the source computer system. Example 13 may include the computer system of example 12, wherein the instructions, in response to execution by the at least one processor, further cause the computer system to: process a registration request from the source computer system; and add the source computer system to the list of source computer systems based on the received registration request. Example 14 may include the computer system of any of example 9-11, wherein the target request is received from the target computer system, and further wherein the instructions, in response to execution by the at least one processor, cause the computer system to: cache the source context package received from the source computer system. Example 15 may include the computer system of any of example 9-11, wherein the target request is received from the source computer system and includes a hierarchical address associated with the target computer system.

[0085] In various embodiments, example 16 may be computer system for re-creating an electronic document with associated context data from a separate computer system, the system comprising: at least one processor; and at least one memory having processor-executable instructions that, in response to execution by the at least one processor, cause the computer system to: process a context package, received from an external computer system over a network, that is to include a static object and context information associated with the static object; load the context information from the context package; and present the static object based on the loaded context information. Example 17 may include the computer system of example 16, wherein the static object is a text document and the context information includes a command executed on the text document that can be undone by an application adapted to present the text document, a clipboard object, a location within the text document, a toolbar configuration, or a window setting associated with presentation of the text document. Example 18 may include the computer system of example 16, wherein the static object is a uniform resource identifier ("URI") and the context information includes a location within a page of the URI, a status of an embedded object in the page, a cookie associated with the page, session information associated with the page, and a toolbar configuration. Example 19 may include the computer system of example 16, wherein the instructions, in response to execution by the at least one processor, cause the computer system to: override a context setting included in the context information. Example 20 may include the computer system of example 16, wherein the external computer system from which the generated context package is to be received is a source computer system adapted to present the static object with the associated context information, and further wherein the reception over the network is to be a peer-to-peer connection. Example 21 may include the computer system of any of examples 16-20, wherein the external computer system to from which the generated context package is to be received is a manager computer system adapted to receive the context package from a source computer system. Example 22 may include the computer system of any of examples 16-20, wherein the instructions, in response to execution by the at least one processor, cause the computer system to: transmit, to a manager computer system, a pull request to receive the context package from the manager computer system.

[0086] In various embodiments, example 23 may be a method to be performed by a computer system for transferring context data associated with a static object, the method comprising: receiving user interaction associated with the static object; collecting the context data associated with the static object based on the receiving of the user interaction; receiving a selection of a target computer system adapted to present the static object; and transferring the static object and the collected context data to the selected target computer system. Example 24 may include the method of example 23, wherein the transferring the static object and the collected context data to the selected target computer system comprises: sending the static object and the collected context data to a manager computer system adapted to send the static object and the collected context data to the target computer system. Example 25 may include the method of any of examples 23-24, wherein selection is based on a list of target computer systems, and the method further comprising: receiving the list of target computer systems.

[0087] In various embodiments, example 26 may be one or more non-transitory computer system-readable media comprising computer system-executable instructions, wherein the instructions, in response to execution by a computer system, cause the computer system to: present a static object; determine context information associated with the static object based on the presentation of the static object; generate a context package that is to include the static object and the associated context information; and transmit the generated context package to an external computer system over a network for external presentation of the static object with the associated context information. Example 27 may include the one or more non-transitory computer system-readable media of example 26, wherein the static object is a text document and the context information includes a command executed on the text document that can be undone by an application adapted to present the text document, a clipboard object, a location within the text document, a toolbar configuration, or a window setting associated with presentation of the text document. Example 28 may include the one or more non-transitory computer system-readable media of example 26, wherein the static object is a uniform resource identifier ("URI") and the context information includes a location within a page of the URI, a status of an embedded object in the page, a cookie associated with the page, session information associated with the page, and a toolbar configuration. Example 29 may include the one or more non-transitory computer system-readable media of any of examples 26-28, wherein the determination of the context information and the generation of the context package are made using a framework adapted for transmission of context packages. Example 30 may include the one or more non-transitory computer system-readable media of any of examples 26-28, wherein the external computer system to which the generated context package is to be transmitted is a target computer system adapted to present the static object with the associated context information and the transmission is to be a peer-to-peer connection.

[0088] In various embodiments, example 31 may be a method to be performed by a computer system for migrating context information associated with an electronic document, the method comprising: receiving, from a source computer system, a source context package that is to include a static object and context information associated with the static object; receiving a target request to transmit the source context package to a target computer system; and transmitting, based on the target request, the source context package to the target computer system to support presentation of the static object with the associated context information. Example 32 may include the method of example 31, further comprising: transmitting, to the source computer system, a list of target computer systems adapted to receive context packages, including the target computer system. Example 33 may include the method of example 32, further comprising: receiving a registration request from the target computer system; and adding the target computer system to the list of target computer systems based on the received registration request. Example 34 may include the method of any of examples 31-33, further comprising: transmitting, to the target computer system, a list of source computer systems adapted to generate context packages for presentation of static objects, including the source computer system. Example 35 may include the method of example 34, further comprising: receiving a registration request from the source computer system; and adding the source computer system to the list of source computer systems based on the received registration request. Example 36 may include the method of any of examples 31-33, wherein the target request is received from the target computer system, and the method further comprising: caching the context package received from the source computer system.

[0089] In various embodiments, example 37 may be one or more non-transitory computer system-readable media comprising computer system-executable instructions, wherein the instructions, in response to execution by a computer system, cause the computer system to: process a context package, received from an external computer system over a network, that is to include a static object and context information associated with the static object; load the context information from the context package; and present the static object based on the loaded context information. Example 38 may include the one or more non-transitory computer system-readable media of example 37, wherein the instructions, in response to execution by the computer system, cause the computer system to: override a context setting included in the context information. Example 39 may include the one or more non-transitory computer system-readable media of any of examples 37-38, wherein the external computer system from which the generated context package is to be received is a source computer system adapted to present the static object with the associated context information or a manager computer system adapted to receive the context package from a source computer system. Example 40 may include the one or more non-transitory computer system-readable media of any of examples 37-38, wherein the instructions, in response to execution by the computer system, cause the computer system to: transmit, to a manager computer system, a pull request to receive the context package from the manager computer system.

[0090] Some portions of the preceding detailed description have been presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the ways used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities.

[0091] It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as those set forth in the claims below refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission, or display devices.

[0092] Embodiments of the invention also relate to an apparatus for performing the operations herein. Such a computer program is stored in a non-transitory computer-readable medium. A machine-readable medium includes any mechanism for storing information in a form readable by a machine (e.g., a computer). For example, a machine-readable (e.g., computer-readable) medium includes a machine- (e.g., a computer-) readable storage medium (e.g., read only memory ("ROM"), random access memory ("RAM"), magnetic disk storage media, optical storage media, flash memory devices).

[0093] The processes or methods depicted in the preceding figures can be performed by processing logic that comprises hardware (e.g., circuitry, dedicated logic, etc.), software (e.g., embodied on a non-transitory computer-readable medium), or a combination of both. Although the processes or methods are described above in terms of some sequential operations, it should be appreciated that some of the operations described can be performed in a different order. Moreover, some operations can be performed in parallel rather than sequentially.

[0094] Embodiments of the present invention are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages can be used to implement the teachings of embodiments of the invention as described herein.

[0095] In the foregoing Specification, embodiments of the invention have been described with reference to specific exemplary embodiments thereof. It will be evident that various modifications can be made thereto without departing from the broader spirit and scope of the invention as set forth in the following claims. The Specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense.

* * * * *


uspto.report is an independent third-party trademark research tool that is not affiliated, endorsed, or sponsored by the United States Patent and Trademark Office (USPTO) or any other governmental organization. The information provided by uspto.report is based on publicly available data at the time of writing and is intended for informational purposes only.

While we strive to provide accurate and up-to-date information, we do not guarantee the accuracy, completeness, reliability, or suitability of the information displayed on this site. The use of this site is at your own risk. Any reliance you place on such information is therefore strictly at your own risk.

All official trademark data, including owner information, should be verified by visiting the official USPTO website at www.uspto.gov. This site is not intended to replace professional legal advice and should not be used as a substitute for consulting with a legal professional who is knowledgeable about trademark law.

© 2024 USPTO.report | Privacy Policy | Resources | RSS Feed of Trademarks | Trademark Filings Twitter Feed