Mobile device toolbar architecture

A toolbar is integrated within an application or provided as a standalone component that interfaces with an existing application. The toolbar detects events corresponding to the application and generates a toolbar display corresponding to the event. On loading of a particular webpage in a browser, the toolbar may generate a toolbar display comprising a set of functions to be made available to the user for that webpage. The toolbar may generate different displays for different webpages and different events such as a page load event or a tab change event. Additionally, when provided as a standalone component, the toolbar may generate different displays for different applications. User experience at the toolbar may be controlled through a remote server without extensive modification of the application.

BACKGROUND

1. Field of Art

The disclosure generally relates to providing an adaptable toolbar for targeting advertisements and providing user functionality on a mobile device.

2. Description of the Related Art

Traditional toolbars installed to traditional desktop browsers extend the functionality of the browser. These traditional toolbars typically provide a persistent and static interface to the user within the browser. The more functionality the user desires, the more toolbars the user may install at the expense of browsing area on the desktop browser. Mobile devices, such as smart phones and tablets, have become prevalent in recent years. Given the advances in mobile computing power and far-reaching wireless Internet access, more and more users view online content through browsers and other applications on their mobile devices. On a mobile device with limited screen real-estate, this traditional method of extending the functionality of the browser degrades user experience.

Additionally, a mobile service provider, or carrier, may desire to control some aspects of the user experience on mobile devices operating on their network. Traditional methods of controlling user experience have frequently degraded user experience overall and caused difficulties in updating device software. In a specific example, a carrier may “brand” a third party operating system or application of a mobile device for use on the network. In turn, when the third party updates their software, the carrier itself may need to approve and distribute branded versions of software updates to the mobile device before users can access them. Not only does branding require development resources at the carrier, but can frustrate users desiring the updated version of the software.

DETAILED DESCRIPTION

Overview

A user may view a webpage and the media content therein utilizing a browser or access the media content directly through a separate application. Users often desire to interact with the content they view, by performing actions such as posting the content to a social networking site, liking the content or otherwise sharing the content with other users. Unless the application or content provider provides this functionality natively, the user must navigate a variety of programs to perform the desired action. An adaptable toolbar provided within the application itself or separately that interfaces with the application may be configured to provide the user with this desired functionality. Additionally, the adaptable toolbar may be utilized by carriers to brand the mobile devices used on their network without requiring heavy modification of application or operating system software.

The adaptable toolbar, or toolbar, may be integrated within an application or provided as a standalone component that interfaces with an existing application. The toolbar detects events corresponding to the application and generates a toolbar display corresponding to the event. For example, on loading of a particular webpage in a browser, the toolbar may generate a toolbar display comprising a set of functions to be made available to the user tailored to that webpage. The toolbar may generate different displays for different webpages and different events. For example, the toolbar may generate different displays for a page load event and a tab change event. Additionally, when provided as a standalone component, the toolbar may generate different displays for different applications.

The toolbar is maintained for and associated with the user across the variety of content viewed through the application and, accordingly, may provide persistent functionality to the user. For example, the user may utilize the toolbar while authenticated with a social networking site to share viewed content or view other users' interactions with the viewed content. In another example, a carrier may utilize the toolbar to target specific content directly to the specific user of the mobile device.

The toolbar may generate the display on top of the application and make its background transparent to appear as if it is a part of the application itself. In an embodiment, the toolbar stores toolbar configuration code corresponding to the application which describes the operation of the toolbar within the application. Extension code corresponding to the set of functions may be retrieved and modified locally and/or remotely. The functions themselves are loosely coupled to the toolbar, which allows for their use across different toolbar applications and their ability to be updated without modifying the toolbar or application. In some embodiments, a toolbar server may drive all or a portion of toolbar functionality through provided configuration files. The configuration file may be specific to the application and/or content viewed at the mobile device and optionally modified by the user to personalize toolbar functionality. In such cases, toolbar functionality may be controlled and modified through the configuration file at the toolbar server such that the application and/or toolbar itself need not be updated.

In one embodiment, the toolbar generates a display for presenting and configuring one or more functions a user may perform with the toolbar. A function provided within the toolbar may be realized through the loading of one or more extensions in available packages and plugins. For example, the toolbar may display a set of extensions at the bottom of the screen in scrollable fashion. The toolbar may also be configured to download, create and manage the extensions and the associated plugin through extension configuration code (e.g., extensible markup language “XML”) retrieved from a toolbar server. In one embodiment, at the time of extension creation to provide the user with toolbar functionality, the toolbar loads a plugin associated with the extension from a plugin directory, which contains the implementation instructions for that extension.

Extensions may be installed to the toolbar and loaded in the toolbar in response to an event corresponding to their display in the toolbar. The toolbar may specify which extensions to load in the toolbar in response to an event or transmit event information to the toolbar server and receive the set of extensions. In turn, the toolbar generates the toolbar display to provide the user with extended browser functionality. In one example embodiment, the toolbar is implemented with one or more libraries or software development kits “SDKs” that may be linked at compile time with a launched application. The extensions may be retrieved from a server as a form of extended markup language (XML) downloaded and managed by the toolbar. In one example embodiment, the toolbar may load web or JAVASCRIPT (or script) extensions that are compiled by the application (e.g., a browser) and linked as a part of toolbar. Alternatively, the toolbar may comprise functionality to compile web and JAVASCRIPT extensions.

In some cases, mobile devices may have limitations to install packages from a regulated marketplace only. In some embodiments, the toolbar may load local or native extensions that are compiled separately as a package and used by the toolbar without any requirement to install the extension on the mobile device.

Mobile Toolbar Environment

Referring now toFIG. 1, it illustrates a high-level block diagram of an example environment100for providing an adaptable toolbar120to a mobile device110according to one embodiment. As shown, the environment100comprises a user device110, a toolbar server170, and content server150. The network120is a communication network that transmits data between the mobile device110, the toolbar server170and/or the content server150. In one embodiment the network120includes carrier-based wireless network communication infrastructure such as 2G/3G/4G/etc. and the Internet.

The content server150is a computer server that provides stored content155to the mobile device110via the network120. For example, when a mobile device110requests to retrieve web content corresponding to a website using a browser115, the content server150may receive the request and transmit stored the text, video and/or image content155to the mobile device110. Additionally, the content server150may store content155targeted to the user of the mobile device110. For example, the user may perform an activity on the mobile device110such as browsing to a particular webpage and a toolbar120on the mobile device may, in turn, request targeted content155to display to the user.

In one embodiment targeted content155is an advertisement selected based on an identity of the user associated with the toolbar. In another embodiment, targeted content155is web content associated with the user, such as through the interactions of other users in a social network the user participates in. In another embodiment, targeted content155is optimized video content (e.g., an optimized version of video content in the webpage) provided to the user through the toolbar120. Optimization of video content is explained in more detail in U.S. application Ser. No. 13/945,747, which is incorporated by reference herein. Accordingly, in some embodiments there may be multiple content servers (not shown) for delivering a variety of different content to the mobile device110.

The toolbar server170provides configuration information to the toolbar120. For example, the toolbar server170may receive a query from a toolbar120for configuration information in response to the launch of an application such as browser115. The query may contain information about the state of the browser115or application utilizing the toolbar120and any mobile device110or user specific information. In turn, the toolbar server170may transmit an extension XML configuration file(s) specifying extensions and any associated plugin packages that should be loaded by the toolbar120to provide functionality for the user. If the mobile device110does not have a specified plugin package, the toolbar server170may provide executable code and/or packages including one or more plugins to the mobile device110that may be loaded in the toolbar120to provide toolbar functionality. Alternatively, the content server150may provide executable code and/or packages including one or more plugins specified in the extension XML configuration file.

In one embodiment, the extension XML code describes the state and configuration of an extension for display in the toolbar120. The toolbar server170may store configurations for different displays and transmit the extension XML files describing each configuration to the mobile device110. In turn, the mobile device110may access a particular extension XML to configure the display of the toolbar on the mobile device. Example extension configuration parameters may include:

Extension ID: Identification of extension to load in toolbar.

Class Name: Identifies the expected implementation of the extension within a plugin package.

Position: Display configuration for extension in toolbar.

Type of the extension content and corresponding location: Specifies whether an extension comprises local, HTML, or JAVASCRIPT code and identifies the location of the content.

Is enabled flag: Specifies whether an extension is enabled.

Plugin Name: Specifies plugins to load in support of an extension.

Plugin Location: Specifies location of plugin on mobile device or at toolbar server.

Plugin Version: Specifies current version of plugin to load.

Target SDK/Toolbar Version: Compatible version of Toolbar/interface with application.

Icon Location: URL or local location of icon for display in toolbar for an extension.

Can disabledflag: Specifies whether the user may disable an extension.

Can move flag: Specifies whether the extension may be repositioned by the user within the toolbar display.

Can display ad flag: Indicates whether an ad may be displayed with extension.

Signature: Identifies the version of the extension to be loaded.

The toolbar server170may alter stored configurations for different displays by modifying the extension XML code provided to the mobile device110. When a change is made to an extension, the toolbar server170updates the signature. The toolbar120or toolbar server170identifies whether the signature of a stored extension's XML file on the mobile device110does not match that of the current version of the extension stored on the toolbar server170. In turn, the toolbar120may request an updated version of the extension XML file or the toolbar server170may push the updated version of the extension XML file to the toolbar.

In one embodiment, the mobile device110is a computing device with network capabilities. Oftentimes, for example, the mobile device110is a wireless enabled mobile computing device with applications such as a web browser115and media display capability. Mobile computing devices110may include laptops, netbooks, tablets, smart telephones, or personal digital assistants (PDAs). Most often, however the mobile computing device110is a tablet, smart phone, or PDA that includes carrier-based wireless network communications capabilities provided by a carrier (not shown). The carrier manages portions of the network120that provide wireless services to the mobile devices110. These devices110may additionally couple to the network120through WiFi or other wireless communications technologies.

While only one mobile device110is illustrated inFIG. 1, the environment100may include thousands or millions of such devices. The browser115and other applications (not shown) may be software applications running on mobile devices110for retrieving web content155from content servers150and presenting the web content155on a display of the mobile device. Multimedia web content155accessed by the mobile devices110may include text, images, audio and video content. The multimedia content155can be played back by the browser115, for example, in HTML5 compatible browsers, a media container format capable player or a standalone media player. Applications other than the browser115may display content155in a similar fashion. In one embodiment, the browser115may invoke a media container format player available to the browser or the standalone player on the user devices110and pass images, audio and/or video for playback. For example, the browser115may invoke an integrated120A or standalone120B toolbar capable of playing content in a particular container format.

In one embodiment, a toolbar120A is provided as a component of the browser115or other application (not shown). In another embodiment, a toolbar120B is provided as a standalone component of the mobile device110that interfaces with the browser115and/or other applications (not shown). In either instance, the toolbar (generally120) monitors activity of the browser115(or other application) to detect events such as when the application is initially launched and determines whether the toolbar interface should be displayed. In turn, the toolbar120generates the toolbar interface based on a configuration file corresponding to the event. The toolbar120may retrieve the corresponding configuration file from a local storage or query the toolbar server170to receive the configuration.

In the former instance, the toolbar120may retrieve a local configuration file specifying a set of functions the user desires within the toolbar display. The user may alter the configuration to include more or less functions, change position of an icon corresponding to a function, and adjust display preferences for a function when selecting an icon within the toolbar. Additionally, the user may specify for which events in the application the toolbar120should generate the toolbar display.

In the latter instance, the toolbar server170may be used to drive aspects of user experience within the application in real-time. For example, the toolbar server170may push a configuration to the toolbar120that causes the toolbar to display one or more advertisements and track user interactions within the advertisements or provide a specific set of functions within the toolbar120instead of, or in addition to, those specified by the user for a specific event. For example, the toolbar server170may push a specific configuration to the toolbar120based on the content155viewed within the application and/or the event detected by the toolbar120. In some embodiments, the toolbar server170may store user preferences corresponding to the set of functions the user desires within the toolbar display and transmit the configuration to the toolbar120rather than the toolbar120storing a local copy. Thus, the toolbar server170may control user experience within the application at all times through the toolbar120. The toolbar120is discussed in greater detail with reference toFIG. 3.

The content server150and toolbar server170are typically formed of one or more computer servers, which may include components and functionality described in more detail with reference toFIG. 2. While only one server of each content server150and toolbar server170is shown in the environment100ofFIG. 1, different embodiments may include multiple servers operated by a single entity or multiple entities. In other embodiments, a single server may also provide different functionalities, such as delivering web content as a web server, as well as serving toolbar extensions. Mobile devices110may also include components and functionality similar to those described inFIG. 2.

Computing Machine Architecture

The example computer system200includes one or more processors202(e.g., a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), one or more application specific integrated circuits (ASICs), one or more radio-frequency integrated circuits (RFICs), or any combination of these), a main memory204, and a static memory206, which are configured to communicate with each other via a bus208. The computer system200may further include graphics display unit210(e.g., a plasma display panel (PDP), a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)). The computer system200may also include alphanumeric input device212(e.g., a keyboard), a cursor control device214(e.g., a mouse, a trackball, a joystick, a motion sensor, or other pointing instrument), a storage unit216, and a network interface device220, which also are configured to communicate via the bus208.

The storage unit216includes a machine-readable medium222on which is stored instructions224(e.g., software) embodying any one or more of the methodologies or functions described herein. The instructions224(e.g., software) may also reside, completely or at least partially, within the main memory204or within the processor202(e.g., within a processor's cache memory) during execution thereof by the computer system200, the main memory204and the processor202also constituting machine-readable media. The instructions224(e.g., software) may be transmitted or received over a network120via the network interface device220.

Toolbar Architecture

FIG. 3illustrates an embodiment of a toolbar120for targeting a user with content on a mobile device110. Toolbar120A and120B illustrated inFIG. 1may comprise components similar to those illustrated inFIG. 3. As shown, the toolbar120may include a number a modules including an extension manager305, XML parser310, extension factory315, plugin manager, plugin validator325, and notification handler330. The toolbar120may further include an extension configuration store327and a plugin store329.

The extension manager305loads and stores extension configurations in response to events detected at an application by the notification handler330. For example, the extension manager305may load a number of extensions in response to the launch of a browser on a mobile device. The extension manager305may load extensions from the extension configuration store327and/or query a toolbar server to receive extension configuration information.

In one embodiment, the extension manager305queries the toolbar server for a configuration file and the toolbar server170specifies the state and configuration of the extensions that should be loaded in the toolbar120. In turn, only extensions that are specified in the configuration file from the server may be loaded from the configuration stores327in the toolbar120. Extensions not available in the configuration store327may be requested from the toolbar server as extension configuration code.

The extension manager305may initially load a global configuration that provides background functionality within the toolbar120. For example, the global configuration may specify whether advertisements are enabled for loaded extension, track user activity within extension for analytics (e.g., reporting of user interaction with an advertisement), and specify any of the plugins corresponding to those functions. Additionally, the global configuration may specify events in which the toolbar120should show, hide, or close itself and for which events the extension manager305should query the toolbar server to specify a configuration of the toolbar and/or retrieve extension configuration files. Extensions loaded subsequent to the global configuration may be destroyed as needed within the toolbar120.

In one embodiment, the extension configuration file is an XML file and received at XML parser310. The XML parser310creates extension configuration object code from the received extension configuration XML code. For example, the XML configuration code may specify a type of the extension content and corresponding location as described above. Local code may be native to the toolbar120and/or mobile device110while HTML or JAVASCRIPT code may be retrieved from the specified location in the XML file and stored in the extension configuration store327.

In one embodiment, the extension manager305compares parsed extension configuration object code against the local extension object code stored in the configuration store327and determines whether to update an extension, add the code (e.g., as a new extension), or discard the code. In one embodiment, the extension manager305preserves user customizations to extensions locally. For that purpose, the extension manager305may keep track of a signature of the extension object code itself (e.g., the local, HTML or JAVASCRIPT code of the extension) and updates the signature when changes are made within the extension to determine whether updated object code should be retrieved.

The extension factory315creates extension objects that may be executed for display within the toolbar120interface from corresponding configuration code and plugins specified in the configuration code. In turn, the extension factory315may receive instructions from the notification handler330to display, hide, or otherwise alter the configuration of the toolbar120on the display of the mobile device110to present extension functionality to the user. In one embodiment, the extension factory315generates a toolbar interface for displaying one or more extensions and corresponding plugin functionality to the user. For example, the toolbar interface may display a set of extensions at the bottom of the display of the mobile device110in scrollable fashion. The user may configure an extension by providing login information, such as for a social networking site, indicating preferences for when to display an extension, or whether to display the toolbar120at all. The extension factory315may execute a given extension for display to perform the corresponding functionality in response to a selection from the user or automatically in response to instructions in the configuration file and/or an event (e.g., to display automatically on page load, every fifth page load, or every five minutes). Executing the given extension for display may comprise, for example, sharing a content item or sharing the webpage on a social network (or providing a plugin to perform the function), retrieving content targeted to the user based on the webpage being viewed by the user, and retrieving optimized content related to the webpage among other functions.

In one embodiment, the extension factory315receives loaded configuration code from the extension manager305, retrieves corresponding plugins specified in the configuration code from the plugin manager320and, in turn, creates the extension object wrapping the implementation of the plugin. For example, as shown inFIG. 5Athe toolbar120has an Extension.java class505defined within the toolbar, which may be the super class of all extensions. A plugin package501A may contain plugins507,509containing one or more the implementations of Extension.java505, which could be classes that extend Extension.java to provide a video playback or content sharing through a social network. For example, the ShareExtension509may extend the toolbar120extension class505, where ShareExtension is defined in the plugin package501A and extension class505is defined in the toolbar.

Turning back toFIG. 3, the plugin manager320manages plugin packages for extensions. Based on the plugins specified in extension configuration, it may load plugins from the plugin store329. If a plugin specified in an extension configuration is not available in the plugin store329, the plugin manager320may download the plugin (e.g., at a location specified in the configuration code) from a server such as the toolbar server170or content server150to the local store329.

The plugin validator325verifies the version and optionally a signature of the plugin with that specified in the configuration file for the extension. Plugins failing verification may be redownloaded from a server. If a plugin is not verified, the extension factory315will not create extension objects dependent on the plugin.

For example,FIG. 5Billustrates a plugin package501B that includes a plugin handle513and plugins505,509that extend plugin class511and extension class505, respectively, within the toolbar120. In an example implementation, the plugin handle513may have the implementation of the class Plugin.java511within the toolbar120. In one embodiment, the plugin class511within the toolbar120may be used for life cycle management of the plugin. Because plugin handle513in the plugin package501B extends plugin class511in toolbar120, the toolbar120may utilize life cycle methods defined within the plugin class511such as pluginLoaded( ), pluginPaused( ), pluginResumed( ) and pluginDestroyed( ) in instances of plugins within the plugin package510B. Other methods defined within the toolbar120may similarly be extended to plugins in the plugin package501B. As such, the extension objects created by the extension factory315wrap the configuration and implementation of the plugins, which may be retrieved and loaded separately from the extension objects. Accordingly, the plugins themselves may be updated and handled separately from the extension objects by the plugin manager320. This configuration beneficially enables a first party, such as a carrier operating a toolbar server170, to incorporate 3rdparty plugin functionality but only as defined within the configuration files transmitted to the toolbar120and without having to integrate the code directly into the toolbar or even an extension relying on the plugin.

The notification handler330handles events corresponding to the use of an application. For example, the notification handler330may interface with an application to identify events such as application startup, application idle (e.g., in background), application active (e.g., in foreground), application close, etc., and any application specific event. In a specific example for a browser115, the notification handler330may further identify events such webpage load, tab change, tab close, tab open, etc. Other applications may feature different events, such as loss, pause or win of a game, or selection within the application itself. The notification handler330pass the events to the extension factory315which may act on the event by displaying a configuration of the toolbar120corresponding to the event.

In the case of a toolbar120integrated with a browser115, such as toolbar120A illustrated inFIG. 1, the notification handler330may interface directly with the browser115to receive notifications and information about content being displayed by the browser, tab changes, etc. Toolbars such as toolbar120A that are integrated with other applications may be configured in a similar manner to monitor status of the application directly and/or receive information about the application to identify events.

Turning now toFIG. 4, it illustrates an embodiment of a toolbar120B external to a browser115for targeting a user with content on an example mobile device110. As shown, toolbar120B is provided as a standalone application on the mobile device110. In such cases, the toolbar120B may include and/or interface with components additional to those illustrated inFIG. 3. The toolbar120B may be installed to the mobile device110without modifying any browser115or application specific code or configuration. Once installed, the toolbar120B runs in background and detects application events, which are then passed to the notification handler330for processing. For example, when an application is launched on screen, the toolbar120may generate a toolbar interface overlaying the application at bottom of the screen and wait for user events within the toolbar120and/or detected events within the application. In another example, the toolbar120may detect browser115webpage loads and tab change events that are passed to the notification center330such that the standalone toolbar120B configuration may be altered in a similar manner to the integrated toolbar120A, e.g., reacting to the event by modifying its configuration to display contextual extension functions corresponding to the content present in the webpage loaded within the application or based on the event.

As shown, the standalone toolbar may include an operating system (OS) monitor405and application monitor410in addition to the notification center330. In the embodiment shown, they are illustrated within the toolbar120B but alternately may be installed separately to the mobile device110. It is noted that the operating system (OS) may be any operating system, for example, APPLE iOS, GOOGLE ANDROID, RESEARCH IN MOTION BLACKBERRY OS or MICROSOFT WINDOWS MOBILE.

The OS monitor405detects events within the framework of the operating system of the mobile device110that are incurred through changes in the application. In one embodiment, the OS monitor405detects the interaction the system has with the application. In a specific embodiment, the OS monitor405may detect events through application specific frameworks, such as a browser instrumentation service, which the operating system (OS) evokes when browsers on the mobile device110are launched. Upon invocation, the instrumentation service interfaces with the browser115to register for events such as a tab change notification. Thus, whenever a tab change occurs within the browser115, the OS monitor405in turn detects the event and passes the event information (e.g., URL of the displayed tab) to the notification handler330for processing.

Application monitor410is a background service that monitors which application is actively in the foreground on the mobile device110and the content being loaded within the application to detect events such as webpage loads within a browser115tab. In a specific example, an application may share a portion of its data with other applications in an application share store427. The application monitor410detects when the underlying data in the application share store417shared through the application is changed. In the case of a browser115, accessed URLs loaded within the browser (e.g., browsing history data) are shared. The application monitor410detects the change in shared URLs to identify a page load event and passes event information (e.g., newly/most recent shared URL of the loaded page) to the notification handler330. In turn, the toolbar120B may modify the interface based on contextual information associated with the event.

The application monitor410further identifies which application is displayed in the foreground and passes event information identifying the application to the notification handler330. Thus, the toolbar120B may determine whether to hide, show, or modify the toolbar display based on the application and application status.

Toolbar Operation

FIG. 6illustrates a flow diagram of an embodiment for generating a toolbar display on a mobile device110. When an event associated with an application in which the toolbar display should be generated is detected, the toolbar is loaded601. For example, the toolbar may be loaded601when the launch of an application or when the application visibly appearing on the screen is detected. In one embodiment, the application launch and display events are detected through an OS monitor. In other embodiments, the toolbar may interface with the application to load601in response to the events.

Once loaded, the toolbar may run603a global toolbar configuration that defines the actions the toolbar should take in response to different detected events in the application and on screen location where the toolbar display should be generated. The global toolbar configuration may also specify a number of global plugins for providing advertisements and analytics that are loaded to support overall functionality of the toolbar across all extensions.

Based on the detected event, for example as specified in the global toolbar configuration, the toolbar determines one or more extensions to load605in the toolbar to extend browser functionality. In some embodiments, the toolbar transmit event information to a toolbar server in a query and receive configuration code corresponding to one or more extensions to be included in the toolbar display. Thus, the toolbar server may drive the visual and user experience of the toolbar on the mobile device. The toolbar server may also transmit updated global toolbar configuration code or extension configuration code to the toolbar if a signature corresponding to the stored code does not match a current version on the server.

In some embodiments, the toolbar loads605A an extension factory for creating extension objects from extension configuration files. The extension configuration files may identify one or more plugins that support the functionality of the extension objects. The specified plugins are retrieved605B and loaded605C for each extension. Plugins may be validated with their source to ensure functionality of the extension object created by the extension factory.

The configuration code for the extensions to be loaded605specifies their function, position, and an icon for display within the toolbar. A button comprising the icon identifying each extension is created607and positioned relative to the other buttons based on the position date in the extension configuration code.

The toolbar then generates609the toolbar display showing the icons overlaying the application. Once displayed, the toolbar may detect user activity within the toolbar, such as selection of an icon, to display and/or perform extension functionality.

FIGS. 7A and 7Billustrate example toolbar displays generated on a mobile device110. As described above, a toolbar120for generating the toolbar display700may be incorporated into a browser115or other application running on the mobile device110or provided as a standalone component. The toolbar120may provide additional functionality above and beyond the basic features of the browser115. The existing browser115may continue to operate normally, but with an additional set of toolbar functions provided on the bottom of the screen.

As shown inFIGS. 7A and 7B, the toolbar display700may overlay the browser at the bottom portion of the screen. Other toolbar display700locations may include the top or side of the screen. The toolbar display700shows a number of icons705that may be selected by the user to display extension content such as one or more plugins or perform a function directly.

FIG. 7Aillustrates an example selection705A of a like or share icon within the toolbar700. In response to the selection, the toolbar120displays extension content710, which may comprise one or more plugins703,705. The share plugin703may be used to post or share the content viewed in the browser (e.g., via the URL) through a social network, via email, or other communication method. The like plugin705may be used to “like,” “thumbs-up,” “+1,” or otherwise similarly indicate approval of the viewed content through a 3rdparty social networking site. As the underlying content within the browser115changes, the plugins703,705perform their operations for the newly browsed to content.

FIG. 7Billustrates an example selection705B of a popular icon within the toolbar700. In response to the selection, the toolbar120displays extension content710, which may comprise interfacing with a content server150to retrieve social networking content155associated with the user registered with the toolbar120. The retrieved social networking content155indicates content associated with the current webpage that one or more social networking connections of the user have interacted with. Additionally, the social network content115may indicate an overall popularity of content associated with the current webpage on the social network.

Additional Configuration Considerations

The disclosed configurations beneficially allow a carrier or other party to dynamically manage and configure a toolbar at a mobile device to control user experience within an application such as a browser. The carrier may specify the configuration and actions of the toolbar in response to events within the application and further which extensions expanding the functionality of the application are displayed within the toolbar for different events. Uniquely, the extensions appearing within the toolbar may be configured in real-time through configuration files transmitted to the toolbar. Because the extensions and plugins the extensions wrap around are loaded when needed and need not be configured within the application or toolbar itself, provided toolbar functionality may be changed separately from application and/or toolbar development cycle. In the case of the standalone toolbar, the carrier may not need to alter or install the toolbar to any application code (e.g., incorporating the toolbar within the application). Thus, the application may be updated separately from the toolbar.

The various operations of example methods (e.g., as described withFIG. 6) described herein may be performed, at least partially, by one or more processors (e.g., processor202) that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions. The modules referred to herein may, in some example embodiments, comprise processor-implemented modules.

Upon reading this disclosure, those of skill in the art will appreciate still additional alternative structural and functional designs for providing an adaptable toolbar for targeting advertisements and providing user functionality on a mobile device. Thus, while particular embodiments and applications have been illustrated and described, it is to be understood that the disclosed embodiments are not limited to the precise construction and components disclosed herein. Various modifications, changes and variations, which will be apparent to those skilled in the art, may be made in the arrangement, operation and details of the method and apparatus disclosed herein without departing from the spirit and scope defined in the appended claims.