IP Library Granted Patent US 12,093,429
Granted Patent B2
US 12,093,429 · App. 18/333,285 · Granted Sep 17, 2024

Remoting application across a network using draw commands with an isolator application

Inventors: Benjamin Buzbee (Woodinville, WA); Killian Koenig (Seattle, WA); Trevor Sundberg (Kirkland, WA); Michael Conrad (Monroe, WA); Darren Remington (Mesa, AZ); David Harnett (Seattle, WA)
Assignee: CLOUDFLARE, INC.
G06F21/629G06F11/3656G06F21/53G06F21/6245G06F21/6281G06F21/71H04L63/1416H04L63/1441
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,093,429
App. No.
18/333,285
Granted
Sep 17, 2024
Kind
B2
Abstract

A client device instantiates an isolator application. A request to instantiate a remote application in a server device is sent by the isolator application instance. The isolator application instance receives, from the remote application instance, draw commands and position information that correspond to the draw commands. The isolator application instance renders one or more portions of output based on the draw commands and the position information.

Claims (80)

1. A method, comprising:

receiving, by a server from an isolator application instance executing on a client device, a request to instantiate a remote application in the server;

instantiating an instance of the remote application in the server, wherein the server is remotely located, separate, and distinct from the client device;

configuring a secure connection between the remote application instance and the isolator application instance; and

providing, via the secure connection between the remote application instance and the isolator application instance, first draw commands and first position information that corresponds to the first draw commands to cause the isolator application instance to render one or more portions of output of the remote application instance based on the first draw commands and the first position information.

2. The method of claim 1 , further comprising:

receiving, by the server from the isolator application instance on the client device, an indicator of an input from a user of the client device; and

providing, by the remote application instance to the isolator application instance, second draw commands and second position information that corresponds to the second draw commands, the second draw commands and the second position information being associated with a modified output of the remote application instance to cause the isolator application instance to render one or more portions of the modified output of the remote application instance based on the second draw commands and the second position information.

3. The method of claim 1 , further comprising:

receiving, by the server from the isolator application instance on the client device, an indicator of an input from a user of the client device, the input indicating the one or more portions of the output of the remote application instance to be locally printed by the client device; and

providing, by the remote application instance to the isolator application instance, a file that provides a visual representation of the one or more portions of the output of the remote application instance, wherein the client device causes a printing device that is communicably coupled to the client device to print the visual representation of the one or more portions of the output of the remote application instance based on the file.

4. The method of claim 1 , further comprising:

receiving, by the server from the isolator application instance on the client device, an indicator of an input from a user of the client device, the input indicating the one or more portions of the output of the remote application instance to be locally stored; and

providing, by the remote application instance to the isolator application instance, a file that provides a visual representation of the one or more portions of the output of the remote application instance, wherein the isolator application instance on the client device stores the file on another non-transitory computer-readable medium that is communicably coupled to the client device.

5. The method of claim 1 , further comprising:

receiving, by the server from the isolator application instance on the client device, an indicator of an input from a user of the client device; and

providing, by the remote application instance to the isolator application instance, content in the one or more portions of the output of the remote application instance, wherein the isolator application instance stores the content in a clipboard buffer of the client device to enable the client device to paste the stored content in one or more other applications instantiated on the client device.

6. The method of claim 1 , wherein instantiating the instance of the remote application in the server further comprises:

determining characteristics of the request and characteristics of a requested application for the remote application instance;

determining graphics level to use for transporting rendering data to the client device based on the determined characteristics of the request and determined characteristics of the requested application; and

transmitting, to the client device, a response packet in response to the request, the response packet including one or more resources to configure the isolator application instance to connect to the remote application instance, the one or more resources including graphic libraries available for the determined graphics level.

7. The method of claim 1 , further comprising:

receiving, by the server from the isolator application instance on the client device, an indicator of an extension having an instance installed on the isolator application instance;

configuring an instance of the extension on the remote application instance on the server;

receiving, by the server from the isolator application instance on the client device, an indicator of a detected user input from a user of the client device to the extension instance installed on the isolator application instance; and

causing the extension instance on the remote application instance on the server to mirror the extension instance installed on the isolator application instance based on the detected user input.

8. A non-transitory machine-readable storage medium that provides instructions that, when executed by a processor, cause operations to be performed comprising:

receiving, by a server from an isolator application instance executing on a client device, a request to instantiate a remote application in the server;

instantiating an instance of the remote application in the server, wherein the server is remotely located, separate, and distinct from the client device;

configuring a secure connection between the remote application instance and the isolator application instance; and

providing, via the secure connection between the remote application instance and the isolator application instance, first draw commands and first position information that corresponds to the first draw commands to cause the isolator application instance to render one or more portions of output of the remote application instance based on the first draw commands and the first position information.

9. The non-transitory machine-readable storage medium of claim 8 , wherein the operations further comprise:

receiving, by the server from the isolator application instance on the client device, an indicator of an input from a user of the client device; and

providing, by the remote application instance to the isolator application instance, second draw commands and second position information that corresponds to the second draw commands, the second draw commands and the second position information being associated with a modified output of the remote application instance to cause the isolator application instance to render one or more portions of the modified output of the remote application instance based on the second draw commands and the second position information.

10. The non-transitory machine-readable storage medium of claim 8 , wherein the operations further comprise:

receiving, by the server from the isolator application instance on the client device, an indicator of an input from a user of the client device, the input indicating the one or more portions of the output of the remote application instance to be locally printed by the client device; and

providing, by the remote application instance to the isolator application instance, a file that provides a visual representation of the one or more portions of the output of the remote application instance, wherein the client device causes a printing device that is communicably coupled to the client device to print the visual representation of the one or more portions of the output of the remote application instance based on the file.

11. The non-transitory machine-readable storage medium of claim 8 , wherein the operations further comprise:

receiving, by the server from the isolator application instance on the client device, an indicator of an input from a user of the client device, the input indicating the one or more portions of the output of the remote application instance to be locally stored; and

providing, by the remote application instance to the isolator application instance, a file that provides a visual representation of the one or more portions of the output of the remote application instance, wherein the isolator application instance on the client device stores the file on another non-transitory computer-readable medium that is communicably coupled to the client device.

12. The non-transitory machine-readable storage medium of claim 8 , wherein the operations further comprise:

receiving, by the server from the isolator application instance on the client device, an indicator of an input from a user of the client device; and

providing, by the remote application instance to the isolator application instance, content in the one or more portions of the output of the remote application instance, wherein the isolator application instance stores the content in a clipboard buffer of the client device to enable the client device to paste the stored content in one or more other applications instantiated on the client device.

13. The non-transitory machine-readable storage medium of claim 8 , wherein instantiating the instance of the remote application in the server includes:

determining characteristics of the request and characteristics of a requested application for the remote application instance;

determining graphics level to use for transporting rendering data to the client device based on the determined characteristics of the request and determined characteristics of the requested application; and

transmitting, to the client device, a response packet in response to the request, the response packet including one or more resources to configure the isolator application instance to connect to the remote application instance, the one or more resources including graphic libraries available for the determined graphics level.

14. The non-transitory machine-readable storage medium of claim 8 , wherein the operations further comprise:

receiving, by the server from the isolator application instance on the client device, an indicator of an extension having an instance installed on the isolator application instance;

configuring an instance of the extension on the remote application instance on the server;

receiving, by the server from the isolator application instance on the client device, an indicator of a detected user input from a user of the client device to the extension instance installed on the isolator application instance; and

causing the extension instance on the remote application instance on the server to mirror the extension instance installed on the isolator application instance based on the detected user input.

15. A server, comprising:

a processor; and

a non-transitory machine-readable storage medium that provides instructions that, if executed by the processor, will cause the server to perform operations including:

receiving, by the server from an isolator application instance executing on a client device, a request to instantiate a remote application in the server;

instantiating an instance of the remote application in the server, wherein the server is remotely located, separate, and distinct from the client device;

configuring a secure connection between the remote application instance and the isolator application instance; and

providing, via the secure connection between the remote application instance and the isolator application instance, first draw commands and first position information that corresponds to the first draw commands to cause the isolator application instance to render one or more portions of output of the remote application instance based on the first draw commands and the first position information.

16. The server of claim 15 , wherein the operations further comprise:

receiving, by the server from the isolator application instance on the client device, an indicator of an input from a user of the client device; and

providing, by the remote application instance to the isolator application instance, second draw commands and second position information that corresponds to the second draw commands, the second draw commands and the second position information being associated with a modified output of the remote application instance to cause the isolator application instance to render one or more portions of the modified output of the remote application instance based on the second draw commands and the second position information.

17. The server of claim 15 , wherein the operations further comprise:

receiving, by the server from the isolator application instance on the client device, an indicator of an input from a user of the client device, the input indicating the one or more portions of the output of the remote application instance to be locally printed by the client device; and

providing, by the remote application instance to the isolator application instance, a file that provides a visual representation of the one or more portions of the output of the remote application instance, wherein the client device causes a printing device that is communicably coupled to the client device to print the visual representation of the one or more portions of the output of the remote application instance based on the file.

18. The server of claim 15 , wherein the operations further comprise:

receiving, by the server from the isolator application instance on the client device, an indicator of an input from a user of the client device, the input indicating the one or more portions of the output of the remote application instance to be locally stored; and

providing, by the remote application instance to the isolator application instance, a file that provides a visual representation of the one or more portions of the output of the remote application instance, wherein the isolator application instance on the client device stores the file on another non-transitory computer-readable medium that is communicably coupled to the client device.

19. The server of claim 15 , wherein the operations further comprise:

receiving, by the server from the isolator application instance on the client device, an indicator of an input from a user of the client device; and

providing, by the remote application instance to the isolator application instance, content in the one or more portions of the output of the remote application instance, wherein the isolator application instance stores the content in a clipboard buffer of the client device to enable the client device to paste the stored content in one or more other applications instantiated on the client device.

20. The server of claim 15 , wherein instantiating the instance of the remote application in the server further includes:

determining characteristics of the request and characteristics of a requested application for the remote application instance;

determining graphics level to use for transporting rendering data to the client device based on the determined characteristics of the request and determined characteristics of the requested application; and

transmitting, to the client device, a response packet in response to the request, the response packet including one or more resources to configure the isolator application instance to connect to the remote application instance, the one or more resources including graphic libraries available for the determined graphics level.

21. The server of claim 15 , wherein the operations further comprise:

receiving, by the server from the isolator application instance on the client device, an indicator of an extension having an instance installed on the isolator application instance;

configuring an instance of the extension on the remote application instance on the server;

receiving, by the server from the isolator application instance on the client device, an indicator of a detected user input from a user of the client device to the extension instance installed on the isolator application instance; and

causing the extension instance on the remote application instance on the server to mirror the extension instance installed on the isolator application instance based on the detected user input.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2024
From: BUZBEE, BENJAMIN; KOENIG, KILLIAN; SUNDBERG, TREVOR; CONRAD, MICHAEL; REMINGTON, DARREN; HARNETT, DAVID
To: CLOUDFLARE, INC.
Reel/Frame 068302/0260 →
SECURITY INTEREST Recorded May 20, 2024
From: CLOUDFLARE, INC.
To: CITIBANK, N.A.
Reel/Frame 067472/0246 →
Continuity (5)
Continuation 16781854 · Feb 4, 2020
Provisional Application 62843205 · May 3, 2019
Provisional Application 62800948 · Feb 4, 2019
Provisional Application 62800937 · Feb 4, 2019
Related Publication 20230342500A1 · Oct 26, 2023