Installing a Universal Web Application

By enabling any web application to be installable through browser-provided installation controls and default manifest configurations, the limitations of legacy criteria are overcome, enhancing the availability and performance of installable web applications.

JP2025530242AActive Publication Date: 2025-09-11GOOGLE LLC
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2025514437
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-09-08
Filing Date
2023-09-06
Publication Date
2025-09-11
Estimated Expiration
2043-09-06

AI Technical Summary

Technical Problem

Many web applications do not meet the legacy criteria for installable web applications, limiting their installability and preventing users from easily accessing the benefits of installable web applications, such as reduced storage usage and faster load times.

Method used

Techniques that allow any web application to be made installable by providing installation controls and default manifest configurations, eliminating the need for legacy criteria, and enabling users to install web pages as installable web applications directly from the browser interface.

Benefits of technology

Dramatically increases the number of installable web applications available, reducing code redundancy, system resource consumption, and improving load times, while making it easier for developers to provide installable content.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025530242000001_ABST
    Figure 2025530242000001_ABST
Patent Text Reader

Abstract

Methods are disclosed for making installable web applications more widely available, helping users find and install web applications on their computing devices. Some methods help surface installation control for initial installation. Some methods provide for generating manifest files for websites that are not associated with an installable web application. Some methods provide default offline functionality for installable web applications.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] This application claims the benefit of U.S. Provisional Patent Application No. 63 / 374,974, filed September 8, 2022, the disclosure of which is incorporated herein by reference in its entirety. [Background technology]

[0002] Some applications offered via app stores are actually installable web applications rather than native applications. While native applications are installed entirely on the client device and may not depend on a browser to run, such applications may rely on a connection to a server for some content. Web applications are web pages with executable code. Some of the code may run on the server, and some code may run in the browser sandbox on the client device without installing any code on the underlying operating system. Web applications run within the browser sandbox, e.g., in the main browser window (also called a tabbed window). In other words, web applications apparently run within the browser. Installable web applications are hybrid: some code is installed on the underlying operating system on the client device, some code runs on the server, and they depend on a browser (e.g., the main browser window) to run, but the application does not appear to be running in the main browser window. Installable web applications can use local resources (camera, GPS, access files, etc.—all with user permission) and have some offline functionality, but some functionality occurs by running code on the server. Summary of the Invention

[0003] The present disclosure relates to making any web application installable, e.g., executable at least partially on a client device as an installable web application. In other words, disclosed embodiments may enable users to install any web page as an installable web application. Some embodiments enable users to more easily find and install progressive web applications. For example, one technique analyzes a domain's web pages to determine whether there are web pages (e.g., resources identified by URLs) that meet legacy criteria for installable web applications. If the domain contains web pages that support the legacy criteria, embodiments may provide installation controls in the browser interface, e.g., in an omnibox or at the bottom of the browser UI. Some embodiments may relax (modify) the legacy criteria for installing web applications, allowing more web applications to become installable web applications. Such techniques may eliminate the need for web applications to register a service worker by providing a default offline page. Some embodiments may eliminate the need for a manifest file by providing a default manifest configuration. Some embodiments may eliminate all legacy criteria and allow users to install any web application.

[0004] The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features will become apparent from the description and drawings. [Brief explanation of the drawings]

[0005] [Figure 1A] 1 illustrates an exemplary interface, according to some aspects. [Figure 1B] 1 illustrates an exemplary interface, according to some aspects. [Figure 1C] 1 illustrates an exemplary interface, according to some aspects. [Figure 2A] 1 illustrates an exemplary interface, according to some aspects. [Figure 2B] 1 illustrates an exemplary interface, according to some aspects. [Figure 3] 1 illustrates an example of a browser interface, according to an aspect. [Figure 4] 1 illustrates an exemplary browser overflow menu, according to some aspects. [Figure 5] 1 illustrates a system for providing installation of universal web applications, according to an aspect. [Figure 6] 1 illustrates an exemplary browser refresh interface, according to some aspects. [Figure 7] FIG. 1 is a flow diagram, according to an aspect. [Figure 8] FIG. 1 is a flow diagram, according to an aspect. DETAILED DESCRIPTION OF THE INVENTION

[0006] The disclosed embodiments relate to techniques for making any web application installable. Websites that support installable web applications must meet certain criteria. For example, they must be served over HTTPS, have a manifest file, and register a service worker with a "fetch" event handler (e.g., a service worker that responds to an HTTP 200 status code in a simulated offline environment). These criteria are referred to herein as legacy criteria. Many web applications do not meet these legacy criteria and are therefore not considered installable (e.g., not considered to support installable web applications). Furthermore, many entities (e.g., application developers, website operators) offer installable web applications in addition to native applications and / or web applications. Web applications and installable web applications from the same entity may be served from different subdomains. For example, a web application may be served at www.company.com, and similar content may also be served as an installable web application via app.company.com. Some developers with native applications and installable web applications may hide the existence of the installable web application from certain users, for example, by using the user's country code to determine whether the user can access the installable web application but not the native application. Because most installable web applications are implemented to appear like native apps to users, users cannot necessarily tell whether an app is a native app or an installable web application.

[0007] Installable web applications offer technical advantages over native applications and web applications. Installable web applications use less storage on the client device than native applications and require less download and installation time and bandwidth. Installable web applications may also load faster than web applications (because they cache text, stylesheets, images, etc.) and faster than native apps (because load time is related to the size of the app itself). Installable web applications therefore offer technical advantages by making the benefits of installable applications broadly available to any web application, thereby reducing code redundancy (e.g., reducing the need for separate native and web applications), reducing system resource usage / consumption during installation, and improving load times.

[0008] Embodiments provide a technical advantage through techniques that enable any web-based content to be installable on a user device, thereby erasing the boundary between web applications and installable web applications. Embodiments may allow users to define access, for example, to choose between bookmarking a particular web page for later use (also known as saving a favorite or saving an internet shortcut) or installing the web page as an application (e.g., an installable web application) on the client device. Thus, embodiments eliminate legacy standards that define web-based content (web applications) as installable and provide installability for web pages that do not currently meet the legacy standards.

[0009] Embodiments dramatically increase the number of installed web applications available to users, thereby enabling more user devices to benefit from installed web applications. In some embodiments, users can easily find web applications that meet existing legacy criteria. In some embodiments, the criteria for installing a web application are reduced or eliminated. Accordingly, embodiments also make it easier for entities (e.g., application developers, website operators, etc.) to provide their content using installed web applications, including by adding an installation prompt on content pages. For example, in some embodiments, entities do not need to do anything to make a web page installable, as the disclosed technology can make any web page installable. This, in turn, encourages users to take advantage of the optimization and technical advantages offered by installed web applications.

[0010] FIG. 1A illustrates an exemplary browser user interface (UI) 100 according to embodiments described herein. Generally, UI 100 is generated and rendered by a browser. A browser can be a browser-based operating system (such as operating system 510 in FIG. 5 ) or an application executed by an operating system (e.g., browser application 518 in FIG. 5 ). Thus, as used herein, a browser refers to either a browser-based operating system or a browser application. UI 100 includes a tab strip 108 associated with a browser application. In this example, UI 100 includes one browser tab 105, although any number of browser tabs or tab groups can be opened by a browser. Each browser tab, e.g., browser tab 105, can be associated with content 110 (e.g., web content, a web page, an online resource, a web application, etc.) presented in a corresponding browser content window 120 of the browser. Browser tab 105 can include an icon 103 and a title 104. Icon 103 and title 104 are selected by a developer of a website associated with content 110. Icon 103 may also be referred to as a favicon or Apple Touch icon. As used herein, content 110 refers to any content rendered by a browser, which may be generated or served at least in part by or from a server. Content 110 generated or served at least in part by a server is referred to as a web page served by a website. A website is content associated with a domain. A domain is a resource identifier that identifies a particular server (or group of servers) that serves content for a website. A domain is a primary resource identifier. A domain may contain one or more web applications identified using subdomains. A subdomain may be identified as preceding the domain in the resource identifier.For example, blog.company.com is a subdomain of the domain company.com, as is app.company.com. Similarly, www.company.com is a subdomain of the domain company.com. This domain is an inferred subdomain. For example, if a subdomain is not provided, a subdomain of www may be inferred. All subdomains of a domain are considered part of the website associated with that domain. Thus, a resource identifier for a content item includes the domain and subdomain and may include additional parameters (e.g., directory, location, parameter variables, etc.) that identify a web application (web page) provided by the website. Examples of resource identifiers are URLs (Universal Resource Locators) or URIs (Universal Resource Identifiers). Additionally, as used herein, content refers to the web page (resource) currently rendered in browser content window 120, any other data (metadata) used to render the document (e.g., markup and scripts that are not actually displayed), and the model (e.g., document object model, access model, etc.) generated to render content 110.

[0011] The UI 100 also includes an address bar area 107. The address of a web page displayed in the browser content window 120 can be shown in the address bar area 107 (e.g., address input area 115). The address input area 115 allows a user to, for example, provide a resource identifier for a content item. The address input area 115 can also be used to search, for example, to enter search criteria to be provided to a search engine. An address input area 115 with this additional functionality may be referred to as an omnibox. Other controls, icons, and / or other items may be included in the address bar area 107. For example, the address bar area 107 may include a user icon 125. The user icon 125 may provide an indication of a user account associated with the browser session. This user icon 125 may be an image, text, or some other representation representing the user account. Other controls / icons typically included in the address bar area 107 include a forward control, a back control, a refresh control, a home control, an advanced features control, and / or a saved resources control 130, as well as an overflow menu control 122. The address bar area 107 can be controlled by and / or associated with a browser (e.g., operating system 510 or browser application 518). The content of the address bar area 107 can be controlled by the browser, while the content of the browser content window 120 is controlled by a website developer, although some user interface elements of the address bar area 107 may be affected by manifest file options for web applications installed using, for example, a window control overlay. The saved resource control 130 is used to add resource identifiers (e.g., URLs) for the content 110 to a saved resource storage area, such as local saved resource storage 526 in FIG. 5. Saved resources may be referred to as bookmarks, favorites, internet shortcuts, etc.FIG. 1A shows an exemplary UI 100 for a display having a typical form factor, such as a laptop, desktop, tablet, or the like.

[0012] In one aspect, embodiments provide installation controls (e.g., as shown in Figures 1B, 1C, 2A, 2B, 3, and 4) when a user visits a domain that supports installable web applications and the user does not already have the installable web application installed. A domain supports installable web applications when it contains resources (web applications) that meet legacy criteria. The legacy criteria include providing the web application over a secure communication protocol (e.g., over HTTPS or a similar secure communication protocol), the web application having a manifest with required fields, and the web application registering a service worker with a fetch event handler. Required fields in the manifest may include a display name for the web application, two sizes of icons for the web application, a start location (e.g., a start URL), a display mode (which may include, e.g., one of fullscreen, standalone, or minimal-ui), and a nonexistent (e.g., fake) preferred associated application field. The fields in the manifest file may be defined by w3c.org at https: / / www.w3.org / TR / appmanifest / . In some embodiments, the browser may determine whether the current domain includes a web page that meets this legacy criteria. If so, it provides an installation control (e.g., 150, 150', 250, 250', 350, 450) to give the user an opportunity to install the web application represented by the web page as an application on the client device. In other words, the user may be viewing a web page that is different from the web page that meets the legacy criteria and therefore may not be aware that the domain offers an installable web application. In some embodiments, the browser may also provide an installation control (e.g., 150, 150', 250, 250', 350, 450) in response to determining that the web application meets the engagement threshold.For example, a browser may not provide installation controls unless a minimum number of users choose to install a web application associated with a domain.

[0013] FIG. 1B illustrates an example of the browser user interface of FIG. 1A in which an install control 150 has been added to the address entry area 115, according to an embodiment. In the example of FIG. 1B, the UI 100 is only partially shown, e.g., representing the top right portion of the UI 100 of FIG. 1A. In the example of FIG. 1B, the install control 150 replaces the saved resources control 130 of the content 110. In another example, the install control 150 can be added adjacent (proximate) to the saved resources control 130. In the example of FIG. 1B, the browser, for example, using universal installation engine 522 of FIG. 5, analyzes the domain of the currently displayed web page to determine whether the domain is associated with a web application (e.g., any resource associated with the domain, such as a web page associated with a subdomain or path) that meets the installable application criteria, and determines that the user has not yet installed the web application. If a website includes such a web application (e.g., app.domain.com, www.domain.com / mobile, m.domain.com, www.domain.com / m / app, www.domain.com / m / app, etc.) and the user has not installed a web application associated with this domain, the browser may surface installation control 150. In some embodiments, the installable application criteria may include legacy installation criteria. In some embodiments, the installable application criteria may include the presence of a manifest file. In some embodiments, the installable application criteria may lack an installation method associated with the installable web page. That is, no installation method provided by the domain exists. In some embodiments, the installable application criteria may include a web page that is the root of the original page that does not have an installation method or manifest file.The root of the original page represents a web page with a resource locator (URL) that has a top-level domain and a second-level domain but no subdirectories. For example, example.resource.com is the root of the original page, but example.resource.com / location is not the root of the original page because it includes subdirectories. In other words, any web page that represents the root of the original page, even one that lacks an association with a manifest file, can satisfy the installation criteria. Association with a manifest file means that the manifest file is available via the website that provides the root origin page. In some embodiments, the installable application criteria may include heuristics (e.g., meeting an installation threshold where a minimum number of users have installed the application). In some embodiments, the installable application criteria may include a mechanism for making the website available offline (e.g., a service worker with a fetch event handler). The installation control 150 is configured to install the web application associated with the installable web page when selected by a user. Installing the web application includes downloading the manifest file to the client device. In some embodiments, installing a web application includes creating an operating system package file (e.g., an APK) on behalf of the website (domain). The operating system package file helps the website distribute and install the application on the client device. As described herein, in some embodiments, the browser may generate or add to a manifest file as part of the installation process.

[0014] FIG. 1C illustrates an example of the browser user interface of FIG. 1A in which an install control 150′ has been added to the address bar area 107, according to an embodiment. In the example of FIG. 1C, the UI 100 is only partially shown, e.g., representing the upper left portion of the UI 100 of FIG. 1A. In the example of FIG. 1C, the browser has analyzed the website associated with the content 110, as described in FIG. 1B, and determined that the domain supports installable application criteria (including heuristics, in some embodiments), but the user has not installed the application. FIG. 1B illustrates an alternative arrangement of the install control 150.

[0015] FIG. 2A illustrates an exemplary browser user interface (UI) 200 with installation controls 250 for a client device with limited display area, according to an embodiment. The device is an example of a mobile device, such as a smartphone, smart wearable, or tablet, which has less display area than devices with typical display areas, such as traditional computer monitors and televisions. However, the UI 200 includes elements similar to those described in FIG. 1A , including an address bar area 207 similar to the address bar area 107, an address input area 215 similar to the address input area 115, and an overflow menu control 222 similar to the overflow menu control 122. Because of the limited display area, the UI 200 may include an indication 205 of the number of open tabs, which, when selected, allows a user to select a different browser tab. Content 210 may be similar to content 110, representing content associated with a resource identifier displayed in the address input area 215, for example.

[0016] In the example of FIG. 2A , the browser analyzes the website, e.g., using universal installation engine 522 of FIG. 5 , to determine that the website is associated with a domain-scoped resource (e.g., an installable web application) that meets the application installation criteria, as described above, and that the user has not yet installed the application. Thus, the browser provides installation control 250, which, similar to installation control 150, is configured to install the associated web application when selected. Thus, even if the user has not viewed content 210 associated with the installable web application, the browser may still provide installation control 250. Installation control 250 may include icon 203. Icon 203 may be an icon listed in a manifest file for the website. If the manifest file is not found, icon 203 may be icon 103 of FIG. 1A , e.g., an icon that the website's developer associated with the website.

[0017] FIG. 2B shows a partial view of UI 200 with an install control 250′. In the example of FIG. 2B, the user has provided an instruction to save content 210 as a saved resource (e.g., saved content 210 as a bookmark or favorite). This may be done using a saved resource control similar to saved resource control 130, a menu option, or the like. In the example of FIG. 2B, the browser may provide a confirmation window 245 indicating that content 210 has been saved, for example, to local saved resource storage 526. If (e.g., in response to) the browser determines that a website associated with the saved resource provides an installable web application that meets the installable application criteria and the user has not yet installed the web application, the browser may present install control 250′ as part of the confirmation window 245. The install control 250′ may initially be unchecked and may be configured to install the web application when the user checks / selects install control 250′. In some implementations, the browser may be configured to install the web application when the user closes the confirmation window 245 after checking / selecting install control 250′. Although shown as a checkbox, any selectable control can be used as the installation control 250'.

[0018] FIG. 3 shows a confirmation window 300 with an install control 350 for a saved resource. The confirmation window 300 may be provided by a browser after a user bookmarks / favorites a resource identifier. The confirmation window 300 may be a pop-up window that overlays content on a browser tab. The confirmation window 300 may include controls 305 for changing the title or folder (location) of the saved resource. The confirmation window 300 may include a shortcut control 310 and an install control 350. The shortcut control 310 may add a shortcut to a web page on the home screen, which may be customized by a manifest file downloaded from the website, but does not install additional code on the client device. In some embodiments, the install control 350 may be displayed for any web page stored in the saved resource. In some embodiments, the install control 350 may be provided if the website associated with the saved resource has a web application that meets the installable application criteria, as discussed herein.

[0019] In some implementations, shortcut control 310 and install control 350 are settings in a saved resource (e.g., bookmark) property page / manager UI (not shown), allowing the user to change these selections in the future. The bookmark manager UI is displayed in response to the user selecting edit (e.g., control 305) after saving the resource identifier. In some implementations, the browser may verify whether the user has removed the shortcut from their home screen / desktop. Thus, before displaying shortcut control 310, the browser may verify whether the icon has been removed from the home screen / desktop and, if so, uncheck shortcut control 310. Similarly, before displaying install control 350, the browser may verify whether the app is installed and, if not, uncheck install control 350. This will ensure that the user can re-add the app to the home screen or reinstall it by selecting the appropriate control again.

[0020] FIG. 4 illustrates an exemplary overflow menu 400 according to disclosed embodiments. The overflow menu 400 may be generated and displayed by a browser in response to a user selecting the overflow menu control 222 of FIG. 2A or the overflow menu control 122 of FIG. 1A. The overflow menu 400 includes, among other menu options, an install control 450. The install control 450, similar to the install control 350, the install control 250, the install control 250′, the install control 150, and the install control 150′, may be configured to install a web application associated with a website currently displayed by the browser in the browser content area. As disclosed herein, the install control 450, in some embodiments, may be selectable (active) only if the currently displayed content (e.g., content 110 of FIG. 1A, content 210 of FIG. 2A) is associated with a web page that meets installable application criteria and the user has not yet installed the web application.

[0021] In addition to surfacing installation control, embodiments may provide various techniques for enabling installation of all web applications and / or enhancing the functionality of installed web applications. In some embodiments, where a web page provides a manifest file but lacks offline functionality, the browser may provide default offline functionality. The default offline functionality is also referred to as a default offline page. Offline pages, including the default offline page, are provided by the browser when the client device lacks connectivity to a domain (e.g., lacks connectivity to the Internet). Although a browser has a default offline page (browser's default offline page), this page is generic. In other words, the browser's default offline page is the same regardless of which website (domain) the user is attempting to access. For installed web applications, the manifest can provide a sophisticated offline experience by providing offline elements for the installed web application. However, the manifest fields are not required. Thus, an installed web application may have a manifest file, but the manifest file may lack values, i.e., missing values, for some of the offline page elements in the manifest file that support offline functionality.

[0022] In disclosed embodiments, the browser may be configured to provide defaults for these missing offline page elements, making the user experience more consistent. The disclosed embodiments may also provide defaults for web applications that lack a manifest, such as generating a manifest using the following defaults: For example, if the manifest file does not contain the name of the installed web application, the browser may use the page title as the name. Page titles are easily identifiable because they are identified using markup languages ​​(e.g., HTML). As another example, if the manifest file lacks the name of the installed web application, the browser may prompt the user for a name. In some such embodiments, the browser may suggest the page title as the name but provide the user with an opportunity to change the name. As another example, if the manifest file does not contain a background color, the browser may select a default color. In some embodiments, the default color may be white. In some embodiments, the default color may be black. In some embodiments, the default color may be determined by the dark mode of the client device (e.g., some client devices use a white background during the day / when ambient light meets a minimum threshold and switch to a black background at night / when ambient light does not meet a minimum threshold). In some implementations, the background color may match a background color determined by a color scheme the user has selected for the browser. In some implementations, the browser may set the background color to a background color value set in the body of a stylesheet for the web page. In some implementations, the browser may set the background color to a "theme color" meta tag included in the web page. As another example, if the manifest lacks an offline string (i.e., a message indicating that the device is offline), the browser may provide a default offline string.

[0023] As another example, if there is no icon in the manifest file, the browser may select an icon, such as icon 103, associated with the website. Icon 103 is a file containing one or more small icons used by a particular website or web page, typically displayed in a tab along with the website's title. Thus, the developer specifically associates the icon with the website. In some implementations, when an app is installed and the web application lacks an offline experience supported by a service worker with a fetch event handler (in response to determining that), the browser provides a default offline page. In some implementations, a new additional field may be added to the manifest file to indicate that the browser should not use the default offline mode. Thus, for example, the manifest file may include a default_offline_page flag (Boolean value) that is set to false. If this default offline flag is present in the manifest file and set to false, the browser may not provide a default offline page. This new field in the manifest file allows developers to control the use of a default offline page for web applications.

[0024] In some embodiments, the default offline functionality may be enhanced by additional information in the manifest file. Thus, if a developer does not provide full offline functionality, the developer may choose to provide one or more of the following elements: In some embodiments, the manifest may include an offline purpose attribute for an icon in the manifest file. The offline purpose attribute for an icon (e.g., purpose=offline) may cause the browser to prefer an icon for a centered offline image. For example, a developer may want to display a slightly different icon than the icon used on the home screen when the app is offline. For example, the icon with the offline purpose attribute may be a version of the main icon with a different appearance (grayed out, black and white, more transparent, etc.). In some embodiments, the manifest may include the default offline flag described above, which controls whether the browser provides a default offline page. If this flag indicates that the developer does not want the browser to use a default offline page, the browser may not provide a default offline page and instead provide the browser's default offline page / message.

[0025] In some embodiments, if a website does not have a manifest file, the browser may generate a manifest file for the website to allow the user to install the website. The browser may use the page title as the application name in the manifest file and / or may require the user to specify the name of the application. The browser may use the current resource identifier, e.g., the current URL, as the starting resource identifier (e.g., start_url) in the manifest file. In some embodiments, query parameters may be included in the starting resource identifier field of the manifest. In some embodiments, the fragment is excluded from the starting resource identifier. In some embodiments, the root of the current origin is used as the application scope. The root of the current origin is the subdomain, second-level domain, and top-level domain of the current resource identifier.

[0026] FIG. 5 illustrates a system 500 for providing universal installation, according to an embodiment. The system 500 includes a client computing system 502. The client computing system 502 may also be referred to as a client computing device or client device. The client computing system 502 is a device having an operating system 510. In some examples, the client computing system 502 includes a personal computer, a mobile phone, a tablet, a netbook, a laptop, a smart appliance (e.g., a smart TV), or a wearable. The client computing system 502 may be any computing device with input device(s) 530, such as a mouse, trackpad, touchscreen, keyboard, virtual keyboard, camera, etc. The client computing system 502 may also include output device(s) 524, such as a display (monitor, touchscreen, etc.) that allows a user to view and select displayed content. The client computing system 502 may include one or more processors, such as a CPU / GPU 532, formed on a substrate configured to execute one or more machine-executable instructions, or portions of software, firmware, or a combination thereof. Processors, such as the CPU / GPU 532, may be semiconductor-based. That is, a processor may include semiconductor material capable of performing digital logic. The client computing system 502 may include one or more memory devices 504. The memory device 504 may include a main memory that stores information in a format that can be read and / or executed by the CPU / GPU 532. The memory device 504 may store applications or modules (e.g., operating system 510, applications 512, browser application 518, etc.) that perform certain operations when executed by the CPU / GPU 532.

[0027] The operating system 510 is system software that manages computer hardware and software resources and provides common services to computing programs. In some examples, the operating system 510 is operable to run on a personal computer such as a laptop, netbook, or desktop computer. In some examples, the operating system 510 is operable to run on a mobile computer such as a smartphone or tablet. The operating system 510 may include multiple modules configured to provide common services and manage resources of the client computing system 502. The client computing system 502 may include one or more input devices 530 that enable a user to select content, select controls, etc. Non-exclusive examples of input devices 530 include a keyboard, a mouse, a touch-sensitive display, a trackpad, a camera, a trackball, etc. The client computing system 502 may include one or more output devices 524 that enable a user to view web pages and / or receive audio or other visual output.

[0028] The client computing system 502 may include applications 512, which represent specially programmed software configured to perform different functions. One of the applications may be a browser 518. The browser application 518 may be configured to display web pages, run web applications, etc. The browser application 518 may include additional functionality in the form of extensions. In some embodiments, the browser application 518 may also be the operating system 510 of the client computing system 502, such as the CHROME OS. The browser application 518 is an example of a browser that generates the UI 100 of FIG. 1A or the UI 200 of FIG. 2A. The operating system 510 may also be an example of a browser that generates the UI 100 of FIG. 1A. The browser application 518 may include a local saved resource storage 526. The local saved resource storage 526 may be a data store in which saved resources (bookmarks, favorites, internet shortcuts, etc.) are stored. In some embodiments, a user may choose to synchronize saved resources with a user profile. In such an embodiment, the user may have a user account 560 on the server computing system 550, and periodically, the local saved resource storage 526 may be sent to the server computing system 550 so that the synchronized saved resource storage 566 can be updated with the user's local saved resource storage 526. However, because what is saved on the home screen and the installation status of a particular resource are device dependent, these values ​​may not be included in the synchronized information. The user has control over the synchronization process.

[0029] In other words, users may be provided with controls that allow them to make choices regarding both whether and when saved resources, including any attributes / metadata associated with the saved resources, are saved to the local saved resource storage 526, and whether, when, and how much of the information stored in the local saved resource storage 526 is synchronized with the user's profile, e.g., shared with the server computing system 550. Additionally, certain data may be processed in one or more ways before being stored or used so that personally identifiable information is removed. For example, a user's identifying information may be processed so that personally identifiable information about the user cannot be determined, or if location information is obtained, the user's geographic location may be generalized (such as to the city, zip code, or state level) so that the user's specific location cannot be determined. Thus, users may control what information is collected about them, how that information is used, and what information is provided to them.

[0030] The browser application 518 may include a universal installation engine 522. The universal installation engine 522 may provide default offline page functionality, default manifest functionality, and / or surfacing of installation controls, as described herein. For example, the universal installation engine 522 may analyze resources of a website displayed by the browser application 518 to determine whether the website meets installable application criteria. In some embodiments, the installable application criteria may be legacy criteria. In some embodiments, the installable application criteria may include the presence of a manifest file. That is, a website meets the installable application criteria if it is associated with a manifest file. In some embodiments, the installable application criteria may lack an installation method associated with the installable web page. For example, a website that provides an installation method (e.g., a selectable control that, in response to a selection, initiates installation of a web application for the website) may not meet the installable application criteria. In some embodiments, the installation criteria may include the web page being the root of the original page and not having a manifest file associated with the domain (e.g., there is no manifest file associated with the domain). For example, www.resource.com is the root of the original page and would satisfy the installable application criteria, but www.resource.com / location is not the root of the original page and would not satisfy the installable application criteria. In some implementations, the installable application criteria may include heuristics.For example, the heuristics may relate to attributes of the website and / or installable web applications on the website (e.g., determining that a minimum number of users have installed the application, determining a minimum satisfaction level (e.g., based on user reviews, the relationship between install and uninstall, the length of time between install and uninstall (e.g., the average length of time, etc.)). In some implementations, the installable application criteria may include the availability of a mechanism for making the website available offline. The installable application criteria may include one of the above (e.g., may be a single criterion). The installable application criteria may include any combination of two or more of the above criteria.

[0031] The universal installation engine 522 may surface an installation control if the installable application criteria are met. Installation control 150, installation control 150', installation control 250, installation control 250', installation control 350, and installation control 450 are examples of installation controls. In some embodiments, part of the analysis may determine whether the user has installed a web application for the website. In some embodiments, if already installed, the universal installation engine 522 may not surface an installation control. In some embodiments, if already installed, the universal installation engine 522 may deactivate the installation control.

[0032] The universal installation engine 522 may facilitate the installation of a web page as an installable web application. For example, if the universal installation engine 522 provides an installation control, the universal installation engine 522 may process the installation of the web application in response to selecting the control. As another example, the universal installation engine 522 may process the installation of the web application in response to a user selecting an installation method provided by the website. Regardless of which process invoked the instruction to install the web application, the universal installation engine 522 may determine whether the website is associated with a manifest file. If the website is not associated with a manifest file, the universal installation engine 522 may generate the manifest file. When generating the manifest file, the universal installation engine 522 may use the web page title as the application name for the manifest file. The universal installation engine 522 may use the current resource identifier, e.g., the current URL, as the start_url for the manifest file. In some embodiments, query parameters may be included in the start_url field of the manifest. In some embodiments, a fragment may be excluded from the start_url. In some embodiments, the root of the current origin is used as the application scope in the manifest file. In some embodiments, the universal install engine 522 may provide a background color in the manifest file. The universal install engine 522 may select a default color. In some embodiments, the default color may be white. In some embodiments, the default color may be black. In some embodiments, the default color may be determined by the dark mode of the client computing system 502. In some embodiments, the background color may match the background color determined by the color scheme the user has selected for the browser.In some implementations, the universal installation engine 522 can identify an icon in the manifest file. The icon can be an icon associated with the website, for example, an icon that a website developer has specifically associated with the website. Generating a manifest file for a website can turn any website into an installable web application.

[0033] When a manifest file is associated with a website, the universal installation engine 522 may determine whether the manifest file includes offline functionality. For example, if the manifest file does not include any of the offline page elements described above and the default_offline_page flag (i.e., default offline flag) is not set to false, the universal installation engine 522 may provide defaults for the offline page elements. The default offline functionality is defined by the offline page elements in the manifest file. These default offline page elements generate a default offline page. The universal installation engine 522 may be configured to provide defaults for any missing offline page elements. The offline page elements may include an application name, a background color, an offline string, and / or an icon. The manifest file for an installable web application, whether generated by the universal installation engine 522, modified by the universal installation engine 522, or unchanged by the universal installation engine 522, may be stored on the client computing system 502, for example, in the manifest file 528, as part of installing the web application.

[0034] If the universal installation engine 522 generates a manifest file for a website that did not have one, but a developer later adds one, the browser application 518 may process this event as an update to the installed application. For example, the browser application 518 may include an automatic update process that periodically pings the website associated with the installed web application to determine if the manifest file has changed. As another example, the user may instruct the browser application 518 to check for updates. To protect against spoofing, unintentional modification, and the like, the browser application 518 may provide a verification process for updating installable web applications. Thus, for example, the browser application 518 may provide a dialog showing the differences between the current manifest (e.g., the manifest generated by the universal installation engine 522) and the new manifest. This dialog may be a pop-up message or window that allows the user to confirm the update. The dialog may include the old icon and application name (e.g., from the generated manifest) and the new icon and application name (e.g., from a manifest file added by the developer). The dialog may include text informing the user that the application has changed. The dialog may include controls that allow the user to accept the changes, which will result in a new manifest being downloaded and saved on the client computing system 502, for example, in manifest file 528. The dialog may be displayed to the user. Figure 6 is an example of an update dialog 600 generated by browser application 518 in response to determining that the manifest file has changed. In the example of Figure 6, update dialog 600 includes an icon, application name, and entity (e.g., company, developer, etc.) associated with the installable web application.Additionally, update dialog 600 includes an accept changes control 605 and a reject changes control 610. In some embodiments, reject changes control 610 may cancel updates to the application. In some embodiments, reject changes control 610 may uninstall the installable web application.

[0035] The browser application 518 may also include or be associated with a local saved resource storage 526. The local saved resource storage 526 is a data store in which saved resources (bookmarks, favorites, shortcuts, etc.) are stored. Each entry in the local saved resource storage 526 represents a content item, e.g., a web page or document. The content items may be accessible from service(s) / website(s) 570 over the network 540. In some implementations, the content items may be stored locally, e.g., in the memory device 504. Each entry in the local saved resource storage 526 may have a content identifier. The content identifier uniquely identifies the content item. The content identifier may be a resource identifier such as a URI or URL. The content identifier may also be a unique identifier for a non-Internet domain. An entry may also include a title or description of the saved resource. An entry may include an added time or a created time. The added (created) time represents the time the saved resource was added to the local saved resource storage 526.

[0036] In some embodiments, the local saved resource storage 526 may be associated with a user profile. In other words, multiple users may access the client computing system 502 and use the browser application 518. In such a scenario, the local saved resource storage 526 may be associated with a user profile, so that each user of the browser application 518 may have a separate local saved resource storage 526. In some embodiments, a user may opt into saved resource synchronization. Saved resource synchronization may be initiated by the user at the client computing system 502. After initiating saved resource synchronization at the client computing system 502, the local saved resource storage 526 may be shared with the user's user account 560 at the server computing system 550.

[0037] In some examples, the client computing system 502 may communicate with a server computing system 550 over a network 540. The server computing system 550 may be one or more computing devices in the form of several different devices, such as, for example, a standard server, a group of such servers, or a rack server system. In some examples, the server computing system 550 may be a single system that shares components such as a processor and memory. The network 540 may include the Internet and / or another type of data network, such as a local area network (LAN), a wide area network (WAN), a cellular network, a satellite network, or another type of data network. The network 540 may also include any number of computing devices (e.g., computers, servers, routers, network switches, etc.) configured to receive and / or transmit data within the network 540. The network 540 may further include any number of wired and / or wireless connections.

[0038] The server computing system 550 may include one or more processors 552 formed on the substrate, an operating system (not shown), and one or more memory devices 554. The memory devices 554 may represent any type (or types) of memory (e.g., RAM, flash, cache, disk, tape, etc.). In some examples (not shown), the memory devices 554 may include external storage, e.g., memory that is physically remote from but accessible from the server computing system 550. The server computing system 550 may include one or more modules or engines that represent specially programmed software. For example, the server computing system 550 may include a system for managing and accessing user account(s) 560. The user account 560 may include data that a user has requested be synchronized across devices, such as the client computing system 502. The synchronized data may include session data 562. The session data 562 may enable a user to resume browsing activity after switching devices. The user account 560 may also include profile data 564. Profile data 564 may include, with the user's consent, information describing the user. Profile data 564 may also include data identifying the user (e.g., username and password). User account 560 may also include synchronized saved resource storage 566. Saved resource storage 566 may be a data store of the user's saved resources across devices. For example, as part of a synchronization activity, local saved resource storage 526 may be transmitted from client computing system 502 to server computing system 550 and stored in saved resource storage 566.

[0039] FIG. 7 is a flowchart illustrating a method involving example operations 700 for surfacing installation controls in a browser of a computing system that supports installation of universal web applications, according to an embodiment. Operation 700 may be performed by a system such as client computing system 502 of FIG. 5. In some embodiments, operation 700 may be performed by browser application 518 and / or universal installation engine 522 of client computing system 502. Operation 700 enables the system to proactively suggest installing web applications for websites a user is visiting that meet installable application criteria. In step 702, the system analyzes resources of the domain to determine whether the resources of the domain meet the installable application criteria. In step 704, the system determines whether the installable application criteria are met. In some embodiments, step 702 may include analyzing resources of the computing system to determine whether the computing system has already installed an installable web application for the website. If so, in some embodiments, this may cause the system to determine that the installable application criteria are not met. If the installable application criteria are met, in step 706, the system may provide installation controls to the website. An install control is any selectable control configured to initiate instructions to install a web application on a computing system in response to selection by a user.

[0040] FIG. 8 is a flowchart illustrating a method with example operations 800 for generating a default manifest file and serving offline pages in a browser on a computing system that supports installation of universal web applications, according to one embodiment. Operation 800 may be performed by a system such as client computing system 502 of FIG. 5. In some embodiments, operation 800 may be performed by browser application 518 and / or universal installation engine 522 of client computing system 502. Operation 800 enables the system to bring the benefits of installable web applications to any website, regardless of whether the website meets legacy standards or provides an installation process. In step 802, the system receives an instruction to install the web application. The instruction may be received in response to a user selection of an installation control. The installation control may be, for example, an installation control surfaced by the system, as described in FIG. 7. The installation control may be an installation control provided by the website the user is visiting. In step 804, the system determines whether the website is associated with a manifest file. The manifest file may be identified in the markup (HTML) code of the web page. For example, the location of the manifest file can be specified using a link tag (e.g., < <link rel="”manifest”href=”manifest.json” / ">) to identify sections of a web page. In other words, the system may determine whether a manifest file exists for the website. If the website is not associated with a manifest file, in operation 806, the system generates a default manifest file for the website. The system may generate the manifest file using information from the website, such as the page title, icon, and current resource locator, as described herein. In step 808, the system may add default offline page elements to the manifest file, as described herein. In step 810, the system may complete the installation of the web application by storing the newly generated manifest file on the computing system. The installation may include adding an icon identified in the manifest file to an application selector. The installation may include adding an icon identified in the manifest file to a home screen / desktop of the computing system. A user may open / launch the installable web application by, for example, selecting an icon from the application selector and / or the home screen / desktop.

[0041] If the website is associated with a manifest file, then in operation 812, the system may determine whether the manifest file requires default offline functionality. The manifest file may require default offline functionality when one or more offline page elements lack (do not include) a value in the manifest file. In some implementations, the manifest file may not require default offline functionality when the manifest file includes a default offline flag set (e.g., when the default_offline_page flag is FALSE in the manifest file). If the manifest does not require default offline functionality, then in step 810, the system may complete the installation of the web application. If the manifest requires default offline functionality, then in step 808, the system may add a default offline page element to the manifest file as described herein. In step 810, the system may complete the installation of the web application.

[0042] Various implementations of the systems and techniques described herein can be realized in digital electronic circuitry, integrated circuits, specially designed ASICs (application-specific integrated circuits), computer hardware, firmware, software, and / or combinations thereof. These various implementations can include implementation in one or more computer programs executable and / or readable on a programmable system including at least one programmable processor, which can be special purpose or general purpose, coupled to receive data and instructions from, and transmit data and instructions to, a storage system, at least one input device, and at least one output device.

[0043] These computer programs (also known as programs, software, software applications, or code) include machine instructions for a programmable processor and may be implemented in a high-level procedural programming language, an object-oriented programming language, and / or an assembly / machine language. As used herein, the terms "machine-readable medium" and "computer-readable medium" refer to any computer program product, apparatus, and / or device (e.g., magnetic disk, optical disk, memory, programmable logic circuit (PLD)) used to provide machine instructions and / or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term "machine-readable signal" refers to any signal used to provide machine instructions and / or data to a programmable processor. Additionally, the disclosed operations may be performed in an order different from that illustrated, or may be performed in a parallel or overlapping manner.

[0044] To provide for interaction with a user, the systems and techniques described herein can be implemented on a computer that has a display device (e.g., a monitor or touch-sensitive display) for displaying information to a user, and a keyboard and pointing device (e.g., a mouse, trackball, touchpad, stylus, or finger, etc.) by which the user can provide input to the computer. Similarly, other types of devices can be used to provide for interaction with a user. For example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback), and input from the user can be received in any form, including acoustic input, speech input, or tactile input.

[0045] The systems and techniques described herein can be implemented in a computing system that includes back-end components (e.g., a data server, etc.), or that includes middleware components (e.g., an application server), or that includes front-end components (e.g., a client computer having a graphical user interface or web browser through which a user can interact with implementations of the systems and techniques described herein), or that includes any combination of such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (LAN), a wide area network (WAN), and the Internet.

[0046] A computing system may include clients and servers. Clients and servers are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of tasks performed by computer programs running on the respective computers.

[0047] As used herein and in the appended claims, the singular forms "a," "an," and "the" do not exclude plural references unless the context clearly dictates otherwise. Furthermore, conjunctions such as "and," "or," and "and / or" are inclusive unless the context clearly dictates otherwise. For example, "A and / or B" includes A alone, B alone, and A and B. Furthermore, the connecting lines or connectors shown in the various figures presented are intended to represent exemplary functional relationships and / or physical or logical couplings between the various elements. Many alternative or additional functional relationships, physical connections, or logical connections may be present in a practical device. Furthermore, no article or component is essential to the practice of the embodiments disclosed herein unless an element is specifically described as "essential" or "critical."

[0048] Without limitation, terms such as approximately, substantially, generally, etc. are used herein to indicate that exact values ​​or ranges thereof are not required or need not be specified. As used herein, the above terms have meanings that are readily and immediately understandable to those skilled in the art.

[0049] Furthermore, the use of terms such as top, bottom, upper, bottom, side, end, front, rear, etc. herein are used with reference to the orientation currently being considered or illustrated. It is understood that when other orientations are considered, such terms must be modified accordingly. It is understood that the terms used herein are for the purpose of describing particular aspects and are not intended to be limiting. On the contrary, this patent covers all methods, apparatus, and articles of manufacture fairly falling within the scope of the claims of this patent.

[0050] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium storing instructions that, when executed by at least one processor of a computing device, cause the computing device to execute a browser application that performs operations including: determining whether a domain of a web page meets installable application criteria and includes an installation method provided by the domain; and, in response to determining that the domain includes a web page that meets the installable application criteria and does not include an installation method, providing an installation control configured to initiate installation of a web application corresponding to the web page displayed on the computing device.

[0051] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, wherein the installable application criteria include the absence of a manifest file associated with the domain, and the web page is the root of the original page.

[0052] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, wherein the operations further include receiving a selection of an installation control, generating a manifest file for the domain, and installing the web application on the computing device using the manifest file.

[0053] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, wherein generating the manifest file includes identifying a page title of the web page, identifying an icon associated with the web page, and adding the page title and the icon to the manifest file.

[0054] In some aspects, the technology described herein relates to a non-transitory computer-readable medium, wherein the installable application standard comprises a legacy standard.

[0055] In some aspects, the technology described herein relates to a non-transitory computer-readable medium, wherein the installable application criteria includes the presence of a manifest file associated with a domain.

[0056] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, wherein the installation control is provided as part of a confirmation window generated in response to receiving an instruction to save a resource locator of the web page in saved resource storage.

[0057] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, wherein installation controls are provided in an address bar area of ​​a browser application that displays a web page.

[0058] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium storing instructions that, when executed by at least one processor of a computing device, cause the computing device to execute a browser application that performs operations including receiving instructions to install a web application; determining whether the web application is associated with a manifest file; in response to determining that the web application is not associated with a manifest file, generating a default manifest file for the web application; and installing the web application on the computing device using the default manifest file.

[0059] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, wherein generating a default manifest file includes identifying a page title for the web application and using the page title as the application name in the default manifest file.

[0060] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, wherein generating a default manifest file includes identifying an icon for the web application and using the icon as the application icon in the default manifest file.

[0061] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, wherein generating a default manifest file includes identifying a current resource identifier for the web application and using the current resource identifier as a starting resource identifier in the default manifest file.

[0062] In some aspects, the technology described herein relates to a non-transitory computer-readable medium, wherein the current resource identifier represents a root of origin.

[0063] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, and the operations further include determining that the current resource identifier represents a root of origin; and providing installation control in response to determining that the current resource identifier is a root of origin and that the domain of the current resource identifier is not associated with a manifest file.

[0064] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, and the operations further include providing default values ​​for offline page elements in the default manifest file.

[0065] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium, the operations further including, after installing the web application, determining that the web application is associated with a manifest file associated with a domain of the web application; and providing an update dialog, the update dialog configured to: display an icon from the default manifest file and an icon from a manifest file associated with the domain; display an application name from the default manifest file and an application name from the manifest file associated with the domain; and providing a control to reject the manifest file associated with the domain.

[0066] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium storing instructions that, when executed by at least one processor of a computing device, cause the computing device to execute a browser application that performs operations including determining whether a manifest file associated with a domain does not include one or more offline page elements, and, in response to determining that the manifest file does not include the one or more offline page elements, providing default values ​​for the one or more offline page elements.

[0067] In some aspects, the techniques described herein relate to a method that includes determining whether a domain of a web page displayed on a computing device meets installable application criteria and includes an installation method provided by the domain, and providing an installation control configured to initiate installation of a web application corresponding to the web page displayed on the computing device in response to determining that the domain includes a web page that meets the installable application criteria and does not include an installation method.

[0068] In some aspects, the technology described herein relates to a method, wherein the installable application criteria include the absence of a manifest file associated with the domain, and the web page is the root of the original page.

[0069] In some aspects, the techniques described herein relate to a method, the method further including receiving a selection of an installation control, generating a manifest file for the domain, and installing the web application on a computing device using the manifest file.

[0070] In some aspects, the techniques described herein relate to a method, where generating a manifest file includes identifying a page title of a web page, identifying an icon associated with the web page, and adding the page title and icon to the manifest file.

[0071] In some aspects, the technology described herein relates to a method, wherein the installable application standard includes a legacy standard.

[0072] In some aspects, the technology described herein relates to a method, wherein the installable application criteria includes the presence of a manifest file associated with a domain.

[0073] In some aspects, the techniques described herein relate to a method, wherein the installation control is provided as part of a confirmation window generated in response to receiving an instruction to save a resource locator of the web page in saved resource storage.

[0074] In some aspects, the techniques described herein relate to a method, where installation controls are provided in an address bar area of ​​a browser application that displays a web page.

[0075] In some aspects, the techniques described herein relate to a method that includes receiving instructions to install a web application; determining whether the web application is associated with a manifest file; and, in response to determining that the web application is not associated with a manifest file, generating a default manifest file for the web application; and installing the web application on a computing device using the default manifest file.

[0076] In some aspects, the techniques described herein relate to a method, where generating a default manifest file includes identifying a page title for a web application and using the page title as the application name in the default manifest file.

[0077] In some aspects, the techniques described herein relate to a method, where generating a default manifest file includes identifying an icon for a web application and using the icon as the application icon in the default manifest file.

[0078] In some aspects, the techniques described herein relate to a method, where generating a default manifest file includes identifying a current resource identifier for the web application and using the current resource identifier as a starting resource identifier in the default manifest file.

[0079] In some aspects, the technology described herein relates to a method, wherein a current resource identifier represents a root of origin.

[0080] In some aspects, the techniques described herein relate to a method, the method further including determining that the current resource identifier represents a root of origin, and providing installation control in response to determining that the current resource identifier is the root of origin and that the domain of the current resource identifier is not associated with a manifest file.

[0081] In some aspects, the technology described herein relates to a method, the method further including providing default values ​​for offline page elements in a default manifest file.

[0082] In some aspects, the technologies described herein relate to a method, the method further including, after installing the web application, determining that the web application is associated with a manifest file associated with a domain of the web application; and providing an update dialog, the update dialog configured to: display an icon from a default manifest file and an icon from a manifest file associated with the domain; display an application name from the default manifest file and an application name from the manifest file associated with the domain; and providing a control to reject the manifest file associated with the domain.

[0083] In some aspects, the techniques described herein relate to a method that includes determining whether a manifest file associated with a domain does not include one or more offline page elements, and, in response to determining that the manifest file does not include the one or more offline page elements, providing default values ​​for the one or more offline page elements.

[0084] In some aspects, the techniques described herein relate to a method, the method further including receiving a selection of an installation control for the web application and installing the web application on a computing device using the manifest file.

[0085] In some aspects, the techniques described herein relate to a method, wherein determining that a manifest file for a domain does not include one or more offline page elements includes determining that the domain does not have a manifest file, and in response to determining that the domain does not have a manifest file, the operations further include generating a manifest file for the domain.

[0086] In some aspects, the techniques described herein relate to a method, wherein determining that a manifest file does not include one or more offline page elements in a manifest file for a domain includes determining that a web application that uses the manifest file is installed on a computing device, and that the web application lacks an offline experience supported by a service worker with a fetch event handler.

[0087] In some aspects, the techniques described herein relate to a method, in which determining that a manifest file does not include one or more offline page elements in a manifest file for a domain includes determining whether a default offline page flag in the manifest file has a false value, and providing a default value occurs in response to determining that the default offline page flag has a value that is not false.

[0088] In some aspects, the techniques described herein include at least one processor and a memory storing instructions that, when executed by the at least one processor, cause a computing device to execute a browser application that performs a method.

[0089] In some aspects, the techniques described herein relate to a non-transitory computer-readable medium storing instructions that, when executed by at least one processor, cause the receiving computing device to perform any of the methods disclosed herein.

[0090] In one aspect, a computing device may be configured with at least one processor and memory storing instructions that, when executed by the at least one processor, perform any of the methods disclosed herein.

Claims

1. determining whether a domain of a web page displayed on a computing device meets installable application criteria and includes an installation method provided by said domain; providing an installation control configured to initiate installation of a web application corresponding to the web page displayed on the computing device in response to determining that the domain includes a web page that meets the installable application criteria but does not include the installation method; A method comprising:

2. The method of claim 1 , wherein the installable application criteria include the absence of a manifest file associated with the domain, and the web page is the root of an original page.

3. receiving a selection of the installation control; generating a manifest file for the domain; Installing the web application on the computing device using the manifest file; The method of claim 2 further comprising:

4. generating the manifest file, identifying a page title of the web page; identifying an icon associated with the web page; adding the page title and the icon to the manifest file; The method of claim 3, comprising:

5. The method of claim 1 , wherein the installable application criteria include legacy criteria.

6. The method of claim 1 , wherein the installable application criteria includes the presence of a manifest file associated with the domain.

7. 7. The method of claim 1, wherein the installation control is provided as part of a confirmation window generated in response to receiving an instruction to save a resource locator of the web page to a saved resource storage.

8. The method of any one of claims 1 to 6, wherein the installation controls are provided in an address bar area of ​​a browser application displaying the web page.

9. receiving instructions to install a web application; determining whether the web application is associated with a manifest file; In response to determining that the web application is not associated with a manifest file, generating a default manifest file for the web application; Installing the web application on a computing device using the default manifest file; A method comprising:

10. 10. The method of claim 9, wherein generating the default manifest file includes identifying a page title for the web application and using the page title as an application name in the default manifest file.

11. 11. The method of claim 9 or claim 10, wherein generating the default manifest file includes identifying an icon for the web application and using the icon as an application icon in the default manifest file.

12. 12. The method of claim 9, wherein generating the default manifest file includes identifying a current resource identifier for the web application and using the current resource identifier as a starting resource identifier in the default manifest file.

13. The method of claim 12 , wherein the current resource identifier represents a root of origin.

14. determining that the current resource identifier represents an origin route; providing installation control in response to determining that the current resource identifier is a root of origin and that the domain of the current resource identifier is not associated with a manifest file; and 14. The method of claim 13, further comprising:

15. The method of any one of claims 9 to 14, further comprising providing default values ​​for offline page elements in the default manifest file.

16. After installing the web application, determining that the web application is associated with a manifest file associated with the web application's domain; and providing an update dialog, the update dialog comprising: displaying an icon from the default manifest file and an icon from the manifest file associated with the domain; displaying an application name from the default manifest file and an application name from the manifest file associated with the domain; providing controls for rejecting the manifest file associated with the domain; The method according to any one of claims 9 to 15, configured to perform the following:

17. determining whether a manifest file associated with the domain does not include one or more offline page elements; In response to determining that the manifest file does not include one or more offline page elements, providing default values ​​for the one or more offline page elements; A method comprising:

18. receiving a selection of a web application installation control; Installing the web application on a computing device using the manifest file; 20. The method of claim 17, further comprising:

19. Determining that the manifest file does not include one or more offline page elements in a manifest file for the domain includes: determining that the domain does not have a manifest file; 20. The method of claim 18, wherein, in response to determining that the domain does not have a manifest file, the actions further include generating the manifest file for the domain.

20. Determining that the manifest file does not include one or more offline page elements in a manifest file for the domain includes: a web application that uses the manifest file is installed on a computing device; The web application lacks an offline experience supported by a service worker with a fetch event handler.

20. The method of claim 17, comprising determining:

21. Determining that the manifest file does not include one or more offline page elements in a manifest file for the domain includes: determining whether a default offline page flag in the manifest file has a false value; 21. The method of claim 20, wherein providing the default value occurs in response to determining that the default offline page flag has a value that is not false.

22. 1. A system computing device, comprising: at least one processor; and a memory storing instructions that, when executed by the at least one processor, cause the computing device to execute a browser application that performs the method of any one of claims 1 to 21.

23. 22. A non-transitory computer-readable storage medium storing instructions that, when executed by at least one processor of a computing device, cause the computing device to execute a browser application that performs the method of any one of claims 1 to 21.

Citation Information

Patent Citations

  • Pre-instantiation of native applications in the background

    JP2018534670A

  • Information processing apparatus and information processing program

    JP2021081763A

  • Generating Search Results Containing State Links to Applications

    US20140250106A1

  • Electronic device and method for creating shortcut to web page in electronic device

    US20180203941A1

  • In-application store user interface

    WO2022011668A1