Server-driven custom context menus

Systems and methods provide for dynamic menu content for context menus for an object stored on a client device. Requests for context menu content are sent from the client device to a remote server associated with a type of object corresponding to the object stored on the client device. The remote server generates and sends menu content, including one or more custom menu items, to the client device. Upon a user's selection of a menu item, an indicator of the selected menu item is sent to the remote server and an action associated with the selected item is performed. Information relating to requests for menu content and selections of menu items are recorded and, in some embodiments, used as menu content usage data for determining menu content for subsequent requests. Menu content usage data may be used to increase selections of certain menu items and to optimize user experience.

BACKGROUND

Operating systems provide facilities for creating context menus that appear upon request via user input, such as a right-click mouse operation, and that provide a set of options the user may invoke. Menu content locally provided for context menus, however, must be preprogrammed into the operating system or into a locally stored application. Any changes to the menu content, such as adding new features, removing unused features, or implementing a new format for displaying the existing menu items, must be programmed into the local device to be utilized by the user. Additionally, there is no current mechanism for providing feedback on a user's use of the menu items, limiting the ability to improve upon the menu content for increased user satisfaction. In other words, the content for the context menus are static and unresponsive to a user's usage.

SUMMARY

Embodiments of the present invention relate to, among other things, generating, through a remote server, custom menu content for a context menu for an object stored on a client device. Upon a user's request for a context menu, a remote server associated with the type of object corresponding to the object stored on the client device receives a request for custom menu content. The menu content from the server may be customized based on the object's attributes, such as the type of object or object language, for example, and, in some embodiments, the user's subscription level indicating authorization to access different menu content. The menu content, which includes one or more custom menu items, is communicated to the client device for presentation to the user. When a user selects a menu item from the context menu, an indication of the selected item is sent to the remote server, and an action associated with the selected menu item is performed. When the selected menu item is a custom menu item sent from the remote server, the remote server may perform the requested action. In some embodiments, the menu content is determined from the remote server based on menu content usage data. The menu content usage data provides information regarding previous requests for menu content and selections of menu items and, in some embodiments, is specific to the type of object corresponding to the object stored on the client device.

DETAILED DESCRIPTION

Embodiments of the present invention relate to, among other things, generating dynamic, custom menu content for a context menu for an object stored on a client device. As used herein, an object refers to a data structure locally stored on the client device and does not include data structures on a web page. Some embodiments of the present invention, for instance, generate and provide filesystem menu content for a file or file folder object accessed through a filesystem of the client device that controls storage and retrieval of data.

Operating systems generally provide facilities for creating context menus that appear upon request via a particular user input, such as a right-click mouse operation. Context menus, which may also be referred to as right-click menus or shortcut menus, provide a set of options or functions the user may invoke with respect to a selected object stored on the client device. Menu content for context menus for objects stored on a client device, such as files or file folders, traditionally is predetermined by menu content programmed into the operating system or into locally stored applications. To provide updated content for context menus, including adding new menu items, removing unused or old items, and adjusting the presentation format of the menu items, new code for the operating system or application would need to be installed on the client device, which can be a disruptive process. Accordingly, because preprogrammed menu content cannot be easily updated, content for context menus provided through traditional methods is static and unresponsive to newly provided functions or changes to users' interactions with the content.

To provide dynamic content for context menus, embodiments of the present invention generate server-driven content for context menus. In other words, custom content for a context menu is provided by a remote server. Specifically, upon a user's request to a client device for a context menu, a remote server receives a request for custom menu content and determines the custom menu content for that request. In some aspects, the remote server is associated with a type of object corresponding to the object for which the request was made. The menu content is customized in that it is based on the object, including the type of object, for which the request is made and, in some embodiments, the user who initiated the request. The menu content, which includes one or more custom menu items, is communicated to the client device for presentation to the user. The custom menu content from the server may be presented with menu content preprogrammed into the client device, such as default menu items. When a user selects an item from the context menu, an indication of the selected item is sent to the remote server, and an action associated with the selected menu item is performed. In some embodiments, when the selected menu item is a custom menu item, the remote server performs the requested action. By utilizing a server remote from the client device, menu content may be updated more easily, providing dynamic menu items, and may be tailored for a particular type of object and/or user. Although server-driven menu content has been used for web development, servers are not used for determining content for context menus for objects stored on a client device as with embodiments of the present invention.

Some embodiments of the present invention utilize analytics data relating to context menus and user selections to determine the custom menu content. While analytics has been previously used to track usage for websites and desktop applications, there is currently no mechanism for providing feedback on a user's use of the context menu items on a client device or incorporating the feedback to dynamically update the menu content for improved user experience of the menu content. As previously mentioned, embodiments of the present invention include providing indications of a user's selection of a menu item from a context menu having custom, server-driven content. As such, in some embodiments, data corresponding to a user's selection may be recorded and stored in association with data corresponding to the request for menu content. Future determinations of menu content is then determined based on at least this menu content usage data. In this way, the server may determine whether to include or exclude menu items based on the frequency with which users select a particular menu item when the item is presented. More frequently selected menu items, for instance, may be determined to be included in the menu content provided to the user. In some embodiments, additional menu content, such as menu item labels and the order in which the items are listed when presented to the user, are also determined based on the menu content usage data. For example, in response to menu usage data indicating that users rarely select a particular custom menu item, the server may change words or phrases used to label that custom menu item and continue to acquire data to determine whether the new label should remain or be modified based on whether the selection frequency changes. Accordingly, using analytics, embodiments of the present invention can learn what is driving user selection of menu items and leverage this information to dynamically update the menu content to increase selection of certain menu items and increase user satisfaction.

With reference now to the drawings,FIG. 1is a block diagram illustrating an exemplary system100for generating and providing dynamic menu content for context menus in accordance with implementations of the present disclosure. It should be understood that this system100and other arrangements described herein are set forth only as examples. Other arrangements and elements (e.g., machines, interfaces, functions, orders, and groupings of functions, etc.) may be used in addition to or instead of those shown, and some elements may be omitted altogether. Further, many of the elements described herein are functional entities that may be implemented as discrete or distributed components or in conjunction with other components, and in any suitable combination and location. Various functions described herein as being performed by one or more entities may be carried out by hardware, firmware, and/or software. For instance, various functions may be carried out by a processor executing instructions stored in memory.

The system100is an example of a suitable architecture for implementing certain aspects of the present disclosure. Among other components not shown, the system100includes one or more user devices, such as user devices110aand110bthrough110n, a network120, a context menu server130, and one or more data stores150. It should be understood that the system100shown inFIG. 1is an example of one suitable operating environment. Each of the components shown inFIG. 1may be implemented using any type of computing device, such as the computing device500, described in connection toFIG. 5, for example. These components may communicate with each other via the network120, which may be wired, wireless, or both. The network120can include multiple networks or a network of networks but is shown in simple form so as not to obscure aspects of the present disclosure. By way of example, the network120can include one or more wide area networks (WANs), one or more local area networks (LANs), one or more public networks, such as the Internet, and/or one or more private networks. Where the network120includes a wireless telecommunications network, components such as a base station, a communications tower, or even access points (as well as other components) may provide wireless connectivity. Because networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet, the network120is not described in significant detail. Additionally, it should be understood that any number of user devices, servers, and data sources may be employed within the system100within the scope of the present disclosure. Although not illustrated, each of the above may comprise a single device or multiple devices cooperating in a distributed environment.

In exemplary embodiments, user devices110athrough110nare client devices on a client-side of the system100while the context menu server130is on a remote server-side of the system100. Context menu server130may comprise server-side software designed to work in conjunction with client-side software on user devices110athrough110n. An example of such client-side software is application112on user device110a. Each of the other user devices may include a similar application with similar functionality.

User devices110athrough110neach comprise any type of computing device capable of being operated by a user. In some implementations, user devices110athrough110nare the type of computing devices described in relation toFIG. 5herein. By way of example and not limitation, a user device may be embodied as a personal computer (PC), a laptop computer, a mobile device, a smartphone, a tablet computer, a smart watch, a wearable computer, a personal digital assistant (PDA), an MP3 player, a global positioning system (GPS) or device, a video player, a handheld communications device, a gaming device or system, an entertainment system, a vehicle computer system, an embedded system controller, a remote control, an appliance, a consumer electronic device, a workstation, any combination of these delineated devices, or any other suitable device.

User devices110athrough110neach include one or more processors and one or more computer-readable media or computer storage media having computer-readable instructions executable by the one or more processors. The instructions may be embodied by one or more applications, such as application112, capable of facilitating the exchange of information between user device110a, for instance, and the context menu server130. It is contemplated herein that “application” be interpreted broadly. As one example, an application can be installed on an operating system of a user device. As another example, an application can be a service integrated into an operating system of a user device or an application installed on the device. For instance, application112may be a filesystem of an operating system or may be a filesystem of a file hosting service. Additionally, application112is referred to as a single application for simplicity, but its functionality can be embodied by one or more applications in practice.

The context menu server130is configured to process requests for context menu content to provide dynamic menu content for a particular object stored on a client device, such as user device110athrough110n. The context menu server130includes one or more processors and one or more computer storage media having computer-readable instructions executable by the one or more processors. The instructions may implement one or more of a receiving component132, a determining component134, a transmitting component136, a recording component138, an action component140, and an analytics component142, as shown inFIG. 1

The receiving component132of the context menu server130is configured to receive information relating to requests for custom menu content for an object stored on a user device, such as user device110athrough110n. The request for menu content is sent from user device110aand, in some aspects, is sent using application112of user device110a. For example, the request is sent from application112of the user device110a, such as an operating system or other application, using HTTP or another protocol. In some embodiments, the request sent from the user device110amay also include data providing details associated with the request. Such additional details may include one or more of the following: the name of the object for which the request was made; the type of object for which the request is made; the language in which the object is provided; the time and/or date of the request; a user identification for a user who initiated the request; a subscription level of the user; the location of the user; a version of software or operating system being used on the user device110a, and the like. These details may be encoded into the request using XML, JSON, or another suitable format.

The context menu server130is remote from the user device110athat is requesting menu content and may be associated with the type of object for which the request is sent. A type of object may be a particular type of file, such as, for instance, a word processing file or a JPEG image file. For example, if the object is an image file that may be opened with an application within Adobe® Creative Suite®, such as Adobe® Photoshop®, the context menu server130receiving the request may be associated with Adobe® Photoshop® and/or Adobe® Creative Cloud®. Although only one context menu server130is illustrated inFIG. 1, it is appreciated that system100may include multiple context menu servers that are each associated with different types of objects. In addition to receiving the request, the receiving component132is also configured to receive other information from user devices110a, such as the selected menu item after the menu content is provided to the user.

Upon receiving the request for menu content, the determining component134of the context menu server130determines what menu content to send for the context menu. The menu content includes at least one or more menu items, which are options for the user to select to perform a particular action with respect to the object. For instance, the menu content may include an item for converting the object to a PDF file. In some embodiments, the menu content includes a label for each menu item. The label is what is displayed to a user viewing the context menu to identify a particular menu item and comprises a written description and/or an icon. The menu content also includes a listing order, which is the order in which the one or more menu items are presented within the context menu as it is presented to the user, and a presentation language, which is the language in which the menu items are displayed to the user.

Menu content may also include callback URLs associated with each menu item. When a menu item is selected on a user device, the callback URL is executed, allowing the context menu server130to track menu item selections, as described in greater detail with respect to the analytics component142. Additionally, the callback URLs may be used to perform actions associated with custom menu items when the actions are performed by the context menu server130instead of being performed locally by user device110a. A custom menu item for opening an object in Adobe® Creative Cloud®, for example, may include a callback URL (e.g., http://creative.adobe.com/files?tracking_id=54678) that will be included within the menu content that is used to open the object in Creative Cloud®. As another example, a custom menu item for converting the object to an Adobe® PDF file may include a callback URL that informs the context menu server130to convert the object to an Adobe® PDF file and send the PDF file back to the user device110a.

As previously mentioned, the context menu server130may be associated with a type of object corresponding to the object for which the request is made, and, therefore, any menu content from the context menu server130may be based on the object, including the type of object, for which the request is made. In some embodiments, other information is also used to determine menu content for a particular request, including any of the details that may be sent with the request, such as a time of the request, a date of the request, a country from which the request is made, and/or a subscription level of the user associated with the request. A subscription level indicates a user's authorization to access certain menu items or functions. For instance, some applications may provide premium services for which a user pays that include additional functions not available to other users. Accordingly, the determining component134may consider whether a user associated with the request has a subscription level that provides access to premium services and, if so, provide menu items associated with those services. Additional subscription levels may include free trial, student, discounted, paid, and the like.

In some embodiments, determining menu content is based on menu content usage data that is analyzed by the analytics component142of the context menu server130. Menu content usage data comprises data associated with previous requests for menu content and at least indicates whether a particular custom menu item was selected by the user when presented. The analytics component142determines the selection frequency, or the frequency with which a particular menu item is selected, and the optimal appearance of the menu content, including labels for menu items and the listing order for menu items. For example, menu content usage data may indicate that a particular menu item, such as a menu item to “Convert to PDF,” has been presented to users 500 times and selected 40 times, indicating that the particular menu item is selected 8% of the time it is presented as an option. The menu content usage data may be analyzed according to a particular type of object. For instance, the analytics component142may determine that although the menu item “Convert to PDF” is selected 8% of the time it is presented overall, the item is selected 17% of the time that is presented for a word processing document file, indicating a greater selection frequency for that particular object type. In some embodiments, the menu content usage data may be analyzed based on a time the request was initiated, a day of the week the request was initiated, a country from which the request was initiated, and a type of user, such as a user's subscription level, who is associated with the request.

The analytics component142provides feedback to context menu server130so that the determining component134may provide menu content that will maximize menu item selection. For example, the analytics component142may analyze the menu content usage data and determine that items with labels having written descriptions of less than three words are selected more frequently than items with written descriptions of three or more words. This analysis may prompt the determining component134to provide written descriptions for menu items with only one or two words. The feedback from the analytics component142may also be used by the determining component134to improve user experience and, therefore, overall user satisfaction. For instance, the analytics component142may determine that users consistently select “Convert to PDF” more frequently than other custom menu items, thereby prompting the determining component134to provide a listing order that presents “Convert to PDF” menu item higher in the menu or in a location most convenient for selection by the user to optimize a user's experience. Accordingly, using the analytics component142, the context menu server130may determine how well it is performing in terms of providing useful menu content and dynamically adjust the menu content accordingly.

Once menu items are determined, the transmitting component136of the context menu server130communicates the menu content to the user device that sent the request for menu content, which will present the menu content, including the one or more custom menu items, to the user for selection as discussed in greater detail with respect toFIG. 2. In some aspects, the menu content, including labels and callback URLs, is encoded into a suitable format using XML or JSON, for example, and sent to the user device110ausing HTTP or another protocol. Upon receiving the menu content, the user device110adecodes the menu content and stores it in a format and in a memory layout specified by the application110a, such as the operating system, of the user device110a. Once stored in the appropriate format and layout, the menu content may be provided to the application112according to the application programming interface (API) of the application112.

In some embodiments, the context menu server130includes an action component140configured to perform an action associated with a menu item. As previously mentioned, each menu item is associated with an action to be performed with respect to the object for which the request is made, and some custom menu items are associated with actions that are to be performed by the remote context menu server130. For instance, a custom menu item may be to open the object in Adobe® Creative Cloud®. When a user selects the menu item through a user interface of user device110a, a request may be made through network120to perform the action. The request may be in the form of an HTTP request or using other request protocols. As explained in more detail with respect toFIG. 2, in some embodiments, the action associated with the selected menu item, including a custom menu item, may be locally performed by user device110a, instead of by the context menu server130.

The recording component138is configured to record requests for menu content for context menus and data associated with the requests. Data associated with the requests may include, for instance: the name of object for which the request was made; the type of the object for which the request was made; the user who initiated or is otherwise associated with the request, including a subscription level of the user; a date and time of the request; and a country from which the request was initiated. The recording component138may also record information identifying menu item selections. Specifically, the recording component138may record whether a custom menu item provided by the context menu server130was selected by a user on a user device, whether a default menu item was selected, or whether no menu item was selected. This information identifying the selected menu item may be stored in association with data about the request and/or data about what menu content was sent in response to the request.

Continuing withFIG. 1, the system100also includes storage150. Storage150generally stores information including data, computer instructions (e.g., software program instructions, routines, or services), logic, profiles, and/or models used in embodiments. For instance, storage150may store rules, conditions, associations, classification models, algorithms, or other criteria to perform the disclosed methods of determining and providing menu content for a custom context menu. Although depicted as a single data store component, storage150may be embodied as one or more data stores or may be part of a cloud-based platform. Additionally, storage150may reside on a server housing the context menu server130or it may be remote from the context menu server130.

Storage150includes menu content usage data recorded by the recording component138of the context menu server130. Storage150also includes the menu content provided by the context menu server130for context menus. Menu content may be updated on a periodic or as-needed basis to provide up-to-date content for context menus for a particular type of object. For example, if a new function is developed in connection with an application, such as application112, it may be desirable to provide the new function as possible menu item for a context menu for an object associated or otherwise compatible with the application. In such a case, the menu content may be updated to include a new menu item for performing the new function. Updates to menu content may also include updates to existing menu content, such as modified icons or formatting of the existing menu items.

Referring next toFIG. 2, a block diagram illustrating a method200for dynamically providing a context menu is provided. Each block of the method200and any other methods described herein, including method300ofFIG. 3and method400ofFIG. 4, comprise a computing process that may be performed using any combination of hardware, firmware, and/or software. For instance, various functions may be carried out by a processor executing instructions stored in memory. Methods200may also be embodied as computer-usable instructions stored on computer storage media. Methods200may be provided by a standalone application, a service or hosted service (standalone or in combination with another hosted service), or a plug-in to another product, to name a few. Method200may be performed at least in part, for instance, by a client device, such as user device110aofFIG. 1.

As shown at step210, method200includes communicating a request for menu content for a custom context menu for an object stored on a client device, such as one of the user devices110athrough110ninFIG. 1. The request may be sent from the client device to a remote server, such as the context menu server130ofFIG. 1. The request includes data associated with the request, such as information as to the type of object for which the request is being made, and may include other information relating to the object, such as an object size and a date and/or time the object was created or last modified. In some embodiments, the request includes a date and/or time of the request, a country from which the request was initiated, and a subscription level of a user who initiated the request or is otherwise associated with the object and/or computing device from which the request came.

This request may be initiated from a user of the client device performing a right-click mouse operation, or other secondary button operation, over or near the object on a user interface of the client device, indicating the user wants to retrieve a context menu. In other embodiments, a context menu request is initiated by the user through other input mechanisms, such as through a primary mouse button, a keyboard, a touch pad, and the like. Alternatively, in some embodiments, the request for menu content may be sent to the remote server prior to a user initiating a context menu request through user input.

Multiple remote servers may be capable of providing menu content for context menus, but to receive menu content specifically tailored for the object for which the request was made, a request is sent to a remote server that is associated with a type of object corresponding to the type of object stored on the client device. As such, some embodiments of method200include, prior to communicating the request to the remote server, determining that the remote server is associated with a type of object corresponding to the object for which the request is made. This determination may be made by an application on the client device, such as application112inFIG. 1. Additionally, in some embodiments, the request for menu content is first communicated by an operating system of the client device to the application on the client device capable of determining which server to send the request and of communicating with that server. As an example, the application may be Adobe® Creative Cloud Files Synchronization service or another file sharing application.

At step220, the menu content is received by the client device from the remote server to which the request was sent. The menu content includes one or more custom menu items. The menu content also may also include a label for each custom menu item; a callback URL for tracking menu item selections and performing an action associated with each custom menu item, where applicable; and a listing order for the custom menu items. In some embodiments, the menu content is initially received by the application on the client device and then communicated to the operating system of the client device.

At step230, the custom menu content from the remote server is provided for display within the context menu for the object on the client device. The custom menu content is displayed on a graphic user interface generated by the operating system or an application, such as application112inFIG. 1, on the client device. Providing the menu content may include displaying a label for each of the one or more custom menu items and displaying the custom menu items in accordance with the specified listing order. In some embodiments, the custom menu items are provided for display within a context menu that also includes default menu items. Default menu items are menu items that are automatically populated within a context menu by the operating system of the client device. Default menu items include “delete,” “copy,” “paste,” select,” “rename,” and the like. Each menu item is presented as a selectable menu item such that the user may select the desired menu item with a cursor, for example, within the context menu.

In some embodiments, after the user selects a menu item, the method200further includes receiving an indicator of the selected menu item. The indicator of the selected menu item may first be received by the operating system on the client device and then communicated to an application capable of communicating with the remote server. The indicator of the selected menu item is then communicated to the remote server. The indicator of the selected menu item may indicate that the user selected one of the custom menu items included in the menu content provided by the remote server, that the user selected one of the default menu items, or that the user did not select any menu items.

In some embodiments, the method200also includes locally performing an action associated with the selected menu item. For instance, a selected menu item of “copy” may be locally performed by the operating system of the client device. The action associated with the selected menu item may be locally performed by an application on the client device.

As previously mentioned, a server device determines dynamic menu content for a context menu for an object stored on a remote client device, such as one of user devices110athrough110n, in accordance with aspects of the present disclosure.FIGS. 3 and 4provide flow diagrams illustrating methods for determining dynamic menu content for context menus. Just as with method200ofFIG. 2, methods300and400may be provided by a standalone application, a service or hosted service (standalone or in combination with another hosted service), or a plug-in to another product, to name a few. Methods300and400may be performed at least in part, for instance, by the context menu server130ofFIG. 1.

Turning toFIG. 3, method300provides a method for determining menu content for context menus based on the type of object for which the request is made. Accordingly, at step310, a request for menu content for a context menu for an object stored on a remote client device is received, as shown in step310. The request may be sent from the remote client device, such as one of user devices110athrough110nofFIG. 1, and received by a remote server, such as the context menu server130ofFIG. 1. The request for menu content includes data associated with the request itself, including information as to the type of object for which the request was made, such as a file type. In some embodiments, other information relating to the object, such as an object size and a date and/or time the object was created or last modified, is also part of the information received with the request. The request may also include a date and/or time the request was initiated, a country from which the request was initiated, and a subscription level of a user who initiated the request or is otherwise associated with the request. A user who is associated with the request may include a user who is associated with the object, such as a person who created or last modified the object, or a user associated with the client device that sent the request. Upon receiving the request, at step320, a type of object corresponding to the object stored on the remote device is identified. For instance, the type of object may be a type of a file, such as a JPEG file or PSD file.

At step330, one or more custom menu items are selected for the menu content for the context menu. The custom menu items are selected from a plurality of custom menu items associated with the type of object identified at step320and stored in a data store, such as storage150ofFIG. 1. Accordingly, in accordance with method300, the custom menu items may be based on the type of object corresponding to the object for which the request is made. For instance, if the type of object is a PSD file, the menu items are associated with an action that may be performed with respect to a PSD file, such as covert PSD file to a JPEG file, or Open in Adobe® Creative Cloud®. Additional menu content may include a label for each of the selected custom menu items and a listing order for displaying the selected custom menu items within the context menu. In some aspects, the label and the listing order are also determined based on the type of object corresponding to the object for which the request was made.

As method300utilizes the type of object to determine menu content, menu content may be determined by additional or alternative factors. Turning toFIG. 4, for example, method400provides a method for determining menu content for context menus based on menu content usage data. Accordingly, at step410, method400includes collecting menu content usage data regarding historical selections of menu items previously provided to users. Collecting menu content usage data may be performed over a period of time through data recorded associated with previous context menu requests. The requests for menu content from a plurality of remote compute devices may be received and recorded, as shown in step412. Similar to the request received in step310of method300, these requests may include information as to the type of object for which the request was made, the time and date of the request, a country from which the request was initiated, and the user who initiated or is otherwise associated with the request. This information may be recorded and stored in a data store, such as storage150ofFIG. 1.

At step414, in response to each of the requests from the plurality of remote computing devices, menu content is communicated to the remote computing device. The menu content includes one or more menu items, and each menu items includes a callback URL that will be invoked upon the selection of the menu item. The callback URL allows tracking of information as to the menu item selection and, in some embodiments, is used to perform an action associated with the menu item.

After the menu content is communicated to the remote computing devices, indications of selections of menu items are received. These indications of selections are received via the callback URLs associated with the selected menu item. At step418, the indications of selections of menu items are then recorded in association with their corresponding requests for menu content recorded at step412. In this way, menu selections for each request may be tracked. In some aspects, when a menu item communicated at step414is not selected by a user, such as when a default menu item is selected or no menu item is selected, the method includes recording no selection of custom menu items. The selection indicators and the requests may be recorded and analyzed by the analytics component142of the context menu server130ofFIG. 1and stored as the menu content usage data in the storage150.

In some aspects, the menu content usage data is used to determine selection frequencies. A selection frequency is a frequency with which a particular custom menu item has been previously selected when presented to the user. Selection frequencies may be for a menu item in general or may be specific to a type of object, a user subscription level, a time of the day of the request, a country for the request, and the like. For instance, the analytics component142may determine that while the menu item “Open in Creative Cloud” is selected 5% of the time it is presented overall, the item is selected 7% of the time that is presented to a user between 5 p.m. and 10 p.m., indicating a greater selection frequency for the menu item during the evening.

Once at least some menu content usage data is collected, a new request for menu content for a context menu for an object stored on a remote client device is received from the remote client device, as shown at step420. Just as with the previous requests from the plurality of remote computing devices, this request may be recorded along with data associated with the request, such as the object for which the request is made, the user who initiated or is associated with the request, a date and time of the request, and country from which the request is made.

At step430, in response to the request received, one or more custom menu items and a listing order are selected as menu content based on the menu content usage data. In some aspects, the custom menu items and listing order are selected using one or more selection frequencies from the menu content usage data to optimize a user's experience. For example, in some aspects, menu items having the greatest selection frequencies are selected as menu content while items with lower selection frequencies are not selected. Similarly, in some aspects, menu items having greater selection frequencies may be placed near the top of the listing order or in positions most accessible to the user compared to items with lower selection frequencies. Additionally, because the selection frequencies may be specific to the type of object, the user, the date and time, and/or the country from which the request was initiated, the selection frequencies used to determine the custom menu items and the listing order may be those selection frequencies associated with requests having similar attributes as the current request.

Other menu content, such as labels comprising a written description and/or icon for the menu items, may also be determined based on the menu content usage data. For instance, written descriptions, icons, and formatting choices, including the font and type size of the written descriptions, for the menu items may be selected from those previously used for menu items having high selection frequencies to increase the chance of those menu items being selected.

FIG. 4illustrates how menu content, including custom menu items and the listing order, is selected based on the menu content usage data; however, it is contemplated that additional factors may be considered when selecting the menu content. For example, the menu content could be based on an object type and menu content usage data. In other embodiments, the menu content may be based on the object type, the menu content usage data, and a subscription level of the user associated with the request, or any combination thereof.

Although not specifically illustrated inFIG. 4, method400may further include communicating menu content, including the custom menu items and listing order selected at step430, to the remote client device, for presentation to a user as detailed with respect toFIG. 2. Similar to steps416and418, an indication of a selected menu item is then received from the remote client device and recorded with the menu content usage data to be used for selection of menu content provided for subsequent requests. As such, the selection frequencies within the menu content usage data are adjusted based on the newly received selection indication.

Additionally, in some aspects, an action associated with the selected menu item is performed when the selected menu item is one of the one or more custom menu items. The action may be performed by the remote server upon receiving the indicator of the selected menu item. In other embodiments, however, a request to perform the action is received by the remote server separately from the indicator of the selected menu item. Where the selected menu item includes a callback URL, opening the callback URL may be the request to the remote server to perform the action. In some embodiments, the request for performing an action is executed through an HTTP request protocol, but it is contemplated that other protocols may be used.

With reference toFIG. 5, computing device500includes bus510that directly or indirectly couples the following devices: memory512, one or more processors514, one or more presentation components516, input/output (I/O) ports518, input/output components520, and illustrative power supply522, and a radio524if applicable. Bus510represents what may be one or more busses (such as an address bus, data bus, or combination thereof). Although the various blocks ofFIG. 54are shown with lines for the sake of clarity, in reality, delineating various components is not so clear, and metaphorically, the lines would more accurately be grey and fuzzy. For example, one may consider a presentation component such as a display device to be an I/O component. Also, processors have memory. The inventors recognize that such is the nature of the art, and reiterate that the diagram ofFIG. 5is merely illustrative of an exemplary computing device that can be used in connection with one or more embodiments of the present invention. Distinction is not made between such categories as “workstation,” “server,” “laptop,” “hand-held device,” etc., as all are contemplated within the scope ofFIG. 5and reference to “computing device.”

Memory512includes computer-storage media in the form of volatile and/or nonvolatile memory. The memory may be removable, non-removable, or a combination thereof. Exemplary hardware devices include solid-state memory, hard drives, optical-disc drives, etc. Computing device500includes one or more processors that read data from various entities such as memory512or I/O components520. Presentation component(s)516present data indications to a user or other device. Exemplary presentation components include a display device, speaker, printing component, vibrating component, etc.

I/O ports518allow computing device500to be logically coupled to other devices including I/O components520, some of which may be built in. Illustrative components include a microphone, joystick, game pad, satellite dish, scanner, printer, wireless device, etc. The I/O components520may provide a natural user interface (NUI) that processes air gestures, voice, or other physiological inputs generated by a user. In some instance, inputs may be transmitted to an appropriate network element for further processing. A NUI may implement any combination of speech recognition, touch and stylus recognition, facial recognition, biometric recognition, gesture recognition both on screen and adjacent to the screen, air gestures, head and eye-tracking, and touch recognition associated with displays on the computing device500. The computing device500may be equipped with depth cameras, such as, stereoscopic camera systems, infrared camera systems, RGB camera systems, and combinations of these for gesture detection and recognition. Additionally, the computing device500may be equipped with accelerometers or gyroscopes that enable detection of motion.

In some aspects, the computing device500may be equipped with a radio(s)524that facilitates communication with a wireless telecommunications network. Illustrative wireless telecommunications technologies include CDMA, GPRS, TDMA, GSM, and the like. Radio524might additionally or alternatively facilitate other types of wireless communications including Wi-Fi, WiMAX, LTE, or other VoIP communications. As can be appreciated, in various embodiments, radio524can be configured to support multiple technologies and/or multiple radios can be utilized to support multiple technologies.

As described above, implementations of the present disclosure relate to techniques for generating and providing, through a remote server, dynamic and custom context for a context menu for objects on a client device. The present invention has been described in relation to particular embodiments, which are intended, in all respects, to be illustrative rather than restrictive. Alternative embodiments will become apparent to those of ordinary skill in the art to which the present invention pertains without departing from its scope.