Abstract:
Methods and apparatus are provided for automatically launching an application from a browser. According to one aspect of the invention, content in a browser having one or more tabbed viewing panes is processed by determining if a user indicates that contents of a selected viewing pane should be duplicated in a second application; storing an object associated with the selected viewing pane in a memory for inter-process communication of data; and sending an inter-process communication to facilitate the second application to duplicate the contents of the selected viewing pane, wherein the second application operates independently of the browser.

Description:
FIELD OF THE INVENTION 
       [0001]    The present invention relates generally to web browser techniques for accessing information over the Internet, and more particularly, to techniques for automatically launching an application from a browser. 
       BACKGROUND OF THE INVENTION 
       [0002]    The Internet (World Wide Web) is a valuable resource that provides vast amounts of information to users. Web browsers, such as Microsoft Internet Explorer, are applications that allow users to access information over the Internet. Most web browsers are implemented using a graphical user interface (GUI) that allows a user to take actions through a series of “point and click” operations. Graphical user interfaces typically include tabs (e.g., rectangular boxes containing a text label or an icon), that are each associated with a different viewing pane. The tabs allow a user to easily switch between different content, for example, by clicking on a desired tab with a mouse. When a given tab is selected, the content associated with the tab is presented to the user. 
         [0003]    A number of web browsers, often referred to as tabbed browsers, include such tab functionality. For example, more recent versions of Microsoft Internet Explorer, Konqueror, Firefox, and Opera browsers provide tab browsing functionality, whereby users can view multiple web pages in a browser, each accessible by a corresponding tab. Tabbed browsers allow users to switch between different web pages associated with each tab, without having to switch top-level windows. 
         [0004]    While tabbed browsers provide a convenient mechanism for accessing multiple web pages simultaneously and some provide functionality for launching another application to view selected content, they suffer from a number of limitations, which if overcome could further improve the utility and efficiency of such browsers. For example, existing browsers are not believed to provide satisfactory functionality to allow another application, such as another browser or a different application, to be automatically launched from the original browser. 
         [0005]    A need therefore exists for improved methods and apparatus for automatically launching an application from a browser. 
       SUMMARY OF THE INVENTION 
       [0006]    Generally, methods and apparatus are provided for automatically launching an application from a browser. According to one aspect of the invention, content in a browser having one or more tabbed viewing panes is processed by determining if a user indicates that contents of a selected viewing pane should be duplicated in a second application; storing an object associated with the selected viewing pane in a memory for inter-process communication of data; and sending an inter-process communication to facilitate the second application to duplicate the contents of the selected viewing pane, wherein the second application operates independently of the browser. 
         [0007]    In one exemplary implementation, the second application can be a new child browser which is created by cloning the browser. The second application can also be an existing browser and an object associated with a selected viewing pane is cloned into the memory for inter-process communication of data. The existing browser can instantiate a new tab loading contents of the memory for inter-process communication of data. 
         [0008]    In a further implementation, the second application is a new application associated with a file type for the contents of the selected viewing pane and an instance of the new application is instantiated with a reference to the memory for inter-process communication of data. The second application can also be an existing application and a new document of a file type associated with the contents of the selected viewing pane is instantiated and the contents from the memory for inter-process communication of data into the new document are loaded into the new document. 
         [0009]    A more complete understanding of the present invention, as well as further features and advantages of the present invention, will be obtained by reference to the following detailed description and drawings. 
     
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0010]      FIG. 1  illustrates an exemplary screen shot of an illustrative conventional tabbed browser; 
           [0011]      FIG. 2  is a flow diagram illustrating an exemplary inter-process communication technique for automatically launching a child browser from an existing parent browser; 
           [0012]      FIG. 3  is a flow chart describing an exemplary inter-process communication process of  FIG. 2  in further detail; 
           [0013]      FIG. 4  is a flow chart describing an alternative exemplary inter-process communication process of  FIG. 2  in further detail; 
           [0014]      FIG. 5  is a flow diagram illustrating an exemplary inter-process communication technique for automatically launching another application from an existing browser; 
           [0015]      FIG. 6  is a flow chart describing an exemplary inter-process communication process of  FIG. 5  in further detail; and 
           [0016]      FIG. 7  is a flow chart describing an alternative exemplary inter-process communication process of  FIG. 5  in further detail. 
       
    
    
     DETAILED DESCRIPTION 
       [0017]    The present invention provides methods and apparatus for automatically launching an application from a browser. The present invention allows a user to drag a tab from a browser to create a new browser or another application containing the content associated with the selected tab. According to a first aspect of the invention, inter-process communication (IPC) techniques are employed for automatically launching a selected tab in a child browser from an existing parent browser. For example, the selected tab can be dragged outside of an existing browser to automatically launch a new browser with the selected content, or the selected content can be dragged from a first browser to another existing browser. 
         [0018]    According to another aspect of the invention, inter-process communication techniques are employed for automatically launching a selected tab in another application from an existing browser. For example, a user can drag an application specific tab from a browser outside the browser to launch the corresponding application, or the user can drag an application specific tab from a browser outside the browser to an existing application. 
         [0019]      FIG. 1  illustrates an exemplary screen shot of an illustrative conventional tabbed browser  100 . The tabbed browser  100  may be embodied, for example, as tabbed versions of Microsoft Internet Explorer, Konqueror, FireFox, or an Opera browser. As shown in  FIG. 1 , the tabbed browser  100  has a plurality of tabs  110 - 1  through  110 - 3 , each with an associated web page. The tabs  110  allow a user to switch between different content, for example, by clicking on a desired tab with a mouse. When a given tab is selected, such as tab  110 - 1  in  FIG. 1 , the content associated with the tab  110 - 1  is presented to the user in the corresponding viewing pane  120 - 1 . 
         [0020]      FIG. 2  is a flow diagram illustrating an exemplary inter-process communication technique  200  for automatically launching a selected tab in a new or existing child browser  230  from an existing parent browser  210 . As shown in  FIG. 2 , an IPC process  300  or  400 , as discussed further below in conjunction with  FIGS. 3 and 4 , respectively, clones the object associated with the parent browser  210 , including all session information for the selected tab. In this manner, a selected tab can be dragged outside of an existing browser  210  to automatically launch a new browser  230  with the selected content ( FIG. 3 ), or the selected content can be dragged from a first browser  210  to another existing browser  230  ( FIG. 4 ). 
         [0021]    As shown in  FIG. 2 , the IPC processes  300 ,  400  use a memory  220  for inter-process communication of data to store the cloned object and session information  275 . The memory  220  for inter-process communication may be embodied, for example, as a shared memory, a temporary file on a disk, or a temporary file in memory (or some combination thereof). The exemplary session information  275  identifies the user and server associated with the session information, and includes the session identifier assigned by the server to identify the user for the session. 
         [0022]      FIG. 3  is a flow chart describing an exemplary implementation of the inter-process communication process  300  of  FIG. 2  in further detail. As shown in  FIG. 3 , the IPC process  300  initially monitors during step  310  to detect when the user drags a selected tab from an existing browser to a point outside the existing browser. When the IPC process  300  determines that the user has dragged a selected tab from an existing browser to a point outside the existing browser, program control proceeds to step  320  where the parent browser object is cloned, including all session information for the selected tab, creating the child browser. Thereafter, the child browser closes all other open tabs during step  330 , retaining only the selected tab. Finally, the parent browser deletes the session information and closes the selected tab during step  340 . 
         [0023]      FIG. 4  is a flow chart describing an alternative implementation of the inter-process communication process  400  of  FIG. 2  in further detail. As shown in  FIG. 4 , the IPC process  400  initially monitors during step  410  to detect when the user drags a selected tab from a first existing browser to a second existing browser. When the IPC process  400  determines that the user has dragged a selected tab from a first existing browser to a second existing browser, program control proceeds to step  420  where the object associated with the selected tab from the first browser, and any session information, is cloned into a memory  220  for IPC. 
         [0024]    The second browser instantiates a new empty tab during step  430  and copies the object information from the memory  220  for IPC into a new empty tab during step  440 . Finally, the first browser deletes the selected tab and session information (or closes if the selected tab was the only tab) during step  450 . 
         [0025]      FIG. 5  is a flow diagram illustrating an exemplary inter-process communication technique  500  for automatically launching a selected tab in another application from an existing browser. As shown in  FIG. 5 , an IPC process  600  or  700 , as discussed further below in conjunction with  FIGS. 7 and 8 , respectively, writes the contents  575  of the application specific tab associated with the browser  510  into a memory  520  for IPC. In this manner, a selected tab can be dragged outside of a browser  510  to automatically launch a new application  530  appropriate for the selected content ( FIG. 6 ), or the selected content can be dragged from a browser  510  to an existing application  530  ( FIG. 7 ). The application may be, for example, Microsoft Word, Microsoft Excel, Microsoft PowerPoint, Visio, or Adobe Acrobat. 
         [0026]      FIG. 6  is a flow chart describing an exemplary inter-process communication process  600  of  FIG. 5  in further detail. As shown in  FIG. 6 , the IPC process  600  initially monitors during step  610  to detect when the user drags an application specific tab from an existing browser to a point outside the existing browser. When the IPC process  600  determines that the user has dragged an application specific tab from an existing browser to a point outside the existing browser, program control proceeds to step  620  where the contents of the selected tab are written to the memory  520  for IPC, typically with lock protection. 
         [0027]    A new instance of the application corresponding to the content of the selected tab is created during step  630 . For example, the file extension of the content from the selected tab can be analyzed to determine an appropriate application for the content, in a known manner. The contents from the memory  520  for IPC are loaded into the new application instance during step  635 . 
         [0028]    The lock is then transferred from the browser to the new application during step  640 . Finally, the browser closes the selected tab and deletes all associated information, removing reference to the memory  520  for IPC during step  650 . 
         [0029]      FIG. 7  is a flow chart describing an alternative exemplary inter-process communication process  700  of  FIG. 5  in further detail. As shown in  FIG. 7 , the IPC process  700  initially monitors during step  710  to detect when the user drags an application specific tab from an existing browser to another application. When the IPC process  700  determines that the user has dragged an application specific tab from a first browser to another application, program control proceeds to step  720  where the contents of the selected tab are written to the memory  520  for IPC, typically with lock protection. The second application  530  then instantiates a new document of the indicated document type during step  730  and loads the contents from the memory  520  for IPC into the new document during step  740 . 
         [0030]    The lock from is transferred from the browser  510  to the application  530  during step  750 . Finally, during step  760 , the browser  510  closes the selected tab and deletes any associated information, including removing any reference to the memory  520  for IPC. 
         [0031]    While the figures herein show an exemplary sequence of steps, it is also an embodiment of the present invention that the sequence may be varied. Various permutations of the algorithms are contemplated as alternate embodiments of the invention. 
         [0032]    System and Article of Manufacture Details 
         [0033]    As is known in the art, the methods and apparatus discussed herein may be distributed as an article of manufacture that itself comprises a computer readable medium having computer readable code means embodied thereon. The computer readable program code means is operable, in conjunction with a computer system, to carry out all or some of the steps to perform the methods or create the apparatuses discussed herein. The computer readable medium may be a recordable medium (e.g., floppy disks, hard drives, compact disks, or memory cards) or may be a transmission medium (e.g., a network comprising fiber-optics, the world-wide web, cables, or a wireless channel using time-division multiple access, code-division multiple access, or other radio-frequency channel). Any medium known or developed that can store information suitable for use with a computer system may be used. The computer-readable code means is any mechanism for allowing a computer to read instructions and data, such as magnetic variations on a magnetic media or height variations on the surface of a compact disk. 
         [0034]    The computer systems and servers described herein each contain a memory that will configure associated processors to implement the methods, steps, and functions disclosed herein. The memories could be distributed or local and the processors could be distributed or singular. The memories could be implemented as an electrical, magnetic or optical memory, or any combination of these or other types of storage devices. Moreover, the term “memory” should be construed broadly enough to encompass any information able to be read from or written to an address in the addressable space accessed by an associated processor. With this definition, information on a network is still within a memory because the associated processor can retrieve the information from the network. 
         [0035]    It is to be understood that the embodiments and variations shown and described herein are merely illustrative of the principles of this invention and that various modifications may be implemented by those skilled in the art without departing from the scope and spirit of the invention.