Patent Description:
Application developers (e.g., such as application developers in the mobile computing space) have limited options for displaying web-based (e.g., Internet-based) content corresponding with their applications, such as web content associated with a link (e.g., a hyperlink for a uniform resource locator (URL)) included in content displayed by the associated application. One approach for displaying web content is for application developers to implement their own browser-like functionality within their application interface (e.g., a graphical user interface), such as by using an application programming interface (API) that provides basic browser functionality. However, such approaches can have drawbacks, such as lack of browsing security and also an inability to provide a unified web browsing experience for a user across multiple applications.

Another approach for displaying web content associated with an application is for application developers to have the application intent out to a browser application (e.g., a full featured browser application) to display (e.g., show, render, etc.) the associated web content. Thereby "intent out" means that the application triggers launching the full featured browser application, if it is not started already, and displaying the associated web content by the full featured browser application. Furthermore, the full featured browser application may be a stand-alone application which is independent of the non-browser application. While, such approaches may provide browsing security, they require a significant context switch from the application user interface (UI) to the browser UI. This context switch can take a significant amount of time (e.g., to start the browser application, load the web content and render the web content), which can adversely impact the user experience. Further, a user may abandon (e.g., not return) to the application from the browser application (e.g., due to the lag and/or continuing on in the browser application), which is undesirable for application developers in retaining user engagement with their application. Since the non-browser application and the browser application execute as separate full featured applications with separate UIs, more system resources may be required than in above approach of implementing browser-like functionality within the interface of the non-browser application.

<CIT> discloses a method, system, and article of manufacture for generating a user defined page having representations of content in other pages. User selection is received via a computer user interface of a portion of content within a page rendered in a display device. A graphical element is generated representing the selected portion of the content in response to receiving the user selection. A determination is made of a computer address of the selected content in response to receiving the user selection. The generated graphical element is added to a user page. The graphical element in the user page is associated with the determined computer address. User selection is received via the computer user interface of the graphical element within the user page. Content at the computer address associated with the selected graphical element is rendered in the within the user page display device.

<CIT> relates to a computer readable memory to direct a computer to function in a specified manner. The computer readable memory includes a first executable module to identify a definition of a Networked Information Monitor (NIM). A second executable module defines a NIM frame for the NIM using the definition. A third executable module retrieves content for the NIM. A fourth executable module places the content in a NIM viewer defined by the frame. <CIT> also discloses a method of hosting Internet content, including the steps of receiving an address of a definition from a computing device, where the definition defines a frame and a location of content with which to fill in the frame. Further, <CIT> discloses a computer readable memory to direct a computer function in a specified manner. The computer readable memory includes a first executable module to identify a definition of a Network Information Monitor (NIM). A second executable defines a NIM frame for the NIM using the definition. A third executable module retrieves content from the NIM. A fourth executable module places the content in a NIM viewer defined by the frame. Additionally, <CIT> describes a method of hosting Internet content, including the steps receiving an address of a definition from a computing device, where the definition defines a frame and a location of content with which to fill in the frame.

<NPL>, relates to Internet Explorer arranged for opening a new browser window from an Office link, wherein, in response to clicking a link in an Office document, the Internet Explorer opens the Internet Explorer and opens the respective Web page in the Internet Explorer in a new tabbed window or in a currently open browser window.

Objects of the invention, presented herein, are achieved by subject matters of independent claims. Dependent claims define exemplary some of possible embodiments.

According to one general aspect, a computer-implemented method can include executing, on a computing device, a non-browser application; displaying, by the non-browser application on a display of the computing device, a link to web content; and receiving an indication that the link has been selected. The computer-implemented method can also include, in response to the indication that the link has been selected, allocating a tab of a browser application to the non-browser application; displaying the allocated browser tab within a user interface of the non-browser application; and displaying, by the allocated browser tab, the web content within the user interface.

Implementations can include one or more of the following features. For example, the computing device can be a mobile computing device. The non-browser application and the allocated browser tab are executed as separate processes by the computing device. The allocated browser tab can include at least one menu item defined by the browser application; at least one menu item defined by the non-browser application; at least one button defined by the browser application; and/or at least one button defined by the non-browser application. The indication that the link has been selected can include at least one customization parameter for the allocated browser tab.

In response to the displaying the link to the web content, the method can include sending, by the non-browser application, a pre-intent request to the browser application, the pre-intent request including a uniform resource locator (URL) corresponding with the link to the web content. In response to the pre-intent request, the method can include performing, by the browser application, at least one operation corresponding with displaying the web content.

The pre-intent request can include at least one customization parameter for the allocated browser tab. The at least one customization parameter can include one or more of a menu item and a corresponding action associated with the menu item; an icon corresponding with the non-browser application; a button and a corresponding action associated with the button; a color corresponding with the user interface; and an animation to be used for displaying the allocated browser tab within the user interface.

The at least one operation corresponding with displaying the web content can include one or more of launching the browser application; loading a native library of the browser application; performing a domain name system (DNS) lookup based on the URL; connecting to a server corresponding with the DNS lookup; downloading the web content from the server; and rendering the downloaded web content.

In another general aspect, a computer-implemented method can include executing, on a computing device, a non-browser application and displaying, by the non-browser application on a display of the computing device, a link to web content. The method can further include, in response to the displaying the link to the web content, sending a pre-intent request to a browser application, the pre-intent request including a uniform resource locator (URL) corresponding with the link to the web content. The method can still further include, in response to the pre-intent request, performing, by the browser application, at least one operation corresponding with displaying the web content and receiving a signal indicating selection of the link. In response to the receiving the signal, the method can include allocating a tab of the browser application to the non-browser application, the pre-intent request further including at least one customization parameter for the allocated browser tab; displaying, in accordance with the at least one customization parameter, the allocated browser tab within a user interface of the non-browser application; and displaying, by the allocated browser tab, the web content within the user interface.

Implementations can include one or more of the following features. For example, the at least one customization parameter can include one or more of a menu item and corresponding action associated with the menu item; an icon; a button and corresponding action associated with the button; a color corresponding with the user interface; and an animation to be used for displaying the allocated browser tab within the user interface.

The at least one operation corresponding with displaying the web content includes one or more of launching the browser application; loading a native library of the browser application; performing a domain name system (DNS) lookup based on the URL; connecting to a server corresponding with the DNS lookup; downloading the web content from the server; and rendering the web content.

The non-browser application and the allocated browser tab are executed as separate processes by the computing device. The method can include displaying the URL in the allocated browser tab. The method can include displaying a secure socket layer (SSL) state corresponding with the web content displayed in the allocated browser tab.

The allocated browser tab can have access to at least one resource of the browser application. The at least one resource of the browser application can include one or more of an electronic payment service; a language translation service; a browsing history; form autofill data; and a password vault.

The performing the at least one operation corresponding with displaying the web content in response to the pre-intent request can include performing the at least one operation corresponding with displaying the web content in a background browser process of the computing device, with the non-browser application being executed as a foreground process of the computing device.

In another general aspect, a non-transitory computer readable medium can have instructions stored thereon. The instructions, when executed by at least one processor of a computing device, can cause the computing device to execute a non-browser application; display, by the non-browser application on a display of the computing device, a link to web content; and receive an indication that the link has been selected. In response to the indication that the link has been selected, the instructions, when executed by the at least one processor, can cause the computing device to allocate a tab of a browser application to the non-browser application. The instructions, when executed by at least one processor of a computing device, can further cause the computing device to display the allocated browser tab within a user interface of the non-browser application and display, by the allocated browser tab, the web content within the user interface.

Implementations can include one or more of the following features. For example, the instructions, when executed by the at least one processor, can cause the computing device to, in response to the displaying the link to the web content send, by the non-browser application, a pre-intent request to the browser application, the pre-intent request including a uniform resource locator (URL) corresponding with the link to the web content; and in response to the pre-intent request, perform, by the browser application, at least one operation corresponding with displaying the web content in a background process.

In another general aspect, a computer-implemented method can include receiving, from a non-browser application, a request for content of a first type. The computer-implemented method can further include providing, to the non-browser application, a user interface element for a browser application. The non-browser application can display content of a different, second type that is created specifically for the non-browser application. The computer-implemented method can also include modifying the user interface element for a user interface of the non-browser application to display, for the non-browser application, the content of the first type.

Implementations can include one or more of the following features. For example, the content of the first type can include web content. The content of the first type can include content not specifically created for display by the non-browser application. The user interface element can include a browser tab. Modifying the user interface element can include applying at least one customization parameter to the user interface element.

In the following description, specific details are set forth to provide an understanding of example implementations of systems and corresponding methods for integrating web content in a non-browser application. It will be apparent, however, that the disclosed implementations can be practiced without some of these specific details. In other instances, well-known structures and techniques have not been shown in detail so as not to obscure the disclosure.

In the approaches described herein, an interface (e.g., an API) is provided between a browser application, e.g., a browser application, and a non-browser application. The provided interface can be used to facilitate the non-browser application requesting allocation of a browser tab. For purposes of this disclosure, "allocating a browser tab" means to obtain, render and/or display content within a user interface (UI) of the non-browser application, such as using the techniques described herein. In some implementations, the non-browser application can be executed on a computing device, where execution of the non-browser application can include displaying application content (e.g., non-web content incorporated in the application code, or other content created specifically for the non-browser application) in the application's UI, where that application content can include a link (e.g., a hyperlink) to other content, e.g., web content. In an implementation, the application content can include multiple links to respective web content. In the disclosed implementations, non-browser applications can take any number of forms. For instance, a non-browser application can be an email application, a social media application, a photo sharing application, a news service application, a consumer services application, etc..

The non-browser application can further interact with the browser application, via the interface, to request that the browser application be initialized, if necessary, and request that the browser application, after initialization, preload web content associated with one or more links included in the displayed application content. The web content that is preloaded can be identified by the non-browser application in the request made to the browser application, or the browser application itself can identify web content to preload based on other information, such as a user browsing history (e.g., to identify a most likely link of the application content to be selected by the user).

<FIG> is a diagram of a system <NUM> for integrating display of web content in a non-browser application, according to an implementation. The system <NUM> includes clients <NUM> and servers <NUM>. In the system <NUM>, the clients <NUM> and the servers <NUM> are connected over a network (e.g., a data network, such as the Internet) <NUM>.

In the system <NUM>, each of the clients <NUM> can be configured to run a browser application for accessing, downloading, rendering and/or displaying web content (web content), such as websites, executable web content, etc.). In the approaches described herein, the browser application may implement independent browser tabs for rendering and displaying web content, where each browser tab can be used to display respective (e.g., different) web content, and multiple browser tabs can be associated with (e.g., implemented by) a single browser application process.

In certain implementations, the clients <NUM> can be configured to download and install such a browser application from one of the servers <NUM>. The browser application can be configured to run on clients <NUM> that are mobile computing devices and/or non-mobile computing devices. For example, the clients <NUM> could be desktop computers, laptop computers, mobile computing devices (e.g., a smartphones, tablet computers, etc.), set top boxes (e.g., for use with a television (TV)), smart TVs, video game consoles, or any other devices having appropriate processor, memory, and data network communications capabilities.

In the implementations described herein, a tab (browser tab) of the browser application can be allocated to a non-browser application, where the allocated browser tab can be used to display web content within a user interface of the non-browser application. In such implementations, the allocated browser tab can be referred to as being embedded in the non-browser application, running on top of the non-browser application, being integrated in a user interface (UI) of the non-browser application, and so forth. In some implementations, an allocated browser tab may be used to display web content within a user-interface of a non-browser application, with the browser tab remaining under the control of the browser application. In other implementations, an allocated browser tab may be used to display web content within a user-interface of a non-browser application, with the allocated browser tab being under the control of the non-browser application. In still other implementations, an allocated browser tab may be used to display web content within a user-interface of a non-browser application, with the allocated browser tab being cooperatively under the control of both the non-browser application and the browser application.

In other implementations, the browser application can be used to preload (e.g., access, download and/or render) web content corresponding with a link (hyperlink) included in content of (displayed by) the non-browser application. Such approaches may allow for that web content to be displayed by an allocated browser tab within (on top of, embedded in, etc.) a UI of the non-browser application with little or no lag time, as compared to loading and rendering that web content in response to selection of an associated link in application (non-web-based) content displayed by the non-browser application. In certain instances, different versions and/or configurations of the browser application that include features disclosed herein are available for download from a server <NUM> and subsequent installation on a client <NUM>. The particulars of such downloading and/or installation can depend, at least, on whether the client <NUM> is a mobile computing device or non-mobile computing device. The browser application, once installed on a client <NUM>, can be configured to load web content (e.g., web pages) from any one or more of multiple servers <NUM> that are configured to host the web content. The servers <NUM> can be any device having an appropriate processor, memory, and communications capability for hosting data files configured to install the web browser and/or for hosting the web content.

The network <NUM> can include, for example, any one or more of a personal area network (PAN), a local area network (LAN), a campus area network (CAN), a metropolitan area network (MAN), a wide area network (WAN), a broadband network (BBN), a wireless LAN (WLAN) the Internet, etc. Further, the network <NUM> can include, but is not limited to, any one or more of the following network topologies, including a bus network, a star network, a ring network, a mesh network, a star-bus network, a tree or hierarchical network, and so forth.

In an implementation, the browser application, when executed on a client <NUM>, can be configured to receive a request (a signal, an indication, and so on) from the non-browser application to load web content in the browser application, with the browser application (and any associated browser tabs) being run in the background (e.g., as a background process), while the non-browser application runs (executes, etc.) in the foreground (e.g., as a foreground process). In some implementations, if the browser application is not already running in the background, the browser application can be initialized (or "warmed up") in the background prior to loading the web content in the background, such as in response to a request from the non-browser application to load web content. The web content to be preloaded can be identified by the non-browser application (e.g., by a link in the non-browser application) or identified by the browser application) in response to other data, such as a browsing history, a list of favorite web sites, a browsing cookie jar, etc..

<FIG> is a block diagram illustrating an example client <NUM> and a server <NUM> of the system of <FIG>, according to an implementation. As in <FIG>, the client <NUM> and the server <NUM> in <FIG> are connected over the network <NUM> (e.g., via respective network adaptors <NUM> and <NUM>). The network adaptors <NUM> and <NUM> can be configured to interface with the network <NUM> and to send and receive information, such as data, requests, responses, and commands to other devices on the network <NUM>. The network adaptors <NUM> and <NUM> can be, for example, cellular radios, Wi-Fi adaptors, Ethernet network interface cards, and so forth.

As shown in <FIG>, the client <NUM> includes a processor <NUM>, the network adaptor <NUM>, and a memory <NUM>. In the example of <FIG>, the memory <NUM> of the client <NUM> includes a browser application <NUM> and a non-browser application <NUM> and can further include a client copy of web content 224b. For instance, the web content copy 224b can be obtained (from the web content 224a in the server <NUM>) by the browser application <NUM>, rendered in a tab of the web browser <NUM> allocated to the non-browser application <NUM> and displayed (e.g., using an output device <NUM> (e.g., a display) of the client <NUM>) in a browser tab of the browser application <NUM> that is included in (displayed in, allocated to, etc.) a UI of the non-browser application <NUM>. As shown in <FIG>, the client <NUM> can also include an input device <NUM>, such as a keyboard, touchscreen, touchpad or mouse, to receive user input, such as link selections, text input, etc..

The processor <NUM> of the client <NUM> can be configured to execute instructions, such as instructions physically coded into the processor <NUM>, instructions received from software (e.g., the browser application <NUM> and/or the non-browser application) in memory <NUM>, or a combination of both, to preload content in the browser application <NUM> (e.g., for display in an allocated browser tab in a UI of the non-browser application <NUM>). For example, the processor <NUM> of the client <NUM> can execute instructions of the browser application <NUM> to receive (e.g., via an interface of the browser application <NUM>) a request from the non-browser application <NUM> to load or preload the web content copy 224b in the a browser tab (allocated to the non-browser application <NUM>) of the browser application <NUM>.

As illustrated in <FIG>, the web content copy 224b can be a copy of the web content 224a that is downloaded by the browser application <NUM>, over the network <NUM>, from the server <NUM> and stored in the memory <NUM> of the client <NUM> as the web content copy 224b. In some instances, the content copy 224b to be preloaded by the browser application <NUM> can already reside in the memory <NUM> of the client <NUM>. For example, the web content copy 224b could be a cached copy of the web content 224a that was previously obtained by the browser application <NUM> and stored in the memory <NUM> of the client <NUM>.

The request from the non-browser application <NUM> to the browser application <NUM> can be in response to selection of a link that is included in (associated with) application content that is displayed in a UI of the non-browser application. Such a request can be referred to as an "intent" request, a "direct intent" request, and so forth. In one instance, the intent request is a "direct intent" request, also referred to as "direct" request, and is triggered upon selection of a link included in application content that is displayed in a UI of the non-browser application. In other instances, the request from the non-browser application <NUM> to the browser application <NUM> can be a "preliminary" request, also referred to as "pre-intent" request, to preload the web content 224a (as web content copy 224b) in the browser application <NUM> (e.g., a tab of the browser application) in anticipation that a link associated with the web content 224a will be selected (e.g. by a user). Such a preliminary request can be referred to as a "pre-intent" request, a "pending intent" request, etc. In other words, such preliminary requests can be sent prior to selection of a corresponding link included in application content that is displayed in a UI of the non-browser application <NUM>.

The request (e.g., direct or preliminary) can be received by the browser application <NUM> from the non-browser application <NUM> via an API of the browser application <NUM>. In response to receiving the request, the browser application <NUM> can load, or preload the web content 224a (e.g., as the web content copy 224b), e.g., in a browser tab allocated to the non-browser application <NUM>. As described herein, the non-browser application <NUM>, when making the request to load or preload web content, can be running as a foreground process. The requested web content 224a can then be loaded and/or rendered by the browser application <NUM> (e.g., in a browser tab) in the background.

As described herein, when receiving the request from the non-browser application <NUM>, the browser application <NUM> can be running, or can be initialized as a background process, that is, an application process that is not visible to a user. The request (e.g., direct or preliminary), when provided to an API of the browser application <NUM>, may indicate that the web content 224a is to be downloaded from the server <NUM> by the browser application <NUM> over the network <NUM>. Once downloaded, the web content 224a can then be stored as the web content copy 224b in the memory <NUM> of the client <NUM> for loading or preloading by the browser application <NUM> (or can be directly loaded or preloaded into the browser application <NUM> from the network adaptor <NUM>). When the browser application <NUM> is not running in the background (e.g., as a background process), or is otherwise not in a state to download the content 224a, the browser application <NUM> can be initialized (re-initialized, started, warmed up, etc.), in the background, in response to such a request from the non-browser application <NUM> being received by the browser application <NUM>. Once initialized, the browser application <NUM> can load or preload web content 224a or web content copy 224b, e.g., in a browser tab that is allocated to (associated with) the non-browser application <NUM>.

The processor <NUM> of the client <NUM> can also be configured to load or preload the web content 224a or the web content copy 224b in a browser tab of the browser application <NUM> in response to the request (e.g., direct or preliminary) from the non-browser application <NUM>, and/or in response to a selection (e.g., by a user) of a link (to the web content 224a) that is included in (associated with) application content that is displayed by the non-browser application <NUM>. The browser application <NUM> can be configured to then render and display the web content 224a (or the web content copy 224b) using an allocated browser tab of the browser application included in (e.g., embedded in, running on top of, etc.) a UI of the non-browser application <NUM>.

In certain implementations, the browser application <NUM> can be configured to receive another (second) request from the non-browser application <NUM> indicating the (preloaded) web content 224a or web content copy 224b is not needed (e.g., a different link in application content of the non-browser application <NUM> was selected). In response to the second request, the browser application <NUM> can be configured to unload (discard) the preloaded web content from the browser application <NUM> (e.g. from a browser tab of the browser application <NUM>). For example, if the non-browser application <NUM> initially requests the browser application to preload the web content 224a (or the web content copy 224b) in the background, but it is later determined (e.g., by the non-browser application <NUM>) that the preloaded web content is not needed (e.g., due to selection of a different link than a predicted link), then the non-browser application <NUM> can inform the browser application <NUM> that the preloaded web content is not needed and the browser application <NUM> can unload or otherwise discard the preloaded web content (e.g., stored as web content copy 224b) from memory <NUM> of the client <NUM>.

The non-browser application <NUM> can either directly identify the web content 224a to be preloaded by the browser application <NUM>, or can provide information to the browser application <NUM> as part of its request, so that the browser application <NUM> can evaluate the information from the non-browser application <NUM> to determine the web content 224a to preload. For instance, the web content 224a to be preloaded in the browser application <NUM> (e.g., a browser tab of the browser application <NUM>) can be a web page or other appropriate web content. In such instances, when the non-browser application <NUM> is configured to directly identify the web content 224a to be loaded or preloaded by the browser application <NUM>, the request from the non-browser application <NUM> to preload content can include an address (e.g., a URL) of the web content 224a to be loaded or preloaded by the browser application <NUM> (e.g., in the background).

In other instances where the non-browser application <NUM> is configured to provide information to the browser application <NUM> as part of the request so that the browser application <NUM> can evaluate the information from the non-browser application <NUM> to determine the web content 224a to preload, the request from the non-browser application <NUM> to preload content can include a browsing history of the user, and/or other information to use to determine (e.g., predict) what web content 224a to preload. The browser application <NUM> can then identify the content 224a to preload in the browser application <NUM> (e.g., a browser tab) based on the browsing history and/or the other information.

In other instances where the non-browser application <NUM> is configured to provide information to the browser application <NUM> as part of the request so that the browser application <NUM> can evaluate the information from the non-browser application <NUM> to determine the web content 224a to preload, the browser application <NUM> may identify the content to preload in the browser application <NUM> based on a probability value that a link for the content to preload will be selected by the user in the non-browser application <NUM>. For example, if the non-browser application <NUM> indicates to the browser application <NUM> that a user of the non-browser application <NUM> is currently viewing application content about local restaurants, the browser application <NUM> can preload web content corresponding with links for one or more restaurants that are included in the application content being displayed in a UI of the non-browser application <NUM> (e.g., based on a determination that the restaurants corresponding with the preloaded links meet a threshold probability that they are most likely to be selected by a user in the non-browser application <NUM>). As such, the content to be preloaded in the browser application <NUM> is not limited to one item of content, but can be multiple items of content, such as multiple web pages.

In implementations where the non-browser application <NUM> is configured to provide information to the browser application <NUM> as part of the request so that the browser application <NUM> can evaluate the information from the non-browser application <NUM> to determine the web content 224a to preload, the request from the non-browser application <NUM> to preload content can include input (e.g., text or other input) that is entered by a user in the non-browser application <NUM> (e.g., using input device <NUM>). The browser application <NUM> can then identify the content 224a to preload in (a browser tab of) the browser application <NUM> based on the input currently entered by the user in the non-browser application.

For instance, continuing with the previous example, if the non-browser application <NUM> indicates to the browser application <NUM> that a user of the non-browser application <NUM> has entered "Thai" in a search input field of the non-browser application <NUM>, the browser application <NUM> may preload web content corresponding with one or more web pages for Thai restaurants (e.g., such as Thai restaurants corresponding with links included in application content being displayed by the non-browser application <NUM>).

<FIG> are diagrams illustrating integration of web content in a non-browser application running (executing, etc.) on a mobile computing device (mobile device) <NUM>, according to an implementation. The implementation shown in <FIG> is given by way of example and for purposes of illustration. In other implementations, other configurations can be used to integrate display (rendering) of web content in a non-browser application. In the discussion of <FIG>, some elements are shown schematically (e.g., in block diagram form), while others are shown graphically. The particular arrangement and details of a given implementation will depend, at least, on the specific non-browser application, browser application and web content being displayed (rendered). Also, for purposes of illustration, <FIG> will be described with further reference to <FIG> and <FIG>, as appropriate. For instance, the mobile device <NUM> can be used to implement a client device <NUM>, such as illustrated in <FIG> and <FIG>.

<FIG> illustrates a user interface (graphical user interface) <NUM> of a non-browser application (such as the non-browser application <NUM>) that is displayed on an output device (e.g., a display panel) of the mobile device <NUM>, such as the output device <NUM> of the client <NUM>. The user interface <NUM>, in this example, includes an icon <NUM>, a title <NUM>, a menu icon <NUM> and application content <NUM>. The mobile device <NUM> also includes a navigation button panel <NUM> that can be used to control various operations and functions of the mobile device <NUM>, such as navigation buttons on a smartphone. The user interface <NUM> can also be displayed using colors, fonts and/or other aesthetic elements corresponding with the associated non-browser application <NUM>. In this example implementation, such colors, fonts and/or other aesthetic elements can be indicated, by the non-browser application <NUM>, in an intent request (direct of preliminary) and used when displaying integrated web content in a browser tab allocated to the non-browser application <NUM>. Such an approach can provide a user with a "seamless" visual experience when viewing web content in a non-browser application, as opposed to current approaches that perform a context switch to the browser application <NUM>.

In the user interface <NUM> of <FIG>, the icon <NUM> can be an icon that corresponds with the non-browser application <NUM>. Likewise, the title <NUM> can be used to display a name (e.g., a stylized logo) indicating the particular non-browser application <NUM> being executed, with its user interface <NUM> being displayed on the mobile device <NUM>. The menu icon <NUM> can be used to open a menu (e.g., an application operations menu) for the non-browser application <NUM>. A menu associated with the menu icon <NUM> includes various menu items than can be selected by a user of the mobile device <NUM> to cause the non-browser application <NUM> to perform associated actions (operations, tasks and so forth) of the non-browser application <NUM>.

The application content <NUM> can be graphical content, or other visual content (e.g. video content, text content, etc.) that is displayed by the non-browser application <NUM>. In certain implementations, the application content <NUM> can be displayed in conjunction with audio content that is played by an audio system (not shown) of the mobile device <NUM>. As illustrated in <FIG>, the application content <NUM> can include links <NUM>, <NUM>, <NUM> and <NUM> (e.g., hyperlinks including respective URLs) that are associated with respective web content. While four links are shown in <FIG>, in other implementations fewer or additional links can be used.

The links <NUM>, <NUM>, <NUM> and <NUM> shown in <FIG> can each respectively correspond with a visual element of the application content <NUM>, such as an image, an icon, text, a video and so forth. As discussed herein, one or more of the links <NUM>, <NUM>, <NUM> and <NUM> can be provided to the browser application <NUM> (in a direct-intent and/or preliminary intent request). For purposes of clarity and illustration, the remaining discussion of <FIG> will be described in the context of a single link (link <NUM>) being included in an intent request (direct or preliminary). It will be appreciated that, in certain implementations, information for multiple links can be included in an intent request. In other implementations, separate intent requests can be sent for each link.

After receiving an intent request (direct or preliminary). the browser application <NUM> can then, in response to such an intent request, perform operations (e.g., background operations) to obtain associated web content 224a (e.g., which can be stored as web content copy 224b), and load and/or render the obtained web content in a browser tab that is (can be, or will be) allocated to the non-browser application <NUM>. As noted above, an intent request can include indications of colors, fonts and/or other aesthetic elements corresponding with the non-browser application <NUM>. The browser application <NUM> can render the web content 224b in accordance with those indications. Display of the web content in the allocated browser tab (within a user interface of the non-browser application <NUM>) can, accordingly, be rendered so that it is aesthetically consistent with display of the application content <NUM>.

In this example, in response to a user selecting the link <NUM> shown in <FIG>, the user interface of the non-browser application <NUM> displayed by the mobile device <NUM> can transition from displaying the application content <NUM>, as shown in <FIG>, to displaying the corresponding web content 224a (or web content copy 224b) in an allocated browser tab <NUM>, as shown in <FIG>. As described herein, the web content 224b can be obtained (as a copy of web content 224a) by the browser application <NUM> in response to an intent request and rendered in the allocated browser tab <NUM> in the background, prior to its display within the user interface of the non-browser application <NUM>, as shown in <FIG>. The transition from the display of <FIG> can be made in accordance with an animation that is defined by the non-browser application (e.g., in an intent request). For instance, the transition could be a slide-in transition, a fade-in/fade-out transition, a dissolve-out/dissolve-in transition, etc..

As shown in <FIG>, the allocated browser tab <NUM> can include a back button <NUM>, a security state icon <NUM>, a domain indicator <NUM>, an icon and/or button <NUM>, a menu icon <NUM>, rendered web content <NUM> (rendered from the web content 224b) and a browser assist layer <NUM> (which may or may not include visual elements that are displayed with the rendered web content <NUM>). In this example, selection of the back button <NUM> may cause the display (of the allocated browser tab <NUM>) on the mobile device <NUM> illustrated in <FIG> to transition back to the display (of the application content <NUM>) shown in <FIG>. The security state icon <NUM> can indicate whether the rendered web content <NUM> was obtained using a secure connection (e.g., through a secure socket layer (SSL)) or an unsecure connection. The domain indicator <NUM> can be used to indicate a domain (e.g., a web location or URL) from which the rendered web content <NUM> was obtained. In some implementations, the domain indicator <NUM> may be a display only (non-editable) indicator.

Also in the allocated browser tab <NUM>, the icon and/or button <NUM> can be an icon corresponding with the non-browser application <NUM>. The icon and/or button <NUM> causes, in response to selection of (e.g., clicking) of the icon and/or button <NUM>, an action (operation) of the non-browser application <NUM> (or the browser application) to be performed. The particular action associated with the icon and/or button <NUM> will depend on the specific implementation, and can be defined as part of a corresponding intent request. Further, selection of the menu icon <NUM> can result in a menu (e.g., different than the application menu associated with the menu icon <NUM>) to be displayed, such as the menu <NUM> shown in <FIG>, which is discussed in further detail below.

In the example shown in <FIG>, the browser assist layer <NUM> can provide the non-browser application <NUM> (e.g., when displaying the allocated browser tab <NUM>) access to features of the browser application <NUM>. Such features can include a browser cookie jar, a browsing history, a language translation service, a password vault (repository, etc.), and so forth. The particular features available in (via, from and so on) the browser assist layer <NUM> will depend, at least, on the particular browser application <NUM> that is used to render web content on the mobile device <NUM>.

As noted above, <FIG> illustrates a menu <NUM> that may displayed in response to selection of the menu icon <NUM> in <FIG>. As shown in <FIG>, the menu <NUM> includes one or more browser menu items <NUM>, and one or more application menu items <NUM>. In such an approach, the browser menu items <NUM> (and associated operations) can be defined by the browser application <NUM> and included in the allocated browser tab <NUM>, while the application menu items <NUM> (and associated operations) can be defined by the non-browser application <NUM> (e.g., in an intent request) and included in the menu <NUM> of the allocated browser tab <NUM> (e.g., by the browser application <NUM>). Selection of a browser menu item <NUM> or an application menu item <NUM> cause the mobile device <NUM> to carry out a respective associated operation. The particular operations associated with the browser menu items <NUM> and the application menu items <NUM> will depend on the particular implementation.

<FIG> is a flowchart illustrating a method <NUM> for integrating web content (e.g., display and/or rendering of web content) in a non-browser application, according to an implementation. In this example implementation, the method <NUM> can be implemented in the system <NUM> shown in <FIG> using the techniques and approaches described with respect to <FIG> and <FIG>. Accordingly, for purposes of illustration, the method <NUM> will be described with further reference to <FIG>, <FIG> and <FIG>. It will be appreciated, however, that in other implementations, the method <NUM> can be implemented in systems and devices having other arrangements.

At block <NUM>, the method <NUM> includes executing, on the mobile device <NUM>, the non-browser application <NUM>. At block <NUM>, the method <NUM> includes displaying, by the non-browser application <NUM> on a display (output device <NUM>) of the mobile device <NUM>, a link (the link <NUM>) to web content 224a. At block <NUM>, the method <NUM> includes receiving an indication (selection) that the link <NUM> has been selected. At block <NUM>, in response to the indication that the link <NUM> has been selected, the method <NUM> includes allocating the browser tab <NUM> of the browser application <NUM> to the non-browser application <NUM>. At block <NUM>, the method <NUM> includes displaying the allocated browser tab <NUM> within the user interface of the non-browser application <NUM>. Further, the method <NUM> can include, at block <NUM>, displaying, by (in, with, etc.) the allocated browser tab <NUM>, the web content 224a (or web content copy 224b) within the user interface of the non-browser application.

In the method <NUM>, the indication that the link has been selected at block <NUM> can include at least one customization parameter for the allocated browser tab. The at least one customization parameter can include, at least one of a menu item and corresponding action associated with the menu item; an icon; a button and corresponding action associated with the button; a color corresponding with the user interface; and an animation to be used for displaying the allocated browser tab within the user interface.

In this example, the non-browser application <NUM> and the allocated browser tab <NUM> are executed as separate processes by the mobile device <NUM> (e.g., where the allocated browser tab is executed as part of a process associated with the browser application <NUM>. Further in the method <NUM>, the allocated browser tab can include, one or more of, at least one menu item defined by the browser application; at least one menu item defined by the non-browser application; at least one button defined by the browser application; and at least one button defined by the non-browser application. Such menu items can operate using the approaches described herein.

<FIG> is a flowchart illustrating another method <NUM> for integrating web content (e.g., display of rendered web content) in a non-browser application, according to an implementation. In this example implementation, as with the method <NUM>, the method <NUM> can be implemented in the system <NUM> shown in <FIG> using the techniques and approaches described with respect to <FIG> and <FIG>. Accordingly, for purposes of illustration, the method <NUM> will also be described with further reference to <FIG>, <FIG> and <FIG>. It will be appreciated, however, that in other implementations, the method <NUM> can be implemented in systems and devices having other arrangements.

At block <NUM>, the method <NUM> includes executing, on the mobile device <NUM>, the non-browser application <NUM> and, at block <NUM>, displaying, by the non-browser application <NUM> on a display (e.g., the output device <NUM>) of the mobile device <NUM>, a link (e.g., the link <NUM>) to web content 224a. In response to the displaying the link <NUM> to the web content 224a, the method <NUM> can include, at block <NUM>, sending a pre-intent request to a browser application. The pre-intent request of block <NUM> can include a uniform resource locator (URL) corresponding with the link to the web content 224a. At block <NUM>, in response to the pre-intent request, the method <NUM> can include performing, by the browser application <NUM>, at least one (background) operation corresponding with displaying the web content 224a.

At block <NUM>, the method <NUM> includes receiving a signal indicating selection of the link <NUM> (e.g., by a user of the mobile device <NUM>). In response to receiving the signal at block <NUM>, the method <NUM> includes, at block <NUM>, allocating a tab (the browser tab <NUM>) of the browser application <NUM> to the non-browser application <NUM>. As described herein, the pre-intent request of block <NUM> can further include at least one customization parameter for the allocated browser tab <NUM>, such as the customization parameters described with respect to the method <NUM>.

At block <NUM>, the method <NUM> includes displaying, in accordance with the at least one customization parameter of block <NUM>, the allocated browser tab <NUM> within a user interface of the non-browser application <NUM>. Further, the method <NUM> can include, at block <NUM>, displaying, by the allocated browser tab <NUM>, the web content 224a (or web content copy 224b) within the user interface of the non-browser application, such as illustrated in <FIG>.

In the method <NUM>, the at least one operation corresponding with displaying the web content at block <NUM> can include one or more of launching the browser application; loading a native library of the browser application; performing a domain name system (DNS) lookup based on the URL; connecting to a server corresponding with the DNS lookup; downloading the web content from the server; and rendering the web content (e.g., in accordance with the at least one customization parameter of block <NUM>). In the method <NUM>, as with the method <NUM>, the non-browser application <NUM> and the allocated browser tab <NUM> are executed as separate processes by the mobile device <NUM>. In other instances, the non-browser application <NUM> and the allocated browser tab <NUM> can be executed as part of a same process on the mobile device <NUM>, where the allocated browser tab <NUM> is under control of the non-browser application <NUM>. This is a particularly resource efficient implementation. Further, performing the at least one operation corresponding with displaying the web content 224a (or the web content copy 224b), at block <NUM>, in response to the pre-intent request at block <NUM> can include performing the at least one operation corresponding with displaying the web content (such as those discussed above) in a background process of the browser application <NUM> on the mobile device <NUM>, while the non-browser application <NUM> is executed as a foreground process on the mobile device <NUM>.

Displaying the web content at block <NUM> can include displaying a URL (domain) associated with the web content 224a in the allocated browser tab <NUM>. Additionally, displaying the web content at block <NUM> can also include displaying a secure socket layer (SSL) state corresponding with the web content displayed in the allocated browser tab, such as with the security state icon <NUM>.

In the method <NUM>, the allocated browser tab <NUM> can have access to at least one resource of the browser application <NUM>, such as via the browser assist layer <NUM>. Such resources of the browser application <NUM> can include one or more of an electronic payment service; a language translation service; a browsing history; form autofill data; and a password vault, though other browser resources may also be accessible.

<FIG> is a flowchart illustrating another method <NUM> for integrating content in a non-browser application (e.g., displaying content not specifically created for the non-browser application), according to an implementation. In this example implementation, as with the methods <NUM> and <NUM>, the method <NUM> can be implemented in the system <NUM> shown in <FIG> using techniques and approaches similar to those described with respect to <FIG> and <FIG>. Accordingly, for purposes of illustration, the method <NUM> will also be described with further reference to <FIG>, <FIG> and <FIG>, as appropriate. It will be appreciated, however, that in other implementations, the method <NUM> can be implemented in systems and devices having other arrangements, and with content other than web content.

At block <NUM>, the method <NUM> can include receiving, from a non-browser application (e.g., the non-browser application <NUM>), a request for content of a first type. The content of the first type can be content that is not specifically created for display by the non-browser application. For instance, in one implementation, the first type of content can be web content 224a or web content (copy) 224b. In other implementations, the content of the first type can be content other than web content. At block <NUM>, the method <NUM> can include providing, to the non-browser application, a user interface element for a browser application (e.g., such as the browser application <NUM>), where the non-browser application displays content of a different, second type that is specifically configured (adapted, formatted, generated, etc.) for use in/by the non-browser application. The second type of content can include text, images, hyperlinks and so forth. In an implementation, the user interface element can be a browser tab. In other implementations, the user interface element could take other forms, such a browser window, a pop-up window, etc..

At block <NUM>, the method <NUM> can include modifying the user interface element for a user interface of the non-browser application to display, for the non-browser application, the content of the first type. The modifying, at block <NUM>, can include integrating the user interface element (e.g., a browser tab) into the user interface of the non-browser application, such as using the approaches described herein. For instance, modifying the user interface element can include applying at least one customization parameter to the user interface element, such as the customization parameters described herein.

<FIG> shows an example of a generic computer device <NUM> and a generic mobile computer device <NUM>, which may be used with the techniques described here. Computing device <NUM> is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers. Computing device <NUM> is intended to represent various forms of mobile devices, such as personal digital assistants, cellular telephones, smart phones, and other similar computing devices.

A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made without departing from the scope of the claimed invention.

Claim 1:
A computer-implemented method comprising steps executed by a computing device (<NUM>, <NUM>), which comprises a memory (<NUM>, <NUM>) storing a non-browser application (<NUM>) and a browser application (<NUM>), wherein the non-browser application and the browser application are separate applications with separate user interfaces, wherein the browser application is configured to retrieve web content from a web server and render the web content in a browser tab, and wherein the method comprises the following steps:
executing (<NUM>, <NUM>), on the computing device (<NUM>, <NUM>), the non-browser application (<NUM>);
displaying (<NUM>, <NUM>), by the non-browser application on a display of the computing device, application content including a link to the web content;
receiving (<NUM>, <NUM>) an indication that the link, displayed by the non-browser application, has been selected;
in response to the indication that the link has been selected, allocating (<NUM>, <NUM>) a browser tab of the browser application to the non-browser application, the allocated browser tab including:
a first selectable item associated with an action of the non-browser application, wherein a selection of the first selectable item causes the computing device to perform the action of the non-browser application, wherein the action of the non-browser application includes an operation or task of the non-browser application; and
a second selectable item associated with an action of the browser application, wherein a selection of the second selectable item causes the computing device to perform the action of the browser application, wherein the action of the non-browser application includes an operation or task of the browser application; and
displaying (<NUM>, <NUM>) the allocated browser tab with the web content within a user interface of the non-browser application, wherein the displaying of the allocated browser tab within the user interface of the non-browser application comprises displaying the allocated browser tab embedded in the non-browser application.