PATENT DOCUMENT

Publication Number: US-8667415-B2
Application Number: US-83457807-A
Country: US
Kind Code: B2

Title: Web widgets

Abstract:
A media authoring tool includes web widgets for creating page elements for various types of media (e.g., websites, blogs, broadcasts, slide shows, multimedia presentations). A widget inspector associated with the widget can be used to modify the behavior of the widget.

Claims:
The invention claimed is: 
     
       1. A method comprising:
 displaying, in a user interface, a media authoring tool that is operable to create a web page, the media authoring tool comprising a first editing area for editing the web page, wherein the web page is configured to display first content when rendered; 
 receiving an input for creating a web widget, which is a component of the web page that is operable to display second content when rendered in the web page, the second content being distinct from the first content; 
 in response to the input, displaying the web widget as a bounding box enclosing a display area in the media authoring tool, wherein dimensions of the bounding box are configurable by a user while creating the web widget; 
 presenting in the media authoring tool, in association with displaying the bounding box, a second editing area for editing the web widget during creation, the second editing area being associated with a web widget tool operable to edit instructions that are executed for displaying the second content in the web widget when the web page is rendered; and 
 providing the web page, including the first content and the web widget comprising the second content, for display in the user interface. 
 
     
     
       2. The method of  claim 1 , comprising:
 automatically establishing a communication channel between the web widget and a service without user intervention; 
 obtaining the second content from the service for display on the web widget; and 
 presenting the second content using the web widget when the web page is rendered. 
 
     
     
       3. The method of  claim 2 , wherein the second content includes map data. 
     
     
       4. The method of  claim 3 , comprising:
 receiving a user input that is associated with a geographic location; and 
 displaying a placemark corresponding to the geographic location in the map data. 
 
     
     
       5. The method of  claim 3 , wherein the web widget presents one or more navigation controls for allowing the user to navigate the map data. 
     
     
       6. The method of  claim 5 , wherein at least one navigation control is a zoom control. 
     
     
       7. The method of  claim 2 , wherein the second content includes advertising information. 
     
     
       8. The method of  claim 7 , comprising:
 modifying a presentation of the advertising information through the web widget based on a user input. 
 
     
     
       9. The method of  claim 8 , wherein the modifying includes modifying a size or color of the advertising information. 
     
     
       10. The method of  claim 2 , comprising:
 providing one or more account dialogs for display, the one or more account dialogs allowing a user to access or create one or more accounts with the service. 
 
     
     
       11. The method of  claim 1 , wherein the web widget is a page element of the web page and is provided for display in association with other page elements of the web page. 
     
     
       12. The method of  claim 1 , wherein the web widget is operable to present content configured to directly interact with a user through the web widget. 
     
     
       13. The method of  claim 1 , wherein the instructions include a markup language instruction and the web widget renders the markup language instruction. 
     
     
       14. The method of  claim 1 , wherein the web widget tool is operable to specify the second content displayed in the web widget. 
     
     
       15. The method of  claim 14 , wherein specifying the second content includes at least one of creating the second content or specifying a source of the second content. 
     
     
       16. The method of  claim 1 , comprising:
 determining a location of the web widget in the web page; and 
 placing the second editing area at the determined location in the first editing area. 
 
     
     
       17. The method of  claim 1 , comprising:
 receiving a drag and drop input placing the bounding box in the first editing area at a first location, wherein providing the web page for display includes providing the second content of the web widget for display at the first location. 
 
     
     
       18. The method of  claim 1 , wherein presenting the second editing area for editing the web widget during creation comprises:
 receiving a second input for editing the instructions that are executed for displaying the second content; and 
 updating the second content that is displayed in the web widget when the web page is rendered in response to editing the instructions. 
 
     
     
       19. The method of  claim 18 , comprising:
 displaying the first content unchanged in the web page when the web page is rendered. 
 
     
     
       20. A computer-readable medium having first instructions stored thereon, which, when executed by a processor, cause the processor to perform operations comprising:
 displaying, in a user interface, a media authoring tool that is operable to create a web page, the media authoring tool comprising a first editing area for editing the web page during creation, wherein the web page is configured to display first content when rendered; 
 receiving an input for creating a web widget, which is a component of the web page that is operable to display second content when rendered in the web page, the second content being distinct from the first content; 
 in response to the input, displaying the web widget as a bounding box enclosing a display area in the media authoring tool, wherein dimensions of the bounding box are configurable by a user while creating the web widget; 
 presenting in the media authoring tool, in association with displaying the bounding box, a second editing area for editing the web widget during creation, the second editing area being associated with a web widget tool operable to edit second instructions that are executed for displaying the second content in the web widget when the web page is rendered; and 
 providing the web page, including the first content and the web widget comprising the second content, for display in the user interface. 
 
     
     
       21. The computer-readable medium of  claim 20 , wherein the first instructions cause the processor to perform operations comprising:
 automatically establishing a communication channel between the web widget and a service without user intervention; 
 obtaining the second content from the service for display on the web widget; and 
 presenting the second content using the web widget when the web page is rendered. 
 
     
     
       22. The computer-readable medium of  claim 21 , wherein the second content includes map data. 
     
     
       23. The computer-readable medium of  claim 21 , wherein the second content includes advertising information. 
     
     
       24. The computer-readable medium of  claim 21 , wherein the first instructions cause the processor to perform operations comprising:
 providing one or more account dialogs for display, the one or more account dialogs allowing a user to access or create one or more accounts with the service. 
 
     
     
       25. The computer-readable medium of  claim 20 , wherein the web widget is operable to present content configured to directly interact with a user through the web widget. 
     
     
       26. The computer-readable medium of  claim 20 , wherein the second instructions include a markup language instruction and the web widget renders the markup language instruction. 
     
     
       27. The computer-readable medium  claim 20 , wherein displaying the web widget as a bounding box in the media authoring tool comprises displaying the web widget as a bounding box that is overlaid on the web page, and
 wherein presenting the second editing area comprises presenting the second editing area as an overlay on the first editing area. 
 
     
     
       28. A system comprising:
 one or more computers configured to perform operations comprising:
 displaying, in a user interface, a media authoring tool that is operable to create a web page, the media authoring tool comprising a first editing area for editing the web page during creation, wherein the web page is configured to display first content when rendered; 
 receiving an input for creating a web widget, which is a component of the web page that is operable to display second content when rendered in the web page, the second content being distinct from the first content; 
 in response to the input, displaying the web widget as a bounding box enclosing a display area in the media authoring tool, wherein dimensions of the bounding box are configurable by a user while creating the web widget; 
 
 presenting in the media authoring tool, in association with displaying the bounding box, a second editing area for editing the web widget during creation, the second editing area being associated with a web widget tool operable to edit instructions that are executed for displaying the second content in the web widget when the web page is rendered; and
 providing the web page, including the first content and the web widget comprising the second content, for display in the user interface. 
 
 
     
     
       29. The system of  claim 28 , wherein the one or more computers are configured to perform operations comprising:
 automatically establishing a communication channel between the web widget and a service without user intervention; 
 obtaining the second content from the service for display on the web widget; and 
 presenting the second content using the web widget when the web page is rendered. 
 
     
     
       30. The system of  claim 28 , wherein displaying the web widget as a bounding box in the media authoring tool comprises displaying the web widget as a bounding box that is overlaid on the web page, and
 wherein presenting the second editing area comprises presenting the second editing area as an overlay on the first editing area. 
 
     
     
       31. The method of  claim 1 , wherein displaying the web widget as a bounding box in the media authoring tool comprises displaying the web widget as a bounding box that is overlaid on the web page, and
 wherein presenting the second editing area comprises presenting the second editing area as an overlay on the first editing area.

Description:
TECHNICAL FIELD 
     The disclosed implementations are generally related to media authoring tools and user interfaces. 
     BACKGROUND 
     Website creation tools targeted to the consumer market allow end users to create websites and other types of media (e.g., blogs, podcasts, multimedia presentations, slide shows) with little or no knowledge of web languages. One popular website creation tool is iWeb®, developed by Apple Inc. (Cupertino, Calif.). Users of website creation tools often desire to have a large selection of interesting page elements (e.g., text, images, video, animation) to choose from when creating a website. Some of these elements, however, can be tedious or time consuming to create and/or may require the user to have extensive knowledge of expert features provided by the tool. Some website creation tools require the user to exit the tool or interact with a different user interface of the tool to accomplish certain tasks, such as interacting with third party web services (e.g., map services, advertising services) or searching directories and files for content (e.g., digital photos) to be included in the website. 
     SUMMARY 
     A media authoring tool includes web widgets for creating page elements for various types of media (e.g., websites, blogs, broadcasts, slide shows, multimedia presentations). A widget inspector associated with the widget can be used to modify the behaviour of the widget. 
     In some implementations, a method includes: generating a page for presentation in a user interface of a media authoring tool; generating a widget and an associated widget inspector; presenting the page and the widget inspector in the user interface; presenting the widget on the page; obtaining a user input through the widget inspector; and automatically modifying a behavior of the widget based on the user input. 
     In some implementations, a method includes: generating a page for presentation in a user interface of a media authoring tool; obtaining a user input specifying a content source; generating a widget for displaying content from the content source, the widget including a navigation control; presenting the page and the widget in the user interface; presenting first content through the widget; obtaining navigation control input; and presenting second content through the widget based on the navigation control input. 
     Other implementations are disclosed that are directed to systems, methods and computer-readable mediums. 
    
    
     
       DESCRIPTION OF DRAWINGS 
         FIG. 1  is a screen shot of an example user interface for a media authoring tool. 
         FIGS. 2A and 2B  are screen shots of an example web widget and web widget inspector for generating Hypertext Markup Language (HTML) snippets in the media authoring tool of  FIG. 1 . 
         FIGS. 3A and 3B  are screen shots of example account dialogs for accessing or creating an advertising account in the media authoring tool of  FIG. 1 . 
         FIG. 3C  is a screen shot of an example web widget and web widget inspector for displaying advertisements in the media authoring tool of  FIG. 1 . 
         FIG. 4  is a screen shot of an example web widget and web widget inspector for displaying maps in the media authoring tool of  FIG. 1 . 
         FIG. 5  is a screen shot of example web widgets for displaying and navigating content in the media authoring tool of  FIG. 1 . 
         FIG. 6  is a screen shot of example process for implementing the features described in reference to  FIGS. 1-5 . 
         FIG. 7  is a screen shot of example software stack for implementing the features and processes described in reference to  FIGS. 1-6 . 
         FIG. 8  is a screen shot of example system for implementing the features and processes described in reference to  FIGS. 1-7 . 
     
    
    
     DETAILED DESCRIPTION 
     Web Widget Overview 
       FIG. 1  is a screen shot of an example user interface  100  for a media authoring tool. The media authoring tool can be used to create various media, including but not limited to: websites, blogs, multimedia presentations, slide shows, media broadcasts (e.g., podcasts, videocasts), interactive learning materials, animations, etc. In the examples that follow, references are made to screen shots for iWeb® website creation tool. The disclosed implementations, however, are equally applicable to other media authoring tools, including markup language editors (e.g., HTML or XHTML editors). 
     Referring to  FIG. 1 , a user has selected a “blank” page  102  from a menu  104  in the user interface  100  of the media authoring tool. In some implementations, the user can select a page template from a list of page templates. The page templates can be associated with themes. A page template can include a professional looking layout of various page elements (e.g., text boxes, shapes, web widgets) having various properties or attributes (e.g., font, size, location, orientation, color, opacity, texture, shape, shadows, animation) that the user can manipulate and customize through the user interface  100 . With some media authoring tools (e.g., iWeb®), a website created by a user can be automatically published to the Internet, where the website can be viewed by anyone with a web browser. 
     In some implementations, the user interface  100  can include a tool bar  106  for allowing the user to select various editing tools for creating and modifying elements on the webpage  102 . Some examples of tools include a “text box” tool for creating text boxes, a “shapes” tool for adding shapes and a “web widget” tool for invoking web widgets. 
     A “web widget” functions like an application in the media authoring tool. Web widgets can be built using various web technologies including, for example, a markup language (e.g., HTML, XHTML), Cascading Style Sheets (CSS), JavaScript®, etc. Web widgets can have their own user interfaces and controls for assisting the user in creating various page elements. A web widget can differentiate whether it is running in a media authoring tool or in a browser (e.g., Safari®). 
       FIGS. 2A and 2B  are screen shots of an example web widget  204  and associated web widget inspector  202  for generating HTML snippets in the media authoring tool of  FIG. 1 . Upon selection of an HTML snippet from the menu  108  or other selection mechanism (e.g., a pull-down menu), the web widget  204  is presented in the user interface  100  as a bounding box  206  enclosing a display area  208 . The bounding box  206  can be dragged to any desired position on the page  102 . The bounding box can include handles  210  for adjusting the dimensions of the bounding box  206 . In some implementations, the user can interact with the widget  204  by double-clicking on the display area  208 . 
     Upon selection of the HTML snippet from the menu  108  or other selection mechanism, the widget inspector  202  is presented on the web page  102 . In some implementations, the web inspector  202  includes an editing window  212  for pasting or typing HTML instructions. The user can type one or more HTML instructions in the editing window  212  and click the “Apply” button to have the instructions interpreted and displayed in the display area  208  of the web widget  204 . 
     Referring to  FIG. 2B , the user has typed the HTML instruction &lt;p&gt;Hello/p&gt; and &lt;p&gt;World&lt;/p&gt; in the editing window  212  of the widget inspector  202 . When the user clicks the “Apply” button, the HTML instructions are interpreted and the text “Hello World” is presented in the display area  208  of the web widget  204 . 
     The HTML web widget  204  allows the user to easily generate HTML snippets and immediately see the results of those snippets in a single user interface of the tool. The user does not have to exit the tool or open a new interface which could disrupt the user&#39;s workflow. Nor does the user have to publish the page to see how the snippet will be rendered in a browser. 
       FIGS. 3A and 3B  are screen shots of example account dialogs  302 ,  304 , for accessing or creating an advertising account (e.g., a Google AdSense™ account) in the media authoring tool of  FIG. 1 . Referring to  FIGS. 1 ,  3 A and  3 B, upon the user&#39;s selection of an advertisement (“ad”) item from the menu  108  shown in  FIG. 1 , the account dialog  302  is presented in the user interface  100 . In the example shown, the user enters his email address and zip code or phone number to access his existing ad account. In some cases, the user can be provided with a mechanism for creating a new account (e.g., button), which directs the user to further dialogs for setting up an ad account. 
       FIG. 3B  illustrates one possible implementation of an account dialog  304 , which can be presented to the user to indicate that a new account was successfully created. Although the examples shown in  FIGS. 3A and 3B  are related to ad accounts, other account dialogs can be presented for other types of accounts for which access or creation is desired (e.g., email accounts, financial accounts). 
       FIG. 3C  is a screen shot of an example web widget  308  and web widget inspector  306  for displaying “live” ads in the media authoring tool of  FIG. 1 . A “live” ad can be an ad that is delivered by an ad server to an ad space on a web page while the page is being viewed in a browser by the user. In some implementations, the widget inspector  306  includes controls  310  and  312 , for modifying the size and color of the “live” ad displayed by the web widget  308 . Input provided by the user through the widget inspector  306  can be applied to the “live” ad presented by the web widget  308 . Other controls can be included in the widget inspector  306  to provide additional control over how an ad is presented on the page. 
     The ad web widget  308  allows the user to easily interface with an ad service provider, including account access and creation, in a single user interface of the media authoring tool. The user does not have to exit the tool or open a new interface which could disrupt the user&#39;s workflow. Nor does the user have to publish the page to see how the ad will be rendered in a browser. 
       FIG. 4  is a screen shot of an example web widget  406  and web widget inspector  402  for displaying maps in the media authoring tool of  FIG. 1 . In the example shown, the user has selected a map web widget from the menu  108 , resulting in the presentation of the map widget  406  and associated widget inspector  402  on the page  102 . The widget inspector  402  can include a text box  408  for typing or pasting an address. In some implementations, the text box  408  can include a default address which can be specified by the user or the map service. An address in the text box  408  can determine a portion of a map that will be displayed by the widget  406  when an “Apply” button is clicked by the user. Additionally, a placemark (e.g., a pushpin icon) can be overlaid on the map to mark the location of the address in the map. In this example, the user entered “1 Infinite Loop, Cupertino, Calif. 95014, USA” in the text box  408 , and after clicking the “Apply” button, a map portion including the address is displayed in the web widget  406  with a placemark  412  to mark the address in the map. Other navigation controls can be included with the widget inspector  402 , including navigation controls  410  (e.g., zoom control, address bubble). In some implementations, the map can include one or more links  404  (e.g., hypertext links) to other network resources or to receive additional information. In this example, the controls  410  include check boxes for activating and deactivating the display of zoom controls and an address bubble, respectively. Other controls are possible (e.g., tilt controls). The user can interact with the map by, for example, double-clicking the web widget  406 . Once the web widget  406  activated the user can use their mouse (or finger or stylus if a touch-sensitive screen) to move the map from within the web widget  406 . 
     In some implementations, the map can be provided by a map service (e.g., Google™ Maps). The web widget  406  can provide all the supporting code (e.g., HTML, JavaScript®, CSS) for connecting to the map service, sending requests for map data, receiving the map data in response to the requests, and the formatting of map data for presentation in the web widget  406 . A communication channel can be established between the web widget  406  and the map service using an operating system (OS) service or a library service provided by the system hosting the media authoring tool. In some implementations, the host system (e.g., a personal computer) can be coupled to the Internet using a wired or wireless communication link. The OS or library service can establish the communication channel using known communication protocols (e.g., TCP/IP, HTML, Secure Socket Layer). 
     The map web widget  308  allows the user to easily interface with a map service in a single user interface of the media authoring tool. The user does not have to exit the tool or open a new interface which could disrupt the user&#39;s workflow. Nor does the user have to publish the page to see how the map will be rendered in a browser. 
       FIG. 5  is a screen shot of example web widgets  504 ,  506 , for displaying content (e.g., digital photos, video clips) in a media authoring tool of  FIG. 1 . In this example, the user selected a web gallery widget from the menu  108 . In response to the selection, the web widgets  504 ,  506 , were presented on the page  102 . In some implementations, the web widgets  504 ,  506 , include bounding boxes with handles for resizing the web widgets. In some implementations, the web widgets  504 ,  506 , can include a control  508  for scrolling or navigating through images or videos in a gallery or other file selected by the user. Other controls are possible. For example, if a video clip is to be displayed, then video controls can be included on the widget (e.g., play, forward, reverse, stop, pause). In some implementations, the web widgets  504 ,  506 , can be used to navigate through pages of a document (e.g., a .pdf file). 
     Example Web Widget Process 
       FIG. 6  is a screen shot of example process  600  for implementing the features described in reference to  FIGS. 1-5 . In some implementations, the user invokes a media authoring tool on a host system (e.g., a personal computer). Alternatively, the media authoring tool can be provided on a server. The user selects a blank page or template page. The user also selects a web widget from a menu (e.g., menu  108 ). 
     Responsive to the user selection, a page is generated for presentation in a user interface of the media authoring tool ( 602 ). A widget and an associated widget inspector are generated ( 604 ). The page is presented in the user interface, together with the widget inspector ( 606 ). In some implementations, the web widget is presented on the page ( 608 ). In other implementations, the web widget can be presented at another location in the user interface, and the user can then move the web widget onto the page (e.g., drag and drop). The web widget can include a bounding box which includes handles for resizing. The web widget and widget inspector can be clicked and dragged to a desired location on the page. The user provides input into the widget inspector by typing, pasting and/or selecting predefined options ( 610 ). The behaviour of the web widget can be automatically modified based on the input ( 612 ). 
     Example Software Stack 
       FIG. 7  is a screen shot of example software stack  700  for implementing the features and processes described in reference to  FIGS. 1-6 . The software stack  700  is based on the Mac OS® software stack. It should be noted, however, that any software stack can be used to implement the features and processes described in reference to  FIGS. 1-6 . 
     The software stack  700  can include an application layer and operating system layers. In this Mac OS® example, the application layer can include iWeb Core and Web Widget applications. The iWeb Core code includes code for the iWeb® website creation tool and the web widget code includes code for implementing web widgets. The web widget code can include HTML, CSS, JavaScript® and other resources. CSS is a stylesheet language used to describe the presentation of a document written in a markup language (e.g., style web pages written in HTML, XHTML). CSS can be used by authors and readers of web pages to define colors, fonts, layout, and other aspects of document presentation. JavaScript® is a scripting language which can be used to write functions that are embedded in or included from HTML pages and interact with a Document Object Model (DOM) of the page. 
     In some implementations, the web widget code in the application layer uses WebKit® services. WebKit® is an application framework included with Mac OS X which is the basis of Mac OS X&#39;s Safari web browser. The framework allows third party developers to easily include Safari functionality in custom applications. WebKit® includes an Objective-C Application Programming Interface (API) that provides the capability to interact with a web server, retrieve and render web pages, download files, and manage plug-ins. WebKit® also includes content parsers (e.g., HTML, CSS), a JavaScript® bridge (e.g., for synchronizing between Safari® and Java applets), a JavaScript® engine (interpreter) and a DOM. The WebKit® can use services provided by Core Services, which provide basic low level services. The Core Services can request services directly from the Core OS (e.g., Darwin/Unix). 
     The software stack  700  provides the software development tools to create web widgets and the various features and processes described in reference to  FIGS. 1-6 . Other software stacks and architectures are possible, including architectures having more or fewer layers, different layers or no layers. 
     Example System Architecture 
       FIG. 8  is a screen shot of example system  800  for implementing the features and processes described in reference to  FIGS. 1-7 . The system  800  may host the software stack  700 , described in reference to  FIG. 7 . The system  800  includes a processor  810 , a memory  820 , a storage device  830 , and an input/output device  840 . Each of the components  810 ,  820 ,  830 , and  840  are interconnected using a system bus  850 . The processor  810  is capable of processing instructions for execution within the system  800 . In some implementations, the processor  810  is a single-threaded processor. In other implementations, the processor  810  is a multi-threaded processor. The processor  810  is capable of processing instructions stored in the memory  820  or on the storage device  830  to display graphical information for a user interface on the input/output device  840 . 
     The memory  820  stores information within the system  800 . In some implementations, the memory  820  is a computer-readable medium. In other implementations, the memory  820  is a volatile memory unit. In yet other implementations, the memory  820  is a non-volatile memory unit. 
     The storage device  830  is capable of providing mass storage for the system  800 . In some implementations, the storage device  830  is a computer-readable medium. In various different implementations, the storage device  830  may be a floppy disk device, a hard disk device, an optical disk device, or a tape device. 
     The input/output device  840  provides input/output operations for the system  800 . In some implementations, the input/output device  840  includes a keyboard and/or pointing device. In other implementations, the input/output device  840  includes a display unit for displaying graphical user interfaces. 
     Various implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device. 
     These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms “machine-readable medium” and “computer-readable medium” refer to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor. 
     To provide for interaction with a user, the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including acoustic, speech, or tactile input. 
     The systems and techniques described here can be implemented in a computing system that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front end component (e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here), or any combination of such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), and the Internet. 
     The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. 
     Although a few implementations have been described in detail above, other modifications are possible. For example, the flow diagrams depicted in the figures do not require the particular order shown, or sequential order, to achieve desirable results. In addition, other steps may be provided, or steps may be eliminated, from the described flow diagrams, and other components may be added to, or removed from, the described systems. Accordingly, various modifications may be made to the disclosed implementations and still be within the scope of the following claims.

Metadata:
Filing Date: 20070806
Publication Date: 20140304
Grant Date: 20140304
Priority Date: 20070806
Inventors: RUDOLPH CHRIS
MURRETT MAC
REVIS KURT
Assignee: APPLE INC
CPC Classifications: [{"code": "G06F16/958", "inventive": true, "first": true, "tree": "[]"}, {"code": "G06F16/958", "inventive": true, "first": true, "tree": "[]"}]
Family ID: 39769313