US8291078B2ActiveUtilityA1

Multi-process browser architecture

88
Assignee: FISHER DARINPriority: May 13, 2008Filed: May 12, 2009Granted: Oct 16, 2012
Est. expiryMay 13, 2028(~1.8 yrs left)· nominal 20-yr term from priority
G06F 2209/543G06F 9/542G06F 2209/545G06F 9/463
88
PatentIndex Score
16
Cited by
16
References
37
Claims

Abstract

Systems and methods for multi-process browser architecture are described herein. In an embodiment, a system for providing multi-process browser architecture includes at least one rendering process for each browser instance that renders a content area; and at least one browser process that communicates with one or a plurality of rendering engine processes. In another embodiment, a method for providing a multi-process browser architecture includes instantiating a unique rendering process for each content area instance and instantiating a unique browser process. In this way browsers may avoid the effects of faulty processes affecting other browser processes. This may improve user efficiency while enhancing user experience.

Claims

exact text as granted — not AI-modified
1. A computer based system for instantiating a content area of a browser, comprising:
 one or more processors; 
 a memory coupled to the one or more processors; 
 at least one browser process that manages content for display in content areas of a browser; and 
 a plurality of unique rendering engine processes initiated by the at least one browser process, wherein the plurality of unique rendering engine processes render the content for respective content areas of the browser in response to communication with the at least one browser process, 
 wherein the at least one browser process and the plurality of unique rendering engine processes are implemented on the one or more processors. 
 
     
     
       2. The system of  claim 1 , wherein the at least one browser process includes a render view host. 
     
     
       3. The system of  claim 2 , wherein the render view host instantiates at least one render view for each rendering engine process. 
     
     
       4. The system of  claim 3 , wherein the at least one render view renders content in a respective content area. 
     
     
       5. The system of  claim 4 , wherein the at least one render view includes a view identifier that identifies a respective instance of the at least one render view. 
     
     
       6. The system of  claim 1 , wherein each rendering engine process stores and manages content in the content area. 
     
     
       7. The system of  claim 1 , wherein each rendering engine process includes a watch dog thread that detects a faulty rendering engine process and terminates the faulty rendering engine process. 
     
     
       8. The system of  claim 1 , further including a render process host that instantiates a render process. 
     
     
       9. The system of  claim 1 , wherein each rendering engine process includes a renderer state. 
     
     
       10. The system of  claim 1 , wherein the at least one browser process includes a browser state including session information of the plurality of rendering engine processes and determines whether a rendering engine process satisfies a condition, wherein when the rendering engine process satisfies the condition the at least one browser process re-instantiates the rendering engine process and restores the session information of the re-instantiated rendering engine process without affecting other rendering engine processes. 
     
     
       11. The system of  claim 1 , further including a resource dispatcher host that provides resources to the at least one browser process. 
     
     
       12. The system of  claim 1 , wherein each rendering engine process includes a resource dispatcher that provides resource requests to a resource dispatcher host. 
     
     
       13. The system of  claim 1 , wherein the at least one browser process controls the plurality of rendering engine processes, and the plurality of rendering engine processes communicate with the at least one browser process to render content retrieved by the at least one browser process in the respective content areas. 
     
     
       14. The system of  claim 1 , wherein at least one of the content areas is a browser tab. 
     
     
       15. The system of  claim 1 , wherein at least one of the content areas is a browser window. 
     
     
       16. The system of  claim 1 , wherein
 the plurality of unique rendering engine processes includes a main renderer thread and a render thread, the main renderer thread includes a render process, and the render thread includes a plurality of render views, 
 the at least one browser process includes a main browser thread and an input/output thread, the main browser thread includes a plurality of render view hosts that manages the plurality of render views, and the input/output thread includes a resource dispatcher host, and 
 each render view corresponds to a unique content area of the browser. 
 
     
     
       17. The system of  claim 16 , wherein
 the main browser thread further includes a plurality of render process hosts that includes a respective browser state, and 
 the input/output thread further includes a plurality of channels that includes a respective filter that intercepts resource request messages from the plurality of rendering engine processes and forwards the messages to the resource dispatcher host. 
 
     
     
       18. The system of  claim 17 , wherein
 the main browser thread includes at least one render view host that manages a respective render view and communicates a message to the render view through a corresponding render process host, 
 the render process host communicates the message to the render process, and 
 the render process communicates the message to the render view. 
 
     
     
       19. The system of  claim 16 , wherein the render process manages communication with the at least one browser process, and the render process further maintains a renderer state relating to a state of a corresponding rendering engine process. 
     
     
       20. The system of  claim 16 , wherein the at least one browser process and the plurality of unique rendering engine processes communicate through an inter-process communication. 
     
     
       21. A computer implemented method for instantiating a content area of a browser, comprising:
 (a) instantiating a unique browser process that manages content for display in content areas of a browser; 
 (b) instantiating at least one content area in the browser process; 
 (c) instantiating a unique rendering engine process for each content area instantiated in the browser process; and 
 (d) rendering content for each content area of the browser in response to communication between the at least one browser process and the plurality of unique rendering engine processes, 
 wherein at least one of steps (a)-(d) is implemented on one or more processors. 
 
     
     
       22. The method of  claim 21 , further including:
 instantiating at least one render view for each instantiated rendering engine process. 
 
     
     
       23. The method of  claim 22 ,
 wherein the rendering content (d) includes rendering content in a corresponding content area using the at least one render view. 
 
     
     
       24. The method of  claim 21 , further including:
 instantiating a render process using a render process host. 
 
     
     
       25. The method of  claim 21 , further including:
 providing one or more resources to the browser process using a resource dispatcher host. 
 
     
     
       26. The method of  claim 25 , further including:
 providing one or more resource requests to the resource dispatcher host using a resource dispatcher. 
 
     
     
       27. The method of  claim 21 , wherein the instantiating at least one content area includes instantiating a browser tab. 
     
     
       28. The method of  claim 21 , wherein the instantiating at least one content area includes instantiating a browser window. 
     
     
       29. A non-transitory computer-readable storage medium having instructions stored thereon that, when executed by a processing device, cause the processing device to perform operations to:
 (a) instantiate a unique browser process that manages content for display in content areas of a browser 
 (b) instantiate at least one content area in the browser process; 
 (c) instantiate a unique rendering engine process for each content area instantiated in the browser process; and 
 (d) render content for each content area of the browser in response to communication between the at least one browser process and the plurality of unique rendering engine processes. 
 
     
     
       30. The non-transitory computer-readable storage medium of  claim 29 , wherein the instructions stored thereon that, when executed by a processing device, further cause the processing device to perform operations to:
 instantiate at least one render view for each instantiated rendering engine process. 
 
     
     
       31. The non-transitory computer-readable storage medium of  claim 30 , wherein the instructions stored thereon that, when executed by a processing device, cause the processing device to render content in the content areas further cause the processing device to perform operations to:
 render content in an instantiated content area using the at least one render view. 
 
     
     
       32. The non-transitory computer-readable storage medium of  claim 29 , wherein the instructions stored thereon that, when executed by a processing device, further cause the processing device to perform operations to:
 instantiate a render process using a render process host. 
 
     
     
       33. The non-transitory computer-readable storage medium of  claim 29 , wherein the instructions stored thereon that, when executed by a processing device, further cause the processing device to perform operations to:
 provide one or more resources to the browser process using a resource dispatcher host. 
 
     
     
       34. The non-transitory computer-readable storage medium of  claim 33 , wherein the instructions stored thereon that, when executed by a processing device, further cause the processing device to perform operations to:
 provide one or more resource requests to the resource dispatcher host using a resource dispatcher. 
 
     
     
       35. A computer implemented method for rendering content in a browser, comprising:
 determining whether a content area has been instantiated; 
 instantiating a rendering engine process for each content area in a browser process based on the determining, wherein each content area is associated with a unique rendering engine process; and 
 rendering content in each content area using respective unique rendering engine processes, 
 wherein at least one of the determining, the instantiating and the rendering is implemented on one or more processors. 
 
     
     
       36. The method of  claim 35 , wherein at most one rendering engine process is associated with an active content area at a given time. 
     
     
       37. The method of  claim 36 , wherein the active content area is a content area with which a user is currently interacting.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.