US20160179312A1 - Streamlined hosted applications - Google Patents
Streamlined hosted applications Download PDFInfo
- Publication number
- US20160179312A1 US20160179312A1 US14/973,380 US201514973380A US2016179312A1 US 20160179312 A1 US20160179312 A1 US 20160179312A1 US 201514973380 A US201514973380 A US 201514973380A US 2016179312 A1 US2016179312 A1 US 2016179312A1
- Authority
- US
- United States
- Prior art keywords
- browser
- web application
- application
- user
- chrome
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/0483—Interaction with page-structured environments, e.g. book metaphor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9562—Bookmark management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9577—Optimising the visualization of content, e.g. distillation of HTML documents
-
- G06F17/30861—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04817—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance using icons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/0482—Interaction with lists of selectable items, e.g. menus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04842—Selection of displayed objects or displayed text elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2203/00—Indexing scheme relating to G06F3/00 - G06F3/048
- G06F2203/048—Indexing scheme relating to G06F3/048
- G06F2203/04803—Split screen, i.e. subdividing the display area or the window area into separate subareas
Definitions
- Embodiments relate to applications, in particular, to Streamlined Hosted Applications, that are executed within the context of a browser.
- browser-executable web applications are either hosted by a network or remote server or installed on a client computing device.
- Installed applications generally can be granted more permissions to access local client-side resources than hosted applications.
- Hosted applications have the advantage of being flexible in that a change to the application can affect all users of the application.
- hosted applications often are not much more than a URL to an existing website and therefore the user experience of interacting with a hosted application may be disappointing when the appearance of the hosted application is indistinguishable from a typical website that displays content of the hosted application.
- example embodiments disclose mechanisms for providing web applications in which the web application is presented in a user interface that appears similar to an operating system level application.
- a method of presenting a web application includes receiving a user's selection of a user interface element displayed on a local computing device, where the user interface element includes a visual icon representing the web application.
- the web application is launched in a window of a browser application, where the browser application is customizable to store bookmarks to webpages, and the browser has the ability to display multiple tabs of content of different webpages in a window of the browser.
- the window of the browser in which the web application is launched is tabless, and the window of the browser includes chrome displaying a back button and a forward button, where the buttons are selectable to navigate to a webpage in a history of webpages viewed by the user in the window, and a reload button that is selectable to reload a webpage currently-viewed in the window.
- the chrome includes no user interface elements that may be selected to store a bookmark to a webpage and includes no user interface elements that display user-defined bookmarks to webpages.
- Implementations can include one or more of the following features, alone or in combination with one or more other features.
- the chrome can include a visual icon representing the web application.
- an icon for, and the name of, the web application can be displayed, in an application task manager of an operating system of the computing device.
- an icon for, and the name of, the browser can be display in the application task manager, where the icon for the browser is different from the icon for the web application.
- the web application can be opened in a tab of a tabbed window of the browser application, a user indication to create the user interface element including the visual icon representing the web application can be received, and the user interface element including the visual icon representing the web application can be stored on a desktop, a start menu, or a taskbar of the computing device.
- Generating the visual icon representing the web application can be based on content of the web application opened in the tab of the tabbed window of the browser application.
- Generating the visual icon can include selecting one of a plurality of visual icons provided by the web application opened in the tab of the tabbed window, where the selected visual icon is selected based on the location at which the user interface element is stored.
- User login credentials can be transmitted from the computing device to a server, where the credentials authenticate the user of the computing device to the server computer system and, in response to receiving an acknowledgment of a successful authentication of the user to the server computer system, information about the stored user interface element representing the web application can be transmitted to the server computer system for synchronization from the server computer system to another local computing device from which credentials authenticating the user of the other local computing device are successfully transmitted to the server computing system.
- the chrome can displays a home button that is selectable to cause a homepage of the web application to be displayed within the tabless window of the browser.
- a system for presenting a web application includes a non-transient computer-readable storage medium storing executable instructions and at least one semiconductor-based processor configured for executing the executable instructions.
- the execution of the instructions causes the system to receive a user's selection of a user interface element displayed on a local computing device, where the user interface element includes a visual icon representing the web application.
- the web application is launched in a window of a browser application, where the browser application is customizable to store bookmarks to webpages has the ability to display multiple tabs of content of different webpages in a window of the browser.
- the window of the browser in which the web application is launched is tabless and includes chrome displaying a back button and a forward button, which are selectable to navigate to webpage in a history of webpages viewed by the user, the history including the web application, and a reload button that is selectable to reload the web application.
- the chrome includes no user interface elements that may be selected to store a bookmark to a webpage.
- Implementations can include one or more of the following features, alone or in combination with one or more other features.
- the chrome can include a visual icon representing the web application.
- Execution of the instructions can also cause the system to, in response to receiving the user selection, display, in an application task manager of an operating system of the computing device, an icon for, and the name of, the web application.
- Execution of the instructions can also cause the system to, in response to receiving the user selection, display, in the application task manager an icon for, and the name of, the browser, wherein the icon for the browser is different from the icon for the web.
- Execution of the instructions can also cause the system to, open the web application in a tab of a tabbed window of the browser application, receive a user indication to create the user interface element including the visual icon representing the web application, and store the user interface element including the visual icon representing the web application on a desktop, a start menu, or a taskbar of the computing device.
- Execution of the instructions can also cause the system to generate the visual icon representing the web application based on content of the web application opened in the tab of the tabbed window of the browser application.
- Generating the visual icon can include selecting one of a plurality of visual icons provided by the web application opened in the tab of the tabbed window, where the selected visual icon can be selected based on the location at which the user interface element is stored.
- Execution of the instructions can also cause the system to transmit user login credentials from the computing device to a server, the credentials authenticating the user of the computing device to the server computer system and, in response to receiving an acknowledgment of a successful authentication of the user to the server computer system, transmit information about the stored user interface element representing the web application to the computer system for synchronization from the server computer system to another local computing device from which credentials authenticating the user of the other local computing device are successfully transmitted to the server computing system.
- the chrome can also display a home button that is selectable to cause a homepage of the web application to be displayed within the tabless window of the browser.
- FIG. 1 is a schematic block diagram of a system according to at least one example embodiment.
- FIG. 2 is a screenshot of a presentation of a hosted application (e.g., a webpage) by a browser application.
- a hosted application e.g., a webpage
- FIG. 3 is a screenshot of a presentation of a streamlined hosted application by a browser application.
- FIG. 4 is a flowchart of a process of presenting a web application.
- FIG. 5 is a schematic block diagram of a computer device and a mobile computer device that can be used to implement the techniques described here.
- a web browser executed by a client computing device can receive code (e.g., web-technology programming code) from a remote server (e.g., a remote server that hosts a website) and can execute the received code on the client device for the benefit of a user of the client device.
- code e.g., web-technology programming code
- the web browser may include or have installed one or more applications that may be configured to perform tasks for a user.
- the application may be configured to be executed or interpreted by the web browser.
- a browser-executable application is a program that is written in web-technology programming code, i.e., code that is used for programming Internet-available resources and that is executable on the client computing device without compilation.
- Web-technology programming code is designed to be run entirely within a web browser on the client computing device and includes, for example, markup language code (e.g., HTML5), JavaScript, and CSS.
- the browser-executable application contains all of the resources necessary to execute the application on the client computing device and the code needed to execute the application by the client computing device is not dynamically generated. Examples of web applications include games, photo editors, and video players that are run inside the browser.
- Web applications can include “hosted web applications,” and “packaged applications.”
- Hosted applications may include at least a portion of a website that itself includes webpages, plus some metadata that may be especially pertinent to the web application or to the user of the web application to allow the web application to perform some particular functionality for the user.
- Hosted web applications can be run online, e.g., hosted applications are hosted by an online server that executes the application and serves content to the client computing device through the network for presentation to the user though a browser application.
- hosted web applications can be granted, additional permissions to use local resources of a client computing device, beyond what typical code executed by a browser is permitted to use (e.g., the ability to read content from a local clipboard or the ability to always have a hidden page open which is performing tasks such as synchronizing data for offline use or receiving server-pushed notifications to display to the user).
- notice of the additional permissions must be provided to the user and the user must explicitly grant the permissions, so that the user is aware of the additional permissions and may determine whether they should be granted in exchange for running the hosted app.
- Launching the hosted application implicitly grants the permissions requested by the application for all pages whose URLs match those that are listed in the manifest for the application. Then, the application is able to use the features that are enabled by the granted permissions without having to repeatedly ask the user for permission to use the features.
- Packaged applications can be thought of as web applications whose code is bundled, so that the user can download all of the content of the web application for execution by the browser or in a standalone window.
- a packaged application may not need to have network access to perform its functionality for the user, and rather may be executed successfully by the browser locally on the computing device without access to a network.
- Packaged applications have the option of using extension application programming interfaces (APIs), allowing packaged apps to change the way the browser behaves or looks.
- a packaged application may operate without appearing to run in a browser, e.g., without the browser “chrome” (i.e., UI elements around the webpage or app content displayed in the browser window), tabs, or other user interface of the browser.
- the packaged application could operate in a standalone window without access to content scripts or APIs related to browser state such as cookies, history, bookmarks, open tabs, etc.
- packaged applications may access USB drives, BLUETOOTH devices, open raw network sockets, act as servers, or access the local filesystem, as examples.
- Packaged applications may look and feel like native applications, with a big-screen design and rich user interface.
- Packaged applications may bundle all their files into a single file (e.g., a zip file, such as a .CRX file) that a user downloads and then installs the content of. This bundling means that, unlike hosted applications, packaged applications do not need to depend on content from the web.
- Applications may be distributed via a trusted web store, or via individual websites, as examples.
- the API (and/or web API)) may be an element of a web browser as discussed above.
- the API (and/or web API)) may be an element of a web based operating system (Browser-OS).
- a Browser-OS may be a bootable version of a web browser (including a browser, a media player and a file system).
- the Browser-OS may store all of a user applications and data on the Web, as opposed to a local hard drive.
- the Browser-OS e.g., Chrome-OS®
- packaged apps also can be granted additional permissions to use local resources of a client computing device, beyond what typical code executed by a browser is permitted to use.
- packaged apps may be granted additional permissions that provide more access to local resources of a client computing device than a hosted application is permitted to use.
- a packaged application a user may be comfortable with downloading and installing the application and giving the packaged application a high level of access to the computing device because the packaged application has gone through a verification and validation process before the packaged application listed in a digital marketplace and the app is trusted not to change after it is downloaded and installed on the client computing device. Therefore, the user trusts that the downloaded code will not be malicious, even though the code has been given a high level of access to the computing device.
- a hosted web application even if the application has been approved in the digital marketplace, is essentially nothing more than then a URL to a website.
- a hosted application may also include some metadata that defines some permissions that provide more access to local resources of the client computing device, but because the code at the website pointed to by the URL can change, users should be reluctant to grant a high level of access to the computing device to a hosted web application because the code may become malicious even if the code had been previously approved.
- hosted applications generally present similar, or identical, content as the website identified by the URL of the hosted application.
- a hosted application can be presented as a “Low-chrome hosted application” in a user interface that appears more like that of a standalone native application or that of a packaged application and less like that of a website in a regular browser window. For example, much of the browser chrome can be omitted when displaying a low-chrome hosted application to give the low-chrome hosted application the appearance of a native application or a packaged application.
- low-chrome hosted applications can be pinned to a task bar, a desktop, and/or a start menu of a client computing device, and they can be launched from their pinned location(s), which, again, gives low-chrome hosted applications may feel closer to native and packaged applications then to typical hosted applications.
- FIG. 1 is a block diagram of a system 100 that may be used to implement low-chrome hosted applications using the techniques described herein.
- the depiction of system 100 in FIG. 1 is shown by way of example. It will be appreciated that other configurations may be used for implementing such techniques.
- the system 100 includes client computing devices 110 , 111 .
- Devices 110 and 111 include similar components, and only the components of device 110 are described in detail.
- the client computing device 110 may take the form of a number of different devices, such as a personal computer, a television, laptop computer, tablet computer, netbook computer, or a web-enabled phone, as examples.
- the device 110 includes one or more processors 112 that can execute instructions stored on one or more memory devices 114 , an operating system 120 and a browser 122 that may be used to access various types of content. Such content may include websites, photos, video, audio and executable scripts, for example.
- the operating system 120 can include typical features of an operating system, such as, for example, a start menu 132 , a desktop 133 , and a taskbar 134 for displaying applications and documents that can be executed on the computing system, and a task manager 135 for displaying information about applications and processes being executed by the computing system.
- browser 122 can execute a hosted web application (e.g., a website) 130 .
- the web application can be executed as a low-chrome hosted application 131 , which may be executed on the computing device 110 using the techniques described herein.
- the low-chrome hosted application 131 may include respective client-side components of the application.
- the low-chrome hosted application 131 may include a description of the application and/or code that is executable by the browser 122 , where that code provides functionality for the web application.
- the computing device 110 is coupled with a network 140 .
- the network 140 may include a data access network that provides access to the Internet and/or the World Wide Web.
- computing device 110 (using browser 122 , for example) may communicate with a digital marketplace server 150 (e.g., an application server or web store), an application origin 180 , and a synchronization server 160 .
- the application origin 180 may include server-side components for the application 130 .
- the application 130 and the low-chrome hosted application 131 may operate using multiple origins.
- Code for executing the low-chrome hosted application 131 can be downloaded from the digital marketplace server 150 or from the application origin 180 to the client computing device 110 .
- code for executing the low-chrome hosted application 131 can be downloaded from an application origin 180 (e.g., a website identified by a URL associated with the low-chrome hosted application).
- the digital marketplace server 150 may be configured to receive requests from user computing devices (such as the computing device 110 ) for installation of a low-chrome hosted application 131 , and to provide to the client computing device 110 , in response to such requests, code for executing the low-chrome hosted application 131 , including a URL associated with the low-chrome hosted application 131 .
- browser 122 may be used to request hosted applications 130 from the digital marketplace server 150 .
- the digital marketplace 150 may implement a website that is used to distribute web applications, among other content.
- the digital marketplace server 150 may implement an e-commerce site.
- Hosted applications 130 can be downloaded and executed by the computing system 110 , for example, by the browser 122 .
- Hosted applications 130 can be executed by a typical instance of a browser application, where the browser application can be customized to store bookmarks to webpages and hosted applications and where the browser application can display multiple tabs of different content.
- a user may indicate that a particular web application 130 (e.g., a webpage) should be executed by the browser as a low-chrome hosted application 131 to provide a streamlined user interface for the particular web application in which the instance of the browser executing the low-chrome hosted application 131 does not display any tabs and includes only a limited amount of chrome around the content of the low-chrome hosted application.
- the web application executed as a low-chrome hosted application 131 appears more like a native application.
- a user may provide this indication to present a hosted application as a low-chrome hosted application 131 by interacting with a user interface element present on the content of the web application 131 by interacting with a user interface element associated with the browser executing the web application 130 .
- information may be stored in association with the browser 122 to indicate that the particular webpage should be executed and presented as a low-chrome hosted application 131 .
- an icon representing the low-chrome hosted application may be displayed in a location typically reserved for native applications, such as, for example, on the start menu 132 , on the desktop 133 , on the taskbar 134 , etc., and selection of the icon may cause the particular webpage to be launched and presented as a low-chrome hosted application 131 by the browser 122 .
- the low-chrome hosted application may be listed in the list of applications or processes of the task manager 135 of the operating system 120 .
- an icon and the name of the low-chrome hosted application 131 can be presented in the task manager 135 .
- the icon and the name of the low-chrome hosted application 131 can be presented in the task manager separately from the icon and the name of the browser application 122 , which, again, suggests to the user that the low-chrome hosted application is more than just a website.
- the system 100 can also include a sync server 160 that can store unique identifiers to enable syncing between various user sessions on different client computing devices e.g., computing device 110 , 111 .
- a user account allows a user to authenticate to system services (e.g., applications) and receive authorization to access them.
- system services e.g., applications
- a user may authenticate herself with a password or other credentials for the purposes of accounting, security, and resource management.
- an operating system may use an identifier to refer to the user, rather than a username.
- all of the user's bookmarks, extensions, browser-executable applications, theme, other browser preferences and/or settings may be loaded from a sync server 160 via a network 140 . Accordingly, the user's low-chrome hosted applications, along with the user's bookmarks, extensions, theme, and other browser preferences and/or settings, may be saved at the sync server 160 and synced to a user's account. The user can then access this synced information anytime the user signs into the web browser on other computers and devices.
- the computing device 110 , server 150 and/or sync server 160 are understood to represent virtually any computing system configured to perform the techniques described herein.
- the computing device 110 , server 150 and/or sync server 160 may be understood to include various components which may be utilized to implement the techniques described herein, or different or future versions thereof.
- the computing device server 150 and/or sync server 160 are illustrated as including the at least one processor 112 as well as the at least one memory 114 (e.g., a non-transitory computer readable storage medium) respectively.
- the processor 112 may be formed on a substrate and may be utilized to execute instructions stored on the memory 114 to thereby implement the various features and functions described herein, or additional or alternative features and functions.
- FIG. 2 is a screenshot 200 of a presentation of a hosted application 130 (e.g., a webpage) by a browser application.
- the presentation of the hosted application includes content of the application displayed in a main window of the browser, which is framed by chrome of the browser application.
- the hosted application 130 is identified by a URL 202 displayed a location bar of the chrome, and by a name and icon associated with the hosted application, which are displayed in a tab 204 of the chrome.
- Other tabs 206 also can be displayed in the chrome, and selection of another tab 206 can cause content of a hosted application associated with the other tab 206 to be displayed in the main window of the browser.
- the chrome also can include a display of one or more bookmarks 208 , 210 , 212 , 214 , 216 , 218 to other hosted applications/webpages, and selection of a bookmark may cause the content associated with the bookmark to be displayed in the main window of the browser.
- An icon 220 identifying a folder that stores additional bookmarks also can be displayed in the chrome of the browser.
- an icon 222 identifying a start menu provided by the operating system of the computing device can be displayed.
- the selection of the start menu icon 222 can cause the display of a menu of applications that may be executed by the client computing device.
- icons 224 , 226 , 228 , 230 , 232 can be displayed in a taskbar 234 , where the icons in the taskbar identify applications that can be launched as a result of a selection of the icon.
- Icons 224 , 226 and 230 identify natively-executed applications.
- Icon 232 identifies a low-chrome hosted application that can be launched through selection of the icon 232 displayed in the taskbar.
- the low-chrome hosted application 131 associated with the icon 232 corresponds to the hosted application 130 presented in the screenshot of FIG. 2 .
- Icons, similar to icon 232 , for launching a low-chrome hosted application 131 can be created and displayed in other areas controlled by the operating system that typically are reserved for natively-executed applications.
- an icon for a low-chrome hosted application 131 can be created and displayed in the start menu 132 , 222 are on the desktop 133 .
- a user interacting with a hosted application 130 displayed in a tabbed browser can select a user interface element within the chrome of the tabbed browser and then provide an indication that a low-chrome hosted application should be created for the currently displayed webpage and that an icon for the low-chrome hosted application corresponding to the currently displayed webpage should be created and stored on the computing device.
- a user may select a settings user interface element 240 (e.g., a wrench icon, a gear icon, etc.), which may then present a menu of options for creating one or more icons for the low-chrome hosted application to be created and stored in one or more locations on the computing device.
- information may be stored in the browser to indicate that when the low-chrome hosted application is launched by interacting with one or more of the created icons, that the content of the application should be launched and presented by the browser in the low-chrome hosted application mode.
- FIG. 3 is a screenshot 300 of a presentation of a low-chrome hosted application 131 by a browser application.
- the presentation of the low-chrome hosted application 131 includes content of the application displayed in a main window of the browser, which is framed by a limited amount of chrome of the browser application.
- the low-chrome hosted application 131 is identified by a URL that is stored in association with an icon used to launch the low-chrome hosted application, but the URL is not displayed in a location bar of the chrome of the browser.
- the chrome of the browser used to display the low-chrome hosted application 131 cannot ever display the URL for the low-chrome hosted application.
- the chrome of the browser used to display the low-chrome hosted application 131 displays a name 302 and an icon 304 associated with the low-chrome hosted application, where the name 302 and the icon 304 are provided by the content of the low-chrome hosted application.
- the browser interface used to display the low-chrome hosted application is tabless, in that the chrome of the browser interface does not display any tabs for content other than the low-chrome hosted application.
- the chrome of the browser interface for the low-chrome hosted application 131 does not display any user-created bookmarks, the selection of which may cause the content associated with the bookmark to be displayed in the main window of the browser.
- the user may be prohibited from adjusting any setting of the browser to display another tab or to display a bookmark.
- an icon 322 identifying a start menu provided by the operating system of the computing device can be displayed below the chrome of the browser.
- the selection of the start menu icon 322 can cause the display of a menu of applications that may be executed by the client computing device.
- icons 324 , 326 , 328 , 330 , 332 can be displayed in a taskbar 334 , where the icons in the taskbar identify applications that can be launched as a result of a selection of the icon.
- Icons 324 , 326 and 330 identify natively-executed applications.
- Icon 332 identifies a low-chrome hosted application that can be launched through selection of the icon 332 displayed in the taskbar.
- the content of the low-chrome hosted application 131 displayed in the main window of the browser can include hyperlinks 306 , 308 , 310 , 312 , 314 can be selected to cause the browser to display content associated with the selected hyperlink in the low-chrome hosted application user interface.
- the hyperlinks are associated with URLs, which, in turn, are associated with the content to be displayed.
- the low-chrome hosted application user interface can display content other than the content associated with the icon for the low-chrome hosted application, however, in some implementations, the content displayed in the low-chrome hosted application is reachable only by navigating through hyperlinked content within the low-chrome hosted application itself.
- the chrome of the browser used to present the low-chrome hosted application can include a back button 340 and a forward button 342 that can be selected to load content from a sequential list of accessed content displayed in the low-chrome hosted application, where the back button 340 is used to access content one step in one direction of the sequential list and the forward button 342 is used to access content one step in an opposite direction of the sequential list.
- the chrome of the browser used to present the low-chrome hosted application also can include a home button 344 that can be the selected to display content specified by the URL associated with the icon used to launch the low-chrome hosted application.
- the chrome of the browser used to present the low-chrome hosted application also can include a reload button 346 that can be used to reload content of the currently displayed page of the low-chrome hosted application.
- the chrome of the browser used to present the low-chrome hosted application can display a user interface element 334 that can be selected to close the application 131 , a user interface element 336 that can be used to reduce the size of the window used to display the application and a user interface element 338 that can be selected to minimize the window.
- the chrome of the browser used to present the low-chrome hosted application 131 also can include a vertical scroll bar 314 and a horizontal scrollbar (not shown) that can be used to through content of the low-chrome hosted application displayed in the browser window.
- FIG. 4 is a flowchart a process 400 of presenting a web application, according to example embodiments.
- the steps described with regard to FIG. 4 may be performed due to the execution of software code stored in a memory (e.g., memory 114 ) associated with an apparatus (e.g., as shown in FIG. 1 ) and executed by at least one processor (e.g., at least one processor 112 ) associated with the apparatus.
- a memory e.g., memory 114
- processor e.g., at least one processor 112
- alternative embodiments are contemplated such as a system embodied as a special purpose processor.
- the steps described below are described as being executed by a processor, the steps are not necessarily executed by a single processor. In other words, at least one processor may execute the steps described below with regard to FIG. 4 .
- a user's selection of a user interface element displayed on a local computing device is received, where the user interface element include a visual icon representing the web application ( 402 ).
- the web application is launched in a window of a browser application ( 404 ).
- the browser application is customizable to store bookmarks to webpages, and the browser having the ability to display multiple tabs of content of different webpages in a window of the browser, but the window of the browser in which the web application is launched is tabless.
- the window of the browser in which the web application is launched includes chrome displaying a back button and a forward button, the buttons being selectable to navigate to webpage in a history of webpages viewed by the user.
- the chrome includes a reload button being selectable to reload the web application, but the chrome include no user interface elements that may be selected to store a bookmark to a webpage and the chrome includes no user interface elements that display user-defined bookmarks to webpages.
- the web application can be opened in a tab of a tabbed window of the browser application ( 406 ).
- a user indication to create the user interface element including the visual icon representing the web application can be received ( 408 ).
- the user interface element including the visual icon representing the web application can be stored on a desktop, a start menu, or a taskbar of the computing device ( 410 ).
- the techniques and systems described herein may be implemented as an element of and/or an extension of the generic computer device 500 and/or the generic mobile computer device 550 described below with regard to FIG. 5 .
- the system 200 illustrated in FIG. 2 may be implemented in a separate system from the generic computer device 500 and/or the generic mobile computer device 550 having some or all of the features described below with regard to the generic computer device 500 and/or the generic mobile computer device 550 .
- system 200 (and/or elements thereof) illustrated in FIG. 2 may be implemented as an element of and/or an extension of the generic computer device 500 and/or the generic mobile computer device 550 described below with regard to FIG. 5 .
- system 200 illustrated in FIG. 2 may be implemented in a separate system from the generic computer device 500 and/or the generic mobile computer device 550 having some or all of the features described below with regard to the generic computer device 500 and/or the generic mobile computer device 550 .
- FIG. 5 shows an example of a generic computer device 500 and a generic mobile computer device 550 , which may be used with the techniques described here.
- Computing device 500 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers.
- Computing device 550 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular telephones, smart phones, and other similar computing devices.
- the components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit implementations of the inventions described and/or claimed in this document.
- Computing device 500 includes a processor 502 , memory 504 , a storage device 506 , a high-speed interface 508 connecting to memory 504 and high-speed expansion ports 510 , and a low speed interface 512 connecting to low speed bus 514 and storage device 506 .
- Each of the components 502 , 504 , 506 , 508 , 510 , and 512 are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate.
- the processor 502 can process instructions for execution within the computing device 500 , including instructions stored in the memory 504 or on the storage device 506 to display graphical information for a GUI on an external input/output device, such as display 516 coupled to high speed interface 508 .
- multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory.
- multiple computing devices 500 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).
- the memory 504 stores information within the computing device 500 .
- the memory 504 is a volatile memory unit or units.
- the memory 504 is a non-volatile memory unit or units.
- the memory 504 may also be another form of computer-readable medium, such as a magnetic or optical disk.
- the storage device 506 is capable of providing mass storage for the computing device 500 .
- the storage device 506 may be or contain a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations.
- a computer program product can be tangibly embodied in an information carrier.
- the computer program product may also contain instructions that, when executed, perform one or more methods, such as those described above.
- the information carrier is a computer- or machine-readable medium, such as the memory 504 , the storage device 506 , or memory on processor 502 .
- the high speed controller 508 manages bandwidth-intensive operations for the computing device 500 , while the low speed controller 512 manages lower bandwidth-intensive operations.
- the high-speed controller 508 is coupled to memory 504 , display 516 (e.g., through a graphics processor or accelerator), and to high-speed expansion ports 510 , which may accept various expansion cards (not shown).
- low-speed controller 512 is coupled to storage device 506 and low-speed expansion port 514 .
- the low-speed expansion port which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet) may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
- input/output devices such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
- the computing device 500 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server 520 , or multiple times in a group of such servers. It may also be implemented as part of a rack server system 524 . In addition, it may be implemented in a personal computer such as a laptop computer 522 . Alternatively, components from computing device 500 may be combined with other components in a mobile device (not shown), such as device 550 . Each of such devices may contain one or more of computing device 500 , 550 , and an entire system may be made up of multiple computing devices 500 , 550 communicating with each other.
- Computing device 550 includes a processor 552 , memory 564 , an input/output device such as a display 554 , a communication interface 566 , and a transceiver 568 , among other components.
- the device 550 may also be provided with a storage device, such as a microdrive or other device, to provide additional storage.
- a storage device such as a microdrive or other device, to provide additional storage.
- Each of the components 550 , 552 , 564 , 554 , 566 , and 568 are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate.
- the processor 552 can execute instructions within the computing device 550 , including instructions stored in the memory 564 .
- the processor may be implemented as a chipset of chips that include separate and multiple analog and digital processors.
- the processor may provide, for example, for coordination of the other components of the device 550 , such as control of user interfaces, applications run by device 550 , and wireless communication by device 550 .
- Processor 552 may communicate with a user through control interface 558 and display interface 556 coupled to a display 554 .
- the display 554 may be, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display) or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology.
- the display interface 556 may include appropriate circuitry for driving the display 554 to present graphical and other information to a user.
- the control interface 558 may receive commands from a user and convert them for submission to the processor 552 .
- an external interface 562 may be provide in communication with processor 552 , so as to enable near area communication of device 550 with other devices. External interface 562 may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used.
- the memory 564 stores information within the computing device 550 .
- the memory 564 can be implemented as one or more of a computer-readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units.
- Expansion memory 574 may also be provided and connected to device 550 through expansion interface 572 , which may include, for example, a SIMM (Single In Line Memory Module) card interface.
- SIMM Single In Line Memory Module
- expansion memory 574 may provide extra storage space for device 550 , or may also store applications or other information for device 550 .
- expansion memory 574 may include instructions to carry out or supplement the processes described above, and may include secure information also.
- expansion memory 574 may be provide as a security module for device 550 , and may be programmed with instructions that permit secure use of device 550 .
- secure applications may be provided via the SIMM cards, along with additional information, such as placing identifying information on the SIMM card in a non-hackable manner.
- the memory may include, for example, flash memory and/or NVRAM memory, as discussed below.
- a computer program product is tangibly embodied in an information carrier.
- the computer program product contains instructions that, when executed, perform one or more methods, such as those described above.
- the information carrier is a computer- or machine-readable medium, such as the memory 564 , expansion memory 574 , or memory on processor 552 , that may be received, for example, over transceiver 568 or external interface 562 .
- Device 550 may communicate wirelessly through communication interface 566 , which may include digital signal processing circuitry where necessary. Communication interface 566 may provide for communications under various modes or protocols, such as GSM voice calls, SMS, EMS, or MMS messaging, LTE, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others. Such communication may occur, for example, through radio-frequency transceiver 568 . In addition, short-range communication may occur, such as using a Bluetooth, WiFi, or other such transceiver (not shown). In addition, GPS (Global Positioning System) receiver module 570 may provide additional navigation- and location-related wireless data to device 550 , which may be used as appropriate by applications running on device 550 .
- GPS Global Positioning System
- Device 550 may also communicate audibly using audio codec 560 , which may receive spoken information from a user and convert it to usable digital information. Audio codec 560 may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of device 550 . Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating on device 550 .
- Audio codec 560 may receive spoken information from a user and convert it to usable digital information. Audio codec 560 may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of device 550 . Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating on device 550 .
- the computing device 550 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a cellular telephone 580 . It may also be implemented as part of a smart phone 582 , personal digital assistant, or other similar mobile device.
- implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof.
- ASICs application specific integrated circuits
- These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
- the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer.
- a display device e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor
- a keyboard and a pointing device e.g., a mouse or a trackball
- Other kinds of devices can be used to provide for interaction with a user as well; 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, speech, or tactile input.
- the systems and techniques described here can be implemented in a computing system that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front end component (e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here), or 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.
- LAN local area network
- WAN wide area network
- the Internet the global information network
- the computing system can include clients and servers.
- a client and server are generally remote from each other and typically interact through a communication network.
- the relationship of client and server arises by virtue of computer programs
- Methods discussed above may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof.
- the program code or code segments to perform the necessary tasks may be stored in a machine or computer readable medium such as a storage medium and/or a non-transitory computer-readable storage medium.
- a processor(s) e.g., a processor formed on a silicon or GaAs substrate
- references to acts and symbolic representations of operations that may be implemented as program modules or functional processes include routines, programs, objects, components, data structures, etc., that perform particular tasks or implement particular abstract data types and may be described and/or implemented using existing hardware at existing structural elements.
- Such existing hardware may include one or more Central Processing Units (CPUs), digital signal processors (DSPs), application-specific-integrated-circuits, field programmable gate arrays (FPGAs) computers or the like.
- CPUs Central Processing Units
- DSPs digital signal processors
- FPGAs field programmable gate arrays
- the software implemented aspects of the example embodiments are typically encoded on some form of non-transitory program storage medium or implemented over some type of transmission medium.
- the program storage medium may be magnetic (e.g., a floppy disk or a hard drive) or optical (e.g., a compact disk read only memory, or “CD ROM”), and may be read only or random access.
- the transmission medium may be twisted wire pairs, coaxial cable, optical fiber, or some other suitable transmission medium known to the art. The example embodiments not limited by these aspects of any given implementation.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- User Interface Of Digital Computer (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
- This application is a Nonprovisional of, and claims priority to, U.S. Patent Application No. 62/094,045, filed on Dec. 18, 2014, entitled “LOW-CHROME HOSTED APPLICATIONS”, which is incorporated by reference herein in its entirety.
- Embodiments relate to applications, in particular, to Streamlined Hosted Applications, that are executed within the context of a browser.
- Generally, browser-executable web applications are either hosted by a network or remote server or installed on a client computing device. Installed applications generally can be granted more permissions to access local client-side resources than hosted applications. Hosted applications have the advantage of being flexible in that a change to the application can affect all users of the application. However, hosted applications often are not much more than a URL to an existing website and therefore the user experience of interacting with a hosted application may be disappointing when the appearance of the hosted application is indistinguishable from a typical website that displays content of the hosted application.
- Accordingly, in the below description example embodiments disclose mechanisms for providing web applications in which the web application is presented in a user interface that appears similar to an operating system level application.
- In a general aspect, a method of presenting a web application includes receiving a user's selection of a user interface element displayed on a local computing device, where the user interface element includes a visual icon representing the web application. In response to receiving the user selection, the web application is launched in a window of a browser application, where the browser application is customizable to store bookmarks to webpages, and the browser has the ability to display multiple tabs of content of different webpages in a window of the browser. The window of the browser in which the web application is launched is tabless, and the window of the browser includes chrome displaying a back button and a forward button, where the buttons are selectable to navigate to a webpage in a history of webpages viewed by the user in the window, and a reload button that is selectable to reload a webpage currently-viewed in the window. The chrome includes no user interface elements that may be selected to store a bookmark to a webpage and includes no user interface elements that display user-defined bookmarks to webpages.
- Implementations can include one or more of the following features, alone or in combination with one or more other features. For example, the chrome can include a visual icon representing the web application. In response to receiving the user selection, an icon for, and the name of, the web application can be displayed, in an application task manager of an operating system of the computing device. In response to receiving the user selection, an icon for, and the name of, the browser can be display in the application task manager, where the icon for the browser is different from the icon for the web application.
- The web application can be opened in a tab of a tabbed window of the browser application, a user indication to create the user interface element including the visual icon representing the web application can be received, and the user interface element including the visual icon representing the web application can be stored on a desktop, a start menu, or a taskbar of the computing device. Generating the visual icon representing the web application can be based on content of the web application opened in the tab of the tabbed window of the browser application. Generating the visual icon can include selecting one of a plurality of visual icons provided by the web application opened in the tab of the tabbed window, where the selected visual icon is selected based on the location at which the user interface element is stored.
- User login credentials can be transmitted from the computing device to a server, where the credentials authenticate the user of the computing device to the server computer system and, in response to receiving an acknowledgment of a successful authentication of the user to the server computer system, information about the stored user interface element representing the web application can be transmitted to the server computer system for synchronization from the server computer system to another local computing device from which credentials authenticating the user of the other local computing device are successfully transmitted to the server computing system.
- The chrome can displays a home button that is selectable to cause a homepage of the web application to be displayed within the tabless window of the browser.
- In another general aspect, a system for presenting a web application includes a non-transient computer-readable storage medium storing executable instructions and at least one semiconductor-based processor configured for executing the executable instructions. The execution of the instructions causes the system to receive a user's selection of a user interface element displayed on a local computing device, where the user interface element includes a visual icon representing the web application. In response to receiving the user selection, the web application is launched in a window of a browser application, where the browser application is customizable to store bookmarks to webpages has the ability to display multiple tabs of content of different webpages in a window of the browser. The window of the browser in which the web application is launched is tabless and includes chrome displaying a back button and a forward button, which are selectable to navigate to webpage in a history of webpages viewed by the user, the history including the web application, and a reload button that is selectable to reload the web application. The chrome includes no user interface elements that may be selected to store a bookmark to a webpage.
- Implementations can include one or more of the following features, alone or in combination with one or more other features. For example, the chrome can include a visual icon representing the web application. Execution of the instructions can also cause the system to, in response to receiving the user selection, display, in an application task manager of an operating system of the computing device, an icon for, and the name of, the web application. Execution of the instructions can also cause the system to, in response to receiving the user selection, display, in the application task manager an icon for, and the name of, the browser, wherein the icon for the browser is different from the icon for the web. Execution of the instructions can also cause the system to, open the web application in a tab of a tabbed window of the browser application, receive a user indication to create the user interface element including the visual icon representing the web application, and store the user interface element including the visual icon representing the web application on a desktop, a start menu, or a taskbar of the computing device.
- Execution of the instructions can also cause the system to generate the visual icon representing the web application based on content of the web application opened in the tab of the tabbed window of the browser application. Generating the visual icon can include selecting one of a plurality of visual icons provided by the web application opened in the tab of the tabbed window, where the selected visual icon can be selected based on the location at which the user interface element is stored. Execution of the instructions can also cause the system to transmit user login credentials from the computing device to a server, the credentials authenticating the user of the computing device to the server computer system and, in response to receiving an acknowledgment of a successful authentication of the user to the server computer system, transmit information about the stored user interface element representing the web application to the computer system for synchronization from the server computer system to another local computing device from which credentials authenticating the user of the other local computing device are successfully transmitted to the server computing system.
- The chrome can also display a home button that is selectable to cause a homepage of the web application to be displayed within the tabless window of the browser.
-
FIG. 1 is a schematic block diagram of a system according to at least one example embodiment. -
FIG. 2 is a screenshot of a presentation of a hosted application (e.g., a webpage) by a browser application. -
FIG. 3 is a screenshot of a presentation of a streamlined hosted application by a browser application. -
FIG. 4 is a flowchart of a process of presenting a web application. -
FIG. 5 is a schematic block diagram of a computer device and a mobile computer device that can be used to implement the techniques described here. - A web browser executed by a client computing device can receive code (e.g., web-technology programming code) from a remote server (e.g., a remote server that hosts a website) and can execute the received code on the client device for the benefit of a user of the client device.
- In various implementations, the web browser may include or have installed one or more applications that may be configured to perform tasks for a user. In such an implementation, the application may be configured to be executed or interpreted by the web browser. In general, a browser-executable application is a program that is written in web-technology programming code, i.e., code that is used for programming Internet-available resources and that is executable on the client computing device without compilation. Web-technology programming code is designed to be run entirely within a web browser on the client computing device and includes, for example, markup language code (e.g., HTML5), JavaScript, and CSS. The browser-executable application contains all of the resources necessary to execute the application on the client computing device and the code needed to execute the application by the client computing device is not dynamically generated. Examples of web applications include games, photo editors, and video players that are run inside the browser.
- Web applications can include “hosted web applications,” and “packaged applications.”
- Hosted applications may include at least a portion of a website that itself includes webpages, plus some metadata that may be especially pertinent to the web application or to the user of the web application to allow the web application to perform some particular functionality for the user. Hosted web applications can be run online, e.g., hosted applications are hosted by an online server that executes the application and serves content to the client computing device through the network for presentation to the user though a browser application. In some implementations, hosted web applications can be granted, additional permissions to use local resources of a client computing device, beyond what typical code executed by a browser is permitted to use (e.g., the ability to read content from a local clipboard or the ability to always have a hidden page open which is performing tasks such as synchronizing data for offline use or receiving server-pushed notifications to display to the user). In some implementations, notice of the additional permissions must be provided to the user and the user must explicitly grant the permissions, so that the user is aware of the additional permissions and may determine whether they should be granted in exchange for running the hosted app. Launching the hosted application implicitly grants the permissions requested by the application for all pages whose URLs match those that are listed in the manifest for the application. Then, the application is able to use the features that are enabled by the granted permissions without having to repeatedly ask the user for permission to use the features.
- Packaged applications can be thought of as web applications whose code is bundled, so that the user can download all of the content of the web application for execution by the browser or in a standalone window. A packaged application may not need to have network access to perform its functionality for the user, and rather may be executed successfully by the browser locally on the computing device without access to a network.
- Packaged applications have the option of using extension application programming interfaces (APIs), allowing packaged apps to change the way the browser behaves or looks. In some cases, a packaged application may operate without appearing to run in a browser, e.g., without the browser “chrome” (i.e., UI elements around the webpage or app content displayed in the browser window), tabs, or other user interface of the browser. In such a case, the packaged application could operate in a standalone window without access to content scripts or APIs related to browser state such as cookies, history, bookmarks, open tabs, etc. In various cases, packaged applications may access USB drives, BLUETOOTH devices, open raw network sockets, act as servers, or access the local filesystem, as examples.
- Packaged applications may look and feel like native applications, with a big-screen design and rich user interface. Packaged applications may bundle all their files into a single file (e.g., a zip file, such as a .CRX file) that a user downloads and then installs the content of. This bundling means that, unlike hosted applications, packaged applications do not need to depend on content from the web. Applications may be distributed via a trusted web store, or via individual websites, as examples.
- In some implementations, the API (and/or web API)) may be an element of a web browser as discussed above. However, in some implementations, the API (and/or web API)) may be an element of a web based operating system (Browser-OS). A Browser-OS may be a bootable version of a web browser (including a browser, a media player and a file system). The Browser-OS may store all of a user applications and data on the Web, as opposed to a local hard drive. The Browser-OS (e.g., Chrome-OS®) may replace a traditional operating system.
- Like hosted applications, packaged apps also can be granted additional permissions to use local resources of a client computing device, beyond what typical code executed by a browser is permitted to use. In some implementations, packaged apps may be granted additional permissions that provide more access to local resources of a client computing device than a hosted application is permitted to use. With a packaged application, a user may be comfortable with downloading and installing the application and giving the packaged application a high level of access to the computing device because the packaged application has gone through a verification and validation process before the packaged application listed in a digital marketplace and the app is trusted not to change after it is downloaded and installed on the client computing device. Therefore, the user trusts that the downloaded code will not be malicious, even though the code has been given a high level of access to the computing device.
- By contrast, a hosted web application, even if the application has been approved in the digital marketplace, is essentially nothing more than then a URL to a website. In some implementations, a hosted application may also include some metadata that defines some permissions that provide more access to local resources of the client computing device, but because the code at the website pointed to by the URL can change, users should be reluctant to grant a high level of access to the computing device to a hosted web application because the code may become malicious even if the code had been previously approved. Thus, hosted applications generally present similar, or identical, content as the website identified by the URL of the hosted application.
- To distinguish the presentation of a hosted application from a normal website a hosted application can be presented as a “Low-chrome hosted application” in a user interface that appears more like that of a standalone native application or that of a packaged application and less like that of a website in a regular browser window. For example, much of the browser chrome can be omitted when displaying a low-chrome hosted application to give the low-chrome hosted application the appearance of a native application or a packaged application. In addition, low-chrome hosted applications can be pinned to a task bar, a desktop, and/or a start menu of a client computing device, and they can be launched from their pinned location(s), which, again, gives low-chrome hosted applications may feel closer to native and packaged applications then to typical hosted applications.
-
FIG. 1 is a block diagram of asystem 100 that may be used to implement low-chrome hosted applications using the techniques described herein. The depiction ofsystem 100 inFIG. 1 is shown by way of example. It will be appreciated that other configurations may be used for implementing such techniques. - The
system 100 includesclient computing devices Devices device 110 are described in detail. Theclient computing device 110 may take the form of a number of different devices, such as a personal computer, a television, laptop computer, tablet computer, netbook computer, or a web-enabled phone, as examples. Thedevice 110 includes one ormore processors 112 that can execute instructions stored on one ormore memory devices 114, anoperating system 120 and abrowser 122 that may be used to access various types of content. Such content may include websites, photos, video, audio and executable scripts, for example. Theoperating system 120 can include typical features of an operating system, such as, for example, astart menu 132, adesktop 133, and ataskbar 134 for displaying applications and documents that can be executed on the computing system, and atask manager 135 for displaying information about applications and processes being executed by the computing system. - As shown in
FIG. 1 ,browser 122 can execute a hosted web application (e.g., a website) 130. In some implementations, the web application can be executed as a low-chrome hostedapplication 131, which may be executed on thecomputing device 110 using the techniques described herein. The low-chrome hostedapplication 131 may include respective client-side components of the application. Depending on the particular implementation, the low-chrome hostedapplication 131 may include a description of the application and/or code that is executable by thebrowser 122, where that code provides functionality for the web application. - In the
system 100, thecomputing device 110 is coupled with a network 140. The network 140 may include a data access network that provides access to the Internet and/or the World Wide Web. Via the network 140, computing device 110 (usingbrowser 122, for example) may communicate with a digital marketplace server 150 (e.g., an application server or web store), an application origin 180, and asynchronization server 160. In this example, the application origin 180 may include server-side components for theapplication 130. Theapplication 130 and the low-chrome hostedapplication 131 may operate using multiple origins. - Code for executing the low-chrome hosted
application 131 can be downloaded from the digital marketplace server 150 or from the application origin 180 to theclient computing device 110. In some implementations, code for executing the low-chrome hostedapplication 131 can be downloaded from an application origin 180 (e.g., a website identified by a URL associated with the low-chrome hosted application). In one implementation, the digital marketplace server 150 may be configured to receive requests from user computing devices (such as the computing device 110) for installation of a low-chrome hostedapplication 131, and to provide to theclient computing device 110, in response to such requests, code for executing the low-chrome hostedapplication 131, including a URL associated with the low-chrome hostedapplication 131. - In the arrangement shown in
FIG. 1 ,browser 122 may be used to request hostedapplications 130 from the digital marketplace server 150. For example, the digital marketplace 150 may implement a website that is used to distribute web applications, among other content. As an example, the digital marketplace server 150 may implement an e-commerce site. - Hosted
applications 130 can be downloaded and executed by thecomputing system 110, for example, by thebrowser 122. Hostedapplications 130 can be executed by a typical instance of a browser application, where the browser application can be customized to store bookmarks to webpages and hosted applications and where the browser application can display multiple tabs of different content. In some implementations, a user may indicate that a particular web application 130 (e.g., a webpage) should be executed by the browser as a low-chrome hostedapplication 131 to provide a streamlined user interface for the particular web application in which the instance of the browser executing the low-chrome hostedapplication 131 does not display any tabs and includes only a limited amount of chrome around the content of the low-chrome hosted application. Thus, the web application executed as a low-chrome hostedapplication 131 appears more like a native application. - A user may provide this indication to present a hosted application as a low-chrome hosted
application 131 by interacting with a user interface element present on the content of theweb application 131 by interacting with a user interface element associated with the browser executing theweb application 130. In response to this indication, information may be stored in association with thebrowser 122 to indicate that the particular webpage should be executed and presented as a low-chrome hostedapplication 131. Furthermore, in response to this indication, an icon representing the low-chrome hosted application may be displayed in a location typically reserved for native applications, such as, for example, on thestart menu 132, on thedesktop 133, on thetaskbar 134, etc., and selection of the icon may cause the particular webpage to be launched and presented as a low-chrome hostedapplication 131 by thebrowser 122. When the particular application is launched and presented as a low-chrome hostedapplication 131, the low-chrome hosted application may be listed in the list of applications or processes of thetask manager 135 of theoperating system 120. For example, an icon and the name of the low-chrome hostedapplication 131 can be presented in thetask manager 135. The icon and the name of the low-chrome hostedapplication 131 can be presented in the task manager separately from the icon and the name of thebrowser application 122, which, again, suggests to the user that the low-chrome hosted application is more than just a website. - The
system 100 can also include async server 160 that can store unique identifiers to enable syncing between various user sessions on different client computing devices e.g.,computing device sync server 160 via a network 140. Accordingly, the user's low-chrome hosted applications, along with the user's bookmarks, extensions, theme, and other browser preferences and/or settings, may be saved at thesync server 160 and synced to a user's account. The user can then access this synced information anytime the user signs into the web browser on other computers and devices. - In the example of
FIG. 1 , thecomputing device 110, server 150 and/orsync server 160 are understood to represent virtually any computing system configured to perform the techniques described herein. As such, thecomputing device 110, server 150 and/orsync server 160 may be understood to include various components which may be utilized to implement the techniques described herein, or different or future versions thereof. By way of example, the computing device server 150 and/orsync server 160 are illustrated as including the at least oneprocessor 112 as well as the at least one memory 114 (e.g., a non-transitory computer readable storage medium) respectively. Theprocessor 112 may be formed on a substrate and may be utilized to execute instructions stored on thememory 114 to thereby implement the various features and functions described herein, or additional or alternative features and functions. -
FIG. 2 is ascreenshot 200 of a presentation of a hosted application 130 (e.g., a webpage) by a browser application. The presentation of the hosted application includes content of the application displayed in a main window of the browser, which is framed by chrome of the browser application. The hostedapplication 130 is identified by aURL 202 displayed a location bar of the chrome, and by a name and icon associated with the hosted application, which are displayed in atab 204 of the chrome.Other tabs 206 also can be displayed in the chrome, and selection of anothertab 206 can cause content of a hosted application associated with theother tab 206 to be displayed in the main window of the browser. The chrome also can include a display of one ormore bookmarks icon 220 identifying a folder that stores additional bookmarks also can be displayed in the chrome of the browser. - Below the chrome of the browser, an
icon 222 identifying a start menu provided by the operating system of the computing device can be displayed. The selection of thestart menu icon 222 can cause the display of a menu of applications that may be executed by the client computing device. Also below the chrome of the browser,icons taskbar 234, where the icons in the taskbar identify applications that can be launched as a result of a selection of the icon.Icons Icon 232 identifies a low-chrome hosted application that can be launched through selection of theicon 232 displayed in the taskbar. The low-chrome hostedapplication 131 associated with theicon 232 corresponds to the hostedapplication 130 presented in the screenshot ofFIG. 2 . Icons, similar toicon 232, for launching a low-chrome hostedapplication 131 can be created and displayed in other areas controlled by the operating system that typically are reserved for natively-executed applications. For example, an icon for a low-chrome hostedapplication 131 can be created and displayed in thestart menu desktop 133. - To create an
icon 232 for launching a low-chrome hosted application, a user interacting with a hostedapplication 130 displayed in a tabbed browser (e.g., as shown inFIG. 2 ) can select a user interface element within the chrome of the tabbed browser and then provide an indication that a low-chrome hosted application should be created for the currently displayed webpage and that an icon for the low-chrome hosted application corresponding to the currently displayed webpage should be created and stored on the computing device. For example, a user may select a settings user interface element 240 (e.g., a wrench icon, a gear icon, etc.), which may then present a menu of options for creating one or more icons for the low-chrome hosted application to be created and stored in one or more locations on the computing device. When a user creates a low-chrome hostedapplication 131 and one or more icons used for launching the low-chrome hosted application, information may be stored in the browser to indicate that when the low-chrome hosted application is launched by interacting with one or more of the created icons, that the content of the application should be launched and presented by the browser in the low-chrome hosted application mode. -
FIG. 3 is ascreenshot 300 of a presentation of a low-chrome hostedapplication 131 by a browser application. The presentation of the low-chrome hostedapplication 131 includes content of the application displayed in a main window of the browser, which is framed by a limited amount of chrome of the browser application. The low-chrome hostedapplication 131 is identified by a URL that is stored in association with an icon used to launch the low-chrome hosted application, but the URL is not displayed in a location bar of the chrome of the browser. In some implementations, the chrome of the browser used to display the low-chrome hostedapplication 131 cannot ever display the URL for the low-chrome hosted application. In some implementations, the chrome of the browser used to display the low-chrome hostedapplication 131 displays aname 302 and anicon 304 associated with the low-chrome hosted application, where thename 302 and theicon 304 are provided by the content of the low-chrome hosted application. - The browser interface used to display the low-chrome hosted application is tabless, in that the chrome of the browser interface does not display any tabs for content other than the low-chrome hosted application. In addition, the chrome of the browser interface for the low-chrome hosted
application 131 does not display any user-created bookmarks, the selection of which may cause the content associated with the bookmark to be displayed in the main window of the browser. In some implementations, when the browser displays the low-chrome hostedapplication 131 and its limited chrome mode, the user may be prohibited from adjusting any setting of the browser to display another tab or to display a bookmark. - As with the typical browser interface shown in
FIG. 2 , when displaying a low-chrome hostedapplication 131 by a browser in the limited-chrome mode associated with the low-chrome hosted application, anicon 322 identifying a start menu provided by the operating system of the computing device can be displayed below the chrome of the browser. The selection of thestart menu icon 322 can cause the display of a menu of applications that may be executed by the client computing device. Also below the chrome of the browser used to display the low-chrome hostedapplication 131,icons taskbar 334, where the icons in the taskbar identify applications that can be launched as a result of a selection of the icon.Icons Icon 332 identifies a low-chrome hosted application that can be launched through selection of theicon 332 displayed in the taskbar. - The content of the low-chrome hosted
application 131 displayed in the main window of the browser can includehyperlinks back button 340 and aforward button 342 that can be selected to load content from a sequential list of accessed content displayed in the low-chrome hosted application, where theback button 340 is used to access content one step in one direction of the sequential list and theforward button 342 is used to access content one step in an opposite direction of the sequential list. - The chrome of the browser used to present the low-chrome hosted application also can include a
home button 344 that can be the selected to display content specified by the URL associated with the icon used to launch the low-chrome hosted application. The chrome of the browser used to present the low-chrome hosted application also can include a reloadbutton 346 that can be used to reload content of the currently displayed page of the low-chrome hosted application. In addition, the chrome of the browser used to present the low-chrome hosted application can display auser interface element 334 that can be selected to close theapplication 131, auser interface element 336 that can be used to reduce the size of the window used to display the application and auser interface element 338 that can be selected to minimize the window. The chrome of the browser used to present the low-chrome hostedapplication 131 also can include avertical scroll bar 314 and a horizontal scrollbar (not shown) that can be used to through content of the low-chrome hosted application displayed in the browser window. -
FIG. 4 is a flowchart aprocess 400 of presenting a web application, according to example embodiments. The steps described with regard toFIG. 4 may be performed due to the execution of software code stored in a memory (e.g., memory 114) associated with an apparatus (e.g., as shown inFIG. 1 ) and executed by at least one processor (e.g., at least one processor 112) associated with the apparatus. However, alternative embodiments are contemplated such as a system embodied as a special purpose processor. Although the steps described below are described as being executed by a processor, the steps are not necessarily executed by a single processor. In other words, at least one processor may execute the steps described below with regard toFIG. 4 . - After the
process 400 of presenting a web application starts, a user's selection of a user interface element displayed on a local computing device is received, where the user interface element include a visual icon representing the web application (402). In response to receiving the user selection, the web application is launched in a window of a browser application (404). The browser application is customizable to store bookmarks to webpages, and the browser having the ability to display multiple tabs of content of different webpages in a window of the browser, but the window of the browser in which the web application is launched is tabless. The window of the browser in which the web application is launched includes chrome displaying a back button and a forward button, the buttons being selectable to navigate to webpage in a history of webpages viewed by the user. The chrome includes a reload button being selectable to reload the web application, but the chrome include no user interface elements that may be selected to store a bookmark to a webpage and the chrome includes no user interface elements that display user-defined bookmarks to webpages. - In some implementations, the web application can be opened in a tab of a tabbed window of the browser application (406). A user indication to create the user interface element including the visual icon representing the web application can be received (408). Then, the user interface element including the visual icon representing the web application can be stored on a desktop, a start menu, or a taskbar of the computing device (410).
- As will be appreciated, the techniques and systems described herein may be implemented as an element of and/or an extension of the
generic computer device 500 and/or the genericmobile computer device 550 described below with regard toFIG. 5 . Alternatively, or in addition to, thesystem 200 illustrated inFIG. 2 may be implemented in a separate system from thegeneric computer device 500 and/or the genericmobile computer device 550 having some or all of the features described below with regard to thegeneric computer device 500 and/or the genericmobile computer device 550. - As will be appreciated, the system 200 (and/or elements thereof) illustrated in
FIG. 2 may be implemented as an element of and/or an extension of thegeneric computer device 500 and/or the genericmobile computer device 550 described below with regard toFIG. 5 . Alternatively, or in addition to, thesystem 200 illustrated inFIG. 2 may be implemented in a separate system from thegeneric computer device 500 and/or the genericmobile computer device 550 having some or all of the features described below with regard to thegeneric computer device 500 and/or the genericmobile computer device 550. -
FIG. 5 shows an example of ageneric computer device 500 and a genericmobile computer device 550, which may be used with the techniques described here.Computing device 500 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers.Computing device 550 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular telephones, smart phones, and other similar computing devices. The components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit implementations of the inventions described and/or claimed in this document. -
Computing device 500 includes aprocessor 502,memory 504, astorage device 506, a high-speed interface 508 connecting tomemory 504 and high-speed expansion ports 510, and alow speed interface 512 connecting tolow speed bus 514 andstorage device 506. Each of thecomponents processor 502 can process instructions for execution within thecomputing device 500, including instructions stored in thememory 504 or on thestorage device 506 to display graphical information for a GUI on an external input/output device, such asdisplay 516 coupled tohigh speed interface 508. In other implementations, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also,multiple computing devices 500 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system). - The
memory 504 stores information within thecomputing device 500. In one implementation, thememory 504 is a volatile memory unit or units. In another implementation, thememory 504 is a non-volatile memory unit or units. Thememory 504 may also be another form of computer-readable medium, such as a magnetic or optical disk. - The
storage device 506 is capable of providing mass storage for thecomputing device 500. In one implementation, thestorage device 506 may be or contain a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations. A computer program product can be tangibly embodied in an information carrier. The computer program product may also contain instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as thememory 504, thestorage device 506, or memory onprocessor 502. - The
high speed controller 508 manages bandwidth-intensive operations for thecomputing device 500, while thelow speed controller 512 manages lower bandwidth-intensive operations. Such allocation of functions is exemplary only. In one implementation, the high-speed controller 508 is coupled tomemory 504, display 516 (e.g., through a graphics processor or accelerator), and to high-speed expansion ports 510, which may accept various expansion cards (not shown). In the implementation, low-speed controller 512 is coupled tostorage device 506 and low-speed expansion port 514. The low-speed expansion port, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet) may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter. - The
computing device 500 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as astandard server 520, or multiple times in a group of such servers. It may also be implemented as part of arack server system 524. In addition, it may be implemented in a personal computer such as alaptop computer 522. Alternatively, components fromcomputing device 500 may be combined with other components in a mobile device (not shown), such asdevice 550. Each of such devices may contain one or more ofcomputing device multiple computing devices -
Computing device 550 includes aprocessor 552,memory 564, an input/output device such as adisplay 554, acommunication interface 566, and atransceiver 568, among other components. Thedevice 550 may also be provided with a storage device, such as a microdrive or other device, to provide additional storage. Each of thecomponents - The
processor 552 can execute instructions within thecomputing device 550, including instructions stored in thememory 564. The processor may be implemented as a chipset of chips that include separate and multiple analog and digital processors. The processor may provide, for example, for coordination of the other components of thedevice 550, such as control of user interfaces, applications run bydevice 550, and wireless communication bydevice 550. -
Processor 552 may communicate with a user throughcontrol interface 558 anddisplay interface 556 coupled to adisplay 554. Thedisplay 554 may be, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display) or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology. Thedisplay interface 556 may include appropriate circuitry for driving thedisplay 554 to present graphical and other information to a user. Thecontrol interface 558 may receive commands from a user and convert them for submission to theprocessor 552. In addition, anexternal interface 562 may be provide in communication withprocessor 552, so as to enable near area communication ofdevice 550 with other devices.External interface 562 may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used. - The
memory 564 stores information within thecomputing device 550. Thememory 564 can be implemented as one or more of a computer-readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units.Expansion memory 574 may also be provided and connected todevice 550 throughexpansion interface 572, which may include, for example, a SIMM (Single In Line Memory Module) card interface.Such expansion memory 574 may provide extra storage space fordevice 550, or may also store applications or other information fordevice 550. Specifically,expansion memory 574 may include instructions to carry out or supplement the processes described above, and may include secure information also. Thus, for example,expansion memory 574 may be provide as a security module fordevice 550, and may be programmed with instructions that permit secure use ofdevice 550. In addition, secure applications may be provided via the SIMM cards, along with additional information, such as placing identifying information on the SIMM card in a non-hackable manner. - The memory may include, for example, flash memory and/or NVRAM memory, as discussed below. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as the
memory 564,expansion memory 574, or memory onprocessor 552, that may be received, for example, overtransceiver 568 orexternal interface 562. -
Device 550 may communicate wirelessly throughcommunication interface 566, which may include digital signal processing circuitry where necessary.Communication interface 566 may provide for communications under various modes or protocols, such as GSM voice calls, SMS, EMS, or MMS messaging, LTE, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others. Such communication may occur, for example, through radio-frequency transceiver 568. In addition, short-range communication may occur, such as using a Bluetooth, WiFi, or other such transceiver (not shown). In addition, GPS (Global Positioning System)receiver module 570 may provide additional navigation- and location-related wireless data todevice 550, which may be used as appropriate by applications running ondevice 550. -
Device 550 may also communicate audibly usingaudio codec 560, which may receive spoken information from a user and convert it to usable digital information.Audio codec 560 may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset ofdevice 550. Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating ondevice 550. - The
computing device 550 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as acellular telephone 580. It may also be implemented as part of asmart phone 582, personal digital assistant, or other similar mobile device. - Various implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, 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 that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
- These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms “machine-readable medium” “computer-readable medium” refers to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) 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.
- To provide for interaction with a user, the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; 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, speech, or tactile input.
- The systems and techniques described here can be implemented in a computing system that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front end component (e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here), or 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.
- The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs
- Some of the above example embodiments are described as processes or methods depicted as flowcharts. Although the flowcharts describe the operations as sequential processes, many of the operations may be performed in parallel, concurrently or simultaneously. In addition, the order of operations may be re-arranged. The processes may be terminated when their operations are completed, but may also have additional steps not included in the figure. The processes may correspond to methods, functions, procedures, subroutines, subprograms, etc.
- Methods discussed above, some of which are illustrated by the flow charts, may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine or computer readable medium such as a storage medium and/or a non-transitory computer-readable storage medium. A processor(s) (e.g., a processor formed on a silicon or GaAs substrate) may perform the necessary tasks.
- Specific structural and functional details disclosed herein are merely representative for purposes of describing example embodiments. Example embodiments, however, be embodied in many alternate forms and should not be construed as limited to only the embodiments set forth herein.
- It will be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first element could be termed a second element, and, similarly, a second element could be termed a first element, without departing from the scope of example embodiments. As used herein, the term “and/or” includes any and all combinations of one or more of the associated listed items.
- It will be understood that when an element is referred to as being “connected” or “coupled” to another element, it can be directly connected or coupled to the other element or intervening elements may be present. In contrast, when an element is referred to as being “directly connected” or “directly coupled” to another element, there are no intervening elements present. Other words used to describe the relationship between elements should be interpreted in a like fashion (e.g., “between” versus “directly between,” “adjacent” versus “directly adjacent,” etc.).
- The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of example embodiments. As used herein, the singular forms “a,” “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises,” “comprising,” “includes” and/or “including,” when used herein, specify the presence of stated features, integers, steps, operations, elements and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components and/or groups thereof.
- It should also be noted that in some alternative implementations, the functions/acts noted may occur out of the order noted in the figures. For example, two figures shown in succession may in fact be executed concurrently or may sometimes be executed in the reverse order, depending upon the functionality/acts involved.
- Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which example embodiments belong. It will be further understood that terms, e.g., those defined in commonly used dictionaries, should be interpreted as having a meaning that is consistent with their meaning in the context of the relevant art and will not be interpreted in an idealized or overly formal sense unless expressly so defined herein.
- Portions of the above example embodiments and corresponding detailed description are presented in terms of software, or algorithms and symbolic representations of operation on data bits within a computer memory. These descriptions and representations are the ones by which those of ordinary skill in the art effectively convey the substance of their work to others of ordinary skill in the art. An algorithm, as the term is used here, and as it is used generally, is conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of optical, electrical, or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
- In the above illustrative embodiments, reference to acts and symbolic representations of operations (e.g., in the form of flowcharts) that may be implemented as program modules or functional processes include routines, programs, objects, components, data structures, etc., that perform particular tasks or implement particular abstract data types and may be described and/or implemented using existing hardware at existing structural elements. Such existing hardware may include one or more Central Processing Units (CPUs), digital signal processors (DSPs), application-specific-integrated-circuits, field programmable gate arrays (FPGAs) computers or the like.
- It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise, or as is apparent from the discussion, terms such as “processing” or “computing” or “calculating” or “determining” of “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical, electronic quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
- Note also that the software implemented aspects of the example embodiments are typically encoded on some form of non-transitory program storage medium or implemented over some type of transmission medium. The program storage medium may be magnetic (e.g., a floppy disk or a hard drive) or optical (e.g., a compact disk read only memory, or “CD ROM”), and may be read only or random access. Similarly, the transmission medium may be twisted wire pairs, coaxial cable, optical fiber, or some other suitable transmission medium known to the art. The example embodiments not limited by these aspects of any given implementation.
- Lastly, it should also be noted that whilst the accompanying claims set out particular combinations of features described herein, the scope of the present disclosure is not limited to the particular combinations hereafter claimed, but instead extends to encompass any combination of features or embodiments herein disclosed irrespective of whether that particular combination has been specifically enumerated in the accompanying claims at this time.
Claims (18)
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/973,380 US20160179312A1 (en) | 2014-12-18 | 2015-12-17 | Streamlined hosted applications |
DE202015009262.4U DE202015009262U1 (en) | 2014-12-18 | 2015-12-18 | OPTIMIZED HOSTED APPLICATIONS |
PCT/US2015/066749 WO2016100853A1 (en) | 2014-12-18 | 2015-12-18 | Streamlined hosted applications |
US17/303,942 US11620035B2 (en) | 2014-12-18 | 2021-06-10 | Streamlined hosted applications |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462094045P | 2014-12-18 | 2014-12-18 | |
US14/973,380 US20160179312A1 (en) | 2014-12-18 | 2015-12-17 | Streamlined hosted applications |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/303,942 Continuation US11620035B2 (en) | 2014-12-18 | 2021-06-10 | Streamlined hosted applications |
Publications (1)
Publication Number | Publication Date |
---|---|
US20160179312A1 true US20160179312A1 (en) | 2016-06-23 |
Family
ID=55637422
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/973,380 Abandoned US20160179312A1 (en) | 2014-12-18 | 2015-12-17 | Streamlined hosted applications |
US17/303,942 Active US11620035B2 (en) | 2014-12-18 | 2021-06-10 | Streamlined hosted applications |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/303,942 Active US11620035B2 (en) | 2014-12-18 | 2021-06-10 | Streamlined hosted applications |
Country Status (3)
Country | Link |
---|---|
US (2) | US20160179312A1 (en) |
DE (1) | DE202015009262U1 (en) |
WO (1) | WO2016100853A1 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160274777A1 (en) * | 2015-03-17 | 2016-09-22 | International Business Machines Corporation | Intelligent taskbar shortcut menu for webpage control |
US10866728B2 (en) * | 2018-10-23 | 2020-12-15 | Lenovo (Singapore) Pte. Ltd. | Notch taskbar |
US20220303147A1 (en) * | 2021-03-17 | 2022-09-22 | Lenovo (Singapore) Pte. Ltd. | Method and device to manage browser instances based on link categorization |
US11663285B2 (en) * | 2021-09-06 | 2023-05-30 | Microsoft Technology Licensing, Llc | Webpage management in native application |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160179312A1 (en) | 2014-12-18 | 2016-06-23 | Google Inc. | Streamlined hosted applications |
KR102572383B1 (en) * | 2021-08-24 | 2023-08-29 | 삼성에스디에스 주식회사 | Method and apparatus for managing application |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5818446A (en) | 1996-11-18 | 1998-10-06 | International Business Machines Corporation | System for changing user interfaces based on display data content |
US20030112271A1 (en) | 2001-12-14 | 2003-06-19 | International Busi Ness Machines Corporation | Method of controlling a browser session |
US8793584B2 (en) * | 2006-05-24 | 2014-07-29 | International Business Machines Corporation | Customizable user interface wrappers for web applications |
US8725585B1 (en) * | 2010-05-18 | 2014-05-13 | Google Inc. | Automatic vetting of web applications to be listed in a marketplace for web applications |
US20110307810A1 (en) * | 2010-06-11 | 2011-12-15 | Isreal Hilerio | List integration |
US20120311050A1 (en) * | 2011-06-01 | 2012-12-06 | Eitan Lev | User browsing experience |
US10346498B2 (en) * | 2012-02-06 | 2019-07-09 | Microsoft Technology Licensing, Llc | Presenting and interacting with a hyperlink dialog for generating hyperlinks |
US20130268837A1 (en) * | 2012-04-10 | 2013-10-10 | Google Inc. | Method and system to manage interactive content display panels |
US20140096042A1 (en) | 2012-07-09 | 2014-04-03 | Aaron Tyler Travis | Method and system for generating and storing a collection of interactive browsers within a navigation plane |
US20140237020A1 (en) | 2013-02-20 | 2014-08-21 | Sap Portals Israel Ltd. | Web-based operating system framework application network |
US20160179312A1 (en) | 2014-12-18 | 2016-06-23 | Google Inc. | Streamlined hosted applications |
-
2015
- 2015-12-17 US US14/973,380 patent/US20160179312A1/en not_active Abandoned
- 2015-12-18 WO PCT/US2015/066749 patent/WO2016100853A1/en active Application Filing
- 2015-12-18 DE DE202015009262.4U patent/DE202015009262U1/en active Active
-
2021
- 2021-06-10 US US17/303,942 patent/US11620035B2/en active Active
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160274777A1 (en) * | 2015-03-17 | 2016-09-22 | International Business Machines Corporation | Intelligent taskbar shortcut menu for webpage control |
US10489013B2 (en) * | 2015-03-17 | 2019-11-26 | International Business Machines Corporation | Intelligent taskbar shortcut menu for webpage control |
US10866728B2 (en) * | 2018-10-23 | 2020-12-15 | Lenovo (Singapore) Pte. Ltd. | Notch taskbar |
US20220303147A1 (en) * | 2021-03-17 | 2022-09-22 | Lenovo (Singapore) Pte. Ltd. | Method and device to manage browser instances based on link categorization |
US11477043B2 (en) * | 2021-03-17 | 2022-10-18 | Lenovo (Singapore) Pte. Ltd. | Method and device to manage browser instances based on link categorization |
US11663285B2 (en) * | 2021-09-06 | 2023-05-30 | Microsoft Technology Licensing, Llc | Webpage management in native application |
Also Published As
Publication number | Publication date |
---|---|
US20210294468A1 (en) | 2021-09-23 |
WO2016100853A1 (en) | 2016-06-23 |
DE202015009262U1 (en) | 2017-01-18 |
US11620035B2 (en) | 2023-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11620035B2 (en) | Streamlined hosted applications | |
US10681050B2 (en) | Ephemeral applications | |
US8601468B1 (en) | Web-based applications using web extents | |
US8935755B1 (en) | Managing permissions and capabilities of web applications and browser extensions based on install location | |
US11785072B2 (en) | Method, apparatus, and system for pushing application program, and device | |
US9887965B2 (en) | Method and system for browser identity | |
EP3255909A1 (en) | Messaging application interacting with one or more extension applications | |
US9537925B2 (en) | Browser notifications | |
US20150207800A1 (en) | Systems and methods for enabling access to a web application | |
AU2014308856B2 (en) | Opening unsupported file types through remoting sessions | |
WO2013142321A1 (en) | Providing information about a web application or extension offered by website based on information about the application or extension gathered from a trusted site | |
US20140089914A1 (en) | Cross system installation of web applications | |
US9805181B1 (en) | Messaging channel for web pages and web applications | |
US9560122B1 (en) | Secure native application messaging with a browser application | |
US20140282032A1 (en) | Dynamically configuring user experiences with action uniform resource identifiers | |
US10116638B2 (en) | Method and device for uploading data to social platform | |
US20210097027A1 (en) | Opening unsupported file types through remoting sessions | |
US10592063B1 (en) | Controlling actions for browser extensions | |
US10025574B1 (en) | Packaged installation file based on automatic detection of device capabilities | |
US9537894B1 (en) | Ephemeral user account system | |
US9929973B2 (en) | Method of and a system for providing access to a file to a web resource | |
US10157287B2 (en) | Secure access client | |
US10380614B1 (en) | User reset voting to identify unwanted settings values in client software | |
US20120311459A1 (en) | Facilitated content item transfer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: GOOGLE INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LAM, CHRISTOPHER;WELLS, BEN FREDERICK;SIGNING DATES FROM 20160103 TO 20160105;REEL/FRAME:037457/0206 |
|
AS | Assignment |
Owner name: GOOGLE LLC, CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:GOOGLE INC.;REEL/FRAME:044129/0001 Effective date: 20170929 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO PAY ISSUE FEE |