Installing Universal Web Applications
By relaxing legacy criteria and providing default settings, any web application can be made installable, expanding the range of available installable web applications and improving user convenience and developer content provision.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- GOOGLE LLC
- Filing Date
- 2023-09-06
- Publication Date
- 2026-07-22
AI Technical Summary
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, faster loading times, and optimized resource consumption.
A technique that relaxes or eliminates legacy criteria for installing web applications by providing default offline pages and manifest settings, allowing any web application to be made installable through browser interfaces with installation controls, and generating manifest files when necessary.
Enables a broader range of web applications to be installed as installable applications, enhancing user convenience and reducing redundancy by making any web page installable, thus increasing the number of available installable web applications and encouraging developers to provide content using installed web applications.
Smart Images

Figure 0007893976000001 
Figure 0007893976000002 
Figure 0007893976000003
Abstract
Description
Technical Field
[0001] This application claims the benefit of U.S. Provisional Patent Application No. 63 / 374,974, filed on September 8, 2022. The entire disclosure of which is hereby incorporated by reference in its entirety.
Background Art
[0002] Some applications provided via an app store are not native applications but are actually installable web applications. Native applications are fully installed on a client device and may not depend on a browser to run, but such applications may depend on a connection to a server for some content. A web application is a web page with executable code. Some of the code can be executed on a server, and some code can be executed in a browser sandbox without installing the code on the underlying operating system of the client device. A web application is executed within a browser sandbox, for example, in a main browser window (also called a tabbed window). In other words, a web application is clearly running within a browser. An installable web application is hybrid, with some code installed on the underlying operating system of the client device, some code executed on a server, and depends on a browser (e.g., a main browser window) to run, but the application does not clearly appear to be running in the main browser window. An installable web application can use local resources (camera, GPS, access files, etc. - all with user permission) and has some offline capabilities, but some functions are generated by executing code on a server.
Summary of the Invention
[0003] This disclosure relates to making any web application installable and, for example, at least partially executable on a client device as an installable web application. In other words, the disclosed embodiments may enable a user 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 the web pages of a domain to determine whether there are web pages (e.g., resources identified by URLs) that meet the legacy criteria for installable web applications. If the domain contains web pages that support the legacy criteria, the embodiment may provide installation controls in the browser interface, for example, in an omnibox or at the bottom of the browser UI. Some embodiments may relax (modify) the legacy criteria for installing web applications, enabling more web applications to become installable web applications. Such techniques may eliminate the need for a web application to register service workers by providing a default offline page. Some embodiments may eliminate the need for a manifest file by providing a default manifest setting. Some embodiments may eliminate all legacy criteria and enable users to install any web application.
[0004] Details of one or more embodiments are described in the accompanying drawings and the description below. Further features will become apparent from the description and drawings. [Brief explanation of the drawing]
[0005] [Figure 1A] Several exemplary interfaces are shown. [Figure 1B] Several exemplary interfaces are shown. [Figure 1C] Several exemplary interfaces are shown. [Figure 2A] Several exemplary interfaces are shown. [Figure 2B] Several exemplary interfaces are shown. [Figure 3] An example of a browser interface in a certain form is shown. [Figure 4] Several examples of browser overflow menus are shown. [Figure 5] This describes a system for providing the installation of a universal web application in a certain manner. [Figure 6] Several exemplary browser refresh interfaces are shown. [Figure 7] This is a flowchart based on a certain configuration. [Figure 8] This is a flowchart based on a certain configuration. [Modes for carrying out the invention]
[0006] The disclosed embodiments relate to a technique 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) provide 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 both native and installable web applications may hide the existence of an installable web application from certain users, for example, by using the user's country code to determine whether they can access the installable web application rather than the native application. Since most installable web applications are implemented to appear as 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 and web applications. Installable web applications use less storage on the client device than native applications, and require less time and bandwidth for download and installation. Installable web applications can also load faster than web applications (due to caching text, stylesheets, images, etc.) and faster than native apps (because load time is related to the size of the app itself). Therefore, installable web applications offer technical advantages by making the benefits of installable applications widely available to any web application, thereby reducing code redundancy (e.g., reducing the need for separate native and web applications), reducing the use / consumption of system resources during installation, and shortening load times.
[0008] The embodiment provides technical advantages through a technology that makes any web-based content installable on a user's device, thereby blurring the boundaries between web applications and installable web applications. The embodiment may allow users to define access, for example, by choosing to bookmark a particular webpage for later use (also known as saving favorites or saving shortcuts to the internet) or by installing the webpage as an application on the client device (e.g., an installable web application). Thus, the embodiment eliminates the legacy standard that defines web-based content (web applications) as installable and provides installability to webpages that do not currently meet the legacy standard.
[0009] The embodiments dramatically increase the number of installed web applications available to users, and as a result, enable more user devices to benefit from installed web applications. In some embodiments, users can easily find web applications that meet existing legacy standards. In some embodiments, the criteria for installing web applications are reduced or eliminated. Thus, the embodiments also make it easier for entities (e.g., application developers, website operators, etc.) to provide their content using installed web applications, including adding installation prompts on content pages. For example, in some embodiments, the disclosed technology can make any web page installable, so entities do nothing to make a web page installable. This then encourages users to take advantage of the optimizations and technical benefits provided by installed web applications.
[0010] Figure 1A shows an exemplary browser user interface (UI) 100 according to an embodiment described herein. Generally, the UI 100 is generated and rendered by the browser. The browser may be a browser-based operating system (e.g., operating system 510 in Figure 5) or an application run by the operating system (e.g., browser application 518 in Figure 5). Thus, as used herein, browser refers to either a browser-based operating system or a browser application. The UI 100 includes a tab strip 108 associated with the browser application. In this example, the UI 100 includes one browser tab 105, but the browser may open any number of browser tabs or tab groups. Each browser tab, for example, browser tab 105, may be associated with content 110 (e.g., web content, web pages, online resources, web applications, etc.) presented in the browser's corresponding browser content window 120. The browser tab 105 may include an icon 103 and a title 104. The icon 103 and title 104 are selected by the developer of the website associated with the content 110. Icon 103 may also be called 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 partially by or from a server. Content 110 generated or served at least partially by a server is called 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 provides content to 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 a domain in a resource identifier.For example, blog.company.com is a subdomain of the domain company.com, just like app.company.com. Similarly, www.company.com is a subdomain of the domain company.com. This domain is an inferred subdomain. For example, if no subdomain is given, the subdomain www may be inferred. All subdomains of a domain are considered part of the website associated with that domain. Therefore, the resource identifier of a content item may include the domain and subdomain and may include additional parameters (e.g., directory, location, parameter variables, etc.) that identify the web application (web page) provided by the website. Examples of resource identifiers are URLs (Universal Resource Locators) or URIs (Universal Resource Identifiers). In addition, as used herein, content refers to the web page (resource) currently being rendered in the 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 models generated to render the content 110 (e.g., document object model, access model, etc.).
[0011] The UI 100 also includes an address bar area 107. The address of the web page displayed in the browser content window 120 may be shown in the address bar area 107 (for example, an address input area 115). The address input area 115 allows the user to provide, for example, a resource identifier for a content item. The address input area 115 can also be used to enter search criteria provided to a search engine for searching. This address input area 115 with additional functionality may be called an omnibox. Other controls, icons, and / or other elements 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 of the user account. Other controls / icons typically included in the address bar area 107 include a forward control, back control, refresh control, home control, extensions control, and / or 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., the operating system 510 or browser application 518). While the content of the address bar area 107 is controlled by the browser, the content of the browser content window 120 is controlled by the website developer; however, some user interface elements of the address bar area 107 may be affected by manifest file options for web applications installed using, for example, window control overlays. The saved resource control 130 is used to add the resource identifier (e.g., URL) of the content 110 to the saved resource storage area, for example, the local saved resource storage 526 in Figure 5. Saved resources may be called bookmarks, favorites, internet shortcuts, etc.Figure 1A shows an exemplary UI 100 for a display with a standard form factor, such as a laptop, desktop, or tablet display.
[0012] In one embodiment, the embodiment provides installation control (e.g., as shown in Figures 1B, 1C, 2A, 2B, 3, and 4) when a user visits a domain that supports an installable web application and the user has not yet installed the installable web application. A domain supports installable web applications when it contains resources (web applications) that satisfy legacy standards. Legacy standards include providing the web application over a secure communication protocol (e.g., HTTPS or a similar secure communication protocol), the web application having a manifest with the required fields, and the web application registering a service worker with a fetch event handler. Required fields in the manifest may include the display name of the web application, icons for the web application in two sizes, a starting location (e.g., a starting URL), a display mode (e.g., one of fullscreen, standalone, or minimal-ui), and a non-existent (e.g., false) preferred associated application field. The fields in the manifest file can be defined by w3c org at https: / / www.w3.org / TR / appmanifest / . In some embodiments, the browser may determine whether the current domain contains a webpage that meets this legacy standard. If it does, it provides install controls (e.g., 150, 150', 250, 250', 350, 450) giving the user the opportunity to install the web application represented on the webpage as an application on the client device. In other words, the user may not be aware that the domain offers installable web applications because they are viewing a webpage that does not meet the legacy standard. In some embodiments, the browser may also provide install controls (e.g., 150, 150', 250, 250', 350, 450) in response to determining that the web application meets an engagement threshold.For example, a browser may not provide installation control unless a minimum number of users choose to install a web application associated with a domain.
[0013] Figure 1B shows an example of the browser user interface of Figure 1A in which an installation control 150 is added to the address input area 115 in one embodiment. In the example of Figure 1B, the UI 100 is shown only partially, for example, representing the upper right portion of the UI 100 in Figure 1A. In the example of Figure 1B, the installation control 150 is replaced by the saved resource control 130 of the content 110. In another example, the installation control 150 can be added adjacent to (nearby) the saved resource control 130. In the example of Figure 1B, the browser analyzes the domain of the currently displayed web page, for example using the universal installation engine 522 of Figure 5, to determine whether the domain is associated with a web application that meets the installable application criteria (e.g., any resource associated with the domain, such as a web page associated with a subdomain or path), and determines that the user has not yet installed the web application. If a website includes such web applications (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 the web application associated with this domain, the browser may add (surface) installation control 150. In some embodiments, the installable application criterion may include legacy installation criteria. In some embodiments, the installable application criterion may include the presence of a manifest file. In some embodiments, the installable application criterion may be the lack of an installation method associated with an installable webpage; that is, there is no installation method provided by the domain. In some embodiments, the installable application criterion may include the webpage that is the root of the original page and does not have an installation method or manifest file.The root of the original page represents a webpage 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 contains subdirectories. In other words, any webpage representing the root of the original page, even one that lacks 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 install 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 webpage when selected by the user. Installing the web application includes downloading the manifest file to the client device. In some embodiments, the installation of a web application involves creating an operating system package file (e.g., an APK) on behalf of the website (domain). The operating system package file helps the website deliver 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] Figure 1C shows an example of the browser user interface of Figure 1A in which the installation control 150' is added to the address bar area 107 in one embodiment. In the example of Figure 1C, the UI 100 is shown only in part, for example, representing the upper left portion of the UI 100 in Figure 1A. In the example of Figure 1C, the browser analyzes the website associated with the content 110, as shown in Figure 1B, to determine that the domain supports the installable application criteria (including heuristics in some embodiments), but the user has not installed the application. Figure 1B shows an alternative placement of the installation control 150.
[0015] Figure 2A shows an exemplary browser user interface (UI) 200 with installation controls 250 for a client device with a limited display area, in one embodiment. The device is an example of a mobile device such as a smartphone, smart wearable, or tablet, which has a smaller display area than devices with a normal display area, such as conventional computer monitors and televisions. However, the UI 200 includes elements similar to those described in Figure 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 indicator 205 for the number of open tabs, which, when selected, allows the user to select different browser tabs. Content 210 may be similar to content 110, for example, representing content associated with a resource identifier displayed in the address input area 215.
[0016] In the example in Figure 2A, the browser analyzes the website using, for example, the universal installation engine 522 in Figure 5, and determines that the website is associated with resources within a domain scope that meet the application installation criteria (e.g., installable web applications), as described above, and that the user has not yet installed the application. Therefore, the browser provides an installation control 250, which, like the installation control 150, is configured to install the associated web application when selected. Thus, the browser may still provide the installation control 250 even if the user has not viewed the content 210 associated with the installable web application. The installation control 250 may include an icon 203. The icon 203 may be an icon listed in the manifest file for the website. If the manifest file is not found, the icon 203 may be icon 103 in Figure 1A, for example, an icon associated with the website by the website developer.
[0017] Figure 2B shows a partial diagram of UI 200 with installation control 250'. In the example in Figure 2B, the user provides a command to save content 210 as a saved resource (e.g., content 210 saved as a bookmark or favorite). This can be done using a saved resource control, menu option, etc., similar to the saved resource control 130. In the example in Figure 2B, the browser may provide a confirmation window 245 indicating that content 210 is saved, for example, in local saved resource storage 526. If the website associated with the saved resource provides an installable web application that meets the installable application criteria, and the browser determines (e.g., in response to the determination) that the user has not yet installed the web application, the browser may present installation control 250' as part of the confirmation window 245. Installation control 250' may initially be unchecked and may be configured to install the web application when the user checks / selects installation control 250'. In some embodiments, the browser may be configured to install the web application when the user closes the confirmation window 245 after checking / selecting installation control 250'. Although shown as a checkbox, any selectable control can be used as the installed control 250'.
[0018] Figure 3 shows a confirmation window 300 with installation controls 350 for a saved resource. The confirmation window 300 may be provided by the browser after the user has bookmarked / favorited the resource identifier. The confirmation window 300 may be a pop-up window that overlays content on the 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 shortcut controls 310 and installation controls 350. Shortcut controls 310 may add shortcuts to web pages on the home screen, which may be customized by a manifest file downloaded from the website but do not install any additional code on the client device. In some embodiments, the installation controls 350 may be displayed for any web page saved in the saved resource. In some embodiments, the installation controls 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 embodiments, the shortcut control 310 and the install control 350 are settings of a saved resource (e.g., bookmark) property page / manager UI (not shown), whereby the user can change these selections in the future. The bookmark manager UI is displayed in response to the user selecting an edit (e.g., control 305) after saving the resource identifier. In some embodiments, the browser may verify whether the user has deleted the shortcut from their home screen / desktop. Thus, before displaying the shortcut control 310, the browser may verify whether the icon has been deleted from the home screen / desktop and, if so, uncheck the shortcut control 310. Similarly, before displaying the install control 350, the browser may verify whether the app is installed and, if not, uncheck the install control 350. This ensures that the user will be able to re-add to the home screen or reinstall the app by reselecting the appropriate control as needed.
[0020] Figure 4 shows an exemplary overflow menu 400 according to the disclosed embodiment. The overflow menu 400 may be generated and displayed by the browser in response to the user selecting the overflow menu control 222 in Figure 2A or the overflow menu control 122 in Figure 1A. The overflow menu 400 includes, among other menu options, an install control 450. The install control 450, like the install control 350, install control 250, install control 250', install control 150, and install control 150', may be configured by the browser in the browser content area to install a web application associated with the website currently displayed. As disclosed herein, in some embodiments, the install control 450 may be selectable (active) only if the currently displayed content (e.g., content 110 in Figure 1A, content 210 in Figure 2A) is associated with a web page that meets the installable application criteria and the user has not yet installed a web application.
[0021] In addition to surfacing install control, embodiments may provide various techniques for making all web applications installable and / or improving the functionality of installed web applications. In some embodiments where a web page provides a manifest file but lacks offline capabilities, the browser may provide default offline capabilities. The default offline capabilities are also referred to as the default offline page. An offline page that includes the default offline page is provided by the browser when the client device lacks a connection to the domain (e.g., lacks an internet connection). The browser has a default offline page (the browser's default offline page), but 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. In the case of an installed web application, the manifest can provide a refined offline experience by providing offline elements to 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 for some of the offline page elements of the manifest file that support offline capabilities, i.e., the values may be missing.
[0022] In the disclosed embodiments, the browser may be configured to provide defaults for these missing offline page elements to make the user experience more consistent. The disclosed embodiments may also provide defaults for web applications that lack a manifest, for example, by generating a manifest using the following defaults: For example, if the manifest file does not have the name of the installed web application, the browser may use the page title as the name. The page title is easily identifiable as it is identified using a markup language (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 give the user the opportunity to change it. As yet another example, if the manifest file does not have 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 embodiments, the background color may match the background color determined by the color scheme selected by the user for the browser. In some embodiments, the browser may set the background color to the background color value set in the body of the stylesheet for the web page. In some embodiments, the browser may set the background color to the “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 the manifest file does not contain an icon, the browser may select an icon, such as icon 103, which is associated with the website. Icon 103 is a file containing one or more small icons used by a particular website or web page, and is usually displayed in a tab along with the website's title. Thus, developers specifically associate icons with websites. In some embodiments, when the app is installed and the web application lacks an offline experience assisted by a service worker with a fetch event handler (in response to a decision), the browser provides a default offline page. In some embodiments, 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 contain a default_offline_page flag (a 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 show the default offline page. This new field in the manifest file allows developers to control the use of the default offline page for their web application.
[0024] In some embodiments, default offline functionality can be enhanced by additional information in the manifest file. Therefore, if a developer does not provide full offline functionality, they may choose to provide one or more of the following elements: In some embodiments, the manifest may include an offline purpose attribute for the icon in the manifest file. The offline purpose attribute of an icon (e.g., purpose=offline) may cause the browser to prioritize a centrally positioned icon for offline images. For example, a developer might want to display a slightly different icon when the app is offline than the one used on the home screen. For example, an icon with the offline purpose attribute might 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 mentioned 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, fragments are 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] Figure 5 shows a system 500 for providing a universal installation in one embodiment. The system 500 includes a client computing system 502. The client computing system 502 may also be called 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 home appliance (e.g., a smart TV), or a wearable. The client computing system 502 may be any computing device equipped with input devices 530 such as a mouse, trackpad, touchscreen, keyboard, virtual keyboard, or camera. The client computing system 502 may include output devices 524, such as a display (monitor, touchscreen, etc.) that allows the user to view and select displayed content. The client computing system 502 may include one or more processors, e.g., a CPU / GPU 532, formed on a board configured to execute one or more machine-executable instructions, or a portion of software, firmware, or a combination thereof. Processors such as the CPU / GPU 532 may be semiconductor-based. In other words, the processor may include semiconductor materials capable of performing digital logic. The client computing system 502 may include one or more memory devices 504. The memory device 504 may include 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, application 512, browser application 518, etc.) that perform specific 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 can operate to run on personal computers such as laptops, netbooks, or desktop computers. In some examples, the operating system 510 can operate to run on mobile computers such as smartphones or tablets. The operating system 510 may include several modules configured to provide common services and manage the resources of the client computing system 502. The client computing system 502 may include one or more input devices 530 that allow the user to select content, select controls, etc. Non-exclusive examples of input devices 530 include keyboards, mice, touch-sensitive displays, trackpads, cameras, trackballs, etc. The client computing system 502 may include one or more output devices 524 that allow the user to view web pages and / or receive audio or other visual output.
[0028] The client computing system 502 may include applications 512 representing specially programmed software configured to perform different functions. One of these 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, for example, Chrome OS. The browser application 518 is an example of a browser that generates UI 100 in Figure 1A or UI 200 in Figure 2A. The operating system 510 may also be an example of a browser that generates UI 100 in Figure 1A. The browser application 518 may include local saved resource storage 526. The local saved resource storage 526 may be a data store where saved resources (bookmarks, favorites, shortcuts to the internet, etc.) are stored. In some embodiments, the 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 the local saved resource storage 526 may be periodically sent to the server computing system 550, so that the synchronized saved resource storage 566 can be updated in the user's local saved resource storage 526. However, since items saved on the home screen and the installation status of certain resources are device-dependent, these values may not be included in the synchronized information. The user can control the synchronization process.
[0029] In other words, the user may be provided with controls that allow them to make choices regarding both whether a stored resource, including any attributes / metadata associated with the stored resource, is stored in the local stored resource storage 526 and when it is stored, and whether the information stored in the local stored resource storage 526 is synchronized with the user's profile, when and to what extent it is synchronized, and whether it is shared with, for example, the server computing system 550. In addition, certain data may be processed in one or more ways before being stored or used so that personally identifiable information is removed. For example, user identification information may be processed so that it is not possible to determine personally identifiable information about the user, or if location information is obtained, the user's geographical location may be generalized (city, zip code, or state level, etc.) so that the user's specific location cannot be determined. Thus, the user may be able to 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 can provide default offline page functionality and / or default manifest functionality and / or surface installation control, as described herein. For example, the universal installation engine 522 may analyze the resources of a website displayed by the browser application 518 to determine whether the website meets the 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 be the lack of an installation method associated with an installable webpage. For example, a website that provides an installation method (e.g., selectable control that initiates the installation of a web application for a website in response to a selection) may not meet the installable application criteria. In some embodiments, the installation criteria may include the webpage being the root of the original page and not having a manifest file associated with the domain (e.g., no manifest file associated with the domain exists). For example, www.resource.com is the root of the original page and would likely meet the installable application criteria, while www.resource.com / location is not the root of the original page and would likely not meet the installable application criteria. In some embodiments, the installable application criteria may include heuristics.For example, heuristics may relate to attributes of a website and / or web applications that can be installed on a website (e.g., determining the minimum number of users installing the application, determining the minimum level of satisfaction (e.g., the relationship between installation and uninstallation based on user reviews, the length of time between installation and uninstallation (e.g., the average length of time)). In some embodiments, the installable application criterion may include the availability of a mechanism for making the website available offline. The installable application criterion may include one of the above (e.g., a single criterion). The installable application criterion may include any combination of two or more of the above criteria.
[0031] The universal installation engine 522 may provide (surface) installation controls if the installable application criteria are met. Installation controls 150, 150', 250, 250', 350, and 450 are examples of installation controls. In some embodiments, part of the analysis may determine whether the user has installed a web application for a website. In some embodiments, if it is already installed, the universal installation engine 522 may not provide (surface) installation controls. In some embodiments, if it is already installed, the universal installation engine 522 may deactivate the installation controls.
[0032] The universal installation engine 522 can facilitate the installation of a web page as an installable web application. For example, if the universal installation engine 522 provides installation controls, it can handle the installation of the web application in response to the control selection. As another example, the universal installation engine 522 can handle the installation of a web application in response to the user's selection of an installation method provided by the website. Regardless of which process invoked the command to install the web application, the universal installation engine 522 can determine whether or not the website is associated with a manifest file. If the website is not associated with a manifest file, the universal installation engine 522 can generate a manifest file. When generating a manifest file, the universal installation engine 522 may use the web page title as the application name in the manifest file. The universal installation engine 522 may use the current resource identifier, e.g., the current URL, as the start_url in the manifest file. In some embodiments, query parameters may be included in the start_url field of the manifest. In some embodiments, fragments may be excluded from start_url. In some embodiments, the current origin root is used as the application scope in the manifest file. In some embodiments, the universal installation engine 522 may provide a background color in the manifest file. The universal installation 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 selected by the user for the browser.In some embodiments, the universal installation engine 522 may identify icons in the manifest file. These icons may be associated with a website, for example, icons specifically associated with a website by the website developer. 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 contains offline functionality. For example, if the manifest file does not contain any of the offline page elements described above and the default_offline_page flag (i.e., the default offline flag) is not set to false, the universal installation engine 522 may provide defaults for the offline page elements. Default offline functionality is defined by the offline page elements in the manifest file. These default offline page elements generate the default offline page. The universal installation engine 522 may be configured to provide defaults for any missing offline page elements. Offline page elements may include the application name, background color, offline text, and / or icon. The manifest file for an installable web application may be stored in the client computing system 502, for example, as part of installing the web application, in manifest file 528, regardless of whether it was generated by the universal installation engine 522, modified by the universal installation engine 522, or not modified by the universal installation engine 522.
[0034] If the universal installation engine 522 generates a manifest file for a website that did not have one, but the developer later adds a manifest file, the browser application 518 may treat this event as an update to the installed application. For example, the browser application 518 may include an automated update process that periodically pings the websites associated with the installed web application to determine if the manifest file has been changed. As another example, the user may instruct the browser application 518 to check for updates. To protect against spoofing, unintended modifications, etc., the browser application 518 may provide a verification process for updating the installable web application. For example, the browser application 518 may provide a dialog box showing the differences between the current manifest (e.g., the manifest generated by the universal installation engine 522) and the new manifest. This dialog box may be a pop-up message or window, allowing the user to confirm the update. The dialog box may include the old icon and application name (e.g., obtained from the generated manifest) and the new icon and application name (e.g., obtained from the manifest file added by the developer). The dialog may contain text informing the user that the application has been modified. The dialog may also contain controls that allow the user to accept the changes, which in turn result in the download of a new manifest and its storage on the client computing system 502, for example, in the manifest file 528. The dialog may be displayed to the user. Figure 6 shows an example of an update dialog 600 generated by the browser application 518 in response to the determination that the manifest file has been modified. In the example in Figure 6, the update dialog 600 includes an icon associated with the installable web application, the application name, and entities (e.g., company, developer, etc.).In addition, the update dialog 600 includes a change acceptance control 605 and a change rejection control 610. In some embodiments, the change rejection control 610 may cancel the update to the application. In some embodiments, the change rejection control 610 may uninstall the installable web application.
[0035] The browser application 518 may also include, or be associated with, a local stored resource storage 526. The local stored resource storage 526 is a data store where stored resources (bookmarks, favorites, shortcuts, etc.) are stored. Each entry in the local stored resource storage 526 represents a content item, such as a web page or document. Content items may be accessible from a service / website 570 via the network 540. In some embodiments, content items may be stored locally, for example, in a memory device 504. Each entry in the local stored 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. The entry may also include the title or description of the stored resource. The entry may include an append time or creation time. The append (creation) time represents the time when the stored resource was added to the local stored resource storage 526.
[0036] In some embodiments, the local stored 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 scenarios, since the local stored resource storage 526 may be associated with a user profile, each user of the browser application 518 may have their own separate local stored resource storage 526. In some embodiments, the user may choose stored resource synchronization. Stored resource synchronization may be initiated by the user on the client computing system 502. After storing resource synchronization is initiated on the client computing system 502, the local stored resource storage 526 may be shared with the user's user account 560 on the server computing system 550.
[0037] In some examples, a client computing system 502 may communicate with a server computing system 550 through a network 540. The server computing system 550 may be one or more computing devices taking the form of several different devices, such as 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 sharing components such as a processor and memory. The network 540 may include the Internet and / or other types of data networks, 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 a circuit board, an operating system (not shown), and one or more memory devices 554. The memory devices 554 may represent any (or more) types of memory (e.g., RAM, flash, cache, disk, tape, etc.). In some examples (not shown), the memory devices 554 may include external storage, such as memory that is physically far from the server computing system 550 but accessible from it. The server computing system 550 may include one or more modules or engines representing specially programmed software. For example, the server computing system 550 may include a system for managing and accessing user accounts 560. User accounts 560 may include data that the user requests to be synchronized across devices such as a client computing system 502. Synchronized data may include session data 562. Session data 562 may allow the user to resume browsing activity after switching devices. User accounts 560 may also include profile data 564. Profile data 564 may include information describing the user, with the user's consent. Profile data 564 may also include data identifying the user (e.g., username and password). Furthermore, user account 560 may include synchronized stored resource storage 566. Stored resource storage 566 can be a datastore for the user's stored resources across the device. For example, as part of a synchronization activity, local stored resource storage 526 may be sent from client computing system 502 to server computing system 550 and stored in stored resource storage 566.
[0039] Figure 7 is a flowchart illustrating a method, by embodiment, for surface installation control in a browser of a computing system supporting the installation of a universal web application, with exemplary operation 700. Operation 700 may be performed by a system such as the client computing system 502 in Figure 5. In some embodiments, operation 700 may be performed by the browser application 518 and / or the universal installation engine 522 of the client computing system 502. Operation 700 enables the system to proactively suggest installing a web application for a website that the user is visiting, provided that it meets the installable application criteria. In step 702, the system analyzes the 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 the resources of the computing system to determine whether the computing system has already installed an installable web application for a 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 control to the website. Installation control is an optional control configured to initiate instructions to install a web application on a computing system in response to a user's selection.
[0040] Figure 8 is a flowchart illustrating an exemplary operation 800 method for generating a default manifest file and providing an offline page in a browser of a computing system that supports the installation of a universal web application, according to one embodiment. Operation 800 may be performed by a system such as the client computing system 502 in Figure 5. In some embodiments, operation 800 may be performed by a browser application 518 and / or a universal installation engine 522 of the client computing system 502. Operation 800 enables the system to bring the benefits of an installable web application 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 installation control. Installation control may be installation control surfaced by the system, for example, as shown in Figure 7. Installation control may be 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 can be identified by the markup (HTML) code of the web page. For example, the location of the manifest file is indicated by a link tag (e.g., < <link rel="”manifest”href=”manifest.json” / ">) can be identified in a section of the web page. In other words, the system can determine whether or not a manifest file exists for a 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 the icon identified in the manifest file to the application selector. The installation may include adding the icon identified in the manifest file to the computing system's home screen / desktop. The user may open / launch the installable web application, for example, by selecting the icon from the application selector and / or the home screen / desktop.
[0041] If a website is associated with a manifest file, in operation 812, the system may determine whether the manifest file requires the default offline functionality. The manifest file may require the default offline functionality if one or more offline page elements lack (do not include) the values in the manifest file. In some embodiments, the manifest file may not require the default offline functionality if the manifest file includes the default offline flag set (for example, if the default_offline_page flag is FALSE in the manifest file). If the manifest does not require the default offline functionality, in step 810, the system may complete the installation of the web application. If the manifest requires the default offline functionality, 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.
[0042] Various embodiments of the systems and technologies described herein can be realized in digital electronic circuits, integrated circuits, specially designed ASICs (application-specific integrated circuits), computer hardware, firmware, software, and / or combinations thereof. These various embodiments may include embodiments in one or more computer programs executable and / or decipherable in a programmable system comprising at least one programmable processor, the at least one programmable processor may be dedicated 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 to a programmable processor and can be implemented in high-level procedural programming languages and / or object-oriented programming languages and / or assembly / machine languages. 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 disks, optical disks, memory, programmable logic circuits (PLDs)) used to provide machine instructions and / or data to a programmable processor, including machine-readable medium that receives machine instructions as machine-readable signals. The term “machine-readable signals” refers to any signals used to provide machine instructions and / or data to a programmable processor. Furthermore, the disclosed operations may be performed in a different order than those illustrated, or in parallel or overlapping manner.
[0044] To provide user interaction, the systems and technologies described herein can be implemented in a computer having a display device for displaying information to the user (e.g., a monitor or touch-sensitive display) and a keyboard and pointing device (e.g., a mouse, trackball, touchpad, stylus, or finger) to which the user can provide input to the computer. Similarly, user interaction can be provided using other types of devices. For example, the feedback provided to the user may be any form of perceptual feedback (e.g., visual feedback, auditory feedback, or tactile feedback), and input from the user may be received in any form, including acoustic input, speech input, or tactile input.
[0045] The systems and technologies described herein can be implemented in a computing system that includes backend components (e.g., data servers), or middleware components (e.g., application servers), or frontend components (e.g., a client computer having a graphical user interface or web browser on which a user can interact with embodiments of the systems and technologies described herein), or any combination of such backend components, middleware components, or frontend components. The components of the system can be interconnected by digital data communications (e.g., communication networks) of any form or medium. Examples of communication networks include local area networks (LANs), wide area networks (WANs), and the Internet.
[0046] A computing system may include clients and servers. Clients and servers are generally remote to each other and typically interact via a communication network. The client-server relationship arises from tasks performed by computer programs launched on each computer.
[0047] In this specification and the accompanying claims, the singular forms “a,” “an,” and “the” do not exclude plural references unless specifically indicated by the context. Furthermore, conjunctions such as “and,” “or,” and “and / or” are inclusive unless specifically indicated by the context. 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 connections between various elements. Many alternative or additional functional relationships, physical connections, or logical connections may exist in a working device. Furthermore, unless an element is specifically described as “essential” or “important,” an article or component is not essential to the practice of the embodiments disclosed herein.
[0048] While not limiting, terms such as "generally," "substantially," and "generally" are used herein to indicate that their exact values or ranges are not required or need to be specified. Where used herein, the above terms are readily and immediately understood by those skilled in the art.
[0049] Furthermore, the use of terms such as top, bottom, upper, bottom, side, end, front, and rear in this specification is used in reference to the orientation currently under consideration or illustrated. It should be understood that if they are considered in relation to other orientations, such terms must be modified accordingly. It should be understood that the terms used herein are for the purpose of describing specific embodiments and are not intended to limit them. Rather, this patent covers all methods, apparatuses, and articles fairly included within the claims of this patent.
[0050] In some embodiments, the techniques described herein relate to a non-temporary computer-readable medium for storing instructions, wherein, when executed by at least one processor of a computing device, the instructions cause the computing device to execute a browser application that performs an action, the action of determining whether the domain of a web page satisfies installable application criteria and includes an installation method provided by the domain, and providing installation control configured to initiate the installation of a web application corresponding to the web page displayed on the computing device in response to the determination that the domain includes a web page that satisfies installable application criteria but does not include an installation method.
[0051] In some embodiments, the techniques described herein relate to non-temporary computer-readable media, the installable application criteria include the absence of a manifest file associated with the domain, and the web page being the root of the original page.
[0052] In some embodiments, the techniques described herein relate to non-temporary computer-readable media, and the operation further includes receiving an installation control selection, generating a manifest file for a domain, and using the manifest file to install a web application on a computing device.
[0053] In some embodiments, the techniques described herein relate to non-temporary computer-readable media, and generating a manifest file includes identifying the 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.
[0054] In some embodiments, the technologies described herein relate to non-temporary computer-readable media, and the installable application criteria include legacy criteria.
[0055] In some embodiments, the technologies described herein relate to non-temporary computer-readable media, and the installable application criteria include the presence of a manifest file associated with the domain.
[0056] In some embodiments, the techniques described herein relate to non-temporary computer-readable media, and installation control is provided as part of a confirmation window generated in response to receiving a command to save the resource locator of a web page to a saved resource storage.
[0057] In some embodiments, the techniques described herein relate to non-temporary computer-readable media, and installation control is provided in the address bar area of a browser application displaying a web page.
[0058] In some embodiments, the techniques described herein relate to a non-temporary computer-readable medium for storing instructions, the instructions, when executed by at least one processor of a computing device, cause the computing device to run a browser application that performs an action, the action including receiving an instruction to install a web application, determining whether the web application is associated with a manifest file, generating a default manifest file for the web application in response to determining that the web application is not associated with a manifest file, and installing the web application on the computing device using the default manifest file.
[0059] In some embodiments, the techniques described herein relate to non-temporary computer-readable media, and 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.
[0060] In some embodiments, the techniques described herein relate to non-temporary computer-readable media, and generating a default manifest file includes identifying an icon for a web application and using the icon as an application icon in the default manifest file.
[0061] In some embodiments, the techniques described herein relate to non-temporary computer-readable media, and generating a default manifest file includes identifying the current resource identifier for a web application and using the current resource identifier as the starting resource identifier in the default manifest file.
[0062] In some embodiments, the techniques described herein relate to non-temporary computer-readable media, where the current resource identifier represents the originating root.
[0063] In some embodiments, the techniques described herein relate to non-temporary computer-readable media, and the operation further includes determining that the current resource identifier represents the originating root, and providing installation control in response to determining that the current resource identifier is the originating root and that the domain of the current resource identifier is not associated with a manifest file.
[0064] In some embodiments, the techniques described herein relate to non-temporary computer-readable media, and the operation further includes providing default values to the offline page elements of a default manifest file.
[0065] In some embodiments, the techniques described herein relate to non-temporary computer-readable media, and the operation further includes: determining, after installing the web application, that the web application is associated with a manifest file associated with the domain of the web application; and providing an update dialog, the update dialog being configured to display an icon from a default manifest file and an icon from a domain-associated manifest file; displaying the application name from a default manifest file and an application name from a domain-associated manifest file; and providing control for rejecting a domain-associated manifest file.
[0066] In some embodiments, the techniques described herein relate to a non-temporary computer-readable medium for storing instructions, wherein, when executed by at least one processor of a computing device, the instructions cause the computing device to execute a browser application that performs an action, the action including determining whether a manifest file associated with a domain contains one or more offline page elements, and, in response to determining that the manifest file does not contain one or more offline page elements, providing default values for one or more offline page elements.
[0067] In some embodiments, the techniques described herein relate to methods, which include 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 installation control configured to initiate the installation of a web application corresponding to the web page displayed on the computing device in response to a determination that the domain includes a web page that meets installable application criteria but does not include an installation method.
[0068] In some embodiments, the techniques described herein relate to methods, and 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 embodiments, the techniques described herein relate to methods, which further include receiving an installation control selection, generating a manifest file for a domain, and using the manifest file to install a web application on a computing device.
[0070] In some embodiments, the techniques described herein relate to methods, where generating a manifest file includes identifying the 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 embodiments, the techniques described herein relate to methods, and the installable application criteria include legacy criteria.
[0072] In some embodiments, the techniques described herein relate to methods, and the installable application criteria include the presence of a manifest file associated with the domain.
[0073] In some embodiments, the techniques described herein relate to methods, where installation control is provided as part of a confirmation window generated in response to receiving a command to save the resource locator of a web page to saved resource storage.
[0074] In some embodiments, the techniques described herein relate to methods, where installation control is provided in the address bar area of a browser application displaying a web page.
[0075] In some embodiments, the techniques described herein relate to methods, which include receiving an instruction to install a web application, determining whether the web application is associated with a manifest file, generating a default manifest file for the web application in response to determining that the web application is not associated with a manifest file, and installing the web application on a computing device using the default manifest file.
[0076] In some embodiments, the techniques described herein relate to methods, 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 embodiments, the techniques described herein relate to methods, and generating a default manifest file includes identifying an icon for a web application and using the icon as an application icon in the default manifest file.
[0078] In some embodiments, the techniques described herein relate to methods, where generating a default manifest file includes identifying the current resource identifier for a web application and using the current resource identifier as the starting resource identifier in the default manifest file.
[0079] In some embodiments, the techniques described herein relate to methods, and the current resource identifier represents the starting point route.
[0080] In some embodiments, the techniques described herein relate to methods, which further include determining that the current resource identifier represents a starting root, and providing installation control in response to determining that the current resource identifier is a starting root and that the domain of the current resource identifier is not associated with a manifest file.
[0081] In some embodiments, the techniques described herein relate to methods, which further include providing default values for the offline page elements in the default manifest file.
[0082] In some embodiments, the techniques described herein relate to methods, the methods further comprising: determining, after installing a web application, that a web application is associated with a manifest file associated with the domain of the web application; and providing an update dialog, the update dialog being configured to display an icon from a default manifest file and an icon from a domain-associated manifest file; displaying an application name from a default manifest file and an application name from a domain-associated manifest file; and providing control for rejecting a domain-associated manifest file.
[0083] In some embodiments, the techniques described herein relate to methods, which include determining whether a manifest file associated with a domain contains one or more offline page elements, and providing default values for one or more offline page elements in response to determining that the manifest file does not contain one or more offline page elements.
[0084] In some embodiments, the techniques described herein relate to methods, which further include receiving a selection of installation controls for a web application and installing the web application on a computing device using a manifest file.
[0085] In some embodiments, the technique described herein relates to a method in which determining that a manifest file does not contain one or more offline page elements in a manifest file for a domain includes determining that there is no manifest file for the domain, and in response to the determination that there is no manifest file for the domain, the operation further includes generating a manifest file for the domain.
[0086] In some embodiments, the techniques described herein relate to methods, and determining that a manifest file does not contain one or more offline page elements in a manifest file for a domain includes determining that a web application using the manifest file is installed on a computing device and that the web application lacks an offline experience assisted by a service worker with a fetch event handler.
[0087] In some embodiments, the techniques described herein relate to methods, the method comprising determining whether a manifest file does not contain one or more offline pages elements for a domain, determining whether the default offline pages flag of the manifest file has a false value, and providing a default value occurring in response to determining that the default offline pages flag has a non-false value.
[0088] In some embodiments, the techniques described herein include at least one processor and memory for storing instructions, which, when executed by the at least one processor, cause a computing device to run a browser application that performs a method.
[0089] In some embodiments, the techniques described herein relate to a non-temporary computer-readable medium that stores instructions when executed by at least one processor. In one embodiment, the non-temporary computer-readable medium stores instructions that, when executed by a processor on a receiving computing device, cause the receiving computing device to perform one of the methods disclosed herein.
[0090] In one embodiment, the computing device may comprise at least one processor and memory for storing instructions that, when executed by the at least one processor, perform any of the methods disclosed herein.
Claims
1. A method performed by a computing device, The process involves determining whether the domain of the web page displayed on the computing device meets the criteria for an installable application, and whether optional controls are provided to initiate the installation of the web application corresponding to the web page. To provide installation control configured to initiate the installation of the web application corresponding to the web page on the computing device in response to the domain determining that it meets the installable application criteria and that the selectable control is not provided, Methods that include...
2. The method according to claim 1, wherein the installable application criterion includes the absence of a manifest file associated with the domain, and the web page is the root of the original page.
3. Receiving the aforementioned installation control selection, To generate a manifest file for the aforementioned domain, Using the aforementioned manifest file, install the web application on the computing device, The method according to claim 2, further comprising:
4. Generating the aforementioned manifest file is Identifying the page title of the aforementioned webpage, Identifying the icon associated with the aforementioned webpage, Adding the aforementioned page title and icon to the manifest file, The method according to claim 3, including the method described in claim 3.
5. The method according to claim 1, wherein the installable application criteria include legacy criteria.
6. The method according to claim 1, wherein the installable application criteria include the presence of a manifest file associated with the domain.
7. The method according to claim 1, wherein the installation control is provided as part of a confirmation window generated in response to receiving a command to save the web page resource locator to the saved resource storage.
8. The method according to claim 1, wherein the installation control is provided in the address bar area of the browser application that displays the web page.
9. The method according to claim 4, wherein the page title is used as the application name in the manifest file.
10. The method according to claim 4, wherein the icon is used as an application icon in the manifest file.
11. The method according to claim 4, wherein generating the manifest file includes identifying the current resource identifier for the web application and using the current resource identifier as the starting resource identifier in the manifest file.
12. The method according to claim 3, further comprising providing default values for the offline page elements of the manifest file.
13. The manifest file is a default manifest file, and the method is After installing the web application, it is determined that the web application is associated with a manifest file linked to the domain of the web application, The provision of an update dialog further includes, the update dialog being, Displaying icons from the default manifest file and icons from the manifest file associated with the domain, Display the application name from the default manifest file and the application name from the manifest file associated with the domain. To provide control for rejecting the manifest file associated with the domain, The method according to claim 3, configured to perform the following:
14. A computing device, At least one processor, A computing device comprising: a memory for storing instructions, wherein, when the instructions are executed by the at least one processor, the computing device causes the computing device to execute a browser application that performs the method according to any one of claims 1 to 13.
15. A non-temporary computer-readable storage medium for storing instructions, wherein, when the instructions are executed by at least one processor of a computing device, the computing device causes the computing device to execute a browser application that performs the method according to any one of claims 1 to 13.