This disclosure relates to network communications. More specifically, this disclosure relates to web applications configured to operate in a web browser on a communications device coupled to a network.
A web browser is generally an application (e.g., computer program) that operates on a computing device (e.g., a personal computer, laptop, personal digital assistant (PDA), cellphone, smartphone, or the like) to enable information available over a network (e.g., the Internet) to be accessed. A web browser may be configured to access information available over a network by utilizing uniform resource identifiers (URIs), which indicate a location by which information may be accessed. A typical web browser may be configured to present network-accessible and/or other information to a user in one or more browser windows, or browser tabs within the browser. A web browser may enable a user to open a plurality of web-browser windows, or tabs within a web browser window, simultaneously.
A web application is generally a software application that is accessible via a web browser as discussed above. For example, a web application may be a document, such as a hyper text markup language (HTML) document. A document web application may be configured to present information available over a network visually to a user. A document web application may present to a user one or more links (e.g., to a URI) to available information. A user may be provided an ability to select one or more links, which may result in presentation of a new web document, including information accessible via a URI associated with the link. User selection of one or more links of a web document may instead, or in addition, execute one or more non-document web applications to perform a desired function within a browser.
Some web applications may be configured to operate one or more sub-components. A sub-component operated by a web application may perform a desired task for the web application. Sub-components may present some form of visual depiction to a user, for example, an instant messaging (e.g., chat) window, a contact picker, a calendar event entry/update window, a photo upload and/or presentation sub-window, an audio/video presentation/player window, or any other form of pop-out or embedded sub-window of a primary, or host, web application. In other examples, a primary or host web application may operate one or more sub-components configured to perform non-visual functions for the web application.
This disclosure is directed to techniques for using a shared worker application to create one or more sub-component instantiations, or visual user interface (UI) elements, for at least one host web application. This disclosure is further directed to techniques for using a shared worker application to enable the updating a status of one or more sub-component instantiations (UI elements) local to a computer device upon which the shared worker and the sub-component instantiations are operating (e.g., without accessing a network).
The techniques of this disclosure may provide for improvements in creating sub-component instantiations and or updating sub-component instantiation status, because by using a shared worker, a need to access a network to acquire software defining a sub-component (UI element) and/or to communicate sub-component instantiation status updates, may be minimized. Further, software defining a sub-component (UI element) may not rely on software defining a host web application, which may provide for improvements in management of a software release cycle for one or more of a host web application and a sub-component.
In one example, a method for providing updates to visual user interface elements is described herein. The method includes executing, by a browser executing on a computing device, a shared worker application configured to provide updates to user interface (UI) elements rendered by the computing device. The method further includes executing, by the browser, a first web application configured to present a visual rendering of a first UI element. The method further includes executing, by the browser, a second web application configured to present a visual rendering of a second UI element, wherein the second UI element is substantially similar to the first UI element. The method further includes receiving, by the shared worker application and from the first UI element, a status update for the first UI element, wherein the status update comprises an update to visual content to be provided by the first UI element. The method further includes updating, by the shared worker application, the visual rendering of the first UI element and the second UI element to reflect the received status update.
An article of manufacture comprising a computer-readable storage medium storing instructions is also described herein. The instructions cause a computing device to execute, by a browser executing on a computing device, a shared worker application configured to provide updates to user interface (UI) elements rendered by the computing device. The instructions further cause the computing device to execute, by the browser, a first web application configured to present a visual rendering of a first UI element. The instructions further cause the computing device to execute, by the browser, a second web application configured to present a visual rendering of a second UI element, wherein the second UI element is substantially similar to the first UI element. Receive, by the shared worker application and from the first UI element, a status update for the first UI element, wherein the status update comprises an update to visual content to be provided by the first UI element. The instructions further cause the computing device to update, by the shared worker application, the visual rendering of the first UI element and the second UI element to reflect the received status update.
A device is also described herein. The device includes a browser configured to execute a shared worker application configured to provide updates to user interface (UI) elements rendered by the computing device, and wherein the browser is further configured to execute a first web application configured to present a visual rendering of a first UI element and a second web application configured to present a visual rendering of a second UI element. The device further includes means for receiving, from the first UI element and by the shared worker application, a status update for the first UI element, wherein the status update comprises an update to visual content to be provided by the first UI element. The device further includes means for updating, by the shared worker application, the visual rendering of the first UI element and the second UI element to reflect the received status update.
A method for presenting a visual user interface element via a web application is further described herein. The method includes executing, by a browser executing on a computing device, a host web application. The method further includes executing, by the browser, a shared worker configured to provide at least one user interface (UI) element to at least one host web application executing on the computing device. The method further includes receiving, from the host web application and by the shared worker, a request to create a visual rendering of a user interface (UI) element that presents a visual depiction of functionality of the UI element associated with the host web application. The method further includes acquiring, by the shared worker, software executable to present the visual rendering of the UI element. The method further includes storing, by the shared worker, the acquired software in a memory of the computing device. The method further includes executing the acquired software to create the visual rendering of the UI element presented in conjunction with the host web application in response to the request.
An article of manufacture comprising a computer-readable storage medium that stores instructions is also described herein. The instructions cause a computing device to execute, by browser executing on a computing device, a host web application. The instructions further cause the computing device to execute, by the browser, a shared worker configured to provide at least one user interface (UI) element to at least one host web application executing on the computing device. The instructions further cause the computing device to receive, from the host web application and by the shared worker, a request to create a visual rendering of a user interface (UI) element that presents a visual depiction of functionality of the UI element associated with the host web application. The instructions further cause the computing device to acquire, by the shared worker, software executable to present the visual rendering of the UI element. The instructions further cause the computing device to store, by the shared worker, the acquired software in a memory of the computing device. The instructions further cause the computing device to execute the acquired software to create the visual rendering of the UI element presented in conjunction with the host web application in response to the request.
The details of one or more embodiments of the disclosure are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the disclosure will be apparent from the description and drawings, and from the claims.
As depicted in
Browser 12 may enable a user to manipulate access to information accessible via network 2. For example, browser 12 may provide a user with an ability to enter one or more uniform resource indicators (URIs, e.g., www.google.com) in order to access a web application, such as, for example, a hypertext markup language (HTML) document. A web application, and/or information used by a web application, may be stored on one or more network servers 16A-16E. Browser 12 may be configured to access web applications and/or other information stored on network servers 16A-16E for presentation of visual information to a user of computing device 10, among other uses.
As shown in
As also shown in
Shared worker 14 may further create instantiations of and/or enable communication with/between instantiations of one or more sub-components 18 according to the techniques of this disclosure. A sub-component 18 as discussed herein is a predefined implementation of web application functionality configured to be used by more than one web application. A sub-component instantiation 18A, 18B as described herein refers to the implementation of sub-component functionality for a particular web application 15A, 15B. In some examples, a sub-component instantiation 18A, 18B includes a visual rendering of web application functionality. For example, a web application 15A, 15B may employ one or more instantiations 18A, 18B of a sub-component 18 such as an instant messaging (chat) window, a contact picker, a calendar event entry/update window, a photo upload and/or presentation sub-window, or an audio/video presentation/player window, or any other functionality that may be used by more than one web application.
A shared worker 14 as described herein may be software executable by a computing device to acquire network accessible information and/or to update sub-component instantiations (e.g., 18A, 18B)/visual user interfaces of web applications executed in a browser 12. In one specific example, shared worker 14 may be one or more independent threads of software (program instructions) written in the JavaScript language. In other examples, shared worker 14 may include software written in any other language.
A first sub-component instantiation 48A as shown in
A second sub-component instantiation 49A is also shown in
Using sub-components by web applications may be advantageous, because each web application using a particular sub-component need not independently define that sub-component. As such, code (e.g., Java script) defining a sub-component may be re-used instead of re-written for each web application where functionality of a sub-component is desired. Further, using pre-defined sub-components may make functionality integration less complex. In addition, common sub-components may improve a user experience by providing uniformity across a number of different web applications, e.g., a user need not learn how to operate particular functionality anew each time the user uses similar functionality for a different web application. For example, a user may be presented an identical contacts picker sub-component via both an email web application (e.g., gmail: www.gmail.com) and a contacts web application (e.g., www.google.com/contacts).
However, known browser implementations 12 may provide sub-component functionality in a relatively inefficient way. For example, according to known browser implementations, code defining sub-component functionality may be embedded in code defining a web application itself. Embedded sub-component code may be undesirable, because it may be difficult to update code defining the sub-component independent of a release cycle of a host web application that uses the sub-component.
Also, such code defining a web application (and associated sub-component code) is typically accessed from one or more network servers (e.g., servers 16A-16C in the example of
The instantiation of sub-components 18 via a network per web application may also be undesirable for other reasons. For example, for some sub-components (e.g., a chat window, contacts picker), it may be desirable to synchronize status between two or more sub-component 18 instantiations. For example, where a user has two browser windows or tabs open to display two (same or different) web applications that employ chat window sub-components 18A-18B, it may be desirable to update the second chat window when a message is typed into the first chat window.
According to known browser implementations, in order to perform such an update, a first sub-component instantiation 18A may communicate a change in status (e.g., the new message) to one or more network servers 16A-16C. The one or more network servers 16A-16C may then communicate the status update to a web application hosting the second sub-component instantiation 18B. The hosting web application may then accordingly update the second sub-component instantiation 18B. This implementation may be undesirable, because the synchronization status requires communication over network 2 to synchronize status between the first and second sub-component instantiations 18A, 18B. This may be specifically undesirable where computing device 10 is coupled to network servers 16A-16C via a slow and/or intermittent network 2 connection (e.g., a mobile network such as a cellular network). In another example, known browser implementations may require that information associated with each sub-component instantiation 18A, 18B is independently stored in a local memory of a computing device. This may also be undesirable, because the need to access memory is increased, and information may be unnecessarily duplicated in memory.
The techniques of this disclosure address the above-described deficiencies with known web browser implementations to create instantiations of sub-components for web applications and to share status updates between instantiations of sub-components. As such, as shown in
Shared worker 14 may further store the software code defining the sub-component 18 in a local memory of computing device 10 upon which browser 12 is operating. As such, shared worker 14 may, upon a second request from a second web application 15B to create a second instantiation 18B of the same sub-component 18, create the second instantiation 18B of the sub-component 18 based on software code stored in local memory. Thus, according to the techniques of this disclosure, sharing of sub-components 18 via a shared worker 14 may reduce a need to access network 2 to acquire code to create an instantiation 18A, 18B of a sub-component 18.
In another example, the techniques of this disclosure provide for improved updating of one or more sub-component instantiations. For example, as shown in
In another example, the techniques of this disclosure provide for improved status synchronization for sub-component instantiations 18A, 18B of sub-component 18. For example, as shown in
Shared worker 14 may enable communication of sub-component instantiation 18A, 18B status local to computing device 10. For example, first sub-component instantiation 18A may receive a status update (e.g., where sub-component 18A is an instant messaging window, sub-component 18A may receive a user message). Sub-component instantiation 18A (or host web application 15A) may communicate the status update to shared worker 14. Shared worker 14 may, upon receipt of the status update, communicate the status update to one or more of first sub-component instantiation 18A and second sub-component instantiation 18B. In some examples, communicating the status update to one or more of the first and second sub-component instantiations includes updating a visual depiction of the one or more sub-component instantiations.
In one example, communicating the status update to the one or more sub-component instantiations 18A, 18B may include communicating at least one software code portion updated to incorporate the received status update (from first sub-component instantiation 18A) to one or more of the host web applications 15A, 15B. Accordingly, sub-component instantiations 18A, 18B may be updated (e.g., by executing updated software code defining the sub-component) to reflect the status update of sub-component instantiation 18A (e.g., the user message may be displayed to the user via visual depictions of sub-component instantiations 18A, 18B). In some examples, shared worker 14 may further store a received status update (and/or software code updated to incorporate the status update) locally, for example in a temporary memory of computing device 10, such that the status update may be provided to another instantiation of sub-component 18 (not shown in
A sub-component instantiation 18A, 18B may be described as the implementation of sub-component functionality for a particular web application 15A, 15B. For example, a sub-component instantiation 18A, 18B may be a visual rendering of sub-component 15 functionality for a particular web application. In this manner, as shown in
Shared worker 34 may further store the software code defining the first UI element 38A in a local memory of computing device 10 upon which browser 12 is operating. As such, shared worker 34 may, upon a second request from a second web application 35B to create a second UI element 38B substantially similar to first UI element 38A, create the second UI element 38B based on software code stored in local memory. Thus, according to the techniques of this disclosure, creating UI elements 38A-38B via a shared worker 34 may reduce a need to access network 2 to acquire code to create UI elements 38A-38B.
In another example, the techniques of this disclosure provide for improved updating of one or more UI elements 38A-38B. For example, as shown in
In another example, the techniques of this disclosure provide for improved status synchronization for multiple UI elements 38A-38B. For example, as shown in
Shared worker 34 may enable communication of UI element 38A, 38B status local to computing device 10. For example, first UI element 38A may receive a status update (e.g., where first UI element 38A is a chat window, sub-component 38A may receive a user message). First UI element 38A or host web application 35A may communicate the status update to shared worker 34. Shared worker 34 may, upon receipt of the status update, communicate at least one software code portion updated to incorporate the received status update from first UI element 38A. Accordingly, the first and second UI elements 38A, 38B may be updated (e.g., by executing updated software code defining the UI elements 38A, 38B) to reflect the status update of first UI element 38A (e.g., the user message may be displayed to the user). In some examples, shared worker 34 may further store a received status update (and/or software code updated to incorporate the status update) locally, for example in a temporary memory of computing device 10, such that the status update may be provided to another UI element of web applications 35A, 35B, or another web application (not shown in
System 25 includes a processor 22, a memory 26, a storage device 24, and an input/output component 29. Each of components 22, 24, 26, and 29 may be interconnected via a system bus 28 for inter-component communications. Processor 22 may be configured to process instructions for execution within system 25. Processor 22 may be a single threaded processor, or may instead be a multi-threaded processor configured to process various instructions in parallel simultaneously. Processor 22 may be capable of processing instructions stored in memory 26 or instructions stored on storage device 24. In one example, processor 22 may be configured to process instructions to cause a browser 12 to operate on system 25 consistent with techniques of this disclosure.
System 25 further may include peripheral devices 27. Peripheral devices 27 may include, for example, a monitor or other display device for presentation of visual information to a user of system 25. Peripheral devices 27 may further include one or more input devices to enable a user to input data to system 25, e.g., a keyboard, mouse, touchpad, trackpad, touch screen, etc. Peripheral devices 27 may further include printers, monitors, speakers, or other devices to output information.
In one example, processor 22 may be configured to process instructions to cause a visual depiction of a browser, e.g., browser 12 of
Memory 26 may be configured to store information within system 600 during operation. Memory 26 may be described as a computer-readable storage medium. In some examples, memory 26 is a temporary memory, meaning that a primary purpose of memory 26 is not long-term storage. Memory 26 may also be described as a volatile memory, meaning that memory 26 does not maintain stored contents when the computer is turned off. Examples of volatile memories include random access memories (RAM), dynamic random access memories (DRAM), static random access memories (SRAM), and other forms of memories known in the art.
In some examples, memory 26 may be used to store program instructions for execution by processor 22. In other examples, memory 26 may be used by software or applications running on system 25 to temporarily store information during program execution.
Storage device 24 may also be described as a computer-readable storage medium. In contrast to memory 26, storage device 24 may be configured to store larger amounts of information than memory 26. Storage device 24 may further be configured for long-term storage of information. In some examples, storage device 24 is a non-volatile memory component. In contrast with a volatile memory component, a non-volatile memory may store data whether or not power is supplied to storage device 24. Examples of non-volatile storage devices include magnetic hard discs, optical discs, floppy discs, Flash memories, and other forms of electrically programmable memories (EPROM) or electrically eraseable and programmable (EEPROM) memories.
The techniques described herein may be implemented according to a computing system 25 as described with respect to
In response to the request (or independent from it as shared worker 14 may independently create an instantiation of sub-component 18), shared worker 14 may create a first instantiation 18A of sub-component 18 for first web application 18A. In one example, creating an instantiation 18A of sub-component 18 by shared worker 14 may include shared worker 14 communicating one or more software code portions to define sub-component 18A. In one example, the one or more software code portions may be defined in the Javascript language commonly used for web application programming. In other examples, the one or more software code portions may be defined according to bytecode or instruction lists. Software code portions defined by other programming languages are also contemplated and consistent with the techniques of this disclosure. The one or more software code portions may be executed by one or more processors (e.g., processor 22 depicted in
In one example, in response to a request to create a sub-component 18 instantiation 18A, a shared worker 14 may send a response message to a web application 15A that includes one or more of the following 1) an identifier for the sub-component and/or a particular instance of the sub-component, 2) a target for the sub-component (e.g., a frame or space on a web application for a visual depiction of the sub-component to be rendered, 3) a function for the sub-component instantiation to call when any event (e.g., a status change) is detected by the sub-component instantiation, and 4) a place in memory to store any information associated with the sub-component.
The above-mentioned contents of a response message may be included in the software code portion communicated to web application 15A. The above-mentioned contents may instead be communicated with the software code portion, or independently. In one specific example in which the above-described contents of a response message are defined according to the HTML5 specification, the target for the sub-component (2 above) may be identified by a “-targetElement” command, the function to call when any event is detected by the sub-component instantiation (3 above) may be identified by a -“eventFunct(event Message)” command, and the place to store information associated with the sub-component (4 above) may be defined by a “-uiContext” command.
Shared worker 14 may further control status updates for sub-component instantiation 18A. Sub-component instantiation 18A may receive a status update. According to examples in which sub-component instantiation 18A represents a chat window sub-component 18, sub-component instantiation 18A may receive a user message. According to known browser implementations, a status update received by sub-component instantiation 18A may be processed by code of web application 15A, and web application 15A may operate to render a visual depiction of sub-component instantiation 18A according to the update. However, according to techniques described herein, a status update may be communicated to shared worker 14, either by sub-component instantiation 18A itself, or by host web application 15A. In response, shared worker 14 may update software code defining the sub-component 18 to incorporate the status update. Accordingly, an updated version of software code defining the sub-component 18 may be executed to render a visual depiction of sub-component instantiation 18A consistent with the status update.
As also shown in
The examples discussed above with respect to
In one example, sub-component instantiation 18A may receive a status update. A status update may be initiated by a user, or otherwise (e.g., by web application 15A). In one example, where sub-component 18 is a chat window, the status update to sub-component instantiation 18A may indicate that a user has entered text into the chat window. In another example, where sub-component 18 is a contacts picker, the status update to sub-component instantiation 18A may indicate that a user has entered or selected a new contact.
As shown in
In another example, in response to the status update received from sub-component 18A, shared worker 14 may update software code defining sub-component 18 to incorporate the status update. For example, shared worker 14 may access the software code originally used to create sub-component instantiations 18A and 18B to incorporate the status update. The software code originally used to create sub-component instantiations 18A, 18B may have been stored in local memory. In one example, where sub-component 18 is a chat window, shared worker 14 may update software code to define a visual depiction of the chat window to reflect a status update (e.g., a entered user message). Shared worker 14 may then resend, to one or more of web applications 15A and 15B, the updated software code. The updated software code may then be executed such that sub-component instantiations 18A, 18B are updated to reflect the status update (the new message).
Sub-component instantiation 18A may communicate a status update to shared worker 14 based on a command identified when the sub-component instantiation 18A was created. In one specific example where shared worker 14 is defined according to the HTML 5 specification, a function to call when an event update (change in sub-component instantiation state) occurs, a notifyOfEvent(componentID, eventMessage) function may be called by sub-component instantiation 18A to communicate the status update to shared worker 14.
As also shown in
Web app module 40 may generally be configured to communicate with one or more web applications 30A-30C. For example, web app module 40 may receive requests for information (and/or requests to create one or more sub-component instantiations) from one or more of web apps 30A-30C and, in response to a request, communicate with server module 42 to acquire the requested information (e.g., software code defining a sub-component) from one or more network servers 16A-16C via a network 2. Also in response to the request, memory access module 44 may store acquired information in local memory 25 for later use, such as where a second web application requests the same or similar information that may be satisfied by information stored in local memory.
In another example, web app module 40 may communicate with memory access module 44 to satisfy a request for information. In response to a request, memory access module 44 may determine whether information stored in local memory 25 may satisfy the request. If the request may be satisfied, shared worker 14 may access the information stored in local memory 25 and provide the information to one or more requesting web applications 30A-30C. As also shown in
Web app module 40 may further communicate with one or more web applications 30A-30C to receive requests to create an instantiation a sub-components 18. In one example, in response to such a request, web app module 40 may communicate with server communications module 42 to acquire, from one or more network servers 16A-16C, at least one software code portion defining the sub-component 18. Web app module 40 may then communicate the at least one software code portion to a requesting web application 30A-30C. The software code portion may be executed, thereby creating an instantiation 18A of the sub-component 18. In another example, web app module 40 may instead communicate with memory access module 44 to acquire the at least one software code portion. For example, memory access module 44 may determine whether one or more code segments defining the requested sub-component 18 are stored in local memory, and if the one or more code segments are stored in local memory, communicate the one or more code segments to a requesting web application 30A-30C for execution, thereby creating an instantiation 18A of the sub-component 18. However, if the one or more code segments are not stored in local memory, web app module 40 may communicate with server module 42 to acquire the one or more code segments as described above.
As also shown in
In one example, status synchronization module 46 may analyze the received indication of sub-component 18 status to determine whether some or all sub-component instantiations 18A-18C should be updated due to the status update. According to this example, status synchronization module 46 may acquire, via memory access module 44 or server module 42, software code defining the sub-component 18. Status synchronization module 46 may then update the software code defining the sub-component 18 consistent with the received status update, and communicate the updated software code to one or more web applications 30A-30C. The updated software code may then be executed to update sub-component instantiations 18A-18C. Status synchronization module 46 may further communicate with memory access module 44 to store the updated software code for later use.
The at least one indication of a status update for sub-component 18 may be received from the instantiation 18A of the sub-component, from another instantiation 18B of the sub-component 18, or from a host web application 15A. The instantiation 18A of the sub-component 18 may have been created by a shared worker 14 as described above. The method further includes updating, local to the computing device and by the shared worker in response to the at least one indication of a status update, the at least one instantiation 18A of the sub-component (83). In one example, updating the at least one instantiation 18A, 18B of the sub-component includes communicating at least one software code portion updated to reflect the at least one indication of a status update. In another example, steps 82 and 83 may be repeated. For example, if shared worker 14 receives a second indication of a status update for sub-component 18, shared worker may, in response to the second indication of a status update, update at least one instantiation 18A of the sub-component.
As shown in
Child web application 92 may operate as a proxy for communications between web application 90 and shared worker 94 and/or other web applications associated with domain B. Initially, child web application 92 may block any communications from web application 90. Child web application 92 may first securely authenticate web application 90 associated with domain A before allowing cross-domain communications with web application 90. Child web application 92 may securely authenticate web application 90 associated with domain A by various mechanisms known in the art, including secure token exchange and/or white-list comparison.
Once securely authenticated, child web application 92 may remain active to operate as a proxy for cross-domain communications. In one example, web application 90 may desire to use functionality of a sub-component associated with domain B. As such, web application 90 may communicate a request for creation of an instantiation 98A of a sub-component 98 as described above. The sub-component 98 may be a component configured to provide web functionality for more than one web application. Child web application 92 may receive the request, and determine whether shared worker 94 is operating associated with domain B. If the shared worker 94 is not operating associated with domain B, child web application 92 may cause shared worker 94 to be instantiated.
Child web application 92 may forward the request for instantiation of a sub-component 98 to shared worker application 94. As described above, shared worker application 94 may attempt to determine whether software code defining the requested sub-component 98 is stored in a local memory of a computing device upon which browser 12 is operating. If software code defining the requested sub-component 98 is stored in a local memory of the computing device, then shared worker 94 may, via child web application 92, communicate the software code to web application 90 to create sub-component instantiation 98A. If software code defining the sub-component 98 is not stored in local memory, shared worker 94 may communicate, via a network, with one or more network servers to acquire the software code. Once acquired, shared worker 94 may, via child web application 92, communicate the software code to web application 90 to create sub-component instantiation 98A. Shared worker 94 may further store acquired software code defining a sub-component 98 in local memory, for later use.
In another example not depicted in
The examples described above with respect to
The techniques described in this disclosure may be implemented, at least in part, in hardware, software, firmware, or any combination thereof. For example, various aspects of the described techniques may be implemented within one or more processors, including one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or any other equivalent integrated or discrete logic circuitry, as well as any combinations of such components. The term “processor” or “processing circuitry” may generally refer to any of the foregoing logic circuitry, alone or in combination with other logic circuitry, or any other equivalent circuitry. A control unit including hardware may also perform one or more of the techniques of this disclosure.
Such hardware, software, and firmware may be implemented within the same device or within separate devices to support the various techniques described in this disclosure. In addition, any of the described units, modules or components may be implemented together or separately as discrete but interoperable logic devices. Depiction of different features as modules or units is intended to highlight different functional aspects and does not necessarily imply that such modules or units must be realized by separate hardware, firmware, or software components. Rather, functionality associated with one or more modules or units may be performed by separate hardware, firmware, or software components, or integrated within common or separate hardware, firmware, or software components.
The techniques described in this disclosure may also be embodied or encoded in a computer-readable medium, such as a computer-readable storage medium, containing instructions. Instructions embedded or encoded in a computer-readable medium, including a computer-readable storage medium, may cause one or more programmable processors, or other processors, to implement one or more of the techniques described herein, such as when instructions included or encoded in the computer-readable medium are executed by the one or more processors. Computer readable storage media may include random access memory (RAM), read only memory (ROM), programmable read only memory (PROM), erasable programmable read only memory (EPROM), electronically erasable programmable read only memory (EEPROM), flash memory, a hard disk, a compact disc ROM (CD-ROM), a floppy disk, a cassette, magnetic media, optical media, or other computer readable media. In some examples, an article of manufacture may comprise one or more computer-readable storage media.
Various embodiments of the disclosure have been described. These and other embodiments are within the scope of the following claims.
This application is a continuation of U.S. application Ser. No. 12/855,561, filed Aug. 12, 2010, the entire content of which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
Parent | 12855561 | Aug 2010 | US |
Child | 13250149 | US |