Patent ID: 12216885

DETAILED DESCRIPTION

The following detailed description refers to the accompanying drawings. Wherever possible, the same reference numbers are used in the drawing and the following description to refer to the same or similar elements. While aspects of the technology may be described, modifications, adaptations, and other implementations are possible. For example, substitutions, additions, or modifications may be made to the elements illustrated in the drawings, and the methods described herein may be modified by substituting, reordering, or adding stages to the disclosed methods. Accordingly, the following detailed description does not limit the technology, but instead, the proper scope of the technology is defined by the appended claims. Examples may take the form of a hardware implementation, or an entirely software implementation, or an implementation combining software and hardware aspects. The following detailed description is, therefore, not to be taken in a limiting sense.

In an example implementation, a web browser includes a framework that exposes web-based applications (referred to herein as “applications”) that launch within the web browser. The framework provides a sidebar interface (referred to herein as a “sidebar”) in which icons corresponding to the applications are displayed. Typically, a user can select an icon to open the corresponding application in the web browser and then select a desired application function located within a menu in an application interface. That is, accessing the desired function of the application requires multiple user interactions to access. For instance, if the user is using a mouse as an input device, to access a particular application function, the user may first click the icon of the application to open the application, then click through a hierarchical menu to access the desired function.

As discussed above, this can limit the ability to fully explore and utilize capabilities of an application and lead to underutilization of various application features. Additionally, requiring multiple user interactions to access an application function can increase the processing resources required to complete the task. For instance, each user interaction requires additional processor and display cycles. The requirement of multiple interactions also can also reduce the interaction performance, making the overall user experience less efficient, which can be problematic for repetitive and/or time-sensitive tasks. Further, user frustration can arise from a perceived inefficiency and/or extra effort required to complete a task, which can negatively impact user satisfaction and lead to decreased usage of the application. Moreover, excessive user interactions can present challenges for users with disabilities or impairments. For instance, users who have motor skill limitations or visual impairments may have difficulty navigating multiple user interactions.

Examples described in this disclosure relate to a quick actions controller that provides dynamic quick actions corresponding to various application functions in a quick-actions card. In an example implementation, when an on-screen cursor (e.g., controlled by the user via an input device or touch screen) is detected hovering or pausing on an icon displayed in the sidebar (or a long press), the quick actions controller generates a quick-actions card that includes quick actions of an application corresponding to the hovered-on icon from which the user can select. The quick actions are selectable. A selection of a quick action triggers the web browser to handle an action (herein referred to as an executable action) linked to the selected quick action, wherein handling the action causes the application function to be performed.

With reference now toFIG.1, in examples, executable actions110a-110c(collectively, executable actions110) for a set of quick actions116a-116c(collectively, quick actions116) are defined for an application118in a quick-actions manifest102provided by a provider of the application118and stored on a server. When the quick actions controller generates a quick-actions card111for the application118, the quick-actions manifest102corresponding to the application118is obtained from the server and processed. For instance, the quick actions controller links configuration information defined in the quick-actions manifest102to user interface (UI) elements108a-108i(collectively, UI elements108) and other placeholders included in a custom view104of a quick-actions card111. Example configuration information may define a type of custom view104(e.g., a menu custom view122or a mini-controller custom view166), a title105and icon107to display in the quick-actions card111, and one or more quick actions116. For each quick action116, the quick-actions manifest102may define various configuration properties of the quick action116, including such properties as a type of UI element108(e.g., button, slider, toggle switch, label, progress indicator, icon, status indicator) provided in the defined custom view104to represent the quick action116, a title106a-106c(collectively, title106), if applicable, to display in association with the UI element108, and an executable action110a-110c(collectively, executable action110) to bind to the UI element108. For instance, a selection of a quick action116triggers the executable action110linked to the selected quick action116, where handling the executable action110causes an application function112to be performed.

In examples, the quick actions116are configurable by the application provider. For instance, updates for quick actions116are pushed to the server and obtained by the quick actions controller to generate quick actions116that reflect the updates. The quick actions116enable the user to easily discover application functions112and accomplish tasks via the use of such functions112in a quick, intuitive, and efficient manner.

With reference now toFIG.2A, an example quick-actions card111is depicted. For instance, the quick-actions card111includes a plurality of quick actions116a-116c(collectively, quick actions116) for an application118that launches within a web browser202. The quick actions116provide users quick accessibility to an application's functions112within the web browser202. The web browser202is executed on a client computing device204and allows users to access and view websites and webpages via one or more networks. The web browser202provides a UI (web browser UI205) displayed on a screen208of the client computing device204. The web browser UI205includes various features of the web browser202and enables users to navigate through different websites, interact with web-based applications (e.g., applications118), perform tasks, access various types of content, such as text, images, videos, etc., communicate information, manipulate data, etc.

As shown inFIG.2A, the web browser UI205includes a primary display area220and a sidebar210. For example, the web browser202displays a webpage in the primary display area220and the sidebar210is located on one side of the primary display area220. Although depicted as located on the righthand side of the primary display area220, in other examples, the sidebar210is located along another side (e.g., lefthand side, top, or bottom) of the primary display area220. In examples, the sidebar210provides application icons206a-206c(collectively, icons206) corresponding to the applications118. For instance, the applications118are associated with remote services executing on one or more remote web servers. In an example, the applications118include one or a suite of productivity applications (e.g., word processing applications, spreadsheet applications, presentation applications, communication applications, notes applications), games, media player applications, and/or other types of applications. In some examples, when a selection (e.g., a mouse click, a tap) of an application icon206is received, a sidebar pane is activated and extends from the sidebar210. The sidebar pane displays content associated with the selected application118side-by-side content displayed in the primary display area220. An example sidebar pane is depicted inFIG.2Eand described below with reference toFIG.2E.

In examples, a user interacts with the web browser202and applications118using an input device233to move a cursor212displayed on the screen208of the client computing device204. The input device233is further used to interact with and make selections of UI elements included in the web browser UI205and application UIs. Some example input devices233include a mouse, pen, stylus, touchpad, touchscreen, microphone, optical/magnetic sensor, gamepad, joystick, keyboard, etc. According to examples, selections of UI elements are made using the input device233, such as by the user clicking a mouse button, tapping a touchscreen, pressing a key, etc., to indicate their selection. For instance, a mouse click, a screen tap, a key press, etc., received via the input device233triggers a selection event.

According to examples, the user may use the input device233to hover or pause the cursor212(e.g., a mouse cursor) over a UI element without performing a click or pressing a key. For instance, a hover event is triggered when the cursor212enters the boundaries of the UI element and a time threshold is met. In some examples, the input device233may not have a hover capability and an alternative interaction (a press and hold action on a UI element on a touchscreen) is detected as a hover event.

As depicted inFIG.2A, a first hover event is detected in association with an application icon206, and a quick-actions card111for the application118corresponding to the application icon206is generated and displayed. In some examples, the quick-actions card111expands from the sidebar210proximate to the application icon206. For instance, when the user hovers or pauses the cursor212within boundaries213of the application icon206, a set of quick actions116corresponding to the selected application118is populated into the quick-actions card111, where the quick actions116are linked to executable actions110and handled by the web browser202to cause the application118to perform application functions112.

One example type of executable action110is a redirection uniform resource locator (e.g., URL) action. In an example, the redirection URL action includes executable code or instructions that, when executed or performed, drives the web browser202to navigate to a webpage having a web address (e.g., URL) specified in the code. Another type of executable action110is an event action, where the event action includes executable code or instructions that, when executed or performed, drives the web browser202to perform operations that trigger an event handled by the application118. In some examples, the code or instructions, when executed, cause the browser to construct a call to an application programming interface (API) that interacts with the application118to perform a function. For instance, a “wake up desktop application” action event bound to a quick action116may include executable code or instructions that cause the web browser202to trigger an operation in the application118to wake up (e.g., activate or reactivate). Additionally, a “play media” action event also bound to the quick action116may include executable code or instructions that cause the web browser202to trigger an operation in the application118to perform a desired application function112of initiating play of a media item.

Quick actions116may be pre-defined or custom-configured for an application118. As an example, quick actions116for a word processing application118may correspond to creating a new word processing document, opening an existing word processing document, or another word processing application function112, etc., while quick actions116for a communications application118may correspond to different functions112offered by the communications application118, such as creating a new message, responding to a message, creating a new event, or another communications or scheduling function112. In response to a selection event of a quick action116presented in a quick-actions card111, the web browser202executes the corresponding executable action (e.g., URL action or event action). In further examples, the user uses the input device233to move the cursor212outside the boundaries213of an application icon206or the quick-actions card111, which when detected, closes the quick-actions card111and removes the quick actions116from display.

The example quick-actions card111inFIG.2Ais depicted in a menu custom view122, where a set of quick actions116is presented as a list of selectable options (e.g., UI elements108). In examples, the menu custom view122is typically used in association with presenting quick actions116for productivity applications118. In the depicted example, the application118corresponding to the first hovered icon206ais an application suite of productivity applications, and the quick actions116included in the quick-actions card111include a first quick action116acorresponding to an executable action110for a first productivity application of the application suite (e.g., creating a new document in a word processing application), a second quick action116bcorresponding to an executable action110for a second productivity application of the application suite (e.g., creating a new spreadsheet in a spreadsheet application), and a third quick action116ccorresponding to an executable action110or a third productivity application of the application suite (e.g., creating a new presentation in a presentation application).

With reference now toFIG.2B, an example user selection of the first quick action116apresented in the quick-actions card111is depicted. For instance, the user moves the on-screen cursor212within boundaries of the first quick action116aand clicks on or otherwise selects the first quick action116a. When the first quick action116ais bound to a URL action, in response to the selection, the web browser202redirects to a webpage corresponding to a specified URL. As an example, and with reference now toFIG.2C, the URL217corresponds to a webpage of the first application (e.g., a word processing application232) of the productivity application suite associated with the first quick action116a. For instance, the webpage corresponding to the URL217serves a UI of the word processing application232(web processing application UI215), which is displayed in the primary display area220of the web browser UI205. In an example, the URL may further serve a new word processing document234, which is then displayed in the word processing application UI215.

Continuing with the example and with reference now toFIG.2D, in response to a detection of a second hover event of a second icon206b, dynamic quick actions116d-116ecorresponding to the application118of the second icon206bare presented to the user on the screen208. As an example, the second icon206bcorresponds to a mail and calendar application that provides functions112for managing emails, calendars, contacts, tasks, etc. In response to the hover selection of the second icon206b, a corresponding quick-actions card111is generated and displayed. As depicted, a plurality of quick actions116d-116ecorresponding to executable actions for the mail and calendar application are populated in a quick-actions card111presented in the menu custom view122, and a user selection of the fourth quick action116dis made. In response to the selection, the web browser202performs the executable action110linked to the selected fourth quick action116d. For instance, and with reference now toFIG.2E, an application118(e.g., the mail and calendar application242) associated with the fourth quick action116dis opened and its associated UI (mail and calendar application UI225) is displayed in the web browser UI205.

In some examples, and as depicted inFIG.2E, a selection of a quick action116causes the UI of the selected application118(e.g., mail and calendar application UI225) to be displayed in a sidebar pane250that expands out from the sidebar210. For instance, the fourth quick action116dis associated with an event action, where in response to the selection, the web browser202executes code or instructions included in the executable action110bound to the fourth quick action116d. In some examples, each executable action110is bound to one or more event handlers in the application118that are called in response to a selection of the corresponding quick action116. When executed by the web browser202, a communication is transmitted to the application118that triggers the application118to perform operations that handle the quick action116. As an example, the executable action110bound to the fourth quick action116dmay cause the web browser202to construct and send an API request that includes instructions (e.g., an API endpoint and associated parameters) that the application118is configured to process and perform operations to provide one or more application functions112(e.g., wake up the mail and calendar application242, create a new email254). As depicted inFIG.2E, the new email254is displayed in the mail and calendar application UI225, which is displayed in the sidebar pane250. The user can interact with the mail and calendar application242while using the web browser202to perform other tasks on the computing device204, such as composing the new word processing document234displayed in the primary display area220of the web browser UI205. In some examples, the sidebar pane250is located to a side of the primary display area220and activation of the sidebar pane250causes the primary display area220to shrink such that the sidebar pane250does not occlude content (e.g., the webpage serving the word processing application UI215) displayed in the primary display area220. In other examples, the sidebar pane250is provided as an overlay in front at least a portion of the primary display area220.

In further examples, and with reference now toFIG.2F, the quick-actions card111is sometimes displayed in a mini-controller custom view166. In the mini-controller custom view166, a set of quick actions116g-k(collectively, quick actions116) are presented as selectable controls that allow the user to control audio and/or video playback functions112of a corresponding application118. The mini-controller custom view166is used for applications118, such as media player applications252, where the user can select a quick action116to control play of audio and/or video content quickly without requiring multiple user interactions to open the media player application252and then select controls. In examples, the set of quick actions116g-kin the mini-controller custom view166are bound to a set of event actions, where a selection of a quick action in the set causes the web browser202to execute the executable action110linked to the selected quick action. For instance, the event actions may correspond to controlling playing, pausing, stopping, skipping forward and backward, volume, shuffle and repeat options, content selection, and/or other functions112of the media player application252. In some examples, the media player application252includes an event handler that is programmed to handle a trigger received in response to the executable action110being executed by the web browser202.

Having described illustrative examples of the quick-actions card111,FIG.3depicts an example system300for dynamically generating quick actions116for an application118in a web browser202. The web browser202executes on a client computing device204. Examples of client computing devices204include personal computers (PCs), mobile devices (e.g., smartphones, tablets, laptops, personal digital assistants (PDAs)), wearable devices (e.g., smart watches, smart eyewear, fitness trackers, smart clothing, body-mounted devices, head-mounted displays), gaming consoles or devices, Internet of Things (IoT) devices, etc. The web browser202includes web browsing and display functionalities that control retrieval and display of webpages from remote sources, such as web servers312. One or more web servers312provide one or more web-based applications118that can be accessed by and controlled via interactions with the web browser202. The web browser202further includes a quick actions controller310that controls registration of quick actions116and the generation and display of the quick actions116in a quick-actions card111. The quick actions controller310is a set or subset of computing code that causes or controls some of the operations discussed herein relating to generating dynamic quick actions116for display in a quick-actions card111in the web browser202.

In examples, the quick actions controller310controls the display of the quick actions116through the use of configuration data included in a quick-actions manifest102. The quick-actions manifest102is a file or set of code, such as a JavaScript Object Notation (JSON) data, that defines a configuration of the quick-actions card111for an application118and the quick actions116to display in the quick-actions card111. For instance, the quick-actions manifest102may be provided by a developer feature team project manager of the application118and received by a server304. The server304stores, manages, and distributes quick-actions manifests102. In some examples, the web server304receives and distributes a quick-actions manifest102to a manifest delivery service314and/or client computing devices204via a content delivery network306within a minimal time period. For instance, the quick-actions manifest102may be pushed to the devices automatically or as part of a scheduled batch update process.

In examples, the configuration information in the quick-actions manifest102specifies a custom view104(e.g., menu custom view122or the mini-controller custom view166) that defines a structure and style of the quick-actions card111for the application118and the quick actions116presented in the quick-actions card111. In examples, the specified custom view104provides a consistent structure for organizing and displaying quick actions116. For instance, the custom view104includes placeholders for various UI elements108, such as buttons, text fields, sliders, toggle switches, dropdown lists, labels, progress indicators, icons, status indicators, etc. One or more UI elements108in the specified custom view104are mapped to one or more defined quick actions116and operate as interactive elements via which the user can interact with functions112of the corresponding application118.

Each quick action116in the quick-actions manifest102defines an executable action110that specifies a behavior that the web browser202performs in response to a selection of an associated UI element108. Such executable actions110further cause the application118to perform a desired application function112. As discussed above, example executable actions110include URL actions and event actions. Thus, in some examples, the quick-actions manifest102specifies a URL217that the web browser202navigates to when executing a corresponding URL action. In other examples, when the executable action is an event action, the quick-actions manifest specifies an event handler that is triggered when the UI element108associated with the quick action116is selected.

In an example implementation, the system300includes an API318defining a set of rules and protocols that allow the web browser202to communicate and interact with the application118. When the event action is triggered, the event handler initiates an API request to the API318, which processes the request and communicates instructions to the application118to perform specific operations to perform a requested application function112. In some examples, the API318includes a set of endpoints, which define the available operations of the application118and the associated request/response formats.

In examples, the manifests102are handled or managed by a manifest delivery service314. For instance, the manifest delivery service314provides one or more manifests102to the web browser202, where the quick actions controller310then manages the manifests102and corresponding quick action cards111. In an example, the manifest delivery service314is called by the web browser202to retrieve a manifest102for a particular application118.

In an example implementation, the quick actions controller310includes a custom actions builder320, a hover card builder330, and an event listener340that operate to consume the manifests102and generate custom quick-actions cards111for corresponding applications118included in the sidebar210. The custom actions builder320receives a manifest102fetched from the server304, parses the manifest102, and compiles quick action configurations included in the manifest102into executable actions110(e.g., URL actions and/or event actions) that can be executed by the web browser202to control functions112of an application118.

The event listener340monitors user interactions to determine whether to display or close the quick-actions card111. One example user interaction the event listener340listens for is a “cursor enter”, where the on-screen cursor212is detected within boundaries213of an application icon206in the sidebar210. When the cursor212is monitored within the boundaries213of an application icon206, the event listener340starts a timer. In examples, the cursor212within the boundaries213of the application icon206for at least a time threshold (e.g., 600 ms) without a selection of the application icon206(e.g., via a mouse click or tap on a touchscreen), triggers a hover event. When a hover event is triggered determined, the event listener340notifies the hover card builder330to display a quick-actions card111for the application118near the application icon206. In an example implementation, the hover card builder330binds executable actions defined in the quick-actions manifest102to a specified custom view104(e.g., the menu custom view122or the mini-controller custom view166) to generate a quick-actions card111for display according to information received from the event listener340.

In some examples, binding the executable actions110to the custom view104triggers a data request to the application118for retrieving application information for generating the quick-actions card111. For instance, one or more quick actions116defined in a quick-actions manifest102may be dynamic and present information that is updated to display real-time or live data to the user based on updates provided by the application118. As an example, a first dynamic quick action116for a media player application118displayed in the mini-controller custom view166may include information about a current or next song in the user's music playlist and a second dynamic quick action116may include a slider to visually represent a current time position in the song. The information about the current or next song and the current time position is retrieved from the application118for updating the display of the UI elements of the first and second quick actions116in the quick-actions card111.

In a further example, a dynamic quick action116is personalized to a user. For instance, a quick action116for an application118that is dynamic may be linked to a function112of the application118frequently used by the user, where information about frequently used functions112is retrieved from the application118and used to determine particular quick actions116to include in a quick-actions card111. As an example, the user may use a game application118to play two particular games of a plurality of games. Thus, when binding the executable actions110to a custom view104to generate a quick-actions card111, the hover card builder330may request a list of a top number of games (e.g., 2) most frequently used by the user, and then populate the quick-actions card111with two quick actions116corresponding to the two particular games. As another example, a dynamic quick action116may be generated for responding to a recently-received communication, opening a recently-edited document, accepting or declining a recently-received calendar invitation, etc.

Another example user interaction the event listener340listens for is a “cursor exit,” where the cursor212is monitored outside the boundaries213of the hovered-on application icon206or quick-actions card111. When the cursor212is monitored outside the boundaries213of the hovered-on application icon206or quick-actions card111, the event listener340notifies the hover card builder330to close the displayed quick-actions card111.

In further examples, the event listener340listens for a selection user interaction, where an event representing a user selection (e.g., a mouse click, a touch input on a touchscreen) made via a user input device233is received by the event listener340. For instance, the event includes information about the selection, including coordinates of the cursor212on the screen208. When a selection of a quick action116is detected, the event listener340notifies the web browser202to perform the executable action110linked to the selected quick action116.

FIG.4depicts an example method400for dynamically generating quick actions116for an application118in accordance with examples of the present disclosure. The operations of method400may be performed by the web browser202or the computing device204on which the web browser202operates. For instance, some operations of the method400are performed by the quick actions controller310or the manifest delivery service314. At operation402, a web browser202is launched or executed. For instance, the web browser202is opened in response to a user selection of the web browser202.

At operation404, one or more applications118registered with the web browser202and/or profile of the user signed into the web browser202are loaded by the web browser202. In some examples, loading the applications118includes receiving a list of applications118and their respective application manifests from a manifest delivery service (e.g., manifest delivery service314or another manifest delivery service). Operation404further includes updating the web browser UI205based on the loaded applications118. For instance, application icons206corresponding to the applications118are displayed in the sidebar210of the web browser202.

At operation406, a quick-actions manifest102for each of the one or more registered applications118is received. In some implementations, operation406may be included in operation404, where the quick-actions manifests102are retrieved when the application manifests are received. Each received quick-actions manifest102includes configuration data for quick actions116as discussed above. For instance, the configuration information defines a custom view104for presenting the quick actions116in a quick-actions card111and an executable action110linked to each quick action116.

At operation408, the event listener340listens for a user interaction with an application icon206of an application118presented in the sidebar210. At decision operation410, a determination is made as to whether a “cursor enter” user interaction with an application icon206is detected. For instance, when the user moves the cursor212within boundaries213of an application icon206in the sidebar210and a “cursor enter” user interaction is detected, the method400proceeds to operation412, where a timer is started. If a “cursor enter” user interaction with an application icon206is not detected, the event listener340returns to operation408, where it continues to listen for another user interaction event.

At decision operation414, a determination is made as to whether a time threshold is met, triggering a hover event. For instance, when the user's pointer212is within the boundaries213of the application icon206for at least the time threshold without receiving a selection of the application icon206, a hover event with the application icon206is determined. When the time threshold is met and a hover interaction is determined, the method400proceeds to operation416. When the time threshold is not met, the method400returns to operation408.

At operation416, a quick-actions card111is generated, where the hover card builder330binds executable actions110corresponding to a set of quick actions116defined in the corresponding quick-actions manifest102to UI elements108provided in a specified custom view104. For instance, the quick-actions manifest102specifies a menu custom view122or a mini-controller custom view166for the quick-actions card111, executable actions110, and other configuration properties of the quick actions116. In some examples, the executable actions110are URL actions and/or event actions. In some implementations, information is obtained from the application118for generating a quick action116. For instance, the quick action116can be dynamic and linked to live application information, where current application information is requested from the application118and used to determine which quick actions116are included in the quick-actions card111and/or display properties of the quick actions116in the quick-actions card111.

At operation418the hover card builder330renders a quick-actions card111in the web browser UI205including UI elements108representative of the quick actions116defined in the quick-actions manifest102. The quick actions116are presented as selectable UI elements according to the custom view104defined in the quick-actions manifest102. For instance, the quick-actions card111may be presented in a menu custom view122or in a mini-controller custom view166, displaying various selectable quick actions116that are linked to various application functions112.

At decision operation420, a determination is made as to whether a “cursor exit” user interaction with the application icon206or quick-actions card111is detected. For instance, when the user moves the cursor212outside the boundaries213of the application icon206or the quick-actions card111, a “cursor exit” user interaction is detected and the method400proceeds to operation422. At operation422, the quick-actions card111is removed from display.

When a “cursor exit” user interaction with the application icon206or quick-actions card111is not detected, the method400proceeds to decision operation424, where a determination is made as to whether a selection of a quick action116is received. When a selection of a quick action116is not received, the method400returns to decision operation420to determine whether a “cursor exit” user interaction with the application icon206or quick-actions card111is detected. Alternatively, when a determination is made that a selection of a quick action116is received, the method400proceeds to operation426, where the executable action110bound to the selected quick action116is executed by the web browser202. For instance, when the executable action110is a URL action, the web browser202navigates to a specified URL217associated with the application118and the webpage corresponding to the specified URL217is displayed in the primary display area220of the web browser UI205. When the executable action110is an event action, an event handler is triggered that causes the web browser202to initiate an API request that communicates instructions to the application118to perform specific operations that provide an application function112corresponding to the selected quick action116. For instance, the application118may open a new document, create a new message, create a new calendar event, respond to a message or calendar invitation, open a specific document, control playback of a media content item, or another application function112. In some examples, responsive to an event action, the web browser202opens a sidebar pane250and serves a UI of the application118in the sidebar pane250with which the user can interact with the application118through the web browser202.

FIG.5and the associated description provide a discussion of a variety of operating environments in which examples of the invention may be practiced. However, the devices and systems illustrated and discussed with respect toFIG.5is for purposes of example and illustration and is not limiting of a vast number of computing device configurations that may be utilized for practicing aspects of the invention, described herein.FIG.5is a block diagram illustrating physical components (i.e., hardware) of a computing device500with which examples of the present disclosure may be practiced. The computing device components described below may be suitable for a client device running the web browser discussed above. In a basic configuration, the computing device500may include at least one processing unit502and a system memory504. The processing unit(s) (e.g., processors) may be referred to as a processing system. Depending on the configuration and type of computing device, the system memory504may comprise, but is not limited to, volatile storage (e.g., random access memory), non-volatile storage (e.g., read-only memory), flash memory, or any combination of such memories. The system memory504may include an operating system505and one or more program modules506suitable for running software applications550(e.g., a web browser202and a quick actions controller310).

The operating system505, for example, may be suitable for controlling the operation of the computing device500. Furthermore, aspects of the invention may be practiced in conjunction with a graphics library, other operating systems, or any other application program and is not limited to any particular application or system. This basic configuration is illustrated inFIG.5by those components within a dashed line508. The computing device500may have additional features or function. For example, the computing device500may also include additional data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape. Such additional storage is illustrated inFIG.5by a removable storage device509and a non-removable storage device510.

As stated above, a number of program modules and data files may be stored in the system memory504. While executing on the processing unit502, the program modules506may perform processes including, but not limited to, one or more of the operations of the method illustrated inFIG.4. Other program modules that may be used in accordance with examples of the present invention and may include applications such as electronic mail and contacts applications, word processing applications, spreadsheet applications, database applications, slide presentation applications, drawing or computer-aided application programs, etc.

Furthermore, examples of the invention may be practiced in an electrical circuit comprising discrete electronic elements, packaged or integrated electronic chips containing logic gates, a circuit utilizing a microprocessor, or on a single chip containing electronic elements or microprocessors. For example, examples of the invention may be practiced via a system-on-a-chip (SOC) where each or many of the components illustrated inFIG.5may be integrated onto a single integrated circuit. Such an SOC device may include one or more processing units, graphics units, communications units, system virtualization units and various application functionality all of which are integrated (or “burned”) onto the chip substrate as a single integrated circuit. When operating via an SOC, the functionality, described herein, with respect to generating suggested queries, may be operated via application-specific logic integrated with other components of the computing device500on the single integrated circuit (chip). Examples of the present disclosure may also be practiced using other technologies capable of performing logical operations such as, for example, AND, OR, and NOT, including but not limited to mechanical, optical, fluidic, and quantum technologies.

The computing device500may also have one or more input device(s)512such as a keyboard, a mouse, a pen, a sound input device, a touch input device, etc. The output device(s)514such as a display, speakers, a printer, etc. may also be included. The aforementioned devices are examples and others may be used. The computing device500may include one or more communication connections516allowing communications with other computing devices518. Examples of suitable communication connections516include, but are not limited to, RF transmitter, receiver, and/or transceiver circuitry; universal serial bus (USB), parallel, and/or serial ports.

The term computer readable media as used herein may include computer storage media. Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, or program modules. The system memory504, the removable storage device509, and the non-removable storage device510are all computer storage media examples (i.e., memory storage.) Computer storage media may include RAM, ROM, electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other article of manufacture which can be used to store information and which can be accessed by the computing device500. Any such computer storage media may be part of the computing device500. Computer storage media does not include a carrier wave or other propagated data signal.

Communication media may be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and includes any information delivery media. The term “modulated data signal” may describe a signal that has one or more characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media may include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), infrared, and other wireless media.

In an aspect, the technology relates to a computing system for generating dynamic quick actions for an application, the computing system comprising: at least one processor; and memory storing instructions that, when executed by the at least one processor, cause the computing system to: display an icon for an application in a sidebar of a web browser; detect a hover event in association with the icon; bind an executable action to a user interface element based on configuration information received in a quick-actions manifest for the application; display the user interface element representative of a quick action in a quick-actions card near the icon; receive a selection of the user interface element; and execute the executable action bound to the selected user interface element for performing a function of the application corresponding to the represented quick action.

In some examples, the executable action is a uniform resource locator (URL) action including executable code for navigating to a specified URL of a webpage. In further examples, the executable action is an event action including executable code for instructing the application to perform operations that cause the function to be performed. In still further examples, the executable action is an event action, and the instructions cause the system to make an application programming interface (API) call to an API of the application. In yet further examples, the instructions cause the system to open and serve a user interface of the application in a sidebar pane of the web browser. In still yet further examples, the instructions further cause the system to: retrieve information from the application; and perform at least one of: present the retrieved information in the quick-actions card; or use the retrieved information to determine display properties of the user interface element representative of the quick action. In yet further examples, the instructions further cause the system to receive the quick-actions manifest, where the quick-actions manifest defines a plurality of quick actions corresponding to a plurality of functions of the application.

In an aspect, the technology relates to a computer-implemented method for generating dynamic quick actions for an application, comprising: receiving a quick-actions manifest defining a quick action corresponding to a function of an application, where the application is represented by an icon in a sidebar of a web browser; detecting a hover event in association with the icon; binding an executable action defined in the quick-actions manifest to a user interface element representative of the quick action in a quick-actions card; causing a display of the quick-actions card and the user interface element; receiving a selection of the user interface element; and executing the executable action bound to the selected user interface element and causing the function of the application.

In some examples, prior to binding the executing action to the user interface element comprises loading a custom view of the quick-actions card, where the custom view is specified in the quick-actions manifest. In additional examples, loading the custom view comprises loading a menu custom view or a mini-controller custom view. In further examples, binding the executable action defined in the quick-actions manifest to the user interface element comprises binding a uniform resource locator (URL) action to the user interface element, wherein the URL action includes a URL of a webpage. In yet further examples, executing the executable action bound to the selected user interface element comprise navigating to the webpage of the URL included in the URL action. In still yet further examples, binding the executable action defined in the quick-actions manifest to the user interface element comprises binding an event action to the user interface element, wherein the event action includes executable code for performing the function of the application. In yet further examples, executing the executable action comprises executing the executable code. In still yet further examples, executing the executable code comprises initiating an application programming interface (API) request that is communicated to the application to instruct the application to perform the function of the application. In yet further examples, executing the executable action comprises causing the application to open and serving a user interface of the application in a sidebar pane of the web browser. In still yet further examples, causing the display of the quick-actions card and the user interface elements comprises: retrieving information from the application; and presenting the retrieved information in the quick-actions card; or using the retrieved information to determine display properties of the quick action. In yet further examples, the quick-actions manifest defines a plurality of quick actions corresponding to a plurality of functions of the application; and causing the display of the quick-actions card and the user interface element comprises: retrieving information from the application; and using the retrieved information to determine one or more of the plurality of quick actions to include in the quick-actions card.

In an aspect, the technology relates to a computer-implemented method for generating dynamic quick actions for an application, comprising: displaying a sidebar within a web browser; displaying, in the sidebar, an icon for an application; receiving a quick-actions manifest for the application including configuration information for a quick action associated with a function of the application; detecting a hover event in association with the icon; applying the configuration information for the quick action to a custom view of a quick-actions card; binding an executable action included in the configuration information to a user interface element in the custom view; displaying the quick-actions card including the user interface element near the icon; receiving a selection of the user interface element; and executing the executable action for performing the function of the application. In some examples, the executable action is an event action including executable code for instructing the application to perform operations that cause the application to open and serve a user interface of the application in a sidebar pane of the web browser.

Aspects of the present invention, for example, are described above with reference to block diagrams and/or operational illustrations of methods, systems, and computer program products according to aspects of the invention. The functions/acts noted in the blocks may occur out of the order as shown in any flowchart. For example, two blocks shown in succession may in fact be executed substantially concurrently or the blocks may sometimes be executed in the reverse order, depending upon the functionality/acts involved. Further, as used herein and in the claims, the phrase “at least one of element A, element B, or element C” is intended to convey any of: element A, element B, element C, elements A and B, elements A and C, elements B and C, and elements A, B, and C.

The description and illustration of one or more examples provided in this application are not intended to limit or restrict the scope of the invention as claimed in any way. The aspects, examples, and details provided in this application are considered sufficient to convey possession and enable others to make and use the best mode of claimed invention. The claimed invention should not be construed as being limited to any aspect, example, or detail provided in this application. Regardless of whether shown and described in combination or separately, the various features (both structural and methodological) are intended to be selectively included or omitted to produce an example with a particular set of features. Having been provided with the description and illustration of the present application, one skilled in the art may envision variations, modifications, and alternate examples falling within the spirit of the broader aspects of the general inventive concept embodied in this application that do not depart from the broader scope of the claimed invention.